From 37d882601999a1ed5187daf780b2fbef3f4140ac Mon Sep 17 00:00:00 2001 From: saeedkhosravi94 Date: Fri, 7 Nov 2025 22:14:34 +0100 Subject: [PATCH] init commit --- .DS_Store | Bin 0 -> 6148 bytes README.md | 39 + build.gradle | 136 ++ fabric.properties | 3 + google-services.json | 48 + proguard-rules.pro | 55 + src/.DS_Store | Bin 0 -> 6148 bytes .../android/presentation/ApplicationTest.java | 13 + src/main/.DS_Store | Bin 0 -> 6148 bytes src/main/AndroidManifest.xml | 273 +++ src/main/assets/.DS_Store | Bin 0 -> 6148 bytes src/main/assets/fonts/iransans.ttf | Bin 0 -> 101316 bytes src/main/ic_launcher-web.png | Bin 0 -> 47323 bytes src/main/java/.DS_Store | Bin 0 -> 6148 bytes src/main/java/android/.DS_Store | Bin 0 -> 6148 bytes src/main/java/android/support/.DS_Store | Bin 0 -> 6148 bytes .../java/android/support/design/.DS_Store | Bin 0 -> 6148 bytes .../design/widget/PoinilaTextInputLayout.java | 768 +++++++ .../poinila/android/NotificationService.java | 93 + .../authentication/AuthenticationService.java | 17 + .../android/authentication/Authenticator.java | 119 + .../presentation/AndroidUtilities.java | 1118 ++++++++++ .../presentation/OneSignalReceiver.java | 17 + .../android/presentation/PageChanger.java | 254 +++ .../presentation/PoinilaApplication.java | 158 ++ .../android/presentation/SmsReceiver.java | 77 + .../android/presentation/SortUtils.java | 36 + .../OneSignalNotificationOpenedHelper.java | 51 + .../presenter/NotificationAdapter.java | 102 + .../presenter/RecyclerViewAdapter.java | 194 ++ .../presenter/RecyclerViewProvider.java | 130 ++ .../presentation/svgandroid/ParserHelper.java | 306 +++ .../android/presentation/svgandroid/SVG.java | 121 + .../svgandroid/SVGParseException.java | 21 + .../presentation/svgandroid/SVGParser.java | 1316 +++++++++++ .../uievent/AdapterPositionedEvent.java | 12 + .../presentation/uievent/AddItemUIEvent.java | 12 + .../uievent/AfterVerifyResponse.java | 9 + .../uievent/AnswerFriendshipUIEvent.java | 16 + .../uievent/CapturePhotoEvent.java | 16 + .../uievent/ChangePasswordUIEvent.java | 14 + .../uievent/CheckBoxClickUIEvent.java | 14 + .../uievent/CirclesSelectedUIEvent.java | 15 + .../uievent/CollectionClickedUIEvent.java | 16 + .../uievent/CollectionFrameToggledEvent.java | 10 + ...ctionListActivityImageSelectedUIEvent.java | 10 + .../uievent/CommentLongClickUIEvent.java | 12 + .../uievent/DeleteCircleUIEvent.java | 13 + .../uievent/DeleteFrameUIEvent.java | 14 + .../uievent/EditCircleNameUIEvent.java | 12 + .../uievent/EditFrameNameUIEvent.java | 12 + .../presentation/uievent/EditItemUIEvent.java | 13 + .../presentation/uievent/ExploreTagEvent.java | 12 + .../uievent/FABMenuCollapseUIEvent.java | 13 + .../uievent/FABMenuExpandUIEvent.java | 14 + .../uievent/FramesUpdatedUIEvent.java | 17 + .../uievent/FriendCirclesUpdated.java | 19 + .../uievent/FriendshipClickEvent.java | 12 + .../uievent/GoNextPhaseUIEvent.java | 12 + .../uievent/GoPreviousPhaseUIEvent.java | 7 + .../uievent/GoogleLoginSucceedEvent.java | 10 + .../uievent/HelpDashboardFragment.java | 9 + .../HelpMyFollowedCollectionListFragment.java | 10 + .../uievent/HelpMyProfileFragment.java | 10 + .../uievent/ImageClickedUIEvent.java | 12 + .../uievent/ImageSelectedUIEvent.java | 20 + .../MainActivityImageSelectedUIEvent.java | 10 + .../uievent/MemberCircleToggledEvent.java | 10 + .../uievent/MemberClickedUIEvent.java | 15 + .../NeutralDialogButtonClickedUIEvent.java | 7 + .../uievent/NewWebsitePostEvent.java | 12 + .../uievent/NotifActorClickedUIEvent.java | 12 + .../NotifParticipantClickedUIEvent.java | 17 + .../uievent/OnAnswerFriendshipUIEvent.java | 16 + .../OnFollowUnfollowCollectionUIEvent.java | 20 + .../uievent/OnFrameClickedUIEvent.java | 16 + .../uievent/OnOffSettingToggledUIEvent.java | 14 + .../presentation/uievent/PermissionEvent.java | 23 + .../uievent/PhotoCapturedEvent.java | 7 + .../uievent/PositiveButtonClickedUIEvent.java | 17 + .../uievent/PostClickedUIEvent.java | 17 + .../uievent/PostComponentClickedUIEvent.java | 33 + .../uievent/PostHeightUIEvent.java | 14 + .../PostListActivityImageSelectedUIEvent.java | 10 + .../uievent/ProfilePicSelectedEvent.java | 16 + .../presentation/uievent/RatePonilaEvent.java | 10 + .../uievent/RemoveItemUIEvent.java | 12 + .../uievent/RemovePostUIEvent.java | 13 + .../presentation/uievent/RemoveTagEvent.java | 20 + .../uievent/SelectImageEvent.java | 16 + .../uievent/ShowSelectInterestUIEvent.java | 7 + .../uievent/ShowVerifySnackbarEvent.java | 7 + .../uievent/SimpleSettingTextSetEvent.java | 18 + .../uievent/SmsReceivedEvent.java | 12 + .../presentation/uievent/SuggestionPosts.java | 18 + .../uievent/UpdateNewPostDialogEvent.java | 12 + .../uievent/UpdateUICommentEvent.java | 17 + .../uievent/UpdateUiRepostEvent.java | 18 + .../uievent/UrlClickedUIEvent.java | 12 + .../uievent/ViewCircleMembersUIEvent.java | 13 + .../uievent/ViewFrameMembersUIEvent.java | 12 + .../uievent/WebpageImagesClickEvent.java | 12 + .../uievent/sync/BaseSyncEvent.java | 7 + .../uievent/sync/PostActionSyncEvent.java | 14 + .../view/ImagePickerInterface.java | 18 + .../android/presentation/view/LoaderList.java | 8 + .../view/NotificationNumberListener.java | 10 + .../presentation/view/OnHelpShowListener.java | 25 + .../view/PageSelectedListener.java | 10 + .../presentation/view/ViewInflater.java | 139 ++ .../android/presentation/view/ViewUtils.java | 460 ++++ .../view/activity/AppSettingActivity.java | 51 + .../view/activity/BaseActivity.java | 258 +++ .../view/activity/ChangePasswordActivity.java | 105 + .../view/activity/ChromeActivity.java | 161 ++ .../activity/CirclesManagementActivity.java | 138 ++ .../view/activity/CollectionListActivity.java | 29 + .../view/activity/CommentsListActivity.java | 246 ++ .../view/activity/CropImageActivity.java | 103 + .../view/activity/EditInterestsActivity.java | 30 + .../view/activity/ExploreActivity.java | 16 + .../view/activity/FragmentHostActivity.java | 144 ++ .../activity/FramesManagementActivity.java | 136 ++ .../view/activity/FullImageActivity.java | 51 + .../view/activity/HelpActivity.java | 200 ++ .../activity/InvitationNotifListActivity.java | 31 + .../view/activity/MainActivity.java | 366 +++ .../view/activity/MemberListActivity.java | 32 + .../view/activity/NewPostActivity.java | 81 + .../activity/NotificationOpenedActivity.java | 64 + .../activity/NotificationSwitchActivity.java | 43 + .../view/activity/OthersProfileActivity.java | 413 ++++ .../view/activity/PostListActivity.java | 48 + .../view/activity/ProfileSettingActivity.java | 251 +++ .../view/activity/SelectInterestActivity.java | 229 ++ .../view/activity/SettingActivity.java | 413 ++++ .../view/activity/SignUpLoginActivity.java | 220 ++ .../view/activity/SplashActivity.java | 115 + .../view/activity/ToolbarActivity.java | 45 + .../view/activity/WebviewActivity.java | 222 ++ .../ActivityResultPermissionDelegate.java | 131 ++ .../costom_view/AspectRatioImageView.java | 110 + .../view/costom_view/BackForthButtonsBox.java | 89 + .../view/costom_view/CustomScrollView.java | 62 + .../EditCollectionImagePickerView.java | 63 + .../GalleryCameraImagePickerView.java | 423 ++++ .../costom_view/HorizontalChipsLayout.java | 86 + .../view/costom_view/ImagePickerCropper.java | 16 + .../view/costom_view/MaterialSpinner.java | 852 +++++++ .../view/costom_view/PonilaChoiceView.java | 152 ++ .../view/costom_view/RemovableChipView.java | 268 +++ .../view/costom_view/ScrollViewListener.java | 9 + .../view/costom_view/SvgMaskedImageView.java | 214 ++ .../view/costom_view/TouchImageView.java | 1265 +++++++++++ .../view/dialog/AboutPoinilaDialog.java | 51 + .../view/dialog/BaseDialogFragment.java | 261 +++ .../view/dialog/BusDialogFragment.java | 174 ++ .../view/dialog/ChangeCircleNameDialog.java | 77 + .../view/dialog/ChangeEmailDialog.java | 79 + .../view/dialog/ChangeFrameNameDialog.java | 72 + .../dialog/ChangeFriendCirclesDialog.java | 149 ++ .../view/dialog/ChangeNameDialog.java | 81 + .../view/dialog/ChangePhoneDialog.java | 67 + .../view/dialog/ChangeWebsiteDialog.java | 97 + .../dialog/CircleMembersManagementDialog.java | 133 ++ .../view/dialog/ContactUsDialog.java | 92 + .../view/dialog/CoverFromPostsDialog.java | 150 ++ .../view/dialog/DialogLauncher.java | 125 ++ .../view/dialog/EditAboutMeDialog.java | 85 + .../view/dialog/EditCollectionDialog.java | 182 ++ .../view/dialog/EditFriendShipDialog.java | 118 + .../view/dialog/ForgotPasswordFragment.java | 203 ++ .../FrameCollectionsManagementDialog.java | 132 ++ .../dialog/InputVerificationCodeDialog.java | 147 ++ .../view/dialog/ListBusDialogFragment.java | 97 + .../view/dialog/MessageDialog.java | 80 + .../view/dialog/NewCircleDialog.java | 44 + .../view/dialog/NewCollectionDialog.java | 429 ++++ .../view/dialog/NewFrameDialog.java | 44 + .../view/dialog/NewPostDialog.java | 595 +++++ .../view/dialog/NewWebsitePostDialog.java | 356 +++ .../view/dialog/PoinilaAlertDialog.java | 162 ++ .../view/dialog/PoinilaInviteDialog.java | 49 + .../view/dialog/ReportDialog.java | 98 + .../view/dialog/RepostDialog.java | 153 ++ .../view/dialog/SelectImageDialog.java | 108 + .../dialog/SetUserNamePasswordDialog.java | 125 ++ .../view/dialog/SingleTextFieldDialog.java | 103 + .../dialog/VerificationRequestCodeDialog.java | 182 ++ .../view/fragments/AnonymousInfoFragment.java | 54 + .../view/fragments/AppSettingFragment.java | 19 + .../view/fragments/BaseFragment.java | 139 ++ .../view/fragments/BusFragment.java | 174 ++ .../fragments/BusRefreshableListFragment.java | 84 + .../fragments/CollectionListFragment.java | 365 +++ .../fragments/CollectionPageFragment.java | 551 +++++ .../view/fragments/DashboardFragment.java | 489 ++++ .../view/fragments/EditInterestsFragment.java | 125 ++ .../InvitationNotifListFragment.java | 117 + .../view/fragments/ListBusFragment.java | 118 + .../view/fragments/LoginFragment.java | 345 +++ .../view/fragments/MemberListFragment.java | 201 ++ .../MyFollowedCollectionsFragment.java | 328 +++ .../view/fragments/MyProfileFragment.java | 544 +++++ .../view/fragments/NewPostFragment.java | 38 + .../NewWebSitePostInputURLFragment.java | 169 ++ .../NewWebSitePostSelectMediaFragment.java | 189 ++ .../view/fragments/NotificationFragment.java | 406 ++++ .../fragments/NotificationSwitchFragment.java | 200 ++ .../fragments/PostAndRelatedPostFragment.java | 943 ++++++++ .../view/fragments/PostListFragment.java | 977 ++++++++ .../view/fragments/RegisterFragment.java | 430 ++++ .../view/fragments/ResetPasswordFragment.java | 221 ++ .../view/fragments/SearchFragment.java | 731 ++++++ .../VerificationRequestFragment.java | 134 ++ .../notification/NCollectionListFragment.java | 89 + .../notification/NPostListFragment.java | 145 ++ .../android/presentation/view/help/Help.java | 119 + .../view/help/OnNextButtonListener.java | 11 + .../help/fragments/CreateHelpFragment.java | 57 + .../view/help/masks/BaseMaskView.java | 113 + .../view/help/masks/CollectionMaskView.java | 51 + .../view/help/masks/CreateMaskView.java | 54 + .../view/help/masks/DashboardMaskView.java | 60 + .../help/masks/PostRelatedPostMaskView.java | 53 + .../help/masks/PostsOfCollectionMaskView.java | 48 + .../view/help/masks/ProfileMaskView.java | 52 + .../view/video/PonilaMediaController.java | 640 ++++++ .../view/video/PonilaVideoView.java | 380 ++++ .../AskUserLikesPonilaViewHolder.java | 33 + .../viewholder/BaseViewHolder.java | 36 + .../viewholder/CheckedCircleViewHolder.java | 50 + .../viewholder/CheckedTextViewHolder.java | 56 + .../viewholder/CircleEditViewHolder.java | 50 + .../viewholder/CircleMemberViewHolder.java | 47 + .../viewholder/CollectionNotifViewHolder.java | 34 + .../viewholder/CollectionViewHolder.java | 77 + .../viewholder/CommentViewHolder.java | 58 + .../viewholder/DashboardPostViewHolder.java | 69 + .../viewholder/DateHeaderViewHolder.java | 25 + .../EditableCollectionViewHolder.java | 44 + .../FollowableCollectionViewHolder.java | 67 + .../viewholder/FrameCollectionViewHolder.java | 49 + .../viewholder/FrameEditViewHolder.java | 53 + .../viewholder/InviteNotifViewHolder.java | 67 + .../viewholder/LoadingViewHolder.java | 21 + .../viewholder/MemberNotifViewHolder.java | 43 + .../viewholder/MemberViewHolder.java | 109 + .../MyFollowedCollectionViewHolder.java | 29 + .../viewholder/NotificationViewHolder.java | 106 + .../viewholder/PostDetailViewHolder.java | 252 +++ .../viewholder/PostNotifViewHolder.java | 36 + .../viewholder/PostViewHolder.java | 203 ++ .../PostsOfCollectionViewHolder.java | 21 + .../viewholder/RatePonilaViewHolder.java | 30 + .../RemovableInterestViewHolder.java | 49 + .../viewholder/RemovablePostViewHolder.java | 22 + .../viewholder/RemovableTagViewHolder.java | 36 + .../SelectableInterestViewHolder.java | 48 + .../viewholder/SimpleTextViewHolder.java | 20 + .../viewholder/SingleImageViewHolder.java | 26 + .../viewholder/SwitchTextViewHolder.java | 41 + .../NEditableCollectionViewHolder.java | 17 + .../android/utils/NotificationQueue.java | 36 + .../android/utils/PonilaAccountManager.java | 400 ++++ .../android/utils/PonilaJsonParser.java | 92 + .../poinila/android/utils/PonilaQueue.java | 38 + .../android/utils/PonilaSnackbarManager.java | 125 ++ .../android/utils/PushNotificationUtils.java | 142 ++ .../poinila/android/utils/TypefaceUtil.java | 30 + .../shaya/poinila/android/utils/Utils.java | 39 + .../utils/uisynchronize/UISynchronizeBus.java | 73 + .../uisynchronize/UISynchronizeReceiver.java | 35 + src/main/java/data/FriendRemovedEvent.java | 13 + .../java/data/FriendRequestSentEvent.java | 12 + src/main/java/data/JsonRequestBodyMaker.java | 323 +++ src/main/java/data/PoinilaCallback.java | 127 ++ src/main/java/data/PoinilaNetService.java | 1985 +++++++++++++++++ src/main/java/data/PoinilaTypedByteArray.java | 24 + src/main/java/data/RequestKind.java | 10 + src/main/java/data/RequestTracker.java | 33 + src/main/java/data/RequestType.java | 8 + src/main/java/data/RestServices.java | 442 ++++ .../java/data/database/PoinilaDataBase.java | 117 + .../AbstractNotificationsReceivedEvent.java | 31 + .../event/AnswerFriendRequestResponse.java | 13 + src/main/java/data/event/BaseEvent.java | 38 + src/main/java/data/event/CacheEvent.java | 16 + .../java/data/event/CircleReceivedEvent.java | 14 + .../data/event/CollectionReceivedEvent.java | 17 + .../data/event/CollectionUpdatedEvent.java | 11 + .../data/event/CollectionsReceivedEvent.java | 21 + .../java/data/event/CommentReceivedEvent.java | 14 + .../data/event/CommentsReceivedEvent.java | 18 + .../java/data/event/ContentReceivedEvent.java | 14 + src/main/java/data/event/DashboardEvent.java | 36 + src/main/java/data/event/FailEvent.java | 15 + .../event/FrameCollectionsReceivedEvent.java | 16 + .../java/data/event/FrameReceivedEvent.java | 15 + .../java/data/event/FramesReceivedEvent.java | 14 + .../event/FriendCircleNotChangedEvent.java | 14 + .../java/data/event/IdentifiableEvent.java | 10 + .../data/event/InterestsReceivedEvent.java | 20 + src/main/java/data/event/InviteUsedEvent.java | 7 + .../data/event/LoadingImagedFailedEvent.java | 7 + .../java/data/event/LoginFailedEvent.java | 17 + .../java/data/event/LoginSucceedEvent.java | 7 + .../java/data/event/MemberFollowersEvent.java | 16 + .../java/data/event/MemberPostsEvent.java | 16 + .../java/data/event/MemberReceivedEvent.java | 14 + .../java/data/event/MembersReceivedEvent.java | 21 + .../java/data/event/ModelCreatedEvent.java | 12 + .../java/data/event/ModelDeletedEvent.java | 11 + src/main/java/data/event/ModelEvent.java | 14 + .../java/data/event/ModelUpdatedEvent.java | 12 + .../java/data/event/MyFrameReceivedEvent.java | 14 + .../data/event/MyFriendshipRequestsEvent.java | 19 + .../java/data/event/MyInfoReceivedEvent.java | 23 + .../event/NotificationSettingsReceived.java | 18 + .../NotificationSettingsReceivedEvent.java | 17 + .../java/data/event/PostReceivedEvent.java | 18 + .../java/data/event/PostsReceivedEvent.java | 25 + .../java/data/event/ProfileDirtyEvent.java | 7 + .../event/ProfileSettingReceivedEvent.java | 14 + .../data/event/RegisterResponseEvent.java | 22 + .../java/data/event/RemainedInvitesEvent.java | 12 + .../data/event/SearchCollectionEvent.java | 28 + .../java/data/event/SearchMemberEvent.java | 29 + src/main/java/data/event/SearchPostEvent.java | 27 + .../java/data/event/ServerResponseEvent.java | 21 + .../java/data/event/StringsReceivedEvent.java | 14 + .../event/SuggestedWebpagePostReceived.java | 15 + .../event/SystemPreferencesReceivedEvent.java | 13 + .../java/data/event/TopicsReceivedEvent.java | 14 + .../java/data/event/UndoFavePostEvent.java | 7 + .../java/data/event/UndoUnfavePostEvent.java | 7 + .../event/UpdateProfileSettingResponse.java | 20 + .../event/UserInterestsReceivedEvent.java | 16 + .../data/event/UserNameValidityEvent.java | 23 + .../event/VerificationRequestResponse.java | 41 + .../exception/AuthorizationException.java | 7 + src/main/java/data/model/Circle.java | 59 + src/main/java/data/model/Collection.java | 84 + src/main/java/data/model/Comment.java | 39 + src/main/java/data/model/Content.java | 41 + src/main/java/data/model/DefaultType.java | 13 + src/main/java/data/model/Frame.java | 56 + .../java/data/model/FriendRequestAnswer.java | 18 + src/main/java/data/model/FriendshipNotif.java | 22 + .../java/data/model/FriendshipStatus.java | 14 + src/main/java/data/model/Gender.java | 13 + src/main/java/data/model/Identifiable.java | 8 + src/main/java/data/model/Image.java | 24 + src/main/java/data/model/ImageTag.java | 19 + src/main/java/data/model/ImageUrls.java | 118 + src/main/java/data/model/InvitationNotif.java | 8 + src/main/java/data/model/Loading.java | 10 + src/main/java/data/model/Member.java | 114 + src/main/java/data/model/MemberType.java | 32 + src/main/java/data/model/Notification.java | 69 + src/main/java/data/model/OnOffSetting.java | 27 + src/main/java/data/model/Participant.java | 23 + src/main/java/data/model/PoinilaInvite.java | 14 + src/main/java/data/model/PoinilaResponse.java | 13 + src/main/java/data/model/Post.java | 134 ++ src/main/java/data/model/PostType.java | 37 + src/main/java/data/model/PrivacyType.java | 13 + .../java/data/model/SuggestedWebPagePost.java | 30 + .../java/data/model/SuggestionReason.java | 15 + .../java/data/model/SystemPreferences.java | 46 + src/main/java/data/model/Tag.java | 50 + src/main/java/data/model/Timed.java | 8 + src/main/java/data/model/Topic.java | 9 + src/main/java/data/model/ViewItem.java | 7 + .../data/model/notification/NCollection.java | 9 + src/main/java/manager/DBFacade.java | 163 ++ src/main/java/manager/DataRepository.java | 403 ++++ src/main/java/manager/RequestSource.java | 10 + .../java/manager/dowload/NativeDLManager.java | 61 + .../dowload/NotificationDLManager.java | 81 + src/main/res/anim/fade_in.xml | 9 + src/main/res/anim/fade_out.xml | 9 + src/main/res/color/black_disabled_grey.xml | 5 + src/main/res/color/collection_follow.xml | 5 + .../res/color/input_text_color_state_list.xml | 7 + src/main/res/color/option_text_color.xml | 5 + .../drawable-hdpi/action_follow_2_dark.png | Bin 0 -> 1584 bytes .../drawable-hdpi/action_follow_selected.png | Bin 0 -> 1663 bytes .../res/drawable-hdpi/action_help_default.png | Bin 0 -> 2059 bytes .../res/drawable-hdpi/action_help_pressed.png | Bin 0 -> 1890 bytes src/main/res/drawable-hdpi/action_next.png | Bin 0 -> 1414 bytes .../drawable-hdpi/action_report_orange.png | Bin 0 -> 1550 bytes .../action_send_comment_orange.png | Bin 0 -> 1971 bytes .../action_send_comment_white.png | Bin 0 -> 1629 bytes .../action_setting_new_default.png | Bin 0 -> 3994 bytes .../action_setting_new_pressed.png | Bin 0 -> 3926 bytes .../drawable-hdpi/add_collection_white.png | Bin 0 -> 1085 bytes src/main/res/drawable-hdpi/add_post_white.png | Bin 0 -> 677 bytes src/main/res/drawable-hdpi/add_white_48dp.png | Bin 0 -> 180 bytes .../drawable-hdpi/arrow_down_white_24dp.png | Bin 0 -> 203 bytes .../res/drawable-hdpi/arrow_left_48dp.png | Bin 0 -> 192 bytes .../drawable-hdpi/arrow_right_white_48dp.png | Bin 0 -> 366 bytes .../res/drawable-hdpi/arrow_up_white_24dp.png | Bin 0 -> 185 bytes src/main/res/drawable-hdpi/browser.png | Bin 0 -> 2342 bytes .../btn_google_signin_dark_normal.9.png | Bin 0 -> 1225 bytes .../btn_google_signin_dark_pressed.9.png | Bin 0 -> 1231 bytes .../drawable-hdpi/button_library_normal.png | Bin 0 -> 1267 bytes .../drawable-hdpi/button_library_pressed.png | Bin 0 -> 1768 bytes src/main/res/drawable-hdpi/clear.png | Bin 0 -> 221 bytes src/main/res/drawable-hdpi/close.png | Bin 0 -> 3174 bytes .../res/drawable-hdpi/collection_no_image.png | Bin 0 -> 1519 bytes src/main/res/drawable-hdpi/comment_normal.png | Bin 0 -> 1230 bytes .../res/drawable-hdpi/comment_pressed.png | Bin 0 -> 1145 bytes src/main/res/drawable-hdpi/crop_24dp.png | Bin 0 -> 202 bytes .../res/drawable-hdpi/done_24dp_black.png | Bin 0 -> 184 bytes .../res/drawable-hdpi/done_flamingo_24dp.png | Bin 0 -> 251 bytes .../res/drawable-hdpi/done_white_48dp.png | Bin 0 -> 426 bytes src/main/res/drawable-hdpi/email_48dp.png | Bin 0 -> 560 bytes src/main/res/drawable-hdpi/go_36dp.png | Bin 0 -> 296 bytes .../res/drawable-hdpi/icon_label_red2.png | Bin 0 -> 5280 bytes .../drawable-hdpi/icon_label_selected2.png | Bin 0 -> 2020 bytes .../res/drawable-hdpi/icon_label_white2.png | Bin 0 -> 4601 bytes .../drawable-hdpi/invisible_black_24dp.png | Bin 0 -> 612 bytes src/main/res/drawable-hdpi/like_normal.png | Bin 0 -> 2053 bytes src/main/res/drawable-hdpi/like_pressed.png | Bin 0 -> 1908 bytes src/main/res/drawable-hdpi/like_selected.png | Bin 0 -> 2051 bytes .../res/drawable-hdpi/menu_item_download.png | Bin 0 -> 624 bytes .../pending_friendship_request.png | Bin 0 -> 8883 bytes src/main/res/drawable-hdpi/phone_48dp.png | Bin 0 -> 760 bytes src/main/res/drawable-hdpi/play_button.png | Bin 0 -> 4201 bytes .../res/drawable-hdpi/poinila_24dp_white.png | Bin 0 -> 1543 bytes src/main/res/drawable-hdpi/post_no_image.png | Bin 0 -> 2246 bytes .../res/drawable-hdpi/remove_boulder_36dp.png | Bin 0 -> 399 bytes .../res/drawable-hdpi/remove_white_36dp.png | Bin 0 -> 392 bytes src/main/res/drawable-hdpi/repost_normal.png | Bin 0 -> 2416 bytes src/main/res/drawable-hdpi/repost_pressed.png | Bin 0 -> 2263 bytes .../drawable-hdpi/rotate_left_white_24dp.png | Bin 0 -> 503 bytes .../drawable-hdpi/rotate_right_white_24dp.png | Bin 0 -> 502 bytes .../res/drawable-hdpi/rsz_icon_label_red2.png | Bin 0 -> 4532 bytes .../drawable-hdpi/rsz_icon_label_white2.png | Bin 0 -> 2627 bytes src/main/res/drawable-hdpi/search_normal.png | Bin 0 -> 2349 bytes src/main/res/drawable-hdpi/search_pressed.png | Bin 0 -> 2332 bytes .../res/drawable-hdpi/share_mysin_24dp.png | Bin 0 -> 493 bytes .../tab_collection_light_nomargin.png | Bin 0 -> 1686 bytes .../tab_collection_selected_nomargin.png | Bin 0 -> 1727 bytes .../drawable-hdpi/tab_dashboard_nomargin.png | Bin 0 -> 2425 bytes .../tab_dashboard_selected_nomargin.png | Bin 0 -> 1966 bytes .../tab_notification_light_nomargin.png | Bin 0 -> 1360 bytes .../tab_notification_selected_nomargin.png | Bin 0 -> 1523 bytes .../tab_profile_light_nomargin.png | Bin 0 -> 1563 bytes .../tab_profile_selected_nomargin.png | Bin 0 -> 1766 bytes .../tab_search_light_nomargin.png | Bin 0 -> 1690 bytes .../res/drawable-hdpi/tab_search_nomargin.png | Bin 0 -> 1836 bytes .../tab_search_selected_nomargin.png | Bin 0 -> 1848 bytes .../toggle_invisible_nobel_32dp.png | Bin 0 -> 926 bytes .../toggle_visible_nobel_32dp.png | Bin 0 -> 852 bytes src/main/res/drawable-hdpi/user_no_image.png | Bin 0 -> 2908 bytes .../res/drawable-hdpi/user_no_image_big.png | Bin 0 -> 4665 bytes src/main/res/drawable-hdpi/video_play.png | Bin 0 -> 1271 bytes src/main/res/drawable-hdpi/video_type.png | Bin 0 -> 2177 bytes .../res/drawable-hdpi/visible_black_24dp.png | Bin 0 -> 559 bytes src/main/res/drawable-hdpi/zoom_btn.png | Bin 0 -> 3551 bytes .../drawable-mdpi/action_follow_2_dark.png | Bin 0 -> 1417 bytes .../drawable-mdpi/action_follow_selected.png | Bin 0 -> 1439 bytes .../res/drawable-mdpi/action_help_default.png | Bin 0 -> 1730 bytes .../res/drawable-mdpi/action_help_pressed.png | Bin 0 -> 1666 bytes src/main/res/drawable-mdpi/action_next.png | Bin 0 -> 1274 bytes .../drawable-mdpi/action_report_orange.png | Bin 0 -> 1361 bytes .../action_send_comment_orange.png | Bin 0 -> 1667 bytes .../action_send_comment_white.png | Bin 0 -> 1331 bytes .../action_setting_new_default.png | Bin 0 -> 2913 bytes .../action_setting_new_pressed.png | Bin 0 -> 2852 bytes .../drawable-mdpi/add_collection_white.png | Bin 0 -> 788 bytes src/main/res/drawable-mdpi/add_post_white.png | Bin 0 -> 542 bytes .../drawable-mdpi/arrow_down_white_24dp.png | Bin 0 -> 158 bytes .../res/drawable-mdpi/arrow_up_white_24dp.png | Bin 0 -> 153 bytes .../btn_google_signin_dark_normal.9.png | Bin 0 -> 758 bytes .../btn_google_signin_dark_pressed.9.png | Bin 0 -> 768 bytes src/main/res/drawable-mdpi/close.png | Bin 0 -> 2324 bytes .../res/drawable-mdpi/collection_no_image.png | Bin 0 -> 968 bytes src/main/res/drawable-mdpi/crop_24dp.png | Bin 0 -> 119 bytes .../res/drawable-mdpi/done_24dp_black.png | Bin 0 -> 136 bytes .../res/drawable-mdpi/done_flamingo_24dp.png | Bin 0 -> 180 bytes src/main/res/drawable-mdpi/email_48dp.png | Bin 0 -> 404 bytes src/main/res/drawable-mdpi/go_36dp.png | Bin 0 -> 226 bytes .../res/drawable-mdpi/icon_label_red2.png | Bin 0 -> 5280 bytes .../res/drawable-mdpi/icon_label_white2.png | Bin 0 -> 4601 bytes .../drawable-mdpi/invisible_black_24dp.png | Bin 0 -> 424 bytes .../res/drawable-mdpi/menu_item_download.png | Bin 0 -> 589 bytes .../pending_friendship_request.png | Bin 0 -> 5862 bytes src/main/res/drawable-mdpi/phone_48dp.png | Bin 0 -> 515 bytes src/main/res/drawable-mdpi/play_button.png | Bin 0 -> 3264 bytes .../res/drawable-mdpi/poinila_24dp_white.png | Bin 0 -> 900 bytes src/main/res/drawable-mdpi/post_no_image.png | Bin 0 -> 1389 bytes src/main/res/drawable-mdpi/repost_normal.png | Bin 0 -> 1484 bytes src/main/res/drawable-mdpi/repost_pressed.png | Bin 0 -> 1425 bytes .../res/drawable-mdpi/rsz_icon_label_red2.png | Bin 0 -> 4532 bytes .../drawable-mdpi/rsz_icon_label_white2.png | Bin 0 -> 2627 bytes .../res/drawable-mdpi/share_mysin_24dp.png | Bin 0 -> 323 bytes .../tab_collection_light_nomargin.png | Bin 0 -> 1522 bytes .../tab_collection_selected_nomargin.png | Bin 0 -> 1564 bytes .../tab_dashboard_light_nomargin.png | Bin 0 -> 1577 bytes .../drawable-mdpi/tab_dashboard_normal.png | Bin 0 -> 1600 bytes .../drawable-mdpi/tab_dashboard_selected.png | Bin 0 -> 1710 bytes .../tab_dashboard_selected_nomargin.png | Bin 0 -> 1700 bytes .../tab_notification_light_nomargin.png | Bin 0 -> 1318 bytes .../tab_notification_selected_nomargin.png | Bin 0 -> 1429 bytes .../tab_profile_light_nomargin.png | Bin 0 -> 1416 bytes .../tab_profile_selected_nomargin.png | Bin 0 -> 1538 bytes .../tab_search_light_nomargin.png | Bin 0 -> 1502 bytes .../res/drawable-mdpi/tab_search_nomargin.png | Bin 0 -> 1596 bytes .../tab_search_selected_nomargin.png | Bin 0 -> 1604 bytes .../toggle_invisible_nobel_32dp.png | Bin 0 -> 633 bytes .../toggle_visible_nobel_32dp.png | Bin 0 -> 577 bytes src/main/res/drawable-mdpi/user_no_image.png | Bin 0 -> 1709 bytes .../res/drawable-mdpi/user_no_image_big.png | Bin 0 -> 3294 bytes src/main/res/drawable-mdpi/video_play.png | Bin 0 -> 387842 bytes src/main/res/drawable-mdpi/video_type.png | Bin 0 -> 1806 bytes .../res/drawable-mdpi/visible_black_24dp.png | Bin 0 -> 368 bytes src/main/res/drawable-mdpi/zoom_btn.png | Bin 0 -> 2682 bytes .../res/drawable-nodpi/help_add_content.jpg | Bin 0 -> 94728 bytes .../res/drawable-nodpi/help_collections.jpg | Bin 0 -> 388117 bytes .../res/drawable-nodpi/help_dashboard.jpg | Bin 0 -> 161210 bytes .../res/drawable-nodpi/help_notifications.jpg | Bin 0 -> 152944 bytes src/main/res/drawable-nodpi/help_profile.jpg | Bin 0 -> 94525 bytes src/main/res/drawable-nodpi/help_search.jpg | Bin 0 -> 115539 bytes .../drawable-nodpi/help_text_background.png | Bin 0 -> 4279 bytes .../res/drawable-nodpi/login_background.png | Bin 0 -> 446908 bytes .../drawable-nodpi/ponila_logo_with_text.png | Bin 0 -> 44985 bytes .../res/drawable-nodpi/splash_background.jpg | Bin 0 -> 24091 bytes src/main/res/drawable-nodpi/texture.png | Bin 0 -> 53970 bytes .../res/drawable-xhdpi/action_add_circle.png | Bin 0 -> 3144 bytes src/main/res/drawable-xhdpi/action_check.png | Bin 0 -> 6723 bytes .../drawable-xhdpi/action_follow_2_dark.png | Bin 0 -> 1753 bytes .../drawable-xhdpi/action_follow_selected.png | Bin 0 -> 1848 bytes .../drawable-xhdpi/action_help_default.png | Bin 0 -> 2719 bytes .../drawable-xhdpi/action_help_pressed.png | Bin 0 -> 2463 bytes src/main/res/drawable-xhdpi/action_next.png | Bin 0 -> 1619 bytes .../drawable-xhdpi/action_report_orange.png | Bin 0 -> 1767 bytes .../drawable-xhdpi/action_repost_normal.png | Bin 0 -> 953 bytes .../action_send_comment_orange.png | Bin 0 -> 2460 bytes .../action_send_comment_white.png | Bin 0 -> 2016 bytes .../action_setting_new_default.png | Bin 0 -> 4750 bytes .../action_setting_new_pressed.png | Bin 0 -> 4737 bytes .../drawable-xhdpi/add_collection_white.png | Bin 0 -> 1588 bytes src/main/res/drawable-xhdpi/add_friend.png | Bin 0 -> 15548 bytes .../drawable-xhdpi/add_friend_selected.png | Bin 0 -> 15313 bytes src/main/res/drawable-xhdpi/add_icon.png | Bin 0 -> 5912 bytes .../res/drawable-xhdpi/add_post_white.png | Bin 0 -> 933 bytes .../drawable-xhdpi/arrow_down_white_24dp.png | Bin 0 -> 251 bytes .../drawable-xhdpi/arrow_up_white_24dp.png | Bin 0 -> 216 bytes .../btn_google_signin_dark_normal.9.png | Bin 0 -> 1569 bytes .../btn_google_signin_dark_pressed.9.png | Bin 0 -> 1576 bytes src/main/res/drawable-xhdpi/camera_normal.png | Bin 0 -> 6878 bytes .../res/drawable-xhdpi/camera_pressed.png | Bin 0 -> 6779 bytes src/main/res/drawable-xhdpi/checkbox_off.png | Bin 0 -> 1084 bytes .../drawable-xhdpi/checkbox_off_pressed.png | Bin 0 -> 1223 bytes src/main/res/drawable-xhdpi/checkbox_on.png | Bin 0 -> 1666 bytes src/main/res/drawable-xhdpi/clear.png | Bin 0 -> 259 bytes src/main/res/drawable-xhdpi/close.png | Bin 0 -> 3992 bytes .../drawable-xhdpi/collection_no_image.png | Bin 0 -> 1899 bytes .../res/drawable-xhdpi/collection_white.png | Bin 0 -> 3158 bytes src/main/res/drawable-xhdpi/crop_24dp.png | Bin 0 -> 157 bytes src/main/res/drawable-xhdpi/delete.png | Bin 0 -> 243 bytes src/main/res/drawable-xhdpi/delete_icon.png | Bin 0 -> 6143 bytes .../drawable-xhdpi/delete_icon_pressed.png | Bin 0 -> 6248 bytes .../res/drawable-xhdpi/done_24dp_black.png | Bin 0 -> 202 bytes .../res/drawable-xhdpi/done_flamingo_24dp.png | Bin 0 -> 299 bytes src/main/res/drawable-xhdpi/edit_small.png | Bin 0 -> 1437 bytes src/main/res/drawable-xhdpi/edit_white.png | Bin 0 -> 2584 bytes src/main/res/drawable-xhdpi/email_48dp.png | Bin 0 -> 719 bytes .../drawable-xhdpi/form_login_password.png | Bin 0 -> 4567 bytes .../res/drawable-xhdpi/form_login_user.png | Bin 0 -> 4614 bytes src/main/res/drawable-xhdpi/friends.png | Bin 0 -> 15657 bytes src/main/res/drawable-xhdpi/friends_white.png | Bin 0 -> 3620 bytes .../res/drawable-xhdpi/gallery_normal.png | Bin 0 -> 6574 bytes .../res/drawable-xhdpi/gallery_pressed.png | Bin 0 -> 6556 bytes src/main/res/drawable-xhdpi/go_36dp.png | Bin 0 -> 363 bytes .../ic_media_fullscreen_shrink.png | Bin 0 -> 1189 bytes .../ic_media_fullscreen_stretch.png | Bin 0 -> 1608 bytes .../res/drawable-xhdpi/ic_media_pause.png | Bin 0 -> 599 bytes src/main/res/drawable-xhdpi/ic_media_play.png | Bin 0 -> 1163 bytes .../res/drawable-xhdpi/icon_label_red2.png | Bin 0 -> 5280 bytes .../res/drawable-xhdpi/icon_label_white2.png | Bin 0 -> 4601 bytes .../drawable-xhdpi/invisible_black_24dp.png | Bin 0 -> 791 bytes .../res/drawable-xhdpi/menu_item_download.png | Bin 0 -> 1921 bytes .../pending_friendship_request.png | Bin 0 -> 13460 bytes src/main/res/drawable-xhdpi/phone_48dp.png | Bin 0 -> 1017 bytes src/main/res/drawable-xhdpi/play_button.png | Bin 0 -> 6510 bytes .../res/drawable-xhdpi/poinila_24dp_white.png | Bin 0 -> 1859 bytes src/main/res/drawable-xhdpi/post_no_image.png | Bin 0 -> 2596 bytes .../res/drawable-xhdpi/radiobutton_off.png | Bin 0 -> 1713 bytes .../res/drawable-xhdpi/radiobutton_on.png | Bin 0 -> 2170 bytes .../drawable-xhdpi/radiobutton_on_pressed.png | Bin 0 -> 2155 bytes src/main/res/drawable-xhdpi/repost_normal.png | Bin 0 -> 2554 bytes .../res/drawable-xhdpi/repost_pressed.png | Bin 0 -> 2555 bytes .../drawable-xhdpi/rsz_icon_label_red2.png | Bin 0 -> 4532 bytes .../drawable-xhdpi/rsz_icon_label_white2.png | Bin 0 -> 2627 bytes .../res/drawable-xhdpi/search_tag_active.png | Bin 0 -> 5686 bytes .../drawable-xhdpi/search_tag_inactive.png | Bin 0 -> 5761 bytes src/main/res/drawable-xhdpi/send_normal.png | Bin 0 -> 1915 bytes src/main/res/drawable-xhdpi/send_pressed.png | Bin 0 -> 1977 bytes .../res/drawable-xhdpi/share_mysin_24dp.png | Bin 0 -> 614 bytes src/main/res/drawable-xhdpi/spinner.9.png | Bin 0 -> 2166 bytes .../tab_collection_light_nomargin.png | Bin 0 -> 1971 bytes .../tab_collection_selected_nomargin.png | Bin 0 -> 2027 bytes .../drawable-xhdpi/tab_dashboard_nomargin.png | Bin 0 -> 3309 bytes .../tab_dashboard_selected_nomargin.png | Bin 0 -> 2451 bytes .../tab_notification_light_nomargin.png | Bin 0 -> 1519 bytes .../tab_notification_selected_nomargin.png | Bin 0 -> 1704 bytes .../tab_profile_light_nomargin.png | Bin 0 -> 1834 bytes .../tab_profile_selected_nomargin.png | Bin 0 -> 2124 bytes .../tab_search_light_nomargin.png | Bin 0 -> 2055 bytes .../drawable-xhdpi/tab_search_nomargin.png | Bin 0 -> 2265 bytes .../tab_search_selected_nomargin.png | Bin 0 -> 2258 bytes .../toggle_invisible_nobel_32dp.png | Bin 0 -> 1175 bytes .../toggle_visible_nobel_32dp.png | Bin 0 -> 1103 bytes src/main/res/drawable-xhdpi/user_no_image.png | Bin 0 -> 3538 bytes .../res/drawable-xhdpi/user_no_image_big.png | Bin 0 -> 6987 bytes src/main/res/drawable-xhdpi/video_play.png | Bin 0 -> 1377 bytes src/main/res/drawable-xhdpi/video_type.png | Bin 0 -> 2772 bytes .../res/drawable-xhdpi/visible_black_24dp.png | Bin 0 -> 711 bytes src/main/res/drawable-xhdpi/zoom_btn.png | Bin 0 -> 4505 bytes .../drawable-xxhdpi/action_follow_2_dark.png | Bin 0 -> 1854 bytes .../action_follow_selected.png | Bin 0 -> 1987 bytes .../drawable-xxhdpi/action_help_default.png | Bin 0 -> 3413 bytes .../drawable-xxhdpi/action_help_pressed.png | Bin 0 -> 2971 bytes src/main/res/drawable-xxhdpi/action_next.png | Bin 0 -> 1781 bytes .../drawable-xxhdpi/action_report_orange.png | Bin 0 -> 2080 bytes .../action_send_comment_orange.png | Bin 0 -> 2880 bytes .../action_send_comment_white.png | Bin 0 -> 2414 bytes .../action_setting_new_default.png | Bin 0 -> 5665 bytes .../action_setting_new_pressed.png | Bin 0 -> 5751 bytes .../drawable-xxhdpi/add_collection_white.png | Bin 0 -> 1901 bytes .../res/drawable-xxhdpi/add_post_white.png | Bin 0 -> 1088 bytes .../res/drawable-xxhdpi/add_white_48dp.png | Bin 0 -> 428 bytes .../drawable-xxhdpi/arrow_down_white_24dp.png | Bin 0 -> 347 bytes .../res/drawable-xxhdpi/arrow_left_48dp.png | Bin 0 -> 335 bytes .../arrow_right_white_48dp.png | Bin 0 -> 545 bytes .../drawable-xxhdpi/arrow_up_white_24dp.png | Bin 0 -> 297 bytes src/main/res/drawable-xxhdpi/browser.png | Bin 0 -> 5285 bytes .../btn_google_signin_dark_normal.9.png | Bin 0 -> 2536 bytes .../btn_google_signin_dark_pressed.9.png | Bin 0 -> 2554 bytes .../drawable-xxhdpi/button_library_normal.png | Bin 0 -> 2135 bytes .../button_library_pressed.png | Bin 0 -> 2896 bytes src/main/res/drawable-xxhdpi/clear.png | Bin 0 -> 348 bytes src/main/res/drawable-xxhdpi/close.png | Bin 0 -> 6103 bytes .../drawable-xxhdpi/collection_no_image.png | Bin 0 -> 3202 bytes .../res/drawable-xxhdpi/comment_normal.png | Bin 0 -> 2372 bytes .../res/drawable-xxhdpi/comment_pressed.png | Bin 0 -> 2144 bytes src/main/res/drawable-xxhdpi/crop_24dp.png | Bin 0 -> 201 bytes .../res/drawable-xxhdpi/done_24dp_black.png | Bin 0 -> 253 bytes .../drawable-xxhdpi/done_flamingo_24dp.png | Bin 0 -> 431 bytes .../res/drawable-xxhdpi/done_white_48dp.png | Bin 0 -> 645 bytes src/main/res/drawable-xxhdpi/email_48dp.png | Bin 0 -> 1028 bytes src/main/res/drawable-xxhdpi/go_36dp.png | Bin 0 -> 490 bytes .../res/drawable-xxhdpi/icon_label_red2.png | Bin 0 -> 5280 bytes .../res/drawable-xxhdpi/icon_label_white2.png | Bin 0 -> 4601 bytes .../drawable-xxhdpi/invisible_black_24dp.png | Bin 0 -> 1091 bytes src/main/res/drawable-xxhdpi/like_normal.png | Bin 0 -> 4253 bytes src/main/res/drawable-xxhdpi/like_pressed.png | Bin 0 -> 3947 bytes .../res/drawable-xxhdpi/like_selected.png | Bin 0 -> 4187 bytes .../drawable-xxhdpi/menu_item_download.png | Bin 0 -> 783 bytes .../pending_friendship_request.png | Bin 0 -> 19326 bytes src/main/res/drawable-xxhdpi/phone_48dp.png | Bin 0 -> 1588 bytes src/main/res/drawable-xxhdpi/play_button.png | Bin 0 -> 5473 bytes .../drawable-xxhdpi/poinila_24dp_white.png | Bin 0 -> 3310 bytes .../res/drawable-xxhdpi/post_no_image.png | Bin 0 -> 4325 bytes .../drawable-xxhdpi/remove_boulder_36dp.png | Bin 0 -> 649 bytes .../res/drawable-xxhdpi/remove_white_36dp.png | Bin 0 -> 642 bytes .../res/drawable-xxhdpi/repost_normal.png | Bin 0 -> 4491 bytes .../res/drawable-xxhdpi/repost_pressed.png | Bin 0 -> 4349 bytes .../rotate_left_white_24dp.png | Bin 0 -> 950 bytes .../rotate_right_white_24dp.png | Bin 0 -> 960 bytes .../drawable-xxhdpi/rsz_icon_label_red2.png | Bin 0 -> 4532 bytes .../drawable-xxhdpi/rsz_icon_label_white2.png | Bin 0 -> 2627 bytes .../res/drawable-xxhdpi/search_normal.png | Bin 0 -> 5044 bytes .../res/drawable-xxhdpi/search_pressed.png | Bin 0 -> 4862 bytes .../res/drawable-xxhdpi/share_mysin_24dp.png | Bin 0 -> 893 bytes .../tab_collection_light_nomargin.png | Bin 0 -> 2575 bytes .../tab_collection_selected_nomargin.png | Bin 0 -> 2626 bytes .../tab_dashboard_nomargin.png | Bin 0 -> 5010 bytes .../tab_dashboard_selected_nomargin.png | Bin 0 -> 3309 bytes .../tab_notification_light_nomargin.png | Bin 0 -> 1783 bytes .../tab_notification_selected_nomargin.png | Bin 0 -> 2002 bytes .../tab_profile_light_nomargin.png | Bin 0 -> 2336 bytes .../tab_profile_selected_nomargin.png | Bin 0 -> 2676 bytes .../tab_search_light_nomargin.png | Bin 0 -> 2720 bytes .../drawable-xxhdpi/tab_search_nomargin.png | Bin 0 -> 2694 bytes .../tab_search_selected_nomargin.png | Bin 0 -> 3001 bytes .../toggle_invisible_nobel_32dp.png | Bin 0 -> 1777 bytes .../toggle_visible_nobel_32dp.png | Bin 0 -> 1727 bytes .../res/drawable-xxhdpi/user_no_image.png | Bin 0 -> 5973 bytes .../res/drawable-xxhdpi/user_no_image_big.png | Bin 0 -> 9708 bytes src/main/res/drawable-xxhdpi/video_play.png | Bin 0 -> 1633 bytes src/main/res/drawable-xxhdpi/video_type.png | Bin 0 -> 3518 bytes .../drawable-xxhdpi/visible_black_24dp.png | Bin 0 -> 1046 bytes src/main/res/drawable-xxhdpi/zoom_btn.png | Bin 0 -> 6308 bytes .../res/drawable/action_follow_collection.xml | 5 + src/main/res/drawable/action_help_setting.xml | 7 + src/main/res/drawable/action_settings.xml | 8 + src/main/res/drawable/add_friend_selector.xml | 5 + .../drawable/add_remove_checkbox_selector.xml | 10 + src/main/res/drawable/bg_texture.xml | 4 + src/main/res/drawable/bordered_focusable.xml | 7 + .../bordered_focusable_float_hint_margin.xml | 17 + src/main/res/drawable/bordered_input.xml | 9 + .../res/drawable/bordered_rounded_rect.xml | 23 + .../bordered_rounded_rect_checked.xml | 7 + .../bordered_rounded_rect_disabled.xml | 7 + .../drawable/bottom_bar_remove_background.xml | 11 + .../res/drawable/boulder_rounded_button.xml | 17 + src/main/res/drawable/button_library.xml | 5 + src/main/res/drawable/camera_selector.xml | 5 + src/main/res/drawable/checkbox_selector.xml | 20 + .../res/drawable/circle_black_transparent.xml | 4 + .../res/drawable/collection_bottom_bar.xml | 10 + .../collection_detail_owned_delete_button.xml | 10 + .../collection_detail_owned_edit_button.xml | 10 + src/main/res/drawable/collection_follow.xml | 10 + .../res/drawable/comment_field_background.xml | 12 + src/main/res/drawable/comment_selector.xml | 5 + .../res/drawable/fab_label_background.xml | 11 + src/main/res/drawable/favorite_selector.xml | 30 + .../res/drawable/favorite_selector_list.xml | 8 + .../res/drawable/flamingo_rounded_button.xml | 24 + src/main/res/drawable/gallery_selector.xml | 5 + src/main/res/drawable/google_signin_btn.xml | 6 + src/main/res/drawable/image_caption_text.xml | 10 + src/main/res/drawable/interest_btn.xml | 10 + src/main/res/drawable/interest_frame.xml | 10 + .../res/drawable/interest_image_frame.xml | 8 + .../res/drawable/mercury_bottom_rounded.xml | 9 + .../res/drawable/mysin_rounded_button.xml | 17 + src/main/res/drawable/notif_tab.xml | 21 + src/main/res/drawable/option_drawable.xml | 16 + .../res/drawable/option_left_drawable.xml | 19 + .../res/drawable/option_right_drawable.xml | 19 + src/main/res/drawable/options_background.xml | 10 + .../res/drawable/outlined_boulder_button.xml | 17 + src/main/res/drawable/poinila_frame.xml | 10 + src/main/res/drawable/post_general_image.xml | 14 + src/main/res/drawable/profile_frame.xml | 9 + src/main/res/drawable/profile_info_circle.xml | 10 + .../res/drawable/radio_button_selector.xml | 20 + src/main/res/drawable/repost_selector.xml | 5 + .../res/drawable/rounded_rect_noble_tag.xml | 6 + .../res/drawable/search_btn_background.xml | 18 + .../res/drawable/search_field_background.xml | 17 + src/main/res/drawable/search_selector.xml | 8 + .../send_comment_selector_background.xml | 19 + src/main/res/drawable/send_selector.xml | 5 + src/main/res/drawable/snackbar_action.xml | 11 + .../res/drawable/tab_collection_selector.xml | 5 + .../res/drawable/tab_dashboard_selector.xml | 5 + .../res/drawable/tab_notification_number.xml | 8 + .../drawable/tab_notification_selector.xml | 5 + .../res/drawable/tab_profile_selector.xml | 5 + src/main/res/drawable/tab_search_selector.xml | 5 + src/main/res/drawable/video_play_btn.xml | 5 + .../drawable/video_play_btn_background.xml | 14 + src/main/res/drawable/video_progress.xml | 11 + .../res/drawable/west_side_rounded_button.xml | 17 + .../res/layout/activity_change_password.xml | 41 + .../res/layout/activity_circle_management.xml | 15 + src/main/res/layout/activity_comments.xml | 66 + src/main/res/layout/activity_crop_image.xml | 79 + .../res/layout/activity_edit_interests.xml | 33 + .../res/layout/activity_fragment_host.xml | 19 + src/main/res/layout/activity_full_image.xml | 15 + src/main/res/layout/activity_help.xml | 36 + src/main/res/layout/activity_home.xml | 30 + .../res/layout/activity_new_web_site_post.xml | 26 + .../res/layout/activity_others_profile.xml | 27 + .../res/layout/activity_profile_setting.xml | 49 + .../res/layout/activity_select_interests.xml | 65 + src/main/res/layout/activity_setting.xml | 164 ++ .../res/layout/activity_sign_up_login.xml | 42 + src/main/res/layout/activity_splash.xml | 50 + .../res/layout/ask_if_user_likes_ponila.xml | 37 + .../res/layout/ask_if_user_rates_ponila.xml | 39 + src/main/res/layout/authenticator.xml | 8 + .../res/layout/author_info_post_detail.xml | 21 + src/main/res/layout/blog_info.xml | 72 + src/main/res/layout/checked_text.xml | 23 + src/main/res/layout/chrome_activity.xml | 6 + src/main/res/layout/circle_edit_item.xml | 34 + .../circle_image_title_subtitle_stats.xml | 47 + .../layout/collection_bottom_bar_three.xml | 39 + .../res/layout/collection_columned_author.xml | 27 + .../res/layout/collection_detail_owned.xml | 206 ++ src/main/res/layout/collection_editable.xml | 72 + src/main/res/layout/collection_followable.xml | 19 + src/main/res/layout/collection_general.xml | 106 + src/main/res/layout/collection_images.xml | 74 + .../layout/collection_info_post_detail.xml | 26 + src/main/res/layout/collection_item.xml | 24 + src/main/res/layout/collection_simple.xml | 15 + src/main/res/layout/comment.xml | 40 + src/main/res/layout/comment_large.xml | 42 + src/main/res/layout/crop_image.xml | 112 + src/main/res/layout/dialog_contact_us.xml | 83 + .../res/layout/dialog_edit_collection.xml | 21 + src/main/res/layout/dialog_general.xml | 77 + .../res/layout/dialog_invite_to_poinila.xml | 27 + src/main/res/layout/dialog_new_collection.xml | 22 + src/main/res/layout/dialog_new_post.xml | 84 + .../res/layout/dialog_new_website_post.xml | 69 + src/main/res/layout/dialog_report.xml | 18 + src/main/res/layout/dialog_set_user_pass.xml | 70 + .../res/layout/dialog_setting_website.xml | 36 + .../res/layout/dialog_single_text_input.xml | 17 + .../layout/dialog_verification_request.xml | 85 + .../res/layout/follow_unfollow_collection.xml | 22 + src/main/res/layout/fragment_anonymous.xml | 26 + .../fragment_collection_detail_owned.xml | 46 + src/main/res/layout/fragment_explore.xml | 25 + src/main/res/layout/fragment_favorites.xml | 19 + .../res/layout/fragment_forgot_password.xml | 174 ++ src/main/res/layout/fragment_help.xml | 34 + src/main/res/layout/fragment_login.xml | 181 ++ .../layout/fragment_member_collections.xml | 32 + src/main/res/layout/fragment_member_posts.xml | 51 + .../fragment_my_followed_collections.xml | 11 + .../fragment_new_web_site_post_input_url.xml | 104 + src/main/res/layout/fragment_notification.xml | 64 + src/main/res/layout/fragment_profile.xml | 54 + src/main/res/layout/fragment_register.xml | 194 ++ src/main/res/layout/fragment_reposts.xml | 20 + .../fragment_request_verification_code.xml | 103 + .../res/layout/fragment_reset_password.xml | 86 + src/main/res/layout/fragment_search.xml | 78 + src/main/res/layout/fragment_webview.xml | 11 + src/main/res/layout/gender_item.xml | 51 + src/main/res/layout/horizontal_line.xml | 8 + src/main/res/layout/image_caption.xml | 22 + .../res/layout/input_verification_code.xml | 16 + src/main/res/layout/label_value_setting.xml | 40 + src/main/res/layout/mask_create.xml | 24 + src/main/res/layout/mask_dashboard.xml | 27 + .../res/layout/mask_followed_collections.xml | 27 + .../res/layout/mask_post_related_posts.xml | 27 + .../res/layout/mask_posts_of_collection.xml | 24 + src/main/res/layout/mask_profile.xml | 24 + src/main/res/layout/media_controller.xml | 102 + src/main/res/layout/member_inlist.xml | 71 + .../res/layout/my_followed_collections.xml | 13 + .../layout/new_website_post_select_media.xml | 14 + src/main/res/layout/next_last_buttons.xml | 36 + src/main/res/layout/notif_collection.xml | 26 + .../res/layout/notif_images_container.xml | 9 + src/main/res/layout/notif_member.xml | 33 + src/main/res/layout/notif_post.xml | 33 + .../notif_requested_tobe_your_friend.xml | 43 + .../notif_title_subtitle_black_gray.xml | 25 + src/main/res/layout/poinila_switch.xml | 8 + src/main/res/layout/ponila_snackbar.xml | 23 + src/main/res/layout/ponila_video_player.xml | 13 + src/main/res/layout/ponila_video_view.xml | 52 + src/main/res/layout/post_dashboard.xml | 80 + src/main/res/layout/post_full_detail.xml | 218 ++ src/main/res/layout/post_in_collection.xml | 33 + src/main/res/layout/post_item_author.xml | 35 + src/main/res/layout/post_item_collection.xml | 38 + src/main/res/layout/post_item_general.xml | 44 + src/main/res/layout/post_item_removable.xml | 63 + src/main/res/layout/post_name_site_date.xml | 42 + src/main/res/layout/post_related_posts.xml | 30 + src/main/res/layout/profile.xml | 107 + src/main/res/layout/profile_general_info.xml | 44 + src/main/res/layout/profile_stats.xml | 30 + src/main/res/layout/progress.xml | 17 + src/main/res/layout/progress_determinate.xml | 16 + src/main/res/layout/radio_group_post.xml | 51 + src/main/res/layout/recycler_view_full.xml | 10 + .../layout/recycler_view_weighted_full.xml | 9 + src/main/res/layout/removable_chip.xml | 8 + .../res/layout/removable_imaged_interest.xml | 52 + .../layout/rounded_image_title_subtitle.xml | 32 + .../rounded_image_title_subtitle_icon.xml | 43 + .../res/layout/scrollable_linearlayout.xml | 16 + src/main/res/layout/searchbar_edittext.xml | 15 + src/main/res/layout/select_frame.xml | 27 + src/main/res/layout/select_image_dialog.xml | 25 + src/main/res/layout/selectable_interest.xml | 47 + src/main/res/layout/simple_textview.xml | 10 + .../res/layout/single_image_staggered.xml | 12 + src/main/res/layout/spinner_item.xml | 19 + src/main/res/layout/spinner_item_textview.xml | 10 + src/main/res/layout/spinner_prompt.xml | 18 + src/main/res/layout/spinner_test.xml | 6 + src/main/res/layout/stats.xml | 63 + src/main/res/layout/stats_big.xml | 63 + src/main/res/layout/swipe_refresh.xml | 6 + src/main/res/layout/switch_text_setting.xml | 24 + .../res/layout/tab_notification_layout.xml | 24 + .../layout/tag_container_with_edittext.xml | 41 + src/main/res/layout/tag_image.xml | 10 + src/main/res/layout/tag_removable.xml | 32 + src/main/res/layout/tag_text_view.xml | 10 + src/main/res/layout/tags_container.xml | 28 + src/main/res/layout/test_empty_fragment.xml | 13 + src/main/res/layout/title_arrow_divider.xml | 49 + .../res/layout/title_arrow_divider_login.xml | 42 + .../res/layout/title_subtitle_centered.xml | 24 + src/main/res/layout/toolbar.xml | 12 + src/main/res/layout/toolbar_black.xml | 11 + src/main/res/layout/two_input_field.xml | 25 + .../layout/two_vertical_transparent_label.xml | 21 + src/main/res/layout/vertical_line.xml | 10 + src/main/res/layout/view_ponila_choice.xml | 43 + src/main/res/layout/white_transarent_mask.xml | 8 + src/main/res/menu/menu_change_pass.xml | 9 + src/main/res/menu/menu_circles_management.xml | 8 + src/main/res/menu/menu_crop_image.xml | 10 + src/main/res/menu/menu_done_action.xml | 7 + src/main/res/menu/menu_frame_management.xml | 8 + src/main/res/menu/menu_inline_browser.xml | 9 + src/main/res/menu/menu_main.xml | 7 + .../res/menu/menu_popup_profile_picture.xml | 11 + src/main/res/menu/menu_post.xml | 25 + src/main/res/menu/menu_sign_up_login.xml | 7 + src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2818 bytes src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1723 bytes src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4405 bytes src/main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 8268 bytes src/main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 13405 bytes src/main/res/raw/hexagon.svg | 18 + src/main/res/values-v21/styles.xml | 2 + src/main/res/values-w240dp/dimens.xml | 5 + src/main/res/values-w600dp/dimens.xml | 103 + src/main/res/values-w600dp/integer.xml | 5 + src/main/res/values-w600dp/styles.xml | 38 + src/main/res/values-w820dp/dimens.xml | 6 + src/main/res/values-w820dp/integer.xml | 8 + src/main/res/values/attrs.xml | 65 + src/main/res/values/colors.xml | 69 + src/main/res/values/dimens.xml | 178 ++ src/main/res/values/font_styles.xml | 54 + src/main/res/values/ids.xml | 6 + src/main/res/values/integer.xml | 45 + src/main/res/values/strings.xml | 584 +++++ src/main/res/values/styles.xml | 1000 +++++++++ src/main/res/values/themes.xml | 132 ++ src/main/res/xml/preferences.xml | 9 + 945 files changed, 48551 insertions(+) create mode 100644 .DS_Store create mode 100755 build.gradle create mode 100755 fabric.properties create mode 100755 google-services.json create mode 100755 proguard-rules.pro create mode 100644 src/.DS_Store create mode 100755 src/androidTest/java/com/shaya/poinila/android/presentation/ApplicationTest.java create mode 100644 src/main/.DS_Store create mode 100755 src/main/AndroidManifest.xml create mode 100644 src/main/assets/.DS_Store create mode 100755 src/main/assets/fonts/iransans.ttf create mode 100755 src/main/ic_launcher-web.png create mode 100644 src/main/java/.DS_Store create mode 100644 src/main/java/android/.DS_Store create mode 100644 src/main/java/android/support/.DS_Store create mode 100644 src/main/java/android/support/design/.DS_Store create mode 100755 src/main/java/android/support/design/widget/PoinilaTextInputLayout.java create mode 100755 src/main/java/com/shaya/poinila/android/NotificationService.java create mode 100755 src/main/java/com/shaya/poinila/android/authentication/AuthenticationService.java create mode 100755 src/main/java/com/shaya/poinila/android/authentication/Authenticator.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/AndroidUtilities.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/OneSignalReceiver.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/PageChanger.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/PoinilaApplication.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/SmsReceiver.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/SortUtils.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/notification/OneSignalNotificationOpenedHelper.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/presenter/NotificationAdapter.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/presenter/RecyclerViewAdapter.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/presenter/RecyclerViewProvider.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/svgandroid/ParserHelper.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/svgandroid/SVG.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/svgandroid/SVGParseException.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/svgandroid/SVGParser.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/AdapterPositionedEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/AddItemUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/AfterVerifyResponse.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/AnswerFriendshipUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/CapturePhotoEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/ChangePasswordUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/CheckBoxClickUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/CirclesSelectedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/CollectionClickedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/CollectionFrameToggledEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/CollectionListActivityImageSelectedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/CommentLongClickUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/DeleteCircleUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/DeleteFrameUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/EditCircleNameUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/EditFrameNameUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/EditItemUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/ExploreTagEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/FABMenuCollapseUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/FABMenuExpandUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/FramesUpdatedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/FriendCirclesUpdated.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/FriendshipClickEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/GoNextPhaseUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/GoPreviousPhaseUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/GoogleLoginSucceedEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/HelpDashboardFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/HelpMyFollowedCollectionListFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/HelpMyProfileFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/ImageClickedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/ImageSelectedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/MainActivityImageSelectedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/MemberCircleToggledEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/MemberClickedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/NeutralDialogButtonClickedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/NewWebsitePostEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/NotifActorClickedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/NotifParticipantClickedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/OnAnswerFriendshipUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/OnFollowUnfollowCollectionUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/OnFrameClickedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/OnOffSettingToggledUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/PermissionEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/PhotoCapturedEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/PositiveButtonClickedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/PostClickedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/PostComponentClickedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/PostHeightUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/PostListActivityImageSelectedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/ProfilePicSelectedEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/RatePonilaEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/RemoveItemUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/RemovePostUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/RemoveTagEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/SelectImageEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/ShowSelectInterestUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/ShowVerifySnackbarEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/SimpleSettingTextSetEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/SmsReceivedEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/SuggestionPosts.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/UpdateNewPostDialogEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/UpdateUICommentEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/UpdateUiRepostEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/UrlClickedUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/ViewCircleMembersUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/ViewFrameMembersUIEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/WebpageImagesClickEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/sync/BaseSyncEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/uievent/sync/PostActionSyncEvent.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/ImagePickerInterface.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/LoaderList.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/NotificationNumberListener.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/OnHelpShowListener.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/PageSelectedListener.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/ViewInflater.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/ViewUtils.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/AppSettingActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/BaseActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/ChangePasswordActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/ChromeActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/CirclesManagementActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/CollectionListActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/CommentsListActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/CropImageActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/EditInterestsActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/ExploreActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/FragmentHostActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/FramesManagementActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/FullImageActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/HelpActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/InvitationNotifListActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/MainActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/MemberListActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/NewPostActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/NotificationOpenedActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/NotificationSwitchActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/OthersProfileActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/PostListActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/ProfileSettingActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/SelectInterestActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/SettingActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/SignUpLoginActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/SplashActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/ToolbarActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/activity/WebviewActivity.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/ActivityResultPermissionDelegate.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/AspectRatioImageView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/BackForthButtonsBox.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/CustomScrollView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/EditCollectionImagePickerView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/GalleryCameraImagePickerView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/HorizontalChipsLayout.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/ImagePickerCropper.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/MaterialSpinner.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/PonilaChoiceView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/RemovableChipView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/ScrollViewListener.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/SvgMaskedImageView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/costom_view/TouchImageView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/AboutPoinilaDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/BaseDialogFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/BusDialogFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeCircleNameDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeEmailDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeFrameNameDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeFriendCirclesDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeNameDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangePhoneDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeWebsiteDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/CircleMembersManagementDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/ContactUsDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/CoverFromPostsDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/DialogLauncher.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/EditAboutMeDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/EditCollectionDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/EditFriendShipDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/ForgotPasswordFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/FrameCollectionsManagementDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/InputVerificationCodeDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/ListBusDialogFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/MessageDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewCircleDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewCollectionDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewFrameDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewPostDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewWebsitePostDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/PoinilaAlertDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/PoinilaInviteDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/ReportDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/RepostDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/SelectImageDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/SetUserNamePasswordDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/SingleTextFieldDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/dialog/VerificationRequestCodeDialog.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/AnonymousInfoFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/AppSettingFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/BaseFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/BusFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/BusRefreshableListFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/CollectionListFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/CollectionPageFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/DashboardFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/EditInterestsFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/InvitationNotifListFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/ListBusFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/LoginFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/MemberListFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/MyFollowedCollectionsFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/MyProfileFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/NewPostFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/NewWebSitePostInputURLFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/NewWebSitePostSelectMediaFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/NotificationFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/NotificationSwitchFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/PostAndRelatedPostFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/PostListFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/RegisterFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/ResetPasswordFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/SearchFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/VerificationRequestFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/notification/NCollectionListFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/fragments/notification/NPostListFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/help/Help.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/help/OnNextButtonListener.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/help/fragments/CreateHelpFragment.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/help/masks/BaseMaskView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/help/masks/CollectionMaskView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/help/masks/CreateMaskView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/help/masks/DashboardMaskView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/help/masks/PostRelatedPostMaskView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/help/masks/PostsOfCollectionMaskView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/help/masks/ProfileMaskView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/video/PonilaMediaController.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/view/video/PonilaVideoView.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/AskUserLikesPonilaViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/BaseViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/CheckedCircleViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/CheckedTextViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/CircleEditViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/CircleMemberViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/CollectionNotifViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/CollectionViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/CommentViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/DashboardPostViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/DateHeaderViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/EditableCollectionViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/FollowableCollectionViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/FrameCollectionViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/FrameEditViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/InviteNotifViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/LoadingViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/MemberNotifViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/MemberViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/MyFollowedCollectionViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/NotificationViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/PostDetailViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/PostNotifViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/PostViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/PostsOfCollectionViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/RatePonilaViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/RemovableInterestViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/RemovablePostViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/RemovableTagViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/SelectableInterestViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/SimpleTextViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/SingleImageViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/SwitchTextViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/presentation/viewholder/notification/NEditableCollectionViewHolder.java create mode 100755 src/main/java/com/shaya/poinila/android/utils/NotificationQueue.java create mode 100755 src/main/java/com/shaya/poinila/android/utils/PonilaAccountManager.java create mode 100755 src/main/java/com/shaya/poinila/android/utils/PonilaJsonParser.java create mode 100755 src/main/java/com/shaya/poinila/android/utils/PonilaQueue.java create mode 100755 src/main/java/com/shaya/poinila/android/utils/PonilaSnackbarManager.java create mode 100755 src/main/java/com/shaya/poinila/android/utils/PushNotificationUtils.java create mode 100755 src/main/java/com/shaya/poinila/android/utils/TypefaceUtil.java create mode 100755 src/main/java/com/shaya/poinila/android/utils/Utils.java create mode 100755 src/main/java/com/shaya/poinila/android/utils/uisynchronize/UISynchronizeBus.java create mode 100755 src/main/java/com/shaya/poinila/android/utils/uisynchronize/UISynchronizeReceiver.java create mode 100755 src/main/java/data/FriendRemovedEvent.java create mode 100755 src/main/java/data/FriendRequestSentEvent.java create mode 100755 src/main/java/data/JsonRequestBodyMaker.java create mode 100755 src/main/java/data/PoinilaCallback.java create mode 100755 src/main/java/data/PoinilaNetService.java create mode 100755 src/main/java/data/PoinilaTypedByteArray.java create mode 100755 src/main/java/data/RequestKind.java create mode 100755 src/main/java/data/RequestTracker.java create mode 100755 src/main/java/data/RequestType.java create mode 100755 src/main/java/data/RestServices.java create mode 100755 src/main/java/data/database/PoinilaDataBase.java create mode 100755 src/main/java/data/event/AbstractNotificationsReceivedEvent.java create mode 100755 src/main/java/data/event/AnswerFriendRequestResponse.java create mode 100755 src/main/java/data/event/BaseEvent.java create mode 100755 src/main/java/data/event/CacheEvent.java create mode 100755 src/main/java/data/event/CircleReceivedEvent.java create mode 100755 src/main/java/data/event/CollectionReceivedEvent.java create mode 100755 src/main/java/data/event/CollectionUpdatedEvent.java create mode 100755 src/main/java/data/event/CollectionsReceivedEvent.java create mode 100755 src/main/java/data/event/CommentReceivedEvent.java create mode 100755 src/main/java/data/event/CommentsReceivedEvent.java create mode 100755 src/main/java/data/event/ContentReceivedEvent.java create mode 100755 src/main/java/data/event/DashboardEvent.java create mode 100755 src/main/java/data/event/FailEvent.java create mode 100755 src/main/java/data/event/FrameCollectionsReceivedEvent.java create mode 100755 src/main/java/data/event/FrameReceivedEvent.java create mode 100755 src/main/java/data/event/FramesReceivedEvent.java create mode 100755 src/main/java/data/event/FriendCircleNotChangedEvent.java create mode 100755 src/main/java/data/event/IdentifiableEvent.java create mode 100755 src/main/java/data/event/InterestsReceivedEvent.java create mode 100755 src/main/java/data/event/InviteUsedEvent.java create mode 100755 src/main/java/data/event/LoadingImagedFailedEvent.java create mode 100755 src/main/java/data/event/LoginFailedEvent.java create mode 100755 src/main/java/data/event/LoginSucceedEvent.java create mode 100755 src/main/java/data/event/MemberFollowersEvent.java create mode 100755 src/main/java/data/event/MemberPostsEvent.java create mode 100755 src/main/java/data/event/MemberReceivedEvent.java create mode 100755 src/main/java/data/event/MembersReceivedEvent.java create mode 100755 src/main/java/data/event/ModelCreatedEvent.java create mode 100755 src/main/java/data/event/ModelDeletedEvent.java create mode 100755 src/main/java/data/event/ModelEvent.java create mode 100755 src/main/java/data/event/ModelUpdatedEvent.java create mode 100755 src/main/java/data/event/MyFrameReceivedEvent.java create mode 100755 src/main/java/data/event/MyFriendshipRequestsEvent.java create mode 100755 src/main/java/data/event/MyInfoReceivedEvent.java create mode 100755 src/main/java/data/event/NotificationSettingsReceived.java create mode 100755 src/main/java/data/event/NotificationSettingsReceivedEvent.java create mode 100755 src/main/java/data/event/PostReceivedEvent.java create mode 100755 src/main/java/data/event/PostsReceivedEvent.java create mode 100755 src/main/java/data/event/ProfileDirtyEvent.java create mode 100755 src/main/java/data/event/ProfileSettingReceivedEvent.java create mode 100755 src/main/java/data/event/RegisterResponseEvent.java create mode 100755 src/main/java/data/event/RemainedInvitesEvent.java create mode 100755 src/main/java/data/event/SearchCollectionEvent.java create mode 100755 src/main/java/data/event/SearchMemberEvent.java create mode 100755 src/main/java/data/event/SearchPostEvent.java create mode 100755 src/main/java/data/event/ServerResponseEvent.java create mode 100755 src/main/java/data/event/StringsReceivedEvent.java create mode 100755 src/main/java/data/event/SuggestedWebpagePostReceived.java create mode 100755 src/main/java/data/event/SystemPreferencesReceivedEvent.java create mode 100755 src/main/java/data/event/TopicsReceivedEvent.java create mode 100755 src/main/java/data/event/UndoFavePostEvent.java create mode 100755 src/main/java/data/event/UndoUnfavePostEvent.java create mode 100755 src/main/java/data/event/UpdateProfileSettingResponse.java create mode 100755 src/main/java/data/event/UserInterestsReceivedEvent.java create mode 100755 src/main/java/data/event/UserNameValidityEvent.java create mode 100755 src/main/java/data/event/VerificationRequestResponse.java create mode 100755 src/main/java/data/exception/AuthorizationException.java create mode 100755 src/main/java/data/model/Circle.java create mode 100755 src/main/java/data/model/Collection.java create mode 100755 src/main/java/data/model/Comment.java create mode 100755 src/main/java/data/model/Content.java create mode 100755 src/main/java/data/model/DefaultType.java create mode 100755 src/main/java/data/model/Frame.java create mode 100755 src/main/java/data/model/FriendRequestAnswer.java create mode 100755 src/main/java/data/model/FriendshipNotif.java create mode 100755 src/main/java/data/model/FriendshipStatus.java create mode 100755 src/main/java/data/model/Gender.java create mode 100755 src/main/java/data/model/Identifiable.java create mode 100755 src/main/java/data/model/Image.java create mode 100755 src/main/java/data/model/ImageTag.java create mode 100755 src/main/java/data/model/ImageUrls.java create mode 100755 src/main/java/data/model/InvitationNotif.java create mode 100755 src/main/java/data/model/Loading.java create mode 100755 src/main/java/data/model/Member.java create mode 100755 src/main/java/data/model/MemberType.java create mode 100755 src/main/java/data/model/Notification.java create mode 100755 src/main/java/data/model/OnOffSetting.java create mode 100755 src/main/java/data/model/Participant.java create mode 100755 src/main/java/data/model/PoinilaInvite.java create mode 100755 src/main/java/data/model/PoinilaResponse.java create mode 100755 src/main/java/data/model/Post.java create mode 100755 src/main/java/data/model/PostType.java create mode 100755 src/main/java/data/model/PrivacyType.java create mode 100755 src/main/java/data/model/SuggestedWebPagePost.java create mode 100755 src/main/java/data/model/SuggestionReason.java create mode 100755 src/main/java/data/model/SystemPreferences.java create mode 100755 src/main/java/data/model/Tag.java create mode 100755 src/main/java/data/model/Timed.java create mode 100755 src/main/java/data/model/Topic.java create mode 100755 src/main/java/data/model/ViewItem.java create mode 100755 src/main/java/data/model/notification/NCollection.java create mode 100755 src/main/java/manager/DBFacade.java create mode 100755 src/main/java/manager/DataRepository.java create mode 100755 src/main/java/manager/RequestSource.java create mode 100755 src/main/java/manager/dowload/NativeDLManager.java create mode 100755 src/main/java/manager/dowload/NotificationDLManager.java create mode 100755 src/main/res/anim/fade_in.xml create mode 100755 src/main/res/anim/fade_out.xml create mode 100755 src/main/res/color/black_disabled_grey.xml create mode 100755 src/main/res/color/collection_follow.xml create mode 100755 src/main/res/color/input_text_color_state_list.xml create mode 100755 src/main/res/color/option_text_color.xml create mode 100755 src/main/res/drawable-hdpi/action_follow_2_dark.png create mode 100755 src/main/res/drawable-hdpi/action_follow_selected.png create mode 100755 src/main/res/drawable-hdpi/action_help_default.png create mode 100755 src/main/res/drawable-hdpi/action_help_pressed.png create mode 100755 src/main/res/drawable-hdpi/action_next.png create mode 100755 src/main/res/drawable-hdpi/action_report_orange.png create mode 100755 src/main/res/drawable-hdpi/action_send_comment_orange.png create mode 100755 src/main/res/drawable-hdpi/action_send_comment_white.png create mode 100755 src/main/res/drawable-hdpi/action_setting_new_default.png create mode 100755 src/main/res/drawable-hdpi/action_setting_new_pressed.png create mode 100755 src/main/res/drawable-hdpi/add_collection_white.png create mode 100755 src/main/res/drawable-hdpi/add_post_white.png create mode 100755 src/main/res/drawable-hdpi/add_white_48dp.png create mode 100755 src/main/res/drawable-hdpi/arrow_down_white_24dp.png create mode 100755 src/main/res/drawable-hdpi/arrow_left_48dp.png create mode 100755 src/main/res/drawable-hdpi/arrow_right_white_48dp.png create mode 100755 src/main/res/drawable-hdpi/arrow_up_white_24dp.png create mode 100755 src/main/res/drawable-hdpi/browser.png create mode 100755 src/main/res/drawable-hdpi/btn_google_signin_dark_normal.9.png create mode 100755 src/main/res/drawable-hdpi/btn_google_signin_dark_pressed.9.png create mode 100755 src/main/res/drawable-hdpi/button_library_normal.png create mode 100755 src/main/res/drawable-hdpi/button_library_pressed.png create mode 100755 src/main/res/drawable-hdpi/clear.png create mode 100755 src/main/res/drawable-hdpi/close.png create mode 100755 src/main/res/drawable-hdpi/collection_no_image.png create mode 100755 src/main/res/drawable-hdpi/comment_normal.png create mode 100755 src/main/res/drawable-hdpi/comment_pressed.png create mode 100755 src/main/res/drawable-hdpi/crop_24dp.png create mode 100755 src/main/res/drawable-hdpi/done_24dp_black.png create mode 100755 src/main/res/drawable-hdpi/done_flamingo_24dp.png create mode 100755 src/main/res/drawable-hdpi/done_white_48dp.png create mode 100755 src/main/res/drawable-hdpi/email_48dp.png create mode 100755 src/main/res/drawable-hdpi/go_36dp.png create mode 100755 src/main/res/drawable-hdpi/icon_label_red2.png create mode 100755 src/main/res/drawable-hdpi/icon_label_selected2.png create mode 100755 src/main/res/drawable-hdpi/icon_label_white2.png create mode 100755 src/main/res/drawable-hdpi/invisible_black_24dp.png create mode 100755 src/main/res/drawable-hdpi/like_normal.png create mode 100755 src/main/res/drawable-hdpi/like_pressed.png create mode 100755 src/main/res/drawable-hdpi/like_selected.png create mode 100755 src/main/res/drawable-hdpi/menu_item_download.png create mode 100755 src/main/res/drawable-hdpi/pending_friendship_request.png create mode 100755 src/main/res/drawable-hdpi/phone_48dp.png create mode 100755 src/main/res/drawable-hdpi/play_button.png create mode 100755 src/main/res/drawable-hdpi/poinila_24dp_white.png create mode 100755 src/main/res/drawable-hdpi/post_no_image.png create mode 100755 src/main/res/drawable-hdpi/remove_boulder_36dp.png create mode 100755 src/main/res/drawable-hdpi/remove_white_36dp.png create mode 100755 src/main/res/drawable-hdpi/repost_normal.png create mode 100755 src/main/res/drawable-hdpi/repost_pressed.png create mode 100755 src/main/res/drawable-hdpi/rotate_left_white_24dp.png create mode 100755 src/main/res/drawable-hdpi/rotate_right_white_24dp.png create mode 100755 src/main/res/drawable-hdpi/rsz_icon_label_red2.png create mode 100755 src/main/res/drawable-hdpi/rsz_icon_label_white2.png create mode 100755 src/main/res/drawable-hdpi/search_normal.png create mode 100755 src/main/res/drawable-hdpi/search_pressed.png create mode 100755 src/main/res/drawable-hdpi/share_mysin_24dp.png create mode 100755 src/main/res/drawable-hdpi/tab_collection_light_nomargin.png create mode 100755 src/main/res/drawable-hdpi/tab_collection_selected_nomargin.png create mode 100755 src/main/res/drawable-hdpi/tab_dashboard_nomargin.png create mode 100755 src/main/res/drawable-hdpi/tab_dashboard_selected_nomargin.png create mode 100755 src/main/res/drawable-hdpi/tab_notification_light_nomargin.png create mode 100755 src/main/res/drawable-hdpi/tab_notification_selected_nomargin.png create mode 100755 src/main/res/drawable-hdpi/tab_profile_light_nomargin.png create mode 100755 src/main/res/drawable-hdpi/tab_profile_selected_nomargin.png create mode 100755 src/main/res/drawable-hdpi/tab_search_light_nomargin.png create mode 100755 src/main/res/drawable-hdpi/tab_search_nomargin.png create mode 100755 src/main/res/drawable-hdpi/tab_search_selected_nomargin.png create mode 100755 src/main/res/drawable-hdpi/toggle_invisible_nobel_32dp.png create mode 100755 src/main/res/drawable-hdpi/toggle_visible_nobel_32dp.png create mode 100755 src/main/res/drawable-hdpi/user_no_image.png create mode 100755 src/main/res/drawable-hdpi/user_no_image_big.png create mode 100755 src/main/res/drawable-hdpi/video_play.png create mode 100755 src/main/res/drawable-hdpi/video_type.png create mode 100755 src/main/res/drawable-hdpi/visible_black_24dp.png create mode 100755 src/main/res/drawable-hdpi/zoom_btn.png create mode 100755 src/main/res/drawable-mdpi/action_follow_2_dark.png create mode 100755 src/main/res/drawable-mdpi/action_follow_selected.png create mode 100755 src/main/res/drawable-mdpi/action_help_default.png create mode 100755 src/main/res/drawable-mdpi/action_help_pressed.png create mode 100755 src/main/res/drawable-mdpi/action_next.png create mode 100755 src/main/res/drawable-mdpi/action_report_orange.png create mode 100755 src/main/res/drawable-mdpi/action_send_comment_orange.png create mode 100755 src/main/res/drawable-mdpi/action_send_comment_white.png create mode 100755 src/main/res/drawable-mdpi/action_setting_new_default.png create mode 100755 src/main/res/drawable-mdpi/action_setting_new_pressed.png create mode 100755 src/main/res/drawable-mdpi/add_collection_white.png create mode 100755 src/main/res/drawable-mdpi/add_post_white.png create mode 100755 src/main/res/drawable-mdpi/arrow_down_white_24dp.png create mode 100755 src/main/res/drawable-mdpi/arrow_up_white_24dp.png create mode 100755 src/main/res/drawable-mdpi/btn_google_signin_dark_normal.9.png create mode 100755 src/main/res/drawable-mdpi/btn_google_signin_dark_pressed.9.png create mode 100755 src/main/res/drawable-mdpi/close.png create mode 100755 src/main/res/drawable-mdpi/collection_no_image.png create mode 100755 src/main/res/drawable-mdpi/crop_24dp.png create mode 100755 src/main/res/drawable-mdpi/done_24dp_black.png create mode 100755 src/main/res/drawable-mdpi/done_flamingo_24dp.png create mode 100755 src/main/res/drawable-mdpi/email_48dp.png create mode 100755 src/main/res/drawable-mdpi/go_36dp.png create mode 100755 src/main/res/drawable-mdpi/icon_label_red2.png create mode 100755 src/main/res/drawable-mdpi/icon_label_white2.png create mode 100755 src/main/res/drawable-mdpi/invisible_black_24dp.png create mode 100755 src/main/res/drawable-mdpi/menu_item_download.png create mode 100755 src/main/res/drawable-mdpi/pending_friendship_request.png create mode 100755 src/main/res/drawable-mdpi/phone_48dp.png create mode 100755 src/main/res/drawable-mdpi/play_button.png create mode 100755 src/main/res/drawable-mdpi/poinila_24dp_white.png create mode 100755 src/main/res/drawable-mdpi/post_no_image.png create mode 100755 src/main/res/drawable-mdpi/repost_normal.png create mode 100755 src/main/res/drawable-mdpi/repost_pressed.png create mode 100755 src/main/res/drawable-mdpi/rsz_icon_label_red2.png create mode 100755 src/main/res/drawable-mdpi/rsz_icon_label_white2.png create mode 100755 src/main/res/drawable-mdpi/share_mysin_24dp.png create mode 100755 src/main/res/drawable-mdpi/tab_collection_light_nomargin.png create mode 100755 src/main/res/drawable-mdpi/tab_collection_selected_nomargin.png create mode 100755 src/main/res/drawable-mdpi/tab_dashboard_light_nomargin.png create mode 100755 src/main/res/drawable-mdpi/tab_dashboard_normal.png create mode 100755 src/main/res/drawable-mdpi/tab_dashboard_selected.png create mode 100755 src/main/res/drawable-mdpi/tab_dashboard_selected_nomargin.png create mode 100755 src/main/res/drawable-mdpi/tab_notification_light_nomargin.png create mode 100755 src/main/res/drawable-mdpi/tab_notification_selected_nomargin.png create mode 100755 src/main/res/drawable-mdpi/tab_profile_light_nomargin.png create mode 100755 src/main/res/drawable-mdpi/tab_profile_selected_nomargin.png create mode 100755 src/main/res/drawable-mdpi/tab_search_light_nomargin.png create mode 100755 src/main/res/drawable-mdpi/tab_search_nomargin.png create mode 100755 src/main/res/drawable-mdpi/tab_search_selected_nomargin.png create mode 100755 src/main/res/drawable-mdpi/toggle_invisible_nobel_32dp.png create mode 100755 src/main/res/drawable-mdpi/toggle_visible_nobel_32dp.png create mode 100755 src/main/res/drawable-mdpi/user_no_image.png create mode 100755 src/main/res/drawable-mdpi/user_no_image_big.png create mode 100755 src/main/res/drawable-mdpi/video_play.png create mode 100755 src/main/res/drawable-mdpi/video_type.png create mode 100755 src/main/res/drawable-mdpi/visible_black_24dp.png create mode 100755 src/main/res/drawable-mdpi/zoom_btn.png create mode 100755 src/main/res/drawable-nodpi/help_add_content.jpg create mode 100755 src/main/res/drawable-nodpi/help_collections.jpg create mode 100755 src/main/res/drawable-nodpi/help_dashboard.jpg create mode 100755 src/main/res/drawable-nodpi/help_notifications.jpg create mode 100755 src/main/res/drawable-nodpi/help_profile.jpg create mode 100755 src/main/res/drawable-nodpi/help_search.jpg create mode 100755 src/main/res/drawable-nodpi/help_text_background.png create mode 100755 src/main/res/drawable-nodpi/login_background.png create mode 100755 src/main/res/drawable-nodpi/ponila_logo_with_text.png create mode 100755 src/main/res/drawable-nodpi/splash_background.jpg create mode 100755 src/main/res/drawable-nodpi/texture.png create mode 100755 src/main/res/drawable-xhdpi/action_add_circle.png create mode 100755 src/main/res/drawable-xhdpi/action_check.png create mode 100755 src/main/res/drawable-xhdpi/action_follow_2_dark.png create mode 100755 src/main/res/drawable-xhdpi/action_follow_selected.png create mode 100755 src/main/res/drawable-xhdpi/action_help_default.png create mode 100755 src/main/res/drawable-xhdpi/action_help_pressed.png create mode 100755 src/main/res/drawable-xhdpi/action_next.png create mode 100755 src/main/res/drawable-xhdpi/action_report_orange.png create mode 100755 src/main/res/drawable-xhdpi/action_repost_normal.png create mode 100755 src/main/res/drawable-xhdpi/action_send_comment_orange.png create mode 100755 src/main/res/drawable-xhdpi/action_send_comment_white.png create mode 100755 src/main/res/drawable-xhdpi/action_setting_new_default.png create mode 100755 src/main/res/drawable-xhdpi/action_setting_new_pressed.png create mode 100755 src/main/res/drawable-xhdpi/add_collection_white.png create mode 100755 src/main/res/drawable-xhdpi/add_friend.png create mode 100755 src/main/res/drawable-xhdpi/add_friend_selected.png create mode 100755 src/main/res/drawable-xhdpi/add_icon.png create mode 100755 src/main/res/drawable-xhdpi/add_post_white.png create mode 100755 src/main/res/drawable-xhdpi/arrow_down_white_24dp.png create mode 100755 src/main/res/drawable-xhdpi/arrow_up_white_24dp.png create mode 100755 src/main/res/drawable-xhdpi/btn_google_signin_dark_normal.9.png create mode 100755 src/main/res/drawable-xhdpi/btn_google_signin_dark_pressed.9.png create mode 100755 src/main/res/drawable-xhdpi/camera_normal.png create mode 100755 src/main/res/drawable-xhdpi/camera_pressed.png create mode 100755 src/main/res/drawable-xhdpi/checkbox_off.png create mode 100755 src/main/res/drawable-xhdpi/checkbox_off_pressed.png create mode 100755 src/main/res/drawable-xhdpi/checkbox_on.png create mode 100755 src/main/res/drawable-xhdpi/clear.png create mode 100755 src/main/res/drawable-xhdpi/close.png create mode 100755 src/main/res/drawable-xhdpi/collection_no_image.png create mode 100755 src/main/res/drawable-xhdpi/collection_white.png create mode 100755 src/main/res/drawable-xhdpi/crop_24dp.png create mode 100755 src/main/res/drawable-xhdpi/delete.png create mode 100755 src/main/res/drawable-xhdpi/delete_icon.png create mode 100755 src/main/res/drawable-xhdpi/delete_icon_pressed.png create mode 100755 src/main/res/drawable-xhdpi/done_24dp_black.png create mode 100755 src/main/res/drawable-xhdpi/done_flamingo_24dp.png create mode 100755 src/main/res/drawable-xhdpi/edit_small.png create mode 100755 src/main/res/drawable-xhdpi/edit_white.png create mode 100755 src/main/res/drawable-xhdpi/email_48dp.png create mode 100755 src/main/res/drawable-xhdpi/form_login_password.png create mode 100755 src/main/res/drawable-xhdpi/form_login_user.png create mode 100755 src/main/res/drawable-xhdpi/friends.png create mode 100755 src/main/res/drawable-xhdpi/friends_white.png create mode 100755 src/main/res/drawable-xhdpi/gallery_normal.png create mode 100755 src/main/res/drawable-xhdpi/gallery_pressed.png create mode 100755 src/main/res/drawable-xhdpi/go_36dp.png create mode 100755 src/main/res/drawable-xhdpi/ic_media_fullscreen_shrink.png create mode 100755 src/main/res/drawable-xhdpi/ic_media_fullscreen_stretch.png create mode 100755 src/main/res/drawable-xhdpi/ic_media_pause.png create mode 100755 src/main/res/drawable-xhdpi/ic_media_play.png create mode 100755 src/main/res/drawable-xhdpi/icon_label_red2.png create mode 100755 src/main/res/drawable-xhdpi/icon_label_white2.png create mode 100755 src/main/res/drawable-xhdpi/invisible_black_24dp.png create mode 100755 src/main/res/drawable-xhdpi/menu_item_download.png create mode 100755 src/main/res/drawable-xhdpi/pending_friendship_request.png create mode 100755 src/main/res/drawable-xhdpi/phone_48dp.png create mode 100755 src/main/res/drawable-xhdpi/play_button.png create mode 100755 src/main/res/drawable-xhdpi/poinila_24dp_white.png create mode 100755 src/main/res/drawable-xhdpi/post_no_image.png create mode 100755 src/main/res/drawable-xhdpi/radiobutton_off.png create mode 100755 src/main/res/drawable-xhdpi/radiobutton_on.png create mode 100755 src/main/res/drawable-xhdpi/radiobutton_on_pressed.png create mode 100755 src/main/res/drawable-xhdpi/repost_normal.png create mode 100755 src/main/res/drawable-xhdpi/repost_pressed.png create mode 100755 src/main/res/drawable-xhdpi/rsz_icon_label_red2.png create mode 100755 src/main/res/drawable-xhdpi/rsz_icon_label_white2.png create mode 100755 src/main/res/drawable-xhdpi/search_tag_active.png create mode 100755 src/main/res/drawable-xhdpi/search_tag_inactive.png create mode 100755 src/main/res/drawable-xhdpi/send_normal.png create mode 100755 src/main/res/drawable-xhdpi/send_pressed.png create mode 100755 src/main/res/drawable-xhdpi/share_mysin_24dp.png create mode 100755 src/main/res/drawable-xhdpi/spinner.9.png create mode 100755 src/main/res/drawable-xhdpi/tab_collection_light_nomargin.png create mode 100755 src/main/res/drawable-xhdpi/tab_collection_selected_nomargin.png create mode 100755 src/main/res/drawable-xhdpi/tab_dashboard_nomargin.png create mode 100755 src/main/res/drawable-xhdpi/tab_dashboard_selected_nomargin.png create mode 100755 src/main/res/drawable-xhdpi/tab_notification_light_nomargin.png create mode 100755 src/main/res/drawable-xhdpi/tab_notification_selected_nomargin.png create mode 100755 src/main/res/drawable-xhdpi/tab_profile_light_nomargin.png create mode 100755 src/main/res/drawable-xhdpi/tab_profile_selected_nomargin.png create mode 100755 src/main/res/drawable-xhdpi/tab_search_light_nomargin.png create mode 100755 src/main/res/drawable-xhdpi/tab_search_nomargin.png create mode 100755 src/main/res/drawable-xhdpi/tab_search_selected_nomargin.png create mode 100755 src/main/res/drawable-xhdpi/toggle_invisible_nobel_32dp.png create mode 100755 src/main/res/drawable-xhdpi/toggle_visible_nobel_32dp.png create mode 100755 src/main/res/drawable-xhdpi/user_no_image.png create mode 100755 src/main/res/drawable-xhdpi/user_no_image_big.png create mode 100755 src/main/res/drawable-xhdpi/video_play.png create mode 100755 src/main/res/drawable-xhdpi/video_type.png create mode 100755 src/main/res/drawable-xhdpi/visible_black_24dp.png create mode 100755 src/main/res/drawable-xhdpi/zoom_btn.png create mode 100755 src/main/res/drawable-xxhdpi/action_follow_2_dark.png create mode 100755 src/main/res/drawable-xxhdpi/action_follow_selected.png create mode 100755 src/main/res/drawable-xxhdpi/action_help_default.png create mode 100755 src/main/res/drawable-xxhdpi/action_help_pressed.png create mode 100755 src/main/res/drawable-xxhdpi/action_next.png create mode 100755 src/main/res/drawable-xxhdpi/action_report_orange.png create mode 100755 src/main/res/drawable-xxhdpi/action_send_comment_orange.png create mode 100755 src/main/res/drawable-xxhdpi/action_send_comment_white.png create mode 100755 src/main/res/drawable-xxhdpi/action_setting_new_default.png create mode 100755 src/main/res/drawable-xxhdpi/action_setting_new_pressed.png create mode 100755 src/main/res/drawable-xxhdpi/add_collection_white.png create mode 100755 src/main/res/drawable-xxhdpi/add_post_white.png create mode 100755 src/main/res/drawable-xxhdpi/add_white_48dp.png create mode 100755 src/main/res/drawable-xxhdpi/arrow_down_white_24dp.png create mode 100755 src/main/res/drawable-xxhdpi/arrow_left_48dp.png create mode 100755 src/main/res/drawable-xxhdpi/arrow_right_white_48dp.png create mode 100755 src/main/res/drawable-xxhdpi/arrow_up_white_24dp.png create mode 100755 src/main/res/drawable-xxhdpi/browser.png create mode 100755 src/main/res/drawable-xxhdpi/btn_google_signin_dark_normal.9.png create mode 100755 src/main/res/drawable-xxhdpi/btn_google_signin_dark_pressed.9.png create mode 100755 src/main/res/drawable-xxhdpi/button_library_normal.png create mode 100755 src/main/res/drawable-xxhdpi/button_library_pressed.png create mode 100755 src/main/res/drawable-xxhdpi/clear.png create mode 100755 src/main/res/drawable-xxhdpi/close.png create mode 100755 src/main/res/drawable-xxhdpi/collection_no_image.png create mode 100755 src/main/res/drawable-xxhdpi/comment_normal.png create mode 100755 src/main/res/drawable-xxhdpi/comment_pressed.png create mode 100755 src/main/res/drawable-xxhdpi/crop_24dp.png create mode 100755 src/main/res/drawable-xxhdpi/done_24dp_black.png create mode 100755 src/main/res/drawable-xxhdpi/done_flamingo_24dp.png create mode 100755 src/main/res/drawable-xxhdpi/done_white_48dp.png create mode 100755 src/main/res/drawable-xxhdpi/email_48dp.png create mode 100755 src/main/res/drawable-xxhdpi/go_36dp.png create mode 100755 src/main/res/drawable-xxhdpi/icon_label_red2.png create mode 100755 src/main/res/drawable-xxhdpi/icon_label_white2.png create mode 100755 src/main/res/drawable-xxhdpi/invisible_black_24dp.png create mode 100755 src/main/res/drawable-xxhdpi/like_normal.png create mode 100755 src/main/res/drawable-xxhdpi/like_pressed.png create mode 100755 src/main/res/drawable-xxhdpi/like_selected.png create mode 100755 src/main/res/drawable-xxhdpi/menu_item_download.png create mode 100755 src/main/res/drawable-xxhdpi/pending_friendship_request.png create mode 100755 src/main/res/drawable-xxhdpi/phone_48dp.png create mode 100755 src/main/res/drawable-xxhdpi/play_button.png create mode 100755 src/main/res/drawable-xxhdpi/poinila_24dp_white.png create mode 100755 src/main/res/drawable-xxhdpi/post_no_image.png create mode 100755 src/main/res/drawable-xxhdpi/remove_boulder_36dp.png create mode 100755 src/main/res/drawable-xxhdpi/remove_white_36dp.png create mode 100755 src/main/res/drawable-xxhdpi/repost_normal.png create mode 100755 src/main/res/drawable-xxhdpi/repost_pressed.png create mode 100755 src/main/res/drawable-xxhdpi/rotate_left_white_24dp.png create mode 100755 src/main/res/drawable-xxhdpi/rotate_right_white_24dp.png create mode 100755 src/main/res/drawable-xxhdpi/rsz_icon_label_red2.png create mode 100755 src/main/res/drawable-xxhdpi/rsz_icon_label_white2.png create mode 100755 src/main/res/drawable-xxhdpi/search_normal.png create mode 100755 src/main/res/drawable-xxhdpi/search_pressed.png create mode 100755 src/main/res/drawable-xxhdpi/share_mysin_24dp.png create mode 100755 src/main/res/drawable-xxhdpi/tab_collection_light_nomargin.png create mode 100755 src/main/res/drawable-xxhdpi/tab_collection_selected_nomargin.png create mode 100755 src/main/res/drawable-xxhdpi/tab_dashboard_nomargin.png create mode 100755 src/main/res/drawable-xxhdpi/tab_dashboard_selected_nomargin.png create mode 100755 src/main/res/drawable-xxhdpi/tab_notification_light_nomargin.png create mode 100755 src/main/res/drawable-xxhdpi/tab_notification_selected_nomargin.png create mode 100755 src/main/res/drawable-xxhdpi/tab_profile_light_nomargin.png create mode 100755 src/main/res/drawable-xxhdpi/tab_profile_selected_nomargin.png create mode 100755 src/main/res/drawable-xxhdpi/tab_search_light_nomargin.png create mode 100755 src/main/res/drawable-xxhdpi/tab_search_nomargin.png create mode 100755 src/main/res/drawable-xxhdpi/tab_search_selected_nomargin.png create mode 100755 src/main/res/drawable-xxhdpi/toggle_invisible_nobel_32dp.png create mode 100755 src/main/res/drawable-xxhdpi/toggle_visible_nobel_32dp.png create mode 100755 src/main/res/drawable-xxhdpi/user_no_image.png create mode 100755 src/main/res/drawable-xxhdpi/user_no_image_big.png create mode 100755 src/main/res/drawable-xxhdpi/video_play.png create mode 100755 src/main/res/drawable-xxhdpi/video_type.png create mode 100755 src/main/res/drawable-xxhdpi/visible_black_24dp.png create mode 100755 src/main/res/drawable-xxhdpi/zoom_btn.png create mode 100755 src/main/res/drawable/action_follow_collection.xml create mode 100755 src/main/res/drawable/action_help_setting.xml create mode 100755 src/main/res/drawable/action_settings.xml create mode 100755 src/main/res/drawable/add_friend_selector.xml create mode 100755 src/main/res/drawable/add_remove_checkbox_selector.xml create mode 100755 src/main/res/drawable/bg_texture.xml create mode 100755 src/main/res/drawable/bordered_focusable.xml create mode 100755 src/main/res/drawable/bordered_focusable_float_hint_margin.xml create mode 100755 src/main/res/drawable/bordered_input.xml create mode 100755 src/main/res/drawable/bordered_rounded_rect.xml create mode 100755 src/main/res/drawable/bordered_rounded_rect_checked.xml create mode 100755 src/main/res/drawable/bordered_rounded_rect_disabled.xml create mode 100755 src/main/res/drawable/bottom_bar_remove_background.xml create mode 100755 src/main/res/drawable/boulder_rounded_button.xml create mode 100755 src/main/res/drawable/button_library.xml create mode 100755 src/main/res/drawable/camera_selector.xml create mode 100755 src/main/res/drawable/checkbox_selector.xml create mode 100755 src/main/res/drawable/circle_black_transparent.xml create mode 100755 src/main/res/drawable/collection_bottom_bar.xml create mode 100755 src/main/res/drawable/collection_detail_owned_delete_button.xml create mode 100755 src/main/res/drawable/collection_detail_owned_edit_button.xml create mode 100755 src/main/res/drawable/collection_follow.xml create mode 100755 src/main/res/drawable/comment_field_background.xml create mode 100755 src/main/res/drawable/comment_selector.xml create mode 100755 src/main/res/drawable/fab_label_background.xml create mode 100755 src/main/res/drawable/favorite_selector.xml create mode 100755 src/main/res/drawable/favorite_selector_list.xml create mode 100755 src/main/res/drawable/flamingo_rounded_button.xml create mode 100755 src/main/res/drawable/gallery_selector.xml create mode 100755 src/main/res/drawable/google_signin_btn.xml create mode 100755 src/main/res/drawable/image_caption_text.xml create mode 100755 src/main/res/drawable/interest_btn.xml create mode 100755 src/main/res/drawable/interest_frame.xml create mode 100755 src/main/res/drawable/interest_image_frame.xml create mode 100755 src/main/res/drawable/mercury_bottom_rounded.xml create mode 100755 src/main/res/drawable/mysin_rounded_button.xml create mode 100755 src/main/res/drawable/notif_tab.xml create mode 100755 src/main/res/drawable/option_drawable.xml create mode 100755 src/main/res/drawable/option_left_drawable.xml create mode 100755 src/main/res/drawable/option_right_drawable.xml create mode 100755 src/main/res/drawable/options_background.xml create mode 100755 src/main/res/drawable/outlined_boulder_button.xml create mode 100755 src/main/res/drawable/poinila_frame.xml create mode 100755 src/main/res/drawable/post_general_image.xml create mode 100755 src/main/res/drawable/profile_frame.xml create mode 100755 src/main/res/drawable/profile_info_circle.xml create mode 100755 src/main/res/drawable/radio_button_selector.xml create mode 100755 src/main/res/drawable/repost_selector.xml create mode 100755 src/main/res/drawable/rounded_rect_noble_tag.xml create mode 100755 src/main/res/drawable/search_btn_background.xml create mode 100755 src/main/res/drawable/search_field_background.xml create mode 100755 src/main/res/drawable/search_selector.xml create mode 100755 src/main/res/drawable/send_comment_selector_background.xml create mode 100755 src/main/res/drawable/send_selector.xml create mode 100755 src/main/res/drawable/snackbar_action.xml create mode 100755 src/main/res/drawable/tab_collection_selector.xml create mode 100755 src/main/res/drawable/tab_dashboard_selector.xml create mode 100755 src/main/res/drawable/tab_notification_number.xml create mode 100755 src/main/res/drawable/tab_notification_selector.xml create mode 100755 src/main/res/drawable/tab_profile_selector.xml create mode 100755 src/main/res/drawable/tab_search_selector.xml create mode 100755 src/main/res/drawable/video_play_btn.xml create mode 100755 src/main/res/drawable/video_play_btn_background.xml create mode 100755 src/main/res/drawable/video_progress.xml create mode 100755 src/main/res/drawable/west_side_rounded_button.xml create mode 100755 src/main/res/layout/activity_change_password.xml create mode 100755 src/main/res/layout/activity_circle_management.xml create mode 100755 src/main/res/layout/activity_comments.xml create mode 100755 src/main/res/layout/activity_crop_image.xml create mode 100755 src/main/res/layout/activity_edit_interests.xml create mode 100755 src/main/res/layout/activity_fragment_host.xml create mode 100755 src/main/res/layout/activity_full_image.xml create mode 100755 src/main/res/layout/activity_help.xml create mode 100755 src/main/res/layout/activity_home.xml create mode 100755 src/main/res/layout/activity_new_web_site_post.xml create mode 100755 src/main/res/layout/activity_others_profile.xml create mode 100755 src/main/res/layout/activity_profile_setting.xml create mode 100755 src/main/res/layout/activity_select_interests.xml create mode 100755 src/main/res/layout/activity_setting.xml create mode 100755 src/main/res/layout/activity_sign_up_login.xml create mode 100755 src/main/res/layout/activity_splash.xml create mode 100755 src/main/res/layout/ask_if_user_likes_ponila.xml create mode 100755 src/main/res/layout/ask_if_user_rates_ponila.xml create mode 100755 src/main/res/layout/authenticator.xml create mode 100755 src/main/res/layout/author_info_post_detail.xml create mode 100755 src/main/res/layout/blog_info.xml create mode 100755 src/main/res/layout/checked_text.xml create mode 100755 src/main/res/layout/chrome_activity.xml create mode 100755 src/main/res/layout/circle_edit_item.xml create mode 100755 src/main/res/layout/circle_image_title_subtitle_stats.xml create mode 100755 src/main/res/layout/collection_bottom_bar_three.xml create mode 100755 src/main/res/layout/collection_columned_author.xml create mode 100755 src/main/res/layout/collection_detail_owned.xml create mode 100755 src/main/res/layout/collection_editable.xml create mode 100755 src/main/res/layout/collection_followable.xml create mode 100755 src/main/res/layout/collection_general.xml create mode 100755 src/main/res/layout/collection_images.xml create mode 100755 src/main/res/layout/collection_info_post_detail.xml create mode 100755 src/main/res/layout/collection_item.xml create mode 100755 src/main/res/layout/collection_simple.xml create mode 100755 src/main/res/layout/comment.xml create mode 100755 src/main/res/layout/comment_large.xml create mode 100755 src/main/res/layout/crop_image.xml create mode 100755 src/main/res/layout/dialog_contact_us.xml create mode 100755 src/main/res/layout/dialog_edit_collection.xml create mode 100755 src/main/res/layout/dialog_general.xml create mode 100755 src/main/res/layout/dialog_invite_to_poinila.xml create mode 100755 src/main/res/layout/dialog_new_collection.xml create mode 100755 src/main/res/layout/dialog_new_post.xml create mode 100755 src/main/res/layout/dialog_new_website_post.xml create mode 100755 src/main/res/layout/dialog_report.xml create mode 100755 src/main/res/layout/dialog_set_user_pass.xml create mode 100755 src/main/res/layout/dialog_setting_website.xml create mode 100755 src/main/res/layout/dialog_single_text_input.xml create mode 100755 src/main/res/layout/dialog_verification_request.xml create mode 100755 src/main/res/layout/follow_unfollow_collection.xml create mode 100755 src/main/res/layout/fragment_anonymous.xml create mode 100755 src/main/res/layout/fragment_collection_detail_owned.xml create mode 100755 src/main/res/layout/fragment_explore.xml create mode 100755 src/main/res/layout/fragment_favorites.xml create mode 100755 src/main/res/layout/fragment_forgot_password.xml create mode 100755 src/main/res/layout/fragment_help.xml create mode 100755 src/main/res/layout/fragment_login.xml create mode 100755 src/main/res/layout/fragment_member_collections.xml create mode 100755 src/main/res/layout/fragment_member_posts.xml create mode 100755 src/main/res/layout/fragment_my_followed_collections.xml create mode 100755 src/main/res/layout/fragment_new_web_site_post_input_url.xml create mode 100755 src/main/res/layout/fragment_notification.xml create mode 100755 src/main/res/layout/fragment_profile.xml create mode 100755 src/main/res/layout/fragment_register.xml create mode 100755 src/main/res/layout/fragment_reposts.xml create mode 100755 src/main/res/layout/fragment_request_verification_code.xml create mode 100755 src/main/res/layout/fragment_reset_password.xml create mode 100755 src/main/res/layout/fragment_search.xml create mode 100755 src/main/res/layout/fragment_webview.xml create mode 100755 src/main/res/layout/gender_item.xml create mode 100755 src/main/res/layout/horizontal_line.xml create mode 100755 src/main/res/layout/image_caption.xml create mode 100755 src/main/res/layout/input_verification_code.xml create mode 100755 src/main/res/layout/label_value_setting.xml create mode 100755 src/main/res/layout/mask_create.xml create mode 100755 src/main/res/layout/mask_dashboard.xml create mode 100755 src/main/res/layout/mask_followed_collections.xml create mode 100755 src/main/res/layout/mask_post_related_posts.xml create mode 100755 src/main/res/layout/mask_posts_of_collection.xml create mode 100755 src/main/res/layout/mask_profile.xml create mode 100755 src/main/res/layout/media_controller.xml create mode 100755 src/main/res/layout/member_inlist.xml create mode 100755 src/main/res/layout/my_followed_collections.xml create mode 100755 src/main/res/layout/new_website_post_select_media.xml create mode 100755 src/main/res/layout/next_last_buttons.xml create mode 100755 src/main/res/layout/notif_collection.xml create mode 100755 src/main/res/layout/notif_images_container.xml create mode 100755 src/main/res/layout/notif_member.xml create mode 100755 src/main/res/layout/notif_post.xml create mode 100755 src/main/res/layout/notif_requested_tobe_your_friend.xml create mode 100755 src/main/res/layout/notif_title_subtitle_black_gray.xml create mode 100755 src/main/res/layout/poinila_switch.xml create mode 100755 src/main/res/layout/ponila_snackbar.xml create mode 100755 src/main/res/layout/ponila_video_player.xml create mode 100755 src/main/res/layout/ponila_video_view.xml create mode 100755 src/main/res/layout/post_dashboard.xml create mode 100755 src/main/res/layout/post_full_detail.xml create mode 100755 src/main/res/layout/post_in_collection.xml create mode 100755 src/main/res/layout/post_item_author.xml create mode 100755 src/main/res/layout/post_item_collection.xml create mode 100755 src/main/res/layout/post_item_general.xml create mode 100755 src/main/res/layout/post_item_removable.xml create mode 100755 src/main/res/layout/post_name_site_date.xml create mode 100755 src/main/res/layout/post_related_posts.xml create mode 100755 src/main/res/layout/profile.xml create mode 100755 src/main/res/layout/profile_general_info.xml create mode 100755 src/main/res/layout/profile_stats.xml create mode 100755 src/main/res/layout/progress.xml create mode 100755 src/main/res/layout/progress_determinate.xml create mode 100755 src/main/res/layout/radio_group_post.xml create mode 100755 src/main/res/layout/recycler_view_full.xml create mode 100755 src/main/res/layout/recycler_view_weighted_full.xml create mode 100755 src/main/res/layout/removable_chip.xml create mode 100755 src/main/res/layout/removable_imaged_interest.xml create mode 100755 src/main/res/layout/rounded_image_title_subtitle.xml create mode 100755 src/main/res/layout/rounded_image_title_subtitle_icon.xml create mode 100755 src/main/res/layout/scrollable_linearlayout.xml create mode 100755 src/main/res/layout/searchbar_edittext.xml create mode 100755 src/main/res/layout/select_frame.xml create mode 100755 src/main/res/layout/select_image_dialog.xml create mode 100755 src/main/res/layout/selectable_interest.xml create mode 100755 src/main/res/layout/simple_textview.xml create mode 100755 src/main/res/layout/single_image_staggered.xml create mode 100755 src/main/res/layout/spinner_item.xml create mode 100755 src/main/res/layout/spinner_item_textview.xml create mode 100755 src/main/res/layout/spinner_prompt.xml create mode 100755 src/main/res/layout/spinner_test.xml create mode 100755 src/main/res/layout/stats.xml create mode 100755 src/main/res/layout/stats_big.xml create mode 100755 src/main/res/layout/swipe_refresh.xml create mode 100755 src/main/res/layout/switch_text_setting.xml create mode 100755 src/main/res/layout/tab_notification_layout.xml create mode 100755 src/main/res/layout/tag_container_with_edittext.xml create mode 100755 src/main/res/layout/tag_image.xml create mode 100755 src/main/res/layout/tag_removable.xml create mode 100755 src/main/res/layout/tag_text_view.xml create mode 100755 src/main/res/layout/tags_container.xml create mode 100755 src/main/res/layout/test_empty_fragment.xml create mode 100755 src/main/res/layout/title_arrow_divider.xml create mode 100755 src/main/res/layout/title_arrow_divider_login.xml create mode 100755 src/main/res/layout/title_subtitle_centered.xml create mode 100755 src/main/res/layout/toolbar.xml create mode 100755 src/main/res/layout/toolbar_black.xml create mode 100755 src/main/res/layout/two_input_field.xml create mode 100755 src/main/res/layout/two_vertical_transparent_label.xml create mode 100755 src/main/res/layout/vertical_line.xml create mode 100755 src/main/res/layout/view_ponila_choice.xml create mode 100755 src/main/res/layout/white_transarent_mask.xml create mode 100755 src/main/res/menu/menu_change_pass.xml create mode 100755 src/main/res/menu/menu_circles_management.xml create mode 100755 src/main/res/menu/menu_crop_image.xml create mode 100755 src/main/res/menu/menu_done_action.xml create mode 100755 src/main/res/menu/menu_frame_management.xml create mode 100755 src/main/res/menu/menu_inline_browser.xml create mode 100755 src/main/res/menu/menu_main.xml create mode 100755 src/main/res/menu/menu_popup_profile_picture.xml create mode 100755 src/main/res/menu/menu_post.xml create mode 100755 src/main/res/menu/menu_sign_up_login.xml create mode 100755 src/main/res/mipmap-hdpi/ic_launcher.png create mode 100755 src/main/res/mipmap-mdpi/ic_launcher.png create mode 100755 src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100755 src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100755 src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100755 src/main/res/raw/hexagon.svg create mode 100755 src/main/res/values-v21/styles.xml create mode 100755 src/main/res/values-w240dp/dimens.xml create mode 100755 src/main/res/values-w600dp/dimens.xml create mode 100755 src/main/res/values-w600dp/integer.xml create mode 100755 src/main/res/values-w600dp/styles.xml create mode 100755 src/main/res/values-w820dp/dimens.xml create mode 100755 src/main/res/values-w820dp/integer.xml create mode 100755 src/main/res/values/attrs.xml create mode 100755 src/main/res/values/colors.xml create mode 100755 src/main/res/values/dimens.xml create mode 100755 src/main/res/values/font_styles.xml create mode 100755 src/main/res/values/ids.xml create mode 100755 src/main/res/values/integer.xml create mode 100755 src/main/res/values/strings.xml create mode 100755 src/main/res/values/styles.xml create mode 100755 src/main/res/values/themes.xml create mode 100755 src/main/res/xml/preferences.xml diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..190b7ec911cf137ca9d4f06dd68e5e2f49affb03 GIT binary patch literal 6148 zcmeHK!H&}~5FNJ#(gLEOmDpp1#I01V77=kkDy4ha0}`SL4uE!(CUmpP##NGT1*NFp zzzsfwzu*h_9C%~9uxa5674lT}o7gkY@r!KNL?rstuuIe=A_s-B)rx#{U#J0BytoaGC&MAh)NE;|6Q4y z#&vpwl^$Td$23Cb1fE140SmN6l$ROk3-a3M7e&Wldxo2XQ47cO3MoQBi5+IT%Yma}2u7t_4&XD|8biC-KC z#(ySd^3(T&=W#SUZ0ls{X)afMD$lx&}3v)veYIL-_Dx5@5qpht1R)Mkt zRsGoH^MC)(_y2N|eX; +} + +-keepclasseswithmembernames class * { + @butterknife.* ; +} + +# Saripaar Form Validation +-keep class com.mobsandgeeks.saripaar.** {*;} +-keep class commons.validator.routines.** {*;} +-keep @com.mobsandgeeks.saripaar.annotation.ValidateUsing class * {*;} + +# LeakCanary +-keep class org.eclipse.mat.** { *; } +-keep class com.squareup.leakcanary.** { *; } + +# parcelable error (Unmarshalling unknown type code) +-keepclassmembers class * implements android.os.Parcelable { + static ** CREATOR; +} + +# Fabric +-keepattributes *Annotation* +-keepattributes SourceFile,LineNumberTable +-keep public class * extends java.lang.Exception + +# Tap Stream +-keep class com.google.android.gms.ads.identifier.** { *; } \ No newline at end of file diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e08e6d4ed9b8507fbdbe65023ae93b4b4ebcf28b GIT binary patch literal 6148 zcmeHK%}(Pm5FVETZV{pfBsltl#G!{)AaX!RQ5O!}kb-s(fFRjaOQaB^CZ%FaQCd1HMzY`46o+VZ?n zQw=?@)l}PCJEKueu5GmU4lk~5{|@g)_YY>MAaHpbS#daqM>Hlx+yuQW)!85PjpN60 zjLZNtzzob318$R&OEdLX{4>k|GcXGb(EgxM34Mp9MYDBaVV(epbd5BEHeD7eM>+Hz zmKL!EMc7nCn=0HBL)dimD;MWGEG^n}5bp6I+?R!Wp$PMJ>|dF15WYn&nE__tEdz75 z+Mx6Q;PdzY+a#_r1I)m;Vn9^)gZ&N;$(^lJgQK%npTesting Fundamentals + */ +public class ApplicationTest extends ApplicationTestCase { + public ApplicationTest() { + super(Application.class); + } +} \ No newline at end of file diff --git a/src/main/.DS_Store b/src/main/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..cb8615df0cb725eaa5794bdbe2acc6939df60ca2 GIT binary patch literal 6148 zcmeH~Pj1sd6vp2)rgef4k&4tVy+L9TP@*EdKu9K(MHfg&Mz8>s+OcVjTu)>>bs+?K z!y(`X9EB5b5Doy}{Gm!5$`YYyUNrNK-@G@`{N$PO5D^>Bq5)Bth-?(0RtMD|O!SMg zW?R~G70ToooDz!Y2?dm`MH`19U=L z4pSZ?Lu?oKQEvT|h8EE_R(*kAjEtfY`}J?JVO31^xZlEQniOTf|DA2MtSj3)w%xHi z*E+BL39tMzC}+hm$X|-5r$IRhb^96T=|wvTpC@rO>fU(7voc7sIG4#u6eHx-izJJ9 zHRQ7_D&#o6>agv$-5z!K=kr0|?KuaoyXZM{*X{S5y9f6ci?+RYbMWBk`1IZT`G>{F z&vMGdu$26i8&}M)?rU}61bek$@2;@_EPgXIq zJ!CE;x9BbM&nRfbeYz}eQ&C@lXkcyuDc<1*o*xZ7I%-ql=;<}kfPsE_ZLtR!GXx9) zLtvSJ*dH7ep`O-SsoXkH$twWVf?FEe;^RQ%I9ffewNmuJm`a7JRHm;OOr^u`=r~Vn ztyHBG)0YpX|C#9<3X}hi@f{gX%u{M=L%bJA@ENL F`~tV*8XW)t literal 0 HcmV?d00001 diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml new file mode 100755 index 0000000..35dc91b --- /dev/null +++ b/src/main/AndroidManifest.xml @@ -0,0 +1,273 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/assets/.DS_Store b/src/main/assets/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8ddc26df065c3526e40e302caa494fba91d881d4 GIT binary patch literal 6148 zcmeHK!Ab)$5KY>uX+`Wou*X~k4?VOf?m>j5>cN|^q6d|B*H&FvH`3i&v{v>v^pE@k zKSyVhv{b4`#mWp!-t1&1yLk!84r7crdhI%6WyY8QMa&hU`9iQCbxLy9lLzE_jN~9v z7eS?Dlas^3t(xSi;6JkudWQ52iy%3x5hIaRsgIK!$OI8Lo9H#fG1!=hMStM44NZtfoj zkHe>DJqgBPvuatkID!{2CZ>4jb>m3ISKu9Gj3Nn%0b+m{m}v&=p(Yk*dKUEY!~iky z6Aa+_AVCpbip^0KfvcwSbL3j+i4Yx)w8o&;!CvDxgW_w#48j9sJV9xfU~n zCY^Cxd~o|_ZYvb7-wxwT9nQFGkXmAZ82HQp)_x#my#M#Vum5!rHN*fh@IM*gg*|Vt z0duo=>(ngqu9cuIP!x>I431O4&{r|U;#FJ$)dGHr2B2#(GYB3K`Vr7HP(uv-Dgz%j C0bJ(* literal 0 HcmV?d00001 diff --git a/src/main/assets/fonts/iransans.ttf b/src/main/assets/fonts/iransans.ttf new file mode 100755 index 0000000000000000000000000000000000000000..5f7d44e3cd31797870cf31b564133afed8eed651 GIT binary patch literal 101316 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 D@r3g< literal 0 HcmV?d00001 diff --git a/src/main/ic_launcher-web.png b/src/main/ic_launcher-web.png new file mode 100755 index 0000000000000000000000000000000000000000..5e583e3e9b7949aa8b41c0a28c672d492ac3d48b GIT binary patch literal 47323 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 C>w+Nw literal 0 HcmV?d00001 diff --git a/src/main/java/android/.DS_Store b/src/main/java/android/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a4d103a32d70ca648f40d48d44e4ab23566cb359 GIT binary patch literal 6148 zcmeHK!AiqG5Z!I7-B!dN1U>FW@X$kxVh$pNS`XfYh#pkh#1;+2Y-v)9)=GXu|Hv=! zb982RTh!`NQJE<-Z#p}($-ac$3}cKp2Aw)%6~>qVMa-4Jd?GlGIwLt7$pdmdhhlw} z?nml8h-R`W@EaMxXIEqi8?YYy-aJ1QzzDt;+o0<&TELsh4u(lDh;;T-(2K$(t<|1+ zE?=0NFA7l><;C)ucd3S6>ZgOG;rCDQ-+`ZA2G&1RDw_I!a1?fjt;+JQic>#~yM0|8 zcDj&qdK|_bHEgIs+)4C2o*59LBucHy>S$E2IaRsgIOD1uIZmxAH#fG%&KCbFJNR+HOVF<28aP-;LkB&H!`vC=kA3`izMBEuA0#NEYcVsZw+=A61pq8SSPS_0(TFwDqH8fT2qPfelmePkZd(j)${{Xo zo@+5PXv!J4%?Gzv=C(uO`sy&h)ai`72FVfw#K3z7u=fM0;Q7Dzb^ouE$Pfd>!2e`` z7n)wP0c*2o>&zWAVUoN GCuz5zPpL9cN&a;Im z%otkLrshti_^|Le>3zX{@o8DIwf zPX81kfLt)&>K<^900WmsoF>(uG(}X=w_AQ zfIs33_?+Dt+pSa;jv$I=r16`KXB_)EvNHf6hMTw#&;|gBN?2=R^9!MV(j%!kPaRR1 zF=mjDQ~fDQb#xTXj(?E>+PgC-Ab}X>aJYZ;QM^Qbc4x#){~$Ih)=Rh7KcZ!ttn*&) zr>NB%56&J+*^;ftt&hP%7eOB8oAoeUy{D(wVZMl*{YL9_Z->#_WL8Yt=a)Lm!z7!n zOmY&>FyzC#B#U)1)SE0`n{fi$A!SoGC+*I5+wXZ@HSoN$tG1rk>#FC27iHO$7f<`I z#?#MVzHV>I+izwWAn=1V^2Ff|zN2xl$m?L0r8=9Vf0wh1Wn>1J0cPMt8F0s$d~~Ao z=V>zo%)p;xfX)YnO6WVRESjSO8&d)xHqdPZZTfAb9Ock=SXsm#6k$^lZK`l3hOp`A zS1!(XSXs2`AYAbw+?$1~P=t9qj;~BO2;U;N%m6cR$N<%TC~dm`uYOqO0cPO; zWI!}V!DxtUb9d{}D(S9Os8duDimNQ{Q_wJ1F~-tW+(9*henkeN@369n9u)o&Ff?$( J4E$9F?g42qUS0qI literal 0 HcmV?d00001 diff --git a/src/main/java/android/support/design/widget/PoinilaTextInputLayout.java b/src/main/java/android/support/design/widget/PoinilaTextInputLayout.java new file mode 100755 index 0000000..3b758eb --- /dev/null +++ b/src/main/java/android/support/design/widget/PoinilaTextInputLayout.java @@ -0,0 +1,768 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.support.design.widget; + +import android.content.Context; +import android.content.res.ColorStateList; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Typeface; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.annotation.StyleRes; +import android.support.v4.view.AccessibilityDelegateCompat; +import android.support.v4.view.ViewCompat; +import android.support.v4.view.ViewPropertyAnimatorListenerAdapter; +import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; +import android.support.v4.widget.Space; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.view.accessibility.AccessibilityEvent; +import android.view.animation.AccelerateInterpolator; +import android.widget.EditText; +import android.widget.LinearLayout; +import android.widget.TextView; + +import android.support.design.R; + +import com.shaya.poinila.android.util.ResourceUtils; + +import uk.co.chrisjenx.calligraphy.CalligraphyConfig; +import uk.co.chrisjenx.calligraphy.CalligraphyUtils; + +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; + +/** + * This class is a copy of Android support design library intending to use for rtl languages. + * @author Alireza Farahani. contact me at ar.d.farahani@gmail.com + * + * Layout which wraps an {@link android.widget.EditText} (or descendant) to show a floating label + * when the hint is hidden due to the user inputting text. + *

+ * Also supports showing an error via {@link #setErrorEnabled(boolean)} and + * {@link #setError(CharSequence)}. + */ +public class PoinilaTextInputLayout extends LinearLayout { + + private static final int ANIMATION_DURATION = 200; + private static final int INVALID_MAX_LENGTH = -1; + + private EditText mEditText; + private CharSequence mHint; + + private Paint mTmpPaint; + + private LinearLayout mIndicatorArea; + + private boolean mErrorEnabled; + private TextView mErrorView; + private int mErrorTextAppearance; + private boolean mErrorShown; + + private boolean mCounterEnabled; + private TextView mCounterView; + private int mCounterMaxLength; + private int mCounterTextAppearance; + private int mCounterOverflowTextAppearance; + private boolean mCounterOverflowed; + // alireza farahani + private boolean mHasSimpleBackground = false; // temporary solution for handling edittext color change when having error + + private ColorStateList mDefaultTextColor; + private ColorStateList mFocusedTextColor; + + private final CollapsingTextHelper mCollapsingTextHelper = new CollapsingTextHelper(this); + + private boolean mHintAnimationEnabled; + private ValueAnimatorCompat mAnimator; + + public PoinilaTextInputLayout(Context context) { + this(context, null); + } + + public PoinilaTextInputLayout(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public PoinilaTextInputLayout(Context context, AttributeSet attrs, int defStyleAttr) { + // Can't call through to super(Context, AttributeSet, int) since it doesn't exist on API 10 + super(context, attrs); + + ThemeUtils.checkAppCompatTheme(context); + + setOrientation(VERTICAL); + setWillNotDraw(false); + setAddStatesFromChildren(true); + + mCollapsingTextHelper.setTextSizeInterpolator(AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR); + mCollapsingTextHelper.setPositionInterpolator(new AccelerateInterpolator()); + mCollapsingTextHelper.setCollapsedTextGravity(Gravity.TOP | Gravity.RIGHT); // alireza farahani + + final TypedArray a = context.obtainStyledAttributes(attrs, + R.styleable.TextInputLayout, defStyleAttr, R.style.Widget_Design_TextInputLayout); + setHint(a.getText(R.styleable.TextInputLayout_android_hint)); + mHintAnimationEnabled = a.getBoolean( + R.styleable.TextInputLayout_hintAnimationEnabled, true); + + if (a.hasValue(R.styleable.TextInputLayout_android_textColorHint)) { + mDefaultTextColor = mFocusedTextColor = + a.getColorStateList(R.styleable.TextInputLayout_android_textColorHint); + } + + final int hintAppearance = a.getResourceId( + R.styleable.TextInputLayout_hintTextAppearance, -1); + if (hintAppearance != -1) { + setHintTextAppearance( + a.getResourceId(R.styleable.TextInputLayout_hintTextAppearance, 0)); + } + + mErrorTextAppearance = a.getResourceId(R.styleable.TextInputLayout_errorTextAppearance, 0); + final boolean errorEnabled = a.getBoolean(R.styleable.TextInputLayout_errorEnabled, false); + + final boolean counterEnabled = a.getBoolean( + R.styleable.TextInputLayout_counterEnabled, false); + setCounterMaxLength( + a.getInt(R.styleable.TextInputLayout_counterMaxLength, INVALID_MAX_LENGTH)); + mCounterTextAppearance = a.getResourceId( + R.styleable.TextInputLayout_counterTextAppearance, 0); + mCounterOverflowTextAppearance = a.getResourceId( + R.styleable.TextInputLayout_counterOverflowTextAppearance, 0); + + // alireza farahani + final TypedArray poinila_a = context.obtainStyledAttributes(attrs, com.shaya.poinila.android.presentation.R.styleable.PoinilaTextInputLayout); + mHasSimpleBackground = poinila_a.getBoolean(com.shaya.poinila.android.presentation.R.styleable.PoinilaTextInputLayout_hasSimpleBackground, false); + poinila_a.recycle(); + + a.recycle(); + + setErrorEnabled(errorEnabled); + setCounterEnabled(counterEnabled); + + if (ViewCompat.getImportantForAccessibility(this) + == ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_AUTO) { + // Make sure we're important for accessibility if we haven't been explicitly not + ViewCompat.setImportantForAccessibility(this, + ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES); + } + + ViewCompat.setAccessibilityDelegate(this, new TextInputAccessibilityDelegate()); + } + + @Override + public void addView(View child, int index, ViewGroup.LayoutParams params) { + if (child instanceof EditText) { + setEditText((EditText) child); + super.addView(child, 0, updateEditTextMargin(params)); + } else { + // Carry on adding the View... + super.addView(child, index, params); + } + } + + /** + * Set the typeface to use for both the expanded and floating hint. + * + * @param typeface typeface to use, or {@code null} to use the default. + */ + public void setTypeface(@Nullable Typeface typeface) { + mCollapsingTextHelper.setTypefaces(typeface); + } + + /** + * Returns the typeface used for both the expanded and floating hint. + */ + @NonNull + public Typeface getTypeface() { + // This could be either the collapsed or expanded + return mCollapsingTextHelper.getCollapsedTypeface(); + } + + private void setEditText(EditText editText) { + // If we already have an EditText, throw an exception + if (mEditText != null) { + throw new IllegalArgumentException("We already have an EditText, can only have one"); + } + mEditText = editText; + + // Use the EditText's typeface, and it's text size for our expanded text + mCollapsingTextHelper.setTypefaces(mEditText.getTypeface()); + mCollapsingTextHelper.setExpandedTextSize(mEditText.getTextSize()); + mCollapsingTextHelper.setExpandedTextGravity(mEditText.getGravity()); + + // Add a TextWatcher so that we know when the text input has changed + mEditText.addTextChangedListener(new TextWatcher() { + @Override + public void afterTextChanged(Editable s) { + updateLabelVisibility(true); + if (mCounterEnabled) { + updateCounter(s.length()); + } + } + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + } + }); + + // Use the EditText's hint colors if we don't have one set + if (mDefaultTextColor == null) { + mDefaultTextColor = mEditText.getHintTextColors(); + } + + // If we do not have a valid hint, try and retrieve it from the EditText + if (TextUtils.isEmpty(mHint)) { + setHint(mEditText.getHint()); + // Clear the EditText's hint as we will display it ourselves + mEditText.setHint(null); + } + + if (mCounterView != null) { + updateCounter(mEditText.getText().length()); + } + + if (mIndicatorArea != null) { + adjustIndicatorPadding(); + } + + // Update the label visibility with no animation + updateLabelVisibility(false); + } + + private LayoutParams updateEditTextMargin(ViewGroup.LayoutParams lp) { + // Create/update the LayoutParams so that we can add enough top margin + // to the EditText so make room for the label + LayoutParams llp = lp instanceof LayoutParams ? (LayoutParams) lp : new LayoutParams(lp); + + if (mTmpPaint == null) { + mTmpPaint = new Paint(); + } + mTmpPaint.setTypeface(mCollapsingTextHelper.getCollapsedTypeface()); + mTmpPaint.setTextSize(mCollapsingTextHelper.getCollapsedTextSize()); + llp.topMargin = (int) -mTmpPaint.ascent(); + + return llp; + } + + private void updateLabelVisibility(boolean animate) { + final boolean hasText = mEditText != null && !TextUtils.isEmpty(mEditText.getText()); + final boolean isFocused = arrayContains(getDrawableState(), android.R.attr.state_focused); + final boolean isErrorShowing = !TextUtils.isEmpty(getError()); + + if (mDefaultTextColor != null) { + mCollapsingTextHelper.setExpandedTextColor(mDefaultTextColor.getDefaultColor()); + } + + if (mCounterOverflowed && mCounterView != null) { + mCollapsingTextHelper.setCollapsedTextColor(mCounterView.getCurrentTextColor()); + } else if (isErrorShowing && mErrorView != null) { + mCollapsingTextHelper.setCollapsedTextColor(mErrorView.getCurrentTextColor()); + } else if (isFocused && mFocusedTextColor != null) { + mCollapsingTextHelper.setCollapsedTextColor(mFocusedTextColor.getDefaultColor()); + } else if (mDefaultTextColor != null) { + mCollapsingTextHelper.setCollapsedTextColor(mDefaultTextColor.getDefaultColor()); + } + + if (hasText || isFocused || isErrorShowing) { + // We should be showing the label so do so if it isn't already + collapseHint(animate); + } else { + // We should not be showing the label so hide it + expandHint(animate); + } + } + + /** + * Returns the {@link android.widget.EditText} used for text input. + */ + @Nullable + public EditText getEditText() { + return mEditText; + } + + /** + * Set the hint to be displayed in the floating label + * + * @attr ref android.support.design.R.styleable#TextInputLayout_android_hint + */ + public void setHint(@Nullable CharSequence hint) { + mHint = hint; + mCollapsingTextHelper.setText(hint); + + sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); + } + + /** + * Returns the hint which is displayed in the floating label. + * + * @attr ref android.support.design.R.styleable#TextInputLayout_android_hint + */ + @Nullable + public CharSequence getHint() { + return mHint; + } + + /** + * Sets the hint text color, size, style from the specified TextAppearance resource. + * + * @attr ref android.support.design.R.styleable#TextInputLayout_hintTextAppearance + */ + public void setHintTextAppearance(@StyleRes int resId) { + mCollapsingTextHelper.setCollapsedTextAppearance(resId); + mFocusedTextColor = ColorStateList.valueOf(mCollapsingTextHelper.getCollapsedTextColor()); + + if (mEditText != null) { + updateLabelVisibility(false); + + // Text size might have changed so update the top margin + LayoutParams lp = updateEditTextMargin(mEditText.getLayoutParams()); + mEditText.setLayoutParams(lp); + mEditText.requestLayout(); + } + } + + + private void addIndicator(TextView indicator, int index) { + if (mIndicatorArea == null) { + mIndicatorArea = new LinearLayout(getContext()); + /*RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, + RelativeLayout.LayoutParams.WRAP_CONTENT); + mIndicatorArea.setGravity(Gravity.RIGHT);*/ + mIndicatorArea.setOrientation(LinearLayout.HORIZONTAL); + /* alireza farahani */ + mIndicatorArea.setGravity(Gravity.RIGHT); + addView(mIndicatorArea, LinearLayout.LayoutParams.MATCH_PARENT, + WRAP_CONTENT); + /* alireza farahani */ + + // Add a flexible spacer in the middle so that the left/right views stay pinned + final Space spacer = new Space(getContext()); + + /* alireza farahani */ + final LinearLayout.LayoutParams spacerLp = new LinearLayout.LayoutParams(0, + ((int) ResourceUtils.getDimen(com.shaya.poinila.android.presentation.R.dimen.margin_lvl2)));//0, 1f); + + mIndicatorArea.addView(spacer, spacerLp); + + if (mEditText != null) { + adjustIndicatorPadding(); + } + } + /* alireza farahani */ + mIndicatorArea.setVisibility(View.VISIBLE); + if (index == Integer.MAX_VALUE) { // adding error to right of layout + index = mIndicatorArea.getChildCount(); + mIndicatorArea.addView(indicator, index); + } else { // adding counter + mIndicatorArea.addView(indicator, new LinearLayout.LayoutParams(0, WRAP_CONTENT, 1f)); + } + /* alireza farahani */ + } + + private void adjustIndicatorPadding() { + // Add padding to the error and character counter so that they match the EditText + ViewCompat.setPaddingRelative(mIndicatorArea, ViewCompat.getPaddingStart(mEditText), + 0, ViewCompat.getPaddingEnd(mEditText), mEditText.getPaddingBottom()); + } + + private void removeIndicator(TextView indicator) { + if (mIndicatorArea != null) { + mIndicatorArea.removeView(indicator); + if (mIndicatorArea.getChildCount() == 0) { + mIndicatorArea.setVisibility(View.GONE); + } + } + } + + /** + * Whether the error functionality is enabled or not in this layout. Enabling this + * functionality before setting an error message via {@link #setError(CharSequence)}, will mean + * that this layout will not change size when an error is displayed. + * + * @attr ref android.support.design.R.styleable#TextInputLayout_errorEnabled + */ + public void setErrorEnabled(boolean enabled) { + if (mErrorEnabled != enabled) { + if (mErrorView != null) { + ViewCompat.animate(mErrorView).cancel(); + } + + if (enabled) { + mErrorView = new TextView(getContext()); + mErrorView.setTextAppearance(getContext(), mErrorTextAppearance); + + //alireza farahani + CalligraphyUtils.applyFontToTextView(mErrorView.getContext(), mErrorView, CalligraphyConfig.get().getFontPath()); + + mErrorView.setVisibility(INVISIBLE); + ViewCompat.setAccessibilityLiveRegion(mErrorView, + ViewCompat.ACCESSIBILITY_LIVE_REGION_POLITE); + addIndicator(mErrorView, Integer.MAX_VALUE); + } else { + mErrorShown = false; + updateEditTextBackground(); + removeIndicator(mErrorView); + mErrorView = null; + } + mErrorEnabled = enabled; + } + } + + /** + * Returns whether the error functionality is enabled or not in this layout. + * + * @attr ref android.support.design.R.styleable#TextInputLayout_errorEnabled + * @see #setErrorEnabled(boolean) + */ + public boolean isErrorEnabled() { + return mErrorEnabled; + } + + /** + * Sets an error message that will be displayed below our {@link EditText}. If the + * {@code error} is {@code null}, the error message will be cleared. + *

+ * If the error functionality has not been enabled via {@link #setErrorEnabled(boolean)}, then + * it will be automatically enabled if {@code error} is not empty. + * + * @param error Error message to display, or null to clear + * @see #getError() + */ + public void setError(@Nullable CharSequence error) { + if (!mErrorEnabled) { + if (TextUtils.isEmpty(error)) { + // If error isn't enabled, and the error is empty, just return + return; + } + // Else, we'll assume that they want to enable the error functionality + setErrorEnabled(true); + } + + if (!TextUtils.isEmpty(error)) { + ViewCompat.setAlpha(mErrorView, 0f); + mErrorView.setText(error); + ViewCompat.animate(mErrorView) + .alpha(1f) + .setDuration(ANIMATION_DURATION) + .setInterpolator(AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR) + .setListener(new ViewPropertyAnimatorListenerAdapter() { + @Override + public void onAnimationStart(View view) { + view.setVisibility(VISIBLE); + } + }) + .start(); + + // Set the EditText's background tint to the error color + mErrorShown = true; + updateEditTextBackground(); + updateLabelVisibility(true); + } else { + if (mErrorView.getVisibility() == VISIBLE) { + ViewCompat.animate(mErrorView) + .alpha(0f) + .setDuration(ANIMATION_DURATION) + .setInterpolator(AnimationUtils.FAST_OUT_SLOW_IN_INTERPOLATOR) + .setListener(new ViewPropertyAnimatorListenerAdapter() { + @Override + public void onAnimationEnd(View view) { + view.setVisibility(INVISIBLE); + + updateLabelVisibility(true); + } + }).start(); + + // Restore the 'original' tint, using colorControlNormal and colorControlActivated + mErrorShown = false; + updateEditTextBackground(); + } + } + } + + /** + * Whether the character counter functionality is enabled or not in this layout. + * + * @attr ref android.support.design.R.styleable#TextInputLayout_counterEnabled + */ + public void setCounterEnabled(boolean enabled) { + if (mCounterEnabled != enabled) { + if (enabled) { + mCounterView = new TextView(getContext()); + mCounterView.setGravity(Gravity.LEFT); + mCounterView.setMaxLines(1); + mCounterView.setTextAppearance(getContext(), mCounterTextAppearance); + ViewCompat.setAccessibilityLiveRegion(mCounterView, + ViewCompat.ACCESSIBILITY_LIVE_REGION_POLITE); + + // alireza farahani + addIndicator(mCounterView, 0); + CalligraphyUtils.applyFontToTextView(mCounterView.getContext(), mCounterView, CalligraphyConfig.get().getFontPath()); + + if (mEditText == null) { + updateCounter(0); + } else { + updateCounter(mEditText.getText().length()); + } + } else { + removeIndicator(mCounterView); + mCounterView = null; + } + mCounterEnabled = enabled; + } + } + + /** + * Sets the max length to display at the character counter. + * + * @param maxLength maxLength to display. Any value less than or equal to 0 will not be shown. + */ + public void setCounterMaxLength(int maxLength) { + if (mCounterMaxLength != maxLength) { + if (maxLength > 0) { + mCounterMaxLength = maxLength; + } else { + mCounterMaxLength = INVALID_MAX_LENGTH; + } + if (mCounterEnabled) { + updateCounter(mEditText == null ? 0 : mEditText.getText().length()); + } + } + } + + /** + * Returns the max length shown at the character counter. + */ + public int getCounterMaxLength() { + return mCounterMaxLength; + } + + private void updateCounter(int length) { + boolean wasCounterOverflowed = mCounterOverflowed; + if (mCounterMaxLength == INVALID_MAX_LENGTH) { + mCounterView.setText(String.valueOf(length)); + mCounterOverflowed = false; + } else { + mCounterOverflowed = length > mCounterMaxLength; + if (wasCounterOverflowed != mCounterOverflowed) { + mCounterView.setTextAppearance(getContext(), mCounterOverflowed ? + mCounterOverflowTextAppearance : mCounterTextAppearance); + // alireza farahani + CalligraphyUtils.applyFontToTextView(mCounterView.getContext(), mCounterView, CalligraphyConfig.get().getFontPath()); + } + mCounterView.setText(getContext().getString(R.string.character_counter_pattern, + length, mCounterMaxLength)); + } + if (mEditText != null && wasCounterOverflowed != mCounterOverflowed) { + updateLabelVisibility(false); + updateEditTextBackground(); + } + } + + private void updateEditTextBackground() { // alireza farahani. handling cases in which edittext has custom background + if (mErrorShown && mErrorView != null && mHasSimpleBackground) { + // Set the EditText's background tint to the error color + ViewCompat.setBackgroundTintList(mEditText, + ColorStateList.valueOf(mErrorView.getCurrentTextColor())); + } else if (mCounterOverflowed && mCounterView != null && mHasSimpleBackground) { + ViewCompat.setBackgroundTintList(mEditText, + ColorStateList.valueOf(mCounterView.getCurrentTextColor())); + } else if (mHasSimpleBackground) { +// final TintManager tintManager = TintManager.get(getContext()); +// ViewCompat.setBackgroundTintList(mEditText, +// tintManager.getTintList(R.drawable.abc_edit_text_material)); + } + } + + /** + * Returns the error message that was set to be displayed with + * {@link #setError(CharSequence)}, or null if no error was set + * or if error displaying is not enabled. + * + * @see #setError(CharSequence) + */ + @Nullable + public CharSequence getError() { + if (mErrorEnabled && mErrorView != null && mErrorView.getVisibility() == VISIBLE) { + return mErrorView.getText(); + } + return null; + } + + /** + * Returns whether any hint state changes, due to being focused or non-empty text, are + * animated. + * + * @attr ref android.support.design.R.styleable#TextInputLayout_hintAnimationEnabled + * @see #setHintAnimationEnabled(boolean) + */ + public boolean isHintAnimationEnabled() { + return mHintAnimationEnabled; + } + + /** + * Set whether any hint state changes, due to being focused or non-empty text, are + * animated. + * + * @attr ref android.support.design.R.styleable#TextInputLayout_hintAnimationEnabled + * @see #isHintAnimationEnabled() + */ + public void setHintAnimationEnabled(boolean enabled) { + mHintAnimationEnabled = enabled; + } + + @Override + public void draw(Canvas canvas) { + super.draw(canvas); + mCollapsingTextHelper.draw(canvas); + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + + if (mEditText != null) { + final int l = mEditText.getLeft() + mEditText.getCompoundPaddingLeft(); + final int r = mEditText.getRight() - mEditText.getCompoundPaddingRight(); + + mCollapsingTextHelper.setExpandedBounds(l, + mEditText.getTop() + mEditText.getCompoundPaddingTop(), + r, mEditText.getBottom() - mEditText.getCompoundPaddingBottom()); + + // Set the collapsed bounds to be the the full height (minus padding) to match the + // EditText's editable area + mCollapsingTextHelper.setCollapsedBounds(l, getPaddingTop(), + r, bottom - top - getPaddingBottom()); + + mCollapsingTextHelper.recalculate(); + } + } + + @Override + public void refreshDrawableState() { + super.refreshDrawableState(); + // Drawable state has changed so see if we need to update the label + updateLabelVisibility(ViewCompat.isLaidOut(this)); + } + + private void collapseHint(boolean animate) { + if (mAnimator != null && mAnimator.isRunning()) { + mAnimator.cancel(); + } + if (animate && mHintAnimationEnabled) { + animateToExpansionFraction(1f); + } else { + mCollapsingTextHelper.setExpansionFraction(1f); + } + } + + private void expandHint(boolean animate) { + if (mAnimator != null && mAnimator.isRunning()) { + mAnimator.cancel(); + } + if (animate && mHintAnimationEnabled) { + animateToExpansionFraction(0f); + } else { + mCollapsingTextHelper.setExpansionFraction(0f); + } + } + + private void animateToExpansionFraction(final float target) { + if (mCollapsingTextHelper.getExpansionFraction() == target) { + return; + } + if (mAnimator == null) { + mAnimator = ViewUtils.createAnimator(); + mAnimator.setInterpolator(AnimationUtils.LINEAR_INTERPOLATOR); + mAnimator.setDuration(ANIMATION_DURATION); + mAnimator.setUpdateListener(new ValueAnimatorCompat.AnimatorUpdateListener() { + @Override + public void onAnimationUpdate(ValueAnimatorCompat animator) { + mCollapsingTextHelper.setExpansionFraction(animator.getAnimatedFloatValue()); + } + }); + } + mAnimator.setFloatValues(mCollapsingTextHelper.getExpansionFraction(), target); + mAnimator.start(); + } + + private int getThemeAttrColor(int attr) { + TypedValue tv = new TypedValue(); + if (getContext().getTheme().resolveAttribute(attr, tv, true)) { + return tv.data; + } else { + return Color.MAGENTA; + } + } + + private class TextInputAccessibilityDelegate extends AccessibilityDelegateCompat { + @Override + public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) { + super.onInitializeAccessibilityEvent(host, event); + event.setClassName(TextInputLayout.class.getSimpleName()); + } + + @Override + public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) { + super.onPopulateAccessibilityEvent(host, event); + + final CharSequence text = mCollapsingTextHelper.getText(); + if (!TextUtils.isEmpty(text)) { + event.getText().add(text); + } + } + + @Override + public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) { + super.onInitializeAccessibilityNodeInfo(host, info); + info.setClassName(TextInputLayout.class.getSimpleName()); + + final CharSequence text = mCollapsingTextHelper.getText(); + if (!TextUtils.isEmpty(text)) { + info.setText(text); + } + if (mEditText != null) { + info.setLabelFor(mEditText); + } + final CharSequence error = mErrorView != null ? mErrorView.getText() : null; + if (!TextUtils.isEmpty(error)) { + info.setContentInvalid(true); + info.setError(error); + } + } + } + + private static boolean arrayContains(int[] array, int value) { + for (int v : array) { + if (v == value) { + return true; + } + } + return false; + } + +} \ No newline at end of file diff --git a/src/main/java/com/shaya/poinila/android/NotificationService.java b/src/main/java/com/shaya/poinila/android/NotificationService.java new file mode 100755 index 0000000..4841fbb --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/NotificationService.java @@ -0,0 +1,93 @@ +package com.shaya.poinila.android; + +import android.support.v4.app.NotificationCompat; +import android.util.Log; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; +import com.onesignal.NotificationExtenderService; +import com.onesignal.OSNotificationPayload; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.utils.NotificationQueue; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.util.List; + +import data.model.Member; +import data.model.Post; +import manager.DBFacade; + +import static com.shaya.poinila.android.utils.PushNotificationUtils.*; + +/** + * Created by iran on 6/7/2016. + */ +public class NotificationService extends NotificationExtenderService { + + + + @Override + protected boolean onNotificationProcessing(final OSNotificationPayload notification) { + + Log.i(getClass().getName(), "additionalData : " + notification.additionalData); + + OverrideSettings overrideSettings = new OverrideSettings(); + overrideSettings.extender = new NotificationCompat.Extender() { + @Override + public NotificationCompat.Builder extend(NotificationCompat.Builder builder) { + +// String message = createNotificationMessage(notification.additionalData); + +// builder.setStyle(new NotificationCompat.BigTextStyle().bigText(message)); +// builder.setContentText(message); +// builder.setTicker(message); + + NOTIFICATION_TYPE group = getNotificationType(notification.additionalData); + JSONArray data = NotificationQueue.getInstance().get(group.toString().toLowerCase()); + + if(!group.equals(NOTIFICATION_TYPE.FRIENDSHIP_REQUEST) + && !group.equals(NOTIFICATION_TYPE.FRIENDSHIP_ANSWER) + && !group.equals(NOTIFICATION_TYPE.POST_SUGGESTION)){ + JSONObject jsonModel = notification.additionalData.optJSONObject("object"); + + Logger.log("push data additionalData = " + notification.additionalData, Logger.LEVEL_INFO); + + + if(data == null) + data = new JSONArray(); + try { + JSONObject ownerJs = new JSONObject(new Gson().toJson(DBFacade.getCachedMyInfo(), Member.class)); + switch (group){ + case FOLLOW: + JSONObject collectionJs = jsonModel.optJSONObject("collection"); + collectionJs.put("owner", ownerJs); + data.put(collectionJs); + break; + default: + JSONObject postJs = jsonModel.optJSONObject("post"); + postJs.put("poster", ownerJs); + JSONObject collJs = jsonModel.optJSONObject("post_collection"); + postJs.put("collection", collJs); + data.put(postJs); + } + } catch (JSONException e) { + e.printStackTrace(); + } + NotificationQueue.getInstance().put(group.toString().toLowerCase(), data); + } + + return builder; + + } + }; + + displayNotification(overrideSettings); + + return true; + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/authentication/AuthenticationService.java b/src/main/java/com/shaya/poinila/android/authentication/AuthenticationService.java new file mode 100755 index 0000000..28cd72f --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/authentication/AuthenticationService.java @@ -0,0 +1,17 @@ +package com.shaya.poinila.android.authentication; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; +import android.support.annotation.Nullable; + +/** + * Created by iran on 5/30/2016. + */ +public class AuthenticationService extends Service { + + @Override + public IBinder onBind(Intent intent) { + return new Authenticator(this).getIBinder(); + } +} diff --git a/src/main/java/com/shaya/poinila/android/authentication/Authenticator.java b/src/main/java/com/shaya/poinila/android/authentication/Authenticator.java new file mode 100755 index 0000000..65c585b --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/authentication/Authenticator.java @@ -0,0 +1,119 @@ +package com.shaya.poinila.android.authentication; + +import android.accounts.AbstractAccountAuthenticator; +import android.accounts.Account; +import android.accounts.AccountAuthenticatorResponse; +import android.accounts.AccountManager; +import android.accounts.NetworkErrorException; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.text.TextUtils; + +import com.shaya.poinila.android.presentation.view.activity.SignUpLoginActivity; + +/** + * Created by iran on 5/30/2016. + */ +public class Authenticator extends AbstractAccountAuthenticator { + + Context mContext; + + String TAG = this.getClass().getSimpleName(); + + public Authenticator(Context context) { + super(context); + mContext = context; + } + + @Override + public Bundle addAccount(AccountAuthenticatorResponse response, + String accountType, String authTokenType, + String[] requiredFeatures, Bundle options) + throws NetworkErrorException { + + final Intent intent = new Intent(mContext, SignUpLoginActivity.class); +// intent.putExtra(AuthenticationActivity.ARG_ACCOUNT_TYPE, accountType); +// intent.putExtra(AuthenticationActivity.ARG_AUTH_TYPE, authTokenType); +// intent.putExtra(AuthenticationActivity.ARG_IS_ADDING_NEW_ACCOUNT, true); + intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); + + final Bundle bundle = new Bundle(); + + bundle.putParcelable(AccountManager.KEY_INTENT, intent); + + return bundle; + } + + + + @Override + public Bundle getAuthToken(AccountAuthenticatorResponse response, + Account account, String authTokenType, Bundle options) + throws NetworkErrorException { + + // Extract the username and password from the Account Manager + final AccountManager am = AccountManager.get(mContext); + String authToken = am.peekAuthToken(account, authTokenType); + + // Let's give another try to authenticate the user + if (TextUtils.isEmpty(authToken)) { + final String password = am.getPassword(account); + + if (password != null) { +// authToken = ServerConnector.SignIn(account.name, password); + } + } + else{ + final Bundle result = new Bundle(); + result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); + result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); + result.putString(AccountManager.KEY_AUTHTOKEN, authToken); + return result; + } + + // If we get here, then we couldn't access the user's password - so we + // need to re-prompt them for their credentials. We do that by creating + // an intent to display our AuthenticatorActivity. + final Intent intent = new Intent(mContext, SignUpLoginActivity.class); + intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); +// intent.putExtra(AuthenticationActivity.ARG_ACCOUNT_TYPE, account.type); +// intent.putExtra(AuthenticationActivity.ARG_AUTH_TYPE, authTokenType); + + final Bundle bundle = new Bundle(); + bundle.putParcelable(AccountManager.KEY_INTENT, intent); + + return bundle; + } + + @Override + public String getAuthTokenLabel(String authTokenType) { + return null; + } + + @Override + public Bundle hasFeatures(AccountAuthenticatorResponse response, + Account account, String[] features) throws NetworkErrorException { + return null; + } + + @Override + public Bundle updateCredentials(AccountAuthenticatorResponse response, + Account account, String authTokenType, Bundle options) + throws NetworkErrorException { + return null; + } + + + @Override + public Bundle confirmCredentials(AccountAuthenticatorResponse response, + Account account, Bundle options) throws NetworkErrorException { + return null; + } + + @Override + public Bundle editProperties(AccountAuthenticatorResponse response, + String accountType) { + return null; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/AndroidUtilities.java b/src/main/java/com/shaya/poinila/android/presentation/AndroidUtilities.java new file mode 100755 index 0000000..b677aa1 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/AndroidUtilities.java @@ -0,0 +1,1118 @@ +package com.shaya.poinila.android.presentation; + +import android.annotation.SuppressLint; +import android.app.Activity; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.pm.ActivityInfo; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.database.Cursor; +import android.net.Uri; +import android.os.Build; +import android.provider.DocumentsContract; +import android.provider.MediaStore; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import com.shaya.poinila.android.util.ContextHolder; +import com.shaya.poinila.android.util.Logger; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.List; + +import data.model.SystemPreferences; + +/** + * Created by iran on 12/8/2015. + */ +public class AndroidUtilities { + private static boolean waitingForSms = false; + private static final Object smsLock = new Object(); + /*private static final Hashtable typefaceCache = new Hashtable<>(); + private static int prevOrientation = -10; + + + public static int statusBarHeight = 0; + public static float density = 1; + public static Point displaySize = new Point(); + public static Integer photoSize = null; + public static DisplayMetrics displayMetrics = new DisplayMetrics(); + public static int leftBaseline; + public static boolean usingHardwareInput; + private static Boolean isTablet = null; + private static int adjustOwnerClassGuid = 0; + + public static Pattern WEB_URL = null; + static { + try { + final String GOOD_IRI_CHAR = "a-zA-Z0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF"; + final Pattern IP_ADDRESS = Pattern.compile( + "((25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(25[0-5]|2[0-4]" + + "[0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1]" + + "[0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}" + + "|[1-9][0-9]|[0-9]))"); + final String IRI = "[" + GOOD_IRI_CHAR + "]([" + GOOD_IRI_CHAR + "\\-]{0,61}[" + GOOD_IRI_CHAR + "]){0,1}"; + final String GOOD_GTLD_CHAR = "a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF"; + final String GTLD = "[" + GOOD_GTLD_CHAR + "]{2,63}"; + final String HOST_NAME = "(" + IRI + "\\.)+" + GTLD; + final Pattern DOMAIN_NAME = Pattern.compile("(" + HOST_NAME + "|" + IP_ADDRESS + ")"); + WEB_URL = Pattern.compile( + "((?:(http|https|Http|Https):\\/\\/(?:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)" + + "\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,64}(?:\\:(?:[a-zA-Z0-9\\$\\-\\_" + + "\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,25})?\\@)?)?" + + "(?:" + DOMAIN_NAME + ")" + + "(?:\\:\\d{1,5})?)" // plus option port number + + "(\\/(?:(?:[" + GOOD_IRI_CHAR + "\\;\\/\\?\\:\\@\\&\\=\\#\\~" // plus option query params + + "\\-\\.\\+\\!\\*\\'\\(\\)\\,\\_])|(?:\\%[a-fA-F0-9]{2}))*)?" + + "(?:\\b|$)"); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + + + + static { + density = ApplicationLoader.applicationContext.getResources().getDisplayMetrics().density; + leftBaseline = isTablet() ? 80 : 72; + checkDisplaySize(); + } + + public static void requestAdjustResize(Activity activity, int classGuid) { + if (activity == null || isTablet()) { + return; + } + activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + adjustOwnerClassGuid = classGuid; + } + + public static void removeAdjustResize(Activity activity, int classGuid) { + if (activity == null || isTablet()) { + return; + } + if (adjustOwnerClassGuid == classGuid) { + activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + } + } + + public static void lockOrientation(Activity activity) { + if (activity == null || prevOrientation != -10 || Build.VERSION.SDK_INT < 9) { + return; + } + try { + prevOrientation = activity.getRequestedOrientation(); + WindowManager manager = (WindowManager)activity.getSystemService(Activity.WINDOW_SERVICE); + if (manager != null && manager.getDefaultDisplay() != null) { + int rotation = manager.getDefaultDisplay().getRotation(); + int orientation = activity.getResources().getConfiguration().orientation; + int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8; + int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9; + if (Build.VERSION.SDK_INT < 9) { + SCREEN_ORIENTATION_REVERSE_LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; + SCREEN_ORIENTATION_REVERSE_PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; + } + + if (rotation == Surface.ROTATION_270) { + if (orientation == Configuration.ORIENTATION_PORTRAIT) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } else { + activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE); + } + } else if (rotation == Surface.ROTATION_90) { + if (orientation == Configuration.ORIENTATION_PORTRAIT) { + activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT); + } else { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } + } else if (rotation == Surface.ROTATION_0) { + if (orientation == Configuration.ORIENTATION_LANDSCAPE) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } else { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } + } else { + if (orientation == Configuration.ORIENTATION_LANDSCAPE) { + activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE); + } else { + activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT); + } + } + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + + public static void unlockOrientation(Activity activity) { + if (activity == null || Build.VERSION.SDK_INT < 9) { + return; + } + try { + if (prevOrientation != -10) { + activity.setRequestedOrientation(prevOrientation); + prevOrientation = -10; + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + + public static Typeface getTypeface(String assetPath) { + synchronized (typefaceCache) { + if (!typefaceCache.containsKey(assetPath)) { + try { + Typeface t = Typeface.createFromAsset(ApplicationLoader.applicationContext.getAssets(), assetPath); + typefaceCache.put(assetPath, t); + } catch (Exception e) { + FileLog.e("Typefaces", "Could not get typeface '" + assetPath + "' because " + e.getMessage()); + return null; + } + } + return typefaceCache.get(assetPath); + } + } + + public static File getCacheDir() { + String state = null; + try { + state = Environment.getExternalStorageState(); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + if (state == null || state.startsWith(Environment.MEDIA_MOUNTED)) { + try { + File file = ApplicationLoader.applicationContext.getExternalCacheDir(); + if (file != null) { + return file; + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + try { + File file = ApplicationLoader.applicationContext.getCacheDir(); + if (file != null) { + return file; + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + return new File(""); + } + + public static int dp(float value) { + if (value == 0) { + return 0; + } + return (int) Math.ceil(density * value); + } + + public static int compare(int lhs, int rhs) { + if (lhs == rhs) { + return 0; + } else if (lhs > rhs) { + return 1; + } + return -1; + } + + public static float dpf2(float value) { + if (value == 0) { + return 0; + } + return density * value; + } + + public static void checkDisplaySize() { + try { + Configuration configuration = ApplicationLoader.applicationContext.getResources().getConfiguration(); + usingHardwareInput = configuration.keyboard != Configuration.KEYBOARD_NOKEYS && configuration.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO; + WindowManager manager = (WindowManager) ApplicationLoader.applicationContext.getSystemService(Context.WINDOW_SERVICE); + if (manager != null) { + Display display = manager.getDefaultDisplay(); + if (display != null) { + display.getMetrics(displayMetrics); + if (android.os.Build.VERSION.SDK_INT < 13) { + displaySize.set(display.getWidth(), display.getHeight()); + } else { + display.getSize(displaySize); + } + FileLog.e("tmessages", "display size = " + displaySize.x + " " + displaySize.y + " " + displayMetrics.xdpi + "x" + displayMetrics.ydpi); + } + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + + public static float getPixelsInCM(float cm, boolean isX) { + return (cm / 2.54f) * (isX ? displayMetrics.xdpi : displayMetrics.ydpi); + } + + public static long makeBroadcastId(int id) { + return 0x0000000100000000L | ((long)id & 0x00000000FFFFFFFFL); + } + + public static int getMyLayerVersion(int layer) { + return layer & 0xffff; + } + + public static int getPeerLayerVersion(int layer) { + return (layer >> 16) & 0xffff; + } + + public static int setMyLayerVersion(int layer, int version) { + return layer & 0xffff0000 | version; + } + + public static int setPeerLayerVersion(int layer, int version) { + return layer & 0x0000ffff | (version << 16); + } + + public static void runOnUIThread(Runnable runnable) { + runOnUIThread(runnable, 0); + } + + public static void runOnUIThread(Runnable runnable, long delay) { + if (delay == 0) { + ApplicationLoader.applicationHandler.post(runnable); + } else { + ApplicationLoader.applicationHandler.postDelayed(runnable, delay); + } + } + + public static void cancelRunOnUIThread(Runnable runnable) { + ApplicationLoader.applicationHandler.removeCallbacks(runnable); + } + + public static boolean isTablet() { + if (isTablet == null) { + isTablet = ApplicationLoader.applicationContext.getResources().getBoolean(R.bool.isTablet); + } + return isTablet; + } + + public static boolean isSmallTablet() { + float minSide = Math.min(displaySize.x, displaySize.y) / density; + return minSide <= 700; + } + + public static int getMinTabletSide() { + if (!isSmallTablet()) { + int smallSide = Math.min(displaySize.x, displaySize.y); + int leftSide = smallSide * 35 / 100; + if (leftSide < dp(320)) { + leftSide = dp(320); + } + return smallSide - leftSide; + } else { + int smallSide = Math.min(displaySize.x, displaySize.y); + int maxSide = Math.max(displaySize.x, displaySize.y); + int leftSide = maxSide * 35 / 100; + if (leftSide < dp(320)) { + leftSide = dp(320); + } + return Math.min(smallSide, maxSide - leftSide); + } + } + + public static int getPhotoSize() { + if (photoSize == null) { + if (Build.VERSION.SDK_INT >= 16) { + photoSize = 1280; + } else { + photoSize = 800; + } + } + return photoSize; + } + + public static String formatTTLString(int ttl) { + if (ttl < 60) { + return LocaleController.formatPluralString("Seconds", ttl); + } else if (ttl < 60 * 60) { + return LocaleController.formatPluralString("Minutes", ttl / 60); + } else if (ttl < 60 * 60 * 24) { + return LocaleController.formatPluralString("Hours", ttl / 60 / 60); + } else if (ttl < 60 * 60 * 24 * 7) { + return LocaleController.formatPluralString("Days", ttl / 60 / 60 / 24); + } else { + int days = ttl / 60 / 60 / 24; + if (ttl % 7 == 0) { + return LocaleController.formatPluralString("Weeks", days / 7); + } else { + return String.format("%s %s", LocaleController.formatPluralString("Weeks", days / 7), LocaleController.formatPluralString("Days", days % 7)); + } + } + } + + public static AlertDialog.Builder buildTTLAlert(final Context context, final TLRPC.EncryptedChat encryptedChat) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(LocaleController.getString("MessageLifetime", R.string.MessageLifetime)); + final NumberPicker numberPicker = new NumberPicker(context); + numberPicker.setMinValue(0); + numberPicker.setMaxValue(20); + if (encryptedChat.ttl > 0 && encryptedChat.ttl < 16) { + numberPicker.setValue(encryptedChat.ttl); + } else if (encryptedChat.ttl == 30) { + numberPicker.setValue(16); + } else if (encryptedChat.ttl == 60) { + numberPicker.setValue(17); + } else if (encryptedChat.ttl == 60 * 60) { + numberPicker.setValue(18); + } else if (encryptedChat.ttl == 60 * 60 * 24) { + numberPicker.setValue(19); + } else if (encryptedChat.ttl == 60 * 60 * 24 * 7) { + numberPicker.setValue(20); + } else if (encryptedChat.ttl == 0) { + numberPicker.setValue(0); + } + numberPicker.setFormatter(new NumberPicker.Formatter() { + @Override + public String format(int value) { + if (value == 0) { + return LocaleController.getString("ShortMessageLifetimeForever", R.string.ShortMessageLifetimeForever); + } else if (value >= 1 && value < 16) { + return AndroidUtilities.formatTTLString(value); + } else if (value == 16) { + return AndroidUtilities.formatTTLString(30); + } else if (value == 17) { + return AndroidUtilities.formatTTLString(60); + } else if (value == 18) { + return AndroidUtilities.formatTTLString(60 * 60); + } else if (value == 19) { + return AndroidUtilities.formatTTLString(60 * 60 * 24); + } else if (value == 20) { + return AndroidUtilities.formatTTLString(60 * 60 * 24 * 7); + } + return ""; + } + }); + builder.setView(numberPicker); + builder.setNegativeButton(LocaleController.getString("Done", R.string.Done), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + int oldValue = encryptedChat.ttl; + which = numberPicker.getValue(); + if (which >= 0 && which < 16) { + encryptedChat.ttl = which; + } else if (which == 16) { + encryptedChat.ttl = 30; + } else if (which == 17) { + encryptedChat.ttl = 60; + } else if (which == 18) { + encryptedChat.ttl = 60 * 60; + } else if (which == 19) { + encryptedChat.ttl = 60 * 60 * 24; + } else if (which == 20) { + encryptedChat.ttl = 60 * 60 * 24 * 7; + } + if (oldValue != encryptedChat.ttl) { + SecretChatHelper.getInstance().sendTTLMessage(encryptedChat, null); + MessagesStorage.getInstance().updateEncryptedChatTTL(encryptedChat); + } + } + }); + return builder; + } + + public static void clearCursorDrawable(EditText editText) { + if (editText == null || Build.VERSION.SDK_INT < 12) { + return; + } + try { + Field mCursorDrawableRes = TextView.class.getDeclaredField("mCursorDrawableRes"); + mCursorDrawableRes.setAccessible(true); + mCursorDrawableRes.setInt(editText, 0); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + + public static void setProgressBarAnimationDuration(ProgressBar progressBar, int duration) { + if (progressBar == null) { + return; + } + try { + Field mCursorDrawableRes = ProgressBar.class.getDeclaredField("mDuration"); + mCursorDrawableRes.setAccessible(true); + mCursorDrawableRes.setInt(progressBar, duration); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + + public static int getViewInset(View view) { + if (view == null || Build.VERSION.SDK_INT < 21) { + return 0; + } + try { + Field mAttachInfoField = View.class.getDeclaredField("mAttachInfo"); + mAttachInfoField.setAccessible(true); + Object mAttachInfo = mAttachInfoField.get(view); + if (mAttachInfo != null) { + Field mStableInsetsField = mAttachInfo.getClass().getDeclaredField("mStableInsets"); + mStableInsetsField.setAccessible(true); + Rect insets = (Rect)mStableInsetsField.get(mAttachInfo); + return insets.bottom; + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + return 0; + } + + public static Point getRealScreenSize() { + Point size = new Point(); + try { + WindowManager windowManager = (WindowManager) ApplicationLoader.applicationContext.getSystemService(Context.WINDOW_SERVICE); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + windowManager.getDefaultDisplay().getRealSize(size); + } else { + try { + Method mGetRawW = Display.class.getMethod("getRawWidth"); + Method mGetRawH = Display.class.getMethod("getRawHeight"); + size.set((Integer) mGetRawW.invoke(windowManager.getDefaultDisplay()), (Integer) mGetRawH.invoke(windowManager.getDefaultDisplay())); + } catch (Exception e) { + size.set(windowManager.getDefaultDisplay().getWidth(), windowManager.getDefaultDisplay().getHeight()); + FileLog.e("tmessages", e); + } + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + return size; + } + + public static void setListViewEdgeEffectColor(AbsListView listView, int color) { + if (Build.VERSION.SDK_INT >= 21) { + try { + Field field = AbsListView.class.getDeclaredField("mEdgeGlowTop"); + field.setAccessible(true); + EdgeEffect mEdgeGlowTop = (EdgeEffect) field.get(listView); + if (mEdgeGlowTop != null) { + mEdgeGlowTop.setColor(color); + } + + field = AbsListView.class.getDeclaredField("mEdgeGlowBottom"); + field.setAccessible(true); + EdgeEffect mEdgeGlowBottom = (EdgeEffect) field.get(listView); + if (mEdgeGlowBottom != null) { + mEdgeGlowBottom.setColor(color); + } + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + } + + @SuppressLint("NewApi") + public static void clearDrawableAnimation(View view) { + if (Build.VERSION.SDK_INT < 21 || view == null) { + return; + } + Drawable drawable; + if (view instanceof ListView) { + drawable = ((ListView) view).getSelector(); + if (drawable != null) { + drawable.setState(StateSet.NOTHING); + } + } else { + drawable = view.getBackground(); + if (drawable != null) { + drawable.setState(StateSet.NOTHING); + drawable.jumpToCurrentState(); + } + } + } + + public static final int FLAG_TAG_BR = 1; + public static final int FLAG_TAG_BOLD = 2; + public static final int FLAG_TAG_COLOR = 4; + public static final int FLAG_TAG_ALL = FLAG_TAG_BR | FLAG_TAG_BOLD | FLAG_TAG_COLOR; + + public static Spannable replaceTags(String str) { + return replaceTags(str, FLAG_TAG_ALL); + } + + public static Spannable replaceTags(String str, int flag) { + try { + int start; + int end; + StringBuilder stringBuilder = new StringBuilder(str); + if ((flag & FLAG_TAG_BR) != 0) { + while ((start = stringBuilder.indexOf("
")) != -1) { + stringBuilder.replace(start, start + 4, "\n"); + } + while ((start = stringBuilder.indexOf("
")) != -1) { + stringBuilder.replace(start, start + 5, "\n"); + } + } + ArrayList bolds = new ArrayList<>(); + if ((flag & FLAG_TAG_BOLD) != 0) { + while ((start = stringBuilder.indexOf("")) != -1) { + stringBuilder.replace(start, start + 3, ""); + end = stringBuilder.indexOf(""); + if (end == -1) { + end = stringBuilder.indexOf(""); + } + stringBuilder.replace(end, end + 4, ""); + bolds.add(start); + bolds.add(end); + } + } + ArrayList colors = new ArrayList<>(); + if ((flag & FLAG_TAG_COLOR) != 0) { + while ((start = stringBuilder.indexOf("", start); + int color = Color.parseColor(stringBuilder.substring(start, end)); + stringBuilder.replace(start, end + 1, ""); + end = stringBuilder.indexOf(""); + stringBuilder.replace(end, end + 4, ""); + colors.add(start); + colors.add(end); + colors.add(color); + } + } + SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(stringBuilder); + for (int a = 0; a < bolds.size() / 2; a++) { + spannableStringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf")), bolds.get(a * 2), bolds.get(a * 2 + 1), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } + for (int a = 0; a < colors.size() / 3; a++) { + spannableStringBuilder.setSpan(new ForegroundColorSpan(colors.get(a * 3 + 2)), colors.get(a * 3), colors.get(a * 3 + 1), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } + return spannableStringBuilder; + } catch (Exception e) { + FileLog.e("tmessages", e); + } + return new SpannableStringBuilder(str); + } + + public static boolean needShowPasscode(boolean reset) { + boolean wasInBackground; + if (Build.VERSION.SDK_INT >= 14) { + wasInBackground = ForegroundDetector.getInstance().isWasInBackground(reset); + if (reset) { + ForegroundDetector.getInstance().resetBackgroundVar(); + } + } else { + wasInBackground = UserConfig.lastPauseTime != 0; + } + return UserConfig.passcodeHash.length() > 0 && wasInBackground && + (UserConfig.appLocked || UserConfig.autoLockIn != 0 && UserConfig.lastPauseTime != 0 && !UserConfig.appLocked && (UserConfig.lastPauseTime + UserConfig.autoLockIn) <= ConnectionsManager.getInstance().getCurrentTime()); + } + + public static void shakeView(final View view, final float x, final int num) { + if (num == 6) { + ViewProxy.setTranslationX(view, 0); + view.clearAnimation(); + return; + } + AnimatorSetProxy animatorSetProxy = new AnimatorSetProxy(); + animatorSetProxy.playTogether(ObjectAnimatorProxy.ofFloat(view, "translationX", AndroidUtilities.dp(x))); + animatorSetProxy.setDuration(50); + animatorSetProxy.addListener(new AnimatorListenerAdapterProxy() { + @Override + public void onAnimationEnd(Object animation) { + shakeView(view, num == 5 ? 0 : -x, num + 1); + } + }); + animatorSetProxy.start(); + } + + + + *//*public static String ellipsize(String text, int maxLines, int maxWidth, TextPaint paint) { + if (text == null || paint == null) { + return null; + } + int count; + int offset = 0; + StringBuilder result = null; + TextView + for (int a = 0; a < maxLines; a++) { + count = paint.breakText(text, true, maxWidth, null); + if (a != maxLines - 1) { + if (result == null) { + result = new StringBuilder(count * maxLines + 1); + } + boolean foundSpace = false; + for (int c = count - 1; c >= offset; c--) { + if (text.charAt(c) == ' ') { + foundSpace = true; + result.append(text.substring(offset, c - 1)); + offset = c - 1; + } + } + if (!foundSpace) { + offset = count; + } + text = text.substring(0, offset); + } else if (maxLines == 1) { + return text.substring(0, count); + } else { + result.append(text.substring(0, count)); + } + } + return result.toString(); + }*//* + + *//*public static void turnOffHardwareAcceleration(Window window) { + if (window == null || Build.MODEL == null || Build.VERSION.SDK_INT < 11) { + return; + } + if (Build.MODEL.contains("GT-S5301") || + Build.MODEL.contains("GT-S5303") || + Build.MODEL.contains("GT-B5330") || + Build.MODEL.contains("GT-S5302") || + Build.MODEL.contains("GT-S6012B") || + Build.MODEL.contains("MegaFon_SP-AI")) { + window.clearFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); + } + }*//* + + public static void checkForCrashes(Activity context) { + CrashManager.register(context, BuildVars.DEBUG_VERSION ? BuildVars.HOCKEY_APP_HASH_DEBUG : BuildVars.HOCKEY_APP_HASH, new CrashManagerListener() { + @Override + public boolean includeDeviceData() { + return true; + } + }); + } + + public static void checkForUpdates(Activity context) { + if (BuildVars.DEBUG_VERSION) { + UpdateManager.register(context, BuildVars.DEBUG_VERSION ? BuildVars.HOCKEY_APP_HASH_DEBUG : BuildVars.HOCKEY_APP_HASH); + } + } + + public static void unregisterUpdates() { + if (BuildVars.DEBUG_VERSION) { + UpdateManager.unregister(); + } + } + + public static void addMediaToGallery(String fromPath) { + if (fromPath == null) { + return; + } + File f = new File(fromPath); + Uri contentUri = Uri.fromFile(f); + addMediaToGallery(contentUri); + } + + public static void addMediaToGallery(Uri uri) { + if (uri == null) { + return; + } + try { + Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); + mediaScanIntent.setData(uri); + ApplicationLoader.applicationContext.sendBroadcast(mediaScanIntent); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + } + + private static File getAlbumDir() { + if (Build.VERSION.SDK_INT >= 23 && ApplicationLoader.applicationContext.checkSelfPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + return FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE); + } + File storageDir = null; + if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { + storageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Telegram"); + if (!storageDir.mkdirs()) { + if (!storageDir.exists()){ + FileLog.d("tmessages", "failed to create directory"); + return null; + } + } + } else { + FileLog.d("tmessages", "External storage is not mounted READ/WRITE."); + } + + return storageDir; + } + + public static File generatePicturePath() { + try { + File storageDir = getAlbumDir(); + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date()); + return new File(storageDir, "IMG_" + timeStamp + ".jpg"); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + return null; + } + + public static CharSequence generateSearchName(String name, String name2, String q) { + if (name == null && name2 == null) { + return ""; + } + SpannableStringBuilder builder = new SpannableStringBuilder(); + String wholeString = name; + if (wholeString == null || wholeString.length() == 0) { + wholeString = name2; + } else if (name2 != null && name2.length() != 0) { + wholeString += " " + name2; + } + wholeString = wholeString.trim(); + String lower = " " + wholeString.toLowerCase(); + + int index; + int lastIndex = 0; + while ((index = lower.indexOf(" " + q, lastIndex)) != -1) { + int idx = index - (index == 0 ? 0 : 1); + int end = q.length() + (index == 0 ? 0 : 1) + idx; + + if (lastIndex != 0 && lastIndex != idx + 1) { + builder.append(wholeString.substring(lastIndex, idx)); + } else if (lastIndex == 0 && idx != 0) { + builder.append(wholeString.substring(0, idx)); + } + + String query = wholeString.substring(idx, end); + if (query.startsWith(" ")) { + builder.append(" "); + } + query = query.trim(); + builder.append(AndroidUtilities.replaceTags("" + query + "")); + + lastIndex = end; + } + + if (lastIndex != -1 && lastIndex != wholeString.length()) { + builder.append(wholeString.substring(lastIndex, wholeString.length())); + } + + return builder; + } + + public static File generateVideoPath() { + try { + File storageDir = getAlbumDir(); + String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US).format(new Date()); + return new File(storageDir, "VID_" + timeStamp + ".mp4"); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + return null; + } + + public static String formatFileSize(long size) { + if (size < 1024) { + return String.format("%d B", size); + } else if (size < 1024 * 1024) { + return String.format("%.1f KB", size / 1024.0f); + } else if (size < 1024 * 1024 * 1024) { + return String.format("%.1f MB", size / 1024.0f / 1024.0f); + } else { + return String.format("%.1f GB", size / 1024.0f / 1024.0f / 1024.0f); + } + } + + public static byte[] decodeQuotedPrintable(final byte[] bytes) { + if (bytes == null) { + return null; + } + final ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + for (int i = 0; i < bytes.length; i++) { + final int b = bytes[i]; + if (b == '=') { + try { + final int u = Character.digit((char) bytes[++i], 16); + final int l = Character.digit((char) bytes[++i], 16); + buffer.write((char) ((u << 4) + l)); + } catch (Exception e) { + FileLog.e("tmessages", e); + return null; + } + } else { + buffer.write(b); + } + } + byte[] array = buffer.toByteArray(); + try { + buffer.close(); + } catch (Exception e) { + FileLog.e("tmessages", e); + } + return array; + } + + public static boolean copyFile(InputStream sourceFile, File destFile) throws IOException { + OutputStream out = new FileOutputStream(destFile); + byte[] buf = new byte[4096]; + int len; + while ((len = sourceFile.read(buf)) > 0) { + Thread.yield(); + out.write(buf, 0, len); + } + out.close(); + return true; + } + + */ + + public static boolean copyFile(File sourceFile, File destFile) throws IOException { + if (!destFile.exists()) { + destFile.createNewFile(); + } + FileInputStream source = null; + FileOutputStream destination = null; + try { + source = new FileInputStream(sourceFile); + destination = new FileOutputStream(destFile); + destination.getChannel().transferFrom(source.getChannel(), 0, source.getChannel().size()); + } catch (Exception e) { + return false; + } finally { + if (source != null) { + source.close(); + } + if (destination != null) { + destination.close(); + } + } + return true; + } + + public static boolean isExternalStorageDocument(Uri uri) { + return "com.android.externalstorage.documents".equals(uri.getAuthority()); + } + + public static boolean isDownloadsDocument(Uri uri) { + return "com.android.providers.downloads.documents".equals(uri.getAuthority()); + } + + public static boolean isMediaDocument(Uri uri) { + return "com.android.providers.media.documents".equals(uri.getAuthority()); + } + + @SuppressLint("NewApi") + public static String getPath(final Uri uri) { + try { + final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; + if (isKitKat && DocumentsContract.isDocumentUri(ContextHolder.getContext(), uri)) { + /*if (isExternalStorageDocument(uri)) { + final String docId = DocumentsContract.getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + if ("primary".equalsIgnoreCase(type)) { + return Environment.getExternalStorageDirectory() + "/" + split[1]; + } + } else if (isDownloadsDocument(uri)) { + final String id = DocumentsContract.getDocumentId(uri); + final Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); + return getDataColumn(ApplicationLoader.applicationContext, contentUri, null, null); + } else*/ + if (isMediaDocument(uri)) { + final String docId = DocumentsContract.getDocumentId(uri); + final String[] split = docId.split(":"); + final String type = split[0]; + + Uri contentUri = null; + switch (type) { + case "image": + contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; + break; + /* case "video": + contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; + break; + case "audio": + contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; + break;*/ + } + + final String selection = "_id=?"; + final String[] selectionArgs = new String[]{ + split[1] + }; + + return getDataColumn(ContextHolder.getContext(), contentUri, selection, selectionArgs); + } + } else if ("content".equalsIgnoreCase(uri.getScheme())) { + return getDataColumn(ContextHolder.getContext(), uri, null, null); + } else if ("file".equalsIgnoreCase(uri.getScheme())) { + return uri.getPath(); + } + } catch (Exception e) { + //FileLog.e("tmessages", e); + } + return null; + } + + public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { + + Cursor cursor = null; + final String column = "_data"; + final String[] projection = { + column + }; + + try { + cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); + if (cursor != null && cursor.moveToFirst()) { + final int column_index = cursor.getColumnIndexOrThrow(column); + return cursor.getString(column_index); + } + } catch (Exception e) { + //FileLog.e("tmessages", e); + } finally { + if (cursor != null) { + cursor.close(); + } + } + return null; + } + + public static boolean isWaitingForSms() { + boolean value; + synchronized (smsLock) { + value = waitingForSms; + } + return value; + } + + public static void setWaitingForSms(boolean value) { + synchronized (smsLock) { + waitingForSms = value; + } + } + + public static void showKeyboard(View view) { + if (view == null) { + return; + } + InputMethodManager inputManager = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + inputManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT); + } + + public static boolean isKeyboardShowed(View view) { + if (view == null) { + return false; + } + InputMethodManager inputManager = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + return inputManager.isActive(view); + } + + public static void hideKeyboard(View view) { + if (view == null) { + return; + } + InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + if (!imm.isActive()) { + return; + } + imm.hideSoftInputFromWindow(view.getWindowToken(), 0); + } + + public static void rateInCafeBazaar(Activity activity) { + Intent intent = new Intent(Intent.ACTION_EDIT); + intent.setData(Uri.parse(SystemPreferences.MarketPackages.Bazaar.pageAddressPrefix + BuildConfig.APPLICATION_ID)); + intent.setPackage(SystemPreferences.MarketPackages.Bazaar.packageName); + activity.startActivity(intent); + } + + private static void rateInMyket(Activity activity) { + String url= SystemPreferences.MarketPackages.Myket.pageAddressPrefix + BuildConfig.APPLICATION_ID + ";refId=app;end"; + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(url)); + activity.startActivity(intent); + } + + /** + * Not working to debug mode. see code comment + * @param activity + */ + // in debug mode there s postfix for application_id which makes finding app in google play impossible + public static void rateInGooglePlay(Activity activity) { + Intent rateIntent = new Intent(Intent.ACTION_VIEW, + Uri.parse(SystemPreferences.MarketPackages.MARKET_ADDRESS_PREFIX + BuildConfig.APPLICATION_ID)); + boolean marketFound = false; + + // find all applications able to handle our rateIntent + final List otherApps = activity.getPackageManager().queryIntentActivities(rateIntent, 0); + for (ResolveInfo otherApp: otherApps) { + // look for Google Play application + if (otherApp.activityInfo.applicationInfo.packageName.equals(SystemPreferences.MarketPackages.GooglePlay.packageName)) { + + ActivityInfo otherAppActivity = otherApp.activityInfo; + ComponentName componentName = new ComponentName( + otherAppActivity.applicationInfo.packageName, + otherAppActivity.name + ); + rateIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); + rateIntent.setComponent(componentName); + activity.startActivity(rateIntent); + marketFound = true; + break; + } + } + + // if GP not present on device, open web browser + if (!marketFound) { + Intent webIntent = new Intent(Intent.ACTION_VIEW, + Uri.parse(SystemPreferences.MarketPackages.GooglePlay.pageAddressPrefix + BuildConfig.APPLICATION_ID)); + activity.startActivity(webIntent); + } + } + + // TODO: horrible code! Refactor it for God's sake. + public static void rateApplication(Activity activity, SystemPreferences.MarketPackages market) { + // if the suggested market is not installed, rate it in order of + // bazaar, myket, googlePlay + if (market != null && isPackageInstalled(market.packageName, activity)) { + switch (market) { + case Bazaar: + rateInCafeBazaar(activity); + break; + case Myket: + rateInMyket(activity); + break; + case GooglePlay: + rateInGooglePlay(activity); + break; + } + }else if (isPackageInstalled(SystemPreferences.MarketPackages.Myket.packageName, activity)){ + rateInMyket(activity); + }else if (isPackageInstalled(SystemPreferences.MarketPackages.GooglePlay.packageName, activity)){ + rateInGooglePlay(activity); + }else if (isPackageInstalled(SystemPreferences.MarketPackages.Bazaar.packageName, activity)){ + rateInCafeBazaar(activity); + }else{ + // must not happen + Logger.toastError(R.string.error_no_market_found); + } + /*for (String marketPackage : new String[]{})*/ + } + + private static boolean isPackageInstalled(String packageName, Context context) { + PackageManager pm = context.getPackageManager(); + try { + pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES); + return true; + } catch (PackageManager.NameNotFoundException e) { + return false; + } + } + + + /** ask user to grant the needed permission + * + * @return true if permission already assigned otherwise false. + */ + /*public static boolean getPermissionFromUserResult(BaseActivity activity, String permission, int requestCode){ + if (!hasPermission(activity, permission)){ + ActivityCompat.requestPermissions(activity, new String[]{permission}, requestCode); + return false; + } + return true; + }*/ + +} \ No newline at end of file diff --git a/src/main/java/com/shaya/poinila/android/presentation/OneSignalReceiver.java b/src/main/java/com/shaya/poinila/android/presentation/OneSignalReceiver.java new file mode 100755 index 0000000..b019202 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/OneSignalReceiver.java @@ -0,0 +1,17 @@ +package com.shaya.poinila.android.presentation; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.util.Log; +import android.widget.Toast; + +/** + * Created by iran on 6/11/2016. + */ +public class OneSignalReceiver extends BroadcastReceiver{ + @Override + public void onReceive(Context context, Intent intent) { +// Log.i(getClass().getName(), "OneSignalReceiver"); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/PageChanger.java b/src/main/java/com/shaya/poinila/android/presentation/PageChanger.java new file mode 100755 index 0000000..8d66dc1 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/PageChanger.java @@ -0,0 +1,254 @@ +package com.shaya.poinila.android.presentation; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.text.TextUtils; + +import com.raizlabs.android.dbflow.annotation.NotNull; +import com.shaya.poinila.android.presentation.view.activity.ChromeActivity; +import com.shaya.poinila.android.presentation.view.activity.CollectionListActivity; +import com.shaya.poinila.android.presentation.view.activity.CommentsListActivity; +import com.shaya.poinila.android.presentation.view.activity.FullImageActivity; +import com.shaya.poinila.android.presentation.view.activity.HelpActivity; +import com.shaya.poinila.android.presentation.view.activity.MainActivity; +import com.shaya.poinila.android.presentation.view.activity.MemberListActivity; +import com.shaya.poinila.android.presentation.view.activity.NewPostActivity; +import com.shaya.poinila.android.presentation.view.activity.NotificationOpenedActivity; +import com.shaya.poinila.android.presentation.view.activity.OthersProfileActivity; +import com.shaya.poinila.android.presentation.view.activity.PostListActivity; +import com.shaya.poinila.android.presentation.view.activity.SelectInterestActivity; +import com.shaya.poinila.android.presentation.view.activity.SignUpLoginActivity; +import com.shaya.poinila.android.presentation.view.activity.WebviewActivity; +import com.shaya.poinila.android.presentation.view.dialog.NewPostDialog; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.NavigationUtils; +import com.shaya.poinila.android.utils.PushNotificationUtils; +import com.shaya.poinila.android.utils.Utils; + +import data.model.Collection; +import data.model.Member; +import data.model.Post; +import data.model.SuggestedWebPagePost; +import manager.DataRepository; + +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_CONTENT_URI; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ENTITY; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_FIRST_LOGIN; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ITEM_COUNT; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_MEMBER_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_PAGE_TITLE_PARAMETER; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_POST_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_REQUEST_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_SECOND_ENTITY_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_STARTED_FROM_SETTING; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_WEBSITE_URL; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_COLLECTION_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_EXPLORE; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_POST_LIKERS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_POST_RELATED_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_POST_REPOSTING_COLLECTIONS; + +/** + * Created by iran on 2015-09-27. + */ +public class PageChanger { + public static void goToProfile(Activity activity, Member member) { + DataRepository.getInstance().putTempModel(member); + NavigationUtils.goToActivity(OthersProfileActivity.class, + activity, KEY_MEMBER_ID, member.getId()); + } + + public static void goToProfile(Activity activity, String memberID) { + DataRepository.getInstance().putTempModel(null); + NavigationUtils.goToActivity(OthersProfileActivity.class, + activity, KEY_MEMBER_ID, memberID); + } + + public static void goToCollection(Activity activity, Collection collection) { + DataRepository.getInstance().putTempModel(collection); + goToCollection(activity, collection.getId(), collection.name, null); + } + + public static void goToCollection(Activity activity, @Nullable String collectionId, + @NotNull String collectionName, @Nullable String userName){ + Bundle bundle = new Bundle(); + bundle.putString(KEY_ENTITY, collectionId != null ? collectionId : collectionName); + bundle.putInt(KEY_REQUEST_ID, REQUEST_COLLECTION_POSTS); + bundle.putString(KEY_SECOND_ENTITY_ID, userName != null ? userName : collectionName); + NavigationUtils.goToActivity(PostListActivity.class, activity, bundle); + } + + /*public static void goToCollectionByName(Activity activity, String collectionName, String userName){ + Bundle bundle = new Bundle(); + bundle.putString(KEY_Entity, collectionName); + bundle.putInt(KEY_REQUEST_ID, REQUEST_COLLECTION_POSTS); + bundle.putString(KEY_PAGE_TITLE_PARAMETER, collectionName); + bundle.putString(KEY_SECOND_ENTITY_ID, userName); + NavigationUtils.goToActivity(PostListActivity.class, activity, bundle); + }*/ + + public static void goToPost(Activity activity, Post post) { + DataRepository.getInstance().putTempModel(post); + goToPost(activity, post.getId()); + } + + public static void goToPost(Activity activity, String postID) { + Bundle bundle = new Bundle(); + bundle.putString(KEY_ENTITY, postID); + bundle.putInt(KEY_REQUEST_ID, REQUEST_POST_RELATED_POSTS); + NavigationUtils.goToActivity(PostListActivity.class, activity, bundle); + + /* BaseFragment fragment = PostListFragment.newInstance(postID, REQUEST_POST_RELATED_POSTS); + if (activity instanceof FragmentHostActivity) + ((FragmentHostActivity) activity).addFragment(fragment, true); + else { + NavigationUtils.goToActivity(FragmentHostActivity.class, activity); + DataRepository.getInstance().putTempModel(fragment); + }*/ + } + + public static void goToExplore(Activity activity, String tagText) { + Bundle bundle = new Bundle(); + bundle.putString(KEY_ENTITY, tagText); + bundle.putInt(KEY_REQUEST_ID, REQUEST_EXPLORE); + NavigationUtils.goToActivity(PostListActivity.class, activity, bundle); + } + + public static void goToLikersList(Activity activity, int faveCount, String postID) { + Bundle bundle = new Bundle(); + bundle.putString(KEY_ENTITY, postID); + bundle.putInt(KEY_REQUEST_ID, REQUEST_POST_LIKERS); + bundle.putInt(KEY_ITEM_COUNT, faveCount); + NavigationUtils.goToActivity(MemberListActivity.class, activity, bundle); + } + + public static void goToCommentList(Activity activity, int commentCount, String postID) { + Bundle bundle = new Bundle(); + bundle.putString(KEY_POST_ID, postID); + bundle.putInt(KEY_ITEM_COUNT, commentCount); + NavigationUtils.goToActivity(CommentsListActivity.class, activity, bundle); + } + + public static void goToRepostList(Activity activity, int repostCount, String postID) { + Bundle bundle = new Bundle(); + bundle.putString(KEY_ENTITY, postID); + bundle.putInt(KEY_REQUEST_ID, REQUEST_POST_REPOSTING_COLLECTIONS); + bundle.putInt(KEY_ITEM_COUNT, repostCount); + NavigationUtils.goToActivity(CollectionListActivity.class, activity, bundle); + } + + public static void gotToNotificationActivity(PushNotificationUtils.NOTIFICATION_TYPE type, String data) { + Bundle bundle = new Bundle(); + + bundle.putString("type", type.toString()); + if(!TextUtils.isEmpty(data)) + bundle.putString("data", data); + + Logger.log("push data = " + data, Logger.LEVEL_INFO); + + NavigationUtils.goToActivity(NotificationOpenedActivity.class, PoinilaApplication.getAppContext(), bundle, Intent.FLAG_ACTIVITY_NEW_TASK); + } + + public static void goToMemberPosts(Activity activity, String memberID, String memberName) { + Bundle bundle = new Bundle(); + bundle.putString(KEY_ENTITY, memberID); + bundle.putInt(KEY_REQUEST_ID, REQUEST_MEMBER_POSTS); + bundle.putString(KEY_SECOND_ENTITY_ID, memberName); + NavigationUtils.goToActivity(PostListActivity.class, activity, bundle); + } + + public static void goToHelpActivity(Activity activity, boolean startedFromSetting) { + Intent intent = NavigationUtils.makeNavigationIntent(HelpActivity.class, activity); + intent.putExtra(KEY_STARTED_FROM_SETTING, startedFromSetting); + if (!startedFromSetting) + intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); + activity.startActivity(intent); + } + + public static void goToLoginActivity(Activity activity) { + goToLoginActivity(activity, null); + } + + public static void goToLoginActivity(Activity activity, Uri shareUri) { + Intent intent = NavigationUtils.makeNavigationIntent(SignUpLoginActivity.class, activity); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); + if (shareUri != null) + intent.setData(shareUri); + activity.finish(); + activity.startActivity(intent); + } + + public static void goToInlineBrowser(Activity activity, String url, @NotNull String postId, String pageTitle) { + Bundle bundle = new Bundle(); + if (!TextUtils.isEmpty(pageTitle)) + bundle.putString(KEY_PAGE_TITLE_PARAMETER, pageTitle); + + if(!TextUtils.isEmpty(postId)) + bundle.putString(KEY_ENTITY, postId); + + bundle.putString(KEY_WEBSITE_URL, url); + if(Utils.getBrowserAvailablePackageName() == null){ + NavigationUtils.goToActivity(WebviewActivity.class, activity, bundle); + }else { + if(!TextUtils.isEmpty(postId)) + bundle.putString("referrer", getPostUrl(postId)); + NavigationUtils.goToActivity(ChromeActivity.class, activity, bundle); + } + } + + public static String getPostUrl(String postId){ + return ConstantsUtils.POINILA_SERVER_ADDRESS.concat("post/" + postId + "/"); + } + + //TODO problem in showing full screen dialogs + public static void goToNewPost(android.support.v4.app.FragmentManager fragmentManager, SuggestedWebPagePost webpagePost) { + /*Bundle bundle = new Bundle(); + bundle.putParcelable(ConstantsUtils.KEY_WEBPAGE_POST, webpagePost == null ? null : Parcels.wrap(webpagePost)); + NavigationUtils.goToActivity(NewPostActivity.class, activity, bundle);*/ + NewPostDialog.newInstance(webpagePost).show(fragmentManager, null); + } + + //TODO problem in showing full screen dialogs + public static void goToNewWebSitePost(Context context, SuggestedWebPagePost webpagePost) { + Bundle bundle = new Bundle(); + NavigationUtils.goToActivity(NewPostActivity.class, context, bundle); + } + + public static void goToSelectInterest(Activity activity, boolean firstLogin) { + Bundle bundle = new Bundle(); + bundle.putBoolean(KEY_FIRST_LOGIN, firstLogin); + NavigationUtils.goToActivity(SelectInterestActivity.class, activity, bundle); + } + + public static void goToSelectInterest(Context context, boolean firstLogin) { + Bundle bundle = new Bundle(); + bundle.putBoolean(KEY_FIRST_LOGIN, firstLogin); + NavigationUtils.goToActivity(SelectInterestActivity.class, context, bundle); + } + + public static void goToDashboard(Activity activity) { + Intent intent = NavigationUtils.makeNavigationIntent(MainActivity.class, activity); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); + activity.startActivity(intent); + activity.finish(); + } + + public static void goToDashboard(Context context) { + Intent intent = NavigationUtils.makeNavigationIntent(MainActivity.class, context); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(intent); + } + + public static void goToFullImage(Activity activity, String imageAddress) { + Intent intent = NavigationUtils.makeNavigationIntent(FullImageActivity.class, activity); + intent.putExtra(KEY_CONTENT_URI, imageAddress); + activity.startActivity(intent); + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/PoinilaApplication.java b/src/main/java/com/shaya/poinila/android/presentation/PoinilaApplication.java new file mode 100755 index 0000000..517140e --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/PoinilaApplication.java @@ -0,0 +1,158 @@ +package com.shaya.poinila.android.presentation; + +import android.app.Application; +import android.content.Context; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.util.DisplayMetrics; +import android.util.Log; + +import com.crashlytics.android.Crashlytics; +import com.google.android.gms.analytics.GoogleAnalytics; +import com.google.android.gms.analytics.Tracker; +import com.onesignal.OneSignal; +import com.raizlabs.android.dbflow.config.FlowConfig; +import com.raizlabs.android.dbflow.config.FlowManager; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.ContextHolder; +import com.shaya.poinila.android.util.DeviceInfoUtils; +import com.shaya.poinila.android.presentation.notification.OneSignalNotificationOpenedHelper; + +import io.fabric.sdk.android.Fabric; +import org.json.JSONObject; + +import java.util.Locale; + +import data.PoinilaNetService; +import data.model.Member; +import manager.DBFacade; +import manager.DataRepository; +import uk.co.chrisjenx.calligraphy.CalligraphyConfig; + +/** + * Created by iran on 2015-06-03. + * + * @author Alireza Farahani + */ +public class PoinilaApplication extends Application { + + //private RefWatcher refWatcher; + + private static Context mContext; + + private static String authToken; + + private Tracker mTracker; + + @Override + public void onCreate() { + super.onCreate(); + final Fabric fabric = new Fabric.Builder(this) + .kits(new Crashlytics()) + .debuggable(true) + .build(); + Fabric.with(fabric); + ContextHolder.setContext(getApplicationContext()); + FlowManager.init(new FlowConfig.Builder(this).build()); //refWatcher = LeakCanary.install(this); + setLocale(); + //TypefaceUtil.overrideFont(getApplicationContext(), "SERIF", "fonts/BYekan.ttf"); + //TypefaceUtil.overrideFont(getApplicationContext(), "SERIF", "fonts/iransans.ttf"); + //TypefaceUtil.overrideFont(getApplicationContext(), "SERIF-LIGHT", "fonts/IRANSansLight.ttf"); + //TypefaceUtil.overrideFont(getApplicationContext(), "SERIF-BOLD", "fonts/IRANSansBold.ttf"); + CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() + .setDefaultFontPath(getString(R.string.default_font_path)) + .setFontAttrId(R.attr.fontPath) + .build()); + //OneSignal.startInit(this).init(); + //setupCrashReport(); + + mContext = this; + + OneSignal + .startInit(this) + .setNotificationOpenedHandler(new OneSignalNotificationOpenedHelper(this)) +// .setAutoPromptLocation(true) + + .init(); + + OneSignal.enableInAppAlertNotification(false); + + + OneSignal.getTags(new OneSignal.GetTagsHandler() { + @Override + public void tagsAvailable(JSONObject tags) { + + } + }); + + + } + + public void logUser() { + // You can call any combination of these three methods + Member user = DBFacade.getCachedMyInfo(); + if(user != null){ + Crashlytics.setUserIdentifier(user.getId()); +// if(!TextUtils.isEmpty(user.email)) Crashlytics.setUserEmail(user.email); + Crashlytics.setUserName(user.uniqueName); + } + } + + /** + * Gets the default {@link Tracker} for this {@link Application}. + * @return tracker + */ + synchronized public Tracker getDefaultTracker() { + if (mTracker == null) { + GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); + mTracker = analytics.newTracker(ConstantsUtils.GOOGLE_ANALYTICS_TRACKING_ID); + mTracker.enableAutoActivityTracking(true); + mTracker.setAppVersion(DeviceInfoUtils.CLIENT_VERSION_NAME); + } + return mTracker; + } + + + public static Context getAppContext(){ + return mContext; + } + + public static String getAuthToken(){ + return authToken; + } + + private void setupCrashReport() { + // Setup handler for uncaught exceptions. + Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { + @Override + public void uncaughtException(Thread thread, Throwable e) { + handleUncaughtException(thread, e); + } + }); + } + + private void handleUncaughtException(Thread thread, Throwable e) { + PoinilaNetService.sendReport(ConstantsUtils.REPORT_TYPE_BUG, e.getClass().getSimpleName(), Log.getStackTraceString(e)); + throw new RuntimeException(""); + /*android.os.Process.killProcess(android.os.Process.myPid()); + System.exit(1); // crash with "unfortunately stopped blah blah*/ + + } + + /* public static RefWatcher getRefWatcher(Context context) { + PoinilaApplication application = (PoinilaApplication) context.getApplicationContext(); + return application.refWatcher; + }*/ + public void setLocale() { + Locale myLocale = new Locale("fa"); + Resources res = getResources(); + DisplayMetrics dm = res.getDisplayMetrics(); + Configuration conf = res.getConfiguration(); + conf.locale = myLocale; + res.updateConfiguration(conf, dm); + } + + +} + + diff --git a/src/main/java/com/shaya/poinila/android/presentation/SmsReceiver.java b/src/main/java/com/shaya/poinila/android/presentation/SmsReceiver.java new file mode 100755 index 0000000..fa6b023 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/SmsReceiver.java @@ -0,0 +1,77 @@ +package com.shaya.poinila.android.presentation; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.telephony.SmsManager; +import android.telephony.SmsMessage; +import android.text.TextUtils; +import android.util.Log; + +import com.shaya.poinila.android.presentation.uievent.SmsReceivedEvent; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.Logger; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import manager.DataRepository; + +/** + * Created by iran on 12/8/2015. + */ +public class SmsReceiver extends BroadcastReceiver { + final SmsManager sms = SmsManager.getDefault(); + + @Override + public void onReceive(Context context, Intent intent) { + if (BuildConfig.DEBUG) { + Logger.toast("Sms Received"); + } + if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) { + + Bundle bundle = intent.getExtras(); + SmsMessage[] msgs; + if (bundle != null) { + try { + Object[] pdus = (Object[]) bundle.get("pdus"); + msgs = new SmsMessage[pdus.length]; + String wholeString = ""; + for (int i = 0; i < msgs.length; i++) { + msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); + if(isPonilaNumber(msgs[i].getOriginatingAddress())){ + wholeString += msgs[i].getMessageBody(); + } + } + + if(!TextUtils.isEmpty(wholeString)){ +// Log.i(getClass().getName(), "wholeString = " + wholeString); + Pattern pattern = Pattern.compile("[0-9]+"); + final Matcher matcher = pattern.matcher(wholeString); + if (matcher.find()) { +// Log.i(getClass().getName(), "matcher.group(0) = " + matcher.group(0)); + String str = matcher.group(0); + if (str.length() >= 3) { + BusProvider.getBus().post(new SmsReceivedEvent(str)); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + private boolean isPonilaNumber(String address){ + List numbers = DataRepository.getSMSProviderNumbers(); + for(String number : numbers){ + if(number.contains(address)) + return true; + } + return false; + + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/SortUtils.java b/src/main/java/com/shaya/poinila/android/presentation/SortUtils.java new file mode 100755 index 0000000..df318dd --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/SortUtils.java @@ -0,0 +1,36 @@ +package com.shaya.poinila.android.presentation; + +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +import data.model.Timed; + +/** + * Created by iran on 2015-07-07. + */ +public class SortUtils { + private static Comparator timeComparator = new Comparator() { + @Override + public int compare(Object left, Object right) { + if (!(left instanceof Timed) || !(right instanceof Timed)) + throw new RuntimeException("objects must implement Timed interface"); + Timed lhs = (Timed) left; + Timed rhs = (Timed) right; + if (lhs == rhs) + return 0; + // newer item in less index + if (lhs.getCreationTime() > rhs.getCreationTime()) + return -1; + // older item in greate index + if (lhs.getCreationTime() < rhs.getCreationTime()) + return 1; + // same time + return 0; + } + }; + + public static void sortByTime(List list){ + Collections.sort(list, timeComparator); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/notification/OneSignalNotificationOpenedHelper.java b/src/main/java/com/shaya/poinila/android/presentation/notification/OneSignalNotificationOpenedHelper.java new file mode 100755 index 0000000..ec29cd0 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/notification/OneSignalNotificationOpenedHelper.java @@ -0,0 +1,51 @@ +package com.shaya.poinila.android.presentation.notification; + +import android.content.Context; +import android.util.Log; + +import com.onesignal.OneSignal; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import data.PoinilaNetService; +import data.model.FriendRequestAnswer; + +import static com.shaya.poinila.android.utils.PushNotificationUtils.*; + +/** + * Created by iran on 6/8/2016. + */ +public class OneSignalNotificationOpenedHelper implements OneSignal.NotificationOpenedHandler { + + + Context context; + + public OneSignalNotificationOpenedHelper(Context context){ + this.context = context; + } + + @Override + public void notificationOpened(String message, JSONObject additionalData, boolean isActive) { + + Log.i(getClass().getName(), "additionalData = " + additionalData); + Log.i(getClass().getName(), "message = " + message); + Log.i(getClass().getName(), "isActive = " + isActive); + + JSONArray notifArray = additionalData.optJSONArray("stacked_notifications"); + JSONObject objJS = null; + if(notifArray != null){ + try { + objJS = notifArray.length()> 0 ? notifArray.getJSONObject(0) : null; + } catch (JSONException e) { + e.printStackTrace(); + } + } + + fireNotificationAction(objJS == null ? additionalData: objJS); + + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/presenter/NotificationAdapter.java b/src/main/java/com/shaya/poinila/android/presentation/presenter/NotificationAdapter.java new file mode 100755 index 0000000..0de2dbd --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/presenter/NotificationAdapter.java @@ -0,0 +1,102 @@ +package com.shaya.poinila.android.presentation.presenter; + +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.viewholder.BaseViewHolder; +import com.shaya.poinila.android.presentation.viewholder.CollectionNotifViewHolder; +import com.shaya.poinila.android.presentation.viewholder.MemberNotifViewHolder; +import com.shaya.poinila.android.presentation.viewholder.PostNotifViewHolder; + +import data.model.ImageUrls; +import data.model.Notification; + +/** + * Created by iran on 2015-08-15. + */ +public class NotificationAdapter extends RecyclerViewAdapter>{ + + //public static final int DATE_HEADER = 0; + public static final int INVITE_NOTIF = 1; + public static final int FRIENDSHIP_ACCEPTED_NOTIF = 2; + public static final int COMMENT_AFTER_YOUR_COMMENT = 3; + public static final int COMMENT_MY_POST = 4; + public static final int FRIENDS_CREATED_COLLECTIONS = 5; + public static final int FRIENDS_FOLLOWED_COLLECTIONS = 6; + public static final int FRIENDS_LIKED_POSTS = 7; + public static final int MY_COLLECTION_FOLLOWED = 8; + public static final int MY_POST_REPOSTED = 9; + public static final int MY_POST_LIKED = 10; + + public NotificationAdapter(Context context){ + super(context, -1); + } + + @Override + public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + switch (viewType){ + /*case DATE_HEADER: + return new DateHeaderViewHolder(mLayoutInflater.inflate(R.layout.title_date_separator, parent, false));*/ + case MY_POST_LIKED: + case COMMENT_AFTER_YOUR_COMMENT: + case COMMENT_MY_POST: + case MY_POST_REPOSTED: + return new PostNotifViewHolder(mLayoutInflater.inflate(R.layout.notif_post, parent, false)); + case MY_COLLECTION_FOLLOWED: + return new CollectionNotifViewHolder(mLayoutInflater.inflate(R.layout.notif_collection, parent, false)); + case FRIENDS_LIKED_POSTS: + return new MemberNotifViewHolder(mLayoutInflater.inflate(R.layout.notif_member, parent, false), ImageUrls.ImageType.POST); + case FRIENDS_CREATED_COLLECTIONS: + case FRIENDS_FOLLOWED_COLLECTIONS: + return new MemberNotifViewHolder(mLayoutInflater.inflate(R.layout.notif_member, parent, false), ImageUrls.ImageType.COLLECTION); + case FRIENDSHIP_ACCEPTED_NOTIF: + return new MemberNotifViewHolder(mLayoutInflater.inflate(R.layout.notif_member, parent, false), ImageUrls.ImageType.MEMBER); + case VIEW_TYPE_LOAD_PROGRESS: + return new BaseViewHolder.EmptyViewHolder(mLayoutInflater.inflate(R.layout.progress, parent, false)); + } + return null; + } + + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + return null; + } + + @Override + public int getItemViewType(int position) { + /* else if (items.get(position) instanceof AcceptNotif){ + return FRIENDSHIP_ACCEPTED_NOTIF; + }*/ + /* else if (items.get(position) instanceof DateHeader) { + return DATE_HEADER; + }*/ + + int type = super.getItemViewType(position); + if(type == VIEW_TYPE_LOAD_PROGRESS){ + return super.getItemViewType(position); + } + + switch (getItem(position).type){ + case MY_POST_LIKED: + return MY_POST_LIKED; + case COMMENT_AFTER_YOUR_COMMENT: + return COMMENT_AFTER_YOUR_COMMENT; + case COMMENT_MY_POST: + return COMMENT_MY_POST; + case FRIENDS_CREATED_COLLECTIONS: + return FRIENDS_CREATED_COLLECTIONS; + case FRIENDS_FOLLOWED_COLLECTIONS: + return FRIENDS_FOLLOWED_COLLECTIONS; + case FRIENDS_LIKED_POSTS: + return FRIENDS_LIKED_POSTS; + case MY_COLLECTION_FOLLOWED: + return MY_COLLECTION_FOLLOWED; + case MY_POST_REPOSTED: + return MY_POST_REPOSTED; + case FRIENDSHIP_ACCEPTED: + return FRIENDSHIP_ACCEPTED_NOTIF; + } + return -1; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/presenter/RecyclerViewAdapter.java b/src/main/java/com/shaya/poinila/android/presentation/presenter/RecyclerViewAdapter.java new file mode 100755 index 0000000..8edf13d --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/presenter/RecyclerViewAdapter.java @@ -0,0 +1,194 @@ +package com.shaya.poinila.android.presentation.presenter; + +import android.content.Context; +import android.support.annotation.LayoutRes; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.viewholder.BaseViewHolder; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +import data.database.PoinilaDataBase; +import data.model.Identifiable; +import data.model.Loading; +import data.model.Post; + +public abstract class RecyclerViewAdapter> extends RecyclerView.Adapter { + + public static final int VIEW_TYPE_LOAD_PROGRESS = -1; + protected static final int VIEW_TYPE_DATA_ROW = 100; + //private final Class mViewHolderClazz;loading + protected LayoutInflater mLayoutInflater; + private List items; + private int mItemLayoutID = -1; + + // Provide a reference to the views for each items item + // Complex items items may need more than one view per item, and + // you provide access to all the views for a items item in a view holder + //public static class ViewHolder extends RecyclerView.ViewHolder { + // each items item is just a string in this case + + // Provide a suitable constructor (depends on the kind of dataset) + + public RecyclerViewAdapter(Context context, @LayoutRes int itemLayoutID) { + super(); + Log.i(getClass().getName(), "context = " + context); + mLayoutInflater = LayoutInflater.from(context); + items = new ArrayList<>(); + mItemLayoutID = itemLayoutID; + } + + + // Create new views (invoked by the layout manager) + @Override + public VH onCreateViewHolder(ViewGroup parent, int viewType) { + + + if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + View v = mLayoutInflater.inflate(R.layout.progress, parent, false); + return getProperViewHolder(v, viewType); + } + + View v = mLayoutInflater.inflate(mItemLayoutID, parent, false); + return getProperViewHolder(v, viewType); + } + + protected abstract VH getProperViewHolder(View v, int viewType); + + protected boolean isStaggeredGridLayoutManager(){ + return false; + } + + // Replace the contents of a view (invoked by the layout manager) + @Override + public void onBindViewHolder(VH holder, int position) { + + if (!(getItemViewType(position) == VIEW_TYPE_LOAD_PROGRESS)) { + holder.fill(getItem(position)); + } + + if(isStaggeredGridLayoutManager() && getItemViewType(position) == VIEW_TYPE_LOAD_PROGRESS){ + StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams(); + layoutParams.setFullSpan(true); + } + + } + + // Return the size of your dataset (invoked by the layout manager) + @Override + public int getItemCount() { + return items.size(); + } + + @Override + public long getItemId(int position) { + //if (getItem(position) instanceof Identifiable) + if (hasStableIds()) + return Integer.parseInt(((Identifiable) getItem(position)).getId()); + return position; + } + + + public T getItem(int position){ + return items.get(position); + } + + public void addItem(T item, int position){ + if (item == null) + return; + items.add(position, item); + notifyItemInserted(position); + } + + public void addItem(T item){ + if (item == null) + return; + items.add(item); + + notifyItemInserted(items.size() - 1); + } + + public void setLoading(T item){ + if (item == null) + return; + items.add(item); + notifyItemInserted(items.size() - 1); + } + + + public void removeLoading(){ + int position = items.size() - 1; + removeItem(position); + notifyItemRemoved(position); + } + + public void addItems(List data){ + int oldSize = items.size(); + items.addAll(oldSize > 0 ? oldSize - 1 : oldSize, data); +// items.addAll(data); + notifyItemRangeInserted(oldSize, data.size()); + // TODO: moshkele inconsistency az ine guya + //notifyDataSetChanged(); + } + + public void addItemsToListHead(List data){ + items.addAll(0, data); + notifyItemRangeInserted(0, data.size()); + } + + public void setItem(T item, int position){ + items.set(position, item); + notifyItemChanged(position); + } + + + + public void resetData(List data) { + // don't use this.items = data snippet. it produces bug in saving suggestions came from server + this.items.clear(); + this.items.addAll(data); + notifyDataSetChanged(); + } + + public void removeItem(int position){ + items.remove(position); + notifyItemRemoved(position); + } + + public void clear(){ + this.items.clear(); + notifyDataSetChanged(); + } + + @Override + public int getItemViewType(int position) { + if (items.get(position) instanceof Loading) + return VIEW_TYPE_LOAD_PROGRESS; + return VIEW_TYPE_DATA_ROW; + } + + public List getItems(){ + return items; + } + + // Don't use it except you have no other choice! I assumed that lists have a single type entity in my design + // But in Dashboard page there's times we want to show a "please rate us" item which is not a post. + // 1- I could just add a fake post but it was not clean and triggered unwanted click events and blah blah + // 2- Replacing current mechanism with new one. It messed the code and produced lots of cast to Post + // 3- Ignoring generics and use the old api but in adding items to adapter I face the generic problem so I decided to just write a function without generic so be able to add anything other than post. + // sorry for long comment, here's your potato :)) + public List getUngenericedItems(){ + return items; + } + + public boolean isEmpty() { + return items.isEmpty() || (items.size() > 0 && items.get(0) instanceof Loading); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/presenter/RecyclerViewProvider.java b/src/main/java/com/shaya/poinila/android/presentation/presenter/RecyclerViewProvider.java new file mode 100755 index 0000000..5a8592e --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/presenter/RecyclerViewProvider.java @@ -0,0 +1,130 @@ +package com.shaya.poinila.android.presentation.presenter; + +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; + +import com.shaya.poinila.android.presentation.view.LoaderList; + +/** + * Created by iran on 2015-06-23. + * @author Alireza Farahani + */ +public class RecyclerViewProvider { + private RecyclerView.LayoutManager mLayoutManager; + private RecyclerView mRecyclerView; + private RecyclerViewAdapter mAdapter; + + public RecyclerViewProvider(RecyclerView recyclerView){ + mRecyclerView = recyclerView; + } + + /*public RecyclerViewProvider setRecyclerView(RecyclerView recyclerView){ + mRecyclerView = recyclerView; + return this; + }*/ + + /** + * + * @param direction use constans from {@link StaggeredGridLayoutManager} + * @param columnCount get value from xml resources + */ + public RecyclerViewProvider setStaggeredLayoutManager(int direction, int columnCount){ + mLayoutManager = new StaggeredGridLayoutManager(columnCount, direction); + //((StaggeredGridLayoutManager) mLayoutManager).setGapStrategy(GAP_HANDLING_NONE); + return this; + } + + /** + * + * @param direction use constans from {@link GridLayoutManager} + * @param columnCount get value from xml resources + * @return + */ + public RecyclerViewProvider setGridLayoutManager(int direction, int columnCount) { + mLayoutManager = new GridLayoutManager(null, columnCount, direction, false); +// mRecyclerView.setHasFixedSize(true); + return this; + } + + public RecyclerViewProvider setGridLayoutManager( + int direction, int columnCount, GridLayoutManager.SpanSizeLookup spanSizeLookup) { + ((GridLayoutManager)setGridLayoutManager(direction, columnCount).mLayoutManager) + .setSpanSizeLookup(spanSizeLookup); + return this; + } + + /** + * + * @param direction use constants from (@link LinearLayoutManager} + * @return + */ + public RecyclerViewProvider setLinearLayoutManager(int direction){ + return setLinearLayoutManager(direction, false); + } + + public RecyclerViewProvider setLinearLayoutManager(int direction, boolean reverse) { + mLayoutManager = new LinearLayoutManager(null, direction, reverse); + return this; + } + + public RecyclerViewProvider setAdapter(RecyclerViewAdapter adapter){ + mAdapter = adapter; + return this; + } + + /** + * Sets layoutmanager and adapter for already given recyclerview and then returns it + * @return + */ + public RecyclerView bindViewToAdapter() { + if (mRecyclerView != null) { + mRecyclerView.setLayoutManager(mLayoutManager); + mRecyclerView.setAdapter(mAdapter); + return mRecyclerView; + } + else return null; + } + + public static RecyclerView.OnScrollListener linearListEndDetectorListener(final RecyclerView.Adapter adapter, final LoaderList list) { + return new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + boolean endOfList = ((LinearLayoutManager)recyclerView.getLayoutManager()).findLastVisibleItemPosition() == + adapter.getItemCount() - 1; + if (endOfList && dy != 0){ + list.onLoadMore(); + } + } + }; + } + + public static RecyclerView.OnScrollListener staggeredListEndDetectorListener(final RecyclerView.Adapter adapter, final LoaderList list){ + return new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + int[] lastVisibleItems = ((StaggeredGridLayoutManager)recyclerView.getLayoutManager()). + findLastVisibleItemPositions(null); + int itemCount = adapter.getItemCount() - 1; + if ((lastVisibleItems[0] == itemCount || + lastVisibleItems[1] == itemCount) && dy != 0){ + list.onLoadMore(); + } + } + }; + } + + public static RecyclerView.OnScrollListener gridListEndDetectionListener(final RecyclerView.Adapter adapter, final LoaderList list){ + return new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + boolean endOfList = ((GridLayoutManager) recyclerView.getLayoutManager()).findLastVisibleItemPosition() == + adapter.getItemCount() - 1; + if (endOfList && dy != 0) { + list.onLoadMore(); + } + } + }; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/svgandroid/ParserHelper.java b/src/main/java/com/shaya/poinila/android/presentation/svgandroid/ParserHelper.java new file mode 100755 index 0000000..73e8cd6 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/svgandroid/ParserHelper.java @@ -0,0 +1,306 @@ +package com.shaya.poinila.android.presentation.svgandroid; + +/* + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ +/** + * Parses numbers from SVG text. Based on the Batik Number Parser (Apache 2 License). + * + * @author Apache Software Foundation, Larva Labs LLC + */ +public class ParserHelper { + + private char current; + private CharSequence s; + public int pos; + private int n; + + public ParserHelper(CharSequence s, int pos) { + this.s = s; + this.pos = pos; + n = s.length(); + current = s.charAt(pos); + } + + private char read() { + if (pos < n) { + pos++; + } + if (pos == n) { + return '\0'; + } else { + return s.charAt(pos); + } + } + + public void skipWhitespace() { + while (pos < n) { + if (Character.isWhitespace(s.charAt(pos))) { + advance(); + } else { + break; + } + } + } + + public void skipNumberSeparator() { + while (pos < n) { + char c = s.charAt(pos); + switch (c) { + case ' ': + case ',': + case '\n': + case '\t': + advance(); + break; + default: + return; + } + } + } + + public void advance() { + current = read(); + } + + /** + * Parses the content of the buffer and converts it to a float. + */ + public float parseFloat() { + int mant = 0; + int mantDig = 0; + boolean mantPos = true; + boolean mantRead = false; + + int exp = 0; + int expDig = 0; + int expAdj = 0; + boolean expPos = true; + + switch (current) { + case '-': + mantPos = false; + // fallthrough + case '+': + current = read(); + } + + m1: switch (current) { + default: + return Float.NaN; + + case '.': + break; + + case '0': + mantRead = true; + l: for (;;) { + current = read(); + switch (current) { + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + break l; + case '.': case 'e': case 'E': + break m1; + default: + return 0.0f; + case '0': + } + } + + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + mantRead = true; + l: for (;;) { + if (mantDig < 9) { + mantDig++; + mant = mant * 10 + (current - '0'); + } else { + expAdj++; + } + current = read(); + switch (current) { + default: + break l; + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + } + } + } + + if (current == '.') { + current = read(); + m2: switch (current) { + default: + case 'e': case 'E': + if (!mantRead) { + reportUnexpectedCharacterError( current ); + return 0.0f; + } + break; + + case '0': + if (mantDig == 0) { + l: for (;;) { + current = read(); + expAdj--; + switch (current) { + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + break l; + default: + if (!mantRead) { + return 0.0f; + } + break m2; + case '0': + } + } + } + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + l: for (;;) { + if (mantDig < 9) { + mantDig++; + mant = mant * 10 + (current - '0'); + expAdj--; + } + current = read(); + switch (current) { + default: + break l; + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + } + } + } + } + + switch (current) { + case 'e': case 'E': + current = read(); + switch (current) { + default: + reportUnexpectedCharacterError( current ); + return 0f; + case '-': + expPos = false; + case '+': + current = read(); + switch (current) { + default: + reportUnexpectedCharacterError( current ); + return 0f; + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + } + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + } + + en: switch (current) { + case '0': + l: for (;;) { + current = read(); + switch (current) { + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + break l; + default: + break en; + case '0': + } + } + + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + l: for (;;) { + if (expDig < 3) { + expDig++; + exp = exp * 10 + (current - '0'); + } + current = read(); + switch (current) { + default: + break l; + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + } + } + } + default: + } + + if (!expPos) { + exp = -exp; + } + exp += expAdj; + if (!mantPos) { + mant = -mant; + } + + return buildFloat(mant, exp); + } + + private void reportUnexpectedCharacterError(char c) { + throw new RuntimeException("Unexpected char '" + c + "'."); + } + + /** + * Computes a float from mantissa and exponent. + */ + public static float buildFloat(int mant, int exp) { + if (exp < -125 || mant == 0) { + return 0.0f; + } + + if (exp >= 128) { + return (mant > 0) + ? Float.POSITIVE_INFINITY + : Float.NEGATIVE_INFINITY; + } + + if (exp == 0) { + return mant; + } + + if (mant >= (1 << 26)) { + mant++; // round up trailing bits if they will be dropped. + } + + return (float) ((exp > 0) ? mant * pow10[exp] : mant / pow10[-exp]); + } + + /** + * Array of powers of ten. Using double instead of float gives a tiny bit more precision. + */ + private static final double[] pow10 = new double[128]; + + static { + for (int i = 0; i < pow10.length; i++) { + pow10[i] = Math.pow(10, i); + } + } + + public float nextFloat() { + skipWhitespace(); + float f = parseFloat(); + skipNumberSeparator(); + return f; + } +} \ No newline at end of file diff --git a/src/main/java/com/shaya/poinila/android/presentation/svgandroid/SVG.java b/src/main/java/com/shaya/poinila/android/presentation/svgandroid/SVG.java new file mode 100755 index 0000000..29ce4cc --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/svgandroid/SVG.java @@ -0,0 +1,121 @@ +package com.shaya.poinila.android.presentation.svgandroid; + +import android.graphics.Picture; +import android.graphics.RectF; +import android.graphics.drawable.PictureDrawable; + +/* + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + */ + +/** + * Describes a vector Picture object, and optionally its bounds. + * + * @author Larva Labs, LLC + */ +public class SVG { + + /** + * The parsed Picture object. + */ + private Picture picture; + + /** + * These are the bounds for the SVG specified as a hidden "bounds" layer in the SVG. + */ + private RectF bounds; + + /** + * These are the estimated bounds of the SVG computed from the SVG elements while parsing. + * Note that this could be null if there was a failure to compute limits (ie. an empty SVG). + */ + private RectF limits = null; + + /** + * Construct a new SVG. + * @param picture the parsed picture object. + * @param bounds the bounds computed from the "bounds" layer in the SVG. + */ + SVG(Picture picture, RectF bounds) { + this.picture = picture; + this.bounds = bounds; + } + + /** + * Set the limits of the SVG, which are the estimated bounds computed by the parser. + * @param limits the bounds computed while parsing the SVG, may not be entirely accurate. + */ + void setLimits(RectF limits) { + this.limits = limits; + } + + /** + * Create a picture drawable from the SVG. + * @return the PictureDrawable. + */ + public PictureDrawable createPictureDrawable() { + return new PictureDrawable(picture); +// return new PictureDrawable(picture) { +// @Override +// public int getIntrinsicWidth() { +// if (bounds != null) { +// return (int) bounds.width(); +// } else if (limits != null) { +// return (int) limits.width(); +// } else { +// return -1; +// } +// } +// +// @Override +// public int getIntrinsicHeight() { +// if (bounds != null) { +// return (int) bounds.height(); +// } else if (limits != null) { +// return (int) limits.height(); +// } else { +// return -1; +// } +// } +// }; + } + + /** + * Get the parsed SVG picture data. + * @return the picture. + */ + public Picture getPicture() { + return picture; + } + + /** + * Gets the bounding rectangle for the SVG, if one was specified. + * @return rectangle representing the bounds. + */ + public RectF getBounds() { + return bounds; + } + + /** + * Gets the bounding rectangle for the SVG that was computed upon parsing. It may not be entirely accurate for certain curves or transformations, but is often better than nothing. + * @return rectangle representing the computed bounds. + */ + public RectF getLimits() { + return limits; + } +} \ No newline at end of file diff --git a/src/main/java/com/shaya/poinila/android/presentation/svgandroid/SVGParseException.java b/src/main/java/com/shaya/poinila/android/presentation/svgandroid/SVGParseException.java new file mode 100755 index 0000000..6318a30 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/svgandroid/SVGParseException.java @@ -0,0 +1,21 @@ +package com.shaya.poinila.android.presentation.svgandroid; + +/** + * Runtime exception thrown when there is a problem parsing an SVG. + * + * @author Larva Labs, LLC + */ +public class SVGParseException extends RuntimeException { + + public SVGParseException(String s) { + super(s); + } + + public SVGParseException(String s, Throwable throwable) { + super(s, throwable); + } + + public SVGParseException(Throwable throwable) { + super(throwable); + } +} \ No newline at end of file diff --git a/src/main/java/com/shaya/poinila/android/presentation/svgandroid/SVGParser.java b/src/main/java/com/shaya/poinila/android/presentation/svgandroid/SVGParser.java new file mode 100755 index 0000000..db534dc --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/svgandroid/SVGParser.java @@ -0,0 +1,1316 @@ +package com.shaya.poinila.android.presentation.svgandroid; + +import android.content.res.AssetManager; +import android.content.res.Resources; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.LinearGradient; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.Picture; +import android.graphics.RadialGradient; +import android.graphics.RectF; +import android.graphics.Shader; +import android.util.Log; + +import org.xml.sax.Attributes; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; +import org.xml.sax.helpers.DefaultHandler; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; + +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +/* + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + */ + +/** + * Entry point for parsing SVG files for Android. + * Use one of the various static methods for parsing SVGs by resource, asset or input stream. + * Optionally, a single color can be searched and replaced in the SVG while parsing. + * You can also parse an svg path directly. + * + * @author Larva Labs, LLC + * @see #getSVGFromResource(Resources, int) + * @see #getSVGFromAsset(AssetManager, String) + * @see #getSVGFromString(String) + * @see #getSVGFromInputStream(InputStream) + * @see #parsePath(String) + */ +public class SVGParser { + + static final String TAG = "SVGAndroid"; + + /** + * Parse SVG data from an input stream. + * + * @param svgData the input stream, with SVG XML data in UTF-8 character encoding. + * @return the parsed SVG. + * @throws SVGParseException if there is an error while parsing. + */ + public static SVG getSVGFromInputStream(InputStream svgData) throws SVGParseException { + return SVGParser.parse(svgData, 0, 0, false); + } + + /** + * Parse SVG data from an input stream and scale to the specific size. + * @param svgData + * @param targetWidth + * @param targetHeight + * @return + * @throws SVGParseException + */ + public static SVG getSVGFromInputStream(InputStream svgData, int targetWidth, int targetHeight) + throws SVGParseException { + return SVGParser.parse(svgData, 0, 0, false, targetWidth, targetHeight); + } + + /** + * Parse SVG data from an Android application resource. + * + * @param resources the Android context resources. + * @param resId the ID of the raw resource SVG. + * @return the parsed SVG. + * @throws SVGParseException if there is an error while parsing. + */ + public static SVG getSVGFromResource(Resources resources, int resId) throws SVGParseException { + return SVGParser.parse(resources.openRawResource(resId), 0, 0, false); + } + + /** + * Parse SVG data from an Android application asset. + * + * @param assetMngr the Android asset manager. + * @param svgPath the path to the SVG file in the application's assets. + * @return the parsed SVG. + * @throws SVGParseException if there is an error while parsing. + * @throws IOException if there was a problem reading the file. + */ + public static SVG getSVGFromAsset(AssetManager assetMngr, String svgPath) throws SVGParseException, IOException { + InputStream inputStream = assetMngr.open(svgPath); + SVG svg = getSVGFromInputStream(inputStream); + inputStream.close(); + return svg; + } + + /** + * Parse SVG data from an input stream, replacing a single color with another color. + * + * @param svgData the input stream, with SVG XML data in UTF-8 character encoding. + * @param searchColor the color in the SVG to replace. + * @param replaceColor the color with which to replace the search color. + * @return the parsed SVG. + * @throws SVGParseException if there is an error while parsing. + */ + public static SVG getSVGFromInputStream(InputStream svgData, int searchColor, int replaceColor, + int targetWidth, int targetHeight) throws SVGParseException { + return SVGParser.parse(svgData, searchColor, replaceColor, false, targetWidth, targetHeight); + } + + /** + * Parse SVG data from a string. + * + * @param svgData the string containing SVG XML data. + * @param searchColor the color in the SVG to replace. + * @param replaceColor the color with which to replace the search color. + * @return the parsed SVG. + * @throws SVGParseException if there is an error while parsing. + */ + public static SVG getSVGFromString(String svgData, int searchColor, int replaceColor) throws SVGParseException { + return SVGParser.parse(new ByteArrayInputStream(svgData.getBytes()), searchColor, replaceColor, false); + } + + /** + * Parse SVG data from an Android application resource. + * + * @param resources the Android context + * @param resId the ID of the raw resource SVG. + * @param searchColor the color in the SVG to replace. + * @param replaceColor the color with which to replace the search color. + * @return the parsed SVG. + * @throws SVGParseException if there is an error while parsing. + */ + public static SVG getSVGFromResource(Resources resources, int resId, int searchColor, int replaceColor) throws SVGParseException { + return SVGParser.parse(resources.openRawResource(resId), searchColor, replaceColor, false); + } + + /** + * Parse SVG data from an Android application asset. + * + * @param assetMngr the Android asset manager. + * @param svgPath the path to the SVG file in the application's assets. + * @param searchColor the color in the SVG to replace. + * @param replaceColor the color with which to replace the search color. + * @return the parsed SVG. + * @throws SVGParseException if there is an error while parsing. + * @throws IOException if there was a problem reading the file. + */ + public static SVG getSVGFromAsset(AssetManager assetMngr, String svgPath, int searchColor, int replaceColor) throws SVGParseException, IOException { + InputStream inputStream = assetMngr.open(svgPath); + SVG svg = getSVGFromInputStream(inputStream, searchColor, replaceColor); + inputStream.close(); + return svg; + } + + /** + * Parses a single SVG path and returns it as a android.graphics.Path object. + * An example path is M250,150L150,350L350,350Z, which draws a triangle. + * + * @param pathString the SVG path, see the specification
here. + */ + public static Path parsePath(String pathString) { + return doPath(pathString); + } + + private static SVG parse(InputStream in, Integer searchColor, Integer replaceColor, boolean whiteMode, + int targetWidth, int targetHeight) throws SVGParseException { +// Util.debug("Parsing SVG..."); + try { + long start = System.currentTimeMillis(); + SAXParserFactory spf = SAXParserFactory.newInstance(); + SAXParser sp = spf.newSAXParser(); + XMLReader xr = sp.getXMLReader(); + final Picture picture = new Picture(); + SVGHandler handler = new SVGHandler(picture, targetWidth, targetHeight); + handler.setColorSwap(searchColor, replaceColor); + handler.setWhiteMode(whiteMode); + xr.setContentHandler(handler); + xr.parse(new InputSource(in)); +// Util.debug("Parsing complete in " + (System.currentTimeMillis() - start) + " millis."); + SVG result = new SVG(picture, handler.bounds); + // Skip bounds if it was an empty pic + if (!Float.isInfinite(handler.limits.top)) { + result.setLimits(handler.limits); + } + return result; + } catch (Exception e) { + throw new SVGParseException(e); + } + } + + private static SVG parse(InputStream in, Integer searchColor, Integer replaceColor, boolean whiteMode) throws SVGParseException { + return parse(in, searchColor, replaceColor, whiteMode, 0, 0); + } + + private static NumberParse parseNumbers(String s) { + //Util.debug("Parsing numbers from: '" + s + "'"); + int n = s.length(); + int p = 0; + ArrayList numbers = new ArrayList(); + boolean skipChar = false; + for (int i = 1; i < n; i++) { + if (skipChar) { + skipChar = false; + continue; + } + char c = s.charAt(i); + switch (c) { + // This ends the parsing, as we are on the next element + case 'M': + case 'm': + case 'Z': + case 'z': + case 'L': + case 'l': + case 'H': + case 'h': + case 'V': + case 'v': + case 'C': + case 'c': + case 'S': + case 's': + case 'Q': + case 'q': + case 'T': + case 't': + case 'a': + case 'A': + case ')': { + String str = s.substring(p, i); + if (str.trim().length() > 0) { + //Util.debug(" Last: " + str); + Float f = Float.parseFloat(str); + numbers.add(f); + } + p = i; + return new NumberParse(numbers, p); + } + case '\n': + case '\t': + case ' ': + case ',': + case '-': { + String str = s.substring(p, i); + // Just keep moving if multiple whitespace + if (str.trim().length() > 0) { + //Util.debug(" Next: " + str); + Float f = Float.parseFloat(str); + numbers.add(f); + if (c == '-') { + p = i; + } else { + p = i + 1; + skipChar = true; + } + } else { + p++; + } + break; + } + } + } + String last = s.substring(p); + if (last.length() > 0) { + //Util.debug(" Last: " + last); + try { + numbers.add(Float.parseFloat(last)); + } catch (NumberFormatException nfe) { + // Just white-space, forget it + } + p = s.length(); + } + return new NumberParse(numbers, p); + } + + private static Matrix parseTransform(String s) { + if (s.startsWith("matrix(")) { + NumberParse np = parseNumbers(s.substring("matrix(".length())); + if (np.numbers.size() == 6) { + Matrix matrix = new Matrix(); + matrix.setValues(new float[]{ + // Row 1 + np.numbers.get(0), + np.numbers.get(2), + np.numbers.get(4), + // Row 2 + np.numbers.get(1), + np.numbers.get(3), + np.numbers.get(5), + // Row 3 + 0, + 0, + 1, + }); + return matrix; + } + } else if (s.startsWith("translate(")) { + NumberParse np = parseNumbers(s.substring("translate(".length())); + if (np.numbers.size() > 0) { + float tx = np.numbers.get(0); + float ty = 0; + if (np.numbers.size() > 1) { + ty = np.numbers.get(1); + } + Matrix matrix = new Matrix(); + matrix.postTranslate(tx, ty); + return matrix; + } + } else if (s.startsWith("scale(")) { + NumberParse np = parseNumbers(s.substring("scale(".length())); + if (np.numbers.size() > 0) { + float sx = np.numbers.get(0); + float sy = 0; + if (np.numbers.size() > 1) { + sy = np.numbers.get(1); + } + Matrix matrix = new Matrix(); + matrix.postScale(sx, sy); + return matrix; + } + } else if (s.startsWith("skewX(")) { + NumberParse np = parseNumbers(s.substring("skewX(".length())); + if (np.numbers.size() > 0) { + float angle = np.numbers.get(0); + Matrix matrix = new Matrix(); + matrix.postSkew((float) Math.tan(angle), 0); + return matrix; + } + } else if (s.startsWith("skewY(")) { + NumberParse np = parseNumbers(s.substring("skewY(".length())); + if (np.numbers.size() > 0) { + float angle = np.numbers.get(0); + Matrix matrix = new Matrix(); + matrix.postSkew(0, (float) Math.tan(angle)); + return matrix; + } + } else if (s.startsWith("rotate(")) { + NumberParse np = parseNumbers(s.substring("rotate(".length())); + if (np.numbers.size() > 0) { + float angle = np.numbers.get(0); + float cx = 0; + float cy = 0; + if (np.numbers.size() > 2) { + cx = np.numbers.get(1); + cy = np.numbers.get(2); + } + Matrix matrix = new Matrix(); + matrix.postTranslate(cx, cy); + matrix.postRotate(angle); + matrix.postTranslate(-cx, -cy); + return matrix; + } + } + return null; + } + + /** + * This is where the hard-to-parse paths are handled. + * Uppercase rules are absolute positions, lowercase are relative. + * Types of path rules: + *

+ *

    + *
  1. M/m - (x y)+ - Move to (without drawing) + *
  2. Z/z - (no params) - Close path (back to starting point) + *
  3. L/l - (x y)+ - Line to + *
  4. H/h - x+ - Horizontal ine to + *
  5. V/v - y+ - Vertical line to + *
  6. C/c - (x1 y1 x2 y2 x y)+ - Cubic bezier to + *
  7. S/s - (x2 y2 x y)+ - Smooth cubic bezier to (shorthand that assumes the x2, y2 from previous C/S is the x1, y1 of this bezier) + *
  8. Q/q - (x1 y1 x y)+ - Quadratic bezier to + *
  9. T/t - (x y)+ - Smooth quadratic bezier to (assumes previous control point is "reflection" of last one w.r.t. to current point) + *
+ *

+ * Numbers are separate by whitespace, comma or nothing at all (!) if they are self-delimiting, (ie. begin with a - sign) + * + * @param s the path string from the XML + */ + private static Path doPath(String s) { + int n = s.length(); + ParserHelper ph = new ParserHelper(s, 0); + ph.skipWhitespace(); + Path p = new Path(); + float lastX = 0; + float lastY = 0; + float lastX1 = 0; + float lastY1 = 0; + float subPathStartX = 0; + float subPathStartY = 0; + char prevCmd = 0; + while (ph.pos < n) { + char cmd = s.charAt(ph.pos); + switch (cmd) { + case '-': + case '+': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (prevCmd == 'm' || prevCmd == 'M') { + cmd = (char) (((int) prevCmd) - 1); + break; + } else if (prevCmd == 'c' || prevCmd == 'C') { + cmd = prevCmd; + break; + } else if (prevCmd == 'l' || prevCmd == 'L') { + cmd = prevCmd; + break; + } + default: { + ph.advance(); + prevCmd = cmd; + } + } + + boolean wasCurve = false; + switch (cmd) { + case 'M': + case 'm': { + float x = ph.nextFloat(); + float y = ph.nextFloat(); + if (cmd == 'm') { + subPathStartX += x; + subPathStartY += y; + p.rMoveTo(x, y); + lastX += x; + lastY += y; + } else { + subPathStartX = x; + subPathStartY = y; + p.moveTo(x, y); + lastX = x; + lastY = y; + } + break; + } + case 'Z': + case 'z': { + p.close(); + p.moveTo(subPathStartX, subPathStartY); + lastX = subPathStartX; + lastY = subPathStartY; + lastX1 = subPathStartX; + lastY1 = subPathStartY; + wasCurve = true; + break; + } + case 'L': + case 'l': { + float x = ph.nextFloat(); + float y = ph.nextFloat(); + if (cmd == 'l') { + p.rLineTo(x, y); + lastX += x; + lastY += y; + } else { + p.lineTo(x, y); + lastX = x; + lastY = y; + } + break; + } + case 'H': + case 'h': { + float x = ph.nextFloat(); + if (cmd == 'h') { + p.rLineTo(x, 0); + lastX += x; + } else { + p.lineTo(x, lastY); + lastX = x; + } + break; + } + case 'V': + case 'v': { + float y = ph.nextFloat(); + if (cmd == 'v') { + p.rLineTo(0, y); + lastY += y; + } else { + p.lineTo(lastX, y); + lastY = y; + } + break; + } + case 'C': + case 'c': { + wasCurve = true; + float x1 = ph.nextFloat(); + float y1 = ph.nextFloat(); + float x2 = ph.nextFloat(); + float y2 = ph.nextFloat(); + float x = ph.nextFloat(); + float y = ph.nextFloat(); + if (cmd == 'c') { + x1 += lastX; + x2 += lastX; + x += lastX; + y1 += lastY; + y2 += lastY; + y += lastY; + } + p.cubicTo(x1, y1, x2, y2, x, y); + lastX1 = x2; + lastY1 = y2; + lastX = x; + lastY = y; + break; + } + case 'S': + case 's': { + wasCurve = true; + float x2 = ph.nextFloat(); + float y2 = ph.nextFloat(); + float x = ph.nextFloat(); + float y = ph.nextFloat(); + if (cmd == 's') { + x2 += lastX; + x += lastX; + y2 += lastY; + y += lastY; + } + float x1 = 2 * lastX - lastX1; + float y1 = 2 * lastY - lastY1; + p.cubicTo(x1, y1, x2, y2, x, y); + lastX1 = x2; + lastY1 = y2; + lastX = x; + lastY = y; + break; + } + case 'A': + case 'a': { + float rx = ph.nextFloat(); + float ry = ph.nextFloat(); + float theta = ph.nextFloat(); + int largeArc = (int) ph.nextFloat(); + int sweepArc = (int) ph.nextFloat(); + float x = ph.nextFloat(); + float y = ph.nextFloat(); + drawArc(p, lastX, lastY, x, y, rx, ry, theta, largeArc, sweepArc); + lastX = x; + lastY = y; + break; + } + } + if (!wasCurve) { + lastX1 = lastX; + lastY1 = lastY; + } + ph.skipWhitespace(); + } + return p; + } + + private static void drawArc(Path p, float lastX, float lastY, float x, float y, float rx, float ry, float theta, int largeArc, int sweepArc) { + // todo - not implemented yet, may be very hard to do using Android drawing facilities. + } + + private static NumberParse getNumberParseAttr(String name, Attributes attributes) { + int n = attributes.getLength(); + for (int i = 0; i < n; i++) { + if (attributes.getLocalName(i).equals(name)) { + return parseNumbers(attributes.getValue(i)); + } + } + return null; + } + + private static String getStringAttr(String name, Attributes attributes) { + int n = attributes.getLength(); + for (int i = 0; i < n; i++) { + if (attributes.getLocalName(i).equals(name)) { + return attributes.getValue(i); + } + } + return null; + } + + private static Float getFloatAttr(String name, Attributes attributes) { + return getFloatAttr(name, attributes, null); + } + + private static Float getFloatAttr(String name, Attributes attributes, Float defaultValue) { + String v = getStringAttr(name, attributes); + if (v == null) { + return defaultValue; + } else { + if (v.endsWith("px")) { + v = v.substring(0, v.length() - 2); + } +// Log.d(TAG, "Float parsing '" + name + "=" + v + "'"); + return Float.parseFloat(v); + } + } + + private static Integer getHexAttr(String name, Attributes attributes) { + String v = getStringAttr(name, attributes); + //Util.debug("Hex parsing '" + name + "=" + v + "'"); + if (v == null) { + return null; + } else { + try { + return Integer.parseInt(v.substring(1), 16); + } catch (NumberFormatException nfe) { + // todo - parse word-based color here + return null; + } + } + } + + private static class NumberParse { + private ArrayList numbers; + private int nextCmd; + + public NumberParse(ArrayList numbers, int nextCmd) { + this.numbers = numbers; + this.nextCmd = nextCmd; + } + + public int getNextCmd() { + return nextCmd; + } + + public float getNumber(int index) { + return numbers.get(index); + } + + } + + private static class Gradient { + String id; + String xlink; + boolean isLinear; + float x1, y1, x2, y2; + float x, y, radius; + ArrayList positions = new ArrayList(); + ArrayList colors = new ArrayList(); + Matrix matrix = null; + + public Gradient createChild(Gradient g) { + Gradient child = new Gradient(); + child.id = g.id; + child.xlink = id; + child.isLinear = g.isLinear; + child.x1 = g.x1; + child.x2 = g.x2; + child.y1 = g.y1; + child.y2 = g.y2; + child.x = g.x; + child.y = g.y; + child.radius = g.radius; + child.positions = positions; + child.colors = colors; + child.matrix = matrix; + if (g.matrix != null) { + if (matrix == null) { + child.matrix = g.matrix; + } else { + Matrix m = new Matrix(matrix); + m.preConcat(g.matrix); + child.matrix = m; + } + } + return child; + } + } + + private static class StyleSet { + HashMap styleMap = new HashMap(); + + private StyleSet(String string) { + String[] styles = string.split(";"); + for (String s : styles) { + String[] style = s.split(":"); + if (style.length == 2) { + styleMap.put(style[0], style[1]); + } + } + } + + public String getStyle(String name) { + return styleMap.get(name); + } + } + + private static class Properties { + StyleSet styles = null; + Attributes atts; + + private Properties(Attributes atts) { + this.atts = atts; + String styleAttr = getStringAttr("style", atts); + if (styleAttr != null) { + styles = new StyleSet(styleAttr); + } + } + + public String getAttr(String name) { + String v = null; + if (styles != null) { + v = styles.getStyle(name); + } + if (v == null) { + v = getStringAttr(name, atts); + } + return v; + } + + public String getString(String name) { + return getAttr(name); + } + + public Integer getHex(String name) { + String v = getAttr(name); + if (v == null || !v.startsWith("#")) { + return null; + } else { + try { + return Integer.parseInt(v.substring(1), 16); + } catch (NumberFormatException nfe) { + // todo - parse word-based color here + return null; + } + } + } + + public Float getFloat(String name, float defaultValue) { + Float v = getFloat(name); + if (v == null) { + return defaultValue; + } else { + return v; + } + } + + public Float getFloat(String name) { + String v = getAttr(name); + if (v == null) { + return null; + } else { + try { + return Float.parseFloat(v); + } catch (NumberFormatException nfe) { + return null; + } + } + } + } + + private static class SVGHandler extends DefaultHandler { + + Picture picture; + Canvas canvas; + Paint paint; + // Scratch rect (so we aren't constantly making new ones) + RectF rect = new RectF(); + RectF bounds = null; + RectF limits = new RectF(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY); + + Integer searchColor = null; + Integer replaceColor = null; + int targetWidth; + int targetHeight; + + boolean whiteMode = false; + + boolean pushed = false; + + HashMap gradientMap = new HashMap(); + HashMap gradientRefMap = new HashMap(); + Gradient gradient = null; + + private SVGHandler(Picture picture) { + this.picture = picture; + paint = new Paint(); + paint.setAntiAlias(true); + } + + private SVGHandler(Picture picture, int targetWidth, int targetHeight) { + this(picture); + this.targetWidth = targetWidth; + this.targetHeight = targetHeight; + } + + public void setColorSwap(Integer searchColor, Integer replaceColor) { + this.searchColor = searchColor; + this.replaceColor = replaceColor; + } + + public void setWhiteMode(boolean whiteMode) { + this.whiteMode = whiteMode; + } + + @Override + public void startDocument() throws SAXException { + // Set up prior to parsing a doc + } + + @Override + public void endDocument() throws SAXException { + // Clean up after parsing a doc + } + + private boolean doFill(Properties atts, HashMap gradients) { + if ("none".equals(atts.getString("display"))) { + return false; + } + if (whiteMode) { + paint.setStyle(Paint.Style.FILL); + paint.setColor(0xFFFFFFFF); + return true; + } + String fillString = atts.getString("fill"); + if (fillString != null && fillString.startsWith("url(#")) { + // It's a gradient fill, look it up in our map + String id = fillString.substring("url(#".length(), fillString.length() - 1); + Shader shader = gradients.get(id); + if (shader != null) { + //Util.debug("Found shader!"); + paint.setShader(shader); + paint.setStyle(Paint.Style.FILL); + return true; + } else { + //Util.debug("Didn't find shader!"); + return false; + } + } else { + paint.setShader(null); + Integer color = atts.getHex("fill"); + if (color != null) { + doColor(atts, color, true); + paint.setStyle(Paint.Style.FILL); + return true; + } else if (atts.getString("fill") == null && atts.getString("stroke") == null) { + // Default is black fill + paint.setStyle(Paint.Style.FILL); + paint.setColor(0xFF000000); + return true; + } + } + return false; + } + + private boolean doStroke(Properties atts) { + if (whiteMode) { + // Never stroke in white mode + return false; + } + if ("none".equals(atts.getString("display"))) { + return false; + } + Integer color = atts.getHex("stroke"); + if (color != null) { + doColor(atts, color, false); + // Check for other stroke attributes + Float width = atts.getFloat("stroke-width"); + // Set defaults + + if (width != null) { + paint.setStrokeWidth(width); + } + String linecap = atts.getString("stroke-linecap"); + if ("round".equals(linecap)) { + paint.setStrokeCap(Paint.Cap.ROUND); + } else if ("square".equals(linecap)) { + paint.setStrokeCap(Paint.Cap.SQUARE); + } else if ("butt".equals(linecap)) { + paint.setStrokeCap(Paint.Cap.BUTT); + } + String linejoin = atts.getString("stroke-linejoin"); + if ("miter".equals(linejoin)) { + paint.setStrokeJoin(Paint.Join.MITER); + } else if ("round".equals(linejoin)) { + paint.setStrokeJoin(Paint.Join.ROUND); + } else if ("bevel".equals(linejoin)) { + paint.setStrokeJoin(Paint.Join.BEVEL); + } + paint.setStyle(Paint.Style.STROKE); + return true; + } + return false; + } + + private Gradient doGradient(boolean isLinear, Attributes atts) { + Gradient gradient = new Gradient(); + gradient.id = getStringAttr("id", atts); + gradient.isLinear = isLinear; + if (isLinear) { + gradient.x1 = getFloatAttr("x1", atts, 0f); + gradient.x2 = getFloatAttr("x2", atts, 0f); + gradient.y1 = getFloatAttr("y1", atts, 0f); + gradient.y2 = getFloatAttr("y2", atts, 0f); + } else { + gradient.x = getFloatAttr("cx", atts, 0f); + gradient.y = getFloatAttr("cy", atts, 0f); + gradient.radius = getFloatAttr("r", atts, 0f); + } + String transform = getStringAttr("gradientTransform", atts); + if (transform != null) { + gradient.matrix = parseTransform(transform); + } + String xlink = getStringAttr("href", atts); + if (xlink != null) { + if (xlink.startsWith("#")) { + xlink = xlink.substring(1); + } + gradient.xlink = xlink; + } + return gradient; + } + + private void doColor(Properties atts, Integer color, boolean fillMode) { + int c = (0xFFFFFF & color) | 0xFF000000; + if (searchColor != null && searchColor == c) { + c = replaceColor; + } + paint.setColor(c); + Float opacity = atts.getFloat("opacity"); + if (opacity == null) { + opacity = atts.getFloat(fillMode ? "fill-opacity" : "stroke-opacity"); + } + if (opacity == null) { + paint.setAlpha(255); + } else { + paint.setAlpha((int) (255 * opacity)); + } + } + + private boolean hidden = false; + private int hiddenLevel = 0; + private boolean boundsMode = false; + + private void doLimits(float x, float y) { + if (x < limits.left) { + limits.left = x; + } + if (x > limits.right) { + limits.right = x; + } + if (y < limits.top) { + limits.top = y; + } + if (y > limits.bottom) { + limits.bottom = y; + } + } + + private void doLimits(float x, float y, float width, float height) { + doLimits(x, y); + doLimits(x + width, y + height); + } + + private void doLimits(Path path) { + path.computeBounds(rect, false); + doLimits(rect.left, rect.top); + doLimits(rect.right, rect.bottom); + } + + private void pushTransform(Attributes atts) { + final String transform = getStringAttr("transform", atts); + pushed = transform != null; + if (pushed) { + final Matrix matrix = parseTransform(transform); + canvas.save(); + canvas.concat(matrix); + } + } + + private void popTransform() { + if (pushed) { + canvas.restore(); + } + } + + /** + * Start recording picture on the canvas. + * If target width and height are set for the canvas + * scale output picture uniformally using by the smallest + * dimention. + * @param imageWidth Width of the SVG image. + * @param imageHeight Height of the SVG image. + * @return + */ + private Canvas beginRecordingPicture(int imageWidth, int imageHeight) { + if(targetWidth == 0 || targetHeight == 0) { + return picture.beginRecording(imageWidth, imageHeight); + } else { + Canvas canvas = picture.beginRecording(targetWidth, targetHeight); + prepareScaledCanvas(canvas, imageWidth, imageHeight); + return canvas; + } + } + + private static final void prepareScaledCanvas(Canvas canvas, float imageWidth, float imageHeight) { + final float scaleX = canvas.getWidth() / imageWidth; + final float scaleY = canvas.getHeight() / imageHeight; + + if(scaleX > scaleY) { + final float dx = ((scaleX - scaleY) * imageWidth) / 2; + canvas.translate(dx, 0); + canvas.scale(scaleY, scaleY); + } else { + final float dy = ((scaleY - scaleX) * imageHeight) / 2; + canvas.translate(0, dy); + canvas.scale(scaleX, scaleX); + } + } + + + @Override + public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException { + // Reset paint opacity + paint.setAlpha(255); + // Ignore everything but rectangles in bounds mode + if (boundsMode) { + if (localName.equals("rect")) { + Float x = getFloatAttr("x", atts); + if (x == null) { + x = 0f; + } + Float y = getFloatAttr("y", atts); + if (y == null) { + y = 0f; + } + Float width = getFloatAttr("width", atts); + Float height = getFloatAttr("height", atts); + bounds = new RectF(x, y, x + width, y + width); + } + return; + } + if (localName.equals("svg")) { + int imageWidth = (int) Math.ceil(getFloatAttr("width", atts)); + int imageHeight = (int) Math.ceil(getFloatAttr("height", atts)); + canvas = beginRecordingPicture(imageWidth, imageHeight); + } else if (localName.equals("defs")) { + // Ignore + } else if (localName.equals("linearGradient")) { + gradient = doGradient(true, atts); + } else if (localName.equals("radialGradient")) { + gradient = doGradient(false, atts); + } else if (localName.equals("stop")) { + if (gradient != null) { + float offset = getFloatAttr("offset", atts); + String styles = getStringAttr("style", atts); + StyleSet styleSet = new StyleSet(styles); + String colorStyle = styleSet.getStyle("stop-color"); + int color = Color.BLACK; + if (colorStyle != null) { + if (colorStyle.startsWith("#")) { + color = Integer.parseInt(colorStyle.substring(1), 16); + } else { + color = Integer.parseInt(colorStyle, 16); + } + } + String opacityStyle = styleSet.getStyle("stop-opacity"); + if (opacityStyle != null) { + float alpha = Float.parseFloat(opacityStyle); + int alphaInt = Math.round(255 * alpha); + color |= (alphaInt << 24); + } else { + color |= 0xFF000000; + } + gradient.positions.add(offset); + gradient.colors.add(color); + } + } else if (localName.equals("g")) { + // Check to see if this is the "bounds" layer + if ("bounds".equalsIgnoreCase(getStringAttr("id", atts))) { + boundsMode = true; + } + if (hidden) { + hiddenLevel++; + //Util.debug("Hidden up: " + hiddenLevel); + } + // Go in to hidden mode if display is "none" + if ("none".equals(getStringAttr("display", atts))) { + if (!hidden) { + hidden = true; + hiddenLevel = 1; + //Util.debug("Hidden up: " + hiddenLevel); + } + } + } else if (!hidden && localName.equals("rect")) { + Float x = getFloatAttr("x", atts); + if (x == null) { + x = 0f; + } + Float y = getFloatAttr("y", atts); + if (y == null) { + y = 0f; + } + Float width = getFloatAttr("width", atts); + Float height = getFloatAttr("height", atts); + pushTransform(atts); + Properties props = new Properties(atts); + if (doFill(props, gradientMap)) { + doLimits(x, y, width, height); + canvas.drawRect(x, y, x + width, y + height, paint); + } + if (doStroke(props)) { + canvas.drawRect(x, y, x + width, y + height, paint); + } + popTransform(); + } else if (!hidden && localName.equals("line")) { + Float x1 = getFloatAttr("x1", atts); + Float x2 = getFloatAttr("x2", atts); + Float y1 = getFloatAttr("y1", atts); + Float y2 = getFloatAttr("y2", atts); + Properties props = new Properties(atts); + if (doStroke(props)) { + pushTransform(atts); + doLimits(x1, y1); + doLimits(x2, y2); + canvas.drawLine(x1, y1, x2, y2, paint); + popTransform(); + } + } else if (!hidden && localName.equals("circle")) { + Float centerX = getFloatAttr("cx", atts); + Float centerY = getFloatAttr("cy", atts); + Float radius = getFloatAttr("r", atts); + if (centerX != null && centerY != null && radius != null) { + pushTransform(atts); + Properties props = new Properties(atts); + if (doFill(props, gradientMap)) { + doLimits(centerX - radius, centerY - radius); + doLimits(centerX + radius, centerY + radius); + canvas.drawCircle(centerX, centerY, radius, paint); + } + if (doStroke(props)) { + canvas.drawCircle(centerX, centerY, radius, paint); + } + popTransform(); + } + } else if (!hidden && localName.equals("ellipse")) { + Float centerX = getFloatAttr("cx", atts); + Float centerY = getFloatAttr("cy", atts); + Float radiusX = getFloatAttr("rx", atts); + Float radiusY = getFloatAttr("ry", atts); + if (centerX != null && centerY != null && radiusX != null && radiusY != null) { + pushTransform(atts); + Properties props = new Properties(atts); + rect.set(centerX - radiusX, centerY - radiusY, centerX + radiusX, centerY + radiusY); + if (doFill(props, gradientMap)) { + doLimits(centerX - radiusX, centerY - radiusY); + doLimits(centerX + radiusX, centerY + radiusY); + canvas.drawOval(rect, paint); + } + if (doStroke(props)) { + canvas.drawOval(rect, paint); + } + popTransform(); + } + } else if (!hidden && (localName.equals("polygon") || localName.equals("polyline"))) { + NumberParse numbers = getNumberParseAttr("points", atts); + if (numbers != null) { + Path p = new Path(); + ArrayList points = numbers.numbers; + if (points.size() > 1) { + pushTransform(atts); + Properties props = new Properties(atts); + p.moveTo(points.get(0), points.get(1)); + for (int i = 2; i < points.size(); i += 2) { + float x = points.get(i); + float y = points.get(i + 1); + p.lineTo(x, y); + } + // Don't close a polyline + if (localName.equals("polygon")) { + p.close(); + } + if (doFill(props, gradientMap)) { + doLimits(p); + canvas.drawPath(p, paint); + } + if (doStroke(props)) { + canvas.drawPath(p, paint); + } + popTransform(); + } + } + } else if (!hidden && localName.equals("path")) { + Path p = doPath(getStringAttr("d", atts)); + pushTransform(atts); + Properties props = new Properties(atts); + if (doFill(props, gradientMap)) { + doLimits(p); + canvas.drawPath(p, paint); + } + if (doStroke(props)) { + canvas.drawPath(p, paint); + } + popTransform(); + } else if (!hidden) { + Log.d(TAG, "UNRECOGNIZED SVG COMMAND: " + localName); + } + } + + @Override + public void characters(char ch[], int start, int length) { + // no-op + } + + @Override + public void endElement(String namespaceURI, String localName, String qName) + throws SAXException { + switch (localName) { + case "svg": + picture.endRecording(); + break; + case "linearGradient": + if (gradient.id != null) { + if (gradient.xlink != null) { + Gradient parent = gradientRefMap.get(gradient.xlink); + if (parent != null) { + gradient = parent.createChild(gradient); + } + } + int[] colors = new int[gradient.colors.size()]; + for (int i = 0; i < colors.length; i++) { + colors[i] = gradient.colors.get(i); + } + float[] positions = new float[gradient.positions.size()]; + for (int i = 0; i < positions.length; i++) { + positions[i] = gradient.positions.get(i); + } + if (colors.length == 0) { + Log.d("BAD", "BAD"); + } + LinearGradient g = new LinearGradient(gradient.x1, gradient.y1, gradient.x2, gradient.y2, colors, positions, Shader.TileMode.CLAMP); + if (gradient.matrix != null) { + g.setLocalMatrix(gradient.matrix); + } + gradientMap.put(gradient.id, g); + gradientRefMap.put(gradient.id, gradient); + } + break; + case "radialGradient": + if (gradient.id != null) { + if (gradient.xlink != null) { + Gradient parent = gradientRefMap.get(gradient.xlink); + if (parent != null) { + gradient = parent.createChild(gradient); + } + } + int[] colors = new int[gradient.colors.size()]; + for (int i = 0; i < colors.length; i++) { + colors[i] = gradient.colors.get(i); + } + float[] positions = new float[gradient.positions.size()]; + for (int i = 0; i < positions.length; i++) { + positions[i] = gradient.positions.get(i); + } + if (gradient.xlink != null) { + Gradient parent = gradientRefMap.get(gradient.xlink); + if (parent != null) { + gradient = parent.createChild(gradient); + } + } + RadialGradient g = new RadialGradient(gradient.x, gradient.y, gradient.radius, colors, positions, Shader.TileMode.CLAMP); + if (gradient.matrix != null) { + g.setLocalMatrix(gradient.matrix); + } + gradientMap.put(gradient.id, g); + gradientRefMap.put(gradient.id, gradient); + } + break; + case "g": + if (boundsMode) { + boundsMode = false; + } + // Break out of hidden mode + if (hidden) { + hiddenLevel--; + //Util.debug("Hidden down: " + hiddenLevel); + if (hiddenLevel == 0) { + hidden = false; + } + } + // Clear gradient map + gradientMap.clear(); + break; + } + } + } +} \ No newline at end of file diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/AdapterPositionedEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/AdapterPositionedEvent.java new file mode 100755 index 0000000..9e7b437 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/AdapterPositionedEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-11-08. + */ +public abstract class AdapterPositionedEvent { + public AdapterPositionedEvent(int adapterPosition) { + this.adapterPosition = adapterPosition; + } + + public int adapterPosition; +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/AddItemUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/AddItemUIEvent.java new file mode 100755 index 0000000..f9643dd --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/AddItemUIEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-07-26. + */ +public class AddItemUIEvent { + public AddItemUIEvent(int adapterPosition) { + this.adapterPosition = adapterPosition; + } + + public int adapterPosition; +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/AfterVerifyResponse.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/AfterVerifyResponse.java new file mode 100755 index 0000000..9133891 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/AfterVerifyResponse.java @@ -0,0 +1,9 @@ +package com.shaya.poinila.android.presentation.uievent; + +import data.event.BaseEvent; + +/** + * Created by hossein on 9/7/16. + */ +public class AfterVerifyResponse extends BaseEvent { +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/AnswerFriendshipUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/AnswerFriendshipUIEvent.java new file mode 100755 index 0000000..d17150f --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/AnswerFriendshipUIEvent.java @@ -0,0 +1,16 @@ +package com.shaya.poinila.android.presentation.uievent; + +import data.model.FriendRequestAnswer; + +/** + * Created by iran on 2015-08-15. + */ +public class AnswerFriendshipUIEvent { + public int adapterPosition; + public FriendRequestAnswer accept; + + public AnswerFriendshipUIEvent(int adapterPosition, FriendRequestAnswer answer) { + this.adapterPosition = adapterPosition; + this.accept = answer; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/CapturePhotoEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/CapturePhotoEvent.java new file mode 100755 index 0000000..72c6fa5 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/CapturePhotoEvent.java @@ -0,0 +1,16 @@ +package com.shaya.poinila.android.presentation.uievent; + +import android.content.Intent; + +/** + * Created by AlirezaF on 7/17/2015. + */ +public class CapturePhotoEvent { + public final int requestCode; + public final Intent intent; + + public CapturePhotoEvent(Intent takePictureIntent, int requestTakePhoto) { + intent = takePictureIntent; + requestCode = requestTakePhoto; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/ChangePasswordUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/ChangePasswordUIEvent.java new file mode 100755 index 0000000..7629ef7 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/ChangePasswordUIEvent.java @@ -0,0 +1,14 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-08-01. + */ +public class ChangePasswordUIEvent { + public final String oldPass; + public final String newPass; + + public ChangePasswordUIEvent(String oldPass, String newPass) { + this.oldPass = oldPass; + this.newPass = newPass; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/CheckBoxClickUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/CheckBoxClickUIEvent.java new file mode 100755 index 0000000..70335ae --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/CheckBoxClickUIEvent.java @@ -0,0 +1,14 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-08-19. + */ +public class CheckBoxClickUIEvent { + public boolean checked; + public int adapterPosition; + + public CheckBoxClickUIEvent(boolean checked, int adapterPosition) { + this.checked = checked; + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/CirclesSelectedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/CirclesSelectedUIEvent.java new file mode 100755 index 0000000..2778962 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/CirclesSelectedUIEvent.java @@ -0,0 +1,15 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-08-29. + */ +public class CirclesSelectedUIEvent { + public final boolean[] selectedCircles; + //public final int actorID; + + public CirclesSelectedUIEvent(boolean[] selectedCircles, int actorID) { + + this.selectedCircles = selectedCircles; + //this.actorID = actorID; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/CollectionClickedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/CollectionClickedUIEvent.java new file mode 100755 index 0000000..b1053b7 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/CollectionClickedUIEvent.java @@ -0,0 +1,16 @@ +package com.shaya.poinila.android.presentation.uievent; + +import data.event.BaseEvent; +import data.event.IdentifiableEvent; + +/** + * Created by iran on 2015-08-06. + */ +public class CollectionClickedUIEvent extends IdentifiableEvent { + public int adapterPosition; + + public CollectionClickedUIEvent(int adapterPosition, BaseEvent.ReceiverName receiverTag) { + super(receiverTag); + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/CollectionFrameToggledEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/CollectionFrameToggledEvent.java new file mode 100755 index 0000000..9dde5f4 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/CollectionFrameToggledEvent.java @@ -0,0 +1,10 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-11-08. + */ +public class CollectionFrameToggledEvent extends AdapterPositionedEvent{ + public CollectionFrameToggledEvent(int adapterPosition) { + super(adapterPosition); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/CollectionListActivityImageSelectedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/CollectionListActivityImageSelectedUIEvent.java new file mode 100755 index 0000000..7f75a59 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/CollectionListActivityImageSelectedUIEvent.java @@ -0,0 +1,10 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-09-22. + */ +public class CollectionListActivityImageSelectedUIEvent extends ImageSelectedUIEvent { + public CollectionListActivityImageSelectedUIEvent(ImageSelectedUIEvent event) { + super(event); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/CommentLongClickUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/CommentLongClickUIEvent.java new file mode 100755 index 0000000..5a1e72a --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/CommentLongClickUIEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-09-20. + */ +public class CommentLongClickUIEvent { + public int adapterPosition; + + public CommentLongClickUIEvent(int adapterPosition) { + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/DeleteCircleUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/DeleteCircleUIEvent.java new file mode 100755 index 0000000..77b7bd6 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/DeleteCircleUIEvent.java @@ -0,0 +1,13 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-07-28. + */ +public class DeleteCircleUIEvent { + public int adapterPosition; + + public DeleteCircleUIEvent(int adapterPosition) { + + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/DeleteFrameUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/DeleteFrameUIEvent.java new file mode 100755 index 0000000..5eb1b0c --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/DeleteFrameUIEvent.java @@ -0,0 +1,14 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-07-28. + */ +public class DeleteFrameUIEvent { + + + public int adapterPosition; + + public DeleteFrameUIEvent(int adapterPosition) { + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/EditCircleNameUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/EditCircleNameUIEvent.java new file mode 100755 index 0000000..38ff222 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/EditCircleNameUIEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-07-28. + */ +public class EditCircleNameUIEvent { + public int adapterPosition; + + public EditCircleNameUIEvent(int adapterPosition) { + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/EditFrameNameUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/EditFrameNameUIEvent.java new file mode 100755 index 0000000..da67102 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/EditFrameNameUIEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-07-28. + */ +public class EditFrameNameUIEvent { + public int adapterPosition; + + public EditFrameNameUIEvent(int adapterPosition) { + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/EditItemUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/EditItemUIEvent.java new file mode 100755 index 0000000..267d7b1 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/EditItemUIEvent.java @@ -0,0 +1,13 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-08-17. + */ +public class EditItemUIEvent { + public int adapterPosition; + + public EditItemUIEvent(int adapterPosition) { + + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/ExploreTagEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/ExploreTagEvent.java new file mode 100755 index 0000000..b9bdacd --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/ExploreTagEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 12/26/2015. + */ +public class ExploreTagEvent { + public String text; + + public ExploreTagEvent(String text) { + this.text = text; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/FABMenuCollapseUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/FABMenuCollapseUIEvent.java new file mode 100755 index 0000000..9c76ceb --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/FABMenuCollapseUIEvent.java @@ -0,0 +1,13 @@ +package com.shaya.poinila.android.presentation.uievent; + + +import data.event.IdentifiableEvent; + +/** + * Created by iran on 11/22/2015. + */ +public class FABMenuCollapseUIEvent extends IdentifiableEvent { + public FABMenuCollapseUIEvent(ReceiverName receiverName) { + super(receiverName); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/FABMenuExpandUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/FABMenuExpandUIEvent.java new file mode 100755 index 0000000..fcda96f --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/FABMenuExpandUIEvent.java @@ -0,0 +1,14 @@ +package com.shaya.poinila.android.presentation.uievent; + + +import data.event.BaseEvent; +import data.event.IdentifiableEvent; + +/** + * Created by iran on 11/22/2015. + */ +public class FABMenuExpandUIEvent extends IdentifiableEvent { + public FABMenuExpandUIEvent(BaseEvent.ReceiverName receiverName) { + super(receiverName); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/FramesUpdatedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/FramesUpdatedUIEvent.java new file mode 100755 index 0000000..30f0dbf --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/FramesUpdatedUIEvent.java @@ -0,0 +1,17 @@ +package com.shaya.poinila.android.presentation.uievent; + + +import java.util.List; + +import data.model.Frame; + +/** + * Created by iran on 2015-08-01. + */ +public class FramesUpdatedUIEvent { + public List frames; + + public FramesUpdatedUIEvent(List frames) { + this.frames = frames; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/FriendCirclesUpdated.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/FriendCirclesUpdated.java new file mode 100755 index 0000000..653bd67 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/FriendCirclesUpdated.java @@ -0,0 +1,19 @@ +package com.shaya.poinila.android.presentation.uievent; + + +import java.util.List; + +import data.model.Member; + +/** + * Created by iran on 2015-10-11. + */ +public class FriendCirclesUpdated { + public final List selectedCirclesIDs; + public final Member member; + + public FriendCirclesUpdated(List selectedCirclesIDs, Member member) { + this.selectedCirclesIDs = selectedCirclesIDs; + this.member = member; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/FriendshipClickEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/FriendshipClickEvent.java new file mode 100755 index 0000000..daa7fd4 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/FriendshipClickEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by AlirezaF on 7/16/2015. + */ +public class FriendshipClickEvent { + public final int adapterPosition; + + public FriendshipClickEvent(int adapterPosition) { + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/GoNextPhaseUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/GoNextPhaseUIEvent.java new file mode 100755 index 0000000..0ac3e95 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/GoNextPhaseUIEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 12/6/2015. + */ +public class GoNextPhaseUIEvent { + public GoNextPhaseUIEvent(String phase) { + this.phase = phase; + } + + public String phase; +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/GoPreviousPhaseUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/GoPreviousPhaseUIEvent.java new file mode 100755 index 0000000..c3709ab --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/GoPreviousPhaseUIEvent.java @@ -0,0 +1,7 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 12/6/2015. + */ +public class GoPreviousPhaseUIEvent { +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/GoogleLoginSucceedEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/GoogleLoginSucceedEvent.java new file mode 100755 index 0000000..259c85c --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/GoogleLoginSucceedEvent.java @@ -0,0 +1,10 @@ +package com.shaya.poinila.android.presentation.uievent; + +import data.event.LoginSucceedEvent; + +/** + * Created by iran on 6/26/2016. + */ +public class GoogleLoginSucceedEvent extends LoginSucceedEvent { + public boolean firstLoginDoneByGoogle = false; +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/HelpDashboardFragment.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/HelpDashboardFragment.java new file mode 100755 index 0000000..e6e8e66 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/HelpDashboardFragment.java @@ -0,0 +1,9 @@ +package com.shaya.poinila.android.presentation.uievent; + +import data.event.BaseEvent; + +/** + * Created by iran on 5/28/2016. + */ +public class HelpDashboardFragment extends BaseEvent { +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/HelpMyFollowedCollectionListFragment.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/HelpMyFollowedCollectionListFragment.java new file mode 100755 index 0000000..c5b364c --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/HelpMyFollowedCollectionListFragment.java @@ -0,0 +1,10 @@ +package com.shaya.poinila.android.presentation.uievent; + +import data.event.BaseEvent; + +/** + * Created by iran on 5/28/2016. + */ +public class HelpMyFollowedCollectionListFragment extends BaseEvent { + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/HelpMyProfileFragment.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/HelpMyProfileFragment.java new file mode 100755 index 0000000..320412c --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/HelpMyProfileFragment.java @@ -0,0 +1,10 @@ +package com.shaya.poinila.android.presentation.uievent; + + +import data.event.BaseEvent; + +/** + * Created by iran on 5/28/2016. + */ +public class HelpMyProfileFragment extends BaseEvent { +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/ImageClickedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/ImageClickedUIEvent.java new file mode 100755 index 0000000..b4a3da6 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/ImageClickedUIEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by AlirezaF on 7/16/2015. + */ +public class ImageClickedUIEvent { + public final int adapterPosition; + + public ImageClickedUIEvent(int adapterPosition) { + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/ImageSelectedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/ImageSelectedUIEvent.java new file mode 100755 index 0000000..6817e19 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/ImageSelectedUIEvent.java @@ -0,0 +1,20 @@ +package com.shaya.poinila.android.presentation.uievent; + +import android.net.Uri; + +/** + * Created by AlirezaF on 7/17/2015. + */ +public class ImageSelectedUIEvent { + public String absolutePath; + public Uri mediaPath; + + public ImageSelectedUIEvent(String absolutePath, Uri mediaPath) { + this.absolutePath = absolutePath; + this.mediaPath = mediaPath; + } + + public ImageSelectedUIEvent(ImageSelectedUIEvent event){ + this(event.absolutePath, event.mediaPath); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/MainActivityImageSelectedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/MainActivityImageSelectedUIEvent.java new file mode 100755 index 0000000..6618dd3 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/MainActivityImageSelectedUIEvent.java @@ -0,0 +1,10 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-09-22. + */ +public class MainActivityImageSelectedUIEvent extends ImageSelectedUIEvent { + public MainActivityImageSelectedUIEvent(ImageSelectedUIEvent event) { + super(event); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/MemberCircleToggledEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/MemberCircleToggledEvent.java new file mode 100755 index 0000000..092e9e1 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/MemberCircleToggledEvent.java @@ -0,0 +1,10 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-11-08. + */ +public class MemberCircleToggledEvent extends AdapterPositionedEvent{ + public MemberCircleToggledEvent(int adapterPosition) { + super(adapterPosition); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/MemberClickedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/MemberClickedUIEvent.java new file mode 100755 index 0000000..7afcf8d --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/MemberClickedUIEvent.java @@ -0,0 +1,15 @@ +package com.shaya.poinila.android.presentation.uievent; + +import data.event.BaseEvent; +import data.event.IdentifiableEvent; + +/** + * Created by AlirezaF on 7/16/2015. + */ +public class MemberClickedUIEvent extends IdentifiableEvent { + public int adapterPosition; + public MemberClickedUIEvent(int adapterPosition, BaseEvent.ReceiverName receiverTag) { + super(receiverTag); + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/NeutralDialogButtonClickedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/NeutralDialogButtonClickedUIEvent.java new file mode 100755 index 0000000..11d31c1 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/NeutralDialogButtonClickedUIEvent.java @@ -0,0 +1,7 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-08-19. + */ +public class NeutralDialogButtonClickedUIEvent { +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/NewWebsitePostEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/NewWebsitePostEvent.java new file mode 100755 index 0000000..e2e9409 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/NewWebsitePostEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + + +import data.model.SuggestedWebPagePost; + +public class NewWebsitePostEvent { + public SuggestedWebPagePost suggestedPost; + + public NewWebsitePostEvent(SuggestedWebPagePost suggestedPost) { + this.suggestedPost = suggestedPost; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/NotifActorClickedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/NotifActorClickedUIEvent.java new file mode 100755 index 0000000..154c9cc --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/NotifActorClickedUIEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-10-25. + */ +public class NotifActorClickedUIEvent { + public int adapterPosition; + + public NotifActorClickedUIEvent(int adapterPosition) { + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/NotifParticipantClickedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/NotifParticipantClickedUIEvent.java new file mode 100755 index 0000000..e4413ae --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/NotifParticipantClickedUIEvent.java @@ -0,0 +1,17 @@ +package com.shaya.poinila.android.presentation.uievent; + +import data.model.ImageUrls; +import data.model.Participant; + +/** + * Created by iran on 2015-11-02. + */ +public class NotifParticipantClickedUIEvent { + public Participant participant; + public ImageUrls.ImageType participantsType; + + public NotifParticipantClickedUIEvent(Participant participant, ImageUrls.ImageType participantsType) { + this.participant = participant; + this.participantsType = participantsType; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/OnAnswerFriendshipUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/OnAnswerFriendshipUIEvent.java new file mode 100755 index 0000000..0f5b935 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/OnAnswerFriendshipUIEvent.java @@ -0,0 +1,16 @@ +package com.shaya.poinila.android.presentation.uievent; + +import data.model.FriendRequestAnswer; + +/** + * Created by iran on 2015-08-15. + */ +public class OnAnswerFriendshipUIEvent { + private int adapterPosition; + public FriendRequestAnswer accept; + + public OnAnswerFriendshipUIEvent(int adapterPosition, FriendRequestAnswer answer) { + this.adapterPosition = adapterPosition; + this.accept = answer; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/OnFollowUnfollowCollectionUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/OnFollowUnfollowCollectionUIEvent.java new file mode 100755 index 0000000..b471ac0 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/OnFollowUnfollowCollectionUIEvent.java @@ -0,0 +1,20 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-08-06. + */ +public class OnFollowUnfollowCollectionUIEvent { + public int adapterPosition; + public boolean follow; + + public OnFollowUnfollowCollectionUIEvent(int adapterPosition) { + + this.adapterPosition = adapterPosition; + } + + public OnFollowUnfollowCollectionUIEvent(int adapterPosition, boolean follow) { + + this.adapterPosition = adapterPosition; + this.follow = follow; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/OnFrameClickedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/OnFrameClickedUIEvent.java new file mode 100755 index 0000000..6886347 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/OnFrameClickedUIEvent.java @@ -0,0 +1,16 @@ +package com.shaya.poinila.android.presentation.uievent; + + +import data.model.Frame; + +/** + * Created by iran on 2015-08-08. + */ +public class OnFrameClickedUIEvent { + public Frame frame; + + public OnFrameClickedUIEvent(Frame frame) { + + this.frame = frame; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/OnOffSettingToggledUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/OnOffSettingToggledUIEvent.java new file mode 100755 index 0000000..f9be19f --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/OnOffSettingToggledUIEvent.java @@ -0,0 +1,14 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-09-07. + */ +public class OnOffSettingToggledUIEvent { + public int adapterPosition; + public boolean settingOn; + + public OnOffSettingToggledUIEvent(int adapterPosition, boolean settingOn) { + this.adapterPosition = adapterPosition; + this.settingOn = settingOn; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/PermissionEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/PermissionEvent.java new file mode 100755 index 0000000..b877010 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/PermissionEvent.java @@ -0,0 +1,23 @@ +package com.shaya.poinila.android.presentation.uievent; + + +import data.event.BaseEvent; + +/** + * Created by iran on 1/18/2016. + */ +public class PermissionEvent extends BaseEvent { + public String permissionString; + + public PermissionEvent(String permissionString) { + + this.permissionString = permissionString; + } + /*public final boolean granted; + public final int requestCode; + + public PermissionEvent(boolean granted, int requestCode) { + this.granted = granted; + this.requestCode = requestCode; + }*/ +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/PhotoCapturedEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/PhotoCapturedEvent.java new file mode 100755 index 0000000..374d064 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/PhotoCapturedEvent.java @@ -0,0 +1,7 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by AlirezaF on 7/17/2015. + */ +public class PhotoCapturedEvent { +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/PositiveButtonClickedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/PositiveButtonClickedUIEvent.java new file mode 100755 index 0000000..b748773 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/PositiveButtonClickedUIEvent.java @@ -0,0 +1,17 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-07-28. + */ +public class PositiveButtonClickedUIEvent { + private Object data; + + public Object getData() { + return data; + } + + public PositiveButtonClickedUIEvent setData(Object data) { + this.data = data; + return this; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/PostClickedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/PostClickedUIEvent.java new file mode 100755 index 0000000..3c9b594 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/PostClickedUIEvent.java @@ -0,0 +1,17 @@ +package com.shaya.poinila.android.presentation.uievent; + + +import data.event.BaseEvent; +import data.event.IdentifiableEvent; + +/** + * Created by iran on 2015-07-23. + */ +public class PostClickedUIEvent extends IdentifiableEvent { + public int adapterPosition; + + public PostClickedUIEvent(int adapterPosition, BaseEvent.ReceiverName receiverTag) { + super(receiverTag); + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/PostComponentClickedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/PostComponentClickedUIEvent.java new file mode 100755 index 0000000..ec3b1a1 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/PostComponentClickedUIEvent.java @@ -0,0 +1,33 @@ +package com.shaya.poinila.android.presentation.uievent; + + +import java.util.Arrays; +import java.util.List; + +import data.event.BaseEvent; + +/** + * Created by iran on 2015-11-18. + */ +public class PostComponentClickedUIEvent extends BaseEvent { + public Type type; + + public PostComponentClickedUIEvent(Type type){ + this.type = type; + } + + public enum Type{ + Fave, + FaversList, + Comments, + RepostersList, + Repost, + Reference, + Collection, + Poster, + OriginalCollection, + FullImage; + + public static List guestCantPerformActions = Arrays.asList(Fave, Repost); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/PostHeightUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/PostHeightUIEvent.java new file mode 100755 index 0000000..975a614 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/PostHeightUIEvent.java @@ -0,0 +1,14 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-10-14. + */ +public class PostHeightUIEvent { + public final int position; + public final int height; + + public PostHeightUIEvent(int position, int height) { + this.position = position; + this.height = height; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/PostListActivityImageSelectedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/PostListActivityImageSelectedUIEvent.java new file mode 100755 index 0000000..8bbd274 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/PostListActivityImageSelectedUIEvent.java @@ -0,0 +1,10 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-09-22. + */ +public class PostListActivityImageSelectedUIEvent extends ImageSelectedUIEvent { + public PostListActivityImageSelectedUIEvent(ImageSelectedUIEvent event) { + super(event); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/ProfilePicSelectedEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/ProfilePicSelectedEvent.java new file mode 100755 index 0000000..38eecb8 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/ProfilePicSelectedEvent.java @@ -0,0 +1,16 @@ +package com.shaya.poinila.android.presentation.uievent; + +import android.net.Uri; + +/** + * Created by iran on 2015-09-13. + */ +public class ProfilePicSelectedEvent { + public String absolutePath; + public Uri mediaPath; + + public ProfilePicSelectedEvent(String absolutePath, Uri mediaPath) { + this.absolutePath = absolutePath; + this.mediaPath = mediaPath; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/RatePonilaEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/RatePonilaEvent.java new file mode 100755 index 0000000..0b21e5e --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/RatePonilaEvent.java @@ -0,0 +1,10 @@ +package com.shaya.poinila.android.presentation.uievent; + + +import data.event.BaseEvent; + +/** + * Created by iran on 1/20/2016. + */ +public class RatePonilaEvent extends BaseEvent { +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/RemoveItemUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/RemoveItemUIEvent.java new file mode 100755 index 0000000..3998f43 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/RemoveItemUIEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-07-26. + */ +public class RemoveItemUIEvent { + public RemoveItemUIEvent(int adapterPosition) { + this.adapterPosition = adapterPosition; + } + + public int adapterPosition; +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/RemovePostUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/RemovePostUIEvent.java new file mode 100755 index 0000000..a321d9b --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/RemovePostUIEvent.java @@ -0,0 +1,13 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-08-16. + */ +public class RemovePostUIEvent { + public int adapterPosition; + + public RemovePostUIEvent(int adapterPosition) { + + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/RemoveTagEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/RemoveTagEvent.java new file mode 100755 index 0000000..84abb6a --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/RemoveTagEvent.java @@ -0,0 +1,20 @@ +package com.shaya.poinila.android.presentation.uievent; + +import android.view.View; + +/** + * Created by AlirezaF on 7/22/2015. + */ +public class RemoveTagEvent { + public View tagView; + public int adapterPosition; + + public RemoveTagEvent(View tagView) { + this.tagView = tagView; + } + + public RemoveTagEvent(int adapterPosition) { + + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/SelectImageEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/SelectImageEvent.java new file mode 100755 index 0000000..ab4d6f6 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/SelectImageEvent.java @@ -0,0 +1,16 @@ +package com.shaya.poinila.android.presentation.uievent; + +import android.content.Intent; + +/** + * Created by AlirezaF on 7/17/2015. + */ +public class SelectImageEvent { + public final Intent intent; + public int requestCode; + + public SelectImageEvent(Intent selectImageIntent, int requestSelectImage) { + intent = selectImageIntent; + requestCode = requestSelectImage; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/ShowSelectInterestUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/ShowSelectInterestUIEvent.java new file mode 100755 index 0000000..b9751a1 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/ShowSelectInterestUIEvent.java @@ -0,0 +1,7 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-07-12. + */ +public class ShowSelectInterestUIEvent { +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/ShowVerifySnackbarEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/ShowVerifySnackbarEvent.java new file mode 100755 index 0000000..6b51409 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/ShowVerifySnackbarEvent.java @@ -0,0 +1,7 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 7/20/2016. + */ +public class ShowVerifySnackbarEvent { +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/SimpleSettingTextSetEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/SimpleSettingTextSetEvent.java new file mode 100755 index 0000000..0874ab7 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/SimpleSettingTextSetEvent.java @@ -0,0 +1,18 @@ +package com.shaya.poinila.android.presentation.uievent; + +import com.shaya.poinila.android.presentation.view.activity.SettingActivity.SettingType; + +/** + * Created by iran on 2015-07-21. + */ +public class SimpleSettingTextSetEvent { + public SettingType settingType; + public String value; + public int itemPosition; + + public SimpleSettingTextSetEvent(SettingType settingType, String value, int itemPosition) { + this.settingType = settingType; + this.value = value; + this.itemPosition = itemPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/SmsReceivedEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/SmsReceivedEvent.java new file mode 100755 index 0000000..3002f43 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/SmsReceivedEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 12/8/2015. + */ +public class SmsReceivedEvent { + public String str; + + public SmsReceivedEvent(String str) { + this.str = str; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/SuggestionPosts.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/SuggestionPosts.java new file mode 100755 index 0000000..d9c2cb2 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/SuggestionPosts.java @@ -0,0 +1,18 @@ +package com.shaya.poinila.android.presentation.uievent; + +import java.util.List; + +import data.event.BaseEvent; +import data.model.Post; + +/** + * Created by iran on 7/24/2016. + */ +public class SuggestionPosts extends BaseEvent { + public List posts; + + public SuggestionPosts(List posts){ + this.posts = posts; + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/UpdateNewPostDialogEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/UpdateNewPostDialogEvent.java new file mode 100755 index 0000000..5b4335e --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/UpdateNewPostDialogEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +import com.raizlabs.android.dbflow.structure.BaseModel; + +/** + * Created by iran on 8/1/2016. + */ +public class UpdateNewPostDialogEvent extends data.event.ModelEvent { + public UpdateNewPostDialogEvent(BaseModel model) { + super(model); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/UpdateUICommentEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/UpdateUICommentEvent.java new file mode 100755 index 0000000..d72a72c --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/UpdateUICommentEvent.java @@ -0,0 +1,17 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-09-30. + */ +public class UpdateUICommentEvent { + public static final int INCREMENT_COMMENTS = 1; + public static final int DECREMENT_COMMENTS = 2; + public String postId; + + public int action; + + public UpdateUICommentEvent(int action, String postId) { + this.action = action; + this.postId = postId; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/UpdateUiRepostEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/UpdateUiRepostEvent.java new file mode 100755 index 0000000..f5545b9 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/UpdateUiRepostEvent.java @@ -0,0 +1,18 @@ +package com.shaya.poinila.android.presentation.uievent; + +import data.event.BaseEvent; +import data.model.Post; + +/** + * Created by iran on 7/11/2016. + */ +public class UpdateUiRepostEvent extends BaseEvent { + + public boolean isSuccess = true; + public int postId; + + public UpdateUiRepostEvent(int postId, boolean isSuccess){ + this.isSuccess = isSuccess; + this.postId = postId; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/UrlClickedUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/UrlClickedUIEvent.java new file mode 100755 index 0000000..647c7cb --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/UrlClickedUIEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-11-18. + */ +public class UrlClickedUIEvent { + public String url; + + public UrlClickedUIEvent(String Url) { + url = Url; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/ViewCircleMembersUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/ViewCircleMembersUIEvent.java new file mode 100755 index 0000000..ee60915 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/ViewCircleMembersUIEvent.java @@ -0,0 +1,13 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-07-28. + */ +public class ViewCircleMembersUIEvent { + public int adapterPosition; + + public ViewCircleMembersUIEvent(int adapterPosition) { + + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/ViewFrameMembersUIEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/ViewFrameMembersUIEvent.java new file mode 100755 index 0000000..895f55b --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/ViewFrameMembersUIEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by iran on 2015-07-28. + */ +public class ViewFrameMembersUIEvent { + public int adapterPosition; + + public ViewFrameMembersUIEvent(int adapterPosition) { + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/WebpageImagesClickEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/WebpageImagesClickEvent.java new file mode 100755 index 0000000..a92f2fd --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/WebpageImagesClickEvent.java @@ -0,0 +1,12 @@ +package com.shaya.poinila.android.presentation.uievent; + +/** + * Created by AlirezaF on 7/16/2015. + */ +public class WebpageImagesClickEvent { + public final int adapterPosition; + + public WebpageImagesClickEvent(int adapterPosition) { + this.adapterPosition = adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/sync/BaseSyncEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/sync/BaseSyncEvent.java new file mode 100755 index 0000000..f94cc26 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/sync/BaseSyncEvent.java @@ -0,0 +1,7 @@ +package com.shaya.poinila.android.presentation.uievent.sync; + +/** + * Created by iran on 7/11/2016. + */ +public class BaseSyncEvent { +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/uievent/sync/PostActionSyncEvent.java b/src/main/java/com/shaya/poinila/android/presentation/uievent/sync/PostActionSyncEvent.java new file mode 100755 index 0000000..9c994bc --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/uievent/sync/PostActionSyncEvent.java @@ -0,0 +1,14 @@ +package com.shaya.poinila.android.presentation.uievent.sync; + +import data.model.Post; + +/** + * Created by iran on 7/11/2016. + */ +public class PostActionSyncEvent extends BaseSyncEvent { + public Post post; + + public PostActionSyncEvent(Post post){ + this.post = post; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/ImagePickerInterface.java b/src/main/java/com/shaya/poinila/android/presentation/view/ImagePickerInterface.java new file mode 100755 index 0000000..c7e6fb5 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/ImagePickerInterface.java @@ -0,0 +1,18 @@ +package com.shaya.poinila.android.presentation.view; + +import android.net.Uri; + +/** + * Created by iran on 2015-07-21. + */ +public interface ImagePickerInterface { + void onRemoveSelectedImage(); + + void onImageReceived(String absolutePath, Uri mediaPath); + + void onCapturePhoto(); + + void onSelectFromGallery(); + +} + diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/LoaderList.java b/src/main/java/com/shaya/poinila/android/presentation/view/LoaderList.java new file mode 100755 index 0000000..46aa596 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/LoaderList.java @@ -0,0 +1,8 @@ +package com.shaya.poinila.android.presentation.view; + +/** + * Created by iran on 2015-09-15. + */ +public interface LoaderList { + void onLoadMore(); +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/NotificationNumberListener.java b/src/main/java/com/shaya/poinila/android/presentation/view/NotificationNumberListener.java new file mode 100755 index 0000000..b8fd3bf --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/NotificationNumberListener.java @@ -0,0 +1,10 @@ +package com.shaya.poinila.android.presentation.view; + +import java.io.Serializable; + +/** + * Created by iran on 5/15/2016. + */ +public interface NotificationNumberListener extends Serializable { + public void onNotificationNumber(int num); +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/OnHelpShowListener.java b/src/main/java/com/shaya/poinila/android/presentation/view/OnHelpShowListener.java new file mode 100755 index 0000000..9dd3fb7 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/OnHelpShowListener.java @@ -0,0 +1,25 @@ +package com.shaya.poinila.android.presentation.view; + +import android.view.View; + +/** + * Created by iran on 5/28/2016. + */ +public interface OnHelpShowListener { + + public void onHelpShow(); + + public void setSelected(boolean status); + + public boolean isSelected(); + + public void setReady(boolean status); + + public boolean isReady(); + + public void setViewHelpStatus(boolean status); + + public boolean isViewedHelp(); + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/PageSelectedListener.java b/src/main/java/com/shaya/poinila/android/presentation/view/PageSelectedListener.java new file mode 100755 index 0000000..ccb3e79 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/PageSelectedListener.java @@ -0,0 +1,10 @@ +package com.shaya.poinila.android.presentation.view; + +import com.shaya.poinila.android.presentation.view.fragments.BusFragment; + +/** + * Created by iran on 7/4/2016. + */ +public interface PageSelectedListener { + public void onReadyPage(BusFragment fragment, int position); +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/ViewInflater.java b/src/main/java/com/shaya/poinila/android/presentation/view/ViewInflater.java new file mode 100755 index 0000000..2bc576a --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/ViewInflater.java @@ -0,0 +1,139 @@ +package com.shaya.poinila.android.presentation.view; + +import android.content.Context; +import android.support.v7.widget.CardView; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.makeramen.roundedimageview.Corner; +import com.makeramen.roundedimageview.RoundedTransformationBuilder; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.ExploreTagEvent; +import com.shaya.poinila.android.presentation.uievent.RemoveTagEvent; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ResourceUtils; +import com.shaya.poinila.android.util.TimeUtils; +import com.squareup.picasso.Transformation; + +import org.apmem.tools.layouts.FlowLayout; + +import butterknife.ButterKnife; +import data.model.Comment; +import data.model.ImageUrls; +import data.model.Tag; +import manager.DataRepository; + +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; + +/** + * Created by AlirezaF on 7/22/2015. + */ +public class ViewInflater { + public static View inflateRemovableTag(Tag tag, Context context) { + final View tagView = LayoutInflater.from(context).inflate(R.layout.tag_removable, null); + ButterKnife.findById(tagView, R.id.removeButton).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new RemoveTagEvent(tagView)); + } + }); + ((TextView)ButterKnife.findById(tagView, R.id.tag)).setText(tag.name); + return tagView; + } + + public static void addTagToSearchBar(Tag tag, Context context, RelativeLayout rlContainer) { + final View tagView = LayoutInflater.from(context).inflate(R.layout.tag_removable, rlContainer, false); + tagView.setId(rlContainer.getChildCount()); + ButterKnife.findById(tagView, R.id.removeButton).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new RemoveTagEvent(tagView)); + } + }); + ((TextView) ButterKnife.findById(tagView, R.id.tag)).setText(tag.name); + View lastChild = rlContainer.getChildAt(rlContainer.getChildCount() - 1); + + RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT); + lp.addRule(RelativeLayout.LEFT_OF, lastChild.getId()); + lp.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE); + rlContainer.addView(tagView, rlContainer.getChildCount(), lp); + } + + /* public static View inflateNormalTag(Tag tag, Context context) { + TextView tagView = (TextView) LayoutInflater.from(context). + inflate(R.layout.tag_text_view, null); + tagView.setText(tag.name); + return tagView; + }*/ + + public static View inflateNormalTag(String tag, Context context) { + TextView tagView = (TextView) LayoutInflater.from(context). + inflate(R.layout.tag_text_view, null); + tagView.setText(tag); + return tagView; + } + + public static View inflateComment(Comment comment, Context context){ + View commentView = LayoutInflater.from(context).inflate(R.layout.comment, null); + ViewUtils.setImage((ImageView) commentView.findViewById(R.id.image), + comment.commenter.imageUrls, ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.AVATAR); + ((TextView)commentView.findViewById(R.id.name)).setText(comment.commenter.fullName); + ((TextView)commentView.findViewById(R.id.date_created)). + setText(TimeUtils.getTimeString(comment.creationDate, DataRepository.getInstance().getServerTimeDifference())); + ((TextView)commentView.findViewById(R.id.comment_content)). + setText(comment.content); + + return commentView; + } + + public static void addTagToContainer(FlowLayout tagsContainer, Tag tag){//Tag tag) { + final TextView tagView = (TextView) LayoutInflater.from(tagsContainer.getContext()). + inflate(R.layout.tag_text_view, tagsContainer, false); + tagView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new ExploreTagEvent(tagView.getText().toString())); + } + }); + tagView.setText(tag.name);//.name) + ViewUtils.setFont(tagView, tagView.getContext().getString(R.string.default_bold_font_path)); +// ; + tagsContainer.addView(tagView); + } + + public static void addRemovableTagToContainer(final FlowLayout tagsContainer, String tagText) { + final LinearLayout tagView = (LinearLayout) LayoutInflater.from(tagsContainer.getContext()). + inflate(R.layout.tag_removable, tagsContainer, false); + + TextView tag = ButterKnife.findById(tagView, R.id.tag); + tag.setText(tagText);//.name); + tagView.findViewById(R.id.removeButton).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new RemoveTagEvent(tagsContainer.indexOfChild(tagView))); + } + }); + + tagsContainer.addView(tagView); + } + + public static View inflateImageCaption(LinearLayout ll, String name, ImageUrls coverImageUrl) { + Transformation transformation = new RoundedTransformationBuilder() + .cornerRadiusDp(Corner.TOP_LEFT, ResourceUtils.getDimen(R.dimen.corner_lvlhalf)) + .cornerRadiusDp(Corner.TOP_RIGHT, ResourceUtils.getDimen(R.dimen.corner_lvlhalf)) + .oval(false) + .build(); + CardView card = (CardView) LayoutInflater.from(ll.getContext()).inflate(R.layout.image_caption, ll, false); + ViewUtils.setText(((TextView) card.findViewById(R.id.caption)), name); + ViewUtils.setFont(((TextView) card.findViewById(R.id.caption)), ll.getContext().getString(R.string.default_font_path)); + ViewUtils.setImage((ImageView) card.findViewById(R.id.image), coverImageUrl, ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.BIG, transformation); + return card; + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/ViewUtils.java b/src/main/java/com/shaya/poinila/android/presentation/view/ViewUtils.java new file mode 100755 index 0000000..7468bba --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/ViewUtils.java @@ -0,0 +1,460 @@ +package com.shaya.poinila.android.presentation.view; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Color; +import android.graphics.Typeface; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.os.Handler; +import android.os.Looper; +import android.support.annotation.NonNull; +import android.support.annotation.StringRes; +import android.support.design.widget.TextInputLayout; +import android.support.v4.content.ContextCompat; +import android.support.v4.text.BidiFormatter; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.util.Log; +import android.util.Patterns; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.makeramen.roundedimageview.RoundedImageView; +import com.mobsandgeeks.saripaar.ValidationError; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.NotifParticipantClickedUIEvent; +import com.shaya.poinila.android.presentation.view.costom_view.AspectRatioImageView; +import com.shaya.poinila.android.presentation.view.costom_view.SvgMaskedImageView; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.ContextHolder; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.ResourceUtils; +import com.squareup.picasso.Picasso; +import com.squareup.picasso.RequestCreator; +import com.squareup.picasso.Transformation; + +import java.util.Arrays; +import java.util.List; +import java.util.regex.Pattern; + +import butterknife.ButterKnife; +import data.model.Image; +import data.model.ImageUrls; +import data.model.Notification; +import data.model.Participant; +import de.hdodenhof.circleimageview.CircleImageView; +import static com.shaya.poinila.android.util.ResourceUtils.getDimen; +import static com.shaya.poinila.android.util.ResourceUtils.getString; +import static com.shaya.poinila.android.util.ResourceUtils.getStringFormatted; +import static com.shaya.poinila.android.util.StringUtils.persianNumber; + +/** + * checks field for being null avoiding NullPointerException. In case of imagesUrls set placeholder + * also. + */ +public class ViewUtils { + + public static void setText(TextView textView, CharSequence text) { + if (textView != null && text != null) { + /*if (textView.getVisibility() == View.GONE) + textView.setVisibility(View.VISIBLE);*/ + textView.setText(text); + } + /*else if (textView != null) + textView.setVisibility(View.GONE);*/ + } + + public static void setFont(TextView textView, String path){ + Typeface typeface = Typeface.createFromAsset(textView.getContext().getAssets(), path); + textView.setTypeface(typeface); + } + + public static void setText(TextView textView, int number) { + setText(textView, persianNumber(number)); + } + + public static void setImage(ImageView imageView, ImageUrls urls, + ImageUrls.ImageType imageType, ImageUrls.ImageSize imageSize) { + setImage(imageView, urls, imageType, imageSize, null); + } + + public static void setImage(ImageView imageView, ImageUrls urls, + ImageUrls.ImageType imageType, ImageUrls.ImageSize imageSize, @NonNull Transformation transformation) { + if (imageView == null) + return; + Drawable placeHolderDrawable = properPlaceHolder(urls, imageType, imageSize); + Image properImage = null; + if (urls != null && urls.isNotEmpty()) { + switch (imageType) { + case POST: + properImage = urls.properPostImage(imageSize); + if (imageSize != ImageUrls.ImageSize.AVATAR) { // maintain ratio + //imageView.getLayoutParams().height = imageView.getLayoutParams().width * properImage.height / properImage.width; + ((AspectRatioImageView) imageView).setAspectRatio(properImage.height * 1f / properImage.width); + imageView.requestLayout(); + } + break; + case COLLECTION: + properImage = urls.properCollectionImage(imageSize); + break; + case MEMBER: + properImage = urls.properMemberImage(imageSize); + break; + case INTEREST: + properImage = urls.interest; + break; + } + } + handleImage(imageView, properImage, placeHolderDrawable, transformation); + } + + private static Drawable properPlaceHolder(ImageUrls urls, ImageUrls.ImageType imageType, ImageUrls.ImageSize imageSize) { + if (urls != null && !TextUtils.isEmpty(urls.dominantColor)) { + if (!urls.dominantColor.contains("#")) + urls.dominantColor = "#" + urls.dominantColor; + return new ColorDrawable(Color.parseColor(urls.dominantColor)); + } + + int defaultResId = 0; + switch (imageType) { + case POST: + if (imageSize == ImageUrls.ImageSize.AVATAR)// maintain ratio + defaultResId = R.drawable.post_no_image; + break; + case COLLECTION: + defaultResId = R.drawable.collection_no_image; + break; + case MEMBER: + if (imageSize == ImageUrls.ImageSize.BIG) + defaultResId = R.drawable.user_no_image_big; + else if (imageSize == ImageUrls.ImageSize.AVATAR) + defaultResId = R.drawable.user_no_image; + break; + } + return defaultResId == 0 ? null : ContextCompat.getDrawable(ContextHolder.getContext(), defaultResId); + } + + private static void handleImage(ImageView imageView, Image properImage, Drawable placeHolderDrawable, + Transformation transformation) { + if (properImage != null) { + RequestCreator creator = Picasso.with(imageView.getContext()).load(properImage.url); + if (placeHolderDrawable != null) + creator.placeholder(placeHolderDrawable).into(imageView); + if (transformation != null) + creator.transform(transformation); + creator.into(imageView); + } else { + imageView.setImageDrawable(placeHolderDrawable); + } + } + + public static void setNotificationTitle(TextView titleView, Notification notification) { + List participants = notification.participants; + switch (notification.type) { + case FRIENDS_FOLLOWED_COLLECTIONS: + case FRIENDS_LIKED_POSTS: + case FRIENDS_CREATED_COLLECTIONS: + setText(titleView, notification.mainActor.userName); + return; + } + + String Space = " "; + String AND = ResourceUtils.getString(R.string.and); + String OTHER_PEOPLE = ResourceUtils.getString(R.string.other_people); + + StringBuilder title = new StringBuilder(); + title.append("%s"); + if (participants.size() > 1) { + String participantsCount = persianNumber(participants.size() - 1); + title.append(Space).append(AND).append(Space).append(participantsCount).append(Space).append(OTHER_PEOPLE); + } + /*int participantsLimit = ResourceUtils.getInteger(R.integer.participants_show_limit); + if (participants.size() > participantsLimit){ + for (int i = 0; i < participantsLimit; i++) { + title.append(participants.get(i).uniqueName); + if (i != participantsLimit) + } + title.append(AND).append(participants.size() - participantsLimit).append(" ").append(OTHER_PEOPLE); + } + else if (participants.size() == participantsLimit){ + title.append(participants.get(0).uniqueName).append(COMMA). + append(participants.get(1).uniqueName).append(AND).append(participants.get(2).uniqueName); + } + else if (participants.size() == 2){ + title.append(participants.get(0).uniqueName).append(AND).append(participants.get(1).uniqueName); + } + else{ // == 1 + title.append(participants.get(0).uniqueName); + }*/ + /*BidiFormatter.getInstance(true).unicodeWrap(title.toString())*/ + String wrappedUniqueName = BidiFormatter.getInstance(true /* rtlContext */).unicodeWrap(participants.get(0).userName); + String formattedText = String.format(title.toString(), wrappedUniqueName); + setText(titleView, formattedText); + } + + public static void setNotificationImages(ViewGroup imageContainer, + List participants, + ImageUrls.ImageType participantImageType) { + int participantsLimit = ResourceUtils.getInteger(R.integer.participants_show_limit); + Context context = imageContainer.getContext(); + imageContainer.removeAllViews(); + int participantsSize = (int) getDimen(R.dimen.participant_size); + + for (int i = 0; i < participantsLimit && i < participants.size(); i++) { + ImageView imageView = null; + ImageUrls urls = participants.get(i).imageUrls; + switch (participantImageType) { + case MEMBER: + imageView = new CircleImageView(context); + break; + case POST: + imageView = new SvgMaskedImageView(context); + break; + case COLLECTION: + imageView = new RoundedImageView(context); + int corner = ((int) getDimen(R.dimen.corner_lvlhalf)); + ((RoundedImageView) imageView).setCornerRadius(corner); + break; + } + + imageContainer.addView(imageView, 0); + + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( + participantsSize, participantsSize); + params.setMargins(0, 0, ((int) getDimen(R.dimen.margin_lvlhalf)), 0); + imageView.setLayoutParams(params); + imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); + setParticipantClickListener(imageView, participants.get(i), participantImageType); + if (urls == null) { + Picasso.with(imageView.getContext()).load(getDefaultNotifImage(participantImageType)).into(imageView); + } else { + setImage(imageView, urls, participantImageType, ImageUrls.ImageSize.AVATAR); + } + } + if (participants.size() > participantsLimit) { + TextView moreParticipant = new TextView(context); + moreParticipant.setLayoutParams(new ViewGroup.LayoutParams(participantsSize, participantsSize)); + moreParticipant.setGravity(Gravity.CENTER); + + imageContainer.addView(moreParticipant); + setText(moreParticipant, "+" + persianNumber(participants.size() - participantsLimit)); + } + } + + private static void setParticipantClickListener( + ImageView imageView, final Participant participant, final ImageUrls.ImageType participantImageType) { + imageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post( + new NotifParticipantClickedUIEvent(participant, participantImageType)); + } + }); + } + + public static void enableLayoutChildes(ViewGroup viewGroup, boolean enable) { + viewGroup.setEnabled(enable); + for (int i = 0; i < viewGroup.getChildCount(); i++) { + View child = viewGroup.getChildAt(i); + child.setEnabled(enable); + if (child instanceof ViewGroup) + enableLayoutChildes(((ViewGroup) child), enable); + } + } + + public static int getDefaultNotifImage(ImageUrls.ImageType type) { + switch (type) { + case COLLECTION: + return R.drawable.collection_no_image; + case POST: + return R.drawable.post_no_image; + case MEMBER: + return R.drawable.user_no_image; + } + return -1; + } + + public static void removeView(final ViewGroup parentView, final int position) { + new Handler().postAtFrontOfQueue(new Runnable() { + @Override + public void run() { + parentView.removeViewAt(position); //ButterKnife.findById(container, R.actorID.dialog_content) + } + }); + } + + public static void removeView(final ViewGroup parentView, final View removeView) { + new Handler().postAtFrontOfQueue(new Runnable() { + @Override + public void run() { + parentView.removeView(removeView); //ButterKnife.findById(container, R.actorID.dialog_content) + } + }); + } + + + public static boolean validateInputs(EditText[] requiredItems, int[] minLengths, EditText[] limitedItems, int[] maxLengths) { + for (int i = 0; i < requiredItems.length; i++) { + validateInputMinLength(requiredItems[i], minLengths[i]); + } + for (int i = 0; i < limitedItems.length; i++) { + validateInputMaxLength(limitedItems[i], maxLengths[i]); + } + return true; + } + + public static boolean validatePasswordInput(EditText passwordInput){ + return validateInputMinLength(passwordInput, ConstantsUtils.min_length_password); + } + + public static boolean validateInputMinLength(EditText requiredInput, int minLength){ + String text = requiredInput.getText().toString().trim(); + if (TextUtils.isEmpty(text)) { + setInputError(requiredInput, getString(R.string.error_required_field)); + return false; + } else if (text.length() < minLength) { + setInputError(requiredInput, getStringFormatted(R.string.error_min_formatted, minLength)); + return false; + } + return true; + } + + public static boolean validateInputMaxLength(EditText editText, int maxLength) { + String text = editText.getText().toString().trim(); + if (text.length() > maxLength) { + setInputError(editText, getStringFormatted(R.string.error_max_formatted, maxLength)); + return false; + } + return true; + } + + public static boolean validateEdittextsByRegex(EditText[] regexItems, Pattern[] regexPatterns, @StringRes int[] regexErrors) { + for (int i = 0; i < regexItems.length; i++) { + String text = regexItems[i].getText().toString().trim(); + if (!regexPatterns[i].matcher(text).matches()) { + setInputError(regexItems[i], getString(regexErrors[i])); + return false; + } + } + return true; + } + + public static boolean validateEntityName(EditText editText) { + return validateEdittextsByRegex(new EditText[]{editText}, new Pattern[]{ConstantsUtils.entitiesNamePattern}, new int[]{R.string.error_entity_name}); + } + + public static void temporaryError(final EditText editText, String error) { + editText.setError(error); + new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { + @Override + public void run() { + editText.setError(null); + } + }, 2000); + } + + public static void setInputError(final EditText editText, @StringRes int errorResId){ + setInputError(editText, getString(errorResId)); + } + + public static void setInputError(final EditText editText, String error) { + if (editText.getParent() instanceof TextInputLayout) { + final TextInputLayout inputLayout = (TextInputLayout) editText.getParent(); + inputLayout.setErrorEnabled(true); + inputLayout.setError(error); + TextWatcher inputLayoutTextWatcher = null; + final TextWatcher finalInputLayoutTextWatcher = inputLayoutTextWatcher; + inputLayoutTextWatcher = 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) { + inputLayout.setErrorEnabled(false); + inputLayout.setError(null); + editText.removeTextChangedListener(finalInputLayoutTextWatcher); + } + + @Override + public void afterTextChanged(Editable s) { + } + }; + editText.addTextChangedListener(inputLayoutTextWatcher); + } else { + temporaryError(editText, error); + } + } + + public static boolean validateImage(Bitmap cropAvatar, int minDimensionSize) { + if(cropAvatar == null ){ + Logger.toastError(R.string.error_no_image_found); + return false; + } + if (cropAvatar.getWidth() < minDimensionSize || cropAvatar.getHeight() < minDimensionSize) { + Logger.toastError(R.string.error_small_image); + return false; + } + return true; + } + + public static void setViewsVisibilityToVisible(View... views) { + setViewsVisibilityToVisible(Arrays.asList(views)); + } + + public static void setViewsVisibilityToGone(View... views) { + setViewsVisibilityToGone(Arrays.asList(views)); + } + + public static void setViewsVisibilityToVisible(List views) { + ButterKnife.apply(views, VISIBILITY, View.VISIBLE); + } + + public static void setViewsVisibilityToGone(List views) { + ButterKnife.apply(views, VISIBILITY, View.GONE); + } + + static final ButterKnife.Setter VISIBILITY = new ButterKnife.Setter() { + @Override + public void set(View view, Integer value, int index) { + view.setVisibility(value); + } + }; + + public static void setValueAndDisableTextView(TextView textView, String value, boolean disableField) { + textView.setVisibility(View.VISIBLE); + textView.setEnabled(!disableField); + textView.setText(value); + } + + public static void setValueAndDisableInputLayout(TextInputLayout inputLayout, String value, boolean disableField) { + if (disableField) { + inputLayout.setCounterEnabled(false); + inputLayout.setErrorEnabled(false); + inputLayout.setError(null); + } + setValueAndDisableTextView(inputLayout.getEditText(), value, disableField); + } + + public static void handleSaripaarErrors(List errors, Context context) { + for (ValidationError error : errors) { + if (error.getView() instanceof TextView) { + setInputError(((EditText) error.getView()), + error.getCollatedErrorMessage(context)); + } + } + } + + public static boolean validateUrl(EditText urlInput) { + return validateEdittextsByRegex(new EditText[]{urlInput}, + new Pattern[]{Patterns.WEB_URL}, new int[]{R.string.error_invalid_url}); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/AppSettingActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/AppSettingActivity.java new file mode 100755 index 0000000..ea09f9c --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/AppSettingActivity.java @@ -0,0 +1,51 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.annotation.TargetApi; +import android.os.Build; +import android.os.Bundle; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.view.ViewGroup; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.fragments.AppSettingFragment; + +/** + * Created by iran on 2015-11-07. + */ +public class AppSettingActivity extends AppCompatActivity{ + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ViewGroup vp = (ViewGroup) getLayoutInflater().inflate(R.layout.activity_fragment_host, null); + Toolbar toolbar = (Toolbar) getLayoutInflater().inflate(R.layout.toolbar, vp, false); + //toolbar = ButterKnife.findById(vp, R.actorID.toolbar); + vp.addView(toolbar, 0); + setContentView(vp); + + setSupportActionBar(toolbar); + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setHomeButtonEnabled(true); + } + + //forceRTLIfSupported(); + + // Display the fragment as the main content. + getFragmentManager().beginTransaction() + .replace(R.id.content, new AppSettingFragment()) + .commit(); + + } + + /*@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) + private void forceRTLIfSupported() + { + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){ + getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); + } + }*/ +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/BaseActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/BaseActivity.java new file mode 100755 index 0000000..77f0903 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/BaseActivity.java @@ -0,0 +1,258 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.app.Activity; +import android.app.ProgressDialog; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.pm.ActivityInfo; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.support.v4.app.NavUtils; +import android.support.v4.app.TaskStackBuilder; +import android.support.v4.content.LocalBroadcastManager; +import android.support.v7.app.AppCompatActivity; +import android.text.TextUtils; +import android.util.Log; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; + +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.NavigationUtils; +import com.shaya.poinila.android.util.PoinilaPreferences; + +import butterknife.ButterKnife; +import manager.DataRepository; +import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper; + +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static com.shaya.poinila.android.util.ConstantsUtils.INTENT_FILTER_JWT; +import static com.shaya.poinila.android.util.ConstantsUtils.INTENT_FILTER_SERVER_TIME; + +/** + * Created by iran on 2015-06-21. + * + * @author Alireza Farahani + */ +public abstract class BaseActivity extends AppCompatActivity { + + public static final int MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE = 100; + public static final int MY_PERMISSIONS_REQUEST_RECEIVE_SMS = 200; + protected boolean requestOnFirstTime = true; + + protected String titleParameter; + protected ProgressDialog progressDialog; + private View progressView; + private ViewGroup rootView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + handleIntentExtras(); + if(isForcePortrait()) + setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + + // TODO: crash reporting here. + /* Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { + @Override + public void uncaughtException(Thread paramThread, Throwable paramThrowable) { + if (paramThrowable instanceof AuthorizationException) { + + } else { + paramThrowable.printStackTrace(); + } + } + });*/ + setContentView(getActivityView()); + + ButterKnife.bind(this); + + initLoadingDialog(); + + initUI(); + + } + + public boolean isForcePortrait(){ + return true; + } + + private void initLoadingDialog() { + progressDialog = new ProgressDialog(this); + //progressDialog.setTitle(R.string.loading); + progressDialog.setMessage(getString(R.string.please_wait)); + progressDialog.setCanceledOnTouchOutside(false); + progressDialog.setCancelable(false); + } + + protected void showProgressDialog(){ + progressDialog.show(); + } + + protected void dismissProgressDialog(){ + progressDialog.dismiss(); + } + + // Our handler for received Intents. This will be called whenever an Intent + // with an action named "custom-event-name" is broadcasted. + private BroadcastReceiver mJWTReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + // Get extra data included in the Intent + String activityName = BaseActivity.this.getClass().getSimpleName(); + if (activityName.equals(SignUpLoginActivity.class.getSimpleName()) || + activityName.equals(SplashActivity.class.getSimpleName()) || + activityName.equals(HelpActivity.class.getSimpleName())) + return; + + /*PoinilaPreferences.putAuthToken(null); + DataRepository.setUserAsAnonymous(true);*/ + DataRepository.logout(); + PageChanger.goToLoginActivity(BaseActivity.this); + } + }; + + private BroadcastReceiver mServerTimeReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + long timeDifference = intent.getLongExtra(ConstantsUtils.KEY_TIME_DIFFERENCE, (long) (3.5 * 60 * 60 * 1000)); // ba utc 3.5 hour tafavot darim + DataRepository.getInstance().putServerTimeDifference(timeDifference); + } + }; + +/* private boolean requestingIsLocked; + private BroadcastReceiver mRequestFailedReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + requestingIsLocked = false; + } + };*/ + + protected View getActivityView() { + return getLayoutInflater().inflate(getLayoutResourceId(), null); + } + + @Override + protected void onStart() { + // Register to receive messages. + // We are registering an observer (mMessageReceiver) to receive Intents + // with actions named "custom-event-name". + super.onStart(); + BusProvider.getBus().register(this); + LocalBroadcastManager.getInstance(this).registerReceiver(mJWTReceiver, + new IntentFilter(INTENT_FILTER_JWT)); + LocalBroadcastManager.getInstance(this).registerReceiver(mServerTimeReceiver, + new IntentFilter(INTENT_FILTER_SERVER_TIME)); + /*LocalBroadcastManager.getInstance(this).registerReceiver(mRequestFailedReceiver, + new IntentFilter(ConstantsUtils.INTENT_FILTER_REQUEST_FAILED));*/ + } + + @Override + protected void onStop() { + BusProvider.getBus().unregister(this); + LocalBroadcastManager.getInstance(this).unregisterReceiver(mJWTReceiver); + LocalBroadcastManager.getInstance(this).unregisterReceiver(mServerTimeReceiver); + super.onStop(); + } + + protected abstract void initUI(); + + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + + //noinspection SimplifiableIfStatement + switch (id) { + case R.id.action_settings: + return true; + case android.R.id.home: + handleUpNavigation(); + return true; + } + return super.onOptionsItemSelected(item); + } + + protected void handleUpNavigation() { + // I don't know if this trick is flawless or not! + // code from http://stackoverflow.com/a/20631508/1660013 + /*if (!TextUtils.isEmpty(NavUtils.getParentActivityName(this))) { +// NavUtils.navigateUpFromSameTask(this); + Intent upIntent = NavUtils.getParentActivityIntent(this); + if (NavUtils.shouldUpRecreateTask(this, upIntent) + || getIntent().getAction() != null) { // deep linked: force new stack + // create new task + TaskStackBuilder.create(this).addNextIntentWithParentStack(upIntent) + .startActivities(); + } else { + // Stay in same task + NavUtils.navigateUpTo(this, upIntent); + } + } else*/ finish(); + } + + protected abstract void handleToolbar(); + + + protected abstract int getLayoutResourceId(); + + protected Activity getActivity() { + return this; + } + + protected void handleIntentExtras() { + Bundle bundle = getIntent().getExtras(); + if (bundle != null) { + titleParameter = bundle.getString(ConstantsUtils.KEY_PAGE_TITLE_PARAMETER, ""); + } + } + +// protected void showProgressDialog() { +// //ViewUtils.enableLayoutChildes(((ViewGroup) findViewById(R.id.content_container)), false); +// //progressDialog.show(); +// +// //findViewById(android.R.id.content).setVisibility(View.INVISIBLE); +// rootView = (ViewGroup) findViewById(android.R.id.content); +// progressView = getLayoutInflater().inflate(R.layout.progress, rootView, false); +// ViewUtils.enableLayoutChildes(((ViewGroup) findViewById(android.R.id.content)), false); +// rootView.addView(progressView, MATCH_PARENT, MATCH_PARENT); +// +// new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { +// @Override +// public void run() { +// if (rootView.findViewById(R.id.progress_view) != null) +// dismissProgress(false); +// } +// }, ConstantsUtils.CONNECT_TIME_OUT_MILLISECONDS); +// } + + + protected void dismissProgress(boolean successful) { + rootView.removeView(progressView); + if (successful) { + ViewUtils.enableLayoutChildes(((ViewGroup) findViewById(android.R.id.content)), true); + } else { + ViewUtils.enableLayoutChildes(((ViewGroup) findViewById(R.id.toolbar)), true); + } + } + + public void onSuccessfulResponse() { + dismissProgress(true); + } + + + @Override + protected void attachBaseContext(Context newBase) { + super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/ChangePasswordActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/ChangePasswordActivity.java new file mode 100755 index 0000000..5ed9896 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/ChangePasswordActivity.java @@ -0,0 +1,105 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.os.Bundle; +import android.support.design.widget.TextInputEditText; +import android.text.InputType; +import android.view.Menu; +import android.view.MenuItem; +import android.widget.EditText; +import android.widget.ImageView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.ServerResponseEvent; +import uk.co.chrisjenx.calligraphy.CalligraphyConfig; +import uk.co.chrisjenx.calligraphy.CalligraphyUtils; + +public class ChangePasswordActivity extends ToolbarActivity{ + + + @Bind(R.id.first_text_field) + TextInputEditText oldPasswordField; + + @Bind(R.id.second_text_field) + TextInputEditText newPasswordField; + private boolean passwordVisible; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + protected void initUI() { + + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_change_pass, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + if (id == R.id.action_submit_changes){ + if (validate()) { + PoinilaNetService.changePassword(newPasswordField.getText().toString(), oldPasswordField.getText().toString()); + } + }else if (id == R.id.action_toggle_visibility){ + toggleVisibility(item); + } + + //noinspection SimplifiableIfStatement + + return super.onOptionsItemSelected(item); + } + + private void toggleVisibility(MenuItem item) { + passwordVisible ^= true; + for (EditText passwordInput : new EditText[]{oldPasswordField, newPasswordField}) { + int start = passwordInput.getSelectionStart(); + int end = passwordInput.getSelectionEnd(); + passwordInput.setInputType(passwordVisible ? + InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : + InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); + CalligraphyUtils.applyFontToTextView(getActivity(), passwordInput, CalligraphyConfig.get().getFontPath()); + passwordInput.setSelection(start, end); + + item.setIcon(passwordVisible ? + R.drawable.invisible_black_24dp : + R.drawable.visible_black_24dp); + } + } + + private boolean validate() { + return ViewUtils.validatePasswordInput(newPasswordField); + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_change_password; + } + + + @Subscribe public void onServerResponse(ServerResponseEvent event){ + if (!event.succeed){ + switch (event.errorCode){ + case 447: + ViewUtils.setInputError(oldPasswordField, R.string.error_old_password_wrong); + break; + } + } + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/ChromeActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/ChromeActivity.java new file mode 100755 index 0000000..c85e5a6 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/ChromeActivity.java @@ -0,0 +1,161 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.app.Activity; +import android.content.ComponentName; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.provider.Browser; +import android.support.annotation.Nullable; +import android.support.customtabs.CustomTabsCallback; +import android.support.customtabs.CustomTabsClient; +import android.support.customtabs.CustomTabsIntent; +import android.support.customtabs.CustomTabsServiceConnection; +import android.support.customtabs.CustomTabsSession; +import android.text.TextUtils; +import android.util.Log; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.utils.Utils; + +import java.lang.ref.WeakReference; + +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_WEBSITE_URL; + +/** + * Created by iran on 6/19/2016. + */ +public class ChromeActivity extends Activity { + + private CustomTabsSession mCustomTabsSession; + private CustomTabsClient mClient; + private CustomTabsServiceConnection mConnection; + private String mPackageNameToBind; + private static WeakReference sCurrentSession; + + String url; + String referrer; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.chrome_activity); + + url = getIntent().getStringExtra(KEY_WEBSITE_URL); + referrer = getIntent().getStringExtra("referrer"); + + bindCustomTabsService(); + + } + + private void bindCustomTabsService() { + if (mClient != null) return; + mPackageNameToBind = Utils.getBrowserAvailablePackageName(); + if (TextUtils.isEmpty(mPackageNameToBind)) { + finish(); + } + + mConnection = new CustomTabsServiceConnection() { + @Override + public void onCustomTabsServiceConnected(ComponentName componentName, CustomTabsClient customTabsClient) { + mClient = customTabsClient; + + if(mClient != null){ + mClient.warmup(0); + CustomTabsSession session = getSession(); + if (mClient != null && session != null) session.mayLaunchUrl(Uri.parse(url), null, null); + launchUrl(); + } + } + + @Override + public void onServiceDisconnected(ComponentName name) { + finish(); + } + }; + + CustomTabsClient.bindCustomTabsService(ChromeActivity.this, mPackageNameToBind, mConnection); + + + } + + @Override + protected void onDestroy() { + unbindCustomTabsService(); + super.onDestroy(); + } + + private void unbindCustomTabsService() { + if (mConnection == null) return; + unbindService(mConnection); + mClient = null; + mCustomTabsSession = null; + } + + private CustomTabsSession getSession() { + if (mClient == null) { + mCustomTabsSession = null; + } else if (mCustomTabsSession == null) { + mCustomTabsSession = mClient.newSession(new CustomTabsCallback(){ + @Override + public void onNavigationEvent(int navigationEvent, Bundle extras) { + super.onNavigationEvent(navigationEvent, extras); + + switch (navigationEvent){ + case 6: // Go to Parent Activity + ChromeActivity.this.finish(); + break; + } + } + }); + setCurrentSession(mCustomTabsSession); + } + return mCustomTabsSession; + } + + /** + * @return The current {@link CustomTabsSession} object. + */ + public static @Nullable + CustomTabsSession getCurrentSession() { + return sCurrentSession == null ? null : sCurrentSession.get(); + } + + /** + * Sets the current session to the given one. + * @param session The current session. + */ + public static void setCurrentSession(CustomTabsSession session) { + sCurrentSession = new WeakReference(session); + } + + private void launchUrl(){ + CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(getSession()); + builder + .setToolbarColor(getResources().getColor(R.color.poinila_gray)) + .setShowTitle(true); +// prepareMenuItems(builder); +// prepareActionButton(builder); +// prepareBottombar(builder); +// builder.setStartAnimations(this, R.anim.slide_in_right, R.anim.slide_out_left); +// builder.setExitAnimations(this, R.anim.slide_in_left, R.anim.slide_out_right); +// builder.setCloseButtonIcon( +// BitmapFactory.decodeResource(getResources(), R.drawable.ic_arrow_back)); + CustomTabsIntent customTabsIntent = builder.build(); + if(!TextUtils.isEmpty(referrer)) + customTabsIntent.intent.putExtra(Intent.EXTRA_REFERRER,Uri.parse(Intent.URI_ANDROID_APP_SCHEME + "//" + getPackageName())); + customTabsIntent.launchUrl(this, Uri.parse(url)); + } + +// private void prepareMenuItems(CustomTabsIntent.Builder builder) { +// Intent menuIntent = new Intent(); +// menuIntent.setClass(getApplicationContext(), this.getClass()); +// // Optional animation configuration when the user clicks menu items. +// Bundle menuBundle = ActivityOptions.makeCustomAnimation(this, android.R.anim.slide_in_left, +// android.R.anim.slide_out_right).toBundle(); +// PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0, menuIntent, 0, +// menuBundle); +// builder.addMenuItem("Menu entry 1", pi); +// } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/CirclesManagementActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/CirclesManagementActivity.java new file mode 100755 index 0000000..39f2fcf --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/CirclesManagementActivity.java @@ -0,0 +1,138 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.DeleteCircleUIEvent; +import com.shaya.poinila.android.presentation.uievent.EditCircleNameUIEvent; +import com.shaya.poinila.android.presentation.uievent.PositiveButtonClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.SimpleSettingTextSetEvent; +import com.shaya.poinila.android.presentation.uievent.ViewCircleMembersUIEvent; +import com.shaya.poinila.android.presentation.view.dialog.ChangeCircleNameDialog; +import com.shaya.poinila.android.presentation.view.dialog.CircleMembersManagementDialog; +import com.shaya.poinila.android.presentation.view.dialog.NewCircleDialog; +import com.shaya.poinila.android.presentation.view.dialog.PoinilaAlertDialog; +import com.shaya.poinila.android.presentation.viewholder.CircleEditViewHolder; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import data.PoinilaNetService; +import data.event.CircleReceivedEvent; +import data.model.Circle; +import manager.DBFacade; + +public class CirclesManagementActivity extends ToolbarActivity { + + @Bind(R.id.recycler_view) + RecyclerView mRecyclerView; + private RecyclerViewAdapter mAdapter; + private int clickedCirclePosition; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + + + @Override + protected void initUI() { + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setLinearLayoutManager(LinearLayoutManager.VERTICAL). + setAdapter(new RecyclerViewAdapter(getActivity(), R.layout.circle_edit_item) { + @Override + protected CircleEditViewHolder getProperViewHolder(View v, int viewType) { + return new CircleEditViewHolder(v); + } + }).bindViewToAdapter(); + mAdapter = (RecyclerViewAdapter) mRecyclerView.getAdapter(); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_circles_management, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + if (id == R.id.action_add_circle){ + new NewCircleDialog().show(getSupportFragmentManager(), null); + } + //noinspection SimplifiableIfStatement + + return super.onOptionsItemSelected(item); + } + + @Override + protected void onStart() { + super.onStart(); + + mAdapter.resetData(DBFacade.getMyCircles()); + + } + + @Subscribe public void onViewMembersEvent(ViewCircleMembersUIEvent event){ + String circleID = mAdapter.getItem(event.adapterPosition).getId(); + CircleMembersManagementDialog.newInstance(circleID).show(getSupportFragmentManager(), null); + } + + @Subscribe public void onEditCircleNameClick(final EditCircleNameUIEvent event){ + clickedCirclePosition = event.adapterPosition; + ChangeCircleNameDialog.newInstance(mAdapter.getItem(clickedCirclePosition).name).show(getSupportFragmentManager(), null); + } + + @Subscribe public void onCircleChange(SimpleSettingTextSetEvent event){ + switch (event.settingType) { + case CIRCLE_NAME: + Circle editedCircle = mAdapter.getItem(clickedCirclePosition); + editedCircle.name = event.value; + mAdapter.notifyItemChanged(clickedCirclePosition); + PoinilaNetService.updateCircle(editedCircle); + break; + case NEW_CIRCLE: + PoinilaNetService.createCircle(event.value); + break; + } + } + + @Subscribe public void onDeleteCircle(DeleteCircleUIEvent event){ + clickedCirclePosition = event.adapterPosition; + new PoinilaAlertDialog.Builder().setMessage(R.string.confirm_delete_circle). + setPositiveBtnText(R.string.yes).setNegativeBtnText(R.string.no). + build().show(getSupportFragmentManager(), null); + } + + @Subscribe + public void onPositiveDialogButton(PositiveButtonClickedUIEvent event) { + PoinilaNetService.deleteCircle(mAdapter.getItem(clickedCirclePosition)); + mAdapter.removeItem(clickedCirclePosition); + } + + + @Subscribe public void onCircleReceived(CircleReceivedEvent event){ + mAdapter.addItem(event.circle, 0); + } + + @Override + protected void handleToolbar() { + super.handleToolbar(); + setTitle(R.string.title_activity_circles_management); + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_circle_management; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/CollectionListActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/CollectionListActivity.java new file mode 100755 index 0000000..eec12dc --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/CollectionListActivity.java @@ -0,0 +1,29 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.app.Fragment; +import android.os.Bundle; + +import com.shaya.poinila.android.presentation.view.fragments.CollectionListFragment; + +public class CollectionListActivity extends FragmentHostActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + handleIntentExtras(); + super.onCreate(savedInstanceState); + } + + @Override + protected void initUI() {} + + @Override + protected android.support.v4.app.Fragment getHostedFragment() { + return CollectionListFragment.newInstance(mainEntityID, requestID); + } + + @Override + protected boolean withToolbar() { + return true; + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/CommentsListActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/CommentsListActivity.java new file mode 100755 index 0000000..bfb2551 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/CommentsListActivity.java @@ -0,0 +1,246 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.DialogFragment; +import android.support.v7.app.AlertDialog; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.View; +import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; +import android.widget.ImageButton; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.CommentLongClickUIEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.RemoveItemUIEvent; +import com.shaya.poinila.android.presentation.uievent.UpdateUICommentEvent; +import com.shaya.poinila.android.presentation.viewholder.BaseViewHolder; +import com.shaya.poinila.android.presentation.viewholder.CommentViewHolder; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.Logger; +import com.squareup.otto.Subscribe; +import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.CommentReceivedEvent; +import data.event.CommentsReceivedEvent; +import data.model.Comment; +import data.model.Loading; +import manager.DBFacade; +import manager.DataRepository; + +import static com.shaya.poinila.android.presentation.uievent.UpdateUICommentEvent.DECREMENT_COMMENTS; +import static com.shaya.poinila.android.presentation.uievent.UpdateUICommentEvent.INCREMENT_COMMENTS; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.presentation.view.ViewUtils.validateInputs; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ITEM_COUNT; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_POST_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.max_length_comment; +import static com.shaya.poinila.android.util.ConstantsUtils.min_length_comment; + +// TODO: change to fragment host activity +public class CommentsListActivity extends ToolbarActivity { + + @Bind(R.id.recycler_view) + RecyclerView mRecyclerListView; + + @Bind(R.id.item_count) + TextView mItemCountView; + + @Bind(R.id.comment_field) + EditText commentInputView; + + @Bind(R.id.send) ImageButton sendCommentBtn; + + private String postID; + private String bookmark; + private int itemCount; + + protected boolean hasLoading = false; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + //if (savedInstanceState == null) { + postID = getIntent().getStringExtra(KEY_POST_ID); + /*}else{ + postID = savedInstanceState.getString(KEY_POST_ID); + }*/ + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + outState.putString(KEY_POST_ID, postID); + super.onSaveInstanceState(outState); + } + + + @Subscribe public void onCommentsReceived(CommentsReceivedEvent event){ + getRecyclerViewAdapter().addItems(event.data); + + bookmark = event.bookmark; + requestOnFirstTime = false; + } + + public void setLoading(Loading loading){ + hasLoading = true; + getRecyclerViewAdapter().setLoading(loading); + } + + public void removeLoading(){ + if(hasLoading) { + hasLoading = false; + getRecyclerViewAdapter().removeLoading(); + } + } + + @Override + protected void onStart() { + super.onStart(); + + if(requestOnFirstTime){ + DataRepository.getInstance().getPostComments(postID, bookmark); + } + } + + @Override + protected void initUI() { + updateCountView(itemCount); + mRecyclerListView = new RecyclerViewProvider(mRecyclerListView). + setLinearLayoutManager(LinearLayoutManager.VERTICAL). + setAdapter(new RecyclerViewAdapter(getActivity(), R.layout.comment_large) { + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + + if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + return new BaseViewHolder.EmptyViewHolder(v); + } + + return new CommentViewHolder(v); + } + }).bindViewToAdapter(); + mRecyclerListView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(getActivity()) + .marginResId(R.dimen.margin_lvl1) + .build()); + commentInputView.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) { + sendCommentBtn.setEnabled(!s.toString().trim().isEmpty()); + } + }); + } + + @OnClick(R.id.send) public void sendComment(){ + if (DataRepository.isUserAnonymous()){ + Logger.toastError(R.string.error_guest_action); + return; + } + + EditText[] commentEditTextArr = new EditText[]{commentInputView}; + if (validateInputs(commentEditTextArr, new int[min_length_comment], commentEditTextArr, new int[]{max_length_comment})) { + PoinilaNetService.commentOnPost(postID, commentInputView.getText().toString()); + commentInputView.setText(""); + InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(commentInputView.getWindowToken(), 0); + } + } + + @Subscribe public void onCommentSucceeded(CommentReceivedEvent event){ +// Log.i(getClass().getName(), "commenter = " + DBFacade.getCachedMyInfo()); + event.comment.commenter = DBFacade.getCachedMyInfo(); + getRecyclerViewAdapter().addItem(event.comment); + updateCountView(++itemCount); + BusProvider.getBus().post(new UpdateUICommentEvent(INCREMENT_COMMENTS, postID)); + BusProvider.getSyncUIBus().post(new UpdateUICommentEvent(INCREMENT_COMMENTS, postID)); + } + + @Subscribe public void onCommentLongClick(final CommentLongClickUIEvent event){ + CommentAction.newInstance(event).show(getSupportFragmentManager(), null); + } + + @Subscribe public void onDeleteComment(RemoveItemUIEvent event){ + PoinilaNetService.deleteComment(((Comment)getRecyclerViewAdapter().getItem(event.adapterPosition)).getId()); + getRecyclerViewAdapter().removeItem(event.adapterPosition); + updateCountView(--itemCount); + BusProvider.getBus().post(new UpdateUICommentEvent(DECREMENT_COMMENTS, postID)); + BusProvider.getSyncUIBus().post(new UpdateUICommentEvent(DECREMENT_COMMENTS, postID)); + + } + + @Subscribe public void onGoingToProfile(MemberClickedUIEvent event){ + PageChanger.goToProfile(getActivity(), + ((Comment)getRecyclerViewAdapter().getItem(event.adapterPosition)).commenter); + } + + + @Override + protected void handleToolbar() { + super.handleToolbar(); + setTitle(R.string.title_activity_comments_list); + } + + @Override + protected void handleIntentExtras() { + itemCount = getIntent().getIntExtra(KEY_ITEM_COUNT, 0); + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_comments; + } + + public RecyclerViewAdapter getRecyclerViewAdapter() { + return ((RecyclerViewAdapter) mRecyclerListView.getAdapter()); + } + + private void updateCountView(int itemCount) { + setText(mItemCountView, getString(R.string.comments_formatted, itemCount)); + } + + + + public static class CommentAction extends DialogFragment{ + + CommentLongClickUIEvent event; + + public static CommentAction newInstance(CommentLongClickUIEvent event){ + CommentAction fragment = new CommentAction(); + fragment.event = event; + + return fragment; + } + + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setItems(getActivity().getResources().getStringArray(R.array.comment_options), + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + // The 'which' argument contains the index position + // of the selected item + BusProvider.getBus().post(new RemoveItemUIEvent(event.adapterPosition)); + } + }); + return builder.create(); + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/CropImageActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/CropImageActivity.java new file mode 100755 index 0000000..8ab80be --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/CropImageActivity.java @@ -0,0 +1,103 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.graphics.Bitmap; +import android.net.Uri; +import android.support.v7.widget.Toolbar; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; + +import com.isseiaoki.simplecropview.CropImageView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.costom_view.GalleryCameraImagePickerView; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.ImageUtils; +import com.shaya.poinila.android.util.Logger; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; + +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_IMAGE_ADDRESS; +import static com.shaya.poinila.android.util.ConstantsUtils.PROFILE_PIC_MIN_DIMENSION; + +public class CropImageActivity extends ToolbarActivity { + + @Bind(R.id.crop_image_view) + GalleryCameraImagePickerView pickerView; + + @Bind(R.id.submit) Button submitBtn; + @Bind(R.id.cancel) Button cancelBtn; + + + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_crop_image, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + if (id == R.id.doneButton){ + if (pickerView.showMode == GalleryCameraImagePickerView.ShowMode.Cropping){ + item.setIcon(R.drawable.crop_24dp); + pickerView.submitCrop(); + cancelBtn.setVisibility(View.VISIBLE); + submitBtn.setVisibility(View.VISIBLE); + }else if (pickerView.showMode == GalleryCameraImagePickerView.ShowMode.Showing){ + item.setIcon(R.drawable.done_flamingo_24dp); + pickerView.goToCropMode(); + cancelBtn.setVisibility(View.GONE); + submitBtn.setVisibility(View.GONE); + } + return true; + } + return super.onOptionsItemSelected(item); + } + + @OnClick(R.id.submit) public void onSubmit(){ + // TODO Refactoring: get REQUEST_ID from intent extras or pass the cropped bitmap and let + // the activity starter pager handle the case. + Bitmap cropAvatar = pickerView.getImage(); + if (ViewUtils.validateImage(cropAvatar, PROFILE_PIC_MIN_DIMENSION)) { + PoinilaNetService.uploadProfilePicture(cropAvatar); + onCancel(); + } + } + + @OnClick(R.id.cancel) public void onCancel(){ + finish(); + } + + @Override + protected void initUI() { + pickerView.policy = GalleryCameraImagePickerView.Policy.CropFullScreen; + pickerView.setImage(getIntent().getStringExtra(KEY_IMAGE_ADDRESS)); + pickerView.goToCropMode(); + } + + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_crop_image; + } + + @Override + protected View getActivityView() { + ViewGroup vp = (ViewGroup) getLayoutInflater().inflate(getLayoutResourceId(), null); + toolbar = (Toolbar) getLayoutInflater().inflate(R.layout.toolbar_black, vp, false); + handleToolbar(); + vp.addView(toolbar, 0); + return vp; + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/EditInterestsActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/EditInterestsActivity.java new file mode 100755 index 0000000..8a569fe --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/EditInterestsActivity.java @@ -0,0 +1,30 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.app.Fragment; +import android.os.Bundle; +import android.support.v4.app.FragmentManager; + +import com.shaya.poinila.android.presentation.view.fragments.EditInterestsFragment; +public class EditInterestsActivity extends FragmentHostActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + protected android.support.v4.app.Fragment getHostedFragment() { + return EditInterestsFragment.newInstance(mainEntityID); + } + + @Override + protected boolean withToolbar() { + return true; + } + + @Override + protected void initUI() { + + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/ExploreActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/ExploreActivity.java new file mode 100755 index 0000000..d00fd54 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/ExploreActivity.java @@ -0,0 +1,16 @@ +package com.shaya.poinila.android.presentation.view.activity; + + + +import android.support.v4.app.Fragment; + +import com.shaya.poinila.android.presentation.view.fragments.PostListFragment; +import com.shaya.poinila.android.util.ConstantsUtils; + +public class ExploreActivity extends FragmentHostActivity{ + + @Override + protected Fragment getHostedFragment() { + return PostListFragment.newInstance(mainEntityID, ConstantsUtils.REQUEST_EXPLORE); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/FragmentHostActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/FragmentHostActivity.java new file mode 100755 index 0000000..7569e72 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/FragmentHostActivity.java @@ -0,0 +1,144 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.app.Fragment; +import android.os.Bundle; +import android.support.v7.app.ActionBar; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.ConstantsUtils; + +/** + * Created by iran on 2015-08-09. + */ +public abstract class FragmentHostActivity extends BaseActivity { + protected int requestID; + protected String mainEntityID; + protected String secondEntityID; + + public Toolbar getToolbar() { + return toolbar; + } + + protected Toolbar toolbar; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + handleIntentExtras(); + + /*if (getFragmentManager().findFragmentById(R.id.content) == null){ + addFragment(DataRepository.getInstance().getTempModel(BaseFragment.class), false); + }*/ + + getSupportFragmentManager().beginTransaction().add(R.id.content, + getHostedFragment(), getHostedFragmentTag()).commit(); + + } + + protected abstract android.support.v4.app.Fragment getHostedFragment(); + + private String getHostedFragmentTag() { + return null; + } + + /** + * Called in on create hook method. So beware of some conditions like constructing fragments + * after super.onCreate. in those conditions fragment doesn't received valid parameters. + * @return + */ + + protected boolean withToolbar(){ + return true; + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_fragment_host; + } + + @Override + protected View getActivityView() { + ViewGroup vp = (ViewGroup) getLayoutInflater().inflate(getLayoutResourceId(), null); + if (withToolbar()){ + toolbar = (Toolbar) getLayoutInflater().inflate(R.layout.toolbar, vp, false); + //toolbar = ButterKnife.findById(vp, R.actorID.toolbar); + vp.addView(toolbar, 0); + handleToolbar(); + } + return vp; + } + + @Override + protected void initUI() { + + } + + @Override + protected void handleToolbar() { + //Toolbar toolbar = ButterKnife.findById(this, R.actorID.toolbar); + setSupportActionBar(toolbar); + + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null){ + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setHomeButtonEnabled(true); + + // TODO: corresponding fragments should handle this. They must generate activity title. + switch (requestID){ + /*----collections-----*/ + case ConstantsUtils.REQUEST_POST_REPOSTING_COLLECTIONS: + setTitle(R.string.title_activity_reposts_list); + break; + case ConstantsUtils.REQUEST_MEMBER_COLLECTIONS: + setTitle(R.string.title_activity_member_collections); + break; + case ConstantsUtils.REQUEST_MEMBER_FOLLOWED_COLLECTIONS: + setTitle(R.string.title_activity_member_followed_collections); + break; + + /*----members-----*/ + case ConstantsUtils.REQUEST_MEMBER_FRIENDS: + setTitle(R.string.title_activity_member_friends); + break; + case ConstantsUtils.REQUEST_POST_LIKERS: + setTitle(R.string.title_activity_post_likers); + break; + case ConstantsUtils.REQUEST_MEMBER_FOLLOWERS: + setTitle(R.string.title_activity_member_followers); + break; + + /*-----Posts----*/ + case ConstantsUtils.REQUEST_MEMBER_FAVED_POSTS: + setTitle(R.string.title_activity_member_faved_posts); + break; + case ConstantsUtils.REQUEST_MEMBER_POSTS: + setTitle(R.string.title_activity_member_posts); + break; + } + } + } + + public void handleIntentExtras(){ + Bundle b = getIntent().getExtras(); + if (b != null) { + requestID = b.getInt(ConstantsUtils.KEY_REQUEST_ID, -1); + mainEntityID = b.getString(ConstantsUtils.KEY_ENTITY); + secondEntityID = b.getString(ConstantsUtils.KEY_SECOND_ENTITY_ID); + titleParameter = b.getString(ConstantsUtils.KEY_PAGE_TITLE_PARAMETER, ""); + } + } + +/* public void addFragment(BaseFragment fragment, boolean addToBackStack){ + @SuppressLint("CommitTransaction") // committed few lines below + FragmentTransaction ft = getSupportFragmentManager().beginTransaction().replace(R.id.content, + fragment, fragment.getDefaultTag()); + if (addToBackStack) ft.addToBackStack(fragment.getDefaultTag()); + ft.commit(); + }*/ +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/FramesManagementActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/FramesManagementActivity.java new file mode 100755 index 0000000..ff07872 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/FramesManagementActivity.java @@ -0,0 +1,136 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.DeleteFrameUIEvent; +import com.shaya.poinila.android.presentation.uievent.EditFrameNameUIEvent; +import com.shaya.poinila.android.presentation.uievent.PositiveButtonClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.SimpleSettingTextSetEvent; +import com.shaya.poinila.android.presentation.uievent.ViewFrameMembersUIEvent; +import com.shaya.poinila.android.presentation.view.dialog.ChangeFrameNameDialog; +import com.shaya.poinila.android.presentation.view.dialog.FrameCollectionsManagementDialog; +import com.shaya.poinila.android.presentation.view.dialog.NewFrameDialog; +import com.shaya.poinila.android.presentation.view.dialog.PoinilaAlertDialog; +import com.shaya.poinila.android.presentation.viewholder.FrameEditViewHolder; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import data.PoinilaNetService; +import data.event.FrameReceivedEvent; +import data.model.Frame; +import manager.DBFacade; + +public class FramesManagementActivity extends ToolbarActivity { + + @Bind(R.id.recycler_view) + RecyclerView mRecyclerView; + private RecyclerViewAdapter mAdapter; + private int clickedFramePosition; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + protected void initUI() { + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setLinearLayoutManager(LinearLayoutManager.VERTICAL). + setAdapter(new RecyclerViewAdapter(getActivity(), R.layout.circle_edit_item) { + @Override + protected FrameEditViewHolder getProperViewHolder(View v, int viewType) { + return new FrameEditViewHolder(v); + } + }).bindViewToAdapter(); + mAdapter = (RecyclerViewAdapter)mRecyclerView.getAdapter(); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_frame_management, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + if (id == R.id.action_add_circle){ + new NewFrameDialog().show(getSupportFragmentManager(), null); + } + //noinspection SimplifiableIfStatement + + return super.onOptionsItemSelected(item); + } + + @Override + protected void onStart() { + super.onStart(); + + mAdapter.resetData(DBFacade.getMyFrames()); + } + + @Subscribe public void onViewCollectionsEvent(ViewFrameMembersUIEvent event){ + String frameID = mAdapter.getItem(event.adapterPosition).getId(); + FrameCollectionsManagementDialog.newInstance(frameID).show(getSupportFragmentManager(), null);//ConstantsUtils.TAG_FRAME_MEMBERS_MANAGEMENT); + } + + + @Subscribe public void onEditFrameNameClick(final EditFrameNameUIEvent event){ + clickedFramePosition = event.adapterPosition; + ChangeFrameNameDialog.newInstance(mAdapter.getItem(clickedFramePosition).name).show(getSupportFragmentManager(), null); + } + + @Subscribe public void onDialogPositiveBtn(SimpleSettingTextSetEvent event){ + switch (event.settingType) { + case FRAME_NAME: + Frame editedFrame = mAdapter.getItem(clickedFramePosition); + editedFrame.name = event.value; + mAdapter.notifyItemChanged(clickedFramePosition); + // TODO: ghaedatan tu response server bayad save she! + PoinilaNetService.updateFrame(editedFrame); + break; + case NEW_FRAME: + PoinilaNetService.createFrame(event.value); + break; + } + } + + @Subscribe public void onDeleteFrame(DeleteFrameUIEvent event){ + clickedFramePosition = event.adapterPosition; + new PoinilaAlertDialog.Builder().setMessage(R.string.confirm_delete_frame). + setPositiveBtnText(getString(R.string.yes)).setNegativeBtnText(getString(R.string.no)). ///*setBody(new DeleteFrameDialog(mAdapter.getItem(event.adapterPosition))).build().*/ + build().show(getSupportFragmentManager(), null); + } + + @Subscribe + public void onPositiveDialogButtonClick(PositiveButtonClickedUIEvent event) { + PoinilaNetService.deleteFrame(mAdapter.getItem(clickedFramePosition)); + mAdapter.removeItem(clickedFramePosition); + } + + @Subscribe public void onFrameReceived(FrameReceivedEvent event){ + mAdapter.addItem(event.frame, 0); + } + + @Override + protected void handleToolbar() { + super.handleToolbar(); + setTitle(R.string.title_activity_frames_management); + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_circle_management; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/FullImageActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/FullImageActivity.java new file mode 100755 index 0000000..8956b10 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/FullImageActivity.java @@ -0,0 +1,51 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.costom_view.TouchImageView; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.squareup.picasso.Picasso; + +import butterknife.Bind; + +public class FullImageActivity extends ToolbarActivity { + + @Bind(R.id.image_view) + TouchImageView imageView; + + private String imageUrl; + + @Override + protected void initUI() { + } + + @Override + protected void onStart() { + super.onStart(); + + Picasso.with(this).load(imageUrl).into(imageView); + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_full_image; + } + + @Override + protected void handleIntentExtras() { + imageUrl = getIntent().getStringExtra(ConstantsUtils.KEY_CONTENT_URI); + } + + @Override + protected View getActivityView() { + ViewGroup vp = (ViewGroup) getLayoutInflater().inflate(getLayoutResourceId(), null); + toolbar = (Toolbar) getLayoutInflater().inflate(R.layout.toolbar_black, vp, false); + handleToolbar(); + vp.addView(toolbar, 0); + return vp; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/HelpActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/HelpActivity.java new file mode 100755 index 0000000..995e4fe --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/HelpActivity.java @@ -0,0 +1,200 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.os.Bundle; +import android.support.annotation.ColorRes; +import android.support.annotation.DrawableRes; +import android.support.annotation.StringRes; +import android.support.v4.content.ContextCompat; +import android.support.v4.view.ViewPager; +import android.view.View; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.view.fragments.BaseFragment; +import com.shaya.poinila.android.util.DeviceInfoUtils; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.squareup.picasso.Picasso; + +import java.util.HashMap; + +import butterknife.Bind; +import butterknife.OnClick; +import me.relex.circleindicator.CircleIndicator; + +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_STARTED_FROM_SETTING; + +public class HelpActivity extends BaseActivity implements ViewPager.OnPageChangeListener { + @Bind(R.id.view_pager) + ViewPager mViewPager; + @Bind(R.id.indicator) + CircleIndicator mIndicator; + @Bind(R.id.help_nextSlide) + ImageButton mNextSlideBtn; + HelpAdapter mPagerAdapter; + private boolean startedFromSetting; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + protected void initUI() { + mPagerAdapter = new HelpAdapter(getSupportFragmentManager()); + mViewPager.setAdapter(mPagerAdapter); + mIndicator.setViewPager(mViewPager); + mViewPager.addOnPageChangeListener(this); + PoinilaPreferences.setSeenHelp(false); + } + + @Override + protected void handleToolbar() { + } + + @Override + protected void handleIntentExtras() { + startedFromSetting = getIntent().getBooleanExtra(KEY_STARTED_FROM_SETTING, false); + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_help; + } + + @OnClick(R.id.help_nextSlide) + public void onNextSlide() { + if (mViewPager.getCurrentItem() != mPagerAdapter.getCount() - 1) { + mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1, true); + } else if (startedFromSetting) { + finish(); + } else { + PoinilaPreferences.setSeenHelp(true); + PageChanger.goToLoginActivity(getActivity()); + } + } + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + mNextSlideBtn.setImageResource(position == HelpAdapter.POS_ADD_CONTENT + ? R.drawable.done_white_48dp : R.drawable.arrow_right_white_48dp); + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + + + private class HelpAdapter extends android.support.v4.app.FragmentPagerAdapter { + public static final int ITEM_COUNT = 7; + public static final int POS_INTRO = 0; + public static final int POS_DASHBOARD = 1; + public static final int POS_COLLECTIONS = 2; + public static final int POS_SEARCH = 3; + public static final int POS_NOTIFICATIONS = 4; + public static final int POS_PROFILE = 5; + public static final int POS_ADD_CONTENT = 6; + + public HelpAdapter(android.support.v4.app.FragmentManager fm) { + super(fm); + } + + @Override + public android.support.v4.app.Fragment getItem(int position) { + return HelpFragment.newInstance(position); + } + + @Override + public int getCount() { + return ITEM_COUNT; + } + } + + public static class HelpFragment extends BaseFragment { + @Bind(R.id.root_view) + View mRootView; + @Bind(R.id.image_view) + ImageView mImageView; + @Bind(R.id.text_view) + TextView mTextView; + + private static final String ARG_POSITION = "position"; + + private int mPosition; + private HashMap mStatesMap; + + public static HelpFragment newInstance(int position) { + HelpFragment fragment = new HelpFragment(); + Bundle args = new Bundle(); + args.putInt(ARG_POSITION, position); + fragment.setArguments(args); + return fragment; + } + + public HelpFragment() { + + } + + @Override + public int getLayoutID() { + return R.layout.fragment_help; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mPosition = getArguments().getInt(ARG_POSITION); + } + mStatesMap = initStateMap(); + } + + private HashMap initStateMap() { + HashMap map = new HashMap<>(); + map.put(HelpAdapter.POS_INTRO, new State(R.color.help_intro_color, + R.drawable.splash_background, R.string.help_intro)); + map.put(HelpAdapter.POS_DASHBOARD, new State(R.color.help_dashboard_color, + R.drawable.help_dashboard, R.string.help_dashboard)); + map.put(HelpAdapter.POS_COLLECTIONS, new State(R.color.help_collections_color, + R.drawable.help_collections, R.string.help_collection)); + map.put(HelpAdapter.POS_SEARCH, new State(R.color.help_search_color, + R.drawable.help_search, R.string.help_search)); + map.put(HelpAdapter.POS_NOTIFICATIONS, new State(R.color.help_notifications_color, + R.drawable.help_notifications, R.string.help_notification)); + map.put(HelpAdapter.POS_PROFILE, new State(R.color.help_profile_color, + R.drawable.help_profile, R.string.help_profile)); + map.put(HelpAdapter.POS_ADD_CONTENT, new State(R.color.help_profile_color, + R.drawable.help_add_content, R.string.help_add_content)); + return map; + } + + @Override + protected void initUI() { + mRootView.setBackgroundColor(ContextCompat.getColor(getActivity(), mStatesMap.get(mPosition).mColor)); + Picasso.with(getActivity()).load(mStatesMap.get(mPosition).mImage).into(mImageView); + ViewUtils.setText(mTextView, getString(mStatesMap.get(mPosition).mText)); + } + + private static class State { + public int mText; + public int mColor; + public int mImage; + + public State(@ColorRes int color, @DrawableRes int image, @StringRes int text) { + this.mColor = color; + this.mImage = image; + this.mText = text; + } + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/InvitationNotifListActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/InvitationNotifListActivity.java new file mode 100755 index 0000000..ee6378c --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/InvitationNotifListActivity.java @@ -0,0 +1,31 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.app.Fragment; +import android.os.Bundle; + +import com.shaya.poinila.android.presentation.view.fragments.InvitationNotifListFragment; + +public class InvitationNotifListActivity extends FragmentHostActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + protected void initUI() { + + } + + @Override + protected android.support.v4.app.Fragment getHostedFragment() { + return InvitationNotifListFragment.newInstance(); + } + + @Override + protected boolean withToolbar() { + return true; + } + + //TODO accept all option! +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/MainActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/MainActivity.java new file mode 100755 index 0000000..c0af4d7 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/MainActivity.java @@ -0,0 +1,366 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.AsyncTask; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.preference.PreferenceManager; +import android.support.design.widget.TabLayout; +import android.support.v4.view.ViewPager; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.crashlytics.android.Crashlytics; +import com.shaya.poinila.android.presentation.BuildConfig; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.HelpMyFollowedCollectionListFragment; +import com.shaya.poinila.android.presentation.uievent.HelpMyProfileFragment; +import com.shaya.poinila.android.presentation.uievent.ShowVerifySnackbarEvent; +import com.shaya.poinila.android.presentation.view.NotificationNumberListener; +import com.shaya.poinila.android.presentation.view.PageSelectedListener; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.view.fragments.AnonymousInfoFragment; +import com.shaya.poinila.android.presentation.view.fragments.BaseFragment; +import com.shaya.poinila.android.presentation.view.fragments.BusFragment; +import com.shaya.poinila.android.presentation.view.fragments.DashboardFragment; +import com.shaya.poinila.android.presentation.view.fragments.MyFollowedCollectionsFragment; +import com.shaya.poinila.android.presentation.view.fragments.MyProfileFragment; +import com.shaya.poinila.android.presentation.view.fragments.NotificationFragment; +import com.shaya.poinila.android.presentation.view.fragments.SearchFragment; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConnectionUitls; +import com.shaya.poinila.android.util.DeviceInfoUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.utils.PonilaAccountManager; +import com.shaya.poinila.android.utils.PonilaSnackbarManager; +import com.squareup.otto.Subscribe; +import com.tapstream.sdk.Config; +import com.tapstream.sdk.Tapstream; + +import java.util.Arrays; +import java.util.Calendar; + +import butterknife.Bind; +import data.event.MyInfoReceivedEvent; +import data.event.SystemPreferencesReceivedEvent; +import data.model.Member; +import manager.DBFacade; +import manager.DataRepository; + +import static com.shaya.poinila.android.util.StringUtils.isInteger; + +// testing git +public class MainActivity extends BaseActivity implements + NotificationNumberListener, ViewPager.OnPageChangeListener { + + private static final long DELAY_HIDE_KEYBOARD = 100; + private static final String TAG_HOME = "home page"; + private long start; + private TextView notifNumView; + private RelativeLayout notifTabView; + private SimpleFragmentPagerAdapter mAdapter; + private boolean backPressed = false; + + + + @Override + protected void onCreate(Bundle savedInstanceState) { + + if (BuildConfig.DEBUG) + Logger.toast("debug mode");//"***************DEBUG MODE!>*********"); + + if (savedInstanceState == null) + initRatingPrompt(); + + handleDeepLink(getIntent()); + + super.onCreate(savedInstanceState); + PreferenceManager.setDefaultValues(this, R.xml.preferences, false); + + setupTab(); + + if (!ConnectionUitls.isNetworkOnline()) + Logger.toast(R.string.warning_connect_to_network); + + + Config config = new Config("ponila", "_aOzJdJ9SMGNYGo08LxytA"); + Tapstream.create(getApplication(), config); + } + + /** + * Fabric(Crashlytics): Log User Info + */ + + + private void initRatingPrompt() { + PoinilaPreferences.updateOpenApplicationCount(); + PoinilaPreferences.setFirstLoginDateTimeIfNotSet(Calendar.getInstance()); + DataRepository.calculateIsTimeToAskAboutRating(); + } + + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + handleDeepLink(intent); + } + + private void handleDeepLink(Intent intent) { + if (intent == null || intent.getData() == null) + return; + + Member cachedInfo = DBFacade.getCachedMyInfo(); + DataRepository.setUserAsAnonymous(cachedInfo == null || cachedInfo.isAnonymous); + + Uri shareUri = intent.getData(); + String mainEntityId, secondEntityId; + if (shareUri != null + && shareUri.getPathSegments() != null + && !shareUri.getPathSegments().isEmpty()) { + if(Arrays.asList("resetpassword", "register").contains(shareUri.getPathSegments().get(0))) { // ponila.com/register/{token}/ + PageChanger.goToLoginActivity(this, shareUri); + }//urls in form of ponila.com/post/{post_id} + else if (shareUri.getPathSegments().get(0).equals("post") && + isInteger(mainEntityId = shareUri.getPathSegments().get(1))) { + //actorID = shareUri.getPathSegments().get(postSegmentIndex); + PageChanger.goToPost(this, mainEntityId); + } //urls in form of ponila.com/{unique_name}/{collection_name} + else if (shareUri.getPathSegments().size() == 2) { + mainEntityId = shareUri.getPathSegments().get(1); // collection name + secondEntityId = shareUri.getPathSegments().get(0); // user name + PageChanger.goToCollection(this, null, mainEntityId, secondEntityId); + } //urls in form of ponila.com/{unique_name} + else if (shareUri.getPathSegments().size() == 1) { + mainEntityId = shareUri.getPathSegments().get(0); // user name + PageChanger.goToProfile(this, mainEntityId); + } else { + Logger.toast(R.string.error_invalid_url); + new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { + @Override + public void run() { + MainActivity.this.finish(); + } + }, 1500); + } + } + } + + @Override + protected void initUI() { + + DataRepository.getInstance().getMyInfo(true, MyInfoReceivedEvent.MY_INFO_TYPE.VERIFY); + + } + + @Subscribe + public void onUserInfoReceived(MyInfoReceivedEvent event) { + + if (event.type != MyInfoReceivedEvent.MY_INFO_TYPE.VERIFY) return; + + if(!event.me.isEmailVerified && !event.me.isMobileVerified && !PoinilaPreferences.isUserAnonymous()) + PonilaSnackbarManager.getInstance().showVerifySnackbar(findViewById(R.id.main_content), this); + else if(!event.me.isPassword) + PonilaSnackbarManager.getInstance().showChangeUserPassSnackBar(findViewById(R.id.main_content), this); + + + new AsyncTask() { + + @Override + protected Void doInBackground(Object... params) { + DataRepository.syncWithMyInfoResponse((MyInfoReceivedEvent) params[0]); + return null; + } + + @Override + protected void onPostExecute(Void o) { + + } + + + }.execute(event); + + } + + @Override + public void onBackPressed() { + if(!backPressed){ + backPressed = true; + Logger.toast(R.string.exit_with_back_message); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + backPressed = false; + } + }, 5000); + }else { + backPressed = false; + System.exit(0); +// super.onBackPressed(); + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_main, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + + //noinspection SimplifiableIfStatement + if (id == R.id.action_settings) { + return true; + } + + return super.onOptionsItemSelected(item); + } + + @Override + protected void handleToolbar() { + + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_home; + } + + + // ----------TODO: just for testing if problem with viewpager is by nested fragments + + private static final int TABS_SIZE = 5; + @Bind(R.id.view_pager) + public ViewPager viewPager; + @Bind(R.id.tabs) + public TabLayout tabLayout; + + private void setupTab() { + int[] icons = new int[]{R.drawable.tab_dashboard_selector, R.drawable.tab_collection_selector, + R.drawable.tab_search_selector, R.drawable.tab_notification_selector, + R.drawable.tab_profile_selector}; + + // Get the ViewPager and set it's PagerAdapter so that it can display items + mAdapter = new SimpleFragmentPagerAdapter(getSupportFragmentManager(), + MainActivity.this); + viewPager.setAdapter(mAdapter); + + viewPager.setOffscreenPageLimit(5); + + viewPager.addOnPageChangeListener(this); + + // Give the TabLayout the ViewPager + tabLayout.setupWithViewPager(viewPager); + + + setupNotificationTab(); + + for (int i = 0; i < TABS_SIZE; i++){ + if( i == 3){ + TabLayout.Tab tab = tabLayout.getTabAt(i); + tab.setCustomView(notifTabView); + }else { + tabLayout.getTabAt(i).setIcon(icons[i]); + + } + } + } + + private void setupNotificationTab(){ + notifTabView = (RelativeLayout)LayoutInflater.from(MainActivity.this).inflate(R.layout.tab_notification_layout, null); + notifNumView = (TextView) notifTabView.findViewById(R.id.notification_number); + } + + @Override + public void onNotificationNumber(int number) { + if(number > -10){ + notifNumView.setVisibility(View.VISIBLE); + notifNumView.setText(String.valueOf(number)); + return; + } + notifNumView.setVisibility(View.GONE); + } + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + if(mAdapter.getItem(position) instanceof MyFollowedCollectionsFragment){ + BusProvider.getBus().post( new HelpMyFollowedCollectionListFragment()); + }else if(mAdapter.getItem(position) instanceof MyProfileFragment){ + BusProvider.getBus().post( new HelpMyProfileFragment()); + } + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + + public class SimpleFragmentPagerAdapter extends android.support.v4.app.FragmentStatePagerAdapter { + private String[] tabTitles; + private Context context; + + public SimpleFragmentPagerAdapter(android.support.v4.app.FragmentManager fm, Context context) { + super(fm); + this.context = context; + tabTitles = context.getResources().getStringArray(R.array.tab_titles); + } + + + @Override + public int getCount() { + return TABS_SIZE; + } + + // in case of entering as an anonymous user, return static pages for collections, notifications, profile tabs. + @Override + public BaseFragment getItem(int position) { + switch (position) { + case 0: return DashboardFragment.newInstance(); + case 1: return DataRepository.isUserAnonymous() ? + AnonymousInfoFragment.newInstance(AnonymousInfoFragment.FOLLOWING_COLLECTIONS) : + MyFollowedCollectionsFragment.newInstance(); + //pages.add(FragmentPagerItem.of("", HomeFragment.TestFragment.class)); + case 2: return SearchFragment.newInstance(); + case 3: return DataRepository.isUserAnonymous() ? + AnonymousInfoFragment.newInstance(AnonymousInfoFragment.NOTIFICATIONS) : + NotificationFragment.newInstance(); + case 4: return DataRepository.isUserAnonymous() ? + AnonymousInfoFragment.newInstance(AnonymousInfoFragment.PROFILE) : + MyProfileFragment.newInstance(); + default: + return null; + } + + } + + @Override + public CharSequence getPageTitle(int position) { + // Generate title based on item position + return "";//tabTitles[position]; + } + } + + @Subscribe + public void keepSystemPreferences(SystemPreferencesReceivedEvent event){ + DataRepository.setSystemPreferences(event.systemPreferences); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/MemberListActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/MemberListActivity.java new file mode 100755 index 0000000..14aae5e --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/MemberListActivity.java @@ -0,0 +1,32 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.app.Fragment; +import android.os.Bundle; + +import com.shaya.poinila.android.presentation.view.fragments.MemberListFragment; + +public class MemberListActivity extends FragmentHostActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + handleIntentExtras(); + super.onCreate(savedInstanceState); + } + + @Override + protected void initUI() { + + } + + @Override + protected android.support.v4.app.Fragment getHostedFragment() { + return MemberListFragment.newInstance(mainEntityID, requestID); + } + + @Override + protected boolean withToolbar() { + return true; + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/NewPostActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/NewPostActivity.java new file mode 100755 index 0000000..dee929f --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/NewPostActivity.java @@ -0,0 +1,81 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.support.v7.app.ActionBar; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.view.ViewGroup; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.fragments.NewWebSitePostInputURLFragment; +import com.shaya.poinila.android.presentation.view.fragments.NewWebSitePostSelectMediaFragment; + +import data.model.PostType; +import data.model.SuggestedWebPagePost; + +public class NewPostActivity extends BaseActivity { + + + private static final String TAG_INPUT_URL_FRAGMENT = NewWebSitePostInputURLFragment.class.getName(); + private static final String TAG_SELECT_IMAGE_FRAGMENT = NewWebSitePostSelectMediaFragment.class.getName(); + + + Toolbar toolbar; + + @Override + protected void initUI() { + + goToInputURLFragment(); + + toolbar = (Toolbar)findViewById(R.id.toolbar); + handleToolbar(); + + } + + @Override + protected void handleToolbar() { + setSupportActionBar(toolbar); + + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null){ + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setHomeButtonEnabled(true); + + } + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_new_web_site_post; + } + + public void goToInputURLFragment() { + getSupportFragmentManager().beginTransaction(). + replace(R.id.container, new NewWebSitePostInputURLFragment(), TAG_INPUT_URL_FRAGMENT). + //addToBackStack(TAG_LOGIN_FRAGMENT). + commit(); + } + + public void goToSelectMediaFragment(PostType postType, String siteAddress) { + getSupportFragmentManager().beginTransaction(). + replace(R.id.container, NewWebSitePostSelectMediaFragment.newInstance(postType, siteAddress), TAG_SELECT_IMAGE_FRAGMENT). + //addToBackStack(TAG_LOGIN_FRAGMENT). + commit(); + } + + public void goToNewPostFragment(SuggestedWebPagePost suggestedPost){ + + } + + @Override + protected View getActivityView() { + ViewGroup vp = (ViewGroup) getLayoutInflater().inflate(getLayoutResourceId(), null); + toolbar = (Toolbar) getLayoutInflater().inflate(R.layout.toolbar, vp, false); + handleToolbar(); + vp.addView(toolbar, 0); + return vp; + } + + + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/NotificationOpenedActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/NotificationOpenedActivity.java new file mode 100755 index 0000000..6cddb4c --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/NotificationOpenedActivity.java @@ -0,0 +1,64 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.support.v4.app.Fragment; +import android.text.TextUtils; + +import com.google.gson.GsonBuilder; +import com.google.gson.reflect.TypeToken; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.fragments.notification.NCollectionListFragment; +import com.shaya.poinila.android.presentation.view.fragments.notification.NPostListFragment; +import com.shaya.poinila.android.utils.PushNotificationUtils; + +import java.lang.reflect.Type; +import java.util.List; + +import data.model.Collection; +import data.model.Post; + +/** + * Created by iran on 6/14/2016. + */ +public class NotificationOpenedActivity extends FragmentHostActivity { + + @Override + protected Fragment getHostedFragment() { + + PushNotificationUtils.NOTIFICATION_TYPE type = PushNotificationUtils.NOTIFICATION_TYPE.valueOf(getIntent().getStringExtra("type")); + String data = getIntent().getStringExtra("data"); + Type listType; + List list; + + switch (type){ + case POST_SUGGESTION: + setTitle(R.string.notification_suggestion_post_title); +// listType = new TypeToken>() {}.getType(); +// list = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create().fromJson(data, listType); + return NPostListFragment.newInstance(data, type); + case LIKE: + setTitle(R.string.notification_post_like_title); + listType = new TypeToken>() {}.getType(); + list = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create().fromJson(data, listType); + return NPostListFragment.newInstance(list, type); + case COMMENT: + setTitle(R.string.notification_post_comment_title); + listType = new TypeToken>() {}.getType(); + list = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create().fromJson(data, listType); + return NPostListFragment.newInstance(list, type); + case FOLLOW: + setTitle(R.string.notification_collection_follow_title); + listType = new TypeToken>() {}.getType(); + list = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create().fromJson(data, listType); + return NCollectionListFragment.newInstance(list); + default: + return new Fragment(); + } + } + + private List getList(String data){ + Type listType = new TypeToken>() {}.getType(); + List list = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create().fromJson(data, listType); + return list; + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/NotificationSwitchActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/NotificationSwitchActivity.java new file mode 100755 index 0000000..c38d735 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/NotificationSwitchActivity.java @@ -0,0 +1,43 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.app.Fragment; +import android.view.MenuItem; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.fragments.NotificationSwitchFragment; + + +public class NotificationSwitchActivity extends FragmentHostActivity { + + + @Override + protected android.support.v4.app.Fragment getHostedFragment() { + return NotificationSwitchFragment.newInstance(mainEntityID, requestID); + } + + @Override + protected boolean withToolbar() { + return true; + } + + + @Override + protected void initUI() { + } + + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + + //noinspection SimplifiableIfStatement + if (id == R.id.action_settings) { + return true; + } + + return super.onOptionsItemSelected(item); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/OthersProfileActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/OthersProfileActivity.java new file mode 100755 index 0000000..dd54081 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/OthersProfileActivity.java @@ -0,0 +1,413 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.content.Intent; +import android.net.Uri; +import android.support.v4.widget.Space; +import android.text.TextUtils; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.FriendCirclesUpdated; +import com.shaya.poinila.android.presentation.uievent.NeutralDialogButtonClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PositiveButtonClickedUIEvent; +import com.shaya.poinila.android.presentation.view.ViewInflater; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.view.dialog.PoinilaAlertDialog; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.NavigationUtils; +import com.shaya.poinila.android.util.ResourceUtils; +import com.shaya.poinila.android.util.StringUtils; +import com.squareup.otto.Subscribe; + +import org.apmem.tools.layouts.FlowLayout; + +import java.util.List; + +import butterknife.Bind; +import butterknife.ButterKnife; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.MemberReceivedEvent; +import data.model.Collection; +import data.model.FriendRequestAnswer; +import data.model.FriendshipStatus; +import data.model.ImageUrls; +import data.model.Member; +import manager.DBFacade; +import manager.DataRepository; + +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_CONTENT_URI; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ENTITY; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_MEMBER_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_REQUEST_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_COLLECTIONS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_FAVED_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_FOLLOWED_COLLECTIONS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_FOLLOWERS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_FRIENDS; + +public class OthersProfileActivity extends ToolbarActivity { + + @Bind(R.id.profile_general_info) + ViewGroup profileGeneralInfo; + @Bind(R.id.followers) + ViewGroup followersStatViewGroup; + @Bind(R.id.favorited) + ViewGroup favoritedStatViewGroup; + @Bind(R.id.posts) + ViewGroup postsStatViewGroup; + @Bind(R.id.friends) + ViewGroup friendsStatViewGroup; + @Bind(R.id.owning_collections_container) + View owningCollections; + @Bind(R.id.following_collections_container) + View followingCollections; + @Bind(R.id.interest_container) + View interestsContainer; + @Bind(R.id.blog_info) + View blogInfo; + @Bind(R.id.about_me) + TextView aboutMe; + + // TODO: get member from cache if exist else request the server + Member member; + + private ImageView friendIcon; + private String memberID; + + @Override + protected void handleIntentExtras() { + memberID = getIntent().getStringExtra(KEY_MEMBER_ID); + // TODO: wtf? + /*titleParameter = ""; + //Uri shareUri = getIntent().getData();*/ + + } + + @Override + public void onStart() { + super.onStart(); + if (requestOnFirstTime) + DataRepository.getInstance().getProfile(memberID); + } + + @Override + protected void initUI() { + friendIcon = ButterKnife.findById(profileGeneralInfo, R.id.icon); + //friendIcon.setImageResource(R.drawable.add_friend); + //friendIcon.setVisibility(View.INVISIBLE); + interestsContainer.setVisibility(View.GONE); + + generalProfileInit(); + + getActivity().setTitle(titleParameter); + + member = DataRepository.getInstance().getTempModel(Member.class); + if (member != null) + fill(member); + } + + + @Subscribe + public void onProfileReceived(MemberReceivedEvent event) { + this.member = event.member; + requestOnFirstTime = false; + + fill(member); + } + + private void showAddingAsFriendDialog() { + // TODO: if is friend launch remove friend dialog. + // if not launch add as friend dialog + new PoinilaAlertDialog.Builder(). + setTitle(getString(R.string.friend_request)). + setMessage(getString(R.string.approve_send_friend_request)). + setPositiveBtnText(getString(R.string.yes)). + setNegativeBtnText(getString(R.string.no)). + build().show(getSupportFragmentManager(), null); + } + + private void showEditFriendDialog() { + + new PoinilaAlertDialog.Builder(). + setTitle(R.string.edit_friendship). + setPositiveBtnText(R.string.remove_friend). + setNegativeBtnText(R.string.cancel). + setNeutralBtnText(R.string.edit_circle). + build().show(getSupportFragmentManager(), ConstantsUtils.TAG_EDIT_FRIENDSHIP); + } + + @Subscribe + public void onPositiveDialogButton(PositiveButtonClickedUIEvent event) { + switch (member.friendshipStatus) { + case NotFriend: + PoinilaNetService.friendRequest(member.getId(), DBFacade.getDefaultCircle().id); + member.friendshipStatus = FriendshipStatus.Pending; + friendIcon.setImageResource(R.drawable.pending_friendship_request); + break; + case WaitingForAction: // sending request + PoinilaNetService.answerFriendRequest(member.id, (FriendRequestAnswer)event.getData(), DBFacade.getDefaultCircle().id); + member.friendshipStatus = FriendshipStatus.IsFriend; + friendIcon.setImageResource(R.drawable.friends); + break; + case IsFriend: // removing friend + PoinilaNetService.removeFriend(member.getId()); + member.friendshipStatus = FriendshipStatus.NotFriend; + friendIcon.setImageResource(R.drawable.add_friend_selector); + break; + case Pending: // no action yet + break; + } + //friendIcon.setImageResource(member.isFriend ? R.drawable.friends : R.drawable.add_friend_selector); + } + + + @Subscribe + public void onNeutralDialogButton(NeutralDialogButtonClickedUIEvent event) { + DialogLauncher.launchChangeFriendCircle(getSupportFragmentManager(), member); + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_others_profile; + } + + @OnClick(R.id.followers) + public void onShowFollowers() { + NavigationUtils.goToActivity(MemberListActivity.class, getActivity(), + KEY_ENTITY, member.getId(), KEY_REQUEST_ID, REQUEST_MEMBER_FOLLOWERS); + } + + @OnClick(R.id.friends) + public void onShowFriends() { + NavigationUtils.goToActivity(MemberListActivity.class, getActivity(), + KEY_ENTITY, member.getId(), KEY_REQUEST_ID, REQUEST_MEMBER_FRIENDS); + } + + @OnClick(R.id.favorited) + public void onShowFavorited() { + NavigationUtils.goToActivity(PostListActivity.class, getActivity(), + KEY_ENTITY, member.getId(), KEY_REQUEST_ID, REQUEST_MEMBER_FAVED_POSTS); + } + + @OnClick(R.id.posts) + public void onShowPosts() { + PageChanger.goToMemberPosts(getActivity(), member.getId(), member.fullName); + } + + + @OnClick(R.id.owning_collections_container) + public void onShowOwniningCollections() { + NavigationUtils.goToActivity(CollectionListActivity.class, getActivity(), + KEY_ENTITY, member.getId(), KEY_REQUEST_ID, REQUEST_MEMBER_COLLECTIONS); + } + + @OnClick(R.id.following_collections_container) + public void onShowFollowingCollections() { + if(member == null)return; + NavigationUtils.goToActivity(CollectionListActivity.class, getActivity(), + KEY_ENTITY, member.getId(), KEY_REQUEST_ID, REQUEST_MEMBER_FOLLOWED_COLLECTIONS); + } + + + private void fill(final Member member) { + if (member == null) return; + + titleParameter = member.uniqueName; + getActivity().setTitle(titleParameter); + + // TODO: fill page with actual posts + friendIcon.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (DataRepository.isUserAnonymous()){ + Logger.toastError(R.string.error_guest_action); + return; + } + DialogLauncher.launchFriendshipDialog(member, getSupportFragmentManager()); + } + }); + + setImage((ImageView) profileGeneralInfo.findViewById(R.id.image), member.imageUrls, + ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.BIG); + if (member.imageUrls != null && member.imageUrls.isNotEmpty()) { + profileGeneralInfo.findViewById(R.id.image).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = NavigationUtils.makeNavigationIntent(FullImageActivity.class, getActivity()); + intent.putExtra(KEY_CONTENT_URI, member.imageUrls.properMemberImage(ImageUrls.ImageSize.FULL_SIZE).url); + startActivity(intent); + } + }); + } + setText((TextView) profileGeneralInfo.findViewById(R.id.title), member.fullName); + setText((TextView) profileGeneralInfo.findViewById(R.id.subtitle), member.uniqueName); + + //friendIcon.setBackgroundResource(0); // to clear old background + if (DataRepository.getInstance().isMe(member.id)) { + // TODO: this is terrible! must use the profile fragment instead. + friendIcon.setVisibility(View.GONE); + } else if (member.friendshipStatus == null) { + friendIcon.setVisibility(View.INVISIBLE); + } else { + friendIcon.setVisibility(View.VISIBLE); + switch (member.friendshipStatus) { + case NotFriend: + friendIcon.setImageResource(R.drawable.add_friend_selector); + break; + case WaitingForAction: + friendIcon.setImageResource(R.drawable.pending_friendship_request); + break; + case IsFriend: + friendIcon.setImageResource(R.drawable.friends); + break; + case Pending: + friendIcon.setImageResource(R.drawable.pending_friendship_request); + break; + } + } + + setText(aboutMe, member.aboutMe); + + if (TextUtils.isEmpty(member.url)) + blogInfo.setVisibility(View.GONE); + else { + setText((TextView) blogInfo.findViewById(R.id.title), member.urlName); + setText((TextView) blogInfo.findViewById(R.id.url), member.url); + blogInfo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + NavigationUtils.goToUrl(getActivity(), member.url.toLowerCase(), null); + } + }); + } + + setText((TextView) followersStatViewGroup.findViewById(R.id.top_text), member.followerCount); + setText((TextView) favoritedStatViewGroup.findViewById(R.id.top_text), member.likesCount); + setText((TextView) postsStatViewGroup.findViewById(R.id.top_text), member.postsCount); + setText((TextView) friendsStatViewGroup.findViewById(R.id.top_text), member.friendsCount); + + setText((TextView) owningCollections.findViewById(R.id.card_title), + getString(R.string.member_collections_formatted, member.fullName)); + + /*-----OWNING COLLECTIONS-------*/ + fillCollectionsSummery(owningCollections, member.owningCollections, member.owningCollectionsCount); + /*----FOLLOWING COLLECTIONS-----*/ + fillCollectionsSummery(followingCollections, member.followingCollections, member.followingCollectionsCount); + + /*-------Interests--------*/ + if (member.interests != null && !member.interests.isEmpty()) { + FlowLayout flowLayout = ButterKnife.findById(interestsContainer, R.id.tags_container); + for (int i = 0; i < 5 && i < member.interests.size(); i++) { + ViewInflater.addTagToContainer(flowLayout, member.interests.get(i)); + } + } + } + + private void fillCollectionsSummery(View collectionsViewContainer, List collections, int itemCount) { + LinearLayout ll = (LinearLayout) collectionsViewContainer.findViewById(R.id.cards_container); + if (collections == null || collections.isEmpty()) { + ll.setVisibility(View.GONE); + return; + } + ll.removeAllViews(); + ll.setVisibility(View.VISIBLE); + int collectionsCount = getResources().getInteger(R.integer.profile_page_collection_summary_count); + for (int i = 0; i < collectionsCount && i < collections.size(); i++) { + final Collection collection = collections.get(i); + View card = ViewInflater.inflateImageCaption(ll, collection.name, collection.coverImageUrls); + card.findViewById(R.id.image).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onCollectionClicked(collection); + } + }); + ll.addView(card, new LinearLayout.LayoutParams(0, WRAP_CONTENT, 1)); + if (i != collectionsCount - 1) { + Space margin = new Space(getActivity()); + ll.addView(margin, new LinearLayout.LayoutParams( + (int) ResourceUtils.getDimen(R.dimen.margin_lvl1), 1)); + } + } + TextView itemCountView = ButterKnife.findById(collectionsViewContainer, R.id.item_count); + itemCountView.setVisibility(View.VISIBLE); + ViewUtils.setText(itemCountView, StringUtils.getStringWithPersianNumber("(%d)", itemCount)); + } + + private void onCollectionClicked(final Collection collection) { + PageChanger.goToCollection(getActivity(), collection); + } + + private void generalProfileInit() { + ((TextView) followersStatViewGroup.findViewById(R.id.bottom_text)) + .setText(getString(R.string.follower)); + ((TextView) favoritedStatViewGroup.findViewById(R.id.bottom_text)) + .setText(getString(R.string.favorited)); + ((TextView) postsStatViewGroup.findViewById(R.id.bottom_text)) + .setText(getString(R.string.post)); + ((TextView) friendsStatViewGroup.findViewById(R.id.bottom_text)) + .setText(getString(R.string.friend)); + + + ((TextView) followingCollections.findViewById(R.id.card_title)). + setText(getString(R.string.follows)); + + ((TextView) interestsContainer.findViewById(R.id.card_title)). + setText(getString(R.string.interest)); + // TODO: member ro chejuri avval set konim? + } + + @Subscribe + public void onFriendCirclesUpdated(FriendCirclesUpdated event) { + if (member == null) return; + if (event.member.id == member.id) + member.circle_ids = event.selectedCirclesIDs; + } + + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.menu_post, menu); // TODO: create a new menu xml resource + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // handle item selection + switch (item.getItemId()) { + case R.id.menu_item_share: + // Handle this selection + launchShareMenu(); + return true; + case R.id.menu_item_report: + // Handle this selection + DialogLauncher.launchReportDialog(getSupportFragmentManager(), R.string.report_user, member.id); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + private void launchShareMenu() { + Intent shareIntent = new Intent(Intent.ACTION_SEND); + shareIntent.setType("text/plain"); + String extra = getString(R.string.checkout_this_member) + "\n" + + getString(R.string.member_share_url, + ConstantsUtils.POINILA_ORIGIN_ADDRESS, + Uri.encode(member.uniqueName)) + "\n" + + getString(R.string.ponila_world_of_interest); + shareIntent.putExtra(Intent.EXTRA_TEXT, extra); + startActivity(Intent.createChooser(shareIntent, getString(R.string.share_dialog_title))); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/PostListActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/PostListActivity.java new file mode 100755 index 0000000..27e93e4 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/PostListActivity.java @@ -0,0 +1,48 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.app.Fragment; +import android.content.pm.ActivityInfo; + +import com.shaya.poinila.android.presentation.view.fragments.CollectionPageFragment; +import com.shaya.poinila.android.presentation.view.fragments.PostAndRelatedPostFragment; +import com.shaya.poinila.android.presentation.view.fragments.PostListFragment; + +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_COLLECTION_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_EXPLORE; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_POST_RELATED_POSTS; + +public class PostListActivity extends FragmentHostActivity { + + @Override + public void handleIntentExtras() { + super.handleIntentExtras(); + // handling shareable urls + } + + @Override + protected void initUI() { + + } + + @Override + protected android.support.v4.app.Fragment getHostedFragment() { + switch (requestID) { + case REQUEST_COLLECTION_POSTS: + return CollectionPageFragment.newInstance(mainEntityID, secondEntityID, requestID); + case REQUEST_EXPLORE: + return PostListFragment.newInstance(mainEntityID, secondEntityID, requestID); + case REQUEST_MEMBER_POSTS: + return PostListFragment.newInstance(mainEntityID, secondEntityID, requestID); + case REQUEST_POST_RELATED_POSTS: + return PostAndRelatedPostFragment.newInstance(mainEntityID, secondEntityID, requestID); + default: // never call default mode + return PostListFragment.newInstance(mainEntityID, secondEntityID, requestID); + } + } + + @Override + protected boolean withToolbar() { + return true; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/ProfileSettingActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/ProfileSettingActivity.java new file mode 100755 index 0000000..9dc436a --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/ProfileSettingActivity.java @@ -0,0 +1,251 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.os.Bundle; +import android.support.v4.app.NavUtils; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.SimpleSettingTextSetEvent; +import com.shaya.poinila.android.presentation.view.dialog.ChangeNameDialog; +import com.shaya.poinila.android.presentation.view.dialog.EditAboutMeDialog; +import com.shaya.poinila.android.presentation.view.dialog.PoinilaAlertDialog; +import com.shaya.poinila.android.util.Logger; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import butterknife.BindString; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.ProfileSettingReceivedEvent; +import data.event.UpdateProfileSettingResponse; +import data.model.Member; + +import static com.shaya.poinila.android.util.StringUtils.emptyIfNull; + +public class ProfileSettingActivity extends ToolbarActivity { + + private static final String TAG_CHANGE_NAME_DIALOG = "change name"; + //private static final String TAG_CHANGE_USERNAME_DIALOG = "change username"; + private static final String TAG_CHANGE_EMAIL_DIALOG = "change email"; + private static final String TAG_CHANGE_PHONE_DIALOG = "change phone"; + @Bind(R.id.name) View nameItem; + //@Bind(R.actorID.username) View usernameItem; + //@Bind(R.id.password) View passwordItem; + @Bind(R.id.email) View emailItem; + @Bind(R.id.about_me) View aboutMeItem; + @Bind(R.id.phone) View phoneItem; + //@Bind(R.actorID.gender) View genderItem; + @Bind(R.id.website) View websiteItem; + /*@Bind(R.id.deactivate) View deactivateItem; + @Bind(R.id.deactivate_switch) Switch deactivateSwitch;*/ + + @BindString(R.string.name) String name; + //@BindString (R.string.username) String username; + //@BindString (R.string.password) String passwordStringRes; + @BindString (R.string.email) String email; + @BindString (R.string.about_me) String aboutMe; + @BindString (R.string.phone) String phone; + //@BindString (R.string.gender) String gender; + @BindString (R.string.website) String website; + /* @BindString(R.string.deactivate) String deactivate;*/ + + private Member originalProfile; + private Member changedProfile; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + protected void initUI() { //TODO: gender nadarim tu requestesh! :)) + String[] labels = {name, email, phone, aboutMe, website}; + View[] items = {nameItem, emailItem, phoneItem, aboutMeItem, websiteItem}; + for (int i = 0; i < items.length; i++){ + ((TextView) items[i].findViewById(R.id.label)).setText(labels[i]); + } + + showProgressDialog(); + /*deactivateSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + changedProfile.isActive = isChecked; + } + });*/ + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_done_action, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + if (id == R.id.action_submit_changes){ + if (changedProfile != null) { +// PoinilaNetService.updateProfileSetting(changedProfile); + return true; + } + } + return super.onOptionsItemSelected(item); + } + + @Subscribe public void onResponse(UpdateProfileSettingResponse response){ + if (response.success){ + Logger.toast(R.string.successfully_updated); + getActivity().finish(); + } + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_profile_setting; + } + + @OnClick(R.id.name) + public void onName(){ + ChangeNameDialog.newInstance(changedProfile.fullName).show(getSupportFragmentManager(), null); + } + + /* @OnClick(R.actorID.username) + public void onUsername(){ + //TODO + new PoinilaAlertDialog.Builder().setPositiveText(ResourceUtils.getString(R.string.submit)). + setNegativeText(ResourceUtils.getString(R.string.cancelBtn)). + setBody(new ChangeUserameDialog()). + build().show(getSupportFragmentManager(), TAG_CHANGE_USERNAME_DIALOG); + }*/ + + //TODO: this is temporary. future releases must let user to change phone/email through verification process +// @OnClick(R.id.email) +// public void onEmail(){ +// //TODO +// ChangeEmailDialog.newInstance(changedProfile.email).show(getFragmentManager(), TAG_CHANGE_EMAIL_DIALOG); +// } + + @OnClick(R.id.about_me) + public void onAboutMe(){ + EditAboutMeDialog.newInstance(changedProfile.aboutMe).show(getSupportFragmentManager(), null); + } + + + /*@OnClick( R.id.phone) + public void onPhone(){ + ChangePhoneDialog.newInstance(changedProfile.mobileNumber).show(getFragmentManager(), TAG_CHANGE_PHONE_DIALOG); + }*/ + + /*@OnClick(R.actorID.gender) public void onGender(){ + new PoinilaAlertDialog.Builder().setPositiveText(ResourceUtils.getString(R.string.submit)). + setNegativeText(ResourceUtils.getString(R.string.cancelBtn)). + setBody(new CHANGE_GENDER_DIALOG()). + build().show(getSupportFragmentManager(), null); + }*/ + + @OnClick(R.id.website) public void onWebsite(){ +// ChangeWebsiteDialog.newInstance(changedProfile.url, changedProfile.urlName).show(getSupportFragmentManager(), null); + } + + @Subscribe public void onSimpleSettingValueSet(SimpleSettingTextSetEvent event){ + switch (event.settingType){ + case FullName: + changedProfile.fullName = event.value; + ((TextView) nameItem.findViewById(R.id.value)).setText(changedProfile.fullName); + break; + case EMAIL: + changedProfile.email = event.value; + ((TextView) emailItem.findViewById(R.id.value)).setText(changedProfile.email); + break; + case PHONE: + changedProfile.mobileNumber = event.value; + ((TextView) phoneItem.findViewById(R.id.value)).setText(changedProfile.mobileNumber); + break; + case ABOUT_ME: + changedProfile.aboutMe = event.value; + ((TextView) aboutMeItem.findViewById(R.id.value)).setText(changedProfile.aboutMe); + break; + case WEBSITE: + String[] nameUrl = event.value.split("&"); + ((TextView)websiteItem.findViewById(R.id.value)).setText(nameUrl[0] + "\n" + nameUrl[1]); + changedProfile.urlName = nameUrl[0]; + changedProfile.url = nameUrl[1]; + break; + /*case PHONE: + ((TextView)phoneItem.findViewById(R.id.value)).setText(event.value); + changedProfile.mobileNumber = event.value; + break;*/ + } + + + } + + @Subscribe public void onUserProfileSettingReceived(ProfileSettingReceivedEvent event){ + originalProfile = event.member; + requestOnFirstTime = false; + changedProfile = new Member(originalProfile); + fill(originalProfile); + onSuccessfulResponse(); + } + + private void fill(Member originalProfile) { + String website = emptyIfNull(originalProfile.urlName) + "\n" + emptyIfNull(originalProfile.url); + String[] values = new String[]{originalProfile.fullName, originalProfile.email, originalProfile.aboutMe, website}; + View[] items = {nameItem, emailItem, aboutMeItem, websiteItem}; + for (int i = 0; i < values.length; i++) { + ((TextView) items[i].findViewById(R.id.value)).setText(values[i]); + } + } + + @Override + protected void onStart() { + super.onStart(); + if (requestOnFirstTime) + PoinilaNetService.getProfileSettings(); + } + + // in first look it's possible for user not to notice save action menu and lose his/her data accidentally + @Override + protected void handleUpNavigation() { + if (originalProfile != null && !originalProfile.equals(changedProfile)) { + new PoinilaAlertDialog.Builder(). + setMessage(R.string.discared_changes). + setPositiveBtnText(R.string.yes). + setNegativeBtnText(R.string.no). + setPositiveBtnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + NavUtils.navigateUpFromSameTask(getActivity()); + } + }). + build().show(getSupportFragmentManager(), null); + }else{ + super.handleUpNavigation(); + } + } + + @Override + public void onBackPressed() { + if (originalProfile != null && !originalProfile.equals(changedProfile)) { + new PoinilaAlertDialog.Builder(). + setMessage(R.string.discared_changes). + setPositiveBtnText(R.string.yes). + setNegativeBtnText(R.string.no). + setPositiveBtnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ProfileSettingActivity.super.onBackPressed(); + } + }). + build().show(getSupportFragmentManager(), null); + }else{ + super.onBackPressed(); + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/SelectInterestActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/SelectInterestActivity.java new file mode 100755 index 0000000..720b721 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/SelectInterestActivity.java @@ -0,0 +1,229 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.support.v4.content.ContextCompat; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.CheckBoxClickUIEvent; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.fragments.LoginFragment; +import com.shaya.poinila.android.presentation.viewholder.SelectableInterestViewHolder; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.StringUtils; +import com.squareup.otto.Subscribe; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.InterestsReceivedEvent; +import data.event.ServerResponseEvent; +import data.event.UserInterestsReceivedEvent; +import data.model.ImageTag; +import data.model.Tag; +import manager.DataRepository; + +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_FIRST_LOGIN; + +public class SelectInterestActivity extends BaseActivity { + + public static final int MINIMUM_ACCEPTABLE_INTERESTS = 5; + private RecyclerViewAdapter mAdapter; + //private HashSet userInterestsIDs; + private List userInterests; + private boolean firstTimeAfterRegister; + private int checkedInterestCount; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // TODO: save and restore checkedInterestCount; + } + + @Bind(R.id.selected_count) + TextView checkedItemsCountTextView; + @Bind(R.id.submit) Button submitBtn; + @Bind(R.id.cancel) Button cancelBtn; + @Bind(R.id.recycler_view) RecyclerView mRecyclerView; + + @Override + protected void initUI() { + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setGridLayoutManager(GridLayoutManager.VERTICAL, + getResources().getInteger(R.integer.column_count)). + setAdapter(new RecyclerViewAdapter( + getActivity(), R.layout.selectable_interest) { + @Override + protected SelectableInterestViewHolder getProperViewHolder(View v, int viewType) { + return new SelectableInterestViewHolder(v); + } + }). + bindViewToAdapter(); + mRecyclerView.getItemAnimator().setChangeDuration(0); // avoiding blink on rendering + mAdapter = ((RecyclerViewAdapter) mRecyclerView.getAdapter()); + //TODO: handle first url + userInterests = DataRepository.getInstance().getTempModel(List.class); + if (userInterests == null) + userInterests = new ArrayList<>(MINIMUM_ACCEPTABLE_INTERESTS); + + if (firstTimeAfterRegister){ + cancelBtn.setVisibility(View.GONE); + updateCheckedInterestsCount(); + } else // we must show and update counter only directly after registering + checkedItemsCountTextView.setVisibility(View.GONE); + + } + + @Override + protected void onStart() { + super.onStart(); + if (requestOnFirstTime) + PoinilaNetService.getInterests(); + + if (!firstTimeAfterRegister && userInterests.isEmpty()) + PoinilaNetService.getMemberInterests(DataRepository.getInstance().getMyId()); + } + + public List selectUserInterests(List receivedInterests) { + if (!userInterests.isEmpty()) { + for (ImageTag interest : receivedInterests) { + interest.selected = userInterests.contains(interest); + if (interest.selected) + PoinilaNetService.getSubInterests(interest.getId()); + } + } + return receivedInterests; + } + + private void updateInterests() { + progressDialog.setMessage(getString(R.string.please_wait)); + progressDialog.show(); + List selectedInterests = new ArrayList<>(); + for (Object tag : mAdapter.getItems()) { + if (((Tag)tag).selected) + selectedInterests.add(((Tag)tag).id); + } + PoinilaNetService.updateUserInterests(selectedInterests); + } + + @OnClick(R.id.submit) + public void onSubmit() { + if (firstTimeAfterRegister && !hasSelectedEnoughInterest(checkedInterestCount)) { + Logger.toast(R.string.error_min_selected_interest); + return; + } + updateInterests(); + } + + @OnClick(R.id.cancel) + public void onCancel() { // when first time after register, cancel button is hidden + finish(); + } + + // I hate my coding style! ServerResponse could be for any request :( + @Subscribe public void onServerResponse(ServerResponseEvent event){ + progressDialog.dismiss(); + if (event.receiverName != BaseEvent.ReceiverName.SelectInterest) + return; + if (!event.succeed){ + Logger.toastError(R.string.error_add_interests); + Logger.debugToast("updating interests failed"); + } else if (firstTimeAfterRegister) { + progressDialog.setMessage(getString(R.string.loading_creating_suggestions)); + progressDialog.show(); + new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { + @Override + public void run() { + if (progressDialog != null){ + progressDialog.dismiss(); + PageChanger.goToDashboard(SelectInterestActivity.this); + } + } + }, 30000); // isn't it too much for user? + }else{ + onCancel(); + } + } + + /*-----------------------*/ + // important: either of responses might be received first so we call update function in each. + // if app interest were not null and user interests were received, pre conditions is met. + @Subscribe + public void onInterestsReceived(InterestsReceivedEvent event) { // general interest! not related to the user + requestOnFirstTime = false; + if (!firstTimeAfterRegister) + selectUserInterests(event.interests); + mAdapter.addItems(event.interests); + } + + @Subscribe + public void onUserInterestsReceived(UserInterestsReceivedEvent event) { + if (requestOnFirstTime) { + userInterests = event.userInterests; + selectUserInterests(mAdapter.getItems()); + } + } + /*------------------------*/ + + @Subscribe + public void onInterestChecked(CheckBoxClickUIEvent event) { + ImageTag interest = mAdapter.getItem(event.adapterPosition); + interest.selected = event.checked; + + userInterests.add(interest); + + mAdapter.notifyItemChanged(event.adapterPosition); + if (firstTimeAfterRegister) + updateCheckedInterestsCount(); + PoinilaNetService.getSubInterests(interest.getId()); + } + + private void updateCheckedInterestsCount() { + int checkedInterestsCount = 0; + for (Object imageTag : mAdapter.getItems()) { + if (((ImageTag)imageTag).selected) + checkedInterestsCount++; + } + this.checkedInterestCount = checkedInterestsCount; + if (!hasSelectedEnoughInterest(checkedInterestsCount)) { + ViewUtils.setText(checkedItemsCountTextView, StringUtils.getStringWithPersianNumber( + getString(R.string.x_outof_y_formatted), checkedInterestsCount, MINIMUM_ACCEPTABLE_INTERESTS)); + checkedItemsCountTextView.setTextColor(ContextCompat.getColor(getActivity(), R.color.flamingo)); + } else { + ViewUtils.setText(checkedItemsCountTextView, StringUtils.persianNumber(checkedInterestsCount)); + checkedItemsCountTextView.setTextColor(ContextCompat.getColor(getActivity(), android.R.color.holo_green_dark)); + } + } + + private boolean hasSelectedEnoughInterest(int checkedInterestsCount) { + return checkedInterestsCount >= MINIMUM_ACCEPTABLE_INTERESTS; + } + + @Override + protected void handleToolbar() { + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_select_interests; + } + + @Override + protected void handleIntentExtras() { + super.handleIntentExtras(); + firstTimeAfterRegister = getIntent().getBooleanExtra(KEY_FIRST_LOGIN, false); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/SettingActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/SettingActivity.java new file mode 100755 index 0000000..846aacf --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/SettingActivity.java @@ -0,0 +1,413 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.api.GoogleApiClient; +import com.google.android.gms.common.api.Result; +import com.google.android.gms.common.api.ResultCallback; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.AfterVerifyResponse; +import com.shaya.poinila.android.presentation.uievent.PositiveButtonClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.SimpleSettingTextSetEvent; +import com.shaya.poinila.android.presentation.view.dialog.ChangeEmailDialog; +import com.shaya.poinila.android.presentation.view.dialog.ChangeNameDialog; +import com.shaya.poinila.android.presentation.view.dialog.ChangePhoneDialog; +import com.shaya.poinila.android.presentation.view.dialog.ChangeWebsiteDialog; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.view.dialog.EditAboutMeDialog; +import com.shaya.poinila.android.presentation.view.dialog.PoinilaAlertDialog; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.NavigationUtils; +import com.shaya.poinila.android.utils.PonilaAccountManager; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import butterknife.BindString; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.ProfileSettingReceivedEvent; +import data.event.UpdateProfileSettingResponse; +import data.model.Member; +import manager.DataRepository; + +import static com.shaya.poinila.android.util.StringUtils.emptyIfNull; + +public class SettingActivity extends ToolbarActivity { + +// @Bind(R.id.profile) +// View profileItem; + + @Bind(R.id.name) View nameItem; + //@Bind(R.actorID.username) View usernameItem; + //@Bind(R.id.password) View passwordItem; + @Bind(R.id.email) View emailItem; + @Bind(R.id.about_me) View aboutMeItem; + @Bind(R.id.phone) View phoneItem; + //@Bind(R.actorID.gender) View genderItem; + @Bind(R.id.website) View websiteItem; + /*@Bind(R.id.deactivate) View deactivateItem; + @Bind(R.id.deactivate_switch) Switch deactivateSwitch;*/ + + @Bind(R.id.password) + View passwordItem; + @Bind(R.id.app_settings) + View appSettingsItem; + @Bind(R.id.frames) + View framesItem; + @Bind(R.id.circles) + View circlesItem; + @Bind(R.id.app_notifications) + View appNotifsItem; + //@Bind(R.id.email_notifications) View emailNotifsItem; + @Bind(R.id.logout) + View logoutItem; + @Bind(R.id.help) + View helpItem; + @Bind(R.id.contact_us) + View contactUsItem; + @Bind(R.id.about_poinila) + View aboutPoinilaItem; + @Bind(R.id.rules) + View rulesItem; + +// @BindString(R.string.profile) +// String profileText; + + @BindString(R.string.name) String name; + //@BindString (R.string.username) String username; + //@BindString (R.string.password) String passwordStringRes; + @BindString (R.string.email) String email; + @BindString (R.string.about_me) String aboutMe; + @BindString (R.string.phone) String phone; + //@BindString (R.string.gender) String gender; + @BindString (R.string.website) String website; + /* @BindString(R.string.deactivate) String deactivate;*/ + + @BindString (R.string.setting_rules_item) String rulesTxt; + + @BindString(R.string.password) + String passwordText; + @BindString(R.string.app_settings) + String appSettingsTxt; + @BindString(R.string.frames_management) + String frameManagementTxt; + @BindString(R.string.manage_circle) + String circleManagementTxt; + @BindString(R.string.app_notifs) + String appNotifsTxt; + //@BindString(R.string.email_notifs) String emailNotifsTxt; + @BindString(R.string.logout) + String logoutTxt; + @BindString(R.string.tutorial) + String tutorialTxt; + @BindString(R.string.contact_us) + String contact_usTxt; + @BindString(R.string.about_poinila) + String aboutPoinilaTxt; + + + private Member originalProfile; + private Member changedProfile; + + private static final String TAG_CHANGE_PHONE_DIALOG = "change phone"; + private static final String TAG_CHANGE_EMAIL_DIALOG = "change email"; + + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + PonilaAccountManager.getInstance().initGoogleAPIClient(this, new GoogleApiClient.OnConnectionFailedListener() { + @Override + public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { + + } + }); + } + + @Override + protected void initUI() { + String[] labels = {passwordText, appSettingsTxt, frameManagementTxt, circleManagementTxt, appNotifsTxt, + logoutTxt, tutorialTxt, contact_usTxt, aboutPoinilaTxt, rulesTxt}; + View[] items = {passwordItem, appSettingsItem, framesItem, circlesItem, appNotifsItem, + logoutItem, helpItem, contactUsItem, aboutPoinilaItem, rulesItem}; + for (int i = 0; i < items.length; i++) { + ((TextView) items[i].findViewById(R.id.label)).setText(labels[i]); + if(items[i].equals(framesItem)){ + items[i].findViewById(R.id.help_btn).setVisibility(View.VISIBLE); + items[i].setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + DialogLauncher.launchMessageDialog(getSupportFragmentManager(), R.string.frame, R.string.frame_about); + } + }); + } + + if(items[i].equals(circlesItem)){ + items[i].findViewById(R.id.help_btn).setVisibility(View.VISIBLE); + items[i].setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + DialogLauncher.launchMessageDialog(getSupportFragmentManager(), R.string.circle, R.string.circle_about); + } + }); + } + + + } + + // Profile Frame + String[] profileLabels = {name, email, phone, aboutMe, website}; + View[] profileItems = {nameItem, emailItem, phoneItem, aboutMeItem, websiteItem}; + for (int i = 0; i < profileItems.length; i++){ + ((TextView) profileItems[i].findViewById(R.id.label)).setText(profileLabels[i]); + } + + } + + @Override + protected void onStart() { + super.onStart(); + if(requestOnFirstTime) + PoinilaNetService.getProfileSettings(); + } + + @Subscribe public void onUserProfileSettingReceived(ProfileSettingReceivedEvent event){ + originalProfile = event.member; + requestOnFirstTime = false; + changedProfile = new Member(originalProfile); + fill(originalProfile); + } + + @Subscribe public void onSimpleSettingValueSet(SimpleSettingTextSetEvent event){ + switch (event.settingType){ + case FullName: + changedProfile.fullName = event.value; + ((TextView) nameItem.findViewById(R.id.value)).setText(changedProfile.fullName); + break; + case EMAIL: + changedProfile.email = event.value; + ((TextView) emailItem.findViewById(R.id.value)).setText(changedProfile.email); + break; + case PHONE: + changedProfile.mobileNumber = event.value; + ((TextView) phoneItem.findViewById(R.id.value)).setText(changedProfile.mobileNumber); + break; + case ABOUT_ME: + changedProfile.aboutMe = event.value; + ((TextView) aboutMeItem.findViewById(R.id.value)).setText(changedProfile.aboutMe); + break; + case WEBSITE: + String[] nameUrl = event.value.split("&"); + ((TextView)websiteItem.findViewById(R.id.value)).setText(nameUrl[0] + "\n" + nameUrl[1]); + changedProfile.urlName = nameUrl[0]; + changedProfile.url = nameUrl[1]; + break; + } + + showProgressDialog(); + PoinilaNetService.updateProfileSetting(changedProfile, event.settingType); + } + +// @OnClick(R.id.profile) +// public void onProfile() { +// NavigationUtils.goToActivity(ProfileSettingActivity.class, getActivity()); +// } + + + @Subscribe + public void onUpdateProfileSettingResponse(UpdateProfileSettingResponse event){ + dismissProgressDialog(); + switch (event.settingType){ + case EMAIL: + DialogLauncher.launchRequestVerificationDialog(getSupportFragmentManager(), R.string.email_change, changedProfile.email, true); + break; + case PHONE: + DialogLauncher.launchRequestVerificationDialog(getSupportFragmentManager(), R.string.phone_change, changedProfile.mobileNumber, false); + break; + default: + Logger.toast(R.string.successfully_updated); + originalProfile = changedProfile; + fill(originalProfile); + } + } + + @Subscribe + public void onAfterVerifyResponse(AfterVerifyResponse event){ + originalProfile = changedProfile; + fill(originalProfile); + } + + @OnClick(R.id.email) + public void onEmail(){ + //TODO + DialogLauncher.launchRequestVerificationDialog(getSupportFragmentManager(), R.string.email_change, changedProfile.email, true); +// ChangeEmailDialog.newInstance(changedProfile.email).show(getSupportFragmentManager(), TAG_CHANGE_EMAIL_DIALOG); + } + + @OnClick(R.id.phone) + public void onPhone(){ + DialogLauncher.launchRequestVerificationDialog(getSupportFragmentManager(), R.string.phone_change, changedProfile.mobileNumber, false); +// ChangePhoneDialog.newInstance(changedProfile.mobileNumber).show(getSupportFragmentManager(), TAG_CHANGE_PHONE_DIALOG); + } + + @OnClick(R.id.password) + public void onPassword() { + NavigationUtils.goToActivity(ChangePasswordActivity.class, getActivity()); + } + + + + @OnClick(R.id.frames) + public void onFrames() { + NavigationUtils.goToActivity(FramesManagementActivity.class, getActivity()); + } + + @OnClick(R.id.circles) + public void onCircles() { + // TODO + NavigationUtils.goToActivity(CirclesManagementActivity.class, getActivity()); + } + + @OnClick(R.id.app_settings) + public void onAppSettings() { + NavigationUtils.goToActivity(AppSettingActivity.class, getActivity()); + } + + @OnClick(R.id.app_notifications) + public void onAppNotifs() { + Intent intent = NavigationUtils.makeNavigationIntent(NotificationSwitchActivity.class, getActivity()); + intent.putExtra(ConstantsUtils.KEY_REQUEST_ID, ConstantsUtils.REQUEST_APPLICATION_NOTIFICATION); + startActivity(intent); + } + + /*@OnClick(R.id.email_notifications) public void onEmailNotifs(){ + Intent intent = NavigationUtils.makeNavigationIntent(NotificationSwitchActivity.class, getActivity()); + intent.putExtra(ConstantsUtils.KEY_REQUEST_ID, ConstantsUtils.REQUEST_EMAIL_NOTIFICATION); + startActivity(intent); + }*/ + + + private String getValue(String value){ + return TextUtils.isEmpty(value) ? "" : value; + } + + + @OnClick(R.id.name) + public void onName(){ + if(changedProfile != null) + ChangeNameDialog.newInstance(getValue(changedProfile.fullName)).show(getSupportFragmentManager(), null); + else + Logger.toastError(R.string.profile_change_not_found); + } + + @OnClick(R.id.about_me) + public void onAboutMe(){ + + if(changedProfile != null) + EditAboutMeDialog.newInstance(getValue(changedProfile.aboutMe)).show(getSupportFragmentManager(), null); + else + Logger.toastError(R.string.profile_change_not_found); + } + + @OnClick(R.id.website) public void onWebsite(){ + + if(changedProfile != null) + ChangeWebsiteDialog.newInstance(getValue(changedProfile.url), getValue(changedProfile.urlName)).show(getSupportFragmentManager(), null); + else + Logger.toastError(R.string.profile_change_not_found); + } + + + @OnClick(R.id.rules) + public void onRules(){ + DialogLauncher.launchMessageDialog(getSupportFragmentManager(), R.string.setting_rules_item, R.string.setting_rule); + } + + private void fill(Member originalProfile) { + String website = ""; + if(!TextUtils.isEmpty(originalProfile.url)) + website = emptyIfNull(originalProfile.urlName) + "\n" + emptyIfNull(originalProfile.url); + else + website = emptyIfNull(originalProfile.urlName); + + String[] values = new String[]{originalProfile.fullName, originalProfile.email, originalProfile.mobileNumber, originalProfile.aboutMe, website}; + View[] items = {nameItem, emailItem, phoneItem, aboutMeItem, websiteItem}; + for (int i = 0; i < values.length; i++) { + ((TextView) items[i].findViewById(R.id.value)).setText(values[i]); + } + } + + @OnClick(R.id.logout) + public void onLogout() { + new PoinilaAlertDialog.Builder().setTitle(R.string.logout). + setMessage(R.string.warning_logout_earase_data). + setPositiveBtnText(R.string.logout). + setNegativeBtnText(R.string.cancel). + build().show(getSupportFragmentManager(), null); + } + + @OnClick(R.id.help) + public void onHelp() { + PageChanger.goToHelpActivity(getActivity(), true); + } + + @OnClick(R.id.contact_us) + public void onContactUs() { + DialogLauncher.launchContactUsDialog(getSupportFragmentManager()); + } + + @OnClick(R.id.about_poinila) + public void onAboutPoinila() { + DialogLauncher.launchAboutPoinila(getFragmentManager()); + } + + @Subscribe + public void onPositiveDialogButton(PositiveButtonClickedUIEvent event) { + if(PonilaAccountManager.getInstance().isSignInWithGoogle()){ + if(PonilaAccountManager.getInstance().isConnectedGoogleApiClient()) { + PonilaAccountManager.getInstance().signOutWithGoogleAPI(new ResultCallback() { + @Override + public void onResult(@NonNull Result result) { + //TODO ANY + } + }); + }else { + Logger.toastError(R.string.error_google_connection); + return; + } + } + + PonilaAccountManager.getInstance().removeUserTag(); + DataRepository.logoutEvent(); + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_setting; + } + + public enum SettingType { + USERNAME, + EMAIL, + CIRCLE_NAME, + NEW_CIRCLE, + NEW_FRAME, + FRAME_NAME, + GENDER, + WEBSITE, + ABOUT_ME, + FullName, + PHONE + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/SignUpLoginActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/SignUpLoginActivity.java new file mode 100755 index 0000000..353ceb9 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/SignUpLoginActivity.java @@ -0,0 +1,220 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.BuildConfig; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.view.dialog.ForgotPasswordFragment; +import com.shaya.poinila.android.presentation.view.fragments.LoginFragment; +import com.shaya.poinila.android.presentation.view.fragments.RegisterFragment; +import com.shaya.poinila.android.presentation.view.fragments.ResetPasswordFragment; +import com.shaya.poinila.android.presentation.view.fragments.VerificationRequestFragment; +import com.shaya.poinila.android.util.DeviceInfoUtils; +import com.shaya.poinila.android.util.Logger; + +import butterknife.Bind; + +public class SignUpLoginActivity extends BaseActivity { + + private static final String KEY_STATE = "state"; + private static final String TAG_LOGIN_FRAGMENT = "login"; + // public static final String PHASE_LOGIN = "select interest"; + @Bind(R.id.welcome_text) + TextView welcome_text; + + private int state; + + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (getIntent().getData() != null) { // TODO + if (BuildConfig.DEBUG) + Logger.toast(getIntent().getData().toString()); + handleUrl(getIntent().getData()); + } else if (savedInstanceState != null) { + // TODO + state = savedInstanceState.getInt(KEY_STATE); + switch (state) { + case ForgotPassword: + goToForgotPassword(); + break; + case Login: + goToLoginFragment(true); + break; + case Register: + goToRegister(null); + break; + case RequestVerificationCode: + goToVerificationRequest(); + break; + case ResetPassword: + goToResetPassword(null); + break; + } + } else { + goToLoginFragment(true); + } + } + + private void handleUrl(Uri uri) { + if (uri.getPath().contains("register")) { + goToRegister(uri.getLastPathSegment()); + /*RegisterFragment fragment = ((RegisterFragment) getSupportFragmentManager().findFragmentById(R.id.content)); + if (fragment.isVisible()) fragment.fillVerificationCode(uri.getLastPathSegment());*/ + + } else if (uri.getPath().contains("resetpassword")) { + goToResetPassword(uri.getLastPathSegment()); + /* ResetPasswordFragment fragment = ((ResetPasswordFragment) getSupportFragmentManager().findFragmentById(R.id.content)); + if (fragment.isVisible()) fragment.fillIdentificationCodeInput();*/ + } + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + outState.putInt(KEY_STATE, state); + super.onSaveInstanceState(outState); + } + + @Override + protected void initUI() { + + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_sign_up_login, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + + //noinspection SimplifiableIfStatement + if (id == R.id.action_settings) { + return true; + } + + return super.onOptionsItemSelected(item); + } + + @Override + protected void handleToolbar() { + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_sign_up_login; + } + + public void goToLoginFragment(boolean proceed) { + if (proceed) { + getSupportFragmentManager().beginTransaction(). + replace(R.id.container, new LoginFragment(), TAG_LOGIN_FRAGMENT). + //addToBackStack(TAG_LOGIN_FRAGMENT). + commit(); + } else { // recede + //getSupportFragmentManager().popBackStack(TAG_LOGIN_FRAGMENT, FragmentManager.POP_BACK_STACK_INCLUSIVE); + // temp + getSupportFragmentManager().beginTransaction(). + replace(R.id.container, new LoginFragment(), TAG_LOGIN_FRAGMENT). + //addToBackStack(TAG_LOGIN_FRAGMENT). + commit(); + } + welcome_text.setText(R.string.welcome_text); + welcome_text.setOnClickListener(null); + + state = Login; + } + + public void goToRegister(String code, boolean byEmail, String emailOrPhone) { + getSupportFragmentManager().beginTransaction(). + setCustomAnimations(R.anim.fade_in, R.anim.fade_out). + replace(R.id.container, RegisterFragment.newInstance(code, byEmail, emailOrPhone)). + //addToBackStack(null). + commit(); + + state = Register; + } + + public void goToRegister(String code) { + getSupportFragmentManager().beginTransaction(). + setCustomAnimations(R.anim.fade_in, R.anim.fade_out). + replace(R.id.container, code != null ? RegisterFragment.newInstance(code) : new RegisterFragment()). + //addToBackStack(null). + commit(); + + state = Register; + } + + public void goToVerificationRequest() { + getSupportFragmentManager().beginTransaction(). + setCustomAnimations(R.anim.fade_in, R.anim.fade_out). + replace(R.id.container, new VerificationRequestFragment()). + //addToBackStack(null). + commit(); + + showLoginText(); + + state = RequestVerificationCode; + } + + private void showLoginText() { + welcome_text.setText(R.string.already_registered); + welcome_text.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + goToLoginFragment(false); + } + }); + } + + public void goToResetPassword(String code) { + getSupportFragmentManager().beginTransaction(). + setCustomAnimations(R.anim.fade_in, R.anim.fade_out). + replace(R.id.container, code != null ? ResetPasswordFragment.newInstance(code) : new ResetPasswordFragment()). + //addToBackStack(null). + commit(); + + state = ResetPassword; + } + + public void goToForgotPassword() { + getSupportFragmentManager().beginTransaction(). + setCustomAnimations(R.anim.fade_in, R.anim.fade_out). + replace(R.id.container, new ForgotPasswordFragment()). + //addToBackStack(null). + commit(); + + showLoginText(); + + state = ForgotPassword; + /*new PoinilaDialog.Builder().setTitle(R.string.recover_password) + .setMessage(R.string.recover_password_message).setPositiveText(R.string.submit).setNegativeText(R.string.cancel) + .setBody(new ForgotPasswordFragment()) + .build().show(getChildFragmentManager(), null);*/ + } + + private static final int Login = 1; + private static final int RequestVerificationCode = 2; + private static final int ResetPassword = 3; + private static final int ForgotPassword = 4; + private static final int Register = 5; +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/SplashActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/SplashActivity.java new file mode 100755 index 0000000..9ed7e1f --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/SplashActivity.java @@ -0,0 +1,115 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.os.Bundle; +import android.os.Handler; + +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.ConnectionUitls; +import com.shaya.poinila.android.util.NavigationUtils; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.utils.PonilaAccountManager; +import com.squareup.otto.Subscribe; + +import data.PoinilaNetService; +import data.event.MyInfoReceivedEvent; +import data.model.Member; +import manager.DBFacade; +import manager.DataRepository; + + +public class SplashActivity extends BaseActivity { + + // Splash screen timer + private static int SPLASH_TIME_OUT = 2500; + private long start; + private boolean responseIsReceived = false; + private long MIN_SPLASH_DURATION = 1000; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); + } + + @Override + protected void handleToolbar() { + + } + + @Override + protected void onStart() { + super.onStart(); + + sendPreliminaryRequests(); + new Handler().postDelayed(new Runnable() { + + /* + * Showing splash screen with a timer. This will be useful when you + * want to show case your app logo / company + */ + + @Override + public void run() { + // This method will be executed once the timer is over + // Start your app main activity + if (!responseIsReceived) { + navigateFromSplashScreen(); + } + } + }, SPLASH_TIME_OUT); + } + + @Override + protected void initUI() { + + } + + private void navigateFromSplashScreen() { +// Member cachedMember = DBFacade.getCachedMyInfo(); +// boolean hasAnonymouslyLoggedInBefore = responseIsReceived ? +// DataRepository.isUserAnonymous() : +// (cachedMember == null || cachedMember.isAnonymous); // first time || has cached guest info + + if(PonilaAccountManager.getInstance().ponilaAccountExists()){ + goToDashboard(); + }else if (!PoinilaPreferences.hasSeenHelp()) + PageChanger.goToHelpActivity(getActivity(), false); + else + goToLogin(); + +// if (!TextUtils.isEmpty(PoinilaPreferences.getAuthToken()) && !hasAnonymouslyLoggedInBefore) { +// // normal authenticated user +// goToDashboard(); +// } else if (!PoinilaPreferences.hasSeenHelp()) +// PageChanger.goToHelpActivity(getActivity(), false); +// else { +// goToLogin(); +// } + } + + private void sendPreliminaryRequests() { + //start = System.currentTimeMillis(); + DataRepository.getInstance(); + PoinilaNetService.getRemainedInvites(); // DataRepository receives the event + PoinilaNetService.getServerTime(); + PoinilaNetService.getSystemPreferences(); + } + + private void goToLogin() { + PageChanger.goToLoginActivity(getActivity()); + finish(); + } + + private void goToDashboard() { + NavigationUtils.goToActivity(MainActivity.class, getActivity()); + finish(); + } + + @Override + protected int getLayoutResourceId() { + return R.layout.activity_splash; + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/ToolbarActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/ToolbarActivity.java new file mode 100755 index 0000000..f84efdd --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/ToolbarActivity.java @@ -0,0 +1,45 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.os.Bundle; +import android.support.v7.app.ActionBar; +import android.support.v7.widget.Toolbar; +import android.view.View; +import android.view.ViewGroup; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.activity.BaseActivity; + +/** + * Created by iran on 2015-08-09. + */ +public abstract class ToolbarActivity extends BaseActivity { + + protected Toolbar toolbar; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + protected View getActivityView() { + ViewGroup vp = (ViewGroup) getLayoutInflater().inflate(getLayoutResourceId(), null); + toolbar = (Toolbar) getLayoutInflater().inflate(R.layout.toolbar, vp, false); + handleToolbar(); + vp.addView(toolbar, 0); + return vp; + } + + @Override + protected void handleToolbar() { + //Toolbar toolbar = ButterKnife.findById(this, R.actorID.toolbar); + setSupportActionBar(toolbar); + + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null){ + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setHomeButtonEnabled(true); + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/activity/WebviewActivity.java b/src/main/java/com/shaya/poinila/android/presentation/view/activity/WebviewActivity.java new file mode 100755 index 0000000..1431d6d --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/activity/WebviewActivity.java @@ -0,0 +1,222 @@ +package com.shaya.poinila.android.presentation.view.activity; + +import android.annotation.SuppressLint; +import android.app.Fragment; +import android.os.Build; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.util.Patterns; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.webkit.WebChromeClient; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import android.widget.ProgressBar; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.fragments.BusFragment; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.NavigationUtils; + +import java.util.HashMap; +import java.util.Map; + +import butterknife.Bind; +import data.PoinilaNetService; +import manager.DataRepository; + +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ENTITY; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_PAGE_TITLE_PARAMETER; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_POST_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_WEBSITE_URL; + +public class WebviewActivity extends FragmentHostActivity { + + @Override + protected android.support.v4.app.Fragment getHostedFragment() { + return PoinilaWebViewFragment.newInstance( + getIntent().getStringExtra(KEY_WEBSITE_URL), + getIntent().getStringExtra(KEY_PAGE_TITLE_PARAMETER), + getIntent().getStringExtra(KEY_ENTITY)); + } + + @Override + protected boolean withToolbar() { + return true; + } + + @Override + protected void initUI() { + } + + public static String getPostUrl(String postId){ + return ConstantsUtils.POINILA_SERVER_ADDRESS.concat("post/" + postId + "/"); + } + + public static class PoinilaWebViewFragment extends BusFragment { + @Bind(R.id.webview) + WebView webview; + ProgressBar progressBar; + + private String postId, url, pageTitle; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + + url = getArguments().getString(KEY_WEBSITE_URL); + pageTitle = getArguments().getString(KEY_PAGE_TITLE_PARAMETER); + postId = getArguments().getString(KEY_POST_ID); + + if (!DataRepository.isUserAnonymous()) + PoinilaNetService.informServerOfInlineBrowsing(postId); + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + menu.clear(); + inflater.inflate(R.menu.menu_inline_browser, menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == R.id.browser) { + if (!DataRepository.isUserAnonymous()) + PoinilaNetService.informServerOfExternalBrowsing(postId); + + Bundle extraHeaders = new Bundle(); + extraHeaders.putString("Referer", getPostUrl(postId)); + NavigationUtils.goToUrl(getActivity(), url, extraHeaders); + return true; + } + return super.onOptionsItemSelected(item); + } + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + } + + @Override + public ViewGroup getLoadableView() { + return webview; + } + + @Override + public boolean mustShowProgressView() { + return true; + } + + @Override + public int getLayoutID() { + return R.layout.fragment_webview; + } + + /*@Override + public ProgressBar getProgressBar() { + ProgressBar progressBar = ButterKnife.findById(progressView, R.id.progress_bar); + if (progressBar == null){ + progressBar = new ProgressBar(getActivity(), null, android.R.attr.progressBarStyleHorizontal); + progressBar.setIndeterminate(false); + } + return progressBar; + }*/ + + @Override + protected void initProgressBar(ProgressBar progressBar) { + + } + + @Override + protected int getProgressViewLayoutID() { + return R.layout.progress_determinate; + } + + @SuppressLint("SetJavaScriptEnabled") + @Override + protected void initUI() { + if (url == null || !Patterns.WEB_URL.matcher(url).matches()) { + Logger.toastError(R.string.error_invalid_url); + getActivity().finish(); + return; + } + getActivity().setTitle(pageTitle); + + webview.getSettings().setJavaScriptEnabled(true); + webview.getSettings().setAllowContentAccess(false); + webview.getSettings().setAllowFileAccess(false); + webview.getSettings().setDomStorageEnabled(true); + webview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); + webview.getSettings().setAppCacheEnabled(true); + webview.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); + webview.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); + + webview.getSettings().setSupportZoom(true); + webview.getSettings().setBuiltInZoomControls(true); + webview.getSettings().setDisplayZoomControls(false); + + webview.setInitialScale(1); + webview.getSettings().setLoadWithOverviewMode(true); + webview.getSettings().setUseWideViewPort(true); + webview.getSettings().setSaveFormData(true); + + if (Build.VERSION.SDK_INT >= 17) { + webview.getSettings().setMediaPlaybackRequiresUserGesture(false); + } + + + + if (Build.VERSION.SDK_INT >= 19) { + webview.setLayerType(View.LAYER_TYPE_HARDWARE, null); + } + else { + webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null); + } + + webview.setWebChromeClient(new WebChromeClient() { + public void onProgressChanged(WebView view, int progress) { + // Activities and WebViews measure progress with different scales. + // The progress meter will automatically disappear when we reach 100% + getProgressBar().setProgress(progress); + if (progress == 100) + onGettingInitDataResponse(null); + } + }); + webview.setWebViewClient(new WebViewClient() { + // disable page navigation through webview. webview must show only the initial url + @Override + public boolean shouldOverrideUrlLoading(WebView view, String url) { + if (url != null && Patterns.WEB_URL.matcher(url).matches()) { + NavigationUtils.goToUrl(getActivity(), url, null); + } + return true; + } + }); + + // from Wikipedia: The HTTP referrer (originally a misspelling of referrer)... + // So don't change the string!! + Map extraHeaders = new HashMap<>(); + extraHeaders.put("Referer", getPostUrl(postId)); + webview.loadUrl(url, extraHeaders); + } + + public static android.support.v4.app.Fragment newInstance(String url, String pageTitle, String postId) { + PoinilaWebViewFragment fragment = new PoinilaWebViewFragment(); + Bundle b = new Bundle(); + b.putString(KEY_WEBSITE_URL, url); + b.putString(KEY_PAGE_TITLE_PARAMETER, pageTitle); + b.putString(KEY_POST_ID, postId); + fragment.setArguments(b); + return fragment; + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/ActivityResultPermissionDelegate.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/ActivityResultPermissionDelegate.java new file mode 100755 index 0000000..b210483 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/ActivityResultPermissionDelegate.java @@ -0,0 +1,131 @@ +package com.shaya.poinila.android.presentation.view.costom_view; + +import android.app.Activity; +import android.app.Fragment; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.pm.PackageManager; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v13.app.FragmentCompat; +import android.support.v4.app.ActivityCompat; +import android.support.v7.app.AppCompatActivity; +import android.util.Log; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.PermissionEvent; +import com.shaya.poinila.android.presentation.view.activity.BaseActivity; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.PoinilaPreferences; + +import static android.app.Activity.RESULT_OK; + +/** + * Created by iran on 12/13/2015. + */ +public interface ActivityResultPermissionDelegate { + void onActivityResult(int requestCode, int resultCode, Intent data); + + void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults); + + + // -------------------- + + + abstract class SimpleActivityResultPermissionDelegate implements ActivityResultPermissionDelegate { + + public void startForResult(AppCompatActivity activity, Intent intent, int requestCode) { + activity.startActivityForResult(intent, requestCode); + } + + public void startForResult(android.support.v4.app.Fragment fragment, Intent intent, int requestCode) { + fragment.startActivityForResult(intent, requestCode); + } + + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (resultCode != RESULT_OK) + return; + handleValidResults(requestCode, data); + } + + public abstract void handleValidResults(int requestCode, Intent data); + + public void askForPermission(Activity activity, String permission, int requestCode){ + ActivityCompat.requestPermissions(activity, new String[]{permission}, requestCode); + } + + public void askForPermission(android.support.v4.app.Fragment fragment, String permission, int requestCode){ + fragment.requestPermissions(new String[]{permission}, requestCode); + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + if (requestCode == BaseActivity.MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE){ + if (grantResults.length > 0 + && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + // permission was granted, yay! + handlePermissionGranted(); + } else { + // permission denied, boo! Disable the + // functionality that depends on this permission. + handlePermissionDenied(); + } + } + } + + public abstract void handlePermissionDenied(); + + public abstract void handlePermissionGranted(); + } + + // --------------------- + + abstract class ImagePickerResultPermissionDelegate extends SimpleActivityResultPermissionDelegate { + protected String imageAddress; + public String getImageAddress() { + return imageAddress; + } + + @Override + public void handleValidResults(int requestCode, Intent data) { + + switch (requestCode) { + case ConstantsUtils.REQUEST_CODE_TAKE_PHOTO: + imageAddress = PoinilaPreferences.getCapturedImageAddress(); // using no media_output in capture image intent + break; + case ConstantsUtils.REQUEST_CODE_PICK_IMAGE: + imageAddress = data.getData().toString(); + break; + } + } + + public void handlePermissionDenied(){ + Logger.toast(R.string.permission_reason_camera); + } + } + + // ----------------------- +/* + class SmsPermissionHandler extends SimpleActivityResultPermissionDelegate{ + + @Override + public void handlePermissionDenied() { + Logger.longToast(getString(R.string.permission_reason_sms)); + smsPermissionDeclined = true; + } + + @Override + public void handlePermissionGranted() { + getActivity().registerReceiver(smsReceiver, new IntentFilter("android.provider.Telephony.SMS_RECEIVED")); + } + + public registerSmsReceiver(Activity activity){ + + } + + @Override + public void handleValidResults(int requestCode, Intent data) {}// we don't start activity for result, a better design perhaps. + }*/ +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/AspectRatioImageView.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/AspectRatioImageView.java new file mode 100755 index 0000000..3e75dff --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/AspectRatioImageView.java @@ -0,0 +1,110 @@ +package com.shaya.poinila.android.presentation.view.costom_view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.widget.ImageView; + +import com.shaya.poinila.android.presentation.R; + +// Copyright 2012 Square, Inc. + +/** Maintains an aspect ratio based on either width or height. Disabled by default. + * Created by iran on 2015-08-05. + */ +public class AspectRatioImageView extends ImageView { + // NOTE: These must be kept in sync with the AspectRatioImageView attributes in attrs.xml. + public static final int MEASUREMENT_WIDTH = 0; + public static final int MEASUREMENT_HEIGHT = 1; + + private static final float DEFAULT_ASPECT_RATIO = 1f; + private static final boolean DEFAULT_ASPECT_RATIO_ENABLED = false; + private static final int DEFAULT_DOMINANT_MEASUREMENT = MEASUREMENT_WIDTH; + + private float aspectRatio; + private boolean aspectRatioEnabled; + private int dominantMeasurement; + + public AspectRatioImageView(Context context) { + this(context, null); + } + + public AspectRatioImageView(Context context, AttributeSet attrs) { + super(context, attrs); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AspectRatioImageView); + aspectRatio = a.getFloat(R.styleable.AspectRatioImageView_aspectRatio, DEFAULT_ASPECT_RATIO); + aspectRatioEnabled = a.getBoolean(R.styleable.AspectRatioImageView_aspectRatioEnabled, + DEFAULT_ASPECT_RATIO_ENABLED); + dominantMeasurement = a.getInt(R.styleable.AspectRatioImageView_dominantMeasurement, + DEFAULT_DOMINANT_MEASUREMENT); + a.recycle(); + } + + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + if (!aspectRatioEnabled) return; + + int newWidth; + int newHeight; + switch (dominantMeasurement) { + case MEASUREMENT_WIDTH: + newWidth = getMeasuredWidth(); + newHeight = (int) (newWidth * aspectRatio); + break; + + case MEASUREMENT_HEIGHT: + newHeight = getMeasuredHeight(); + newWidth = (int) (newHeight * aspectRatio); + break; + + default: + throw new IllegalStateException("Unknown measurement with ID " + dominantMeasurement); + } + + setMeasuredDimension(newWidth, newHeight); + } + + /** Get the aspect ratio for this image view. */ + public float getAspectRatio() { + return aspectRatio; + } + + /** Set the aspect ratio for this image view. This will update the view instantly. */ + public void setAspectRatio(float aspectRatio) { + this.aspectRatio = aspectRatio; + if (aspectRatioEnabled) { + requestLayout(); + } + } + + /** Get whether or not forcing the aspect ratio is enabled. */ + public boolean getAspectRatioEnabled() { + return aspectRatioEnabled; + } + + /** set whether or not forcing the aspect ratio is enabled. This will re-layout the view. */ + public void setAspectRatioEnabled(boolean aspectRatioEnabled) { + this.aspectRatioEnabled = aspectRatioEnabled; + requestLayout(); + } + + /** Get the dominant measurement for the aspect ratio. */ + public int getDominantMeasurement() { + return dominantMeasurement; + } + + /** + * Set the dominant measurement for the aspect ratio. + * + * @see #MEASUREMENT_WIDTH + * @see #MEASUREMENT_HEIGHT + */ + public void setDominantMeasurement(int dominantMeasurement) { + if (dominantMeasurement != MEASUREMENT_HEIGHT && dominantMeasurement != MEASUREMENT_WIDTH) { + throw new IllegalArgumentException("Invalid measurement type."); + } + this.dominantMeasurement = dominantMeasurement; + requestLayout(); + } +} \ No newline at end of file diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/BackForthButtonsBox.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/BackForthButtonsBox.java new file mode 100755 index 0000000..fb75110 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/BackForthButtonsBox.java @@ -0,0 +1,89 @@ +package com.shaya.poinila.android.presentation.view.costom_view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.widget.Button; +import android.widget.LinearLayout; + +import com.shaya.poinila.android.presentation.R; + +import butterknife.Bind; +import butterknife.ButterKnife; +import butterknife.OnClick; + +/** + * Created by iran on 12/6/2015. + */ +public class BackForthButtonsBox extends LinearLayout { + + String lastButtonText = null; + String nextButtonText = null; + + @Bind(R.id.next_button) + Button nextButton; + @Bind(R.id.last_button) + Button lastButton; + + public BackForthButtonsBox(Context context) { + super(context); + + init(context); + } + + private void init(Context context) { + setOrientation(LinearLayout.HORIZONTAL); + setGravity(Gravity.CENTER_HORIZONTAL); + setWeightSum(2); + + LayoutInflater.from(context).inflate(R.layout.next_last_buttons, this, true); + ButterKnife.bind(this, this); + + nextButton.setText(nextButtonText == null ? context.getString(R.string.next_phase) : nextButtonText); + lastButton.setText(lastButtonText == null ? context.getString(R.string.last_phase) : lastButtonText); + } + + public BackForthButtonsBox(Context context, AttributeSet attrs) { + super(context, attrs); + TypedArray typedArray; + typedArray = context.obtainStyledAttributes(attrs, R.styleable.BackForthButtonsBox); + lastButtonText = typedArray.getString(R.styleable.BackForthButtonsBox_last_button_text); + nextButtonText = typedArray.getString(R.styleable.BackForthButtonsBox_next_button_text); + + typedArray.recycle(); + + init(context); + } + + @OnClick(R.id.next_button) + public void onForth() { + if (listener != null) { + listener.onForth(); + } + } + + @OnClick(R.id.last_button) + public void onBack() { + if (listener != null) { + listener.onBack(); + } + } + + public OnBackForthListener getBackForthListener() { + return listener; + } + + public void setBackForthListener(OnBackForthListener listener) { + this.listener = listener; + } + + private OnBackForthListener listener; + + public interface OnBackForthListener { + void onBack(); + + void onForth(); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/CustomScrollView.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/CustomScrollView.java new file mode 100755 index 0000000..0fb5121 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/CustomScrollView.java @@ -0,0 +1,62 @@ +package com.shaya.poinila.android.presentation.view.costom_view; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.widget.ScrollView; + +/** + * Created by iran on 2015-09-01. + */ +public class CustomScrollView extends ScrollView { + private ScrollViewListener scrollViewListener = null; + public CustomScrollView(Context context) { + super(context); + } + + public CustomScrollView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public CustomScrollView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public void setScrollViewListener(ScrollViewListener scrollViewListener) { + this.scrollViewListener = scrollViewListener; + } + + @Override + protected void onScrollChanged(int l, int t, int oldl, int oldt) { + super.onScrollChanged(l, t, oldl, oldt); + if (scrollViewListener != null) { + scrollViewListener.onScrollChanged(this, l, t, oldl, oldt); + } + } + + /*---Post activity. related post----*/ + public void setLastNoneListViewItem(View lastNoneListViewItem) { + this.lastNoneListViewItem = lastNoneListViewItem; + } + + View lastNoneListViewItem; + + @Override + public boolean onInterceptTouchEvent(@NonNull MotionEvent ev) { + /* + * This method JUST determines whether we want to intercept the motion. + * If we return true, onTouchEvent will be called and we do the actual + * scrolling there. + */ + if (lastNoneListViewItem != null) { + int diff = (getScrollY() - lastNoneListViewItem.getBottom()); + boolean lastScrollViewItemVisible = (diff < 0); + if (!lastScrollViewItemVisible || !canScrollVertically(-1)){ + return false; + } + } + return super.onInterceptTouchEvent(ev); + } +} \ No newline at end of file diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/EditCollectionImagePickerView.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/EditCollectionImagePickerView.java new file mode 100755 index 0000000..2b802b9 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/EditCollectionImagePickerView.java @@ -0,0 +1,63 @@ +package com.shaya.poinila.android.presentation.view.costom_view; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.ImageButton; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.ImageClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PermissionEvent; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.Logger; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import butterknife.OnClick; +import butterknife.OnLongClick; + +/** + * Created by AlirezaF on 12/24/2015. + */ +public class EditCollectionImagePickerView extends GalleryCameraImagePickerView{ + @Bind(R.id.cover_from_posts) ImageButton pickCoverFromPostBtn; + + public EditCollectionImagePickerView(Context context) { + this(context, null); + } + + public EditCollectionImagePickerView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public EditCollectionImagePickerView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @OnLongClick public boolean showPickFromPostsHint(){ + Logger.toast(R.string.hint_coverFromPosts); + return true; + } + + @OnClick(R.id.cover_from_posts) public void onPickCoverFromPosts(){ + if (listener != null) listener.onPickCoverFromPosts(); + } + + + @Override + protected void init() { + ViewUtils.setViewsVisibilityToVisible(findViewById(R.id.pick_from_posts_left_divider), pickCoverFromPostBtn); + super.init(); + } + + OnPickCoverFromPostsListener listener; + public interface OnPickCoverFromPostsListener{ + void onPickCoverFromPosts(); + } + + public void setOnPickCoverFromPostsListener(OnPickCoverFromPostsListener listener){ + this.listener = listener; + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/GalleryCameraImagePickerView.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/GalleryCameraImagePickerView.java new file mode 100755 index 0000000..9a0cc03 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/GalleryCameraImagePickerView.java @@ -0,0 +1,423 @@ +package com.shaya.poinila.android.presentation.view.costom_view; + +import android.Manifest; +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.os.Parcel; +import android.os.Parcelable; +import android.support.annotation.IntDef; +import android.support.annotation.LayoutRes; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageButton; +import android.widget.LinearLayout; + +import com.isseiaoki.simplecropview.CropImageView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.PermissionEvent; +import com.shaya.poinila.android.presentation.uievent.SelectImageEvent; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.DeviceInfoUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.ResourceUtils; +import com.shaya.poinila.android.util.StorageUtils; +import com.squareup.picasso.Picasso; +import com.squareup.picasso.Target; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; + +import butterknife.Bind; +import butterknife.ButterKnife; +import butterknife.OnClick; +import butterknife.OnLongClick; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setViewsVisibilityToGone; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setViewsVisibilityToVisible; + +/** + * Created by iran on 12/1/2015. + */ +public class GalleryCameraImagePickerView extends FrameLayout implements ImagePickerCropper { + + // related to crop + @Bind(R.id.cropView) + CropImageView mCropImageView; + + @Bind(R.id.doneButton) + ImageButton mDoneButton; + @Bind(R.id.removeButton) + ImageButton mRemoveButton; + @Bind(R.id.cropButton) + ImageButton mCropButton; + // related to rotate + @Bind(R.id.rotateRightButton) + ImageButton mRotateRightButton; + @Bind(R.id.rotateLeftButton) + ImageButton mRotateLeftButton; + + //TODO: ability to rotate image in factor of 90 degrees + //@Bind(R.id.doneButton) ImageButton mRotateButton; + + // related to pick image + @Bind(R.id.pick_image_container) + LinearLayout mPickerLayout; + @Bind(R.id.galleryButton) + ImageButton mGalleryButton; + @Bind(R.id.cameraButton) + ImageButton mCameraButton; + @Bind(R.id.image_container) + ViewGroup mCropViewContainer; + + public ShowMode showMode = ShowMode.Selecting; + public Policy policy = Policy.FullFeatures; + private boolean waitingForPermissionGrant = false; + protected Target picassoTarget = new Target() { + @Override + public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { + setImage(bitmap); + } + @Override + public void onBitmapFailed(Drawable errorDrawable) {} + @Override + public void onPrepareLoad(Drawable placeHolderDrawable) {} + }; + + + public Bitmap getImage() { + switch (showMode) { + case Showing: + return getImageBitmap(); + case Cropping: + return getCroppedImageBitmap(); + } + return null; + } + + public boolean hasImage() { + return showMode != ShowMode.Selecting; + } + + public boolean isInCropMode() { + return showMode == ShowMode.Cropping; + } + + public enum ShowMode { + Cropping, + Showing, + Selecting + } + + public enum Policy { + FullFeatures, + NoFeature, + CropFullScreen, + } + + public GalleryCameraImagePickerView(Context context) { + this(context, null); + } + + public GalleryCameraImagePickerView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public GalleryCameraImagePickerView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + LayoutInflater inflater = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)); + inflater.inflate(getLayoutId(), this, true); + ButterKnife.bind(this, this); + + TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.GalleryCameraImagePickerView, defStyle, 0); + if (ta.getInt(R.styleable.GalleryCameraImagePickerView_crop_ratio, 1) == 2) + mCropImageView.setCropMode(CropImageView.CropMode.RATIO_FREE); + ta.recycle(); + + init(); + } + + protected void init() { + switch (showMode) { + case Cropping: + goToCropMode(); + break; + case Showing: + goToShowMode(); + break; + case Selecting: + goToSelectMode(); + break; + } + } + + private + @LayoutRes + int getLayoutId() { + return R.layout.crop_image; + } + + /*---------------ImagePickerCropper------------*/ + + /** + * Manually sets picker view image to passed bitmap. Usage is discouraged. Use {@link #setImage(String)} instead + * + * @param bitmap + */ + @Override + public void setImage(Bitmap bitmap) { + mCropImageView.setImageBitmap(bitmap); + onImageSet(); + } + + /** + * Gives an address in form of absolute file address, content uri and url and renders it using + * picasso api and set it as cropView image. + * + * @param address + */ + @Override + public void setImage(String address) { + // Picasso can't handle addresses in form of "/mnt/sdcard0..." "/storage/..." + + address = StorageUtils.isLocalNonContentFile(address) ? StorageUtils.toSchemedFileAddress(address) : address; + + Picasso.with(getContext()).load(address). + resize(ResourceUtils.getDisplayMetrics().widthPixels, ResourceUtils.getDisplayMetrics().heightPixels). + centerInside(). + config(Bitmap.Config.ARGB_8888). + into(mCropImageView); + + onImageSet(); + } + + // good place for declaring custom behaviors + private void onImageSet() { + mPickerLayout.setVisibility(View.GONE); + switch (policy){ + case CropFullScreen: + case FullFeatures: + goToCropMode(); + break; + case NoFeature: + goToShowMode(); + break; + } + } + + /** + * Changes the state of the view (updates the buttons) and replaces the bitmap with cropped bitmap + */ + @OnClick(R.id.doneButton) + public void submitCrop() { + cropImage(); + goToShowMode(); + } + + public void goToShowMode() { + mCropViewContainer.setVisibility(View.VISIBLE); + if (policy == Policy.FullFeatures) { + setViewsVisibilityToVisible(mRemoveButton, mCropButton); + setViewsVisibilityToGone(mDoneButton, mRotateLeftButton, mRotateRightButton); + } else if (policy == Policy.NoFeature || policy == Policy.CropFullScreen) { + setViewsVisibilityToGone(new ArrayList(Arrays.asList( + mDoneButton, mRemoveButton, mCropButton, mRotateLeftButton, mRotateRightButton))); + } + mCropImageView.setCropEnabled(false); + showMode = ShowMode.Showing; + } + + /** + * Not used normally. If you just want to invoke crop process call {@link #submitCrop()} instead. + */ + @OnClick(R.id.cropButton) + public void goToCropMode() { + mCropViewContainer.setVisibility(View.VISIBLE); + + if (policy == Policy.FullFeatures) { + setViewsVisibilityToVisible(new ArrayList(Arrays.asList(mRemoveButton, mDoneButton, mRotateLeftButton, mRotateRightButton))); + setViewsVisibilityToGone(new ArrayList(Collections.singletonList(mCropButton))); + } else if (policy == Policy.CropFullScreen) { + setViewsVisibilityToVisible(new ArrayList(Arrays.asList(mRotateLeftButton, mRotateRightButton))); + setViewsVisibilityToGone(new ArrayList(Arrays.asList(mCropButton, mDoneButton, mRemoveButton))); + } + mCropImageView.setCropEnabled(true); + showMode = ShowMode.Cropping; + } + + @Override + @OnClick(R.id.removeButton) + public void removeImage() { + goToSelectMode(); + } + + private void goToSelectMode() { + mPickerLayout.setVisibility(View.VISIBLE); + mCropViewContainer.setVisibility(View.GONE); + showMode = ShowMode.Selecting; + } + + /** + * Not used normally. If you just want to invoke crop process call {@link #submitCrop()} instead.
+ * Crops the image and set it as new image resource + */ + @Override + public void cropImage() { + mCropImageView.setImageBitmap(mCropImageView.getCroppedBitmap()); + } + + /** + * For getting bitmap considering picker view state call {@link #getImage()} + * + * @return picker view initial bitmap + */ + @Override + public Bitmap getImageBitmap() { + return mCropImageView.getImageBitmap(); + } + + // TODO: use BitmapRegionDecoder for cropping original image + + /** + * For getting bitmap considering picker view state call {@link #getImage()} + * + * @return bitmap in crop region + */ + @Override + public Bitmap getCroppedImageBitmap() { + return mCropImageView.getCroppedBitmap(); + } + + + //Define the list of accepted constants + @IntDef({ROTATE_RIGHT_90, ROTATE_LEFT_90}) + //Tell the compiler not to store annotation data in the .class file + @Retention(RetentionPolicy.SOURCE) + //Declare the NavigationMode annotation + public @interface RotateStep { + } + + public static final int ROTATE_RIGHT_90 = 270; + public static final int ROTATE_LEFT_90 = 90; + + @Override + public void rotate(@RotateStep int degrees) { + if (degrees == ROTATE_RIGHT_90) { + mCropImageView.rotateImage(CropImageView.RotateDegrees.ROTATE_90D); + } else if (degrees == ROTATE_LEFT_90) { + mCropImageView.rotateImage(CropImageView.RotateDegrees.ROTATE_270D); + } else { + throw new IllegalArgumentException("use either ROTATE_RIGHT_90 or ROTATE_LEFT_90"); + } + } + + @OnClick(R.id.rotateRightButton) + void rotateRight90Degrees() { + rotate(ROTATE_RIGHT_90); + } + + @OnClick(R.id.rotateLeftButton) + void rotateLeft90Degrees() { + rotate(ROTATE_LEFT_90); + } + + @OnClick(R.id.cameraButton) + public void pickFromCamera() { + BusProvider.getBus().post(new PermissionEvent(Manifest.permission.WRITE_EXTERNAL_STORAGE)); + } + + @OnLongClick(R.id.cameraButton) + public boolean showCameraHint() { + Logger.toast(R.string.hint_take_picture); + return true; + } + + @OnClick(R.id.galleryButton) + public void pickFromGallery() { + BusProvider.getBus().post(new SelectImageEvent( + StorageUtils.dispatchSelectImageIntent(), ConstantsUtils.REQUEST_CODE_PICK_IMAGE)); + } + + @OnLongClick(R.id.galleryButton) + public boolean showGalleryHint() { + Logger.toast(R.string.hint_pick_from_gallery); + return true; + } + + public void startPickingFromCamera() { + + } + + + // Save/Restore support //////////////////////////////////////////////////////////////////////// + + @Override + public Parcelable onSaveInstanceState() { + Parcelable superState = super.onSaveInstanceState(); + SavedState ss = new SavedState(superState); + ss.showMode = this.showMode; + ss.policy = this.policy; + return ss; + } + + @Override + public void onRestoreInstanceState(Parcelable state) { + SavedState ss = (SavedState) state; + super.onRestoreInstanceState(ss.getSuperState()); + this.showMode = ss.showMode; + this.policy = ss.policy; + } + + public static class SavedState extends BaseSavedState { + ShowMode showMode; + Policy policy; + + SavedState(Parcelable superState) { + super(superState); + } + + private SavedState(Parcel in) { + super(in); + showMode = (ShowMode) in.readSerializable(); + policy = (Policy) in.readSerializable(); + } + + @Override + public void writeToParcel(Parcel out, int flag) { + super.writeToParcel(out, flag); + out.writeSerializable(showMode); + out.writeSerializable(policy); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + public SavedState createFromParcel(final Parcel inParcel) { + return new SavedState(inParcel); + } + + public SavedState[] newArray(final int inSize) { + return new SavedState[inSize]; + } + }; + } + + /*@Subscribe public void onPermissionResult(PermissionEvent event){ + if (!waitingForPermissionGrant) + return; + + if (event.requestCode == BaseActivity.MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE){ + if (event.granted){ + BusProvider.getBus().post(new SelectImageEvent( + StorageUtils.dispatchCapturePhotoIntent(), ConstantsUtils.REQUEST_CODE_TAKE_PHOTO)); + } else + Logger.longToast(getContext().getString(R.string.permission_reason_camera)); + } + }*/ +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/HorizontalChipsLayout.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/HorizontalChipsLayout.java new file mode 100755 index 0000000..82245fc --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/HorizontalChipsLayout.java @@ -0,0 +1,86 @@ +package com.shaya.poinila.android.presentation.view.costom_view; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.util.AttributeSet; +import android.view.View; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.viewholder.RemovableTagViewHolder; + +/** + * Created by iran on 12/16/2015. + */ +public class HorizontalChipsLayout extends RecyclerView { + + private RecyclerViewAdapter> mAdapter; + + public HorizontalChipsLayout(Context context) { + this(context, null); + } + + public HorizontalChipsLayout(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public HorizontalChipsLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context, attrs); + } + + private void init(Context context, AttributeSet attrs) { + // Load attributes + //final TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.RemovableChipView, defStyle, 0); + //a.recycle(); + + mAdapter = new RecyclerViewAdapter>(context, R.layout.removable_chip) { + @Override + protected RemovableTagViewHolder getProperViewHolder(View v, int viewType) { + return new RemovableTagViewHolder(v) { + @Override + public void fill(String s) { + textView.setText(s); + } + }; + } + }; + new RecyclerViewProvider(new RecyclerView(context)). + setAdapter(mAdapter). + setLinearLayoutManager(VERTICAL). + bindViewToAdapter(); + + for (int i = 0; i < 4; i++) { + mAdapter.addItem("fsdlkjf"); + } + } + + + + /*private static class ChipsAdapter extends RecyclerView.Adapter{ + + + public ChipsAdapter(){ + + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + return null; + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + + } + + @Override + public int getItemCount() { + return 0; + } + }*/ + + + //public static class RemovableChip extends {} +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/ImagePickerCropper.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/ImagePickerCropper.java new file mode 100755 index 0000000..a974778 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/ImagePickerCropper.java @@ -0,0 +1,16 @@ +package com.shaya.poinila.android.presentation.view.costom_view; + +import android.graphics.Bitmap; + +/** + * Created by iran on 12/1/2015. + */ +public interface ImagePickerCropper { + void setImage(Bitmap bitmap); + void setImage(String address); + Bitmap getImageBitmap(); + Bitmap getCroppedImageBitmap(); + void cropImage(); + void removeImage(); + void rotate(int CWWDegrees); +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/MaterialSpinner.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/MaterialSpinner.java new file mode 100755 index 0000000..957cdbc --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/MaterialSpinner.java @@ -0,0 +1,852 @@ +/* +package com.shaya.poinila.android.presentation.view.costom_view; + +*/ +/** + * Created by iran on 1/10/2016. + *//* + + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.Point; +import android.graphics.Typeface; +import android.os.Build; +import android.support.v4.content.ContextCompat; +import android.support.v7.widget.AppCompatSpinner; +import android.text.Layout; +import android.text.StaticLayout; +import android.text.TextPaint; +import android.util.AttributeSet; +import android.util.DisplayMetrics; +import android.util.TypedValue; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.view.animation.LinearInterpolator; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.SpinnerAdapter; +import android.widget.TextView; + +import com.nineoldandroids.animation.ObjectAnimator; +import com.nineoldandroids.animation.ValueAnimator; +import com.shaya.poinila.android.presentation.R; + + +public class MaterialSpinner extends AppCompatSpinner implements ValueAnimator.AnimatorUpdateListener { + + public static final int DEFAULT_ARROW_WIDTH_DP = 12; + + private static final String TAG = MaterialSpinner.class.getSimpleName(); + + //Paint objects + private Paint paint; + private TextPaint textPaint; + private StaticLayout staticLayout; + + + private Path selectorPath; + private Point[] selectorPoints; + + //Inner padding = "Normal" android padding + private int innerPaddingLeft; + private int innerPaddingRight; + private int innerPaddingTop; + private int innerPaddingBottom; + + //Private padding to add space for FloatingLabel and ErrorLabel + private int extraPaddingTop; + private int extraPaddingBottom; + + //@see dimens.xml + private int underlineTopSpacing; + private int underlineBottomSpacing; + private int errorLabelSpacing; + private int floatingLabelTopSpacing; + private int floatingLabelBottomSpacing; + private int floatingLabelInsideSpacing; + private int rightLeftSpinnerPadding; + private int minContentHeight; + + //Properties about Error Label + private int lastPosition; + private ObjectAnimator errorLabelAnimator; + private int errorLabelPosX; + private int minNbErrorLines; + private float currentNbErrorLines; + + + //Properties about Floating Label ( + private float floatingLabelPercent; + private ObjectAnimator floatingLabelAnimator; + private boolean isSelected; + private boolean floatingLabelVisible; + private int baseAlpha; + + + //AttributeSet + private int baseColor; + private int highlightColor; + private int errorColor; + private int disabledColor; + private CharSequence error; + private CharSequence hint; + private int hintColor; + private CharSequence floatingLabelText; + private int floatingLabelColor; + private boolean multiline; + private Typeface typeface; + private boolean alignLabels; + private float thickness; + private float thicknessError; + private int arrowColor; + private float arrowSize; + private boolean enableErrorLabel; + private boolean enableFloatingLabel; + private boolean isRtl; + + private HintAdapter hintAdapter; + + */ +/* + * ********************************************************************************** + * CONSTRUCTORS + * ********************************************************************************** + *//* + + + public MaterialSpinner(Context context) { + super(context); + init(context, null); + } + + public MaterialSpinner(Context context, AttributeSet attrs) { + super(context, attrs); + init(context, attrs); + + } + + public MaterialSpinner(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context, attrs); + } + + + */ +/* + * ********************************************************************************** + * INITIALISATION METHODS + * ********************************************************************************** + *//* + + + private void init(Context context, AttributeSet attrs) { + + initAttributes(context, attrs); + initPaintObjects(); + initDimensions(); + initPadding(); + initFloatingLabelAnimator(); + initOnItemSelectedListener(); + setMinimumHeight(getPaddingTop() + getPaddingBottom() + minContentHeight); + //Erase the drawable selector not to be affected by new size (extra paddings) + // alireza farahani + setBackgroundResource(fr.ganfra.materialspinner.R.drawable.my_background); + //setBackgroundResource(R.drawable.bordered_focusable_float_hint_margin); + + } + + private void initAttributes(Context context, AttributeSet attrs) { + + TypedArray defaultArray = context.obtainStyledAttributes(new int[]{R.attr.colorControlNormal, R.attr.colorAccent}); + int defaultBaseColor = defaultArray.getColor(0, 0); + int defaultHighlightColor = defaultArray.getColor(1, 0); + int defaultErrorColor = ContextCompat.getColor(context, R.color.error_color); + defaultArray.recycle(); + + TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MaterialSpinner); + baseColor = array.getColor(R.styleable.MaterialSpinner_ms_baseColor, defaultBaseColor); + highlightColor = array.getColor(R.styleable.MaterialSpinner_ms_highlightColor, defaultHighlightColor); + errorColor = array.getColor(R.styleable.MaterialSpinner_ms_errorColor, defaultErrorColor); + disabledColor = context.getResources().getColor(R.color.disabled_color); + error = array.getString(R.styleable.MaterialSpinner_ms_error); + hint = array.getString(R.styleable.MaterialSpinner_ms_hint); + hintColor = array.getColor(R.styleable.MaterialSpinner_ms_hintColor, baseColor); + floatingLabelText = array.getString(R.styleable.MaterialSpinner_ms_floatingLabelText); + floatingLabelColor = array.getColor(R.styleable.MaterialSpinner_ms_floatingLabelColor, baseColor); + multiline = array.getBoolean(R.styleable.MaterialSpinner_ms_multiline, true); + minNbErrorLines = array.getInt(R.styleable.MaterialSpinner_ms_nbErrorLines, 1); + alignLabels = array.getBoolean(R.styleable.MaterialSpinner_ms_alignLabels, true); + thickness = array.getDimension(R.styleable.MaterialSpinner_ms_thickness, 1); + thicknessError = array.getDimension(R.styleable.MaterialSpinner_ms_thickness_error, 2); + arrowColor = array.getColor(R.styleable.MaterialSpinner_ms_arrowColor, baseColor); + arrowSize = array.getDimension(R.styleable.MaterialSpinner_ms_arrowSize, dpToPx(DEFAULT_ARROW_WIDTH_DP)); + enableErrorLabel = array.getBoolean(R.styleable.MaterialSpinner_ms_enableErrorLabel, true); + enableFloatingLabel = array.getBoolean(R.styleable.MaterialSpinner_ms_enableFloatingLabel, true); + isRtl = array.getBoolean(R.styleable.MaterialSpinner_ms_isRtl, false); + + String typefacePath = array.getString(R.styleable.MaterialSpinner_ms_typeface); + if (typefacePath != null) { + typeface = Typeface.createFromAsset(getContext().getAssets(), typefacePath); + } + + array.recycle(); + + floatingLabelPercent = 0f; + errorLabelPosX = 0; + isSelected = false; + floatingLabelVisible = false; + lastPosition = -1; + currentNbErrorLines = minNbErrorLines; + + } + + + @Override + public void setSelection(final int position) { + this.post(new Runnable() { + @Override + public void run() { + MaterialSpinner.super.setSelection(position); + } + }); + } + + private void initPaintObjects() { + + int labelTextSize = getResources().getDimensionPixelSize(R.dimen.label_text_size); + + paint = new Paint(Paint.ANTI_ALIAS_FLAG); + + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); + textPaint.setTextSize(labelTextSize); + if (typeface != null) { + textPaint.setTypeface(typeface); + } + textPaint.setColor(baseColor); + baseAlpha = textPaint.getAlpha(); + + selectorPath = new Path(); + selectorPath.setFillType(Path.FillType.EVEN_ODD); + + selectorPoints = new Point[3]; + for (int i = 0; i < 3; i++) { + selectorPoints[i] = new Point(); + } + } + + @Override + public int getSelectedItemPosition() { + return super.getSelectedItemPosition(); + } + + private void initPadding() { + + innerPaddingTop = getPaddingTop(); + innerPaddingLeft = getPaddingLeft(); + innerPaddingRight = getPaddingRight(); + innerPaddingBottom = getPaddingBottom(); + + extraPaddingTop = enableFloatingLabel ? floatingLabelTopSpacing + floatingLabelInsideSpacing + floatingLabelBottomSpacing : floatingLabelBottomSpacing; + updateBottomPadding(); + + } + + private void updateBottomPadding() { + Paint.FontMetrics textMetrics = textPaint.getFontMetrics(); + extraPaddingBottom = underlineTopSpacing + underlineBottomSpacing; + if (enableErrorLabel) { + extraPaddingBottom += (int) ((textMetrics.descent - textMetrics.ascent) * currentNbErrorLines); + } + updatePadding(); + } + + private void initDimensions() { + underlineTopSpacing = getResources().getDimensionPixelSize(R.dimen.underline_top_spacing); + underlineBottomSpacing = getResources().getDimensionPixelSize(R.dimen.underline_bottom_spacing); + floatingLabelTopSpacing = getResources().getDimensionPixelSize(R.dimen.floating_label_top_spacing); + floatingLabelBottomSpacing = getResources().getDimensionPixelSize(R.dimen.floating_label_bottom_spacing); + rightLeftSpinnerPadding = alignLabels ? getResources().getDimensionPixelSize(R.dimen.right_left_spinner_padding) : 0; + floatingLabelInsideSpacing = getResources().getDimensionPixelSize(R.dimen.floating_label_inside_spacing); + errorLabelSpacing = (int) getResources().getDimension(R.dimen.error_label_spacing); + minContentHeight = (int) getResources().getDimension(R.dimen.min_content_height); + } + + private void initOnItemSelectedListener() { + setOnItemSelectedListener(null); + } + + */ +/* + * ********************************************************************************** + * ANIMATION METHODS + * ********************************************************************************** + *//* + + + private void initFloatingLabelAnimator() { + if (floatingLabelAnimator == null) { + floatingLabelAnimator = ObjectAnimator.ofFloat(this, "floatingLabelPercent", 0f, 1f); + floatingLabelAnimator.addUpdateListener(this); + } + } + + private void showFloatingLabel() { + if (floatingLabelAnimator != null) { + floatingLabelVisible = true; + if (floatingLabelAnimator.isRunning()) { + floatingLabelAnimator.reverse(); + } else { + floatingLabelAnimator.start(); + } + } + } + + private void hideFloatingLabel() { + if (floatingLabelAnimator != null) { + floatingLabelVisible = false; + floatingLabelAnimator.reverse(); + } + } + + private void startErrorScrollingAnimator() { + + int textWidth = Math.round(textPaint.measureText(error.toString())); + if (errorLabelAnimator == null) { + errorLabelAnimator = ObjectAnimator.ofInt(this, "errorLabelPosX", 0, textWidth + getWidth() / 2); + errorLabelAnimator.setStartDelay(1000); + errorLabelAnimator.setInterpolator(new LinearInterpolator()); + errorLabelAnimator.setDuration(150 * error.length()); + errorLabelAnimator.addUpdateListener(this); + errorLabelAnimator.setRepeatCount(ValueAnimator.INFINITE); + } else { + errorLabelAnimator.setIntValues(0, textWidth + getWidth() / 2); + } + errorLabelAnimator.start(); + } + + + private void startErrorMultilineAnimator(float destLines) { + if (errorLabelAnimator == null) { + errorLabelAnimator = ObjectAnimator.ofFloat(this, "currentNbErrorLines", destLines); + + } else { + errorLabelAnimator.setFloatValues(destLines); + } + errorLabelAnimator.start(); + } + + + */ +/* + * ********************************************************************************** + * UTILITY METHODS + * ********************************************************************************** + *//* + + + private int dpToPx(float dp) { + final DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics(); + float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics); + return Math.round(px); + } + + private float pxToDp(float px) { + final DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics(); + return px * displayMetrics.density; + } + + private void updatePadding() { + int left = innerPaddingLeft; + int top = innerPaddingTop + extraPaddingTop; + int right = innerPaddingRight; + int bottom = innerPaddingBottom + extraPaddingBottom; + super.setPadding(left, top, right, bottom); + setMinimumHeight(top + bottom + minContentHeight); + } + + private boolean needScrollingAnimation() { + if (error != null) { + float screenWidth = getWidth() - rightLeftSpinnerPadding; + float errorTextWidth = textPaint.measureText(error.toString(), 0, error.length()); + return errorTextWidth > screenWidth ? true : false; + } + return false; + } + + private int prepareBottomPadding() { + + int targetNbLines = minNbErrorLines; + if (error != null) { + staticLayout = new StaticLayout(error, textPaint, getWidth() - getPaddingRight() - getPaddingLeft(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, true); + int nbErrorLines = staticLayout.getLineCount(); + targetNbLines = Math.max(minNbErrorLines, nbErrorLines); + } + return targetNbLines; + } + + private boolean isSpinnerEmpty() { + return (hintAdapter.getCount() == 0 && hint == null) || (hintAdapter.getCount() == 1 && hint != null); + } + + */ +/* + * ********************************************************************************** + * DRAWING METHODS + * ********************************************************************************** + *//* + + + + @Override + protected void onDraw(Canvas canvas) { + + super.onDraw(canvas); + int startX = 0; + int endX = getWidth(); + int lineHeight; + + int startYLine = getHeight() - getPaddingBottom() + underlineTopSpacing; + int startYFloatingLabel = (int) (getPaddingTop() - floatingLabelPercent * floatingLabelBottomSpacing); + + + if (error != null && enableErrorLabel) { + lineHeight = dpToPx(thicknessError); + int startYErrorLabel = startYLine + errorLabelSpacing + lineHeight; + paint.setColor(errorColor); + textPaint.setColor(errorColor); + //Error Label Drawing + if (multiline) { + canvas.save(); + canvas.translate(startX + rightLeftSpinnerPadding, startYErrorLabel - errorLabelSpacing); + staticLayout.draw(canvas); + canvas.restore(); + + } else { + //scrolling + canvas.drawText(error.toString(), startX + rightLeftSpinnerPadding - errorLabelPosX, startYErrorLabel, textPaint); + if (errorLabelPosX > 0) { + canvas.save(); + canvas.translate(textPaint.measureText(error.toString()) + getWidth() / 2, 0); + canvas.drawText(error.toString(), startX + rightLeftSpinnerPadding - errorLabelPosX, startYErrorLabel, textPaint); + canvas.restore(); + } + } + + } else { + lineHeight = dpToPx(thickness); + if (isSelected || hasFocus()) { + paint.setColor(highlightColor); + } else { + paint.setColor(isEnabled() ? baseColor : disabledColor); + } + } + + // Underline Drawing + canvas.drawRect(startX, startYLine, endX, startYLine + lineHeight, paint); + + //Floating Label Drawing + if ((hint != null || floatingLabelText != null) && enableFloatingLabel) { + if (isSelected || hasFocus()) { + textPaint.setColor(highlightColor); + } else { + textPaint.setColor(isEnabled() ? floatingLabelColor : disabledColor); + } + if (floatingLabelAnimator.isRunning() || !floatingLabelVisible) { + textPaint.setAlpha((int) ((0.8 * floatingLabelPercent + 0.2) * baseAlpha * floatingLabelPercent)); + } + String textToDraw = floatingLabelText != null ? floatingLabelText.toString() : hint.toString(); + if (isRtl) { + canvas.drawText(textToDraw, getWidth() - rightLeftSpinnerPadding - textPaint.measureText(textToDraw), startYFloatingLabel, textPaint); + } else { + canvas.drawText(textToDraw, startX + rightLeftSpinnerPadding, startYFloatingLabel, textPaint); + } + } + + drawSelector(canvas, getWidth() - rightLeftSpinnerPadding, getPaddingTop() + dpToPx(8)); + + + } + + private void drawSelector(Canvas canvas, int posX, int posY) { + if (isSelected || hasFocus()) { + paint.setColor(highlightColor); + } else { + paint.setColor(isEnabled() ? arrowColor : disabledColor); + } + + Point point1 = selectorPoints[0]; + Point point2 = selectorPoints[1]; + Point point3 = selectorPoints[2]; + + point1.set(posX, posY); + point2.set((int) (posX - (arrowSize)), posY); + point3.set((int) (posX - (arrowSize / 2)), (int) (posY + (arrowSize / 2))); + + selectorPath.reset(); + selectorPath.moveTo(point1.x, point1.y); + selectorPath.lineTo(point2.x, point2.y); + selectorPath.lineTo(point3.x, point3.y); + selectorPath.close(); + canvas.drawPath(selectorPath, paint); + } + + */ +/* + * ********************************************************************************** + * LISTENER METHODS + * ********************************************************************************** + *//* + + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (isEnabled()) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + isSelected = true; + break; + + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: + isSelected = false; + break; + } + invalidate(); + } + return super.onTouchEvent(event); + } + + @Override + public void setOnItemSelectedListener(final OnItemSelectedListener listener) { + + final OnItemSelectedListener onItemSelectedListener = new OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + + if (hint != null || floatingLabelText != null) { + if (!floatingLabelVisible && position != 0) { + showFloatingLabel(); + } else if (floatingLabelVisible && position == 0) { + hideFloatingLabel(); + } + } + + if (position != lastPosition && error != null) { + setError(null); + } + lastPosition = position; + + if (listener != null) { + position = hint != null ? position - 1 : position; + listener.onItemSelected(parent, view, position, id); + } + } + + @Override + public void onNothingSelected(AdapterView parent) { + if (listener != null) { + listener.onNothingSelected(parent); + } + } + }; + + super.setOnItemSelectedListener(onItemSelectedListener); + } + + @Override + public void onAnimationUpdate(ValueAnimator animation) { + invalidate(); + } + + + */ +/* + * ********************************************************************************** + * GETTERS AND SETTERS + * ********************************************************************************** + *//* + + + public int getBaseColor() { + return baseColor; + } + + public void setBaseColor(int baseColor) { + this.baseColor = baseColor; + textPaint.setColor(baseColor); + baseAlpha = textPaint.getAlpha(); + invalidate(); + } + + public int getHighlightColor() { + return highlightColor; + } + + public void setHighlightColor(int highlightColor) { + this.highlightColor = highlightColor; + invalidate(); + } + + public int getHintColor() { + return hintColor; + } + + public void setHintColor(int hintColor) { + this.hintColor = hintColor; + invalidate(); + } + + public int getErrorColor() { + return errorColor; + } + + public void setErrorColor(int errorColor) { + this.errorColor = errorColor; + invalidate(); + } + + public void setHint(CharSequence hint) { + this.hint = hint; + invalidate(); + } + + public void setHint(int resid) { + CharSequence hint = getResources().getString(resid); + setHint(hint); + } + + public CharSequence getHint() { + return hint; + } + + public void setFloatingLabelText(CharSequence floatingLabelText) { + this.floatingLabelText = floatingLabelText; + invalidate(); + } + + public void setFloatingLabelText(int resid) { + String floatingLabelText = getResources().getString(resid); + setFloatingLabelText(floatingLabelText); + } + + public CharSequence getFloatingLabelText() { + return this.floatingLabelText; + } + + public void setError(CharSequence error) { + this.error = error; + if (errorLabelAnimator != null) { + errorLabelAnimator.end(); + } + + if (multiline) { + startErrorMultilineAnimator(prepareBottomPadding()); + } else if (needScrollingAnimation()) { + startErrorScrollingAnimator(); + } + requestLayout(); + } + + public void setError(int resid) { + CharSequence error = getResources().getString(resid); + setError(error); + } + + @Override + public void setEnabled(boolean enabled) { + if (!enabled) { + isSelected = false; + invalidate(); + } + super.setEnabled(enabled); + } + + public CharSequence getError() { + return this.error; + } + + public void setRtl() { + isRtl = true; + invalidate(); + } + + public boolean isRtl() { + return isRtl; + } + + */ +/** + * @deprecated {use @link #setPaddingSafe(int, int, int, int)} to keep internal computation OK + *//* + + @Deprecated + @Override + public void setPadding(int left, int top, int right, int bottom) { + super.setPadding(left, top, right, bottom); + } + + + public void setPaddingSafe(int left, int top, int right, int bottom) { + innerPaddingRight = right; + innerPaddingLeft = left; + innerPaddingTop = top; + innerPaddingBottom = bottom; + + updatePadding(); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + + @Override + public void setAdapter(SpinnerAdapter adapter) { + hintAdapter = new HintAdapter(adapter, getContext()); + super.setAdapter(hintAdapter); + } + + @Override + public SpinnerAdapter getAdapter() { + return hintAdapter != null ? hintAdapter.getWrappedAdapter() : null; + } + + private float getFloatingLabelPercent() { + return floatingLabelPercent; + } + + private void setFloatingLabelPercent(float floatingLabelPercent) { + this.floatingLabelPercent = floatingLabelPercent; + } + + private int getErrorLabelPosX() { + return errorLabelPosX; + } + + private void setErrorLabelPosX(int errorLabelPosX) { + this.errorLabelPosX = errorLabelPosX; + } + + private float getCurrentNbErrorLines() { + return currentNbErrorLines; + } + + private void setCurrentNbErrorLines(float currentNbErrorLines) { + this.currentNbErrorLines = currentNbErrorLines; + updateBottomPadding(); + } + + @Override + public Object getItemAtPosition(int position) { + if (hint != null) { + position++; + } + return (hintAdapter == null || position < 0) ? null : hintAdapter.getItem(position); + } + + @Override + public long getItemIdAtPosition(int position) { + if (hint != null) { + position++; + } + return (hintAdapter == null || position < 0) ? INVALID_ROW_ID : hintAdapter.getItemId(position); + } + + */ +/* + * ********************************************************************************** + * INNER CLASS + * ********************************************************************************** + *//* + + + private class HintAdapter extends BaseAdapter { + + private static final int HINT_TYPE = -1; + + private SpinnerAdapter mSpinnerAdapter; + private Context mContext; + + public HintAdapter(SpinnerAdapter spinnerAdapter, Context context) { + mSpinnerAdapter = spinnerAdapter; + mContext = context; + } + + @Override + public int getViewTypeCount() { + //Workaround waiting for a Google correction (https://code.google.com/p/android/issues/detail?id=79011) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return 1; + } + int viewTypeCount = mSpinnerAdapter.getViewTypeCount(); + return viewTypeCount; + } + + @Override + public int getItemViewType(int position) { + position = hint != null ? position - 1 : position; + return (position == -1) ? HINT_TYPE : mSpinnerAdapter.getItemViewType(position); + } + + @Override + public int getCount() { + int count = mSpinnerAdapter.getCount(); + return hint != null ? count + 1 : count; + } + + @Override + public Object getItem(int position) { + position = hint != null ? position - 1 : position; + return (position == -1) ? hint : mSpinnerAdapter.getItem(position); + } + + @Override + public long getItemId(int position) { + position = hint != null ? position - 1 : position; + return (position == -1) ? 0 : mSpinnerAdapter.getItemId(position); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + return buildView(position, convertView, parent, false); + } + + @Override + public View getDropDownView(int position, View convertView, ViewGroup parent) { + return buildView(position, convertView, parent, true); + } + + private View buildView(int position, View convertView, ViewGroup parent, boolean isDropDownView) { + if (getItemViewType(position) == HINT_TYPE) { + return getHintView(convertView, parent, isDropDownView); + } + //workaround to have multiple types in spinner + if (convertView != null) { + convertView = (convertView.getTag() != null && convertView.getTag() instanceof Integer && (Integer) convertView.getTag() != HINT_TYPE) ? convertView : null; + } + position = hint != null ? position - 1 : position; + return isDropDownView ? mSpinnerAdapter.getDropDownView(position, convertView, parent) : mSpinnerAdapter.getView(position, convertView, parent); + } + + private View getHintView(final View convertView, final ViewGroup parent, final boolean isDropDownView) { + + final LayoutInflater inflater = LayoutInflater.from(mContext); + final int resid = isDropDownView ? android.R.layout.simple_spinner_dropdown_item : android.R.layout.simple_spinner_item; + final TextView textView = (TextView) inflater.inflate(resid, parent, false); + textView.setText(hint); + textView.setTextColor(MaterialSpinner.this.isEnabled() ? hintColor : disabledColor); + textView.setTag(HINT_TYPE); + return textView; + } + + private SpinnerAdapter getWrappedAdapter() { + return mSpinnerAdapter; + } + } +}*/ diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/PonilaChoiceView.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/PonilaChoiceView.java new file mode 100755 index 0000000..646181a --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/PonilaChoiceView.java @@ -0,0 +1,152 @@ +package com.shaya.poinila.android.presentation.view.costom_view; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; + +import butterknife.Bind; +import butterknife.ButterKnife; + +/** + * Created by iran on 8/15/2016. + */ +public class PonilaChoiceView extends LinearLayout implements View.OnClickListener { + + + public static final int + FIRST_OPTION = 0, + SECOND_OPTION = 1, + THIRD_OPTION = 2; + + private int optionSelected = FIRST_OPTION; + + private OnOptionSelected onOptionSelected; + + @Bind(R.id.first_option) + TextView firstOption; + + @Bind(R.id.second_option) + TextView secondOption; + + @Bind(R.id.third_option) + TextView thirdOption; + + public PonilaChoiceView(Context context) { + super(context); + init(); + } + + public PonilaChoiceView(Context context, AttributeSet attrs) { + super(context, attrs); + init(); + } + + public PonilaChoiceView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + private void init(){ + inflate(getContext(), R.layout.view_ponila_choice, this); + + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + ButterKnife.bind(this); + + optionSelected = FIRST_OPTION; + firstOption.setSelected(true); + secondOption.setSelected(false); + thirdOption.setSelected(false); + + firstOption.setOnClickListener(this); + secondOption.setOnClickListener(this); + thirdOption.setOnClickListener(this); + } + + public void setOptionsText(String firstOptionText, String secondOptionText, String thirdOptionText){ + firstOption.setText(firstOptionText); + secondOption.setText(secondOptionText); + thirdOption.setText(thirdOptionText); + } + + public void setOptionsText(int firstOptionText, int secondOptionText, int thirdOptionText){ + firstOption.setText(firstOptionText); + secondOption.setText(secondOptionText); + thirdOption.setText(thirdOptionText); + } + + @Override + public void onClick(View view) { + switch (view.getId()){ + case R.id.first_option: + optionSelected = FIRST_OPTION; + firstOption.setSelected(true); + secondOption.setSelected(false); + thirdOption.setSelected(false); + if(onOptionSelected != null) + onOptionSelected.onFirstOption(); + break; + case R.id.second_option: + optionSelected = SECOND_OPTION; + firstOption.setSelected(false); + secondOption.setSelected(true); + thirdOption.setSelected(false); + if(onOptionSelected != null) + onOptionSelected.onSecondOption(); + break; + case R.id.third_option: + optionSelected = THIRD_OPTION; + firstOption.setSelected(false); + secondOption.setSelected(false); + thirdOption.setSelected(true); + if(onOptionSelected != null) + onOptionSelected.onThirdOption(); + break; + } + } + + public PonilaChoiceView setOnOptionSelected(OnOptionSelected onOptionSelected) { + this.onOptionSelected = onOptionSelected; + return this; + } + + public void setDefaultSelected(int option){ + switch (option){ + case FIRST_OPTION: + optionSelected = FIRST_OPTION; + firstOption.setSelected(true); + secondOption.setSelected(false); + thirdOption.setSelected(false); + break; + case SECOND_OPTION: + optionSelected = SECOND_OPTION; + firstOption.setSelected(false); + secondOption.setSelected(true); + thirdOption.setSelected(false); + break; + case THIRD_OPTION: + optionSelected = THIRD_OPTION; + firstOption.setSelected(false); + secondOption.setSelected(false); + thirdOption.setSelected(true); + break; + } + } + + public interface OnOptionSelected{ + void onFirstOption(); + void onSecondOption(); + void onThirdOption(); + } + + public int getOptionSelected(){ + return optionSelected; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/RemovableChipView.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/RemovableChipView.java new file mode 100755 index 0000000..bf2690d --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/RemovableChipView.java @@ -0,0 +1,268 @@ +/* +package com.shaya.poinila.android.presentation.view.costom_view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.drawable.Drawable; +import android.text.TextPaint; +import android.util.AttributeSet; +import android.view.View; + +import com.shaya.poinila.android.presentation.R; + +*/ +/** + * TODO: document your custom view class. + *

+ * Gets the example string attribute value. + * + * @return The example string attribute value. + *

+ * Sets the view's example string attribute value. In the example view, this string + * is the text to draw. + * @param exampleString The example string attribute value to use. + *

+ * Gets the example color attribute value. + * @return The example color attribute value. + *

+ * Sets the view's example color attribute value. In the example view, this color + * is the font color. + * @param exampleColor The example color attribute value to use. + *

+ * Gets the example dimension attribute value. + * @return The example dimension attribute value. + *

+ * Sets the view's example dimension attribute value. In the example view, this dimension + * is the font size. + * @param exampleDimension The example dimension attribute value to use. + *

+ * Gets the example drawable attribute value. + * @return The example drawable attribute value. + *

+ * Sets the view's example drawable attribute value. In the example view, this drawable is + * drawn above the text. + * @param exampleDrawable The example drawable attribute value to use. + *

+ * Gets the example string attribute value. + * @return The example string attribute value. + *

+ * Sets the view's example string attribute value. In the example view, this string + * is the text to draw. + * @param exampleString The example string attribute value to use. + *

+ * Gets the example color attribute value. + * @return The example color attribute value. + *

+ * Sets the view's example color attribute value. In the example view, this color + * is the font color. + * @param exampleColor The example color attribute value to use. + *

+ * Gets the example dimension attribute value. + * @return The example dimension attribute value. + *

+ * Sets the view's example dimension attribute value. In the example view, this dimension + * is the font size. + * @param exampleDimension The example dimension attribute value to use. + *

+ * Gets the example drawable attribute value. + * @return The example drawable attribute value. + *

+ * Sets the view's example drawable attribute value. In the example view, this drawable is + * drawn above the text. + * @param exampleDrawable The example drawable attribute value to use. + *//* + +public class RemovableChipView extends View { + private String mExampleString; // TODO: use a default from R.string... + private int mExampleColor = Color.RED; // TODO: use a default from R.color... + private float mExampleDimension = 0; // TODO: use a default from R.dimen... + private Drawable mExampleDrawable; + + private TextPaint mTextPaint; + private float mTextWidth; + private float mTextHeight; + + public RemovableChipView(Context context) { + super(context); + init(null, 0); + } + + public RemovableChipView(Context context, AttributeSet attrs) { + super(context, attrs); + init(attrs, 0); + } + + public RemovableChipView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(attrs, defStyle); + } + + private void init(AttributeSet attrs, int defStyle) { + // Load attributes + final TypedArray a = getContext().obtainStyledAttributes( + attrs, R.styleable.RemovableChipView, defStyle, 0); + + mExampleString = a.getString( + R.styleable.RemovableChipView_exampleString); + mExampleColor = a.getColor( + R.styleable.RemovableChipView_exampleColor, + mExampleColor); + // Use getDimensionPixelSize or getDimensionPixelOffset when dealing with + // values that should fall on pixel boundaries. + mExampleDimension = a.getDimension( + R.styleable.RemovableChipView_exampleDimension, + mExampleDimension); + + if (a.hasValue(R.styleable.RemovableChipView_exampleDrawable)) { + mExampleDrawable = a.getDrawable( + R.styleable.RemovableChipView_exampleDrawable); + mExampleDrawable.setCallback(this); + } + + a.recycle(); + + // Set up a default TextPaint object + mTextPaint = new TextPaint(); + mTextPaint.setFlags(Paint.ANTI_ALIAS_FLAG); + mTextPaint.setTextAlign(Paint.Align.LEFT); + + // Update TextPaint and text measurements from attributes + invalidateTextPaintAndMeasurements(); + } + + private void invalidateTextPaintAndMeasurements() { + mTextPaint.setTextSize(mExampleDimension); + mTextPaint.setColor(mExampleColor); + mTextWidth = mTextPaint.measureText(mExampleString); + + Paint.FontMetrics fontMetrics = mTextPaint.getFontMetrics(); + mTextHeight = fontMetrics.bottom; + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + // TODO: consider storing these as member variables to reduce + // allocations per draw cycle. + int paddingLeft = getPaddingLeft(); + int paddingTop = getPaddingTop(); + int paddingRight = getPaddingRight(); + int paddingBottom = getPaddingBottom(); + + int contentWidth = getWidth() - paddingLeft - paddingRight; + int contentHeight = getHeight() - paddingTop - paddingBottom; + + // Draw the text. + canvas.drawText(mExampleString, + paddingLeft + (contentWidth - mTextWidth) / 2, + paddingTop + (contentHeight + mTextHeight) / 2, + mTextPaint); + + // Draw the example drawable on top of the text. + if (mExampleDrawable != null) { + mExampleDrawable.setBounds(paddingLeft, paddingTop, + paddingLeft + contentWidth, paddingTop + contentHeight); + mExampleDrawable.draw(canvas); + } + } + + */ +/** + * Gets the example string attribute value. + * + * @return The example string attribute value. + *//* + + public String getExampleString() { + return mExampleString; + } + + */ +/** + * Sets the view's example string attribute value. In the example view, this string + * is the text to draw. + * + * @param exampleString The example string attribute value to use. + *//* + + public void setExampleString(String exampleString) { + mExampleString = exampleString; + invalidateTextPaintAndMeasurements(); + } + + */ +/** + * Gets the example color attribute value. + * + * @return The example color attribute value. + *//* + + public int getExampleColor() { + return mExampleColor; + } + + */ +/** + * Sets the view's example color attribute value. In the example view, this color + * is the font color. + * + * @param exampleColor The example color attribute value to use. + *//* + + public void setExampleColor(int exampleColor) { + mExampleColor = exampleColor; + invalidateTextPaintAndMeasurements(); + } + + */ +/** + * Gets the example dimension attribute value. + * + * @return The example dimension attribute value. + *//* + + public float getExampleDimension() { + return mExampleDimension; + } + + */ +/** + * Sets the view's example dimension attribute value. In the example view, this dimension + * is the font size. + * + * @param exampleDimension The example dimension attribute value to use. + *//* + + public void setExampleDimension(float exampleDimension) { + mExampleDimension = exampleDimension; + invalidateTextPaintAndMeasurements(); + } + + */ +/** + * Gets the example drawable attribute value. + * + * @return The example drawable attribute value. + *//* + + public Drawable getExampleDrawable() { + return mExampleDrawable; + } + + */ +/** + * Sets the view's example drawable attribute value. In the example view, this drawable is + * drawn above the text. + * + * @param exampleDrawable The example drawable attribute value to use. + *//* + + public void setExampleDrawable(Drawable exampleDrawable) { + mExampleDrawable = exampleDrawable; + } +} +*/ diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/ScrollViewListener.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/ScrollViewListener.java new file mode 100755 index 0000000..315c39c --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/ScrollViewListener.java @@ -0,0 +1,9 @@ +package com.shaya.poinila.android.presentation.view.costom_view; + +/** + * Created by iran on 2015-09-01. + */ +public interface ScrollViewListener { + void onScrollChanged(CustomScrollView scrollView, + int x, int y, int oldx, int oldy); +} \ No newline at end of file diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/SvgMaskedImageView.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/SvgMaskedImageView.java new file mode 100755 index 0000000..1a358ab --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/SvgMaskedImageView.java @@ -0,0 +1,214 @@ +package com.shaya.poinila.android.presentation.view.costom_view; +/* + * Copyright 2014 Mostafa Gazar + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import android.annotation.SuppressLint; +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.PorterDuff.Mode; +import android.graphics.PorterDuffXfermode; +import android.graphics.RectF; +import android.graphics.Xfermode; +import android.graphics.drawable.Drawable; +import android.support.annotation.NonNull; +import android.util.AttributeSet; +import android.util.Log; +import android.widget.ImageView; + +/*import com.larvalabs.svgandroid.SVG; +import com.larvalabs.svgandroid.SVGParser; +import com.ninja.sms.R; +import com.ninja.sms.utils.Log;*/ + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.svgandroid.SVG; +import com.shaya.poinila.android.presentation.svgandroid.SVGParser; + +import java.lang.ref.WeakReference; + +/** + * @author Mostafa Gazar + */ +public class SvgMaskedImageView extends ImageView { + + private static final String TAG = SvgMaskedImageView.class.getSimpleName(); + + public static final int DEFAULT_SVG_RAW_RES = R.raw.hexagon; + + private int mSvgRawRes = DEFAULT_SVG_RAW_RES; + + protected Context mContext; + + private static final Xfermode sXfermode = new PorterDuffXfermode(Mode.DST_IN); + private Bitmap mMaskBitmap; + private Paint mPaint; + private WeakReference mSrcWeakBitmap; + + private int mLastWidth; + private int mLastHeight; + + public SvgMaskedImageView(Context context) { + super(context); + + sharedConstructor(context, null); + } + + public SvgMaskedImageView(Context context, AttributeSet attrs) { + super(context, attrs); + + sharedConstructor(context, attrs); + } + + public SvgMaskedImageView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + + sharedConstructor(context, attrs); + } + + private void sharedConstructor(Context context, AttributeSet attrs) { + mContext = context; + + mPaint = new Paint(); + + if (attrs != null) { + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SvgMaskedImageView); + + mSvgRawRes = a != null ? a.getResourceId(R.styleable.SvgMaskedImageView_mask, DEFAULT_SVG_RAW_RES) : DEFAULT_SVG_RAW_RES; + a.recycle(); + } + } + + public static void drawBitmap(Canvas canvas, Bitmap bitmap, + Paint paint) { + drawBitmap(canvas, bitmap, paint, 0, 0); + } + + public static void drawBitmap(Canvas canvas, Bitmap bitmap, + Paint paint, int left, int top) { + paint.reset(); + paint.setFilterBitmap(false); + paint.setXfermode(sXfermode); + + canvas.drawBitmap(bitmap, left, top, paint); + } + + public void invalidate() { + mSrcWeakBitmap = null; + if (mMaskBitmap != null) { + mMaskBitmap.recycle(); + } + mLastWidth = 0; + mLastHeight = 0; + + super.invalidate(); + } + + @SuppressLint("DrawAllocation") + @Override + protected void onDraw(@NonNull Canvas canvas) { + if (!isInEditMode()) { + int width = getWidth(); + int height = getHeight(); + + int i = canvas.saveLayer(0.0F, 0.0F, width, height, null, Canvas.ALL_SAVE_FLAG); + try { + Bitmap srcBitmap = mSrcWeakBitmap != null ? mSrcWeakBitmap.get() : null; + if (srcBitmap == null || srcBitmap.isRecycled()) { + Drawable srcDrawable = getDrawable(); + if (srcDrawable != null) { + srcBitmap = Bitmap.createBitmap(getWidth(), + getHeight(), Bitmap.Config.ARGB_8888); + Canvas srcBitmapCanvas = new Canvas(srcBitmap); + srcDrawable.setBounds(0, 0, getWidth(), getHeight()); + srcDrawable.draw(srcBitmapCanvas); + + // Skip and use cached mask. + if (mMaskBitmap == null || mMaskBitmap.isRecycled() || + mLastWidth != width || mLastHeight != height) { + mMaskBitmap = getMask(width, height); + } + + drawBitmap(srcBitmapCanvas, mMaskBitmap, mPaint); + mSrcWeakBitmap = new WeakReference(srcBitmap); + } + } + + if (srcBitmap != null) { + mPaint.setXfermode(null); + canvas.drawBitmap(srcBitmap, 0.0F, 0.0F, mPaint); + } + } catch (Exception e) { + System.gc(); + + Log.e(TAG, String.format("Unable to draw, view Id :: %s. Error occurred :: %s", getId(), e.toString())); + } finally { + canvas.restoreToCount(i); + } + } else { + super.onDraw(canvas); + } + } + + private Bitmap getDefaultMask(int width, int height) { + Bitmap bitmap = Bitmap.createBitmap(width, height, + Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(Color.BLACK); + canvas.drawRect(new RectF(0.0F, 0.0F, width, height), paint); + + return bitmap; + } + + private Bitmap getMask(int width, int height) { + SVG svgMask = null; + if (mLastWidth != width || mLastHeight != height) { + svgMask = SVGParser.getSVGFromInputStream( + mContext.getResources().openRawResource(mSvgRawRes), width, height); + + mLastWidth = width; + mLastHeight = height; + } + + if (svgMask != null) { + Bitmap bitmap = Bitmap.createBitmap(width, height, + Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(Color.BLACK); + + canvas.drawPicture(svgMask.getPicture()); + + return bitmap; + } + + // In case everything failed, return square. + return getDefaultMask(width, height); + } + + public void updateMask(int svgRawRes) { + if (mSvgRawRes != svgRawRes) { + mSvgRawRes = svgRawRes; + + invalidate(); + } + } + +} \ No newline at end of file diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/TouchImageView.java b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/TouchImageView.java new file mode 100755 index 0000000..30bea9a --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/costom_view/TouchImageView.java @@ -0,0 +1,1265 @@ +package com.shaya.poinila.android.presentation.view.costom_view; + +/** + * Created by hossein on 8/30/16. + */ +import android.annotation.TargetApi; +import android.content.Context; +import android.content.res.Configuration; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.PointF; +import android.graphics.RectF; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Build; +import android.os.Build.VERSION; +import android.os.Build.VERSION_CODES; +import android.os.Bundle; +import android.os.Parcelable; +import android.util.AttributeSet; +import android.util.Log; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.ScaleGestureDetector; +import android.view.View; +import android.view.animation.AccelerateDecelerateInterpolator; +import android.widget.ImageView; +import android.widget.OverScroller; +import android.widget.Scroller; + +public class TouchImageView extends ImageView { + + private static final String DEBUG = "DEBUG"; + + // + // SuperMin and SuperMax multipliers. Determine how much the image can be + // zoomed below or above the zoom boundaries, before animating back to the + // min/max zoom boundary. + // + private static final float SUPER_MIN_MULTIPLIER = .75f; + private static final float SUPER_MAX_MULTIPLIER = 1.25f; + + // + // Scale of image ranges from minScale to maxScale, where minScale == 1 + // when the image is stretched to fit view. + // + private float normalizedScale; + + // + // Matrix applied to image. MSCALE_X and MSCALE_Y should always be equal. + // MTRANS_X and MTRANS_Y are the other values used. prevMatrix is the matrix + // saved prior to the screen rotating. + // + private Matrix matrix, prevMatrix; + + private static enum State { NONE, DRAG, ZOOM, FLING, ANIMATE_ZOOM } + + private State state; + + private float minScale; + private float maxScale; + private float superMinScale; + private float superMaxScale; + private float[] m; + + private Context context; + private Fling fling; + + private ScaleType mScaleType; + + private boolean imageRenderedAtLeastOnce; + private boolean onDrawReady; + + private ZoomVariables delayedZoomVariables; + + // + // Size of view and previous view size (ie before rotation) + // + private int viewWidth, viewHeight, prevViewWidth, prevViewHeight; + + // + // Size of image when it is stretched to fit view. Before and After rotation. + // + private float matchViewWidth, matchViewHeight, prevMatchViewWidth, prevMatchViewHeight; + + private ScaleGestureDetector mScaleDetector; + private GestureDetector mGestureDetector; + private GestureDetector.OnDoubleTapListener doubleTapListener = null; + private OnTouchListener userTouchListener = null; + private OnTouchImageViewListener touchImageViewListener = null; + + public TouchImageView(Context context) { + super(context); + sharedConstructing(context); + } + + public TouchImageView(Context context, AttributeSet attrs) { + super(context, attrs); + sharedConstructing(context); + } + + public TouchImageView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + sharedConstructing(context); + } + + private void sharedConstructing(Context context) { + super.setClickable(true); + this.context = context; + mScaleDetector = new ScaleGestureDetector(context, new ScaleListener()); + mGestureDetector = new GestureDetector(context, new GestureListener()); + matrix = new Matrix(); + prevMatrix = new Matrix(); + m = new float[9]; + normalizedScale = 1; + if (mScaleType == null) { + mScaleType = ScaleType.FIT_CENTER; + } + minScale = 1; + maxScale = 3; + superMinScale = SUPER_MIN_MULTIPLIER * minScale; + superMaxScale = SUPER_MAX_MULTIPLIER * maxScale; + setImageMatrix(matrix); + setScaleType(ScaleType.MATRIX); + setState(State.NONE); + onDrawReady = false; + super.setOnTouchListener(new PrivateOnTouchListener()); + } + + @Override + public void setOnTouchListener(OnTouchListener l) { + userTouchListener = l; + } + + public void setOnTouchImageViewListener(OnTouchImageViewListener l) { + touchImageViewListener = l; + } + + public void setOnDoubleTapListener(GestureDetector.OnDoubleTapListener l) { + doubleTapListener = l; + } + + @Override + public void setImageResource(int resId) { + super.setImageResource(resId); + savePreviousImageValues(); + fitImageToView(); + } + + @Override + public void setImageBitmap(Bitmap bm) { + super.setImageBitmap(bm); + savePreviousImageValues(); + fitImageToView(); + } + + @Override + public void setImageDrawable(Drawable drawable) { + super.setImageDrawable(drawable); + savePreviousImageValues(); + fitImageToView(); + } + + @Override + public void setImageURI(Uri uri) { + super.setImageURI(uri); + savePreviousImageValues(); + fitImageToView(); + } + + @Override + public void setScaleType(ScaleType type) { + if (type == ScaleType.FIT_START || type == ScaleType.FIT_END) { + throw new UnsupportedOperationException("TouchImageView does not support FIT_START or FIT_END"); + } + if (type == ScaleType.MATRIX) { + super.setScaleType(ScaleType.MATRIX); + + } else { + mScaleType = type; + if (onDrawReady) { + // + // If the image is already rendered, scaleType has been called programmatically + // and the TouchImageView should be updated with the new scaleType. + // + setZoom(this); + } + } + } + + @Override + public ScaleType getScaleType() { + return mScaleType; + } + + /** + * Returns false if image is in initial, unzoomed state. False, otherwise. + * @return true if image is zoomed + */ + public boolean isZoomed() { + return normalizedScale != 1; + } + + /** + * Return a Rect representing the zoomed image. + * @return rect representing zoomed image + */ + public RectF getZoomedRect() { + if (mScaleType == ScaleType.FIT_XY) { + throw new UnsupportedOperationException("getZoomedRect() not supported with FIT_XY"); + } + PointF topLeft = transformCoordTouchToBitmap(0, 0, true); + PointF bottomRight = transformCoordTouchToBitmap(viewWidth, viewHeight, true); + + float w = getDrawable().getIntrinsicWidth(); + float h = getDrawable().getIntrinsicHeight(); + return new RectF(topLeft.x / w, topLeft.y / h, bottomRight.x / w, bottomRight.y / h); + } + + /** + * Save the current matrix and view dimensions + * in the prevMatrix and prevView variables. + */ + private void savePreviousImageValues() { + if (matrix != null && viewHeight != 0 && viewWidth != 0) { + matrix.getValues(m); + prevMatrix.setValues(m); + prevMatchViewHeight = matchViewHeight; + prevMatchViewWidth = matchViewWidth; + prevViewHeight = viewHeight; + prevViewWidth = viewWidth; + } + } + + @Override + public Parcelable onSaveInstanceState() { + Bundle bundle = new Bundle(); + bundle.putParcelable("instanceState", super.onSaveInstanceState()); + bundle.putFloat("saveScale", normalizedScale); + bundle.putFloat("matchViewHeight", matchViewHeight); + bundle.putFloat("matchViewWidth", matchViewWidth); + bundle.putInt("viewWidth", viewWidth); + bundle.putInt("viewHeight", viewHeight); + matrix.getValues(m); + bundle.putFloatArray("matrix", m); + bundle.putBoolean("imageRendered", imageRenderedAtLeastOnce); + return bundle; + } + + @Override + public void onRestoreInstanceState(Parcelable state) { + if (state instanceof Bundle) { + Bundle bundle = (Bundle) state; + normalizedScale = bundle.getFloat("saveScale"); + m = bundle.getFloatArray("matrix"); + prevMatrix.setValues(m); + prevMatchViewHeight = bundle.getFloat("matchViewHeight"); + prevMatchViewWidth = bundle.getFloat("matchViewWidth"); + prevViewHeight = bundle.getInt("viewHeight"); + prevViewWidth = bundle.getInt("viewWidth"); + imageRenderedAtLeastOnce = bundle.getBoolean("imageRendered"); + super.onRestoreInstanceState(bundle.getParcelable("instanceState")); + return; + } + + super.onRestoreInstanceState(state); + } + + @Override + protected void onDraw(Canvas canvas) { + onDrawReady = true; + imageRenderedAtLeastOnce = true; + if (delayedZoomVariables != null) { + setZoom(delayedZoomVariables.scale, delayedZoomVariables.focusX, delayedZoomVariables.focusY, delayedZoomVariables.scaleType); + delayedZoomVariables = null; + } + super.onDraw(canvas); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + savePreviousImageValues(); + } + + /** + * Get the max zoom multiplier. + * @return max zoom multiplier. + */ + public float getMaxZoom() { + return maxScale; + } + + /** + * Set the max zoom multiplier. Default value: 3. + * @param max max zoom multiplier. + */ + public void setMaxZoom(float max) { + maxScale = max; + superMaxScale = SUPER_MAX_MULTIPLIER * maxScale; + } + + /** + * Get the min zoom multiplier. + * @return min zoom multiplier. + */ + public float getMinZoom() { + return minScale; + } + + /** + * Get the current zoom. This is the zoom relative to the initial + * scale, not the original resource. + * @return current zoom multiplier. + */ + public float getCurrentZoom() { + return normalizedScale; + } + + /** + * Set the min zoom multiplier. Default value: 1. + * @param min min zoom multiplier. + */ + public void setMinZoom(float min) { + minScale = min; + superMinScale = SUPER_MIN_MULTIPLIER * minScale; + } + + /** + * Reset zoom and translation to initial state. + */ + public void resetZoom() { + normalizedScale = 1; + fitImageToView(); + } + + /** + * Set zoom to the specified scale. Image will be centered by default. + * @param scale + */ + public void setZoom(float scale) { + setZoom(scale, 0.5f, 0.5f); + } + + /** + * Set zoom to the specified scale. Image will be centered around the point + * (focusX, focusY). These floats range from 0 to 1 and denote the focus point + * as a fraction from the left and top of the view. For example, the top left + * corner of the image would be (0, 0). And the bottom right corner would be (1, 1). + * @param scale + * @param focusX + * @param focusY + */ + public void setZoom(float scale, float focusX, float focusY) { + setZoom(scale, focusX, focusY, mScaleType); + } + + /** + * Set zoom to the specified scale. Image will be centered around the point + * (focusX, focusY). These floats range from 0 to 1 and denote the focus point + * as a fraction from the left and top of the view. For example, the top left + * corner of the image would be (0, 0). And the bottom right corner would be (1, 1). + * @param scale + * @param focusX + * @param focusY + * @param scaleType + */ + public void setZoom(float scale, float focusX, float focusY, ScaleType scaleType) { + // + // setZoom can be called before the image is on the screen, but at this point, + // image and view sizes have not yet been calculated in onMeasure. Thus, we should + // delay calling setZoom until the view has been measured. + // + if (!onDrawReady) { + delayedZoomVariables = new ZoomVariables(scale, focusX, focusY, scaleType); + return; + } + + if (scaleType != mScaleType) { + setScaleType(scaleType); + } + resetZoom(); + scaleImage(scale, viewWidth / 2, viewHeight / 2, true); + matrix.getValues(m); + m[Matrix.MTRANS_X] = -((focusX * getImageWidth()) - (viewWidth * 0.5f)); + m[Matrix.MTRANS_Y] = -((focusY * getImageHeight()) - (viewHeight * 0.5f)); + matrix.setValues(m); + fixTrans(); + setImageMatrix(matrix); + } + + /** + * Set zoom parameters equal to another TouchImageView. Including scale, position, + * and ScaleType. + * @param TouchImageView + */ + public void setZoom(TouchImageView img) { + PointF center = img.getScrollPosition(); + setZoom(img.getCurrentZoom(), center.x, center.y, img.getScaleType()); + } + + /** + * Return the point at the center of the zoomed image. The PointF coordinates range + * in value between 0 and 1 and the focus point is denoted as a fraction from the left + * and top of the view. For example, the top left corner of the image would be (0, 0). + * And the bottom right corner would be (1, 1). + * @return PointF representing the scroll position of the zoomed image. + */ + public PointF getScrollPosition() { + Drawable drawable = getDrawable(); + if (drawable == null) { + return null; + } + int drawableWidth = drawable.getIntrinsicWidth(); + int drawableHeight = drawable.getIntrinsicHeight(); + + PointF point = transformCoordTouchToBitmap(viewWidth / 2, viewHeight / 2, true); + point.x /= drawableWidth; + point.y /= drawableHeight; + return point; + } + + /** + * Set the focus point of the zoomed image. The focus points are denoted as a fraction from the + * left and top of the view. The focus points can range in value between 0 and 1. + * @param focusX + * @param focusY + */ + public void setScrollPosition(float focusX, float focusY) { + setZoom(normalizedScale, focusX, focusY); + } + + /** + * Performs boundary checking and fixes the image matrix if it + * is out of bounds. + */ + private void fixTrans() { + matrix.getValues(m); + float transX = m[Matrix.MTRANS_X]; + float transY = m[Matrix.MTRANS_Y]; + + float fixTransX = getFixTrans(transX, viewWidth, getImageWidth()); + float fixTransY = getFixTrans(transY, viewHeight, getImageHeight()); + + if (fixTransX != 0 || fixTransY != 0) { + matrix.postTranslate(fixTransX, fixTransY); + } + } + + /** + * When transitioning from zooming from focus to zoom from center (or vice versa) + * the image can become unaligned within the view. This is apparent when zooming + * quickly. When the content size is less than the view size, the content will often + * be centered incorrectly within the view. fixScaleTrans first calls fixTrans() and + * then makes sure the image is centered correctly within the view. + */ + private void fixScaleTrans() { + fixTrans(); + matrix.getValues(m); + if (getImageWidth() < viewWidth) { + m[Matrix.MTRANS_X] = (viewWidth - getImageWidth()) / 2; + } + + if (getImageHeight() < viewHeight) { + m[Matrix.MTRANS_Y] = (viewHeight - getImageHeight()) / 2; + } + matrix.setValues(m); + } + + private float getFixTrans(float trans, float viewSize, float contentSize) { + float minTrans, maxTrans; + + if (contentSize <= viewSize) { + minTrans = 0; + maxTrans = viewSize - contentSize; + + } else { + minTrans = viewSize - contentSize; + maxTrans = 0; + } + + if (trans < minTrans) + return -trans + minTrans; + if (trans > maxTrans) + return -trans + maxTrans; + return 0; + } + + private float getFixDragTrans(float delta, float viewSize, float contentSize) { + if (contentSize <= viewSize) { + return 0; + } + return delta; + } + + private float getImageWidth() { + return matchViewWidth * normalizedScale; + } + + private float getImageHeight() { + return matchViewHeight * normalizedScale; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + Drawable drawable = getDrawable(); + if (drawable == null || drawable.getIntrinsicWidth() == 0 || drawable.getIntrinsicHeight() == 0) { + setMeasuredDimension(0, 0); + return; + } + + int drawableWidth = drawable.getIntrinsicWidth(); + int drawableHeight = drawable.getIntrinsicHeight(); + int widthSize = MeasureSpec.getSize(widthMeasureSpec); + int widthMode = MeasureSpec.getMode(widthMeasureSpec); + int heightSize = MeasureSpec.getSize(heightMeasureSpec); + int heightMode = MeasureSpec.getMode(heightMeasureSpec); + viewWidth = setViewSize(widthMode, widthSize, drawableWidth); + viewHeight = setViewSize(heightMode, heightSize, drawableHeight); + + // + // Set view dimensions + // + setMeasuredDimension(viewWidth, viewHeight); + + // + // Fit content within view + // + fitImageToView(); + } + + /** + * If the normalizedScale is equal to 1, then the image is made to fit the screen. Otherwise, + * it is made to fit the screen according to the dimensions of the previous image matrix. This + * allows the image to maintain its zoom after rotation. + */ + private void fitImageToView() { + Drawable drawable = getDrawable(); + if (drawable == null || drawable.getIntrinsicWidth() == 0 || drawable.getIntrinsicHeight() == 0) { + return; + } + if (matrix == null || prevMatrix == null) { + return; + } + + int drawableWidth = drawable.getIntrinsicWidth(); + int drawableHeight = drawable.getIntrinsicHeight(); + + // + // Scale image for view + // + float scaleX = (float) viewWidth / drawableWidth; + float scaleY = (float) viewHeight / drawableHeight; + + switch (mScaleType) { + case CENTER: + scaleX = scaleY = 1; + break; + + case CENTER_CROP: + scaleX = scaleY = Math.max(scaleX, scaleY); + break; + + case CENTER_INSIDE: + scaleX = scaleY = Math.min(1, Math.min(scaleX, scaleY)); + + case FIT_CENTER: + scaleX = scaleY = Math.min(scaleX, scaleY); + break; + + case FIT_XY: + break; + + default: + // + // FIT_START and FIT_END not supported + // + throw new UnsupportedOperationException("TouchImageView does not support FIT_START or FIT_END"); + + } + + // + // Center the image + // + float redundantXSpace = viewWidth - (scaleX * drawableWidth); + float redundantYSpace = viewHeight - (scaleY * drawableHeight); + matchViewWidth = viewWidth - redundantXSpace; + matchViewHeight = viewHeight - redundantYSpace; + if (!isZoomed() && !imageRenderedAtLeastOnce) { + // + // Stretch and center image to fit view + // + matrix.setScale(scaleX, scaleY); + matrix.postTranslate(redundantXSpace / 2, redundantYSpace / 2); + normalizedScale = 1; + + } else { + // + // These values should never be 0 or we will set viewWidth and viewHeight + // to NaN in translateMatrixAfterRotate. To avoid this, call savePreviousImageValues + // to set them equal to the current values. + // + if (prevMatchViewWidth == 0 || prevMatchViewHeight == 0) { + savePreviousImageValues(); + } + + prevMatrix.getValues(m); + + // + // Rescale Matrix after rotation + // + m[Matrix.MSCALE_X] = matchViewWidth / drawableWidth * normalizedScale; + m[Matrix.MSCALE_Y] = matchViewHeight / drawableHeight * normalizedScale; + + // + // TransX and TransY from previous matrix + // + float transX = m[Matrix.MTRANS_X]; + float transY = m[Matrix.MTRANS_Y]; + + // + // Width + // + float prevActualWidth = prevMatchViewWidth * normalizedScale; + float actualWidth = getImageWidth(); + translateMatrixAfterRotate(Matrix.MTRANS_X, transX, prevActualWidth, actualWidth, prevViewWidth, viewWidth, drawableWidth); + + // + // Height + // + float prevActualHeight = prevMatchViewHeight * normalizedScale; + float actualHeight = getImageHeight(); + translateMatrixAfterRotate(Matrix.MTRANS_Y, transY, prevActualHeight, actualHeight, prevViewHeight, viewHeight, drawableHeight); + + // + // Set the matrix to the adjusted scale and translate values. + // + matrix.setValues(m); + } + fixTrans(); + setImageMatrix(matrix); + } + + /** + * Set view dimensions based on layout params + * + * @param mode + * @param size + * @param drawableWidth + * @return + */ + private int setViewSize(int mode, int size, int drawableWidth) { + int viewSize; + switch (mode) { + case MeasureSpec.EXACTLY: + viewSize = size; + break; + + case MeasureSpec.AT_MOST: + viewSize = Math.min(drawableWidth, size); + break; + + case MeasureSpec.UNSPECIFIED: + viewSize = drawableWidth; + break; + + default: + viewSize = size; + break; + } + return viewSize; + } + + /** + * After rotating, the matrix needs to be translated. This function finds the area of image + * which was previously centered and adjusts translations so that is again the center, post-rotation. + * + * @param axis Matrix.MTRANS_X or Matrix.MTRANS_Y + * @param trans the value of trans in that axis before the rotation + * @param prevImageSize the width/height of the image before the rotation + * @param imageSize width/height of the image after rotation + * @param prevViewSize width/height of view before rotation + * @param viewSize width/height of view after rotation + * @param drawableSize width/height of drawable + */ + private void translateMatrixAfterRotate(int axis, float trans, float prevImageSize, float imageSize, int prevViewSize, int viewSize, int drawableSize) { + if (imageSize < viewSize) { + // + // The width/height of image is less than the view's width/height. Center it. + // + m[axis] = (viewSize - (drawableSize * m[Matrix.MSCALE_X])) * 0.5f; + + } else if (trans > 0) { + // + // The image is larger than the view, but was not before rotation. Center it. + // + m[axis] = -((imageSize - viewSize) * 0.5f); + + } else { + // + // Find the area of the image which was previously centered in the view. Determine its distance + // from the left/top side of the view as a fraction of the entire image's width/height. Use that percentage + // to calculate the trans in the new view width/height. + // + float percentage = (Math.abs(trans) + (0.5f * prevViewSize)) / prevImageSize; + m[axis] = -((percentage * imageSize) - (viewSize * 0.5f)); + } + } + + private void setState(State state) { + this.state = state; + } + + public boolean canScrollHorizontallyFroyo(int direction) { + return canScrollHorizontally(direction); + } + + @Override + public boolean canScrollHorizontally(int direction) { + matrix.getValues(m); + float x = m[Matrix.MTRANS_X]; + + if (getImageWidth() < viewWidth) { + return false; + + } else if (x >= -1 && direction < 0) { + return false; + + } else if (Math.abs(x) + viewWidth + 1 >= getImageWidth() && direction > 0) { + return false; + } + + return true; + } + + /** + * Gesture Listener detects a single click or long click and passes that on + * to the view's listener. + * @author Ortiz + * + */ + private class GestureListener extends GestureDetector.SimpleOnGestureListener { + + @Override + public boolean onSingleTapConfirmed(MotionEvent e) + { + if(doubleTapListener != null) { + return doubleTapListener.onSingleTapConfirmed(e); + } + return performClick(); + } + + @Override + public void onLongPress(MotionEvent e) + { + performLongClick(); + } + + @Override + public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) + { + if (fling != null) { + // + // If a previous fling is still active, it should be cancelled so that two flings + // are not run simultaenously. + // + fling.cancelFling(); + } + fling = new Fling((int) velocityX, (int) velocityY); + compatPostOnAnimation(fling); + return super.onFling(e1, e2, velocityX, velocityY); + } + + @Override + public boolean onDoubleTap(MotionEvent e) { + boolean consumed = false; + if(doubleTapListener != null) { + consumed = doubleTapListener.onDoubleTap(e); + } + if (state == State.NONE) { + float targetZoom = (normalizedScale == minScale) ? maxScale : minScale; + DoubleTapZoom doubleTap = new DoubleTapZoom(targetZoom, e.getX(), e.getY(), false); + compatPostOnAnimation(doubleTap); + consumed = true; + } + return consumed; + } + + @Override + public boolean onDoubleTapEvent(MotionEvent e) { + return doubleTapListener != null && doubleTapListener.onDoubleTapEvent(e); + } + } + + public interface OnTouchImageViewListener { + public void onMove(); + } + + /** + * Responsible for all touch events. Handles the heavy lifting of drag and also sends + * touch events to Scale Detector and Gesture Detector. + * @author Ortiz + * + */ + private class PrivateOnTouchListener implements OnTouchListener { + + // + // Remember last point position for dragging + // + private PointF last = new PointF(); + + @Override + public boolean onTouch(View v, MotionEvent event) { + mScaleDetector.onTouchEvent(event); + mGestureDetector.onTouchEvent(event); + PointF curr = new PointF(event.getX(), event.getY()); + + if (state == State.NONE || state == State.DRAG || state == State.FLING) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + last.set(curr); + if (fling != null) + fling.cancelFling(); + setState(State.DRAG); + break; + + case MotionEvent.ACTION_MOVE: + if (state == State.DRAG) { + float deltaX = curr.x - last.x; + float deltaY = curr.y - last.y; + float fixTransX = getFixDragTrans(deltaX, viewWidth, getImageWidth()); + float fixTransY = getFixDragTrans(deltaY, viewHeight, getImageHeight()); + matrix.postTranslate(fixTransX, fixTransY); + fixTrans(); + last.set(curr.x, curr.y); + } + break; + + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_POINTER_UP: + setState(State.NONE); + break; + } + } + + setImageMatrix(matrix); + + // + // User-defined OnTouchListener + // + if(userTouchListener != null) { + userTouchListener.onTouch(v, event); + } + + // + // OnTouchImageViewListener is set: TouchImageView dragged by user. + // + if (touchImageViewListener != null) { + touchImageViewListener.onMove(); + } + + // + // indicate event was handled + // + return true; + } + } + + /** + * ScaleListener detects user two finger scaling and scales image. + * @author Ortiz + * + */ + private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { + @Override + public boolean onScaleBegin(ScaleGestureDetector detector) { + setState(State.ZOOM); + return true; + } + + @Override + public boolean onScale(ScaleGestureDetector detector) { + scaleImage(detector.getScaleFactor(), detector.getFocusX(), detector.getFocusY(), true); + + // + // OnTouchImageViewListener is set: TouchImageView pinch zoomed by user. + // + if (touchImageViewListener != null) { + touchImageViewListener.onMove(); + } + return true; + } + + @Override + public void onScaleEnd(ScaleGestureDetector detector) { + super.onScaleEnd(detector); + setState(State.NONE); + boolean animateToZoomBoundary = false; + float targetZoom = normalizedScale; + if (normalizedScale > maxScale) { + targetZoom = maxScale; + animateToZoomBoundary = true; + + } else if (normalizedScale < minScale) { + targetZoom = minScale; + animateToZoomBoundary = true; + } + + if (animateToZoomBoundary) { + DoubleTapZoom doubleTap = new DoubleTapZoom(targetZoom, viewWidth / 2, viewHeight / 2, true); + compatPostOnAnimation(doubleTap); + } + } + } + + private void scaleImage(double deltaScale, float focusX, float focusY, boolean stretchImageToSuper) { + + float lowerScale, upperScale; + if (stretchImageToSuper) { + lowerScale = superMinScale; + upperScale = superMaxScale; + + } else { + lowerScale = minScale; + upperScale = maxScale; + } + + float origScale = normalizedScale; + normalizedScale *= deltaScale; + if (normalizedScale > upperScale) { + normalizedScale = upperScale; + deltaScale = upperScale / origScale; + } else if (normalizedScale < lowerScale) { + normalizedScale = lowerScale; + deltaScale = lowerScale / origScale; + } + + matrix.postScale((float) deltaScale, (float) deltaScale, focusX, focusY); + fixScaleTrans(); + } + + /** + * DoubleTapZoom calls a series of runnables which apply + * an animated zoom in/out graphic to the image. + * @author Ortiz + * + */ + private class DoubleTapZoom implements Runnable { + + private long startTime; + private static final float ZOOM_TIME = 500; + private float startZoom, targetZoom; + private float bitmapX, bitmapY; + private boolean stretchImageToSuper; + private AccelerateDecelerateInterpolator interpolator = new AccelerateDecelerateInterpolator(); + private PointF startTouch; + private PointF endTouch; + + DoubleTapZoom(float targetZoom, float focusX, float focusY, boolean stretchImageToSuper) { + setState(State.ANIMATE_ZOOM); + startTime = System.currentTimeMillis(); + this.startZoom = normalizedScale; + this.targetZoom = targetZoom; + this.stretchImageToSuper = stretchImageToSuper; + PointF bitmapPoint = transformCoordTouchToBitmap(focusX, focusY, false); + this.bitmapX = bitmapPoint.x; + this.bitmapY = bitmapPoint.y; + + // + // Used for translating image during scaling + // + startTouch = transformCoordBitmapToTouch(bitmapX, bitmapY); + endTouch = new PointF(viewWidth / 2, viewHeight / 2); + } + + @Override + public void run() { + float t = interpolate(); + double deltaScale = calculateDeltaScale(t); + scaleImage(deltaScale, bitmapX, bitmapY, stretchImageToSuper); + translateImageToCenterTouchPosition(t); + fixScaleTrans(); + setImageMatrix(matrix); + + // + // OnTouchImageViewListener is set: double tap runnable updates listener + // with every frame. + // + if (touchImageViewListener != null) { + touchImageViewListener.onMove(); + } + + if (t < 1f) { + // + // We haven't finished zooming + // + compatPostOnAnimation(this); + + } else { + // + // Finished zooming + // + setState(State.NONE); + } + } + + /** + * Interpolate between where the image should start and end in order to translate + * the image so that the point that is touched is what ends up centered at the end + * of the zoom. + * @param t + */ + private void translateImageToCenterTouchPosition(float t) { + float targetX = startTouch.x + t * (endTouch.x - startTouch.x); + float targetY = startTouch.y + t * (endTouch.y - startTouch.y); + PointF curr = transformCoordBitmapToTouch(bitmapX, bitmapY); + matrix.postTranslate(targetX - curr.x, targetY - curr.y); + } + + /** + * Use interpolator to get t + * @return + */ + private float interpolate() { + long currTime = System.currentTimeMillis(); + float elapsed = (currTime - startTime) / ZOOM_TIME; + elapsed = Math.min(1f, elapsed); + return interpolator.getInterpolation(elapsed); + } + + /** + * Interpolate the current targeted zoom and get the delta + * from the current zoom. + * @param t + * @return + */ + private double calculateDeltaScale(float t) { + double zoom = startZoom + t * (targetZoom - startZoom); + return zoom / normalizedScale; + } + } + + /** + * This function will transform the coordinates in the touch event to the coordinate + * system of the drawable that the imageview contain + * @param x x-coordinate of touch event + * @param y y-coordinate of touch event + * @param clipToBitmap Touch event may occur within view, but outside image content. True, to clip return value + * to the bounds of the bitmap size. + * @return Coordinates of the point touched, in the coordinate system of the original drawable. + */ + private PointF transformCoordTouchToBitmap(float x, float y, boolean clipToBitmap) { + matrix.getValues(m); + float origW = getDrawable().getIntrinsicWidth(); + float origH = getDrawable().getIntrinsicHeight(); + float transX = m[Matrix.MTRANS_X]; + float transY = m[Matrix.MTRANS_Y]; + float finalX = ((x - transX) * origW) / getImageWidth(); + float finalY = ((y - transY) * origH) / getImageHeight(); + + if (clipToBitmap) { + finalX = Math.min(Math.max(finalX, 0), origW); + finalY = Math.min(Math.max(finalY, 0), origH); + } + + return new PointF(finalX , finalY); + } + + /** + * Inverse of transformCoordTouchToBitmap. This function will transform the coordinates in the + * drawable's coordinate system to the view's coordinate system. + * @param bx x-coordinate in original bitmap coordinate system + * @param by y-coordinate in original bitmap coordinate system + * @return Coordinates of the point in the view's coordinate system. + */ + private PointF transformCoordBitmapToTouch(float bx, float by) { + matrix.getValues(m); + float origW = getDrawable().getIntrinsicWidth(); + float origH = getDrawable().getIntrinsicHeight(); + float px = bx / origW; + float py = by / origH; + float finalX = m[Matrix.MTRANS_X] + getImageWidth() * px; + float finalY = m[Matrix.MTRANS_Y] + getImageHeight() * py; + return new PointF(finalX , finalY); + } + + /** + * Fling launches sequential runnables which apply + * the fling graphic to the image. The values for the translation + * are interpolated by the Scroller. + * @author Ortiz + * + */ + private class Fling implements Runnable { + + CompatScroller scroller; + int currX, currY; + + Fling(int velocityX, int velocityY) { + setState(State.FLING); + scroller = new CompatScroller(context); + matrix.getValues(m); + + int startX = (int) m[Matrix.MTRANS_X]; + int startY = (int) m[Matrix.MTRANS_Y]; + int minX, maxX, minY, maxY; + + if (getImageWidth() > viewWidth) { + minX = viewWidth - (int) getImageWidth(); + maxX = 0; + + } else { + minX = maxX = startX; + } + + if (getImageHeight() > viewHeight) { + minY = viewHeight - (int) getImageHeight(); + maxY = 0; + + } else { + minY = maxY = startY; + } + + scroller.fling(startX, startY, (int) velocityX, (int) velocityY, minX, + maxX, minY, maxY); + currX = startX; + currY = startY; + } + + public void cancelFling() { + if (scroller != null) { + setState(State.NONE); + scroller.forceFinished(true); + } + } + + @Override + public void run() { + + // + // OnTouchImageViewListener is set: TouchImageView listener has been flung by user. + // Listener runnable updated with each frame of fling animation. + // + if (touchImageViewListener != null) { + touchImageViewListener.onMove(); + } + + if (scroller.isFinished()) { + scroller = null; + return; + } + + if (scroller.computeScrollOffset()) { + int newX = scroller.getCurrX(); + int newY = scroller.getCurrY(); + int transX = newX - currX; + int transY = newY - currY; + currX = newX; + currY = newY; + matrix.postTranslate(transX, transY); + fixTrans(); + setImageMatrix(matrix); + compatPostOnAnimation(this); + } + } + } + + @TargetApi(VERSION_CODES.GINGERBREAD) + private class CompatScroller { + Scroller scroller; + OverScroller overScroller; + boolean isPreGingerbread; + + public CompatScroller(Context context) { + if (VERSION.SDK_INT < VERSION_CODES.GINGERBREAD) { + isPreGingerbread = true; + scroller = new Scroller(context); + + } else { + isPreGingerbread = false; + overScroller = new OverScroller(context); + } + } + + public void fling(int startX, int startY, int velocityX, int velocityY, int minX, int maxX, int minY, int maxY) { + if (isPreGingerbread) { + scroller.fling(startX, startY, velocityX, velocityY, minX, maxX, minY, maxY); + } else { + overScroller.fling(startX, startY, velocityX, velocityY, minX, maxX, minY, maxY); + } + } + + public void forceFinished(boolean finished) { + if (isPreGingerbread) { + scroller.forceFinished(finished); + } else { + overScroller.forceFinished(finished); + } + } + + public boolean isFinished() { + if (isPreGingerbread) { + return scroller.isFinished(); + } else { + return overScroller.isFinished(); + } + } + + public boolean computeScrollOffset() { + if (isPreGingerbread) { + return scroller.computeScrollOffset(); + } else { + overScroller.computeScrollOffset(); + return overScroller.computeScrollOffset(); + } + } + + public int getCurrX() { + if (isPreGingerbread) { + return scroller.getCurrX(); + } else { + return overScroller.getCurrX(); + } + } + + public int getCurrY() { + if (isPreGingerbread) { + return scroller.getCurrY(); + } else { + return overScroller.getCurrY(); + } + } + } + + @TargetApi(VERSION_CODES.JELLY_BEAN) + private void compatPostOnAnimation(Runnable runnable) { + if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) { + postOnAnimation(runnable); + + } else { + postDelayed(runnable, 1000/60); + } + } + + private class ZoomVariables { + public float scale; + public float focusX; + public float focusY; + public ScaleType scaleType; + + public ZoomVariables(float scale, float focusX, float focusY, ScaleType scaleType) { + this.scale = scale; + this.focusX = focusX; + this.focusY = focusY; + this.scaleType = scaleType; + } + } + + private void printMatrixInfo() { + float[] n = new float[9]; + matrix.getValues(n); + Log.d(DEBUG, "Scale: " + n[Matrix.MSCALE_X] + " TransX: " + n[Matrix.MTRANS_X] + " TransY: " + n[Matrix.MTRANS_Y]); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/AboutPoinilaDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/AboutPoinilaDialog.java new file mode 100755 index 0000000..20adee7 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/AboutPoinilaDialog.java @@ -0,0 +1,51 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.app.Dialog; +import android.app.DialogFragment; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v7.app.AlertDialog; +import android.text.Html; +import android.text.method.LinkMovementMethod; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.BuildConfig; +import com.shaya.poinila.android.presentation.R; + +/** + * Created by iran on 2015-11-04. + */ +public class AboutPoinilaDialog extends DialogFragment { + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + + PackageInfo packageInfo = null; + try { + packageInfo = getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), 0); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + + builder.setPositiveButton(R.string.ok,null) + .setTitle(R.string.about_poinila) + .setMessage(Html.fromHtml(getString(R.string.about_version_contact, BuildConfig.VERSION_NAME))) + .setCancelable(false); + //.setIcon(R.drawable.logo_full); + + Dialog d = builder.create(); + d.setCancelable(true); + d.setCanceledOnTouchOutside(false); + return d; + } + + @Override + public void onStart() { + super.onStart(); + ((TextView) getDialog().findViewById(android.R.id.message)) + .setMovementMethod(LinkMovementMethod.getInstance()); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/BaseDialogFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/BaseDialogFragment.java new file mode 100755 index 0000000..50a6d6b --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/BaseDialogFragment.java @@ -0,0 +1,261 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.app.Dialog; +import android.app.DialogFragment; +import android.content.Context; +import android.os.Bundle; +import android.support.annotation.LayoutRes; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.annotation.StringRes; +import android.support.v4.widget.Space; +import android.support.v7.app.AlertDialog; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.ResourceUtils; + +import butterknife.Bind; +import butterknife.ButterKnife; +import butterknife.OnClick; + +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static com.shaya.poinila.android.util.ConstantsUtils.NO_RESOURCE; + +/** + * Created by iran on 11/25/2015. + */ +public abstract class BaseDialogFragment extends android.support.v4.app.DialogFragment{ + @Bind(R.id.dialog_title) + TextView titleView; + @Bind(R.id.dialog_positive_button) + Button positiveBtn; + @Bind(R.id.dialog_negative_button) Button negativeBtn; + @Bind(R.id.dialog_neutral_button) Button neutralBtn; + @Bind(R.id.dialog_message) TextView messageView; + LinearLayout container; + @Bind(R.id.divider) View divider; + @Bind(R.id.buttons_space_between1) + Space spaceView1; + @Bind(R.id.buttons_space_between2) Space spaceView2; + + protected static final int LAYOUT_NONE = -1; + protected static final int RESOURCE_NONE = -1; + protected ViewGroup rootView; + + public abstract @LayoutRes int getLayoutResId(); + + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + //setStyle(DialogFragment.STYLE_NO_TITLE, R.style.AppTheme_Dialog);//android.R.style.Theme_Holo_Light_Dialog_NoActionBar_MinWidth);//R.style.AppTheme_Dialog); + + // restoring state - reading parameters + Bundle state = null; + if (savedInstanceState != null) + state = savedInstanceState; + else if (getArguments() != null) + state = getArguments(); + if (state != null) + loadStateFromBundle(state); + + + /* Preventing loss of data on configuration change(like rotation). + * May be saving data on a fragment object and retrieving by fragmentManager is a + * better idea. + * + FragmentManager fm = getFragmentManager(); + dataFragment = (DataFragment) fm.findFragmentByTag(“data”); + + // create the fragment and data the first time + if (dataFragment == null) { + // add the fragment + dataFragment = new DataFragment(); + fm.beginTransaction().add(dataFragment, “data”).commit(); + // load the data from the web + dataFragment.setData(loadMyData()); + } + + //setRetainInstance(true); */ + } +/* + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + // restoring state - reading parameters + Bundle state = null; + if (savedInstanceState != null) + state = savedInstanceState; + else if (getArguments() != null) + state = getArguments(); + if (state != null) + loadStateFromBundle(state); + }*/ + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + saveStateToBundle(outState); + } + + protected abstract void loadStateFromBundle(Bundle savedInstanceState); + + /** + * Saves the state of object in the passed bundle + * @param outState Bundle in which dialog state would be saved + */ + protected abstract void saveStateToBundle(Bundle outState); + +/* @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + rootView = (ViewGroup) inflater.inflate(R.layout.dialog_general, container, false); + + if (getLayoutResId() != LAYOUT_NONE) { + View dialogView = inflater.inflate(getLayoutResId(), rootView, false); + + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0); + lp.weight = 1; + + rootView.addView(dialogView, 2, lp); + } + + ButterKnife.bind(this, rootView); + + //setDialogProperties(); + + initDialogGeneralAttributes(); + + initUI(getActivity()); + + return rootView; + }*/ + + + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + //Dialog dialog = super.onCreateDialog(savedInstanceState); + LayoutInflater inflater = getActivity().getLayoutInflater(); + rootView = (ViewGroup) inflater.inflate(R.layout.dialog_general, container, false); + if (getLayoutResId() != LAYOUT_NONE) { + View dialogView = inflater.inflate(getLayoutResId(), rootView, false); + + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(MATCH_PARENT, 0); + lp.weight = 1; + + rootView.addView(dialogView, 2, lp); + } + ButterKnife.bind(this, rootView); + initUI(getActivity()); + initDialogGeneralAttributes(); + + Dialog dialog= new AlertDialog.Builder(getActivity()).setView(rootView).create(); + + setDialogProperties(dialog); + + return dialog; + } + + private void setDialogProperties(Dialog dialog) { + dialog.setCanceledOnTouchOutside(false); + dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); + //dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + } + + private void initDialogGeneralAttributes() { + GeneralDialogData data = getDialogGeneralAttributes(); + if (data.title != null) + titleView.setText(data.title); + else { + titleView.setVisibility(View.GONE); + divider.setVisibility(View.GONE); + } + + if (data.message != null) + messageView.setText(data.message); + else + messageView.setVisibility(View.GONE); + + /*---Buttons----*/ + + // pos + if (data.positiveButtonText != null) { + positiveBtn.setText(data.positiveButtonText); + } else{ + positiveBtn.setVisibility(View.GONE); + } + + // neutral + if (data.neutralButtonText != null) { + neutralBtn.setVisibility(View.VISIBLE); + neutralBtn.setText(data.neutralButtonText); + spaceView1.setVisibility(View.VISIBLE); + } + + // neg + if (data.negativeButtonText!= null) + negativeBtn.setText(data.negativeButtonText); + else{ + spaceView2.setVisibility(View.GONE); + negativeBtn.setVisibility(View.GONE); + } + } + + protected abstract GeneralDialogData getDialogGeneralAttributes(); + + protected abstract void initUI(Context context); + + @OnClick(R.id.dialog_positive_button) public void onPositiveButton(){ + dismiss(); + } + + @OnClick(R.id.dialog_neutral_button) public void onNeutralButton(){ + dismiss(); + } + + @OnClick(R.id.dialog_negative_button) public void onNegativeButton(){ + dismiss(); + } + + + @Override + public void onDestroy() { + super.onDestroy(); + ButterKnife.unbind(this); + } + + public static class GeneralDialogData { + public final String title; + public final String message; + public final String positiveButtonText; + public final String negativeButtonText; + public final String neutralButtonText; + + GeneralDialogData(String title, String message, String positiveButtonText, String negativeButtonText, String neutralButtonText){ + this.title = title; + this.message = message; + this.positiveButtonText = positiveButtonText; + this.negativeButtonText = negativeButtonText; + this.neutralButtonText = neutralButtonText; + } + + GeneralDialogData(@StringRes int titleRes, @StringRes int messageRes, @StringRes int positiveButtonTextRes + , @StringRes int negativeButtonTextRes, @StringRes int neutralButtonTextRes){ + this.title = titleRes != NO_RESOURCE ? ResourceUtils.getString(titleRes) : null; + this.message = messageRes != NO_RESOURCE ? ResourceUtils.getString(messageRes) : null; + this.positiveButtonText = positiveButtonTextRes != NO_RESOURCE ? ResourceUtils.getString(positiveButtonTextRes) : null; + this.negativeButtonText = negativeButtonTextRes != NO_RESOURCE ? ResourceUtils.getString(negativeButtonTextRes) : null; + this.neutralButtonText = neutralButtonTextRes != NO_RESOURCE ? ResourceUtils.getString(neutralButtonTextRes) : null; + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/BusDialogFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/BusDialogFragment.java new file mode 100755 index 0000000..c49cc53 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/BusDialogFragment.java @@ -0,0 +1,174 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.app.Dialog; +import android.app.ProgressDialog; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.support.annotation.CallSuper; +import android.support.annotation.LayoutRes; +import android.support.annotation.NonNull; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ProgressBar; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; + +import butterknife.ButterKnife; +import data.event.BaseEvent; + +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; + +/** + * Created by iran on 2015-09-26. + */ +public abstract class BusDialogFragment extends BaseDialogFragment{ + protected boolean initDataResponseReceived = false; + protected ViewGroup progressView; + private View loadableView; + private ViewGroup loadableViewParent; + private ViewGroup.LayoutParams loadableViewLayoutParams; + private int loadableViewIndex; + + private ProgressDialog mProgressDialog; + + /*----Same Code as BusFragment---------*/ + + @Override + public void onStart() { + super.onStart(); + BusProvider.getBus().register(this); + if (sendsRequestAutomatically() && !initDataResponseReceived) + initData(); + } + + protected abstract boolean sendsRequestAutomatically(); + + @Override + public void onStop() { + super.onStop(); + BusProvider.getBus().unregister(this); + } + + @CallSuper + protected void onGettingInitDataResponse(BaseEvent event) { + if (isInitDataResponseValid(event)) + onSuccessfulInitData(event); + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + + mProgressDialog = new ProgressDialog(getActivity(), 0); + mProgressDialog.setMessage(getString(R.string.progress_dialog_message)); + + return super.onCreateDialog(savedInstanceState); + } + + + + /** + * called only on creating view. (with regard to {@link #initDataResponseReceived} + * if somethings need to be updated, update with events and bus. + */ + public void initData() { + initDataResponseReceived = false; + if (mustShowProgressView()) + showProgress(); + //requestTracker.addInitRequestID(RandomUtils.getRandomInt()); + requestInitialData(); + } + + protected abstract void requestInitialData(); + + public abstract ViewGroup getLoadableView(); + + protected void showProgress() { + progressView = (ViewGroup) LayoutInflater.from(getActivity()).inflate(getProgressViewLayoutID(), rootView, false); + initProgressBar(getProgressBar()); + /*int progressBarSize = getResources().getDimensionPixelSize(R.dimen.icon_big); + FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(progressBarSize, progressBarSize); + lp.gravity = Gravity.CENTER; + progressView.addView(getProgressBar(), lp);*/ + + loadableView = getLoadableView(); + loadableViewLayoutParams = loadableView.getLayoutParams(); + + loadableViewParent = (ViewGroup) loadableView.getParent(); + loadableViewIndex = loadableViewParent.indexOfChild(loadableView); + + //TODO: null pointer sometimes. but why? + if (loadableViewParent != null) { + loadableViewParent.removeView(loadableView); + loadableViewParent.addView(progressView, loadableViewIndex, loadableViewLayoutParams); + } + + if (getProgressBar().isIndeterminate()) { + new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { + @Override + public void run() { + if (rootView.findViewById(R.id.progress_view) != null) + dismissProgress(false); + } + }, ConstantsUtils.CONNECT_TIME_OUT_MILLISECONDS); + } + } + + @LayoutRes + protected int getProgressViewLayoutID() { + return R.layout.progress; + } + + protected void initProgressBar(ProgressBar progressBar) { + + } + + public void showProgressDialog(){ + if(mProgressDialog != null) mProgressDialog.show(); + } + + public void dismissProgressDialog(){ + mProgressDialog.dismiss(); + } + + public ProgressBar getProgressBar() { + /*ProgressBar progressBar = ButterKnife.findById(progressView, R.id.progress_bar); + if (progressBar == null){ + progressBar = new ProgressBar(getActivity(), null, android.R.attr.progressBarStyleLarge); + } + return progressBar;*/ + return ButterKnife.findById(progressView, R.id.progress_bar); + } + + // TODO: sometimes getting null loadableViewParent. But what times exactly? + protected void dismissProgress(boolean dataLoadSuccessful) { + if (loadableViewParent == null) return; + + loadableViewParent.removeView(progressView); + if (dataLoadSuccessful) { + //ViewUtils.enableLayoutChildes(getLoadableView(), true); + loadableViewParent.addView(loadableView, loadableViewIndex, loadableViewLayoutParams); + } + } + + @CallSuper + public void onSuccessfulInitData(BaseEvent baseEvent) { + if (mustShowProgressView() && !initDataResponseReceived) + dismissProgress(true); + initDataResponseReceived = true; + } + + public abstract boolean mustShowProgressView(); + + protected boolean isInitDataResponseValid(BaseEvent baseEvent) { + // in many cases of list pages, requestForInitData just calls the requestForLoadMore so we call this + // function on getting response data of list. In order to avoid view hierarchy traversing on every + // list data response, we check the requestOnFirstTime flag to be true. + return true; + } + /*---temporary validity check functions----*/ + //TODO: later, these methods must +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeCircleNameDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeCircleNameDialog.java new file mode 100755 index 0000000..0f155ea --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeCircleNameDialog.java @@ -0,0 +1,77 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.widget.EditText; + +import com.mobsandgeeks.saripaar.annotation.Length; +import com.mobsandgeeks.saripaar.annotation.NotEmpty; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity; +import com.shaya.poinila.android.util.ConstantsUtils; + +import butterknife.Bind; + +import static com.shaya.poinila.android.presentation.view.activity.SettingActivity.SettingType.CIRCLE_NAME; +import static com.shaya.poinila.android.util.ConstantsUtils.NO_RESOURCE; + +/** + * Created by iran on 2015-09-23. + */ +public class ChangeCircleNameDialog extends SingleTextFieldDialog { + private static final String KEY_CIRCLE_NAME = "circle name"; + @Length(max = ConstantsUtils.max_length_circle_name, min = ConstantsUtils.min_length_circle_name, messageResId = R.string.error_circle_name_length) + @Bind(R.id.input_field) public EditText inputField; + private String circleName; + + public static ChangeCircleNameDialog newInstance(String oldCircleName) { + Bundle args = new Bundle(); + ChangeCircleNameDialog fragment = new ChangeCircleNameDialog(); + fragment.circleName = oldCircleName; + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + @Override + protected void saveStateToBundle(Bundle outState) { + super.saveStateToBundle(outState); + outState.putString(KEY_CIRCLE_NAME, circleName); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.edit_circle_name, NO_RESOURCE, R.string.submit, R.string.cancel, NO_RESOURCE); + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + super.loadStateFromBundle(savedInstanceState); + circleName = savedInstanceState.getString(KEY_CIRCLE_NAME, ""); + } + + @Override + protected void initUI(Context context) { + super.initUI(context); + inputField.setText(circleName); + } + + @Override + protected SettingActivity.SettingType getSettingType() { + return CIRCLE_NAME; + } + + @Override + protected void setTextFieldInputMethod() { + inputLayout.setCounterEnabled(true); + inputLayout.setCounterMaxLength(ConstantsUtils.max_length_circle_name); + inputLayout.setHint(getString(R.string.circle_name)); + } + + @Override + protected int getItemPosition() { + return adapterPosition; + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeEmailDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeEmailDialog.java new file mode 100755 index 0000000..3ead5e8 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeEmailDialog.java @@ -0,0 +1,79 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.text.InputType; +import android.widget.EditText; + +import com.mobsandgeeks.saripaar.annotation.Email; +import com.mobsandgeeks.saripaar.annotation.Length; +import com.mobsandgeeks.saripaar.annotation.NotEmpty; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity; +import com.shaya.poinila.android.util.ConstantsUtils; + +import butterknife.Bind; + +import static com.shaya.poinila.android.util.ConstantsUtils.NO_RESOURCE; + +/** + * Created by iran on 2015-07-21. + */ +public class ChangeEmailDialog extends SingleTextFieldDialog { + + private static final String KEY_EMAIL = "email"; + @NotEmpty(trim = true, messageResId = R.string.error_required_field) + @Length(max = ConstantsUtils.max_length_email, messageResId = R.string.error_max_50) + @Email(messageResId = R.string.error_mail) + @Bind(R.id.input_field) public EditText inputField; + private String email; + + public static ChangeEmailDialog newInstance(String oldEmail) { + Bundle args = new Bundle(); + ChangeEmailDialog fragment = new ChangeEmailDialog(); + fragment.email = oldEmail; + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + @Override + protected void initUI(Context context) { + super.initUI(context); + inputField.setText(email); + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + super.loadStateFromBundle(savedInstanceState); + email = savedInstanceState.getString(KEY_EMAIL, ""); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + super.saveStateToBundle(outState); + outState.putString(KEY_EMAIL, email); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.change_email, NO_RESOURCE, R.string.submit, R.string.cancel, NO_RESOURCE); + } + + @Override + protected SettingActivity.SettingType getSettingType() { + return SettingActivity.SettingType.EMAIL; + } + + @Override + protected void setTextFieldInputMethod() { + inputField.setInputType(InputType.TYPE_CLASS_TEXT | + InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS); + inputField.setHint(R.string.hint_email); + } + + @Override + protected int getItemPosition() { + return -1; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeFrameNameDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeFrameNameDialog.java new file mode 100755 index 0000000..a308c58 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeFrameNameDialog.java @@ -0,0 +1,72 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.widget.EditText; + +import com.mobsandgeeks.saripaar.annotation.Length; +import com.mobsandgeeks.saripaar.annotation.NotEmpty; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity; +import com.shaya.poinila.android.util.ConstantsUtils; + +import butterknife.Bind; + +import static com.shaya.poinila.android.presentation.view.activity.SettingActivity.SettingType.FRAME_NAME; +import static com.shaya.poinila.android.util.ConstantsUtils.NO_RESOURCE; + +public class ChangeFrameNameDialog extends SingleTextFieldDialog { + private static final java.lang.String KEY_FRAME_NAME = "frame name"; + @Length(max = ConstantsUtils.max_length_frame_name, min = ConstantsUtils.min_length_frame_name, messageResId = R.string.error_frame_name_length) + @Bind(R.id.input_field) public EditText inputField; + String frameName; + + public static ChangeFrameNameDialog newInstance(String oldFrameName) { + Bundle args = new Bundle(); + ChangeFrameNameDialog fragment = new ChangeFrameNameDialog(); + fragment.frameName = oldFrameName; + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + @Override + protected void initUI(Context context) { + super.initUI(context); + inputField.setText(frameName); + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + super.loadStateFromBundle(savedInstanceState); + frameName = savedInstanceState.getString(KEY_FRAME_NAME, ""); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + super.saveStateToBundle(outState); + outState.putString(KEY_FRAME_NAME, frameName); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.edit_frame_name, NO_RESOURCE, R.string.submit, R.string.cancel, NO_RESOURCE); + } + + @Override + protected SettingActivity.SettingType getSettingType() { + return FRAME_NAME; + } + + @Override + protected void setTextFieldInputMethod() { + inputLayout.setCounterEnabled(true); + inputLayout.setCounterMaxLength(ConstantsUtils.max_length_frame_name); + inputLayout.setHint(getString(R.string.frame_name)); + } + + @Override + protected int getItemPosition() { + return adapterPosition; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeFriendCirclesDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeFriendCirclesDialog.java new file mode 100755 index 0000000..8abc580 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeFriendCirclesDialog.java @@ -0,0 +1,149 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.CheckBoxClickUIEvent; +import com.shaya.poinila.android.presentation.uievent.FriendCirclesUpdated; +import com.shaya.poinila.android.presentation.viewholder.CheckedCircleViewHolder; +import com.shaya.poinila.android.util.BusProvider; +import com.squareup.otto.Subscribe; + +import org.parceler.Parcels; + +import java.util.ArrayList; +import java.util.List; + +import data.PoinilaNetService; +import data.model.Circle; +import data.model.Member; +import manager.DBFacade; + +import static android.support.v7.widget.LinearLayoutManager.VERTICAL; + +/** + * Created by iran on 2015-08-19. + */ +public class ChangeFriendCirclesDialog extends ListBusDialogFragment { + private static final String KEY_FRIEND = "friend"; + + private Member friend; + + @Override + public int getLayoutResId() { + return R.layout.recycler_view_full; + } + + public static ChangeFriendCirclesDialog newInstance(Member friend) { + Bundle args = new Bundle(); + ChangeFriendCirclesDialog fragment = new ChangeFriendCirclesDialog(); + fragment.friend = friend; + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + + @Override + protected void initUI(final Context context) { + super.initUI(context); + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setLinearLayoutManager(VERTICAL). + setAdapter(getRecyclerViewAdapter()). + bindViewToAdapter(); + if (friend!= null) + fill(); + } + + private void selectFriendCurrentCircles(List allCircles, List friendCircleIDS) { + if (friendCircleIDS == null) + return; + for (Circle circle : allCircles) { + if (friendCircleIDS.contains(circle.id)){ + circle.selected = true; + } + } + } + + @Subscribe public void onCircleSelected(CheckBoxClickUIEvent event){ + getRecyclerViewAdapter().getItem(event.adapterPosition).selected = event.checked; + } + + @Override + public void onPositiveButton() { + List selectedCirclesIDs = new ArrayList<>(); + for (Object circle : getRecyclerViewAdapter().getItems()) { + if (((Circle)circle).selected) + selectedCirclesIDs.add(((Circle)circle).id); + } + PoinilaNetService.changeFriendCircle(selectedCirclesIDs, friend.id); + BusProvider.getBus().post(new FriendCirclesUpdated(selectedCirclesIDs, friend)); + super.onPositiveButton(); + } + +/* @Subscribe public void onMemberReceived(MemberReceivedEvent event){ + this.friend = event.member; + fill(); + }*/ + + private void fill(){ + List allCircles = DBFacade.getMyCircles(); + selectFriendCurrentCircles(allCircles, friend.circle_ids); + getRecyclerViewAdapter().resetData(allCircles); + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + super.loadStateFromBundle(savedInstanceState); + friend = Parcels.unwrap(savedInstanceState.getParcelable(KEY_FRIEND)); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + super.saveStateToBundle(outState); + outState.putParcelable(KEY_FRIEND, Parcels.wrap(friend)); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.select_circle, RESOURCE_NONE, R.string.finish, RESOURCE_NONE, RESOURCE_NONE); + } + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.linearListEndDetectorListener(getRecyclerViewAdapter(), this); + } + + @Override + public void requestForMoreData() { + + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return new RecyclerViewAdapter(getActivity(), R.layout.checked_text) { + @Override + protected CheckedCircleViewHolder getProperViewHolder(View v, int viewType) { + return new CheckedCircleViewHolder(v); + } + }; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeNameDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeNameDialog.java new file mode 100755 index 0000000..44e48eb --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeNameDialog.java @@ -0,0 +1,81 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.support.design.widget.TextInputEditText; +import android.support.design.widget.TextInputLayout; +import android.widget.EditText; + +import com.mobsandgeeks.saripaar.annotation.Length; +import com.mobsandgeeks.saripaar.annotation.NotEmpty; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity.SettingType; +import com.shaya.poinila.android.util.ConstantsUtils; + +import butterknife.Bind; + +/** + * Created by iran on 2015-07-21. + */ +public class ChangeNameDialog extends SingleTextFieldDialog{ + + private static final String KEY_FULL_NAME = ConstantsUtils.KEY_FULL_NAME; + @Length(max = ConstantsUtils.max_length_full_name, min = ConstantsUtils.min_length_full_name, + messageResId = R.string.error_full_name_length, trim = true) + @Bind(R.id.input_field) + TextInputEditText fullNameField; + @Bind(R.id.field_input_layout) + TextInputLayout inputLayout; + + private String fullName; + + public static ChangeNameDialog newInstance(String fullName) { + Bundle args = new Bundle(); + ChangeNameDialog fragment = new ChangeNameDialog(); + fragment.fullName = fullName; + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + @Override + protected void initUI(Context context) { + super.initUI(context); + fullNameField.setText(fullName); + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + super.loadStateFromBundle(savedInstanceState); + fullName = savedInstanceState.getString(KEY_FULL_NAME, ""); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + super.saveStateToBundle(outState); + outState.putString(KEY_FULL_NAME, fullName); + } + + @Override + protected SettingType getSettingType() { + return SettingActivity.SettingType.FullName; + } + + @Override + protected void setTextFieldInputMethod() { + inputLayout.setCounterEnabled(true); + inputLayout.setCounterMaxLength(ConstantsUtils.max_length_full_name); + inputLayout.setHint(getString(R.string.hint_full_name)); + } + + @Override + protected int getItemPosition() { + return -1; + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(RESOURCE_NONE, RESOURCE_NONE, R.string.submit, R.string.cancel, RESOURCE_NONE); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangePhoneDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangePhoneDialog.java new file mode 100755 index 0000000..a703fd0 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangePhoneDialog.java @@ -0,0 +1,67 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.text.InputType; +import android.widget.EditText; + +import com.mobsandgeeks.saripaar.annotation.Length; +import com.mobsandgeeks.saripaar.annotation.NotEmpty; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity; + +import butterknife.Bind; + +/** + * Created by iran on 1/9/2016. + */ +public class ChangePhoneDialog extends SingleTextFieldDialog{ + + @NotEmpty(trim = true, messageResId = R.string.error_required_field) + + private static final String KEY_PHONE_NO = "old mobileNumber"; + private String mobileNumber; + + @Override + protected void initUI(Context context) { + super.initUI(context); + + inputField.setText(mobileNumber); + } + + public static ChangePhoneDialog newInstance(String oldCellPhone) { + Bundle args = new Bundle(); + ChangePhoneDialog fragment = new ChangePhoneDialog(); + args.putString(KEY_PHONE_NO, oldCellPhone); + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + @Override + protected SettingActivity.SettingType getSettingType() { + return SettingActivity.SettingType.PHONE; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + super.loadStateFromBundle(savedInstanceState); + + mobileNumber = savedInstanceState.getString(KEY_PHONE_NO, ""); + } + + @Override + protected void setTextFieldInputMethod() { + inputField.setInputType(InputType.TYPE_CLASS_PHONE); + } + + @Override + protected int getItemPosition() { + return -1; + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.edit_phone_no, RESOURCE_NONE, R.string.submit, R.string.cancel, RESOURCE_NONE); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeWebsiteDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeWebsiteDialog.java new file mode 100755 index 0000000..2ed02fa --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ChangeWebsiteDialog.java @@ -0,0 +1,97 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.support.design.widget.TextInputEditText; +import android.text.TextUtils; +import android.widget.EditText; +import android.widget.TextView; + +import com.mobsandgeeks.saripaar.ValidationError; +import com.mobsandgeeks.saripaar.Validator; +import com.mobsandgeeks.saripaar.annotation.NotEmpty; +import com.mobsandgeeks.saripaar.annotation.Url; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.SimpleSettingTextSetEvent; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; + +import java.util.List; + +import butterknife.Bind; + +/** + * Created by iran on 2015-10-07. + */ +public class ChangeWebsiteDialog extends BaseDialogFragment { + private static final String KEY_WEBSITE_NAME = ConstantsUtils.KEY_WEBSITE_NAME; + private static final String KEY_WEBSITE_ADDRESS = ConstantsUtils.KEY_WEBSITE_URL; + @Bind(R.id.website_name) + TextInputEditText websiteNameInput; + + @Bind(R.id.website_url) + TextInputEditText websiteAddressInput; + private String websiteName; + private String websiteAddress; + + @Override + public int getLayoutResId() { + return R.layout.dialog_setting_website; + } + + public static ChangeWebsiteDialog newInstance(String oldWebsiteAddress, String oldWebsiteName) { + Bundle args = new Bundle(); + ChangeWebsiteDialog fragment = new ChangeWebsiteDialog(); + args.putString(KEY_WEBSITE_ADDRESS, oldWebsiteAddress); + args.putString(KEY_WEBSITE_NAME, oldWebsiteName); + fragment.setArguments(args); + return fragment; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + websiteAddress = savedInstanceState.getString(KEY_WEBSITE_ADDRESS, ""); + websiteName = savedInstanceState.getString(KEY_WEBSITE_NAME, ""); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + outState.putString(KEY_WEBSITE_ADDRESS, websiteAddressInput.getText().toString()); + outState.putString(KEY_WEBSITE_NAME, websiteNameInput.getText().toString()); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.edit_website, RESOURCE_NONE, R.string.submit, R.string.cancel, RESOURCE_NONE); + } + + @Override + protected void initUI(Context context) { + websiteNameInput.setText(websiteName); + websiteAddressInput.setText(websiteAddress); + } + + @Override + public void onPositiveButton() { + // TODO: how can we achieve the same using saripaar?; + // it's not valid name is set but url is empty. every other state is valid + if (validateNameIsNotEmptyWhenURLIsNot(websiteAddressInput, websiteNameInput) && ViewUtils.validateUrl(websiteAddressInput)) { + BusProvider.getBus().post(new SimpleSettingTextSetEvent( + SettingActivity.SettingType.WEBSITE, + websiteNameInput.getText().toString() + "&" + websiteAddressInput.getText().toString().toLowerCase(), -1)); + } + dismiss(); + } + + private boolean validateNameIsNotEmptyWhenURLIsNot(EditText websiteAddressInput, EditText websiteNameInput) { + if (!TextUtils.isEmpty(websiteNameInput.getText().toString()) && + TextUtils.isEmpty(websiteAddressInput.getText().toString())) { + + ViewUtils.setInputError(websiteAddressInput, R.string.error_websiteNameSetURLNot); + return false; + } + return true; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/CircleMembersManagementDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/CircleMembersManagementDialog.java new file mode 100755 index 0000000..4049c94 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/CircleMembersManagementDialog.java @@ -0,0 +1,133 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.MemberCircleToggledEvent; +import com.shaya.poinila.android.presentation.viewholder.CircleMemberViewHolder; +import com.squareup.otto.Subscribe; + +import java.util.List; + +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.MembersReceivedEvent; +import data.model.Member; +import manager.DataRepository; + +/** + * Created by iran on 2015-07-26. + */ +public class CircleMembersManagementDialog extends ListBusDialogFragment{ + + private static final String KEY_CIRCLE_ID = "circle id"; + private String circleID; + + public static CircleMembersManagementDialog newInstance(String circleID) { + Bundle args = new Bundle(); + CircleMembersManagementDialog fragment = new CircleMembersManagementDialog(); + fragment.circleID = circleID; + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + super.loadStateFromBundle(savedInstanceState); + circleID = savedInstanceState.getString(KEY_CIRCLE_ID, null); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + super.saveStateToBundle(outState); + outState.putString(KEY_CIRCLE_ID, circleID); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.circle_members_management, RESOURCE_NONE, R.string.finish, RESOURCE_NONE, RESOURCE_NONE); + } + + @Subscribe + public void onToggle(MemberCircleToggledEvent event){ + Member member = getRecyclerViewAdapter().getItem(event.adapterPosition); + member.selected ^= true; + if (member.selected) { + PoinilaNetService.addFriendToCircle(circleID, member.getId()); + // TODO: request for removing this collectionSpinner from frame + }else { + PoinilaNetService.removeFriendFromCircle(circleID, member.getId()); + } + getRecyclerViewAdapter().notifyItemChanged(event.adapterPosition); + } + + @Override + protected void initUI(Context context) { + super.initUI(context); + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setLinearLayoutManager(LinearLayoutManager.VERTICAL). + setAdapter(getRecyclerViewAdapter()). + bindViewToAdapter(); + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.linearListEndDetectorListener(getRecyclerViewAdapter(), this); + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return new RecyclerViewAdapter(getActivity(), R.layout.member_inlist) { + @Override + protected CircleMemberViewHolder getProperViewHolder(View v, int viewType) { + return new CircleMemberViewHolder(v); + } + }; + } + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + requestForMoreData(); + } + + @Override + public boolean mustShowProgressView() { + return true; + } + + @Override + public void requestForMoreData() { + DataRepository.getInstance().getMemberFriends(DataRepository.getInstance().getMyId(), bookmark); + } + + @Subscribe public void OnFriendsReceived(MembersReceivedEvent event){ + onGettingInitDataResponse(event); + onGettingListDataResponse(event, event.bookmark); + } + + @Override + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + super.onSuccessfulListData(baseEvent, newBookmark); + List members = ((MembersReceivedEvent) baseEvent).members; + for (Member member : members) { + member.selected = member.circle_ids != null && member.circle_ids.contains(Integer.parseInt(circleID)); + } + getRecyclerViewAdapter().addItems(members); + } + + @Override + public int getLayoutResId() { + return R.layout.recycler_view_weighted_full; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ContactUsDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ContactUsDialog.java new file mode 100755 index 0000000..b07342f --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ContactUsDialog.java @@ -0,0 +1,92 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.widget.EditText; +import android.widget.RadioGroup; +import android.widget.TextView; + +import com.mobsandgeeks.saripaar.ValidationError; +import com.mobsandgeeks.saripaar.Validator; +import com.mobsandgeeks.saripaar.annotation.Length; +import com.mobsandgeeks.saripaar.annotation.NotEmpty; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.util.ConstantsUtils; + +import java.util.List; + +import butterknife.Bind; +import data.PoinilaNetService; + +/** + * Created by iran on 2015-11-07. + */ +public class ContactUsDialog extends BaseDialogFragment implements Validator.ValidationListener{ + @Length(max = ConstantsUtils.max_length_report_title, messageResId = R.string.error_max_200) + @NotEmpty(trim = true, messageResId = R.string.error_required_field) + @Bind(R.id.title) + EditText titleInput; + + @Length(max = ConstantsUtils.max_length_report_content, messageResId = R.string.error_max_5000) + @NotEmpty(trim = true, messageResId = R.string.error_required_field) + @Bind(R.id.content) + EditText contentInput; + + @Bind(R.id.radio_group) public RadioGroup radioGroup; + @Bind(R.id.left_textview) public TextView leftTextView; + @Bind(R.id.right_textview) public TextView rightTextView; + + private Validator validator; + + @Override + public int getLayoutResId() { + return R.layout.dialog_contact_us; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + + } + + @Override + protected void saveStateToBundle(Bundle outState) { + + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.contact_us, RESOURCE_NONE, R.string.send, R.string.cancel, RESOURCE_NONE); + } + + @Override + protected void initUI(Context context) { + ViewUtils.setText(leftTextView, getString(R.string.critics_and_suggestions)); + ViewUtils.setText(rightTextView, getString(R.string.report_bug)); + + validator = new Validator(this); + validator.setValidationListener(this); + + contentInput.setMinLines(3); + contentInput.setMaxLines(7); + } + + @Override + public void onPositiveButton() { + validator.validate(false); + super.onPositiveButton(); + } + + @Override + public void onValidationSucceeded() { + PoinilaNetService.sendReport( + radioGroup.getCheckedRadioButtonId() == R.id.left_radioBtn ? "proposal" : "bug", + titleInput.getText().toString().trim(), + contentInput.getText().toString().trim()); + } + + @Override + public void onValidationFailed(List errors) { + ViewUtils.handleSaripaarErrors(errors, getActivity()); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/CoverFromPostsDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/CoverFromPostsDialog.java new file mode 100755 index 0000000..a832372 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/CoverFromPostsDialog.java @@ -0,0 +1,150 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.ImageClickedUIEvent; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.viewholder.SingleImageViewHolder; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.ResourceUtils; +import com.squareup.otto.Subscribe; + +import java.util.List; + +import data.event.BaseEvent; +import data.event.PostReceivedEvent; +import data.event.PostsReceivedEvent; +import data.model.ImageUrls; +import data.model.Post; +import data.model.PostType; +import manager.DataRepository; + +import static android.support.v7.widget.StaggeredGridLayoutManager.VERTICAL; + +/** + * Created by iran on 2015-09-26. + */ +public class CoverFromPostsDialog extends ListBusDialogFragment{ + + private static final String KEY_COLLECTION_ID = ConstantsUtils.KEY_COLLECTION_ID; + private String collectionID; + + + public static CoverFromPostsDialog newInstance(String collectionID){ + CoverFromPostsDialog dialogFragment = new CoverFromPostsDialog(); + Bundle arguments = new Bundle(); + arguments.putString(KEY_COLLECTION_ID, collectionID); + dialogFragment.setArguments(arguments); + return dialogFragment; + } + + + @Subscribe public void onPostsReceveid(PostsReceivedEvent event){ + onGettingInitDataResponse(event); + onGettingListDataResponse(event, event.bookmark); + } + + @Override + protected boolean isInitDataResponseValid(BaseEvent baseEvent) { + return ((PostsReceivedEvent) baseEvent).receiverName == BaseEvent.ReceiverName.PostsImagesDialog && super.isInitDataResponseValid(baseEvent); + } + + @Override + protected boolean isListDataResponseValid(BaseEvent baseEvent, String responseBookmark) { + return ((PostsReceivedEvent) baseEvent).receiverName == BaseEvent.ReceiverName.PostsImagesDialog && + super.isListDataResponseValid(baseEvent, ((PostsReceivedEvent) baseEvent).bookmark); + } + + @Override + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + super.onSuccessfulListData(baseEvent, newBookmark); + List posts = ((PostsReceivedEvent) baseEvent).posts; + for (int i = posts.size() - 1; i >= 0; i--){ + if (posts.get(i).type == PostType.TEXT) + posts.remove(i); + } + getRecyclerViewAdapter().addItems(posts); + } + + @Override + protected void initUI(Context context) { + super.initUI(context); + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setAdapter(getRecyclerViewAdapter()). + setStaggeredLayoutManager(VERTICAL, ResourceUtils.getInteger(R.integer.column_count)). + bindViewToAdapter(); + } + + @Subscribe public void onImageClicked(ImageClickedUIEvent event){ + Post post = getRecyclerViewAdapter().getItem(event.adapterPosition); + BusProvider.getBus().post(new PostReceivedEvent(post)); + dismiss(); + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.staggeredListEndDetectorListener(getRecyclerViewAdapter(), this); + } + + @Override + public void requestForMoreData() { + DataRepository.getCollectionPostsImages(collectionID, null, bookmark, BaseEvent.ReceiverName.PostsImagesDialog); + } + + @Override + public RecyclerViewAdapter> createAndReturnRVAdapter() { + return new RecyclerViewAdapter>(getActivity(), R.layout.single_image_staggered) { + @Override + protected SingleImageViewHolder getProperViewHolder(View v, int viewType) { + return new SingleImageViewHolder(v) { + @Override + public void fill(Post post) { + ViewUtils.setImage(imageView, post.imagesUrls, ImageUrls.ImageType.POST, ImageUrls.ImageSize.MEDIUM); + } + }; + } + }; + } + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + requestForMoreData(); + } + + @Override + public boolean mustShowProgressView() { + return true; + } + + @Override + public int getLayoutResId() { + return R.layout.recycler_view_full; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + collectionID = savedInstanceState.getString(KEY_COLLECTION_ID); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + outState.putString(KEY_COLLECTION_ID, collectionID); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(getString(R.string.hint_coverFromPosts), null, null, null, null); + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/DialogLauncher.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/DialogLauncher.java new file mode 100755 index 0000000..cbc1888 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/DialogLauncher.java @@ -0,0 +1,125 @@ + +package com.shaya.poinila.android.presentation.view.dialog; + +import android.app.FragmentManager; +import android.view.View; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.PositiveButtonClickedUIEvent; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.Logger; + +import data.model.Collection; +import data.model.FriendRequestAnswer; +import data.model.Member; +import data.model.Post; +import data.model.SuggestedWebPagePost; + + +/** + * Created by iran on 2015-09-26. + */ + +public class DialogLauncher { + public static void launchChangeFriendCircle(android.support.v4.app.FragmentManager fragmentManager, Member member) { + ChangeFriendCirclesDialog.newInstance(member).show(fragmentManager, null); + } + + public static void launchEditCollectionDialog(android.support.v4.app.FragmentManager fragmentManager, Collection collection) { + EditCollectionDialog.newInstance(collection).show(fragmentManager, null); + } + + public static void launchDeleteCollection(android.support.v4.app.FragmentManager fragmentManager) { + new PoinilaAlertDialog.Builder().setTitle(R.string.remove_collectoin). + setMessage(R.string.confirm_delete_collection). + setNegativeBtnText(R.string.no). + setPositiveBtnText(R.string.yes). + build().show(fragmentManager, null); + } + + public static void launchPickCoverFromPosts(android.support.v4.app.FragmentManager fragmentManager, String collectionID) { + CoverFromPostsDialog.newInstance(collectionID).show(fragmentManager, null); + } + + + public static void launchNewWebsitePost(android.support.v4.app.FragmentManager fragmentManager) { + new NewWebsitePostDialog().show(fragmentManager, null); + } + + public static void launchAboutPoinila(FragmentManager fragmentManager) { + new AboutPoinilaDialog().show(fragmentManager, null); + } + + public static void launchContactUsDialog(android.support.v4.app.FragmentManager supportFragmentManager) { + new ContactUsDialog().show(supportFragmentManager, null); + } + + public static void launchFriendshipDialog(final Member member, android.support.v4.app.FragmentManager fragmentManager) { + switch (member.friendshipStatus) { + case NotFriend: + case WaitingForAction: + new PoinilaAlertDialog.Builder(). + setTitle(R.string.friend_request). + setMessage(R.string.approve_send_friend_request). + setPositiveBtnText(R.string.yes). + setNegativeBtnText(R.string.no). + setPositiveBtnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PositiveButtonClickedUIEvent().setData(FriendRequestAnswer.ACCEPT)); + } + }). + build().show(fragmentManager, null); + break; + case IsFriend: + EditFriendShipDialog.newInstance(member).show(fragmentManager, null); + break; + case Pending: + Logger.toast(R.string.info_already_requested); + break; + } + } + + public static void launchNewPost(android.support.v4.app.FragmentManager fragmentManager, SuggestedWebPagePost webpagePost) { + NewPostDialog.newInstance(webpagePost).show(fragmentManager, null); + } + + + public static void launchRepostDialog(android.support.v4.app.FragmentManager fragmentManager, Post post) { + RepostDialog.newInstance(post).show(fragmentManager, null); + } + + + public static void launchSelectImage(android.support.v4.app.FragmentManager fragmentManager, Member member, View.OnClickListener onItemClickListener){ + SelectImageDialog.newInstance(member, onItemClickListener).show(fragmentManager, null); + } + + public static void launchReportDialog(android.support.v4.app.FragmentManager fragmentManager, int title, int memberIdOrPostId){ + ReportDialog.newInstance(title, memberIdOrPostId).show(fragmentManager, null); + } + + public static void launchInputVerificationCodeDialog(android.support.v4.app.FragmentManager fragmentManager, String mobileOrEmail, boolean byEmail){ + InputVerificationCodeDialog.newInstance(mobileOrEmail, byEmail).show(fragmentManager, null); + } + + public static void launchInputVerificationCodeDialog(android.support.v4.app.FragmentManager fragmentManager, String mobileOrEmail, boolean byEmail, boolean disableResend){ + InputVerificationCodeDialog.newInstance(mobileOrEmail, byEmail, disableResend).show(fragmentManager, null); + } + + public static void launchRequestVerificationDialog(android.support.v4.app.FragmentManager fragmentManager){ + VerificationRequestCodeDialog.newInstance().show(fragmentManager, null); + } + + public static void launchRequestVerificationDialog(android.support.v4.app.FragmentManager fragmentManager, int titleRes, String inputValue, boolean mVerificationByEmail){ + VerificationRequestCodeDialog.newInstance(titleRes, inputValue, mVerificationByEmail).show(fragmentManager, null); + } + + public static void launchMessageDialog(android.support.v4.app.FragmentManager fragmentManager, int titleRes, int messageRes){ + MessageDialog.newInstance(titleRes, messageRes).show(fragmentManager, null); + } + + public static void launchSetUsernamePasswordDialog(android.support.v4.app.FragmentManager fragmentManager){ + SetUserNamePasswordDialog.newInstance().show(fragmentManager, null); + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/EditAboutMeDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/EditAboutMeDialog.java new file mode 100755 index 0000000..5bb843a --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/EditAboutMeDialog.java @@ -0,0 +1,85 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +/** + * Created by AlirezaF on 12/25/2015. + */ + +import android.content.Context; +import android.os.Bundle; +import android.widget.EditText; + +import com.mobsandgeeks.saripaar.annotation.Length; +import com.mobsandgeeks.saripaar.annotation.NotEmpty; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity; +import com.shaya.poinila.android.util.ConstantsUtils; + +import butterknife.Bind; + +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ABOUT_ME; +import static com.shaya.poinila.android.util.ConstantsUtils.NO_RESOURCE; + +/** + * Created by iran on 2015-10-11. + */ +public class EditAboutMeDialog extends SingleTextFieldDialog { + @Length(max = ConstantsUtils.max_length_about_me, messageResId = R.string.error_max_500) + @Bind(R.id.input_field) + public EditText inputField; + + private String aboutMeString; + + public static EditAboutMeDialog newInstance(String oldAboutMe) { + + Bundle args = new Bundle(); + EditAboutMeDialog fragment = new EditAboutMeDialog(); + fragment.aboutMeString = oldAboutMe; + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + @Override + protected void saveStateToBundle(Bundle outState) { + super.saveStateToBundle(outState); + outState.putString(KEY_ABOUT_ME, aboutMeString); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(NO_RESOURCE, NO_RESOURCE, R.string.submit, R.string.cancel, NO_RESOURCE); + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + super.loadStateFromBundle(savedInstanceState); + aboutMeString = savedInstanceState.getString(KEY_ABOUT_ME, ""); + } + + @Override + protected SettingActivity.SettingType getSettingType() { + return SettingActivity.SettingType.ABOUT_ME; + } + + @Override + protected void initUI(Context context) { + super.initUI(context); + inputField.setText(aboutMeString); + } + + @Override + protected void setTextFieldInputMethod() { + inputLayout.setHint(getString(R.string.hint_about_me)); + inputField.setMinLines(3); + inputField.setMaxLines(5); + inputLayout.setCounterEnabled(true); + inputLayout.setCounterMaxLength(ConstantsUtils.max_length_about_me); + } + + @Override + protected int getItemPosition() { + return -1; + } + +} + diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/EditCollectionDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/EditCollectionDialog.java new file mode 100755 index 0000000..2bb41c1 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/EditCollectionDialog.java @@ -0,0 +1,182 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.view.View; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.CirclesSelectedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PermissionEvent; +import com.shaya.poinila.android.presentation.uievent.SelectImageEvent; +import com.shaya.poinila.android.presentation.view.activity.BaseActivity; +import com.shaya.poinila.android.presentation.view.costom_view.EditCollectionImagePickerView; +import com.shaya.poinila.android.util.Logger; +import com.squareup.otto.Subscribe; + +import java.util.List; + +import butterknife.Bind; +import data.PoinilaNetService; +import data.event.CollectionReceivedEvent; +import data.event.CollectionUpdatedEvent; +import data.event.PostReceivedEvent; +import data.event.TopicsReceivedEvent; +import data.model.Circle; +import data.model.Collection; +import data.model.Image; +import data.model.ImageUrls; +import data.model.PrivacyType; +import data.model.Topic; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by AlirezaF on 7/19/2015. + */ +public class EditCollectionDialog extends NewCollectionDialog{ + public static final String KEY_COVER_URL = "cover url"; + private static String tempCoverUrl; + private Collection collection; + + @Bind(R.id.pickerView) EditCollectionImagePickerView pickerView; + + public static EditCollectionDialog newInstance(Collection collection) { + // TODO: make collection parcelable + Bundle args = new Bundle(); + EditCollectionDialog fragment = new EditCollectionDialog(); + fragment.collection = collection; + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + @Override + protected void saveStateToBundle(Bundle outState) { + super.saveStateToBundle(outState); + // TODO: store createCollectionFromFields in bundle + outState.putString(KEY_COVER_URL, tempCoverUrl); + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + super.loadStateFromBundle(savedInstanceState); + // TODO load colletion from pardel + tempCoverUrl = savedInstanceState.getString(KEY_COVER_URL, null); + } + + @Override + protected void initUI(Context context) { + super.initUI(context); + pickerView.setOnPickCoverFromPostsListener(new EditCollectionImagePickerView.OnPickCoverFromPostsListener() { + @Override + public void onPickCoverFromPosts() { + DialogLauncher.launchPickCoverFromPosts(getFragmentManager(), collection.getId()); + } + }); + setDefaultValues(collection); + } + + + private void setDefaultValues(Collection collection) { + if (collectionHasCover(collection) && !pickerView.hasImage() && collection.coverImageUrls != null) { + Image image = collection.coverImageUrls.properCollectionImage(ImageUrls.ImageSize.BIG); + if(image != null) + pickerView.setImage(image.url); + } + + setText(nameField, collection.name); + setText(descriptionField, collection.description); + if (collection.privacy == PrivacyType.PUBLIC) { + privacyContainer.setVisibility(View.GONE); + selectCircleBtn.setVisibility(View.GONE); + } else{ + privateCollectionCheckbox.setChecked(true); + findCheckedCircles(mCheckedCircles, collection.circleIDs, mCircles); + setText(selectCircleBtn, createSelectedCirclesText(mCheckedCircles)); + } + } + + private boolean collectionHasCover(Collection collection) { + return collection.coverImageUrls != null; + } + + private void findCheckedCircles(boolean[] checkedCircles, + List circleIDs, List circles) { + for (Integer circleID : circleIDs) { + for (int i = 0; i < circles.size(); i++){ + if (circleID == circles.get(i).id) + checkedCircles[i] = true; + } + } + } + + @Subscribe public void onTopicReceived(TopicsReceivedEvent event){ + super.onTopicReceived(event); + int index = findTopicIndex(mSpinnerAdapter, collection.topic.id); + topicSpinner.setSelection(index); + } + + @Subscribe public void onCirclesSelectedEvent(CirclesSelectedUIEvent event){ + super.onCirclesSelectedEvent(event); + } + + @Subscribe public void onPostImageReceived(PostReceivedEvent event){ + tempCoverUrl = event.post.imagesUrls.properPostImage(ImageUrls.ImageSize.BIG).url; + pickerView.setImage(tempCoverUrl); + } + + private int findTopicIndex(MySpinnerAdapter mSpinnerAdapter, int topicID) { + for (int i = 0; i < mSpinnerAdapter.getCount(); i++) { + if (((Topic) mSpinnerAdapter.getItem(i)).id == topicID) + return i; + } + return -1; + } + + @Override + public void onPositiveButton() { + if (!validate()) + return; + + showProgressDialog(); + + Logger.log("Image = " + pickerView.getImage(), Logger.LEVEL_INFO); + + PoinilaNetService.updateCollection(collection.getId(), + createCollectionFromFields(), pickerView.getImage()); + + + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.edit_collection, RESOURCE_NONE, R.string.edit, R.string.cancel, RESOURCE_NONE); + } + + @Override + public int getLayoutResId() { + return R.layout.dialog_edit_collection; + } + + @Subscribe + public void selectImageEvent(SelectImageEvent event) { + super.selectImageEvent(event); + } + + // I think it's cleaner to ask for permission directly in pickerView + @Subscribe public void askForPermissionEvent(PermissionEvent event){ + super.askForPermissionEvent(event); + } + + @Subscribe + public void onCollectionUpdated(CollectionUpdatedEvent event) { + dismissProgressDialog(); + onNegativeButton(); + } + + @Subscribe + public void onCollectionReceived(CollectionReceivedEvent event){ + dismissProgressDialog(); + onNegativeButton(); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/EditFriendShipDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/EditFriendShipDialog.java new file mode 100755 index 0000000..14f80c3 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/EditFriendShipDialog.java @@ -0,0 +1,118 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.viewholder.SimpleTextViewHolder; + +import org.parceler.Parcels; + +import java.util.List; + +import butterknife.Bind; +import data.PoinilaNetService; +import data.model.Circle; +import data.model.FriendshipStatus; +import data.model.Member; +import manager.DBFacade; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by iran on 12/28/2015. + */ +public class EditFriendShipDialog extends BusDialogFragment { + + @Bind(R.id.llcontainer) + LinearLayout mLinearLayoutContainer; + + private static final String KEY_FRIEND = "friend"; + private Member friend; + + public static EditFriendShipDialog newInstance(Member friend) { + Bundle args = new Bundle(); + EditFriendShipDialog fragment = new EditFriendShipDialog(); + fragment.friend = friend; + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + List allCircles = DBFacade.getMyCircles(); + onGettingInitDataResponse(null); + if (friend.circle_ids == null) + return; + for (Circle circle : allCircles) { + if (friend.circle_ids.contains(circle.id)) { + TextView textView = (TextView) getActivity().getLayoutInflater().inflate(R.layout.simple_textview, mLinearLayoutContainer, false); + setText(textView, circle.name); + mLinearLayoutContainer.addView(textView); + } + } + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutResId() { + return R.layout.scrollable_linearlayout; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + this.friend = Parcels.unwrap(savedInstanceState.getParcelable(KEY_FRIEND)); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + outState.putParcelable(KEY_FRIEND, Parcels.wrap(friend)); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.edit_friendship, RESOURCE_NONE, + R.string.remove_friend, R.string.cancel, R.string.edit_circle); + } + + @Override + protected void initUI(Context context) { + + } + + @Override + public void onPositiveButton() { + PoinilaNetService.removeFriend(friend.getId()); + friend.friendshipStatus = FriendshipStatus.NotFriend; + super.onPositiveButton(); + } + + @Override + public void onNeutralButton() { + DialogLauncher.launchChangeFriendCircle( + getFragmentManager(), friend); + super.onNeutralButton(); + } +} \ No newline at end of file diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ForgotPasswordFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ForgotPasswordFragment.java new file mode 100755 index 0000000..fcd4613 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ForgotPasswordFragment.java @@ -0,0 +1,203 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.text.InputType; +import android.util.Patterns; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.RadioGroup; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.activity.SignUpLoginActivity; +import com.shaya.poinila.android.presentation.view.fragments.BusFragment; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import butterknife.ButterKnife; +import butterknife.OnClick; +import data.JsonRequestBodyMaker; +import data.PoinilaNetService; +import data.event.VerificationRequestResponse; + +/** + * Created by AlirezaF on 12/7/2015. + */ +public class ForgotPasswordFragment extends BusFragment implements View.OnClickListener { + private static final String KEY_RECOVERY_TYPE = "recovery type"; +// @Bind(R.id.radio_group) +// RadioGroup optionsRadioGroup; + @Bind(R.id.input_field) + EditText inputField; + @Bind(R.id.input_filed_icon) + ImageView inputFieldIcon; + @Bind(R.id.submit) + Button SubmitButton; + @Bind(R.id.card_title) + TextView title; + + @Bind(R.id.email_option) + TextView emailOption; + + @Bind(R.id.sms_option) + TextView smsOption; + + @Bind(R.id.unique_name_option) + TextView uniqueNameOption; + + @Override + public void onClick(View view) { + switch (view.getId()){ + case R.id.email_option: + onMailOption(); + break; + case R.id.sms_option: + onSmsOption(); + break; + case R.id.unique_name_option: + onUniqueNameOption(); + break; + } + } + + public enum RECOVERY_PASS_TYPE{ + EMAIL, + MOBILE_NUMBER, + UNIQUE_NAME + } + + private RECOVERY_PASS_TYPE recoveryPassType; + + @Override + public int getLayoutID() { + return R.layout.fragment_forgot_password; + } + + @Override + protected void initUI() { + ButterKnife.findById(rootView, R.id.left_arrow).setVisibility(View.GONE); + emailOption.setOnClickListener(this); + smsOption.setOnClickListener(this); + uniqueNameOption.setOnClickListener(this); + + smsOption.setSelected(true); + inputFieldIcon.setImageResource(R.drawable.phone_48dp); + recoveryPassType = RECOVERY_PASS_TYPE.MOBILE_NUMBER; + +// optionsRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { +// @Override +// public void onCheckedChanged(RadioGroup group, int checkedId) { +// switch (checkedId) { +// case R.id.email_option: +// onMailOption(); +// break; +// case R.id.sms_option: +// onSmsOption(); +// break; +// case R.id.unique_name_option: +// onUniqueNameOption(); +// break; +// } +// } +// }); + ViewUtils.setText(title, getString(R.string.recover_password)); + } + + private void onMailOption() { + emailOption.setSelected(true); + smsOption.setSelected(false); + uniqueNameOption.setSelected(false); + recoveryPassType = RECOVERY_PASS_TYPE.EMAIL; + inputField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); + inputFieldIcon.setImageResource(R.drawable.email_48dp); + } + + private void onSmsOption() { + emailOption.setSelected(false); + smsOption.setSelected(true); + uniqueNameOption.setSelected(false); + + recoveryPassType = RECOVERY_PASS_TYPE.MOBILE_NUMBER; + inputField.setInputType(InputType.TYPE_CLASS_PHONE); + inputFieldIcon.setImageResource(R.drawable.phone_48dp); + } + + private void onUniqueNameOption() { + emailOption.setSelected(false); + smsOption.setSelected(false); + uniqueNameOption.setSelected(true); + recoveryPassType = RECOVERY_PASS_TYPE.UNIQUE_NAME; + inputField.setInputType(InputType.TYPE_CLASS_TEXT); + inputFieldIcon.setImageResource(R.drawable.form_login_user); + } + + @OnClick(R.id.submit) + public void onRequestResetPassCode() { + String userText = inputField.getText().toString().trim(); + if (recoveryPassType.equals(RECOVERY_PASS_TYPE.EMAIL) && !Patterns.EMAIL_ADDRESS.matcher(userText).matches()) { + inputField.setText(""); + ViewUtils.temporaryError(inputField, getString(R.string.error_invalid_email)); + return; + } else if (recoveryPassType.equals(RECOVERY_PASS_TYPE.MOBILE_NUMBER) && !Patterns.PHONE.matcher(userText).matches()) { + inputField.setText(""); + ViewUtils.temporaryError(inputField, getString(R.string.error_invalid_phone)); + return; + }else if(recoveryPassType.equals(RECOVERY_PASS_TYPE.UNIQUE_NAME)){ + + } + PoinilaNetService.recoverPassword(recoveryPassType, userText); + } + + @Subscribe + public void onRequestSent(VerificationRequestResponse event) { + if (event.succeed) { + ((SignUpLoginActivity) getActivity()).goToResetPassword(null); + } else if (event.code == 446){ + switch (recoveryPassType){ + case EMAIL: + ViewUtils.temporaryError(inputField, getString(R.string.error_no_occurance_email)); + break; + case MOBILE_NUMBER: + ViewUtils.temporaryError(inputField, getString(R.string.error_no_occurance_phone)); + break; + case UNIQUE_NAME: + ViewUtils.temporaryError(inputField, getString(R.string.error_no_occurance_unique_name)); + break; + } + } + } + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + /* @Override + public Bundle getBundle() { + Bundle bundle = new Bundle(); + bundle.putBoolean(KEY_RECOVERY_TYPE, mRecoveryByEmail); + return bundle; + } + + @Override + public void setBundle(Bundle bundle) { + mRecoveryByEmail = bundle.getBoolean(KEY_RECOVERY_TYPE); + }*/ +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/FrameCollectionsManagementDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/FrameCollectionsManagementDialog.java new file mode 100755 index 0000000..dfb1541 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/FrameCollectionsManagementDialog.java @@ -0,0 +1,132 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.CollectionFrameToggledEvent; +import com.shaya.poinila.android.presentation.viewholder.FrameCollectionViewHolder; +import com.squareup.otto.Subscribe; + +import java.util.List; + +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.CollectionsReceivedEvent; +import data.model.Collection; +import manager.DataRepository; + +/** + * Created by iran on 2015-07-28. + */ +public class FrameCollectionsManagementDialog extends ListBusDialogFragment{ + private static final java.lang.String KEY_FRAME_ID = "frame id"; + private String frameID; + + public static FrameCollectionsManagementDialog newInstance(String frameId) { + Bundle args = new Bundle(); + FrameCollectionsManagementDialog fragment = new FrameCollectionsManagementDialog(); + fragment.frameID = frameId; + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + @Subscribe + public void onToggle(CollectionFrameToggledEvent event){ + Collection collection = getRecyclerViewAdapter().getItem(event.adapterPosition); + collection.selected ^= true; + if (collection.selected) { + PoinilaNetService.addCollectionToFrame(frameID, collection.getId()); + // TODO: request for removing this collectionSpinner from frame + }else { + PoinilaNetService.removeCollectionFromFrame(frameID, collection.getId()); + } + getRecyclerViewAdapter().notifyItemChanged(event.adapterPosition); + } + + @Override + protected void initUI(Context context) { + super.initUI(context); + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setLinearLayoutManager(LinearLayoutManager.VERTICAL). + setAdapter(getRecyclerViewAdapter()).bindViewToAdapter(); + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.linearListEndDetectorListener(getRecyclerViewAdapter(), this); + } + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + requestForMoreData(); + } + + @Override + public boolean mustShowProgressView() { + return true; + } + + @Override + public void requestForMoreData() { + DataRepository.getInstance().getMyFollowedCollections(null, bookmark); + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return new RecyclerViewAdapter( + getActivity(), R.layout.rounded_image_title_subtitle_icon) { + @Override + protected FrameCollectionViewHolder getProperViewHolder(View v, int viewType) { + return new FrameCollectionViewHolder(v); + } + }; + } + + @Subscribe public void OnCollectionsReceived(CollectionsReceivedEvent event){ + onGettingInitDataResponse(event); + onGettingListDataResponse(event, event.bookmark); + } + + @Override + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + super.onSuccessfulListData(baseEvent, newBookmark); + List collections = ((CollectionsReceivedEvent) baseEvent).collections; + for (Collection collection : collections) { + collection.selected = collection.frameIDs != null && collection.frameIDs.contains(Integer.parseInt(frameID)); + } + getRecyclerViewAdapter().addItems(collections); + } + + @Override + public int getLayoutResId() { + return R.layout.recycler_view_weighted_full; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + super.loadStateFromBundle(savedInstanceState); + frameID = savedInstanceState.getString(KEY_FRAME_ID); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + super.saveStateToBundle(outState); + outState.putString(KEY_FRAME_ID, frameID); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.frame_members_management, RESOURCE_NONE, R.string.finish, RESOURCE_NONE, RESOURCE_NONE); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/InputVerificationCodeDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/InputVerificationCodeDialog.java new file mode 100755 index 0000000..f95b2a6 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/InputVerificationCodeDialog.java @@ -0,0 +1,147 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.view.ViewGroup; +import android.widget.EditText; +import android.widget.Toast; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.AfterVerifyResponse; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import data.PoinilaNetService; +import data.event.VerificationRequestResponse; +import manager.DBFacade; + +/** + * Created by iran on 7/17/2016. + */ +public class InputVerificationCodeDialog extends BusDialogFragment { + + + @Bind(R.id.input_field) + EditText verificationCode; + + private String mobileOrEmail; + private boolean byEmail; + private boolean disableResend; + + public static InputVerificationCodeDialog newInstance(String mobileOrEmail, boolean byEmail){ + InputVerificationCodeDialog fragment = new InputVerificationCodeDialog(); + + fragment.mobileOrEmail = mobileOrEmail; + fragment.byEmail = byEmail; + + + return fragment; + } + + public static InputVerificationCodeDialog newInstance(String mobileOrEmail, boolean byEmail, boolean disableResend){ + InputVerificationCodeDialog fragment = new InputVerificationCodeDialog(); + + fragment.mobileOrEmail = mobileOrEmail; + fragment.byEmail = byEmail; + fragment.disableResend = disableResend; + + return fragment; + } + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutResId() { + return R.layout.input_verification_code; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + + } + + @Override + protected void saveStateToBundle(Bundle outState) { + + } + + @Override + public void onPositiveButton() { +// super.onPositiveButton(); + + if(DBFacade.getCachedMyInfo() != null){ + showProgressDialog(); + PoinilaNetService.verifyPhoneOrMobile( + verificationCode.getText().toString(), + DBFacade.getCachedMyInfo().id, + mobileOrEmail, + byEmail + ); + + } else + Logger.toast(R.string.error_user_not_found); + + + } + + @Override + public void onNeutralButton() { + super.onNeutralButton(); + + DialogLauncher.launchRequestVerificationDialog(getFragmentManager()); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + if(disableResend) + return new GeneralDialogData(R.string.verification_code, ConstantsUtils.NO_RESOURCE, R.string.send, R.string.cancel, ConstantsUtils.NO_RESOURCE); + else + return new GeneralDialogData(R.string.verification_code, ConstantsUtils.NO_RESOURCE, R.string.send, R.string.cancel, R.string.resend); + } + + @Override + protected void initUI(Context context) { + + } + + @Subscribe + public void onVerifyResponse(VerificationRequestResponse event) { + + dismissProgressDialog(); + + dismiss(); + + switch (event.code){ + case 200: + Toast.makeText(getActivity(), R.string.success_verification, Toast.LENGTH_LONG).show(); + BusProvider.getBus().post(new AfterVerifyResponse()); + break; + case 446: + Toast.makeText(getActivity(), R.string.error_verification_wrong_code, Toast.LENGTH_LONG).show(); + break; + } + + + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ListBusDialogFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ListBusDialogFragment.java new file mode 100755 index 0000000..fa712d6 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ListBusDialogFragment.java @@ -0,0 +1,97 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.support.annotation.CallSuper; +import android.support.annotation.Nullable; +import android.support.v7.widget.RecyclerView; +import android.view.ViewGroup; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.view.LoaderList; + +import butterknife.Bind; +import data.event.BaseEvent; + +/** + * Created by iran on 11/25/2015. + */ +public abstract class ListBusDialogFragment extends BusDialogFragment implements LoaderList{ + private static final String CLICKED_ITEM_POSITION = "clicked item position"; + protected boolean requestingIsLocked = false; + public String bookmark; + protected int clickedItemPosition = -1; + @Bind(R.id.recycler_view) protected RecyclerView mRecyclerView; + private RecyclerViewAdapter mAdapter; + + + @Override @CallSuper + protected void loadStateFromBundle(Bundle savedInstanceState) { + clickedItemPosition = savedInstanceState.getInt(CLICKED_ITEM_POSITION); + } + + @Override @CallSuper + protected void saveStateToBundle(Bundle outState) { + outState.putInt(CLICKED_ITEM_POSITION, clickedItemPosition); + } + + @Override + @CallSuper + protected void initUI(Context context) { + if(getRecyclerViewListener() != null){ + mRecyclerView.addOnScrollListener(getRecyclerViewListener()); + } + } + + /** + * Called in {@link #onStart()} after {@link #initUI(Context)} so it's safe to assume class variables + * are initialized. + * @return + */ + protected abstract RecyclerView.OnScrollListener getRecyclerViewListener(); + + public void onLoadMore(){ + if (!requestingIsLocked) { + requestingIsLocked = true; + requestForMoreData(); + } + } + + @CallSuper + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark){ + requestingIsLocked = false; + bookmark = newBookmark; + } + + public abstract void requestForMoreData(); + + @Override + public ViewGroup getLoadableView() { + return mRecyclerView; + } + + public RecyclerViewAdapter getRecyclerViewAdapter(){ + if (mAdapter == null) + mAdapter = createAndReturnRVAdapter(); + return mAdapter; + } + + @CallSuper + protected void onGettingListDataResponse(BaseEvent event, String responseBookmark) { + if (isListDataResponseValid(event, responseBookmark)) + onSuccessfulListData(event, responseBookmark); + } + + @CallSuper + protected boolean isListDataResponseValid(BaseEvent baseEvent, String responseBookmark){ + // bookmark != null && + return checkBookMark(this.bookmark, responseBookmark); // this.bookmark may be null + } + + + public boolean checkBookMark(String pageBookmark, String serverBookmark) { + return serverBookmark == null || !serverBookmark.equals(pageBookmark); + } + + public abstract RecyclerViewAdapter createAndReturnRVAdapter(); +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/MessageDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/MessageDialog.java new file mode 100755 index 0000000..574ae98 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/MessageDialog.java @@ -0,0 +1,80 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.view.ViewGroup; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.ConstantsUtils; + +/** + * Created by iran on 8/3/2016. + */ +public class MessageDialog extends BusDialogFragment { + + + + public int titleRes; + public int messageRes; + + + public static MessageDialog newInstance(int titleRes, int messageRes){ + MessageDialog fragment = new MessageDialog(); + + Bundle data = new Bundle(); + + data.putInt("titleRes", titleRes); + data.putInt("messageRes", messageRes); + + fragment.setArguments(data); + fragment.saveStateToBundle(data); + return fragment; + } + + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutResId() { + return LAYOUT_NONE; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + titleRes = getArguments().getInt("titleRes"); + messageRes = getArguments().getInt("messageRes"); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(titleRes, messageRes, R.string.ok, ConstantsUtils.NO_RESOURCE, ConstantsUtils.NO_RESOURCE); + } + + @Override + protected void initUI(Context context) { + + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewCircleDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewCircleDialog.java new file mode 100755 index 0000000..a220231 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewCircleDialog.java @@ -0,0 +1,44 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.widget.EditText; + +import com.mobsandgeeks.saripaar.annotation.Length; +import com.mobsandgeeks.saripaar.annotation.NotEmpty; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity; +import com.shaya.poinila.android.util.ConstantsUtils; + +import butterknife.Bind; + +import static com.shaya.poinila.android.presentation.view.activity.SettingActivity.SettingType.NEW_CIRCLE; + +/** + * Created by iran on 2015-09-23. + */ +public class NewCircleDialog extends SingleTextFieldDialog { + @Length(max = ConstantsUtils.max_length_circle_name, min = ConstantsUtils.min_length_circle_name, messageResId = R.string.error_circle_name_length) + @Bind(R.id.input_field) public EditText inputField; + + @Override + protected SettingActivity.SettingType getSettingType() { + return NEW_CIRCLE; + } + + @Override + protected void setTextFieldInputMethod() { + inputLayout.setCounterEnabled(true); + inputLayout.setCounterMaxLength(ConstantsUtils.max_length_circle_name); + inputLayout.setHint(getString(R.string.circle_name)); + } + + @Override + protected int getItemPosition() { + return -1; + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.new_circle, RESOURCE_NONE, R.string.submit, R.string.cancel, RESOURCE_NONE); + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewCollectionDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewCollectionDialog.java new file mode 100755 index 0000000..25aa6d4 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewCollectionDialog.java @@ -0,0 +1,429 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.graphics.Bitmap; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.design.widget.TextInputEditText; +import android.support.design.widget.TextInputLayout; +import android.support.v13.app.FragmentCompat; +import android.support.v7.app.AlertDialog; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.EditText; +import android.widget.ImageButton; +import android.widget.Spinner; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.CirclesSelectedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PermissionEvent; +import com.shaya.poinila.android.presentation.uievent.SelectImageEvent; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.activity.BaseActivity; +import com.shaya.poinila.android.presentation.view.costom_view.ActivityResultPermissionDelegate.ImagePickerResultPermissionDelegate; +import com.shaya.poinila.android.presentation.view.costom_view.GalleryCameraImagePickerView; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.util.ResourceUtils; +import com.shaya.poinila.android.util.StorageUtils; +import com.shaya.poinila.android.util.StringUtils; +import com.squareup.otto.Subscribe; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.TopicsReceivedEvent; +import data.model.Circle; +import data.model.Collection; +import data.model.PrivacyType; +import data.model.Topic; +import manager.DBFacade; +import manager.DataRepository; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ConstantsUtils.max_length_collection_description; +import static com.shaya.poinila.android.util.ConstantsUtils.max_length_collection_name; +import static com.shaya.poinila.android.util.ConstantsUtils.min_length_collection_name; + +/** + * Created by iran on 2015-07-15. + */ +public class NewCollectionDialog extends BusDialogFragment implements FragmentCompat.OnRequestPermissionsResultCallback{ + + protected static final String ABSOLUTE_PATH = "absolute path"; + protected static final String MEDIA_PATH = "media path"; + + private static final String TAG_CIRCLE_DIALOG = "circle dialog"; + private static final java.lang.String KEY_EXPANDED = "is expanded"; + @Bind(R.id.caption_field) + TextInputEditText nameField; + @Bind(R.id.checkbox) + CheckBox privateCollectionCheckbox; + @Bind(R.id.privacy_container) + ViewGroup privacyContainer; + @Bind(R.id.select_circle) + Button selectCircleBtn; + @Bind(R.id.select_topic) + Spinner topicSpinner; + + @Bind(R.id.expand) + ImageButton expandButton; + @Bind(R.id.description_field) + TextInputEditText descriptionField; + @Bind(R.id.description_input_layout) + TextInputLayout descriptionInputlayout; + @Bind(R.id.pickerView) + GalleryCameraImagePickerView pickerView; + + private ImagePickerResultPermissionDelegate resultPermissionDelegateIMPL; + + protected boolean topicsReceived; + List mCircles; + CharSequence[] mCircleNames; + boolean[] mCheckedCircles; + protected MySpinnerAdapter mSpinnerAdapter; + private boolean expanded = false; + + @Override + public int getLayoutResId() { + return R.layout.dialog_new_collection; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + expanded = savedInstanceState.getBoolean(KEY_EXPANDED, false); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.new_collection, RESOURCE_NONE, R.string.create, R.string.cancel, RESOURCE_NONE); + } + + @Override + protected void initUI(Context context) { + resultPermissionDelegateIMPL = new ImagePickerResultPermissionDelegate() { + @Override + public void handleValidResults(int requestCode, Intent data) { + super.handleValidResults(requestCode, data); + pickerView.setImage(resultPermissionDelegateIMPL.getImageAddress()); + } + + @Override + public void handlePermissionGranted() { + startForResult(NewCollectionDialog.this, + StorageUtils.dispatchCapturePhotoIntent(), + ConstantsUtils.REQUEST_CODE_TAKE_PHOTO); + } + }; + pickerView.policy = GalleryCameraImagePickerView.Policy.FullFeatures; + + mCircles = DBFacade.getMyCircles(); + mCircleNames = new CharSequence[mCircles.size()]; + mCheckedCircles = new boolean[mCircles.size()]; + for (int i = 0; i < mCircleNames.length; i++) { + mCircleNames[i] = mCircles.get(i).name; + } + + privateCollectionCheckbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + selectCircleBtn.setEnabled(isChecked); + setText(selectCircleBtn, + isChecked ? createSelectedCirclesText(mCheckedCircles) : + createSelectedCirclesText(null)); + } + }); + setText(selectCircleBtn, createSelectedCirclesText(null)); + + expandOrCollapseArbitraryFields(expanded); + } + + @Override + public void onPositiveButton() { + // TODO: request to server for creating new collectionSpinner + if (!validate()) + return; + + Bitmap bitmap = null; + if (pickerView.showMode == GalleryCameraImagePickerView.ShowMode.Cropping){ + Logger.toast(R.string.warning_complete_crop); + return; + } + + bitmap = pickerView.getImage(); + + PoinilaNetService.createCollection(PoinilaPreferences.getMyId(), + createCollectionFromFields(), bitmap); + super.onPositiveButton(); + } + + @OnClick(R.id.expand) + public void onExpand() { + expanded ^= true; + expandOrCollapseArbitraryFields(expanded); + } + + private void expandOrCollapseArbitraryFields(boolean expanded) { + View[] toChangeViews = new View[]{descriptionInputlayout, pickerView}; + if (expanded) { + ViewUtils.setViewsVisibilityToVisible(toChangeViews); + } else { + ViewUtils.setViewsVisibilityToGone(toChangeViews); + } + expandButton.setImageResource(expanded ? R.drawable.arrow_up_white_24dp : R.drawable.arrow_down_white_24dp); + } + + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + DataRepository.getInstance().getTopics(); + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Subscribe + public void selectImageEvent(SelectImageEvent event) { + resultPermissionDelegateIMPL.startForResult(this, event.intent, event.requestCode); + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + resultPermissionDelegateIMPL.onActivityResult(requestCode, resultCode, data); + } + + // I think it's cleaner to ask for permission directly in pickerView + @Subscribe public void askForPermissionEvent(PermissionEvent event){ + resultPermissionDelegateIMPL.askForPermission(this, event.permissionString, BaseActivity.MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE); + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + resultPermissionDelegateIMPL.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + //--------------------------- + + protected boolean validate() { + if (!topicsReceived) { + Logger.toastError(R.string.error_select_topic); + return false; + } + + if (pickerView.hasImage()) { + Bitmap bitmap = pickerView.getImageBitmap(); + if (bitmap.getWidth() < ConstantsUtils.MIN_LENGTH_COLLECTION_COVER_DIMENSION || + bitmap.getHeight() < ConstantsUtils.MIN_LENGTH_COLLECTION_COVER_DIMENSION) { + Logger.toastError(R.string.error_small_image); + return false; + } + } + + /*return ViewUtils.validateEntityName(nameField) && + ViewUtils.validateEdittexts( + new EditText[]{nameField}, new int[]{min_length_collection_name}, + new EditText[]{nameField, descriptionField}, new int[]{max_length_collection_name, max_length_collection_description});*/ + + return ViewUtils.validateInputs( + new EditText[]{nameField}, new int[]{min_length_collection_name}, + new EditText[]{nameField, descriptionField}, new int[]{max_length_collection_name, max_length_collection_description}) + && ViewUtils.validateEntityName(nameField); + } + + @Subscribe + public void onTopicReceived(TopicsReceivedEvent event) { + onGettingInitDataResponse(event); + } + + @Override + public void onSuccessfulInitData(BaseEvent baseEvent) { + super.onSuccessfulInitData(baseEvent); + mSpinnerAdapter = new MySpinnerAdapter(getActivity(), ((TopicsReceivedEvent) baseEvent).data); + topicSpinner.setAdapter(mSpinnerAdapter); + topicSpinner.setEnabled(true); + topicsReceived = true; + } + + protected Collection createCollectionFromFields() { + Collection collection = new Collection(); + collection.name = nameField.getText().toString(); + collection.description = descriptionField.getText().toString(); + collection.topic = ((Topic) topicSpinner.getSelectedItem()); + collection.privacy = (privateCollectionCheckbox.isChecked()) ? PrivacyType.PRIVATE : PrivacyType.PUBLIC; + List circleIDs = new ArrayList<>(mCircles.size()); + for (int i = 0; i < mCheckedCircles.length; i++) + if (mCheckedCircles[i]) + circleIDs.add(mCircles.get(i).id); + collection.circleIDs = circleIDs; + return collection; + } + + @OnClick(R.id.select_circle) + public void showCirclesDialog() { + CirclesDialog.newInstance(mCircleNames, mCheckedCircles). + show(getFragmentManager(), TAG_CIRCLE_DIALOG); + } + + @Subscribe + public void onCirclesSelectedEvent(CirclesSelectedUIEvent event) { + mCheckedCircles = event.selectedCircles; + setText(selectCircleBtn, createSelectedCirclesText(mCheckedCircles)); + } + + protected String createSelectedCirclesText(boolean[] checkedCircles) { + if (checkedCircles == null) return ResourceUtils.getString(R.string.visible_to_everyone); + List strings = new ArrayList<>(); + for (int i = 0; i < checkedCircles.length; i++) { + if (checkedCircles[i]) + strings.add(mCircleNames[i].toString()); + } + if (strings.isEmpty()) + return ResourceUtils.getString(R.string.private_for_all); + return StringUtils.join(strings, ", "); + } + + class MySpinnerAdapter extends BaseAdapter { + + List items; + private Context context; + + public MySpinnerAdapter(Context context, List topics) { + this.context = context; + items = topics; + } + + public void addItems(List topics) { + items.addAll(topics); + } + + @Override + public int getCount() { + return items.size(); + } + + @Override + public Object getItem(int position) { + return items.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View spinView; + if (convertView == null) { + LayoutInflater inflater = LayoutInflater.from(context); + spinView = inflater.inflate(R.layout.spinner_item, parent, false); + } else { + spinView = convertView; + } + ((TextView) spinView.findViewById(R.id.spinner_row_title)).setText(((Topic) getItem(position)).name); + return spinView; + } + + @Override + public View getDropDownView(int position, View convertView, ViewGroup parent) { + View spinView; + if (convertView == null) { + LayoutInflater inflater = LayoutInflater.from(context); + spinView = inflater.inflate(R.layout.spinner_item, parent, false); + } else { + spinView = convertView; + } + ((TextView) spinView.findViewById(R.id.spinner_row_title)).setText(((Topic) getItem(position)).name); + return spinView; + } + } + + + public static class CirclesDialog extends android.support.v4.app.DialogFragment { + private static final String KEY_CIRCLE_NAMES = "circles"; + private static final String KEY_CHECKED_ITEMS = "checked"; + + public static CirclesDialog newInstance(CharSequence[] circleNames, boolean[] checkedItems + ) { + CirclesDialog df = new CirclesDialog(); + Bundle b = new Bundle(); + b.putCharSequenceArray(KEY_CIRCLE_NAMES, circleNames); + b.putBooleanArray(KEY_CHECKED_ITEMS, checkedItems); + df.setArguments(b); + return df; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + Bundle b = getArguments(); + CharSequence[] circleNames = b.getCharSequenceArray(KEY_CIRCLE_NAMES); + final boolean[] checkedItems = b.getBooleanArray(KEY_CHECKED_ITEMS); + + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + // Set the dialog title + builder.setTitle(R.string.select_circle) + // Specify the list array, the items to be selected by default (null for none), + // and the listener through which to receive callbacks when items are selected + .setMultiChoiceItems(circleNames, checkedItems, + new DialogInterface.OnMultiChoiceClickListener() { + @Override + public void onClick(DialogInterface dialog, int which, + boolean isChecked) { + if (isChecked) { + // If the user checked the item, add it to the selected items + checkedItems[which] = true; + } else if (checkedItems[which]) { + // Else, if the item is already in the array, remove it + checkedItems[which] = false; + } + } + }) + // Set the action buttons + .setPositiveButton(R.string.submit, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + BusProvider.getBus().post(new CirclesSelectedUIEvent(checkedItems, -1)); + } + }) + .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + CirclesDialog.this.dismiss(); + } + }); + return builder.create(); + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewFrameDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewFrameDialog.java new file mode 100755 index 0000000..bb7b078 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewFrameDialog.java @@ -0,0 +1,44 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.widget.EditText; + +import com.mobsandgeeks.saripaar.annotation.Length; +import com.mobsandgeeks.saripaar.annotation.NotEmpty; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity; +import com.shaya.poinila.android.util.ConstantsUtils; + +import butterknife.Bind; + +import static com.shaya.poinila.android.presentation.view.activity.SettingActivity.SettingType.NEW_FRAME; + +/** + * Created by iran on 2015-09-23. + */ +public class NewFrameDialog extends SingleTextFieldDialog { + @Length(max = ConstantsUtils.max_length_frame_name, min = ConstantsUtils.min_length_frame_name, messageResId = R.string.error_frame_name_length) + @Bind(R.id.input_field) + public EditText inputField; + + @Override + protected SettingActivity.SettingType getSettingType() { + return NEW_FRAME; + } + + @Override + protected void setTextFieldInputMethod() { + inputLayout.setCounterEnabled(true); + inputLayout.setCounterMaxLength(ConstantsUtils.max_length_frame_name); + inputLayout.setHint(getString(R.string.frame_name)); + } + + @Override + protected int getItemPosition() { + return -1; + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.new_frame, RESOURCE_NONE, R.string.submit, R.string.cancel, RESOURCE_NONE); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewPostDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewPostDialog.java new file mode 100755 index 0000000..b8a672d --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewPostDialog.java @@ -0,0 +1,595 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Bitmap; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.support.annotation.NonNull; +import android.support.design.widget.TextInputEditText; +import android.support.design.widget.TextInputLayout; +import android.support.v13.app.FragmentCompat; +import android.support.v7.widget.AppCompatSpinner; +import android.text.TextUtils; +import android.util.Log; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.EditText; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.PermissionEvent; +import com.shaya.poinila.android.presentation.uievent.RemoveTagEvent; +import com.shaya.poinila.android.presentation.uievent.SelectImageEvent; +import com.shaya.poinila.android.presentation.uievent.UpdateNewPostDialogEvent; +import com.shaya.poinila.android.presentation.view.ViewInflater; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.activity.BaseActivity; +import com.shaya.poinila.android.presentation.view.costom_view.ActivityResultPermissionDelegate; +import com.shaya.poinila.android.presentation.view.costom_view.ActivityResultPermissionDelegate.ImagePickerResultPermissionDelegate; +import com.shaya.poinila.android.presentation.view.costom_view.GalleryCameraImagePickerView; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.StorageUtils; +import com.shaya.poinila.android.util.StringUtils; +import com.squareup.otto.Subscribe; + +import org.apmem.tools.layouts.FlowLayout; +import org.parceler.Parcels; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import butterknife.Bind; +import butterknife.ButterKnife; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.model.Collection; +import data.model.ImageUrls; +import data.model.Post; +import data.model.PostType; +import data.model.SuggestedWebPagePost; +import data.model.Tag; +import manager.DBFacade; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setValueAndDisableInputLayout; +import static com.shaya.poinila.android.presentation.view.ViewUtils.validateEntityName; +import static com.shaya.poinila.android.presentation.view.ViewUtils.validateInputs; +import static com.shaya.poinila.android.presentation.view.costom_view.GalleryCameraImagePickerView.Policy.NoFeature; +import static com.shaya.poinila.android.util.ConstantsUtils.NO_RESOURCE; +import static com.shaya.poinila.android.util.ConstantsUtils.max_length_image_post_summary; +import static com.shaya.poinila.android.util.ConstantsUtils.max_length_image_post_title; +import static com.shaya.poinila.android.util.ConstantsUtils.max_length_tag; +import static com.shaya.poinila.android.util.ConstantsUtils.max_length_text_post_content; +import static com.shaya.poinila.android.util.ConstantsUtils.max_length_text_post_summary; +import static com.shaya.poinila.android.util.ConstantsUtils.max_length_text_post_title; +import static com.shaya.poinila.android.util.ConstantsUtils.min_length_tag; +import static com.shaya.poinila.android.util.ConstantsUtils.min_length_text_post_content; +import static com.shaya.poinila.android.util.ConstantsUtils.min_length_text_post_title; + +/** + * Created by iran on 2015-08-26. + */ +public class NewPostDialog extends BusDialogFragment implements FragmentCompat.OnRequestPermissionsResultCallback{ + private static final String KEY_WEBSITE_POST = "website post"; + private static final java.lang.String KEY_IS_IMAGED_POST = "is imaged post"; + private static final String KEY_IS_FROM_WEB = "is from web"; + protected static final String KEY_IS_EXPANDED = "is expanded"; + //AbstractCreateDialogPost extends AbstractDialogContent { + @Bind(R.id.post_type_container) + RadioGroup postTypeContainer; + @Bind(R.id.image_radio_btn) + protected RadioButton image; + @Bind(R.id.text_radio_btn) + protected RadioButton text; + + @Bind(R.id.tag_field) + protected EditText tagField; + @Bind(R.id.tags_flowlayout) + protected FlowLayout tagsFlowLayout; + @Bind(R.id.tags_container) + protected ViewGroup tagsContainer; + + @Bind(R.id.select_collection) + protected AppCompatSpinner collectionSpinner; + + @Bind(R.id.expand) + ImageButton expandButton; + + @Bind(R.id.caption_field) + TextInputEditText name; + @Bind(R.id.summary_field) + TextInputEditText summary; + @Bind(R.id.caption_input_layout) + TextInputLayout titleInputLayout; + @Bind(R.id.summary_input_layout) + TextInputLayout summaryInputLayout; + + protected List tags; + + /*-------image----*/ + @Bind(R.id.pickerView) + GalleryCameraImagePickerView pickerView; + + /*-----text------*/ + @Bind(R.id.content_field) + TextInputEditText contentInput; + @Bind(R.id.content_input_layout) + TextInputLayout contentInputLayout; + + // state variables + private SuggestedWebPagePost suggestedPost; + protected boolean isImaged = true; + private boolean isFromWeb = false; + protected boolean expanded; + private ActivityResultPermissionDelegate.ImagePickerResultPermissionDelegate resultPermissionDelegateIMPL; + + MySpinnerAdapter mSpinnerAdapter; + + + public static NewPostDialog newInstance(SuggestedWebPagePost suggestedPost) { + // TODO: use Parceler library later but read https://guides.codepath.com/android/Must-Have-Libraries first + NewPostDialog fragment = new NewPostDialog(); + Bundle args = new Bundle(); + + // kasif o lus! + fragment.suggestedPost = suggestedPost; + + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + @Override + public void saveStateToBundle(Bundle outState) { + outState.putParcelable(KEY_WEBSITE_POST, Parcels.wrap(suggestedPost)); + outState.putBoolean(KEY_IS_FROM_WEB, suggestedPost != null); + + outState.putBoolean(KEY_IS_IMAGED_POST, isImaged); + outState.putBoolean(KEY_IS_EXPANDED, expanded); + } + + @Override + protected void loadStateFromBundle(Bundle savedStateBundle) { + suggestedPost = Parcels.unwrap(savedStateBundle.getParcelable(KEY_WEBSITE_POST)); + isFromWeb = suggestedPost != null; + + isImaged = savedStateBundle.getBoolean(KEY_IS_IMAGED_POST); + expanded = savedStateBundle.getBoolean(KEY_IS_EXPANDED); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.new_post, NO_RESOURCE, R.string.create, R.string.cancel, NO_RESOURCE); + } + + @Override + protected void initUI(Context context) { + resultPermissionDelegateIMPL = new ImagePickerResultPermissionDelegate() { + @Override + public void handleValidResults(int requestCode, Intent data) { + super.handleValidResults(requestCode, data); + pickerView.setImage(resultPermissionDelegateIMPL.getImageAddress()); + } + + @Override + public void handlePermissionGranted() { + startForResult(NewPostDialog.this, + StorageUtils.dispatchCapturePhotoIntent(), + ConstantsUtils.REQUEST_CODE_TAKE_PHOTO); + } + }; + + sharedInitUIBetweenRepostAndNewPost(); + + postTypeContainer.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + switch (checkedId) { + case R.id.image_radio_btn: + onImageType(); + break; + case R.id.text_radio_btn: + onTextType(); + break; + } + } + }); + + if (isFromWeb) { + postTypeContainer.setVisibility(View.GONE); + if (TextUtils.isEmpty(suggestedPost.imageAddress)) + onTextType(); + else + onImageType(); + fillViewsWithValues(suggestedPost); + } + + expandOrCollapseArbitraryFields(expanded); + } + + protected void sharedInitUIBetweenRepostAndNewPost() { + tags = new ArrayList<>(); + mSpinnerAdapter = new MySpinnerAdapter(getActivity(), DBFacade.getMyCollections()); + collectionSpinner.setAdapter(mSpinnerAdapter); + collectionSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView adapterView, View view, int position, long l) { + switch (position){ + case 1: + new NewCollectionDialog().show(getFragmentManager(), null); + break; + } + } + + @Override + public void onNothingSelected(AdapterView adapterView) { + + } + }); + pickerView.policy = NoFeature; + if (tagField != null) { + tagField.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + if (actionId == EditorInfo.IME_ACTION_DONE) { + addTagIfValid(tagField, true); + return true; + } + return false; // ?? + } + }); + } + } + + protected void fillViewsWithValues(Post post, boolean disableNonEditableFields) { + if (post.type == PostType.IMAGE) { + if (TextUtils.isEmpty(post.name) && !isFromWeb) { + titleInputLayout.setVisibility(View.GONE); + } else { + setValueAndDisableInputLayout(titleInputLayout, post.name, disableNonEditableFields); + } + + pickerView.setVisibility(View.VISIBLE); + if (!pickerView.hasImage() && !isFromWeb) // will be set for web post in different way + pickerView.setImage(post.imagesUrls.properPostImage(ImageUrls.ImageSize.BIG).url); + + contentInputLayout.setVisibility(View.GONE); + } else { // Text Post + setValueAndDisableInputLayout(titleInputLayout, post.name, disableNonEditableFields); + setValueAndDisableInputLayout(contentInputLayout, post.content, disableNonEditableFields); + // baraye etiminan! + pickerView.setVisibility(View.GONE); + } + + summary.setText(post.summary); + + for (Tag tag : post.tags) { + ViewInflater.addRemovableTagToContainer(tagsFlowLayout, tag.name); + tags.add(tag); + } + } + + private void fillViewsWithValues(SuggestedWebPagePost suggestedPost) { + fillViewsWithValues(new Post(suggestedPost.name, suggestedPost.summary, suggestedPost.content, suggestedPost.tags), false); + if (!TextUtils.isEmpty(suggestedPost.imageAddress)) + pickerView.setImage(suggestedPost.imageAddress); + } + + private void addTagIfValid(EditText tagField, boolean makeToast) { + EditText[] editTexts = new EditText[]{tagField}; + if (validateEntityName(tagField) && + validateInputs(editTexts, new int[]{min_length_tag}, editTexts, new int[]{max_length_tag})) { + addTag(tagField.getText().toString()); + } + } + + private void addTag(String tagString) { + Tag newTag = new Tag(-1, tagString); + addTagViewToContainer(newTag.name); + tags.add(newTag); + tagField.setText(""); + } + + public void addTagViewToContainer(String tagText) { + ViewInflater.addRemovableTagToContainer(tagsFlowLayout, tagText); + } + + @Subscribe + public void removeTag(final RemoveTagEvent event) { + tags.remove(event.adapterPosition); + new Handler().postAtFrontOfQueue(new Runnable() { + @Override + public void run() { + tagsFlowLayout.removeViewAt(event.adapterPosition); //ButterKnife.findById(container, R.actorID.dialog_content) + } + }); + } + + @Subscribe + public void onUpdateCollectionSpinner(UpdateNewPostDialogEvent event){ + mSpinnerAdapter.addItem((Collection)event.model); + collectionSpinner.setSelection(mSpinnerAdapter.getCount() - 1); + mSpinnerAdapter.notifyDataSetChanged(); + } + + + class MySpinnerAdapter extends BaseAdapter { + + private final int SPINNER_ITEM_TYPE = 0; + private final int SPINNER_PROMPT_TYPE = 1; + + List items; + private Context context; + + public MySpinnerAdapter(Context context, List collections) { + this.context = context; + items = new ArrayList<>(); + Collection defaultItem = new Collection(); + defaultItem.name = "---"; + Collection createNew = new Collection(); + createNew.name = getString(R.string.create_new_collection); + items.add(defaultItem); + items.add(createNew); + items.addAll(collections); + } + + public void addItems(List Collections) { + /*for (Collection Collection : mCircles) + items.add(Collection);*/ + items.addAll(Collections); + } + + public void addItem(Collection collection){ + items.add(collection); + } + + @Override + public int getCount() { + return items.size(); + } + + @Override + public Object getItem(int position) { + return items.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + return getSpinnerView(position, convertView, parent); + } + + @Override + public View getDropDownView(int position, View convertView, ViewGroup parent) { + + return getSpinnerView(position, convertView, parent); + } + + private View getSpinnerView(int position, View convertView, ViewGroup parent){ + View spinView; + spinView = LayoutInflater.from(context).inflate(R.layout.spinner_item, parent, false); + ((TextView) spinView.findViewById(R.id.spinner_row_title)).setText(((Collection) getItem(position)).name); + + return spinView; + } + } + + /*--------------New form----------------*/ + + protected Post createPostFromFields() { + Post post = new Post(); + post.name = name.getText().toString(); + post.summary = summary.getText().toString().replaceAll("\\n", "\n"); + post.tags = tags; + if (!isImaged) { + // Edit text removes nextlines, tabs etc. we insert them explicitly. + // Html.toHtml() creates a

tag with direction attribute which textView doesn't support! + post.content = StringUtils.removeHtmlDirAttribute( + //Html.toHtml(Html.fromHtml( + contentInput.getText().toString().replaceAll("\\n", "\n")); + //)); + } + return post; + } + + @Override + public void onPositiveButton() { + + if (!validate()) + return; + + if(collectionSpinner == null + || collectionSpinner.getCount() == 0 + || collectionSpinner.getSelectedItemPosition() <= 1){ + Logger.toastError(R.string.error_select_collection); + return; + } + + String collectionID = ((Collection) collectionSpinner.getSelectedItem()).getId(); + Post newPost = createPostFromFields(); + /*image*/ + if (isFromWeb) { + PoinilaNetService.createReferencedPost(collectionID, newPost, suggestedPost.siteAddress, suggestedPost.imageAddress, suggestedPost.videoAddress); + getActivity().finish(); + } else if (isImaged) { + //TODO: + PoinilaNetService.createImagePost(collectionID, pickerView.getImage(), newPost); + } else { // normal text post + PoinilaNetService.createTextPost(collectionID, newPost); + } +// onNegativeButton(); + dismiss(); + } + + @Override + public void onNegativeButton() { + super.onNegativeButton(); + if(collectionSpinner.getSelectedItemPosition() == 1) + collectionSpinner.setSelection(0); + } + + // image post views order: MANDATORY: image, summary, collection | ARBITRARY: tags, name | HIDE: content + // text post views order: MANDATORY: name, content, collection | ARBITRARY: tags, summary | HIDE: image + // default order for union of text and image post: + // title, content, image, collection, tags, summary + public void onTextType() { + isImaged = false; + updateViews(PostType.TEXT); + titleInputLayout.setCounterMaxLength(getResources().getInteger(R.integer.max_length_text_post_title)); + summaryInputLayout.setCounterMaxLength(getResources().getInteger(R.integer.max_length_text_post_summary)); + } + + public void onImageType() { + isImaged = true; + updateViews(PostType.IMAGE); + titleInputLayout.setCounterMaxLength(getResources().getInteger(R.integer.max_length_image_post_title)); + titleInputLayout.setCounterMaxLength(getResources().getInteger(R.integer.max_length_image_post_summary)); + } + + + private void updateViews(PostType postType) { + expanded = false; + expandOrCollapseArbitraryFields(expanded); + final LinearLayout ll = getLLContainer(); + + final List toHideViews = (postType == PostType.TEXT) ? + Arrays.asList(tagsContainer, summaryInputLayout) : + Arrays.asList(tagsContainer, titleInputLayout); + final List toVisibleViews = (postType == PostType.TEXT) ? + Arrays.asList(titleInputLayout, contentInputLayout) : + Arrays.asList(pickerView, summaryInputLayout); + + // we add all views that must be shown every time from scratch. + final List toShowViews = (postType == PostType.TEXT) ? + Arrays.asList(postTypeContainer, titleInputLayout, contentInputLayout, collectionSpinner, expandButton, tagsContainer, summaryInputLayout) : + Arrays.asList(postTypeContainer, pickerView, summaryInputLayout, collectionSpinner, expandButton, tagsContainer, titleInputLayout); + + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + ll.removeAllViews(); + ViewUtils.setViewsVisibilityToGone(toHideViews); + ViewUtils.setViewsVisibilityToVisible(toVisibleViews); + for (View child : toShowViews) { + ll.addView(child); + } + } + }); + } + + private LinearLayout getLLContainer() { + return ButterKnife.findById(rootView, R.id.dialog_content); + } + + @OnClick(R.id.expand) + public void onExpand() { + expanded ^= true; + expandOrCollapseArbitraryFields(expanded); + } + + private void expandOrCollapseArbitraryFields(boolean expanded) { + View[] toChangeViews = isImaged ? new View[]{tagsContainer, titleInputLayout} : /*text post */ new View[]{tagsContainer, summaryInputLayout}; + if (expanded) { + ViewUtils.setViewsVisibilityToVisible(toChangeViews); + } else { + ViewUtils.setViewsVisibilityToGone(toChangeViews); + } + expandButton.setImageResource(expanded ? R.drawable.arrow_up_white_24dp : R.drawable.arrow_down_white_24dp); + } + + /*---------image----------*/ + + protected boolean validate() { + EditText[] requiredItems; + EditText[] limitedItems; + int[] maxLengths, minLengths; + if (isImaged) { + requiredItems = new EditText[]{}; + limitedItems = new EditText[]{name, summary}; + minLengths = new int[]{};//min_length_image_post_summary}; + maxLengths = new int[]{max_length_image_post_title, max_length_image_post_summary}; + } else { + requiredItems = new EditText[]{name, contentInput}; + limitedItems = new EditText[]{name, summary, contentInput}; + minLengths = new int[]{min_length_text_post_title, min_length_text_post_content}; + maxLengths = new int[]{max_length_text_post_title, max_length_text_post_summary, max_length_text_post_content}; + } + + if (isImaged) { + if (!pickerView.hasImage()) { + Logger.toast(R.string.error_imagepost_without_image); + return false; + } else { + Bitmap bitmap = pickerView.getImageBitmap(); + if (bitmap.getWidth() < ConstantsUtils.MINIMUM_POST_IMAGE_WIDTH || + bitmap.getHeight() < ConstantsUtils.MINIMUM_POST_IMAGE_HEIGHT) { + Logger.toastError(R.string.error_small_image); + return false; + } + } + } + return validateInputs(requiredItems, minLengths, limitedItems, maxLengths); + } + + + @Subscribe + public void selectImageEvent(SelectImageEvent event) { + resultPermissionDelegateIMPL.startForResult(this, event.intent, event.requestCode); + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + resultPermissionDelegateIMPL.onActivityResult(requestCode, resultCode, data); + } + + // I think it's cleaner to ask for permission directly in pickerView + @Subscribe public void askForPermissionEvent(PermissionEvent event){ + resultPermissionDelegateIMPL.askForPermission(this, event.permissionString, BaseActivity.MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE); + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + resultPermissionDelegateIMPL.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + + /*not important implemented methods*/ + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutResId() { + return R.layout.dialog_new_post; + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewWebsitePostDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewWebsitePostDialog.java new file mode 100755 index 0000000..de40309 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/NewWebsitePostDialog.java @@ -0,0 +1,356 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.support.annotation.Nullable; +import android.support.design.widget.TextInputEditText; +import android.support.design.widget.TextInputLayout; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; +import android.util.Log; +import android.util.Patterns; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.inputmethod.EditorInfo; +import android.widget.ImageButton; +import android.widget.ProgressBar; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.ImageClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.NewWebsitePostEvent; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.costom_view.AspectRatioImageView; +import com.shaya.poinila.android.presentation.view.help.Help; +import com.shaya.poinila.android.presentation.viewholder.SingleImageViewHolder; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.util.ResourceUtils; +import com.squareup.otto.Subscribe; +import com.squareup.picasso.Picasso; +import com.squareup.picasso.Target; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.LoadingImagedFailedEvent; +import data.event.SuggestedWebpagePostReceived; +import data.model.Image; +import data.model.PostType; +import data.model.SuggestedWebPagePost; + +/** + * Created by iran on 2015-07-15. + */ +public class NewWebsitePostDialog extends BusDialogFragment { + private static final String KEY_SITE_ADDRESS = "site address"; + @Bind(R.id.image_radio_btn) + protected RadioButton image; + @Bind(R.id.text_radio_btn) + protected RadioButton text; + @Bind(R.id.post_type_container) + RadioGroup postTypeContainer; + + @Bind(R.id.url_field) + TextInputEditText urlField; + @Bind(R.id.go_btn) + ImageButton goBtn; + @Bind(R.id.recycler_view) + RecyclerView mRecyclerView; + @Bind(R.id.progress_bar) + ProgressBar progressWheel; + @Bind(R.id.url_textinputlayout) + TextInputLayout urlInputLayout; + RecyclerViewAdapter mRecyclerViewAdapter; + String[] protocols = {"http", "https"}; + List validProtocols = Arrays.asList(protocols); + private String siteAddress; + protected boolean isImaged = true; + + // picasso doesn't hold a reference to `Target`s. So during download, they are being garbage collected. + // We hold a strong reference to array of targets just to avoid that + List targets; + private SuggestedWebPagePost suggestedPost; + + @Override + public int getLayoutResId() { + return R.layout.dialog_new_website_post; + } + + @Override + protected void initUI(Context context) { + targets = new ArrayList<>(); + + // TODO: parse url and extract imagesUrls greater than a specific size in each dimension + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setStaggeredLayoutManager(StaggeredGridLayoutManager.VERTICAL, + ResourceUtils.getInteger(R.integer.column_count)). + setAdapter(new RecyclerViewAdapter>(context, R.layout.single_image_staggered) { + @Override + protected SingleImageViewHolder getProperViewHolder(View v, int viewType) { + return new SingleImageViewHolder(v) { + @Override + public void fill(Image image) { + ((AspectRatioImageView) imageView).setAspectRatio(image.height * 1f / image.width); + imageView.requestLayout(); + Picasso.with(imageView.getContext()).load(image.url).into(imageView); + } + }; + } + }).bindViewToAdapter(); + mRecyclerViewAdapter = (RecyclerViewAdapter) mRecyclerView.getAdapter(); + + urlInputLayout.setHint(getString(R.string.hint_website_url)); + urlField.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + if (actionId == EditorInfo.IME_ACTION_SEARCH) { + fetchSiteInfo(); + return true; + } + return false; // ?? + } + }); + + postTypeContainer.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + switch (checkedId) { + case R.id.image_radio_btn: + isImaged = true; + mRecyclerView.setVisibility(View.VISIBLE); + + break; + case R.id.text_radio_btn: + isImaged = false; + mRecyclerView.setVisibility(View.GONE); + break; + } + } + }); + + + + + } + + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + + if(!PoinilaPreferences.getHelpStatus(this.getClass().getName())){ + getDialog().setOnShowListener(new DialogInterface.OnShowListener() { + @Override + public void onShow(DialogInterface dialog) { + Help.getInstance().showNewPostHelp(getActivity(), urlField); + PoinilaPreferences.putHelpStatus(NewWebsitePostDialog.this.getClass().getName(), true); + } + }); + + } + + + return super.onCreateView(inflater, container, savedInstanceState); + } + + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + } + + @Subscribe + public void urlsReceivedEvent(SuggestedWebpagePostReceived event) { + onGettingInitDataResponse(event); + } + + @Override + public void onSuccessfulInitData(BaseEvent baseEvent) { + super.onSuccessfulInitData(baseEvent); + showGoBtn(false); + mRecyclerViewAdapter.clear(); + suggestedPost = ((SuggestedWebpagePostReceived) baseEvent).webpagePost; + suggestedPost.siteAddress = this.siteAddress; + feedback(); + if (!isImaged) + return; + for (final Image image : suggestedPost.images) { + MeasureTarget target = new MeasureTarget(image.url); + targets.add(target); + Picasso.with(getActivity()).load(image.url).into(target); + } + } + + private void feedback() { + // TODO: + if (isImaged && suggestedPost.images.isEmpty()) { + Logger.toast(R.string.error_no_image_found); + } + if (!isImaged && (suggestedPost.name != null || suggestedPost.summary != null)) { + Logger.toast(R.string.successfully_loaded); + } + } + + @OnClick(R.id.go_btn) + void fetchSiteInfo() { + targets.clear(); + siteAddress = urlField.getText().toString().trim(); + suggestedPost = null; + if (isAddressValid(siteAddress)) { + showProgressBar(); + PoinilaNetService.getWebsiteInfo(siteAddress, isImaged ? PostType.IMAGE : PostType.TEXT); + } + } + + @Subscribe + public void loadingFailed(LoadingImagedFailedEvent event) { + showGoBtn(true); + } + + private void showProgressBar() { + progressWheel.setVisibility(View.VISIBLE); + goBtn.setVisibility(View.INVISIBLE); + //progressWheel.; + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + if (progressWheel != null && progressWheel.getVisibility() == View.VISIBLE) { + showGoBtn(true); + } + } + }, ConstantsUtils.READ_TIME_OUT_MILLISECONDS); + } + + private void showGoBtn(boolean failed) { + //progressWheel.stopSpinning(); + progressWheel.setVisibility(View.INVISIBLE); + goBtn.setVisibility(View.VISIBLE); + if (failed) Logger.toast(R.string.error_loading_images); + } + + private boolean isAddressValid(String address) { + String error; + Uri uri = Uri.parse(address); + + if (Patterns.WEB_URL.matcher(uri.toString()).matches()) { // trim is essential. + String protocol = uri.getScheme(); + if (protocol == null) { + protocol = "http"; + setSiteAddress("http://" + address); + } + if (!validProtocols.contains(protocol)) { + error = getString(R.string.wrong_protocol); + } else { + setSiteAddress(new Uri.Builder().scheme(uri.getScheme()). + authority(uri.getAuthority()). + path(uri.getPath()). + query(uri.getQuery()).build().toString()); + urlInputLayout.setErrorEnabled(false); + return true; + } + } else { + error = getString(R.string.error_invalid_url); + } + ViewUtils.setInputError(urlField, error); + return false; + } + + @Subscribe + public void onSiteImageClickEvent(ImageClickedUIEvent event) { + suggestedPost.imageAddress = mRecyclerViewAdapter.getItem(event.adapterPosition).url; + BusProvider.getBus().post(new NewWebsitePostEvent(suggestedPost)); + onNegativeButton(); + } + + @Override + public void onPositiveButton() { + if (suggestedPost == null) { + Logger.toast(R.string.error_page_info_not_loaded); + return; + } + BusProvider.getBus().post(new NewWebsitePostEvent(suggestedPost)); + super.onNeutralButton(); + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + siteAddress = savedInstanceState.getString(ConstantsUtils.KEY_WEBSITE_URL, null); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + outState.putString(KEY_SITE_ADDRESS, siteAddress); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.website_post, RESOURCE_NONE, R.string.create_text_post, R.string.cancel, RESOURCE_NONE); + } + + public void setSiteAddress(String siteAddress) { + this.siteAddress = siteAddress; + } + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + + class MeasureTarget implements Target { + private final String address; + + public MeasureTarget(String address) { + this.address = address; + } + + @Override + public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { + if (bitmap.getWidth() > ConstantsUtils.MINIMUM_POST_IMAGE_WIDTH && + bitmap.getHeight() > ConstantsUtils.MINIMUM_POST_IMAGE_HEIGHT) { + mRecyclerViewAdapter.addItem(new Image(address, bitmap.getWidth(), bitmap.getHeight())); + Log.w("poinila_image", String.format("width: %d, height: %d", bitmap.getWidth(), bitmap.getHeight())); + } + } + + @Override + public void onBitmapFailed(Drawable errorDrawable) { + } + + @Override + public void onPrepareLoad(Drawable placeHolderDrawable) { + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/PoinilaAlertDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/PoinilaAlertDialog.java new file mode 100755 index 0000000..619578e --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/PoinilaAlertDialog.java @@ -0,0 +1,162 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.inputmethodservice.KeyboardView; +import android.os.Bundle; +import android.support.annotation.StringRes; +import android.view.View; + +import com.shaya.poinila.android.presentation.uievent.NeutralDialogButtonClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PositiveButtonClickedUIEvent; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ResourceUtils; + +/** + * Created by iran on 12/22/2015. + */ +public abstract class PoinilaAlertDialog extends BaseDialogFragment{ + + + private View.OnClickListener positiveBtnClickListener; + + @Override + public int getLayoutResId() { + return LAYOUT_NONE; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + + } + + @Override + protected void saveStateToBundle(Bundle outState) { + + } + + @Override + public void onPositiveButton() { + if (positiveBtnClickListener == null) + BusProvider.getBus().post(new PositiveButtonClickedUIEvent()); + else + positiveBtnClickListener.onClick(null); + super.onPositiveButton(); + } + + @Override + public void onNeutralButton() { + BusProvider.getBus().post(new NeutralDialogButtonClickedUIEvent()); + super.onNeutralButton(); + } + + @Override + protected void initUI(Context context) { + + } + + public void setOnPositiveClickListener(View.OnClickListener onPositiveClickListener) { + this.positiveBtnClickListener = onPositiveClickListener; + } + + public static class Builder{ + String title; + String message; + String positiveBtnText; + String negativeBtnText; + String neutralBtnText; + View.OnClickListener positiveBtnClickListener; + + public Builder setTitle(String title) { + this.title = title; + return this; + } + + public Builder setMessage(String message) { + this.message = message; + return this; + } + + public Builder setPositiveBtnText(String positiveBtnText) { + this.positiveBtnText = positiveBtnText; + return this; + } + + public Builder setNegativeBtnText(String negativeBtnText) { + this.negativeBtnText = negativeBtnText; + return this; + } + + public Builder setNeutralBtnText(String neutralBtnText) { + this.neutralBtnText = neutralBtnText; + return this; + } + + public Builder setTitle(@StringRes int titleRes) { + return setTitle(ResourceUtils.getString(titleRes)); + } + + public Builder setMessage(@StringRes int messageRes) { + return setMessage(ResourceUtils.getString(messageRes)); + } + + public Builder setPositiveBtnText(@StringRes int positiveBtnText) { + return setPositiveBtnText(ResourceUtils.getString(positiveBtnText)); + } + + public Builder setNegativeBtnText(@StringRes int negativeBtnText) { + return setNegativeBtnText(ResourceUtils.getString(negativeBtnText)); + } + + public Builder setNeutralBtnText(@StringRes int neutralBtnText) { + return setNeutralBtnText(ResourceUtils.getString(neutralBtnText)); + } + + public Builder setPositiveBtnClickListener(View.OnClickListener listener){ + this.positiveBtnClickListener = listener; + return this; + } + + public PoinilaAlertDialog build() { + PoinilaAlertDialog pad = CustomPonilaAlertDialog.newInstance(title, message, positiveBtnText, negativeBtnText, neutralBtnText, positiveBtnClickListener); + pad.setOnPositiveClickListener(positiveBtnClickListener); + return pad; + } + } + + + public static class CustomPonilaAlertDialog extends PoinilaAlertDialog{ + + String title; + String message; + String positiveBtnText; + String negativeBtnText; + String neutralBtnText; + View.OnClickListener positiveBtnClickListener; + + public static CustomPonilaAlertDialog newInstance(String title, + String message, + String positiveBtnText, + String negativeBtnText, + String neutralBtnText, + View.OnClickListener positiveBtnClickListener){ + + CustomPonilaAlertDialog fragment = new CustomPonilaAlertDialog(); + + fragment.title = title; + fragment.message = message; + fragment.positiveBtnText = positiveBtnText; + fragment.negativeBtnText = negativeBtnText; + fragment.neutralBtnText = neutralBtnText; + fragment.positiveBtnClickListener = positiveBtnClickListener; + + + return fragment; + + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(title, message, positiveBtnText, negativeBtnText, neutralBtnText); + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/PoinilaInviteDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/PoinilaInviteDialog.java new file mode 100755 index 0000000..6b6aafa --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/PoinilaInviteDialog.java @@ -0,0 +1,49 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.widget.EditText; + +import com.shaya.poinila.android.presentation.R; + +import butterknife.Bind; +import data.PoinilaNetService; + +/** + * Created by iran on 2015-10-01. + */ +public class PoinilaInviteDialog extends BaseDialogFragment{ + @Bind(R.id.email_input) EditText emailInput; + + @Bind(R.id.message) EditText messageInput; + + @Override + public int getLayoutResId() { + return R.layout.dialog_invite_to_poinila; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + } + + @Override + protected void saveStateToBundle(Bundle outState) { + + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.invite_to_poinila, RESOURCE_NONE, R.string.send, R.string.cancel, RESOURCE_NONE); + } + + @Override + protected void initUI(Context context) { + + } + + @Override + public void onPositiveButton() { + PoinilaNetService.inviteToPoinila(emailInput.getText().toString(), messageInput.getText().toString()); + super.onPositiveButton(); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ReportDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ReportDialog.java new file mode 100755 index 0000000..ffc6dee --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/ReportDialog.java @@ -0,0 +1,98 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.view.ViewGroup; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.Logger; + +import data.PoinilaNetService; +import data.model.Collection; + +import static com.shaya.poinila.android.util.ConstantsUtils.NO_RESOURCE; + +/** + * Created by iran on 7/5/2016. + */ +public class ReportDialog extends BusDialogFragment { + + private int title; + private int memberIdOrPostId; + + + public ReportDialog(){ + + } + + public static ReportDialog newInstance(int title, int memberIdOrPostId){ + ReportDialog fragment = new ReportDialog(); + Bundle args = new Bundle(); + args.putInt("title", title); + args.putInt("memberIdOrPostId", memberIdOrPostId); + fragment.setArguments(args); + return fragment; + + } + + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutResId() { + return R.layout.dialog_report; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + + } + + @Override + protected void saveStateToBundle(Bundle outState) { + + } + + @Override + public void onPositiveButton() { + PoinilaNetService.reportMemberOrPost(memberIdOrPostId); + onNegativeButton(); + + Logger.toast(R.string.report_successful_message); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData( + getArguments().getInt("title"), + NO_RESOURCE, + R.string.report, + R.string.cancel, + NO_RESOURCE + ); + } + + @Override + protected void initUI(Context context) { + memberIdOrPostId = getArguments().getInt("memberIdOrPostId"); + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/RepostDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/RepostDialog.java new file mode 100755 index 0000000..e82c5f0 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/RepostDialog.java @@ -0,0 +1,153 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.view.View; +import android.widget.EditText; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.RemoveTagEvent; +import com.shaya.poinila.android.presentation.uievent.UpdateUiRepostEvent; +import com.shaya.poinila.android.util.BusProvider; +import com.squareup.otto.Subscribe; + +import org.parceler.Parcels; + +import data.PoinilaNetService; +import data.model.Collection; +import data.model.Post; +import data.model.PostType; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.validateInputs; +import static com.shaya.poinila.android.util.ConstantsUtils.NO_RESOURCE; +import static com.shaya.poinila.android.util.ConstantsUtils.max_length_image_post_summary; +import static com.shaya.poinila.android.util.ConstantsUtils.max_length_text_post_summary; + +/** + * Created by iran on 2015-10-07. + */ +public class RepostDialog extends NewPostDialog{ + + private static final String KEY_POST = "initial post"; + private Post post; + + public static RepostDialog newInstance(Post post) { + Bundle args = new Bundle(); + RepostDialog fragment = new RepostDialog(); + args.putParcelable(KEY_POST, Parcels.wrap(post)); + fragment.setArguments(args); + return fragment; + } + + @Override + protected void loadStateFromBundle(Bundle savedStateBundle) { + super.loadStateFromBundle(savedStateBundle); + post = Parcels.unwrap(savedStateBundle.getParcelable(KEY_POST)); + expanded = savedStateBundle.getBoolean(KEY_IS_EXPANDED); + } + + @Override + public void saveStateToBundle(Bundle outState) { + outState.putParcelable(KEY_POST, Parcels.wrap(createPostFromFields())); + outState.putBoolean(KEY_IS_EXPANDED, expanded); + } + + + + /*private void setDefaultValues(Post post) { + if (post.type == PostType.IMAGE){ + isImaged = true; + if (TextUtils.isEmpty(post.name)){ + name.setVisibility(View.GONE); + }else { + setAndDisableName(); + } + pickerView.setVisibility(View.VISIBLE); + if (!pickerView.hasImage()) pickerView.setImage(post.imagesUrls.properPostImage(BIG).url); + + content.setVisibility(View.GONE); + }else { // Text Post + isImaged = false; + setAndDisableName(); + setAndDisableContent(); + // baraye etiminan! + pickerView.setVisibility(View.GONE); + } + + summary.setText(post.summary); + + for (Tag tag : post.tags) { + ViewInflater.addRemovableTagToContainer(tagsFlowLayout, tag.name); + tags.add(tag); + } + }*/ + + /*private void setAndDisableContent() { + content.setVisibility(View.VISIBLE); + content.setEnabled(false); + content.setText(post.content); + } + + private void setAndDisableName() { + name.setVisibility(View.VISIBLE); + name.setEnabled(false); + name.setText(post.name); + }*/ + + @Override + protected void initUI(Context context) { + //super.initUI(context); + /*new Handler().postAtFrontOfQueue(new Runnable() { + @Override + public void run() { + if (rootView != null) + rootView.removeView(postTypeContainer); + } + });*/ + + sharedInitUIBetweenRepostAndNewPost(); + if (post.type == PostType.TEXT) + onTextType(); + else + onImageType(); + postTypeContainer.setVisibility(View.GONE); + fillViewsWithValues(post, true); + } + + + + @Override + public void onPositiveButton() { + if (!validate()) return; + PoinilaNetService.repost(((Collection) collectionSpinner.getSelectedItem()).getId(), + post.id, summary.getText().toString(), tags); + BusProvider.getSyncUIBus().post(new UpdateUiRepostEvent(post.id, true)); + onNegativeButton(); + } + + @Override + protected boolean validate() { + if (collectionSpinner.getSelectedItem() == null) + return false; + + EditText[] requiredItems = new EditText[]{}; + EditText[] limitedItems = new EditText[]{summary}; + int[] minLengths = new int[]{}; + int[] maxLengths; + if (isImaged){ + maxLengths = new int[]{max_length_image_post_summary}; + }else{ + maxLengths = new int[]{max_length_text_post_summary}; + } + return validateInputs(requiredItems, minLengths, limitedItems, maxLengths); + } + + @Subscribe + public void onRemoveTag(final RemoveTagEvent event){ + super.removeTag(event); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(R.string.repost_post, NO_RESOURCE, R.string.create, R.string.cancel, NO_RESOURCE); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/SelectImageDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/SelectImageDialog.java new file mode 100755 index 0000000..0b23415 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/SelectImageDialog.java @@ -0,0 +1,108 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.Manifest; +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v13.app.FragmentCompat; +import android.support.v4.app.Fragment; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; +import android.widget.Toast; + +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.activity.BaseActivity; +import com.shaya.poinila.android.presentation.view.costom_view.ActivityResultPermissionDelegate; +import com.shaya.poinila.android.presentation.viewholder.BaseViewHolder; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.StorageUtils; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.Bind; +import data.model.ImageUrls; +import data.model.Member; + +/** + * Created by iran on 6/6/2016. + */ +public class SelectImageDialog extends BaseDialogFragment{ + + private Member member; + + private View.OnClickListener onItemClickListener; + + @Bind(R.id.show_profile_image) + Button showProfileImage; + + @Bind(R.id.select_image_camera) + Button selectImageCamera; + + @Bind(R.id.select_image_gallery) + Button selectImageGallery; + + public static SelectImageDialog newInstance(Member member, View.OnClickListener onItemClickListener){ + Bundle args = new Bundle(); + SelectImageDialog fragment = new SelectImageDialog(); + fragment.member = member; + fragment.onItemClickListener = onItemClickListener; + fragment.saveStateToBundle(args); + fragment.setArguments(args); + return fragment; + } + + + + @Override + public int getLayoutResId() { + return R.layout.select_image_dialog; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + + } + + @Override + protected void saveStateToBundle(Bundle outState) { + + } + + @Override + protected void initUI(Context context) { + + showProfileImage.setOnClickListener(onItemClickListener); + selectImageCamera.setOnClickListener(onItemClickListener); + selectImageGallery.setOnClickListener(onItemClickListener); + + ViewUtils.setFont(showProfileImage, getString(R.string.default_bold_font_path)); + ViewUtils.setFont(selectImageCamera, getString(R.string.default_bold_font_path)); + ViewUtils.setFont(selectImageGallery, getString(R.string.default_bold_font_path)); + + + if(member != null && (member.imageUrls == null || !member.imageUrls.isNotEmpty())){ + showProfileImage.setVisibility(View.GONE); + } + + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(null, null, null, null, null); + } + + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/SetUserNamePasswordDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/SetUserNamePasswordDialog.java new file mode 100755 index 0000000..e858e6a --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/SetUserNamePasswordDialog.java @@ -0,0 +1,125 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.text.InputType; +import android.view.ViewGroup; +import android.widget.EditText; +import android.widget.ImageView; + +import com.mobsandgeeks.saripaar.annotation.Email; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.ConstantsUtils; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import uk.co.chrisjenx.calligraphy.CalligraphyConfig; +import uk.co.chrisjenx.calligraphy.CalligraphyUtils; + +/** + * Created by iran on 8/7/2016. + */ +public class SetUserNamePasswordDialog extends BusDialogFragment { + + + @Bind(R.id.username_input) + EditText username; + + // TODO: custom rule to send request + @Bind(R.id.password_input) + EditText password; + + + @Bind(R.id.toggle_visibility) + ImageView toggleVisibilityBtn; + + + private boolean passwordVisible; + + + + public static SetUserNamePasswordDialog newInstance(){ + SetUserNamePasswordDialog fragment = new SetUserNamePasswordDialog(); + + return fragment; + } + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutResId() { + return R.layout.dialog_set_user_pass; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + + } + + @Override + protected void saveStateToBundle(Bundle outState) { + + } + + @Override + public void onPositiveButton() { + super.onPositiveButton(); + + PoinilaNetService.setUsernamePassword(username.getText().toString(), password.getText().toString()); + + onNegativeButton(); + } + + + @OnClick(R.id.toggle_visibility) + public void onChangeVisibility() { + passwordVisible ^= true; // toggle + + int start = password.getSelectionStart(); + int end = password.getSelectionEnd(); + password.setInputType(passwordVisible ? + InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : + InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); + CalligraphyUtils.applyFontToTextView(getActivity(), password, CalligraphyConfig.get().getFontPath()); + password.setSelection(start, end); + + toggleVisibilityBtn.setImageResource(passwordVisible ? + R.drawable.toggle_visible_nobel_32dp : + R.drawable.toggle_invisible_nobel_32dp); + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData( + R.string.change_user_pass_title, + ConstantsUtils.NO_RESOURCE, + R.string.send, + R.string.cancel, + ConstantsUtils.NO_RESOURCE + ); + } + + @Override + protected void initUI(Context context) { + + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/SingleTextFieldDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/SingleTextFieldDialog.java new file mode 100755 index 0000000..cba1342 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/SingleTextFieldDialog.java @@ -0,0 +1,103 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.support.design.widget.TextInputEditText; +import android.support.design.widget.TextInputLayout; +import android.view.ViewGroup; +import android.widget.EditText; +import android.widget.TextView; + +import com.mobsandgeeks.saripaar.ValidationError; +import com.mobsandgeeks.saripaar.Validator; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.SimpleSettingTextSetEvent; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity.SettingType; +import com.shaya.poinila.android.util.BusProvider; + +import java.util.List; + +import butterknife.Bind; + +/** + * Created by iran on 2015-07-21. + */ +public abstract class SingleTextFieldDialog extends BusDialogFragment implements Validator.ValidationListener { + public static final String ADAPTER_POSITION = "adapter position"; + public int adapterPosition = -1; + protected Validator validator; + //protected SettingType settingType; + @Bind(R.id.input_field) public TextInputEditText inputField; + @Bind(R.id.field_input_layout) public TextInputLayout inputLayout; + + @Override + public int getLayoutResId() { + return R.layout.dialog_single_text_input; + } + + + @Override + protected void initUI(Context context) { + setTextFieldInputMethod(); + validator = new Validator(this); + validator.setValidationListener(this); + } + + protected abstract SettingType getSettingType(); + + protected abstract void setTextFieldInputMethod(); + + /** + * We need this in time of catching event; + */ + protected abstract int getItemPosition(); + + @Override + public void onPositiveButton() { + validator.validate(false); + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + adapterPosition = savedInstanceState.getInt(ADAPTER_POSITION, -1); + } + + @Override + protected void saveStateToBundle(Bundle outState) { + outState.putInt(ADAPTER_POSITION, adapterPosition); + } + + @Override + public void onValidationSucceeded() { + BusProvider.getBus().post(new SimpleSettingTextSetEvent( + getSettingType(), inputField.getText().toString(), getItemPosition())); + onNegativeButton(); + } + + @Override + public void onValidationFailed(List errors) { + ViewUtils.handleSaripaarErrors(errors, getActivity()); + } + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/dialog/VerificationRequestCodeDialog.java b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/VerificationRequestCodeDialog.java new file mode 100755 index 0000000..1c6a4f6 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/dialog/VerificationRequestCodeDialog.java @@ -0,0 +1,182 @@ +package com.shaya.poinila.android.presentation.view.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.text.InputType; +import android.util.Patterns; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.RadioGroup; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.activity.SignUpLoginActivity; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import butterknife.ButterKnife; +import data.PoinilaNetService; +import data.event.VerificationRequestResponse; +import manager.DBFacade; + +/** + * Created by iran on 7/18/2016. + */ +public class VerificationRequestCodeDialog extends BusDialogFragment { + + @Bind(R.id.radio_group) + RadioGroup optionsRadioGroup; + @Bind(R.id.input_field) + EditText inputField; + @Bind(R.id.input_filed_icon) + ImageView inputFieldIcon; + private boolean mVerificationByEmail; + private String inputValue; + private boolean disableRadioBtns = false; + private int titleRes = R.string.verifying; + + public static VerificationRequestCodeDialog newInstance(){ + VerificationRequestCodeDialog fragment = new VerificationRequestCodeDialog(); + return fragment; + } + + public static VerificationRequestCodeDialog newInstance(int titleRes, String inputValue, boolean mVerificationByEmail){ + VerificationRequestCodeDialog fragment = new VerificationRequestCodeDialog(); + fragment.inputValue = inputValue; + fragment.mVerificationByEmail = mVerificationByEmail; + fragment.disableRadioBtns = true; + fragment.titleRes = titleRes; + return fragment; + } + + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutResId() { + return R.layout.dialog_verification_request; + } + + @Override + protected void loadStateFromBundle(Bundle savedInstanceState) { + + } + + @Override + protected void saveStateToBundle(Bundle outState) { + + } + + @Override + protected GeneralDialogData getDialogGeneralAttributes() { + return new GeneralDialogData(titleRes, ConstantsUtils.NO_RESOURCE, R.string.send, R.string.cancel, ConstantsUtils.NO_RESOURCE); + } + + @Override + protected void initUI(Context context) { + //backForthButtonsBox.setBackForthListener(this); + optionsRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + switch (checkedId) { + case R.id.email_option: + onMailOption(); + break; + case R.id.sms_option: + onSmsOption(); + break; + } + } + }); + + + optionsRadioGroup.setVisibility(disableRadioBtns ? View.GONE : View.VISIBLE); + + inputField.setText(inputValue); + if (mVerificationByEmail) onMailOption(); + else onSmsOption(); + } + + private void onSmsOption() { + optionsRadioGroup.check(R.id.sms_option); + mVerificationByEmail = false; + inputField.setInputType(InputType.TYPE_CLASS_PHONE); + inputFieldIcon.setImageResource(R.drawable.phone_48dp); + } + + private void onMailOption() { + optionsRadioGroup.check(R.id.email_option); + mVerificationByEmail = true; + inputField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); + inputFieldIcon.setImageResource(R.drawable.email_48dp); + } + + @Subscribe + public void onVerifyResponse(VerificationRequestResponse event) { + dismissProgressDialog(); + + if (event.succeed) { + if(disableRadioBtns) + DialogLauncher.launchInputVerificationCodeDialog(getFragmentManager(), + inputField.getText().toString(), mVerificationByEmail, disableRadioBtns); + else + DialogLauncher.launchInputVerificationCodeDialog(getFragmentManager(), + inputField.getText().toString(), mVerificationByEmail); + Logger.toast(mVerificationByEmail ? R.string.success_verification_mail : R.string.success_verification_sms); + dismiss(); + } else { + Logger.toastError(event.errorExplanation); + } + optionsRadioGroup.setEnabled(true); + } + + @Override + public void onPositiveButton() { +// super.onPositiveButton(); + + showProgressDialog(); + String userText = inputField.getText().toString().trim(); + if (mVerificationByEmail && !Patterns.EMAIL_ADDRESS.matcher(userText).matches()) { + inputField.setText(""); + ViewUtils.temporaryError(inputField, getString(R.string.error_invalid_email)); + return; + } else if (!mVerificationByEmail && !Patterns.PHONE.matcher(userText).matches()) { + inputField.setText(""); + ViewUtils.temporaryError(inputField, getString(R.string.error_invalid_phone)); + return; + } + /*if (!mVerificationByEmail){ // sms + initData(); + }else{*//* + Logger.toast(R.string.success_verification_mail); + //}*/ + optionsRadioGroup.setEnabled(false); + if(DBFacade.getCachedMyInfo() != null) + PoinilaNetService.requestVerificationCode(mVerificationByEmail, userText, disableRadioBtns ? 0 : DBFacade.getCachedMyInfo().id); + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/AnonymousInfoFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/AnonymousInfoFragment.java new file mode 100755 index 0000000..1afbd56 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/AnonymousInfoFragment.java @@ -0,0 +1,54 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.os.Bundle; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.util.ConstantsUtils; + +import butterknife.Bind; +import butterknife.OnClick; +import manager.DataRepository; + +/** + * Created by iran on 2/28/2016. + */ +public class AnonymousInfoFragment extends BaseFragment { + public static final int FOLLOWING_COLLECTIONS = 1; + public static final int NOTIFICATIONS = 3; + public static final int PROFILE = 4; + + @Bind(R.id.page_info_text) + public TextView anonymousInfoText; + + public static AnonymousInfoFragment newInstance(int page) { + Bundle args = new Bundle(); + args.putInt(ConstantsUtils.KEY_ANONYMOUS_PAGE, page); + AnonymousInfoFragment fragment = new AnonymousInfoFragment(); + fragment.setArguments(args); + return fragment; + } + + @Override + public int getLayoutID() { + return R.layout.fragment_anonymous; + } + + @Override + protected void initUI() { + int page = getArguments().getInt(ConstantsUtils.KEY_ANONYMOUS_PAGE); + String info = null; + if (page == FOLLOWING_COLLECTIONS) + info = getString(R.string.anonymous_info_following_collections); + else if (page == NOTIFICATIONS) + info = getString(R.string.anonymous_info_notifications); + else if (page == PROFILE) + info = getString(R.string.anonymous_info_profile); + ViewUtils.setText(anonymousInfoText, info); + } + + @OnClick(R.id.back_to_login) public void onExitGuestToLogin(){ + DataRepository.logoutEvent(); + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/AppSettingFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/AppSettingFragment.java new file mode 100755 index 0000000..cd5d808 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/AppSettingFragment.java @@ -0,0 +1,19 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.os.Bundle; +import android.preference.PreferenceFragment; + +import com.shaya.poinila.android.presentation.R; + +/** + * Created by iran on 2015-11-07. + */ +public class AppSettingFragment extends PreferenceFragment{ + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Load the preferences from an XML resource + addPreferencesFromResource(R.xml.preferences); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/BaseFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/BaseFragment.java new file mode 100755 index 0000000..9ded382 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/BaseFragment.java @@ -0,0 +1,139 @@ +package com.shaya.poinila.android.presentation.view.fragments; + + +import android.content.Context; +import android.os.Bundle; +import android.support.annotation.LayoutRes; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.google.android.gms.analytics.HitBuilders; +import com.google.android.gms.analytics.Tracker; +import com.shaya.poinila.android.presentation.PoinilaApplication; +import com.shaya.poinila.android.presentation.view.OnHelpShowListener; +import com.shaya.poinila.android.utils.uisynchronize.UISynchronizeBus; +import com.shaya.poinila.android.utils.uisynchronize.UISynchronizeReceiver; + +import java.io.Serializable; + +import butterknife.ButterKnife; + +/** + * Created by iran on 2015-06-21. + * @author Alireza Farahani + * + * Abstract class, father of all fragments for poinila app + * + */ +public abstract class BaseFragment extends Fragment implements UISynchronizeReceiver.OnLoadDataSynchronizeListener{ + + protected ViewGroup rootView; + private String defaultTag = getClass().getName(); + + boolean viewedHelp = false; + protected boolean selected = false; + protected boolean ready = false; + + private Tracker mTracker; + + /** + * Avoiding memory leak by not returning a activity. + * We need getting context from activity in many cases. + * @return Application context + */ + public Context getContext(){ + return getActivity(); + } + + public abstract @LayoutRes int getLayoutID(); + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + PoinilaApplication application = (PoinilaApplication)getActivity().getApplication(); + mTracker = application.getDefaultTracker(); + + mTracker.setScreenName(getDefaultTag()); + mTracker.send(new HitBuilders.ScreenViewBuilder().build()); + + UISynchronizeBus.getInstance().getReceiver().setOnLoadDataSynchronizeListener(this); + + + /** + * Preventing loss of data on configuration change(like rotation). + * May be saving data on a fragment object and retrieving by fragmentManager is a + * better idea. + * + FragmentManager fm = getFragmentManager(); + dataFragment = (DataFragment) fm.findFragmentByTag(“data”); + + // create the fragment and data the first time + if (dataFragment == null) { + // add the fragment + dataFragment = new DataFragment(); + fm.beginTransaction().add(dataFragment, “data”).commit(); + // load the data from the web + dataFragment.setData(loadMyData()); + } + + */ + //setRetainInstance(true); + } + + /*private BroadcastReceiver mRequestFailedReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + requestingIsLocked = false; + } + };*/ + + @Override + public void onStart() { + // Register to receive messages. + // We are registering an observer (mMessageReceiver) to receive Intents + // with actions named "custom-event-name". + super.onStart(); + /*LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mRequestFailedReceiver, + new IntentFilter(ConstantsUtils.INTENT_FILTER_REQUEST_FAILED));*/ + } + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + rootView = ((ViewGroup) inflater.inflate(getLayoutID(), container, false)); + ButterKnife.bind(this, rootView); + initUI(); + return rootView; + } + + protected abstract void initUI(); + + @Override + public void onDestroy() { + super.onDestroy(); + ButterKnife.unbind(this); + } + + public String getDefaultTag() { + return defaultTag; + } + + public boolean isReady() { + return ready; + } + + @Override + public UISynchronizeBus.UI_SYNCHRONIZE_ACTION getSynchronizeAction() { + return UISynchronizeBus.UI_SYNCHRONIZE_ACTION.OFF; + } + + @Override + public void loadDataForSynchronize(Serializable data, UISynchronizeBus.UI_SYNCHRONIZE_ACTION action) { + Log.i(getClass().getName(), "loadDataForSynchronize"); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/BusFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/BusFragment.java new file mode 100755 index 0000000..73c41aa --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/BusFragment.java @@ -0,0 +1,174 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.app.ProgressDialog; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.support.annotation.LayoutRes; +import android.support.annotation.Nullable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ProgressBar; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.PoinilaPreferences; + +import butterknife.ButterKnife; +import data.RequestTracker; +import data.event.BaseEvent; + +/** + * Created by iran on 2015-06-30. + * General Behavior a fragment must do if it subscribes on the bus + */ +public abstract class BusFragment extends BaseFragment { + protected boolean initDataResponseReceived = false; + protected ViewGroup progressView; + private View loadableView; + private ViewGroup loadableViewParent; + private ViewGroup.LayoutParams loadableViewLayoutParams; + protected RequestTracker requestTracker; + private int loadableViewIndex; + private ProgressDialog mProgressDialog; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + requestTracker = new RequestTracker(); + + mProgressDialog = new ProgressDialog(getActivity(), 0); + mProgressDialog.setMessage(getString(R.string.progress_dialog_message)); + } + + @Override + public void onStart() { + super.onStart(); + BusProvider.getBus().register(this); + if (sendsRequestAutomatically() && !initDataResponseReceived) + initData(); + } + + protected abstract boolean sendsRequestAutomatically(); + + @Override + public void onStop() { + super.onStop(); + BusProvider.getBus().unregister(this); + } + + protected void onGettingInitDataResponse(BaseEvent event) { + if (isInitDataResponseValid(event)) + onSuccessfulInitData(event); + } + + /** + * called only on creating view. (with regard to {@link #initDataResponseReceived} + * if somethings need to be updated, update with events and bus. + */ + public void initData() { + initDataResponseReceived = false; + if (mustShowProgressView()) + showProgress(); + //requestTracker.addInitRequestID(RandomUtils.getRandomInt()); + requestInitialData(); + } + + protected abstract void requestInitialData(); + + public abstract ViewGroup getLoadableView(); + + protected void showProgress() { + progressView = (ViewGroup) LayoutInflater.from(getActivity()).inflate(getProgressViewLayoutID(), rootView, false); + initProgressBar(getProgressBar()); + /*int progressBarSize = getResources().getDimensionPixelSize(R.dimen.icon_big); + FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(progressBarSize, progressBarSize); + lp.gravity = Gravity.CENTER; + progressView.addView(getProgressBar(), lp);*/ + + loadableView = getLoadableView(); +// if(loadableView != null){ +// loadableViewLayoutParams = loadableView.getLayoutParams(); +// loadableViewParent = (ViewGroup) loadableView.getParent(); +// //TODO: null pointer sometimes. but why? +// if (loadableViewParent != null) { +// loadableViewIndex = loadableViewParent.indexOfChild(loadableView); +// loadableViewParent.removeView(loadableView); +// loadableViewParent.addView(progressView, loadableViewIndex, loadableViewLayoutParams); +// } +// +// if (getProgressBar().isIndeterminate()) { +// new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { +// @Override +// public void run() { +// if (rootView.findViewById(R.id.progress_view) != null) +// dismissProgress(false); +// } +// }, ConstantsUtils.CONNECT_TIME_OUT_MILLISECONDS); +// } +// } + + } + + @LayoutRes + protected int getProgressViewLayoutID() { + return R.layout.progress; + } + + protected void initProgressBar(ProgressBar progressBar) { + + } + + + public void showProgressDialog(){ + if(mProgressDialog != null){ + mProgressDialog.show(); + } + + } + + public void dismissProgressDialog(){ + mProgressDialog.dismiss(); + } + + public ProgressBar getProgressBar() { + /*ProgressBar progressBar = ButterKnife.findById(progressView, R.id.progress_bar); + if (progressBar == null){ + progressBar = new ProgressBar(getActivity(), null, android.R.attr.progressBarStyleLarge); + } + return progressBar;*/ + return ButterKnife.findById(progressView, R.id.progress_bar); + } + + // TODO: sometimes getting null loadableViewParent. But what times exactly? + protected void dismissProgress(boolean dataLoadSuccessful) { + if (loadableViewParent == null) return; + loadableViewParent.removeView(progressView); + // -- kasif! + if (loadableView.getParent() != null) + ((ViewGroup) loadableView.getParent()).removeView(loadableView); + // + if (dataLoadSuccessful) { + //ViewUtils.enableLayoutChildes(getLoadableView(), true); + loadableViewParent.addView(loadableView, loadableViewIndex, loadableViewLayoutParams); + } + } + + public void onSuccessfulInitData(BaseEvent baseEvent) { + if (mustShowProgressView() && !initDataResponseReceived) + dismissProgress(true); + initDataResponseReceived = true; + } + + public abstract boolean mustShowProgressView(); + + protected boolean isInitDataResponseValid(BaseEvent baseEvent) { + // in many cases of list pages, requestForInitData just calls the requestForLoadMore so we call this + // function on getting response data of list. In order to avoid view hierarchy traversing on every + // list data response, we check the requestOnFirstTime flag to be true. + return true; + } + /*---temporary validity check functions----*/ + //TODO: later, these methods must +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/BusRefreshableListFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/BusRefreshableListFragment.java new file mode 100755 index 0000000..00e40d3 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/BusRefreshableListFragment.java @@ -0,0 +1,84 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.widget.SwipeRefreshLayout; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.DeviceInfoUtils; + +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; + +/** + * Created by iran on 2015-08-02. + */ +public abstract class BusRefreshableListFragment extends ListBusFragment implements SwipeRefreshLayout.OnRefreshListener{ + + //@Bind(R.actorID.refresh_layout) + protected SwipeRefreshLayout swipeRefreshLayout; + + /** + * Child view root layout got from {#getLayoutID} must be a scrollable view + * @param inflater + * @param container + * @param savedInstanceState + * @return + */ + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + swipeRefreshLayout = (SwipeRefreshLayout) inflater.inflate(R.layout.swipe_refresh, container, false); + + //View content = inflater.inflate(getLayoutID(), swipeRefreshLayout, false); + swipeRefreshLayout.addView(super.onCreateView(inflater, container, savedInstanceState), MATCH_PARENT, MATCH_PARENT); + initSwipeLayout(); + return swipeRefreshLayout; + } + + private void initSwipeLayout() { + swipeRefreshLayout.setOnRefreshListener(this); + if (DeviceInfoUtils.isTablet()) { + swipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE); + } + setAppearance(); + } + + private void setAppearance() { + swipeRefreshLayout.setColorSchemeResources(R.color.flamingo, + R.color.west_side, + R.color.holo_blue_bright, + R.color.holo_green_light); + } + + public abstract void refresh(); + + + public final void onRefreshFinished(){ + swipeRefreshLayout.setRefreshing(false); + } + + @Override + public void onRefresh() { + /*new Handler().postDelayed(new Runnable() { + @Override public void run() { + + swipeRefreshLayout.setRefreshing(false); + } + }, 5000);*/ + refresh(); + } + + @Override + public void onPause() { + super.onPause(); + + if (swipeRefreshLayout!=null) { + swipeRefreshLayout.setRefreshing(false); + swipeRefreshLayout.destroyDrawingCache(); + swipeRefreshLayout.clearAnimation(); + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/CollectionListFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/CollectionListFragment.java new file mode 100755 index 0000000..2511750 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/CollectionListFragment.java @@ -0,0 +1,365 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; +import android.util.Log; +import android.view.View; +import android.widget.TextView; + +import com.getbase.floatingactionbutton.FloatingActionButton; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.CollectionClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.EditItemUIEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.OnFollowUnfollowCollectionUIEvent; +import com.shaya.poinila.android.presentation.uievent.PositiveButtonClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.RemoveItemUIEvent; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.view.dialog.NewCollectionDialog; +import com.shaya.poinila.android.presentation.viewholder.BaseViewHolder; +import com.shaya.poinila.android.presentation.viewholder.CollectionViewHolder; +import com.shaya.poinila.android.presentation.viewholder.DashboardPostViewHolder; +import com.shaya.poinila.android.presentation.viewholder.EditableCollectionViewHolder; +import com.shaya.poinila.android.presentation.viewholder.FollowableCollectionViewHolder; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.CollectionReceivedEvent; +import data.event.CollectionUpdatedEvent; +import data.event.CollectionsReceivedEvent; +import data.model.Collection; +import data.model.Loading; +import data.model.Member; +import data.model.Post; +import manager.DataRepository; + +import static android.support.v7.widget.LinearLayoutManager.VERTICAL; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ENTITY; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ITEM_COUNT; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_REQUEST_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_COLLECTIONS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_FOLLOWED_COLLECTIONS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_POST_REPOSTING_COLLECTIONS; +import static com.shaya.poinila.android.util.ResourceUtils.getInteger; + + +/** + * Created by iran on 2015-08-06. + */ +public class CollectionListFragment extends ListBusFragment { + + private String mainActorID; + private int requestID; + + + @Nullable + @Bind(R.id.item_count) + TextView mItemCountView; + + FloatingActionButton fabMenu; + + public static android.support.v4.app.Fragment newInstance(String id, int requestID) { + CollectionListFragment f = new CollectionListFragment(); + Bundle b = new Bundle(); + b.putString(KEY_ENTITY, id); + b.putInt(KEY_REQUEST_ID, requestID); + f.setArguments(b); + return f; + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mainActorID = getArguments().getString(KEY_ENTITY); + requestID = getArguments().getInt(KEY_REQUEST_ID); + } + } + + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + switch (requestID) { + case REQUEST_POST_REPOSTING_COLLECTIONS: + case REQUEST_MEMBER_FOLLOWED_COLLECTIONS: + return RecyclerViewProvider.staggeredListEndDetectorListener(getRecyclerViewAdapter(), this); + case REQUEST_MEMBER_COLLECTIONS: + return (areMyCollections() ? + RecyclerViewProvider.gridListEndDetectionListener(getRecyclerViewAdapter(), this) : + RecyclerViewProvider.staggeredListEndDetectorListener(getRecyclerViewAdapter(), this)); + default: // my followed collections + return RecyclerViewProvider.gridListEndDetectionListener(getRecyclerViewAdapter(), this); + } + } + + + @Subscribe + public void onCollectionsReceived(CollectionsReceivedEvent event) { + + if(event.collections.size() >= 25 && mRecyclerView.getAdapter().getItemCount() == 0){ + setLoading(new Loading()); + } + + onGettingInitDataResponse(event); + onGettingListDataResponse(event, event.bookmark); + + + } + + @Override + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + super.onSuccessfulListData(baseEvent, newBookmark); + getRecyclerViewAdapter().addItems(((CollectionsReceivedEvent) baseEvent).collections); + } + + @Override + public void onEndListData() { + removeLoading(); + } + + @Override + public int getLayoutID() { + if (requestID == REQUEST_POST_REPOSTING_COLLECTIONS) + return R.layout.fragment_reposts; + if (requestID == REQUEST_MEMBER_COLLECTIONS) + return R.layout.fragment_member_collections; + return R.layout.recycler_view_full; + } + + @Override + protected void initUI() { + super.initUI(); + Bundle b = getArguments(); + requestID = b.getInt(KEY_REQUEST_ID); + mainActorID = b.getString(KEY_ENTITY); + switch (requestID) { + case ConstantsUtils.REQUEST_MEMBER_COLLECTIONS: + if (areMyCollections()) { + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setAdapter(getRecyclerViewAdapter()). + setGridLayoutManager(VERTICAL, getResources().getInteger(R.integer.column_count), new GridLayoutManager.SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + if(getRecyclerViewAdapter().getItemViewType(position) == RecyclerViewAdapter.VIEW_TYPE_LOAD_PROGRESS ){ + return getResources().getInteger(R.integer.column_count); + } + return 1; + } + }). + bindViewToAdapter(); + + + fabMenu = (FloatingActionButton)rootView.findViewById(R.id.fab_add_collection); + + fabMenu.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + new NewCollectionDialog().show(getFragmentManager(), null); + } + }); + break; + } + case REQUEST_POST_REPOSTING_COLLECTIONS: + setText(mItemCountView, getString(R.string.reposts_formatted, + getActivity().getIntent().getIntExtra(KEY_ITEM_COUNT, 0))); + case REQUEST_MEMBER_FOLLOWED_COLLECTIONS: + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setAdapter(getRecyclerViewAdapter()). + setStaggeredLayoutManager(VERTICAL, getInteger(R.integer.column_count)). + bindViewToAdapter(); + break; + } + mRecyclerView.getItemAnimator().setChangeDuration(0); + + + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + switch (requestID) { + case ConstantsUtils.REQUEST_MEMBER_COLLECTIONS: + if (areMyCollections()) + return new RecyclerViewAdapter(getActivity(), R.layout.collection_editable) { + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + if(viewType == RecyclerViewAdapter.VIEW_TYPE_LOAD_PROGRESS ){ + return new BaseViewHolder.EmptyViewHolder(v); + } + return new EditableCollectionViewHolder(v, BaseEvent.ReceiverName.CollectionListFragment); + } + }; + case REQUEST_POST_REPOSTING_COLLECTIONS: + case REQUEST_MEMBER_FOLLOWED_COLLECTIONS: + return new RecyclerViewAdapter(getActivity(), R.layout.collection_followable) { + + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + if(viewType == RecyclerViewAdapter.VIEW_TYPE_LOAD_PROGRESS ){ + return new BaseViewHolder.EmptyViewHolder(v); + } + return new FollowableCollectionViewHolder(v, BaseEvent.ReceiverName.CollectionListFragment); + } + + @Override + public void onBindViewHolder(BaseViewHolder holder, int position) { + if (getItemViewType(position) == VIEW_TYPE_LOAD_PROGRESS) { + StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams(); + layoutParams.setFullSpan(true); + } else { + super.onBindViewHolder(holder, position); + } + + } + }; + default: + return null; + } + } + + private boolean areMyCollections() { + return mainActorID.equals(DataRepository.getInstance().getMyId()); + } + + + @Subscribe + public void onRemoveCollection(RemoveItemUIEvent event) { + // must not happen but anyway... :) + if (DataRepository.isUserAnonymous()){ + Logger.toastError(R.string.error_guest_action); + return; + } + + clickedItemPosition = event.adapterPosition; + DialogLauncher.launchDeleteCollection(getFragmentManager()); + } + + @Subscribe + public void onEditCollection(EditItemUIEvent event) { + // must not happen but anyway... :) + if (DataRepository.isUserAnonymous()){ + Logger.toastError(R.string.error_guest_action); + return; + } + + clickedItemPosition = event.adapterPosition; + Collection collection = (Collection)getRecyclerViewAdapter().getItem(event.adapterPosition); + DialogLauncher.launchEditCollectionDialog(getFragmentManager(), collection); + } + + @Subscribe + public void onPositiveDialogButtonClicked(PositiveButtonClickedUIEvent event) { + PoinilaNetService.deleteCollection((Collection)getRecyclerViewAdapter().getItem(clickedItemPosition)); + getRecyclerViewAdapter().removeItem(clickedItemPosition); + } + + @Subscribe + public void onFollowCollection(OnFollowUnfollowCollectionUIEvent event) { + if (DataRepository.isUserAnonymous()){ + Logger.toastError(R.string.error_guest_action); + return; + } + + if (event.follow) { + PoinilaNetService.followCollection(((Collection)getRecyclerViewAdapter().getItem(event.adapterPosition)).getId()); + } else { + PoinilaNetService.unfollowCollection(((Collection)getRecyclerViewAdapter().getItem(event.adapterPosition)).getId()); + } + ((Collection)getRecyclerViewAdapter().getItem(event.adapterPosition)).followedByMe ^= true; // toggle boolean by xor ing with "True". + getRecyclerViewAdapter().notifyItemChanged(event.adapterPosition); + } + + @Subscribe + public void onProfilePicClickedEvent(MemberClickedUIEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.CollectionListFragment) + return; + Member member = ((Collection)getRecyclerViewAdapter().getItem(event.adapterPosition)).owner; + PageChanger.goToProfile(getActivity(), member); + } + + @Subscribe + public void onCollectionClicked(CollectionClickedUIEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.CollectionListFragment) + return; + Collection collection = (Collection)getRecyclerViewAdapter().getItem(event.adapterPosition); + PageChanger.goToCollection(getActivity(), collection); + } + + @Subscribe + public void onCollectionUpdated(CollectionUpdatedEvent event) { + int collectionPosition = findCollectionPositionInAdapter(event.collection); + if (collectionPosition == -1) return; + Collection collection = (Collection)getRecyclerViewAdapter().getItem(collectionPosition); + collection.description = event.collection.description; + collection.circleIDs = event.collection.circleIDs; + collection.name = event.collection.name; + collection.topic = event.collection.topic; + Logger.log("coverImageUrls = " + event.collection.coverImageUrls, Logger.LEVEL_INFO); + collection.coverImageUrls = event.collection.coverImageUrls; + getRecyclerViewAdapter().setItem(collection, collectionPosition); + getRecyclerViewAdapter().notifyItemChanged(collectionPosition); + } + + @Subscribe + public void onCollectionReceived(CollectionReceivedEvent event){ + int collectionPosition = findCollectionPositionInAdapter(event.collection); + if (collectionPosition == -1) return; + Collection collection = (Collection)getRecyclerViewAdapter().getItem(collectionPosition); + collection.description = event.collection.description; + collection.circleIDs = event.collection.circleIDs; + collection.name = event.collection.name; + collection.topic = event.collection.topic; + collection.coverImageUrls = event.collection.coverImageUrls; + getRecyclerViewAdapter().setItem(collection, collectionPosition); + getRecyclerViewAdapter().notifyItemChanged(collectionPosition); + } + + private int findCollectionPositionInAdapter(Collection collection) { + return getRecyclerViewAdapter().getItems().indexOf(collection); + } + + + /*-----------*/ + + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + requestForMoreData(); + } + + @Override + public boolean mustShowProgressView() { + return true; + } + + @Override + public void requestForMoreData() { + switch (requestID) { + case ConstantsUtils.REQUEST_MEMBER_COLLECTIONS: + DataRepository.getInstance().getMemberCollections(mainActorID, bookmark); + break; + case REQUEST_MEMBER_FOLLOWED_COLLECTIONS: + DataRepository.getInstance().getPeopleFollowingCollections(mainActorID, bookmark); + break; + case REQUEST_POST_REPOSTING_COLLECTIONS: + //DataRepository.getInstance().get + PoinilaNetService.getRepostCollections(mainActorID, bookmark); + break; + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/CollectionPageFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/CollectionPageFragment.java new file mode 100755 index 0000000..25caecf --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/CollectionPageFragment.java @@ -0,0 +1,551 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.widget.NestedScrollView; +import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +import com.getbase.floatingactionbutton.FloatingActionButton; +import com.getbase.floatingactionbutton.FloatingActionsMenu; +import com.makeramen.roundedimageview.RoundedImageView; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.CollectionClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PositiveButtonClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PostClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.view.help.Help; +import com.shaya.poinila.android.presentation.viewholder.BaseViewHolder; +import com.shaya.poinila.android.presentation.viewholder.PostsOfCollectionViewHolder; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.util.RandomUtils; +import com.shaya.poinila.android.util.StringUtils; +import com.squareup.otto.Subscribe; +import com.squareup.picasso.Picasso; + +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.CollectionReceivedEvent; +import data.event.PostReceivedEvent; +import data.event.PostsReceivedEvent; +import data.model.Collection; +import data.model.ImageUrls; +import data.model.Loading; +import data.model.Member; +import data.model.Post; +import manager.DataRepository; +import manager.RequestSource; + +import static android.support.v7.widget.LinearLayoutManager.VERTICAL; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setFont; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ENTITY; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_REQUEST_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_SECOND_ENTITY_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_COLLECTION_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_EXPLORE; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_POST_RELATED_POSTS; +import static com.shaya.poinila.android.util.ResourceUtils.getStringFormatted; + +/** + * Created by hossein on 8/30/16. + */ +public class CollectionPageFragment extends ListBusFragment { + + @Nullable + @Bind(R.id.collection_name) + TextView collectionName; + + @Nullable + @Bind(R.id.image_big) + RoundedImageView collectionImage; + + @Nullable + @Bind(R.id.follow_button) + Button followButton; + @Nullable + @Bind(R.id.follow_button_img) + ImageView followButtonImg; + @Nullable + @Bind(R.id.edit_button) + Button editButton; + @Nullable + @Bind(R.id.remove_button) + Button removeButton; + + @Nullable + @Bind(R.id.collection_description) + TextView collectionDescription; + +// @Nullable +// @Bind(R.id.collection_info_bar) +// View collectionInfoView; + + @Nullable + @Bind(R.id.item_count) + TextView itemCountView; + + @Bind(R.id.nested_scroll_view) + NestedScrollView nestedScrollView; + + protected Collection collection; + + private int requestType; + private String mainEntityId; + private String secondEntityId; + private Set activeRequests; + + FloatingActionsMenu fabMenu; + FloatingActionButton addFromUrl; + FloatingActionButton addPost; + + private boolean showedHelp = false; + + public static CollectionPageFragment newInstance(String mainEntityId, int requestID) { + return newInstance(mainEntityId, null, requestID); + } + + + public static CollectionPageFragment newInstance(String mainEntityId, String secondEntityId, int requestID) { + CollectionPageFragment f = new CollectionPageFragment(); + Bundle arguments = new Bundle(); + arguments.putString(KEY_ENTITY, mainEntityId); + arguments.putString(KEY_SECOND_ENTITY_ID, secondEntityId); + arguments.putInt(KEY_REQUEST_ID, requestID); + //arguments.putBoolean(ConstantsUtils.KEY_IS_USER_COLLECTION, isCollectionOwnedByUser); + f.setArguments(arguments); + return f; + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + mainEntityId = getArguments().getString(KEY_ENTITY); + requestType = getArguments().getInt(KEY_REQUEST_ID); + secondEntityId = getArguments().getString(KEY_SECOND_ENTITY_ID); + + activeRequests = new HashSet<>(2); + setHasOptionsMenu(true); + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + menu.clear(); + + // Inflate menu resource file. + inflater.inflate(R.menu.menu_post, menu); + menu.findItem(R.id.menu_item_report).setVisible(false); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // handle item selection + switch (item.getItemId()) { + case R.id.menu_item_share: + // Handle this selection + launchShareMenu(); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + private void launchShareMenu() { + Intent shareIntent = new Intent(Intent.ACTION_SEND); + shareIntent.setType("text/plain"); + String extra = null; + extra = getString(R.string.checkout_this_collection) + "\n" + + getString(R.string.collection_share_url, + ConstantsUtils.POINILA_ORIGIN_ADDRESS, + Uri.encode(collection.owner.uniqueName), + Uri.encode(collection.name)) + "\n" + + getString(R.string.ponila_world_of_interest); + shareIntent.putExtra(Intent.EXTRA_TEXT, extra); + startActivity(Intent.createChooser(shareIntent, getString(R.string.share_dialog_title))); + } + + @Override + protected void initUI() { + super.initUI(); + + mRecyclerView = new RecyclerViewProvider(mRecyclerView).setAdapter(getRecyclerViewAdapter()). + setStaggeredLayoutManager(VERTICAL, getResources().getInteger(R.integer.column_count)). + bindViewToAdapter(); + mRecyclerView.getItemAnimator().setChangeDuration(0); + mRecyclerView.setNestedScrollingEnabled(false); + + nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { + @Override + public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { + if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) { + onLoadMore(); + } + } + }); + + fabMenu = (FloatingActionsMenu)rootView.findViewById(R.id.fab_menu); + addFromUrl = (FloatingActionButton)rootView.findViewById(R.id.fab_add_post_from_site); + addPost = (FloatingActionButton)rootView.findViewById(R.id.fab_add_post); + + addPost.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + fabMenu.collapse(); + //DialogLauncher.launchNewPost(getChildFragmentManager(), null); + PageChanger.goToNewPost(getFragmentManager(), null); + } + }); + + addFromUrl.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + fabMenu.collapse(); + DialogLauncher.launchNewWebsitePost(getFragmentManager()); + } + }); + + getActivity().setTitle(R.string.collection); + collection = DataRepository.getInstance().getTempModel(Collection.class); + if (collection == null) + return; + fillCollection(collection); + setLoading(new Loading()); + } + + private boolean byDeepLink(String collectionIdOrName) { + return !StringUtils.isInteger(collectionIdOrName); + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.staggeredListEndDetectorListener(getRecyclerViewAdapter(), this); + } + + private void fillCollection(Collection collection) { + setText(itemCountView, getStringFormatted(R.string.posts_formatted, collection.postCount)); + + if (!TextUtils.isEmpty(collection.description)) { + setText(collectionDescription, collection.description); + setFont(collectionDescription, getString(R.string.default_bold_font_path)); + } + + if(!TextUtils.isEmpty(collection.name)){ + setText(collectionName, collection.name); + setFont(collectionName, getString(R.string.default_font_path)); + } + + if (!DataRepository.isMyCollection(collection)) { + followButton.setVisibility(View.VISIBLE); + followButtonImg.setVisibility(View.VISIBLE); + updateFollowButton(); + } else { + editButton.setVisibility(View.VISIBLE); + removeButton.setVisibility(View.VISIBLE); + } + + setImage(collectionImage, collection.coverImageUrls, ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.AVATAR); + //getActivity().setTitle(getString(R.string.title_activity_collection, mainEntityId)); + } + + private void updateFollowButton() { + setText(followButton, collection.followedByMe + ? getString(R.string.unfollow_item) + : getString(R.string.follow_item)); + + followButtonImg.setSelected(collection.followedByMe); + followButton.setSelected(collection.followedByMe); + } + + @Override + public void requestForMoreData() { + + int requestId = RandomUtils.getRandomInt(); + activeRequests.add(requestId); + + DataRepository.getCollectionPosts( + mainEntityId, + byDeepLink(mainEntityId) ? secondEntityId : null, + bookmark, + BaseEvent.ReceiverName.CollectionPageFragment); + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + final BaseEvent.ReceiverName receiverName = BaseEvent.ReceiverName.CollectionPageFragment; + return new RecyclerViewAdapter(getActivity(), R.layout.post_in_collection) { + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + return new BaseViewHolder.EmptyViewHolder(v); + } + return new PostsOfCollectionViewHolder(v, receiverName); + } + + @Override + protected boolean isStaggeredGridLayoutManager() { + return true; + } + }; + } + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + // deep links are unique with two parameters -> user name, collection name +// Log.i(getClass().getName(), "collection unige name : " + (byDeepLink(mainEntityId) ? secondEntityId : null)); + DataRepository.getInstance().getCollection( + mainEntityId, + byDeepLink(mainEntityId) ? secondEntityId : null, + RequestSource.FORCE_ONLINE); + + requestForMoreData(); + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutID() { + return R.layout.fragment_collection_detail_owned; + } + + + @Override + public void onSuccessfulInitData(BaseEvent baseEvent) { + super.onSuccessfulInitData(baseEvent); + + if (baseEvent instanceof CollectionReceivedEvent) { + collection = ((CollectionReceivedEvent) baseEvent).collection; + fillCollection(collection); + } else if (baseEvent instanceof PostReceivedEvent) { + if (getRecyclerViewAdapter().isEmpty()) { // click on notification participant + getRecyclerViewAdapter().addItem(((PostReceivedEvent) baseEvent).post, 0); + } else { + //TODO: replace nemikone ba avvalin item related post ha? + getRecyclerViewAdapter().setItem(((PostReceivedEvent) baseEvent).post, 0); + } + } + + /*collection.description = event.collection.description; + collection.circleIDs = event.collection.circleIDs; + collection.name = event.collection.name; + collection.topic = event.collection.topic; + collection.coverImageUrls = event.collection.coverImageUrls;*/ + + } + + @Subscribe + public void onCollectionReceived(CollectionReceivedEvent event){ + onGettingInitDataResponse(event); + } + + + @Subscribe + public void onPostsReceived(PostsReceivedEvent event) { + + if(event.posts.size() >= 25 && mRecyclerView.getAdapter().getItemCount() == 0){ + setLoading(new Loading()); + } + + populateIfNecessary(event); // was necessary earlier because response came from server lacked info about posts collection + onGettingInitDataResponse(event); + onGettingListDataResponse(event, event.bookmark); + + } + + public void populateIfNecessary(PostsReceivedEvent event) { + if (collection != null) { + for (Post post : event.posts) { + post.collection = collection; + //post.author = collection.owner; + } + } + } + + @Override + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + super.onSuccessfulListData(baseEvent, newBookmark); + List posts = ((PostsReceivedEvent) baseEvent).posts; + + getRecyclerViewAdapter().addItems(posts); + + if(!showedHelp && !PoinilaPreferences.getHelpStatus(getClass().getName()) && requestType == REQUEST_COLLECTION_POSTS){ + showHelp(); + showedHelp = true; + PoinilaPreferences.putHelpStatus(getClass().getName(), true); + } + + } + + @Nullable + @OnClick(R.id.remove_button) + public void onRemoveCollection() { + // must not happen but anyway... :) + if (DataRepository.isUserAnonymous()) { + Logger.toastError(R.string.error_guest_action); + return; + } + + DialogLauncher.launchDeleteCollection(getFragmentManager()); + } + + @Nullable + @OnClick(R.id.follow_button) + public void onFollowCollection(Button followButton) { + if (DataRepository.isUserAnonymous()) { + Logger.toastError(R.string.error_guest_action); + return; + } + + if (collection.followedByMe) + PoinilaNetService.unfollowCollection(collection.getId()); + else + PoinilaNetService.followCollection(collection.getId()); + + collection.followedByMe = !collection.followedByMe; + + updateFollowButton(); + } + + + @Nullable + @OnClick(R.id.edit_button) + public void onEditCollection() { + // must not happen but anyway... :) + if (DataRepository.isUserAnonymous()) { + Logger.toastError(R.string.error_guest_action); + return; + } + + DialogLauncher.launchEditCollectionDialog(getFragmentManager(), collection); + } + + @Subscribe + public void onProfilePicClickedEvent(MemberClickedUIEvent event) { + Member member = ((Post)getRecyclerViewAdapter().getItem(event.adapterPosition)).author; + PageChanger.goToProfile(getActivity(), member); + } + + @Subscribe + public void onPostClicked(PostClickedUIEvent event) { + Post post = (Post)getRecyclerViewAdapter().getItem(event.adapterPosition); + PageChanger.goToPost(getActivity(), post); + } + + @Subscribe + public void onCollectionClicked(CollectionClickedUIEvent event) { + Collection collection = ((Post)getRecyclerViewAdapter().getItem(event.adapterPosition)).collection; + PageChanger.goToCollection(getActivity(), collection); + } + + @Subscribe + public void onPositiveDialogButtonClicked(PositiveButtonClickedUIEvent event) { + PoinilaNetService.deleteCollection(collection); + getActivity().finish(); + } + + @Subscribe + public void onPostDetailsComponentClickEvent(PostComponentClickedUIEvent event) { + if (DataRepository.isUserAnonymous() && PostComponentClickedUIEvent.Type.guestCantPerformActions.contains(event.type)) { + Logger.toastError(R.string.error_guest_action); + return; + } + + + Post post = (Post)getRecyclerViewAdapter().getItem(0); + switch (event.type) { + case FaversList: + PageChanger.goToLikersList(getActivity(), post.faveCount, post.getId()); + break; + case Comments: + PageChanger.goToCommentList(getActivity(), post.commentCount, post.getId()); + getRecyclerViewAdapter().notifyItemChanged(0); + break; + case RepostersList: + PageChanger.goToRepostList(getActivity(), post.repostCount, post.getId()); + break; + case Repost: + DialogLauncher.launchRepostDialog(getFragmentManager(), post); + getRecyclerViewAdapter().notifyItemChanged(0); + break; + case Poster: + Member member = post.author; + PageChanger.goToProfile(getActivity(), member); + break; + case Collection: + Collection collection = post.collection; + PageChanger.goToCollection(getActivity(), collection); + break; + case OriginalCollection: + collection = post.originalCollection; + PageChanger.goToCollection(getActivity(), collection); + break; + case Reference: + PageChanger.goToInlineBrowser(getActivity(), post.originalWebpage.toLowerCase(), post.getId(), post.name); + break; + case FullImage: + PageChanger.goToFullImage(getActivity(), post.imagesUrls.properPostImage(ImageUrls.ImageSize.FULL_SIZE).url); + break; + } + } + + + @Override + protected boolean isInitDataResponseValid(BaseEvent baseEvent) { + boolean res = requestType == REQUEST_COLLECTION_POSTS; + return res && super.isInitDataResponseValid(baseEvent); + } + + @Override + protected boolean isListDataResponseValid(BaseEvent baseEvent, String responseBookmark) { + boolean res; + PostsReceivedEvent event = (PostsReceivedEvent) baseEvent; + res = event.receiverName == BaseEvent.ReceiverName.CollectionPageFragment; + + /*switch (requestID) { + case ((PostsReceivedEvent) baseEvent).receiverName + }*/ + return res && super.isListDataResponseValid(baseEvent, responseBookmark); + + } + + + + public void showHelp(){ + Help.getInstance().showPostsOfCollectionHelp(getActivity(), followButton); + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/DashboardFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/DashboardFragment.java new file mode 100755 index 0000000..c9ebebf --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/DashboardFragment.java @@ -0,0 +1,489 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.content.Context; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.support.annotation.LayoutRes; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewTreeObserver; + +import com.shaya.poinila.android.presentation.AndroidUtilities; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +//import com.shaya.poinila.android.presentation.presenter.HelpProvider; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.CollectionClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PostClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.RatePonilaEvent; +import com.shaya.poinila.android.presentation.uievent.UpdateUICommentEvent; +import com.shaya.poinila.android.presentation.uievent.UpdateUiRepostEvent; +import com.shaya.poinila.android.presentation.uievent.sync.PostActionSyncEvent; +import com.shaya.poinila.android.presentation.view.help.Help; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.view.fragments.DashboardFragment.DashboardRecyclerViewAdapter.AskIfUserLikesPonila; +import com.shaya.poinila.android.presentation.viewholder.AskUserLikesPonilaViewHolder; +import com.shaya.poinila.android.presentation.viewholder.BaseViewHolder; +import com.shaya.poinila.android.presentation.viewholder.DashboardPostViewHolder; +import com.shaya.poinila.android.presentation.viewholder.RatePonilaViewHolder; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConnectionUitls; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.util.StringUtils; +import com.shaya.poinila.android.utils.uisynchronize.UISynchronizeBus; +import com.squareup.otto.Subscribe; + +import java.io.Serializable; + +import data.event.BaseEvent; +import data.event.ContentReceivedEvent; +import data.event.DashboardEvent; +import data.model.Collection; +import data.model.Loading; +import data.model.Member; +import data.model.Post; +import manager.DataRepository; + +import static com.shaya.poinila.android.presentation.view.fragments.PostListFragment.findPostInAdapter; + +/** + * Important Documentation + *

On Creating this fragment, we request the server and cache both. we control reading + * from cache by {@link #loadFromCache} (firstly true) and reading from server by + * {@link ConnectionUitls#isNetworkOnline()} method.


+ * If response is from the cache, we sets the received items count as offset for next db query. + * (working in offline mode)
+ * If response is from the server (which comes after response from cache logically!), loadFromCache + * is set to false so we doesn't read db items anymore and items array (populating with cached items) + * is cleared. In this case response bookmark is kept and + * would be send with next request.
+ * When refreshing (meaningful in online mode) items are added to list's head. + */ +public class DashboardFragment extends BusRefreshableListFragment { + + boolean loadFromCache; + // offset in sql query when scrolling in offline mode + private int cachedItems; + protected boolean showedHelp = false; +// private HelpProvider mHelpProvider; + + + +// @Bind(R.id.fab_menu) +// FloatingActionsMenu fabMenu; +// +// @Bind(R.id.fab_add_post_from_site) +// FloatingActionButton addFromUrl; +// +// @Bind(R.id.fab_add_post) +// FloatingActionButton addPost; + + // TODO: Rename and change types and number of parameters + public static DashboardFragment newInstance() { + return new DashboardFragment(); + } + + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + loadFromCache = true; + + } + + @Override + public int getLayoutID() { + return R.layout.recycler_view_full; + } + + @Override + protected void initUI() { + super.initUI(); + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setStaggeredLayoutManager(StaggeredGridLayoutManager.VERTICAL, + getResources().getInteger(R.integer.column_count)). + setAdapter(getRecyclerViewAdapter()). + bindViewToAdapter(); + } + + @Override + public void onStart() { + super.onStart(); + + BusProvider.getSyncUIBus().register(this); + } + + // TODO: candidate of refactoring. Can use static method from `RecyclerViewProvider` instead. + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.staggeredListEndDetectorListener(getRecyclerViewAdapter(), this); + } + + @Override + public void requestForMoreData() { + DataRepository.getInstance().getSuggestions(ConnectionUitls.isNetworkOnline(), + loadFromCache, bookmark, cachedItems); + } + + @Subscribe + public void onPostActionSyncEvent(PostActionSyncEvent event){ + + int position = ((DashboardRecyclerViewAdapter)getRecyclerViewAdapter()) + .getItemPositionByPostId(event.post.id); + + if(position == -1) return; + + Post post = (Post)getRecyclerViewAdapter().getItem(position); + post.faveCount += event.post.favedByMe ? 1: -1; + post.favedByMe = event.post.favedByMe; + getRecyclerViewAdapter().setItem(post, position); + getRecyclerViewAdapter().notifyItemChanged(position); + } + + @Subscribe + public void onUpdateUiRepostEvent(UpdateUiRepostEvent event){ + +// int position = ((DashboardRecyclerViewAdapter)getRecyclerViewAdapter()) +// .getItemPositionByPostId(event.postId); +// +// if(position == -1) return; +// +// Post post = (Post)getRecyclerViewAdapter().getItem(position); +// post.repostCount += event.isSuccess ? 1: -1; +// getRecyclerViewAdapter().setItem(post, position); +// getRecyclerViewAdapter().notifyItemChanged(position); + } + + @Subscribe + public void onUpdateUICommentEvent(UpdateUICommentEvent event){ + + int position = ((DashboardRecyclerViewAdapter)getRecyclerViewAdapter()) + .getItemPositionByPostId(Integer.parseInt(event.postId)); + + if(position == -1) return; + + if(event.action == UpdateUICommentEvent.INCREMENT_COMMENTS) + ((Post)getRecyclerViewAdapter().getItem(position)).commentCount++; + else + ((Post)getRecyclerViewAdapter().getItem(position)).commentCount--; + + getRecyclerViewAdapter().notifyItemChanged(position); + } + + @Override + protected void requestInitialData() { + refresh(); + } + +// @OnClick(R.id.fab_add_post) public void onAddPost(){ +// fabMenu.collapse(); +// //DialogLauncher.launchNewPost(getChildFragmentManager(), null); +// PageChanger.goToNewPost(getFragmentManager(), null); +// } +// +// @OnClick(R.id.fab_add_post_from_site) public void onAddPostFromUrl(){ +// // todo: dialog, its layout and how to get a url imagesUrls; +// fabMenu.collapse(); +// DialogLauncher.launchNewWebsitePost(getFragmentManager()); +// } + + @Subscribe + public void onPostClickedEvent(PostClickedUIEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.DashboardFragment) return; + PageChanger.goToPost(getActivity(), (Post) getRecyclerViewAdapter().getItem(event.adapterPosition)); + } + + @Subscribe + public void onProfilePicClickedEvent(MemberClickedUIEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.DashboardFragment) return; + Member member =((Post)getRecyclerViewAdapter().getItem(event.adapterPosition)).author; + PageChanger.goToProfile(getActivity(), member); + } + + @Subscribe + public void onPostCollectionClickedEvent(CollectionClickedUIEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.DashboardFragment) return; + Collection collection = ((Post)getRecyclerViewAdapter().getItem(event.adapterPosition)).collection; + PageChanger.goToCollection(getActivity(), collection); + } + + @Subscribe + public void onSuggestedPostsReceived(DashboardEvent event) { + super.onGettingInitDataResponse(event); + super.onGettingListDataResponse(event, event.bookmark); + } + + @Override + protected boolean isListDataResponseValid(BaseEvent baseEvent, String responseBookmark) { + DashboardEvent event = ((DashboardEvent) baseEvent); + return event.getData() != null && event.getData().size() != 0 && super.isListDataResponseValid(event, responseBookmark); + } + + @SuppressWarnings("unchecked") + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return new DashboardRecyclerViewAdapter(getActivity(), -1, getFragmentManager()); + } + + + @Override + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + super.onSuccessfulListData(baseEvent, newBookmark); + DashboardEvent dashboardEvent = ((DashboardEvent) baseEvent); + if (dashboardEvent.isFromCache) { // from cache/db + setLoading(new Loading()); + getRecyclerViewAdapter().addItems(dashboardEvent.getData()); + cachedItems = cachedItems + dashboardEvent.getData().size(); + } else { // from server + loadFromCache = false; + // hiding swipe refresh layout and adding items to head + if (swipeRefreshLayout.isRefreshing()) { + onRefreshFinished(); + + + //mAdapter.addItemsToListHead(event.getData()); + getRecyclerViewAdapter().resetData(dashboardEvent.getData()); + // TODO: needs better approach. why we should clear on every refresh? + + setLoading(new Loading()); + + // checking if it's the time to show "ask rating" + if (DataRepository.shouldAskForRating()) { + //noinspection unchecked + getRecyclerViewAdapter().getUngenericedItems().add(0, new AskIfUserLikesPonila()); + getRecyclerViewAdapter().notifyItemChanged(0); + } + } else { + getRecyclerViewAdapter().addItems(dashboardEvent.getData()); + } + + + DataRepository.getInstance().saveSuggestions(dashboardEvent.getData()); + } + + if(!showedHelp && !PoinilaPreferences.getHelpStatus(getClass().getName())){ + this.showedHelp = true; + PoinilaPreferences.putHelpStatus(getClass().getName(), true); + showHelp(); + } + + } + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + public void refresh() { + bookmark = null; // TODO: is it necessary?! + swipeRefreshLayout.setRefreshing(true); + requestForMoreData(); + if (!ConnectionUitls.isNetworkOnline()) + Logger.toast(R.string.warning_connect_to_network); + //refreshRequest = true; + } + + @Subscribe + public void onContentReceivedEvent(final ContentReceivedEvent event) { + final int postIndex = findPostInAdapter(getRecyclerViewAdapter().getItems(), event.postID); + if (postIndex != -1) { + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + ((Post) getRecyclerViewAdapter().getItem(postIndex)).content = StringUtils.removeHtmlDirAttribute(event.content); + getRecyclerViewAdapter().notifyItemChanged(postIndex); + } + }); + } + } + + + + + @Override + public boolean mustShowProgressView() { + return false; + } + + // no need implement since it doesn't show progressBar. Bad design :) + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Subscribe + public void onRateApplication(RatePonilaEvent event) { + // TODO: read market destination from server response + AndroidUtilities.rateApplication(getActivity(), DataRepository.getDestinationMarket()); + } + + public void showHelp() { + + if(getRecyclerViewAdapter().getItem(0) instanceof Post){ + mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + + Help.getInstance().showDashboardHelp(getActivity(), mRecyclerView.getLayoutManager().findViewByPosition(0)); + viewedHelp = true; + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { + mRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this); + } else { + mRecyclerView.getViewTreeObserver().removeGlobalOnLayoutListener(this); + } + } + }); + + } + } + + @Override + public UISynchronizeBus.UI_SYNCHRONIZE_ACTION getSynchronizeAction() { + return UISynchronizeBus.UI_SYNCHRONIZE_ACTION.UPDATE_DASHBOARD_POST; + } + + @Override + public void loadDataForSynchronize(Serializable data, UISynchronizeBus.UI_SYNCHRONIZE_ACTION action) { + super.loadDataForSynchronize(data, action); + Log.i(getClass().getName(), "loadDataForSynchronize"); + + } + + public static class DashboardRecyclerViewAdapter extends RecyclerViewAdapter { + public static final int VIEW_TYPE_POST = 1; + public static final int VIEW_TYPE_RATE_APP = 2; + private static final int VIEW_TYPE_LIKES_APP = 3; + private final android.support.v4.app.FragmentManager fragmentManager; + + public DashboardRecyclerViewAdapter(Context context, @LayoutRes int itemLayoutID, android.support.v4.app.FragmentManager fragmentManager) { + super(context, itemLayoutID); + this.fragmentManager = fragmentManager; + } + + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + return null; + } + + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + if (getItemViewType(position) == VIEW_TYPE_RATE_APP || getItemViewType(position) == VIEW_TYPE_LIKES_APP || getItemViewType(position) == VIEW_TYPE_LOAD_PROGRESS) { + StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams(); + layoutParams.setFullSpan(true); + } else { + ((DashboardPostViewHolder) holder).fill(((Post) getItem(position))); + } + } + + public int getItemPositionByPostId(int id){ + int length = getItems().size(); + for( int i = 0 ; i < length ; i++){ + if(getItem(i) instanceof Post){ + Post post = (Post)getItem(i); + if(post.id == id) return i; + } + } + return -1; + } + + @Override + protected boolean isStaggeredGridLayoutManager() { + return true; + } + + // TODO: can be written cleaner + @Override + public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if (viewType == VIEW_TYPE_LIKES_APP) { + final AskUserLikesPonilaViewHolder holder = new AskUserLikesPonilaViewHolder(mLayoutInflater.inflate(R.layout.ask_if_user_likes_ponila, parent, false)); + holder.dontKnowButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + removeItem(holder.getAdapterPosition()); + // TODO increase show rate dialog ask interval + DataRepository.updateAskRatingThreshold(false); + } + }); + holder.positiveButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + setItem(new AskIfUserRatesPonila(), 0); + } + }); + holder.negativeButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + removeItem(holder.getAdapterPosition()); + DialogLauncher.launchContactUsDialog(fragmentManager); + // TODO disable asking (later we want to ask in every update) + DataRepository.updateAskRatingThreshold(true); + } + }); + return holder; + } else if (viewType == VIEW_TYPE_RATE_APP) { + final RatePonilaViewHolder holder = new RatePonilaViewHolder(mLayoutInflater.inflate(R.layout.ask_if_user_rates_ponila, parent, false)); + holder.notNowButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + removeItem(holder.getAdapterPosition()); + DataRepository.updateAskRatingThreshold(false); + } + }); + holder.positiveButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + removeItem(holder.getAdapterPosition()); + DataRepository.updateAskRatingThreshold(true); + BusProvider.getBus().post(new RatePonilaEvent()); + } + }); + holder.negativeButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + removeItem(holder.getAdapterPosition()); + DataRepository.updateAskRatingThreshold(true); + } + }); + return holder; + }else if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + return new BaseViewHolder.EmptyViewHolder(mLayoutInflater.inflate(R.layout.progress, parent, false)); + }else + return new DashboardPostViewHolder(mLayoutInflater.inflate(R.layout.post_dashboard, parent, false), BaseEvent.ReceiverName.DashboardFragment); + + } + + + + @Override + public int getItemViewType(int position) { + int type = super.getItemViewType(position); + if(type == VIEW_TYPE_LOAD_PROGRESS){ + return super.getItemViewType(position); + } + if (getItem(position) instanceof Post) + return VIEW_TYPE_POST; + else if (getItem(position) instanceof AskIfUserLikesPonila) + return VIEW_TYPE_LIKES_APP; + else + return VIEW_TYPE_RATE_APP; + + } + + /* do not delete */ + public static class AskIfUserLikesPonila { + } + + public static class AskIfUserRatesPonila { + } + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/EditInterestsFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/EditInterestsFragment.java new file mode 100755 index 0000000..a9acf75 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/EditInterestsFragment.java @@ -0,0 +1,125 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.os.Bundle; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; +import android.view.View; + +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.RemoveTagEvent; +import com.shaya.poinila.android.presentation.viewholder.RemovableInterestViewHolder; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.ResourceUtils; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.UserInterestsReceivedEvent; +import data.model.ImageTag; +import data.model.Tag; +import manager.DataRepository; + +/** + * Created by iran on 2015-09-08. + */ +public class EditInterestsFragment extends ListBusFragment { + + @Bind(R.id.new_interest) View newInterest; + private String actorID; + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return new RecyclerView.OnScrollListener() {}; + } + +/* @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.gridListEndDetectionListener(getRecyclerViewAdapter(), this); + }*/ + + @Override + public int getLayoutID() { + return R.layout.activity_edit_interests; + } + + @Override + protected void initUI() { + actorID = getArguments().getString(ConstantsUtils.KEY_ENTITY); + + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setGridLayoutManager(StaggeredGridLayoutManager.VERTICAL, + ResourceUtils.getInteger(R.integer.column_count)). + setAdapter(getRecyclerViewAdapter()). + bindViewToAdapter(); + } + + public static android.support.v4.app.Fragment newInstance(String actorID) { + Bundle b = new Bundle(); + b.putString(ConstantsUtils.KEY_ENTITY, actorID); + EditInterestsFragment f = new EditInterestsFragment(); + f.setArguments(b); + return f; + } + + @OnClick(R.id.new_interest) public void onNewInterest(){ + initDataResponseReceived = false; + DataRepository.getInstance().putTempModel(getRecyclerViewAdapter().getItems()); + PageChanger.goToSelectInterest(getActivity(), false); + } + + @Subscribe public void onUserInterestesReceived(UserInterestsReceivedEvent event){ + onGettingInitDataResponse(event); + } + + @Subscribe public void onDeleteInterest(RemoveTagEvent event){ + Tag tag = getRecyclerViewAdapter().getItem(event.adapterPosition); + PoinilaNetService.removeInterest(tag); + getRecyclerViewAdapter().removeItem(event.adapterPosition); + } + + + + /*-------------------*/ + + @Override + public void onSuccessfulInitData(BaseEvent baseEvent) { + super.onSuccessfulInitData(baseEvent); + getRecyclerViewAdapter().resetData(((UserInterestsReceivedEvent) baseEvent).userInterests); + } + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + PoinilaNetService.getMemberInterests(actorID); + } + + @Override + public boolean mustShowProgressView() { + return true; + } + + @Override + public void requestForMoreData() { + + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return new RecyclerViewAdapter(getActivity(), R.layout.removable_imaged_interest) { + @Override + protected RemovableInterestViewHolder getProperViewHolder(View v, int viewType) { + return new RemovableInterestViewHolder(v); + } + }; + }//implements LoaderList { + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/InvitationNotifListFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/InvitationNotifListFragment.java new file mode 100755 index 0000000..5e07f24 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/InvitationNotifListFragment.java @@ -0,0 +1,117 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.View; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.AnswerFriendshipUIEvent; +import com.shaya.poinila.android.presentation.uievent.NotifActorClickedUIEvent; +import com.shaya.poinila.android.presentation.viewholder.InviteNotifViewHolder; +import com.squareup.otto.Subscribe; + +import data.PoinilaNetService; +import data.event.AnswerFriendRequestResponse; +import data.event.BaseEvent; +import data.event.MyFriendshipRequestsEvent; +import data.model.InvitationNotif; +import data.model.Member; + +import static android.support.v7.widget.LinearLayoutManager.VERTICAL; + +/** + * Created by iran on 2015-09-29. + */ +public class InvitationNotifListFragment extends ListBusFragment { + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.linearListEndDetectorListener(getRecyclerViewAdapter(), this); + } + + @Override + public int getLayoutID() { + return R.layout.recycler_view_full; + } + + @Override + protected void initUI() { + super.initUI(); + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setAdapter(getRecyclerViewAdapter()). + setLinearLayoutManager(VERTICAL).bindViewToAdapter(); + } + + public static android.support.v4.app.Fragment newInstance() { + return new InvitationNotifListFragment(); + } + + @Subscribe public void onNotifsReceived(MyFriendshipRequestsEvent event){ + onGettingInitDataResponse(event); + onGettingListDataResponse(event, event.bookmark); + } + + @Override + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + super.onSuccessfulListData(baseEvent, newBookmark); + getRecyclerViewAdapter().addItems(((MyFriendshipRequestsEvent) baseEvent).data); + } + + @Override + public void onEndListData() { + + } + + @Subscribe public void onAnswerFriendRequest(AnswerFriendshipUIEvent event){ + PoinilaNetService.answerFriendRequest( + getRecyclerViewAdapter().getItem(event.adapterPosition).member.id, event.accept, -1); + //ViewUtils.removeView(mInvitationsNotificationsContainer, event.adapterPosition); + clickedItemPosition = event.adapterPosition; + } + + @Subscribe public void onAnswerFriendRequestResponse(AnswerFriendRequestResponse event){ + if (event.succeed){ + getRecyclerViewAdapter().removeItem(clickedItemPosition); + // TODO: on accepting as a friend, chanage item view to "you and felani are now friends" + } + } + + @Subscribe public void onMainActorClicked(NotifActorClickedUIEvent event){ + Member member = getRecyclerViewAdapter().getItem(event.adapterPosition).member; + if (member == null) return; // invitations accepted friendship has got no main actor. + PageChanger.goToProfile(getActivity(), member.getId()); + } + +//--------------- + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + requestForMoreData(); + } + + @Override + public boolean mustShowProgressView() { + return true; + } + + @Override + public void requestForMoreData() { + PoinilaNetService.getMyFriendshipRequests(bookmark); + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return new RecyclerViewAdapter(getActivity(), R.layout.notif_requested_tobe_your_friend) { + @Override + protected InviteNotifViewHolder getProperViewHolder(View v, int viewType) { + return new InviteNotifViewHolder(v); + } + }; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/ListBusFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/ListBusFragment.java new file mode 100755 index 0000000..95c8474 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/ListBusFragment.java @@ -0,0 +1,118 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.ViewGroup; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.view.LoaderList; + +import butterknife.Bind; +import data.event.BaseEvent; +import data.model.Loading; + +/** + * Created by iran on 2015-08-06. + */ +public abstract class ListBusFragment extends BusFragment implements LoaderList{ + private static final String CLICKED_ITEM_POSITION = "clicked item position"; + protected boolean requestingIsLocked = false; + public String bookmark; + protected int clickedItemPosition = -1; + @Bind(R.id.recycler_view) protected RecyclerView mRecyclerView; + private RecyclerViewAdapter mAdapter; + protected boolean hasLoading = false; + + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (savedInstanceState != null) + clickedItemPosition = savedInstanceState.getInt(CLICKED_ITEM_POSITION); + } + + @Override + protected void initUI() { + mRecyclerView.removeAllViews(); // clear view after rotation and other forms of activity recreation + // but may be it's better to just call notifyDataSetChange on related adapter + if(getRecyclerViewListener() != null) + mRecyclerView.addOnScrollListener(getRecyclerViewListener()); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putInt(CLICKED_ITEM_POSITION, clickedItemPosition); + } + + /** + * Called in {@link #onStart()} after {@link #initUI()} so it's safe to assume class variables + * are initialized. + * @return + */ + protected abstract RecyclerView.OnScrollListener getRecyclerViewListener(); + + public void onLoadMore(){ + if (!requestingIsLocked) { + requestingIsLocked = true; + requestForMoreData(); + } + } + + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark){ + requestingIsLocked = false; + bookmark = newBookmark; + } + + public void onEndListData(){ + removeLoading(); + } + + public void setLoading(T loading){ + if(!hasLoading || !(getRecyclerViewAdapter().getItem(getRecyclerViewAdapter().getItemCount() - 1) instanceof Loading)) { + hasLoading = true; + getRecyclerViewAdapter().setLoading(loading); + } + } + + public void removeLoading(){ + if(hasLoading) { + hasLoading = false; + getRecyclerViewAdapter().removeLoading(); + } + } + + public abstract void requestForMoreData(); + + @Override + public ViewGroup getLoadableView() { + return mRecyclerView; + } + + public RecyclerViewAdapter getRecyclerViewAdapter(){ + if (mAdapter == null) + mAdapter = createAndReturnRVAdapter(); + return mAdapter; + } + + protected void onGettingListDataResponse(BaseEvent event, String responseBookmark) { + if (isListDataResponseValid(event, responseBookmark)) + onSuccessfulListData(event, responseBookmark); + else + onEndListData(); + } + + protected boolean isListDataResponseValid(BaseEvent baseEvent, String responseBookmark){ + // bookmark != null && + return checkBookMark(this.bookmark, responseBookmark); // this.bookmark may be null + } + + public boolean checkBookMark(String pageBookmark, String serverBookmark) { + return serverBookmark == null || !serverBookmark.equals(pageBookmark); + } + + public abstract RecyclerViewAdapter createAndReturnRVAdapter(); +} + diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/LoginFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/LoginFragment.java new file mode 100755 index 0000000..4bf4b3e --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/LoginFragment.java @@ -0,0 +1,345 @@ +package com.shaya.poinila.android.presentation.view.fragments; + + +import android.app.Activity; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.AsyncTask; +import android.os.Bundle; +import android.support.v4.app.ActivityCompat; +import android.text.InputType; +import android.util.Log; +import android.util.Patterns; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.TextView; + +import com.google.android.gms.auth.api.signin.GoogleSignInAccount; +import com.google.android.gms.auth.api.signin.GoogleSignInOptions; +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.api.GoogleApiClient; +import com.mobsandgeeks.saripaar.annotation.Email; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.SmsReceiver; +import com.shaya.poinila.android.presentation.uievent.GoogleLoginSucceedEvent; +import com.shaya.poinila.android.presentation.view.activity.SignUpLoginActivity; +import com.shaya.poinila.android.util.ConnectionUitls; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.utils.PonilaAccountManager; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.LoginFailedEvent; +import data.event.LoginSucceedEvent; +import data.event.MyInfoReceivedEvent; +import manager.DataRepository; +import uk.co.chrisjenx.calligraphy.CalligraphyConfig; +import uk.co.chrisjenx.calligraphy.CalligraphyUtils; + +public class LoginFragment extends BusFragment + implements GoogleApiClient.OnConnectionFailedListener, PonilaAccountManager.OnGoogleSignInResult {//implements BackForthButtonsBox.OnBackForthListener + + + /*@Bind(R.id.signup_login_buttons) + BackForthButtonsBox backForthButtonsBox;*/ + @Bind(R.id.card_title) + TextView title; + + @Bind(R.id.button_signup) + Button signupButton; + @Bind(R.id.button_login) + Button loginButton; + @Bind(R.id.button_guest_login) + Button guestLoginButton; + + @Email + @Bind(R.id.username_input) + EditText username; + + @Bind(R.id.toggle_visibility) + ImageView toggleVisibilityBtn; + + // TODO: custom rule to send request + @Bind(R.id.password_input) + EditText password; + + //actually doesn't exist in graphic design. I chose a similar layout + //for reusability purposes. + @Bind(R.id.left_arrow) + ImageView arrow; + + @Bind(R.id.google_sign_in_btn) + Button signInButton; + + @Bind(R.id.forgot_password_textview) + TextView forgotPassTV; + private boolean forgotPasswordShowing; + private boolean passwordVisible; + //Validator mValidator; + + GoogleApiClient mGoogleApiClient; + GoogleSignInOptions gso; + + // Just for Sign in With Google + private boolean firstLoginDoneByGoogle = false; + private boolean isSignInWithGoogle = false; + private static final int REQUEST_GET_ACCOUNT = 112; + + public LoginFragment() { + // Required empty public constructor + } + + + @Override + public int getLayoutID() { + return R.layout.fragment_login; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // this permission is for login by google(Android Marshmallow & above) + if(android.os.Build.VERSION.SDK_INT > 22){ + ActivityCompat.requestPermissions(getActivity(),new String[]{android.Manifest.permission.GET_ACCOUNTS},REQUEST_GET_ACCOUNT); + } + } + + @Override + protected void initUI() { + arrow.setVisibility(View.GONE); + title.setText(getString(R.string.login_in_poinila)); + //backForthButtonsBox.setBackForthListener(this); + } + + @OnClick(R.id.forgot_password_textview) + public void onForgotPassword() { + goToForgotPassword(); + } + + private void goToForgotPassword() { + ((SignUpLoginActivity) getActivity()).goToForgotPassword(); + } + + @Subscribe + public void onSuccessfulLogin(LoginSucceedEvent event) { + //DataRepository.setUserAsAnonymous(true); + DataRepository.getInstance().getMyInfo(ConnectionUitls.isNetworkOnline(), MyInfoReceivedEvent.MY_INFO_TYPE.LOAD); + } + + @Subscribe + public void onSuccessfulLogin(GoogleLoginSucceedEvent event) { + //DataRepository.setUserAsAnonymous(true); + firstLoginDoneByGoogle = event.firstLoginDoneByGoogle; + isSignInWithGoogle = true; + DataRepository.getInstance().getMyInfo(ConnectionUitls.isNetworkOnline(), MyInfoReceivedEvent.MY_INFO_TYPE.LOAD); + + } + + @Subscribe + public void onLoginFail(LoginFailedEvent event) { + //Logger.toast("failed"); + switch (event.code) { + case 401: // access error + Logger.toast(R.string.error_login); + break; + case 400: // bad parameter like sending a null device id + break; + } + dismissProgressDialog(); + } + + @Override + public void onDestroy() { + super.onDestroy(); + } + + @Subscribe + public void onUserInfoReceived(MyInfoReceivedEvent event) { + onGettingInitDataResponse(event); + + if (event.type != MyInfoReceivedEvent.MY_INFO_TYPE.LOAD) return; + + if(LoginFragment.this.getActivity() == null) return; + + new AsyncTask() { + + @Override + protected Void doInBackground(Object... params) { + DataRepository.syncWithMyInfoResponse((MyInfoReceivedEvent) params[0]); + return null; + } + + @Override + protected void onPostExecute(Void o) { + + if(LoginFragment.this.getActivity() == null) return; + + PonilaAccountManager.getInstance().initUserTag(); + + if(isSignInWithGoogle) + PonilaAccountManager.getInstance().setGoogle(); + + dismissProgressDialog(); + if(firstLoginDoneByGoogle){ + PageChanger.goToSelectInterest(LoginFragment.this.getContext(), true); + }else { + PageChanger.goToDashboard(LoginFragment.this.getContext()); + } + getActivity().finish(); // one must not be able to navigate back to login + } + + + }.execute(event); + + + } + + SmsReceiver smsReceiver = new SmsReceiver(); + + @Override + public void onStart() { + super.onStart(); + // TODO: listen for sms delivery + getActivity().registerReceiver(smsReceiver, new IntentFilter("android.provider.Telephony.SMS_RECEIVED")); + + PonilaAccountManager.getInstance().initGoogleAPIClient(getActivity(), this); + PonilaAccountManager.getInstance().connectGoogleApiClient(); + } + + @Override + public void onStop() { + super.onStop(); + // TODO: unregister receiver. but I don't know if it's correct. may be we should listen + // in all application life cycle + getActivity().unregisterReceiver(smsReceiver); + + PonilaAccountManager.getInstance().stopAutoManageGoogleApiClient(getActivity()); + PonilaAccountManager.getInstance().disconnectGoogleApiClient(); + } + + /* @Override + public void onValidationSucceeded() { + NavigationUtils.goToActivity(MainActivity.class, getActivity()); + } + + @Override + public void onValidationFailed(List errors) { + Logger.toast(getString(R.string.login_faild)); + + }*/ + + @OnClick(R.id.toggle_visibility) + public void onChangeVisibility() { + passwordVisible ^= true; // toggle + + int start = password.getSelectionStart(); + int end = password.getSelectionEnd(); + password.setInputType(passwordVisible ? + InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : + InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); + CalligraphyUtils.applyFontToTextView(getActivity(), password, CalligraphyConfig.get().getFontPath()); + password.setSelection(start, end); + + toggleVisibilityBtn.setImageResource(passwordVisible ? + R.drawable.toggle_visible_nobel_32dp : + R.drawable.toggle_invisible_nobel_32dp); + } + + /*---------*/ + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + String uniqueNameOrEmail = username.getText().toString(); + boolean isEmail = Patterns.EMAIL_ADDRESS.matcher(uniqueNameOrEmail).matches(); + if (isEmail) { + PoinilaNetService.login(null, uniqueNameOrEmail, password.getText().toString()); + } else { + PoinilaNetService.login(uniqueNameOrEmail, null, password.getText().toString()); + } + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + //----------------- + + @OnClick(R.id.button_login) + public void onLogin() { + if (!ConnectionUitls.isNetworkOnline()) { + Logger.toast(R.string.warning_connect_to_network); + return; + } + showProgressDialog(); + initData(); + } + + @OnClick(R.id.button_signup) + public void onSignUp() { + ((SignUpLoginActivity) getActivity()).goToVerificationRequest(); + } + + @OnClick(R.id.button_guest_login) + public void onGuestLogin() { + DataRepository.setUserAsAnonymous(true); + PageChanger.goToDashboard(getActivity()); + } + + @OnClick(R.id.google_sign_in_btn) + public void gLogin(){ + PonilaAccountManager.getInstance().signInWithGoogleAPI(this); + showProgressDialog(); + } + + @Override + public void onConnectionFailed(ConnectionResult connectionResult) { + + dismissProgressDialog(); + Logger.toastError(R.string.error_google_connection); + + } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + + + // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); + if(data != null && resultCode == Activity.RESULT_OK){ + PonilaAccountManager.getInstance().getGoogleSignInAccount(data, this); + }else + Logger.toastError(R.string.error_google_sign_in); + + } + + @Override + public void onSuccessGoogleSignIn(GoogleSignInAccount acct) { +// Log.i(getClass().getName(), "getIdToken = " + acct.getIdToken()); + PoinilaPreferences.putGoogleToken(acct.getIdToken()); + PoinilaNetService.loginByGoogle(acct.getIdToken()); + } + + @Override + public void onFailureGoogleSignIn(GoogleSignInAccount acct) { + dismissProgressDialog(); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/MemberListFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/MemberListFragment.java new file mode 100755 index 0000000..a846cb2 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/MemberListFragment.java @@ -0,0 +1,201 @@ +package com.shaya.poinila.android.presentation.view.fragments; + + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.FriendCirclesUpdated; +import com.shaya.poinila.android.presentation.uievent.FriendshipClickEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PositiveButtonClickedUIEvent; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.viewholder.MemberViewHolder; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.MembersReceivedEvent; +import data.model.FriendshipStatus; +import data.model.Member; +import manager.DBFacade; +import manager.DataRepository; + +import static android.support.v7.widget.LinearLayoutManager.VERTICAL; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ENTITY; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ITEM_COUNT; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_REQUEST_ID; + +public class MemberListFragment extends ListBusFragment { + + private int requestID; + private String mainActorID; + @Nullable @Bind(R.id.item_count) TextView mItemCountView; + + public MemberListFragment() { + // Required empty public constructor + } + + + @Override + public int getLayoutID() { + if (requestID == ConstantsUtils.REQUEST_POST_LIKERS) + return R.layout.fragment_favorites; + return R.layout.recycler_view_full; + } + + + @Override + protected void initUI() { + super.initUI(); + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setAdapter(getRecyclerViewAdapter()). + setLinearLayoutManager(VERTICAL). + bindViewToAdapter(); + //mRecyclerView.setHasFixedSize(true); + + switch (requestID){ + case ConstantsUtils.REQUEST_MEMBER_FOLLOWERS: + getActivity().setTitle(R.string.title_activity_member_followers); + break; + case ConstantsUtils.REQUEST_MEMBER_FRIENDS: + getActivity().setTitle(R.string.title_activity_member_friends); + break; + case ConstantsUtils.REQUEST_POST_LIKERS: + setText(mItemCountView, getString(R.string.favorites_formatted, + getActivity().getIntent().getIntExtra(KEY_ITEM_COUNT, 0))); + getActivity().setTitle(R.string.title_activity_post_likers); + break; + } + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.linearListEndDetectorListener(getRecyclerViewAdapter(), this); + } + + @Subscribe public void onGotoProfile(MemberClickedUIEvent event){ + Member member = getRecyclerViewAdapter().getItem(event.adapterPosition); + PageChanger.goToProfile(getActivity(), member); + } + + @Subscribe public void onShowFriendShipDialog(FriendshipClickEvent event){ + if (DataRepository.isUserAnonymous()){ + Logger.toastError(R.string.error_guest_action); + return; + } + + Member member = getRecyclerViewAdapter().getItem(event.adapterPosition); + DialogLauncher.launchFriendshipDialog(member, getFragmentManager()); + clickedItemPosition = event.adapterPosition; + } + + @Subscribe public void onMembersReceived(MembersReceivedEvent event){ + onGettingInitDataResponse(event); + onGettingListDataResponse(event, event.bookmark); + } + + @Subscribe + public void onPositiveDialogButton(PositiveButtonClickedUIEvent event) { + Member member = getRecyclerViewAdapter().getItem(clickedItemPosition); + switch (member.friendshipStatus){ + case NotFriend: + case WaitingForAction: // sending request + PoinilaNetService.friendRequest(member.getId(), DBFacade.getDefaultCircle().id); + member.friendshipStatus = FriendshipStatus.Pending; + break; + // we handle this case in EditFriendshipDialog + /*case IsFriend: // removing friend + PoinilaNetService.removeFriend(member.getId()); + member.friendshipStatus = FriendshipStatus.NotFriend; + break;*/ + case Pending: // no action yet + break; + } + getRecyclerViewAdapter().notifyItemChanged(clickedItemPosition); + } + + /*@Subscribe public void onNeutralDialogButton(NeutralDialogButtonClickedUIEvent event){ + DialogLauncher.launchChangeFriendCircle( + getChildFragmentManager(), + getRecyclerViewAdapter().getItem(clickedItemPosition)); + }*/ + + public static android.support.v4.app.Fragment newInstance(String id, int requestID) { + MemberListFragment f = new MemberListFragment(); + Bundle b = new Bundle(); + b.putString(KEY_ENTITY, id); + b.putInt(KEY_REQUEST_ID, requestID); + f.setArguments(b); + return f; + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mainActorID = getArguments().getString(KEY_ENTITY); + requestID = getArguments().getInt(KEY_REQUEST_ID); + } + + @Subscribe public void onFriendCirclesUpdated(FriendCirclesUpdated event){ + int index = getRecyclerViewAdapter().getItems().indexOf(event.member); + if (index < 0) return; + getRecyclerViewAdapter().getItem(index).circle_ids = event.selectedCirclesIDs; + } +/*---------------*/ + @Override + public void requestForMoreData() { + switch (requestID){ + case ConstantsUtils.REQUEST_MEMBER_FOLLOWERS: + PoinilaNetService.getMemberFollowers(mainActorID, bookmark); + break; + case ConstantsUtils.REQUEST_MEMBER_FRIENDS: + PoinilaNetService.getMemberFriends(mainActorID, bookmark); + break; + case ConstantsUtils.REQUEST_POST_LIKERS: + PoinilaNetService.getPostLikers(mainActorID, bookmark); + break; + } + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return new RecyclerViewAdapter(getActivity(), R.layout.member_inlist) { + @Override + protected MemberViewHolder getProperViewHolder(View v, int viewType) { + return new MemberViewHolder(v, BaseEvent.ReceiverName.MemberListFragment); + } + }; + } + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + requestForMoreData(); + } + + @Override + public boolean mustShowProgressView() { + return true; + } + + @Override + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + super.onSuccessfulListData(baseEvent, newBookmark); + getRecyclerViewAdapter().addItems(((MembersReceivedEvent) baseEvent).members); + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/MyFollowedCollectionsFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/MyFollowedCollectionsFragment.java new file mode 100755 index 0000000..21fb350 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/MyFollowedCollectionsFragment.java @@ -0,0 +1,328 @@ +package com.shaya.poinila.android.presentation.view.fragments; + + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.os.Handler; +import android.preference.PreferenceManager; +import android.support.annotation.NonNull; +import android.support.v7.app.AlertDialog; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageButton; +import android.widget.TextView; + +import com.getbase.floatingactionbutton.FloatingActionButton; +import com.getbase.floatingactionbutton.FloatingActionsMenu; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.CollectionClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.FramesUpdatedUIEvent; +import com.shaya.poinila.android.presentation.uievent.HelpMyFollowedCollectionListFragment; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.OnFrameClickedUIEvent; +import com.shaya.poinila.android.presentation.view.dialog.NewCollectionDialog; +import com.shaya.poinila.android.presentation.view.help.Help; +import com.shaya.poinila.android.presentation.viewholder.BaseViewHolder; +import com.shaya.poinila.android.presentation.viewholder.MyFollowedCollectionViewHolder; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.squareup.otto.Subscribe; + +import java.util.List; + +import butterknife.Bind; +import butterknife.OnClick; +import data.event.BaseEvent; +import data.event.CollectionsReceivedEvent; +import data.model.Collection; +import data.model.Frame; +import data.model.Member; +import manager.DBFacade; +import manager.DataRepository; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_COLLECTIONS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_FOLLOWED_COLLECTIONS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_POST_REPOSTING_COLLECTIONS; + +// TODO: public class MyFollowedCollectionsFragment extends BusFragment { +public class MyFollowedCollectionsFragment extends CollectionListFragment{ + + //private MySpinnerAdapter mSpinnerAdapter; + //private ArrayAdapter mSpinnerAdapter; + //public @Bind(R.actorID.select_frame) Spinner mFrameSpinner; + private String selectedFrameID = null; + private List frames; + @Bind(R.id.select_frame_container) View selectFrameContainer; + @Bind(R.id.select_frame_button) ImageButton selectFrameBtn; + @Bind(R.id.select_frame_text) TextView selectFrameText; + + public MyFollowedCollectionsFragment() { + // Required empty public constructor + } + + public static MyFollowedCollectionsFragment newInstance() { + return new MyFollowedCollectionsFragment(); + } + + @Subscribe + public void onFramesUpdated(FramesUpdatedUIEvent event){ + updateFrames(event.frames); + } + + + public void updateFrames(List frames){ + if (frames != null && !frames.isEmpty()){ + this.frames.addAll(frames); + } + } + + @OnClick({R.id.select_frame_button, R.id.select_frame_text}) public void onSelectingFrame(){ + if (frames == null || frames.isEmpty()) + Logger.toast(R.string.error_no_frame_exist); + else + FramesDialog.newInstance(frames).show(getFragmentManager(), null); + } + + @Subscribe public void onFrameSelected(OnFrameClickedUIEvent event){ + selectedFrameID = event.frame.id == -1 ? null : event.frame.getId(); + setText(selectFrameText, event.frame.id == -1 ? getString(R.string.select_frame) : event.frame.name); + getRecyclerViewAdapter().clear(); + bookmark = null; + initDataResponseReceived = false; + initData(); + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.gridListEndDetectionListener(getRecyclerViewAdapter(), this); + } + + @Override + public void onStart() { + super.onStart(); + if (frames == null) { + frames = DBFacade.getMyFrames(); + frames.add(0, new Frame(-1, getString(R.string.default_no_frame))); + } + } + + @Override + public int getLayoutID() { + return R.layout.fragment_my_followed_collections; + } + + + @Override + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + super.onSuccessfulListData(baseEvent, newBookmark); + + } + + @Override + protected void initUI() { + + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setGridLayoutManager(GridLayoutManager.VERTICAL, + getResources().getInteger(R.integer.column_count), new GridLayoutManager.SpanSizeLookup() { + @Override + public int getSpanSize(int position) { + if(getRecyclerViewAdapter().getItemViewType(position) == RecyclerViewAdapter.VIEW_TYPE_LOAD_PROGRESS ){ + return getResources().getInteger(R.integer.column_count); + } + return 1; + } + }). + //setAdapter(MY_FOLLOWING_COLLECTION_ADAPTER, getActivity()). + setAdapter(getRecyclerViewAdapter()). + bindViewToAdapter(); + SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); + Boolean showFrame = sharedPref.getBoolean(getString(R.string.pref_show_select_frame_key), false); + if (!showFrame) + selectFrameContainer.setVisibility(View.GONE); + + + mRecyclerView.addOnScrollListener(getRecyclerViewListener()); + //frames = new ArrayList<>(); + + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return new RecyclerViewAdapter(getActivity(), R.layout.collection_simple) { + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + if(viewType == RecyclerViewAdapter.VIEW_TYPE_LOAD_PROGRESS ){ + return new BaseViewHolder.EmptyViewHolder(v); + } + return new MyFollowedCollectionViewHolder(v, BaseEvent.ReceiverName.MyFollowedCollections); + } + }; + } + + @Override + @Subscribe + public void onCollectionsReceived(CollectionsReceivedEvent event) { + super.onCollectionsReceived(event); + + + } + + @Subscribe + public void answerAvailable(HelpMyFollowedCollectionListFragment event) { + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + + if(!PoinilaPreferences.getHelpStatus(getClass().getName())){ + showHelp(); + PoinilaPreferences.putHelpStatus(getClass().getName(), true); + } + + } + }, 500); + + } + + @Override + protected boolean isListDataResponseValid(BaseEvent baseEvent, String responseBookmark) { + CollectionsReceivedEvent event = ((CollectionsReceivedEvent) baseEvent); + boolean condition = event.receiverName == BaseEvent.ReceiverName.MyFollowedCollections; + return super.isListDataResponseValid(baseEvent, responseBookmark) && condition; + + } + + @Override + protected boolean isInitDataResponseValid(BaseEvent event) { + return super.isInitDataResponseValid(event) && event.receiverName == BaseEvent.ReceiverName.MyFollowedCollections; + } + + @Override + public void requestForMoreData() { + + DataRepository.getInstance().getMyFollowedCollections(selectedFrameID, bookmark); + } + + @Subscribe public void onProfilePicClickedEvent(MemberClickedUIEvent event){ + if (event.receiverName != BaseEvent.ReceiverName.MyFollowedCollections) + return; + Member member = ((Collection)getRecyclerViewAdapter().getItem(event.adapterPosition)).owner; + PageChanger.goToProfile(getActivity(), member); + } + + @Subscribe public void onCollectionClicked(CollectionClickedUIEvent event){ + if (event.receiverName != BaseEvent.ReceiverName.MyFollowedCollections) + return; + Collection collection = (Collection)getRecyclerViewAdapter().getItem(event.adapterPosition); + PageChanger.goToCollection(getActivity(), collection); + } + + + public void showHelp() { + if(getRecyclerViewAdapter().getItemCount() > 0 && getRecyclerViewAdapter().getItem(0) instanceof Collection){ + Help.getInstance().showFollowedCollectionHelp(getActivity(), mRecyclerView.getLayoutManager().findViewByPosition(0)); + viewedHelp = true; + } + } + + + /*-------------------------------------*/ + + public static class MySpinnerAdapter extends BaseAdapter{ + + List items; + private Context context; + + public MySpinnerAdapter(Context context, List frames) { + this.context = context; + items = frames; + } + + public void addItems(List frames){ + /*for (Frame frame : circles) + items.add(frame);*/ + items.addAll(frames); + } + + @Override + public int getCount() { + return items.size(); + } + + @Override + public Object getItem(int position) { + return items.get(position); + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + View spinView; + if( convertView == null ){ + LayoutInflater inflater = LayoutInflater.from(context); + spinView = inflater.inflate(R.layout.spinner_item, parent, false); + } else { + spinView = convertView; + } + ((TextView) spinView.findViewById(R.id.spinner_row_title)).setText(((Frame)getItem(position)).name); + return spinView; + } + + @Override + public View getDropDownView(int position, View convertView, ViewGroup parent) { + View spinView; + if( convertView == null ){ + LayoutInflater inflater = LayoutInflater.from(context); + spinView = inflater.inflate(R.layout.spinner_item, parent, false); + } else { + spinView = convertView; + } + ((TextView) spinView.findViewById(R.id.spinner_row_title)).setText(((Frame)getItem(position)).name); + return spinView; + } + } + + + public static class FramesDialog extends android.support.v4.app.DialogFragment { + + List frames; + + public static FramesDialog newInstance(List frames){ + FramesDialog d = new FramesDialog(); + // TODO: bullshit! + d.frames = frames; + return d; + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + return builder.setTitle(R.string.frames).setAdapter(new MySpinnerAdapter(getActivity(), frames), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + BusProvider.getBus().post(new OnFrameClickedUIEvent(frames.get(which))); + } + }).create(); + } + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/MyProfileFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/MyProfileFragment.java new file mode 100755 index 0000000..cd58d5f --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/MyProfileFragment.java @@ -0,0 +1,544 @@ +package com.shaya.poinila.android.presentation.view.fragments; + + +import android.Manifest; +import android.content.Intent; +import android.os.Handler; +import android.support.annotation.NonNull; +import android.support.v13.app.FragmentCompat; +import android.support.v4.widget.Space; +import android.support.v7.widget.CardView; +import android.text.TextUtils; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.getbase.floatingactionbutton.FloatingActionButton; +import com.getbase.floatingactionbutton.FloatingActionsMenu; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.ExploreTagEvent; +import com.shaya.poinila.android.presentation.uievent.FABMenuCollapseUIEvent; +import com.shaya.poinila.android.presentation.uievent.FABMenuExpandUIEvent; +import com.shaya.poinila.android.presentation.uievent.HelpMyProfileFragment; +import com.shaya.poinila.android.presentation.uievent.NewWebsitePostEvent; +import com.shaya.poinila.android.presentation.uievent.ShowVerifySnackbarEvent; +import com.shaya.poinila.android.presentation.view.ViewInflater; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.activity.BaseActivity; +import com.shaya.poinila.android.presentation.view.activity.CollectionListActivity; +import com.shaya.poinila.android.presentation.view.activity.CropImageActivity; +import com.shaya.poinila.android.presentation.view.activity.EditInterestsActivity; +import com.shaya.poinila.android.presentation.view.activity.MemberListActivity; +import com.shaya.poinila.android.presentation.view.activity.PostListActivity; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity; +import com.shaya.poinila.android.presentation.view.costom_view.ActivityResultPermissionDelegate.ImagePickerResultPermissionDelegate; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.view.dialog.NewCollectionDialog; +import com.shaya.poinila.android.presentation.view.dialog.PoinilaInviteDialog; +import com.shaya.poinila.android.presentation.view.help.Help; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.NavigationUtils; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.util.ResourceUtils; +import com.shaya.poinila.android.util.StorageUtils; +import com.shaya.poinila.android.util.StringUtils; +import com.squareup.otto.Subscribe; + + +import org.apmem.tools.layouts.FlowLayout; + +import java.util.List; + +import butterknife.Bind; +import butterknife.ButterKnife; +import butterknife.OnClick; +import data.event.BaseEvent; +import data.event.InviteUsedEvent; +import data.event.MemberReceivedEvent; +import data.event.ProfileDirtyEvent; +import data.model.Collection; +import data.model.ImageUrls; +import data.model.Member; +import manager.DBFacade; +import manager.DataRepository; + +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setFont; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ENTITY; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_IMAGE_ADDRESS; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_REQUEST_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_COLLECTIONS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_FAVED_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_FOLLOWED_COLLECTIONS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_FOLLOWERS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_FRIENDS; + +/** + * A simple {@link android.app.Fragment} subclass. + * Use the {@link MyProfileFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class MyProfileFragment extends BusFragment implements View.OnClickListener, FragmentCompat.OnRequestPermissionsResultCallback{ + + @Bind(R.id.fab_menu) + FloatingActionsMenu fabMenu; + @Bind(R.id.fab_add_post) + FloatingActionButton addPost; + @Bind(R.id.fab_add_collection) FloatingActionButton addCollection; + @Bind(R.id.fab_add_post_from_site) FloatingActionButton addFromUrl; + @Bind(R.id.fab_invite) FloatingActionButton inviteToPoinila; + + /*-------Related to general member actions-------*/ + @Bind(R.id.followers) ViewGroup followersStatViewGroup; + @Bind(R.id.favorited) ViewGroup favoritedStatViewGroup; + @Bind(R.id.posts) ViewGroup postsStatViewGroup; + @Bind(R.id.friends) ViewGroup friendsStatViewGroup; + @Bind(R.id.owning_collections_container) View owningCollections; + @Bind(R.id.following_collections_container) View followingCollections; + @Bind(R.id.profile_general_info) View profileGeneralInfo; + @Bind(R.id.interest_container) View interestsContainer; + @Bind(R.id.blog_info) View blogInfo; + @Bind(R.id.about_me) TextView aboutMe; + + private ImageView settingIcon; + private Member member; + private ImageView mAvatarImageView; + private ImagePickerResultPermissionDelegate resultHandlerIMPL; + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * @return A new instance of fragment MyProfileFragment. + */ + public static MyProfileFragment newInstance() { + MyProfileFragment fragment = new MyProfileFragment(); + return fragment; + } + + public MyProfileFragment() { + // Required empty public constructor + } + + @OnClick(R.id.followers) public void onShowFollowers(){ + NavigationUtils.goToActivity(MemberListActivity.class, getActivity(), + KEY_ENTITY, member.getId(), KEY_REQUEST_ID, REQUEST_MEMBER_FOLLOWERS); + } + + @OnClick(R.id.friends) public void onShowFriends(){ + NavigationUtils.goToActivity(MemberListActivity.class, getActivity(), + KEY_ENTITY, member.getId(), KEY_REQUEST_ID, REQUEST_MEMBER_FRIENDS); + } + + @OnClick(R.id.favorited) public void onShowFavorited(){ + NavigationUtils.goToActivity(PostListActivity.class, getActivity(), + KEY_ENTITY, member.getId(), KEY_REQUEST_ID, REQUEST_MEMBER_FAVED_POSTS); + } + + @OnClick(R.id.posts) public void onShowPosts(){ + PageChanger.goToMemberPosts(getActivity(), member.getId(), member.fullName); + } + + @OnClick(R.id.owning_collections_container) public void onShowOwniningCollections(){ + NavigationUtils.goToActivity(CollectionListActivity.class, getActivity(), + KEY_ENTITY, member.getId(), KEY_REQUEST_ID, REQUEST_MEMBER_COLLECTIONS); + } + + @OnClick(R.id.following_collections_container) public void onShowFollowingCollections(){ + NavigationUtils.goToActivity(CollectionListActivity.class, getActivity(), + KEY_ENTITY, member.getId(), KEY_REQUEST_ID, REQUEST_MEMBER_FOLLOWED_COLLECTIONS); + } + + // for my profile + @OnClick(R.id.interest_container) public void onShowInterests(){ + NavigationUtils.goToActivity(EditInterestsActivity.class, getActivity(), + KEY_ENTITY, member.getId()); + } + + + @OnClick(R.id.fab_add_post) public void onAddPost(){ + fabMenu.collapse(); + //DialogLauncher.launchNewPost(getChildFragmentManager(), null); + PageChanger.goToNewPost(getFragmentManager(), null); + } + + @OnClick(R.id.fab_add_post_from_site) public void onAddPostFromUrl(){ + // todo: dialog, its layout and how to get a url imagesUrls; + fabMenu.collapse(); +// DialogLauncher.launchNewWebsitePost(getFragmentManager()); + PageChanger.goToNewWebSitePost(getActivity(), null); + } + + @Subscribe public void onNewUrlImagePostEvent(NewWebsitePostEvent event){ + //DialogLauncher.launchNewPost(getChildFragmentManager(), event.suggestedPost); + PageChanger.goToNewPost(getFragmentManager(), event.suggestedPost); + } + + @OnClick(R.id.fab_add_collection) public void onAddCollection(){ + fabMenu.collapse(); + new NewCollectionDialog().show(getFragmentManager(), null); + //new NewCollectionDialog().show(getChildFragmentManager(), TAG_NEW_COLLECTION_DIALOG); + } + + @OnClick(R.id.fab_invite) public void onInviteToPoinila(){ + fabMenu.collapse(); + new PoinilaInviteDialog().show(getFragmentManager(), null); + } + + @Subscribe + public void onInviteUsedEvent(InviteUsedEvent event){ + updateInviteFAB(); + } + + private void updateInviteFAB() { + if (DataRepository.getInstance().getRemainedInvites() <= 0) + inviteToPoinila.setVisibility(View.GONE); + else + inviteToPoinila.setTitle(getString(R.string.invite_to_poinila_formatted, + DataRepository.getInstance().getRemainedInvites())); + } + + @Override + protected void initUI() { + //TODO: what the? + resultHandlerIMPL = new ImagePickerResultPermissionDelegate(){ + @Override + public void handleValidResults(int requestCode, Intent data) { + super.handleValidResults(requestCode, data); + + if (TextUtils.isEmpty(this.imageAddress)) + return; + Intent intent = NavigationUtils.makeNavigationIntent(CropImageActivity.class, getActivity()); + intent.putExtra(KEY_IMAGE_ADDRESS, this.imageAddress); + startActivity(intent); + } + + @Override + public void handlePermissionGranted() { + startForResult(MyProfileFragment.this, + StorageUtils.dispatchCapturePhotoIntent(), + ConstantsUtils.REQUEST_CODE_TAKE_PHOTO); + } + }; + + settingIcon = ButterKnife.findById(profileGeneralInfo, R.id.icon); + settingIcon.setImageResource(R.drawable.action_settings); + settingIcon.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onSetting(v); + } + }); + mAvatarImageView = (ImageView) profileGeneralInfo.findViewById(R.id.image); + + //setRemainedInvites(new RemainedInvitesEvent(DataRepository.getInstance().getRemainedInvites())); + updateInviteFAB(); + fabMenu.setOnFloatingActionsMenuUpdateListener(new FloatingActionsMenu.OnFloatingActionsMenuUpdateListener() { + @Override + public void onMenuExpanded() { + BusProvider.getBus().post(new FABMenuExpandUIEvent(BaseEvent.ReceiverName.MyProfileFragment)); + } + + @Override + public void onMenuCollapsed() { + BusProvider.getBus().post(new FABMenuCollapseUIEvent(BaseEvent.ReceiverName.MyProfileFragment)); + } + }); + generalProfileInit(); + + + } + + public void onSetting(View v){ + NavigationUtils.goToActivity(SettingActivity.class, getActivity()); + } + + @Override + public int getLayoutID() { + return R.layout.fragment_profile; + } + + @Override + public void onStart() { + // TODO: use better approaches later + initDataResponseReceived = false; // this causes parent initData to be called. + super.onStart(); + + if (member == null) + member = DBFacade.getCachedMyInfo(); + if (member != null) { // due to crash (LG Optimus 1.1.9.2) https://play.google.com/apps/publish/?dev_acc=18170414618191752575#ErrorClusterDetailsPlace:p=com.shaya.poinila&et=CRASH&lr=LAST_7_DAYS&ecn=java.lang.NullPointerException&tf=MyProfileFragment.java&tc=com.shaya.poinila.android.presentation.view.fragments.MyProfileFragment&tm=fill&nid&an&c&s=new_status_desc + // however I dont know why this could happen + fill(member); + } + } + + /*-------Related to general member actions-------*/ + + @Subscribe public void onProfileReceived(MemberReceivedEvent event) { + onGettingInitDataResponse(event); + } + + @Override + public void onSuccessfulInitData(BaseEvent baseEvent) { + super.onSuccessfulInitData(baseEvent); + this.member = ((MemberReceivedEvent)baseEvent).member; + fill(member); + } + + private void fill(final Member member) { + // TODO: fill page with actual posts + setImage(mAvatarImageView, member.imageUrls, + ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.BIG); + mAvatarImageView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DialogLauncher.launchSelectImage(getActivity().getSupportFragmentManager(), member, MyProfileFragment.this); +// inflateAvatarMenu(v); + } + }); + + setText((TextView) profileGeneralInfo.findViewById(R.id.title), member.fullName); + setText((TextView) profileGeneralInfo.findViewById(R.id.subtitle), member.uniqueName); + + setFont((TextView) profileGeneralInfo.findViewById(R.id.title), getString(R.string.default_bold_font_path)); + setFont((TextView) profileGeneralInfo.findViewById(R.id.subtitle), getString(R.string.default_font_path)); + + setText(aboutMe, member.aboutMe); + setFont(aboutMe, getString(R.string.default_font_path)); + + if (TextUtils.isEmpty(member.url)) + blogInfo.setVisibility(View.GONE); + else { + blogInfo.setVisibility(View.VISIBLE); +// setText((TextView) blogInfo.findViewById(R.id.title), member.urlName); + setText((TextView) blogInfo.findViewById(R.id.url),member.url); + setFont((TextView) blogInfo.findViewById(R.id.url), getString(R.string.default_bold_font_path)); + setFont((TextView) blogInfo.findViewById(R.id.url_label), getString(R.string.default_bold_font_path)); + blogInfo.setOnClickListener(new View.OnClickListener() { + @Override + + public void onClick(View v) { + String url = member.url.toLowerCase().startsWith("http://") ? + member.url.toLowerCase() : "http://" + member.url.toLowerCase(); + PageChanger.goToInlineBrowser(getActivity(), url, null, null); + } + }); + } + + setText((TextView)followersStatViewGroup.findViewById(R.id.top_text) ,member.followerCount); + setText((TextView) favoritedStatViewGroup.findViewById(R.id.top_text), member.likesCount); + setText((TextView) postsStatViewGroup.findViewById(R.id.top_text), member.postsCount); + setText((TextView) friendsStatViewGroup.findViewById(R.id.top_text), member.friendsCount); + + setFont((TextView) followersStatViewGroup.findViewById(R.id.top_text), getString(R.string.default_bold_font_path)); + setFont((TextView) favoritedStatViewGroup.findViewById(R.id.top_text), getString(R.string.default_bold_font_path)); + setFont((TextView) postsStatViewGroup.findViewById(R.id.top_text), getString(R.string.default_bold_font_path)); + setFont((TextView) friendsStatViewGroup.findViewById(R.id.top_text), getString(R.string.default_bold_font_path)); + + setFont((TextView) followersStatViewGroup.findViewById(R.id.bottom_text), getString(R.string.default_bold_font_path)); + setFont((TextView) favoritedStatViewGroup.findViewById(R.id.bottom_text), getString(R.string.default_bold_font_path)); + setFont((TextView) postsStatViewGroup.findViewById(R.id.bottom_text), getString(R.string.default_bold_font_path)); + setFont((TextView) friendsStatViewGroup.findViewById(R.id.bottom_text), getString(R.string.default_bold_font_path)); + + setText((TextView) owningCollections.findViewById(R.id.card_title), + getString(R.string.member_collections_formatted, member.fullName)); + + setFont((TextView) owningCollections.findViewById(R.id.card_title), + getString(R.string.default_bold_font_path)); + + /*-----OWNING COLLECTIONS-------*/ + fillCollectionsSummery(owningCollections, member.owningCollections, member.owningCollectionsCount); + /*----FOLLOWING COLLECTIONS-----*/ + fillCollectionsSummery(followingCollections, member.followingCollections, member.followingCollectionsCount); + /*-------Interests--------*/ + if (member.interests != null && !member.interests.isEmpty()) { + FlowLayout flowLayout = ButterKnife.findById(interestsContainer, R.id.tags_container); + flowLayout.removeAllViews(); + for (int i = 0; i < 5 && i < member.interests.size(); i++) { + ViewInflater.addTagToContainer(flowLayout, member.interests.get(i)); + } + } + } + + private void fillCollectionsSummery(View collectionsViewContainer, + List collections, int itemCount) { + LinearLayout ll = (LinearLayout) collectionsViewContainer.findViewById(R.id.cards_container); + if (collections == null || collections.isEmpty()) { + ll.setVisibility(View.GONE); + return; + } + ll.removeAllViews(); + ll.setVisibility(View.VISIBLE); + int collectionsCount = getResources().getInteger(R.integer.profile_page_collection_summary_count); + for (int i = 0; i < collectionsCount && i < collections.size(); i++) { + final Collection collection = collections.get(i); + CardView card = (CardView)ViewInflater.inflateImageCaption(ll, collection.name, collection.coverImageUrls); + card.findViewById(R.id.image).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onCollectionClicked(collection); + } + }); + ll.addView(card, new LinearLayout.LayoutParams(0, WRAP_CONTENT, 1)); + if (i != collectionsCount - 1) { + Space margin = new Space(getActivity()); + ll.addView(margin, new LinearLayout.LayoutParams( + (int) ResourceUtils.getDimen(R.dimen.margin_lvl1), 1)); + } + } + TextView itemCountView = ButterKnife.findById(collectionsViewContainer, R.id.item_count); + itemCountView.setVisibility(View.VISIBLE); + ViewUtils.setFont(itemCountView, getString(R.string.default_bold_font_path)); + ViewUtils.setText(itemCountView, StringUtils.getStringWithPersianNumber("(%d)", itemCount)); + + } + + private void onCollectionClicked(final Collection collection) { + PageChanger.goToCollection(getActivity(), collection); + } + + private void generalProfileInit() { + ((TextView)followersStatViewGroup.findViewById(R.id.bottom_text)) + .setText(getString(R.string.follower)); + ((TextView)favoritedStatViewGroup.findViewById(R.id.bottom_text)) + .setText(getString(R.string.favorited)); + ((TextView)postsStatViewGroup.findViewById(R.id.bottom_text)) + .setText(getString(R.string.post)); + ((TextView)friendsStatViewGroup.findViewById(R.id.bottom_text)) + .setText(getString(R.string.friend)); + + + ((TextView)followingCollections.findViewById(R.id.card_title)). + setText(getString(R.string.follows)); + + ((TextView)interestsContainer.findViewById(R.id.card_title)). + setText(getString(R.string.interest)); + + setFont((TextView) followingCollections.findViewById(R.id.card_title), getString(R.string.default_bold_font_path)); + setFont((TextView)interestsContainer.findViewById(R.id.card_title), getString(R.string.default_bold_font_path)); + // TODO: member ro chejuri avval set konim? + } + +// private void inflateAvatarMenu(View v) { +// popupMenu = new PopupMenu(getActivity(), v); +// popupMenu.setOnMenuItemClickListener(MyProfileFragment.this); +// MenuInflater inflater = popupMenu.getMenuInflater(); +// inflater.inflate(R.menu.menu_popup_profile_picture, popupMenu.getMenu()); +// if (member.imageUrls == null || !member.imageUrls.isNotEmpty()) +// popupMenu.getMenu().removeItem(R.id.view_photo); +// popupMenu.show(); +// } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + resultHandlerIMPL.onActivityResult(requestCode, resultCode, data); + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + + resultHandlerIMPL.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + + @Subscribe public void onProfileChanged(ProfileDirtyEvent event) { + DataRepository.getInstance().getMyProfile(); + } + + // If root layout be LinearLayout, below approach is useless. + @Subscribe + public void onFABMenuExpanded(FABMenuExpandUIEvent event){ + View maskView = LayoutInflater.from(getActivity()).inflate(R.layout.white_transarent_mask, rootView, false); + maskView.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + fabMenu.collapse(); + return true; + } + }); + // adding to index 1, after profile layout and before FAB menu + rootView.addView(maskView, 1); + } + + @Subscribe public void onFABMenuCollapsed(FABMenuCollapseUIEvent event){ + rootView.removeView(rootView.findViewById(R.id.white_transparent_mask)); + } + + + @Subscribe public void onExploreTag(ExploreTagEvent event){ + PageChanger.goToExplore(getActivity(), event.text); + } + /*------------------------*/ + + + @Subscribe + public void answerAvailable(HelpMyProfileFragment event) { + + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + + if(!PoinilaPreferences.getHelpStatus(getClass().getName())){ + showHelp(); + PoinilaPreferences.putHelpStatus(getClass().getName(), true); + } + + } + }, 500); + + + + } + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + DataRepository.getInstance().getMyProfile(); //ConnectionUitls.isNetworkOnline() + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + public void showHelp() { + if(this.isVisible()){ + Help.getInstance().showProfileHelp(getActivity(), fabMenu); + viewedHelp = true; + } + } + + @Override + public void onClick(View v) { + switch (v.getId()){ + case R.id.show_profile_image: + PageChanger.goToFullImage(getActivity(), member.imageUrls.properMemberImage(ImageUrls.ImageSize.FULL_SIZE).url); + break; + case R.id.select_image_camera: + resultHandlerIMPL.askForPermission(this, + Manifest.permission.WRITE_EXTERNAL_STORAGE, + BaseActivity.MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE); + break; + case R.id.select_image_gallery: + resultHandlerIMPL.startForResult(this, StorageUtils.dispatchSelectImageIntent(), ConstantsUtils.REQUEST_CODE_PICK_IMAGE); + break; + + } + } + /*-----------------------------*/ +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NewPostFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NewPostFragment.java new file mode 100755 index 0000000..05c1e8d --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NewPostFragment.java @@ -0,0 +1,38 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.view.ViewGroup; + +/** + * Created by hossein on 8/20/16. + */ +public class NewPostFragment extends BusFragment { + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutID() { + return 0; + } + + @Override + protected void initUI() { + + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NewWebSitePostInputURLFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NewWebSitePostInputURLFragment.java new file mode 100755 index 0000000..b6d48a6 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NewWebSitePostInputURLFragment.java @@ -0,0 +1,169 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.net.Uri; +import android.support.design.widget.TextInputEditText; +import android.support.design.widget.TextInputLayout; +import android.util.Patterns; +import android.view.ViewGroup; +import android.widget.ProgressBar; + +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.activity.NewPostActivity; +import com.shaya.poinila.android.presentation.view.costom_view.PonilaChoiceView; +import com.squareup.otto.Subscribe; +import com.squareup.picasso.Picasso; + +import java.util.Arrays; +import java.util.List; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.SuggestedWebpagePostReceived; +import data.model.Image; +import data.model.PostType; +import data.model.SuggestedWebPagePost; + +/** + * Created by iran on 8/15/2016. + */ +public class NewWebSitePostInputURLFragment extends BusFragment implements PonilaChoiceView.OnOptionSelected { + + private static final String KEY_SITE_ADDRESS = "site address"; +// @Bind(R.id.image_radio_btn) +// protected RadioButton image; +// @Bind(R.id.text_radio_btn) +// protected RadioButton text; +// @Bind(R.id.post_type_container) +// RadioGroup postTypeContainer; + + @Bind(R.id.new_web_site_post_options) + PonilaChoiceView ponilaChoiceView; + + @Bind(R.id.url_field) + TextInputEditText urlField; + // @Bind(R.id.recycler_view) +// RecyclerView mRecyclerView; + @Bind(R.id.progress_bar) + ProgressBar progressWheel; + @Bind(R.id.url_textinputlayout) + TextInputLayout urlInputLayout; + RecyclerViewAdapter mRecyclerViewAdapter; + String[] protocols = {"http", "https"}; + List validProtocols = Arrays.asList(protocols); + private String siteAddress; + private PostType postType = PostType.TEXT; + private SuggestedWebPagePost suggestedPost; + + @Override + public int getLayoutID() { + return R.layout.fragment_new_web_site_post_input_url; + } + + @Override + protected void initUI() { + ponilaChoiceView.setOptionsText(R.string.text, R.string.image, R.string.video); + ponilaChoiceView.setOnOptionSelected(this); + + } + + @OnClick(R.id.new_web_site_post_next_btn) + public void nextLevel() { + + setSiteAddress(urlField.getText().toString()); + if (isAddressValid(siteAddress)) { + if (postType.equals(PostType.TEXT)) { + PoinilaNetService.getWebsiteInfo(siteAddress, postType); + showProgressDialog(); + } else { + String siteAddress = urlField.getText().toString(); + ((NewPostActivity) getActivity()).goToSelectMediaFragment(postType, siteAddress); + } + + } + } + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Subscribe + public void onSuggestedWebpagePostReceived(SuggestedWebpagePostReceived event) { + suggestedPost = event.webpagePost; + suggestedPost.siteAddress = this.siteAddress; + dismissProgressDialog(); + PageChanger.goToNewPost(getFragmentManager(), suggestedPost); + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + private boolean isAddressValid(String address) { + String error; + Uri uri = Uri.parse(address); + + if (Patterns.WEB_URL.matcher(uri.toString()).matches()) { // trim is essential. + String protocol = uri.getScheme(); + if (protocol == null) { + protocol = "http"; + setSiteAddress("http://" + address); + } + if (!validProtocols.contains(protocol)) { + error = getString(R.string.wrong_protocol); + } else { + setSiteAddress(new Uri.Builder().scheme(uri.getScheme()). + authority(uri.getAuthority()). + path(uri.getPath()). + query(uri.getQuery()).build().toString()); + urlInputLayout.setErrorEnabled(false); + return true; + } + } else { + error = getString(R.string.error_invalid_url); + } + ViewUtils.setInputError(urlField, error); + return false; + } + + public void setSiteAddress(String siteAddress) { + this.siteAddress = siteAddress; + } + + @Override + public void onFirstOption() { + + postType = PostType.TEXT; + + } + + @Override + public void onSecondOption() { + + postType = PostType.IMAGE; + + } + + @Override + public void onThirdOption() { + + postType = PostType.VIDEO; + + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NewWebSitePostSelectMediaFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NewWebSitePostSelectMediaFragment.java new file mode 100755 index 0000000..97a8af5 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NewWebSitePostSelectMediaFragment.java @@ -0,0 +1,189 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; +import android.util.Log; +import android.view.View; + +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.ImageClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.NewWebsitePostEvent; +import com.shaya.poinila.android.presentation.view.costom_view.AspectRatioImageView; +import com.shaya.poinila.android.presentation.viewholder.SingleImageViewHolder; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.ResourceUtils; +import com.squareup.otto.Subscribe; +import com.squareup.picasso.Picasso; +import com.squareup.picasso.Target; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.SuggestedWebpagePostReceived; +import data.model.Image; +import data.model.PostType; +import data.model.SuggestedWebPagePost; + +/** + * Created by hossein on 8/18/16. + */ +public class NewWebSitePostSelectMediaFragment extends ListBusFragment { + + + private PostType postType; + private List targets; + private String siteAddress; + private SuggestedWebPagePost suggestedPost; + String[] protocols = {"http", "https"}; + List validProtocols = Arrays.asList(protocols); + RecyclerViewAdapter mRecyclerViewAdapter; + + public static NewWebSitePostSelectMediaFragment newInstance(PostType postType, String siteAddress){ + + NewWebSitePostSelectMediaFragment fragment = new NewWebSitePostSelectMediaFragment(); + fragment.postType = postType; + fragment.siteAddress = siteAddress; + + return fragment; + } + + @Override + protected void initUI() { + super.initUI(); + + targets = new ArrayList<>(); + + // TODO: parse url and extract imagesUrls greater than a specific size in each dimension + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setStaggeredLayoutManager(StaggeredGridLayoutManager.VERTICAL, + ResourceUtils.getInteger(R.integer.column_count)). + setAdapter(new RecyclerViewAdapter>(getActivity(), R.layout.single_image_staggered) { + @Override + protected SingleImageViewHolder getProperViewHolder(View v, int viewType) { + return new SingleImageViewHolder(v) { + @Override + public void fill(Image image) { + ((AspectRatioImageView) imageView).setAspectRatio(image.height * 1f / image.width); + imageView.requestLayout(); + Picasso.with(imageView.getContext()).load(image.url).into(imageView); + } + }; + } + }).bindViewToAdapter(); + + mRecyclerViewAdapter = (RecyclerViewAdapter) mRecyclerView.getAdapter(); + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return null; + } + + @Override + public void requestForMoreData() { + //TODO + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return mRecyclerViewAdapter; + } + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + fetchSiteInfo(); + } + + private void fetchSiteInfo() { + targets.clear(); + suggestedPost = null; +// setLoading(new Loading()); + PoinilaNetService.getWebsiteInfo(siteAddress, postType); + } + + @Subscribe + public void urlsReceivedEvent(SuggestedWebpagePostReceived event) { + onGettingInitDataResponse(event); + } + + @Override + public void onSuccessfulInitData(BaseEvent baseEvent) { + super.onSuccessfulInitData(baseEvent); + getRecyclerViewAdapter().clear(); + suggestedPost = ((SuggestedWebpagePostReceived) baseEvent).webpagePost; + suggestedPost.siteAddress = this.siteAddress; + feedback(); + for (final Image image : suggestedPost.images) { + MeasureTarget target = new MeasureTarget(image.url); + targets.add(target); + Picasso.with(getActivity()).load(image.url).into(target); + } + } + + private void feedback() { + // TODO: + if (suggestedPost.images.isEmpty()) { + Logger.toast(R.string.error_no_image_found); + } + if ((suggestedPost.name != null || suggestedPost.summary != null)) { + Logger.toast(R.string.successfully_loaded); + } + } + + @Subscribe + public void onSiteImageClickEvent(ImageClickedUIEvent event) { + suggestedPost.imageAddress = mRecyclerViewAdapter.getItem(event.adapterPosition).url; + BusProvider.getBus().post(new NewWebsitePostEvent(suggestedPost)); + PageChanger.goToNewPost(getFragmentManager(), suggestedPost); + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutID() { + return R.layout.recycler_view_full; + } + + class MeasureTarget implements Target { + private final String address; + + public MeasureTarget(String address) { + this.address = address; + } + + @Override + public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { + if (bitmap.getWidth() > ConstantsUtils.MINIMUM_POST_IMAGE_WIDTH && + bitmap.getHeight() > ConstantsUtils.MINIMUM_POST_IMAGE_HEIGHT) { + getRecyclerViewAdapter().addItem(new Image(address, bitmap.getWidth(), bitmap.getHeight())); + Log.w("poinila_image", String.format("width: %d, height: %d", bitmap.getWidth(), bitmap.getHeight())); + } + } + + @Override + public void onBitmapFailed(Drawable errorDrawable) { + } + + @Override + public void onPrepareLoad(Drawable placeHolderDrawable) { + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NotificationFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NotificationFragment.java new file mode 100755 index 0000000..96e705f --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NotificationFragment.java @@ -0,0 +1,406 @@ +package com.shaya.poinila.android.presentation.view.fragments; + + +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.NotificationAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.NotifActorClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.NotifParticipantClickedUIEvent; +import com.shaya.poinila.android.presentation.view.activity.InvitationNotifListActivity; +import com.shaya.poinila.android.util.NavigationUtils; +import com.squareup.otto.Subscribe; +import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.Bind; +import butterknife.BindInt; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.AbstractNotificationsReceivedEvent; +import data.event.AnswerFriendRequestResponse; +import data.event.BaseEvent; +import data.event.MyFriendshipRequestsEvent; +import data.model.FriendRequestAnswer; +import data.model.ImageUrls; +import data.model.InvitationNotif; +import data.model.Loading; +import data.model.Member; +import data.model.Notification; +import data.model.Participant; +import data.model.Post; + +import static android.support.v7.widget.LinearLayoutManager.VERTICAL; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setFont; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +public class NotificationFragment extends ListBusFragment { + + @BindInt(R.integer.friendship_invitations_summary_limit) + int INVITATION_LIMIT; + private static final int INVITE_PER_REQUEST = 10; + @Bind(R.id.my_notifs) + TextView mMyNotificationsBtn; + @Bind(R.id.others_notifs) + TextView mOthersNotificationsBtn; + @Bind(R.id.invitations_notifications) + ViewGroup mInvitationsNotificationsContainer; + @Bind(R.id.invitations_header) + TextView mInvitationHeaderView; + @Bind(R.id.container) + ViewGroup rootView; + + private String myNotifsBookmark, othersNotifBookmark, acceptedFriendshipBookmark, myFriendshipRequessBookmark; + List myNotifs; + List othersNotifs; + List mInviteNotifs; + + + private int state; + private static final int STATE_NOTHING_SELECTED = 1; + private static final int STATE_MY_NOTIFS = 2; + private static final int STATE_OTHERS_NOTIF = 3; + private int partsReceived; + + + public NotificationFragment() { + // Required empty public constructor + } + + public static NotificationFragment newInstance(){ + NotificationFragment fragment = new NotificationFragment(); + + return fragment; + } + + + @Override + public int getLayoutID() { + return R.layout.fragment_notification; + } + + @Override + protected void initUI() { + /*getChildFragmentManager().beginTransaction().add(R.actorID.inner_container, + new MyNotificationsListFragment(), + TAG_MY_NOTIFICATION_FRAGMENT).commit();*/ + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setLinearLayoutManager(VERTICAL). + setAdapter(getRecyclerViewAdapter()). + bindViewToAdapter(); +// mRecyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(getContext()) +// .marginResId(R.dimen.margin_lvl1) +// .build()); + + myNotifs = new ArrayList<>(); + othersNotifs = new ArrayList<>(); + mInviteNotifs = new ArrayList<>(); + + switchToMyNotifications(); + } + + public void switchToMyNotifications() { + mInvitationsNotificationsContainer.setVisibility(mInviteNotifs.isEmpty() ? View.GONE : View.VISIBLE); + mInvitationHeaderView.setVisibility(mInviteNotifs.isEmpty() ? View.GONE : View.VISIBLE); + + setFont(mMyNotificationsBtn, getString(R.string.default_bold_font_path)); + setFont(mOthersNotificationsBtn, getString(R.string.default_font_path)); + + mMyNotificationsBtn.setSelected(true); + mOthersNotificationsBtn.setSelected(false); + + mMyNotificationsBtn.setTextColor(getResources().getColor(R.color.white)); + mOthersNotificationsBtn.setTextColor(getResources().getColor(R.color.poinila_dark_gray)); + +// mMyNotificationsBtn.setTextSize(getResources().getDimension(R.dimen.fontsize_medium)); +// mOthersNotificationsBtn.setTextSize(getResources().getDimension(R.dimen.fontsize_small)); + + getRecyclerViewAdapter().resetData(myNotifs); + state = STATE_MY_NOTIFS; + } + + /* private void updateAdapter(List list) { + mAdapter.resetData(list); + } + + private List sortMyNotifs(List myNotifs) { + return myNotifs; + }*/ + + public void switchToOthersNotifications() { + mInvitationsNotificationsContainer.setVisibility(View.GONE); + mInvitationHeaderView.setVisibility(View.GONE); + + setFont(mMyNotificationsBtn, getString(R.string.default_font_path)); + setFont(mOthersNotificationsBtn, getString(R.string.default_bold_font_path)); + + mMyNotificationsBtn.setSelected(false); + mOthersNotificationsBtn.setSelected(true); + + mMyNotificationsBtn.setTextColor(getResources().getColor(R.color.poinila_dark_gray)); + mOthersNotificationsBtn.setTextColor(getResources().getColor(R.color.white)); + +// mMyNotificationsBtn.setTextSize(getResources().getDimension(R.dimen.fontsize_small)); +// mOthersNotificationsBtn.setTextSize(getResources().getDimension(R.dimen.fontsize_medium)); + + getRecyclerViewAdapter().resetData(othersNotifs); + //updateAdapter(sortNotifs(othersNotif)); + state = STATE_OTHERS_NOTIF; + } + + private List sortNotifs(List othersNotif) { + // TODO: + return othersNotif; + } + + @OnClick(R.id.my_notifs) + public void onMyNotifications() { + switchToMyNotifications(); + } + + @OnClick(R.id.others_notifs) + public void onOthersNotifications() { + switchToOthersNotifications(); + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.linearListEndDetectorListener(getRecyclerViewAdapter(), this); + } + + @Override + public void onLoadMore() { + if (!isResumed()) + return; + super.onLoadMore(); + } + + @Override + public void initData() { + super.initData(); + myNotifs.clear(); + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return new NotificationAdapter(getActivity()); + } + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + PoinilaNetService.getMyFriendshipRequests(null); + PoinilaNetService.getMyNotifications(myNotifsBookmark); + PoinilaNetService.getOthersNotification(othersNotifBookmark); + } + + @Override + public void onSuccessfulInitData(BaseEvent baseEvent) { + super.onSuccessfulInitData(baseEvent); + mInviteNotifs = ((MyFriendshipRequestsEvent) baseEvent).data; + updateInviteNotifs(); + } + + @Override + protected boolean isListDataResponseValid(BaseEvent baseEvent, String responseBookmark) { + if (baseEvent instanceof AbstractNotificationsReceivedEvent.MyNotificationsReceivedEvent) { + return checkBookMark(myNotifsBookmark, responseBookmark); + } else if (baseEvent instanceof AbstractNotificationsReceivedEvent.OthersNotificationsReceivedEvent) { + return checkBookMark(othersNotifBookmark, responseBookmark); + } + return false; + } + + @Override + public boolean mustShowProgressView() { + return true; + } + + @Override + public void requestForMoreData() { + switch (state) { + case STATE_MY_NOTIFS: + PoinilaNetService.getMyNotifications(myNotifsBookmark); + break; + case STATE_OTHERS_NOTIF: + PoinilaNetService.getOthersNotification(othersNotifBookmark); + break; + } + } + + @Override + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + super.onSuccessfulListData(baseEvent, newBookmark); // bookmark is useless in this page. + AbstractNotificationsReceivedEvent event = ((AbstractNotificationsReceivedEvent) baseEvent); + + if (baseEvent instanceof AbstractNotificationsReceivedEvent.MyNotificationsReceivedEvent) { + myNotifs.addAll(event.data); + myNotifsBookmark = event.bookmark; + if (state == STATE_MY_NOTIFS) getRecyclerViewAdapter().addItems(event.data); + } else if (baseEvent instanceof AbstractNotificationsReceivedEvent.OthersNotificationsReceivedEvent) { + othersNotifs.addAll(event.data); + othersNotifBookmark = event.bookmark; + if (state == STATE_OTHERS_NOTIF) getRecyclerViewAdapter().addItems(event.data); + } + + if(getRecyclerViewAdapter().getItemCount() >= 25){ + setLoading(new Loading()); + } + + + // myNotifs/othersNotifs has already set as adapter's data source. so by adding to adapters item, we + // update myNotifs as well + //getRecyclerViewAdapter().notifyDataSetChanged(); + } + + @Subscribe + public void onMyNotifsReceived(AbstractNotificationsReceivedEvent.MyNotificationsReceivedEvent event) { + onGettingListDataResponse(event, event.bookmark); + } + + @Subscribe + public void onOthersNotifsReceived(AbstractNotificationsReceivedEvent.OthersNotificationsReceivedEvent event) { + onGettingListDataResponse(event, event.bookmark); + } + + @Subscribe + public void onMyFriendshipRequestsReceived(MyFriendshipRequestsEvent event) { + onGettingInitDataResponse(event); +// partOfInitDataReceived(); + } + +// @Subscribe +// public void onProfilePicClickedEvent(MemberClickedUIEvent event) { +// if (event.receiverName != BaseEvent.ReceiverName.NotificationFragment) return; +// Member member =((Notification)getRecyclerViewAdapter().getItem(event.adapterPosition)).mainActor.userName; +// PageChanger.goToProfile(getActivity(), member); +// } + /*private void partOfInitDataReceived() { + partsReceived++; + if (partsReceived >= 3){ + onGettingInitDataResponse(); + } + }*/ + + private void updateInviteNotifs() { + mInvitationsNotificationsContainer.removeAllViews(); + if (mInviteNotifs.isEmpty()) { + mInvitationsNotificationsContainer.setVisibility(View.GONE); + mInvitationHeaderView.setVisibility(View.GONE); + return; + } + + mInvitationsNotificationsContainer.setVisibility(View.VISIBLE); + mInvitationHeaderView.setVisibility(View.VISIBLE); + LayoutInflater inflater = LayoutInflater.from(getActivity()); + for (int i = 0; i < INVITATION_LIMIT && i < mInviteNotifs.size(); i++) { + addInviteNotif(inflater, mInviteNotifs.get(i)); + } + updateNotifCountText(); + } + + private void updateNotifCountText() { + String res; + int count = mInviteNotifs.size(); + if (count < INVITATION_LIMIT) + res = getString(R.string.view_all_invitations); + else if (count < INVITE_PER_REQUEST) + res = getString(R.string.view_all_invitations).concat(String.format(" (%d)", count)); + else + res = getString(R.string.view_all_invitations).concat(String.format(" (%d+)", INVITE_PER_REQUEST)); + mInvitationHeaderView.setText(res); + } + + @OnClick(R.id.invitations_header) + public void viewAllInvitations() { + NavigationUtils.goToActivity(InvitationNotifListActivity.class, getActivity()); + } + + private void addInviteNotif(LayoutInflater inflater, final InvitationNotif notif) { + final View inviteNotifView = inflater.inflate(R.layout.notif_requested_tobe_your_friend, + mInvitationsNotificationsContainer, false); + setImage((ImageView) inviteNotifView.findViewById(R.id.image), notif.member.imageUrls, ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.AVATAR); + setText((TextView) inviteNotifView.findViewById(R.id.title), notif.member.fullName); + setText((TextView) inviteNotifView.findViewById(R.id.subtitle), getString(R.string.requested_to_be_your_friend)); + + mInvitationsNotificationsContainer.addView(inviteNotifView); + + /*--Accept--*/ + inviteNotifView.findViewById(R.id.agree).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + PoinilaNetService.answerFriendRequest(notif.member.id, FriendRequestAnswer.ACCEPT, -1); + clickedNotif = notif; + } + }); + /*--Reject--*/ + inviteNotifView.findViewById(R.id.ignore).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + PoinilaNetService.answerFriendRequest(notif.member.id, FriendRequestAnswer.REJECT, -1); + clickedNotif = notif; + } + }); + inviteNotifView.findViewById(R.id.image).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + PageChanger.goToProfile(getActivity(), notif.member.getId()); + } + }); + } + + private InvitationNotif clickedNotif; + + @Subscribe + public void onAnswerFriendRequestResponse(AnswerFriendRequestResponse event) { + if (event.succeed) { + mInviteNotifs.remove(clickedNotif); + // TODO: on accepting as a friend, chanage item view to "you and felani are now friends" + updateInviteNotifs(); + } + } + + @Subscribe + public void onMainActorClicked(NotifActorClickedUIEvent event) { + Notification notification = ((Notification)getRecyclerViewAdapter().getItem(event.adapterPosition)); + Participant participant = notification.mainActor; + if (participant == null) + return; + goToPage(participant, participant.type); + } + + @Subscribe + public void onParticipantActorClicked(NotifParticipantClickedUIEvent event) { + goToPage(event.participant, event.participantsType); + } + + private void goToPage(Participant participant, ImageUrls.ImageType type) { + switch (type) { + case MEMBER: + PageChanger.goToProfile(getActivity(), participant.getId()); + break; + case COLLECTION: + PageChanger.goToCollection(getActivity(), participant.getId(), participant.collectionName, null); + break; + case POST: + PageChanger.goToPost(getActivity(), participant.getId()); + break; + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NotificationSwitchFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NotificationSwitchFragment.java new file mode 100755 index 0000000..ea7f585 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/NotificationSwitchFragment.java @@ -0,0 +1,200 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.os.Bundle; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.SwitchCompat; +import android.support.v7.widget.Toolbar; +import android.view.Gravity; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.View; +import android.widget.CompoundButton; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.OnOffSettingToggledUIEvent; +import com.shaya.poinila.android.presentation.view.activity.FragmentHostActivity; +import com.shaya.poinila.android.presentation.viewholder.SwitchTextViewHolder; +import com.shaya.poinila.android.util.ResourceUtils; +import com.squareup.otto.Subscribe; +import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration; + +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.NotificationSettingsReceivedEvent; +import data.model.OnOffSetting; + +import static android.support.v7.widget.LinearLayoutManager.VERTICAL; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ENTITY; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_REQUEST_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_APPLICATION_NOTIFICATION; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_EMAIL_NOTIFICATION; + +/** + * Created by iran on 2015-09-07. + */ +public class NotificationSwitchFragment extends ListBusFragment { + + private int requestID; + private OnOffSetting emailOnOffSetting; + private SwitchCompat emailOnOffSwitch; + + public static NotificationSwitchFragment newInstance(String actorID, int requestID){ + NotificationSwitchFragment f = new NotificationSwitchFragment(); + f.requestID = requestID; + Bundle b = new Bundle(); + b.putInt(KEY_REQUEST_ID, requestID); + b.putString(KEY_ENTITY, actorID); + f.setArguments(b); + return f; + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return new RecyclerView.OnScrollListener() { + }; + } + + @Override + public int getLayoutID() { + return R.layout.recycler_view_full; + } + + @Override + protected void initUI() { + Bundle b = getArguments(); + requestID = b.getInt(KEY_REQUEST_ID); + + int padding = (int) ResourceUtils.getDimen(R.dimen.padding_lvl1); + mRecyclerView.setPadding(padding, padding, padding, padding); + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setLinearLayoutManager(VERTICAL). + setAdapter(getRecyclerViewAdapter()). + bindViewToAdapter(); + mRecyclerView.addItemDecoration( + new HorizontalDividerItemDecoration.Builder(getContext()) + .marginResId(R.dimen.margin_lvl1) + .build()); + switch (requestID){ + case REQUEST_APPLICATION_NOTIFICATION: + getActivity().setTitle(R.string.title_activity_application_notification); + setHasOptionsMenu(false); + break; + case REQUEST_EMAIL_NOTIFICATION: + emailOnOffSetting = new OnOffSetting(); + getActivity().setTitle(R.string.title_activity_email_notification); + setHasOptionsMenu(true); + emailOnOffSwitch = (SwitchCompat) getActivity().getLayoutInflater().inflate(R.layout.poinila_switch, null); + + emailOnOffSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (isChecked) emailOnOffSetting.on(); + else emailOnOffSetting.off(); + activeAllChilds(getRecyclerViewAdapter(), isChecked); + PoinilaNetService.setEmailNotificationSetting(emailOnOffSetting); + //enableLayoutChildes(mRecyclerView, isChecked); + } + }); + + Toolbar.LayoutParams lp = new Toolbar.LayoutParams(Gravity.RIGHT); + lp.setMargins(0,0, ((int) ResourceUtils.getDimen(R.dimen.margin_lvl2)), 0); + ((FragmentHostActivity) getActivity()).getToolbar().addView(emailOnOffSwitch, lp); + break; + } + } + + private void activeAllChilds(RecyclerViewAdapter recyclerViewAdapter, boolean isChecked) { + for (Object setting : recyclerViewAdapter.getItems()) { + ((OnOffSetting)setting).enabled = isChecked; + } + recyclerViewAdapter.notifyItemRangeChanged(0, recyclerViewAdapter.getItemCount()); + } + + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + // TODO Add your menu entries here + super.onCreateOptionsMenu(menu, inflater); + } + + @Subscribe public void onNotificationSettingsReceived(NotificationSettingsReceivedEvent event){ + onGettingInitDataResponse(event); + } + + @Subscribe public void onSettingChanged(OnOffSettingToggledUIEvent event){ + OnOffSetting setting = getRecyclerViewAdapter().getItem(event.adapterPosition); + + if (event.settingOn) setting.on(); + else setting.off(); + + switch (requestID){ + case REQUEST_EMAIL_NOTIFICATION: + PoinilaNetService.setEmailNotificationSetting(setting); + break; + case REQUEST_APPLICATION_NOTIFICATION: + PoinilaNetService.setApplicationNotificationSetting(setting); + break; + } + } + +/*------------------*/ + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + switch (requestID){ + case REQUEST_APPLICATION_NOTIFICATION: + PoinilaNetService.getApplicationNotification(); + break; + case REQUEST_EMAIL_NOTIFICATION: + PoinilaNetService.getEmailNotification(); + break; + } + } + + @Override + public boolean mustShowProgressView() { + return true; + } + + @Override + public void requestForMoreData() { + + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return new RecyclerViewAdapter(getActivity(), R.layout.switch_text_setting) { + @Override + protected SwitchTextViewHolder getProperViewHolder(View v, int viewType) { + return new SwitchTextViewHolder(v); + } + }; + } + + @Override + public void onSuccessfulInitData(BaseEvent baseEvent) { + super.onSuccessfulInitData(baseEvent); + NotificationSettingsReceivedEvent event = ((NotificationSettingsReceivedEvent) baseEvent); + if (requestID == REQUEST_EMAIL_NOTIFICATION) { + // reverse loop preventing concurrent modification exception + for (int i = event.notificationSettings.size() - 1; i >= 0 ; i--) { + if (event.notificationSettings.get(i).code.equals("email_notification")){ + emailOnOffSetting = event.notificationSettings.get(i); + event.notificationSettings.remove(i); + } + } + + for (OnOffSetting setting : event.notificationSettings){ + setting.enabled = emailOnOffSetting.value == OnOffSetting.ON; + } + + emailOnOffSwitch.setChecked(emailOnOffSetting.value == OnOffSetting.ON); + } + getRecyclerViewAdapter().resetData(event.notificationSettings); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/PostAndRelatedPostFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/PostAndRelatedPostFragment.java new file mode 100755 index 0000000..a153bd9 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/PostAndRelatedPostFragment.java @@ -0,0 +1,943 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.Manifest; +import android.content.Context; +import android.content.Intent; +import android.content.pm.ActivityInfo; +import android.content.pm.PackageManager; +import android.content.res.Configuration; +import android.graphics.Rect; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.support.annotation.Nullable; +import android.support.v4.app.ActivityCompat; +import android.support.v4.content.ContextCompat; +import android.support.v4.widget.NestedScrollView; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; +import android.text.Html; +import android.text.TextUtils; +import android.util.Log; +import android.util.TypedValue; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewTreeObserver; +import android.view.Window; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.CollectionClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.ExploreTagEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.NewWebsitePostEvent; +import com.shaya.poinila.android.presentation.uievent.PostClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.RemovePostUIEvent; +import com.shaya.poinila.android.presentation.uievent.sync.PostActionSyncEvent; +import com.shaya.poinila.android.presentation.view.ViewInflater; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.view.dialog.PoinilaAlertDialog; +import com.shaya.poinila.android.presentation.view.help.Help; +import com.shaya.poinila.android.presentation.view.video.PonilaVideoView; +import com.shaya.poinila.android.presentation.viewholder.BaseViewHolder; +import com.shaya.poinila.android.presentation.viewholder.DashboardPostViewHolder; +import com.shaya.poinila.android.presentation.viewholder.PostDetailViewHolder; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.util.RandomUtils; +import com.shaya.poinila.android.util.StringUtils; +import com.shaya.poinila.android.util.TimeUtils; +import com.squareup.otto.Subscribe; + +import org.apmem.tools.layouts.FlowLayout; + +import java.io.File; +import java.io.IOException; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import butterknife.Bind; +import butterknife.ButterKnife; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.ContentReceivedEvent; +import data.event.PostReceivedEvent; +import data.event.PostsReceivedEvent; +import data.event.UndoFavePostEvent; +import data.event.UndoUnfavePostEvent; +import data.model.Collection; +import data.model.ImageUrls; +import data.model.Loading; +import data.model.Member; +import data.model.Post; +import data.model.PostType; +import data.model.PrivacyType; +import data.model.Tag; +import manager.DataRepository; +import manager.RequestSource; +import manager.dowload.NotificationDLManager; + +import static android.support.v7.widget.LinearLayoutManager.VERTICAL; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.Comments; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.Fave; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.FaversList; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.FullImage; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.OriginalCollection; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.Poster; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.Reference; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.Repost; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.RepostersList; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ENTITY; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_REQUEST_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_SECOND_ENTITY_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_COLLECTION_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_POST_RELATED_POSTS; + +/** + * Created by iran on 8/14/2016. + */ +public class PostAndRelatedPostFragment extends ListBusFragment + implements PonilaVideoView.OnFullScreenListener{ + + + private static final String VIDEO_POSITION = "video position"; + private static final String VIDEO_IS_PLAYING = "video state"; + + + protected Collection collection; + private int requestType; + private String mainEntityId; + private String secondEntityId; + + private boolean showedHelp = false; + + // must be moved to bus fragment + private Set activeRequests; + + @Bind(R.id.post_video_view) + PonilaVideoView videoView; + + Post mainPost; + + @Bind(R.id.post_title) + ViewGroup postTitle; + /* TextView postName; + ImageView faveIcon; + TextView websiteName; + TextView creationTime;*/ + @Bind(R.id.post_image) + ImageView postImage; + + @Bind(R.id.content) + TextView postContent; + + @Bind(R.id.website) TextView website; + @Bind(R.id.reference_container) ViewGroup postReferenceContainer; + + @Bind(R.id.collection_info) View collectionInfo; + @Bind(R.id.author_info) View authorInfo; + + @Bind(R.id.tags_divider) View tagsDivider; + @Bind(R.id.tags_container) + FlowLayout tagsContainer; + + @Bind(R.id.comment_container) ViewGroup commentsContainer; + + @Bind(R.id.stats) ViewGroup postStats; + ImageButton commentBtn, repostBtn, faveBtn; + TextView faveCount, commentCount, repostCount; + + @Bind(R.id.original_collection) ViewGroup originalCollection; + + @Bind(R.id.zoom_btn) + ImageView zoomBtn; + +// + @Bind(R.id.main_post) + LinearLayout mainPostContainer; + + @Bind(R.id.nested_scroll_view) + NestedScrollView nestedScrollView; + + + private final static int PERMISSION_WRITE_EXTERNAL_STORAGE = 10; + + + public static PostAndRelatedPostFragment newInstance(String mainEntityId, int requestID) { + return newInstance(mainEntityId, null, requestID); + } + + public static PostAndRelatedPostFragment newInstance(String mainEntityId, String secondEntityId, int requestID) { + PostAndRelatedPostFragment f = new PostAndRelatedPostFragment(); + Bundle arguments = new Bundle(); + arguments.putString(KEY_ENTITY, mainEntityId); + arguments.putString(KEY_SECOND_ENTITY_ID, secondEntityId); + arguments.putInt(KEY_REQUEST_ID, requestID); + //arguments.putBoolean(ConstantsUtils.KEY_IS_USER_COLLECTION, isCollectionOwnedByUser); + f.setArguments(arguments); + return f; + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + mainEntityId = getArguments().getString(KEY_ENTITY); + requestType = getArguments().getInt(KEY_REQUEST_ID); + secondEntityId = getArguments().getString(KEY_SECOND_ENTITY_ID); + + activeRequests = new HashSet<>(2); + setHasOptionsMenu(true); + + } + + @Override + protected void initUI() { + super.initUI(); + + mRecyclerView = new RecyclerViewProvider(mRecyclerView).setAdapter(getRecyclerViewAdapter()). + setStaggeredLayoutManager(VERTICAL, getResources().getInteger(R.integer.column_count)). + bindViewToAdapter(); + mRecyclerView.getItemAnimator().setChangeDuration(0); + mRecyclerView.setNestedScrollingEnabled(false); + + nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { + @Override + public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { + if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) { + onLoadMore(); + } + } + }); + + getActivity().setTitle(getString(R.string.post)); + initUIMainPost(); + mainPost = DataRepository.getInstance().getTempModel(Post.class); + if(mainPost != null) + fill(mainPost); + + mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + + if(!PoinilaPreferences.getHelpStatus(PostAndRelatedPostFragment.this.getClass().getName() + ".PostPage")){ + Help.getInstance().showPostRelatedPostsHelp(getActivity(), postImage); + PoinilaPreferences.putHelpStatus(PostAndRelatedPostFragment.this.getClass().getName()+ ".PostPage", true); + + } + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { + mRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this); + } else { + mRecyclerView.getViewTreeObserver().removeGlobalOnLayoutListener(this); + } + + } + }); + + } + + @Override + public void onPause() { + super.onPause(); + } + + private void computeVideoSize(){ + int width = getActivity().getResources().getDisplayMetrics().widthPixels; + int height = (mainPost.imagesUrls.x736.height * width) / mainPost.imagesUrls.x736.width; + videoView.setLayoutParams( + new LinearLayout.LayoutParams(width, height)); + } + + private void initUIMainPost(){ + + faveCount = ButterKnife.findById(postStats, R.id.fave_num); + faveBtn = ButterKnife.findById(postStats, R.id.fave_icon); + faveCount.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(FaversList)); + } + }); + + faveBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Fave)); + } + }); + + commentCount = ButterKnife.findById(postStats, R.id.comment_num); + commentBtn = ButterKnife.findById(postStats, R.id.comment_icon); + commentCount.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Comments)); + } + }); + + commentBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Comments)); + } + }); + + repostCount = ButterKnife.findById(postStats, R.id.repost_num); + repostBtn = ButterKnife.findById(postStats, R.id.repost_icon); + repostCount.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(RepostersList)); + } + }); + repostBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Repost)); + } + }); + + authorInfo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Poster)); + } + }); + collectionInfo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(PostComponentClickedUIEvent.Type.Collection)); + } + }); + originalCollection.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(OriginalCollection)); + } + }); + } + + public void fill(final Post post) { + + /*------actual fill--------*/ + + + ((TextView)postTitle.findViewById(R.id.title)).setText( + post != null && post.name != null ? post.name : ""); + //((TextView)postTitle.findViewById(R.id.subtitle)).setText(post.author.urlName); + //((TextView)postTitle).findViewById(R.actorID.image)) + ((TextView)postTitle.findViewById(R.id.date_created)). + setText(TimeUtils.getTimeString(post.creationTime, DataRepository.getInstance().getServerTimeDifference())); + + if (post.type == PostType.IMAGE) { + postImage.setVisibility(View.VISIBLE); + setImage(postImage, post.imagesUrls, ImageUrls.ImageType.POST, ImageUrls.ImageSize.BIG); + setText(postContent, post.summary); + + postImage.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (TextUtils.isEmpty(post.originalWebpage)) + BusProvider.getBus().post(new PostComponentClickedUIEvent(FullImage)); + else + BusProvider.getBus().post(new PostComponentClickedUIEvent(Reference)); + } + }); + } else{ + //DataRepository.getInstance().getPostContent(post.contentUrl.url, postContent); + postImage.setVisibility(View.GONE); + if (!TextUtils.isEmpty(post.contentUrl)){ + if (TextUtils.isEmpty(post.content)) + DataRepository.getInstance().getPostContent(post.contentUrl, post.id); + else + setText(postContent, Html.fromHtml(post.content)); + } + } + + setImage((ImageView) authorInfo.findViewById(R.id.image), + post.author.imageUrls, ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.AVATAR); + ((TextView)authorInfo.findViewById(R.id.title)).setText(post.author.fullName); + + setImage((ImageView) collectionInfo.findViewById(R.id.image), + post.collection.coverImageUrls, ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.AVATAR); + ((TextView)collectionInfo.findViewById(R.id.title)).setText(post.collection.name); + + if (TextUtils.isEmpty(post.originalWebpage)) + postReferenceContainer.setVisibility(View.GONE); + else { + setText(website, post.originalWebpage); + postReferenceContainer.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Reference)); + } + }); + } + + if (post.tags == null || post.tags.isEmpty()){ + tagsContainer.setVisibility(View.GONE); + tagsDivider.setVisibility(View.GONE); + } + else{ + tagsContainer.removeAllViews(); + for (Tag tag : post.tags){ + //tagsContainer.addView(ViewInflater.inflateNormalTag(tag, getActivity())); + // TODO: difference between tag in post and interest in member may rise some issues + ViewInflater.addTagToContainer(tagsContainer, tag); + } + } + + /*---Comments----*/ + if (post.comments == null || post.comments.isEmpty()){ + commentsContainer.setVisibility(View.GONE); + //??? findviewbyid + rootView.findViewById(R.id.comment_container_divider).setVisibility(View.GONE); + }else{ + commentsContainer.removeAllViews(); + for (int i = 0; i < 3 && i < post.comments.size(); i++){ + commentsContainer.addView(ViewInflater.inflateComment(post.comments.get(i), rootView.getContext())); // ???getActivity + } + } + + /*----stats----*/ + if (post.privacy == PrivacyType.PRIVATE){ + repostBtn.setVisibility(View.INVISIBLE); + repostCount.setVisibility(View.INVISIBLE); + }else { + setText(repostCount, post.repostCount); + } + setText(faveCount, post.faveCount); + faveBtn.setSelected(post.favedByMe); + setText(commentCount, post.commentCount); + + if (post.originalCollection != null) { + setImage((ImageView) originalCollection.findViewById(R.id.image), post.originalCollection.coverImageUrls, + ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.AVATAR); + ((TextView) originalCollection.findViewById(R.id.subtitle)). + setText(String.valueOf(post.originalCollection.name)); + ((TextView) originalCollection.findViewById(R.id.fave_num)). + setText(String.valueOf(post.originalCollection.totalLikeCount)); + ((TextView) originalCollection.findViewById(R.id.comment_num)). + setText(String.valueOf(post.originalCollection.totalCommentCount)); + ((TextView) originalCollection.findViewById(R.id.repost_num)). + setText(String.valueOf(post.originalCollection.totalRepostCount)); + }else{ + originalCollection.setVisibility(View.GONE); + } + + if(!videoView.isPlaying() && mainPost.type.equals(PostType.VIDEO)){ + videoView.setOnFullScreenListener(this); + videoView.setVisibility(View.VISIBLE); + videoView.setVideoPreview(mainPost.imagesUrls); + videoView.setVideoPath(mainPost.videoUrl); + } + + if(mainPost.type.equals(PostType.IMAGE)) + zoomBtn.setVisibility(View.VISIBLE); + else + zoomBtn.setVisibility(View.GONE); + + if(mainPost.type.equals(PostType.VIDEO)) + computeVideoSize(); + } + + + @Override + public void onStart() { + super.onStart(); + + BusProvider.getSyncUIBus().register(this); + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + inflater.inflate(R.menu.menu_post, menu); + + if(mainPost != null && !mainPost.type.equals(PostType.TEXT)) + menu.findItem(R.id.menu_item_download).setVisible(true); + else + menu.findItem(R.id.menu_item_download).setVisible(false); + + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // handle item selection + switch (item.getItemId()) { + case R.id.menu_item_download: + // Here, thisActivity is the current activity + if (ContextCompat.checkSelfPermission(getActivity(), + Manifest.permission.WRITE_EXTERNAL_STORAGE) + != PackageManager.PERMISSION_GRANTED) { + + ActivityCompat.requestPermissions(getActivity(), + new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, + PERMISSION_WRITE_EXTERNAL_STORAGE); + + }else { + download(); + } + + return true; + case R.id.menu_item_share: + // Handle this selection + if(mainPost != null) + launchShareMenu(mainPost); + return true; + case R.id.menu_item_report: + // Handle this selection + if ( mainPost != null && getRecyclerViewAdapter().getItemCount() >= 1) + DialogLauncher.launchReportDialog( + getFragmentManager(), + R.string.report_post, + mainPost.id); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + private void download(){ + String url = ""; + switch (mainPost.type){ + case IMAGE: + url = mainPost.imagesUrls.x736.url; + break; + case VIDEO: + url = mainPost.videoUrl; + break; + } + NotificationDLManager.getInstance().download(url, mainPost.name, ""); + } + + @Override + public void onRequestPermissionsResult(int requestCode, + String permissions[], int[] grantResults) { + switch (requestCode) { + case PERMISSION_WRITE_EXTERNAL_STORAGE: { + // If request is cancelled, the result arrays are empty. + if (grantResults.length > 0 + && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + if(mainPost != null) + download(); + + } else { + + // permission denied, boo! Disable the + // functionality that depends on this permission. + } + return; + } + + // other 'case' lines to check for other + // permissions this app might request + } + } + + private void launchShareMenu(Post post) { + Intent shareIntent = new Intent(Intent.ACTION_SEND); + shareIntent.setType("text/plain"); + String extra = null; + switch (requestType) { + case REQUEST_COLLECTION_POSTS: + extra = getString(R.string.checkout_this_collection) + "\n" + + getString(R.string.collection_share_url, + ConstantsUtils.POINILA_ORIGIN_ADDRESS, + Uri.encode(collection.owner.uniqueName), + Uri.encode(collection.name)) + "\n" + + getString(R.string.ponila_world_of_interest); + break; + case REQUEST_POST_RELATED_POSTS: + extra = post.name + "\n\n" + + post.summary + "\n" + + getString(R.string.checkout_this_post) + "\n" + + getString(R.string.post_share_url, ConstantsUtils.POINILA_ORIGIN_ADDRESS, + mainPost.getId()) + "\n" + + getString(R.string.ponila_world_of_interest); + break; + default: + return; + } + shareIntent.putExtra(Intent.EXTRA_TEXT, extra); + startActivity(Intent.createChooser(shareIntent, getString(R.string.share_dialog_title))); + } + + @Subscribe + public void onNewUrlImagePostEvent(NewWebsitePostEvent event){ + //DialogLauncher.launchNewPost(getChildFragmentManager(), event.suggestedPost); + PageChanger.goToNewPost(getFragmentManager(), event.suggestedPost); + } + + @Subscribe + public void onPostsReceived(PostsReceivedEvent event) { + populateIfNecessary(event); // was necessary earlier because response came from server lacked info about posts collection + onGettingInitDataResponse(event); + onGettingListDataResponse(event, event.bookmark); + } + + @Subscribe + public void onContentReceivedEvent(final ContentReceivedEvent event) { + mainPost.content = StringUtils.removeHtmlDirAttribute(event.content); + fill(mainPost); + } + + @Subscribe + public void onPostDetailsComponentClickEvent(PostComponentClickedUIEvent event) { + if (DataRepository.isUserAnonymous() && PostComponentClickedUIEvent.Type.guestCantPerformActions.contains(event.type)) { + Logger.toastError(R.string.error_guest_action); + return; + } + + switch (event.type) { + case FaversList: + PageChanger.goToLikersList(getActivity(), mainPost.faveCount, mainPost.getId()); + break; + case Fave: + favePost(); + getRecyclerViewAdapter().notifyItemChanged(0); + break; + case Comments: + PageChanger.goToCommentList(getActivity(), mainPost.commentCount, mainPost.getId()); + getRecyclerViewAdapter().notifyItemChanged(0); + break; + case RepostersList: + PageChanger.goToRepostList(getActivity(), mainPost.repostCount, mainPost.getId()); + break; + case Repost: + DialogLauncher.launchRepostDialog(getFragmentManager(), mainPost); + getRecyclerViewAdapter().notifyItemChanged(0); + break; + case Poster: + Member member = mainPost.author; + PageChanger.goToProfile(getActivity(), member); + break; + case Collection: + Collection collection = mainPost.collection; + PageChanger.goToCollection(getActivity(), collection); + break; + case OriginalCollection: + collection = mainPost.originalCollection; + PageChanger.goToCollection(getActivity(), collection); + break; + case Reference: + PageChanger.goToInlineBrowser(getActivity(), mainPost.originalWebpage.toLowerCase(), mainPost.getId(), mainPost.name); + break; + case FullImage: + PageChanger.goToFullImage(getActivity(), mainPost.imagesUrls.properPostImage(ImageUrls.ImageSize.FULL_SIZE).url); + break; + } + } + + private void favePost() { + + if (!mainPost.favedByMe) { + PoinilaNetService.favePost(mainPost.getId()); + mainPost.faveCount++; + //setText(faveCount, ++post.faveCount); + //faveBtn.setSelected(true); + } else { + PoinilaNetService.unfavePost(mainPost.getId()); + mainPost.faveCount--; +// setText(faveCount, --post.faveCount); +// faveBtn.setSelected(false);*/ + } + + mainPost.favedByMe = !mainPost.favedByMe; + + faveBtn.setSelected(mainPost.favedByMe); + setText(faveCount, mainPost.faveCount); + +// mainPost.favedByMe ^= true; + + BusProvider.getSyncUIBus().post(new PostActionSyncEvent(mainPost)); + + } + + @Subscribe + public void onUndofaveEvent(UndoFavePostEvent event) { + mainPost.favedByMe = false; + mainPost.faveCount--; + faveBtn.setSelected(mainPost.favedByMe); + setText(faveCount, mainPost.faveCount); + // TODO: ??? + //faveBtn.setSelected(false); + + BusProvider.getSyncUIBus().post(new PostActionSyncEvent(mainPost)); + } + + @Subscribe + public void onUndoUnfaveEvent(UndoUnfavePostEvent event) { + mainPost.favedByMe = true; + mainPost.faveCount++; + faveBtn.setSelected(mainPost.favedByMe); + setText(faveCount, mainPost.faveCount); + // TODO: ??? + //faveBtn.setSelected(true); + + BusProvider.getSyncUIBus().post(new PostActionSyncEvent(mainPost)); + } + + @Subscribe + public void onExploreTag(ExploreTagEvent event) { + PageChanger.goToExplore(getActivity(), event.text); + } + + + @OnClick(R.id.zoom_btn) + public void zoomBtnOnCLick(){ + PageChanger.goToFullImage(getActivity(), mainPost.imagesUrls.x736.url); + } + + public static int findPostInAdapter(List adapter, int postID) { + for (int i = 0; i < adapter.size(); i++) { + if (adapter.get(i) instanceof Post && adapter.get(i).id == postID) // take account of ask rating item + return i; + } + return -1; + } + + public void populateIfNecessary(PostsReceivedEvent event) { + if (collection != null) { + for (Post post : event.posts) { + post.collection = collection; + //post.author = collection.owner; + } + } + } + + @Subscribe + public void onPostReceived(PostReceivedEvent event) { + onGettingInitDataResponse(event); + } + + @Override + public void onSuccessfulInitData(BaseEvent baseEvent) { + super.onSuccessfulInitData(baseEvent); + + if(baseEvent instanceof PostReceivedEvent){ + mainPost = ((PostReceivedEvent)baseEvent).post; + fill(mainPost); + getActivity().invalidateOptionsMenu(); + } + + } + + @Subscribe + public void onRemovePost(RemovePostUIEvent event) { + clickedItemPosition = event.adapterPosition; + new PoinilaAlertDialog.Builder().setMessage(R.string.confirm_delete_post). + setPositiveBtnText(R.string.yes).setNegativeBtnText(R.string.no). + build().show(getFragmentManager(), null); + } + + @Subscribe + public void onProfilePicClickedEvent(MemberClickedUIEvent event) { + Member member = ((Post)getRecyclerViewAdapter().getItem(event.adapterPosition)).author; + PageChanger.goToProfile(getActivity(), member); + } + + @Subscribe + public void onPostClicked(PostClickedUIEvent event) { + if(getRecyclerViewAdapter().getItem(event.adapterPosition) instanceof Post){ // sometimes getItem return Loading Model + Post post = (Post)getRecyclerViewAdapter().getItem(event.adapterPosition); + PageChanger.goToPost(getActivity(), post); + } + } + + @Subscribe + public void onCollectionClicked(CollectionClickedUIEvent event) { + Collection collection = ((Post)getRecyclerViewAdapter().getItem(event.adapterPosition)).collection; + PageChanger.goToCollection(getActivity(), collection); + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.staggeredListEndDetectorListener(getRecyclerViewAdapter(), this); + } + + @Override + public void requestForMoreData() { + int requestId = RandomUtils.getRandomInt(); + PoinilaNetService.getRelatedPosts(mainEntityId, bookmark, requestId); + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return new PostAndRelatedPostAdapter(getActivity()); + } + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + int requestId = RandomUtils.getRandomInt(); + activeRequests.add(requestId); + DataRepository.getInstance().getPost(mainEntityId, RequestSource.FORCE_ONLINE, requestId); + setLoading(new Loading()); + requestForMoreData(); + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutID() { + return R.layout.post_related_posts; + } + + @Override + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + super.onSuccessfulListData(baseEvent, newBookmark); + List posts = ((PostsReceivedEvent) baseEvent).posts; + + getRecyclerViewAdapter().addItems(posts); + + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + + super.onConfigurationChanged(newConfig); + int currentOrientation = getResources().getConfiguration().orientation; + + if (isLandScape()) + setFullScreenStateVideo(); + else + setDefaultStateVideo(); + +// getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + + } + + private boolean isLandScape(){ + return getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; + } + + @Override + public void stateChanged() { + if (isLandScape()) + getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + else + getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } + + private void setDefaultStateVideo(){ + videoView.setFullScreenMode(false); + int postCountChild = mainPostContainer.getChildCount(); + ((AppCompatActivity)getActivity()).getSupportActionBar().show(); + + mRecyclerView.setVisibility(View.VISIBLE); + + computeVideoSize(); + + for(int i=0 ; i < postCountChild ; i++){ + if(mainPostContainer.getChildAt(i).getId() != R.id.post_video_view){ + mainPostContainer.getChildAt(i).setVisibility(View.VISIBLE); + } + } + + fill(mainPost); + } + + private void setFullScreenStateVideo(){ + videoView.setFullScreenMode(true); + int postCountChild = mainPostContainer.getChildCount(); + ((AppCompatActivity)getActivity()).getSupportActionBar().hide(); + + mRecyclerView.setVisibility(View.GONE); + + videoView.getLayoutParams().width = getActivity().getResources().getDisplayMetrics().widthPixels; + + TypedValue tv = new TypedValue(); + getActivity().getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true); + int actionBarHeight = getResources().getDimensionPixelSize(tv.resourceId); + videoView.getLayoutParams().height = + getActivity().getResources().getDisplayMetrics().heightPixels + + getStatusBarHeight(getActivity().getWindow()) + - actionBarHeight; + + for(int i=0 ; i < postCountChild ; i++){ + if(mainPostContainer.getChildAt(i).getId() != R.id.post_video_view){ + mainPostContainer.getChildAt(i).setVisibility(View.GONE); + } + } + } + + private int getStatusBarHeight(Window window){ + Rect rectangle = new Rect(); + window.getDecorView().getWindowVisibleDisplayFrame(rectangle); + return rectangle.top; + } + + + private class PostAndRelatedPostAdapter extends RecyclerViewAdapter> { + public static final int VIEW_TYPE_POST_FULL = 1; + public static final int VIEW_TYPE_POST_ITEM = 2; + + public PostAndRelatedPostAdapter(Context context) { + super(context, -1); + } + + @Override + protected PostDetailViewHolder getProperViewHolder(View v, int viewType) { + return null; + } + + @Override + public void onBindViewHolder(BaseViewHolder holder, int position) { + if (getItemViewType(position) == VIEW_TYPE_POST_FULL) { + StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams(); + layoutParams.setFullSpan(true); + } + super.onBindViewHolder(holder, position); + } + + @Override + public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + return new BaseViewHolder.EmptyViewHolder(mLayoutInflater.inflate(R.layout.progress, parent, false)); + } else + return new DashboardPostViewHolder(mLayoutInflater.inflate(R.layout.post_dashboard, parent, false), BaseEvent.ReceiverName.PostRelatedPosts); + + } + + @Override + protected boolean isStaggeredGridLayoutManager() { + return true; + } + + @Override + public int getItemViewType(int position) { + int type = super.getItemViewType(position); + + if(type == VIEW_TYPE_LOAD_PROGRESS){ + return type; + } + + return VIEW_TYPE_POST_ITEM; + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/PostListFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/PostListFragment.java new file mode 100755 index 0000000..8084bcc --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/PostListFragment.java @@ -0,0 +1,977 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.content.Context; +import android.content.Intent; +import android.content.res.Configuration; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.support.annotation.Nullable; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; +import android.text.TextUtils; +import android.util.Log; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewTreeObserver; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.TextView; + +import com.getbase.floatingactionbutton.FloatingActionButton; +import com.getbase.floatingactionbutton.FloatingActionsMenu; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.CollectionClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.ExploreTagEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.NewWebsitePostEvent; +import com.shaya.poinila.android.presentation.uievent.PositiveButtonClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PostClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.RemovePostUIEvent; +import com.shaya.poinila.android.presentation.uievent.UpdateUICommentEvent; +import com.shaya.poinila.android.presentation.uievent.UpdateUiRepostEvent; +import com.shaya.poinila.android.presentation.uievent.sync.PostActionSyncEvent; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.view.dialog.PoinilaAlertDialog; +import com.shaya.poinila.android.presentation.view.help.Help; +import com.shaya.poinila.android.presentation.viewholder.BaseViewHolder; +import com.shaya.poinila.android.presentation.viewholder.DashboardPostViewHolder; +import com.shaya.poinila.android.presentation.viewholder.PostDetailViewHolder; +import com.shaya.poinila.android.presentation.viewholder.PostsOfCollectionViewHolder; +import com.shaya.poinila.android.presentation.viewholder.RemovablePostViewHolder; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.util.RandomUtils; +import com.shaya.poinila.android.util.StringUtils; +import com.squareup.otto.Subscribe; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.CollectionReceivedEvent; +import data.event.ContentReceivedEvent; +import data.event.PostReceivedEvent; +import data.event.PostsReceivedEvent; +import data.event.UndoFavePostEvent; +import data.event.UndoUnfavePostEvent; +import data.model.Collection; +import data.model.ImageUrls; +import data.model.Loading; +import data.model.Member; +import data.model.Post; +import manager.DataRepository; +import manager.RequestSource; + +import static android.support.v7.widget.LinearLayoutManager.VERTICAL; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setFont; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_ENTITY; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_REQUEST_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_SECOND_ENTITY_ID; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_COLLECTION_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_EXPLORE; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_FAVED_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_MEMBER_POSTS; +import static com.shaya.poinila.android.util.ConstantsUtils.REQUEST_POST_RELATED_POSTS; +import static com.shaya.poinila.android.util.ResourceUtils.getStringFormatted; + +/** + * Created by iran on 2015-08-09. + */ +public class PostListFragment extends ListBusFragment { + + protected Collection collection; + private int requestType; + private String mainEntityId; + private String secondEntityId; + + private boolean showedHelp = false; + + // must be moved to bus fragment + private Set activeRequests; + + @Nullable + @Bind(R.id.follow_button) + Button followButton; + @Nullable + @Bind(R.id.follow_button_img) + ImageView followButtonImg; + @Nullable + @Bind(R.id.edit_button) + Button editButton; + @Nullable + @Bind(R.id.remove_button) + Button removeButton; + + @Nullable + @Bind(R.id.collection_description) + TextView collectionDescription; + +// @Nullable +// @Bind(R.id.collection_info_bar) +// View collectionInfoView; + + @Nullable + @Bind(R.id.item_count) + TextView itemCountView; + + + FloatingActionsMenu fabMenu; + FloatingActionButton addFromUrl; + FloatingActionButton addPost; + + +// @Nullable +// @Bind(R.id.collection_description_container) +// ViewGroup descriptionContainer; + + @Nullable + @Bind(R.id.explored_tag) + TextView exploredTagView; + + Post mainPost; + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return RecyclerViewProvider.staggeredListEndDetectorListener(getRecyclerViewAdapter(), this); + } + + private void fillCollection(Collection collection) { + setText(itemCountView, getStringFormatted(R.string.posts_formatted, collection.postCount)); + + if (!TextUtils.isEmpty(collection.description)) { + setText(collectionDescription, collection.description); + setFont(collectionDescription, getString(R.string.default_bold_font_path)); + collectionDescription.setVisibility(View.VISIBLE); + }else { + collectionDescription.setVisibility(View.GONE); + } + + if (!DataRepository.isMyCollection(collection)) { + followButton.setVisibility(View.VISIBLE); + followButtonImg.setVisibility(View.VISIBLE); + updateFollowButton(); + } else { + editButton.setVisibility(View.VISIBLE); + removeButton.setVisibility(View.VISIBLE); + } + //getActivity().setTitle(getString(R.string.title_activity_collection, mainEntityId)); + } + + public static PostListFragment newInstance(String mainEntityId, int requestID) { + return newInstance(mainEntityId, null, requestID); + } + + public static PostListFragment newInstance(String mainEntityId, String secondEntityId, int requestID) { + PostListFragment f = new PostListFragment(); + Bundle arguments = new Bundle(); + arguments.putString(KEY_ENTITY, mainEntityId); + arguments.putString(KEY_SECOND_ENTITY_ID, secondEntityId); + arguments.putInt(KEY_REQUEST_ID, requestID); + //arguments.putBoolean(ConstantsUtils.KEY_IS_USER_COLLECTION, isCollectionOwnedByUser); + f.setArguments(arguments); + return f; + } + + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mainEntityId = getArguments().getString(KEY_ENTITY); + requestType = getArguments().getInt(KEY_REQUEST_ID); + secondEntityId = getArguments().getString(KEY_SECOND_ENTITY_ID); + + activeRequests = new HashSet<>(2); + + setHasOptionsMenu(true); + + // when opening new post, in some situations we already have post data. We show that to + // user avoiding loading icons and at the same time request for post with updated data. + /*if (requestID == ConstantsUtils.REQUEST_POST_RELATED_POSTS && + DataRepository.getInstance().getTempModel(Post.class) != null){ + + }*/ + } + + @Override + public int getLayoutID() { + switch (requestType) { + case REQUEST_COLLECTION_POSTS: + return R.layout.fragment_collection_detail_owned; + case REQUEST_EXPLORE: + return R.layout.fragment_explore; + case REQUEST_MEMBER_POSTS: + return R.layout.fragment_member_posts; + default: + return R.layout.recycler_view_full; + } + } + + @Override + protected void initUI() { + super.initUI(); + mRecyclerView = new RecyclerViewProvider(mRecyclerView).setAdapter(getRecyclerViewAdapter()). + setStaggeredLayoutManager(VERTICAL, getResources().getInteger(R.integer.column_count)). + bindViewToAdapter(); + mRecyclerView.getItemAnimator().setChangeDuration(0); + + + switch (requestType) { + case REQUEST_MEMBER_POSTS: + getActivity().setTitle(getString(R.string.title_activity_member_posts, secondEntityId)); + fabMenu = (FloatingActionsMenu)rootView.findViewById(R.id.fab_menu); + addFromUrl = (FloatingActionButton)rootView.findViewById(R.id.fab_add_post_from_site); + addPost = (FloatingActionButton)rootView.findViewById(R.id.fab_add_post); + + addPost.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + fabMenu.collapse(); + //DialogLauncher.launchNewPost(getChildFragmentManager(), null); + PageChanger.goToNewPost(getFragmentManager(), null); + } + }); + + addFromUrl.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + fabMenu.collapse(); + DialogLauncher.launchNewWebsitePost(getFragmentManager()); + } + }); + + break; + case REQUEST_MEMBER_FAVED_POSTS: + getActivity().setTitle(R.string.title_activity_member_faved_posts); + break; + case ConstantsUtils.REQUEST_POST_RELATED_POSTS: + getActivity().setTitle(getString(R.string.post)); + // adding main post as first adapter item + mainPost = DataRepository.getInstance().getTempModel(Post.class); + if(mainPost != null){ + getRecyclerViewAdapter().addItem(mainPost); + getRecyclerViewAdapter().notifyDataSetChanged(); + } + + mRecyclerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + + View view = ((ViewGroup) mRecyclerView.getLayoutManager().findViewByPosition(0)).getChildAt(1); + if(!PoinilaPreferences.getHelpStatus(PostListFragment.this.getClass().getName() + ".PostPage")){ + Help.getInstance().showPostRelatedPostsHelp(getActivity(), view); + PoinilaPreferences.putHelpStatus(PostListFragment.this.getClass().getName()+ ".PostPage", true); + + } + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) { + mRecyclerView.getViewTreeObserver().removeOnGlobalLayoutListener(this); + } else { + mRecyclerView.getViewTreeObserver().removeGlobalOnLayoutListener(this); + } + + } + }); + + break; + case ConstantsUtils.REQUEST_COLLECTION_POSTS: + fabMenu = (FloatingActionsMenu)rootView.findViewById(R.id.fab_menu); + addFromUrl = (FloatingActionButton)rootView.findViewById(R.id.fab_add_post_from_site); + addPost = (FloatingActionButton)rootView.findViewById(R.id.fab_add_post); + + addPost.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + fabMenu.collapse(); + //DialogLauncher.launchNewPost(getChildFragmentManager(), null); + PageChanger.goToNewPost(getFragmentManager(), null); + } + }); + + addFromUrl.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + fabMenu.collapse(); + DialogLauncher.launchNewWebsitePost(getFragmentManager()); + } + }); + + getActivity().setTitle(byDeepLink(mainEntityId) ? mainEntityId : secondEntityId); + collection = DataRepository.getInstance().getTempModel(Collection.class); + if (collection == null) + return; + fillCollection(collection); + setLoading(new Loading()); + + break; + case REQUEST_EXPLORE: + getActivity().setTitle(R.string.title_activity_explore); + exploredTagView.setText(mainEntityId); + break; + } + } + + @Subscribe + public void onNewUrlImagePostEvent(NewWebsitePostEvent event){ + //DialogLauncher.launchNewPost(getChildFragmentManager(), event.suggestedPost); + PageChanger.goToNewPost(getFragmentManager(), event.suggestedPost); + } + + private void updateFollowButton() { + setText(followButton, collection.followedByMe + ? getString(R.string.unfollow_item) + : getString(R.string.follow_item)); + + followButtonImg.setSelected(collection.followedByMe); + } + + @Subscribe + public void onPostsReceived(PostsReceivedEvent event) { + + if(event.posts.size() >= 25 && mRecyclerView.getAdapter().getItemCount() == 0){ + setLoading(new Loading()); + } + + populateIfNecessary(event); // was necessary earlier because response came from server lacked info about posts collection + onGettingInitDataResponse(event); + onGettingListDataResponse(event, event.bookmark); + + } + + @Subscribe + public void onPostReceived(PostReceivedEvent event) { + onGettingInitDataResponse(event); + } + + @Subscribe + public void onRemovePost(RemovePostUIEvent event) { + clickedItemPosition = event.adapterPosition; + new PoinilaAlertDialog.Builder().setMessage(R.string.confirm_delete_post). + setPositiveBtnText(R.string.yes).setNegativeBtnText(R.string.no). + build().show(getFragmentManager(), null); + } + + @Subscribe + public void onProfilePicClickedEvent(MemberClickedUIEvent event) { + Member member = ((Post)getRecyclerViewAdapter().getItem(event.adapterPosition)).author; + PageChanger.goToProfile(getActivity(), member); + } + + @Subscribe + public void onPostClicked(PostClickedUIEvent event) { + Post post = (Post)getRecyclerViewAdapter().getItem(event.adapterPosition); + PageChanger.goToPost(getActivity(), post); + } + + @Subscribe + public void onCollectionClicked(CollectionClickedUIEvent event) { + Collection collection = ((Post)getRecyclerViewAdapter().getItem(event.adapterPosition)).collection; + PageChanger.goToCollection(getActivity(), collection); + } + + @Nullable + @OnClick(R.id.follow_button) + public void onFollowCollection(Button followButton) { + if (DataRepository.isUserAnonymous()) { + Logger.toastError(R.string.error_guest_action); + return; + } + + if (collection.followedByMe) { + PoinilaNetService.unfollowCollection(collection.getId()); + collection.followedByMe = false; + } else { + PoinilaNetService.followCollection(collection.getId()); + collection.followedByMe = true; + } + updateFollowButton(); + } + + /* @Nullable @OnClick(R.id.edit_button) public void onEditCollection(){ + DataRepository.getInstance().putTempModel(collection); + new PoinilaDialog.Builder().setTitle(R.string.edit_collection). + setPositiveText(R.string.submit). + setNegativeText(R.string.cancel). + setBody(new EditCollectionDialog(collection)). + build().show(getChildFragmentManager(), null); + }*/ + + @Nullable + @OnClick(R.id.remove_button) + public void onRemoveCollection() { + // must not happen but anyway... :) + if (DataRepository.isUserAnonymous()) { + Logger.toastError(R.string.error_guest_action); + return; + } + + DialogLauncher.launchDeleteCollection(getFragmentManager()); + } + + @Nullable + @OnClick(R.id.edit_button) + public void onEditCollection() { + // must not happen but anyway... :) + if (DataRepository.isUserAnonymous()) { + Logger.toastError(R.string.error_guest_action); + return; + } + + DialogLauncher.launchEditCollectionDialog(getFragmentManager(), collection); + } + + @Subscribe + public void onPositiveDialogButtonClicked(PositiveButtonClickedUIEvent event) { + switch (requestType) { + case REQUEST_MEMBER_POSTS: + PoinilaNetService.deletePost(((Post)getRecyclerViewAdapter().getItem(clickedItemPosition)).getId()); + getRecyclerViewAdapter().removeItem(clickedItemPosition); + //setText(itemCountView, --collection.postCount); + break; + case REQUEST_COLLECTION_POSTS: + PoinilaNetService.deleteCollection(collection); + getActivity().finish(); + break; + } + } + + public void populateIfNecessary(PostsReceivedEvent event) { + if (collection != null) { + for (Post post : event.posts) { + post.collection = collection; + //post.author = collection.owner; + } + } + } + + // response for getting collection info OR editing it. + @Subscribe + public void onCollectionInfoReceived(CollectionReceivedEvent event) { + onGettingInitDataResponse(event); + } + + @Subscribe + public void onContentReceivedEvent(final ContentReceivedEvent event) { + final int postIndex = findPostInAdapter(getRecyclerViewAdapter().getItems(), event.postID); + if (postIndex != -1) { + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + ((Post)getRecyclerViewAdapter().getItem(postIndex)).content = StringUtils.removeHtmlDirAttribute(event.content); + getRecyclerViewAdapter().notifyItemChanged(postIndex); + } + }); + } + } + + public static int findPostInAdapter(List adapter, int postID) { + for (int i = 0; i < adapter.size(); i++) { + if (adapter.get(i) instanceof Post && adapter.get(i).id == postID) // take account of ask rating item + return i; + } + return -1; + } + + /*---------------*/ + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + // TODO: is necessary to invoke listData requests or it gets called by listener? + if (requestType == REQUEST_COLLECTION_POSTS) { + // deep links are unique with two parameters -> user name, collection name + Log.i(getClass().getName(), "collection unige name : " + (byDeepLink(mainEntityId) ? secondEntityId : null)); + DataRepository.getInstance().getCollection( + mainEntityId, + byDeepLink(mainEntityId) ? secondEntityId : null, + RequestSource.FORCE_ONLINE); + } else if (requestType == REQUEST_POST_RELATED_POSTS) { + int requestId = RandomUtils.getRandomInt(); + activeRequests.add(requestId); + DataRepository.getInstance().getPost(mainEntityId, RequestSource.FORCE_ONLINE, requestId); + setLoading(new Loading()); + } + requestForMoreData(); + } + + @Override + public boolean mustShowProgressView() { + // always show except on related post when main post is present + return !(requestType == REQUEST_POST_RELATED_POSTS && !getRecyclerViewAdapter().isEmpty() && getRecyclerViewAdapter().getItem(0) != null); + } + + @Override + public void requestForMoreData() { + int requestId = RandomUtils.getRandomInt(); + activeRequests.add(requestId); + switch (requestType) { + case REQUEST_MEMBER_FAVED_POSTS: + PoinilaNetService.getFavedPostByMember(mainEntityId, bookmark); + break; + case REQUEST_MEMBER_POSTS: + PoinilaNetService.getMemberPosts(mainEntityId, bookmark); + break; + case REQUEST_COLLECTION_POSTS: + DataRepository.getCollectionPosts( + mainEntityId, + byDeepLink(mainEntityId) ? secondEntityId : null, + bookmark, + BaseEvent.ReceiverName.PostListFragment); + break; + case REQUEST_POST_RELATED_POSTS: + // experimental + PoinilaNetService.getRelatedPosts(mainEntityId, bookmark, requestId); + break; + case REQUEST_EXPLORE: + PoinilaNetService.explore(mainEntityId, bookmark); + break; + } + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + final BaseEvent.ReceiverName receiverName = (requestType == REQUEST_POST_RELATED_POSTS) + ? BaseEvent.ReceiverName.PostRelatedPosts : BaseEvent.ReceiverName.PostListFragment; + switch (requestType) { + case REQUEST_POST_RELATED_POSTS: + return new PostAndRelatedPostAdapter(getActivity()); + case REQUEST_EXPLORE: + case REQUEST_MEMBER_FAVED_POSTS: + return new RecyclerViewAdapter(getActivity(), R.layout.post_dashboard) { + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + + if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + return new BaseViewHolder.EmptyViewHolder(v); + } + + return new DashboardPostViewHolder(v, receiverName); + } + + @Override + public void onBindViewHolder(BaseViewHolder holder, int position) { + if (getItemViewType(position) == VIEW_TYPE_LOAD_PROGRESS) { + StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams(); + layoutParams.setFullSpan(true); + } else { + super.onBindViewHolder(holder, position); + } + } + }; + case REQUEST_MEMBER_POSTS: + if (mainEntityId.equals(DataRepository.getInstance().getMyId())) { // user posts + return new RecyclerViewAdapter(getActivity(), R.layout.post_item_removable) { + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + + if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + return new BaseViewHolder.EmptyViewHolder(v); + } + + return new RemovablePostViewHolder(v, receiverName); + } + + @Override + protected boolean isStaggeredGridLayoutManager() { + return true; + } + }; + } else { + return new RecyclerViewAdapter(getActivity(), R.layout.post_dashboard) { + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + + if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + return new BaseViewHolder.EmptyViewHolder(v); + } + + return new DashboardPostViewHolder(v, receiverName); + } + + @Override + protected boolean isStaggeredGridLayoutManager() { + return true; + } + }; + } + case ConstantsUtils.REQUEST_COLLECTION_POSTS: + return new RecyclerViewAdapter(getActivity(), R.layout.post_in_collection) { + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + return new BaseViewHolder.EmptyViewHolder(v); + } + return new PostsOfCollectionViewHolder(v, receiverName); + } + + @Override + protected boolean isStaggeredGridLayoutManager() { + return true; + } + }; + } + return null; + } + + @Override + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + super.onSuccessfulListData(baseEvent, newBookmark); + List posts = ((PostsReceivedEvent) baseEvent).posts; + + getRecyclerViewAdapter().addItems(posts); + + if(!showedHelp && !PoinilaPreferences.getHelpStatus(getClass().getName()+ ".CollectionPage") && requestType == REQUEST_COLLECTION_POSTS){ + showHelp(); + showedHelp = true; + PoinilaPreferences.putHelpStatus(getClass().getName() + ".CollectionPage", true); + } + + } + + @Override + public void onSuccessfulInitData(BaseEvent baseEvent) { + super.onSuccessfulInitData(baseEvent); + + if (baseEvent instanceof CollectionReceivedEvent) { + collection = ((CollectionReceivedEvent) baseEvent).collection; + fillCollection(collection); + } else if (baseEvent instanceof PostReceivedEvent) { + if (getRecyclerViewAdapter().isEmpty()) { // click on notification participant + getRecyclerViewAdapter().addItem(((PostReceivedEvent) baseEvent).post, 0); + } else { + //TODO: replace nemikone ba avvalin item related post ha? + getRecyclerViewAdapter().setItem(((PostReceivedEvent) baseEvent).post, 0); + } + } + /*collection.description = event.collection.description; + collection.circleIDs = event.collection.circleIDs; + collection.name = event.collection.name; + collection.topic = event.collection.topic; + collection.coverImageUrls = event.collection.coverImageUrls;*/ + + } + + @Override + protected boolean isInitDataResponseValid(BaseEvent baseEvent) { + boolean res = true; + if (baseEvent instanceof CollectionReceivedEvent) { + res = requestType == REQUEST_COLLECTION_POSTS; + } else if (baseEvent instanceof PostReceivedEvent) { + res = (requestType == REQUEST_POST_RELATED_POSTS && + activeRequests.contains(((PostReceivedEvent) baseEvent).requestId)); + } + return res && super.isInitDataResponseValid(baseEvent); + } + + @Override + protected boolean isListDataResponseValid(BaseEvent baseEvent, String responseBookmark) { + boolean res; + PostsReceivedEvent event = (PostsReceivedEvent) baseEvent; + if (requestType == REQUEST_POST_RELATED_POSTS) + res = (event.receiverName == BaseEvent.ReceiverName.PostRelatedPosts + && activeRequests.contains(event.requestId)); + else if (requestType == REQUEST_EXPLORE) + res = event.receiverName == BaseEvent.ReceiverName.ExploredTagPosts; + else + res = event.receiverName == BaseEvent.ReceiverName.PostListFragment; + /*switch (requestID) { + case ((PostsReceivedEvent) baseEvent).receiverName + }*/ + return res && super.isListDataResponseValid(baseEvent, responseBookmark); + + } + + /*----Related post stuff------*/ + // all event belong to first post in adapter which we show in full detail + + + @Subscribe + public void onPostDetailsComponentClickEvent(PostComponentClickedUIEvent event) { + if (DataRepository.isUserAnonymous() && PostComponentClickedUIEvent.Type.guestCantPerformActions.contains(event.type)) { + Logger.toastError(R.string.error_guest_action); + return; + } + + + Post post = (Post)getRecyclerViewAdapter().getItem(0); + switch (event.type) { + case FaversList: + PageChanger.goToLikersList(getActivity(), post.faveCount, post.getId()); + break; + case Fave: + favePost(post); + getRecyclerViewAdapter().notifyItemChanged(0); + break; + case Comments: + PageChanger.goToCommentList(getActivity(), post.commentCount, post.getId()); + getRecyclerViewAdapter().notifyItemChanged(0); + break; + case RepostersList: + PageChanger.goToRepostList(getActivity(), post.repostCount, post.getId()); + break; + case Repost: + DialogLauncher.launchRepostDialog(getFragmentManager(), post); + getRecyclerViewAdapter().notifyItemChanged(0); + break; + case Poster: + Member member = post.author; + PageChanger.goToProfile(getActivity(), member); + break; + case Collection: + Collection collection = post.collection; + PageChanger.goToCollection(getActivity(), collection); + break; + case OriginalCollection: + collection = post.originalCollection; + PageChanger.goToCollection(getActivity(), collection); + break; + case Reference: + PageChanger.goToInlineBrowser(getActivity(), post.originalWebpage.toLowerCase(), post.getId(), post.name); + break; + case FullImage: + PageChanger.goToFullImage(getActivity(), post.imagesUrls.properPostImage(ImageUrls.ImageSize.FULL_SIZE).url); + break; + } + } + + private void favePost(Post post) { + if (!post.favedByMe) { + PoinilaNetService.favePost(post.getId()); + post.faveCount++; + //post.favedByMe = true; + //setText(faveCount, ++post.faveCount); + //faveBtn.setSelected(true); + } else { + PoinilaNetService.unfavePost(post.getId()); + post.faveCount--; + /*post.favedByMe = false; + setText(faveCount, --post.faveCount); + faveBtn.setSelected(false);*/ + } + + post.favedByMe ^= true; + + BusProvider.getSyncUIBus().post(new PostActionSyncEvent(post)); + + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + + super.onConfigurationChanged(newConfig); + int currentOrientation = getResources().getConfiguration().orientation; + + + + } + + @Subscribe + public void onUndofaveEvent(UndoFavePostEvent event) { + ((Post)getRecyclerViewAdapter().getItem(0)).favedByMe = false; + getRecyclerViewAdapter().notifyItemChanged(0); + // TODO: ??? + //faveBtn.setSelected(false); + } + + @Subscribe + public void onUndoUnfaveEvent(UndoUnfavePostEvent event) { + ((Post)getRecyclerViewAdapter().getItem(0)).favedByMe = true; + getRecyclerViewAdapter().notifyItemChanged(0); + // TODO: ??? + //faveBtn.setSelected(true); + } + + @Subscribe + public void onUpdateUiRepostEvent(UpdateUiRepostEvent event){ + +// Logger.log(getClass().getName() + " isSuccess : " + event.isSuccess, Logger.LEVEL_INFO); +// +// if(event.isSuccess) +// ((Post)getRecyclerViewAdapter().getItem(0)).repostCount++; +// else +// ((Post)getRecyclerViewAdapter().getItem(0)).repostCount--; +// +// getRecyclerViewAdapter().notifyItemChanged(0); + } + + @Subscribe + public void onUpdateUICommentEvent(UpdateUICommentEvent event){ + + if(getRecyclerViewAdapter().isEmpty())return; + + if(event.action == UpdateUICommentEvent.INCREMENT_COMMENTS) + ((Post)getRecyclerViewAdapter().getItem(0)).commentCount++; + else + ((Post)getRecyclerViewAdapter().getItem(0)).commentCount--; + + getRecyclerViewAdapter().notifyItemChanged(0); + } + + private class PostAndRelatedPostAdapter extends RecyclerViewAdapter> { + public static final int VIEW_TYPE_POST_FULL = 1; + public static final int VIEW_TYPE_POST_ITEM = 2; + + public PostAndRelatedPostAdapter(Context context) { + super(context, -1); + } + + @Override + protected PostDetailViewHolder getProperViewHolder(View v, int viewType) { + return null; + } + + @Override + public void onBindViewHolder(BaseViewHolder holder, int position) { + if (getItemViewType(position) == VIEW_TYPE_POST_FULL) { + StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams(); + layoutParams.setFullSpan(true); + } + super.onBindViewHolder(holder, position); + } + + @Override + public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + return new BaseViewHolder.EmptyViewHolder(mLayoutInflater.inflate(R.layout.progress, parent, false)); + }else if (viewType == VIEW_TYPE_POST_FULL) + return new PostDetailViewHolder(mLayoutInflater.inflate(R.layout.post_full_detail, parent, false)); + else + return new DashboardPostViewHolder(mLayoutInflater.inflate(R.layout.post_dashboard, parent, false), BaseEvent.ReceiverName.PostRelatedPosts); + + } + + @Override + protected boolean isStaggeredGridLayoutManager() { + return true; + } + + @Override + public int getItemViewType(int position) { + int type = super.getItemViewType(position); + + if(type == VIEW_TYPE_LOAD_PROGRESS){ + return type; + } + + return (position == 0) ? VIEW_TYPE_POST_FULL : VIEW_TYPE_POST_ITEM; + } + } + + private boolean byDeepLink(String collectionIdOrName) { + return !StringUtils.isInteger(collectionIdOrName); + } + + /*share collection and post*/ + //private ShareActionProvider mShareActionProvider; + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + menu.clear(); + if (Arrays.asList(REQUEST_COLLECTION_POSTS, REQUEST_POST_RELATED_POSTS).contains(requestType)){ + + // Inflate menu resource file. + inflater.inflate(R.menu.menu_post, menu); + + // Hidden Report Item + if(requestType != ConstantsUtils.REQUEST_POST_RELATED_POSTS) + menu.findItem(R.id.menu_item_report).setVisible(false); + + /*// Locate MenuItem with ShareActionProvider + MenuItem item = menu.findItem(R.id.menu_item_share); + // Fetch reference to the share action provider + mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);*/ + + } else + super.onCreateOptionsMenu(menu, inflater); + } + + @Override + public void onStart() { + super.onStart(); + + BusProvider.getSyncUIBus().register(this); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + + // handle item selection + switch (item.getItemId()) { + case R.id.menu_item_share: + // Handle this selection + + launchShareMenu(mainPost); + return true; + case R.id.menu_item_report: + // Handle this selection + if(getRecyclerViewAdapter().getItemCount() >= 1) + DialogLauncher.launchReportDialog( + getFragmentManager(), + R.string.report_post, + mainPost.id); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + private void launchShareMenu(Post post) { + Intent shareIntent = new Intent(Intent.ACTION_SEND); + shareIntent.setType("text/plain"); + String extra = null; + switch (requestType) { + case REQUEST_COLLECTION_POSTS: + + extra = getString(R.string.checkout_this_collection) + "\n" + + getString(R.string.collection_share_url, + ConstantsUtils.POINILA_ORIGIN_ADDRESS, + Uri.encode(collection.owner.uniqueName), + Uri.encode(collection.name)) + "\n" + + getString(R.string.ponila_world_of_interest); + + break; + case REQUEST_POST_RELATED_POSTS: + extra = post.name + "\n\n" + + post.summary + "\n" + + getString(R.string.checkout_this_post) + "\n" + + getString(R.string.post_share_url, ConstantsUtils.POINILA_ORIGIN_ADDRESS, + ((Post)getRecyclerViewAdapter().getItem(0)).getId()) + "\n" + + getString(R.string.ponila_world_of_interest); + break; + default: + return; + } + shareIntent.putExtra(Intent.EXTRA_TEXT, extra); + startActivity(Intent.createChooser(shareIntent, getString(R.string.share_dialog_title))); + } + + + @Subscribe + public void onExploreTag(ExploreTagEvent event) { + PageChanger.goToExplore(getActivity(), event.text); + } + + public void showHelp(){ + Help.getInstance().showPostsOfCollectionHelp(getActivity(), followButton); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/RegisterFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/RegisterFragment.java new file mode 100755 index 0000000..8613734 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/RegisterFragment.java @@ -0,0 +1,430 @@ +package com.shaya.poinila.android.presentation.view.fragments; + + +import android.Manifest; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.AsyncTask; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v13.app.FragmentCompat; +import android.text.Editable; +import android.text.Html; +import android.text.InputType; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.text.method.LinkMovementMethod; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.TextView; + +import com.mobsandgeeks.saripaar.ValidationError; +import com.mobsandgeeks.saripaar.Validator; +import com.mobsandgeeks.saripaar.annotation.Checked; +import com.mobsandgeeks.saripaar.annotation.Length;; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.SmsReceiver; +import com.shaya.poinila.android.presentation.uievent.SmsReceivedEvent; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.activity.BaseActivity; +import com.shaya.poinila.android.presentation.view.costom_view.ActivityResultPermissionDelegate.SimpleActivityResultPermissionDelegate; +import com.shaya.poinila.android.util.ConnectionUitls; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.utils.PonilaAccountManager; +import com.squareup.otto.Subscribe; + +import java.util.List; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.MyInfoReceivedEvent; +import data.event.RegisterResponseEvent; +import data.event.UserNameValidityEvent; +import data.model.Gender; +import manager.DataRepository; +import uk.co.chrisjenx.calligraphy.CalligraphyConfig; +import uk.co.chrisjenx.calligraphy.CalligraphyUtils; + +public class RegisterFragment extends BusFragment implements Validator.ValidationListener, FragmentCompat.OnRequestPermissionsResultCallback { + private static final String KEY_VERIFICATION_CODE = "verification code"; + + @Bind(R.id.card_title) + TextView title; + //actually doesn't exist in graphic design. I chose a similar layout + //for reusability purposes. + @Bind(R.id.left_arrow) + ImageView arrow; + + @Bind(R.id.verification_code) + EditText verificationCode; + + @Bind(R.id.fullname_input) + EditText fullName; + + /*@Length(min = 6, max = 32, messageResId = R.string.error_username_length) + @Pattern(regex = "[a-zA-Z0-9_\\.\\u0600-\\u06FF\\uFB8A\\u067E\\u0686\\u06AF]+", messageResId = R.string.error_username_rule)*/ + @Bind(R.id.username_input) + EditText userName; + + /*@Order(value = 1) + @Email + @Bind(R.id.email_input) + EditText email;*/ + + @Length(max = 40, min = 6, messageResId = R.string.error_password_length) + @Bind(R.id.password_input) + EditText password; + + /*@Order(value = 2) + @ConfirmPassword + @Bind(R.id.confirm_password_input) + EditText confirm_password;*/ + + @Bind(R.id.gender_container) + RadioGroup genderRadioGroup; + @Bind(R.id.male) + RadioButton maleRadioBtn; + @Bind(R.id.female) + RadioButton femaleRadioBtn; + + @Checked(messageResId = R.string.error_must_agree_terms) + @Bind(R.id.terms_checkbox) + CheckBox termsCheckBox; + + @Bind(R.id.terms_textview) + TextView termsTextView; + + @Bind(R.id.signup) + Button signupButton; + + @Bind(R.id.toggle_visibility) + ImageView toggleVisibilityBtn; + + private String verificationCodeString; + private Validator validator; + private boolean passwordVisible = false; + private boolean smsPermissionDeclined; + private SimpleActivityResultPermissionDelegate permissionHandlerDelegate; + + private boolean byEmail; + private String emailOrPhone; + + public RegisterFragment() { + // Required empty public constructor + } + + + @Override + public int getLayoutID() { + return R.layout.fragment_register; + } + + public static RegisterFragment newInstance(String code, boolean byEmail, String emailOrPhone) { + Bundle args = new Bundle(); + if(code != null) + args.putString(KEY_VERIFICATION_CODE, code); + + RegisterFragment fragment = new RegisterFragment(); + + fragment.byEmail = byEmail; + fragment.emailOrPhone = emailOrPhone; + fragment.setArguments(args); + return fragment; + } + + public static RegisterFragment newInstance(String code) { + + Bundle args = new Bundle(); + args.putString(KEY_VERIFICATION_CODE, code); + RegisterFragment fragment = new RegisterFragment(); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + validator = new Validator(this); + validator.setValidationListener(this); + if (getArguments() != null) + verificationCodeString = getArguments().getString(KEY_VERIFICATION_CODE, null); + else if (savedInstanceState != null) + verificationCodeString = savedInstanceState.getString(KEY_VERIFICATION_CODE, null); + else + verificationCodeString = ""; + + permissionHandlerDelegate = new SimpleActivityResultPermissionDelegate(){ + + @Override + public void handlePermissionDenied() { + Logger.longToast(getString(R.string.permission_reason_sms)); + smsPermissionDeclined = true; + } + + @Override + public void handlePermissionGranted() { + getActivity().registerReceiver(smsReceiver, new IntentFilter("android.provider.Telephony.SMS_RECEIVED")); + } + + @Override + public void handleValidResults(int requestCode, Intent data) {}// we don't start activity for result, a better design perhaps... + }; + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putString(KEY_VERIFICATION_CODE, verificationCodeString); + } + + @Override + protected void initUI() { + title.setText(getString(R.string.signup_in_poinila)); + arrow.setVisibility(View.GONE); + if (!TextUtils.isEmpty(verificationCodeString)) { + verificationCode.setText(verificationCodeString); + } + termsTextView.setText(Html.fromHtml( + "" + + getString(R.string.terms_of_condition_word) + " " + + getString(R.string.terms_of_condition_tail))); + termsTextView.setMovementMethod(LinkMovementMethod.getInstance()); + + termsCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if(!TextUtils.isEmpty(verificationCode.getText().toString())) + signupButton.setEnabled(isChecked); + } + }); + + verificationCode.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { + + } + + @Override + public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { + + } + + @Override + public void afterTextChanged(Editable editable) { + signupButton.setEnabled(true); +// signupButton.setEnabled(!TextUtils.isEmpty(verificationCode.getText().toString()) && termsCheckBox.isChecked()); + } + }); + + userName.setOnFocusChangeListener(new View.OnFocusChangeListener() { + @Override + public void onFocusChange(View v, boolean hasFocus) { + String tempUserName; + if (!hasFocus && !(tempUserName = ((EditText) v).getText().toString().trim()).isEmpty()) { + PoinilaNetService.checkUserNameValidity(tempUserName); + } + } + }); + } + + @Subscribe + public void onUserNameValidityResponse(UserNameValidityEvent event) { + if (!event.success) { + String error = ""; + switch (event.error) { + case UserNameValidityEvent.DUPLICATE: + error = getString(R.string.error_already_taken_username); + break; + case UserNameValidityEvent.RESERVED: + error = getString(R.string.error_invalid_username); + break; + case UserNameValidityEvent.LENGTH: + error = getString(R.string.error_username_length); + break; + case UserNameValidityEvent.RULE: + error = getString(R.string.error_username_rule); + break; + } + if (!TextUtils.isEmpty(error)) userName.setError(error); + } + } + + @OnClick(R.id.signup) + public void onSignup() { + validator.validate(); + //onValidationSucceeded(); + } + + @Subscribe + public void onRegisterResponse(RegisterResponseEvent event) { + + if (event.successful) + DataRepository.getInstance().getMyInfo(ConnectionUitls.isNetworkOnline(), MyInfoReceivedEvent.MY_INFO_TYPE.LOAD); + else if(event.errorCode == RegisterResponseEvent.USED_VERIFICATION_CODE){ + dismissProgressDialog(); + ViewUtils.temporaryError(verificationCode, getString(R.string.error_already_used_verification_code)); + } + else if (event.errorCode == RegisterResponseEvent.DUPLICATE_USERNAME) { + dismissProgressDialog(); + ViewUtils.temporaryError(userName, getString(R.string.error_already_taken_username)); + } else { + dismissProgressDialog(); + Logger.toast(R.string.error_fail_register); + } + } + + @Subscribe + public void onUserInfoReceived(MyInfoReceivedEvent event) { + + if(event.type != MyInfoReceivedEvent.MY_INFO_TYPE.LOAD) + return; + + onGettingInitDataResponse(event); + + new AsyncTask() { + + @Override + protected Void doInBackground(Object... params) { + DataRepository.syncWithMyInfoResponse((MyInfoReceivedEvent)params[0]); + return null; + } + + @Override + protected void onPostExecute(Void o) { + PonilaAccountManager.getInstance().initUserTag(); + decideAboutNextPage(); + } + + + }.execute(event); + + } + + private void decideAboutNextPage() { + PageChanger.goToSelectInterest(getActivity(), true); + getActivity().finish(); // one must not be able to navigate back to register + dismissProgressDialog(); + } + + public void fillVerificationCode(String code) { + verificationCode.setText(code); + } + + SmsReceiver smsReceiver = new SmsReceiver(); + + @Override + public void onStart() { + super.onStart(); + permissionHandlerDelegate.askForPermission(this, + Manifest.permission.RECEIVE_SMS, + BaseActivity.MY_PERMISSIONS_REQUEST_RECEIVE_SMS); + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + permissionHandlerDelegate.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + + @Override + public void onStop() { + super.onStop(); + // TODO: unregister receiver. but I don't know if it's correct. may be we should listen + // in all application life cycle + try{ + if (!smsPermissionDeclined) + getActivity().unregisterReceiver(smsReceiver); + }catch (IllegalArgumentException exception){ + // just ignore it since we don't know user granted permission or not + } + } + + + @Subscribe + public void onSmsReceived(SmsReceivedEvent event) { + fillVerificationCode(event.str); + } + + @Override + public void onValidationSucceeded() { + PoinilaNetService.register( + "", +// verificationCode.getText().toString().trim(), + fullName.getText().toString().trim(), + userName.getText().toString().trim(), + getSelectedGender(), + password.getText().toString().trim(), + byEmail, + emailOrPhone + ); + showProgressDialog(); + } + + @Override + public void onValidationFailed(List errors) { + for (ValidationError error : errors) { + View view = error.getView(); + String message = error.getCollatedErrorMessage(getActivity()); + + // Display error messages ;) + if (view instanceof EditText) { + ((EditText) view).setError(message); + } else { + Logger.toastError(message); + } + } + //Logger.toast(getString(R.string.signup_faild)); + } + + public Gender getSelectedGender() { + return genderRadioGroup.getCheckedRadioButtonId() == maleRadioBtn.getId() ? Gender.MALE : Gender.FEMALE; + } + + @OnClick(R.id.toggle_visibility) + public void onChangeVisibility() { + passwordVisible ^= true; // toggle + + int start = password.getSelectionStart(); + int end = password.getSelectionEnd(); + password.setInputType(passwordVisible ? + InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD : + InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); + CalligraphyUtils.applyFontToTextView(getActivity(), password, CalligraphyConfig.get().getFontPath()); + password.setSelection(start, end); + + toggleVisibilityBtn.setImageResource(passwordVisible ? + R.drawable.toggle_visible_nobel_32dp : + R.drawable.toggle_invisible_nobel_32dp); + } + + /*---------*/ + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/ResetPasswordFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/ResetPasswordFragment.java new file mode 100755 index 0000000..e850f1e --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/ResetPasswordFragment.java @@ -0,0 +1,221 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.Manifest; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.AsyncTask; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v13.app.FragmentCompat; +import android.text.TextUtils; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.SmsReceiver; +import com.shaya.poinila.android.presentation.uievent.SmsReceivedEvent; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.activity.BaseActivity; +import com.shaya.poinila.android.presentation.view.costom_view.ActivityResultPermissionDelegate.SimpleActivityResultPermissionDelegate; +import com.shaya.poinila.android.util.ConnectionUitls; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.utils.PonilaAccountManager; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import butterknife.ButterKnife; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.LoginFailedEvent; +import data.event.LoginSucceedEvent; +import data.event.MyInfoReceivedEvent; +import manager.DataRepository; + +/** + * Created by iran on 12/8/2015. + */ +public class ResetPasswordFragment extends BusFragment implements FragmentCompat.OnRequestPermissionsResultCallback { + + private static final String KEY_IDENTIFICATION_CODE = "identification code"; + @Bind(R.id.submit) + Button SubmitButton; + @Bind(R.id.email_or_phone_number) + EditText verificationCodeInput; + @Bind(R.id.password_input) + EditText passwordInput; + @Bind(R.id.card_title) + TextView title; + private String identificationCodeString; + private SimpleActivityResultPermissionDelegate permissionHandlerDelegate; + private boolean smsPermissionDeclined; + + @OnClick(R.id.submit) + public void onResetPass() { + + if (!TextUtils.isEmpty(passwordInput.getText().toString())) { + showProgressDialog(); + PoinilaNetService.resetPassword(passwordInput.getText().toString().trim(), verificationCodeInput.getText().toString().trim()); + + } else + Logger.toastError(R.string.error_password); + } + + @Subscribe + public void onSuccessfulResetPassword(LoginSucceedEvent event) { + DataRepository.getInstance().getMyInfo(ConnectionUitls.isNetworkOnline(), MyInfoReceivedEvent.MY_INFO_TYPE.LOAD); + } + + @Subscribe + public void onFailedResetPassword(LoginFailedEvent event) { + dismissProgressDialog(); + Logger.toast(getString(R.string.error_change_password_code)); + } + + @Subscribe + public void onUserInfoReceived(MyInfoReceivedEvent event) { + + if (event.type != MyInfoReceivedEvent.MY_INFO_TYPE.LOAD) + return; + + onGettingInitDataResponse(event); + + + new AsyncTask() { + + @Override + protected Void doInBackground(Object... params) { + DataRepository.syncWithMyInfoResponse((MyInfoReceivedEvent) params[0]); + return null; + } + + @Override + protected void onPostExecute(Void o) { + PonilaAccountManager.getInstance().initUserTag(); + PageChanger.goToDashboard(getActivity()); + dismissProgressDialog(); + } + + + }.execute(event); + + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) + identificationCodeString = getArguments().getString(KEY_IDENTIFICATION_CODE, null); + else if (savedInstanceState != null) + identificationCodeString = savedInstanceState.getString(KEY_IDENTIFICATION_CODE, null); + else + identificationCodeString = ""; + + permissionHandlerDelegate = new SimpleActivityResultPermissionDelegate() { + @Override + public void handlePermissionDenied() { + Logger.longToast(getString(R.string.permission_reason_sms)); + smsPermissionDeclined = true; + } + + @Override + public void handlePermissionGranted() { + getActivity().registerReceiver(smsReceiver, new IntentFilter("android.provider.Telephony.SMS_RECEIVED")); + } + + @Override + public void handleValidResults(int requestCode, Intent data) { + }// we don't start activity for result, a better design perhaps... + }; + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putString(KEY_IDENTIFICATION_CODE, identificationCodeString); + } + + public void fillIdentificationCodeInput(String code) { + verificationCodeInput.setText(code); + } + + SmsReceiver smsReceiver = new SmsReceiver(); + + @Override + public void onStart() { + super.onStart(); + permissionHandlerDelegate.askForPermission(this, + Manifest.permission.RECEIVE_SMS, + BaseActivity.MY_PERMISSIONS_REQUEST_RECEIVE_SMS); + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + permissionHandlerDelegate.onRequestPermissionsResult(requestCode, permissions, grantResults); + } + + @Override + public void onStop() { + super.onStop(); + // TODO: unregister receiver. but I don't know if it's correct. may be we should listen + // in all application life cycle + try { + if (!smsPermissionDeclined) + getActivity().unregisterReceiver(smsReceiver); + } catch (IllegalArgumentException exception) { + // just ignore it since we don't know user granted permission or not + } + } + + @Subscribe + public void onSmsReceived(SmsReceivedEvent event) { + verificationCodeInput.setText(event.str); + } + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutID() { + return R.layout.fragment_reset_password; + } + + @Override + protected void initUI() { + ViewUtils.setText(title, getString(R.string.reset_password)); + ButterKnife.findById(rootView, R.id.left_arrow).setVisibility(View.GONE); + if (!TextUtils.isEmpty(identificationCodeString)) + fillIdentificationCodeInput(identificationCodeString); + } + + public static ResetPasswordFragment newInstance(String code) { + + Bundle args = new Bundle(); + args.putString(KEY_IDENTIFICATION_CODE, code); + ResetPasswordFragment fragment = new ResetPasswordFragment(); + fragment.setArguments(args); + return fragment; + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/SearchFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/SearchFragment.java new file mode 100755 index 0000000..f173efd --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/SearchFragment.java @@ -0,0 +1,731 @@ +package com.shaya.poinila.android.presentation.view.fragments; + + +import android.animation.AnimatorSet; +import android.animation.ObjectAnimator; +import android.os.Bundle; +import android.os.Handler; +import android.support.annotation.Nullable; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewPropertyAnimator; +import android.view.ViewTreeObserver; +import android.view.animation.AccelerateInterpolator; +import android.view.inputmethod.EditorInfo; +import android.widget.EditText; +import android.widget.ImageButton; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.CollectionClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.FriendCirclesUpdated; +import com.shaya.poinila.android.presentation.uievent.FriendshipClickEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.NeutralDialogButtonClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.OnFollowUnfollowCollectionUIEvent; +import com.shaya.poinila.android.presentation.uievent.PositiveButtonClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PostClickedUIEvent; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.presentation.viewholder.BaseViewHolder; +import com.shaya.poinila.android.presentation.viewholder.DashboardPostViewHolder; +import com.shaya.poinila.android.presentation.viewholder.FollowableCollectionViewHolder; +import com.shaya.poinila.android.presentation.viewholder.MemberViewHolder; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.ResourceUtils; +import com.squareup.otto.Subscribe; +import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration; + +import butterknife.Bind; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.event.CollectionsReceivedEvent; +import data.event.MembersReceivedEvent; +import data.event.PostsReceivedEvent; +import data.model.Collection; +import data.model.FriendRequestAnswer; +import data.model.FriendshipStatus; +import data.model.Loading; +import data.model.Member; +import data.model.Post; +import manager.DBFacade; +import manager.DataRepository; + +import static android.support.v7.widget.StaggeredGridLayoutManager.VERTICAL; +import static java.util.Collections.singletonList; + + +// fragmenta ro joda nakardam be khatere bahse moshkelate inheritance tu subscrib haye otto. +// avval recyclerview ro GONE mizaram o adapteresh nulle chon set kardane listener ina be bag mikhore. + + +public class SearchFragment extends BusFragment { + private static final String POST = "post"; + private static final String COLLECTION = "collection"; + private static final String MEMBER = "member"; + private static final String TAG = "search fragment"; + + @Bind(R.id.recycler_view) + protected RecyclerView mRecyclerView; + + private static final long POST_ANIMATION_DURATION = 400; //800; // milliseconds + private static final long COLLECTION_ANIMATION_DURATION = 400; //600; // milliseconds + private static final long MEMBER_ANIMATION_DURATION = 400;// 400; // milliseconds + + @Bind(R.id.search_btn) + ImageButton searchButton; + + @Bind(R.id.search_field) + EditText searchField; + + @Bind(R.id.post_tag) + TextView post; + + @Bind(R.id.collection_tag) + TextView collection; + + @Bind(R.id.member_tag) + TextView member; + + @Bind(R.id.search_container) + ViewGroup searchBox; + + private RecyclerViewAdapter mAdapter; + private ViewPropertyAnimator first_animation; + private ViewPropertyAnimator second_animation; + private ViewPropertyAnimator third_animation; + private String selectedCategory = ""; + private float search_container_right; + private int tag_size; + private float search_field_right; + private Handler mHandler; + private int MEMBER_DIST; + private int COLLECTION_DIST; + private int POST_DIST; + private int TAG_WIDTH; + private int VELOCITY; + private String bookmark; + private boolean requestingIsLocked = false; + private String query; + private RecyclerView.OnScrollListener recyclerViewListener; + + private boolean hasLoading = false; + + private RecyclerView.ItemDecoration mItemDecoration; + + + public SearchFragment() { + // Required empty public constructor + + } + + public static SearchFragment newInstance(){ + SearchFragment fragment = new SearchFragment(); + + return fragment; + } + + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View v = super.onCreateView(inflater, container, savedInstanceState); + + TAG_WIDTH = ResourceUtils.covertDpToPixel(R.dimen.search_tag_width); + VELOCITY = (int) (TAG_WIDTH / (0.4)); // in dp/seconds + + runJustBeforeBeingDrawn(container, findSizesRunnable); + + mItemDecoration = new HorizontalDividerItemDecoration.Builder(getActivity()) + .sizeResId(R.dimen.divider_thickness) + .marginResId(R.dimen.border_thin) + .build(); + return v; + } + + + @Override + public int getLayoutID() { + return R.layout.fragment_search; + } + + @Override + protected void initUI() { + mRecyclerView.setVisibility(View.INVISIBLE); + + searchField.setPadding(searchField.getPaddingLeft(), searchField.getPaddingTop(), + searchField.getPaddingRight() + + //(int)ResourceUtils.getDimen(R.dimen.search_tag_width) + + (int) ResourceUtils.getDimen(R.dimen.padding_lvl2), + searchField.getPaddingBottom()); + searchButton.setEnabled(false); + + searchField.setEnabled(false); + searchField.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + if (actionId == EditorInfo.IME_ACTION_SEARCH) { + searchButton.performClick(); + } + return false; // ?? + } + }); + } + + @OnClick(R.id.search_btn) + public void onSearchClicked() { + loadMore = false; + bookmark = null; + if (mAdapter != null) { + mAdapter.clear(); + mAdapter = null; + } + mRecyclerView.setVisibility(View.GONE); + query = getQueryFromInputField(); + if (query == null) { + Logger.toast(R.string.error_short_query); + return; + } + requestingIsLocked = true; + + if(selectedCategory.equals(MEMBER)){ + mRecyclerView.addItemDecoration(mItemDecoration); + }else { + mRecyclerView.removeItemDecoration(mItemDecoration); + } + + initData(); + } + + public void onLoadMore() { + if (!requestingIsLocked) { + requestingIsLocked = true; + requestInitialData(); + } + } + + @Override + protected void requestInitialData() { + switch (selectedCategory) { + case POST: + PoinilaNetService.searchPostWithQuery(singletonList(query), bookmark); + break; + case COLLECTION: + PoinilaNetService.searchCollectionsWithQuery(singletonList(query), bookmark); + break; + case MEMBER: + PoinilaNetService.searchMembersWithQuery(singletonList(query), bookmark); + break; + } + } + + @Override + protected boolean isInitDataResponseValid(BaseEvent baseEvent) { + return super.isInitDataResponseValid(baseEvent) && !loadMore; + } + + protected boolean isListDataResponseValid(BaseEvent baseEvent, String bookmark) { + return !bookmark.equals(this.bookmark); + } + + @Override + public void onSuccessfulInitData(BaseEvent baseEvent) { + requestingIsLocked = false; + switch (selectedCategory) { + case POST: + if (((PostsReceivedEvent) baseEvent).posts.isEmpty()) + Logger.toast(R.string.error_nothing_found); + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setAdapter(getRecyclerViewAdapter()). + setStaggeredLayoutManager(VERTICAL, getResources().getInteger(R.integer.column_count)). + bindViewToAdapter(); + getRecyclerViewAdapter().resetData(((PostsReceivedEvent) baseEvent).posts); + + if(((PostsReceivedEvent) baseEvent).posts.size() >= 25){ + setLoading(new Loading()); + } + + + break; + case COLLECTION: + if (((CollectionsReceivedEvent) baseEvent).collections.isEmpty()) + Logger.toast(R.string.error_nothing_found); + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + // TODO: changed from gridview to this because of follow bar on some collections + setAdapter(getRecyclerViewAdapter()). + setStaggeredLayoutManager(VERTICAL, getResources().getInteger(R.integer.column_count)). + bindViewToAdapter(); + getRecyclerViewAdapter().resetData(((CollectionsReceivedEvent) baseEvent).collections); + + if(((CollectionsReceivedEvent) baseEvent).collections.size() >= 25){ + setLoading(new Loading()); + } + + break; + case MEMBER: + if (((MembersReceivedEvent) baseEvent).members.isEmpty()) + Logger.toast(R.string.error_nothing_found); + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setAdapter(getRecyclerViewAdapter()). + setLinearLayoutManager(VERTICAL). + bindViewToAdapter(); + getRecyclerViewAdapter().resetData(((MembersReceivedEvent) baseEvent).members); + + if(((MembersReceivedEvent) baseEvent).members.size() >= 25){ + setLoading(new Loading()); + } + + break; + } + mRecyclerView.removeOnScrollListener(lastUsedListener); + lastUsedListener = getRecyclerViewListener(); + mRecyclerView.addOnScrollListener(lastUsedListener); + + mRecyclerView.setVisibility(View.VISIBLE); + super.onSuccessfulInitData(baseEvent); + } + + public void onSuccessfulListData(BaseEvent baseEvent, String newBookmark) { + requestingIsLocked = false; + bookmark = newBookmark; + switch (selectedCategory) { + case POST: + getRecyclerViewAdapter().addItems(((PostsReceivedEvent) baseEvent).posts); + break; + case COLLECTION: + getRecyclerViewAdapter().addItems(((CollectionsReceivedEvent) baseEvent).collections); + break; + case MEMBER: + getRecyclerViewAdapter().addItems(((MembersReceivedEvent) baseEvent).members); + break; + } + } + + private void onGettingResult(BaseEvent event, String bookmark) { + if (isInitDataResponseValid(event)) { + this.bookmark = bookmark; + onSuccessfulInitData(event); + return; + } + + if (isListDataResponseValid(event, bookmark)) { + onSuccessfulListData(event, bookmark); + }else{ + onEndListData(); + } + } + + @Subscribe + public void onSearchPostResults(PostsReceivedEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.SearchFragment || + !selectedCategory.equals(POST)) + return; + onGettingResult(event, event.bookmark); + } + + @Subscribe + public void onSearchCollectionResults(CollectionsReceivedEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.SearchFragment || + !selectedCategory.equals(COLLECTION)) + return; + onGettingResult(event, event.bookmark); + } + + @Subscribe + public void onSearchPeopleResults(MembersReceivedEvent event) { + if (!selectedCategory.equals(MEMBER)) + return; + onGettingResult(event, event.bookmark); + } + + public void setLoading(Loading loading){ + hasLoading = true; + getRecyclerViewAdapter().setLoading(loading); + } + + public void removeLoading(){ + if(hasLoading) { + hasLoading = false; + getRecyclerViewAdapter().removeLoading(); + } + } + + private void onEndListData(){ + removeLoading(); + } + + private RecyclerViewAdapter getRecyclerViewAdapter() { + if (mAdapter == null) { + final BaseEvent.ReceiverName receiverName = BaseEvent.ReceiverName.SearchFragment; + switch (selectedCategory) { + case POST: + mAdapter = new RecyclerViewAdapter(getContext(), R.layout.post_dashboard) { + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + + if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + return new BaseViewHolder.EmptyViewHolder(v); + } + + return new DashboardPostViewHolder(v, receiverName); + } + + @Override + protected boolean isStaggeredGridLayoutManager() { + return true; + } + }; + break; + case COLLECTION: + mAdapter = new RecyclerViewAdapter(getContext(), R.layout.collection_followable) { + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + + if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + return new BaseViewHolder.EmptyViewHolder(v); + } + + return new FollowableCollectionViewHolder(v, receiverName); + } + }; + break; + case MEMBER: + mAdapter = new RecyclerViewAdapter(getContext(), R.layout.member_inlist) { + @Override + protected BaseViewHolder getProperViewHolder(View v, int viewType) { + + if(viewType == VIEW_TYPE_LOAD_PROGRESS){ + return new BaseViewHolder.EmptyViewHolder(v); + } + + return new MemberViewHolder(v, receiverName); + } + + + }; + break; + } + } + return mAdapter; + } + + @Override + public boolean mustShowProgressView() { + return true; + } + + + public ViewGroup getLoadableView() { + return mRecyclerView; + } + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + + private String getQueryFromInputField() { + String query = searchField.getText().toString(); + //return query; + return (query.trim().length() <= 1) ? null : query; + } + + @OnClick({R.id.post_tag, R.id.collection_tag, R.id.member_tag}) + public void onTagClick(View v) { + if (selectedCategory.isEmpty()) { + switch (v.getId()) { + case R.id.post_tag: + selectedCategory = POST; + post.setBackgroundResource(R.drawable.search_tag_active); + animate(MEMBER_DIST, COLLECTION_DIST, POST_DIST - TAG_WIDTH); + break; + case R.id.collection_tag: + selectedCategory = COLLECTION; + collection.setBackgroundResource(R.drawable.search_tag_active); + animate(MEMBER_DIST, COLLECTION_DIST - TAG_WIDTH, POST_DIST); + break; + case R.id.member_tag: + selectedCategory = MEMBER; + member.setBackgroundResource(R.drawable.search_tag_active); + animate(MEMBER_DIST - TAG_WIDTH, COLLECTION_DIST, POST_DIST); + break; + } + searchField.setEnabled(true); + searchButton.setEnabled(true); + } else { + animateBack(); + switch (v.getId()) { + case R.id.post_tag: + post.setBackgroundResource(R.drawable.search_tag_inactive); + break; + case R.id.collection_tag: + collection.setBackgroundResource(R.drawable.search_tag_inactive); + break; + case R.id.member_tag: + member.setBackgroundResource(R.drawable.search_tag_inactive); + break; + } + searchField.setEnabled(false); + searchButton.setEnabled(false); + selectedCategory = ""; + searchField.setText(""); + } + } + + public void animate(int memberDist, int collectionDist, int postDist) { + ObjectAnimator oa1 = ObjectAnimator.ofFloat( + member, "x", member.getLeft() + memberDist).setDuration(MEMBER_ANIMATION_DURATION);//(memberDist * 1000/VELOCITY); + ObjectAnimator oa2 = ObjectAnimator.ofFloat( + collection, "x", collection.getLeft() + collectionDist).setDuration(COLLECTION_ANIMATION_DURATION);//(collectionDist * 1000/VELOCITY); + ObjectAnimator oa3 = ObjectAnimator.ofFloat( + post, "x", post.getLeft() + postDist).setDuration(POST_ANIMATION_DURATION);//(postDist * 1000/VELOCITY); + AnimatorSet set = new AnimatorSet(); + set.setInterpolator(new AccelerateInterpolator()); + set.playTogether(oa1, oa2, oa3); + set.start(); + } + + public void animateBack() { + ObjectAnimator oa1 = ObjectAnimator.ofFloat( + member, "x", member.getLeft()).setDuration(MEMBER_ANIMATION_DURATION);//((long)Math.abs(member.getX() - member.getLeft()) * 1000/VELOCITY); + ObjectAnimator oa2 = ObjectAnimator.ofFloat( + collection, "x", collection.getLeft()).setDuration(COLLECTION_ANIMATION_DURATION);//((long)Math.abs(collection.getX() - collection.getLeft()) * 1000/VELOCITY); + ObjectAnimator oa3 = ObjectAnimator.ofFloat( + post, "x", post.getLeft()).setDuration(POST_ANIMATION_DURATION);//((long)Math.abs(post.getX() - post.getLeft()) * 1000/VELOCITY); + AnimatorSet set = new AnimatorSet(); + set.setInterpolator(new AccelerateInterpolator()); + set.playTogether(oa1, oa2, oa3); + set.start(); + } + + private static void runJustBeforeBeingDrawn(final View view, final Runnable runnable) { + final ViewTreeObserver vto = view.getViewTreeObserver(); + final ViewTreeObserver.OnPreDrawListener preDrawListener = new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + //Log.d(App.APPLICATION_TAG, CLASS_TAG + "onpredraw"); + runnable.run(); + final ViewTreeObserver vto = view.getViewTreeObserver(); + vto.removeOnPreDrawListener(this); + return true; + } + }; + vto.addOnPreDrawListener(preDrawListener); + } + + Runnable findSizesRunnable = new Runnable() { + @Override + public void run() { + MEMBER_DIST = post.getRight() - member.getLeft(); + COLLECTION_DIST = post.getRight() - collection.getLeft(); + POST_DIST = post.getRight() - post.getLeft(); + } + }; + + @Override + public void onStop() { + super.onStop(); + searchField.setText(""); + } + + private boolean loadMore = false; + + public RecyclerView.OnScrollListener getRecyclerViewListener() { + switch (selectedCategory) { + case POST: + return getPostListListener(); + case COLLECTION: + return getCollectionListListener(); + case MEMBER: + return getMemberScrollListener(); + } + // must never happen + return new RecyclerView.OnScrollListener() { + }; + } + + private RecyclerView.OnScrollListener getPostListListener() { + return new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + int[] lastVisibleItems = ((StaggeredGridLayoutManager) recyclerView.getLayoutManager()). + findLastVisibleItemPositions(null); + int itemCount = getRecyclerViewAdapter().getItemCount() - 1; + if ((lastVisibleItems[0] == itemCount || + lastVisibleItems[1] == itemCount) && dy != 0) { + loadMore = true; + onLoadMore(); + } + } + }; + } + + private RecyclerView.OnScrollListener getCollectionListListener() { + return new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + int[] lastVisibleItems = ((StaggeredGridLayoutManager) recyclerView.getLayoutManager()). + findLastVisibleItemPositions(null); + int itemCount = getRecyclerViewAdapter().getItemCount() - 1; + if ((lastVisibleItems[0] == itemCount || + lastVisibleItems[1] == itemCount) && dy != 0) { + loadMore = true; + onLoadMore(); + } + } + }; + } + + private RecyclerView.OnScrollListener getMemberScrollListener() { + return new RecyclerView.OnScrollListener() { + @Override + public void onScrolled(RecyclerView recyclerView, int dx, int dy) { + if (((LinearLayoutManager) recyclerView.getLayoutManager()).findLastVisibleItemPosition() == + getRecyclerViewAdapter().getItemCount() - 1 && dy != 0) { + loadMore = true; + onLoadMore(); + } + } + }; + } + + RecyclerView.OnScrollListener lastUsedListener; + + + + /*----------------*/ + // TODO; I think its better we replace fragments with each other for taking use of + // event handling on ListFragments like MemberListFragment + + /*--------Post----------*/ + + @Subscribe + public void onProfilePicClickedEvent(MemberClickedUIEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.SearchFragment) + return; + + Object item = getRecyclerViewAdapter().getItem(event.adapterPosition); + + Member member = null; + if (item instanceof Post) { + member = ((Post) item).author; + } else if (item instanceof Collection) { + member = ((Collection) item).owner; + } else if (item instanceof Member) { + member = ((Member) item); + } + if (member == null) return; + PageChanger.goToProfile(getActivity(), member); + } + + @Subscribe + public void onPostClicked(PostClickedUIEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.SearchFragment) + return; + Post post = ((Post) getRecyclerViewAdapter().getItem(event.adapterPosition)); + PageChanger.goToPost(getActivity(), post); + } + + + /*-----Collection------*/ + + + private int clickedItemPosition; + + @Subscribe + public void onPositiveDialogButton(PositiveButtonClickedUIEvent event) { + Member member = ((Member) getRecyclerViewAdapter().getItem(clickedItemPosition)); + switch (member.friendshipStatus) { + case NotFriend: + PoinilaNetService.friendRequest(member.getId(), DBFacade.getDefaultCircle().id); + member.friendshipStatus = FriendshipStatus.Pending; + break; + case WaitingForAction: // sending request + PoinilaNetService.answerFriendRequest(member.id, (FriendRequestAnswer)event.getData(), DBFacade.getDefaultCircle().id); + member.friendshipStatus = FriendshipStatus.IsFriend; + break; + case IsFriend: // removing friend + PoinilaNetService.removeFriend(member.getId()); + member.friendshipStatus = FriendshipStatus.NotFriend; + break; + case Pending: // no action yet + break; + } + getRecyclerViewAdapter().notifyItemChanged(clickedItemPosition); + } + + @Subscribe + public void onCollectionClicked(CollectionClickedUIEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.SearchFragment) + return; + + Object item = getRecyclerViewAdapter().getItem(event.adapterPosition); + Collection collection = null; + if (item instanceof Post) { + collection = ((Post) item).collection; + } else if (item instanceof Collection) { + collection = ((Collection) item); + } + if (collection == null) return; + PageChanger.goToCollection(getActivity(), collection); + + } + + /*-------Member------*/ + @Subscribe + public void onNeutralDialogButton(NeutralDialogButtonClickedUIEvent event) { + Member clickedMember = ((Member) getRecyclerViewAdapter().getItem(clickedItemPosition)); + DialogLauncher.launchChangeFriendCircle(getFragmentManager(), clickedMember); + } + + @Subscribe + public void onShowFriendShipDialog(FriendshipClickEvent event) { + // handling anonymous + if (DataRepository.isUserAnonymous()) { + Logger.toastError(R.string.error_guest_action); + return; + } + + Member member = (Member) getRecyclerViewAdapter().getItem(event.adapterPosition); + DialogLauncher.launchFriendshipDialog(member, getFragmentManager()); + clickedItemPosition = event.adapterPosition; + } + + @Subscribe + public void onFollowCollection(OnFollowUnfollowCollectionUIEvent event) { + // handling anonymous + if (DataRepository.isUserAnonymous()) { + Logger.toastError(R.string.error_guest_action); + return; + } + + Collection collection = (Collection) getRecyclerViewAdapter().getItem(event.adapterPosition); + if (event.follow) { + PoinilaNetService.followCollection(collection.getId()); + } else { + PoinilaNetService.unfollowCollection(collection.getId()); + } + collection.followedByMe ^= true; // toggle boolean by xor ing with "True". + getRecyclerViewAdapter().notifyItemChanged(event.adapterPosition); + } + + @Subscribe + public void onFriendCirclesUpdated(FriendCirclesUpdated event) { + if (selectedCategory.equals(MEMBER)) { + int index = getRecyclerViewAdapter().getItems().indexOf(event.member); + if (index < 0) return; + + ((Member) getRecyclerViewAdapter().getItem(index)).circle_ids = event.selectedCirclesIDs; + } + } + +} + diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/VerificationRequestFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/VerificationRequestFragment.java new file mode 100755 index 0000000..19c966a --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/VerificationRequestFragment.java @@ -0,0 +1,134 @@ +package com.shaya.poinila.android.presentation.view.fragments; + +import android.text.InputType; +import android.util.Patterns; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.RadioGroup; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.activity.SignUpLoginActivity; +import com.shaya.poinila.android.util.Logger; +import com.squareup.otto.Subscribe; + +import butterknife.Bind; +import butterknife.ButterKnife; +import butterknife.OnClick; +import data.PoinilaNetService; +import data.event.VerificationRequestResponse; + +/** + * Created by iran on 12/6/2015. + */ +public class VerificationRequestFragment extends BusFragment { + @Bind(R.id.card_title) + TextView titleTextView; + @Bind(R.id.radio_group) + RadioGroup optionsRadioGroup; + @Bind(R.id.input_field) + EditText inputField; + @Bind(R.id.input_filed_icon) + ImageView inputFieldIcon; + @Bind(R.id.verify_button) + Button verifyButton; + private boolean mVerificationByEmail; + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + } + + @Override + public ViewGroup getLoadableView() { + return null; + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutID() { + return R.layout.fragment_request_verification_code; + } + + @Override + protected void initUI() { + //backForthButtonsBox.setBackForthListener(this); + ButterKnife.findById(rootView, R.id.left_arrow).setVisibility(View.GONE); + titleTextView.setText(R.string.verifying); + optionsRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + switch (checkedId) { + case R.id.email_option: + onMailOption(); + break; + case R.id.sms_option: + onSmsOption(); + break; + } + } + }); + if (mVerificationByEmail) onMailOption(); + else onSmsOption(); + } + + private void onSmsOption() { + mVerificationByEmail = false; + inputField.setInputType(InputType.TYPE_CLASS_PHONE); + inputFieldIcon.setImageResource(R.drawable.phone_48dp); + } + + private void onMailOption() { + mVerificationByEmail = true; + inputField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); + inputFieldIcon.setImageResource(R.drawable.email_48dp); + } + + @Subscribe + public void onVerifyResponse(VerificationRequestResponse event) { + dismissProgressDialog(); + if (event.succeed) { + ((SignUpLoginActivity) getActivity()).goToRegister(null, event.byEmail, event.emailOrPhone); + Logger.toast(mVerificationByEmail ? R.string.success_verification_mail : R.string.success_verification_sms); + } else { + ViewUtils.temporaryError(inputField, event.errorExplanation); + } + optionsRadioGroup.setEnabled(true); + } + + @OnClick(R.id.verify_button) + public void onVerificationRequest() { + showProgressDialog(); + String userText = inputField.getText().toString().trim(); + if (mVerificationByEmail && !Patterns.EMAIL_ADDRESS.matcher(userText).matches()) { + inputField.setText(""); + ViewUtils.temporaryError(inputField, getString(R.string.error_invalid_email)); + return; + } else if (!mVerificationByEmail && !Patterns.PHONE.matcher(userText).matches()) { + inputField.setText(""); + ViewUtils.temporaryError(inputField, getString(R.string.error_invalid_phone)); + return; + } + /*if (!mVerificationByEmail){ // sms + initData(); + }else{*//* + Logger.toast(R.string.success_verification_mail); + //}*/ + optionsRadioGroup.setEnabled(false); + PoinilaNetService.requestVerificationCode(mVerificationByEmail, userText); + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/notification/NCollectionListFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/notification/NCollectionListFragment.java new file mode 100755 index 0000000..0f11c17 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/notification/NCollectionListFragment.java @@ -0,0 +1,89 @@ +package com.shaya.poinila.android.presentation.view.fragments.notification; + +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.View; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.view.fragments.CollectionListFragment; +import com.shaya.poinila.android.presentation.view.fragments.ListBusFragment; +import com.shaya.poinila.android.presentation.viewholder.EditableCollectionViewHolder; +import com.shaya.poinila.android.presentation.viewholder.notification.NEditableCollectionViewHolder; + +import java.util.List; + +import data.event.BaseEvent; +import data.model.Collection; + +import static android.support.v7.widget.LinearLayoutManager.VERTICAL; +import static com.shaya.poinila.android.util.ResourceUtils.getInteger; + +/** + * Created by iran on 6/14/2016. + */ +public class NCollectionListFragment extends CollectionListFragment { + + List mData; + + @Override + protected void initUI() { +// super.initUI(); + + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setAdapter(getRecyclerViewAdapter()). + setGridLayoutManager(VERTICAL, getInteger(R.integer.column_count)). + bindViewToAdapter(); + + if(mData != null){ + getRecyclerViewAdapter().addItems(mData); + } + } + + public static NCollectionListFragment newInstance(List list){ + NCollectionListFragment fragment = new NCollectionListFragment(); + fragment.mData = list; + return fragment; + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return null; + } + + @Override + public void requestForMoreData() { + + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + return new RecyclerViewAdapter(getActivity(), R.layout.collection_editable) { + @Override + protected NEditableCollectionViewHolder getProperViewHolder(View v, int viewType) { + return new NEditableCollectionViewHolder(v, BaseEvent.ReceiverName.CollectionListFragment); + } + }; + } + + @Override + protected boolean sendsRequestAutomatically() { + return false; + } + + @Override + protected void requestInitialData() { + + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutID() { + return R.layout.recycler_view_full; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/fragments/notification/NPostListFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/notification/NPostListFragment.java new file mode 100755 index 0000000..37f2e88 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/fragments/notification/NPostListFragment.java @@ -0,0 +1,145 @@ +package com.shaya.poinila.android.presentation.view.fragments.notification; + +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; +import android.view.View; + +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewAdapter; +import com.shaya.poinila.android.presentation.presenter.RecyclerViewProvider; +import com.shaya.poinila.android.presentation.uievent.CollectionClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PostClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.SuggestionPosts; +import com.shaya.poinila.android.presentation.view.fragments.ListBusFragment; +import com.shaya.poinila.android.presentation.viewholder.BaseViewHolder; +import com.shaya.poinila.android.presentation.viewholder.DashboardPostViewHolder; +import com.shaya.poinila.android.presentation.viewholder.PostViewHolder; +import com.shaya.poinila.android.utils.PushNotificationUtils; +import com.squareup.otto.Subscribe; + +import java.util.List; + +import data.PoinilaNetService; +import data.event.BaseEvent; +import data.model.Collection; +import data.model.Member; +import data.model.Post; + +/** + * Created by iran on 6/15/2016. + */ +public class NPostListFragment extends ListBusFragment { + + private List mData; + private String ids; + private PushNotificationUtils.NOTIFICATION_TYPE type; + + public static NPostListFragment newInstance(List list, PushNotificationUtils.NOTIFICATION_TYPE type){ + NPostListFragment fragment = new NPostListFragment(); + fragment.mData = list; + fragment.type = type; + return fragment; + } + + public static NPostListFragment newInstance(String ids, PushNotificationUtils.NOTIFICATION_TYPE type){ + NPostListFragment fragment = new NPostListFragment(); + fragment.ids = ids; + fragment.type = type; + return fragment; + } + + @Override + protected void initUI() { +// super.initUI(); + + mRecyclerView = new RecyclerViewProvider(mRecyclerView). + setStaggeredLayoutManager(StaggeredGridLayoutManager.VERTICAL, + getResources().getInteger(R.integer.column_count)). + setAdapter(getRecyclerViewAdapter()). + bindViewToAdapter(); + + if(mData != null) + getRecyclerViewAdapter().addItems(mData); + + } + + @Override + public void onStart() { + super.onStart(); + } + + @Override + protected RecyclerView.OnScrollListener getRecyclerViewListener() { + return null; + } + + @Override + public void requestForMoreData() { + + } + + @Override + public RecyclerViewAdapter createAndReturnRVAdapter() { + + return new RecyclerViewAdapter(getActivity(), R.layout.post_dashboard) { + @Override + protected DashboardPostViewHolder getProperViewHolder(View v, int viewType) { + return new DashboardPostViewHolder(v, BaseEvent.ReceiverName.NPostListFragment); + } + }; + + } + + + + @Override + protected boolean sendsRequestAutomatically() { + return true; + } + + @Override + protected void requestInitialData() { + + if(!type.equals(PushNotificationUtils.NOTIFICATION_TYPE.POST_SUGGESTION)) return; + + PoinilaNetService.getSuggestedPosts(ids); + + } + + @Override + public boolean mustShowProgressView() { + return false; + } + + @Override + public int getLayoutID() { + return R.layout.recycler_view_full; + } + + @Subscribe + public void onPostClickedEvent(PostClickedUIEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.NPostListFragment) return; + PageChanger.goToPost(getActivity(), getRecyclerViewAdapter().getItem(event.adapterPosition)); + } + + @Subscribe + public void onProfilePicClickedEvent(MemberClickedUIEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.NPostListFragment) return; + Member member =getRecyclerViewAdapter().getItem(event.adapterPosition).author; + PageChanger.goToProfile(getActivity(), member); + } + + @Subscribe + public void onPostCollectionClickedEvent(CollectionClickedUIEvent event) { + if (event.receiverName != BaseEvent.ReceiverName.NPostListFragment) return; + Collection collection = getRecyclerViewAdapter().getItem(event.adapterPosition).collection; + PageChanger.goToCollection(getActivity(), collection); + } + + @Subscribe + public void onSuggestionPosts(SuggestionPosts event){ + getRecyclerViewAdapter().addItems(event.posts); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/help/Help.java b/src/main/java/com/shaya/poinila/android/presentation/view/help/Help.java new file mode 100755 index 0000000..fda793b --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/help/Help.java @@ -0,0 +1,119 @@ +package com.shaya.poinila.android.presentation.view.help; + +import android.app.Activity; +import android.app.Dialog; +import android.graphics.Rect; +import android.support.v7.app.AlertDialog; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.fragments.BaseFragment; +import com.shaya.poinila.android.presentation.view.help.masks.BaseMaskView; +import com.shaya.poinila.android.presentation.view.help.masks.CollectionMaskView; +import com.shaya.poinila.android.presentation.view.help.masks.CreateMaskView; +import com.shaya.poinila.android.presentation.view.help.masks.DashboardMaskView; +import com.shaya.poinila.android.presentation.view.help.masks.PostRelatedPostMaskView; +import com.shaya.poinila.android.presentation.view.help.masks.PostsOfCollectionMaskView; +import com.shaya.poinila.android.presentation.view.help.masks.ProfileMaskView; + +/** + * Created by iran on 5/23/2016. + */ +public class Help { + private static Help instance = null; + private boolean showingHelp = false; + private BaseFragment mPage; + + private Dialog help; + + private Help(){ + + } + + public static Help getInstance(){ + if(instance == null){ + instance = new Help(); + } + return instance; + } + + public void showDashboardHelp(Activity activity, View itemView){ + + DashboardMaskView helpView = new DashboardMaskView(activity, itemView); + initDialog(activity, helpView); + + } + + public void showPostRelatedPostsHelp(Activity activity, View itemView){ + + PostRelatedPostMaskView helpView = new PostRelatedPostMaskView(activity, itemView); + initDialog(activity, helpView); + + } + + public void showFollowedCollectionHelp(Activity activity, View itemView){ + + CollectionMaskView helpView = new CollectionMaskView(activity, itemView); + initDialog(activity, helpView); + } + + public void showProfileHelp(Activity activity, View itemView){ + + ProfileMaskView helpView = new ProfileMaskView(activity, itemView); + initDialog(activity, helpView); + + } + + public void showNewPostHelp(Activity activity, View itemView){ + + CreateMaskView helpView = new CreateMaskView(activity, itemView); + initDialog(activity, helpView); + } + + public void showPostsOfCollectionHelp(Activity activity, View itemView){ + + PostsOfCollectionMaskView helpView = new PostsOfCollectionMaskView(activity, itemView); + initDialog(activity, helpView); + } + + private void initDialog(Activity activity, BaseMaskView helpView){ + if(!isShowingHelp()){ + + helpView.setStatusBarHeight(getStatusBarHeight(activity.getWindow())); + + help = new Dialog(activity, android.R.style.Theme_Translucent_NoTitleBar); + help.requestWindowFeature(Window.FEATURE_NO_TITLE); + help.setContentView(helpView); + help.getWindow().setBackgroundDrawableResource(android.R.color.transparent); + help.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); + help.show(); + + showingHelp = true; + + helpView.setOnNextBtnListener(new OnNextButtonListener() { + @Override + public void onClick(View view) { + help.dismiss(); + showingHelp = false; + } + }); + } + + } + + public boolean isShowingHelp(){ + return showingHelp; + } + + private int getStatusBarHeight(Window window){ + Rect rectangle = new Rect(); + window.getDecorView().getWindowVisibleDisplayFrame(rectangle); + return rectangle.top; + } + + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/help/OnNextButtonListener.java b/src/main/java/com/shaya/poinila/android/presentation/view/help/OnNextButtonListener.java new file mode 100755 index 0000000..a67a5e2 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/help/OnNextButtonListener.java @@ -0,0 +1,11 @@ +package com.shaya.poinila.android.presentation.view.help; + +import android.app.Dialog; +import android.view.View; + +/** + * Created by iran on 5/24/2016. + */ +public interface OnNextButtonListener { + public void onClick(View view); +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/help/fragments/CreateHelpFragment.java b/src/main/java/com/shaya/poinila/android/presentation/view/help/fragments/CreateHelpFragment.java new file mode 100755 index 0000000..7d1ce31 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/help/fragments/CreateHelpFragment.java @@ -0,0 +1,57 @@ +package com.shaya.poinila.android.presentation.view.help.fragments; + +import android.app.DialogFragment; +import android.app.FragmentManager; +import android.app.FragmentTransaction; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.help.masks.CreateMaskView; + +/** + * Created by iran on 5/24/2016. + */ +public class CreateHelpFragment extends DialogFragment { + + private View view; + + public CreateHelpFragment(){ + + } + + public static CreateHelpFragment newInstance(View view){ + CreateHelpFragment dialogFragment = new CreateHelpFragment(); + dialogFragment.view = view; + return dialogFragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); + getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.gray_transparent))); + } + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return view; + } + + public void show(FragmentManager manager) { +// mDismissed = false; +// mShownByMe = true; + FragmentTransaction ft = manager.beginTransaction(); + ft.add(this, getClass().getName()); + ft.commit(); + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/BaseMaskView.java b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/BaseMaskView.java new file mode 100755 index 0000000..bfa5a29 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/BaseMaskView.java @@ -0,0 +1,113 @@ +package com.shaya.poinila.android.presentation.view.help.masks; + +import android.app.Dialog; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; +import android.graphics.Rect; +import android.graphics.RectF; +import android.view.View; +import android.view.Window; +import android.widget.Button; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.help.OnNextButtonListener; + +/** + * Created by iran on 5/24/2016. + */ +public abstract class BaseMaskView extends RelativeLayout implements View.OnClickListener { + + protected Button nextBtn; + protected TextView descView; + + private int location[] = new int[2]; + private boolean hasLocation = false; + + protected OnNextButtonListener btnListener; + + protected Paint transparentPaint; + private View itemView; + + private int statusBarHeight = 0; + + public BaseMaskView(Context context, View itemView) { + super(context); + + inflate(context, getLayoutResource(), this); + + descView = (TextView)findViewById(getDescViewId()); + nextBtn = (Button)findViewById(getNextBtnId()); + nextBtn.setOnClickListener(this); + init(); + + this.itemView = itemView; + + transparentPaint = new Paint(); + transparentPaint.setColor(getResources().getColor(android.R.color.transparent)); + transparentPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); + + } + + protected abstract void init(); + protected abstract int getLayoutResource(); + protected abstract int getDescViewId(); + protected abstract int getNextBtnId(); + + + public BaseMaskView setOnNextBtnListener(OnNextButtonListener btnListener) { + this.btnListener = btnListener; + return this; + } + + @Override + protected void dispatchDraw(Canvas canvas) { + + if(location == null || itemView == null) return; + + Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888); + Canvas osCanvas = new Canvas(bitmap); + + RectF outerRectangle = new RectF(0, 0, getWidth(), getHeight()); + + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setColor(getResources().getColor(R.color.help_bg)); + osCanvas.drawRect(outerRectangle, paint); + + paint.setColor(Color.TRANSPARENT); + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT)); +// float centerX = getWidth() / 2; +// float centerY = getHeight() / 2; +// float radius = 100; + + + RectF itemRect = new RectF(location[0], location[1] - statusBarHeight, location[0] + itemView.getWidth(), (location[1] + itemView.getHeight()) - statusBarHeight); + osCanvas.drawRect(itemRect, paint); + canvas.drawBitmap(bitmap, 0, 0, null); + + super.dispatchDraw(canvas); + + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + + if(!hasLocation && itemView != null){ + itemView.getLocationInWindow(location); + hasLocation = true; + } + + } + + public BaseMaskView setStatusBarHeight(int statusBarHeight) { + this.statusBarHeight = statusBarHeight; + return this; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/CollectionMaskView.java b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/CollectionMaskView.java new file mode 100755 index 0000000..7120c91 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/CollectionMaskView.java @@ -0,0 +1,51 @@ +package com.shaya.poinila.android.presentation.view.help.masks; + +import android.content.Context; +import android.view.View; + +import com.shaya.poinila.android.presentation.R; + +/** + * Created by iran on 5/24/2016. + */ +public class CollectionMaskView extends BaseMaskView implements View.OnClickListener { + + + protected int level = 1; + + + public CollectionMaskView(Context context, View itemView) { + super(context, itemView); + } + + @Override + protected void init() { + // TODO + } + + @Override + protected int getLayoutResource() { + return R.layout.mask_followed_collections; + } + + @Override + protected int getDescViewId() { + return R.id.mask_followed_collections_description; + } + + @Override + protected int getNextBtnId() { + return R.id.mask_followed_collections_btn; + } + + @Override + public void onClick(View v) { + level++; + switch (level){ + default: + btnListener.onClick(nextBtn); + } + + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/CreateMaskView.java b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/CreateMaskView.java new file mode 100755 index 0000000..bbf2f13 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/CreateMaskView.java @@ -0,0 +1,54 @@ +package com.shaya.poinila.android.presentation.view.help.masks; + +import android.content.Context; +import android.view.View; + +import com.shaya.poinila.android.presentation.R; + +/** + * Created by iran on 5/24/2016. + */ +public class CreateMaskView extends BaseMaskView{ + protected int level = 1; + + + public CreateMaskView(Context context, View itemView) { + super(context, itemView); + } + + @Override + protected void init() { + descView.setText(R.string.help_create_description); + } + + @Override + protected int getLayoutResource() { + return R.layout.mask_create; + } + + @Override + protected int getDescViewId() { + return R.id.mask_create_description; + } + + @Override + protected int getNextBtnId() { + return R.id.mask_create_btn; + } + + @Override + public void onClick(View v) { + + level++; + + switch (level){ + default: + if(btnListener != null) + btnListener.onClick(nextBtn); + } + + + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/DashboardMaskView.java b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/DashboardMaskView.java new file mode 100755 index 0000000..0678a41 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/DashboardMaskView.java @@ -0,0 +1,60 @@ +package com.shaya.poinila.android.presentation.view.help.masks; + +import android.content.Context; +import android.view.View; + +import com.shaya.poinila.android.presentation.R; + +/** + * Created by iran on 5/24/2016. + */ +public class DashboardMaskView extends BaseMaskView{ + + protected int level = 1; + + public DashboardMaskView(Context context, View itemView) { + super(context, itemView); + } + + @Override + protected void init() { + //TODO + } + + @Override + protected int getLayoutResource() { + return R.layout.mask_dashboard; + } + + @Override + protected int getDescViewId() { + return R.id.mask_dashboard_description; + } + + @Override + protected int getNextBtnId() { + return R.id.mask_dashboard_btn; + } + + @Override + public void onWindowFocusChanged(boolean hasWindowFocus) { + super.onWindowFocusChanged(hasWindowFocus); + } + + + @Override + public void onClick(View v) { + + level++; + + switch (level){ + case 2: + descView.setText(R.string.help_dashboard_level_two_description); + break; + default: + btnListener.onClick(nextBtn); + } + + + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/PostRelatedPostMaskView.java b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/PostRelatedPostMaskView.java new file mode 100755 index 0000000..982af3a --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/PostRelatedPostMaskView.java @@ -0,0 +1,53 @@ +package com.shaya.poinila.android.presentation.view.help.masks; + +import android.content.Context; +import android.view.View; + +import com.shaya.poinila.android.presentation.R; + +/** + * Created by iran on 5/24/2016. + */ +public class PostRelatedPostMaskView extends BaseMaskView { + + protected int level = 1; + + public PostRelatedPostMaskView(Context context, View itemView) { + super(context, itemView); + } + + @Override + protected void init() { + // TODO + } + + @Override + protected int getLayoutResource() { + return R.layout.mask_post_related_posts; + } + + @Override + protected int getDescViewId() { + return R.id.mask_post_related_posts_description; + } + + @Override + protected int getNextBtnId() { + return R.id.mask_post_related_posts_btn; + } + + + @Override + public void onClick(View v) { + + level++; + + switch (level){ + default: + btnListener.onClick(nextBtn); + } + + + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/PostsOfCollectionMaskView.java b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/PostsOfCollectionMaskView.java new file mode 100755 index 0000000..e558ac3 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/PostsOfCollectionMaskView.java @@ -0,0 +1,48 @@ +package com.shaya.poinila.android.presentation.view.help.masks; + +import android.content.Context; +import android.view.View; + +import com.shaya.poinila.android.presentation.R; + +/** + * Created by iran on 5/29/2016. + */ +public class PostsOfCollectionMaskView extends BaseMaskView { + + protected int level = 1; + + public PostsOfCollectionMaskView(Context context, View itemView) { + super(context, itemView); + } + + @Override + protected void init() { + // TODO + } + + @Override + protected int getLayoutResource() { + return R.layout.mask_posts_of_collection; + } + + @Override + protected int getDescViewId() { + return R.id.mask_posts_of_collection_description; + } + + @Override + protected int getNextBtnId() { + return R.id.mask_posts_of_collection_btn; + } + + @Override + public void onClick(View v) { + level++; + switch (level){ + default: + btnListener.onClick(nextBtn); + } + + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/ProfileMaskView.java b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/ProfileMaskView.java new file mode 100755 index 0000000..25a6598 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/help/masks/ProfileMaskView.java @@ -0,0 +1,52 @@ +package com.shaya.poinila.android.presentation.view.help.masks; + +import android.content.Context; +import android.view.View; + +import com.shaya.poinila.android.presentation.R; + +/** + * Created by iran on 7/11/2016. + */ +public class ProfileMaskView extends BaseMaskView { + protected int level = 1; + + + public ProfileMaskView(Context context, View itemView) { + super(context, itemView); + } + + @Override + protected void init() { + descView.setText(R.string.help_profile_description); + } + + @Override + protected int getLayoutResource() { + return R.layout.mask_profile; + } + + @Override + protected int getDescViewId() { + return R.id.mask_create_description; + } + + @Override + protected int getNextBtnId() { + return R.id.mask_create_btn; + } + + @Override + public void onClick(View v) { + + level++; + + switch (level){ + default: + if(btnListener != null) + btnListener.onClick(nextBtn); + } + + + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/video/PonilaMediaController.java b/src/main/java/com/shaya/poinila/android/presentation/view/video/PonilaMediaController.java new file mode 100755 index 0000000..c46ce29 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/video/PonilaMediaController.java @@ -0,0 +1,640 @@ +package com.shaya.poinila.android.presentation.view.video; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; +import android.util.AttributeSet; +import android.util.Log; +import android.view.Gravity; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageButton; +import android.widget.ProgressBar; +import android.widget.SeekBar; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.utils.Utils; + +import java.lang.ref.WeakReference; +import java.util.Formatter; +import java.util.Locale; + +/** + * Created by iran on 8/11/2016. + */ +public class PonilaMediaController extends FrameLayout { + private static final String TAG = "PonilaMediaController"; + + private MediaPlayerControl mPlayer; + private Context mContext; + private ViewGroup mAnchor; + private View mRoot; + private ProgressBar mProgress; + private TextView mEndTime, mCurrentTime; + private boolean mShowing; + private boolean mDragging; + private static final int sDefaultTimeout = 3000; + private static final int FADE_OUT = 1; + private static final int SHOW_PROGRESS = 2; + private boolean mUseFastForward; + private boolean mFromXml; + private boolean mListenersSet; + private OnClickListener mNextListener, mPrevListener; + StringBuilder mFormatBuilder; + Formatter mFormatter; + private ImageButton mPauseButton; +// private ImageButton mFfwdButton; +// private ImageButton mRewButton; +// private ImageButton mNextButton; +// private ImageButton mPrevButton; + private ImageButton mFullscreenButton; + private Handler mHandler = new MessageHandler(this); + + public PonilaMediaController(Context context, AttributeSet attrs) { + super(context, attrs); + mRoot = null; + mContext = context; + mUseFastForward = true; + mFromXml = true; + + Log.i(TAG, TAG); + + setBackgroundDrawable(null); + } + + public PonilaMediaController(Context context, boolean useFastForward) { + super(context); + mContext = context; + mUseFastForward = useFastForward; + + Log.i(TAG, TAG); + setBackgroundDrawable(null); + + } + + public PonilaMediaController(Context context) { + this(context, true); + + Log.i(TAG, TAG); + setBackgroundDrawable(null); + + } + + @Override + public void onFinishInflate() { +// super.onFinishInflate(); + if (mRoot != null) + initControllerView(mRoot); + } + + public void setMediaPlayer(MediaPlayerControl player) { + mPlayer = player; + updatePausePlay(); + updateFullScreen(); + } + + /** + * Set the view that acts as the anchor for the control view. + * This can for example be a VideoView, or your Activity's main view. + * @param view The view to which to anchor the controller when it is visible. + */ + public void setAnchorView(ViewGroup view) { + mAnchor = view; + + LayoutParams frameParams = new LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ); + + removeAllViews(); + View v = makeControllerView(); + addView(v, frameParams); + } + + /** + * Create the view that holds the widgets that control playback. + * Derived classes can override this to create their own. + * @return The controller view. + * @hide This doesn't work as advertised + */ + protected View makeControllerView() { + LayoutInflater inflate = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + mRoot = inflate.inflate(R.layout.media_controller, null); + + initControllerView(mRoot); + + return mRoot; + } + + private void initControllerView(View v) { + mPauseButton = (ImageButton) v.findViewById(R.id.pause); + if (mPauseButton != null) { + mPauseButton.requestFocus(); + mPauseButton.setOnClickListener(mPauseListener); + } + + mFullscreenButton = (ImageButton) v.findViewById(R.id.fullscreen); + if (mFullscreenButton != null) { + mFullscreenButton.requestFocus(); + mFullscreenButton.setOnClickListener(mFullscreenListener); + } + +// mFfwdButton = (ImageButton) v.findViewById(R.id.ffwd); +// if (mFfwdButton != null) { +// mFfwdButton.setOnClickListener(mFfwdListener); +// if (!mFromXml) { +// mFfwdButton.setVisibility(mUseFastForward ? View.VISIBLE : View.GONE); +// } +// } +// +// mRewButton = (ImageButton) v.findViewById(R.id.rew); +// if (mRewButton != null) { +// mRewButton.setOnClickListener(mRewListener); +// if (!mFromXml) { +// mRewButton.setVisibility(mUseFastForward ? View.VISIBLE : View.GONE); +// } +// } +// +// // By default these are hidden. They will be enabled when setPrevNextListeners() is called +// mNextButton = (ImageButton) v.findViewById(R.id.next); +// if (mNextButton != null && !mFromXml && !mListenersSet) { +// mNextButton.setVisibility(View.GONE); +// } +// mPrevButton = (ImageButton) v.findViewById(R.id.prev); +// if (mPrevButton != null && !mFromXml && !mListenersSet) { +// mPrevButton.setVisibility(View.GONE); +// } + + mProgress = (SeekBar) v.findViewById(R.id.mediacontroller_progress); + if (mProgress != null) { + if (mProgress instanceof SeekBar) { + SeekBar seeker = (SeekBar) mProgress; + seeker.setOnSeekBarChangeListener(mSeekListener); + } + mProgress.setMax(1000); + } + + mEndTime = (TextView) v.findViewById(R.id.time); + mCurrentTime = (TextView) v.findViewById(R.id.time_current); + mFormatBuilder = new StringBuilder(); + mFormatter = new Formatter(mFormatBuilder, Locale.getDefault()); + + installPrevNextListeners(); + } + + /** + * Show the controller on screen. It will go away + * automatically after 3 seconds of inactivity. + */ + public void show() { + show(sDefaultTimeout); + } + + /** + * Disable pause or seek buttons if the stream cannot be paused or seeked. + * This requires the control interface to be a MediaPlayerControlExt + */ + private void disableUnsupportedButtons() { + if (mPlayer == null) { + return; + } + + try { + if (mPauseButton != null && !mPlayer.canPause()) { + mPauseButton.setEnabled(false); + } +// if (mRewButton != null && !mPlayer.canSeekBackward()) { +// mRewButton.setEnabled(false); +// } +// if (mFfwdButton != null && !mPlayer.canSeekForward()) { +// mFfwdButton.setEnabled(false); +// } + } catch (IncompatibleClassChangeError ex) { + // We were given an old version of the interface, that doesn't have + // the canPause/canSeekXYZ methods. This is OK, it just means we + // assume the media can be paused and seeked, and so we don't disable + // the buttons. + } + } + + /** + * Show the controller on screen. It will go away + * automatically after 'timeout' milliseconds of inactivity. + * @param timeout The timeout in milliseconds. Use 0 to show + * the controller until hide() is called. + */ + public void show(int timeout) { + if (!mShowing && mAnchor != null) { + setProgress(); + if (mPauseButton != null) { + mPauseButton.requestFocus(); + } + disableUnsupportedButtons(); + + LayoutParams tlp = new LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT, + Gravity.BOTTOM + ); + + mAnchor.addView(this, tlp); + mShowing = true; + } + updatePausePlay(); + updateFullScreen(); + + // cause the progress bar to be updated even if mShowing + // was already true. This happens, for example, if we're + // paused with the progress bar showing the user hits play. + mHandler.sendEmptyMessage(SHOW_PROGRESS); + + Message msg = mHandler.obtainMessage(FADE_OUT); + if (timeout != 0) { + mHandler.removeMessages(FADE_OUT); + mHandler.sendMessageDelayed(msg, timeout); + } + } + + public boolean isShowing() { + return mShowing; + } + + /** + * Remove the controller from the screen. + */ + public void hide() { + if (mAnchor == null) { + return; + } + + try { + mAnchor.removeView(this); + mHandler.removeMessages(SHOW_PROGRESS); + } catch (IllegalArgumentException ex) { + Log.w("MediaController", "already removed"); + } + mShowing = false; + } + + private String stringForTime(int timeMs) { + int totalSeconds = timeMs / 1000; + + int seconds = totalSeconds % 60; + int minutes = (totalSeconds / 60) % 60; + int hours = totalSeconds / 3600; + + mFormatBuilder.setLength(0); + if (hours > 0) { + return mFormatter.format("%d:%02d:%02d", hours, minutes, seconds).toString(); + } else { + return mFormatter.format("%02d:%02d", minutes, seconds).toString(); + } + } + + private int setProgress() { + if (mPlayer == null || mDragging) { + return 0; + } + + int position = mPlayer.getCurrentPosition(); + int duration = mPlayer.getDuration(); + if (mProgress != null) { + if (duration > 0) { + // use long to avoid overflow + long pos = 1000L * position / duration; + mProgress.setProgress( (int) pos); + } + int percent = mPlayer.getBufferPercentage(); + mProgress.setSecondaryProgress(percent * 10); + } + + if (mEndTime != null) + mEndTime.setText(stringForTime(duration)); + if (mCurrentTime != null) + mCurrentTime.setText(stringForTime(position)); + + return position; + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + show(sDefaultTimeout); + return true; + } + + @Override + public boolean onTrackballEvent(MotionEvent ev) { + show(sDefaultTimeout); + return false; + } + + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + if (mPlayer == null) { + return true; + } + + int keyCode = event.getKeyCode(); + final boolean uniqueDown = event.getRepeatCount() == 0 + && event.getAction() == KeyEvent.ACTION_DOWN; + if (keyCode == KeyEvent.KEYCODE_HEADSETHOOK + || keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE + || keyCode == KeyEvent.KEYCODE_SPACE) { + if (uniqueDown) { + doPauseResume(); + show(sDefaultTimeout); + if (mPauseButton != null) { + mPauseButton.requestFocus(); + } + } + return true; + } else if (keyCode == KeyEvent.KEYCODE_MEDIA_PLAY) { + if (uniqueDown && !mPlayer.isPlaying()) { + mPlayer.start(); + updatePausePlay(); + show(sDefaultTimeout); + } + return true; + } else if (keyCode == KeyEvent.KEYCODE_MEDIA_STOP + || keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE) { + if (uniqueDown && mPlayer.isPlaying()) { + mPlayer.pause(); + updatePausePlay(); + show(sDefaultTimeout); + } + return true; + } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN + || keyCode == KeyEvent.KEYCODE_VOLUME_UP + || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) { + // don't show the controls for volume adjustment + return super.dispatchKeyEvent(event); + } else if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_MENU) { + if (uniqueDown) { + hide(); + } + return true; + } + + show(sDefaultTimeout); + return super.dispatchKeyEvent(event); + } + + private OnClickListener mPauseListener = new OnClickListener() { + public void onClick(View v) { + doPauseResume(); + show(sDefaultTimeout); + } + }; + + private OnClickListener mFullscreenListener = new OnClickListener() { + public void onClick(View v) { + doToggleFullscreen(); + if(Utils.isEnabledAutoRotate()) + show(sDefaultTimeout); + } + }; + + public void updatePausePlay() { + if (mRoot == null || mPauseButton == null || mPlayer == null) { + return; + } + + if (mPlayer.isPlaying()) { + mPauseButton.setImageResource(R.drawable.ic_media_pause); + } else { + mPauseButton.setImageResource(R.drawable.ic_media_play); + } + } + + public void updateFullScreen() { + if (mRoot == null || mFullscreenButton == null || mPlayer == null) { + return; + } + + if (mPlayer.isFullScreen()) { + mFullscreenButton.setImageResource(R.drawable.ic_media_fullscreen_shrink); + } + else { + mFullscreenButton.setImageResource(R.drawable.ic_media_fullscreen_stretch); + } + } + + private void doPauseResume() { + if (mPlayer == null) { + return; + } + + if (mPlayer.isPlaying()) { + mPlayer.pause(); + } else { + mPlayer.start(); + } + updatePausePlay(); + } + + private void doToggleFullscreen() { + if (mPlayer == null) { + return; + } + + mPlayer.toggleFullScreen(); + } + + // There are two scenarios that can trigger the seekbar listener to trigger: + // + // The first is the user using the touchpad to adjust the posititon of the + // seekbar's thumb. In this case onStartTrackingTouch is called followed by + // a number of onProgressChanged notifications, concluded by onStopTrackingTouch. + // We're setting the field "mDragging" to true for the duration of the dragging + // session to avoid jumps in the position in case of ongoing playback. + // + // The second scenario involves the user operating the scroll ball, in this + // case there WON'T BE onStartTrackingTouch/onStopTrackingTouch notifications, + // we will simply apply the updated position without suspending regular updates. + private SeekBar.OnSeekBarChangeListener mSeekListener = new SeekBar.OnSeekBarChangeListener() { + public void onStartTrackingTouch(SeekBar bar) { + show(3600000); + + mDragging = true; + + // By removing these pending progress messages we make sure + // that a) we won't update the progress while the user adjusts + // the seekbar and b) once the user is done dragging the thumb + // we will post one of these messages to the queue again and + // this ensures that there will be exactly one message queued up. + mHandler.removeMessages(SHOW_PROGRESS); + } + + public void onProgressChanged(SeekBar bar, int progress, boolean fromuser) { + if (mPlayer == null) { + return; + } + + if (!fromuser) { + // We're not interested in programmatically generated changes to + // the progress bar's position. + return; + } + + long duration = mPlayer.getDuration(); + long newposition = (duration * progress) / 1000L; + mPlayer.seekTo( (int) newposition); + if (mCurrentTime != null) + mCurrentTime.setText(stringForTime( (int) newposition)); + } + + public void onStopTrackingTouch(SeekBar bar) { + mDragging = false; + setProgress(); + updatePausePlay(); + show(sDefaultTimeout); + + // Ensure that progress is properly updated in the future, + // the call to show() does not guarantee this because it is a + // no-op if we are already showing. + mHandler.sendEmptyMessage(SHOW_PROGRESS); + } + }; + + @Override + public void setEnabled(boolean enabled) { + if (mPauseButton != null) { + mPauseButton.setEnabled(enabled); + } +// if (mFfwdButton != null) { +// mFfwdButton.setEnabled(enabled); +// } +// if (mRewButton != null) { +// mRewButton.setEnabled(enabled); +// } +// if (mNextButton != null) { +// mNextButton.setEnabled(enabled && mNextListener != null); +// } +// if (mPrevButton != null) { +// mPrevButton.setEnabled(enabled && mPrevListener != null); +// } + if (mProgress != null) { + mProgress.setEnabled(enabled); + } + disableUnsupportedButtons(); + super.setEnabled(enabled); + } + + public void setSecondaryProgress(int precent){ + mProgress.setSecondaryProgress(precent); + } + + public int getSecondaryProgress(){ + return mProgress.getSecondaryProgress(); + } + + private OnClickListener mRewListener = new OnClickListener() { + public void onClick(View v) { + + if (mPlayer == null) { + return; + } + + int pos = mPlayer.getCurrentPosition(); + pos -= 5000; // milliseconds + mPlayer.seekTo(pos); + setProgress(); + + show(sDefaultTimeout); + } + }; + + private OnClickListener mFfwdListener = new OnClickListener() { + public void onClick(View v) { + if (mPlayer == null) { + return; + } + + int pos = mPlayer.getCurrentPosition(); + pos += 15000; // milliseconds + mPlayer.seekTo(pos); + setProgress(); + + show(sDefaultTimeout); + } + }; + + private void installPrevNextListeners() { +// if (mNextButton != null) { +// mNextButton.setOnClickListener(mNextListener); +// mNextButton.setEnabled(mNextListener != null); +// } +// +// if (mPrevButton != null) { +// mPrevButton.setOnClickListener(mPrevListener); +// mPrevButton.setEnabled(mPrevListener != null); +// } + } + + public void setPrevNextListeners(OnClickListener next, OnClickListener prev) { + mNextListener = next; + mPrevListener = prev; + mListenersSet = true; + + if (mRoot != null) { + installPrevNextListeners(); + +// if (mNextButton != null && !mFromXml) { +// mNextButton.setVisibility(View.VISIBLE); +// } +// if (mPrevButton != null && !mFromXml) { +// mPrevButton.setVisibility(View.VISIBLE); +// } + } + } + + public interface MediaPlayerControl { + void start(); + void pause(); + int getDuration(); + int getCurrentPosition(); + void seekTo(int pos); + boolean isPlaying(); + int getBufferPercentage(); + boolean canPause(); + boolean canSeekBackward(); + boolean canSeekForward(); + boolean isFullScreen(); + void toggleFullScreen(); + } + + private static class MessageHandler extends Handler { + private final WeakReference mView; + + MessageHandler(PonilaMediaController view) { + mView = new WeakReference(view); + } + + @Override + public void handleMessage(Message msg) { + PonilaMediaController view = mView.get(); + if (view == null || view.mPlayer == null) { + return; + } + + int pos; + switch (msg.what) { + case FADE_OUT: + view.hide(); + break; + case SHOW_PROGRESS: + pos = view.setProgress(); + if (!view.mDragging && view.mShowing && view.mPlayer.isPlaying()) { + msg = obtainMessage(SHOW_PROGRESS); + sendMessageDelayed(msg, 1000 - (pos % 1000)); + } + break; + } + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/view/video/PonilaVideoView.java b/src/main/java/com/shaya/poinila/android/presentation/view/video/PonilaVideoView.java new file mode 100755 index 0000000..c4edd75 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/view/video/PonilaVideoView.java @@ -0,0 +1,380 @@ +package com.shaya.poinila.android.presentation.view.video; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.PixelFormat; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.media.AudioManager; +import android.media.MediaPlayer; +import android.net.Uri; +import android.os.Bundle; +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; +import android.view.SurfaceHolder; +import android.view.SurfaceView; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.presentation.view.costom_view.AspectRatioImageView; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.utils.Utils; +import com.squareup.picasso.Picasso; +import com.squareup.picasso.Target; + +import java.io.IOException; + +import data.model.ImageUrls; + +/** + * Created by iran on 8/11/2016. + */ +public class PonilaVideoView extends LinearLayout + implements + PonilaMediaController.MediaPlayerControl, + SurfaceHolder.Callback, + MediaPlayer.OnPreparedListener, + MediaPlayer.OnErrorListener, + MediaPlayer.OnCompletionListener, + View.OnClickListener{ + + // all possible internal states + private static final int STATE_ERROR = -1; + private static final int STATE_IDLE = 0; + private static final int STATE_PREPARING = 1; + private static final int STATE_PREPARED = 2; + private static final int STATE_PLAYING = 3; + private static final int STATE_PAUSED = 4; + private static final int STATE_PLAYBACK_COMPLETED = 5; + + private int mCurrentState = STATE_IDLE; + private int mTargetState = STATE_IDLE; + + private MediaPlayer mMediaPlayer; + private PonilaMediaController mMediaController; + + private SurfaceView videoSurface; + private SurfaceHolder mVideoHolder; + private Uri videoUri; + private boolean fullScreen = false; + private OnFullScreenListener onFullScreenListener; + private AspectRatioImageView previewView; + private ImageButton largePlayBtn; + private View loading; + private ViewGroup videoOverlay; + private int mCurrentBufferPercentage; + + private MediaPlayer.OnBufferingUpdateListener mBufferingUpdateListener = new MediaPlayer.OnBufferingUpdateListener() { + @Override + public void onBufferingUpdate(MediaPlayer mediaPlayer, int percent) { + mCurrentBufferPercentage = percent; + if(mCurrentBufferPercentage > mMediaController.getSecondaryProgress()) + mMediaController.setSecondaryProgress(mCurrentBufferPercentage); + } + }; + + public PonilaVideoView(Context context) { + super(context); + init(); + } + + public PonilaVideoView(Context context, AttributeSet attrs) { + super(context, attrs); + init(); + } + + public PonilaVideoView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + private void init(){ + + inflate(getContext(), R.layout.ponila_video_view, this); + + videoSurface = (SurfaceView) findViewById(R.id.videoSurface); + + previewView = (AspectRatioImageView)findViewById(R.id.video_preview); + largePlayBtn = (ImageButton)findViewById(R.id.video_play_btn); + loading = findViewById(R.id.progress_view); + videoOverlay = (ViewGroup) findViewById(R.id.video_overlay); + loading.setVisibility(GONE); + + largePlayBtn.setOnClickListener(this); + + videoSurface.getHolder().addCallback(this); + videoSurface.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); +// videoSurface.setZOrderOnTop(true); + + mMediaController = new PonilaMediaController(getContext()); + + mCurrentState = STATE_IDLE; + mTargetState = STATE_IDLE; + } + + private void openVideo(){ + + if(videoUri == null || mVideoHolder == null)return; + + release(false); + try { + mMediaPlayer = new MediaPlayer(); + mMediaPlayer.setDataSource(getContext(), videoUri); + mMediaPlayer.setDisplay(mVideoHolder); + mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + mMediaPlayer.setOnPreparedListener(this); + mMediaPlayer.setOnErrorListener(this); + mMediaPlayer.setScreenOnWhilePlaying(true); + mMediaPlayer.setOnCompletionListener(this); + mMediaPlayer.setOnBufferingUpdateListener(mBufferingUpdateListener); + mCurrentBufferPercentage = 0; + mMediaPlayer.prepareAsync(); + mCurrentState = STATE_PREPARING; + attachMediaController(); + } catch (IOException e) { + e.printStackTrace(); + mCurrentState = STATE_ERROR; + mTargetState = STATE_ERROR; + } catch (IllegalStateException e){ + e.printStackTrace(); + mCurrentState = STATE_ERROR; + mTargetState = STATE_ERROR; + } + + } + + private void attachMediaController() { + if (mMediaPlayer != null && mMediaController != null) { + mMediaController.setMediaPlayer(this); + mMediaController.setAnchorView((FrameLayout)findViewById(R.id.videoSurfaceContainer)); +// mMediaController.setEnabled(isInPlaybackState()); + } + } + + public void setVideoPreview(ImageUrls imageUrls){ + ViewUtils.setImage( + previewView, + imageUrls, + ImageUrls.ImageType.POST, + ImageUrls.ImageSize.BIG); + + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if(isInPlaybackState()){ + mMediaController.show(); + } + return false; + } + + // Implement SurfaceHolder.Callback + @Override + public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { + if(mMediaPlayer != null && mTargetState == STATE_PLAYING) + start(); + } + + @Override + public void surfaceCreated(SurfaceHolder holder) { + mVideoHolder = holder; +// openVideo(); + } + + @Override + public void surfaceDestroyed(SurfaceHolder holder) { + mVideoHolder = null; +// if (mMediaController != null) mMediaController.hide(); + release(true); + } + + // End SurfaceHolder.Callback + + // Implement MediaPlayer.OnPreparedListener + + public void onPrepared(MediaPlayer mp) { + mCurrentState = STATE_PREPARED; + if (mTargetState == STATE_PLAYING) { +// videoSurface.setZOrderOnTop(false); + start(); + loading.setVisibility(GONE); + previewView.setVisibility(GONE); + } + } + // End MediaPlayer.OnPreparedListener + + // Implement VideoMediaController.MediaPlayerControl + @Override + public boolean canPause() { + return true; + } + + @Override + public boolean canSeekBackward() { + return true; + } + + @Override + public boolean canSeekForward() { + return true; + } + + @Override + public boolean isFullScreen() { + return fullScreen; + } + + @Override + public void toggleFullScreen() { + if(!Utils.isEnabledAutoRotate()){ + Logger.toastError(R.string.change_orientation_error); + return; + } + if(onFullScreenListener != null){ + fullScreen = !fullScreen; + onFullScreenListener.stateChanged(); + } + } + + @Override + public int getBufferPercentage() { + if(mMediaPlayer != null){ + return mCurrentBufferPercentage; + } + return 0; + } + + @Override + public int getCurrentPosition() { + return mMediaPlayer.getCurrentPosition(); + } + + @Override + public int getDuration() { + return mMediaPlayer.getDuration(); + } + + @Override + public boolean isPlaying() { + return mMediaPlayer != null && mMediaPlayer.isPlaying(); + } + + @Override + public void pause() { + if (isInPlaybackState()) { + if (mMediaPlayer.isPlaying()) { + mMediaPlayer.pause(); + mCurrentState = STATE_PAUSED; + } + } + mTargetState = STATE_PAUSED; + } + + public void suspend(){ + release(false); + } + + public void resume(){ + openVideo(); + } + + @Override + public void seekTo(int i) { + mMediaPlayer.seekTo(i); + } + + @Override + public void start() { + if (isInPlaybackState()) { + mMediaPlayer.start(); + mCurrentState = STATE_PLAYING; + } + mTargetState = STATE_PLAYING; + } + + private boolean isInPlaybackState() { + return +// mMediaPlayer != null && + mCurrentState != STATE_ERROR && + mCurrentState != STATE_IDLE && + mCurrentState != STATE_PREPARING; + } + + public void setVideoPath(String path){ + videoUri = Uri.parse(path); + requestLayout(); + invalidate(); + } + + private void release(boolean cleartargetstate) { + if (mMediaPlayer != null) { + mMediaPlayer.reset(); + mMediaPlayer.release(); + mMediaPlayer = null; +// mPendingSubtitleTracks.clear(); + mCurrentState = STATE_IDLE; + if (cleartargetstate) { + mTargetState = STATE_IDLE; + } + } + } + + public void setFullScreenMode(boolean status){ + fullScreen = status; + } + + @Override + public boolean onError(MediaPlayer mediaPlayer, int framework_err, int impl_err) { + mCurrentState = STATE_ERROR; + mTargetState = STATE_ERROR; + if(mMediaController != null) + mMediaController.hide(); + Logger.toastError(R.string.play_video_error); + + largePlayBtn.setVisibility(VISIBLE); + loading.setVisibility(GONE); + videoOverlay.setVisibility(VISIBLE); + + return false; + } + + public void setOnFullScreenListener(OnFullScreenListener onFullScreenListener) { + this.onFullScreenListener = onFullScreenListener; + } + + @Override + public void onClick(View view) { + openVideo(); + view.setVisibility(GONE); + loading.setVisibility(VISIBLE); + videoOverlay.setVisibility(GONE); + start(); + } + + @Override + public void onCompletion(MediaPlayer mediaPlayer) { + + mCurrentState = STATE_PLAYBACK_COMPLETED; + mTargetState = STATE_PLAYBACK_COMPLETED; + + if(mMediaController != null) + mMediaController.hide(); + previewView.setVisibility(VISIBLE); + largePlayBtn.setVisibility(VISIBLE); + loading.setVisibility(GONE); + videoOverlay.setVisibility(VISIBLE); + + } + + public interface OnFullScreenListener{ + void stateChanged(); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/AskUserLikesPonilaViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/AskUserLikesPonilaViewHolder.java new file mode 100755 index 0000000..8cf8bcc --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/AskUserLikesPonilaViewHolder.java @@ -0,0 +1,33 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.Button; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.fragments.DashboardFragment.DashboardRecyclerViewAdapter.AskIfUserLikesPonila; + +import butterknife.Bind; + +/** + * Created by iran on 1/20/2016. + */ +public class AskUserLikesPonilaViewHolder extends BaseViewHolder { + @Bind(R.id.positive_button) + public Button positiveButton; + @Bind(R.id.negative_button) + public Button negativeButton; + @Bind(R.id.dont_know_button) + public Button dontKnowButton; + + public AskUserLikesPonilaViewHolder(View view) { + super(view); + } + + + @Override + public void fill(AskIfUserLikesPonila askIfUserLikesPonila) { + + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/BaseViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/BaseViewHolder.java new file mode 100755 index 0000000..b9095d4 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/BaseViewHolder.java @@ -0,0 +1,36 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.support.v7.widget.RecyclerView; +import android.view.View; + +import butterknife.ButterKnife; + +/** + * @author Alireza Farahani + * Created by iran on 2015-06-10. + */ +public abstract class BaseViewHolder extends RecyclerView.ViewHolder{ // with butterknife no need + // to implement click listerners + // implements View.OnClickListener{ + protected View rootView; + public BaseViewHolder(View view) { + super(view); + this.rootView = view; + ButterKnife.bind(this, view); + } + + public abstract void fill(T t); + + public static class EmptyViewHolder extends BaseViewHolder{ + + public EmptyViewHolder(View view) { + super(view); + } + + @Override + public void fill(Object o) { + + } + } +} + diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/CheckedCircleViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CheckedCircleViewHolder.java new file mode 100755 index 0000000..4cf7a12 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CheckedCircleViewHolder.java @@ -0,0 +1,50 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.CheckBoxClickUIEvent; +import com.shaya.poinila.android.util.BusProvider; + +import butterknife.Bind; +import data.model.Circle; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by AlirezaF on 11/16/2015. + */ +public class CheckedCircleViewHolder extends BaseViewHolder { + @Bind(R.id.text) + public TextView textView; + + @Bind(R.id.checkbox) + public CheckBox checkBox; + + public CheckedCircleViewHolder(View view) { + super(view); + } + + private CompoundButton.OnCheckedChangeListener getCheckBoxListener() { + return new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + BusProvider.getBus().post( + new CheckBoxClickUIEvent(isChecked, getAdapterPosition())); + } + }; + } + + public void fill(Circle circle){ + setText(textView, circle.name); + //checkBox.setChecked(interest.selected); + checkBox.setOnCheckedChangeListener(null); + checkBox.setChecked(circle.selected); + itemView.setBackgroundResource(circle.selected ? + R.drawable.bordered_rounded_rect_checked : R.drawable.bordered_rounded_rect); + checkBox.setOnCheckedChangeListener(getCheckBoxListener()); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/CheckedTextViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CheckedTextViewHolder.java new file mode 100755 index 0000000..a022127 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CheckedTextViewHolder.java @@ -0,0 +1,56 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.CheckBoxClickUIEvent; +import com.shaya.poinila.android.util.BusProvider; + +import butterknife.Bind; +import data.model.Tag; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by iran on 2015-07-11. + */ +public class CheckedTextViewHolder extends BaseViewHolder{ + @Bind(R.id.text) + public TextView textView; + + @Bind(R.id.checkbox) + public CheckBox checkBox; + + public CheckedTextViewHolder(View view) { + super(view); + } + + private CompoundButton.OnCheckedChangeListener getCheckBoxListener(){ + return new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + BusProvider.getBus().post( + new CheckBoxClickUIEvent(isChecked, getAdapterPosition())); + } + }; + } + + public void fill(Tag interest) { + setText(textView, interest.name); + //checkBox.setChecked(interest.selected); + checkBox.setOnCheckedChangeListener(null); + checkBox.setChecked(interest.selected); +// itemView.setBackgroundResource(interest.selected ? +// R.drawable.bordered_rounded_rect_checked : R.drawable.bordered_rounded_rect); + checkBox.setOnCheckedChangeListener(getCheckBoxListener()); + rootView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + BusProvider.getBus().post( + new CheckBoxClickUIEvent(!checkBox.isChecked(), getAdapterPosition())); + } + }); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/CircleEditViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CircleEditViewHolder.java new file mode 100755 index 0000000..84f7455 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CircleEditViewHolder.java @@ -0,0 +1,50 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.ImageButton; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.DeleteCircleUIEvent; +import com.shaya.poinila.android.presentation.uievent.EditCircleNameUIEvent; +import com.shaya.poinila.android.presentation.uievent.ViewCircleMembersUIEvent; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.util.BusProvider; + +import butterknife.Bind; +import butterknife.OnClick; +import data.model.Circle; + +/** + * Created by iran on 2015-07-28. + */ +public class CircleEditViewHolder extends BaseViewHolder{ + @Bind(R.id.view_members) + public ImageButton viewMembersBtn; + @Bind(R.id.edit_name) + public ImageButton editCircleNameBtn; + @Bind(R.id.delete) + public ImageButton deleteCircleBtn; + @Bind(R.id.name) + public TextView circleNameView; + + public CircleEditViewHolder(View view) { + super(view); + } + + @Override + public void fill(Circle circle) { + ViewUtils.setText(circleNameView, circle.name); + } + + @OnClick(R.id.view_members) public void onViewMembers(){ + BusProvider.getBus().post(new ViewCircleMembersUIEvent(getAdapterPosition())); + } + + @OnClick(R.id.edit_name) public void onEditCircleName(){ + BusProvider.getBus().post(new EditCircleNameUIEvent(getAdapterPosition())); + } + + @OnClick(R.id.delete) public void onDeleteCircle(){ + BusProvider.getBus().post(new DeleteCircleUIEvent(getAdapterPosition())); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/CircleMemberViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CircleMemberViewHolder.java new file mode 100755 index 0000000..685012c --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CircleMemberViewHolder.java @@ -0,0 +1,47 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.MemberCircleToggledEvent; +import com.shaya.poinila.android.util.BusProvider; + +import butterknife.Bind; +import butterknife.OnClick; +import data.model.ImageUrls; +import data.model.Member; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by iran on 2015-07-26. + */ +public class CircleMemberViewHolder extends BaseViewHolder{ + @Bind(R.id.image) public ImageView avatarImage; + @Bind(R.id.title) public TextView nameView; + @Bind(R.id.subtitle) public TextView subTitleView; + @Bind(R.id.icon) public ImageButton addRemoveIcon; + @Bind(R.id.icon_caption) public TextView iconCaptionView; + + public CircleMemberViewHolder(View view) { + super(view); + iconCaptionView.setVisibility(View.GONE); + } + + @OnClick(R.id.icon) public void onAddOrRemove(){ + BusProvider.getBus().post(new MemberCircleToggledEvent(getAdapterPosition())); + } + + public void fill(Member member) { + setImage(avatarImage, member.imageUrls, ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.AVATAR); + setText(nameView, member.fullName); + setText(subTitleView, member.uniqueName);//(member.aboutMe); + addRemoveIcon.setBackgroundResource(R.drawable.add_remove_checkbox_selector); + addRemoveIcon.setSelected(member.selected); + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/CollectionNotifViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CollectionNotifViewHolder.java new file mode 100755 index 0000000..d41f3e1 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CollectionNotifViewHolder.java @@ -0,0 +1,34 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; + +import com.shaya.poinila.android.presentation.uievent.NotifActorClickedUIEvent; +import com.shaya.poinila.android.util.BusProvider; + +import data.model.ImageUrls; +import data.model.Notification; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; + +/** + * Created by iran on 2015-08-15. + */ +public class CollectionNotifViewHolder extends NotificationViewHolder{ + + public CollectionNotifViewHolder(View inflatedView) { + super(inflatedView); + } + + @Override + public void fill(Notification notification) { + super.fill(notification); + setImage(image, notification.mainActor.imageUrls, ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.AVATAR); + + rootView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new NotifActorClickedUIEvent(getAdapterPosition())); + } + }); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/CollectionViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CollectionViewHolder.java new file mode 100755 index 0000000..9651d0e --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CollectionViewHolder.java @@ -0,0 +1,77 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.PoinilaApplication; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.CollectionClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.util.BusProvider; + +import butterknife.Bind; +import butterknife.OnClick; +import data.event.BaseEvent; +import data.model.Collection; +import data.model.ImageUrls; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setFont; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by iran on 2015-06-22. + */ +public abstract class CollectionViewHolder extends BaseViewHolder{ + + public final BaseEvent.ReceiverName receiverTag; + + public CollectionViewHolder(View view, BaseEvent.ReceiverName receiverTag) { + super(view); + this.receiverTag = receiverTag; + } + + + @Bind(R.id.collection_author) + protected ViewGroup collectionAuthorView; + + protected @Bind(R.id.text_top) TextView topTag; + protected @Bind(R.id.text_bottom) TextView bottomTag; + protected @Bind(R.id.image_big) ImageView cover; + protected @Bind(R.id.image_small_top) ImageView post1Image; + protected @Bind(R.id.image_small_middle) ImageView post2Image; + protected @Bind(R.id.image_small_bottom) ImageView post3Image; + + /** + * Always call super.fill when overriding + * @param collection + */ + public void fill(Collection collection) { + setImage((ImageView) collectionAuthorView.findViewById(R.id.image), + collection.owner.imageUrls, ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.AVATAR); + setText((TextView) collectionAuthorView.findViewById(R.id.title), collection.name); + setFont((TextView) collectionAuthorView.findViewById(R.id.title), + PoinilaApplication.getAppContext().getString(R.string.default_bold_font_path)); + setText((TextView) collectionAuthorView.findViewById(R.id.subtitle), collection.owner.fullName); + + /*Transformation transformation = new RoundedTransformationBuilder() + .cornerRadiusDp(ResourceUtils.getDimen(R.dimen.corner_columned_lvlhalf)) + .oval(false) + .build();*/ + + setImage(cover, collection.coverImageUrls, ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.BIG); + setImage(post1Image, collection.image1Url, ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.AVATAR); + setImage(post2Image, collection.image2Url, ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.AVATAR); + setImage(post3Image, collection.image3Url, ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.AVATAR); + } + + @OnClick(R.id.collection_author) protected void onGoingToProfile(){ + BusProvider.getBus().post(new MemberClickedUIEvent(getAdapterPosition(), receiverTag)); + } + + @OnClick(R.id.collection) protected void onGoingToCollection(){ + BusProvider.getBus().post(new CollectionClickedUIEvent(getAdapterPosition(), receiverTag)); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/CommentViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CommentViewHolder.java new file mode 100755 index 0000000..d4955a4 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/CommentViewHolder.java @@ -0,0 +1,58 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.util.Log; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.CommentLongClickUIEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.TimeUtils; + +import butterknife.Bind; +import butterknife.OnClick; +import data.model.Comment; +import data.model.ImageUrls; +import manager.DataRepository; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by iran on 2015-06-25. + */ +public class CommentViewHolder extends BaseViewHolder{ + public CommentViewHolder(View view) { + super(view); + } + + @Bind(R.id.image) ImageView image; + + @Bind(R.id.title) TextView title; + + @Bind(R.id.subtitle) TextView subtitle; + + @Bind(R.id.date_created) TextView dateCreated; + + public void fill(Comment comment) { + itemView.setLongClickable(comment.deletable); + if (itemView.isLongClickable()) + itemView.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + BusProvider.getBus().post(new CommentLongClickUIEvent(getAdapterPosition())); + return true; + } + }); + else itemView.setOnLongClickListener(null); + setImage(image, comment.commenter.imageUrls, ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.AVATAR); + setText(title, comment.commenter.fullName); + setText(subtitle, comment.content); + setText(dateCreated, TimeUtils.getTimeString(comment.creationDate, DataRepository.getInstance().getServerTimeDifference())); + } + + @OnClick(R.id.image) public void onImageClicked(){ + BusProvider.getBus().post(new MemberClickedUIEvent(getAdapterPosition(), null)); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/DashboardPostViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/DashboardPostViewHolder.java new file mode 100755 index 0000000..b262db8 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/DashboardPostViewHolder.java @@ -0,0 +1,69 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.ImageView; + +import com.shaya.poinila.android.presentation.R; + +import butterknife.Bind; +import butterknife.ButterKnife; +import data.event.BaseEvent; +import data.model.Post; +import data.model.PostType; +import data.model.SuggestionReason; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ResourceUtils.getString; + +/** + * Created by iran on 2015-08-09. + */ +public class DashboardPostViewHolder extends PostViewHolder{ + + @Bind(R.id.video_type_icon) + ImageView videoType; + + public DashboardPostViewHolder(View view, BaseEvent.ReceiverName receiverTag) { + super(view, receiverTag); + + avatar = ButterKnife.findById(postAuthor, R.id.image); + createdByTextView = ButterKnife.findById(postAuthor, R.id.title); + authorName = ButterKnife.findById(postAuthor, R.id.subtitle); + + + collectionImage = ButterKnife.findById(postCollection, R.id.image); + collectionStatusView = ButterKnife.findById(postCollection, R.id.title); + collectionName = ButterKnife.findById(postCollection, R.id.subtitle); + } + + @Override + public void fill(Post post) { + super.fill(post); + + if(post.type.equals(PostType.VIDEO)) + videoType.setVisibility(View.VISIBLE); + else + videoType.setVisibility(View.GONE); + + String reason = null; + + if (post.reason == SuggestionReason.PickedForYou) + reason = getString(R.string.picked_for_you); + else if (post.reason == SuggestionReason.FoundInInterest) + reason = getString(R.string.found_in_interest); + else if (post.reason == SuggestionReason.Following) + reason = getString(R.string.found_in_followed_collections); + else + reason = getString(R.string.collected_in); + setText(collectionStatusView, reason); + } + + /* @OnClick @Nullable (R.actorID.post_collection) protected void onGoingToCollection(){ + BusProvider.getBus().post(new CollectionClickedUIEvent(getAdapterPosition(), receiverTag)); + } + + + @OnClick @Nullable (R.actorID.post_author) protected void onGoingToProfile(){ + BusProvider.getBus().post(new MemberClickedUIEvent(getAdapterPosition(), receiverTag)); + }*/ +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/DateHeaderViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/DateHeaderViewHolder.java new file mode 100755 index 0000000..9d0c3fb --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/DateHeaderViewHolder.java @@ -0,0 +1,25 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.ViewUtils; + +import butterknife.Bind; + +/** + * Created by iran on 2015-08-15. + */ +public class DateHeaderViewHolder extends BaseViewHolder { + @Bind(R.id.title) + TextView dayNameView; + + public DateHeaderViewHolder(View inflatedView) { + super(inflatedView); + } + + public void fill(String dayName){ + ViewUtils.setText(dayNameView, dayName); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/EditableCollectionViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/EditableCollectionViewHolder.java new file mode 100755 index 0000000..8bd0414 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/EditableCollectionViewHolder.java @@ -0,0 +1,44 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.EditItemUIEvent; +import com.shaya.poinila.android.presentation.uievent.RemoveItemUIEvent; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ResourceUtils; + +import butterknife.OnClick; +import data.event.BaseEvent; +import data.model.Collection; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by iran on 2015-08-17. + */ +public class EditableCollectionViewHolder extends CollectionViewHolder{ + + + public final BaseEvent.ReceiverName receiverTag; + + public EditableCollectionViewHolder(View view, BaseEvent.ReceiverName receiverTag) { + super(view, receiverTag); + this.receiverTag = receiverTag; + } + + @Override + public void fill(Collection collection) { + super.fill(collection); + topTag.setVisibility(View.GONE); + setText(bottomTag, ResourceUtils.getStringFormatted(R.string.posts_formatted, collection.postCount)); + } + + @OnClick(R.id.remove_collection) public void onRemoveCollection(){ + BusProvider.getBus().post(new RemoveItemUIEvent(getAdapterPosition())); + } + + @OnClick(R.id.edit_collection) public void onEditCollection(){ + BusProvider.getBus().post(new EditItemUIEvent(getAdapterPosition())); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/FollowableCollectionViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/FollowableCollectionViewHolder.java new file mode 100755 index 0000000..29a39db --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/FollowableCollectionViewHolder.java @@ -0,0 +1,67 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.OnFollowUnfollowCollectionUIEvent; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.util.ResourceUtils; + +import butterknife.Bind; +import data.event.BaseEvent; +import data.model.Collection; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ResourceUtils.getColor; +import static com.shaya.poinila.android.util.ResourceUtils.getString; + +/** + * Created by iran on 2015-08-05. + */ +public class FollowableCollectionViewHolder extends CollectionViewHolder { + @Bind(R.id.collection_follow_text) + TextView followText; + + @Bind(R.id.collection_follow_icon) + ImageView followIcon; + + @Bind(R.id.follow_collection_bar) View followBar; + + public FollowableCollectionViewHolder(View view, BaseEvent.ReceiverName receiverTag) { + super(view, receiverTag); + } + + @Override + public void fill(final Collection collection) { + super.fill(collection); + + topTag.setVisibility(View.GONE); + setText(bottomTag, ResourceUtils.getStringFormatted(R.string.posts_formatted, collection.postCount)); + + followBar.setVisibility( + collection.owner.id == Integer.parseInt(PoinilaPreferences.getMyId()) + ? View.GONE : View.VISIBLE); + + // Important note: just filling views. In fact, we are in a not known state here. + updateFollowIcon(collection.followedByMe); + + followBar.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new OnFollowUnfollowCollectionUIEvent(getAdapterPosition(), !collection.followedByMe)); + } + }); + } + + /*@OnClick(R.actorID.follow_collection_bar) public void onGoingToProfile(){ + BusProvider.getBus().post(new OnFollowUnfollowCollectionUIEvent(getAdapterPosition(), )); + }*/ + + public void updateFollowIcon(boolean isFollowed){ // action appearance is opposite to collection state + followIcon.setSelected(isFollowed); + followText.setTextColor(getColor(isFollowed ? R.color.sea_buckthorn : R.color.tundora)); + setText(followText, getString(isFollowed ? R.string.unfollow_item : R.string.follow_item)); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/FrameCollectionViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/FrameCollectionViewHolder.java new file mode 100755 index 0000000..98f7422 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/FrameCollectionViewHolder.java @@ -0,0 +1,49 @@ +package com.shaya.poinila.android.presentation.viewholder; + +/** + * Created by iran on 2015-09-05. + */ + +import android.view.View; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.CollectionFrameToggledEvent; +import com.shaya.poinila.android.util.BusProvider; + +import butterknife.Bind; +import butterknife.OnClick; +import data.model.Collection; +import data.model.ImageUrls; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + + +/** + * Created by iran on 2015-07-26. + */ +public class FrameCollectionViewHolder extends BaseViewHolder{ + @Bind(R.id.image) public ImageView avatarImage; + @Bind(R.id.title) public TextView nameView; + @Bind(R.id.subtitle) public TextView subTitleView; + @Bind(R.id.icon) public ImageButton addRemoveIcon; + @Bind(R.id.icon_caption) public TextView iconCaptionView; + + public FrameCollectionViewHolder(View view) { + super(view); + iconCaptionView.setVisibility(View.GONE); + } + + @OnClick(R.id.icon) public void onAddOrRemove(){ + BusProvider.getBus().post(new CollectionFrameToggledEvent(getAdapterPosition())); + } + + public void fill(Collection collection){ + setImage(avatarImage, collection.coverImageUrls, ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.AVATAR); + setText(nameView, collection.name); + addRemoveIcon.setBackgroundResource(R.drawable.add_remove_checkbox_selector); + addRemoveIcon.setSelected(collection.selected); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/FrameEditViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/FrameEditViewHolder.java new file mode 100755 index 0000000..7b99f42 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/FrameEditViewHolder.java @@ -0,0 +1,53 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.ImageButton; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.DeleteFrameUIEvent; +import com.shaya.poinila.android.presentation.uievent.EditFrameNameUIEvent; +import com.shaya.poinila.android.presentation.uievent.ViewFrameMembersUIEvent; +import com.shaya.poinila.android.util.BusProvider; + +import butterknife.Bind; +import butterknife.OnClick; +import data.model.Frame; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by iran on 2015-07-28. + */ +public class FrameEditViewHolder extends BaseViewHolder{ + @Bind(R.id.view_members) + public ImageButton viewFrameCollectionsBtn; + @Bind(R.id.edit_name) + public ImageButton editCircleNameBtn; + @Bind(R.id.delete) + public ImageButton deleteCircleBtn; + @Bind(R.id.name) + public TextView frameNameView; + + public FrameEditViewHolder(View view) { + super(view); + viewFrameCollectionsBtn.setImageResource(R.drawable.collection_white); + } + + @Override + public void fill(Frame frame) { + setText(frameNameView, frame.name); + } + + @OnClick(R.id.view_members) public void onViewCollections(){ + BusProvider.getBus().post(new ViewFrameMembersUIEvent(getAdapterPosition())); + } + + @OnClick(R.id.edit_name) public void onEditFrameName(){ + BusProvider.getBus().post(new EditFrameNameUIEvent(getAdapterPosition())); + } + + @OnClick(R.id.delete) public void onDeleteFrame(){ + BusProvider.getBus().post(new DeleteFrameUIEvent(getAdapterPosition())); + } +} \ No newline at end of file diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/InviteNotifViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/InviteNotifViewHolder.java new file mode 100755 index 0000000..85e85fc --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/InviteNotifViewHolder.java @@ -0,0 +1,67 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.AnswerFriendshipUIEvent; +import com.shaya.poinila.android.presentation.uievent.NotifActorClickedUIEvent; +import com.shaya.poinila.android.util.BusProvider; + +import butterknife.Bind; +import butterknife.OnClick; +import data.model.FriendRequestAnswer; +import data.model.ImageUrls; +import data.model.InvitationNotif; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ResourceUtils.getString; + +/** + * Created by iran on 2015-08-15. + */ +public class InviteNotifViewHolder extends BaseViewHolder { + + @Bind(R.id.image) ImageView image; + @Bind(R.id.title) TextView title; + @Bind(R.id.subtitle) TextView subtitle; + @Bind(R.id.agree) TextView agreeButton; + @Bind(R.id.ignore) TextView ignoreButton; + + //private int adapterPosition = -1; + + public InviteNotifViewHolder(View inflatedView) { + super(inflatedView); + } + +/* + used in showing summary of friendship request in notification page when we doesn't create + ViewHolder through adapter so haven't adapter position consequently. + @param adapterPosition + */ + +/* public InviteNotifViewHolder(View inflatedView, int adapterPosition){ + this(inflatedView); + this.adapterPosition = adapterPosition; + }*/ + + @OnClick(R.id.image) public void onAvatarClicked(){ + BusProvider.getBus().post(new NotifActorClickedUIEvent(getAdapterPosition())); + } + + @OnClick({R.id.ignore, R.id.agree}) public void onIgnore(View view){ + //if (adapterPosition == -1) adapterPosition = getAdapterPosition(); + if (view.getId() == R.id.agree) + BusProvider.getBus().post(new AnswerFriendshipUIEvent(getAdapterPosition(), FriendRequestAnswer.ACCEPT)); + else + BusProvider.getBus().post(new AnswerFriendshipUIEvent(getAdapterPosition(), FriendRequestAnswer.REJECT)); + } + + public void fill(InvitationNotif invitationNotif){ + setImage(image, invitationNotif.member.imageUrls, ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.AVATAR); + setText(title, invitationNotif.member.fullName); + setText(subtitle, getString(R.string.requested_to_be_your_friend)); + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/LoadingViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/LoadingViewHolder.java new file mode 100755 index 0000000..062f547 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/LoadingViewHolder.java @@ -0,0 +1,21 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; + +import data.model.Loading; + + +/** + * Created by iran on 5/10/2016. + */ +public class LoadingViewHolder extends BaseViewHolder { + + public LoadingViewHolder(View view) { + super(view); + } + + @Override + public void fill(Loading loading) { + + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/MemberNotifViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/MemberNotifViewHolder.java new file mode 100755 index 0000000..ea67e6e --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/MemberNotifViewHolder.java @@ -0,0 +1,43 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.util.Log; +import android.view.View; + +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.NotifActorClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.NotifParticipantClickedUIEvent; +import com.shaya.poinila.android.util.BusProvider; + +import data.model.ImageUrls; +import data.model.Notification; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; + +/** + * Created by iran on 2015-08-15. + */ +public class MemberNotifViewHolder extends NotificationViewHolder { + + public final ImageUrls.ImageType participantImageType; + + public MemberNotifViewHolder(View inflatedView, ImageUrls.ImageType participantImageType) { + super(inflatedView); + this.participantImageType = participantImageType; + } + + public void fill( final Notification notification){ + super.fill(notification); + if (notification.type != Notification.NotificationType.FRIENDSHIP_ACCEPTED) { + setImage(image, notification.mainActor.imageUrls, ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.AVATAR); + } + + rootView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post( + new NotifParticipantClickedUIEvent(notification.participants.get(0), notification.getParticipantImageType())); + + } + }); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/MemberViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/MemberViewHolder.java new file mode 100755 index 0000000..d3fd326 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/MemberViewHolder.java @@ -0,0 +1,109 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.FriendshipClickEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ResourceUtils; + +import butterknife.Bind; +import butterknife.OnClick; +import data.event.BaseEvent; +import data.model.ImageUrls; +import data.model.Member; +import manager.DataRepository; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setFont; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by iran on 2015-07-07. + */ +public class MemberViewHolder extends BaseViewHolder{ + + BaseEvent.ReceiverName receiverTag; + + public MemberViewHolder(View view, final BaseEvent.ReceiverName receiverTag) { + super(view); + this.receiverTag = receiverTag; + + view.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new MemberClickedUIEvent(getAdapterPosition(), receiverTag)); + } + }); + } + + @Bind(R.id.image) + ImageView avatar; + + @Bind(R.id.title) + TextView name; + + @Bind(R.id.subtitle) + TextView subtitle; + + @Bind(R.id.icon) + ImageView icon; + + @Bind(R.id.icon_caption) + TextView iconCaption; + + public void fill(Member member){ + setImage(avatar, member.imageUrls, ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.AVATAR); + setText(name, member.fullName); + + setFont(name, ResourceUtils.getString(R.string.default_bold_font_path)); + + String subtitleText = (member.url == null) ? member.uniqueName : member.url; + setText(subtitle, subtitleText); + + setFont(subtitle, ResourceUtils.getString(R.string.default_font_path)); + + if (DataRepository.getInstance().isMe(member.id)) { + icon.setVisibility(View.GONE); + return; + } + else icon.setVisibility(View.VISIBLE); + + //icon.setBackgroundResource(0); // to clear old background + if (DataRepository.getInstance().isMe(member.id)) { + // TODO: this is terrible! must use the profile fragment instead. + icon.setVisibility(View.GONE); + } else if (member.friendshipStatus == null){ + icon.setVisibility(View.INVISIBLE); + } + else{ + icon.setVisibility(View.VISIBLE); + switch (member.friendshipStatus) { + case NotFriend: + icon.setImageResource(R.drawable.add_friend); + break; + case WaitingForAction: + //TODO this is temporary drawable. must replace with new drawable + icon.setImageResource(R.drawable.add_friend); + break; + case IsFriend: + icon.setImageResource(R.drawable.friends); + break; + case Pending: + icon.setImageResource(R.drawable.pending_friendship_request); + break; + } + } + } + + /* @OnClick(R.actorID.image) public void onAvatarClick(){ + BusProvider.getBus().post(new MemberClickedUIEvent(getAdapterPosition())); + }*/ + + @OnClick(R.id.icon) public void onFriendshipClick(){ + BusProvider.getBus().post(new FriendshipClickEvent(getAdapterPosition())); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/MyFollowedCollectionViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/MyFollowedCollectionViewHolder.java new file mode 100755 index 0000000..ddbbfda --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/MyFollowedCollectionViewHolder.java @@ -0,0 +1,29 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import com.shaya.poinila.android.util.TimeUtils; + +import data.event.BaseEvent; +import data.model.Collection; +import manager.DataRepository; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by iran on 2015-08-05. + */ +public class MyFollowedCollectionViewHolder extends CollectionViewHolder { + public MyFollowedCollectionViewHolder(View view, BaseEvent.ReceiverName receiverTag) { + super(view, receiverTag); + } + + @Override + public void fill(Collection collection) { + super.fill(collection); + topTag.setVisibility(View.GONE); + setText(bottomTag, TimeUtils.getTimeString(collection.lastPostCreationTime, + DataRepository.getInstance().getServerTimeDifference())); + /*setText(bottomTag, StringUtils.getStringWithPersianNumber( + ResourceUtils.getString(R.string.new_posts_formatted), collection.unseenPostsCount));*/ + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/NotificationViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/NotificationViewHolder.java new file mode 100755 index 0000000..72896f5 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/NotificationViewHolder.java @@ -0,0 +1,106 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.NotifActorClickedUIEvent; +import com.shaya.poinila.android.util.BusProvider; + +import butterknife.Bind; +import data.model.Notification; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setNotificationImages; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setNotificationTitle; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ResourceUtils.getString; +import static com.shaya.poinila.android.util.ResourceUtils.getStringFormatted; + +/** + * Created by iran on 2015-08-15. + */ +public abstract class NotificationViewHolder extends BaseViewHolder { + protected @Bind(R.id.image) ImageView image; + protected @Bind(R.id.title) TextView title; + protected @Bind(R.id.subtitle) TextView subtitle; + protected @Bind(R.id.notif_image_container) ViewGroup imageContainer; + + public NotificationViewHolder(View itemView) { + super(itemView); + } + + public void fill(final Notification notification){ + setNotificationTitle(title, notification); + setText(subtitle, getSubtitleText(notification)); + setNotificationImages(imageContainer, notification.participants, notification.getParticipantImageType()); + + image.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new NotifActorClickedUIEvent(getAdapterPosition())); + } + }); + + if (!notification.seen) + rootView.setBackgroundResource(R.color.wild_sand); + } + + protected String getSubtitleText(Notification notification){ + switch (notification.type){ + case MY_POST_LIKED: + return (notification.participants.size() == 1) ? + getString(R.string.notif_my_post_liked_singular) : + getString(R.string.notif_my_post_liked_plural); + + case MY_POST_REPOSTED: + return (notification.participants.size() == 1) ? + getString(R.string.notif_my_post_reposted_singular) : + getString(R.string.notif_my_post_reposted_plural); + + case COMMENT_AFTER_YOUR_COMMENT: + return (notification.participants.size() == 1) ? + getString(R.string.notif_comment_after_you_singular) : + getString(R.string.notif_comment_after_you_plural); + + case COMMENT_MY_POST: + return (notification.participants.size() == 1) ? + getString(R.string.notif_comment_my_post_singular) : + getString(R.string.notif_comment_my_post_plural); + + case FRIENDS_LIKED_POSTS: + /*return (notification.participants.size() == 1) ? + getString(R.string.notif_friend_liked_posts_singular) : + getStringFormatted(R.string.notif_friend_liked_posts_plural);*/ + return getStringFormatted(R.string.notif_friend_liked_posts_singular, notification.participants.size()); + /*getStringFormatted(R.string.notif_friend_liked_posts_singular, notification.mainActor.title): + getStringFormatted(R.string.notif_friend_liked_posts_plural, notification.mainActor.title);*/ + + + case FRIENDS_FOLLOWED_COLLECTIONS: + return getStringFormatted(R.string.notif_friend_followed_collections_singular, notification.participants.size()); + /* return (notification.participants.size() == 1) ? + getStringFormatted(R.string.notif_friend_followed_collections_singular, notification.participants.size()): + getStringFormatted(R.string.notif_friend_followed_collections_plural, notification.participants.size());*/ + + case MY_COLLECTION_FOLLOWED: + return (notification.participants.size() == 1) ? + getString(R.string.notif_my_collection_followed_singular) : + getString(R.string.notif_my_collection_followed_plural); + + case FRIENDS_CREATED_COLLECTIONS: + return getStringFormatted(R.string.notif_friend_created_collections_singular, notification.participants.size()); + /*return (notification.participants.size() == 1) ? + getStringFormatted(R.string.notif_friend_created_collections_singular, notification.mainActor.uniqueName): + getStringFormatted(R.string.notif_friend_created_collections_plural, + notification.participants.size(), notification.mainActor.uniqueName);*/ + case FRIENDSHIP_ACCEPTED: + return (notification.participants.size() == 1) ? + getString(R.string.notif_friendship_accepted_singular): + getString(R.string.notif_friendship_accepted_plural); + default: + return null; + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/PostDetailViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/PostDetailViewHolder.java new file mode 100755 index 0000000..8df3581 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/PostDetailViewHolder.java @@ -0,0 +1,252 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.text.Html; +import android.text.TextUtils; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.TextView; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent; +import com.shaya.poinila.android.presentation.view.ViewInflater; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.TimeUtils; + +import org.apmem.tools.layouts.FlowLayout; + +import butterknife.Bind; +import butterknife.ButterKnife; +import butterknife.OnClick; +import data.model.ImageUrls; +import data.model.Post; +import data.model.PostType; +import data.model.PrivacyType; +import data.model.Tag; +import manager.DataRepository; + +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.Collection; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.Comments; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.Fave; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.FaversList; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.FullImage; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.OriginalCollection; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.Poster; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.Reference; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.Repost; +import static com.shaya.poinila.android.presentation.uievent.PostComponentClickedUIEvent.Type.RepostersList; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by iran on 2015-11-18. + */ +public class PostDetailViewHolder extends BaseViewHolder{ + @Bind(R.id.post_title) + ViewGroup postTitle; + /* TextView postName; + ImageView faveIcon; + TextView websiteName; + TextView creationTime;*/ + @Bind(R.id.post_image) + ImageView postImage; + + @Bind(R.id.content) + TextView postContent; + + @Bind(R.id.website) TextView website; + @Bind(R.id.reference_container) ViewGroup postReferenceContainer; + + @Bind(R.id.collection_info) View collectionInfo; + @Bind(R.id.author_info) View authorInfo; + + @Bind(R.id.tags_divider) View tagsDivider; + @Bind(R.id.tags_container) + FlowLayout tagsContainer; + + @Bind(R.id.comment_container) ViewGroup commentsContainer; + + @Bind(R.id.stats) ViewGroup postStats; + ImageButton commentBtn, repostBtn, faveBtn; + TextView faveCount, commentCount, repostCount; + + @Bind(R.id.original_collection) ViewGroup originalCollection; + + + public PostDetailViewHolder(View view) { + super(view); + faveCount = ButterKnife.findById(postStats, R.id.fave_num); + faveBtn = ButterKnife.findById(postStats, R.id.fave_icon); + faveCount.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(FaversList)); + } + }); + faveBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Fave)); + } + }); + + commentCount = ButterKnife.findById(postStats, R.id.comment_num); + commentBtn= ButterKnife.findById(postStats, R.id.comment_icon); + commentCount.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Comments)); + } + }); + commentBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Comments)); + } + }); + + repostCount = ButterKnife.findById(postStats, R.id.repost_num); + repostBtn = ButterKnife.findById(postStats, R.id.repost_icon); + repostCount.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(RepostersList)); + } + }); + repostBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Repost)); + } + }); + + authorInfo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Poster)); + } + }); + collectionInfo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Collection)); + } + }); + originalCollection.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(OriginalCollection)); + } + }); + + } + + + @Override + public void fill(final Post post) { + + /*------actual fill--------*/ + + ((TextView)postTitle.findViewById(R.id.title)).setText(post.name); + //((TextView)postTitle.findViewById(R.id.subtitle)).setText(post.author.urlName); + //((TextView)postTitle).findViewById(R.actorID.image)) + ((TextView)postTitle.findViewById(R.id.date_created)). + setText(TimeUtils.getTimeString(post.creationTime, DataRepository.getInstance().getServerTimeDifference())); + + if (post.type == PostType.IMAGE) { + postImage.setVisibility(View.VISIBLE); + setImage(postImage, post.imagesUrls, ImageUrls.ImageType.POST, ImageUrls.ImageSize.BIG); + setText(postContent, post.summary); + + postImage.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (TextUtils.isEmpty(post.originalWebpage)) + BusProvider.getBus().post(new PostComponentClickedUIEvent(FullImage)); + else + BusProvider.getBus().post(new PostComponentClickedUIEvent(Reference)); + } + }); + } else{ + //DataRepository.getInstance().getPostContent(post.contentUrl.url, postContent); + postImage.setVisibility(View.GONE); + if (!TextUtils.isEmpty(post.contentUrl)){ + if (TextUtils.isEmpty(post.content)) + DataRepository.getInstance().getPostContent(post.contentUrl, post.id); + else + setText(postContent, Html.fromHtml(post.content)); + } + } + + setImage((ImageView) authorInfo.findViewById(R.id.image), + post.author.imageUrls, ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.AVATAR); + ((TextView)authorInfo.findViewById(R.id.title)).setText(post.author.fullName); + + setImage((ImageView) collectionInfo.findViewById(R.id.image), + post.collection.coverImageUrls, ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.AVATAR); + ((TextView)collectionInfo.findViewById(R.id.title)).setText(post.collection.name); + + if (TextUtils.isEmpty(post.originalWebpage)) + postReferenceContainer.setVisibility(View.GONE); + else { + setText(website, post.originalWebpage); + postReferenceContainer.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostComponentClickedUIEvent(Reference)); + } + }); + } + + if (post.tags == null || post.tags.isEmpty()){ + tagsContainer.setVisibility(View.GONE); + tagsDivider.setVisibility(View.GONE); + } + else{ + tagsContainer.removeAllViews(); + for (Tag tag : post.tags){ + //tagsContainer.addView(ViewInflater.inflateNormalTag(tag, getActivity())); + // TODO: difference between tag in post and interest in member may rise some issues + ViewInflater.addTagToContainer(tagsContainer, tag); + } + } + + /*---Comments----*/ + if (post.comments == null || post.comments.isEmpty()){ + commentsContainer.setVisibility(View.GONE); + //??? findviewbyid + rootView.findViewById(R.id.comment_container_divider).setVisibility(View.GONE); + }else{ + commentsContainer.removeAllViews(); + for (int i = 0; i < 3 && i < post.comments.size(); i++){ + commentsContainer.addView(ViewInflater.inflateComment(post.comments.get(i), rootView.getContext())); // ???getActivity + } + } + + /*----stats----*/ + if (post.privacy == PrivacyType.PRIVATE){ + repostBtn.setVisibility(View.INVISIBLE); + repostCount.setVisibility(View.INVISIBLE); + }else { + setText(repostCount, post.repostCount); + } + setText(faveCount, post.faveCount); + faveBtn.setSelected(post.favedByMe); + setText(commentCount, post.commentCount); + + if (post.originalCollection != null) { + setImage((ImageView) originalCollection.findViewById(R.id.image), post.originalCollection.coverImageUrls, + ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.AVATAR); + ((TextView) originalCollection.findViewById(R.id.subtitle)). + setText(String.valueOf(post.originalCollection.name)); + ((TextView) originalCollection.findViewById(R.id.fave_num)). + setText(String.valueOf(post.originalCollection.totalLikeCount)); + ((TextView) originalCollection.findViewById(R.id.comment_num)). + setText(String.valueOf(post.originalCollection.totalCommentCount)); + ((TextView) originalCollection.findViewById(R.id.repost_num)). + setText(String.valueOf(post.originalCollection.totalRepostCount)); + }else{ + originalCollection.setVisibility(View.GONE); + } + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/PostNotifViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/PostNotifViewHolder.java new file mode 100755 index 0000000..7f6f209 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/PostNotifViewHolder.java @@ -0,0 +1,36 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; + +import com.shaya.poinila.android.presentation.uievent.NotifActorClickedUIEvent; +import com.shaya.poinila.android.util.BusProvider; + +import data.model.ImageUrls; +import data.model.Notification; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; + +/** + * Created by iran on 2015-08-15. + */ +public class PostNotifViewHolder extends NotificationViewHolder { + + public PostNotifViewHolder(View inflatedView) { + super(inflatedView); + } + + @Override + public void fill(Notification notification) { + super.fill(notification); + setImage(image, notification.mainActor.imageUrls, ImageUrls.ImageType.POST, ImageUrls.ImageSize.AVATAR); + rootView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new NotifActorClickedUIEvent(getAdapterPosition())); + } + }); + + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/PostViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/PostViewHolder.java new file mode 100755 index 0000000..2bd61c3 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/PostViewHolder.java @@ -0,0 +1,203 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.support.annotation.Nullable; +import android.text.Html; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.makeramen.roundedimageview.RoundedTransformationBuilder; +import com.shaya.poinila.android.presentation.PoinilaApplication; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.CollectionClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.MemberClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.PostClickedUIEvent; +import com.shaya.poinila.android.presentation.uievent.RemovePostUIEvent; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.Logger; + +import butterknife.Bind; +import butterknife.ButterKnife; +import butterknife.OnClick; +import data.event.BaseEvent; +import data.model.ImageUrls; +import data.model.Post; +import data.model.PostType; +import data.model.PrivacyType; +import manager.DataRepository; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setFont; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; +import static com.shaya.poinila.android.util.ResourceUtils.getString; + +/** + * Created by iran on 2015-06-22. + */ +public class PostViewHolder extends BaseViewHolder{ + public final BaseEvent.ReceiverName receiverTag; + + /*@Bind(R.actorID.post_title) + public ViewGroup postTitle;*/ + + @Bind(R.id.post_image) + public ImageView postImage; + + @Bind(R.id.post_content) + public TextView postSummary; + + @Bind(R.id.post_stats) + public ViewGroup postStats; + + @Bind(R.id.post_title) + public TextView postName; + //public TextView postWebsiteName; + + public ImageView favoriteBtn; + public TextView favoriteCount; + public ImageView commentBtn; + public TextView commentCount; + public ImageView repostBtn; + public TextView repostCount; + + + @Nullable @Bind(R.id.post_collection) + public ViewGroup postCollection; + public ImageView collectionImage; + public TextView collectionStatusView; + public TextView collectionName; + + @Nullable @Bind(R.id.post_author) + public ViewGroup postAuthor; + public ImageView avatar; + public TextView authorName; + public TextView createdByTextView; + + + public PostViewHolder(View view, final BaseEvent.ReceiverName receiverTag) { + super(view); + this.receiverTag = receiverTag; + + favoriteBtn = ButterKnife.findById(postStats, R.id.fave_icon); + favoriteCount = ButterKnife.findById(postStats, R.id.fave_num); + commentBtn = ButterKnife.findById(postStats, R.id.comment_icon); + commentCount = ButterKnife.findById(postStats, R.id.comment_num); + repostBtn = ButterKnife.findById(postStats, R.id.repost_icon); + repostCount = ButterKnife.findById(postStats, R.id.repost_num); + + view.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new PostClickedUIEvent(getAdapterPosition(), receiverTag)); + } + }); + } + + public void fill(Post post) { + switch (post.type){ + case TEXT: + postSummary.setVisibility(View.VISIBLE); + postImage.setVisibility(View.GONE); + postName.setVisibility(View.VISIBLE); + break; + case IMAGE: + postSummary.setVisibility(TextUtils.isEmpty(post.summary) ? View.GONE : View.VISIBLE); + postImage.setVisibility(View.VISIBLE); + postName.setVisibility(!TextUtils.isEmpty(post.name) ? View.VISIBLE : View.GONE); + break; + case VIDEO: + postSummary.setVisibility(TextUtils.isEmpty(post.summary) ? View.GONE : View.VISIBLE); + postImage.setVisibility(View.VISIBLE); + postName.setVisibility(!TextUtils.isEmpty(post.name) ? View.VISIBLE : View.GONE); + break; + } + + if (post.type == PostType.IMAGE) { + + /*if (TextUtils.isEmpty(post.summary)) + postContent.setVisibility(View.GONE);*/ + }else{ //post.type == PostType.TEXT + + } + + favoriteBtn.setSelected(post.favedByMe); + + // name and site + setText(postName, post.name); + //setText(postWebsiteName, post.originalWebpage); + + // set Bold Font + setFont(postName, getString(R.string.default_bold_font_path)); + + + + float radius = PoinilaApplication.getAppContext().getResources().getDimension(R.dimen.cardview_compat_inset_shadow); + // image + setImage(postImage, post.imagesUrls, ImageUrls.ImageType.POST, ImageUrls.ImageSize.MEDIUM , new RoundedTransformationBuilder().cornerRadiusDp(radius).build()); + + // content + if (post.type == PostType.TEXT){ + if (!TextUtils.isEmpty(post.summary)) + setText(postSummary, post.summary); + else if (!TextUtils.isEmpty(post.contentUrl)){ + if (TextUtils.isEmpty(post.content)) + DataRepository.getInstance().getPostContent(post.contentUrl, post.id); + else + setText(postSummary, Html.fromHtml(post.content)); + } + }else { + setText(postSummary, post.summary); + } + // stats + if (post.privacy == PrivacyType.PRIVATE){ + repostBtn.setVisibility(View.INVISIBLE); + repostCount.setVisibility(View.INVISIBLE); + }else { + setText(repostCount, post.repostCount); + } + setText(favoriteCount, post.faveCount); + setText(commentCount, post.commentCount); + + // owner + setImage(avatar, post.author.imageUrls, ImageUrls.ImageType.MEMBER, ImageUrls.ImageSize.AVATAR); + String createdBy = post.isRepost ? getString(R.string.repost_by) : getString(R.string.created_by); + setText(createdByTextView, createdBy); + setText(authorName, post.author.fullName); + + // collection + setImage(collectionImage, post.collection.coverImageUrls, ImageUrls.ImageType.COLLECTION, ImageUrls.ImageSize.AVATAR); + setText(collectionStatusView, getString(R.string.collected_in)); + setText(collectionName, post.collection.name); + + if (postAuthor != null ){//&& DataRepository.getInstance().isMe(post.author.id)) { + postAuthor.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + BusProvider.getBus().post(new MemberClickedUIEvent(getAdapterPosition(), receiverTag)); + } + }); + } + //else postAuthor.setOnClickListener(null); + } + + @OnClick({R.id.post_image, R.id.post_content}) protected void onGoingToPost(){ + BusProvider.getBus().post(new PostClickedUIEvent(getAdapterPosition(), receiverTag)); + } + + @Nullable @OnClick(R.id.post_collection) protected void onGoingToCollection(){ + BusProvider.getBus().post(new CollectionClickedUIEvent(getAdapterPosition(), receiverTag)); + } + + + /*@Nullable @OnClick (R.actorID.post_author) protected void onGoingToProfile(){ + BusProvider.getBus().post(new MemberClickedUIEvent(getAdapterPosition(), receiverTag)); + }*/ + + @Nullable @OnClick(R.id.bottom_bar_remove) public void onRemovePost(){ + BusProvider.getBus().post(new RemovePostUIEvent(getAdapterPosition())); + } +} + diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/PostsOfCollectionViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/PostsOfCollectionViewHolder.java new file mode 100755 index 0000000..a135a87 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/PostsOfCollectionViewHolder.java @@ -0,0 +1,21 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import com.shaya.poinila.android.presentation.R; + +import butterknife.ButterKnife; +import data.event.BaseEvent; + +/** + * Created by iran on 2015-08-10. + */ +public class PostsOfCollectionViewHolder extends PostViewHolder{ + + public PostsOfCollectionViewHolder(View view, BaseEvent.ReceiverName receiverTag) { + super(view, receiverTag); + + avatar = ButterKnife.findById(postAuthor, R.id.image); + createdByTextView = ButterKnife.findById(postAuthor, R.id.title); + authorName = ButterKnife.findById(postAuthor, R.id.subtitle); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/RatePonilaViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/RatePonilaViewHolder.java new file mode 100755 index 0000000..c5320e9 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/RatePonilaViewHolder.java @@ -0,0 +1,30 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.Button; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.fragments.DashboardFragment.DashboardRecyclerViewAdapter.AskIfUserRatesPonila; + +import butterknife.Bind; + +/** + * Created by iran on 1/20/2016. + */ +public class RatePonilaViewHolder extends BaseViewHolder{ + @Bind(R.id.positive_button) + public Button positiveButton; + @Bind(R.id.negative_button) + public Button negativeButton; + @Bind(R.id.dont_know_button) + public Button notNowButton; + + public RatePonilaViewHolder(View view) { + super(view); + } + + @Override + public void fill(AskIfUserRatesPonila askIfUserRatesPonila) { + + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/RemovableInterestViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/RemovableInterestViewHolder.java new file mode 100755 index 0000000..ede2e65 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/RemovableInterestViewHolder.java @@ -0,0 +1,49 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.ImageView; + +import com.makeramen.roundedimageview.Corner; +import com.makeramen.roundedimageview.RoundedTransformationBuilder; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.ResourceUtils; +import com.squareup.picasso.Transformation; + +import butterknife.Bind; +import data.model.ImageTag; +import data.model.ImageUrls; + +import static com.shaya.poinila.android.presentation.view.ViewUtils.setImage; +import static com.shaya.poinila.android.presentation.view.ViewUtils.setText; + +/** + * Created by iran on 2015-11-04. + */ +public class RemovableInterestViewHolder extends RemovableTagViewHolder{ + + @Bind(R.id.image) public ImageView mImageView; + + public RemovableInterestViewHolder(View view) { + super(view); + } + + public void fill(ImageTag interest) { + setText(textView, interest.name); +// textView.setTextColor(ResourceUtils.getColor(invalidImage(interest) ? R.color.black : R.color.white)); + mImageView.setVisibility(invalidImage(interest) ? View.INVISIBLE : View.VISIBLE); +// removeBtn.setImageResource(invalidImage(interest) ? R.drawable.remove_boulder_36dp : R.drawable.remove_white_36dp); + + Transformation transformation = new RoundedTransformationBuilder() + .cornerRadiusDp(Corner.TOP_LEFT, ResourceUtils.getDimen(R.dimen.cardview_compat_inset_shadow)) + .cornerRadiusDp(Corner.TOP_RIGHT, ResourceUtils.getDimen(R.dimen.cardview_compat_inset_shadow)) + .oval(false) + .build(); + + + setImage(mImageView, interest.imageUrls, ImageUrls.ImageType.INTEREST, null, transformation); + } + + private boolean invalidImage(ImageTag imageInterest){ + return imageInterest.imageUrls == null || imageInterest.imageUrls.interest == null; + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/RemovablePostViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/RemovablePostViewHolder.java new file mode 100755 index 0000000..eee4fe4 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/RemovablePostViewHolder.java @@ -0,0 +1,22 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import com.shaya.poinila.android.presentation.R; + +import butterknife.Bind; +import butterknife.ButterKnife; +import data.event.BaseEvent; + +/** + * Created by iran on 2015-08-16. + */ +public class RemovablePostViewHolder extends PostViewHolder{ + + public RemovablePostViewHolder(View view, BaseEvent.ReceiverName receiverTag) { + super(view, receiverTag); + + collectionImage = ButterKnife.findById(postCollection, R.id.image); + collectionStatusView = ButterKnife.findById(postCollection, R.id.title); + collectionName = ButterKnife.findById(postCollection, R.id.subtitle); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/RemovableTagViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/RemovableTagViewHolder.java new file mode 100755 index 0000000..774d847 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/RemovableTagViewHolder.java @@ -0,0 +1,36 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.support.v7.widget.RecyclerView; +import android.view.View; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.RemoveTagEvent; +import com.shaya.poinila.android.util.BusProvider; + +import butterknife.Bind; +import butterknife.OnClick; + +/** + * Created by iran on 2015-07-25. + */ +public class RemovableTagViewHolder extends BaseViewHolder{ + @Bind(R.id.removeButton) public ImageView removeBtn; + @Bind(R.id.tag) public TextView textView; + + public RemovableTagViewHolder(View view) { + super(view); + } + + @Override + public void fill(T t) { + + } + + @OnClick(R.id.removeButton) public void onRemove(){ + if(getAdapterPosition() != RecyclerView.NO_POSITION) + BusProvider.getBus().post(new RemoveTagEvent(getAdapterPosition())); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/SelectableInterestViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/SelectableInterestViewHolder.java new file mode 100755 index 0000000..b7dfe55 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/SelectableInterestViewHolder.java @@ -0,0 +1,48 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.ImageView; + +import com.makeramen.roundedimageview.Corner; +import com.makeramen.roundedimageview.RoundedTransformationBuilder; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.util.ResourceUtils; +import com.squareup.picasso.Transformation; + +import butterknife.Bind; +import data.model.ImageTag; +import data.model.ImageUrls; +import data.model.Tag; + +/** + * Created by iran on 2015-11-03. + */ +public class SelectableInterestViewHolder extends CheckedTextViewHolder{ + @Bind(R.id.image) public ImageView mImageView; + + public SelectableInterestViewHolder(View view) { + super(view); + } + + @Override + public void fill(Tag interest) { + super.fill(interest); + ImageTag imageInterest = ((ImageTag) interest); +// textView.setTextColor(ResourceUtils.getColor(invalidImage(imageInterest) ? R.color.black : R.color.white)); + mImageView.setVisibility(invalidImage(imageInterest) ? View.INVISIBLE : View.VISIBLE); + + Transformation transformation = new RoundedTransformationBuilder() + .cornerRadiusDp(Corner.TOP_LEFT, ResourceUtils.getDimen(R.dimen.cardview_compat_inset_shadow)) + .cornerRadiusDp(Corner.TOP_RIGHT, ResourceUtils.getDimen(R.dimen.cardview_compat_inset_shadow)) + .oval(false) + .build(); + + ViewUtils.setImage(mImageView, ((ImageTag) interest).imageUrls, ImageUrls.ImageType.INTEREST, null, transformation); + } + + private boolean invalidImage(ImageTag imageInterest){ + return imageInterest.imageUrls == null || imageInterest.imageUrls.interest == null; + } + +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/SimpleTextViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/SimpleTextViewHolder.java new file mode 100755 index 0000000..3a5ad00 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/SimpleTextViewHolder.java @@ -0,0 +1,20 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; + +import butterknife.Bind; + +/** + * Created by iran on 2015-08-19. + */ +public abstract class SimpleTextViewHolder extends BaseViewHolder{ + @Bind(R.id.text) + public TextView textView; + + public SimpleTextViewHolder(View view) { + super(view); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/SingleImageViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/SingleImageViewHolder.java new file mode 100755 index 0000000..7af1cd6 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/SingleImageViewHolder.java @@ -0,0 +1,26 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.view.View; +import android.widget.ImageView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.ImageClickedUIEvent; +import com.shaya.poinila.android.util.BusProvider; + +import butterknife.Bind; +import butterknife.OnClick; + +/** + * Created by iran on 2015-07-15. + */ +public abstract class SingleImageViewHolder extends BaseViewHolder{ + @Bind(R.id.image) + public ImageView imageView; + public SingleImageViewHolder(View view) { + super(view); + } + + @OnClick(R.id.image) public void onImageClick(){ + BusProvider.getBus().post(new ImageClickedUIEvent(getAdapterPosition())); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/SwitchTextViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/SwitchTextViewHolder.java new file mode 100755 index 0000000..a2590f7 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/SwitchTextViewHolder.java @@ -0,0 +1,41 @@ +package com.shaya.poinila.android.presentation.viewholder; + +import android.support.v7.widget.SwitchCompat; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CompoundButton; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.OnOffSettingToggledUIEvent; +import com.shaya.poinila.android.presentation.view.ViewUtils; +import com.shaya.poinila.android.util.BusProvider; + +import butterknife.Bind; +import data.model.OnOffSetting; + +/** + * Created by iran on 2015-09-07. + */ +public class SwitchTextViewHolder extends BaseViewHolder{ + @Bind(R.id.switch_btn) SwitchCompat switchBtn; + @Bind(R.id.label) TextView label; + ViewGroup viewgroup; + + public SwitchTextViewHolder(View view) { + super(view); + viewgroup = (ViewGroup) view; + switchBtn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + BusProvider.getBus().post(new OnOffSettingToggledUIEvent(getAdapterPosition(), isChecked)); + } + }); + } + + public void fill(OnOffSetting setting){ + switchBtn.setChecked(setting.value == OnOffSetting.ON); + ViewUtils.setText(label, setting.name); + ViewUtils.enableLayoutChildes(viewgroup, setting.enabled); + } +} diff --git a/src/main/java/com/shaya/poinila/android/presentation/viewholder/notification/NEditableCollectionViewHolder.java b/src/main/java/com/shaya/poinila/android/presentation/viewholder/notification/NEditableCollectionViewHolder.java new file mode 100755 index 0000000..37a26dd --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/presentation/viewholder/notification/NEditableCollectionViewHolder.java @@ -0,0 +1,17 @@ +package com.shaya.poinila.android.presentation.viewholder.notification; + +import android.view.View; + +import com.shaya.poinila.android.presentation.viewholder.EditableCollectionViewHolder; + +import data.event.BaseEvent; + +/** + * Created by iran on 6/22/2016. + */ +public class NEditableCollectionViewHolder extends EditableCollectionViewHolder { + public NEditableCollectionViewHolder(View view, BaseEvent.ReceiverName receiverTag) { + super(view, receiverTag); + bottomTag.setVisibility(View.GONE); + } +} diff --git a/src/main/java/com/shaya/poinila/android/utils/NotificationQueue.java b/src/main/java/com/shaya/poinila/android/utils/NotificationQueue.java new file mode 100755 index 0000000..90fa495 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/utils/NotificationQueue.java @@ -0,0 +1,36 @@ +package com.shaya.poinila.android.utils; + +import org.json.JSONArray; + +import java.util.HashMap; +import java.util.LinkedList; + +/** + * Created by iran on 6/20/2016. + */ +public class NotificationQueue { + + private static NotificationQueue instance; + HashMap maps; + + private NotificationQueue(){ + maps = new HashMap<>(); + } + + public static NotificationQueue getInstance(){ + + if(instance == null){ + instance = new NotificationQueue(); + } + + return instance; + } + + public void put(String group, JSONArray jSon){ + maps.put(group, jSon); + } + + public JSONArray get(String group){ + return maps.get(group); + } +} diff --git a/src/main/java/com/shaya/poinila/android/utils/PonilaAccountManager.java b/src/main/java/com/shaya/poinila/android/utils/PonilaAccountManager.java new file mode 100755 index 0000000..88761c2 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/utils/PonilaAccountManager.java @@ -0,0 +1,400 @@ +package com.shaya.poinila.android.utils; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.accounts.AccountManagerCallback; +import android.accounts.AccountManagerFuture; +import android.accounts.AuthenticatorException; +import android.accounts.OperationCanceledException; +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.ActivityCompat; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; +import android.text.TextUtils; +import android.util.Log; + +import com.google.android.gms.auth.api.Auth; +import com.google.android.gms.auth.api.signin.GoogleSignInAccount; +import com.google.android.gms.auth.api.signin.GoogleSignInOptions; +import com.google.android.gms.auth.api.signin.GoogleSignInResult; +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.api.GoogleApiClient; +import com.google.android.gms.common.api.ResultCallback; +import com.onesignal.OneSignal; +import com.shaya.poinila.android.presentation.PoinilaApplication; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.PoinilaPreferences; + +import java.io.IOException; + +import data.model.Member; +import manager.DBFacade; +import ru.noties.debug.Debug; + +/** + * Created by iran on 5/29/2016. + */ +public class PonilaAccountManager { + + private AccountManager accountManager; // Android class + private static PonilaAccountManager instance = null; // Singleton instance + private String ponilaAccountType; + private GoogleApiClient mGoogleApiClient; + private GoogleSignInOptions gso; + public final static int GOOGLE_SIGN_IN_REQUEST_CODE = 10; + //================================================================================ + // Methods + //================================================================================ + + /** + * Private constructor + */ + private PonilaAccountManager(){ + accountManager = AccountManager.get(PoinilaApplication.getAppContext()); + ponilaAccountType = PoinilaApplication.getAppContext().getString(R.string.account_type); + + // Configure sign-in to request the user's ID, email address, and basic + // profile. ID and basic profile are included in DEFAULT_SIGN_IN. + gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) + .requestIdToken(PoinilaApplication.getAppContext().getString(R.string.server_client_id)) + .requestEmail() + .build(); + } + + /** + * Get the singleton instance + * @return PonilaAccountManager instance + */ + public static PonilaAccountManager getInstance(){ + if(instance == null){ + instance = new PonilaAccountManager(); + } + + return instance; + } + + /** + *

+ * Get the first account of the given type + * @param accountType Account type + * @return Account (if not found -> null) + */ + public Account getFirstAccount(String accountType) { + Account[] accounts = accountManager.getAccountsByType(accountType); + if (accounts.length > 0) { + return accounts[0]; + } else { + return null; + } + } + + /** + * Check whether at least a Goftalk account exists + * @return True|False + */ + public boolean ponilaAccountExists() { + return getPonilaAccountsNum() > 0; + } + + /** + * Get the account token of the first found account + * of the given type
+ * @param accountType Type of account + * @return Account token (if not found = "") + */ + public String getFirstAccountToken(String accountType) { + Account[] accounts = accountManager.getAccountsByType(accountType); + if (accounts.length > 0) { + return accountManager.peekAuthToken( + accounts[0], + accountType); + } else { + return ""; + } + } + + public void initGoogleAPIClient(FragmentActivity activity, GoogleApiClient.OnConnectionFailedListener onConnectionFailedListener){ + + if(isConnectedGoogleApiClient()) return; + if(mGoogleApiClient != null) mGoogleApiClient.stopAutoManage(activity); + // Build a GoogleApiClient with access to the Google Sign-In API and the + // options specified by gso. + mGoogleApiClient = new GoogleApiClient.Builder(activity) + .enableAutoManage(activity, 0, onConnectionFailedListener) + .addApi(Auth.GOOGLE_SIGN_IN_API, gso) + .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { + @Override + public void onConnected(@Nullable Bundle bundle) { + } + + @Override + public void onConnectionSuspended(int i) { + + } + }).build(); + + } + + public void connectGoogleApiClient(){ + if(mGoogleApiClient != null) + mGoogleApiClient.connect(); + } + + public void signInWithGoogleAPI(Fragment fragment){ + Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); + fragment.startActivityForResult(signInIntent, GOOGLE_SIGN_IN_REQUEST_CODE); + } + + /** + * Get Object Of Google Account + * @param data + * @param onGoogleSignInResult + * @return + */ + public GoogleSignInAccount getGoogleSignInAccount(Intent data, OnGoogleSignInResult onGoogleSignInResult){ + // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); + GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); + GoogleSignInAccount acct = result.getSignInAccount(); + Log.d(getClass().getName(), "result = " + result.isSuccess()); + if (result.isSuccess()) { + // Signed in successfully, show authenticated UI. + onGoogleSignInResult.onSuccessGoogleSignIn(acct); + } else { + // Signed out, show unauthenticated UI. + onGoogleSignInResult.onFailureGoogleSignIn(acct); + } + + return acct; + } + + /** + * Sign Out From Google Account + * @param resultCallback + */ + public void signOutWithGoogleAPI(ResultCallback resultCallback){ +// revokeAccessGoogleAPI(resultCallback); + Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(resultCallback); + + } + + public void stopAutoManageGoogleApiClient(FragmentActivity activity){ + if(isConnectedGoogleApiClient()) mGoogleApiClient.stopAutoManage(activity); + } + + public void disconnectGoogleApiClient() { + if(isConnectedGoogleApiClient()) mGoogleApiClient.disconnect(); + } + + public boolean isConnectedGoogleApiClient(){ + return mGoogleApiClient != null && mGoogleApiClient.isConnected(); + } + + /** + * Disconnect Ponila From Google Account + * @param resultCallback + */ + public void revokeAccessGoogleAPI(ResultCallback resultCallback){ + Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback(resultCallback); + } + + public interface OnGoogleSignInResult{ + public void onSuccessGoogleSignIn(GoogleSignInAccount acct); + public void onFailureGoogleSignIn(GoogleSignInAccount acct); + } + + public void setGoogle(){ + setPonilaAccountData("sign_in_with_google", "yes"); + } + + public boolean isSignInWithGoogle(){ + return !TextUtils.isEmpty(getPonilaAccountData("sign_in_with_google")); + } + + /** + * Get the Ponila account token + * @return Ponila account token (if not found => "") + */ + public String getPonilaAccountToken() { + return getFirstAccountToken(ponilaAccountType); + } + + /** + * Get username of the Goftalk account + * @return Ponil username (if not found => "") + */ + public String getPonilaAccountUsername() { + Account gAccunt = getFirstAccount(ponilaAccountType); + if (gAccunt != null) return gAccunt.name; + else return ""; + } + + + /** + * set extra data + * @param key + * @param value + */ + public void setPonilaAccountData(String key, String value) { + + if(ponilaAccountExists()){ + // Get account (we know there exist at least one account of this type) + Account PonilaAccount = accountManager.getAccountsByType(ponilaAccountType)[0]; + // Set the data + accountManager.setUserData(PonilaAccount, key, value); + } + + } + + /** + * get extra data + * @param key + * @return + */ + public String getPonilaAccountData(String key) { + + // If no account is found, return "" + if (!ponilaAccountExists()) { + return ""; + } else { + // Get account + Account account = AccountManager.get(PoinilaApplication.getAppContext()).getAccountsByType(ponilaAccountType)[0]; + + // Return value + String value = ""; + try { + value = AccountManager.get(PoinilaApplication.getAppContext()).getUserData(account, key); + }catch(SecurityException e){ + e.printStackTrace(); + } + + if (value == null) return ""; + return value; + } + } + + /** + * Get the number of Ponila accounts + * @return Number of Ponila accounts + */ + private int getPonilaAccountsNum() { + return AccountManager + .get(PoinilaApplication.getAppContext()) + .getAccountsByType(ponilaAccountType) + .length; + } + + /** +// * Remove the Ponila account from phone +// */ + public void removePonilaAccount() { + Debug.i("RemovePonilaAccounts"); + // Callback of removing operation + AccountManagerCallback remCallback = new AccountManagerCallback() { + @Override + public void run(AccountManagerFuture future) { + if (future.isDone()) { + // If there's still an account, call remove again + if (getPonilaAccountsNum() > 0) removePonilaAccount(); + } + } + }; + + // Get all the Ponila accounts + Account[] gaccounts = AccountManager + .get(PoinilaApplication.getAppContext()) + .getAccountsByType(ponilaAccountType); + + // Remove all accounts + for (Account gaccount : gaccounts) { + AccountManager + .get(PoinilaApplication.getAppContext()) + .removeAccount(gaccount, remCallback, null); + } + + } + + /** + * Add a Ponila account + * @param username Username + * @param password Password + * @param authToken Access Token + */ + public void addPonilaAccount(String username, String password, String authToken) { + final Account account = new Account(username, ponilaAccountType); + + PoinilaPreferences.putAuthToken(authToken); + + accountManager.addAccountExplicitly(account, password, null); + accountManager.setAuthToken(account, ponilaAccountType, authToken); + } + + public void addPonilaAccountFromGoogle(String authToken) { + final Account account = new Account(getGoogleAccount().name, ponilaAccountType); + + PoinilaPreferences.putAuthToken(authToken); + + accountManager.addAccountExplicitly(account, "google_login", null); + accountManager.setAuthToken(account, ponilaAccountType, authToken); + } + + public void updatePonilaAccount(String password, String authToken) { + Account[] accounts = accountManager.getAccountsByType(ponilaAccountType); + + if(accounts.length > 0 && password != null) + accountManager.setPassword(accounts[0], password); + + if(accounts.length > 0 && authToken != null){ + PoinilaPreferences.putAuthToken(authToken); + accountManager.setAuthToken(accounts[0], ponilaAccountType, authToken); + } + } + + + + public void initUserTag(){ + Member member = DBFacade.getCachedMyInfo(); + if(member != null){ + OneSignal.sendTag("member_id", member.getId()); + } + } + + public void removeUserTag(){ + OneSignal.deleteTag("member_id"); + } + + public String getPonilaAuthToken(){ + Account[] accounts = accountManager.getAccountsByType(ponilaAccountType); + + if(accounts.length > 0) + try { + return accountManager.getAuthToken(accounts[0], ponilaAccountType, new Bundle(), true, null, null) + .getResult() + .getString(AccountManager.KEY_AUTHTOKEN); + } catch (OperationCanceledException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (AuthenticatorException e) { + e.printStackTrace(); + } + return ""; + } + + + public Account getGoogleAccount(){ + Account[] accounts = accountManager.getAccounts(); + + for(Account account : accounts){ + if(account.type.equals("com.google")) return account; + } + + return null; + } + + + +} diff --git a/src/main/java/com/shaya/poinila/android/utils/PonilaJsonParser.java b/src/main/java/com/shaya/poinila/android/utils/PonilaJsonParser.java new file mode 100755 index 0000000..74016af --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/utils/PonilaJsonParser.java @@ -0,0 +1,92 @@ +package com.shaya.poinila.android.utils; + +import java.io.IOException; +import java.io.Reader; +import java.io.StringReader; + +import com.google.gson.JsonElement; +import com.google.gson.JsonIOException; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSyntaxException; +import com.google.gson.internal.Streams; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.MalformedJsonException; + +/** + * A parser to parse Json into a parse tree of {@link JsonElement}s + * + * @author Inderjeet Singh + * @author Joel Leitch + * @since 1.3 + */ +public final class PonilaJsonParser { + + /** + * Parses the specified JSON string into a parse tree + * + * @param json JSON text + * @return a parse tree of {@link JsonElement}s corresponding to the specified JSON + * @throws JsonParseException if the specified text is not valid JSON + * @since 1.3 + */ + public JsonElement parse(String json) throws JsonSyntaxException { + return parse(new StringReader(json)); + } + + /** + * Parses the specified JSON string into a parse tree + * + * @param json JSON text + * @return a parse tree of {@link JsonElement}s corresponding to the specified JSON + * @throws JsonParseException if the specified text is not valid JSON + * @since 1.3 + */ + public JsonElement parse(Reader json) throws JsonIOException, JsonSyntaxException { + try { + JsonReader jsonReader = new JsonReader(json); + JsonElement element = parse(jsonReader); + if (!element.isJsonNull() && jsonReader.peek() != JsonToken.END_DOCUMENT) { + throw new JsonSyntaxException("Did not consume the entire document."); + } + return element; + } catch (MalformedJsonException e) { + throw new JsonSyntaxException(e); + } catch (IOException e) { + throw new JsonIOException(e); + } catch (NumberFormatException e) { + throw new JsonSyntaxException(e); + } + } + + /** + * Returns the next value from the JSON stream as a parse tree. + * + * @throws JsonParseException if there is an IOException or if the specified + * text is not valid JSON + * @since 1.6 + */ + public JsonElement parse(JsonReader json) throws JsonIOException, JsonSyntaxException { + + json.setLenient(true); + + try { + return Streams.parse(json); + } catch (StackOverflowError e) { + throw new JsonParseException("Failed parsing JSON source: " + json + " to Json", e); + } catch (OutOfMemoryError e) { + throw new JsonParseException("Failed parsing JSON source: " + json + " to Json", e); + } + +// boolean lenient = json.isLenient(); +// try { +// return Streams.parse(json); +// } catch (StackOverflowError e) { +// throw new JsonParseException("Failed parsing JSON source: " + json + " to Json", e); +// } catch (OutOfMemoryError e) { +// throw new JsonParseException("Failed parsing JSON source: " + json + " to Json", e); +// } finally { +// json.setLenient(lenient); +// } + } +} diff --git a/src/main/java/com/shaya/poinila/android/utils/PonilaQueue.java b/src/main/java/com/shaya/poinila/android/utils/PonilaQueue.java new file mode 100755 index 0000000..7747096 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/utils/PonilaQueue.java @@ -0,0 +1,38 @@ +package com.shaya.poinila.android.utils; + +import java.util.LinkedList; +import java.util.Queue; + +/** + * Created by iran on 6/14/2016. + */ +public class PonilaQueue { + + private static PonilaQueue instance; + private LinkedList queue; + + private PonilaQueue(){ + queue = new LinkedList(); + } + + public static PonilaQueue getInstance(){ + + if(instance == null){ + instance = new PonilaQueue(); + } + + return instance; + } + + public void push(Object object){ + queue.add(object); + } + + public boolean isEmpty(){ + return queue.isEmpty(); + } + + public Object pop(){ + return queue.remove(); + } +} diff --git a/src/main/java/com/shaya/poinila/android/utils/PonilaSnackbarManager.java b/src/main/java/com/shaya/poinila/android/utils/PonilaSnackbarManager.java new file mode 100755 index 0000000..6d9d68c --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/utils/PonilaSnackbarManager.java @@ -0,0 +1,125 @@ +package com.shaya.poinila.android.utils; + +import android.content.Context; +import android.support.design.widget.Snackbar; +import android.support.v4.app.FragmentActivity; +import android.support.v4.content.ContextCompat; +import android.util.Log; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.view.dialog.DialogLauncher; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; + +import static com.shaya.poinila.android.util.ResourceUtils.*; + +/** + * Created by iran on 7/17/2016. + */ +public class PonilaSnackbarManager { + + private static PonilaSnackbarManager instance; + + public static final int PONILA_SNACKBAR_DEFAULT = 1; + public static final int PONILA_SNACKBAR_WITH_BUTTON = 2; + + private PonilaSnackbarManager(){ + + } + + public static PonilaSnackbarManager getInstance(){ + if(instance == null) + instance = new PonilaSnackbarManager(); + + return instance; + } + + public void showVerifySnackbar(View parentView, final FragmentActivity activity){ + + Snackbar snackbar = Snackbar + .make(parentView, R.string.snackbar_verify_message, Snackbar.LENGTH_INDEFINITE) + .setActionTextColor(activity.getResources().getColor(R.color.white)) + .setAction(R.string.ok, new View.OnClickListener() { + @Override + public void onClick(View view) { + DialogLauncher.launchInputVerificationCodeDialog(activity.getSupportFragmentManager(), "", false); + } + }); + + Snackbar.SnackbarLayout rootView = (Snackbar.SnackbarLayout)snackbar.getView(); + + rootView.setGravity(Gravity.CENTER); + + Button button = (Button)rootView.findViewById(android.support.design.R.id.snackbar_action); + + button.setBackgroundResource(R.drawable.snackbar_action); + + LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, + (int)activity.getResources().getDimension(R.dimen.snackbar_action_height)); + + button.setLayoutParams(layoutParams); + button.setPadding(0, 0, 0, 0); + + snackbar.show(); + + } + + public void showChangeUserPassSnackBar(View parentView, final FragmentActivity activity){ + + Snackbar snackbar = Snackbar + .make(parentView, R.string.change_user_pass_title, Snackbar.LENGTH_INDEFINITE) + .setActionTextColor(activity.getResources().getColor(R.color.white)) + .setAction(R.string.ok, new View.OnClickListener() { + @Override + public void onClick(View view) { + DialogLauncher.launchSetUsernamePasswordDialog(activity.getSupportFragmentManager()); } + }); + + Snackbar.SnackbarLayout rootView = (Snackbar.SnackbarLayout)snackbar.getView(); + + rootView.setGravity(Gravity.CENTER); + + Button button = (Button)rootView.findViewById(android.support.design.R.id.snackbar_action); + + button.setBackgroundResource(R.drawable.snackbar_action); + + LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( + LinearLayout.LayoutParams.WRAP_CONTENT, + (int)activity.getResources().getDimension(R.dimen.snackbar_action_height)); + + button.setLayoutParams(layoutParams); + button.setPadding(0, 0, 0, 0); + + snackbar.show(); + } +// +// private View customSnackBar(Context context, int type, int message, int btnText){ +// LinearLayout snackBarView = (LinearLayout)LayoutInflater.from(context).inflate(R.layout.ponila_snackbar, null); +// Button btn = (Button)snackBarView.findViewById(R.id.ponila_snackbar_btn); +// TextView textView = (TextView)snackBarView.findViewById(R.id.ponila_snackbar_text); +// +// switch (type){ +// case PONILA_SNACKBAR_DEFAULT: +// btn.setVisibility(View.GONE); +// break; +// case PONILA_SNACKBAR_WITH_BUTTON: +// btn.setVisibility(View.VISIBLE); +// break; +// } +// +// btn.setText(btnText != ConstantsUtils.NO_RESOURCE ? getString(btnText) : ""); +// textView.setText(message != ConstantsUtils.NO_RESOURCE ? getString(message) : ""); +// +// +// return snackBarView; +// } + +} diff --git a/src/main/java/com/shaya/poinila/android/utils/PushNotificationUtils.java b/src/main/java/com/shaya/poinila/android/utils/PushNotificationUtils.java new file mode 100755 index 0000000..427be76 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/utils/PushNotificationUtils.java @@ -0,0 +1,142 @@ +package com.shaya.poinila.android.utils; + +import android.content.Intent; +import android.util.Log; + +import com.shaya.poinila.android.presentation.PageChanger; +import com.shaya.poinila.android.presentation.PoinilaApplication; +import com.shaya.poinila.android.presentation.view.activity.OthersProfileActivity; +import com.shaya.poinila.android.util.NavigationUtils; + +import org.json.JSONArray; +import org.json.JSONObject; + +import data.PoinilaNetService; +import data.model.FriendRequestAnswer; +import manager.DataRepository; + +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_MEMBER_ID; + +/** + * Created by iran on 6/12/2016. + */ +public class PushNotificationUtils { + + // Notification Type + public enum NOTIFICATION_TYPE{ + POST_SUGGESTION, FRIENDSHIP_REQUEST, FRIENDSHIP_ANSWER, LIKE, FOLLOW, COMMENT + } + + // Notification Key + public static final String NOTIF_TYPE = "notif_type"; + public static final String MEMBERS = "members"; + public static final String NUMBER = "number"; + public static final String FULL_NAME = "member_full_name"; + public static final String MEMBER = "member"; + public static final String CIRCLE_ID = "circle_id"; + public static final String MEMBER_ID = "member_id"; + public static final String MEMBER_REQUEST = "member_request"; + public static final String MEMBER_ANSWER = "member_answer"; + public static final String COLLECTIONS = "collections"; + public static final String POSTS = "posts"; + + public static NOTIFICATION_TYPE getNotificationType(JSONObject notificationData){ + String notif_type = notificationData.optString(NOTIF_TYPE); + return NOTIFICATION_TYPE.valueOf(notif_type.toUpperCase()); + } + + private static void log(String str){ + Log.i(PushNotificationUtils.class.getName(), str); + } + + + public static void fireNotificationAction(JSONObject additionalData){ + + String actionSelected = additionalData.optString("actionSelected"); + switch (actionSelected){ + case "accept": + FriendshipAccept(additionalData); +// NotificationOpenedFriendship(additionalData); + break; + case "decline": + FriendshipDecline(additionalData); +// NotificationOpenedFriendship(additionalData); + break; + default: + fireNotificationOpened(additionalData); + + } + } + + public static void fireNotificationOpened(JSONObject additionalData){ + switch (getNotificationType(additionalData)){ + case POST_SUGGESTION: + notificationOpenedSuggestion(additionalData); + break; + case FRIENDSHIP_REQUEST: + NotificationOpenedFriendship(additionalData); + break; + case FRIENDSHIP_ANSWER: + NotificationOpenedFriendship(additionalData); + break; + case LIKE: + notificationOpenedLike(additionalData); + break; + case FOLLOW: + notificationOpenedFollow(additionalData); + break; + case COMMENT: + notificationOpenedComment(additionalData); + break; + } + } + + public static void notificationOpenedFollow(JSONObject additionalData){ + JSONArray collectionListJs = NotificationQueue.getInstance().get(NOTIFICATION_TYPE.FOLLOW.toString().toLowerCase()); + PageChanger.gotToNotificationActivity(NOTIFICATION_TYPE.FOLLOW, collectionListJs.toString()); + } + + public static void notificationOpenedLike(JSONObject additionalData){ + JSONArray postListJs = NotificationQueue.getInstance().get(NOTIFICATION_TYPE.LIKE.toString().toLowerCase()); + PageChanger.gotToNotificationActivity(NOTIFICATION_TYPE.LIKE, postListJs.toString()); + } + + public static void NotificationOpenedFriendship(JSONObject additionalData){ + String memberId = String.valueOf(additionalData.optInt("object")); + DataRepository.getInstance().putTempModel(null); + NavigationUtils.goToActivity(OthersProfileActivity.class, + PoinilaApplication.getAppContext(), KEY_MEMBER_ID, memberId, Intent.FLAG_ACTIVITY_NEW_TASK); + } + + public static void notificationOpenedComment(JSONObject additionalData){ + JSONArray postListJs = NotificationQueue.getInstance().get(NOTIFICATION_TYPE.COMMENT.toString().toLowerCase()); + PageChanger.gotToNotificationActivity(NOTIFICATION_TYPE.COMMENT, postListJs.toString()); + } + + public static void notificationOpenedSuggestion(JSONObject additionalData){ + + PageChanger.gotToNotificationActivity(NOTIFICATION_TYPE.POST_SUGGESTION, additionalData.optJSONArray("object").toString()); + } + + /** + * Friendship Accept + * @param additionalData + */ + public static void FriendshipAccept(JSONObject additionalData){ + int member_id = additionalData.optInt("object"); +// int circle_id = additionalData.optInt(""); + PoinilaNetService.answerFriendRequest(member_id, FriendRequestAnswer.ACCEPT, 0); + + } + + /** + * Friendship Decline + * @param additionalData + */ + public static void FriendshipDecline(JSONObject additionalData){ + int member_id = additionalData.optInt("object"); +// int circle_id = additionalData.optInt(CIRCLE_ID); + PoinilaNetService.answerFriendRequest(member_id, FriendRequestAnswer.REJECT, 0); + } + +} diff --git a/src/main/java/com/shaya/poinila/android/utils/TypefaceUtil.java b/src/main/java/com/shaya/poinila/android/utils/TypefaceUtil.java new file mode 100755 index 0000000..bca6f27 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/utils/TypefaceUtil.java @@ -0,0 +1,30 @@ +package com.shaya.poinila.android.utils; + +import android.content.Context; +import android.graphics.Typeface; + +import com.shaya.poinila.android.presentation.PoinilaApplication; + +import java.lang.reflect.Field; + +/** + * Created by iran on 2015-06-03. + * @author Alireza Farahani + * + * Change the entire Application by editting {@link Typeface} class using + * reflection. + */ +public class TypefaceUtil { + + private static Typeface iransans; + + static { + iransans = Typeface.createFromAsset(PoinilaApplication.getAppContext().getAssets(), "fonts/iransans.ttf"); + } + + public static Typeface getIranSansFont(){ + return iransans; + } + + +} diff --git a/src/main/java/com/shaya/poinila/android/utils/Utils.java b/src/main/java/com/shaya/poinila/android/utils/Utils.java new file mode 100755 index 0000000..edd591b --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/utils/Utils.java @@ -0,0 +1,39 @@ +package com.shaya.poinila.android.utils; + +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.net.Uri; +import android.provider.Settings; + +import com.shaya.poinila.android.presentation.PoinilaApplication; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by iran on 6/19/2016. + */ +public class Utils { + + public static String getBrowserAvailablePackageName(){ + Intent activityIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com")); + PackageManager pm = PoinilaApplication.getAppContext().getPackageManager(); + List resolvedActivityList = pm.queryIntentActivities( + activityIntent, PackageManager.MATCH_ALL); + List packagesSupportingCustomTabs = new ArrayList<>(); + for (ResolveInfo info : resolvedActivityList) { + Intent serviceIntent = new Intent(); + serviceIntent.setAction("android.support.customtabs.action.CustomTabsService"); + serviceIntent.setPackage(info.activityInfo.packageName); + if (pm.resolveService(serviceIntent, 0) != null) { + packagesSupportingCustomTabs.add(info.activityInfo.packageName); + } + } + return packagesSupportingCustomTabs.size() > 0 ? packagesSupportingCustomTabs.get(0) : null; + } + + public static boolean isEnabledAutoRotate(){ + return android.provider.Settings.System.getInt(PoinilaApplication.getAppContext().getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0) == 1; + } +} diff --git a/src/main/java/com/shaya/poinila/android/utils/uisynchronize/UISynchronizeBus.java b/src/main/java/com/shaya/poinila/android/utils/uisynchronize/UISynchronizeBus.java new file mode 100755 index 0000000..831f625 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/utils/uisynchronize/UISynchronizeBus.java @@ -0,0 +1,73 @@ +package com.shaya.poinila.android.utils.uisynchronize; + +import android.content.Intent; +import android.content.IntentFilter; +import android.support.v4.content.LocalBroadcastManager; + +import com.shaya.poinila.android.presentation.PoinilaApplication; + +import java.io.Serializable; + +/** + * Created by iran on 7/3/2016. + */ +public class UISynchronizeBus { + + private static UISynchronizeBus instance; + private final String INTENT_FILTER_NAME = "com.shaya.poinila.ui.synchronize"; + private IntentFilter intentFilter; + private Intent intent; + private LocalBroadcastManager localBroadcastManager; + private UISynchronizeReceiver uiSynchronizeReceiver; + + public enum UI_SYNCHRONIZE_ACTION{ + OFF, + ALL, + UPDATE_DASHBOARD_POST + } + + + private UISynchronizeBus(){ + + uiSynchronizeReceiver = new UISynchronizeReceiver(); + + localBroadcastManager = LocalBroadcastManager.getInstance(PoinilaApplication.getAppContext()); + + intentFilter = new IntentFilter(INTENT_FILTER_NAME); + + for (UI_SYNCHRONIZE_ACTION action : UI_SYNCHRONIZE_ACTION.values()) { + intentFilter.addAction(action.toString()); + } + + intent = new Intent(INTENT_FILTER_NAME); + + + localBroadcastManager.registerReceiver( + uiSynchronizeReceiver, + intentFilter + ); + + } + + public UISynchronizeReceiver getReceiver(){ + return uiSynchronizeReceiver; + } + + public static UISynchronizeBus getInstance(){ + + if(instance == null){ + instance = new UISynchronizeBus(); + } + + return instance; + } + + public void sendData(UI_SYNCHRONIZE_ACTION action, Serializable data){ + intent.setAction(action.toString()); + intent.putExtra("data", data); + localBroadcastManager.sendBroadcast(intent); + } + + + +} diff --git a/src/main/java/com/shaya/poinila/android/utils/uisynchronize/UISynchronizeReceiver.java b/src/main/java/com/shaya/poinila/android/utils/uisynchronize/UISynchronizeReceiver.java new file mode 100755 index 0000000..0401b53 --- /dev/null +++ b/src/main/java/com/shaya/poinila/android/utils/uisynchronize/UISynchronizeReceiver.java @@ -0,0 +1,35 @@ +package com.shaya.poinila.android.utils.uisynchronize; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import java.io.Serializable; + +/** + * Created by iran on 7/3/2016. + */ +public class UISynchronizeReceiver extends BroadcastReceiver { + + private UISynchronizeBus.UI_SYNCHRONIZE_ACTION action; + private OnLoadDataSynchronizeListener onLoadDataSynchronizeListener; + + + @Override + public void onReceive(Context context, Intent intent) { + Serializable data = intent.getSerializableExtra("data"); + UISynchronizeBus.UI_SYNCHRONIZE_ACTION action = UISynchronizeBus.UI_SYNCHRONIZE_ACTION.valueOf(intent.getAction()); + if(action == onLoadDataSynchronizeListener.getSynchronizeAction() || action == UISynchronizeBus.UI_SYNCHRONIZE_ACTION.ALL) + onLoadDataSynchronizeListener.loadDataForSynchronize(data, action); + } + + public UISynchronizeReceiver setOnLoadDataSynchronizeListener(OnLoadDataSynchronizeListener onLoadDataSynchronizeListener) { + this.onLoadDataSynchronizeListener = onLoadDataSynchronizeListener; + return this; + } + + public interface OnLoadDataSynchronizeListener { + public UISynchronizeBus.UI_SYNCHRONIZE_ACTION getSynchronizeAction(); + public void loadDataForSynchronize(Serializable data, UISynchronizeBus.UI_SYNCHRONIZE_ACTION action); + } +} diff --git a/src/main/java/data/FriendRemovedEvent.java b/src/main/java/data/FriendRemovedEvent.java new file mode 100755 index 0000000..d1ae48d --- /dev/null +++ b/src/main/java/data/FriendRemovedEvent.java @@ -0,0 +1,13 @@ +package data; + + +import data.event.BaseEvent; + +/** + * Created by iran on 2015-11-14. + */ +public class FriendRemovedEvent extends BaseEvent { + public FriendRemovedEvent(int targetId) { + this.requestType = targetId; + } +} diff --git a/src/main/java/data/FriendRequestSentEvent.java b/src/main/java/data/FriendRequestSentEvent.java new file mode 100755 index 0000000..fa0c955 --- /dev/null +++ b/src/main/java/data/FriendRequestSentEvent.java @@ -0,0 +1,12 @@ +package data; + +import data.event.BaseEvent; + +/** + * Created by iran on 2015-11-14. + */ +public class FriendRequestSentEvent extends BaseEvent { + public FriendRequestSentEvent(int targetId) { + this.requestType = targetId; + } +} diff --git a/src/main/java/data/JsonRequestBodyMaker.java b/src/main/java/data/JsonRequestBodyMaker.java new file mode 100755 index 0000000..be97a0e --- /dev/null +++ b/src/main/java/data/JsonRequestBodyMaker.java @@ -0,0 +1,323 @@ +package data; + +import android.text.TextUtils; + +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.DeviceInfoUtils; + +import org.json.JSONArray; +import org.json.JSONException; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import data.model.Collection; +import data.model.FriendRequestAnswer; +import data.model.Member; +import data.model.Post; +import data.model.Tag; + +import static com.shaya.poinila.android.util.ConstantsUtils.OS_TYPE_ANDROID; +import static com.shaya.poinila.android.util.ConstantsUtils.PHONE; +import static com.shaya.poinila.android.util.ConstantsUtils.TABLET; + + +/** + * Created by iran on 2015-07-20. + */ +public class JsonRequestBodyMaker { + + public static Creator commentOnPost(String comment){ + return new Creator().put("comment", comment);//.toRequestPacketJsonObject(); + } + + public static Creator changePostColleciton(int destinationCollectionID){ + return new Creator().put("destination_collection_id", destinationCollectionID);//.toRequestPacketJsonObject(); + } + + public static Creator updateFriendCircles(List circleIDs, int friendID){ + return new Creator().put("circle_ids", circleIDs). + put("friend_member_id", friendID); + } + + public static Creator answerFriendRequest( + FriendRequestAnswer answer, int requesterID, int circleID){ + Creator creator = new Creator(). + put("requester_member_id", requesterID). + put("answer", answer.getAnswer());//.toRequestPacketJsonObject(); + if (circleID != -1) creator.put("circle_id", circleID); + return creator; + } + + /* public static HashMap uploadImage(String fileAddress){ + return new Creator().put("image", fileAddress).toRequestPacketJsonObject(); + } + + public static HashMap cropPostImage(int postID, int left, int top, int right, int down){ + return new Creator().put("post_id", postID).child(). + put("left", left).put("top", top).put("right", right).put("down", down) + .insertInParent("coordinates").toRequestPacketJsonObject(); + + }*/ + + /** + * Note that to-be-friend id will be send via url parameters + * @param circleIDs circle the user has set the friend in it. + * @return HashMap to send by post method via retrofit + */ + public static Creator friendRequest(List circleIDs){ + return new Creator().put("circle_ids", circleIDs); + } + + // TODO: you can use json ignore to send a post object instead + /** + * If any field is unchanged, send the Original one + * @param postID + * @param caption + * @param tags + * @return + */ + public static Creator repost(int postID, String caption, List tags){ + return new Creator().put("post_id", postID).put("caption", caption).put("tags", tags); + //toRequestPacketJsonObject(); + } + + public static Creator websitePost(Post post, String siteAddress, String imageAddress, String videoAddress){ + return new Creator() + .put("title", post.name) + .put("caption", post.summary) + .put("url", siteAddress) + .put("image_url", imageAddress) + .put("tags", post.tags) + .put("video_url", videoAddress) + .put("content", post.content);//.toRequestPacketJsonObject(); + } + + public static Creator createCircle(String name){ + return new Creator().put("name", name);//.toRequestPacketJsonObject(); + } + + public static Creator updateProfile(Member profile){ + /*String firstName, String lastName, String password, + String oldPassword, String email, Boolean isActive){*/ + return new Creator(). + put("full_name", profile.fullName). + put("email", profile.email). + put("description", profile.aboutMe). + put("mobile_number", profile.mobileNumber). + //put("is_active", profile.isActive). + put("url", profile.url). + put("url_name", profile.urlName) + .put("type", "people"); + //.toRequestPacketJsonObject(); + } + + public static Creator collectionID(int collectionID) { + return new Creator().put("collection_id", collectionID);//.toRequestPacketJsonObject(); + } + + public static Creator loginParams(String uniqueName, String email, String password) { + return new Creator(). + put("unique_name", uniqueName). + put("email", email). + put("password", password). + put("device_os_type", OS_TYPE_ANDROID). + put("device_type", DeviceInfoUtils.isTablet() ? TABLET : PHONE). + put("device_model", DeviceInfoUtils.MODEL). + put("device_unique_identifier", DeviceInfoUtils.ANDROID_ID). + put("device_api_version", ConstantsUtils.PONILA_API_VERSION). + put("device_os_version", DeviceInfoUtils.SDK_INT). + put("device_brand", DeviceInfoUtils.MANUFACTURER). + put("client_version", DeviceInfoUtils.CLIENT_VERSION_CODE). + put("is_browser", false); + //toRequestPacketJsonObject(); + } + + public static Creator loginByGoogleParams(String tokenId) { + return new Creator(). + put("token_id", tokenId). + put("device_os_type", OS_TYPE_ANDROID). + put("device_type", DeviceInfoUtils.isTablet() ? TABLET : PHONE). + put("device_model", DeviceInfoUtils.MODEL). + put("device_unique_identifier", DeviceInfoUtils.ANDROID_ID). + put("device_api_version", ConstantsUtils.PONILA_API_VERSION). + put("device_os_version", DeviceInfoUtils.SDK_INT). + put("device_brand", DeviceInfoUtils.MANUFACTURER). + put("client_version", DeviceInfoUtils.CLIENT_VERSION_CODE). + put("is_browser", false); + //toRequestPacketJsonObject(); + } + + public static Creator setUsernamePassword(String uniqueName, String password, String gToken){ + return new Creator() + .put("unique_name", uniqueName) + .put("password", password) + .put("google_token", gToken); // same auth token + } + + public static Creator OnOffSetting(int typeID, int value) { + return new Creator().put("type_id", typeID).put("value", value); + } + + public static Creator emptyPacket() { + return new Creator(); + } + + public static Creator userInterests(List selectedInterests) { + return new Creator().putArrayAsData(selectedInterests); + } + + public static Creator createTextPost(Post post) { + return new Creator().putObjectAsData(post); + } + + public static Creator createCollection(Collection collection) { + return new Creator().putObjectAsData(collection); + } + + public static Creator inviteToPoinila(String email, String message) { + return new Creator().put("email", email).put("message", message).put("suppress_warning", true); + } + + public static Creator contactUs(String type, String title, String content) { + return new Creator().put("type", type).put("title", title).put("content", content); + } + + public static Creator email(String email) { + return new Creator().put("email", email); + } + + public static Creator requestVerify(boolean byEmail, String phoneOrMobile, int memberId) { + return new Creator() + .put(byEmail ? "email" : "mobile_number", phoneOrMobile) + .put("member_id", memberId == 0 ? null : memberId); + } + + public static Creator phoneNumber(String phone) { + return new Creator().put("mobile_number", phone); + } + + public static Creator uniqueName(String phone) { + return new Creator().put("unique_name", phone); + } + + public static Creator changePassword(String password, String oldPassword){ + return new Creator(). + put("is_browser", false). + put("device_unique_identifier", DeviceInfoUtils.ANDROID_ID). + put("client_version", DeviceInfoUtils.CLIENT_VERSION_CODE). + put("password", password). + put("old_password", oldPassword); + } + + public static Creator resetPassword(String newPassword, String code) { + return new Creator(). + put("password", newPassword). + put("reset_password_hash", code). + put("is_browser", false). + put("device_unique_identifier", DeviceInfoUtils.ANDROID_ID). + put("client_version", DeviceInfoUtils.CLIENT_VERSION_CODE); + } + + public static Creator reportMemberOrPost(int memberIdOrPostId) { + return new Creator(). + put("memberIdOrPostId", memberIdOrPostId); + } + + public static Creator postIdList(JSONArray ids) { + + List list = new ArrayList<>(); + + int length = ids.length(); + for(int i=0 ; i < length ; i ++){ + try { + list.add(ids.getInt(i)); + } catch (JSONException e) { + e.printStackTrace(); + } + } + + return new Creator(). + put("post_id_list", list); + } + + public static Creator register(String verificationCode, String fullName, String userName, String gender, String password, String email, String phone) { +// return loginParams(userName, email, password).put("verification_code", verificationCode).put("full_name", fullName) +// .put("phone", phone) +// .put("gender", gender); + + return loginParams(userName, email, password).put("full_name", fullName) + .put("mobile_number", phone) + .put("gender", gender); + } + + public static Creator verifyPhoneOrMobile(String verificationCode, int memberId, String mobileOrPhone, boolean byEmail){ + + if(TextUtils.isEmpty(mobileOrPhone)){ + return new Creator() + .put("verification_code", verificationCode) + .put("member_id", memberId); + }else { + return new Creator() + .put(byEmail ? "email" : "mobile_number" , mobileOrPhone) + .put("verification_code", verificationCode) + .put("member_id", memberId); + } + } + + public static class Creator{ + private static final String METHOD = "action"; + private static final String BODY = "data"; + /*JSONObject jsonHashMap; + JSONArray jsonArray;*/ + HashMap jsonHashMap; + List jsonArray; + Creator parent; + private Object jsonObject; + + public Creator(){ + jsonHashMap = new HashMap<>(); + } + + public Creator put(String key, Object value){ + if (value != null) + jsonHashMap.put(key, value); + return this; + } + + public Creator putArrayAsData(List list){ + if (list != null) { + jsonArray = list; + } + return this; + } + + public Creator putObjectAsData(Object object){ + if (object != null){ + jsonObject = object; + } + return this; + } + + public HashMap toRequestPacketJsonObject(String method){ + HashMap packet = new HashMap<>(); + packet.put(METHOD, method); + if (jsonObject != null) packet.put(BODY, jsonObject); + else if (jsonArray != null) packet.put(BODY, jsonArray); + else packet.put(BODY, jsonHashMap); + return packet; + } + +/* public Creator child() { + Creator c = new Creator(); + c.parent = this; + return c; + } + + public Creator insertInParent(String key){ + this.parent.put(key, toRequestPacketJsonObject()); + return this.parent; + }*/ + } +} diff --git a/src/main/java/data/PoinilaCallback.java b/src/main/java/data/PoinilaCallback.java new file mode 100755 index 0000000..7d36397 --- /dev/null +++ b/src/main/java/data/PoinilaCallback.java @@ -0,0 +1,127 @@ +package data; + +import android.content.Intent; +import android.support.v4.content.LocalBroadcastManager; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.ConnectionUitls; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.ContextHolder; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.utils.PonilaJsonParser; + +import java.io.StringReader; +import java.lang.reflect.Type; + +import data.model.PoinilaResponse; +import retrofit.Callback; +import retrofit.RetrofitError; +import retrofit.client.Response; +import retrofit.mime.TypedByteArray; + +/** + * Created by iran on 2015-09-01. + */ +public abstract class PoinilaCallback implements Callback { + + public static String getStringFromResponse(Response response){ + return new String(((TypedByteArray) response.getBody()).getBytes()); + } + + public boolean handleError(){ + return false; + } + /* public boolean validate(T poinilaResponse, Response response){ + + }*/ + + @Override + public final void success(Response response, Response response2){ +// JsonElement jsonElement = new JsonParser().parse(getStringFromResponse(response)); + // PonilaJsonParser set Lenient to True for malformed json + JsonElement jsonElement = new PonilaJsonParser().parse(getStringFromResponse(response)); + int code = jsonElement.getAsJsonObject().get("code").getAsInt(); + //if (validate(poinilaResponse, response)) + switch (code){ + case 401: + + LocalBroadcastManager.getInstance(ContextHolder.getContext()).sendBroadcast(new Intent(ConstantsUtils.INTENT_FILTER_JWT)); + break; + + case 200: + + JsonElement dataElement = jsonElement.getAsJsonObject().get("data"); + if (dataElement.isJsonArray()) + dataList = dataElement.getAsJsonArray(); + else { + dataList = new JsonArray(); + dataList.add(dataElement); + } + JsonReader reader = new JsonReader(new StringReader(jsonElement.toString())); + reader.setLenient(true); + T t = PoinilaNetService.getGson().fromJson(reader, getType()); +// T t = PoinilaNetService.getGson().fromJson(jsonElement, getType()); + poinilaSuccess(t, response); + + break; + + default: + PoinilaResponse poinilaResponse = PoinilaNetService.getGson().fromJson(jsonElement, getPoinilaResponseType()); + if (!poinilaError(poinilaResponse)){ + Logger.toast(R.string.error_sth_bad_happened); + } + } + + } + + //public abstract Type getType(); + + public Type getType(){ + return getPoinilaResponseType(); + } + + private Type getPoinilaResponseType() { + return new TypeToken(){}.getType(); + } + + + public JsonArray getDataList() { + return dataList; + } + + JsonArray dataList; + + + @Override + public final void failure(RetrofitError error) { + switch (error.getKind()){ + case NETWORK: + if (ConnectionUitls.isNetworkOnline()) { + Logger.toast(R.string.error_unable_to_connect); + } + break; + case CONVERSION: // error on converting response + case UNEXPECTED: + throw error; + case HTTP: // 503, 502, etc + // do nothing for now + } + } + + public abstract void poinilaSuccess(T ponilaResponse, Response response); + + /** + * hook method for handling poinila responses. (Http status is 200) + *
Can consume the call so default error handling doesn't occur. + * @param poinilaResponse standard Poinila response packet. {@link PoinilaResponse#data} type is not known. + * @return true if you want to disable parent default handling, false otherwise. + */ + public boolean poinilaError(PoinilaResponse poinilaResponse){ + return false; + } +} diff --git a/src/main/java/data/PoinilaNetService.java b/src/main/java/data/PoinilaNetService.java new file mode 100755 index 0000000..f6b396f --- /dev/null +++ b/src/main/java/data/PoinilaNetService.java @@ -0,0 +1,1985 @@ +package data; + +import android.content.Intent; +import android.graphics.Bitmap; +import android.support.annotation.Nullable; +import android.support.v4.content.LocalBroadcastManager; + +import com.google.gson.ExclusionStrategy; +import com.google.gson.FieldAttributes; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.reflect.TypeToken; +import com.raizlabs.android.dbflow.annotation.NotNull; +import com.raizlabs.android.dbflow.structure.ModelAdapter; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.presentation.uievent.GoogleLoginSucceedEvent; +import com.shaya.poinila.android.presentation.uievent.SuggestionPosts; +import com.shaya.poinila.android.presentation.uievent.UpdateNewPostDialogEvent; +import com.shaya.poinila.android.presentation.uievent.UpdateUiRepostEvent; +import com.shaya.poinila.android.presentation.view.activity.SettingActivity; +import com.shaya.poinila.android.presentation.view.dialog.ForgotPasswordFragment; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConnectionUitls; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.ContextHolder; +import com.shaya.poinila.android.util.DeviceInfoUtils; +import com.shaya.poinila.android.util.ImageUtils; +import com.shaya.poinila.android.util.Logger; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.util.StringUtils; +import com.shaya.poinila.android.utils.PonilaAccountManager; +import com.squareup.okhttp.Interceptor; +import com.squareup.okhttp.OkHttpClient; +import com.squareup.okhttp.Request; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import data.event.AbstractNotificationsReceivedEvent; +import data.event.AnswerFriendRequestResponse; +import data.event.BaseEvent; +import data.event.CircleReceivedEvent; +import data.event.CollectionReceivedEvent; +import data.event.CollectionUpdatedEvent; +import data.event.CollectionsReceivedEvent; +import data.event.CommentReceivedEvent; +import data.event.CommentsReceivedEvent; +import data.event.ContentReceivedEvent; +import data.event.DashboardEvent; +import data.event.FailEvent; +import data.event.FrameReceivedEvent; +import data.event.InterestsReceivedEvent; +import data.event.InviteUsedEvent; +import data.event.LoadingImagedFailedEvent; +import data.event.LoginFailedEvent; +import data.event.LoginSucceedEvent; +import data.event.MemberReceivedEvent; +import data.event.MembersReceivedEvent; +import data.event.ModelCreatedEvent; +import data.event.ModelDeletedEvent; +import data.event.ModelUpdatedEvent; +import data.event.MyFriendshipRequestsEvent; +import data.event.MyInfoReceivedEvent; +import data.event.NotificationSettingsReceivedEvent; +import data.event.PostReceivedEvent; +import data.event.PostsReceivedEvent; +import data.event.ProfileDirtyEvent; +import data.event.ProfileSettingReceivedEvent; +import data.event.RegisterResponseEvent; +import data.event.RemainedInvitesEvent; +import data.event.ServerResponseEvent; +import data.event.SuggestedWebpagePostReceived; +import data.event.SystemPreferencesReceivedEvent; +import data.event.TopicsReceivedEvent; +import data.event.UndoFavePostEvent; +import data.event.UndoUnfavePostEvent; +import data.event.UpdateProfileSettingResponse; +import data.event.UserInterestsReceivedEvent; +import data.event.UserNameValidityEvent; +import data.event.VerificationRequestResponse; +import data.model.Circle; +import data.model.Collection; +import data.model.Comment; +import data.model.Content; +import data.model.DefaultType; +import data.model.Frame; +import data.model.FriendRequestAnswer; +import data.model.Gender; +import data.model.ImageTag; +import data.model.InvitationNotif; +import data.model.Member; +import data.model.Notification; +import data.model.OnOffSetting; +import data.model.PoinilaInvite; +import data.model.PoinilaResponse; +import data.model.Post; +import data.model.PostType; +import data.model.SuggestedWebPagePost; +import data.model.SystemPreferences; +import data.model.Tag; +import data.model.Topic; +import manager.DBFacade; +import retrofit.Callback; +import retrofit.RequestInterceptor; +import retrofit.RestAdapter; +import retrofit.RetrofitError; +import retrofit.client.Header; +import retrofit.client.OkClient; +import retrofit.client.Response; +import retrofit.converter.GsonConverter; +import retrofit.mime.TypedByteArray; +import retrofit.mime.TypedOutput; +import static com.shaya.poinila.android.util.ConstantsUtils.CONNECT_TIME_OUT_MILLISECONDS; +import static com.shaya.poinila.android.util.ConstantsUtils.HEADER_AUTH; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_JSON_DATA_ROOT; +import static com.shaya.poinila.android.util.ConstantsUtils.KEY_JSON_OWNED_COLLECTIONS; +import static com.shaya.poinila.android.util.ConstantsUtils.POINILA_DATE_FORMAT; +import static com.shaya.poinila.android.util.ConstantsUtils.READ_TIME_OUT_MILLISECONDS; +import static com.shaya.poinila.android.util.ConstantsUtils.WRITE_TIME_OUT_MILLISECONDS; +import static com.shaya.poinila.android.util.ConstantsUtils.SHOULD_SET_INTEREST; +import static com.shaya.poinila.android.util.ImageUtils.convertBitmapToByteArray; +import static com.shaya.poinila.android.util.ResourceUtils.getString; + +/** + * Created by iran on 2015-06-30. + */ +public class PoinilaNetService { + private static final String MULTIPART_FORMDATA = "multipart/form-data"; + private static final String MYME_TYPE_IMAGE = "image/*"; + public static final String POST = "post"; + public static final String PUT = "put"; + public static final String DELETE = "delete"; + private static RestServices restServices; + + public static Gson gson; + private static HashSet cookies = new HashSet<>(); + + public static Gson getGson() { + return gson; + } + + private static final RestAdapter restAdapter; + + private static final GsonConverter gsonConverter; + + private static final OkHttpClient okClient; + + static { + okClient = new OkHttpClient(); + okClient.networkInterceptors().add(new AddCookiesInterceptor()); + okClient.networkInterceptors().add(new ReceivedCookiesInterceptor()); + okClient.networkInterceptors().add(new AgentAndVersionInterceptor()); + okClient.setConnectTimeout(CONNECT_TIME_OUT_MILLISECONDS, TimeUnit.MILLISECONDS); + okClient.setReadTimeout(READ_TIME_OUT_MILLISECONDS, TimeUnit.MILLISECONDS); + okClient.setWriteTimeout(WRITE_TIME_OUT_MILLISECONDS, TimeUnit.MILLISECONDS); + + gson = new GsonBuilder(). + setDateFormat(POINILA_DATE_FORMAT). + setExclusionStrategies(new ExclusionStrategy() { + @Override + public boolean shouldSkipField(FieldAttributes f) { + // because our models inherite from DBFlow Model class which have a protected + // field of ModelAdapter class. we skip it for the sake of object marshalling. + return f.getDeclaredClass().equals(ModelAdapter.class); + } + + @Override + public boolean shouldSkipClass(Class clazz) { + return false; + } + }).create(); + + gsonConverter = new GsonConverter(gson); + + // with removing requestInterceptor in retrofit 2.x this must be done using okhttp interceptor. + // like adding and updating cookie we do already + RequestInterceptor requestInterceptor = new RequestInterceptor() { + @Override + public void intercept(RequestFacade request) { + request.addHeader("Authorization", PoinilaPreferences.getAuthToken()); + //request.addHeader(""); + } + }; + + //String[] ipPort = StorageUtils.readIpPortFromFile(); + restAdapter = new RestAdapter.Builder(). + //setEndpoint(ConstantsUtils.POINILA_BASE_URL). + setEndpoint(ConstantsUtils.POINILA_SERVER_ADDRESS). + setLogLevel(RestAdapter.LogLevel.NONE). // HEADERS_AND_ARGS). + setRequestInterceptor(requestInterceptor). + setClient(new OkClient(okClient)). + setConverter(gsonConverter). + //setErrorHandler(new RetrofitErrorHandler()). + build(); + restServices = restAdapter.create(RestServices.class); + + + } + + public static void setEmailNotificationSetting(OnOffSetting setting) { + restServices.setEmailNotificationSetting( + JsonRequestBodyMaker.OnOffSetting(setting.typeID, setting.value).toRequestPacketJsonObject(PUT), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + + } + }); + } + + public static void setApplicationNotificationSetting(OnOffSetting setting) { + restServices.setApplicationNotification( + JsonRequestBodyMaker.OnOffSetting(setting.typeID, setting.value).toRequestPacketJsonObject(PUT), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + + } + + }); + } + + public static void getMemberInterests(String memberID) { + restServices.getMemberInterests(memberID, new PoinilaCallback>>() { + + @Override + public void poinilaSuccess(PoinilaResponse> poinilaResponse, Response response) { + postEvent(new UserInterestsReceivedEvent(poinilaResponse.data)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + + } + + public static void removeInterest(Tag tag) { + restServices.removeInterest(PoinilaPreferences.getMyId(), tag.getId(), + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(DELETE), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + } + + }); + } + + public static void getInterests() { + restServices.getInterests(new PoinilaCallback>>() { + + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new InterestsReceivedEvent(listPoinilaResponse.data)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void getSubInterests(final String superInterestID) { + restServices.getSubInterest(superInterestID, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> poinilaResponse, Response response) { + postEvent(new InterestsReceivedEvent(poinilaResponse.data, superInterestID)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + + } + + public static void updateUserInterests(List selectedInterests) { + restServices.updateUserInterests(PoinilaPreferences.getMyId(), + JsonRequestBodyMaker.userInterests(selectedInterests).toRequestPacketJsonObject(PUT), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + postEvent(new ServerResponseEvent(true, BaseEvent.ReceiverName.SelectInterest)); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + postEvent(new ServerResponseEvent(false, BaseEvent.ReceiverName.SelectInterest)); + return super.poinilaError(poinilaResponse); + } + }); + } + + public static void uploadProfilePicture(Bitmap croppedImage) { + + restServices.uploadProfilePic(PoinilaPreferences.getMyId(), POST, + new PoinilaTypedByteArray(MYME_TYPE_IMAGE, + convertBitmapToByteArray( + ImageUtils.resizeBitmapForProfilePic(croppedImage))), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + postEvent(new ProfileDirtyEvent()); + } + + }); + } + + public static void getRemainedInvites() { + restServices.getRemainedInvites(new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + int remained = poinilaResponse.data.limit - poinilaResponse.data.usedInvites; + postEvent(new RemainedInvitesEvent(remained)); + } + + @Override + public boolean poinilaError(PoinilaResponse error) { + postEvent(new RemainedInvitesEvent(0)); + return true; + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }); + } + + public static void inviteToPoinila(String email, String message) { + restServices.inviteToPoinila( + JsonRequestBodyMaker.inviteToPoinila(email, message).toRequestPacketJsonObject(POST), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + // Order of events are important! first one updates the data layer witch + // view invoked by second one uses that. (Otto dispatches the events synchronously. + postEvent(new RemainedInvitesEvent(-1)); // -1 for decrementing + postEvent(new InviteUsedEvent()); + } + }); + } + + public static void getWebsiteInfo(String address, PostType type) { + String typeString = ""; + switch (type){ + case TEXT: + typeString = "txt"; + break; + case IMAGE: + typeString = "img"; + break; + case VIDEO: + typeString = "video"; + break; + } + restServices.getWebsiteInfo(typeString, address, + new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + postEvent(new SuggestedWebpagePostReceived(poinilaResponse.data)); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + postEvent(new LoadingImagedFailedEvent()); + return true; + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + + }); + } + + public static void createReferencedPost(String collectionID, Post newPost, String siteAddress, String imageAddress, String videoAddress) { + restServices.createWebsitePost(collectionID, + JsonRequestBodyMaker.websitePost(newPost, siteAddress, imageAddress, videoAddress).toRequestPacketJsonObject(POST), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + Logger.toast(R.string.successfully_created); + } + }); + } + + public static void recoverPassword(ForgotPasswordFragment.RECOVERY_PASS_TYPE recoveryPassType, String emailOrPhone) { + HashMap data = null; + switch (recoveryPassType){ + case EMAIL: + data = JsonRequestBodyMaker.email(emailOrPhone).toRequestPacketJsonObject(POST); + break; + case MOBILE_NUMBER: + data = JsonRequestBodyMaker.phoneNumber(emailOrPhone).toRequestPacketJsonObject(POST); + break; + case UNIQUE_NAME: + data = JsonRequestBodyMaker.uniqueName(emailOrPhone).toRequestPacketJsonObject(POST); + break; + + } + + + restServices.recoverPassword(data, + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + Logger.toast(R.string.successful_recovery); + postEvent(new VerificationRequestResponse(true)); // avoiding duplicate events + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + if (poinilaResponse.code == 446) { + postEvent(new VerificationRequestResponse(false, poinilaResponse.code)); + return true; + } + return super.poinilaError(poinilaResponse); + } + }); + } + + public static void resetPassword(final String newPassword, String code) { + restServices.resetPassword(JsonRequestBodyMaker.resetPassword(newPassword, code).toRequestPacketJsonObject(POST), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + // TODO: go To login page + String authToken = getJWTTokenFromHeaders(response); + if (authToken != null) { + PoinilaPreferences.putAuthToken(authToken); + + String userName = ((ArrayList)ponilaResponse.data).get(1); + PonilaAccountManager.getInstance().addPonilaAccount( + userName, newPassword, authToken + ); + +// PonilaAccountManager.getInstance().updatePonilaAccount(newPassword, authToken); + + postEvent(new LoginSucceedEvent()); + }/*else{ + postEvent(new LoginFailedEvent()); + }*/ + //Logger.debugToast("password reset successfully but auth token was not set"); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + postEvent(new LoginFailedEvent(poinilaResponse.code, null)); + + return true; + } + }); + } + + public static void requestVerificationCode(final boolean byEmail, final String emailOrPhone) { + restServices.requestVerificationCode(byEmail ? + JsonRequestBodyMaker.email(emailOrPhone).toRequestPacketJsonObject(POST) : + JsonRequestBodyMaker.phoneNumber(emailOrPhone).toRequestPacketJsonObject(POST), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + postEvent(new VerificationRequestResponse(true, byEmail, emailOrPhone)); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + switch (poinilaResponse.code) { + case 425: + postEvent(new VerificationRequestResponse(false, + getString(byEmail ? + R.string.error_already_registered_email : + R.string.error_already_registered_phone))); + break; + case 423: + postEvent(new VerificationRequestResponse(false, getString(R.string.error_invalid_phone_no))); + break; + } + return true; + } + }); + } + + public static void requestVerificationCode(final boolean byEmail, final String emailOrPhone, int memberId) { + restServices.requestVerificationCode( + JsonRequestBodyMaker.requestVerify(byEmail, emailOrPhone, memberId).toRequestPacketJsonObject(POST), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + postEvent(new VerificationRequestResponse(true, byEmail, emailOrPhone)); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + switch (poinilaResponse.code) { + case 425: + postEvent(new VerificationRequestResponse(false, + getString(byEmail ? + R.string.error_already_registered_email : + R.string.error_already_registered_phone))); + break; + case 423: + postEvent(new VerificationRequestResponse(false, getString(R.string.error_invalid_phone_no))); + break; + } + return true; + } + }); + } + + public static void register(String verificationCode, String fullName, final String userName, Gender gender, final String password, boolean byEmail, String emailOrPhone) { + restServices.register(JsonRequestBodyMaker.register( + verificationCode, fullName, userName, gender.name().toLowerCase(), password, byEmail ? emailOrPhone : "", !byEmail ? emailOrPhone : ""). + toRequestPacketJsonObject(POST), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + /*postEvent(new RegisterResponseEvent(true));*/ + String authToken = getJWTTokenFromHeaders(response); + PoinilaPreferences.putAuthToken(authToken); + PonilaAccountManager.getInstance().addPonilaAccount( + userName, password, authToken + ); +// PonilaAccountManager.getInstance(). + postEvent(new RegisterResponseEvent(true)); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + if (poinilaResponse.code == ConstantsUtils.CODE_NO_OCCURRENCE) + postEvent(new RegisterResponseEvent(false, RegisterResponseEvent.USED_VERIFICATION_CODE)); + return true; + } + }); + } + + public static void checkUserNameValidity(final String tempUserName) { + restServices.checkUserNameValidity(tempUserName, new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + //postEvent(new UserNameValidityEvent(true)); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + int error = 0; + switch (poinilaResponse.code) { + case ConstantsUtils.ERROR_DUPLICATE: + error = UserNameValidityEvent.DUPLICATE; + break; + case ConstantsUtils.ERROR_BAD_KEYWORD: + error = UserNameValidityEvent.RESERVED; + break; + case ConstantsUtils.ERROR_RULE_EXCEPTION: + error = (tempUserName.length() < 6 || tempUserName.length() > 32) ? UserNameValidityEvent.LENGTH : UserNameValidityEvent.RULE; + break; + } + postEvent(new UserNameValidityEvent(false, error)); + return true; + } + }); + } + + public static void login(final String uniqueName, final String email, final String password) { + restServices.login(JsonRequestBodyMaker.loginParams(uniqueName, email, password).toRequestPacketJsonObject(POST), + new Callback() { + @Override + public void success(Response response, Response response2) { + PoinilaResponse poinilaResponse = gson.fromJson(getStringFromResponse(response), PoinilaResponse.class); + if (poinilaResponse.code == 200) { + String authToken = getJWTTokenFromHeaders(response); + PoinilaPreferences.putAuthToken(authToken); + PonilaAccountManager.getInstance().addPonilaAccount( + uniqueName != null ? uniqueName : email, password, authToken + ); + postEvent(new LoginSucceedEvent()); + //} else if (poinilaResponse.code == 401) { + } else if (poinilaResponse.code == 401) { + JsonObject responseJson = new JsonParser().parse(getStringFromResponse(response)).getAsJsonObject(); + JsonObject dataJson = responseJson.get(KEY_JSON_DATA_ROOT).getAsJsonObject(); + /*if (params.has("parameter")){ + params.get("parameter"); + }*/ + postEvent(new LoginFailedEvent(poinilaResponse.code, dataJson)); + } else { + failure(null); + } + } + + @Override + public void failure(RetrofitError error) { + postEvent(new LoginFailedEvent(0, null)); + Logger.toast(R.string.error_sth_bad_happened); + } + }); + } + + public static void loginByGoogle(String tokenId){ + restServices.loginByGoogle(JsonRequestBodyMaker.loginByGoogleParams(tokenId).toRequestPacketJsonObject(POST), + new Callback() { + + @Override + public void success(Response response, Response response2) { + PoinilaResponse poinilaResponse = gson.fromJson(getStringFromResponse(response), PoinilaResponse.class); + if (poinilaResponse.code == 200) { + String authToken = getJWTTokenFromHeaders(response); + +// Log.i(getClass().getName(), "poinilaResponse = " + poinilaResponse.data); + + GoogleLoginSucceedEvent loginEvent = new GoogleLoginSucceedEvent(); + try { + loginEvent.firstLoginDoneByGoogle = new JSONObject( + poinilaResponse.data.toString()).optBoolean(SHOULD_SET_INTEREST); + } catch (JSONException e) { + e.printStackTrace(); + } + + if(PonilaAccountManager.getInstance().getGoogleAccount() != null){ + PonilaAccountManager.getInstance().addPonilaAccountFromGoogle(authToken); + postEvent(loginEvent); + }else + Logger.toast(R.string.error_google_account_not_found); + + }else if (poinilaResponse.code == 401) { + JsonObject responseJson = new JsonParser().parse(getStringFromResponse(response)).getAsJsonObject(); + JsonObject dataJson = responseJson.get(KEY_JSON_DATA_ROOT).getAsJsonObject(); + /*if (params.has("parameter")){ + params.get("parameter"); + }*/ + postEvent(new LoginFailedEvent(poinilaResponse.code, dataJson)); + }else { + failure(null); + } + + } + + @Override + public void failure(RetrofitError error) { + Logger.toast(R.string.error_sth_bad_happened); + } + }); + } + + private static String getJWTTokenFromHeaders(Response response) { + for (Header header : response.getHeaders()) { + if (header.getName().equals(HEADER_AUTH)) + return header.getValue(); + } + return null; + } + + public static void logout() { + if (ConnectionUitls.isNetworkOnline()) { // hameye requesta bayad to "ye noghte" az hamchin logici obur konan + restServices.logout(new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + } + }); + } + } + + /** + * @param bookmark passing null value ignores the query parameter + */ + public static void getSuggestions(final String bookmark) { + restServices.getSuggestions(bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> poinilaResponse, Response response) { + for (int i = 0; i < poinilaResponse.data.size(); i++) { + Post post = poinilaResponse.data.get(i); + post.jsonContent = getDataList().get(i).toString(); + } + postEvent(new DashboardEvent(poinilaResponse.data, false, poinilaResponse.bookmark)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + + public static void getFollowedCollections(String memberId, String frameID, String bookmark, + final BaseEvent.ReceiverName receiverTag) { + restServices.getMemberFollowingCollections(memberId, bookmark, frameID, + new PoinilaCallback>>() { + + @Override + public void poinilaSuccess(PoinilaResponse> collections, Response response) { + postEvent(new CollectionsReceivedEvent(collections.data, + collections.bookmark, receiverTag)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void searchPostWithQuery(List query, String bookmark) { + restServices.getPostsWithQuery(query, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new PostsReceivedEvent(listPoinilaResponse.data, + listPoinilaResponse.bookmark, BaseEvent.ReceiverName.SearchFragment)); + } + + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void searchCollectionsWithQuery(List query, String bookmark) { + restServices.getCollectionsWithQuery(query, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new CollectionsReceivedEvent(listPoinilaResponse.data, + listPoinilaResponse.bookmark, BaseEvent.ReceiverName.SearchFragment)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void searchMembersWithQuery(List query, String bookmark) { + restServices.getMembersWithQuery(query, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new MembersReceivedEvent(listPoinilaResponse.data, + listPoinilaResponse.bookmark)); + //, ReceiverName.SearchFragment)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void getMemberProfile(String profileID) { + PoinilaCallback> cb = new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse memberPoinilaResponse, Response response) { + postEvent(new MemberReceivedEvent(memberPoinilaResponse.data)); + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }; + if (StringUtils.isInteger(profileID)) + restServices.getProfileById(profileID, cb); + else + restServices.getProfileByUserName(profileID, cb); + } + + public static void favePost(final String postID) { + restServices.favePost(postID, + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(POST), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + if (poinilaResponse.code != ConstantsUtils.CODE_SUCCESS) + postEvent(new UndoFavePostEvent()); + } + + @Override + public boolean poinilaError(PoinilaResponse error) { + postEvent(new UndoFavePostEvent()); + return true; + } + }); + } + + public static void unfavePost(final String postID) { + restServices.unfavePost(postID, + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(DELETE), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + if (poinilaResponse.code != ConstantsUtils.CODE_SUCCESS) + postEvent(new UndoUnfavePostEvent()); + } + + @Override + public boolean poinilaError(PoinilaResponse error) { + postEvent(new UndoUnfavePostEvent()); + return true; + } + }); + } + + public static void getPostContent(final String contentUrl, final int postID) { + Request request = new Request.Builder().url(contentUrl) + .addHeader("Origin", ConstantsUtils.POINILA_ORIGIN_ADDRESS) + .build(); + okClient.newCall(request).enqueue(new com.squareup.okhttp.Callback() { + @Override + public void onFailure(Request request, IOException e) { + } + + @Override + public void onResponse(final com.squareup.okhttp.Response response) throws IOException { + String content = response.body().string(); + postEvent(new ContentReceivedEvent(content, postID)); + postEvent(new ModelCreatedEvent(new Content(contentUrl, content))); + } + }); + } + + public static void getMemberFriends(String memberID, String bookmark) { + restServices.getMemberFriends(memberID, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new MembersReceivedEvent(listPoinilaResponse.data, + listPoinilaResponse.bookmark)); + //, ReceiverName.MemberListFragment)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void getRelatedPosts(String postID, String bookmark, final int requestId) { + restServices.getRelatedPosts(postID, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new PostsReceivedEvent( + listPoinilaResponse.data, listPoinilaResponse.bookmark, + BaseEvent.ReceiverName.PostRelatedPosts, requestId + )); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void getPostComments(String postID, String bookmark) { + restServices.getPostComments(postID, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new CommentsReceivedEvent(listPoinilaResponse.data, listPoinilaResponse.bookmark)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void getRepostCollections(String postID, String bookmark) { + restServices.getRepostCollections(postID, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new CollectionsReceivedEvent(listPoinilaResponse.data, + listPoinilaResponse.bookmark, BaseEvent.ReceiverName.CollectionListFragment)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void getPostLikers(String postID, String bookmark) { + restServices.getPostLikers(postID, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new MembersReceivedEvent(listPoinilaResponse.data, + listPoinilaResponse.bookmark)); + //, ReceiverName.MemberListFragment)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void getFavedPostByMember(String memberID, String bookmark) { + restServices.getMemberLikedPosts(memberID, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new PostsReceivedEvent(listPoinilaResponse.data, + listPoinilaResponse.bookmark, BaseEvent.ReceiverName.PostListFragment)); + } + + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void deleteComment(String commentID) { + restServices.deleteComment(commentID, + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(DELETE), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + if (poinilaResponse.code != ConstantsUtils.CODE_SUCCESS) { + //TODO + } + } + }); + } + + /** + * {@code repostCaption} is the post {@code summary} + * + * @param collectionID + * @param postID + * @param repostCaption + * @param tags + */ + public static void repost(String collectionID, final int postID, String repostCaption, List tags) { + restServices.repost(collectionID, + JsonRequestBodyMaker.repost(postID, repostCaption, tags).toRequestPacketJsonObject(POST) + , new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + Logger.toast(R.string.successfully_created); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + + + Logger.toast(R.string.error_repost); + + BusProvider.getSyncUIBus().post(new UpdateUiRepostEvent(postID, false)); + + return super.poinilaError(poinilaResponse); + } + }); + } + + public static void commentOnPost(final String postID, String comment) { + restServices.commentOnPost(postID, JsonRequestBodyMaker.commentOnPost(comment).toRequestPacketJsonObject(POST) + , new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse commentPoinilaResponse, Response response) { + postEvent(new CommentReceivedEvent(commentPoinilaResponse.data, postID)); + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }); + } + + public static void getMemberPosts(String memberID, String bookmark) { + + restServices.getMemberPosts(memberID, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new PostsReceivedEvent(listPoinilaResponse.data, + listPoinilaResponse.bookmark, BaseEvent.ReceiverName.PostListFragment)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + + }); + + } + + public static void getMemberFollowers(String memberID, String bookmark) { + restServices.getMemberFollowers(memberID, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new MembersReceivedEvent(listPoinilaResponse.data, + listPoinilaResponse.bookmark)); + //, ReceiverName.MemberListFragment)); + } + + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + + public static void getMemberCollections(String memberID, String bookmark) { + restServices.getMemberCollections(memberID, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new CollectionsReceivedEvent(listPoinilaResponse.data, + listPoinilaResponse.bookmark, BaseEvent.ReceiverName.CollectionListFragment)); + } + + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + + /*public static void updateProfile(String memberId, String firstName, String lastName, + String email, String password, String oldPassword, boolean isActive) { + restServices.updateProfile(memberId, + JsonRequestBodyMaker.updateProfile(firstName, lastName, password, oldPassword, email, isActive),*/ + + public static void answerFriendRequest(int memberID, final FriendRequestAnswer answer, int circleID) { + restServices.answerFriendRequest(PoinilaPreferences.getMyId(), + JsonRequestBodyMaker.answerFriendRequest(answer, memberID, circleID).toRequestPacketJsonObject(PUT), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + postEvent(new AnswerFriendRequestResponse(true, answer)); + } + + /* @Override + public void poinilaError(PoinilaResponse error) { + //postEvent(new AnswerFriendRequestResponse()); + }*/ + }); + } + + public static void changeFriendCircle(final List circleIDs, final int friendId) { + restServices.updateFriendCircles(PoinilaPreferences.getMyId(), + JsonRequestBodyMaker.updateFriendCircles(circleIDs, friendId).toRequestPacketJsonObject(PUT), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + if (poinilaResponse.code != ConstantsUtils.CODE_SUCCESS) { + //postEvent(new FriendCircleNotChangedEvent(circleIDs, friendId)); + } + } + }); + } + + public static void friendRequest(String memberID, int publicCircleID) { + restServices.friendRequest(memberID, + JsonRequestBodyMaker.friendRequest( + Collections.singletonList(publicCircleID)).toRequestPacketJsonObject(POST), //new ArrayList<>(Arrays.asList(circleID)) + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + return true; // just to avoid default toast error + } + }); + } + + public static void createCollection(String memberID, Collection collection, Bitmap bitmap) { //String imageAddress) { + //if (imageAddress == null){ + if (bitmap == null) { + restServices.createCollectionWithoutImage(memberID, + JsonRequestBodyMaker.createCollection(collection).toRequestPacketJsonObject(POST), + new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + Logger.toast(R.string.successfully_created); + poinilaResponse.data.jsonContent = getDataList().get(0).toString(); + postEvent(new ModelCreatedEvent(poinilaResponse.data)); + postEvent(new ProfileDirtyEvent()); + postEvent(new UpdateNewPostDialogEvent(poinilaResponse.data)); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + if (poinilaResponse.code == ConstantsUtils.CODE_DUPLICATE) { + Logger.toast(R.string.error_duplication_collection_name); + return true; + } + return false; + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + + }); + } else { + restServices.createCollectionWithImage(memberID, POST, collection, + //new TypedFile(MULTIPART_FORMDATA, new File(imageAddress)), + new PoinilaTypedByteArray(MYME_TYPE_IMAGE, convertBitmapToByteArray( + ImageUtils.resizeBitmapForCollectionCover(bitmap))), + new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + Logger.toast(R.string.successfully_created); + poinilaResponse.data.jsonContent = getDataList().get(0).toString(); + postEvent(new ModelCreatedEvent(poinilaResponse.data)); + postEvent(new ProfileDirtyEvent()); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + if (poinilaResponse.code == ConstantsUtils.CODE_DUPLICATE) { + Logger.toast(R.string.error_duplication_collection_name); + return true; + } + return false; + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }); + } + } + + // TODO: separate updates having image with not having ones + public static void updateCollection(String collectionID, Collection collection, Bitmap bitmap) { + if (bitmap == null) { + restServices.updateCollectionWithoutCover(collectionID, + JsonRequestBodyMaker.createCollection(collection).toRequestPacketJsonObject(PUT), + new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + Logger.toast(R.string.successfully_updated); + poinilaResponse.data.jsonContent = getDataList().get(0).toString(); + postEvent(new ModelUpdatedEvent(poinilaResponse.data)); + postEvent(new CollectionUpdatedEvent(poinilaResponse.data)); + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }); + } else { + restServices.updateCollectionWithCover(collectionID, PUT, collection, + new PoinilaTypedByteArray(MYME_TYPE_IMAGE, convertBitmapToByteArray( + ImageUtils.resizeBitmapForCollectionCover(bitmap))), + new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + Logger.toast(R.string.successfully_updated); + poinilaResponse.data.jsonContent = getDataList().get(0).toString(); + postEvent(new ModelUpdatedEvent(poinilaResponse.data)); + postEvent(new CollectionReceivedEvent(poinilaResponse.data)); + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }); + } + } + + public static void removeFriend(String friendID) { + restServices.removeFriend(PoinilaPreferences.getMyId(), friendID, + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(DELETE), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + return true; // just to avoid default toast error + } + }); + } + + /** + * fetches collection post either by collection id or combination of collection name and user name + * + * @param collectionIdOrName if is collection id, user is useless + * @param userName if first parameter is collection name it's mandatory to pass a valid user name here + * @param bookmark + * @param receiverName + */ + public static void getCollectionPosts(String collectionIdOrName, @Nullable String userName, + String bookmark, final BaseEvent.ReceiverName receiverName, boolean justImages) { + PoinilaCallback>> cb = new PoinilaCallback>>() { + + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new PostsReceivedEvent(listPoinilaResponse.data, + listPoinilaResponse.bookmark, receiverName)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + + }; + if (userName != null) + restServices.getCollectionPostsByName(userName, collectionIdOrName, bookmark, cb); + else{ + if(justImages) + restServices.getCollectionPosts(collectionIdOrName, bookmark, "img", cb); + else + restServices.getCollectionPosts(collectionIdOrName, bookmark, cb); + } + } + + public static void createTextPost(String collectionID, Post post) { + restServices.uploadTextPost(collectionID, + JsonRequestBodyMaker.createTextPost(post).toRequestPacketJsonObject(POST), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + Logger.toast(R.string.successfully_created); + postEvent(new ProfileDirtyEvent()); + } + }); + } + + + public static void createImagePost(String collectionID, Bitmap image, Post newPost) { + imagedPost(collectionID, new PoinilaTypedByteArray(MYME_TYPE_IMAGE, + convertBitmapToByteArray(image)), newPost); + } + + /*public static void createImagePostFromFile(String collectionID, String imageAddress, Post post) { + imagedPost(collectionID, new PoinilaTypedByteArray(MYME_TYPE_IMAGE, + convertBitmapToByteArray(ImageUtils.loadBitmapScaledToUpload(imageAddress))), post); + } + + public static void createImagePostFromContentUri(String collectionID, Uri uri, Post post) { + imagedPost(collectionID, new PoinilaTypedByteArray(MYME_TYPE_IMAGE, + convertBitmapToByteArray(ImageUtils.loadBitmapScaledToUpload(uri))), post); + }*/ + + private static void imagedPost(String collectionID, TypedOutput image, Post post) { + restServices.uploadImagePost(collectionID, POST, post, image, + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + Logger.toast(R.string.successfully_created); + postEvent(new ProfileDirtyEvent()); + } + }); + } + + public static void deleteCollection(final Collection collection) { + restServices.deleteCollection(collection.getId(), + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(DELETE), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + Logger.toast(R.string.successfully_deleted); + postEvent(new ModelDeletedEvent(collection)); + } + }); + } + + public static void followCollection(String collectionID) { + restServices.followCollection(collectionID, + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(POST), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + } + + //TODO: kasif! tu search age beri collection follow koni bargardi update nemishe + // bad request mizane error default midim! + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + return true; + } + }); + } + + public static void unfollowCollection(String collectionID) { + restServices.unfollowCollection(collectionID, + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(DELETE), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + } + + //TODO: kasif! tu search age beri collection follow koni bargardi update nemishe + // bad request mizane error default midim! + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + return true; + } + }); + } + + public static void updateCircle(final Circle circle) { + restServices.updateCircle(circle.getId(), + JsonRequestBodyMaker.createCircle(circle.name).toRequestPacketJsonObject(PUT) + , new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + postEvent(new ModelUpdatedEvent(circle)); + } + }); + } + + public static void deleteCircle(final Circle circle) { + restServices.deleteCircle(circle.getId(), + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(DELETE), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + postEvent(new ModelDeletedEvent(circle)); + } + }); + } + + public static void createCircle(String circleName) { + restServices.createCircle(JsonRequestBodyMaker.createCircle(circleName).toRequestPacketJsonObject(POST), + new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse circlePoinilaResponse, Response response) { + Circle newCircle = circlePoinilaResponse.data; + newCircle.defaultType = DefaultType.NOT_DEFAULT; + postEvent(new ModelCreatedEvent(newCircle)); + postEvent(new CircleReceivedEvent(circlePoinilaResponse.data)); + } + + @Override + public boolean poinilaError(PoinilaResponse error) { + postEvent(new FailEvent(RequestType.CREATE_CIRCLE)); + return true; + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }); + } + + public static void updateFrame(final Frame frame) { + restServices.updateFrame(frame.getId(), + JsonRequestBodyMaker.createCircle(frame.name).toRequestPacketJsonObject(PUT), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + postEvent(new ModelUpdatedEvent(frame)); + } + }); + } + + public static void deleteFrame(final Frame frame) { + restServices.deleteFrame(frame.getId(), + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(DELETE), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + postEvent(new ModelDeletedEvent(frame)); + } + }); + } + + public static void createFrame(final String frameName) { + restServices.createFrame(JsonRequestBodyMaker.createCircle(frameName).toRequestPacketJsonObject(POST), + new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse framePoinilaResponse, Response response) { + postEvent(new ModelCreatedEvent(framePoinilaResponse.data)); + postEvent(new FrameReceivedEvent(framePoinilaResponse.data)); + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }); + } + + public static void addCollectionToFrame(String frameID, String collectionID) { + restServices.addCollectionToFrame(frameID, collectionID, + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(POST), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + + } + }); + } + + public static void removeCollectionFromFrame(String frameID, String collectionID) { + restServices.removeCollectionFromFrame(frameID, collectionID, + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(DELETE), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + + } + }); + } + + public static void getProfileSettings() { + restServices.getProfileSettings(PoinilaPreferences.getMyId(), "people", + new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse memberPoinilaResponse, Response response) { + postEvent(new ProfileSettingReceivedEvent(memberPoinilaResponse.data)); + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }); + } + + public static void updateProfileSetting(Member profile, final SettingActivity.SettingType settingType) { + restServices.updateProfile(PoinilaPreferences.getMyId(), + JsonRequestBodyMaker.updateProfile(profile).toRequestPacketJsonObject(PUT), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + postEvent(new UpdateProfileSettingResponse(true, settingType)); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + postEvent(new UpdateProfileSettingResponse(false, settingType)); + return false; + } + }); + } + + public static void changePassword(String newPassword, String oldPassword) { + restServices.changePassword(PoinilaPreferences.getMyId(), + JsonRequestBodyMaker.changePassword(newPassword, oldPassword).toRequestPacketJsonObject(PUT), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + Logger.toast(R.string.successfully_updated); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + if (poinilaResponse.code == 447) { // old password wrong + postEvent(new ServerResponseEvent(false, BaseEvent.ReceiverName.ChangePassword, poinilaResponse.code)); + return true; + } + return super.poinilaError(poinilaResponse); + } + }); + } + + public static void getMyInfo(final MyInfoReceivedEvent.MY_INFO_TYPE type) { + restServices.getMyInfo(new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + // must be analyzed in detail. not sure it does't do any harm + String authToken = getJWTTokenFromHeaders(response); +// PoinilaPreferences.putAuthToken(authToken); + + PonilaAccountManager.getInstance().updatePonilaAccount(null, authToken); + + Member member = ponilaResponse.data; + member.jsonContent = getDataList().get(0).toString(); + + JsonElement collectionsJsonElement = getDataList().get(0).getAsJsonObject().get(KEY_JSON_OWNED_COLLECTIONS); + if (collectionsJsonElement != null && !member.isAnonymous) { // in anonymous login + JsonArray collectionsElements = collectionsJsonElement.getAsJsonArray(); + for (int i = 0; i < collectionsElements.size(); i++) { + member.owningCollections.get(i).jsonContent = collectionsElements.get(i).toString(); + } + } + + postEvent(new MyInfoReceivedEvent(ponilaResponse.data, false, type)); + + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + if (poinilaResponse.code == 401) { + postEvent(new MyInfoReceivedEvent(null, false, type)); + return true; + } + return super.poinilaError(poinilaResponse); + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }); + } + + + public static void getMyFriendshipRequests(String bookmark) { + restServices.getMyFriendshipRequests(bookmark, new PoinilaCallback>>() { + + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new MyFriendshipRequestsEvent(listPoinilaResponse.data, listPoinilaResponse.bookmark)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + /* public static void getMyAcceptedFriendships(String bookmark){ + restServices.getMyAcceptedFriendships(bookmark, new PoinilaCallback>>() { + + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new AcceptedInvitationsEvent(listPoinilaResponse.data, listPoinilaResponse.bookmark)); + } + + @Override + public void poinilaError(PoinilaResponse error) { + Logger.toast("get accept error: " + error.getMessage()); + } + }); + }*/ + + public static void getMyNotifications(String bookmark) { + restServices.getMyNotifications(bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + //removing notifications related to sharing a collection between peoples + for (int i = listPoinilaResponse.data.size() - 1; i >= 0; i--) { + if (listPoinilaResponse.data.get(i).type == null) + listPoinilaResponse.data.remove(i); + } + postEvent(new AbstractNotificationsReceivedEvent.MyNotificationsReceivedEvent(listPoinilaResponse.data, listPoinilaResponse.bookmark)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void getOthersNotification(String bookmark) { + restServices.getOthersNotification(bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new AbstractNotificationsReceivedEvent.OthersNotificationsReceivedEvent(listPoinilaResponse.data, listPoinilaResponse.bookmark)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + + public static void deletePost(String id) { + restServices.deletePost(id, + JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(DELETE), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + + } + }); + } + + public static void getServerTime() { + final long start = System.currentTimeMillis(); + restServices.getServerTime(new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse datePoinilaResponse, Response response) { + //postEvent(new TimeReceivedEvent(datePoinilaResponse.data)); + Intent intent = (new Intent(ConstantsUtils.INTENT_FILTER_SERVER_TIME)); + intent.putExtra(ConstantsUtils.KEY_TIME_DIFFERENCE, datePoinilaResponse.data.getTime() - start); + LocalBroadcastManager.getInstance(ContextHolder.getContext()).sendBroadcast(intent); + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }); + } + + public static void getTopics() { + restServices.getTopics(new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new TopicsReceivedEvent(listPoinilaResponse.data)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void getApplicationNotification() { + restServices.getApplicationNotification(new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new NotificationSettingsReceivedEvent(listPoinilaResponse.data)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + public static void getEmailNotification() { + restServices.getEmailNotification(new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> listPoinilaResponse, Response response) { + postEvent(new NotificationSettingsReceivedEvent(listPoinilaResponse.data)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } + + + public static void addFriendToCircle(String circleID, String friendID) { + restServices.addFriendToCircle( + PoinilaPreferences.getMyId(), + friendID, circleID, JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(POST), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + + } + }); + } + + public static void removeFriendFromCircle(String circleID, String friendID) { + restServices.removeFriendFromCircle( + PoinilaPreferences.getMyId(), + friendID, circleID, JsonRequestBodyMaker.emptyPacket().toRequestPacketJsonObject(DELETE), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + } + }); + } + + + public static void getPost(String postID, final int requestId) { + restServices.getPost(postID, new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + postEvent(new PostReceivedEvent(poinilaResponse.data, requestId)); + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }); + } + + public static void getCollection(@NotNull String collectionIdOrName, @Nullable String userName) { + PoinilaCallback> cb = new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse poinilaResponse, Response response) { + postEvent(new CollectionReceivedEvent(poinilaResponse.data)); + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }; + if (userName != null) + restServices.getCollectionByName(collectionIdOrName, userName, cb); + else + restServices.getCollection(collectionIdOrName, cb); + } + + /** + * @param type either bug or proposal + */ + public static void sendReport(String type, String title, String content) { + restServices.report(JsonRequestBodyMaker.contactUs(type, title, content).toRequestPacketJsonObject(POST), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse painingResponse, Response response) { + Logger.toast(R.string.successfully_submitted_report); + } + }); + } + + public static void informServerOfInlineBrowsing(String postId) { + restServices.informServerOfPostInlineBrowsing(postId, new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + } + }); + } + + public static void informServerOfExternalBrowsing(String postId) { + restServices.informServerOfPostExternalBrowsing(postId, new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + } + }); + } + + public static void explore(String mainEntityId, String bookmark) { + restServices.explore(mainEntityId, bookmark, new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> ponilaResponse, Response response) { + postEvent(new PostsReceivedEvent(ponilaResponse.data, ponilaResponse.bookmark, BaseEvent.ReceiverName.ExploredTagPosts)); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + return super.poinilaError(poinilaResponse); + } + }); + } + + public static void verifyPhoneOrMobile(String verificationCode, int memberId, String mobileOrPhone, boolean byEmail){ + restServices.verifyPhoneOrEmail( + JsonRequestBodyMaker.verifyPhoneOrMobile(verificationCode, memberId, mobileOrPhone, byEmail).toRequestPacketJsonObject(POST) + , new PoinilaCallback() { + + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + postEvent(new VerificationRequestResponse(true, ponilaResponse.code)); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + postEvent(new VerificationRequestResponse(false, poinilaResponse.code)); + return true; + } + }); + } + + public static void getSystemPreferences() { + + restServices.getSystemPreferences(new PoinilaCallback>() { + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + postEvent(new SystemPreferencesReceivedEvent(ponilaResponse.data)); + } + + @Override + public Type getType() { + return new TypeToken>() { + }.getType(); + } + }); + + } + + public static void reportMemberOrPost(int memberIdOrPostId){ + restServices.reportMemberOrPost(JsonRequestBodyMaker.reportMemberOrPost( + memberIdOrPostId). + toRequestPacketJsonObject(POST), new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + + } + }); + } + + public static void getSuggestedPosts(String ids){ + try { + JSONArray postIds = new JSONArray(ids); + restServices.getSuggestedPosts(JsonRequestBodyMaker.postIdList(postIds).toRequestPacketJsonObject(POST), new PoinilaCallback>>() { + @Override + public void poinilaSuccess(PoinilaResponse> ponilaResponse, Response response) { + postEvent(new SuggestionPosts(ponilaResponse.data)); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + return super.poinilaError(poinilaResponse); + } + + @Override + public Type getType() { + return new TypeToken>>() { + }.getType(); + } + }); + } catch (JSONException e) { + e.printStackTrace(); + } + + } + + public static void setUsernamePassword(final String uniqueName, String password){ + restServices.setUserNamePassword(DBFacade.getCachedMyInfo().getId(), + JsonRequestBodyMaker.setUsernamePassword(uniqueName, password, PoinilaPreferences.getGoogleToken()).toRequestPacketJsonObject(PUT), + new PoinilaCallback() { + @Override + public void poinilaSuccess(PoinilaResponse ponilaResponse, Response response) { + Logger.toast(R.string.successfully_updated); + } + + @Override + public boolean poinilaError(PoinilaResponse poinilaResponse) { + + switch (poinilaResponse.code){ + case 425: + Logger.toastError(uniqueName + " " + getString(R.string.error_already_taken_username)); + break; + default: + Logger.toastError(getString(R.string.change_user_pass_fail)); + } + + + return super.poinilaError(poinilaResponse); + + + } + }); + } + + public static class AddCookiesInterceptor implements Interceptor { + + @Override + public com.squareup.okhttp.Response intercept(Chain chain) throws IOException { + Request.Builder builder = chain.request().newBuilder(); + //Set cookies = PoinilaPreferences.getCookies(); + for (String cookie : PoinilaNetService.cookies) { //cookies) { + builder.addHeader("Cookie", cookie); + } + + return chain.proceed(builder.build()); + } + } + + public static class ReceivedCookiesInterceptor implements Interceptor { + @Override + public com.squareup.okhttp.Response intercept(Chain chain) throws IOException { + com.squareup.okhttp.Response originalResponse = chain.proceed(chain.request()); + + if (!originalResponse.headers("Set-Cookie").isEmpty()) { + HashSet cookies = new HashSet<>(); + for (String header : originalResponse.headers("Set-Cookie")) { + if (header.startsWith("session")) { + header = header.split(" ")[0].replace(";", ""); + } + cookies.add(header); + } + //PoinilaPreferences.putCookies(cookies); + PoinilaNetService.cookies = cookies; + } + return originalResponse; + } + } + + + + private static class AgentAndVersionInterceptor implements Interceptor { + @Override + public com.squareup.okhttp.Response intercept(Chain chain) throws IOException { + Request.Builder builder = chain.request().newBuilder(); + builder.addHeader("ponila-version", String.valueOf(DeviceInfoUtils.CLIENT_VERSION_CODE)); + // TODO: add user-agent header. + return chain.proceed(builder.build()); + } + } + + + + /* private static class RetrofitErrorHandler implements ErrorHandler { + @Override + public Throwable handleError(RetrofitError cause) { + Exception poinilaError; + //Response r = cause.getResponse(); + + if (cause.getCause() instanceof SocketTimeoutException) { + return new Exception(ResourceUtils.getString(R.string.error_socket_timeout)); + } + return cause; + } + }*/ + + public static String getStringFromResponse(Response response) { + return new String(((TypedByteArray) response.getBody()).getBytes()); + } + + public static JsonElement getDataOfResponse(Response response) { + JsonElement jsonElement = new JsonParser().parse(getStringFromResponse(response)); + return jsonElement.getAsJsonObject().get(KEY_JSON_DATA_ROOT); + } + + private static void postEvent(T event) { + BusProvider.getBus().post(event); + } + + +} diff --git a/src/main/java/data/PoinilaTypedByteArray.java b/src/main/java/data/PoinilaTypedByteArray.java new file mode 100755 index 0000000..7257174 --- /dev/null +++ b/src/main/java/data/PoinilaTypedByteArray.java @@ -0,0 +1,24 @@ +package data; + +import retrofit.mime.TypedByteArray; + +/** + * Created by iran on 2015-09-20. + */ +public class PoinilaTypedByteArray extends TypedByteArray{ + /** + * Constructs a new typed byte array. Sets mimeType to {@code application/unknown} if absent. + * + * @param mimeType + * @param bytes + * @throws NullPointerException if bytes are null + */ + public PoinilaTypedByteArray(String mimeType, byte[] bytes) { + super(mimeType, bytes); + } + + @Override + public String fileName() { + return "temp"; + } +} diff --git a/src/main/java/data/RequestKind.java b/src/main/java/data/RequestKind.java new file mode 100755 index 0000000..cf57076 --- /dev/null +++ b/src/main/java/data/RequestKind.java @@ -0,0 +1,10 @@ +package data; + +/** + * Created by AlirezaF on 11/16/2015. + */ +public enum RequestKind { + OneTimeRequest, + ListDataRequest, + RepetitiveRequest, // info, currentTime. No use yet :) +} diff --git a/src/main/java/data/RequestTracker.java b/src/main/java/data/RequestTracker.java new file mode 100755 index 0000000..77d71bd --- /dev/null +++ b/src/main/java/data/RequestTracker.java @@ -0,0 +1,33 @@ +package data; + +import java.util.HashSet; +import java.util.Set; + +/** + * Created by iran on 2015-11-15. + */ +public class RequestTracker { + public Set initRequestsIDs; + public Set loadMoreRequestIDs; + + public RequestTracker() { + initRequestsIDs = new HashSet<>(); + loadMoreRequestIDs = new HashSet<>(); + } + + public void addInitRequestID(int requestID){ + initRequestsIDs.add(requestID); + } + + public boolean hasInitResponseValidID(int requestID){ + return initRequestsIDs.remove(requestID); + } + + public void addLoadMoreRequestID(int requestID){ + loadMoreRequestIDs.add(requestID); + } + + public boolean hasLoadMoreResponseValidID(int requestID){ + return loadMoreRequestIDs.remove(requestID); + } +} diff --git a/src/main/java/data/RequestType.java b/src/main/java/data/RequestType.java new file mode 100755 index 0000000..ba733ba --- /dev/null +++ b/src/main/java/data/RequestType.java @@ -0,0 +1,8 @@ +package data; + +/** + * Created by iran on 2015-09-05. + */ +public enum RequestType { + CREATE_FRAME, CREATE_CIRCLE +} diff --git a/src/main/java/data/RestServices.java b/src/main/java/data/RestServices.java new file mode 100755 index 0000000..5b75e79 --- /dev/null +++ b/src/main/java/data/RestServices.java @@ -0,0 +1,442 @@ +package data; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +import data.model.SuggestedWebPagePost; +import retrofit.Callback; +import retrofit.client.Response; +import retrofit.http.Body; +import retrofit.http.GET; +import retrofit.http.Multipart; +import retrofit.http.POST; +import retrofit.http.Part; +import retrofit.http.Path; +import retrofit.http.Query; +import retrofit.mime.TypedOutput; + +/** + * Created by iran on 2015-06-15. + * @author Alireza Farahani + */ +public interface RestServices { + String BOOKMARK = "bookmark"; + String ACTION = "action"; + String DATA = "data"; + String IMAGE = "image"; + + /*@GET("/users/{user}/repos") + List testJson(@Path("user") String user);*/ + + + /*--------Suggestion---------*/ + @GET("/suggestion/") + void getSuggestions(@Query(value = BOOKMARK) String bookmark, Callback cb);//PoinilaCallback cb); + //void getSuggestions(@Query(value = "bookmark") String bookmark, PoinilaCallback>> cb); + + /*----------SEARCH-----------*/ + @GET("/post/search/") + void getPostsWithQuery(@Query(value = "q") List query, @Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + @GET("/collection/search/") + void getCollectionsWithQuery(@Query(value = "q") List query, @Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + @GET("/member/search/") + void getMembersWithQuery(@Query(value = "q") List query, @Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + /*----------POST-----------*/ + /*------GET-------*/ + @GET("/post/{post_id}/") + void getPost(@Path("post_id") String postID, data.PoinilaCallback> cb); + + @GET("/post/{id}/relatedpost/") + void getRelatedPosts(@Path("id") String postID, @Query(value = BOOKMARK) String bookmark, data.PoinilaCallback>> cb); + + //TODO: double check with server format + @GET("/post/{id}/comment/") + void getPostComments(@Path("id") String postID, @Query(value = BOOKMARK) String bookmark, data.PoinilaCallback>> cb); + + /** + * retrieve the collections consisting a specific post. + * @param postID + * @param cb + */ + @GET("/post/{id}/repostcollection/") + void getRepostCollections(@Path("id") String postID, @Query(value = BOOKMARK) String bookmark, data.PoinilaCallback>> cb); + + @GET("/post/{id}/like/") + void getPostLikers(@Path("id") String postID, @Query(value = BOOKMARK) String bookmark, data.PoinilaCallback>> cb); + + @GET("/post/{id}/open/") + void informServerOfPostInlineBrowsing(@Path("id") String postId, data.PoinilaCallback cb); + + @GET("/post/{id}/browse/") + void informServerOfPostExternalBrowsing(@Path("id") String postId, data.PoinilaCallback cb); + + /*@GET("/posts/{id}/") + void getPost(@Path("id") String id, PoinilaCallback cb);*/ + + /*----------POST-----------*/ + /*------PUT-------*/ + @POST("/post/{id}/like/") + void favePost(@Path("id") String PostID, @Body HashMap emptyBody, data.PoinilaCallback cb); + + /*@POST("/post/{id}/") + void updatePost(@Path("id") String postID, @Body Post post, PoinilaCallback cb);*/ + + /*-----DELETE-----*/ + @POST("/post/{id}/like/") + void unfavePost(@Path("id") String PostID, @Body HashMap hashMap, data.PoinilaCallback cb); + + @POST("/post/{id}/") + void deletePost(@Path("id") String postID, @Body HashMap hashMap, data.PoinilaCallback cb); + + + /*-----POST------*/ + @POST("/collection/{id}/repost/") + void repost(@Path("id") String collectionID, @Body HashMap post, data.PoinilaCallback cb); + + @POST("/post/{id}/comment/") + void commentOnPost(@Path("id") String postID, @Body HashMap comment, data.PoinilaCallback> cb); + + @POST("/comment/{id}/") + void deleteComment(@Path("id") String commentID, @Body HashMap hashMap, data.PoinilaCallback cb); + + /*----------MEMBER-----------*/ + /*------GET-------*/ + @GET("/member/{id}/profile/") + void getProfileById(@Path("id") String memberID, data.PoinilaCallback> cb); + + @GET("/unique_name/{unique_name}/profile/") + void getProfileByUserName(@Path("unique_name") String userName, data.PoinilaCallback> cb); + + + @GET("/member/{id}/like/") + void getMemberLikedPosts(@Path("id") String memberID, @Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + @GET("/member/{id}/friend/") + void getMemberFriends(@Path("id") String memberID, @Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + @GET("/member/{id}/post/") + void getMemberPosts(@Path("id") String memberID, @Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + @GET("/member/{id}/follower/") + void getMemberFollowers(@Path("id") String memberID, @Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + @GET("/member/{id}/collection/") + void getMemberCollections(@Path("id") String memberID, @Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + @GET("/member/{id}/followcollection/") + void getMemberFollowingCollections(@Path("id") String memberID, + @Query(value = BOOKMARK) String bookmark, + @Query(value = "frame_id") String frameID, + data.PoinilaCallback>> cb); + + @GET("/member/{id}/generalconfiguration/") + void getProfileSettings(@Path("id") String memberID, @Query("type") String type, data.PoinilaCallback> cb); + + @GET("/member/{id}/interest/") + void getMemberInterests(@Path("id") String memberID, data.PoinilaCallback>> cb); + + /*----------MEMBER-----------*/ + /*------PUT-------*/ + @POST("/member/{id}/generalconfiguration/") + void updateProfile(@Path("id") String memberID, @Body HashMap user, data.PoinilaCallback cb); + + + @POST("/member/{user_id}/friendshipinvitation/") + void answerFriendRequest(@Path("user_id") String userID, @Body HashMap circleRequester, + data.PoinilaCallback cb); + + @POST("/member/{id}/password/") + void changePassword(@Path("id") String memberID, @Body HashMap password, data.PoinilaCallback cb); + + @POST("/member/{id}/friendcircle/") + void updateFriendCircles(@Path("id") String memberID, @Body HashMap circles, data.PoinilaCallback cb); + + /*-----POST------*/ + + @POST("/member/{user_id}/friend/{friend_id}/circle/{circle_id}/") + void addFriendToCircle( + @Path("user_id") String userID, + @Path("friend_id") String friendID, + @Path("circle_id") String circleID, + @Body HashMap emptyPacket, + data.PoinilaCallback cb); + + // TODO: + @Multipart + @POST("/member/{id}/profile/photo/") + void uploadProfilePic(@Path("id") String memberID, + @Part(ACTION) String action, + @Part(IMAGE) TypedOutput image, + data.PoinilaCallback cb); + + @POST("/member/{member_id}/friendshipinvitation/") + void friendRequest(@Path("member_id") String memberID, @Body HashMap circle,//JsonObject circle, //JSONObject circle, + data.PoinilaCallback cb); + + + @Multipart + @POST("/member/{id}/collection/") + void createCollectionWithImage(@Path("id") String memberID, + @Part(ACTION) String action, + @Part(DATA) data.model.Collection collection, + @Part(IMAGE) TypedOutput image, + data.PoinilaCallback> cb); + /* @Part(value = "name") String name, + @Part(value = "description") String description, + @Part(value = "topic_id") int topicID, + @Part(value = "circle_ids") String circle_IDs,*/ + + @POST("/member/{id}/collection/") + void createCollectionWithoutImage(@Path("id") String memberID, + @Body HashMap CollectionPacket, + data.PoinilaCallback> cb); + + /*----DELETE---*/ + @POST("/member/{user_id}/friend/{friend_id}/circle/{circle_id}/") + void removeFriendFromCircle( + @Path("user_id") String userID, + @Path("friend_id") String friendID, + @Path("circle_id") String circleID, + @Body HashMap emptyPacket, + data.PoinilaCallback cb); + + /** + * + * @param userID, ID of the user not his friend! only for consistency in url formats + * @param cb + */ + @POST("/member/{id}/friend/{friend_id}/") + void removeFriend(@Path("id") String userID,// JSONObject friendID, + @Path("friend_id") String friendID, @Body HashMap method, + data.PoinilaCallback cb); + + + /*--------COLLECTION----------*/ + /*--GET--*/ + @GET("/collection/{collection_id}/") + void getCollection(@Path("collection_id") String collectionID, data.PoinilaCallback> cb); + + @GET("/unique_name/{unique_name}/collection_name/{collection_name}/") + void getCollectionByName(@Path(value = "collection_name", encode = false) String collectionName, @Path(value = "unique_name", encode = false) String uniqueName, + data.PoinilaCallback> cb); + + // TODO: man bayad vorudi bedam az che zamanio mikham?? + @GET("/collection/{id}/post/") + void getCollectionPosts(@Path("id") String collectionID, @Query(value = BOOKMARK) String bookmark, + @Query(value = "post_type") String post_type, + data.PoinilaCallback>> cb); + + @GET("/collection/{id}/post/") + void getCollectionPosts(@Path("id") String collectionID, @Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + @GET("/unique_name/{unique_name}/collection_name/{collection_name}/post/") + void getCollectionPostsByName(@Path("unique_name") String userName, @Path("collection_name") String collectionName, + @Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + /*--POST--*/ + @POST("/collection/{id}/post/") + void uploadTextPost(@Path("id") String CollectionID, @Body HashMap body, data.PoinilaCallback cb); + + /*@POST("/collection/{id}/post/") + void uploadImagePost(@Path("id") String CollectionID, @Body Post post, + @Body TypedFile image, PoinilaCallback cb);*/ + @Multipart + @POST("/collection/{id}/post/") + void uploadImagePost(@Path("id") String CollectionID, + /*@Part("title") String title, + @Part("caption") String caption, + @Part("tags") String tags,*/ + @Part(ACTION) String action, + @Part(DATA) data.model.Post post, + @Part(IMAGE) TypedOutput image, data.PoinilaCallback cb); + + @POST("/collection/{id}/post/") + void createWebsitePost(@Path("id") String collectionID, @Body HashMap post, data.PoinilaCallback cb); + + @POST("/collection/{id}/follow/") + void followCollection(@Path("id") String CollectionID, @Body HashMap emptyBody, data.PoinilaCallback cb); + + /*--PUT--*/ + @POST("/collection/{id}/") + void updateCollectionWithoutCover(@Path("id") String collectionID, + @Body HashMap collectionPacket, + data.PoinilaCallback> cb); + + @POST("/collection/{id}/coverphoto/") + void uploadCollectionCoverImage(@Path("id") String collectionID, @Body HashMap image, + data.PoinilaCallback cb); + @Multipart + @POST("/collection/{id}/") + void updateCollectionWithCover(@Path("id") String collectionID, + @Part(ACTION) String action, + @Part(DATA) data.model.Collection collection, + @Part(IMAGE) TypedOutput image, + data.PoinilaCallback> cb); + + /*--DELETE--*/ + @POST("/collection/{id}/") + void deleteCollection(@Path("id") String collectionID, + @Body HashMap actionPacket, + data.PoinilaCallback cb); + + @POST("/collection/{id}/follow/") + void unfollowCollection(@Path("id") String collectionID, @Body HashMap emptyBody, + data.PoinilaCallback cb); + + + /*----------CIRCLE-----------*/ + /*DELETE*/ + @POST("/circle/{id}/") + void deleteCircle(@Path("id") String circleID, @Body HashMap emptyBody, data.PoinilaCallback cb); + + @POST("/frame/{id}/") + void deleteFrame(@Path("id") String frameID, @Body HashMap emptyBody, data.PoinilaCallback cb); + + @POST("/frame/{id}/collection/{collection_id}/") + void removeCollectionFromFrame(@Path("id") String frameID, + @Path("collection_id") String collectionID, + @Body HashMap emptyPacket, + data.PoinilaCallback cb); + /*PUT*/ + @POST("/circle/{id}/") + void updateCircle(@Path("id") String circleID, @Body HashMap circleName, data.PoinilaCallback cb); + + @POST("/frame/{id}/") + void updateFrame(@Path("id") String frameID, @Body HashMap frameName, data.PoinilaCallback cb); + + /*POST*/ + @POST("/circle/") + void createCircle(@Body HashMap circleName, data.PoinilaCallback> cb); + + @POST("/frame/{id}/collection/{collection_id}/") + void addCollectionToFrame(@Path("id") String frameID, + @Path("collection_id") String collectionID, + @Body HashMap emptyPacket, + data.PoinilaCallback cb); + + @POST("/frame/") + void createFrame(@Body HashMap frameName, data.PoinilaCallback> cb); + + /*--------Notifications-------*/ + @GET("/notification/ownfriendshipinvitations/") + void getMyFriendshipRequests(@Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + @GET("/notification/ownnotifications/") + void getMyNotifications(@Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + @GET("/notification/othernotifications/") + void getOthersNotification(@Query(value = BOOKMARK) String bookmark, + data.PoinilaCallback>> cb); + + /*----------OTHERS-----------*/ + // first time after loginParams and anytime user wants to set interests; + + @GET("/topic/") + void getTopics(data.PoinilaCallback>> cb); + + @GET("/currentservertime/") + void getServerTime(data.PoinilaCallback> cb); + + //TODO: methoda doroste? vorudi nemikhan ina? + @GET("/logout/") + void logout(data.PoinilaCallback cb); + + @GET("/applicationnotificationsettings/") + void getApplicationNotification(data.PoinilaCallback>> cb); + + @GET("/emailnotificationsettings/") + void getEmailNotification(data.PoinilaCallback>> cb); + + @GET("/interest/") + void getInterests(data.PoinilaCallback>> cb); + + @GET("/interest/{id}/") + void getSubInterest(@Path("id") String subInterests, data.PoinilaCallback>> cb); + + @GET("/invitetopoinila/") + void getRemainedInvites(data.PoinilaCallback> cb); + + @GET("/websiteinfo/{type}/") + void getWebsiteInfo(@Path("type") String postType, @Query(value = "url") String address, + data.PoinilaCallback> cb); + + @GET("/info2/") + void getMyInfo(data.PoinilaCallback> cb); + + /*--POST---*/ + @POST("/login/") + void login(@Body HashMap loginParas, Callback cb); + + @POST("/loginbygoogle/") + void loginByGoogle(@Body HashMap loginParas, Callback cb); + + @POST("/applicationnotificationsettings/") + void setApplicationNotification(@Body HashMap settingParams, data.PoinilaCallback cb); + + @POST("/emailnotificationsettings/") + void setEmailNotificationSetting(@Body HashMap settingParams, data.PoinilaCallback cb); + + @POST("/member/{user_id}/interest/{tag_id}/") + void removeInterest(@Path("user_id") String userID, @Path("tag_id") String tagID, + @Body HashMap emptyBody, data.PoinilaCallback cb); + + @POST("/forgetpassword/") + void recoverPassword(@Body HashMap recoveryDest, data.PoinilaCallback cb); + + @POST("/resetpassword/") + void resetPassword(@Body HashMap newPassword, data.PoinilaCallback cb); + + @POST("/verificationcode/") + void requestVerificationCode(@Body HashMap hashMap, data.PoinilaCallback cb); + + /*---put----*/ + @POST("/member/{id}/interest/") + void updateUserInterests(@Path("id") String memberID, @Body HashMap hashMap, data.PoinilaCallback cb); + + @POST("/invitetopoinila/") + void inviteToPoinila(@Body HashMap invitation, data.PoinilaCallback cb); + + @POST("/report/") + void report(@Body HashMap body, data.PoinilaCallback cb); + + @POST("/register/") + void register(@Body HashMap registerBody, data.PoinilaCallback cb); + + @GET("/unique_name/validate/") + void checkUserNameValidity(@Query("unique_name") String tempUserName, data.PoinilaCallback cb); + + @GET("/explore/{tag_name}/") + void explore(@Path("tag_name") String tagName, @Query(BOOKMARK) String bookmark, data.PoinilaCallback>> cb); + + @GET("/ponilasystempreferences/") + void getSystemPreferences(data.PoinilaCallback> cb); + + @POST("/post/member_id/report") + void reportMemberOrPost(@Body HashMap memberIdOrPostId,data.PoinilaCallback cb); + + @POST("/verifyuser/") + void verifyPhoneOrEmail(@Body HashMap verificationCode, data.PoinilaCallback cb); + + @POST("/suggestedposts/") + void getSuggestedPosts(@Body HashMap postIds, data.PoinilaCallback>> cb); + + @POST("/member/{member_id}/setusernamepassword/") + void setUserNamePassword(@Path("member_id") String userId, @Body HashMap data, data.PoinilaCallback cb); +} + diff --git a/src/main/java/data/database/PoinilaDataBase.java b/src/main/java/data/database/PoinilaDataBase.java new file mode 100755 index 0000000..0dab81a --- /dev/null +++ b/src/main/java/data/database/PoinilaDataBase.java @@ -0,0 +1,117 @@ +package data.database; + +import android.os.Parcelable; +import android.text.Html; +import android.text.Spanned; + +import com.google.gson.Gson; +import com.raizlabs.android.dbflow.annotation.Column; +import com.raizlabs.android.dbflow.annotation.Database; +import com.raizlabs.android.dbflow.converter.TypeConverter; +import com.raizlabs.android.dbflow.structure.BaseModel; + +import org.parceler.Parcel; +import org.parceler.ParcelClass; +import org.parceler.ParcelConverter; + +import java.io.Serializable; + +import data.PoinilaNetService; +import data.model.Gender; +import data.model.PrivacyType; + +/** + * Created by iran on 2015-07-23. + */ +@Database(name = PoinilaDataBase.NAME, version = PoinilaDataBase.VERSION, generatedClassSeparator = "$") +public class PoinilaDataBase { + public static final String NAME = "poinila"; + + public static final int VERSION = 1; + public static final String SUGGESTION_INDEX = "index_suggestion"; + + private static Gson gson; + public static Gson getGson(){ + return gson; + } + /* static { + gson = new GsonBuilder().create(); + Index index = new Index<>(SUGGESTION_INDEX). + on(Suggestion.class, Suggestion$Table.CREATIONTIME); + // begins an index + index.enable(); + }*/ + +/* @ParcelClass(value = ModelAdapter.class, annotation = @Parcel(converter = ModelAdapterConverter.class)) + public abstract static class PoinilaDBModel extends BaseModel{ + @Column + public String jsonContent; + + protected abstract T getModel(); + protected T getModelFromJson(Class t){ + return PoinilaNetService.getGson().fromJson(jsonContent, t); + } + } + + public class ModelAdapterConverter implements ParcelConverter { + @Override + public void toParcel(ModelAdapter input, android.os.Parcel parcel) { + + } + + @Override + public ModelAdapter fromParcel(android.os.Parcel parcel) { + return null; + } + }*/ + public abstract static class PoinilaDBModel extends BaseModel implements Serializable{ + + @Column + public String jsonContent; + + protected abstract T getModel(); + protected T getModelFromJson(Class t){ + return PoinilaNetService.getGson().fromJson(jsonContent, t); + } + } + + public static class PrivacyTypeConverter extends TypeConverter{ + + @Override + public String getDBValue(PrivacyType model) { + return model.name(); + } + + @Override + public PrivacyType getModelValue(String data) { + return PrivacyType.valueOf(data); + } + } + + public static class SpannedTypeConverter extends TypeConverter{ + + @Override + public String getDBValue(Spanned model) { + return model.toString(); + } + + @Override + public Spanned getModelValue(String data) { + return Html.fromHtml(data); + } + } + + public static class GenderTypeConverter extends TypeConverter{ + + @Override + public String getDBValue(Gender model) { + return model.name(); + } + + @Override + public Gender getModelValue(String data) { + return Gender.valueOf(data); + } + } + +} diff --git a/src/main/java/data/event/AbstractNotificationsReceivedEvent.java b/src/main/java/data/event/AbstractNotificationsReceivedEvent.java new file mode 100755 index 0000000..13be58f --- /dev/null +++ b/src/main/java/data/event/AbstractNotificationsReceivedEvent.java @@ -0,0 +1,31 @@ +package data.event; + + +import java.util.List; + +/** + * Created by iran on 3/6/2016. + */ +public abstract class AbstractNotificationsReceivedEvent extends data.event.BaseEvent { + public List data; + public String bookmark; + + public AbstractNotificationsReceivedEvent(List data, String bookmark) { + this.data = data; + this.bookmark = bookmark; + } + + public static class MyNotificationsReceivedEvent extends AbstractNotificationsReceivedEvent { + + public MyNotificationsReceivedEvent(List data, String bookmark) { + super(data, bookmark); + } + } + + public static class OthersNotificationsReceivedEvent extends AbstractNotificationsReceivedEvent { + + public OthersNotificationsReceivedEvent(List data, String bookmark) { + super(data, bookmark); + } + } +} diff --git a/src/main/java/data/event/AnswerFriendRequestResponse.java b/src/main/java/data/event/AnswerFriendRequestResponse.java new file mode 100755 index 0000000..4d0624a --- /dev/null +++ b/src/main/java/data/event/AnswerFriendRequestResponse.java @@ -0,0 +1,13 @@ +package data.event; + +/** + * Created by iran on 2015-10-04. + */ +public class AnswerFriendRequestResponse extends data.event.ServerResponseEvent { + public data.model.FriendRequestAnswer answer; + + public AnswerFriendRequestResponse(boolean succeed, data.model.FriendRequestAnswer answer) { + super(succeed, ReceiverName.SelectInterest); + this.answer = answer; + } +} diff --git a/src/main/java/data/event/BaseEvent.java b/src/main/java/data/event/BaseEvent.java new file mode 100755 index 0000000..6516b1f --- /dev/null +++ b/src/main/java/data/event/BaseEvent.java @@ -0,0 +1,38 @@ +package data.event; + +import com.shaya.poinila.android.presentation.view.fragments.notification.NPostListFragment; + +/** + * Created by iran on 2015-06-16. + */ +public abstract class BaseEvent { + public int requestType; + + public BaseEvent(){ + + } + + public BaseEvent(ReceiverName receiverName) { + this.receiverName = receiverName; + } + + public enum ReceiverName { + DashboardFragment, + MyFollowedCollections, + SearchFragment, + PostListFragment, + CollectionPageFragment, + CollectionListFragment, + MemberListFragment, + RepostCollectionsList, + PostsImagesDialog, + NotificationFragment, + PostRelatedPosts, + CollectionDetailFragment, + MyProfileFragment, + ProfileFragment, + SelectInterest, ChangePassword, ExploredTagPosts, + NPostListFragment + } + public ReceiverName receiverName; +} diff --git a/src/main/java/data/event/CacheEvent.java b/src/main/java/data/event/CacheEvent.java new file mode 100755 index 0000000..30d785a --- /dev/null +++ b/src/main/java/data/event/CacheEvent.java @@ -0,0 +1,16 @@ +package data.event; + +/** + * Created by iran on 2015-07-07. + */ +public class CacheEvent { + private final T data; + + public CacheEvent(T data) { + this.data = data; + } + + public T getData(){ + return this.data; + } +} diff --git a/src/main/java/data/event/CircleReceivedEvent.java b/src/main/java/data/event/CircleReceivedEvent.java new file mode 100755 index 0000000..a38a99e --- /dev/null +++ b/src/main/java/data/event/CircleReceivedEvent.java @@ -0,0 +1,14 @@ +package data.event; + +import data.model.Circle; + +/** + * Created by iran on 2015-09-20. + */ +public class CircleReceivedEvent { + public Circle circle; + + public CircleReceivedEvent(Circle circle) { + this.circle = circle; + } +} diff --git a/src/main/java/data/event/CollectionReceivedEvent.java b/src/main/java/data/event/CollectionReceivedEvent.java new file mode 100755 index 0000000..c964b4b --- /dev/null +++ b/src/main/java/data/event/CollectionReceivedEvent.java @@ -0,0 +1,17 @@ +package data.event; + +/** + * Created by iran on 2015-07-25. + */ +public class CollectionReceivedEvent extends data.event.BaseEvent { + public data.model.Collection collection; + + public CollectionReceivedEvent(data.model.Collection collection){ + this.collection = collection; + } + + public CollectionReceivedEvent(data.model.Collection collection, ReceiverName target){ + this.collection = collection; + this.receiverName = target; + } +} diff --git a/src/main/java/data/event/CollectionUpdatedEvent.java b/src/main/java/data/event/CollectionUpdatedEvent.java new file mode 100755 index 0000000..940a3fa --- /dev/null +++ b/src/main/java/data/event/CollectionUpdatedEvent.java @@ -0,0 +1,11 @@ +package data.event; +/** + * Created by iran on 2015-11-07. + */ +public class CollectionUpdatedEvent extends data.event.BaseEvent { + public data.model.Collection collection; + + public CollectionUpdatedEvent(data.model.Collection collection) { + this.collection = collection; + } +} diff --git a/src/main/java/data/event/CollectionsReceivedEvent.java b/src/main/java/data/event/CollectionsReceivedEvent.java new file mode 100755 index 0000000..301e125 --- /dev/null +++ b/src/main/java/data/event/CollectionsReceivedEvent.java @@ -0,0 +1,21 @@ +package data.event; + +import java.util.List; + +import data.model.Collection; + +/** + * Created by iran on 2015-07-06. + */ +public class CollectionsReceivedEvent extends IdentifiableEvent{ + public List collections; + public String bookmark; + + + public CollectionsReceivedEvent(List collections, String bookmark, ReceiverName receiverName) { + super(receiverName); + this.collections = collections; + this.bookmark = bookmark; + } + +} diff --git a/src/main/java/data/event/CommentReceivedEvent.java b/src/main/java/data/event/CommentReceivedEvent.java new file mode 100755 index 0000000..62d8ecd --- /dev/null +++ b/src/main/java/data/event/CommentReceivedEvent.java @@ -0,0 +1,14 @@ +package data.event; + +/** + * Created by iran on 2015-09-20. + */ +public class CommentReceivedEvent { + public String postID; + public data.model.Comment comment; + + public CommentReceivedEvent(data.model.Comment comment, String postID) { + this.comment = comment; + this.postID = postID; + } +} diff --git a/src/main/java/data/event/CommentsReceivedEvent.java b/src/main/java/data/event/CommentsReceivedEvent.java new file mode 100755 index 0000000..e712d54 --- /dev/null +++ b/src/main/java/data/event/CommentsReceivedEvent.java @@ -0,0 +1,18 @@ +package data.event; + +import java.util.List; + +import data.model.Comment; + +/** + * Created by iran on 2015-07-27. + */ +public class CommentsReceivedEvent { + public List data; + public String bookmark; + + public CommentsReceivedEvent(List data, String bookmark) { + this.data = data; + this.bookmark = bookmark; + } +} diff --git a/src/main/java/data/event/ContentReceivedEvent.java b/src/main/java/data/event/ContentReceivedEvent.java new file mode 100755 index 0000000..1165811 --- /dev/null +++ b/src/main/java/data/event/ContentReceivedEvent.java @@ -0,0 +1,14 @@ +package data.event; + +/** + * Created by AlirezaF on 7/22/2015. + */ +public class ContentReceivedEvent { + public String content; + public int postID; + + public ContentReceivedEvent(String content, int postID) { + this.content = content; + this.postID = postID; + } +} diff --git a/src/main/java/data/event/DashboardEvent.java b/src/main/java/data/event/DashboardEvent.java new file mode 100755 index 0000000..abd531e --- /dev/null +++ b/src/main/java/data/event/DashboardEvent.java @@ -0,0 +1,36 @@ +package data.event; +import java.util.List; + +/** + * Created by iran on 2015-07-06. + */ +public class DashboardEvent extends data.event.BaseEvent { + public String statusCode; + public List data; + public String bookmark; + public boolean isFromCache; + + public DashboardEvent(List posts, boolean isFromCache) { + this.data = posts; + this.isFromCache = isFromCache; + } + + public DashboardEvent(String statusCode) { + this.statusCode = statusCode; + } + + public DashboardEvent(List data, boolean isFromCache, String bookmark) { + + this.data = data; + this.isFromCache = isFromCache; + this.bookmark = bookmark; + } + + public List getData(){ + return data; + } + + public String getMessage(){ + return statusCode; + } +} diff --git a/src/main/java/data/event/FailEvent.java b/src/main/java/data/event/FailEvent.java new file mode 100755 index 0000000..7549270 --- /dev/null +++ b/src/main/java/data/event/FailEvent.java @@ -0,0 +1,15 @@ +package data.event; + + +import data.RequestType; + +/** + * Created by iran on 2015-09-05. + */ +public class FailEvent { + public RequestType requestType; + + public FailEvent(RequestType requestType) { + this.requestType = requestType; + } +} diff --git a/src/main/java/data/event/FrameCollectionsReceivedEvent.java b/src/main/java/data/event/FrameCollectionsReceivedEvent.java new file mode 100755 index 0000000..b3eb68c --- /dev/null +++ b/src/main/java/data/event/FrameCollectionsReceivedEvent.java @@ -0,0 +1,16 @@ +package data.event; + +import java.util.List; + +import data.model.Collection; + +/** + * Created by iran on 2015-07-28. + */ +public class FrameCollectionsReceivedEvent { + public FrameCollectionsReceivedEvent(List frames) { + this.frames = frames; + } + + public List frames; +} diff --git a/src/main/java/data/event/FrameReceivedEvent.java b/src/main/java/data/event/FrameReceivedEvent.java new file mode 100755 index 0000000..4d878ee --- /dev/null +++ b/src/main/java/data/event/FrameReceivedEvent.java @@ -0,0 +1,15 @@ +package data.event; + +import data.model.Frame; + +/** + * Created by iran on 2015-09-20. + */ +public class FrameReceivedEvent { + public Frame frame; + + public FrameReceivedEvent(Frame frame) { + + this.frame = frame; + } +} diff --git a/src/main/java/data/event/FramesReceivedEvent.java b/src/main/java/data/event/FramesReceivedEvent.java new file mode 100755 index 0000000..58b1c9a --- /dev/null +++ b/src/main/java/data/event/FramesReceivedEvent.java @@ -0,0 +1,14 @@ +package data.event; + +import java.util.List; + +/** + * Created by iran on 2015-07-28. + */ +public class FramesReceivedEvent { + public FramesReceivedEvent(List frames) { + this.frames = frames; + } + + public List frames; +} diff --git a/src/main/java/data/event/FriendCircleNotChangedEvent.java b/src/main/java/data/event/FriendCircleNotChangedEvent.java new file mode 100755 index 0000000..8d2ae66 --- /dev/null +++ b/src/main/java/data/event/FriendCircleNotChangedEvent.java @@ -0,0 +1,14 @@ +package data.event; + +/** + * Created by iran on 2015-07-27. + */ +public class FriendCircleNotChangedEvent { + public String circleID; + public String friendId; + + public FriendCircleNotChangedEvent(String circleID, String friendId) { + this.circleID = circleID; + this.friendId = friendId; + } +} diff --git a/src/main/java/data/event/IdentifiableEvent.java b/src/main/java/data/event/IdentifiableEvent.java new file mode 100755 index 0000000..6f45cdc --- /dev/null +++ b/src/main/java/data/event/IdentifiableEvent.java @@ -0,0 +1,10 @@ +package data.event; + +/** + * Created by iran on 2015-08-22. + */ +public class IdentifiableEvent extends BaseEvent { + public IdentifiableEvent(ReceiverName receiverName){ + this.receiverName = receiverName; + } +} diff --git a/src/main/java/data/event/InterestsReceivedEvent.java b/src/main/java/data/event/InterestsReceivedEvent.java new file mode 100755 index 0000000..a85c5af --- /dev/null +++ b/src/main/java/data/event/InterestsReceivedEvent.java @@ -0,0 +1,20 @@ +package data.event; + +import java.util.List; + +/** + * Created by iran on 2015-09-08. + */ +public class InterestsReceivedEvent { + public String superInterestID; + public List interests; + + public InterestsReceivedEvent(List interests) { + this.interests = interests; + } + + public InterestsReceivedEvent(List interests, String superInterestID) { + this.interests = interests; + this.superInterestID = superInterestID; + } +} diff --git a/src/main/java/data/event/InviteUsedEvent.java b/src/main/java/data/event/InviteUsedEvent.java new file mode 100755 index 0000000..cb9e6c8 --- /dev/null +++ b/src/main/java/data/event/InviteUsedEvent.java @@ -0,0 +1,7 @@ +package data.event; + +/** + * Created by iran on 11/25/2015. + */ +public class InviteUsedEvent extends BaseEvent{ +} diff --git a/src/main/java/data/event/LoadingImagedFailedEvent.java b/src/main/java/data/event/LoadingImagedFailedEvent.java new file mode 100755 index 0000000..ad877e8 --- /dev/null +++ b/src/main/java/data/event/LoadingImagedFailedEvent.java @@ -0,0 +1,7 @@ +package data.event; + +/** + * Created by iran on 2015-10-14. + */ +public class LoadingImagedFailedEvent { +} diff --git a/src/main/java/data/event/LoginFailedEvent.java b/src/main/java/data/event/LoginFailedEvent.java new file mode 100755 index 0000000..c7c607e --- /dev/null +++ b/src/main/java/data/event/LoginFailedEvent.java @@ -0,0 +1,17 @@ +package data.event; + +import com.google.gson.JsonObject; + +/** + * Created by iran on 2015-08-24. + */ +public class LoginFailedEvent { + public int code; + public JsonObject dataJson; + public String error; + + public LoginFailedEvent(int code, JsonObject dataJson) { + this.code = code; + this.dataJson = dataJson; + } +} diff --git a/src/main/java/data/event/LoginSucceedEvent.java b/src/main/java/data/event/LoginSucceedEvent.java new file mode 100755 index 0000000..b6f7fcd --- /dev/null +++ b/src/main/java/data/event/LoginSucceedEvent.java @@ -0,0 +1,7 @@ +package data.event; + +/** + * Created by iran on 2015-08-24. + */ +public class LoginSucceedEvent { +} diff --git a/src/main/java/data/event/MemberFollowersEvent.java b/src/main/java/data/event/MemberFollowersEvent.java new file mode 100755 index 0000000..de1aee9 --- /dev/null +++ b/src/main/java/data/event/MemberFollowersEvent.java @@ -0,0 +1,16 @@ +package data.event; + +import java.util.List; + +import data.model.Member; + +/** + * Created by iran on 2015-07-27. + */ +public class MemberFollowersEvent { + public MemberFollowersEvent(List members, String bookmark) { + this.members = members; + } + + public List members; +} diff --git a/src/main/java/data/event/MemberPostsEvent.java b/src/main/java/data/event/MemberPostsEvent.java new file mode 100755 index 0000000..8db60c7 --- /dev/null +++ b/src/main/java/data/event/MemberPostsEvent.java @@ -0,0 +1,16 @@ +package data.event; + +import java.util.List; + +import data.model.Post; + +/** + * Created by iran on 2015-07-27. + */ +public class MemberPostsEvent { + public List posts; + + public MemberPostsEvent(List posts) { + this.posts = posts; + } +} diff --git a/src/main/java/data/event/MemberReceivedEvent.java b/src/main/java/data/event/MemberReceivedEvent.java new file mode 100755 index 0000000..df62ae3 --- /dev/null +++ b/src/main/java/data/event/MemberReceivedEvent.java @@ -0,0 +1,14 @@ +package data.event; + +import data.model.Member; + +/** + * Created by AlirezaF on 7/22/2015. + */ +public class MemberReceivedEvent extends BaseEvent{ + public Member member; + + public MemberReceivedEvent(Member member) { + this.member = member; + } +} diff --git a/src/main/java/data/event/MembersReceivedEvent.java b/src/main/java/data/event/MembersReceivedEvent.java new file mode 100755 index 0000000..2b5ff0b --- /dev/null +++ b/src/main/java/data/event/MembersReceivedEvent.java @@ -0,0 +1,21 @@ +package data.event; + +import java.util.List; + +import data.model.Member; + +/** + * Created by iran on 2015-07-27. + */ +public class MembersReceivedEvent extends BaseEvent{// extends IdentifiableEvent{ + + public List members; + public String bookmark; + + public MembersReceivedEvent(List members, String bookmark) { + //super(receiverTag); + + this.members = members; + this.bookmark = bookmark; + } +} diff --git a/src/main/java/data/event/ModelCreatedEvent.java b/src/main/java/data/event/ModelCreatedEvent.java new file mode 100755 index 0000000..3068bdb --- /dev/null +++ b/src/main/java/data/event/ModelCreatedEvent.java @@ -0,0 +1,12 @@ +package data.event; + +import com.raizlabs.android.dbflow.structure.BaseModel; + +/** + * Created by iran on 2015-09-27. + */ +public class ModelCreatedEvent extends data.event.ModelEvent { + public ModelCreatedEvent(BaseModel model) { + super(model); + } +} diff --git a/src/main/java/data/event/ModelDeletedEvent.java b/src/main/java/data/event/ModelDeletedEvent.java new file mode 100755 index 0000000..d4da103 --- /dev/null +++ b/src/main/java/data/event/ModelDeletedEvent.java @@ -0,0 +1,11 @@ +package data.event; + +import com.raizlabs.android.dbflow.structure.BaseModel; +/** + * Created by iran on 2015-09-27. + */ +public class ModelDeletedEvent extends ModelEvent{ + public ModelDeletedEvent(BaseModel model) { + super(model); + } +} diff --git a/src/main/java/data/event/ModelEvent.java b/src/main/java/data/event/ModelEvent.java new file mode 100755 index 0000000..4c6b3ca --- /dev/null +++ b/src/main/java/data/event/ModelEvent.java @@ -0,0 +1,14 @@ +package data.event; + +import com.raizlabs.android.dbflow.structure.BaseModel; + +/** + * Created by iran on 2015-09-27. + */ +public abstract class ModelEvent { + public BaseModel model; + + public ModelEvent(BaseModel model) { + this.model = model; + } +} diff --git a/src/main/java/data/event/ModelUpdatedEvent.java b/src/main/java/data/event/ModelUpdatedEvent.java new file mode 100755 index 0000000..6464cbc --- /dev/null +++ b/src/main/java/data/event/ModelUpdatedEvent.java @@ -0,0 +1,12 @@ +package data.event; + +import com.raizlabs.android.dbflow.structure.BaseModel; + +/** + * Created by iran on 2015-09-27. + */ +public class ModelUpdatedEvent extends data.event.ModelEvent { + public ModelUpdatedEvent(BaseModel model) { + super(model); + } +} diff --git a/src/main/java/data/event/MyFrameReceivedEvent.java b/src/main/java/data/event/MyFrameReceivedEvent.java new file mode 100755 index 0000000..5032fca --- /dev/null +++ b/src/main/java/data/event/MyFrameReceivedEvent.java @@ -0,0 +1,14 @@ +package data.event; + +import java.util.List; + +/** + * Created by iran on 2015-08-01. + */ +public class MyFrameReceivedEvent { + public List frames; + + public MyFrameReceivedEvent(List frames) { + this.frames = frames; + } +} diff --git a/src/main/java/data/event/MyFriendshipRequestsEvent.java b/src/main/java/data/event/MyFriendshipRequestsEvent.java new file mode 100755 index 0000000..e283084 --- /dev/null +++ b/src/main/java/data/event/MyFriendshipRequestsEvent.java @@ -0,0 +1,19 @@ +package data.event; + + +import java.util.List; + +import data.model.InvitationNotif; + +/** + * Created by iran on 2015-08-15. + */ +public class MyFriendshipRequestsEvent extends BaseEvent { + public List data; + public String bookmark; + + public MyFriendshipRequestsEvent(List data, String bookmark) { + this.data = data; + this.bookmark = bookmark; + } +} diff --git a/src/main/java/data/event/MyInfoReceivedEvent.java b/src/main/java/data/event/MyInfoReceivedEvent.java new file mode 100755 index 0000000..7147d4c --- /dev/null +++ b/src/main/java/data/event/MyInfoReceivedEvent.java @@ -0,0 +1,23 @@ +package data.event; + + +import data.model.Member; + +/** + * Created by iran on 2015-07-27. + */ +public class MyInfoReceivedEvent extends BaseEvent { + public Member me; + public boolean fromCache; + public MY_INFO_TYPE type; + + public enum MY_INFO_TYPE{ + LOAD, UPDATE, VERIFY + } + + public MyInfoReceivedEvent(Member me, boolean fromCache, MY_INFO_TYPE type) { + this.me = me; + this.fromCache = fromCache; + this.type = type; + } +} diff --git a/src/main/java/data/event/NotificationSettingsReceived.java b/src/main/java/data/event/NotificationSettingsReceived.java new file mode 100755 index 0000000..8231716 --- /dev/null +++ b/src/main/java/data/event/NotificationSettingsReceived.java @@ -0,0 +1,18 @@ +package data.event; + + +import java.util.List; + +import data.model.OnOffSetting; + +/** + * Created by iran on 2015-09-07. + */ +public class NotificationSettingsReceived { + public List notificationSettings; + + public NotificationSettingsReceived(List notificationSettings) { + + this.notificationSettings = notificationSettings; + } +} diff --git a/src/main/java/data/event/NotificationSettingsReceivedEvent.java b/src/main/java/data/event/NotificationSettingsReceivedEvent.java new file mode 100755 index 0000000..98ddd3a --- /dev/null +++ b/src/main/java/data/event/NotificationSettingsReceivedEvent.java @@ -0,0 +1,17 @@ +package data.event; + +import java.util.List; + +import data.model.OnOffSetting; + +/** + * Created by iran on 2015-09-07. + */ +public class NotificationSettingsReceivedEvent extends BaseEvent{ + public List notificationSettings; + + public NotificationSettingsReceivedEvent(List notificationSettings) { + + this.notificationSettings = notificationSettings; + } +} diff --git a/src/main/java/data/event/PostReceivedEvent.java b/src/main/java/data/event/PostReceivedEvent.java new file mode 100755 index 0000000..15f8488 --- /dev/null +++ b/src/main/java/data/event/PostReceivedEvent.java @@ -0,0 +1,18 @@ +package data.event; + +/** + * Created by AlirezaF on 7/22/2015. + */ +public class PostReceivedEvent extends data.event.BaseEvent { + public int requestId; + public data.model.Post post; + + public PostReceivedEvent(data.model.Post post) { + this.post = post; + } + + public PostReceivedEvent(data.model.Post post, int requestId) { + this(post); + this.requestId = requestId; + } +} diff --git a/src/main/java/data/event/PostsReceivedEvent.java b/src/main/java/data/event/PostsReceivedEvent.java new file mode 100755 index 0000000..360fc70 --- /dev/null +++ b/src/main/java/data/event/PostsReceivedEvent.java @@ -0,0 +1,25 @@ +package data.event; + +import java.util.List; + +import data.model.Post; + +/** + * Created by iran on 2015-07-27. + */ +public class PostsReceivedEvent extends IdentifiableEvent{ + public List posts; + public String bookmark; + public int requestId; + + public PostsReceivedEvent(List posts, String bookmark, ReceiverName receiverName, int requestId) { + this(posts, bookmark, receiverName); + this.requestId = requestId; + } + + public PostsReceivedEvent(List posts, String bookmark, ReceiverName receiverName) { + super(receiverName); + this.posts = posts; + this.bookmark = bookmark; + } +} diff --git a/src/main/java/data/event/ProfileDirtyEvent.java b/src/main/java/data/event/ProfileDirtyEvent.java new file mode 100755 index 0000000..8f82729 --- /dev/null +++ b/src/main/java/data/event/ProfileDirtyEvent.java @@ -0,0 +1,7 @@ +package data.event; + +/** + * Created by iran on 2015-10-13. + */ +public class ProfileDirtyEvent { +} diff --git a/src/main/java/data/event/ProfileSettingReceivedEvent.java b/src/main/java/data/event/ProfileSettingReceivedEvent.java new file mode 100755 index 0000000..d645bbd --- /dev/null +++ b/src/main/java/data/event/ProfileSettingReceivedEvent.java @@ -0,0 +1,14 @@ +package data.event; + +import data.model.Member; + +/** + * Created by iran on 2015-07-29. + */ +public class ProfileSettingReceivedEvent { + public ProfileSettingReceivedEvent(Member member) { + this.member = member; + } + + public Member member; +} diff --git a/src/main/java/data/event/RegisterResponseEvent.java b/src/main/java/data/event/RegisterResponseEvent.java new file mode 100755 index 0000000..be815d1 --- /dev/null +++ b/src/main/java/data/event/RegisterResponseEvent.java @@ -0,0 +1,22 @@ +package data.event; + +/** + * Created by AlirezaF on 12/7/2015. + */ +public class RegisterResponseEvent extends BaseEvent { + public static final int DUPLICATE_USERNAME = 1; + public static final int USED_VERIFICATION_CODE = 2; + + public RegisterResponseEvent(boolean successful) { + this.successful = successful; + } + + public boolean successful; + public int errorCode; + + public RegisterResponseEvent(boolean successful, int errorCode) { + + this.successful = successful; + this.errorCode = errorCode; + } +} diff --git a/src/main/java/data/event/RemainedInvitesEvent.java b/src/main/java/data/event/RemainedInvitesEvent.java new file mode 100755 index 0000000..6565cda --- /dev/null +++ b/src/main/java/data/event/RemainedInvitesEvent.java @@ -0,0 +1,12 @@ +package data.event; + +/** + * Created by iran on 2015-10-01. + */ +public class RemainedInvitesEvent { + public int remained; + + public RemainedInvitesEvent(int remained) { + this.remained = remained; + } +} diff --git a/src/main/java/data/event/SearchCollectionEvent.java b/src/main/java/data/event/SearchCollectionEvent.java new file mode 100755 index 0000000..b5ff9c4 --- /dev/null +++ b/src/main/java/data/event/SearchCollectionEvent.java @@ -0,0 +1,28 @@ +package data.event; +import java.util.List; + +import data.model.Collection; + +/** + * Created by iran on 2015-07-07. + */ +public class SearchCollectionEvent { + private final int statusCode; + List data; + public SearchCollectionEvent(List data) { + this.data = data; + statusCode=200; + } + + public SearchCollectionEvent(int statusCode) { + this.statusCode = statusCode; + } + + public List getData(){ + return data; + } + + public int getStatusCode(){ + return statusCode; + } +} diff --git a/src/main/java/data/event/SearchMemberEvent.java b/src/main/java/data/event/SearchMemberEvent.java new file mode 100755 index 0000000..4b8e522 --- /dev/null +++ b/src/main/java/data/event/SearchMemberEvent.java @@ -0,0 +1,29 @@ +package data.event; + +import java.util.List; + +import data.model.Member; + +/** + * Created by iran on 2015-07-07. + */ +public class SearchMemberEvent { + private int statusCode; + List data; + public SearchMemberEvent(List posts) { + this.data = posts; + statusCode=200; + } + + public SearchMemberEvent(int statusCode) { + this.statusCode = statusCode; + } + + public List getData(){ + return data; + } + + public int getStatusCode(){ + return statusCode; + } +} diff --git a/src/main/java/data/event/SearchPostEvent.java b/src/main/java/data/event/SearchPostEvent.java new file mode 100755 index 0000000..e205454 --- /dev/null +++ b/src/main/java/data/event/SearchPostEvent.java @@ -0,0 +1,27 @@ +package data.event; + +import java.util.List; + +/** + * Created by iran on 2015-07-07. + */ +public class SearchPostEvent { + private int statusCode; + List data; + public SearchPostEvent(List posts) { + this.data = posts; + statusCode=200; + } + + public SearchPostEvent(int statusCode) { + this.statusCode = statusCode; + } + + public List getData(){ + return data; + } + + public int getStatusCode(){ + return statusCode; + } +} diff --git a/src/main/java/data/event/ServerResponseEvent.java b/src/main/java/data/event/ServerResponseEvent.java new file mode 100755 index 0000000..1364355 --- /dev/null +++ b/src/main/java/data/event/ServerResponseEvent.java @@ -0,0 +1,21 @@ +package data.event; + +/** + * Created by iran on 2015-10-04. + */ +public class ServerResponseEvent extends data.event.BaseEvent { + public int errorCode; + + public ServerResponseEvent(boolean succeed, ReceiverName receiverName) { + super(receiverName); + this.succeed = succeed; + } + public boolean succeed; + + public ServerResponseEvent(boolean succeed, ReceiverName receiverName, int errorCode) { + + this.succeed = succeed; + this.receiverName = receiverName; + this.errorCode = errorCode; + } +} diff --git a/src/main/java/data/event/StringsReceivedEvent.java b/src/main/java/data/event/StringsReceivedEvent.java new file mode 100755 index 0000000..98f0c81 --- /dev/null +++ b/src/main/java/data/event/StringsReceivedEvent.java @@ -0,0 +1,14 @@ +package data.event; + +import java.util.List; + +/** + * Created by iran on 2015-10-10. + */ +public class StringsReceivedEvent { + public List strings; + + public StringsReceivedEvent(List strings) { + this.strings = strings; + } +} diff --git a/src/main/java/data/event/SuggestedWebpagePostReceived.java b/src/main/java/data/event/SuggestedWebpagePostReceived.java new file mode 100755 index 0000000..ab06b03 --- /dev/null +++ b/src/main/java/data/event/SuggestedWebpagePostReceived.java @@ -0,0 +1,15 @@ +package data.event; + +import data.model.SuggestedWebPagePost; + +/** + * Created by AlirezaF on 10/15/2015. + */ +public class SuggestedWebpagePostReceived extends data.event.BaseEvent { + public SuggestedWebPagePost webpagePost; + + public SuggestedWebpagePostReceived(SuggestedWebPagePost webpagePost) { + + this.webpagePost = webpagePost; + } +} diff --git a/src/main/java/data/event/SystemPreferencesReceivedEvent.java b/src/main/java/data/event/SystemPreferencesReceivedEvent.java new file mode 100755 index 0000000..44711bb --- /dev/null +++ b/src/main/java/data/event/SystemPreferencesReceivedEvent.java @@ -0,0 +1,13 @@ +package data.event; + +/** + * Created by iran on 1/20/2016. + */ +public class SystemPreferencesReceivedEvent extends data.event.BaseEvent { + public data.model.SystemPreferences systemPreferences; + + public SystemPreferencesReceivedEvent(data.model.SystemPreferences systemPreferences) { + + this.systemPreferences = systemPreferences; + } +} diff --git a/src/main/java/data/event/TopicsReceivedEvent.java b/src/main/java/data/event/TopicsReceivedEvent.java new file mode 100755 index 0000000..2a2937c --- /dev/null +++ b/src/main/java/data/event/TopicsReceivedEvent.java @@ -0,0 +1,14 @@ +package data.event; + +import java.util.List; + +/** + * Created by iran on 2015-08-26. + */ +public class TopicsReceivedEvent extends data.event.BaseEvent { + public List data; + + public TopicsReceivedEvent(List data) { + this.data = data; + } +} diff --git a/src/main/java/data/event/UndoFavePostEvent.java b/src/main/java/data/event/UndoFavePostEvent.java new file mode 100755 index 0000000..4096a6e --- /dev/null +++ b/src/main/java/data/event/UndoFavePostEvent.java @@ -0,0 +1,7 @@ +package data.event; + +/** + * Created by iran on 2015-07-23. + */ +public class UndoFavePostEvent { +} diff --git a/src/main/java/data/event/UndoUnfavePostEvent.java b/src/main/java/data/event/UndoUnfavePostEvent.java new file mode 100755 index 0000000..7d66516 --- /dev/null +++ b/src/main/java/data/event/UndoUnfavePostEvent.java @@ -0,0 +1,7 @@ +package data.event; + +/** + * Created by iran on 2015-07-23. + */ +public class UndoUnfavePostEvent { +} diff --git a/src/main/java/data/event/UpdateProfileSettingResponse.java b/src/main/java/data/event/UpdateProfileSettingResponse.java new file mode 100755 index 0000000..40d0473 --- /dev/null +++ b/src/main/java/data/event/UpdateProfileSettingResponse.java @@ -0,0 +1,20 @@ +package data.event; + +import com.shaya.poinila.android.presentation.view.activity.SettingActivity; + +/** + * Created by iran on 1/11/2016. + */ +public class UpdateProfileSettingResponse extends BaseEvent { + public boolean success; + public SettingActivity.SettingType settingType; + + public UpdateProfileSettingResponse(boolean success) { + this.success = success; + } + + public UpdateProfileSettingResponse(boolean success, SettingActivity.SettingType settingType) { + this.success = success; + this.settingType = settingType; + } +} diff --git a/src/main/java/data/event/UserInterestsReceivedEvent.java b/src/main/java/data/event/UserInterestsReceivedEvent.java new file mode 100755 index 0000000..6f204a4 --- /dev/null +++ b/src/main/java/data/event/UserInterestsReceivedEvent.java @@ -0,0 +1,16 @@ +package data.event; + +import java.util.List; + +import data.model.ImageTag; + +/** + * Created by iran on 2015-09-08. + */ +public class UserInterestsReceivedEvent extends BaseEvent{ + public List userInterests; + + public UserInterestsReceivedEvent(List userInterests) { + this.userInterests = userInterests; + } +} diff --git a/src/main/java/data/event/UserNameValidityEvent.java b/src/main/java/data/event/UserNameValidityEvent.java new file mode 100755 index 0000000..b680bde --- /dev/null +++ b/src/main/java/data/event/UserNameValidityEvent.java @@ -0,0 +1,23 @@ +package data.event; + +/** + * Created by iran on 12/14/2015. + */ +public class UserNameValidityEvent { + public static final int DUPLICATE = 1; + public static final int RESERVED = 2; + public static final int RULE = 3; + public static final int LENGTH = 4; + public boolean success; + public final int error; + + public UserNameValidityEvent(int error) { + this.error = error; + } + + public UserNameValidityEvent(boolean success, int error) { + + this.success = success; + this.error = error; + } +} diff --git a/src/main/java/data/event/VerificationRequestResponse.java b/src/main/java/data/event/VerificationRequestResponse.java new file mode 100755 index 0000000..1890f9f --- /dev/null +++ b/src/main/java/data/event/VerificationRequestResponse.java @@ -0,0 +1,41 @@ +package data.event; + + +/** + * Created by AlirezaF on 12/7/2015. + */ +public class VerificationRequestResponse extends data.event.BaseEvent { + public boolean succeed; + public int code; + public String errorExplanation; + public boolean byEmail; + public String emailOrPhone; + + public VerificationRequestResponse(boolean succeed, boolean byEmail, String emailOrPhone) { + this(succeed, null); + this.byEmail = byEmail; + this.emailOrPhone = emailOrPhone; + } + + public VerificationRequestResponse(boolean succeed, String errorExplanation) { + this.succeed = succeed; + this.errorExplanation = errorExplanation; + } + + public VerificationRequestResponse(boolean succeed) { + this(succeed, null); + } + + public VerificationRequestResponse(boolean succeed, int code) { + this.succeed = succeed; + this.code = code; + } + /*public VerificationRequestSentEvent(String code) { + Code = code; + } + + public VerificationRequestSentEvent() { + } + + public String Code;*/ +} diff --git a/src/main/java/data/exception/AuthorizationException.java b/src/main/java/data/exception/AuthorizationException.java new file mode 100755 index 0000000..6cc43c6 --- /dev/null +++ b/src/main/java/data/exception/AuthorizationException.java @@ -0,0 +1,7 @@ +package data.exception; + +/** + * Created by iran on 2015-10-01. + */ +public class AuthorizationException extends RuntimeException { +} diff --git a/src/main/java/data/model/Circle.java b/src/main/java/data/model/Circle.java new file mode 100755 index 0000000..91d01fa --- /dev/null +++ b/src/main/java/data/model/Circle.java @@ -0,0 +1,59 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; +import com.raizlabs.android.dbflow.annotation.Column; +import com.raizlabs.android.dbflow.annotation.PrimaryKey; +import com.raizlabs.android.dbflow.annotation.Table; +import com.raizlabs.android.dbflow.structure.BaseModel; +import org.parceler.Parcel; +import org.parceler.ParcelConverter; + +import data.database.PoinilaDataBase; + +/** + * Created by iran on 2015-07-20. + */ +@Parcel(analyze= Circle.class) +@Table(database = PoinilaDataBase.class) +public class Circle extends BaseModel implements Identifiable { + public Circle() { + } + + public Circle(int id, String name) { + this.id = id; + this.name = name; + } + + @Column + @PrimaryKey + public int id; + + @Column + public String name; + + @Column + @SerializedName(value = "is_default") + public DefaultType defaultType; + + @Override + public String getId() { + return String.valueOf(id); + } + + /* @Override + public Circle getModel() { + return getModelFromJson(Circle.class); + }*/ + + // used in edit friend circles we must show which circles the friend is already assigned. + public transient boolean selected = false; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Circle circle = (Circle) o; + return id == circle.id; + } + +} diff --git a/src/main/java/data/model/Collection.java b/src/main/java/data/model/Collection.java new file mode 100755 index 0000000..65366f9 --- /dev/null +++ b/src/main/java/data/model/Collection.java @@ -0,0 +1,84 @@ +package data.model; + + +import com.google.gson.annotations.SerializedName; +import com.raizlabs.android.dbflow.annotation.Column; +import com.raizlabs.android.dbflow.annotation.PrimaryKey; +import com.raizlabs.android.dbflow.annotation.Table; + +import org.parceler.Parcel; +import org.parceler.ParcelConverter; +import org.parceler.Parcels; +import org.parceler.TypeRangeParcelConverter; + +import java.util.Date; +import java.util.List; + +/** + * @author Alireza Farahani + * Created by iran on 2015-06-10. + */ +@Parcel(analyze=Collection.class) +@Table(database = data.database.PoinilaDataBase.class) +public class Collection extends data.database.PoinilaDataBase.PoinilaDBModel implements data.model.Identifiable { + + // Invisible Fields + @Column + @PrimaryKey + public int id; + + // Visible Fields + @Column + public String name; + public data.model.Member owner; + public data.model.PrivacyType privacy; + public String description; + // har collection hatman ye topic dare ke moghe + // sakht azash miporsim va editable'e + public Tag topic; + + @SerializedName(value = "last_post_creation_time") public Date lastPostCreationTime; + @SerializedName(value = "like_count") public int totalLikeCount; + @SerializedName(value = "comment_count") public int totalCommentCount; + @SerializedName(value = "repost_count") public int totalRepostCount; + @SerializedName(value = "follow_count") public int followerCount; + @SerializedName(value = "post_count") public int postCount; + @SerializedName(value = "followed_by_me") public boolean followedByMe; + @SerializedName(value = "images") public data.model.ImageUrls coverImageUrls; + @SerializedName(value = "first_post_images") public data.model.ImageUrls image1Url; + @SerializedName(value = "second_post_images") public data.model.ImageUrls image2Url; + @SerializedName(value = "third_post_images") public data.model.ImageUrls image3Url; + @SerializedName(value = "frame_ids") public List frameIDs; + @SerializedName(value = "unseen_posts_count") public int unseenPostsCount; + // TODO: az koja miad. felan tu api nist + @SerializedName(value = "circle_ids") public List circleIDs; + + // used in frame management. + public transient boolean selected = false; + + @Override + public Collection getModel() { + return getModelFromJson(Collection.class); + } + + @Override + public String getId() { + return String.valueOf(id); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Collection that = (Collection) o; + return id == that.id; + } + + public String getOriginalCoverUrl() { + if (coverImageUrls == null) return null; + Image image = coverImageUrls.properCollectionImage(data.model.ImageUrls.ImageSize.BIG); + return (image != null) ? image.url : null; + } + +} diff --git a/src/main/java/data/model/Comment.java b/src/main/java/data/model/Comment.java new file mode 100755 index 0000000..cf35d8c --- /dev/null +++ b/src/main/java/data/model/Comment.java @@ -0,0 +1,39 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; +import com.raizlabs.android.dbflow.annotation.Column; +import com.raizlabs.android.dbflow.annotation.PrimaryKey; +import com.raizlabs.android.dbflow.annotation.Table; +import com.raizlabs.android.dbflow.structure.BaseModel; +import com.shaya.poinila.android.util.PoinilaPreferences; + +import org.parceler.Parcel; + +import java.util.Date; + +import data.database.PoinilaDataBase; + +/** + * Created by iran on 2015-06-25. + */ +@Parcel(analyze= Comment.class) +@Table(database = PoinilaDataBase.class) +public class Comment extends BaseModel implements Identifiable { + @Column + @PrimaryKey + public int id; + public String content; + @SerializedName(value = "creation_time") public Date creationDate; + // last_update_time + @SerializedName(value = "is_deletable") public boolean deletable; + public Member commenter; + + @Override + public String getId() { + return String.valueOf(id); + } + + public boolean isDeletable() { + return commenter.getId().equals(PoinilaPreferences.getMyId()); + } +} diff --git a/src/main/java/data/model/Content.java b/src/main/java/data/model/Content.java new file mode 100755 index 0000000..21d06b4 --- /dev/null +++ b/src/main/java/data/model/Content.java @@ -0,0 +1,41 @@ +package data.model; + +import com.raizlabs.android.dbflow.annotation.Column; +import com.raizlabs.android.dbflow.annotation.PrimaryKey; +import com.raizlabs.android.dbflow.annotation.Table; +import com.raizlabs.android.dbflow.structure.BaseModel; + +/** + * Created by iran on 2015-07-03. + */ +@Table(database = data.database.PoinilaDataBase.class) +public class Content extends BaseModel implements data.model.Identifiable { + public Content(String url) { + this.url = url; + } + + public Content(){} + + public Content(String url, String text) { + this.url = url; + this.text = text; + } + + @Column(name = "id") + @PrimaryKey + public String url; + + @Column + public String text; + + /* public Content(String url, Spanned text) { + this.url = url; + this.text = text.toString(); + }*/ + + + @Override + public String getId() { + return url; + } +} diff --git a/src/main/java/data/model/DefaultType.java b/src/main/java/data/model/DefaultType.java new file mode 100755 index 0000000..c46978c --- /dev/null +++ b/src/main/java/data/model/DefaultType.java @@ -0,0 +1,13 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +/** + * Created by iran on 2015-09-30. + */ +public enum DefaultType { + @SerializedName("default") + DEFAULT, + @SerializedName("not_default") + NOT_DEFAULT, +} diff --git a/src/main/java/data/model/Frame.java b/src/main/java/data/model/Frame.java new file mode 100755 index 0000000..1b139b2 --- /dev/null +++ b/src/main/java/data/model/Frame.java @@ -0,0 +1,56 @@ +package data.model; + +import com.raizlabs.android.dbflow.annotation.Column; +import com.raizlabs.android.dbflow.annotation.PrimaryKey; +import com.raizlabs.android.dbflow.annotation.Table; +import com.raizlabs.android.dbflow.structure.BaseModel; + +import org.parceler.Parcel; +import org.parceler.ParcelConverter; + +/** + * Created by iran on 2015-07-28. + */ +@Parcel(analyze=Frame.class) +@Table(database = data.database.PoinilaDataBase.class) +public class Frame extends BaseModel implements data.model.Identifiable { + public Frame() { + } + + public Frame(int id, String name) { + this.id = id; + this.name = name; + } + @Column + @PrimaryKey + public int id; + @Column + public String name; + + @Override + public String toString() { + return name; + } + + @Override + public String getId() { + return String.valueOf(id); + } + + public static class ModelConverter implements ParcelConverter { + @Override + public void toParcel(Frame frame, android.os.Parcel parcel) { + + } + + @Override + public Frame fromParcel(android.os.Parcel parcel) { + return null; + } + } + + /* @Override + public Frame getModel() { + return getModelFromJson(Frame.class); + }*/ +} diff --git a/src/main/java/data/model/FriendRequestAnswer.java b/src/main/java/data/model/FriendRequestAnswer.java new file mode 100755 index 0000000..d1455d6 --- /dev/null +++ b/src/main/java/data/model/FriendRequestAnswer.java @@ -0,0 +1,18 @@ +package data.model; + +/** + * Created by iran on 2015-07-20. + */ +public enum FriendRequestAnswer { + ACCEPT ("accept"), + REJECT ("reject"); + + + private final String answer; + FriendRequestAnswer(String answer) { + this.answer = answer; + } + public String getAnswer(){ + return answer; + } +} diff --git a/src/main/java/data/model/FriendshipNotif.java b/src/main/java/data/model/FriendshipNotif.java new file mode 100755 index 0000000..d3cf4e6 --- /dev/null +++ b/src/main/java/data/model/FriendshipNotif.java @@ -0,0 +1,22 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +import java.util.Date; + +/** + * Created by iran on 2015-08-16. + */ +public class FriendshipNotif implements Timed { + public boolean seen; + @SerializedName(value = "creation_time") public Date creationTime; + + + + public Member member; + + @Override + public long getCreationTime() { + return 0; + } +} diff --git a/src/main/java/data/model/FriendshipStatus.java b/src/main/java/data/model/FriendshipStatus.java new file mode 100755 index 0000000..84516aa --- /dev/null +++ b/src/main/java/data/model/FriendshipStatus.java @@ -0,0 +1,14 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +/** + + * Created by iran on 2015-11-14. + */ +public enum FriendshipStatus { + @SerializedName("friend") IsFriend, + @SerializedName("not_friend") NotFriend, + @SerializedName("waiting_for_my_response") WaitingForAction, + @SerializedName("my_request_pending") Pending, +} diff --git a/src/main/java/data/model/Gender.java b/src/main/java/data/model/Gender.java new file mode 100755 index 0000000..3133866 --- /dev/null +++ b/src/main/java/data/model/Gender.java @@ -0,0 +1,13 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +/** + * Created by iran on 2015-07-20. + */ +public enum Gender { + @SerializedName(value = "female") + FEMALE, + @SerializedName(value = "male") + MALE +} diff --git a/src/main/java/data/model/Identifiable.java b/src/main/java/data/model/Identifiable.java new file mode 100755 index 0000000..19b8dbc --- /dev/null +++ b/src/main/java/data/model/Identifiable.java @@ -0,0 +1,8 @@ +package data.model; + +/** + * Created by iran on 2015-07-07. + */ +public interface Identifiable { + String getId(); +} diff --git a/src/main/java/data/model/Image.java b/src/main/java/data/model/Image.java new file mode 100755 index 0000000..012a3fb --- /dev/null +++ b/src/main/java/data/model/Image.java @@ -0,0 +1,24 @@ +package data.model; + +import org.parceler.Parcel; + +/** + * Created by iran on 2015-07-20. + */ +@Parcel +public class Image { + public Image(){} + public Image(String url){ + this.url = url; + } + + public String url; + public int width; + public int height; + + public Image(String url, int width, int height) { + this.url = url; + this.width = width; + this.height = height; + } +} diff --git a/src/main/java/data/model/ImageTag.java b/src/main/java/data/model/ImageTag.java new file mode 100755 index 0000000..4b05f98 --- /dev/null +++ b/src/main/java/data/model/ImageTag.java @@ -0,0 +1,19 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; +import com.raizlabs.android.dbflow.annotation.Table; + +import data.database.PoinilaDataBase; + +/** + * Created by iran on 2015-11-03. + */ +@Table(database = PoinilaDataBase.class) +public class ImageTag extends Tag{ + //TODO: DBFlow doesn't support inheritance for primary key field; it will be added in 3.0.0 release though + + @SerializedName("images") + public ImageUrls imageUrls; + + public ImageTag(){} +} diff --git a/src/main/java/data/model/ImageUrls.java b/src/main/java/data/model/ImageUrls.java new file mode 100755 index 0000000..921b0d6 --- /dev/null +++ b/src/main/java/data/model/ImageUrls.java @@ -0,0 +1,118 @@ +package data.model; + +import android.text.TextUtils; + +import com.google.gson.annotations.SerializedName; + +import org.parceler.Parcel; + +/** + * Created by iran on 2015-07-20. + */ +@Parcel +public class ImageUrls { + public long id; + + @SerializedName(value = "is_uploaded") public boolean uploaded; + @SerializedName(value = "1000x1000") public data.model.Image x1000square; + @SerializedName(value = "736x") public data.model.Image x736; // for post + public data.model.Image origin; + @SerializedName(value = "160x160") public data.model.Image x160square; + @SerializedName(value = "100x100") public data.model.Image x100square; + @SerializedName(value = "200x100") public data.model.Image interest; + @SerializedName(value = "236x") public data.model.Image x236; + @SerializedName(value = "60x60") public data.model.Image x60square; + @SerializedName(value = "75x75") public data.model.Image x75square; + @SerializedName(value = "40x40") public data.model.Image x40square; + @SerializedName("dominant_color") + public String dominantColor; + + + public data.model.Image properMemberImage(ImageSize imageSize) { + switch (imageSize){ + case AVATAR: + return x75square; + case BIG: + return x160square; + case FULL_SIZE: + return x1000square; + } + return x75square; + } + + public data.model.Image properCollectionImage(ImageSize imageSize) { + switch (imageSize){ + case AVATAR: + return x100square; + case BIG: + return x160square; + } + return x75square; + } + + public data.model.Image properPostImage(ImageSize imageSize) { + switch (imageSize){ + case AVATAR: + return x100square; + case BIG: + return x736; + case MEDIUM: + return x236; + case FULL_SIZE: + return origin; + } + return x75square; + } + + + public boolean isNotEmpty() { + data.model.Image[] images = new data.model.Image[]{x236, x75square, x160square, x100square, x60square, x40square, x736, interest}; + for (data.model.Image image : images){ + if (image != null) + return true; + } + return false; + } + + public static boolean hasValidUrl(ImageUrls imageUrls, ImageType imageType, ImageSize imageSize) { + if (imageUrls == null) return false; + data.model.Image image; + switch (imageType){ + case COLLECTION: + image = imageUrls.properCollectionImage(imageSize); + break; + case POST: + image = imageUrls.properPostImage(imageSize); + break; + case MEMBER: + image = imageUrls.properMemberImage(imageSize); + break; + case INTEREST: + image = imageUrls.interest; + break; + default: + image = null; + break; + } + return !(image == null || TextUtils.isEmpty(image.url)); + } + + public enum ImageType { + @SerializedName("collection") + COLLECTION, + @SerializedName("member") + MEMBER, + @SerializedName("post") + POST, + INTEREST + } + public enum ImageSize { + AVATAR, + /** + * only used for posts in dashboards + */ + MEDIUM, + BIG, + FULL_SIZE, + } +} diff --git a/src/main/java/data/model/InvitationNotif.java b/src/main/java/data/model/InvitationNotif.java new file mode 100755 index 0000000..d340e4b --- /dev/null +++ b/src/main/java/data/model/InvitationNotif.java @@ -0,0 +1,8 @@ +package data.model; + + +/** + * Created by iran on 2015-08-15. + */ +public class InvitationNotif extends FriendshipNotif { +} diff --git a/src/main/java/data/model/Loading.java b/src/main/java/data/model/Loading.java new file mode 100755 index 0000000..67722f6 --- /dev/null +++ b/src/main/java/data/model/Loading.java @@ -0,0 +1,10 @@ +package data.model; + +import com.raizlabs.android.dbflow.structure.BaseModel; + +/** + * Created by iran on 5/10/2016. + */ +public class Loading { + +} diff --git a/src/main/java/data/model/Member.java b/src/main/java/data/model/Member.java new file mode 100755 index 0000000..5fa0d88 --- /dev/null +++ b/src/main/java/data/model/Member.java @@ -0,0 +1,114 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; +import com.raizlabs.android.dbflow.annotation.Column; +import com.raizlabs.android.dbflow.annotation.PrimaryKey; +import com.raizlabs.android.dbflow.annotation.Table; +import com.shaya.poinila.android.util.JavaUtils; + +import org.parceler.Parcel; + +import java.util.List; + +/** + * Created by iran on 2015-06-23. + */ +@Parcel(analyze=Member.class) +@Table(database = data.database.PoinilaDataBase.class) +public class Member extends data.database.PoinilaDataBase.PoinilaDBModel implements data.model.Identifiable { + @Column + @PrimaryKey + public int id; + /*@SerializedName(value = "first_name") public String firstName; + @SerializedName(value = "last_name") public String lastName;*/ + public Gender gender; + @SerializedName("mobile_number") + public String mobileNumber; + public String email; + @SerializedName(value = "images") public data.model.ImageUrls imageUrls; + @SerializedName(value = "full_name") public String fullName; + @SerializedName(value = "unique_name") public String uniqueName; + @SerializedName(value = "description") public String aboutMe; + @SerializedName(value = "type") public data.model.MemberType memberType; + + //TODO: String khali bashe ya entity + public List interests; + @SerializedName(value = "circles") public List circles; // for offline use. + @SerializedName(value = "circle_ids") public List circle_ids; // what comes from server + @SerializedName(value = "frames") public List frames; + + // url website taraf + public String url; + // esme website + @SerializedName(value = "url_name") public String urlName; + //@SerializedName(value = "is_verified") public boolean verified; + + @SerializedName(value = "friend_count") public int friendsCount; + @SerializedName(value = "like_count") public int likesCount; + @SerializedName(value = "follower_count") public int followerCount; + @SerializedName(value = "post_count") public int postsCount; + + @SerializedName(value = "own_collections") public List owningCollections; + @SerializedName(value = "follow_collections") public List followingCollections; + @SerializedName(value = "own_collection_count") public int owningCollectionsCount; + @SerializedName(value = "following_collection_count") public int followingCollectionsCount; + + //@SerializedName(value = "is_friend") public boolean isFriend; + @SerializedName(value = "friendship_status") public data.model.FriendshipStatus friendshipStatus; + // public String siteFaviconUrl; + + // previously was false, but I think its wiser to assume user is anonymous firstly + @SerializedName("is_anonymous") public boolean isAnonymous = true; + + public transient boolean selected = false; + + @SerializedName(value = "email_verified") public boolean isEmailVerified = false; + @SerializedName(value = "mobile_verified") public boolean isMobileVerified = false; + @SerializedName(value = "set_password") public boolean isPassword = true; + + + + + public Member(){} + /** + * Works as cloning class instances. used in changing profile setting + * @param originalProfile + */ + public Member(Member originalProfile) { + fullName = originalProfile.fullName; + email = originalProfile.email; + mobileNumber = originalProfile.mobileNumber; + aboutMe = originalProfile.aboutMe; + //mobileNumber = originalProfile.mobileNumber; + urlName = originalProfile.urlName; + url = originalProfile.url; + //isActive = originalProfile.isActive; + } + + + @Override + public Member getModel() { + return getModelFromJson(Member.class); + } + + @Override + public String getId() { + return String.valueOf(id); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Member member = (Member) o; + + // based on what we need in profile setting + return JavaUtils.equal(this.fullName, member.fullName) && + JavaUtils.equal(this.email, member.email) && + JavaUtils.equal(this.mobileNumber, member.mobileNumber) && + JavaUtils.equal(this.aboutMe, member.aboutMe) && + JavaUtils.equal(this.urlName, member.urlName) && + JavaUtils.equal(this.url, member.url); + } + +} diff --git a/src/main/java/data/model/MemberType.java b/src/main/java/data/model/MemberType.java new file mode 100755 index 0000000..ef7f765 --- /dev/null +++ b/src/main/java/data/model/MemberType.java @@ -0,0 +1,32 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +/** + * Created by iranian on 6/25/2015. + */ +public enum MemberType { + @SerializedName(value = "entity") + Entity, + @SerializedName(value = "people") + People + +/* String code; + + + MemberType(String code) { + this.code = code; + } + + public static final MemberType findByCode(String code){ + if(code==null){ + return null; + } + for (MemberType memberType: MemberType.values()){ + if(memberType.code.equals(code)){ + return memberType; + } + } + return null; + }*/ +} diff --git a/src/main/java/data/model/Notification.java b/src/main/java/data/model/Notification.java new file mode 100755 index 0000000..89833df --- /dev/null +++ b/src/main/java/data/model/Notification.java @@ -0,0 +1,69 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +import java.util.Date; +import java.util.List; + +/** + * Created by iran on 2015-08-15. + */ +public class Notification { + + @SerializedName(value = "notifiable_action_type") public NotificationType type; + @SerializedName(value = "main_actor") public Participant mainActor; + public boolean seen; + public List participants; + // TODO: chera "last"?. mage update mishe? + @SerializedName(value = "last_creation_time") public Date lastCreationTime; + + public ImageUrls.ImageType getParticipantImageType() { + switch (type){ + case MY_POST_LIKED: + case MY_COLLECTION_FOLLOWED: + case COMMENT_MY_POST: + case MY_POST_REPOSTED: + case COMMENT_AFTER_YOUR_COMMENT: + case FRIENDSHIP_ACCEPTED: + return ImageUrls.ImageType.MEMBER; + + case FRIENDS_FOLLOWED_COLLECTIONS: + case FRIENDS_CREATED_COLLECTIONS: + return ImageUrls.ImageType.COLLECTION; + case FRIENDS_LIKED_POSTS: + return ImageUrls.ImageType.POST; + default: + return ImageUrls.ImageType.MEMBER; + } + + } + // for now its unused + // @SerializedName(value = "notification_view_type") public Date lastCreationTime; + + + + public enum NotificationType{ + /*-----My notifs-------*/ + @SerializedName(value = "other_like_own_post") + MY_POST_LIKED, + @SerializedName(value = "other_follow_own_collection") + MY_COLLECTION_FOLLOWED, + @SerializedName(value = "comment_on_own_post") + COMMENT_MY_POST, + @SerializedName(value = "repost_post") + MY_POST_REPOSTED, + @SerializedName(value = "comment_on_post_that_people_commented_on") + COMMENT_AFTER_YOUR_COMMENT, + @SerializedName(value = "accepted_friendship_invitation") + FRIENDSHIP_ACCEPTED, + + /*-----Other's Notifs-------*/ + @SerializedName(value = "friend_follow_other_collection") + FRIENDS_FOLLOWED_COLLECTIONS, + @SerializedName(value = "friend_create_collection") + FRIENDS_CREATED_COLLECTIONS, + @SerializedName(value = "friend_like_other_post") + FRIENDS_LIKED_POSTS, + + } +} diff --git a/src/main/java/data/model/OnOffSetting.java b/src/main/java/data/model/OnOffSetting.java new file mode 100755 index 0000000..329acbb --- /dev/null +++ b/src/main/java/data/model/OnOffSetting.java @@ -0,0 +1,27 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +/** + * Created by iran on 2015-09-07. + */ +public class OnOffSetting { + public static final int OFF = 0; + public static final int ON = 1; + @SerializedName("type_id") + public int typeID; + + public int value; // 0 for off and 1 for on + + public String name; + + public String code; + public transient boolean enabled = true; + + public void off(){ + value = OFF; + } + public void on(){ + value = ON; + } +} diff --git a/src/main/java/data/model/Participant.java b/src/main/java/data/model/Participant.java new file mode 100755 index 0000000..241a028 --- /dev/null +++ b/src/main/java/data/model/Participant.java @@ -0,0 +1,23 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +/** + * Created by iran on 2015-08-15. + */ +public class Participant implements data.model.Identifiable { + public int id; + @SerializedName(value = "images") public data.model.ImageUrls imageUrls; + @SerializedName(value = "type") public data.model.ImageUrls.ImageType type; + @SerializedName(value = "unique_name") + public String userName; // for member + @SerializedName(value = "name") + public String collectionName; // for collection + @SerializedName(value = "title") + public String postTitle; // post + + @Override + public String getId() { + return String.valueOf(id); + } +} diff --git a/src/main/java/data/model/PoinilaInvite.java b/src/main/java/data/model/PoinilaInvite.java new file mode 100755 index 0000000..37a9da4 --- /dev/null +++ b/src/main/java/data/model/PoinilaInvite.java @@ -0,0 +1,14 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +/** + * Created by iran on 2015-10-03. + */ +public class PoinilaInvite { + @SerializedName("email_used_invitation_count") + public int usedInvites; + + @SerializedName("email_invitation_limit") + public int limit; +} diff --git a/src/main/java/data/model/PoinilaResponse.java b/src/main/java/data/model/PoinilaResponse.java new file mode 100755 index 0000000..820c5aa --- /dev/null +++ b/src/main/java/data/model/PoinilaResponse.java @@ -0,0 +1,13 @@ +package data.model; + +/** + * Created by iran on 2015-07-07. + */ +public class PoinilaResponse { + public String bookmark; + public String message; + public String status; + public int code; + public String Authorization; + public T data; +} diff --git a/src/main/java/data/model/Post.java b/src/main/java/data/model/Post.java new file mode 100755 index 0000000..5ce985f --- /dev/null +++ b/src/main/java/data/model/Post.java @@ -0,0 +1,134 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; +import com.raizlabs.android.dbflow.annotation.Column; +import com.raizlabs.android.dbflow.annotation.ForeignKey; +import com.raizlabs.android.dbflow.annotation.PrimaryKey; +import com.raizlabs.android.dbflow.annotation.Table; + +import org.parceler.Parcel; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * Created by iran on 2015-06-16. + * Completely different with post in presentation module + * This class is only for testing purpose + */ +@Parcel(analyze=Post.class) +@Table(database = data.database.PoinilaDataBase.class) +public class Post extends data.database.PoinilaDataBase.PoinilaDBModel implements Timed, Identifiable { + + @Column + @PrimaryKey + public int id; + + @Column + @SerializedName(value = "creation_time") + public Date creationTime; + + // Visible Field + @SerializedName(value = "like_count") + public int faveCount; + + @SerializedName(value = "repost_count") + public int repostCount; + + @SerializedName(value = "comment_count") + public int commentCount; + + public List comments; + //@SerializedName(value = "last_update_time") public Date lastUpdateTime; + + @SerializedName(value = "is_repost") + public boolean isRepost; + + @SerializedName(value = "liked_by_me") + public boolean favedByMe; + + @SerializedName(value = "title") + public String name; + + @SerializedName(value = "caption") + public String summary; + // mese image bayad joda request zade she + // TODO:chizi ke server mide daghighan chie? processi lazeme in vasat? + //@SerializedName(value = "content_url") public Content contentUrl; + + @SerializedName(value = "content_url") + public String contentUrl; + + // only used in uploading a new post + public String content; + + // tag haye marbut be post + @SerializedName(value = "tags") + public List tags; + // TODO: enum? + + @SerializedName(value = "video_url") + public String videoUrl; + + @SerializedName(value = "type") + public PostType type; + + //TODO: remove after it moved to imagesUrls array + @SerializedName(value = "initial_img") + public String placeholder; + + @SerializedName(value = "images") + public data.model.ImageUrls imagesUrls; + + @SerializedName(value = "original_poster") + public Member originalAuthor; + + @SerializedName(value = "poster") + public Member author; + + @SerializedName(value = "original_collection") + public Collection originalCollection; + + public Collection collection; + /** + * the webpage this post is created from + */ + @SerializedName(value = "url") + public String originalWebpage; + + public PrivacyType privacy; + + public SuggestionReason reason; + + public Post() { + + } + + public Post(String name, String summary, String content, List tags) { + + this.name = name; + this.summary = summary; + this.content = content; + this.tags = new ArrayList<>(tags.size()); + for (String tagString : tags) { + this.tags.add(Tag.invalidIdTag(tagString)); + } + } + + @Override + public long getCreationTime() { + return creationTime.getTime(); + } + + @Override + public String getId() { + return String.valueOf(id); + } + + @Override + public Post getModel() { + return getModelFromJson(Post.class); + } + +} diff --git a/src/main/java/data/model/PostType.java b/src/main/java/data/model/PostType.java new file mode 100755 index 0000000..2e1b716 --- /dev/null +++ b/src/main/java/data/model/PostType.java @@ -0,0 +1,37 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +/** + * Created by iranian on 6/25/2015. + */ +public enum PostType { + @SerializedName(value = "img") + IMAGE, + @SerializedName(value = "text") + TEXT, + @SerializedName(value = "video") + VIDEO + + /* String code; + + PostType(String code) { + this.code = code; + } + + public String getCode() { + return code; + } + + public static final PostType findByCode(String code){ + if(code==null){ + return null; + } + for (PostType postType: PostType.values()){ + if(postType.code.equals(code)){ + return postType; + } + } + return null; + }*/ +} diff --git a/src/main/java/data/model/PrivacyType.java b/src/main/java/data/model/PrivacyType.java new file mode 100755 index 0000000..a32c28e --- /dev/null +++ b/src/main/java/data/model/PrivacyType.java @@ -0,0 +1,13 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +/** + * Created by iran on 2015-07-06. + */ +public enum PrivacyType { + @SerializedName(value = "public") + PUBLIC, + @SerializedName(value = "private") + PRIVATE +} diff --git a/src/main/java/data/model/SuggestedWebPagePost.java b/src/main/java/data/model/SuggestedWebPagePost.java new file mode 100755 index 0000000..b229f29 --- /dev/null +++ b/src/main/java/data/model/SuggestedWebPagePost.java @@ -0,0 +1,30 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +import org.parceler.Parcel; + +import java.util.List; + +/** + * Created by AlirezaF on 10/15/2015. + */ +@Parcel +public class SuggestedWebPagePost { + + /* fields directly filled with converter (GSON)*/ + @SerializedName(value = "title") + public String name; + @SerializedName(value = "caption") + public String summary; + public List tags; // comes from server in string format, what can I do? :( + public List images; + public String content; + + /* fields we must set by hand!*/ + public String imageAddress; + public String siteAddress; + + @SerializedName(value = "video") + public String videoAddress; +} diff --git a/src/main/java/data/model/SuggestionReason.java b/src/main/java/data/model/SuggestionReason.java new file mode 100755 index 0000000..ff5cfe4 --- /dev/null +++ b/src/main/java/data/model/SuggestionReason.java @@ -0,0 +1,15 @@ +package data.model; + +import com.google.gson.annotations.SerializedName; + +/** + * Created by iran on 12/15/2015. + */ +public enum SuggestionReason { + @SerializedName("picked_for_you") + PickedForYou, + @SerializedName("found_in_interest") + FoundInInterest, + @SerializedName("found_in_collection") + Following, +} diff --git a/src/main/java/data/model/SystemPreferences.java b/src/main/java/data/model/SystemPreferences.java new file mode 100755 index 0000000..70dcdfa --- /dev/null +++ b/src/main/java/data/model/SystemPreferences.java @@ -0,0 +1,46 @@ +package data.model; + +import android.net.Uri; + +import com.google.gson.annotations.SerializedName; + +import java.util.List; +import java.util.Set; + +/** + * Created by iran on 1/20/2016. + */ +public class SystemPreferences { + + @SerializedName("rating_market") + public MarketPackages rateDestinationMarket; + + @SerializedName("sms_provider_number") + public List smsProviderNumbers; + + + public enum MarketPackages { + @SerializedName("bazaar") + Bazaar("com.farsitel.bazaar", "bazaar://details?id="), + @SerializedName("myket") + Myket("ir.mservices.market", "myket://comment/#Intent;scheme=comment;package="), + @SerializedName("google_play") + GooglePlay("com.android.vending", "https://play.google.com/store/apps/details?id="); + + public static final String MARKET_ADDRESS_PREFIX = "market://details?id="; + public String packageName; + public String pageAddressPrefix; + + MarketPackages(String packageName, String pageAddressPrefix) { + this.packageName = packageName; + this.pageAddressPrefix = pageAddressPrefix; + } + + public Uri getUri() { + return Uri.parse(packageName); + } + } + + + +} diff --git a/src/main/java/data/model/Tag.java b/src/main/java/data/model/Tag.java new file mode 100755 index 0000000..9a8082a --- /dev/null +++ b/src/main/java/data/model/Tag.java @@ -0,0 +1,50 @@ +package data.model; + +import com.raizlabs.android.dbflow.annotation.Column; +import com.raizlabs.android.dbflow.annotation.PrimaryKey; +import com.raizlabs.android.dbflow.annotation.Table; +import com.raizlabs.android.dbflow.structure.BaseModel; + +import org.parceler.Parcel; +import org.parceler.ParcelConverter; + +/** + * Created by iran on 2015-07-03. + */ +@Parcel(analyze=Tag.class) +@Table(database = data.database.PoinilaDataBase.class) +public class Tag extends BaseModel implements data.model.Identifiable { + + @Column + @PrimaryKey + public int id; + + @Column + public String name; + + public transient boolean selected = false; + + public Tag(){} + + public Tag(int id, String name){ + this.id = id; + this.name = name; + } + + @Override + public String getId() { + return String.valueOf(id); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Tag tag = (Tag) o; + return id == tag.id; + } + + public static Tag invalidIdTag(String tagString) { + return new Tag(-1, tagString); + } +} diff --git a/src/main/java/data/model/Timed.java b/src/main/java/data/model/Timed.java new file mode 100755 index 0000000..fa3c6de --- /dev/null +++ b/src/main/java/data/model/Timed.java @@ -0,0 +1,8 @@ +package data.model; + +/** + * Created by iran on 2015-07-07. + */ +public interface Timed { + long getCreationTime(); +} diff --git a/src/main/java/data/model/Topic.java b/src/main/java/data/model/Topic.java new file mode 100755 index 0000000..b53c9d2 --- /dev/null +++ b/src/main/java/data/model/Topic.java @@ -0,0 +1,9 @@ +package data.model; +/** + * Created by iran on 2015-08-29. + */ +public class Topic extends data.model.Tag { + public Topic(int id, String name){ + super(id, name); + } +} diff --git a/src/main/java/data/model/ViewItem.java b/src/main/java/data/model/ViewItem.java new file mode 100755 index 0000000..19c913b --- /dev/null +++ b/src/main/java/data/model/ViewItem.java @@ -0,0 +1,7 @@ +package data.model; + +/** + * Created by iran on 5/14/2016. + */ +public interface ViewItem { +} diff --git a/src/main/java/data/model/notification/NCollection.java b/src/main/java/data/model/notification/NCollection.java new file mode 100755 index 0000000..297c4f0 --- /dev/null +++ b/src/main/java/data/model/notification/NCollection.java @@ -0,0 +1,9 @@ +package data.model.notification; + +/** + * Created by iran on 6/13/2016. + */ +public class NCollection { + private long id; + private long image; +} diff --git a/src/main/java/manager/DBFacade.java b/src/main/java/manager/DBFacade.java new file mode 100755 index 0000000..b66b853 --- /dev/null +++ b/src/main/java/manager/DBFacade.java @@ -0,0 +1,163 @@ +package manager; + +import android.support.annotation.NonNull; +import android.text.TextUtils; +import android.util.Log; + +import com.raizlabs.android.dbflow.config.FlowConfig; +import com.raizlabs.android.dbflow.config.FlowManager; +import com.raizlabs.android.dbflow.sql.language.Condition; +import com.raizlabs.android.dbflow.sql.language.CursorResult; +import com.raizlabs.android.dbflow.sql.language.Delete; +import com.raizlabs.android.dbflow.sql.language.NameAlias; +import com.raizlabs.android.dbflow.sql.language.SQLite; +import com.raizlabs.android.dbflow.sql.language.Select; +import com.raizlabs.android.dbflow.sql.language.Where; +import com.raizlabs.android.dbflow.sql.queriable.ModelQueriable; +import com.raizlabs.android.dbflow.structure.Model; +import com.raizlabs.android.dbflow.structure.database.transaction.FastStoreModelTransaction; +import com.raizlabs.android.dbflow.structure.database.transaction.ProcessModelTransaction; +import com.raizlabs.android.dbflow.structure.database.transaction.QueryTransaction; +import com.raizlabs.android.dbflow.structure.database.transaction.Transaction; +import com.shaya.poinila.android.presentation.PoinilaApplication; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.Logger; + +import java.util.ArrayList; +import java.util.List; + + +import data.database.PoinilaDataBase; +import data.event.DashboardEvent; +import data.model.Circle; +import data.model.Circle$Table; +import data.model.Collection; +import data.model.DefaultType; +import data.model.Frame; +import data.model.Member; +import data.model.Member$Table; +import data.model.Post; +import data.model.Post$Table; + +import static com.shaya.poinila.android.util.ContextHolder.getContext; + +/** + * Created by AlirezaF on 7/8/2015. + */ +public class DBFacade { + + public static Member getCachedMyInfo() { + Member me = new Select().from(Member.class).where(Condition.column(Member$Table.id.getNameAlias()). + is(DataRepository.getInstance().getMyId())).querySingle(); + + //Member me = Member.getTestItem(); + if (me != null && !TextUtils.isEmpty(me.jsonContent)) { + me = me.getModel(); + return me; + } + return null; + } + + public static List getMyCircles() { + // TODO: in chie akhe? gand zadi ba tarrahi!! + /* for (int i = 0; i < circles.size(); i++){ + circles.set(i, circles.get(i).getModel()); + }*/ + //BusProvider.getBus().post(new CirclesReceivedEvent(circles)); + return new Select().from(Circle.class).where( + Condition.column(Circle$Table.defaultType.getNameAlias()).isNot(DefaultType.DEFAULT)).queryList(); + } + + public static Circle getDefaultCircle() { + return new Select().from(Circle.class).where + (Condition.column(Circle$Table.defaultType.getNameAlias()).eq(DefaultType.DEFAULT)).querySingle(); + // Circle$Table.PRIVACY, PrivacyType.PUBLIC.name() + } + + + public static List getMyFrames() { + return new Select().from(Frame.class).queryList(); + /* for (int i = 0; i < frames.size(); i++){ + frames.set(i, frames.get(i).getModel()); + }*/ + //BusProvider.getBus().post(new MyFrameReceivedEvent(frames)); + } + + public static void getSuggestions(int cachedItems) { + + if(FlowManager.isDatabaseIntegrityOk(PoinilaDataBase.NAME)){ + FlowManager.getDatabaseForTable(Post.class) + .beginTransactionAsync(new QueryTransaction.Builder<>( + SQLite.select(Post$Table.jsonContent) + .from(Post.class) + .where() + .orderBy(Post$Table.creationTime, false) + .limit((int) ConstantsUtils.SUGGESTION_PER_REQUEST) + .offset(cachedItems)) + .queryResult(new QueryTransaction.QueryResultCallback() { + @Override + public void onQueryResult(QueryTransaction transaction, @NonNull CursorResult tResult) { + + List posts = tResult.toList(); + List data = new ArrayList<>(); + + int length = posts.size(); + for(int i=0 ; i< length ; i++) { + data.add(posts.get(i).getModel()); + } + + BusProvider.getBus().post(new DashboardEvent(data, true)); + + } + }).build()).build().execute(); + } + } + + + public static T loadModel(String modelID, Class clazz) { + return new Select().from(clazz).where(Condition.column(NameAlias.builder("id").build()).eq(modelID)).querySingle(); + } + + public static void saveModels(List models, Class mClass) { +// ProcessModelInfo pmi = ProcessModelInfo.withModels(models); +// TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(pmi)); + + int count = models.size(); + for (int i = 0; i < count; i++) { + models.get(i).save(); + } + + + } + + public static void saveModel(T model) { + model.save(); + } + + public static void updateModel(T model) { + model.update(); + } + + + public static List getMyCollections() { + return new Select().from(Collection.class).queryList(); + /*List collections = new Select().from(Collection.class).queryList(); + for (int i = 0; i < collections.size(); i++) { + collections.set(i, collections.get(i).getModel()); + } + return collections;*/ + } + + /** + * @param tables + * @see sql statements + */ + @SafeVarargs + public static void clearData(Class... tables) { + //FlowManager.getDatabase(PoinilaDataBase.NAME).reset(getContext()); + // TODO: it's a temporary workaround. the above line doesn't work currently. + Delete.tables(tables); + FlowManager.init(new FlowConfig.Builder(PoinilaApplication.getAppContext()).build()); + } +} diff --git a/src/main/java/manager/DataRepository.java b/src/main/java/manager/DataRepository.java new file mode 100755 index 0000000..1b5ddd0 --- /dev/null +++ b/src/main/java/manager/DataRepository.java @@ -0,0 +1,403 @@ +package manager; + +import android.content.Context; +import android.content.Intent; +import android.support.annotation.Nullable; +import android.support.v4.content.LocalBroadcastManager; +import android.util.Log; + +import com.raizlabs.android.dbflow.annotation.NotNull; +import com.raizlabs.android.dbflow.config.DatabaseDefinition; +import com.raizlabs.android.dbflow.config.FlowManager; +import com.raizlabs.android.dbflow.structure.database.transaction.ProcessModelTransaction; +import com.raizlabs.android.dbflow.structure.database.transaction.Transaction; +import com.shaya.poinila.android.util.BusProvider; +import com.shaya.poinila.android.util.ConnectionUitls; +import com.shaya.poinila.android.util.ConstantsUtils; +import com.shaya.poinila.android.util.ContextHolder; +import com.shaya.poinila.android.util.PoinilaPreferences; +import com.shaya.poinila.android.utils.PonilaAccountManager; +import com.squareup.otto.Subscribe; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import data.PoinilaNetService; +import data.database.PoinilaDataBase; +import data.event.BaseEvent; +import data.event.ContentReceivedEvent; +import data.event.ModelCreatedEvent; +import data.event.ModelDeletedEvent; +import data.event.ModelUpdatedEvent; +import data.event.MyInfoReceivedEvent; +import data.event.PostReceivedEvent; +import data.event.RemainedInvitesEvent; +import data.event.SystemPreferencesReceivedEvent; +import data.model.Circle; +import data.model.Collection; +import data.model.Content; +import data.model.Frame; +import data.model.Identifiable; +import data.model.Member; +import data.model.Post; +import data.model.SystemPreferences; + +/** + * Created by iran on 2015-07-03. + */ +public class DataRepository { + private static DataRepository instance; + private boolean shouldShowRatingToUser; + private int remainedInvites = 0; + private SystemPreferences systemPreferences; + private boolean isUserAnonymous = true; + + public DataRepository() { + BusProvider.getBus().register(this); + } + + public static DataRepository getInstance() { + if(instance == null ) + instance = new DataRepository(); + return instance; + } + + /* public void destroy(){ + BusProvider.getBus().unregister(this); + }*/ + + public void getSuggestions(boolean fromServer, boolean readCache, String bookmark, int cachedItems) { + if (readCache) + manager.DBFacade.getSuggestions(cachedItems); + if (fromServer){ + PoinilaNetService.getSuggestions(bookmark); + } + } + + public void saveSuggestions(List posts) { +// ProcessModelInfo pmi = ProcessModelInfo.withModels(posts); +// TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(pmi)); + DatabaseDefinition database = FlowManager.getDatabase(PoinilaDataBase.class); + +// for(Post post : posts) + + + ProcessModelTransaction processModelTransaction = + new ProcessModelTransaction.Builder<>(new ProcessModelTransaction.ProcessModel() { + @Override + public void processModel(Post model) { + // call some operation on model here + model.save(); +// model.insert(); // or +// model.delete(); // or + } + }).processListener(new ProcessModelTransaction.OnModelProcessListener() { + @Override + public void onModelProcessed(long current, long total, Post modifiedModel) { + + } + }).addAll(posts).build(); + Transaction transaction = database.beginTransactionAsync(processModelTransaction).build(); + transaction.execute(); + + } + + public void getPost(String postID, manager.RequestSource target, int requestId) { + if (target != manager.RequestSource.FORCE_ONLINE){ + Post post = DBFacade.loadModel(postID, Post.class); + if (post != null) + BusProvider.getBus().post(new PostReceivedEvent(post.getModel(), requestId)); + } + if (target != RequestSource.FORCE_OFFLINE && ConnectionUitls.isNetworkOnline()){ + PoinilaNetService.getPost(postID, requestId); + } + } + + public void getProfile(String memberID) { + //Member member = DBFacade.getItem(profileID, Member.class); + //if (member == null) { + PoinilaNetService.getMemberProfile(memberID); + // } + } + + public void getMyProfile(){ + PoinilaNetService.getMemberProfile(getMyId()); + + } + + public void getMyFollowedCollections(String frameID, String bookmark) { + PoinilaNetService.getFollowedCollections(getMyId(), frameID, bookmark, BaseEvent.ReceiverName.MyFollowedCollections); + } + + public void getTopics(){ + PoinilaNetService.getTopics(); + } + + // TODO: + public String getMyId() { + return PoinilaPreferences.getMyId(); + } + + public void getPeopleFollowingCollections(String memberId, String bookmark) { + PoinilaNetService.getFollowedCollections(memberId, null, bookmark, BaseEvent.ReceiverName.CollectionListFragment); + } + + public void getPostsWithQuery(List queries, String bookmark) { + PoinilaNetService.searchPostWithQuery(queries, bookmark); + } + + public void getCollectionsWithQuery(List queries, String bookmark) { + PoinilaNetService.searchCollectionsWithQuery(queries, bookmark); + } + + public void getMembersWithQuery(List queries, String bookmark) { + PoinilaNetService.searchMembersWithQuery(queries, bookmark); + } + + public List getFrames() { + // TODO: fetch from db if user is null, otherwise read from user; + /* if (user != null) + return user.frames;*/ + return new ArrayList<>(Arrays.asList(new Frame(1, "sport"), new Frame(2, "cinema"))); + } + + // TODO + public void getCollection(@NotNull String collectionIdOrName, @Nullable String userName, RequestSource target) { + /*if (target != RequestTarget.FORCE_ONLINE){ + Collection collection = DBFacade.loadModel(collectionID, Collection.class); + if (collection != null) + BusProvider.getBus().post(new CollectionReceivedEvent(collection.getModel())); + }*/ + if (target != RequestSource.FORCE_OFFLINE && ConnectionUitls.isNetworkOnline()){ + PoinilaNetService.getCollection(collectionIdOrName, userName); + } + } + + public void getPostContent(String contentUrl, int postID) { + Content content = DBFacade.loadModel(contentUrl, Content.class); + if (content != null) + BusProvider.getBus().post(new ContentReceivedEvent(content.text, postID)); + else + PoinilaNetService.getPostContent(contentUrl, postID); + } + + public static void getCollectionPosts(String collectionIdOrName, @Nullable String userName, + String bookmark, BaseEvent.ReceiverName receiverName) { + PoinilaNetService.getCollectionPosts(collectionIdOrName, userName, bookmark, receiverName, false); + } + + public static void getCollectionPostsImages(String collectionIdOrName, @Nullable String userName, + String bookmark, BaseEvent.ReceiverName receiverName) { + PoinilaNetService.getCollectionPosts(collectionIdOrName, userName, bookmark, receiverName, true); + } + + public void getMemberFriends(String memberID, String bookmark) { + PoinilaNetService.getMemberFriends(memberID, bookmark); + } + + public void getMyInfo(boolean fromServer, MyInfoReceivedEvent.MY_INFO_TYPE type){//boolean networkOnline) { + if (fromServer) + PoinilaNetService.getMyInfo(type); + else{ + BusProvider.getBus().post(new MyInfoReceivedEvent(DBFacade.getCachedMyInfo(), true, type)); + } + } + + + Object tempModel; + String tempModelID; + long serverTimeDifference = -1; + + public void putTempModel(Object model) { + tempModel = model; + if (model instanceof Identifiable) + tempModelID = ((Identifiable) model).getId(); + } + + public T getTempModel(Class clazz){ + if (clazz.isInstance(tempModel)) { //tempModel.getClass().getSimpleName().equals(clazz.getSimpleName()) + if (tempModel instanceof Identifiable && !tempModelID.equals(((Identifiable) tempModel).getId())) + return null; + return clazz.cast(tempModel); //clazz.cast(tempModel); + }return null; + } + + public void getMemberCollections(String memberID, String bookmark) { + PoinilaNetService.getMemberCollections(memberID, bookmark); + } + + public void getPostComments(String postID, String bookmark) { + PoinilaNetService.getPostComments(postID, bookmark); + } + + public void putServerTimeDifference(long timeDifference) { + this.serverTimeDifference = timeDifference; + PoinilaPreferences.putServerTime(serverTimeDifference); + } + + public long getServerTimeDifference(){ + return (serverTimeDifference == -1) ? PoinilaPreferences.getServerTimeDifference() : serverTimeDifference; + } + + public static void deleteCache(Context context) { + try { + File dir = context.getCacheDir(); + if (dir != null && dir.isDirectory()) { + deleteDir(dir); + } + } catch (Exception e) {} + } + + public static boolean deleteDir(File dir) { + if (dir != null && dir.isDirectory()) { + String[] children = dir.list(); + for (String aChildren : children) { + boolean success = deleteDir(new File(dir, aChildren)); + if (!success) { + return false; + } + } + } + return dir != null && dir.delete(); + } + + public static void clearDataOnLogout(){ + PonilaAccountManager.getInstance().removePonilaAccount(); + PoinilaPreferences.clearData(); + DBFacade.clearData(Member.class, Circle.class, Frame.class, Collection.class, Post.class); + deleteCache(ContextHolder.getContext()); + } + + @Subscribe public void keepSystemPreferences(SystemPreferencesReceivedEvent event){ + systemPreferences = event.systemPreferences; + } + + @Subscribe + public void saveModel(ModelCreatedEvent event){ + event.model.save(); + } + + @Subscribe + public void updateModel(ModelUpdatedEvent event){ + event.model.update(); + } + + @Subscribe + public void deleteModel(ModelDeletedEvent event){ + event.model.delete(); + } + + @Subscribe + public void setReminedInvites(RemainedInvitesEvent event){ + if (event.remained == -1) // Decrementing after using on invite. not wanted to define new method! :) + this.remainedInvites--; + else + this.remainedInvites = event.remained; + } + + public int getRemainedInvites(){ + return remainedInvites; + } + + public boolean isMe(int id) { + return String.valueOf(id).equals(instance.getMyId()); + } + + public static boolean isMyCollection(Collection collection) { + return collection.owner.getId().equals(getInstance().getMyId()); + //return DBFacade.getMyCollections().contains(collection); + } + + public static void calculateIsTimeToAskAboutRating() { + if (!userNeverWantsToRate() && enoughDays() && enoughOpenCount()){ + getInstance().shouldShowRatingToUser = true; + } + } + + private static boolean userNeverWantsToRate() { + return PoinilaPreferences.getAppOpenCountThreshold() == Integer.MAX_VALUE || + PoinilaPreferences.getRatingDaysThreshold() == Integer.MAX_VALUE; + } + + private static boolean enoughOpenCount() { + return PoinilaPreferences.getOpenApplicationCount() >= PoinilaPreferences.getAppOpenCountThreshold(); + } + + private static boolean enoughDays() { + return TimeUnit.MILLISECONDS.toDays( + Calendar.getInstance().getTimeInMillis() - PoinilaPreferences.getFirstLoginDateTime()) >= + PoinilaPreferences.getRatingDaysThreshold(); + } + + public static void updateAskRatingThreshold(boolean neverAskAgain){ + PoinilaPreferences.increaseRatingDaysThreshold(neverAskAgain); + PoinilaPreferences.increaseAppOpenCountThreshold(neverAskAgain); + getInstance().shouldShowRatingToUser = false; + } + + public static boolean shouldAskForRating(){ + return !isUserAnonymous() && + getInstance().shouldShowRatingToUser && + DataRepository.getDestinationMarket() != null; + + // for testing +// return true; + } + + public static SystemPreferences.MarketPackages getDestinationMarket() { + return instance.systemPreferences != null ? + instance.systemPreferences.rateDestinationMarket : null; + } + + public static void setSystemPreferences(SystemPreferences systemPreferences){ + instance.systemPreferences = systemPreferences; + } + + public static List getSMSProviderNumbers() { + List numbers = instance.systemPreferences != null ? + instance.systemPreferences.smsProviderNumbers : null; + return numbers != null ? numbers : new ArrayList(); + } + + public static void setUserAsAnonymous(boolean anonymous) { + //getInstance().isUserAnonymous = anonymous; + PoinilaPreferences.putUserAnonymity(anonymous); + } + + public static boolean isUserAnonymous() { + //return getInstance().isUserAnonymous; + return PoinilaPreferences.isUserAnonymous(); + } + + public static void syncWithMyInfoResponse(MyInfoReceivedEvent event) { + if (event.me != null) { + if (!event.fromCache) { + DataRepository.setUserAsAnonymous(event.me.isAnonymous); + if (DataRepository.isUserAnonymous()) + return; + + DBFacade.clearData(Circle.class, Frame.class, Collection.class, Member.class); + DBFacade.saveModels(event.me.circles, Circle.class); + DBFacade.saveModels(event.me.frames, Frame.class); + DBFacade.saveModels(event.me.owningCollections, Collection.class); + DBFacade.saveModel(event.me); + PoinilaPreferences.putMyId(event.me.getId()); + } + } + } + + public static void logout() { + if (!isUserAnonymous()) + PoinilaNetService.logout(); + DataRepository.setUserAsAnonymous(true); + clearDataOnLogout(); + } + + public static void logoutEvent() { + LocalBroadcastManager.getInstance(ContextHolder.getContext()).sendBroadcast(new Intent(ConstantsUtils.INTENT_FILTER_JWT)); + } +} \ No newline at end of file diff --git a/src/main/java/manager/RequestSource.java b/src/main/java/manager/RequestSource.java new file mode 100755 index 0000000..77466e8 --- /dev/null +++ b/src/main/java/manager/RequestSource.java @@ -0,0 +1,10 @@ +package manager; + +/** + * Created by iran on 2015-10-20. + */ +public enum RequestSource { + FORCE_OFFLINE, + FORCE_ONLINE, + ANY +} diff --git a/src/main/java/manager/dowload/NativeDLManager.java b/src/main/java/manager/dowload/NativeDLManager.java new file mode 100755 index 0000000..31a83f9 --- /dev/null +++ b/src/main/java/manager/dowload/NativeDLManager.java @@ -0,0 +1,61 @@ +//package manager.dowload; +// +//import com.shaya.dlm.core.DownloadManagerPro; +//import com.shaya.dlm.report.listener.DownloadManagerListener; +//import com.shaya.poinila.android.presentation.PoinilaApplication; +//import com.shaya.poinila.android.presentation.R; +//import static com.shaya.poinila.android.util.ResourceUtils.*; +// +///** +// * Created by hossein on 8/30/16. +// */ +//public class NativeDLManager implements DownloadManagerListener { +// +// // TODO: For read more go to https://github.com/majidgolshadi/Android-Download-Manager-Pro +// DownloadManagerPro dLManager; +// +// private NativeDLManager(){ +// dLManager = new DownloadManagerPro(PoinilaApplication.getAppContext()); +// dLManager.init(getString(R.string.app_name), 10, this); +// } +// +// @Override +// public void OnDownloadStarted(long taskId) { +// +// } +// +// @Override +// public void OnDownloadPaused(long taskId) { +// +// } +// +// @Override +// public void onDownloadProcess(long taskId, double percent, long downloadedLength) { +// +// } +// +// @Override +// public void OnDownloadFinished(long taskId) { +// +// } +// +// @Override +// public void OnDownloadRebuildStart(long taskId) { +// +// } +// +// @Override +// public void OnDownloadRebuildFinished(long taskId) { +// +// } +// +// @Override +// public void OnDownloadCompleted(long taskId) { +// +// } +// +// @Override +// public void connectionLost(long taskId) { +// +// } +//} diff --git a/src/main/java/manager/dowload/NotificationDLManager.java b/src/main/java/manager/dowload/NotificationDLManager.java new file mode 100755 index 0000000..e42ea2d --- /dev/null +++ b/src/main/java/manager/dowload/NotificationDLManager.java @@ -0,0 +1,81 @@ +package manager.dowload; + +import android.app.DownloadManager; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.IntentFilter; +import android.net.Uri; +import android.os.Environment; +import android.text.TextUtils; +import android.webkit.MimeTypeMap; + +import com.shaya.poinila.android.presentation.PoinilaApplication; +import com.shaya.poinila.android.presentation.R; +import com.shaya.poinila.android.util.Logger; + +import java.io.File; + +/** + * Created by hossein on 8/30/16. + * Read More : http://101apps.co.za/articles/using-the-downloadmanager-to-manage-your-downloads.html + */ +public class NotificationDLManager { + + private static NotificationDLManager instance; + + DownloadManager downloadManager; + private long myDownloadRefrence; + private BroadcastReceiver receiverDownloadComplete; + private BroadcastReceiver receiverNotificationClicked; + IntentFilter filter; + + private NotificationDLManager(){ + downloadManager = (DownloadManager) PoinilaApplication.getAppContext().getSystemService(Context.DOWNLOAD_SERVICE); +// filter = new IntentFilter(DownloadManager.ACTION_NOTIFICATION_CLICKED); +// receiverNotificationClicked = new BroadcastReceiver() { +// @Override +// public void onReceive(Context context, Intent intent) { +// String extraId = DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS; +// +// long[] refrences = intent.getLongArrayExtra(extraId); +// +// for(long refrence : refrences){ +// if(refrence == myDownloadRefrence){ +// +// } +// } +// +// PoinilaApplication.getAppContext().registerReceiver(receiverNotificationClicked, filter); +// } +// }; + } + + public static NotificationDLManager getInstance(){ + if(instance == null) + instance = new NotificationDLManager(); + return instance; + } + + public void download(String url, String name, String description){ + Uri uri = Uri.parse(url); + + DownloadManager.Request request = new DownloadManager.Request(uri); + + request + .setTitle(name) + .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) + .setDescription(description) + .setVisibleInDownloadsUi(true) +// .setDestinationInExternalFilesDir() this method is for save in package name directory + .setDestinationInExternalPublicDir( + Environment.DIRECTORY_DOWNLOADS, new File(url).getName()); + + try{ + downloadManager.enqueue(request); + }catch (Exception e){ + Logger.toastError(R.string.download_error); + } + + + } +} diff --git a/src/main/res/anim/fade_in.xml b/src/main/res/anim/fade_in.xml new file mode 100755 index 0000000..7bf9184 --- /dev/null +++ b/src/main/res/anim/fade_in.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/src/main/res/anim/fade_out.xml b/src/main/res/anim/fade_out.xml new file mode 100755 index 0000000..f7e137b --- /dev/null +++ b/src/main/res/anim/fade_out.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/src/main/res/color/black_disabled_grey.xml b/src/main/res/color/black_disabled_grey.xml new file mode 100755 index 0000000..8ad97fb --- /dev/null +++ b/src/main/res/color/black_disabled_grey.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/color/collection_follow.xml b/src/main/res/color/collection_follow.xml new file mode 100755 index 0000000..c6c1f48 --- /dev/null +++ b/src/main/res/color/collection_follow.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/color/input_text_color_state_list.xml b/src/main/res/color/input_text_color_state_list.xml new file mode 100755 index 0000000..b45ef36 --- /dev/null +++ b/src/main/res/color/input_text_color_state_list.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/res/color/option_text_color.xml b/src/main/res/color/option_text_color.xml new file mode 100755 index 0000000..38e7ad7 --- /dev/null +++ b/src/main/res/color/option_text_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/drawable-hdpi/action_follow_2_dark.png b/src/main/res/drawable-hdpi/action_follow_2_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..9116bb6126da0a05b0cae5f7607b9e84b09fd893 GIT binary patch literal 1584 zcmaJ>eM}Q)94-h`Q6rm(N}`Xih%oL?2^0pBhT~vp7-}Y zxjiXK@r(R|{5TxWB5i_3$Bv-qo%a^|P4j-Sn;lj#vFS`Inax;W3gsvf(trY59L_;? zD2x>BXhCHh&Kv;Kr!(o$2T~)6^I;E$Z^g|lo5PXCSk16;JIVkCGzTN(+$XN9TmVDl z+_Xptgv@HxgeBN0G}V@*H`=xvB?vcWBOtR%SpghnV8Dv!5wz4Q=T7QM*|}$1zy&5D z%yv2VwW)L{1yGX|3Pke3a3dH60#QP~FhU$19UTUUKp`jqMFOEHTo^5l5J^E0n0mNu zH44d=>NIgvwb+%MYhoC)R3NZeEPP7@pQLgGLWxA;(GZEkSwuKpKrpa1oS@fCD`-&K zNMU9MBMHEx2phP8=sej1`TNFxx=mKjOXr=p)yg~Vowfs^1I_jdMN^IH$f}@byC#EYGH};9 zkaNQm;?e^ZW0l$6ZrR_;YeQ{?6IIcf?cIY+dW_@7%idj_)rxrobn2x6Y8tv zXSW;toX+~R^`9-hKXFr(+m!2eeB0*xYJ90zd*kM_Fg*vd@4l?E`WAWR=onds+hmzu&~#_xFC8xwDPVeV)-+3|<=^)1GNpG4aKI$MB)r z^DkD;U3SkuD=IOxawN3*cIKByf)7C{3$8%E$7_Fn9P8^SsZXJTit>F^L)fU)jxDUS|*0>4m>c49nf3BkDlgl>mE6EnD_NyS6dkH@I}$a z3752+2)^}z+J7PAckwei-X0P&Y#kkUI-T=xoR7;tuHhbN@FLKW%aI zto`m+A@`EL+m{E($~$?Y)pQBne$x+VEtJ=O3<(P12lJWtIK|FV|>I literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/action_follow_selected.png b/src/main/res/drawable-hdpi/action_follow_selected.png new file mode 100755 index 0000000000000000000000000000000000000000..ddcb03475f97e2ee16d280f3146d5c0d8aabec6e GIT binary patch literal 1663 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8Mv>2~2MaLa!-Ky`Y4UTL84#CABECEH%ZgC_h&L>|v`++-@<#X&zK> z3U0R;qWpst$()i2Ll7sS5FtmkcwMx zW_o7`J4zhifA+FjuSk*}tL7tSdG?Q&el1}aoWfCcv4cHOD`dj8W_DKror+Ec7k#JN zFKSWRVlG?6LOv)(U05BYxx{3F_(s#S#m4{CZ#qlO&N17}&;0oy|D?MoYwp*VKbxJe z#+BR?bu;G5BQ;hJ#vq68*~=G({d84YwoWPN)*H_5r5|&QpKw3gtfb-K8h@TYX2H@Y z0z3CORzC_CKe_vtnQUcs_a8+^#?8WlzkV9}YQn2SVy*&EsxQ2OCcS#$0G<_7ZzlMgBd$l#&kjK1aqiffL`(>hL(aH8$zs z>)+SrGwb6qjlwzeX0{zrUFh2N`^mmm)*L%y zuY>OllPZ6A@wLrOiLU4|b8$b)T48PU!och17t2%ne+&%f^zhGQa`VYk^xS!cVdYGX zoqr|o#%_KmFSEwM_p{m&o>$9}l13wYYrc>U@dA>HA9fw*Iq7 z%iO)7A**_esOyKEmY97K`*Mv{fBc!BdFxVr>o2!uYhu}dXs7LYqPg@~TyFSQ6@g#* z1(LPzmO5MyF_!JnNwGN^%UpdRMR>pbbvdUsA^M`+eQS@zA8;%XQ<2X2&zn$i+3>^F ze?d*lcTC;MUv;2a>U;46wim4a)9zp1G~w&j6+!2?<~jUi_!j>-G}C_mt6P6=EPN~c zL-WYhS-Z{jn&e-ZC9-W6xV3E3(<#gAubh)EVXoU}8NNR{<4d{FPph?J3jEuaFlah( gO<mdKI;Vst014HAH2?qr literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/action_help_default.png b/src/main/res/drawable-hdpi/action_help_default.png new file mode 100755 index 0000000000000000000000000000000000000000..47eec1b795471b565756ced9e76dfb86ef133901 GIT binary patch literal 2059 zcmaJ?c~ld39-jzEg`yY%v04~|SP;kwA*3WI2?4f%kVLr`Loz^sWI{5M0CKBExgur3 zUC<(4&`K=@)Bq~%)&gBTkW-gK1Qd5sY_VX8N+(wA{;}-5H}gB*=kxhqpZDfSV1T!Y z(MLuA0GRmtu({|8>fR4lqhCd8>I-z)gm{G@JU9kX3gi&5O9V$lpsz#_3vnTVC?%;2 zat8oCP|OcOLj3*cLRf+q=rDMdM24~fz}-V769^L^1dN7a#Zm@tw&gkw6pI+RU>AR) zzl;UNiG5P#5HB@=FHB7kx`}WeOwe6LM+GDhA^=sAM5%(VV&LBD($T%{nt%h}LXZRo z?)RiZ`~yK2EQdfBJkd!=q!K|Y2~VOpySlnMf@C6zNFb64B(f99l};hkiA3<-gF~aq zMKN?PoAWLfdSc+>5JW~N5R^(KUP-~j@>l}N&CN}xK_)w)2q#5~6cMPLqzap51vaD* z%EdB73`;?sq97XHk1%j(roWdUk-e9dD&DmTZ5Tl%kP%3DqOPQ6puhkBhe{;x(F%kM z{gLng6jtz4WDtQ1Dd7EbAv(Ai8(kR>Z+Fki~NWgT+!2 ztW>;3`}@;;F zm$__MxL*QEk!7yv53ciyT%8dlGBh$9l8cie5l0S7z_$g{#VhART2b#ESG002`h=f-*)+`nEnq@D_`cok}##xch>7O^rq00yWgiK<7Ht;b(3%&EulbA_c>r4-G;SkYN%C$}iePv0K< zc?^*0K^%QHG0wU<^JMh!wqQfeW=G1-pgnDh2lE|mqsGz0r>ydlqU@oOru@Bw!R?wK z=;wcMBtAdX{yL4hO*xU^)4hh1_<2^TxjLm4m?@D*6<+%Jujw*Z`mQzGM<*l8gp}~P z`J7MxQ~d4u^F@hAtjZk4m#G+sFAHyEXBMb0Mzn}~Gt8*xygka1;!9Z_VYW|mvGw}X zAx3Ui;F7&tb6@AR#{R0KBTclXDTnSCQd6}erqb20O558wtevlZ-v1&c;o%TX<6CXP zEO~wqcjJ4Z_by?_&IIQAuY-@2ml`%dJ)tf9qN2idI@9JFxwN!|k?wFbiqIU-NEHR= zMy&I6NX*(>zd7vQT6Kf_Ole0khNV5dK(Ietw#3#ueso`TbI&F)sm73O2md4ACltzX zp7#r!IypUfSBhDBsXA`V#mor^7Zp`Yb9LAeMLng;G`=XzF^#4SimyIyU35#$)3k3v zl7Bhv`O>x?W69mo_0M?zeT(sr54@R>83g47ZlB#cmwNj`=dmAmG<0Tt)j#Fs)0sDx zdAr54janN!e(NRycp{xkxBr#9wad!__;3&R)|C@ci`WA{_4*uiIH_-RviOwdt13I~ z^_Bw9-toSMz#_5(#+F>h^0G7rx}0e)n>J?E2FM<8L)OLhb83w3sQZfP4||4yK9gx{ z_gsy~1xyV?aWW6PU2|a}Et9w7zT_ANV`>?n{kWj1y#TA$ny)`oenu{B40yxVR`Em2 z4FK-?rhU_G-=4kEw<<8eq$;CmW+*LpL)+9qy4?QPxkJ2O@j0_{meG(aPg#cZ%mFnHq+{al?ZQ#_T-NnVAM~_gJfHVlL<7MlVg3YL)eB4 zcmL2m;hn#T~N>AmD- aVF3A+7V6sio?_ka+1D$8{f+0ooZkQoBupOw literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/action_help_pressed.png b/src/main/res/drawable-hdpi/action_help_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..1a93cfa21bc8849d8ab776c189d7e93d187abff2 GIT binary patch literal 1890 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 eAl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8Mv>2~2MaLaz%>y`Y4UTL84#CABECEH%ZgC_h&L>|v`++-`BiX&zK> z3U0SJ;nb@Sbc{YIT9Kj|CIn17ASOJ~0y*$xpPC0u>qWpsy`gBaCIbUgi>HfYNX4x; z)4el<14Y`-@0{!&9JT7MgpzB)!ltFVE6?xJXv(J3Wj%-1egG(QU zvB-C1Y+vf}a*;+yEXSftt0ru_Vd86KZ28aJIP~`fn*ufN;)lsbC(qdaw_RU-Sjp+D zOxG(LDW+F?3J>mHaa|<;zChEZqe8#%gYeeUy7>Ph)nTmHj86VY2r1fpe&aa{&J1zH!thrXh!}TkYbyCWfFWozL)UM?WU1Pxcl>by;>;nl2 zrrLz=jQ2M)Wt*f{9pE_pnayYO<6UR(zhq=qV61Yih|Qb)_*c}ag2Y!FL@p_J++@GQ zYwhW%`#?d0<+$T=_u2&~jEX<^&6sH+Iq~X!Q}qLU@1-Z+=z5crt(iQxa3kN^h@1a^ zr>U%}W0L4?D&?sA+PysCk~_b|A#44fOQX>Wk0EO$%)eMEvMtnLVnvyKP=SrI92F0aSqq#)q*!I=eQf`pFDMD z;?|Z4v(((%-~BFE6R~*tnw#U~qO2YKC#{_~J~5eeMxC+OUX7Pgv~NBW4}q#~M literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/action_send_comment_orange.png b/src/main/res/drawable-hdpi/action_send_comment_orange.png new file mode 100755 index 0000000000000000000000000000000000000000..ee6854dbfa2902f3228add39d066bece9a7fcb5a GIT binary patch literal 1971 zcmaJ?c~ld39uMJCTqs8rk;)sRVzZDN2pJLuGXcU9UJ}B!c#vd<7(+548BI{$${{pz zqZE%)uTrQLE7*#35s-ocZ*_%M7O!2i%IX%kV1-pEpgXZ*_m5@gy_w(fKA+F``n)#> zBndI@ZmZk~1cJLL7LwsB!~QOD!M`cQnGf;B4-=+hiD)KfRu~aN6pShnK%`Ts5gDR@ zbFv2z9)aKpXymC_syH50p*otvj-gp}2AoYG@HSZt3Y8YY041W<==tP{_AWA@f%)W= zP%%Sn5Fk4=v3rb2;+_P#YL8aMg~^*X0z39p? zXht{_ltIyNW8o)0c?X6WKsw!QHq*>(8fsM2nOrW{uEAnaaRk+rqsJ5$s@}AAK>S3zz3FY6@P^SX3Im-yC*ypYMgxP~=uk)iG1+WZG?U2`hJ}Yku>@hvP~qmNkf?A0 zw7`W>)h->P#}>HouiTJDxppJy40vP+F=}=raI_KC0dEQhHH+uMTvYEZ7hXIU)}mZG zo($bS*8dvw!WHfv`}Un_@xwdYBYNEHM%>g#eh0iyAUIJ(P?X$q_g_cTV&&46eO>I* zirNOLAXNnWb=1Jiq@rarw}?Z}2VI0DX|#|M_3uFeGT=(7>@AluJZ37ddGCBe(E`!Z7rNXd}2&!3$QpP6SdgVXDPnx z6}(NZTO5-z*s&D{dA3ADV`AJym|vaq@JT|MwHSKwd-7PB^M_IH;Y8NYiFvN~KbqSX zaXV=D===R+?>YSac;WHjrCHwUQJ4N7v<^4B)rE1j|FEt3z_GOai=I8R-j^(=s#`tp zub6>X-<*GC%PO%F^jE!%4}P#6r1!8}9fhNkooM~w9CYf=T|UKGN9mx}Z`>NUGiZ#P zxw@d*{4gWBKlkEb%B^j_n^#mGf6#kPPp)lAn)C?CpRIN;jvX)AOG=&rK6fa}IE@ZR zWKXY1Zaqc$OJ{v2qv^)SM~e=*Jtu7WlhN%ynRnw!oy;=%$KCqx9 zC7D1!ac|wWj_vU1QQNuR$@5pDmmJw#c&)C;pK^h?ap~czmQOPr`dvnPa*Ic#PrE}5 zLzfCmHk2K2Q$O;l3SfnKpy;Q;_FspBq2U zEx#}6y*6eZUrx)?tI($ zPVO#iTRQLIsNimcA+r2&~opwn($F7gnPYu&p8=%W;moYDTkW!my zz5DiAB@s!zvl+Bo`+x4dFD~|?3RY{(%owFT<7Fd&$xd$dxKttI>UyT?OV@I!Bp~w@Sf|d za~$?@rY1a|HTTUXHk?@px_>8qIeKW|yR1R4DxWI{13m9NsfJbt=jC<7qNaoM!obVg nj~w8Z2M1I{CDEmA-YbLf8*NP4*RJd~`)^bvOn|=JoKf%}lFAX_ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/action_send_comment_white.png b/src/main/res/drawable-hdpi/action_send_comment_white.png new file mode 100755 index 0000000000000000000000000000000000000000..5b0a61c5af8cd18ad5fc08de2f7fe4d8b54015e6 GIT binary patch literal 1629 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/action_setting_new_pressed.png b/src/main/res/drawable-hdpi/action_setting_new_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..bd787678b6103b46674db028a8c5fe1cb15133b1 GIT binary patch literal 3926 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/arrow_down_white_24dp.png b/src/main/res/drawable-hdpi/arrow_down_white_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..74cffcf202d1beec33523538aadcf2c4608df822 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBCV9FzhE&{od)1q(!GMS5LQ|8R z^`ohO?&_rlA4ytirrhC^Fl}l6#k8hXZThMLE&`4$f-VlY&P53cS!Gi;h z%@*U}Y=I1D}J(Fb9THBcC5kVk<1QJLf zfdmrB2qe%1Ky{Bm|771DRRaCaq5Z8A=$2!9UNt+=$2H&Wb=B;5(3XruS%a`hq+JY& zL^}uJkcg*O6cY7_k3k~$K?o#zvp5_np`#v(lrnZ0hLkj$8G@8H!0L{aIOXe#lsXFS zhLk)n?t+v)R9_wGor@By1X>AcCZM;F1QN(c47W(rw)qono1X?Jz13J9C%IYef|CgJ z)e|QTs5?#)&=8yypkX)(Knu><*FI1jG7tiX3WUKS0_{jRG@u3N#}BB2a40}n90JfM z8HaKQ6%~iH1{D#9wu==Fhj~707c~7HhRjFJpcdz M07*qoM6N<$f~1I$82|tP literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/arrow_up_white_24dp.png b/src/main/res/drawable-hdpi/arrow_up_white_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..a0861f59964fe66e69616e685954d895a5d6a27c GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbB8a!PbLn>~)y&A~XpdjFSk#S*| z>`v9ye|_1w6kQ(L1is+>etJIhxdkg$^-K|P5pZM?bP153;LpprOX25_dkd`Dnw*l) zXox)Xm>I}%Ms9YJF;nZIC)LKMnr?FOu(TeV5oo&LLsO;GTHSeXw3oT)u5G&&nzQur gb1$$-7v?*t--}3D@IIuN8R!-UPgg&ebxsLQ0NE=;O8@`> literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/browser.png b/src/main/res/drawable-hdpi/browser.png new file mode 100755 index 0000000000000000000000000000000000000000..289df10b3450269b356ca26421e8affe3d0c4e82 GIT binary patch literal 2342 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 M07*qoM6N<$f=4iU4gdfE literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/btn_google_signin_dark_normal.9.png b/src/main/res/drawable-hdpi/btn_google_signin_dark_normal.9.png new file mode 100755 index 0000000000000000000000000000000000000000..4a5ddfb762a13bd5f52b970697e7d26ddfd9b26f GIT binary patch literal 1225 zcmV;)1UCDLP)W*(000D#Nklms^-RbP$o~o}f8NKth`AAU0 z!EHDk4u_*>9%b}KeI64$DR^4&jNn-&=sctJ`y}-pu%I_{Hhv*{kGK)J`WSEI?q>p{ z57cjt?ze_h-+_vHDtq^vBk7m)TPa~?tSv)AV@oTtvUj^Vf_e{R9rS#z-l?}}5E(sb zMHKZ-y;J}Gu8UryAEc=*qldCy^u`Ts#&oSo3 zNNQA_Bm_iKlbW!fJf^oKmSl|%qq&1hS4YABU|F+VFG(!PGmXw=oOZf5C+rmw}p`3?-i8)A7!)pp@$_okJf}E z{7FdjUPMBfpKePsFP@7u5SAo6O>jiM43b3H);@#e244wT*&*AkNDE;}se4JzJ=nv9 ztR4N~D~op60wVgjgC(hr>(+8NNd&E@d?nC1@XtiG9c!jT#Z1pY`5Lxz+z4~ zSdx~QZmz+~wVxr&!jiWI5q~c#kC>}_;BPL(xln3^`=Ig3}&Slj+&v{b^Ay@x|+XGs@#||Yd zDOj0ubTO5!iN9tyMUKIzF=mq$>cf(JChYPyWLZ*4lc?TX=fUN^9%D(t%<;stsJ5wn zz;cSLs*k8EyFz)Yf-jDYzPbyoV*AtPxHmE4vvQ~%))_0#hQZ--z(-h;o{=0@?2kJJ z5;5!e3d}mO60~W)RCFvQK^lr{x$?^Qi>Ci!aQ}6ytdR*}4KP?Z;=mdZ+&VeZu~8f)5412(k!r2yzA;hI-Aa^!y?9 z9>`l@o)Ekwcwg|9;5)(hL5KNH>Gyr5?;L?=5RQ;jSl%AV*;P>CB`%n00000NkvXXu0mjfL_AhA literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/btn_google_signin_dark_pressed.9.png b/src/main/res/drawable-hdpi/btn_google_signin_dark_pressed.9.png new file mode 100755 index 0000000000000000000000000000000000000000..82d16422c70ce338ca08e1ff1ead75b3fd519c06 GIT binary patch literal 1231 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/button_library_pressed.png b/src/main/res/drawable-hdpi/button_library_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..c63a6f2f4dc074e1631919355b0ce5eb905a386f GIT binary patch literal 1768 zcmVP)fX7*xRc4zM`P@)Mj3P^Y}rBbxC+*+Y6^g{f9bfy`GSz7F6XPx z>zOm(IcL^nGR!c;3^U9y!wfUbu=y~H#X?$KY~8Y6>%K5 ztFEqY{enUQpaL{>N{B>mLW8-as32Sq1p>#dR;z8n0HN}tP%wBE4c?E0!#O9`=j*{g zdG$gA8jt~+geEkuX+VtE+q-Chph;+eVVH|PhPj|oT?ClXtN@Bdqr<^q@bE?$8ZFeK z>~{NefOK9ONsA3=1e0Es)nduha7a=BK))G)at#nVu@tgFR)uV434K6y_F zWr?N%5gez}`4Y#n?VQgShho#>xYoli*9%HW1jp<3ZVUSTKOhJdWIkcH+x_iqAr%)F zKUG;-S&C_~&|)?((JG*2Y)i}bbTWAj<;LVnCK3Z)hS^4C6!oq=-qyA!5szP2_}oG4 z60%STKZDt9HWSOTW$}3YVvy(4?&|6n%eQQyN&2kj0C6oXucuR~Tk?RCJ_FEAgaxmu z0%~pj0)TESeC`2I+iU>giDl(^o+Te>JSGTz!9bu3pRbDXntlOMw#(((luoDr!jfXT zJ#iFHNOkHN&~n!6eJ2`;+>%GmG?JjZx(9^Y%Z3L)kjl$^C(%b5QT;TEbPLFgr`4fD zhc-K$rWyfbv919jIp1Ahe;9okmHY_Qsm{(m_x}Bx z?d#VUY7!8;NPsYU3jG}Siv&RQ8AHIB0GtBa^2j!z8i&JSqqP(XAC_TQ=lfb(-ojEt z6_C&8+l~ucCHat0hZ#$ay{dq)rbGGF^75k3ax5bpCptTO6t~w`FZeLlQlr- z$S6h$8;wSHLT`{_k;slPV&b3WBgh@*&~-+b2(+tc%BDN}n;L zb>T_0OI}{m&!%TuA!| z8dlrb7k!45KB6-Dj3Mu41|Mo~RQZoU`k<6A!C7=bxp=B!0MaO+NsTLO$3CP%OoTnh z+uOCMOKq*KJpgkrD}X3kjmP88rlzKn+S=N+H8nMwQdL#e+I{=>l>ySZZ0#u0x!6Iw z-JX}9pKsEl)~#Dtz%tCQLKXp4B2ClBJ_aBIkm`j$ol}6&=t`)F8dp)lEH5T6Lmd`b znH8Axp8f8?fp_uOoD+bsI4yF!Tzjx^`~#i20`*El+GXS=W`aa;8X6kD!NRgzUI+ZU z;qO5k1pu<9zP|nwtlod31uD`%E-fuxo)dtu;;z8=2P<)b)Ui;GhwVs=AFEHkkE1g6<(LoKB~|q%92P)=4rR z@AVu!SYkm?s9Qkd9P~17wSHy&0-*6M`#znl>J|{~NpIb{wFFPJ6Y{-h>3GM_^QX{< zXLJpS-rQ(zZZ40YxxT2WC^gzvu#vMp4x%rN>?trpSi z1`tKlfRxwZcJG&BCHW}AZT2S}66zWdl|x$&p5v}40pZrWjmY{d6kDY=K;O?JpsJYw z(Horsp7+u_KZ~Tvc9Pz8QeNrvIYKX8r`jFy{fWjC?bRMh5Dr zRk?lc0#G~hOCOZ8+t;$kj_pn-lQ+a*ahzk>bLhjXREJ8v&jU(!Ug8v&0R(A4c_OMf zqne;HKZZgXMfu7@L&+b|?n?e42+NKe^7nv{Kc1<6N~iX-@`jl#iq_7>W&??)1W!W)y;5vlNI(`$hBQg`((AQzQDlz()AfYI zS8?%uj}vaQ%S|4SPc0OfcS9rA#>PgPROcj);~aqGh(@FTS>%t0Krx`aQ&a2y@z;CDvt{K}$@A8D^Mah8bp|k0wldT1B8Lp5>FS$kcwMxuXyq`DDbcbe2uG; zX!o|1ovN?J*AcMdSnr>yogacOZSfQmF6QG}a_+w*m;ACuhwSAl#;1fuV|x$CaBnpz zW(gDxDv7u}^UApcp~jx9hF!0&w*K28aOO_1j$2^!E{hZSddUGb&pypj?{WM%^ZJ76 z^Olvadivcbdq;J_9?2@Uy^_BluoxelQZ4c2VCA+OW?l-*vsUd5%l&!xQ~%Fkwa9P1 Vc_!{0`+@Fd@O1TaS?83{1OPO>Si=AS literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/close.png b/src/main/res/drawable-hdpi/close.png new file mode 100755 index 0000000000000000000000000000000000000000..d2a1ca198c41605f312bc424c6279b4fc2d3378e GIT binary patch literal 3174 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 VEk{Uj)8_yH002ovPDHLkV1n!R>)8MR literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/comment_normal.png b/src/main/res/drawable-hdpi/comment_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..e668bcfd0d24d1c18463c3fae72092761e39316a GIT binary patch literal 1230 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>V43Ra;uunK>+PI)pXgATraE$+9|i4;rr=;<_+5IVFd!*J@9 zAg_ithbXRy=kPr6ws;?KN_{7pX+wq3h(?cRI!pREFyiq5?+KKFi(vt{@s z4#gG$Cj@cge{)+K+sPcW`I{qj{1sSz^UwQ+UR+s^Tyt`B zuZFDnDr`yCE(i+b-nnKFruojv-(g8Yepc5j{WrGB!a%8#0T(q^;Ih6pl7 zOnLR}*)uy26`|c#UjOV>j@-@remm)NASdIppFe-b8~*Yy(Rq-On)=lGP0yD2DYAUW zi&y+C4E+9eT8-(Hqn24)qvl^U`DqaM{A<;H-=#s4wtfHD(;dxb`||Sg?rky+-2K@x zI5_z4uV25^Z%lgnRmb5>LvwSp$+o5Ivv=`vFiJ~H&rfF53pn5?HG87DMgtQi=#=0G zN!CBQ2i||r{(b*qZ*Onu1|CzFEM9!r!p7#0*0M)BQd19}5ZL_C$0x8R{?lg3 zE7$+AD{oyBaC_mGml6|?t&sm-VI#hQFYNf_;3LW0212*e($npaZrRi8cJJiVqLYsw zKQ37rs3R79Gsi4^70bk$Il+D#g1x6-<`Z1;)pO7N`7dtw$F2XKJp1f79kIBTuNqp^ zFB}Ma!y}WOoh^RxMV!iqiOh@FiJz?I<^Ci7vgFr9l@+N@Hv5w*D}SoXNUVSGb-Gt( zJIBTLt5>gf-zd0o{P^+c34f|q&Jt8+PCSr#Gs4e8rtjC%rAxCdGVQi7EPXQPVK$fQ zqiU7cu6wTUEV`}4WG&ll@&5&zhfROf?}vxE0^I&;o^r{^%6err>Asd=F3SpQ;VCkb z)|1UQTG*ZB$x?7w`~62{SyIxWo7b z%%J-7k--=Cve@@4`7b7aG8I_R^Gjyi^!+U~%wtaSW-r^>)r(@5zZ0$L_CO zYq-7Vsok#+2fT!Y1Wz?jvg5Pr@>}zVy@l_#fYbAm*%o)_$Omsm+HOuxUOWKk@)PZHhI~$ZQFLNUAtC%nZMiOi~4{6{sMV` zaL25G+v!(+oO)Ws%9yzR(KB%|F)zOMWc#oawnrY_YN@WS-mLYn>7$_k?^uT$%V+$o z+8ej&_FFX-;iIb}PPtwF&&ph?|HzZ0^V(_-h8&MdyZP^R6EvmZt=AO-q7eB7EkckU@Eo)e4&$qUMM>ert zX!@6JrDbJd{JgwpR|qyl{9REi#o(t|PCX25O{~%fX@>%2AGPcT|$Dh|NJ{A?YdP=8L(yq2PHg9k5(+96zyJqC$ z`83mom9NUQ)8)~Ag(YD+KG9CIC4^_E%&MI7_)2`+dCP|VX{z209<+F`yCX$zno(OcEef#d6-M%;m&CeHq&0FYx zThvk}Rk~r`ym_UJ9@}IKHLC91xl_aQ?Dfk9J`9tz>-TNk_|dG#Uf~w&-N}p&S(`=I z3l#6Z8*Wr)bkdFCWaxk1$>+S6U#=8-_WZKpOa>MAGpuX=SjVmZE^sFO^h9QdRZkz} z7<9hmaPOU_bmobPmmUMh$F1L4%x)Jya;;o7>*Q3nhO*C`xz82P*z|k0wldT1B8LpL{AsTkcwMxr{3jlP~d4vG!|>< zHMx62^u`;O&WR2m*$qD~EYJ7--1@0l<7;n%!$G!JD^D{icCmaB)tDQy>AXXw?ROsb zvyGRuiUfcBTDa8ZYZJrox-D0X_ukLh=I+2GbRq9s^N;!~=cG@VGc8FCZkDNXG4*H{ zkY(!9kiPUjMzopr0E&lC AfdBvi literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/done_24dp_black.png b/src/main/res/drawable-hdpi/done_24dp_black.png new file mode 100755 index 0000000000000000000000000000000000000000..4c847bfce1a003af80af58a901e337b6873a0743 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8y{C&~NX4zUR}8rt40u`}ny+YH z{z_41PtSzg7Asa9|HQ+$m6dy1Q-tsZ#ro?XcvV?0Y|&qR;go^4jz`(LwR4n;MB7}G!}ZDdB4vhV6w7=kIz+^XI{B~_Hs^ndS7Nz iB9rQYA3P>+BiSdJr9R&F&9)Bc6b4UMKbLh*2~7ZCPDSYe literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/done_flamingo_24dp.png b/src/main/res/drawable-hdpi/done_flamingo_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..e89ba95e1b165b41f0a2b92056144361bf181d45 GIT binary patch literal 251 zcmVoAF5M`?5B7uZX$oS_zOmW5AnnxI)g;`!tbEk}g z6r>;p;VY>2E}%bVqP~>P4ccS2s$8HWOtv@Vjky98gh7LXF-TAp1_g@7AV5i&Gf+)+ z)Z;3Q3)E1bbR$~bDIN(3h4*mKm3 zz=X~rjuOYj3`UE@#7=69!lYasmHu@oNI?n`>IdlSC%BDQwCMl<002ovPDHLkV1iN^ BWl{hD literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/done_white_48dp.png b/src/main/res/drawable-hdpi/done_white_48dp.png new file mode 100755 index 0000000000000000000000000000000000000000..699d0b2c466bb9d4013fcf3542d66369d41267d1 GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2U@Y`>aSW-r_4ZbD)?o*p)`x2p zv@<3 z7m%Ht^dV}A;PYF;=O(%P^i0@wB=Xm!dCgn;8-hR2yzcZ$YWcSX5#3*|S@#|Dtm1k( z%TcN@Z|~!bwNgtx@(N7KH}3RUSFmOJRZAeHv+bv*O1MQ>X}in8jc=M&nEFZ+)$SEW znRGppTps#VE3PoA?9wB_<)xYW_X>VomV*Wf15*bBB$xsY{9#hbR`fcseK!j*4j4RL L{an^LB{Ts5tiGuT literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/email_48dp.png b/src/main/res/drawable-hdpi/email_48dp.png new file mode 100755 index 0000000000000000000000000000000000000000..9371641ab1c05d069c5ba2c156ff6910ecd9facc GIT binary patch literal 560 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2VEpds;uunK>+S7Wufq-^tPdO( zR$k-{x!V%k@y@xcQ1#l>E&P$q3DLTxoMp_56lw!r^WI_P{5f;xnRvD54{byby}ds3 z@`SQUHs^(x*f}r=G%&CzFfejBFgO7j{tn5fdOo@QTq09Fk2%%(q()}=0?t%vMz7d7 z&GcOkM^9CDO1P&Se;+FOB8|a9X}gs}KQmL*Ylgl2951}tU+jLCbbU%Kzu-NMaNhOW z%zsT{UbGnHJMd^8?fGs~{D{jV#jBD}V)>5yJ9W;!5m|AfBY&6EuFgLX@|Oi3-E*$d z<(%eeh5|7g@4IvEHMrDF-J$Vt+s`%3y3uxu*Hz>69`1_SvZf%}!TsIrHEI33bv~{V zTKDRNb!VRm*O&SOD~~iR^WL+vrPN+Q+aam*yy~3{-Vxt_U2Dvl3Y6z#JCV{kTj$||hF#Nk^a}9_c`QGYJGEeg!z$Hxul?>?Pw?uz zt?}?4!^$Z;P71vfosiSHyXM{!o+qC=<98m(ol=nBcnYYn(DQ@CK4wTLG9dyK$Xvv3 z^}v75S%=w-jB868HZd}uEolg{J1t;+F6_I8(;;@-vWbso9AHXd@O1TaS?83{1OTsB>~;VE literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/go_36dp.png b/src/main/res/drawable-hdpi/go_36dp.png new file mode 100755 index 0000000000000000000000000000000000000000..a9e83cada534170597ff40a2a7a974122248418e GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e?^_nt0}Ar-gY-ZJDnWWd9Ep=X1r zUrSNTJdFb%7s#|~izpkGybxIOC;#-X!}mAYEZrKrbLq7xqh%awGZLCOfkf=is3@}= zXE*)3wCTV*X%XIbH(8y2SqYirJ2syDl=3*@y@c%XHC-VxyZ6tDu;_p0d9c!#E&fi^ zk;*>XfH~iN*blo(L@4gixcuYhC#lZvFDng2u2+9>I+at|f8eWJO!Jb|*3!o;r+;ZI z)0N9Sy;rJ)C4@zSUp8Ay&?aTfwfOT_Zqk3I-u7XJYD@<);T3K0RZxfc})NS literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/icon_label_red2.png b/src/main/res/drawable-hdpi/icon_label_red2.png new file mode 100755 index 0000000000000000000000000000000000000000..aca721c134dfce30a324d4fc8ad815e412d24dc6 GIT binary patch literal 5280 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 Pd1j~u)m1N7vkUnjZIVW( literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/icon_label_selected2.png b/src/main/res/drawable-hdpi/icon_label_selected2.png new file mode 100755 index 0000000000000000000000000000000000000000..5c68d7861042e02a2fd53128cc5d62983d20019c GIT binary patch literal 2020 zcmaJ?dsGv58XX=|31W*N0xL3v@(@C1k`N<-@Jzr+1C+o9L0LjFLV#pKG9-k61&g*+ z@!9PGJ@lY%D^DW@Q3@^4*hNWOB2WO0vjPcRkm|CbnfN(LIfq-18FcV2Y zgknwJRU{YyEI>(OGM3DHk10Z>WT6Q|E|AJ`HUI>N7RZI790UV1kW7h;MV#*FB7zbz zizuM;V4ge@$&zdOznkWPmEMer6F+(IE!XaNicg9K7x3Jk$ih(h(JFqkwd6NbUp z7ZH!95btItu%lkb!dEO}7KX{05TsVC$!Z!IRb)bxz`#J029@fMBm9*b873_7mnl7# z71)SUq>#ul2`U3kioy&uA7c^mOn)yyDt{v@Q@%bX{J@|Bp&X)+VN*%VKpyY^L#5I; zXeE|_{E_ef6jml`PGg5&FF;tO=qPfeb7@vh=s4@$cgOPkX zD3Hj+s9O07&Eqk-G9@OIi4ZQEMa21JiA2m~b0|?%8YO_rpwKB4&X(}4bSj(5p>Ltl zC{Yn`z%rMOit?q13|r=k|KQSBWX@=x#E>` zp{>Y;@MIuUTmP%g%Uig2Ow%`}#TRdEkH~PZD{xcaot;kx0Lv6EJ3O&qc&bX8>%ej9 zU1|xsIPx^5HmpZ)l}#uvJ$>g6F`Vec@tFOv!qcm=*4CxD%`&{mCLx}G+*eV2EBmnp z53WnMw_fOZC)NJoOn78KQ_4h4-=(j&6^PQh|S*Ljxw>3Iz|8fm)}3qbuA3k6z-6+eX;i| zr!L$1jlH1J>MIu~2cPsAiq1Aqt<{#&oQ!w%>u!0kcO$3%Jd!t{KgqdntgT4SxA1r4 zzc8GgD%KqMz?P8_@a(`E^B;!;D?4)SQa3#zv-xFtYQL>Fzm)FDIhpkE^n~l>grB|y z1uV{l^ZRDC5!1Hz1*g-X!bfHw?2@hJOLGd_xYq83!-SHLherR|nCbA#SNs2M+t%w` zp$wH*t^Nj;p80iwr!35?;FIo>N>HumhTS zUdB4Qnb7wr?FGS+m~}W481H`e%jnoP6dJGptOQ6LcXH~9?(aP7_GwIwkF`~IuWQxf zxb;HrqHs{+DgAp=IcKW;3#j&z-%a(DLsNEW-P$?{jWD(|iPV}E5`BMSpnTVKwsxW4 zE?%(r=Y3IZSS_-SG^TXa85+8v#fZ)!eVKmt`C?B)px3#OyviYm^W&9q+R&Qny!5w^ zyJZbDb-7klRQO!oP!yAVvvIyl_%iQb#k!=Xv;lQ1w#u+n?RR3c`}oUK&Xld65R^x` zT9s;}e3E*9qbl9S%I86xe_)~agZtXx`o^-+$L>MbdafJ$I=p;j+-$=lHlxPXI<8I?1{hEyy~4Ny|`*wh+b+66IgK=&R`p=3F zr=yZhj&B{mAb`DhNP~#fw~vmx|8y*M)>B`m`-{KqVE|fNjT%ogGHwUV-WcIsQ9Q57 zvE0m@nV2T*kJ`5T&_|k`*;gJjFPfj%-68jm#l}T{?Xw~Ml2CZ0-SH_+OA;4Wzq@4b lZFUU6Kj!Wwmodo93fMS!q-g4i*FMvKm&=J|pNmM}`yV1lHWB~; literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/icon_label_white2.png b/src/main/res/drawable-hdpi/icon_label_white2.png new file mode 100755 index 0000000000000000000000000000000000000000..91833264c80dc4387eb107ef164f75a4376fbf88 GIT binary patch literal 4601 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 CIX}_> literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/invisible_black_24dp.png b/src/main/res/drawable-hdpi/invisible_black_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..0f6c51e4153b4c1aa72a8e0c642985762c20a73d GIT binary patch literal 612 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/like_pressed.png b/src/main/res/drawable-hdpi/like_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..b326c6b88016d74e18597b3e40057e597deb0270 GIT binary patch literal 1908 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/menu_item_download.png b/src/main/res/drawable-hdpi/menu_item_download.png new file mode 100755 index 0000000000000000000000000000000000000000..8cc4619231cec83cc7b760a160e5f323c7f17f2f GIT binary patch literal 624 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10B00b(#PvTAY|;I@QxAy# zfk`0a_YVC(yFh~fS7`&uKRZEe7^(MryTShk2A~K?!B)fnyN&O{W)-k}nDJ3uX|^Y}o$&hhxHTwqMbIJkOtWV7h-vp5InMVC#mJ z%>Ehv&+h}3GA4PuyC`hVwrv1%I14-?i-AFK9fTR3G-g)-1=&kHeO=ifaESA9i&;&$ z5(*Sr>gnPbVsZNIWOt#%3Oud{MekI1=f0~ytsucD-*HU1yf;0Mw@3Q$ zz_I?#U5n z08-nxGO3D+9 mQW?t2%k?tzvWt@w3sUv+i_&MmvylQSV(@hJb6Mw<&;$TF6Y}W* literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/pending_friendship_request.png b/src/main/res/drawable-hdpi/pending_friendship_request.png new file mode 100755 index 0000000000000000000000000000000000000000..8179ecb0c21832d0c96f839768c58fc7ae9dae14 GIT binary patch literal 8883 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 W_=t!n8$NzU0Vv9=zA1lY67+xKeKoBB literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/phone_48dp.png b/src/main/res/drawable-hdpi/phone_48dp.png new file mode 100755 index 0000000000000000000000000000000000000000..f0331199dd6e884eb79fce830287dc2b5394e24c GIT binary patch literal 760 zcmVhQZt%_Kf%I^Axc@u1`AS8!(>)dlr$`Grj+a? zsY%3wQi}XY^dN*7pVM=0S$NL5_nvdP_j^8z_imczzUDsnx%Zs!ZBt6MvDOiRKm;NX zfe1t(0ujhwC#s_cn##~U)Efg(JtNGYeMSqV12sH=bVJgCetH5Okq-3L6X-ZUV)jO) z13mKux+EQF(i7;ebf5`OApH@oNd`LY38d?m475K0&^F0H{Q-bZNe1c;0Q68YkiNja z4S=*n@^Z(O06^O%104tev|2LIDo>n?RlFC<^27SzUggBOiaKIgavhBcCl63xOgMRf zrf2w=RURkruEw!gaPk5zjRnVNUre>Y`G#h5<4~y$mNV!eftvS3w_5;xK=ZlvtkfpU zSu{qV=2>*pg4D<11*KM6HWl?w$Sh8GC^c+3i_TSbu|6cwO!UHnw3G8eN^P+K>3gHK z9H44$FSkN^jTXfYGy^@dAU#I&VjsanYZx-l02a+{_l}b*#f^ zw*ma`W562etm7cQqg@&P+i7uJeM0NXFeg1N1(NPUiglz=I7yRb86?+d$H^3b@N=~J zAK^@yFOpJC+V63EyCt1RT?OMLmF`u9L9?Ki<{EJb%`Fh8lt8*=W)vpP0sJTsr?f!H zW67C<55CesNdxBMOd!X4Qa!-y4q}0lR-hXMa<>uPB9Qy$ve#^56UdPs{5*ZX2$dw~U^m_vnkcm1r28 qj+lV>-aLT_L?8kYh!KcDf%^^kTsVJYZpViJ0000 zaP)lOaqah`ftRdfOSUArk^`K5@PMWZ35$ms5S-oc7`(F!8a7Tr6J$G!%8>Q`ocP5j3tVpD*KeK4=P9l?h z-AUe1ZS6m@29+>z#(5BrHzogInV6sqh`wZJA`WkWRuw+dk@4_wLFuBAXjvs)9Yr`& z4uQ~7yr_skqO~=3v=Isjc_c#qCl^h^`4R9$@=vbIf4RE<$~|rfg7=YSG~UO|J*w2q2uY_&3m-? zyZ!ORqn`IUYHsAOkskqoWy}DrX%#pzXLpip^@jIgI%Ihu!$qF~6cr`PA2Z;jEg5%@ zmfntL)}mZ7HBb2ISAD%En(jW}nD=TMU3UeDwnUmf;JP2usz+YN9Y$_^k(izj3-sNU8UW!onlQR>zVS{`` zWlEdt&cz#zm3I^S-mFz!Q`n+j>z7Z4lOj5Tigbg$w2DO9_O1)@Fuss|W8(E#ql~wF z`5l5ObNtLHn|vv83*Um#_4LQk|$pPYQj zBF8I7NeOZznLe1&N2v9s>yohsWMH_i+QyjI{QPe}9KXEGYKj&ux%7=0xV!Shsc)?@ zb#Ystj0{Iq#R0);)SWQDW%?yIgSMa|U@@C6Lito1H*G{*8y&5ae0f$^vSoenqXhk!7NZsuM@KRnFOfX-tE zrupI-s4FKVTy*1kUA36{1j-lmvXeXSPAF(6*`(BT8fp&8n*xk1PsW*n z0WxpzYEW?P5JJDQ8Ix%M3>@ZbXWS|vP*}mZy2jBKJk{Z1ZVca8rXx^M!%v%;=fC7? zq?}O|i1_!4zUTB_#t%p;nXbVXr~4vC&VF_z)oKn~SuSO*KDw+BF159miLbyFR~v17be z^j+6m0f@R&v+RUeye31bXk}QlPbG zY;k>GCjDk}mNC{4?i2`;A3&RG&@JTG3ORkCz1P}MZ12-@LX(FO1Ug`dK!(4kb(s-J zpUoej1y1VDt#Py)6j3=Z|9YCYiLJ)AvcK)N`u*4;iDn|5Gs5t3V;|t2dwranlr62# z2A-X559v9V+1h}z%7Hm%(GFH4alv^`IUj~F4i|!Ev>vp{bnQE>*2E%8zYOSv&O+Qx z9!_QSQ}*qlVjCYGI9V-ahbNjeiU8!)>eeMT(6?e17EcO=334->&@Tdv$DrGKs_Kq9$&Zs5P$+jA_5)6cb>VPamD?0+>TyX3csop!?G0d-U&Le5+EW)AHQd3ZLCEk1@G^R}0%MjI;QUDh@iU#{o0iUV);7+0AJCS37OPX}Q! zd@VVtd@R}uDT_cA%^Q&nT;K`0K}PKIONlKB*K&q;yieHA8)_;TbZ%@4yRe9YEg8pe zdx*Ja_M9L63c%UFi&gi|?hKXJsTO=H8%m3@tx7%w4x;6tE0yn>B>4PUWFLF6k`kXf z`?)rQ;PZtT#r)1^V!lrb_^aW&=Ww5;Uo_3zQ0E}St&q2 zXqDw>iM@5GUQd+V%FO`wPgxFo{3`$ zYxbr3pN{t;j8=U&ms-9JwO!^Y#yF-L-OguRefP|Tzh!QNF$~Ye*3?msyR6K1<(44L zTcv95p(nZG;8F)i^SJd1MU56uY!YjLgs+!x1-}4bRQ5qsY3y}Ro9`j@(YY4I+2WfO z5$UOZX`&^ux-R6Th?QGgs}_;@0}aUnjF4Zp<1J=h=v9dS79}aI?ktxnKP|uE-Q%>- zF>kTgZSf>gE%D?;+~TQ2F>aUY`)ye^z0ADkq$eFf+fAn&O|^u?%$9OC;5EI@$_|^B z$uH_Jh8}$#-D)%)`GksBW!2E9jXgV7q9bxvjxGJ&GHrXuy@mJB^ivkKJP(uPUuglE zvFzyB#oDfOA0S2bK0;xcUzpEjBzoCQM7zxe`b7K?= zAM#_#+P*^xx}X&?xL>_sM@hKxkJzA?*dsS{SA89v92 z6$<6W3feLFY^8b7L|iNqgeI=S*JYx^gS%WGk)SNC%E*&ryF)R zU)sM3`<;189~*&uSQM`Jt^83iqp5~F_oS|~S= z{h*UBqQ;YBv+zu85Hn4s3bXDfhwq!+YFR@KYllDH(R&b{_{h5$(--)&n>b-y=N;EB z3ORgdx=`S4?(@^LbH`YN9d7K+ycd{8dY>)Q4rE?PR!_0AZ}FytrSJ z;&oD7P_&*?blX&N@%$qTcE6Dli-{H{pObJs&^0F>Qzd&nyP z=xrwANao2mD6H8@9$-71>_E1|#V`q%j13t#n}^UPvE%6b>@5x8bOodO);b!6c$MJE zB#HL!JK5LV*Q(?rW;DSENzh5Ohuq>E?U*!sxC&P5{j2L=^_ZIWq&`CymF@3Q_4hPHyVh3c38-~+fL~ef)9TY@S9y98jGyK%G7NXQLP8E3@Ke( zb}3s)CijUR8{s#G4N_^2K9q)>Xt<4><&p|UAd+`tnC>lkR>gKQo~?I9u=~{KmLMp1 z7HBuW$t|bGE-VoS1uy%%JXgDjxbof_HI3PO*OaAo@O0V9JF%I!Xvy)N{dkp|-|lu1 zFNZ_GRo!1`+!Nx5Z4Yb9+~_W|Ycv~nNnD8kj%53u%}_AM*HN` z$y8gEQntK9v%k~mL0QJet9faA)Tx>(z~uJ6&)Jnq570anakhp49% zmS17hv=*4l?4viwXxfa%^0ja6U2n9&L`RV{I_|_Izlbh&J$+F4m~0xjc}FnBu1`N? zd2kV&n12>N*~H^H&hl}`Zuk3yWx+FRqzDHJv2!NDNCFqKa~q{=D#c;Ruyk^BvIaad z`caYRC5j?tIkjRP12upstv`NXCTj5BfZa0(8UN)5JH8C6 zG<7Fg$H&&r{nkh7dP!d&N)~eMK7|X)SJFM?c*x}hbQFop6l|3W9sm3r=$N7_w45UT E1LiJW8vpQ0J?*zBk|V{b*}jO^k`geNMTSG$fj&@xtNeKF+z{dtUeaqR|A< zwzjtP(0-fER%EqWuiEYQCX2<=wXw1BH@|;ltr$vQTwILN>{ZLk%8E3b%^7oZb7!1R zrx}`uR-iS=4mni6rsn4XS3f&DTin^%nUkHJ9T_w*IXO9o-rn954u_+WgO=6dzBB>2 zjOPCA=;(M4P%*&(6W7(%b#`-eb3z>uNVCH~dHeS5kB}EQsNCG#eQ2f-VYAL4Gy&D! z-F*U3I={gfjmA)zkD=~=ok47(>6+}PN7C_X;k zH!zu*nL7ODJhxeK?oE40v|h#~Vs`~2sO#$LQn|%mXy>t$;|kaN`}+?iCMIfk^PQ-P ziHTEa=Zih-MC2rISb$Fmol`z-+0A!n=pTB~Jy!(;ZlT8QMT%7KQO&`{itfVgcMo9njUr?s`Uw%Xd-!xDL{ix#yCh%|%D3CZ)) z-roK`;C)V_Tz&*zqd$PGj7v#kj}9hlM-L7T9_D6d=BJ=4D7&w(FHC_-WL)cume8hs zbab?V3mSX{BtjoDzR0`|)kaQFPk(}cjk%-)d83ACZz4F9eR`5zYW=#lOlv0&``u_d<-9MI`>8Xui{ zlfbyu+S-~WDa5Cu451fcT$Mx7&^6|a>RAcBapQ(*Y;5cZnz%&RK382`onSJVwt1i3 zE$rnI)I;wgE8N$@EQF%`MQ+hA;f;WC3bhY8EKWi{EiElPJv}`tBO@b$J~AaGC0yoN zPa;p9S5JsHFf(NQvzRK@-{LG5;TI$l6sSQoa(QHA$K2Ka}PNcqyZfSgp!8unCRTrZ6Xh);bW=8 z!^6pxzll7?dU%2lWIH!WRRMwGML)#FC~U-R;y{=#jCl6VBy}c9l_4T!-rKLvz)HZ*Evjsbrjs@yFJ3E)KNDe>yT>#Y5z`($eMx!}J8|W{y z3V`Mu1StK>z}&xoUlQU3iRh5EVM?LT0?Gb?h6qS z5u%t@cv)H5SJ<5ise|L9Nwbxel|N$bNVF5OCQKk16&0muX=#ZBINw2K|CR$dt{`E}vu$l{**Q5mJE2MJ0ouEFZxALpj9}16 zv@RELTznB{Fc?gb_ps5MX~UUnPjhqg4n(Qh-QC@Da?+lav=1q-si}!YD#Di5@zA3t zlj$J^U~&V;Rf`Z|KSs`WlCl7n%$0zLHUb>GT)}Y#3IFyK78bq?+7DonZ$%*A`T@>) z)*I83nmIbt5G#`F9Blk{Urmc>Jq-`-CaUDK2-+#wI|rY|!FLHFU?vV5$MMYtogh)3 z_93|sUn1rx<3kwUJ zzXq8bA74c8hQN0M=5`iAaEQmjb*sSN98iQRJH7P~eo8mv_);G!A+bF|P*@`3V-n z5};*M8yp-o!56(9A0HpIR>T~Qh`9*h*t`wGRs)EBPjt*e)|$iHz?2GWt*xzhv$M0~ z!o$Pe(s~Fe?{hdTv$vD11<>s5EVD>>W@d&tKu+49uBfQU1Qy{>olqdE+>a0Z1+fVM z5XDBU(gmRaf-K_wYhh}y0+T>j)7pk?{T!Utq%XPCdH_-CLB7owp=XdbvIb~*{r&y@ z)6LDzUn9c)Pm6%qK}=rlYZ-MtC(SCoVC|$=n3)}$&|O+u`j!KnCr_RP0<}!U0#m+L z3gt-i?idYt(DC`DJ9qAEQowWXLBu@7q7e2h0JI!D0;Cauv|oV-p3&>|Gc4-NayK#8 z_dp6_0WRki(4Jo*^Q<1c+6&Ch%{elC79s?TxhaP%KxytOkkRHrtU?3iO7q@!Z7l!o z^z^jg067V(Re>G3(A(Q<5d$C=tu5pV!~h7mP|s0;0!Y0vJUna`+6Pf7Vsv!WXQ6r% z6~}}Gh_C=AkAcnm3TV$3*xL;jZ7gz4R^1fR7U7pG3*llj{J1X%34rlU0vPxP_Y@I${ns$?F-Ed6$jyO=aIBu1{OQqRTCBY z`T3~;s9WfAhZF&#zXM?zR4UbL|0{K@s7Hq&i~Rx)d&=8m=G6cqYDPlLL?|j}36RtG z%);+bv25FVjS4YURaH9bHD+D3r}Huv!n$Zr%!POE!Mn$MavmQDJ4}PR8Tn@Ta-?|z z2kdQz<$S7CDuX?3mWn{Se{o=7VCGpq7jxEr=AaP2xpmBIwA%$DHabM@vwTdAKDQbL zOAR2W-?2k`y2{GR(x5#-d^=L(0d0OBcq7;@~gchw%F(P+@=bT9dAT5fz%FaoM{ z1Xg2my@~(}n1Y;ZYHA8&dKJN?!6CV`v$GVFSmkz^h03T{d)3XGH}@eB4p0a&sPh#Q z9K%EgKAo=;X&yJjv`!%?6!zvJ^-hEK|G-E#f2Y+s9X^CbY^LRR9V`Bp}8ckwDL&GI3=piM6)WYUGTN7PqZdwD@LMNlYV{Q99 zzJnnks|C<~^y1>;BXEXy={6to9Rox!rXYCLgU)*pf>eRAPGC(@qWhiozC$QFI$D{Y zp1w=1R;S*$aYIxAD5+UlS-a!n;AL-{rj1kQxI`P?()?NZ^6)Tqz_O@V`;C^nA}91KOZQYqZi z5vNd}g=_8<9hP$T*y7+Q>Lu6)7X^jb?iFq{;G&>V#}*S#7XxD7L~iC|Dir#lxrQ5% z$DWihu|=3|DT*zXqHFUITWB68RKGF`vTgTksM2E2WjCO0P_{!no0ZB16|y)-KemjX z$9X6&6$*|^i9&p42!c_fV7MGm5L_-Oa-2)j8jP~RolvFNfl;Q9vMsuKbYPSY*T!o1 tRiqz(rAztouUdvNjA0C87{eHrCcY*ORz@UGaQ^@R002ovPDHLkV1j|)s1yJI literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/remove_white_36dp.png b/src/main/res/drawable-hdpi/remove_white_36dp.png new file mode 100755 index 0000000000000000000000000000000000000000..cc99acebf238a2375c36b10d536ff6ee615d0fd4 GIT binary patch literal 392 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/rotate_left_white_24dp.png b/src/main/res/drawable-hdpi/rotate_left_white_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..2cc05d92f0baeb908b77cad33a3edd92e3f52712 GIT binary patch literal 503 zcmV-Bmsx z0neIEod7q|eA-s17rcR`D)YnONz-Mm;8I$?xQ$Sb3Y9^!$}>aYQPcK9>Y7RAO@*SM z#DvB)&klln%{i1{LM2`2>4Y+@$dS*BbwM-FH~Nl=P>~f#Ik;lxSiORY&^j%Fpuque-Hs_R&?@fX`DSjkf2ecL1PaegJ zWhpOpfkkj3iInLWahe##tNu_VL4Lz$74u@5W`c^aqVoE7sp z3aEhw`+NBRB@|Rt6@0V!!%teM0N$DU@dVOI32h1<7);j!*cP071Y=2!P$BfNYmk%t zsUN^-L{_({kQbV!3(zU4vU@NRkyQdOpvOe$AT%-^lCr-A!x1@o@WZd$(-rbU)ifbl zhi<^2Bx{`He1Tpap$Z8(m0UN^<>N;CgyfZVgz6-qXkkU4BYDR2jHzIWox-_L0!86F1wjVR0_TmamD%>{(W(AdIr9mqTny@;r zoJ^?SS>kO9{TZlNJpqh4@kuiA<>H`~mfmJ^OUNmH0l?eX43I;WrvLx|07*qoM6N<$f>XiXX8-^I literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/rsz_icon_label_red2.png b/src/main/res/drawable-hdpi/rsz_icon_label_red2.png new file mode 100755 index 0000000000000000000000000000000000000000..8783e4b5eb444cb1287008d363192f2fa5d6e453 GIT binary patch literal 4532 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 UXSc(@QVO7OV literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/rsz_icon_label_white2.png b/src/main/res/drawable-hdpi/rsz_icon_label_white2.png new file mode 100755 index 0000000000000000000000000000000000000000..f5124b7691e814f54aa87180165589df1406b76f GIT binary patch literal 2627 zcmZ`*XEfaV7X1@Oor^^8M2ix`HHZjCn@qGYN<5J$LrC;H7(^GnyBNK9iHk%Z-59-h zf*VmIdWcN8ll4BmweI_H_FnsU);?#g^X0dr9_z!ww4Ag60Dut>HH}D2AXOzb1qs!i z37RCLcmdOc0YGg69nqSSr1@~73bIWcq zR39mp_N@ngUIw{*d>Jbbw!RwQMoBdpXH-3)Z}?h=zRrPtJibbWyK%LaQZ?Q?W*M&)};Q`~U8f2(`uhHw?vEkv;sntJpbnQ2l zRIiC*9^f*Gs_6M!Dd*VSw7u9q7P=WZ0F$sQdQL$|aQ zaE7u1kmER`P0)F-yF~KsgSMD1{d7f53M;Fwxl#+xs#eO8wc+3isGItCdFH@mTol+-o$IMk+Gu(qmlgp26d>SvCzeGg-;j)F=@p^4J5tz_Y$* z_Pq*kN3<>@_tRHa)2|IU8jU3W+&7C%0EEshPa`Jo3>&sWcvR%mx2dQhZ96COdOB1~ z%^AH=CooFzN}nZnV>zzA#V-^7+$9HRA_x(2GCy+=S7=lmoXEOc)i&NBfr1#3;Ul3s ze0r(1CQ}Q{gx}|5bkwfDOL)}l$_p{{GX=RIRcc=Go*X~q`^HJ3-MT&$m^Y<sx}YV%)sXzP%fG#|t-B&)#KoZ`bW@^OYBsduVgNk0ys92fuR_O7`f zgEw*`Oww*-#B=&a+{{~4ZY_h`hs>JuetY-(eDTo%+lCOKF7-Fl8paSrkEs;Lk~ZGd z_X%yWaObw!U$Qmz!$Y36%mkDCy=k+6DXP+6au)T0r}_0vsCyj_ep{kMclW%zMFv3< z5;JNJA)-f73T1X`q$w4k?gMbPYJG9W$EaySM*U-30m)za^&3-cmOCUHJ_#KJ(%!G}KL zg0)ZWW%D=O)|EKj;pLsNrsgj_B{ew|8{!i>{xo5SK35_8>1s;6@q#W$hA=Xx%=ehU zIHve5W+>MzD^0WgzHL?f9EU9VEPl6gKW>s`YBoT=xpWt<480OKFfC6kC2_MX;oFD_aiU1hk(rTE_I>*6&drEqfA zpIL6;VD4_=3u-=9XrM(2+}AtiJ@Gx>BnUYpef~4< z^lO>}-G+gKPPv4oO2wh_LqWq*_xod%p!G#Fx-#Mf!_Fh)ot5W(z^MQ6UbEjGYQQjQ z6YQ$0&0VlPLbQ86lw8C)68t)ti~a`HGi?23tdonewZ@D+mj4PfOF9Kp97CWN793m+ z69sw5$3AcC2rpizO_JIlbi~vyeQDcFnv3Dwc!qFrdbz!~e&eNd$MMCbEC+c+Z$qv^ z5Q?IP`^jNdPC$lecqhJK9Cktd`Tpi`JTXF2o6(}blnhjGv43wYFG$i2nlzH~Mj5m| zlzzObbbINIpk`xMI=iyUJ90sccG%KL|6`RPy5`J%`&0^2w}1iwxxw zPUf?>C}**ENBUnBMqy;=hEmkR2AFL^*VkM0phBS!23p@GUE?dgTtZY~N~?ZmBuw$g zMB9t=nWWt=?F2fOax*_W_BjHdJ+NAxgCkPVr@ONKt)W#Z4YuXy6X4QRJR~kR4n1wR zj2u1iykyKAwd&qr5YNdKo3B_Oys@L7-aLROms@nmxYp{#jb%%I+(xHrB+~-!84}TY zX4*I9MlwPRYhn63NX$pnlwA^b7%tD-WmQ(iRVf4z*w3t4vS4Me%FXht{WkBG4OI!I z0H=hXT&;VgKY*L&$->7k^U^&gUAAt0>w(kX_|oFDrtl7U{vfXHfn;YHd;pzgWT@&) zKfU_G#~!m*m2u%T0BhLH7t%$+7&>Mv>wLudsnDCphVeg4L0+Nh+{%G3Y-~Ip_jLRv zAA0umxk+-LGT^Ahh%~->F-L`~yoP%tinJ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/search_normal.png b/src/main/res/drawable-hdpi/search_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..d60db3f51ff0488ebbc1fced33ff35fef095e793 GIT binary patch literal 2349 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/tab_collection_light_nomargin.png b/src/main/res/drawable-hdpi/tab_collection_light_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..124596e66b565bf0f8c0b4606e111ea8cc130ac0 GIT binary patch literal 1686 zcmaJ?Yfuws6b2pQ9V?b3o5TbH5dr~;CJZF0!56SeHjsv7<7PubtP;>7 zSZ!5Wp%uXwDzz}>B~&Y9ELv17j-b`TDAj;etB?XdKx;P$*dL`kv->^foO92;-~DC_ z65>}7-R8Ry2m~TOjwixL!11~`<6phmJd6*%SWFToMwFNlLSX_|fyiKhuYuBF5ezA^ zHeQ6o351z|N|J;n2?cC9q9H>L4B4d7;cNmSJi?@do^9fg#&y~F+_6m|0pk!% z%^|%ul_X36q7f7ZmXWE!aw?MwFhMd%XRuhT4*?n#q*ACf3P=kES!_CuO{D@84+)Qk zDwJ#yFLojpzT%M5F-*s%P>e<+*+?fNXc`3!4Gnc@&}hLpB3PfL#UN9#Rv$R2z=QR2 zRHegIh!$`tLNdgFaY(q+*C}XpQ?gq9M49k{QB07I0+OkYlqP{f;r~N5nklp%6Txr% z{->~BlBI(wB3O?YP&s~Z%0Ndb9XlF@Aq+t!2$C^b#e{SOL-gs04u}>n1Eeag0x{~x z(Ly1cuhnCaRu1!d91_kat5gbh3?rILV}$Z(EHDNHW0)ZfIxU3D4WWXx*eDh&bdt+M zRnvQknpSUutC-$P^t4;)|)ahqZXGqj*yb+}F**?}`VX$Ca3VYbk0+1c}~1-!~{b1%~{T zL+SNVFEZ41=c7cjocxw^hoPUG-Io?bSdRLIky=*EdOd-8H(e^3V=kuN8iRws(*9HR;T z+_$FhnOl{mJG*dGDMM{d9`y2fU{}z5hyHs0g4I7X)1!o7=y7TMBdIl1m-sT-EJ8`3HzAWAE-lYdQeg_NJzg?U<$6wOE znQDDT((ppMAc``A)2 zwDZr{s`PGXTiMIy;MjZREY$2*=XAGb!1h_-xfRdaw(pJ{jtIMzS2nzMamPq=WG4uG z)Fz|HdGLqw57;UiTOljqVZp4kUDl4PManPXjhe_CcG+g{fHLKBpT2q5tMjPk6$u}7 zuGo{0*=gR4{D+ak3dzR>*9eGbp|r6{Fr!NRa9#3 EKOr%mssI20 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/tab_collection_selected_nomargin.png b/src/main/res/drawable-hdpi/tab_collection_selected_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..385f3bf4953e120259bacc11bdc79b00959602a0 GIT binary patch literal 1727 zcmaJ?do)ye9G^29MQeK!9h=(_n_*rW!(@bcFxH46CQ>tIE;E?9*UZ(7IZI(3S?PFI z+C)lGvTd=4LrV@zp|%G-RA-YyIUc(`P_lPK?H_CJIrsh^=kxh|Ki}`~`#U!?z~9@% zc)c+OgE8Uxum$J{=-*|A=vS@Ny+#KMgd;?PpeRHmR)H8#DHI6;JcT$K6o6uBV*EAG z4TCWNHLEwx>$*;6u-?KaMLnS0R@PN0j(lVsb*-I_&Hq$I@fQL@W31diDlwH znG*5?02ZVI0UD9)C?PwO0cQ%4;tGKEYcQ%Mx6BZbazqB6*2VE)0Q(NxkX zhJekTkA<$7co~Ag3=&DB(GWFGL`W4)qPV)c>NTiTM-<_xPE;adt)o(Hy`aDb)e@B) zM&ytZ&?|}~p#+49N1c93K>>f3RjTL9gcgjX6~iP7k*rT?0m$e7KUAUkj8-E8@QdI7 z6jlc(!XQZis-Xmx1Uba)reRr0eNgD9_16|aw&tuVzD_avKN(3;ZP_XXHOc9>_VY9v$-4^&C{8)z-2>{ z1O=!>7P!(cT-KsoeIqDfG%_1h$@hX%t_o5Ba|tu#i+gchRBxUuUEGW3qFfSchNM5% ze;xC}7TP=d>F1_J7oXc6RHD7ELYsQ_t~wXJD>NS4Gg$ku^~g<#@42>p@a>b2x}MM` z)~%TI(waB2UvdhBKz6Iw>8q*PVfSVID}dqO4^6HL&n&E6xyoTn&BKCoJ_Y0FDl1Bo zeBIuh7<-*G)_Jt6xG(*u69f50bSG%E$SL~9@%T#*s*dvFFGYOQ7cgpA-D^i{z>TJ^ zhAkbaT@$!nn9YiqjmDjUE`)K3-4NEGzR1Z-3wqtHWu;{G6OP$q*IF7Bini57?d;eL zhfFcojbIg`r3X@W|M3+y=sQBOb!&>})66n$I@s?r+i268*W<7*^^S-ntjeyG^d0E% zZ(&SqCYb)nvU8n`GV?m1I#-ZdHLd9X6Ct`>pvlWO_Mk z?PGS+^{kkb^QGy>R~!{#YwVx7%Vt&-PH%;c;+7`G#a`OkY$ChYwg=2TIc9XhW{_b} zeKCR|!d4B=-nL!t_kJj*+#d4Cd&4cik^!0uH`L%}S;^0D>Xc1M!$A(=R^?d1hReHf zW*0vSCXT$QFdgr9eAc~!gdns68+%fdv zrY=p@SYp2_A&r;f=MiCEc5;2PA{jU}Ea=^{eRd5YN#XLFZPc6?WyWuti|7% zzCI6HF62zH&#Ks=uiRmayE!-ZXExor99vfwn6*0j_4|$?O-`>*WnZa1z<-O(^=vy=O~B451nFXJ5y9a#dkC7R);i?(ZPlr)H?tP3JN zS{=Fr5KmpynOYS^xtaHy?Vx4^G@6X&`}h2~HRF8QGIq>gRCDbyr(tSt tm)p&{v=M?WpFf7TzcY$HQ!=;@XO6i7oZG8xIcTQ;rSLfZ>}oGj>OTajs}ukL literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/tab_dashboard_nomargin.png b/src/main/res/drawable-hdpi/tab_dashboard_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..a03561b5a0e666cc0acc4804130935c769849566 GIT binary patch literal 2425 zcmaJ@c|4T+9)4{pYYxd4V^p}7S;S;AiW$4H%vh$AZOptFV-_=m8CoorFv)R}{agu^ z6R9joT2$01igQ!c>D-hh3{%3nq?28Dcq@aP!m zUrCYheh@5+143-A;Z_v59UNkZutwPIK%r2U5F{J{hry9B1kwtDLfatGa5&`a1C>VO zP@~WUoa@(E(iH|8!{f2hFj!Jjl68`eHH#AsL)hEfuWBHXR#Jo&SHR?v`BqG>$(jNV zrM5!w}Z+)sohLc>Mo|G8o^` zTpj`ZJKz5)%ncB*K^Ot#vJyBHY2%_yRztDTSPn?$u{Z%NR@~Yt`o*w#EN%>o4Z#v^ zA;B~zm6gQ(g2v;~9!xHe%%p%GI1E(Ex2DmkXjhao4h~16kSK%;0^wrkjCHofqFi<$ zP_8yR?d=h3TpWv%zyO)NH7@mU?#}OWSB=16OC#ez4lNO+x^h?y$d`iAwD0F)`(3@S zT%EFMm&1*-rvS^u3|ahS<%)k4VCnb(Dh^wV~>(k+JCOMa?UY~ zGB>W)&W0%!;H3s zo+`7N6+;0XM2&f8hTydJG+$JEV?_NW9ZWoG7Vy*$A9;GFz4MX&z$10Dxdcn?GkdQ@ z`9psiqa4}1!$>z=Y%$TlC+pqV>@}4`F3TQA_Tz}%S)r!6TZ)JJ`kcu+BcY)i0by^Z z1a)%cKw?M_yqCS}cI(d};pK1o?Ki)bfg?7kO<=bL=?{N25{{59a=Ah7l{lrz60j?rPx~tcbd{cXWT^y*QSuIzDL+`0QWsB53=|wwWct(TbgciD8B9{%#A1{1 zlHss+;b=wb5(GJValr8M#;VygZK7yH(3uNUD`iF(!CS=*fd>I6(v(6i@^WvU>TPnF zJ_cN=vz^s2!s;TU)cO)Idr0^86eV4|VW5I>AM6l|ywZHSEWOTR8Zo!-?Kgu6OD7*E zmMQkXh8C%wNh+D$9t6LsG4RjA@?su_b-g7UJQOjrL&X5K!Z6I0SADfOIH=5u>tG%_ zo)uxtvr>S7f>K%&*la;Te943;vz!(?4K>pQ~5)RX@mdy(j^77YdLPxAOyP2Z}N)KHGb`ag+qI zZKrDw|I2ntGH&5HAS=Gwd~Yslr=d)SdeP81)y>8`eK|Ga+wE@g^h%2<)pZ8q;%zqG zwIhsJKXr@zOQRNwzrP6jA=T+ut-9vDV@FGrT_!c(EN>+mAD01W&c%+Y+_nw79!K2K zhb@Yj4>gUn))`)END%~k9*nwNAw1g}3SLsm3TKa*(q51c;ySb3xRiL~^8 z-{08Qa#lmp^+Nrv1@p3-U9&-aF??%@QfoUkcv29iCx7+NP_G+6TGa5{JA2$LTPAPM z66oZe!O#DDh{Uhe796CLqu#zX|Cf-m{MbYObZW+I$G%+ofo24)^GPF*Ym>p9=B@~$#S0* zQuj)jU9a1?bYX7E(~Ox8)HylRi?&skn&%poImhh_L_Nh_nh39#fx#{9;Xs93jkcxC zXo|Pla01%+Gq!@Pfv)UkFB!>I&$-dRcVZ)h&^cJgzSE9p5qYBpv-Dj<<;-p?5+ d%Pa(^$^bQeLxRBSuISavkcW#8uHHE!{Xdz01(E;& literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/tab_dashboard_selected_nomargin.png b/src/main/res/drawable-hdpi/tab_dashboard_selected_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..f59a31c66fd1ceac6b108f951d676ffa6e537a8e GIT binary patch literal 1966 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/tab_profile_selected_nomargin.png b/src/main/res/drawable-hdpi/tab_profile_selected_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..efe2b26b8a8e25a8a3aa245269bd31b23553604a GIT binary patch literal 1766 zcmaJ?X;2eq7+z5jQHiL8vvx_q3&}+wWF-R0k`f_^1SMRRm@FhhvSG8BLllaRN2?YO zkU9!=iqM$rB`I}u-<$@G#Kyzpo#ETq=%(C^G3+Ug0L9|}hpN>d(K^|rEkaL3bZ9;%Ck`%)Y7eD_1Q;U2Q7j2Xb4RL}phR(0r$n`&KoSBbt27E!uNy{- z#gIs&!(|#dB7%7of=^Sa6cCdy;B$m<2#doMGMUk#TsB`Q3}J@C0zQ`u3z#EZ7?tO% z5e+`VRea)xj>@$+f?7*Nh7nA)5>W^-R1FR%45>!<5_KDGnLU!-Hl`UlC5;l&S{>&R}T6>Snx zN)Icw>2=t^1V56>7+AQ<9RdZPufRQ*Z3--@N^LqMB2^1rjUGaf88mqEO1YPD?Yp04 zhC-l>op~`j^^^};Th_wx2PWOyGwZX;$~JR*yR$wbQx9}rgPlwA*B$iD`riLUXzk?_ zza^KnTqAE-%CKOW)H7Fh0wVYQ>ErsO8Y#RK0f~;So9?)- zyz>(rZeF>uvWE&TVtA~d>c)ug-_1H3Mym4YKUdM472w}CVOjZ$1zX5T^^>ft|1t;r znUR*)4w=m}8q26^X}Q=y9-R4f^Dn#y(i7GbUg8U;Rn+qb_ttA7`C}(HScA7BV|U%Z z(eu`@xzEs)S|jS)f9PDBDGs|b=0_J-W#_h{*{4YzLiRH~CAAfvvzwg2U#h$Zr{6!a zm$ZG0ckg1KGRE1i=5;Tk0f?e`%C1F*;VBxM}=34dp@wq zqR87!%^r$3+0w30d-KO)^IiHwZ0USKVDqc$dt@u4yS*>be9Ct*K52c4bHjj_W72s` z{#)rWvO{TJ&Fw#*)a0C7l3w|I|CG5kq$}Jrt&} zbfn)3nA{WYTA+&9S2OSTebuC{2LA1rwI{30woEca3OOk$y*aVJw9{sCELv?I-)>!d eb8BqjI8Wfn_~*A;cg+>q|2(4Tc=#wkv-lr{ovK*? literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/tab_search_light_nomargin.png b/src/main/res/drawable-hdpi/tab_search_light_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..22d00147ed5bf5a0cf69d778e1614ba20534ec86 GIT binary patch literal 1690 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8t5S#j9A0|);v?-uz`u~f`*w1_8FkW|dA)Vw?M$&p(FZav@P=hx z-CX=2A+q7&$4`>;&((jD`v2|YJH`#K{|D`GNwBQ@wu{Gw&-y^@2dO6(_Gyh<6QuR$ zpYm}@kW>2LCX}$?zhIr77@J4q-aSuM7Qem8C&n4Qftl%+3ZwVM{{a#^W(#k6pnONz zqU*D0^p%!|n?Zaz0>A7V-rCKbT>E_K2}}8erqZ7^`$AP4e$8rOJl`zOxcMLJj!|hw^?LO|MxWcFi^m);&IIlew32 z@D$t(xoM&2pnkyR;atfFMmts&#qE<$nB<&ywLmz2`JEgA8;0{cMXncrjAT2u+{ydkG!@hlg67^yE&Jq-SYf;sw_7DN&i$$1;29J3;ybwGW!qN zebYUFCnEMS9=&#b1R2zDRWEIsSG^*`v=mrC@%{y!pJ3Z8{`lbaakx zp8Q}!Sn_3K$yNK7W`8q0m(_K`wIH*l{oIG^>yHcl5l&zbagtkBXRdc1R9kqu`njxg HN@xNAYOaJ2 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/tab_search_nomargin.png b/src/main/res/drawable-hdpi/tab_search_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..da68bee12ec0ec4bca9cef274dd60f545c5b5a6a GIT binary patch literal 1836 zcmaJ?c~BEq99}TA62KxNM?hT`p(v0ONU{*l5RDRsON>=CAz2{RWW#2KKs!i4+oC9y zYCRAGzH7-9vD@66ALuO>6|6|p$t;bJ@%O~TWq7y^XI(L@9kDy7Lt3?h|hq}C$= z05Aho#EEgSC<2zDN~+X|p=y3eea9j=3XzA(c)N~dV#gb_ZE|+W6U^2Z4gtsO`g-f;GDvj%;0w2-HFohad zpeoR)C{08+;yj3m^kWK2^^~kiGf^g@U^J~%O=D2$#*`+3BGLatmC7l!29H5L#rvPa znz#%#LW@B(=tfLNG%m^2=t>QTVTcq*u{adnFj>W@6ck4_DX1C@i}eLpDpYbbT{Dgr ziD02hgG*I1M9Aks1fQx<$YCZ|z-MuoTqc_#U@*e{LVN^1oUl+j!#C82D`0acxqMW% zQHiMVNv`}8H)L9_aS)Vh!ZRPi6lsWDfT2ooJYiTdeJt#0^(MIT>0{wc%cT*)(2Q;U zSDPnI#OxTiQ$tG}rp6vo5wngFLmh0E|CYEbM}+*4IBolxJ<6rA(GGQuFI1|V%|0ii zJ1YWr_ksOkJFRW!#(^VAO_qYe*9P+GsCPD$5mVj8+cuW2KR^pT#;jXQ$$CAdC6KgR zsGxabMMd|YefVS5jcUzc<>mQrQhPcc439NxN;D-)F8B3$EI-@TC2i^GXc)^1Vo|n7 zTy>Usi_H&6-03>&zJj{$#v4hR()-U}G}PC>tsL9??d^`V>S9NC4@n>gSbRQKba`}e zsLJG~j+U1?QyyQwySb%>nb&{rXy>BVlXcuxK9u4aPYtY2Q!mG_YAR&&EmCF_wUTZ~ z=nLN;uxbxk#0l-rOYbK|n6M47A2+_PH(-~;(sO2|8{rT2qi@dbcr^d<{k`$ESk%#> z66X?Nc?M=<@ut4YGKcc0#ANsksY(0OHPSrE>=dA&7I+iB#5w@@#$eNQ@~?|?xlN$3 zuq+!pCGL4J@08B}j((-Yw{Nyv@FB9 z^mV4En+`VLRUXl5IyR?a>|STu_4%%2fd|nQTY=5TLFZZaZpB@fM#)u0T|?DwHgpb0 zd;kIt*XIJ|!2t4iouyfg8KcKS4%Fwsp#2$aY$dTCwr_!rJW z`xA(y?AmC;-7<53sNJbm&{XDnC2cLc?3Fu7)t<#kE6C5!Pl(Xhbw?-l+I4*QoMX-` z;ybNA>Geg`no4rfjS(GXt#gL^=&StlpPO5A&Q?@-<%#qmwH6Hni#Y7S0MdaWrem z>fmiXT))WRUn6_*V`+W!meeP;8z0!#% zsCx+yil1i0$MSFHTI{Rby47l)Z^-IBiJM3cKqa_o3zl_e$oT&fhDY)%LnS%?0Gnme AtpET3 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/tab_search_selected_nomargin.png b/src/main/res/drawable-hdpi/tab_search_selected_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..ebe50e084af99d60f1a8bcf9482673b1bb3ca59e GIT binary patch literal 1848 zcmaJ?X;2eq7+wsb0|q2jK|x$rjewGD5+o!V8s}hn8#E@)E7IRoDmsJ>A zMrGs}Y84eh(FTh}tB9d0C};t#2bWR>FI4IQ;@OP~_DAW??0&~Q&+|U-`@P?6R%Apl z(RP|G006|$5Uvm(LCZVd2LEb}#uxZ772}DpXjF#j#2N$$kfI3)7^)N}B0@wgHLSaU zECc`oD31|gB0)G?f+{Iu3x=Xss&O^|EL^NtizNyK0~3%$xrzflJy{EZaw!LjoiBg| z>L4UZ9%9rW(Z+}viBTb8NukAyz=e7?E}%p(F{oE2tF&xA2l}YX#^;u8Dg=InUk8$(#q$VH!+@=~Noso5o}_=xi7UKR*y2O(T`D zgXZB^tRJ zlcOroq9{&4Q!oyMJN=Y`QavK8(ta)zUNEX&tftZ^uqCBopg{2dP^EGNt;K}M7r*~0 ztc@|K5vmZ;qA3~)esHpxmQZSTkOmQBs3rzQlZUGqnS^4fHVIXOLDBQUSh-4y>a-ux z0s%WzrNzW52@=ZXKscWwmrL1n9+Sr4`@wW3jZdTTd;|UXa3IWsXl(bN`=3>N;dkXoC^sNR-&U2c2#JZBSbwjp<`Ly| z*eW}_tFNW$X*ae&dqTWSAr;~7#1h>`Q~JET)0tyAplM5#?M{eGBF!Rg-nezVv9>84 zWO$Yfc&k!6JKI0>xm`UuSgFfb-mcEo4(uvqB=$B{fQ@ud>DtUP@7$ypIo=0lHMii^W5;iE+=(KB7qPdnjuAiGA>uq~ z*VOB&jkj;w#aC{#N`6~q9`iVUYMIqiGvGXM0Bi|T0~G)j+m$;fpv>J|qVQiNI>OL7 zC3j!UxjS9t&{Zb0PHVW+#(!d-z#)XCoL|RkR_%-@XFQ?aup;OEJ|)NRPI>iS(N$A~ z^$^?cTACT2`GJ!Z{V2`xUGBAVVu6O`|J^M?nE54d5DKqd@X#a3*M8%LCg z&Gp18qm4;1P;$A$RXwBFx}04bXZ{PxCG~XVgG#~7AjO%O4KCGAfbpJJUN|jf%z_GX{(N%CLagL$Brtc)zAuN6GFFE8N zFEvvx{WCDyJp#DK4?=D*uFD^4}?I>rzwutgZ_x+8S=!+Zw7Ao`c;*k4s4Il;bP{!&N?UW? zYJ~)`o1Y?()%YMIKtkzyE+5?3$A1|S=|K=#mu`++ePBJ#TqKIA!wTdks^x&n& z4~qEF(pnK(@dLzSP97vt5k;YGH2w$PLRn@u^WN;*B<$e_Ws}an-)8r{H#3{a<#LI7 zBoT|nVzF2(7KK<-J&GL#1+c!J#EyZ#pbWm$qMYvFwpmi;T9wlsoCkV*VjQ_ zqfGa6CFk)7Y>28r&$V0$Tm*}v=sc9%9if~G>^&unQA!{sf#4gkCTy`i;HTk)Cb z!+8!|3Q`MiS}gDL|ng2ZkJ zn%8874#h^!-xnqs+1R7oB(_@65lm__+hc*;WzA=KW-QZSrB3XUAV~~s0vZ$~lv|qP z&js-^&cA%#B*LJmJZ=oOi-OF3*=mH#VOORsOS|;DH?ra zv{}}AU z8Yn4n)+jQXaaySOO66>4;wm%Gw{3#c%qDo88d%*}tyHHTfcvzL5tdw$(*(~>0@Dn+ zek#y5)01l<$cd&c9tWANO<%w-=a=hskW(@3b6pxZ#H?=JF#hjf1 zi#eu*lA|s?X{b}#fU-~skPB@w$73ycD_p+LQ|~uIf7=w_f@Oyi%8uq@TD&af!dnoH zL{7RkzR{4jt47XsS3~Wk-4*VzL@F27epHIqO2z~;U++0o&)`YwSbALLqS#Grrp(nv zbxqBvUx5$cBdx)E8-HE&-6qRYU@ce8+pSJ=)xMW(>QE}m)xt)(N$#_u_}A2%IsV33 zW#J?B^2(8#b6vNQs>OGyl-!p1C9zm67Mpwi0T_$H`_Ad^^8f$<07*qoM6N<$f>39$ A?f?J) literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/toggle_visible_nobel_32dp.png b/src/main/res/drawable-hdpi/toggle_visible_nobel_32dp.png new file mode 100755 index 0000000000000000000000000000000000000000..9b2a72d9ce3c639b3c22fbb629286b973f4bec98 GIT binary patch literal 852 zcmV-a1FQUrP)xi%6w?%E%~D znVCX`nna5PH`T6!el5yu`d&B-8SZ`azGvQyQ{BY}Zu`+e`;bIv_CmQJT*{~|Fj z%nS3vyf81!3-iMM4`CZX8@K@a!6=vobHc1V>zCiOiA`Aw+X~Ku=U@?JNsP@ia29MS z2VpHB1AZ&SxG=tkKx#RJ?E;S?6yxFn*jWl;>%mp!a?|n)T#>PhB5XT&t(=$%8WX~t zJY)U50u50MGm+~XxlaZ_JE*kys{;GMAh|!kg4U>n9V6fH3vyp1!4%YE zZi6+7&At}&k?G;ER#=O?9Y$0ksbdA`CC2*!npj~b;eH~QpX*EQ0X<*@41;da9Ps6) ziE%%IcvxYp!6X?dYiWL2?dXz{Y$D`XuRe(BdO5$v2%e7YU$Bsd=_MJv=q+y33bvD*niNgXFiZDdP$)0u zHIgZz&d45GR4zATd)k$7%i-d$7VMMzvO7{b&44$;j65^{J14)b^;flCm>1@Sd0}3d e7v_ciz5D@HfWUXTgMn^{k|_b?_RxnwH}}C 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/video_play.png b/src/main/res/drawable-hdpi/video_play.png new file mode 100755 index 0000000000000000000000000000000000000000..67ae157398b61790efbc6451f35d238bc00cfcfb GIT binary patch literal 1271 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/visible_black_24dp.png b/src/main/res/drawable-hdpi/visible_black_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..c23ea82a78dd1132fb87e425782b607cb5a3625c GIT binary patch literal 559 zcmV+~0?_@5P)LI@b5W1k3W?&T1MS-oWSb-gjn)-Pzf3IBc`cw$`?O;0Hm%Pv8E{dcY#cgGcaf z!2`&V*4d0iJYWlaD3Y+^9c%)3BNFKVtKh4SL}Wg}3dO8@SB{xQUg`KUAO*6Z%J>|C zp<0vifqO;JXAlFOCcehE2&gFh?|@e~nQG7Of)6>_iIrm=8jb|A&mkSYo?&k7Nwfv3Vl{irVX4k zPI>8=xN9B|^f^X*Dkrp{u|P)9$2If`LBFPr#N1Z(AtyB}E9VMz zV7W0Sh$)lzP<7=mK^NDp$EdAa1u1Ke5*}JmH8YLqzGq%~098*&RPngRn4P%+6Scnh zE*cfMLeEj3Nz-lO3iuEV{AEB}u5(f}n;e%wdm|=CW4AWITOElQKI>qx8MC!9Duls4 xQ)9QJ33KB`qs{0ylVFrxH;=Cu0Br002ovPDHLkV1l{W`r-fp literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/zoom_btn.png b/src/main/res/drawable-hdpi/zoom_btn.png new file mode 100755 index 0000000000000000000000000000000000000000..fe761d3b37029b38512b911c784427d104261da3 GIT binary patch literal 3551 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 K$@!+l3^w)^1&PVosU-?Y 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/action_next.png b/src/main/res/drawable-mdpi/action_next.png new file mode 100755 index 0000000000000000000000000000000000000000..d3cafd678a801c74846e5fc16a9ff879166a6d72 GIT binary patch literal 1274 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!WZB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{LATTygC0B3o{Cy{qArKRUf2awAt>%<7O0iuFpTE}BQ!g$V zWh~3A%Ab{X+@L3kDNtl$-G2X7SMzUgbCkX^No8U7Z-EygT!OZie=UxyWi;Qq&~EF! zsAvP9-;0x$@eF;g9BUY*+9d6oO!yxxU2{Oof?4aibc5Iq-Oy!`)7CyHg5FCVx6-F(O@^70nvmX}kDuSTAbTJ-P1Ow()9&*vre zZVQZJSgtO?&Y!^E;xol=*+EV1`;VAbtrEIk+WFX`d|R%$sHc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L$o& z6x?pHz^PXs=oo!av?4__ObD2EKuma|1#;lYJ~a=R){B6N`WHvxJq8BG#Ar-fh z{`~)M&#cQR%-nnM!uEz%tz~!SpFZ^AW0B&7rKc9mxN`Ks`ttT&VtcF;kABGUzFzO< z#&+y~{SgVCMW={%me($!uz7Wo&7DY;F7RJ6`<7zMb{V9EUT#XPM*_%-ECi z70Q^Ca@XurlsLKmoA}@V|F6%VIB~0lNU6gc4$~`~9Zxm9UH{i_Hnh1LaOA`Z9o{Fo ztep%SEkq~3v`-L9_{sXTgZJnh9-m~O8fVM<3ubhQ8EpESBv2g3)AMAuL!5$uKKmmt zg?mg#=C2TT39=LI`Cs?K=+EC>-4EYy_jmXsHe*|(>w$XN1vvr&`fQK*pGkskSl^OVLWDwptZ0v{JR&*3ynjp<0kBqj+?Kfc>L%XLi41-h036&1{7- zX^9_W1_J;9Ke{lmvBXwh z73M@V$0)N~&=h-;T5r$Q3k}S;#bB%rrUXnVsReDOJdA*CBIbxLOzqv*940sdA#+8{ zmr125lwcxmLBS|Cm!;!LCTCvhSNH-m{OQJ}_%8E`8xf>tPC zIYy9LOpnSXA|}OW8;u57h)BhPsK{tOPYOX0B1n)*_=%DPBu0#g`H7Lp7*~Sp^Gzs5 zj&TjIxG@uQ-9|8(smK!4VqAk7q!!!+juZ?VC(b2mLcLM0Vd7i_6LL9JG933<|25{Z zE6O|W?YL>F!?^8HjPkmLGIdun#~T1VAIl|Twe82gy0>NOjkvoUX=Nqmq@EyrLY2>)}ho zgK?KqAF#3>>|9-*eywCqU7@i0#oEjKg=Nl!$r~8440b&KtIg}0_Pg5a93Nc7GLF_B zZn3gKwGf2>^Ev16+< zbmpW=4;1+hQob`(zw?py`O&o*^r{jJWT|RjfY+A#q!X=MWx?&+N}o9cSJLty2Ntgn z2sB09g-^2ontI!(VW76$F_V%0*)87(>({uvVk{ANLT!5D8Ep1zqZNwfO^hoSeTNQs z+>4(c<2jAX*L9%BI@OcH1>)|4u!_#h^XCpsTAO@?pQqc>)qTG0X(#RK-E~kUz&&xPeAT`*^Dt0rbX83x3oXajjoKQq2 zc(DaKc*B1#icQ8(_sc`z?=gCDioIf6Pir7~Az0~1-bnlQ<}VvlrraE!(tD_Ns2cpK zY5Lwbzl`rV47{P&0Xt+`*J4*t|07R=d2G5frb5)^AFwY{e51mJf3vQ+=5$I}<> ezs7Oyv;tm$7WTP-q|jHne+zOXNz#l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8Mv>2~2MaLa!rEy`Y4UTL84#CABECEH%ZgC_h&L>|v`++-@<)X&zK> z3U0Sp;MA)Rbc{YIT9Kj|CIn17ASOJ~0y*$xpPC0u>qWpst$5f-iGhJ}rKgKyNX4x; z*UxJoE|fX`F;`bSO7YpFC3_J zvkcxH$!xu%o(VioCujUv7p=4S?5Cc^Ys6zQ7ya0EoXe`4_kp9& zlsL_n3-k3I_U(Nj%x;!_Lpm;J-pa!)ejA$=cTWuv+wgN&xl6&an_7W8v$@{39h+AW z`Cy+oV~b!=%ujg%$DpOGJlS3GrtO7GKHu4YSn1EIW`pdA#hJ@5c5}bH)oZCcyCmH) zZ0%0%S1l`!tBG9*cw;gpHzN z>BdIe(_g0?dbDJZz{#ex|7sh$^fD*7E&bPTy;VBu=h>a}Uf0~{$~Ha_xRdFIq(Og9 x`>yv@vQ{z21zfhj>wfqDe_OrXf$0p)45yQ=GPb5Ko(d|)JYD@<);T3K0RS2+|f literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/action_setting_new_default.png b/src/main/res/drawable-mdpi/action_setting_new_default.png new file mode 100755 index 0000000000000000000000000000000000000000..92d9204e79f0fb8707ec94570c3e824fca1f3010 GIT binary patch literal 2913 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 D&ouNq literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/action_setting_new_pressed.png b/src/main/res/drawable-mdpi/action_setting_new_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..8c35e10ee7dd5c35deb384599b72a7c401f8abc9 GIT binary patch literal 2852 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/arrow_down_white_24dp.png b/src/main/res/drawable-mdpi/arrow_down_white_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..e72148d7c9fa03863c621bca3778cd9a015dd9da GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjsh%#5Ar-fhfBgS%&#Y^Bcm?ZX zF`ioPl1>Ac=`q|=jX(GW+#duA^M+n_=wnsz{lAdS<&ohZ`<-GBHn(UT?(9uT@m}O% zIA=;oOAhD7w#l=65~m5|T3G&E&?s`)y}K)r+fBD2f#G84^(p5sJU9WgkipZ{&t;uc GLK6T{GdP_9 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/arrow_up_white_24dp.png b/src/main/res/drawable-mdpi/arrow_up_white_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..c735c8ca253c12eb561820ecc492cedeb69bf129 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj37#&FAr-fhfBgS%&#Y^Bcm?ZX zF&=wvsRc9C#2R?o8ria<8I1q%iwNg(YPS7ndt{)%r+!o@h_}5HD6+AwJ!zu)DIq7I yQvQRB+0r~^cRDU{b&<*JefA`f+fDaCKjRVJ>ly!jSWf`$V(@hJb6Mw<&;$U;a4)_9 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/btn_google_signin_dark_normal.9.png b/src/main/res/drawable-mdpi/btn_google_signin_dark_normal.9.png new file mode 100755 index 0000000000000000000000000000000000000000..6b601919ded34b833741aa172e5e343e43991bc9 GIT binary patch literal 758 zcmVz?#(Dn^jFUz|+p!r` z)l1=Hr6SNYttl=W3CE>#%7YQ!zk{x4dweXFCv3IdT0?mIS{X3TJ2#=KRqksja&>(= z@ed=YK0sBiWWey6X0>1#IRN_M{h)4ALtd_J-vn->fqxiXpAJ4C>iU&nKYJ4Xv7bB& z{lM-r3fC|m?J1b2B*(|Hxgep`tpMT8YkE}@?zV&La8%gV#Dlt4HrNjAh8Tizoy);s zq&oJefJYGEpRqgaVSDnPi$j=WiDekqrD8uc%*_3Ef(h2iyLp5;mtBT2ok#`2Ex=h4b3q4hy7+^!sg7XV?sO=) zzB+QRuZ8m4TjQ1KJwioq@u2bCFZY;IV%ak8U|2dG8_7`QR@%`PC*NFxf9`9aqWRLN zJ{L1~hmGHNz8@@Vl-SbL2Zy!h?#}3cW(o$KorcB-`bf+2tZjrM(@sbiQf0Ck@AYne zVOVae9-!>DmNLrMT4}{9Tzw`e<7M#by_qPi%h9oA2|iNu}9Y ozJe2#2`Z#frI{%dNd3Wl0{r{F6R6X$W&i*H07*qoM6N<$f~dZ8?f?J) literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/btn_google_signin_dark_pressed.9.png b/src/main/res/drawable-mdpi/btn_google_signin_dark_pressed.9.png new file mode 100755 index 0000000000000000000000000000000000000000..892674099cf6267f937baed8a8d3603153e0362a GIT binary patch literal 768 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/email_48dp.png b/src/main/res/drawable-mdpi/email_48dp.png new file mode 100755 index 0000000000000000000000000000000000000000..51523eeabbb3849cf12491a62c74b46ba77c0f2e GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(Fh+a2IEGZ*dOOp$?~s9jo9;zD z^M*3dy)rC$OmkRvum_a|_AyRxkP`^_WIin?Q`Gl_#l}v@_>WReZ!0_ZOYmx)Hu`!_ zgTsM=Nua@jqfzdow@hdC;W?eE6Fpe>b=I=9KDR6onsY$u&?DV?p~l!FOzNEnRLwIy za-=oNoOx!P_hwypra?dH*ojt$^@gU|TJcQN>^Aa6{OS5}a_!4dhs#RG((Hd}#q3|_ zo|gAC+F?Gs?6Ydw;xvh zpA}2bMyx#G8*pGv5@U>qX>O9<9>%S#I?lAZc zfRr8op#@B?ishV{xs374SM%C;$Ke literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/go_36dp.png b/src/main/res/drawable-mdpi/go_36dp.png new file mode 100755 index 0000000000000000000000000000000000000000..96a672b0b715958f03f868a09c0c9cc464553879 GIT binary patch literal 226 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 Pd1j~u)m1N7vkUnjZIVW( literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/icon_label_white2.png b/src/main/res/drawable-mdpi/icon_label_white2.png new file mode 100755 index 0000000000000000000000000000000000000000..91833264c80dc4387eb107ef164f75a4376fbf88 GIT binary patch literal 4601 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 CIX}_> literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/invisible_black_24dp.png b/src/main/res/drawable-mdpi/invisible_black_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..f14aa5118f76787372aafe80c97afb600074b3fa GIT binary patch literal 424 zcmV;Z0ayNsP)DmR`AWy%#;GXXXR-Gw(#5l48i6^(sKoP%w;zc@S}B_J>u{(T)x>Sy z0uSKD6UiwpyRUUo(WpgPx$#kg$aT^@8w6L1NS&z&$pUy&MAkw7cemN4V^efa8seW! zVK=~bIMA%XkKq0{A_05e&7noG!g1}skMJxMQ#j7*J&_{kSv^=GgHQjhhyDZfv%E~J SlzOND0000#d0K`Mca|JzjlLd@K$2ehZ|&e=X7C0`Qc7tG)?XZ~E*Hx?djZ;jqD`+GCR z1Vm477oE{@q#>O>XTe-k=fgmyj7i?^E()8oZ5x0b&H|6fVqg$l2Vq7hjoB4ILG}_) zUsv`A9O8W3^3FavAAv$mo-U3d8t3o!h6^yjL$hZrd*;u* zxqQ)-4;5?&wL|O#J6<>?JYJ`CZC2~Gjd#^G`7RwXi`1)~w{!cEIn{<`@iR6F9j*}eUBjXT56DvbQD`P`#10yQ~1Kw-L zZBaDj=BH$)RpQoA(_P;P)F276Aviy+q&%@Gm7%=6TrV>(yEr+qAXP8FD1G)j8!4b7 N22WQ%mvv4FO#t87;gA3T literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/pending_friendship_request.png b/src/main/res/drawable-mdpi/pending_friendship_request.png new file mode 100755 index 0000000000000000000000000000000000000000..c9e01de3b64ba49022505a3c4dcdd363203a3187 GIT binary patch literal 5862 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 FV1h;B+X?^x literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/play_button.png b/src/main/res/drawable-mdpi/play_button.png new file mode 100755 index 0000000000000000000000000000000000000000..8a34483445275db21b39836f87a0c59650646f5c GIT binary patch literal 3264 zcmaJ^c{r47A09@sg(78%X~=FCjTr`+v6UDmbP|OzGt9*76S8FMR8q7NN?9k{WNGL~ zq(tg;>{}^hNtRPcW%rFvb-q8ozW2J`_j#V*b>H`Ieg1gk@y>fUNvTKy0Dw&n`)pl> zD{TFh5Ep(Ai7uQGF3Max53U=-pBqA8lL1%~!;cJdpb-Mdu4Dq~1nU{u0ssK&Qr$hc z9ylj7kwJqH)-jM!8dJyy04%IRnFL}WnG5nG2T!^2r`DjO`x#d(A_X2`beSg40Z)}o3 z+SS(nyD#C%5=`N8nP@09BqRh9vKzu+2SDLwW@b>BG1S=DNQf}voS<_Fp+Ax)8R zl&uZc&IWD*N1)({A6#1o@i>i4=lxTL;%Mrx zV=?)q-ghqP*Rddf$%P7ofv&grzuNu7B%Go3?a$#A9)6BLnJ%1pws5%3PK}TO07;00 zE!I8s)eBEad~(m$J!^|fq|J7(@o_=+QrWDebC;e_?t;$dOO~-3wUC{S$Q)|HI3hiM zXNN-$&pD%VyHg>qy^TlFNn5d@rcV^#fa8Sk(hp z!&`z|7MepeY$QZ{B+3rQa4UhOhJboe^Uze6FK=tIiz~Kv-aohbd6gT>ljEjXKLbBz z^V!#r3eOTzE4>kyaQ>rjXqK!;ZFxxmT87zov2A-O1@Ccuy4sNNuW zIC@5U%70D~uX+rtXDP~Vdk9-;9va$Gnw2A)@X4pi*y7%-mL@e#+0XnPpL?{|4#B~Zp92I~&0590@>FiIqjpNCMElK4`1krva@DsIzy7w`SaJRN zuyv9Dma2K!xIx>iJ6D=<2JvK;q6)lB#?7#k2n_mIb3Y}le}8g`E-2C{{jdE(gS8>` z0Ag{V@LJ3DYFhNCPyG0lIhHX_wQ59S9NJdQ&*jt`pSRT-Z`!}+F)6U<1>_Zye3udw zn!Qq<$m>DR%-zesFc$y0!Yr3|z?3yYcV4Kiy|>M4>T05kRg<-v0>sH#l=W8XJpLp8IFEm`EY<2HQu(jYogrAzZDOIgaZ={fpT#YNmkO2pHyMgD$88^ zn@vJcfU-@T>hU&TX%8193C1)_qo&clQPtvtqHQ(DfZO({pK^%DOm*X_QO&dFGWc_~4tBoC z=v$^6doRAVoaB{@Dfa5^+FSRf`OiW0{gtEsVoHo4B{L!-I;w7-p`J^CJVh8+T6Mc<-t$YD1;OS>nNZWdJt|#*Ei@aZ_vNT*a(e%^8B&otLw60vTm1HT=4a6KbKNnCfo87r6mI zzz6@x>93)A(b##J+(c!`2l7o5z=hwR%d049>xxC_BUG{_FKou3FG^S93|P+%rh_D% zSpFFKi;0z(ip8rMjvFQ0`~9+krbO6ME#LTFb{4WTdS#`{v}tM0RdQPZfi*xXv)%}BBqXj)}OMZU(+pn!&)qguS_=ObtEyqm=c#9N%nXCtcOG=-Vz3vQ8 zZ#TxKUZ2={Eq`qP>pJ?2oTs{<{yv?n309;BO=0)zzLg)C-(`i(YtL{bWF zcRsjy^=6LGjfh*G+>;ASq(8Hn?K9neu?vps+N_ghxZA4c-A0Sowaq>{7oGjoKHJ+` zN<2n0+qd?5gIoe-Q^g>9KCQn|M%w#TJ~6AhP2Z{2*Y3!Cdy8I!(dcNjr(5^hDFJ>hCWdkXc4D^hB2&Lx)* z`>wsm)kw|dwJN3rugSXYW5<6=A^9d7ew~kv^M(ilv~FZuSd!zr9J^{mszLAiDv0;09uN@^` z*CJl!akQT%`UDsRBp5%Uh!Xt3+b{cwK)}uBI4SAhCtKB-qaS%ez?#1eP58@Q`h+i^ z^5np&)sc=4XQIaXcTm}@KFFPj#Ox_R-p+<6q(P#32ei^s+}~8eV8g=T;#Vt7poPnA zLmeynERxu`c;N`?$UR-@B;VetznJOOFNWj zl2fnVG-zHX%=9^df*vYeG@xTPoqxMQt n#zfs&L5IcOrlAVUHJv(uq5?h_SKMB>{!igx=WKh&+Bfz;1vjk& literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/poinila_24dp_white.png b/src/main/res/drawable-mdpi/poinila_24dp_white.png new file mode 100755 index 0000000000000000000000000000000000000000..6453403f300616ecf47aa852fdd124e86b4b67a0 GIT binary patch literal 900 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/repost_normal.png b/src/main/res/drawable-mdpi/repost_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..f7644d441ab064473ad81937761c6ac54361c93f GIT binary patch literal 1484 zcmZXUdpHw%7{`BZGczTl)R{{)_oi5)acX9j%gik~r!drV4XLeR2h&B7qgpu3qz+DV zS9Fp~!y{=Y%sr9i^2nWxk=s$vd7hs0^ghq~eV^z3<9$BQd%NXGI-vmD1p@#m*jN*s zH)G6Khe9^B{)jgp02!7I!SW=%cZ$QeJL`sQZ1?}Ib#SkdS}6vd&L;S!Mf2=;UdNl~ zpotI5a;Ac}_qP;LR6ph3pSB&#+Z)@QOXS824dfmv4f)}Tmiea+I?ZR?_GwIOzAX|< zt@OBt^kww5?5OE0Fg!det{Ba1oaq}1+kH(D5B)(})7}itS&Y&u)hOtvXQd2P9CcJ$ zHG}0KS1;VP&W^lzvDDYwyLMaGlN{`@I(_M*CC>c^t z``8Mb&5j$~yZl>OdHIO7M(P@ODKs*&5~WEvas2p)g=NNcfPBG{iONj53j*f`HqGT92;l@C({%dM9gR%N-PSIMY(LiQrs}RxGUJeQC zXT4Ycl=jHBy=$5uejg|o-!RxL6bdJd@$@b;aLql$Lj7ev2Pqj)sYTbV ze|5&#*zbV;5`Ge6Wo1>o9d>7 zh`JX!itGj@_Jh3oUpV}d%Kde77$%H4#>P?c{9vDgp>D}M3PRVVRuvooUVsN;B!Cov z#2{RGf9hMyo!#>~c-DktiwS^}!XnJgI)$;}=vOIBb$W8z-}-b2RcHG1u2wrD8Rz2WWitiS6M{ur|H%x{2ZN8 z=jdR2csjRztPyx2BrDeapX9)k(qOOtg932yl`>PT%5>}BkfthMdq%pi| zP`qMNJuZVlTlMVd?(W_R>D8lavku>%n4(*(CoTmd&>))4AKAk&{BZu`NQCZs{kcnC z(h1lCneQ$8MmKv)0vcEEW-l#FxQtZ*zJMnZiOeN&iALb{gF<#%+A@mOH0gRzMIM|v zQQ=;+4~;qJcLG(|H_{{!xH)YSBf{ReL?PpQSlW5e^y{hNpT_ig+5ySe$)fPnGeL8!H( zL$z|v(IZFJuTp*uPHlooORBXcbY|bQIvtCU-N0q8nk%g)6b0PDE8ZeRrI75oZEInj zNP0OfLq}U1f?6tmo@eu-Auv3Ac|JKgnJQuFAk+C2tiQvJ5jIA>>AEk)&fJb-fuG2V zYfzluJG>C#(FW_dLZy0Sa5&Z4QrF1RH!tk2K^d~6@Spq(DJe!#PUD&!Yt)zQrVV1| z7x}jEBC2b?a_rDHJVzA7#$vI};>AVJ_y(U;dkc-{N-Zrd>Nc>r?%GuP!gmdYK5BTjXwx*5ke`FSRtO8?q@9W%cj*$pOc(2%h0kvtBpa1{> literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/repost_pressed.png b/src/main/res/drawable-mdpi/repost_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..10ea22c98f9e161d9f3341fa1ae95fe7ef9e6fd3 GIT binary patch literal 1425 zcmZuxc`zGz6#hvlLP%FgtFx}QQFK#kh?@l4Dx&LJB?y+*5n4yFwM0}6-Lk3?VO>$J zV;wD}x`?BpuD0qdN;YYVxT#}TE2}fRGwtlYnfJY!_s5%WzW2SCdY*6w4pW2y0N^%f ztsM6&i7Fq`0^fVkF6tV&?UZjh4HU_~9U8>W^Jl2#I{unz~`brr#3TbFt zV>L^$O&>`&isEpF*J?x4YS6-9u~>S?%HivJ{KcdE<-0@dG1Dr~M52qu5oB}%Vs5Lp z!sA_8__!b>#bIF2HfRggwEhuSG}%s6%QUD_<*A}-_T&V7@9$M6k;8=}un>(DRrX zs*v;$r;xy$n!5|;lv`o19>9oLTn1@u?!>caXEPpE0E8Ft`ecSLLqY^>K3s)@59VLJ zsr7pt;;|%mOuSf>guU!xsa?!#_U{fK4%5n({fI{dfe;y!ya6**MmL$g_#KKIyemzm zpzsDFCurvmv^il;(anmo5ueRhi3BE91@$dw#yQNWW!V$5VGs(-r>IIj&a=Ic_QF7b zVP}Z~;R1Io=+VUO%4*k2+n}CNhUD7|0FXc%pojn{H~^%mr|d+{X;Kjp`Xxd@|t3Qf#lD zOi>nBZa6cs^@H4JBmw9Uv%rEKC?_4#=tClQ8!t1-l|(kFvrQh1C#-J2->svvRK25z zvB=Kt-cEh6Q-@n^1owjWG?YCdOQ8ERku6Wvfye@UaMaJ#`g2>#JZ`(N=^h)j=v%II^w?bYY%7{U*3%q%dn$|u%qwOh2aR54 z{&>e8aiI>~F@umOFe9!gMwk_6`X_OYwhk)VM_n4 hG*jyT{xQ7x{RA)+o$6d#PKx}rLmO*?RW+VO{Tnb>c{l(7 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/rsz_icon_label_red2.png b/src/main/res/drawable-mdpi/rsz_icon_label_red2.png new file mode 100755 index 0000000000000000000000000000000000000000..8783e4b5eb444cb1287008d363192f2fa5d6e453 GIT binary patch literal 4532 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 UXSc(@QVO7OV literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/rsz_icon_label_white2.png b/src/main/res/drawable-mdpi/rsz_icon_label_white2.png new file mode 100755 index 0000000000000000000000000000000000000000..f5124b7691e814f54aa87180165589df1406b76f GIT binary patch literal 2627 zcmZ`*XEfaV7X1@Oor^^8M2ix`HHZjCn@qGYN<5J$LrC;H7(^GnyBNK9iHk%Z-59-h zf*VmIdWcN8ll4BmweI_H_FnsU);?#g^X0dr9_z!ww4Ag60Dut>HH}D2AXOzb1qs!i z37RCLcmdOc0YGg69nqSSr1@~73bIWcq zR39mp_N@ngUIw{*d>Jbbw!RwQMoBdpXH-3)Z}?h=zRrPtJibbWyK%LaQZ?Q?W*M&)};Q`~U8f2(`uhHw?vEkv;sntJpbnQ2l zRIiC*9^f*Gs_6M!Dd*VSw7u9q7P=WZ0F$sQdQL$|aQ zaE7u1kmER`P0)F-yF~KsgSMD1{d7f53M;Fwxl#+xs#eO8wc+3isGItCdFH@mTol+-o$IMk+Gu(qmlgp26d>SvCzeGg-;j)F=@p^4J5tz_Y$* z_Pq*kN3<>@_tRHa)2|IU8jU3W+&7C%0EEshPa`Jo3>&sWcvR%mx2dQhZ96COdOB1~ z%^AH=CooFzN}nZnV>zzA#V-^7+$9HRA_x(2GCy+=S7=lmoXEOc)i&NBfr1#3;Ul3s ze0r(1CQ}Q{gx}|5bkwfDOL)}l$_p{{GX=RIRcc=Go*X~q`^HJ3-MT&$m^Y<sx}YV%)sXzP%fG#|t-B&)#KoZ`bW@^OYBsduVgNk0ys92fuR_O7`f zgEw*`Oww*-#B=&a+{{~4ZY_h`hs>JuetY-(eDTo%+lCOKF7-Fl8paSrkEs;Lk~ZGd z_X%yWaObw!U$Qmz!$Y36%mkDCy=k+6DXP+6au)T0r}_0vsCyj_ep{kMclW%zMFv3< z5;JNJA)-f73T1X`q$w4k?gMbPYJG9W$EaySM*U-30m)za^&3-cmOCUHJ_#KJ(%!G}KL zg0)ZWW%D=O)|EKj;pLsNrsgj_B{ew|8{!i>{xo5SK35_8>1s;6@q#W$hA=Xx%=ehU zIHve5W+>MzD^0WgzHL?f9EU9VEPl6gKW>s`YBoT=xpWt<480OKFfC6kC2_MX;oFD_aiU1hk(rTE_I>*6&drEqfA zpIL6;VD4_=3u-=9XrM(2+}AtiJ@Gx>BnUYpef~4< z^lO>}-G+gKPPv4oO2wh_LqWq*_xod%p!G#Fx-#Mf!_Fh)ot5W(z^MQ6UbEjGYQQjQ z6YQ$0&0VlPLbQ86lw8C)68t)ti~a`HGi?23tdonewZ@D+mj4PfOF9Kp97CWN793m+ z69sw5$3AcC2rpizO_JIlbi~vyeQDcFnv3Dwc!qFrdbz!~e&eNd$MMCbEC+c+Z$qv^ z5Q?IP`^jNdPC$lecqhJK9Cktd`Tpi`JTXF2o6(}blnhjGv43wYFG$i2nlzH~Mj5m| zlzzObbbINIpk`xMI=iyUJ90sccG%KL|6`RPy5`J%`&0^2w}1iwxxw zPUf?>C}**ENBUnBMqy;=hEmkR2AFL^*VkM0phBS!23p@GUE?dgTtZY~N~?ZmBuw$g zMB9t=nWWt=?F2fOax*_W_BjHdJ+NAxgCkPVr@ONKt)W#Z4YuXy6X4QRJR~kR4n1wR zj2u1iykyKAwd&qr5YNdKo3B_Oys@L7-aLROms@nmxYp{#jb%%I+(xHrB+~-!84}TY zX4*I9MlwPRYhn63NX$pnlwA^b7%tD-WmQ(iRVf4z*w3t4vS4Me%FXht{WkBG4OI!I z0H=hXT&;VgKY*L&$->7k^U^&gUAAt0>w(kX_|oFDrtl7U{vfXHfn;YHd;pzgWT@&) zKfU_G#~!m*m2u%T0BhLH7t%$+7&>Mv>wLudsnDCphVeg4L0+Nh+{%G3Y-~Ip_jLRv zAA0umxk+-LGT^Ahh%~->F-L`~yoP%tinJ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/share_mysin_24dp.png b/src/main/res/drawable-mdpi/share_mysin_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..08bd067dde00f7e41c245a2aaaf905149cae2971 GIT binary patch literal 323 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/tab_dashboard_light_nomargin.png b/src/main/res/drawable-mdpi/tab_dashboard_light_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..bb223d8fad1bac75be15f97203021ffba370a38b GIT binary patch literal 1577 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!WZB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{L$o& z6x?nx#;I2y=oo!av?4__ObD2EKuma|1#;lYJ~a=R){B6N+ShX9ZUzRX`JOJ0Ar-fl zOpERCNt8H#zc|g!IO@4@(Z(P?uZ)N#C+w`;#SJr>t_kPavpZlNxt(f;QYwN6) z(F+3%5+$V0f9^@$yFobYu#Z5y{|Ax02luC+OzC<5TkVuh^nwVTTTG`P+T<8~3_JQi zPHU>w91oRy-a7MgIXy1u_!#C&7`j#DJp5@h*U!AerS>}4j=Omu>^FbeWBGyMne}OF zKLytCg@^y_J==Er-2!a|>0PJ(?EbpR$M!5s+06f2vbOFz{7!vsnbcRk>h}+te?%l- zPRKH5$mQjM%N7ol4iaOG@i{mbA_r`#9!qPKIxm-`wj*D;Q3w3 zRQPOl{1dq=zn!%z9CH9`Ktq`aJht{>DWEA9QSX^e{7kee!lSLmJqFz zzBVUrxcWvVpNsRkb~%+@ULjUKp*a4P+!5}MP%TlxsO|%bx<+M>xWBg4vUARuTIJBi zcU#M1n#0}~9%XYA=dL;+r1?@@VkKiC)5#f^4P>u1icG4LoxS9$Z`%JOyQF7FgbCJl zcu0iyN@+|#UHtjyp8^3E)29|ChqANZnE13XzIp;wHcFK%O6*_eJfb4`s>-7(;77;_kJ$?uak3H+gE$mjo2NF#eJLRx6Cf^ vKCbeEvw|o5%Y4@ZzvPp@Dd%mt&&0!^FvTwECF@dFP~q+A>gTe~DWM4f6XRlM literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/tab_dashboard_normal.png b/src/main/res/drawable-mdpi/tab_dashboard_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..48ebda8fc3ac34491d6efdb91767914694258d41 GIT binary patch literal 1600 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8Mv>2~2MaLa#Yay`Y4UTL84#CABECEH%ZgC_h&L>|v`++-@ z3U0TU;?%1Tbc{YIT9Kj|CIn17ASOJ~0y*$xpPC0u>qWps9c{YBih+S?o2QFoNX4x; z)4el<9VL#N&z|waW5LA`FB7{ef$oSsDxY+ICc)`0{ge6eljz4Lk zIDec=i`Kn0FP4UWEYy6Yea!8$Q^4gte`-JJ>UdA?-ObJV@<9LHn`hqqN&i-@8nXU+ z@6ViNhUaq~9ggHWtPC-FwqdgC1x{H7`?^NY6_LzN3nvJ6AN|8Qq4o36J%MY(*1Bt2 zu{jIy(Lz;C$3)SJmJT3D{lwi>t_;Tt$9xcWYW$}R>)1zzmvUT z$L8D?c8(W?w`*53T|2Ph-KMM49(?W<={`C|pRwvs`p(#Y>#xPGzG`&&^5x|_s>BaG znR?;%)uRIS0e*)!GsF~V%RQ)RjHrn$v~KMy+Ii<~Bt!T5?WITeZd;+a?vlj@X1Ccp z3zr7H{G!t!9?@pb=AOtDc395Tt8nXIgR4(WFDl$Aa9UscfhX_v=D8o3@0rIOFxl+* ztZDML-xhN+eidE*Biid0|3mP>pS>?$oR5fKeeh49OU);phLe`=C*HN^SN)f2lWHxA z+2Cd*^<`>L#ld8kGf6$WU+7I0;C>`2S+V@^E)zpb);XR_gU*}wR|pGqy4bZGe#jV; z+3?P}^yvG5i>}65;)TaUBO6nA>{!F& z3D+4+`KBkz@2SXm`YYBZpW!+y_|4^-V2J0p$+EnTp}N%)>kh`g^`5hX#r(n4c`rh2 znATC1)MVz#EE~@^az^~f{ua;uL-_#1*)lHi Thga|Nfy#7GS3j3^P6l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8Mv>2~2MaLaz%>y`Y4UTL84#CABECEH%ZgC_h&L>|v`++-`BiX&zK> z3U0SJ;nb@Sbc{YIT9Kj|CIn17ASOJ~0y*$xpPC0u>qWps{W;le0x++rc)B=-RNQ(q zJ>DZYQ0Dml^2@iw_`KWKUh-ObV#UK~H#H%Vp!e6j1w~ri_PVfm?$uCa3ACN^w^D$0 zVO58M(uNnRMqgaDz2be&oH1Fw^X0RDcP@X=J6Pra&HG%d+6MxaV(EpCZ}`PI1fH7k(xbbfcZuseqn!&QWWLM}`(kD( z_;I$tf{4zd)^N-JGBJtqj8<9t3NK6*6S8#p4}R2gW>Lvz`_=!}qUD)K>;aGGc|Ls> zi>A$x-F3WOrE{&gMDauae(O@keT`1<5`L|lIK{*Lj>2aKX4%|A-35WGzk3J1VrrRD zwx=w}cbBK#$|-&;+iwLL%~F`T@+HUNyq}TIRvw#c!u;wc{%aPpY&hI>@ z^!$;3s#N&(9}_o!-pk22>tpr&hxeLiKFK%PyR5xH`pTPwS6ElvwCB=9$drCe1f;ES(r_@;fo& zD*uX_Dyf^%?PsGEo&a&=D zQuEZalCd^w4Qj{K4zG!cR9^BvprQWC)Opi`=a1_Ow<0) f`um>gAD00`(BwZ!uTwfdgK7{@S3j3^P6c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{LUYGpj(%jU%5}4i;gkC3{dO-;xw*Y9fOKMSOS!#+~QGTuh*uz$txZPrb(>$o& z6x?pH#Hm*w=oo!av?4__ObD2EKuma|1#;lYJ~a=R){B6Ndakk6RbXC`@^ouV&sK`FwW%x%zYE=gRF= zLqi1(|BGDMC0EeTFiqsenl2fI*(aP9?fo$I%Y@>+uC9j ztbOlk3tVxSbldROWrq2$nKw;ip4nO`tZQI?_GLHAxvy%6lhz(vy-cnoB=5k3vysAQ zSh_s5PacZ#^*j4Cs>ETNuBX}p-G8P@$M4TtqjT)VY3++5s$v&}b_xDZDzf^pax+)_ zyeX<;6P8H*>0hasup)JTrD$t&CI`D$$<-xCe@$#D`CRPrO}>b+$J%=#o2o~bl)U4K zxxEXnA2isqTX9qChIauglDD1+WLj)}|A^ABjWcy8uGwwx_e&tu+Qo0e)F;v_Mdc?% zxQ40`}wnw&qGt@Bak7W6^_Ko=Og-+&a;_>-&tdkY@ zJ&X9=w$^Q~t^lXD*sO2TCWV3?QJ$<<&pu1d@|>v_w=r9^a1tI%!4g z&lGRw-}zi&!IqCz{y8RRe`*%B-w{oo^?C9W!<|x@b&m7d`yRQa=*SxG`mK6^A>a1h Uhg5CPdQiRL>FVdQ&MBb@0K)~2tN;K2 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/tab_notification_light_nomargin.png b/src/main/res/drawable-mdpi/tab_notification_light_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..3353b3d34ec0ed0b83df68aa6126a48e0901892f GIT binary patch literal 1318 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!WZB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{LnLsv5kCsQX2M>j`T11C2V zBO`N|UYGpj(%jU%5}4i;gkDFSdO-;xw*Y9fOKMSOS!#+~QGTuh*uz$txZPro(>$o& z6x?pHz^PXs=oo!av?4__ObD2EKuma|1#;lYJ~a=R){B6Nx=S!?4g&+@98VX=kcwMx zrtS7(b`)t#FEcMJ=RV4-;d83=FQ_JYs@$D9;os*SgfB?(H zhP?_Ik5xZTirvq-+aNFP@w24o{PKtAys=DAI~SvL*g#~X*3>SJCI=7AR>#E!yz&OT z{-;*_iM=kmEq8WJ%hK|Y1ZK;KHYJ_|95M%#ZhS1yob-!l)zz#bw$B^bi#7i}|B-Ll z%zb)Ol-~vx^#@&QhyEWeoFghUB}w{kyl~Iuy-ju#9gkEjn7MRsc=PAl`!USE){)Kb zTcz7_gKd2{eUQVzDebU=v&WOHM$pLTkGdK{84}5)pVWj zk?9YsUyP4etY$X5?ATPQaahyl|Bmhq@d|#gv+M5hln3qoYO~&9&gpg69eDM;lzhFv z@R{0exHY$xt1n-->uN#l^N2;AQ&{o^Bwjt&`d?$W-hO8MkNYbRs-=H8$-n*A?*%Iv zY&mZ$-??&q=5?LiYktSp*02O~{x;0nQo?uT1ux5n`5RV7$-dfVVww40OGxXGK#tqj h8?BplTK|hBFvyE;dHCVQy?LOL%hT1*Wt~$(696$q*HQog literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/tab_notification_selected_nomargin.png b/src/main/res/drawable-mdpi/tab_notification_selected_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..c53b4aa6c51ebf575a9bc232ce3e6bcd2ee44710 GIT binary patch literal 1429 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!WZB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{LnLsv6LLt_^=Cl>=3Hxna6 z6C*R2UYGpj(%jU%5}4i;xL#ueoO(eCA-4c%vrB4GW?5>ATTy=MJS0CsYeNeO_MKeqYn07!+c%lVz;K@EU517`AfQh=zGE9bUn&6H~^W@i7q*y88T#$$B~)7gZ0 zN)4jI7POuTEr{!Jd?7l?nEQm3?2EruO%ff0rH<*jUQ3jU$t*x?@Ygw8?Gyf!gJZ0)Bj1aB$J|t=vcM=Pus0 zQFdl9@1bi(kxvq>zD(lq`SmKj*}Fu1pUaENBT@Xa`xGW9S6@rqUVdIrNKbONf~WSg zjbU3I_+@>)wy(AEzU6f+)cIFN?9AmdKI;Vst07Hle&j0`b literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/tab_profile_light_nomargin.png b/src/main/res/drawable-mdpi/tab_profile_light_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..1b1ee5649ab1999528d66a376e965eb1bf37ca28 GIT binary patch literal 1416 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!WZB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{LU?G8@d@9x|&&monHx^M`as9%gQ68Fnqfk~v;$(o6D^PfPxh&Kz_eZjOw{i~BUdmmF#hv&aSW-r zwPosVZ<#=m_V;Jj-3&F!>`^ok?%atd`S(>Ce4i&@d~WaasHH)kmRe%nT66uh zPj8yy{XS7D?&bIQ8+cY5*^70r^iWx}CuJtvr#U`qzRhkwnDVD?H=AKB+kZS?Thisd zrBICYiB#5OA*reh`aT*hdt!QEol)f)w*q(NoiTb7&!&Z{O%6%E1X+9@A2&iOngid zGKV4sm?N{j8F{A3Z{oj}c-{SjZKkASw!*1H);|JM&j|K7KT~8|6#qf$S!t|H>>;Kv z2hXpnK63X>(8>_o*-v}lxkeW(wKsR(U1wJ)$#<~$S^lLT=W=hayYWUULHJj%NY4wC z*sMEIEs}q0c$h!@o-cCI`;=|VvadHe^j@{d&bU(l;7eoGi`IO%f27umP!p?6Zjx6!+2Vv h#4qPJ>+4x17*4$1u4Mexw;xnCdb;|#taD0e0s!)b1%Lnm literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/tab_profile_selected_nomargin.png b/src/main/res/drawable-mdpi/tab_profile_selected_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..f9d68e32374c60c5721130163e0ea9560c706517 GIT binary patch literal 1538 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 U@dts%O`sCj)78&qol`;+0J;V=SpWb4 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/tab_search_nomargin.png b/src/main/res/drawable-mdpi/tab_search_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..480ef9e67537b8cf746bc92bf702917ca015ee5e GIT binary patch literal 1596 zcmaJ>drT8|94`!^f?yCuu_Ctv8EK@w7HH|Mg|)qQEv`k|Zgj*=&h{uRv{$Z&JxD_s zO_=DM3StJ13~@4@^M&y-U!aKv<6~oqanm^wk>LZC)fZsqt_Zk4#xA-0J@WZ{zOPTN zcDeTb$nb^X3Mu8znG?)Qqpj0JR;pU^)yn zmzSQ$#0X3ksPIQ2P)hq$? zGBl9JDaVSestN+rS7;5Uiei(<3}$BmVhW}O>==mxl)c2^f+-0&t_#!qz%>^H#vx>} z1bm&8QL`M7;{*m|aG+EZB!B<`kHbq#7Yc<-0Y1coxDcPq1c$x z5Y{2eiCFYW0v3^^6XtT=Za2rB#=!{-mnRa50vddNDvd~Wl{-k3N_DsrClwIPWg@Ij z(uzBPfFimYFC!%&o$2cm?9M4!hijrubi=q5>g4h`P@tqqpholmP`iB!?ILy9n|%LM z*kvepVq6{O!pjH~J-EWeKqx0HCoq)62?LIoOm=a35l-T+BHRhc^%+2()nUfnu5q+R z1FIb_5_Om`H6j6NKF4Y`!+en-Q^}V@d?8QC<0%AEd4^0ROqXULNSZKR2u*Sk+*D@A z9ONX|{D#Y$mK!jF-APAAFv7Y9Gb;()4vZHJTc^!MrkGZ5f@_{O7nyQeE|*S*8yM@q z#yojNdnd4+GA(_WvOVUYy-v`kR;JWEWiW!<)rizUUHf{gW|vMnx2x;^hcWZUF26U^ zbEI2#PtuygP7DvvQzV2$n^TFNvnjS7FS9x}Iy9~av<)-a)t;WN)}@0NVn5qh(y$(g zUd&w5e}A-eZ1$y-51WN~H-|cBH>SBSH@XHc#>F4s7sI(?Yv?CLeI#59pa*7u+nEE+ zC#8F@4^^s?>z~WE|D5TIKizWm{$@(7HT<$_pi1AHX=FDhoGq+bcdk!b@Po6V|5beEqNviV?lZoiZN1U^!*V-kKsojmKY+&WtWOmWE{J-AEn}i%DEg8`%{<-y zB+|RLGtuJ?-O?#<^fnh9MRMgGvnrXRA;-dxFh`fIYZd1u)o4}Z$4z;)rEKg##7Q1| zh2jEhgKu$9(B3VY>W3M}_`stM<4$YxPj~*RtoN=taVq%EKuqk-raQN^Rc=qq_w3zQ zYtcwimJ9=Cl%?z>C2@d*dyr^l<;}K7N za#;8E`N*)|NPZD2jJVC}%+G4s{Urh>oZFQAn_`Z;th8$Q+yesMVA-Tf@|j0=`r49& z{$ykFNF|GU`wvg%i~i?h5pCNZ5I<6y+=Cw#Y}rx3rHYH@J@F`!jZJNvwcpjxXv*Jh zXnW`0(@~~)2SoP^)+9`Yyl3RpKSk6G7m&u7Q3-&~Z=zR_%phHu+Z literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/tab_search_selected_nomargin.png b/src/main/res/drawable-mdpi/tab_search_selected_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..d1227ef7829476ef2a7adf5eaa39891daac6cef8 GIT binary patch literal 1604 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m=!WZB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPAEg{v+u2}(t{7puX=A(aKG z`a!A1`K3k4z=%sz23b{LnLsv6L6GvlLM$o& z6x?nx!Kqgt=oo!av?4__ObD2EKuma|1#;lYJ~a=R){B6Ny3*kEYz79VU7jwEAr-gg zO!dwP4isp6Zg=TO$2U=4*6uu(qvg%~T>At><2kyvN(;J(>y-!wmLwkJXyO)R2@Di4 zzuD2@yClqIb;8vh0zB8IDui-JxoBP5V!qSzpZfP_g?{fcdzj@<&aFOo=8mOtvB@!s zsZV|@1in{Oy4%j)tChm{g30=z(gl_r1E-&Fq@#-7=$YzzJhBYGb@0QkTJ20z8I}W{ z1tMD}dVLb(c^3cpzU7A#7gIaSR6NDSxE#e7)iEUnOFds?E+E-xx`6)(gXo14BhhH5 z1^hb8em&KBplNYfK7=n%qldpa{lVnf`}j5p{#aVN+>z_f_o5BFZ$4g_&p!RYj3x10 z>l(gJ`lponEcx!?3x)i#B3~*bo_~_dVb^EX-TeIW{PoqU>{j+?woYmke^AuBr+@d< zw9pELUw;zzzfdsWC-BuYR%`j~{}nqjKX|QJGymn&Ma^gW4Q@tOK5n4%qx~UbZ6#v?RQh-^KuR?HqLL_Dfik?_GM=1^Xy~R zv&6hQ=H{?;o7z6?Yx1(>`PO)_EAZfX^`NIl?80SwUfWVlGG7kFb$zlq?8@#UeZaQ$W74~yzjYHfSEriozOKB^N85FE z693B5$W;@R?38MHMc0;PKii;WCHGUY!2ROJO7&kn7vC{1Dp;Ogvh0vW|2u__)p?1A zt}|Dru~)w<$>Us;c2_~~E53n>+o#0I)qw)+UL1rYo z%=^Vsf)_9h;=2;=K|!Jgv6FTX2gRkl>i24>&xS18y;>SBeu$;nVg&jEZEL|Y zcns0bQl#R;ErUeI5xQIjBgC>v31QV`;%!ZUr|*_>S`~;3dpF$*P7RlQKef#V2VAL0 z>!=heEJfz70cAF2P`Yw>+e-ap5y+DI>B`hAotYwa6i36y1}{~}W&fXJ{)Es6p=edo T!z`Xj00000NkvXXu0mjf^t~AK literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/toggle_visible_nobel_32dp.png b/src/main/res/drawable-mdpi/toggle_visible_nobel_32dp.png new file mode 100755 index 0000000000000000000000000000000000000000..24b49d3b39ac7ec7e1a373d6595840196bd3b910 GIT binary patch literal 577 zcmV-H0>1r;P)qOg915F-8p&4~8qqD4V1gMuK@t)wo4XjK$gM7xSU zFoPC-E$h8-f@!#S&S)7f?&8_p`<^o|bI+MM*OANR9F2s-He?&J4gI7WjDY|#M$i7u zPzRU;S#S?NEw}?2(mLy5$OAUOo5F+@uV5Xx|H4oUSOOn47?F7giUR^`OOtLf3uTc*!P*UW10E3(% zql+$?osrG>K@23Q^~HB?im}Rf0oqlDc9`!U6|`L-Z=xyEyKh~D$+=}^D5z1uV$I|g z+JaP5T%k|NhMK@B6O@%c6W8W`L7!o?$FiYWjRjVO1!5ZdxS(Iw(9cwBC@CzEsM1hM zLm!ks*$ESn78VF-EHEzUvyAr0tf;4%po&z~MTK@xD(WXD_oP+ZZ!>{msqG6EW;z93 zl*zfNI)|KeSXl*^=>(P!#yBxsCohnxlk=7F5kl1G<;1mo7ln z6%tWgu2E)ZuE0pOe9BdoDoYv82@ zBSy?B=&i?)Z;T2du*=lgHEBZfcv0`)Amh9l1rvmiW-9wf(KcioYFI;GngCUIFTww{ P00000NkvXXu0mjfzBT+i literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/user_no_image.png b/src/main/res/drawable-mdpi/user_no_image.png new file mode 100755 index 0000000000000000000000000000000000000000..16514faf096f10a0f36ddffe4cce8bc6720923c7 GIT binary patch literal 1709 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 c6&A}N9DgXcg07*qoM6N<$g6juCvj6}9 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/video_play.png b/src/main/res/drawable-mdpi/video_play.png new file mode 100755 index 0000000000000000000000000000000000000000..90917389d936ae3f212612a95fe4d3ead7af7e15 GIT binary patch literal 387842 zcmYhiWmua{*ENh3C=JqTS$f}WOGD&4Cp9S41pQ8t+rFFO;Q%7TeP{*i19t@P1#-cjZ)5=l{_26J994r zT}>A40`aTII3-Ubu78^gFzV9*@)Rxg_~G9w+6o(Hc4Nz-idK1JiZreyZ(5J<(DjjR zD^~9Yu)TaOG<1Ih)kdg`}Jr;mB z<}1E@{37Y1vbl=H>l1lrfW>+%wBLfSGf4WfV!RJ8vueNPP8UCPr}!f4(8h5aZUzXz z+BlH)OA`AOfj7FA|CTJA<4=~p8W~#}m2BRwy>q3UK%PKOFd?aSobw)^wo7!PZG?kZ9(JX11pr8&y;Xr?YgOxLpTGJ>e?1SxyHdyusohXJf{=h{B$SN6RbO9-%*hB2-ygcuE*MD8wU32}b3-_Krc zw}|l%^l~O8agIF3^Nh5OrD>3@^Ne+mv<<|CHp=odeY>VuB9c{XD1$(QHoE2f_8~_? zyCRLs5pQ5qnUnYPc7emC@6I|FG*?6#Pd)1eras#q^GBt?OX5N{#bNyVxTaQrLQ3$} ztiSX{mF%cni{uy{a1!d^?-?AxaAq4Nx~HcyBa<$!W)zKXwWE)vuc@y6tPZ6S(j#!{ z4XXAR;oL2ck-tP2J`F^>#UKx>z64ES??Cv*MlJ+0EzEL>f0$Vo9V$wr9}e}=TUN#;T$9zvg>LyxC#fzpsB}427o>WobAm#I`vH=;ySzmG zdj?s02qa&#v;UrXdrI_SSwk7-Piz;;2>0u<3U*iU*QH&!)!>_C2EQTn)n3V`P;FqG zXR>%_{kJY2*E_&WdN*<4-M~qdVvpJrF5ZPM4l7DLW)p<)DB~jE96vfT6BaL0EmmlS zpYV?Y6f6RkI5Ob&KU~wZ#5eNr`Y3LKU-aGrUnDYloPy$UV@}blfIO@lxKBx!I{fJ{ zdp0PwSkIZh;&=DOP-t=o1;ub}Fnv|9dSu9zeUjgmJ;vdh^)f{W*u2}`fUds$75Muj z5KNr8F6lzkFbdBGe>CL)Vjiq@6qxB>o6-RzOq~81gNgIkJLJ(D%1OY98C#?y9}D+L zOF7&5A7r;kr#agB!48wLt!vSWkj^#1R)d6q-xOL~q!j&ExZxE3-|->8KD1`cy=nt37Ny=3#qSYspoVkyxG>vF)KY7Q>WpbG3Yw$T+2+@)ub|kbaWU16m{9Inuvm5;htqi_Vvcay#zMey>%?d@e zrD*QW{Z4ZavvePf{?E{v_j!6k)=C{IYproL1~R=KQ=FCsgaYr)WpNL)y0aqV#k8v; z`GoZ*M#%WvN1D~hxcaX`Jxwe5?^@3ojQSCr+7=7~HO|eHrHcOH^AVH&R2XC{jcJ4Y3FQX)=8BD26ws zV2;5Gi`118QfcIUU$7rT{?29|ckKAHQfF?CAvWk!@#U<(nUW-rkE>!ec2d8 zl^|%IZ!^O^Yl~lyVrKK44*ljqx_gHn^Q2+YLG|obKG*xHxN|4fgdGfL7S-?Ht{U?O z;X}-O&l@TNPP9%a*p=y#T#5a7e}X%m0& zM%6cWvnZ{NGNIm=oW5mwUj}AKlg_5-v{T9`93bOWA!YoPx0XEm?Bu{}?Bc2N=13;} ziLml!eB!}--->4a_I@cGH+&0+x+Wfuv#M!P)G7jM26n%g?krw`Bt(E`db`m;|8bK2 z8Q|td%P3u3UAgte86jO3?=?1$XhsX>t(*OiNS;Q_2A5o`D7#auD6CJRR#6Ma^_UF< zmPfpOv zLTPcQ5sy(o?^~~=P=_(EniLdki zRH-N{X{yAAAcfQ(R#?00`t#J>4|?0Zt$99GbV~zhv#KwKXm>@#Gs;Nv6u=jt<$WOD} zc0(X=DrYE~MY`F9%PO0Eku9A)_i9Y;LUr66T%*w21*cd&B^06x6>qrUlX`#sc8DwE&jO z*}$W#qCb`6AYu6S&;EK2-EIsl^oA&WuzPWLU=0rN%pVZ3D(Tm@+95~?{29L4!5QPY z7C7c=P!gd#tDLJ|S6m5TuWb0i1xi(Rplb62GopZKEgYz#*CZwE|6zj}FM#0L>~+as z(csVgOh6T!S^(*@)3h(+FtZ%p&;9>%`olqfQ&IxG;oD2_=SgkZeQ$Xua)q_1p_vM6 z)e<9Y-XG)&x2n0|-ZR<>7gimY>5A;MW>~!X!FQN(nGxrDvztNqFW?1LUBCtzD_*pV z*)~>xn<-Xb+qk(8-8_+x31I9~WhI@ilSwFDTV;2M{+!`(nRUe&c#bQ*^!r@4_J3`~ zx@K*24PL4aTbG<6Lyu|+Ulrkoz^_wbDKIVeL%m^kO+7-1K36pjkBV?&i*O=Ns!{0S zdzj!78KNMc^($;;Ep&*tVSz9G2GBLTdn4t4W`n|ODdqS!W3Iw9ar0dLq z#>M!>NI^*bwTIYeayLp!ek_7I;dRl~qd>u9AJNk1CzW6Rv_a5#4ykJ`t;t7hPPLlC z-4{zj7Id&K&N{_kLYg0RTT0DWm>hJ+RD10anN`NcsDdrtk|^PP_ud)_AYdyvGo)B&0E|x1)j{-PreeZ zT?+dO&1;a~cFg*j3DK>eDkgF-=tQ5!65Qn=zxhYQ%RIe*Cu;t_(%Mt-9=f7a+*WW; zC4&6M#JqbOzN+vpbnK$&fE#R%1L8piCO=^SeG2MF7e0dml4AksINKdcB4Fah;!_2=&hesf~ zlzUml<$Tgoi+A}<;D0NJ_J$@qBM=xA`?^LNRoVr|2$`vhqGrCY{$Ea919)Tl}t(UYcE{2UlE|-`)o0i0it7 zgS!rXVDuXrdjEZGWk7V=)O$heA1lMohoxUnc`>Yt!fRz{dvSlSx%e2nr0-I%ojY&N zA3~^)=|zv>?;9P20zZDPJAr@Yf(wd|0G1WL4bBbql6P&se>7dBai71Kb}6==l@S(jK@B z{TKL(8T5&yKTzm-&dS8Dx_Jb?i3S~o;)X0-(6ihdw*7Zd&^{l46XKu?OyEQH1KiGx z=MgT7d6TZL_GAV{e^5%P%DoVS8t+3jrccF!ODz+HiXPyUb5D6=PiD5eoyJea2S*QD zGs$@*uNeMbW>k^>K@CcGdGr-Xx$~Qzo7}`X@T1yS#RYQbk!XkHkwlPFtW$dodc9nq zoBaQOd=%-7xY1BgE9G^_HcvIl2VA+m~!~l%d4?kl!{0R z=KGJcpYPo_iBq* zdzH&0^QyhOWpRKq{s5!)z>4Rnau5Q8o_7LIjH84p4^Yyj{&iKaz~D5_;D7N6gnlY`Wf7F#qm9RB?u zSD+IDd!Ba?_G*XpGgp|_bG!j3z5ppc0YDcT4hD(QU}6guP$KDYpq?Q37w)3yhobr) zuwjfC2ZNs>00P|24rBYZVj^HXH#iXuq=*5`eP)@CXQ#Hbz;(p|3_w=Hs8TRM50)-t zN(f~AKc@KRU=ZR5PQ(PIPOf*L2LUGj1-@VH7;0OUgc1UuIR60Jz6@XtzJZeHOmB*3 z!z#8OO?h*Tw`MC%{>P0NRp->e+-H7ETJ3OQ1HBV18w}K1?Xb2t7}2*kC=UV9gl$TO zpXYA=?D_%18Se~?YHFE&&Xj29z#Q*^`vvtJgW{keR3OO8A%mtfuwk`B*xumj8Cw4g zeP+0CF^>NRo{b^NCkbU*0YbVnqXfHFsFU>t*idW$Z8EA9M{C2(Kz7GqwA6iL4d)3 zfrP6a1J8bWo~NC}Yo}7K;fEOqF!veC<+i4w;rI`f0?2K0(&`S}!gPGjKkcPM0o?CF z#b`hce}L8Vf~ryj6PwWjYm;ID0?!A!q6m1`XX430!;wn%KjFei2-J99PrR!g7HlB! zkNR>V@OLawF%ke8QgtwBjt0A%s5~p1M1a$!{o3s|URmWIfWUvl^?qI!C4S)V_#p7; z`p+Y2U63^jknblT<=Jbf8aVL>El^(fSu{Dm9|{cgtRHonEQD+I2ZH|#@qqrjhVp;n zAZs+>i22cmxvR1hWv?mvmBT~cd@tviFN7=&lp4@ZZ6F5ED!hTkx)=L-FKL+Y})bX{?$L{j8#?3C9e1lKt0KCZM) zl#>n{H}&d?T#J&6>=DK;^@7K!qNM}`*YxW?F0@5vQx5oN4yuVYL4gG?RaWg%X}eVf8W8U1WL!CJ#&*64nD{q1z?Z|!-# z`jSJJPssIl;=JoXl}+BiTGh=y=qLbdd1V1DXcJSa5cWVI^+{woJFBiDP1y)Th!3XuNt2!`RA%AgY&KD|M}EV3+pIeRyh ze)0XV2;7uCrzywxx6Dz0N;AnoTz_kiPW4Lt%xqq>A#XynBHk5VDYA20bve0vpP?^7 z`I%+wgUA4aLn&8i$OIjy?fo6L6ZZu{NlHdP+aW?~QSY~?ir-*nWGsQ`xD*>@KRTSu zW0_VJzW`1tLhA)8=QT#Yg`{m~T4O)oG#K$9^zfUD`%BU>?FUWD`bs=7?Tc1SR2_>x z=PoigYNqH^B}2;xm~9FBx8uhaN!+zIHI%T|rj-WRxM}L+y6joxLUnlC+0MW5)=lTv z#{n0aYc*qZ#+Yp%vlsVMnCd?0beE9+@8%@4OYe)V$kckgi~08A{@?ZKHcWe#sq96^ z=c|t+m-@>+NCSpeH(P?W?fY)FOgqX9d^%~!#$UTp8V0%G&jFJg2c(Ukn%%rK*V`5} zojD1X4bb!_GJ~2tDchaC67Aj6MFtX{=1JeiYhLstZo~%guMc6GI;{koUMFDMO5G1$ z7ud>t_2yse83zsr2CLl&kra#%x?{ca{zV98?cAJTFHFRd>DHBQTI3F42JYLH%-4>0 zuG;5pv)%#x0OVMK*IC^bvUt+#&n~tT*w^_z7mXrWb%X}7 zz=(V1y=?$Kw6w_{uIz!O^9C=((Vw`18_CdMR*3D`-B9_Y>AW*=7J&KHK#1}Ofgz2}vg(_I@-MQ!E@ zRqv|1xi2kb_iw6A3d!vInA2;paL*CgQ^Ug4h*pUcJ;f9VE`X)Vifr`N~Gt<%ygs*@WRpwgvkHF-DDkfs5LPBk!J ziKUGp$+D)97cI>8e}OMy8D(zI*}*#NN3ROkw^=kg3O zFKk8IG%1=k@#zuTBoz5QgREyn*~E@tb_Q~-N^03>kZnmON`M(<8@|QuNT!AWQl7~j zJ;pI(k@B8rixI2vCwlP3g+(bLEA`-j=$D57@)0Fz4!o z;lDunRmrVq!j&Tg);=p^*XK#}@Nck}#0T0=5*x{Pr>3YrcL#=GI%aUyujY3L z{=)$l`U2GdVU#^1wVsjh`vWnakr>ZN8GPV8*gh>T4xAtLpAIVs0jT3_{sh*4lMDqY zKO_ABQ~v@kgz5r<>-W~MLGOH0RKF%MaCl!{W_K~RPenzD!j-ut(x#xbr1<(EJa-oQ5^>aUy zsvUG(7=Cq*lSNDhJ~=Jf4hlwWq$`Kgjva==h8@QJ@XD*JRQ;-@fRWeQme1vkJ3!+B zCxcf^$~;Rz>bw8Qg^kM6y!vyibz0|2*a!T`&pIimq7#8H*A$y12&LUBzv|^xwubR4w2}+8ZU;bAEL!50Nh$9k5B&a2D z1>_cf7lghl=su~<49m<6(~DXgxrR(}WqU93h2c;M`$mruaLJ!SFl%t$Q`XVZNO6N> z-@JUkBt=eZ`oL{RAO2b|xWA6{>~i&yn^PYsXYl~>N8W$X$8!=b0n(_xEF0*<@f+f5 zPE#FZ4Q)dd84Jo;hK#FK4e&|}JQSbl9JDv+N-i}Nk=#?+*#0{Irw$145*tg#2L+hr z?0VZ1%rmoaC*k7(a4(KtU7$$%>4_`-6&l5TiP{*@*z$HKH09TAXGk#1pKHrwh&5Eo z3;um#w4GvDGEl@wmurbzBW{KJ%CM~7jCEjD#0X-S=m<|tknrkR?PP=@rk1(s?|Yd! zimt*uOzN&>5bsItr53rTdDLdPuU5O#XMe~+)+;`1evbpOkBbOW`OpkIUp)X-y*>_0 zb`sJV>2!7~Cm4vT1_kCJ)iAA+ZF$Gz7(9)rDhs$1)!sHUX7Yw2OH^#I|;|xslXE+4jTzwqp74gXj zn^rPsHUai#2N=@<{fwxIig&bF{G*fcjRnfD5a5cKqK2GpN$jC$w^sukDX|$z5MD3- z`-dwc15-u}_aj;ts+{it0j>+1L*sZ+0b>o&_RnQHC(&&#E9#oWp|AU_(n+s7=kQD< zS$D_)#iael(<5Ad_*^6O414_jMk2;~rhy;sM=_ZfuHcn&zY}W3kn?N;iX_A&^?7#Y ziIYI&HTF?;oqm4kWQ-l~%HGe*GgweA@<`IFboT?xaI~kOB{>zG(rR$-b7za}Ez{F) zHN{uLeSvZ?f2Xy3?wD53C5apcD$EzsxmG+?8({A}9cOw&c-FmIJ5VAGjR0v+xuE8ui zW4V=P?0qztz1?WzP19vBBSZqK^XRJE4B0~EOWjIbG=FT{0BTRB%Xs}3~SnD zkUgcNvJu7B@{Rf?F+f2TkiG5xrEA5M1nMLY&wav>o8OYZm0ubk0;;6{Y;Lr%u0HDf zl=DCdJ>qaXPQM6KSbCpRE0wCpGot+UmlKK!@wOe!So|bkT1j2*gHEHkzH{~Z!NAt7qrbZb2avL$_*v+xobC|X&QI_09V7X7NlWpI^ zau7hNbiz-wA|$nhDz0ZF`y(YYF?=vloz&dN@BlZ0R-+Y^CC~R+%F8Q??`fjVP*km! zE;sdlPiuSOdW4$y>qv%((KLxlHcfENbRe8%Xjr1Y(d)_u1l5hPsZuR*S(FFHk2yJs zOSB3Tk(fM44Bi~nsrbZtOkB6sxF}SCB2N@ucPRF{1VU1YCd@RURlGI++wKqiMPA%p zh%y?dte|7;l8W(rT<6HiCHdHgcWk#pvECH=XBeK@c3I;LdrVWxch>nZGxoiz<%>C6 zjtctDCGoopP8h{sCU0mcnF@3AH$I-}7%6BW*3=28>V3b-8)mcWPQnbA{GpB;8!70{ zOceXwscRUezP!x3{Ke$BhxS!uTbCV*t@6>=+niWClj=<>Nu$KkgEp?2K0h^@4f93y zz9PI~mXM$&$ys*o++h-vkepME@$we|M;WI?Pvg_+YF0UB*o84M(CFpR*LJKvZ3dRE zC+t@Mk<33{Pli^9c#!Eg4! zU}x*qa)0kAvu_YCJjkWw_B2`A)=_TPLVRC~^9Rat$qmd{NODWfj@Fl=Z=<@{qn%u7 zt6qHcDLg=YC}{(c7)bCGcPeQ(X)D|EBl|5!Y?4dkVP=|pRgM=)B~{wc>`~yXK4KLm z<&`k<6qb|Z+Nl>gnR0|tU@FFKK{u*j$vtzkKnB$@f3Pt?Ed4^ntFdf;>x ziSr;lAX`nioYOA#mj6$WNWg`H`LT%k>?^aJ%$IRg_So$G6lqn=a;^V!iq;sujl=@HBMyd*-F)RQU;t`newcc1pa;~Q%-NK zO16eio*Ri&kXd+?K{W>wI2MKcM==!5$>Pr6>o-))K0(bEsy5WF?hyML4qUi8cWGhL zV^`^->_6{VNIp!CIE$Qp9j&H`*65hDfhJRvaL$ArA>A$$P7U|7&^K{%^*brsY~Ck* zF~1v`6lyV9`fO^3hv<9Hdsb=$Mcb~yAdt_0A)FCywMJ;{YG;cYxxmEO1GZFxl+L*DL`M{ z$zP*)WdP%oBJrZH9^tPIPn0|dmF0mK_PA&4-d}4%=AKsShFUnqWN4P5CJT%nnJ0AV z-s%HxoIY+Hnl8v%)GS`Jy@_zofd@|UU87zf^#fPzyV8X=(?xtHSzarq@bjpfAf6>K zi7URr7?1UtX6;v{3A0YMEmdaGQCF$kxJOas*iD9~@lh`PVXulm>UoIns*`gDG6Yso zLN;Mx?BvF`hCXKVK(_#*T)~6Fl)6%k1ngpLSBW&Oj|x9^V_Vf96#A>_9Q7{`Fj~{i zJY*AS)mojyckV1>IT?bm3=Mblz8 zB2`f|L9FT){P&jZeyDYd=#F*&JpGX;ytcE6_;M!R+tlXaC9_>4tl2c=ijt0UxLV`! zGP_<$)p_b%1F&0F8x`+g5WGzrd&hvw?a80C>;H1|$K>hm~vH)TR43Tk6X(kC_kvJE1Y-s^a2TA~6nogs;clmmjI0=T)2oM=H!S6~q2 zkuiXdhBd;cWQJ1fy~19VETu~?GN3{bcj;2JJB%RxCjWRQ&UBe?J4;10R^pJ|QU!^f|eN zXq?eh&wVJhbiq5$jGk%8=Z;g=6`UZvQSljAexPn6kVhVstD8FmF%NB4hgj~*Eh zT)l4weM(?Yeh{m)*MR%iOQ$&ZFVkKZ38xY=1QhHqkci->5TT}yq+ojgXd9H&P6+2& zc0hsjCg=P2SNjxsf4k-!9OKCmGhXDn%UONvZ09?vpKZ2mh) ztD;+}iea+o=Gc`aWhMJrW!6ez6Rb`td&@l1-O2p+;bJI#jr&(1u|-#Hpc7R zt(cEBi^;M@70ya%RBWKt*EG`SG(}Su_VMZb>(WoPtmjw4#uLUU@G@Ew$;8^!>%K|7 zx4J$oQL!D#ZU`PttHyUCXk*}{6TOaSb6{p$qRRf>ojn^qN~5@o86avZU!xXzL8O*o z+G?`H2vjb!xX{tSavM{TZk>XwD7ov3hUGeY7unX)R+pHESGpPu%)icX*}aiWtJ{w+ zVP&&35su8Vu@Mm2I`}F8z9=cBGu_#}$C`b&)z(HKaG6+kbA+oCI%8g-*Q$K2!9PkO zpKb7kR$iJd8p(6$@Fu4tb-FW<-}*Sg;-S-SGOLZ({QCu|L#(cQRj>5y`_->D0sK0r zGEB&U$y4tDnVK2gw4bA`VKU*~F&@uv+U?YMig%#P*fNM9fZ_)wIWRMk#N@Kmp7y6w zMG;t418y2}?0ialA{icdrf0M~i<6O%G>RzefAvM8PIUcRz0kkxw29-93x3)}4XNra z3-l&9-MR|BLh|0%whk@8+`nk}jw2#hD3cIC>8(u(Qa+VbB*bQR_twnx!n?=nXdY5( zCjC#cP|05zcC7gOe%GTct{R*cz5Y=(#i#6YNb>g;C6fj>Q(=on9Y$GVZR0!0UBHl} ziomNrY(wwH=9eypk7CKo6ufu8d?dcYb!sx;qS>a4JJymV_J)Njt--Z-ZmO3<{3=?& zU2dJtBe_9}^nq<%|DMPou-P^)AB{8CRDaD4`9JgFwt_|{e8Cm19?MWK(v&k=_*#Kw z(RFGi16l(uSA+9}s-psZJmq+89%2HmZJ~Sv`f^yosnBnQAdwhWV5!tB7^hCnYlPp# zWfbQqaV!}BoMmdi>BiCiNm&+q#;G_|SH?x5wA2%pM=##PBh%BZxlh#ESpT#WH*2K1 zuu1*Yv8z5*)Rx|#x*(I-pBnyFTE$C%u+52M#p0dhHJ1s6@8~HGmKU`%X=mNY%P&7} zks(um_NbA+oeTSG^edM8jrY^sTe&1wX2>2%&VK;M(+l>?7F54L3u4&~2cEDq@EvtIXiONSVB>q4BJH|kferT(P_Q% zId1*J-f79C%7~v2bzu*vp7Qs}@wE#ISA%#2y-2DOG>FkkLeQoBX?KeV+ADdv4fuU?hRIV}W^AO1^D4Sz+wTprn-)DX{t*pa(t1uesB?n)o7Q}Wl5IoG)PI8WF23x>^Y;0Gl4xoN{2 z&lDftg?E?Q@uxia*tku8b)=G=t*ze%62^HD`Y+++(c7FQb2~hTqT^koJor)Dq%rq3 zz)qJ&doO$lh%jv}5i5{QPQZ_YlDN4387L`ZP}0$c4SXhLyh5IMQPH%_0yNAh zRr_zFGFiT`^&+UkmXiG{>7o{sWFGtfPc?JpBG zl1ze}E|Vx3(_!@LQoBC%wpsx)l?Tu_p0Hc$h?gzx0o&rc()4N}qxxZsW$@TDLTY4s z1>2eQou1O`GA;-b3w|*qIck=WZZdL45W97M*_Xs#iiFZf{H$z=CU>58!XDu9Kb!hbdzEXZGJMf{{${Ao`sb*QqB&c@w&4u& zfa%&L*^4uKSK5jFENrS3n+Nuwwf(qUQoV9dqh)iDY4O;s5F`elGd3tYVOV6yg(u&Ht^ws6|(W?=1825up7Z6V|PYX z{hFpzW8>hMa0eQ5316b{6`M~izn592G0t=Md`n1ta zBxGAyFn334mHrmgW%0eMJ`NV6^NMyEEdFHfY>OKAeOmstLTcVpIvtZM0O8YzSLvwr zeCm5?Is+BaxZdvl^$6|q?vFt3M?-WDkz#yD%vZP0giToTm0DnA83S^j2l)^=MIj4x zK+bHm)isglFF{~^`KX(bqelmZ(g8D^KF@y z*{hev1)v&fVW6?kG-WYQF(OT&n#3-=_vSvZX!M;FWx-DU440lby9g83mzkHx7n(-$SpL~5(IoH<{+D^-=+S~;io4krq(Tn#4hY;?q0W+S}0gK96*9o)wj zldefdQd}%Ye`{eCkHF7xoB4{G%Dk_dCfBP}VR-4}%3J$~-cyI$i_mF{kt|#Posj}9 zljW>Ezw>DY&mk6jA;;yen2Bvdp()R&#Pp?YG0V;Rzmn%9fRWyZy46dBL?|D5N$tm# zR*Fz~@!rjfz%_|N%CSY`g)A&^ZA|Z_O;Kr^ zRjpvfUig%Vw{4ki+|Gg}azW0@8nQI4=c8eIl(j}UjR(;(U=vs==wIZv(#P?vny!Kb zy5#j>mI=*6w;D+%;AQtCIVA^R!~VOmJ=y62|AT8~@QO<#C#(E-UYbQR}dxK5Khe>UgE#%4-p49`ClJvh*jS#l}kOg zRfknktgsv}BlH~hM85X26<+WihjcDT@&{ldoe|>{%z0GU@(rPGuOB zPVPSX2&OE`cgnL(5Num>4n2pMDv2TctS@idF*Sh4&-C$nOXyy*qLGDt$nN^2qamD) z-REi_a(cKY0GuK7@~ODErB1+`!EU%Pk=e|lBrMh62WPi$y@7pA=p8}0d2}XICMXCO zcyG-cl(8g0K@D8mSH}a}fo)~ZRdo%5XGZ=-x_BPo^gpqVE$*Gwq%|b*jTV$2&*%jZ zMRK9LDg1`A%gIM(F85YHmKLOghZ`W<`>hM7y(_dl$4CJxmw{d(-Q}Ieg&p~r%`Vn+vjFV);IgOlieU|IOJ4MwfPfx29mR+12tZ38}3mtc{&! z4`NY=rz~ywA%Tvfcf!ZY)T0e3-#c$%o=oIMpRIBvfam7U{g?Dsw!B#i-7sQ;Yfrm< zH2dytD8n{6zNp+S=e9+!iz@7C=lXGP-KKK0cT6NkvvodZk!elG@qES!wpGS?=P|#T zxTERQD^hkovDRJig`@RPUu798)OL5&|M@AqtM2ja|Wc)B35|d{Xg@Ha}xb=TjpGO@xk@ zUoT*>PtX2wT5Z%guS%()>9Ae)cXO>uKn!sDbcCgDTGune;{;M*!YSNqTKFD@rA22L z!-xTYv77;Dm=7D`<5lRx%pdOt8jKTasT86zQAgY9F<$?ne-5;E4^ zMdo&e`iQ*4q+OZZ@u` zxKy0@xIF)Jj-S1?Fk1FBxPYSju@=Z)VF}auecS?1$e-ocltZ3PD3sb%wQN!(7}4D) zSnQc@aZDaP5@@=eUkDycJKfjMu#j$xLVAeZ(h&+vns}nSpre`A$?Sqhd6C*a#F|e_ za&M?Xi%2Sa_$8xChWVc3o^pT$}3DSX4F zV~~Y@UZb2`r%F;ia*fbb??yRea4>@~@5R@G`rVFM`EJ3mqKoQ*arvw8M)jw9dz~%) zx;D+yMyMH~f|fSn%;diMy-2aT%W|o-oM0N~h*&E){;j z&UV-O)F1Cb5|%`<{KNRk2p8=j&C=dQH7DrH;FMjWo7|617(9V5Rn<|d^Bg0MWJ~D} z@5sS&xx*iJ&jpC$w(d2~?estDE8FOeX zw~b!W@>6nm=63t5;OlHUDO$hTo>*ZpJ1}93iSMaBs1a|yzIH0uc#??MtP=o4GxG{(-$3FRcZ9D)RM^AXmFJBEiKbu=!C(rz8+Zgt+n4S!GvxAt9qo zB_a5ht$AWAbEUMDf;ZGv=bhCO|RTyk1nLDV=GmS@C)lJj-z_ zE8l_i5Z=u8ii{Vt3v@cbAPcSN@S`J!>yI;K*QtY#ByQ!nk)K&#i%vPo)KB@t*KnD& znB1(F^HNv#@+;4K=-*%zmi_vE+M-|_IN(pMk9iz=QFOR~)B=^E;vxnxd-#btPYlnZ z{b=-vC}?Ynxbw9e;{EY>_IdJUz9A$k9!GHQ9$MCa)M+VT83E#Q7<`=SM@=JWVK*-w-A#^I|i&G*)O9A zeOck}lLnjR!Ys0SN}QyGXFdn{2en#lQ*@bGAT9g9P@E7tFI$!WnbZy))@{F zCi*{KbA+UlVzXk^j-N}xQLg)Lf1yA(^8+>xX*Y{CBUtd<(P~f~TOEKO$cRxD(M(a0 zs7-!Z?H;RmCokO5z0t<$vdsn@JW%ofa;@Utpi+r{jAWAcE0+)ff&78m}lrUzSH8bM*+ky!=48p>TA-D`GMpkS}Mj{-(c}qKMa1` zz1l>7g{to7>5KpR zwCHxR_D?_f%3puPPQ^M#iS(WEWd+V-h@-}0c>9X~6?%>O96Z!P-*9nZ`#1Gi!sw!? zTmr2^-(E7J#$s8b4g1xKGyKKkcu9<|h(&~Y;4AVx6MQGcpD{#H+E6TP?cXz^s-csh zw~Bul#U(}wd$Enq;ye8O)A8!Dg;85k@UH$JQ*Rj+*Y5>tBSi-*Hn>ZR3~oh>6nBaa zPH}g)LUGsPTBK-kcPU=n-Q5SDcYgo(-nH(Btg|LFNzNpDCpkNNKj*<+jJO+6ipdR^ z0bdyuD<*0L$Bv$kP=SJlP!dSmO}oi+iCHuD{Q?CaK@MRr=u;ru6xJc~hoFRRd?Uh| zci~8}@W4Rn|MfM33>p6fp(FeV9BfR*Q1X~@u%hAS;W7h1Y_dBNHp2@c7$8!@%NiWM zQvtx_5I#GIqMOP{h#jDfA_*TB1nAbMdj9}FeB+dbr-D%WZWf*dVI1Dj2$lVPIyMUm zFT83u$0oWXPzHG&-b!r!Wr`#3-6om_N_&vG7#t49EkZJ^Ckbj0!;!axxVqh70)p>} z_<~RrOO}S{h!BZT9CR!uk;j9B8jZw&=n|CD?Y)WPh~5lO2OBqszzR55;tz26h$HZG z@D6$OIB+5G5<#-vUER7ye2)0d?_lGL@UfebihNi#e&-raDyUpcKM(0YxlQhtG5W*~ z)JDsCXO9>cq}A=wJ%-i@j7L-wL+i$~#Q5)z=5(_d3E}|y5iJ5wx+SOx9?)gb^JCtj zBUS|ps-RgSxxVv8*a;Nq4(R@5go1-f2B(Cu5ajc}UPY5ZFSHd??M5s`m_;H%^#9)o z;SynwA!#CT{HJ&Ea6<2L5FCOicjM1!9(V(3VV#FMi=+$Z4+{bU5@9I7{epK1B-^6evmqGSNkRtHp%M*f$Cq_Ly0>Li6 zMg2;*rx8UB`Xc%%$^=|fAOzjH>;peGY^FfW5hKr|-o$NYacsSo+;lV{<5@{Ez!~Jo0ZgmYFK}Ie_YoWs@~UNp4|-2Lexs*B0am8Po5!i1`iYe z+&^kZ;g;ha)geM53z%*4=q$;1zzEp|$ku&q;7xiNsIl+k)-?3G=wzAjh`0U+n z>a04_R=eMt_w{^fiCUJ;i5&<&VOX*EX9C|K^pDJ=?(PnWc#dnaviG$z0*y}sRJCgE z6VE@{(uk;F+pZ~eXJ#dR<}%;P#b@*li4*c~w`=28emaW_0HQ#!8E)BnlW6gL6PIVe z^y<>+8NIPud)sV~OX6d-_>#c%FGt+#bAozhJve2=<2y{uB%~jj6_;H4G#<|kBW+a! zR{tWS>>xjZehfa{<}G6zffYff>4z!zxr<(IY8c=vv#?}C55H})QR`__w1Es>r; zski4pJmR$y+W`Rq!NM)FsB19Sbnm2ifqGGxNmT#ryYcGSoJz~_1>bV=b_ zmLVzAm*HoN>IH?_ztPa&$3!$-!o8w1%)1tC{Ei}t6L0=!$WPBQpSGZI0ZougRavh} z3Y=$g9pjCn4-Oma4IHPLUYVKbZOj^+dyvnT41XEF4o|pogzcFO(`$ePXm)%NVC7{6 zpP%1hbVHTi2-Vg*wJD2@x=QCe_yhEz9jH4DIR__y(&;Ml>TV@abJ%trAOuo|(C1H2 zi}(%Wku^u<-)>A&d53@)J1=aT+SVr|#|Z%es(2=l@5}c3i*8eYp08s4+lp9=uI@_P zl?||ypY=b?5Q;6|L3r->H$5I|n9a+VdAq#>79h++ zt#H5JE@^YRkvC)z{`vm;q@fAr{<`cq5weKYIUQg)XBA7M__?z2^0ncOo0?N^7UhUl zec<(BLU?L5&LJKC`HDxF=6uLwKJfM7T$Fv^-xsrPHLm*a`?J>v8iw2B1a;Ui%$~W3 z+eMQImPSvBmk|Rd)^7>AD05|5pjsrfTaZoCFZY{uv#Z~gd7PICf%iMVdoPAc*1u0i zpO)|{Hc00XFDZ|M7ik^Z8w?jM11$dPa^zTVG&Gn9339CS_qS0Es-GQse2%tY8zjBB za93K*telc?a%l99rOp|TwLBl!e9OPqiQUMwBRV3Ns9Vgm9ik5*kv)9FLl z;Hus{^Y@N#DL%vKKJS0FI4TZP)EUI)QzA6z0V0Y4SbPPi!~D)+aeFom&6gqDz2c6>@0)8L*qYg;20~Ak zc6+f4o%36I!08pR2tHZ;`2#v&2G@TjkC;F#uxR|Ko=`VkpID%0(PK28aW~fl#vIoK zCSs1$Dkbp^afwyxB>#+Cj?;PLnJ9lrj#I`Ti!9pg= z-TI2NvBQax^`y-=&-nSAh4vV?ntw8v0<+I?km7sFi^2vdf3CgoG!NmEg|I&IlJnfS`O^Wh21^^e0_nfq-T0gR z-|f0hL=MAfd+KWeX>Q1NtWQw~u!*j_I*wbc1qkV8fox;J;$nCO7|sW>%`OdAMJb70 z*v>nV&j!d(iI~zTX4a$H`c0l|1sZ@JhV$4YtJsk)Nr^+u&A7dbtY|6|itf$H|GX=? zsU*#PqVdcfi{XtqM@@TMD_M@mD}{j z0KLN58#IBv4J@-)@5WcXfch|--~c`OO9va&H#@hUu1bc7CMfC~>jthDbRIt z*lP6{ShA&K;86XkbQbhV7BJVH;A0?z6(f z++Pu1Ca&lSO+vp~G!srD&ePX0Ox<0gmsp3>E7>i_C}amuBYM-xOGxShEL_Gwul?z! z_e9_4nZ6{}`p_(|WSTD95M29+usT~;nqZLD#qgSI`O?HLjbo72=^2exxqw~#8wCbJ zQ#Zw#9ebYHn&V*zld)?_VIy(od0PdH4`kRBp$H7DGrNO zRw!&{M+OrCK+&|Y5N90VFC5U=`{t>w=3%50)}@`^FNMy=Uw%zGtD~aq2O^%u%}hG~ z4j^AoOqz7&A_7JahLXdAb~)k!JKZpy2J=fh8H+YM!h!i^n%PIFKx4FEZ6?R9z(~OT z(yn;4YD>)r_5Wp}gH9LvLic~?j*ZBISWLj|B*69Z=9&#L5ZODR0RW7%LIFv3%+IL& zY3Jns37Z#CwAEC49VC|gzxc&pslZ-qX<0)8Nn1WL4 zS>~l(X7rKy>G&ognuG06)_4?=5F1V7W4R^ey?CZ*7;i4N-P_~i*m65&i$zR)>_JjC zU3eYqx6F-s1*;&7@zI;|wr>%s*7Q7(##G(XjiX8v^U&5R&~pj}&2O>Tu3ygz?Kqo# z`q&>B1aucIrXS&OCqw!R8^7!b z#Xi5;2zbahBQoWXDv_56*g|$PCf(|F4+8MPf{o%8L11IxP`ePoN>AvCck|_e zcHE@E-%$N%z?Yp~Hv-@(0_IMzgi-kEx1#;0`IC~26TL^oI)jZ?@{d&xUbcU|{Z3ZY zO{*Nv#+?05G>h(^Qg1s=)s!k7&dmJ5ja{mbuNsdcQ62SFm-^@%+YfFmUc8<1EyB`} zw&WET*DiS{topQBym{yKESlQCB+49rHS;fQEb_r|&ORTijx_ujs*Y?uFs|B3%UXWz z+$p>evWRXiM=NN#+6r_vP6XLoZ7(ZQ{^Rvt$9a5}@jv^ryNR0hyKLLY7?Gcd%@Jpv zQcH&oW#-Ha>qmU!dzurfn&E1@gl>CsaF9u$P(0;#$(#v4bA_Dqzwsqb3355;^mIb3 zZfEEFedC4tk~#b0KUvU}_fn4?4(wPTUn-EQ{CQ?}%P;G#D$U9pu+*~^L#DfD=J%}B zCk7=KZ)Db|dm`)7)3L`IhTbn;%2NZhDE!n1(f2asY!yN~D1`Hu>Wix~drR+BHq^hx1dh`++qMpq-Ch_Cv9tR!+#>=fBJeHQPtN z&@v%V@D3qeJ5{VrlBph9TCsD@)Q7@S_3^Z;@ZY_KdEX23zP{XHQ%X~7;mBV=KbW~E z7cYv+$pck1MUPMQi#{rc8ZcO0_dOYzyyBy+MAhKny5p3!#qX>IJiHh8YQIw+tSm^K zVp?q}4tJog=ku`dq0AQSy)unVsWF@^5_KIVQoJTBKga?KEa*+PQ160)!UwI1F05~* zKmYv*@hYgGFViiLobug8XNuQ&!KyivDaR#Ay^i;sptA**{q$7h60F3};Zfo8{ltu0 z0%zUIS)1~fNvW4IRK`Ccb?Wz4IZ;Rwkr{Ynu3=?JHJjV-d8-$2A|6X&Y^m>?6-AQz z9Pi2~v*@Hno|+FiI?HP}TuD$?#SNg1WtElHN~(7Up|>Q5NNu*G3FJUXc@@EQ68z-6 za+w)9E$*CLq=;69^D7G7poCv5%E~z;X z_Pnxta0r~2A9g1YwgJ6-l3Z72JU5hee#P*+7gkw%kzC+0nX(N!c_cd9XDI#N^+2Q5 z;tOh$iZpAxAr#0CsR915yu3Ig)*dh4OtG+f!qE4^#q+X%FT+UegNvhA9&&2Ik`E5zXYfa*>TP)oH@^%(MS<*Ux zm2|JqRx^RXd8Da&Ikz2-ZX~*0w2B8){l4rM3a zZv=CV=4p?K(gUu2UzXR6-r8pyRs+9A=(cz638;1ghTEv$R3F{_)|<-c-b{O1S>t+{ z*ueTD+pw+NV3P%1m15xXF{V8d{mI5(Qxz`%0za$ z>*3qjNLa4BfKPe=7HHQS+CL^yQt)uFRS>0=Guk!q>RcIgQI)mvc9U_pdTV1)cC^6i z{Jdd#)i$G;%Rp-Hz0BREZ!~|>_EP84BGo{#PV9Ssl{Bn7`6H#{r5$n)nG8_k_1W_B zS{v;&Pbu^|d-1z+shj~M7etL|-pAfShqw8L{>Di7Bh}Ho= z?XqTOkFHcLX1w0B4X%!}o!u>S_}}?j7+7?u`9ITO3U;}$dUP zq*5+ebJ}ujTbK&mGI7srmv3&~VP*0@wpT58-9)$M`us@S4)#s~6J+sm8(whQWZt8R z6dl$TBwC32gYp+zTM)H8JxDdqmBeLUlg9C{_$WV+8HivtpvGgI@%8x8i7v2Dn5-=N zNa+s=D|PU^9Va{E#V$K!#~a+_$)U8eK+lP~Z47v(r-BF%rg}Yv1z$!iw^+}Ke7zsy4eX)H6^ESykKs+blPkqYcY0IgfYh!|$&geOA;!9yZI zw?3OFmnb#;h)t|2WFN3K;H}|ff_TNG^RRJ{6_CvlZi4o@Nj60;ab@5VgD%8A#ZSJQ z92FzZ<5a;b#pb5|^lvRlq?_M}lN~P{?hR=kp)KgYa~8r&xN!JHcrNwWI@n2zJ&er7 zF@<0Wa774)M}nE%F<9Q+K@Q@F%%K-xtjgA-7}Ek)HpIYv+nycYw) z4E{JU129}F{7N8VHwP8^f9C0P1h&9;Tz7n2?mDp11(Za7N#e#mL2BvOAflaIfEXR>{6^Y9%{jxdC27Ebm;ps&gut zR5|-2z(3`>uoTh#`KPn6gh1NBNkc5T!yw=C9)P$vf@KW6QYJdLs!&wTO& z_qoKeJ3lev-#D1coyb{^tUbOTNh3*eG8P>4bSkGyv!r(Qq;Yk_c!1jiogF$nBHT+O zlXaG`0c6PCA3FK$Cx-FXq!;W79m|cn3HPmf@z8St9YXD+a$DH zh-9Yw@9#xVH#w^u*F|iwe-d4I`%&whXPCcdz-sbZS6d^-ND7|PA~l^I1E zmQXa9QQGDRr9=%%geZhFK3P_?NPaMbms`21Q(9AJY!KvQ5kArADAmxPIpV>3NNsI& zTwBXL9xP9)3SjNe{v8jh`qAui-cC!^Krj!ZkF-@z>Ej(`-ad(ryCvwn)t%<9$uk}L z&6k{JNwqLvzfJa`xV*S7$d$*tCC<0+v*|Drzr)yHfQRFzwf_jkAU_duLjv2RBqiJ_i3e`jmM6op|Lv72v4 z*48q4ZguJVKwh>kKk>@<@t&8D#j9_%9g;C{HZhHFscd>qD=(I3Y9d*>V9@>!S!y;Dh?_y!8KF+ zy=plC@mK)YuynztqXTua3rzr}vqg)4z`n<4Y{ky3H&;(_C+ErI1PhBCKJrJ0Bpy#L ztaPP&)hFpqOfL%Ws>iosPsI7EO6AClxO$$=*MtsOSAzU#MXY1#Fa`$}Ts_Jsl^oG5Y=1 z8*AdsaF{y|J=9Z#A>1?2Hkfvc_66HM;{(lu0Chc~0x&j4BooMWm;uN@oC0XV+z$?; z0G&SZ-s&hhZ}IK~|7&Jf9|+Zf5wNhD*;S$dCm%p#NWlFdzzqz?^7SkD@-G8Wi8KY^ zfw3=6APh!*^yilDI_l_aHsS_>HJpsAV01HV5XRJYFCY>C=nf6t>@9%N%@hfMpUjg0 zR$umd^}p9sa0{sJ6gAFEgi>04cab~U0{z#p(Y4xcF9HnOg$hQU-VVNz*9Wm618KTL z>0vkB3cKkM2B38(Hv{neTPDEGwK@K}ug*ZpX^Y~&!kcCP7Z-Lpw;jwj5L&$1%jvk4 z3u_z3dHZCM1OuFnggzrb%j9_b7WtK_S2#~gw@&_d+X^uHR#_1E0R?>Mp>{*s6<}aJ z@ejmj6x$eK9orZM?^3^FNa7NEZ=UK>ALF)f2@z@IWGvaYboe8n`~ASuCE;<}&k`Gx zj?BX0U$9mMw*$im9dA^*RDyT(qt3le0i%Cc?VQG2^yH1t=jGDd8VL98?Pgt?T9*@s zIHzLkaotE4&QR;q>TxH|il;yHK`e`}#53%I2Iv+-yoMZYR7E?=(^~`iEx=L=T4D-K z?~kegF5D)cd}QURu^E{hzBSXPK)e^5sfAX`Z#tQOX&$++6U;=kW}mnteUh(=y3!!| zxzO)rnCrE_Eb_?p=9}`Ze@-|I3o~#&sRv1i~6mTPa2}j-8W#fb)y@~z24ih zHhah1=b^gLMX=ZQ@xlK1dXGT;_pQuL_|bI~#0ztJ4R=tGBU>=-Qo3?MheJ23uj_

2>FYy7zu(lp?^McM15IsVD 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

HC+qA>3~(^?DAOVahSn?5IM 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

Z<(gX{6!ZlYDHaj~Ekrm@VD#+G7s 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�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

WOcBgLH-w zu^eR@>{UcuaXlR{@afJg6f;(nV6y55KAE!%e8}p1{(P!kK4V@r|L}E5I;N{KnFww( zvx=dZni7JO2ZrB^GC9__51l@&ypj(&A3*zk5Z6oJf0w>^ zKB*+4IpdX|0l_{8`F9^gu*a?mWk3CL_C#vn?1r5!f}6ZS$SCC6CuLBiYNDa|@t zE#!Wn9^$%C<0J;nI{y9ClvFik8Z~_*SEM#$23I8G#SU79k+=dPf{tjiP5)- z6Suf$vkC{tG&=9b(~5+#;Tuxg1H4R)iKmlTlsF=i5A7#wlMHgXE+=_en+| z4MN&pX+8v}RdviK(^+AA71+7xl1xQ5V#@(<+FWu9_X`#cg*$_R@K$e1y={M=;PYNH zHL{upp{9siq6~^qU5X)zio=i90owaz*864Jd(HHF&C33zr3J z#7T}jy`$P%Z#PB&ey^>BI25W?_0g2?Rux`h!WU*zFY}%5DhxBcbNk$9WDd+BiPp7H zoH6F+ZM09tYuesV)VC(5e5$A~Ti$O|cXX+ZPO5M9KkZ4froV$mD*W@|Q;J89x*(qV zkqQ$RjrJW!fE=!2nL|2e?ePcnJ0^A*F7beTfEjgKPhqsaoYNQf1rxIOFq-gkwybv|is?T9w@j2$M?6dEv zn_%wX(v3>`9lF4KuI?O7t2WZ%BWRmpQDyzP?)1HvRatq zu;#4dvRd`X;G&ev%qjUT9B`&>Y+BmUpU zFN6juxemF1E1fzQfKW_;>Jyk3Rbl| z*D#DK_SnEhLaxRs810%zl*Xyrd{>E@#;L8wDOO8Tm_{!IZHv`uz8eC|Y%B3o*}S`k ze&L+O^!MY>k{8pn7Sj={;(Grr(oC;fi`$%j|9`PQso!j16Iyb#pM_iZs9WY*|y+sW)lcEDbc9+ko6YG)lJr2|_ z`T-!Jhirs;{X~^+_XMb13j8w#(wL2(Q}V!GGez6qlVL?b(48M`sSS9C z)9nq@b8yC8V8_v8&B74I(c#9UlQhkdHO-wE*_kxWi8Rei2G~@3X2wt1b&Y76hJsWT zAu&~Xy2zUG{GYH0wNqps2ax~i?YO<|+x|p2mYC$Ke7%X-BbL?YHO|SO1?SOGXzl&@ zLkrzgA)UysLaC=*K54JeZwQWBp+c>hlpxX$Cu_NdcFrl2=ua)ya!-!9`-qq3FdN!=K!BP z`yLr{Z5Q}`XznWAk7^U}`C>)2|6lt3-OTToP(M0SQ$O0O7n79k5--Il&K?%A`cDWe zfv2s+Z7gaU-JG=fRZd9pm#5pe2rTss#ZQBB%iJ~plloSAJyv=YN2C)Ct}PpEKE z=Qy$ZY}D@It#JJsKvJa}m<78+H_GR=CFClU;*rY8$u697$?cY6$qm^_nkLnak7-uE zl=9rAB*~2rff0=-1p%KC4V@89*;vca5GCBf$b!B?$(+^wrq(x&u}Lw$7@w$qzAveM zUhD>bzpU-0$dpGwLqJZ*nk<+*y#I!Aafa4=+fRv}_av7N09KsBOZ zhCTJJ$xT6%M98$yzw|yqm~K@*@LDys6gCdp`M(AFNmB?{xqTPWa6US91e<7=p?zy$ zR$=oNX+)?#-@s2>onoFnw`*l$QjBFwa(?1V0HBbYaB_h zlQwu79zpYOeHg%HW2RTKe=5(fb!O0PfsClqEf94El*MN$;EKnTQgJxUp=jJ$D@XX& zhwrR_t$k&TIj2C19mOdA7&CDGL{Wph6(N%G%kguvhCPDkpwTYc&*lfQk3e$Wncj;9 zy-$}H3rTBjRoD#?{cCM`gUM^+38MEMK zfGn0~?{~nR!h$o!ZEe=#%<@tD@f@~yS8B!hf=Z0RfCO7Gr-%qhtdiq7?c0@RL1sGW zb+DaL^qv0ZJAFTa-Ukz7slN2^V%QS}+GvH_C?}18CtTEBXMP`0@9;4xY?N?5>woVl zF^~M)yOUzI_`jA^>;`r3R93Hd=fr8_G%4#BFstOAiTd-)c%uM5m%($@z8H6;J{54u;ces4evhzu zfdQMxg?P6qtlbG}ASAD*J{d-bu184Z%^XIDs%H_-mUF8W_4oD-=K}yMXLp-8*FScN zYm@xlTqz9ceW%~6z6uoCm`BPZQ4n3{3~-1E0DljtLRi)oeRCEr^2DAMK(R7u=FK46zpJ+JMXw=+A6X zfhHfJE=jP#W`~-yD19z0#8}sJOoZ@~BzFz4noIBO6&^%xVyqIb{FIHIP0gnqE!mQOVu#^`>C5Jav2oJ$!yEjaQGzJ$ad;Dx6 zj}S`n;Z*rUP+V)QL%z^kyAngs#i!Bua-^o^jrrhJJks0E>E-JH_YOb%Z={Du%aMC3 z3?un*C-afHwe^?0e9Z;nDh$WpX6wIf`Ti2->~k`(N_-w8Pk$cMcQPRCSyQ-G`O5gF z#`Re9t`gV0tHf&Y{#NU@Q46r0(18~K765JMsFW((bks!WA{@+kB8;lzqI)L#;5Kk4 zXb`|F1MDdIK_4$5ZWBx67ao-w4hd|Wn^ojWnwP5=|0_+k(&2!cP%Ja6TMyCc?!1e@ z*Fl@NfW1qOe~Ukn#YqR?Uq5hT^sc=FfQvJd_PJWkEzWu!s|2i80Afc}qn~jWVv3zN zH2Icdiiz9nT>cS{&y4R0Og=K5%|B$NIqJ_2775?bWdKcp>zvgKBM{x_tYS+`V$I| zix#;MlShmSf7ze&AbbnXjU9g!et@z#wjl^hAnZKiX*!2yUf{d>vij5H{2Un&EGyYh zNknFNkcz@fNyKM}e$QUKR`q{N4XmWPXMc6qrzTQYcs!}4+*U;2R{XbXHFiv*%Bm@J z?D@>N$x;r2QWxDuzW3Yh0QTS&1)>rsyTI&5v?J(bso~x zzKOr7d}L>ZS`9_80%2KQ{n327X~`cXdm8e|>sbf)@Sij4E8Z6{Zl&hg;*22F24VXy z*YSI21^FCN)=ekhTn>?yz}0R()-5@GKAb5U$DZY6&;WjwOwhkIslL3$^a6j{e3-3_ z%`DZdC1qlcL(sTsqOO)WUclU{-WXHpIdm%SOSQK1_OhtY?n(P5xKyDFy!%(6){Q%F z4MNer(ugg4+q9BfyB}_&}?&b8!Yw ztI~H-xz^6V79lwKYy~eJ!e)*zk~Tc(8s#Bz>J_+%D1YijtbGdOo^qpX@uljNx60h3 z$Wd_m=_;YHxQY4C;@yWTjI6~wl*W_C^v3GL#%gX$--xjq`>0Kh8AO$J4GFR!qC3=&zTX+G|X8yol5Mkzj)Ji zQGFKPzJ>%n31Lketw3P;7@vhY*Y}Ov?tIB<8>(s6W9bHcbLDz-AiiO4tLNQ2LdKfD zEF&)g;ZYzowl}+sC%R-tvIb#KvXPvuSS&CO!= zd1^j!U+l)GkW9CU*T?sB&vDkueT5@lAMa}1ga5of;zBfK-(Et8^rGM1{HV$QVc&c9 zn@!8(+-N}bryF~w$MP@}A^uTK*O1_yS8#`0-B{zbd#I-1V>|znIf+3MN36l_?gMAM zk5I_RJ0old9*+I>NtiYC+E&WLMKuSM#RdDotJvo@@~f*Cr69)f|7PS6XL0gg0_X@y zp?~98{nuFOlu##nXSWC^`Xpsu#*uQ@6MO<1Xd3W4bDQ4))lwY%C}*}z^*qh8KK{`D zQcdEpS?!#?@I6U8`Lj{2l2_DXt|6Y%J!N#wqf4ACd!q8T)x}aDKd5GdgyY^uhBXvm zpmVs^H`Gy6Z7VZ<5@$eCK}N3vK&bzk6#RmglNs#cJ%`UHFI=$e!VsL4B)qyIr&BdvFtIE`Q`Z?(MtC`I7v&+ur zi6crg{#TrrGX1nINj&TRtCX3F@{->Er$^;}Of+poUz#43%j`TmOeYY^rTJaq^iGq|AOUIba9JyjSA9||%@ZF8*H^FHZk?<$yIHUd1X5jVg#)<5 z%Ym->x4kVCAxt%#_Q9SI?jJV2hX)?5SG$HDC&R36pioH7Hq^$$fV{@$40BQLJPg83 zF-aq8cS0i?l{-457ynAu6AV1udRB?JDeqzMgR9+uS!3!ULtM6id6o^Rf?qxiC?x&8 z?M(N70DnM$zkKh3=Un*4XBW`07iieaX}B4}_wo4nY=iIpfOEfq^CqC>3!vo-DE|}) zKLFtegmw5efb&bh`6b6W2I3qHvOQpYUIE`LOUQx5`sRHwNIy!VLK@KsQ2{wiqh_3k)gy-zD0UeL?`(cG!UdYaX*KkIE)80&G? zd$*vskq1nFkS!kv^|!Bs`h5W1z}1$C9wA#k2_{(G#Gtp4TZH?%KBZh=@MYPuI|=fc z2%%V@pONc@Tfm^7k?VvT3|N1&QUHC8TqESXKOvuR%NIdC>;To7m|?XothZS)LQey( zZ(_9TS!eT`4z?Mx;$U)39A~D%BpS#1h$>~B3_dfCltq=n^xJzE(q%}PcOwN+rILj` zfVl(jWnX`xeMFZ&Ur(On&NJq?OhHEzq&f%m)L%OvI1rK3m=ua%sPD)q*XC^t+U{M? z-$rH33|X7^37Z4qX=rNZf1+z@;LW;sU8!qo=6xD$lo=Nnc9Q3RO6OL@`#GBSE z6G(}$-3e*f{;@WHw~=aBP~Sh+=I`R^>gIKGXeOzf-%V%S3^_dSV-C$C;rSm^xf`Kh z2ld_G@cgeiRGasiP0l%x$7e>)dxCbJBw+Hc`bC&38t zW-28$e9E7@`SUXf``o~=C)l50-H&b93-EnB&VIo81=G|u9Dp3Zgs_9~`wFG2hW`Zf z)2u!`_Da^XG;^ioyN>E0EK436-X28n*jK<8lyu~_Al`L!f^aI~lc2fZcqWs!YCj1k z?>D}o#FPsS0T+H zsLu#M5X#bc?=a)<4tf`ABX{xme~0*I(fBYcj@-rL4<<8&8;!by$luJ92p_}uB;osO z_`W)B=I|MOkB*zQwI_&nO;KemugksgeSTaUxsR9OH7G*`Ed$J`Blj6)I6H3E|BfK~ ziZ=7u58o#lWjKw*sr_?dynf^t5YivG@>-#F4kT+OYYzmE{>;dMVDg!f1CY-bb$`M_-H zXM3+5p9f99cQ{8{)3W_ntz)+(HO!y7C%=weLVBDx{oHq7T}OA&+?mC>lZC)M+VOGF z+#$#L)6f0*g*(0$LU7(pE)C459iLfBvnOch?GNVEjy*!X3iGP5vkdcU=U!-`M~xQR z$IAk9YsWr;GCIG~c4hwgYCCsWT6VupNnwud*e{e6=T?>;=Gl%fER-H#+THmFOzm#R z0bRQbZz)a$-F$#)cV)c82Or6$KR=x9xqdW`r zZGyJ>n*?n$FKzjEHrnQIE!yU9EZXMpf<4_=e7UWz`4oEA=i8wDS)XqWz4A9HG|%7k zpjXDcbUpI7hDP}ts;T;pYO21cd!EO3&xo!s{+3Hp?CYDLdC!QhLrQhe$Z3{yI^PEE z&*^+?(bImDLYw=|QR->yZ1l84lluCbysy8hgsXoDhHHP|`z?ofzdn?pf93G72>%HC z^@m#M5cJhUW?%icRsVY0QQcYdLr~YL9^yLHL$=lchk`wy`5$fD_wwjI#}7fzm*ooE z>G&aNy{X1}4h7rO^JP86!gKA1g7w9RgNb(rUvB9?{d(Aw@bEo}AA;W9$kJp(ZqfS< zkqYoGzWD#uK7z-xj{sC1EH7p|2|onIvz#*RSLU68Cz7{8DjZGQYzmR9`q6Wijw%mG zQwsc_LY!44B&{f>q;;crjDo6MYIh@x_b`)~It+3cr{q+PQ}W^GsfrZjRpECoZ8zu9 z#qY!7y8*x6RsnkN*#mSn)=bvm6V{FIcRD33Z*Em1{QQ8w(v=RfTITSl?+~YqV%>hKx%?|LLS^q9^S!v{$u?4F+8*6e$L&FKUH5VJF1%1md+Wpo}E=5 z1?zVptcclc=Ab?qa7>lbcGYz#|E6s;nKUc^-ofhNH?$6#$&>h$qoKcd7Rb%yR~-6l z3-mb-ecl57J%>JPfj+{ak6NG)bLcND&<8p6Aq(^=4t?4Jy^llJ3Q!NMFPZMSg<|8d%`by=<7T5P)Bhyd4Y%CZyWkM9{P-J=wm$e zaof<}^3ZiQp}Bl-NAKmORF-j8;Y{2p6;z=tgI@)ZekI4Vno`vqdb!h4jW%*ObrRYy z2GY1z8K)oghhk$sQ0e#+`Ce3ctrK}~B|vjY)Hk)W*a7`dZH9h~Je27dSicP#Wy84m zhN+Pzzw}+aMG5Xqqx|iwcq17zEUI+fLg+cq!vmwrJKL~7H93uANT$2Q^FYxIY19r6DUm-?c&~TzUhgVMFC^)XJ|sP@FPY)~7^ufRxfXTE zPL-5oe5~+(lEwQ;_V`>!RYCsoBs~+-unf2})HYlqxMD{^ttspHALCA%3wCKO-Uj7KM*rCm+8Me}E8wyOnBr zhr-9OlaFDS=Snm7!GzeKDtx>;`FI8F*#dScp){KnK9Ze$B)dF*GxpX5?AsO2Ih>qx z0QM3A`+&xeyI?DpCx{y9HBiE`n+5uZ-bthxsAyyCjhRU3Lnc(K9&L3 z=>o2=6L4MK1Fl^PANfu`@&Q*r0ax6D3&byrOj1m3lAg|rDZd;Kl5uffRkQNzQ4*E- z(&%?Y`pe+D;v70N6yVIJyaQu4>Wg)v=4S)E=O>JjUn5RqY)q40gVB-=YYG=h2f039 zHpb7f_2wTrW*X&j|Ff1jwm#M^24pYy+IyP1}@%c8uR%?lq8UFW0Cb5&{c zv#XkYH+E*o*)o>ooSib~w2`&j2744Mq;Ak{y)ftC-pA-|5S{Sd;^g|KuXY%_#q2w@pQ*j5P36v8rvuuTw_ zC4^-OVebys=B2@0YLuVB9qOW=>#P+ zJU>flpBMqFt;O)HM44N9zxYiF{=Fvw)M@k?m9EihVPtv8IJFB(H>YLvwODI9a<}fRJ23<&@-mj51?>D;7FPwKb6srk#{b}@`&sgZ}1t>S< zgREf67dgBPto|kwq#^2?(FP>jL@C zt$2@!bY)xUg5FK(S^&6nEo)$-Zq&t{Dm^c1o*2!f{qMgZu|=fUhehN!hD9824zub} z95nr#!}7U*56Ob}^nzdMfFN=4J(mq@?+|rTgqUJU)!VzIuI69qd2;ooWQvs zfEDYg9q5H&%dp6Kn}=zk%~1ZS3$dpC#7kO~s-5`WqA195K>8gB@A*6F`chr6un(1p z55~3XEyGG2BO%|ig#~oJC@0=sIiyfpd?KDB`Qkc>oyJp^BBZ~q$Mng4^CP3LTj5(M z+&;f)LVino%+D>PFQhz88;=;KFO*=dbiDJxpU;wHXQku-Y|ZK{I@@`F$dL-=WgIVH z{fg;i6pptbWw~Yu<+`WWda#}ey9G+bc(!=%3;C(4o-5%#dXaoC%rU1gWM{_!>ycFD zXcfw_smF38k54keIzG3<_}m8La~t4&>?p_QGs5`XepKTVu|HuuKD+-1;}fwz_#?+B zrhQ1L&-uqVJ}~{mKVf`h`d|En@r~&pNgCf@9#i^9f5Q0Qo??7=C(Ute9Q^)&G!C%b zk013oNS^CHq;uWwgt;!0;@&+hs%9<%ULm!p+vrS}C&El zXMj70YOqZ=XZ+Y4ci_8mV#apv06{sYBv&~~0b zDB@60n84)$?V*T(i3XaqhbVsVR}39atzYxe@UBhHsVR$oOF)tzj6X7_*g7 zecl;_eUIngCqs|D7zAVny?iUxN-ER4ndUlzdpE!-u{O`|mS`B}6qz_I>q&PTnYjJ2W2`aG|%tNKtraOGB+urfE32fDHMMST;t%2FxR;Lpj9z zy}oZGNv{Mw34F#$*B9fI5VYNi5RyjNeVMm7aqs5@qRGQTm9j!SP^w2?hPY0Irb~q+ zs{L}2QtpxS-#@YeMUv;iDa7eB*u{|<=k3pJjxg`79fwU}+VIi!Ib7lOBslQtE7m}TWwUEv2Nbx;~zMqM01Mn=l zv$W9pWQ35J()8{^)OSOhL8)ARS3g?EC()YUa|hZcT@ER-Wuqja$FU?H@0}$wYsYHh z-J{nE#+J=ib0pw*`km)e{G|YMdmA0W&;Y2RV5mjCbLV_o#!6D?{EcnNP7zABPbgWT z^XCuam@-OO2X$5Lkq0^klVCgto`Yn)tmVY*^}Z^Ud^5}acF298!{aK>RJ%tQP z%aPSna*F(EI9~pOoHotVKk9q#j#J!Gr47a))@z+B6!N?N2K8u^#Dyin(~X;4t`o2% zVN&Qit&ZgxPRO&+HB~l4^b#~Hducmf%KNGc?-$YcO8Er9c4Z%8w6e|zcz;Oqr#&uX z9i5!iAB=ubi~WGL?=om#k35(RJyPOeZQn!&lUnEOC!x<|l=YUnloI z=(noTZxec-Jq#74O)baOQ7^X=G?m+fqnhuih8+=^Y- z6RdZv0jJqZ9Ge`DVqVTPgrxxm>zc47%7KbM6|nk7Zi&xoTGk6B6KdBd7;S})a|RH? z^AqaeM57Kk^^QVkza5MxQrg2ndySR$*&^+q=(N9nM4-rxIk=(UZ*sf)aEh`JmPInN z);)(5wU9#hynM4i8x%PUI7QVdDPmk~IkYf-y@ew=uO#cGfiZRZ)_*`q`_?Ryt@H(c z-mI*}(EMidR~!c(kE>PcKifmH`ZUTTgtlQ?S{e9gNkMu+Iw^qJ`RpYs@P`_^SpCvL zvT0G@-JSlNs8o})y5WniJ}s*h2&Sh6)t z2FXyHzen#sdY>*O-u<+O0own_H0kl}`DB{Bak~Qfo+}@UPm>-62&YNDPnP@iJ8rk* z{^O48S0>BH1?6E-rmI1UnkjGE)=wC7B@WhBvUSuCz?P|nak};z)&{j$a(I@~zIKKz z^gz}coQA8DX!y%v%4KBWGO$W6bbbl5AC2qqU&rE>v$&MDCk{`OhAt_fJfk+w`=Zn1 zP6w`$?kFVF(woT} zPG`TQQ8oc7uYq!&!TDW{h4O-4M;Z1>kH_Oc3F~xd^gXe&K$=vl79G@S!aq^-D`LYvhCcbp70HOv^LVZ0gXaE@y* zanb+sVXVW!8V$E6a=VmZVwVYrjbp!Qqm z5D*1H-p?VQ!}AEl+byF{sxsnrV04yVJ*r;f!{-{H%H&c#)0T=4Suw8d4AyW!<+c=;2) zyzgFIH7^5RzDn&PYSi7;GO2)KTo9}B&*sJNyl zTw%a9>vp!Lwc5jJYFNPaB-G#QM*Z32stYk4ydADO0oOXf_0L{#jR9OriheLg!1Xk) z^?RwW@qlaOb@sT%3%H>py1;D>GWj{)e{|v<6cntA>5AokS zhWO7y{7uI|@AE+KmIQiDtH^X(*OU49jmVQi)_tHHszaF+YEe#|gjRX4GkuHV>e9zW z;yx9`RZp9w+U_SIp3^6hlwoJ|5OyXFa|6UB*mIVUNAhE%f4fN4V!qO@GF~4Ji#{f% z%$hOFS=RP^88e`M8eAA=p=HzPTYk@^|0O@XVs$TG`DZ zt$cnc>f3j{B3t`s0o~Jccga+zjXJ{RYmg^@?^dYh!AU$yo<+ZyDqZWfN0aUZ+TK`3 zy6>j`JfszOgre$Gixlc>9ZIXt1K3=EeFw0ZQU!T<_lR{&b%YAyaMNd0*_5;&m}A7r z;Bh{EV z)!<3`pF~KKelg$3Bc12bP4g%uV@q^Bo%cJ^OS!ful`AQZy7PLKSoNl?@Be3Dp|t&e zl!BkwrckY9qJKVY{fOiG5bGlu#M&EjQ^ddV7~@}?GXBxj_ouwR?Q!35jAgm*7~@ar zq3nr#^5#%Po*%+7#O866?@plOcUYH`N?tBXrvo4v6yi4^TIkWUgfAb@*@wA)dwqyn zH0V63SqWik$uB`omBFa?Il4j;dpoiyBq66LCUw#bkURL;8F7c z>lZLrXk|cIIiswY@&E^^BQrzZH_dYB`FsD;^SJ*Z<+x9ddnjex0>9aAowAQSh^(%J4u z-1km%_g_lS2FD%w%EHod)K5FQuz5;LGA+XfLF#!>~7LiAvH3=V(vi_wprZqvDZczWLW5 zCwns8e|5j(-s%32>{3X2T0Tj4dq{dlA2KcLyCo!r93kM9Hh>&4p{p3yvWJ!^#ysn= z@GLWa)E8gE?08IBm$lzpAm5JdQp#iMwOta)P4JP^kM60zmWC%=O7ov9^~jewB^hms z6ISa?21 zD|;a{K&taSAHtaw&mDM_aqv|_wnNz#cll6vSP)YtEs=r7Rb39bgzSKjB{XCwyxrYZ z&O-)D-tD@5I_5cu_D?VEGm;=Lc_b{kES6k-B@`+BYiL~Y%c1(>zlH2uj}DCP|lZt|NI9^FAt)8yqK1K5I=h-8MdEjHwO7g;qt$Q&X)TThO3Y$WAv3^ z*hlfk>){zyehZwF)+)$Tdfhnb*$u=x(1L$p0{(O40t0`6fgjuFWh>_W3^U?Ao?2MHlvvi1KPEQI2vOaqjIR+@>#?|6%y@F1Aih z9ET7Fy%fh`@_Gcq)YV-opAW>aB55!1@85Un{M$PI(z#-mhrDehBCMbe^tNP+vZ5^6gosu7C76LtKB zRNq`c!*<^RQe5p@fd3MnvY?1#0lbUyk%j`|eYHely2CQ!-Nnk2wUeZz;~!l*FO>xQ zfS9uCRx2+&7&7)~c}yx#6d#0fps8On*%F>D$~NdR=7}rDZ*pj=+@nh0-9vhpFbe28 ztc<4j9f0&OihM(yIXLFa55S5z|5mgRjzAb4VJceb>SL-O#n=C+%JcD0q-T2%=|%ep zHG!TSf=`c(l&AtFnvY}mA@-dVyGR@3g#(VNY&&`^n|X>c(?}mF{W4@dPnSmHyHmzL zkRm>lL3*Lxr`)PKkDc~JURf`F4Qq(s-D+o78&ckVVkC3&LsT2@pYw@sp}2N<_X(>69TU(3?U&K%yN_!=o!P_N!uOh@nftP;7< z6Z1{GO_tnhK42J~V`9h?FpSPAk@|UJYVmCnTFvb#A;xZ<&MQ!_9l~7)g%nE9^kI7o z3e~bK?G8~*^+QB}DyzHMdT0N2I5%AmGQ>yeC}ZS+oL7Ep4cbpW$67N=?J`zX-DJp( zjHBO0<;MSx#yM;6b@;xgjh(g*QLdK*c>8%ke$0v~7c@!)%a5{IA^FS_?_3`56^M6| z5zo69&xsmz>ieGP4dpbXvzQdhI-SMTT5)OjaCjEV{agYR=%lSgE#*Wy3(1&ScBQ>G zC#J-1G)nPAA=z&!?Y4M{yb($|rcs7oc;@h^QV(xv<#jbbGjTn%7HijHY%O$eLe79X zyb7K}cwL@JlFwYn)UsQxJ}k|%gdT#YI9acwdsfiv`pDS;n?U=FhtAWIsn^&a zZELKK8R{sQV1HRaWsKp#0puHX+tsnQCD8i3t1YLvN+mpSWyUgkow#G~^;R{l09{~vE; zvNe`FXj|@|={Ai}?qMnWjl<|S8;-Ky*yC{;c(xx?|C0>gZmb^bc|B(QAJpR~W3BaA z5A~R9l>3VmJxhDkE$dcEj7X$A3iGI2ng^oY*dMvfjvA~O<;PH$yPz&Vg}U4gb@`c5mpid8N6=@Ay3D{6 zU^(zzp3Cc9d$)S{|0C{8;G-zA#;cDx za(5;PAOlIy1Z41HG66|MmYK zuJ?VPs|f1>258{sLmWgks!ga@|KUekhLd2NB~t(_-9ab-lvkKFm>ZzLvwYvpIgxkwa|@EHTTa zmcPKrK4f`$p{3#)Cik~NDQzCyi(~Tuj?H9sY$#9lz<+lZ%uURK2iQ1Gj?aR#k2?$K zI2~seOgQe!lzZG+a1>@i`27cmg}2@}OxgDEuy%Jiy1<%i0sOfxw3v5EEbUr+Tzow}4H2mh6 zW0Re;YG$H_Pz7=A)TkhR+fJL8PDY=|A9kF4cf4;xa=wiD74vYlk}`hpNsBvkJb(B+ zrYDrZ8^(N5S~2gGdCcokG0+mj21i%0XYf}*Y;Yt;j5RxF$u$fI$@cn+qt>UlY> z^SC74g7oD^({gF-;wY_+O-pNIq0M7@p%u*c9w*;-oP7Ur@@smbMa&QUf1*XKdu%VX zhWWvHneUS@zb*r4Y44QleCcg$$NLJC_9YjcyAyoX zsINuW^}O7e^!#+}*#uv6;YIGK{PJ{^N8)?9@K5mmV*I_i@M3s>X*!bxzc8Jy{@asv z;}m(KkLuyUubmqSL)amY+?~jm!b6N@@uZ&fc9GVUt@)tsmyHhU1&Zdj>R1r zWv`_w4x8!PVNJo!@y>IXspmP|(X==i=OKP#Df1@w-^I_|1b$*{4r%y#kK)Iw;b#NG z&!aCOe(t*_3%#`gp5TmTQWgQ8ER}IQZO@1&r;4W*b-hieqidLh)TcrEv`lMH?|G?u z!KwGPxL2p!hv#J2S7&8NpY2QM)1qA}yHfLirC*Dg{@g8n28zNl=!Qc^M7 z*+1c{#2lZy-;GYEmt!Y$6b)AT{3j>t^RuWoF7~e-@ytg?%<(DiIX>pWpdm<9YRV_F z*9m7!)cJfOM@z+$9qz(;Zr-)8U3&Q%rcaAyCiP8IX1kpX!5c6+&uXT0dRG(k9D`q+ zI5o`|FO`W-5*a=VIIhPnRHxH@p3g}p6vm{!=%KyAezvL?9FzooZ&q8Wn4gB%R(1J&?8vkY2fzGoIu{ZX7^ zi@Be;rbG2dp;~9d+dZAFB>kBd?S&%T-+k%)Z~Wcou!d2c#zlr768Pd?=lOuBfPiuZls zFP^9Rn9bZH!>YKGFakK>R}t8%^(PU3!`!mLVRFS_Cx4zzsd?WQYy4ulzbNA0;$sk0 zjZXRJRbKcWQhgu5D15yfTNCCU8Wtw^4|DA@(m6d7NL!$;1Ivl(Kf+G_N@?~R)Y@|w zsQCw%Gfx{LYWN(o?Q|W``!E^EeD29RJB`{*JAC@L?Y@ZZBVVNG6PPvDnuzqNFH-!m zFF(V+YN39k#rR#e(ze4lkhha(L#Kkxii~vhBhb_#prxNEEx7<|gVb;TjP>zP*{tM5q6kpF(o&;Teo|o*Z6=$= zW~J%oAAR9Dhby$_NppWupP~GDQ2uv2Dr|YSd|N@01SbO6vWjfDGODFpMUSaSdxtMt zvudm*`h4DF>XXQy)M~0R_0#8DJf{AMccs(G-!DzPcSY(>Rx=vSD194OKrp|j`~nn?1+zA zGr+IS)*)N=$i%2?mQP2%fXY!sl`^TluVC9{(pIbGZVE2Zf~Oo8csly8V}nnyk6V)4TjR|6HlG{;OLv(EKL z=Ct}Fv#0r;}oYSImH&b0_TS z*ZkQ;7MUOWGe&D`gE}qkuFnSo?sHWBdZd6e^v@ACuSK$$yM0+d;wxQNG$_CvBoDLs_64 zanBN_0WJbA8TV@Mwl)z2Hs>IR6Zef;x#-*&iiVIj2n-oDyMI>mQ$ZG&-NQb?g_6J2j>qhnh< zeBp4lUEfq#8l1(~+t}M1&`J;F6cgaCR_qgvZ69RlOL9N(h7<6?4Iu6AO)DfZS9HD9 zPM+A!WSmd#rnqTvz0Uep%lc;dp@RNqeOjTc8ATy@aDo8K|ylBJ>fFYVc zK>f5I_SP0unR4L0@on^Qj`)l*G<*N z)%75}oBOKyV~J}A@LhXNBsa@eTpoZ~WU`wN#$XniMXF(7<%;M`l0N%b)V{)!kCatkmOCt^KZ8HHZ zbEj@T06YQa#H8z2m>mdjCiLmKV|n6#{?*@(E#$slA;EmKeeO}pXuWF6e*|YKz}ba8 z2P!Ql+H+#f$^I~T&9MQl4njS-COlE0PnT*_K2g)eWIC^gon|5T@1*hr)!DMYLYeSK zkD8yikUKzoR3%O#mV2$)Ks`AC&1NTyv(~S`yV`1iug6umR`S^TRL(49G-*<2ju~k3 zJaxvnCoead6aD$|t3-d|qYvxoXV`C3q}Jy7b$I*Y7h8er-aPTwlpZ4Hi9^ZCWBC8A z$1JmllDmF^m2l=z@<;V|@h_Izp`_v$Le7Uxu?#r2yE)`pCGs%G_Ejs7Jc60@;|b+_ zE7jkLJnCZQk#-*A6Xp>Ux75E)Sn}QI2gH?TveFE%8_dGiF@G~39sR2C^%&f+`v61} zmCOPR_^ztBfJ6Gn$N`per}YNdC0|^z4QAwXIn1Y(Wbml=bCRz&r-)w9BcqTW6D%+8FNdRv=x9DjnNR;d9t(VuEKpTCj3eMW;YZet?#sREm~|TAi>zMdk6(5-l$( zO~m@M9M?wW36O3xImJ6+P4%INC^!ifZhsNlQL_D7sKa-WNK`*>Sy5>WEm0)CN`}|1 zCPm^Y+=#lBkbf;=$&7Gb1~^_UWr@kRZeK`LtigHh4=Zcw{6dKB-VG~WzAoy0Z^i5> zRmBoXtbE?DwUw`!(!CqbdmpaYn1eS~BLS{)jI1z57Ed8>1DY604joH)zZ*(SJ*dYp zwm(`2UAsNK#>YEJp3j^-%-eFDw;tl!;uIM)T-B?4@-ntyh>#~(6xK82vx*s@8SL?k z*CED+*G(emF>gd&1JJ`W<8Ti?6GkCEWW#DX-k_H6Tutu~*HMpN{~7F) zdZO~y6|ZJ2!;Q5}9!f?XOK98-B_6;&#=^z_C-zuqJXMa$s^-B8b1&uVvuKP{0Zuee zP&uNRyie0}$tUy-UO@IxS%{f%9Qxzr$QjgUlbQHArccqtp-q9AT+T6{PpdfwXOsH= z7+v?wWUKoA1@--8CSR%VX70t&YkBe6VJ-G}}@8j6N@9-=pqYp49<@t(e zwk;;3ZOahNwk2OS+O{-O+m?Q5ZClWivdTQ4bV$>7o2i%U)zq^!-t2L-zG?Jkk5g~< zG%t9>=-1DrdGT`-qZdEs3H1_lif1(*>*fjCgqSJp2g_3L=b!FL+|L)4*@X&1l5Yg) z>WuSUi1){}Q@aOn6W3uonM5?3(JIRz)MH}a`?z9${W1>twY@tqCfx{WKs@JN{!2ki zkGf~?v~Zer;k)EZ!L`#)YDvOs73LJ@BpUV?=Jp0mK^d{1ub$mSolR~VxiMYD zE7Hc}S$oPV!GY=Ds&{}3`!lXH;qSRvm7SNw=~V9nfJtSQigW#ne}6^P{cxwmJIN|r z%)1U~vt1gxlI{43Sm4x$f)~pB+TfdMex;_>-`@P!6_Q8OnMuB1&YO!e*$@0J{1$&Y zd$KM5^!NK8_zRQn+e#_CL38o+{h>cH_n&a`-e_wlXU#wwq%x>$Ew?W+4?=&vty}#% zNmJ`KztIL>)nk+8PL3qoYEu8{j%|Ll|J&-1N+;6!R>~FVWF^_ObWU2Br7FyHd1alc z_VnzY;-kq4-^s@IHZ&m=RVGNnc8`3FYRQusbV5V zYXyE+Euy9hwORCF&8|+g8$(#9sj&31PSEPj&gV^IG|$Ja+^y;zex7=VTddkq4p8rZ zcwkNK<)pl~wh!*5?OAbcRJPtTxu%V@Nc;RYcZ>9mKVtjRA1V6EA1VIUA1V3HAL;Y8 zKhk%vo+731{gHnE_NVuk@TI>{wd2;-f+0k+8B`o!`L!suEN1Dqe#P;fzr%ak)x)KH z`rhHb`s(4tbp+Q0et@hxIJ%yfv%;*_Y!`e>07F2 z0q;y-i}imAy$4rX_d?%o1b?H_pE{XFTDJOrQ74Hh0^CA>+BPhN$Ntg6ANNlo)e|J5Ll4 zaubEzM8d5=wS|>ZIn?oQzcTGBe}{a2r$k(jGkBYAv8I~N89amM+J(v%>*kaURd-C!p z{e1wv6&x>~$$VM11ODC8PKRKVTtDS;xYHHK^>&WZNX&xH*8uZdpu?Yo;g8;X0*xcZ zq~4E@TTYUEGSGB+0=SIYrE^Coowa2x4#tKS>#LihXg)7p#v z;7|4$$6)SPVeSW*%@n5IS3@5bw*bl%(O*@6k4EoiUK1u!i)=bdqS3!Z3Vi9TPLiY- z_^aVlT1p3BhZCu#lN`6qIlrRJu;WiCnCvMY><%&JlvgEW9k5x`i>*KLHjA_Q(H?3Ua_RW}nw8E<1 z##!@+6078j-^!)LliL~dF6`tecWj}zYHZv+bYJX2e#3nX_Vd#_y>w5&NDp-NhqI!U zsCxrn&8z!n6t=x#Eal)9kWbxyV}EN#gu}y1m-SThe~Z zzxdGuO=jMb=?*Y>_tSfDz&{aT4d3ZaJt2k8gs0bf>6>bYH$D#fylw-c?zN9Bf zQS}L9H));?N~mN8&XaiJfZLMIlClvj5;Li9@Kw;zVk}!FMehE&osY?N?dXQ57-N! zveut<-xZZ9({biQuPb-bSeZq%MX?ea}jV;3QuI z_jCVB$r>#R1=n@`2BH`Gm2vFo-SD^H0&8HZqp+c zUKh8?=wGe6C?@ail2uzEeVyo^BI>?P5jd?*-cYBl5KfAaUqlKx)U!0{_9-|?*F?-) zY9f{oYhulPm&i3ny9}zYFMU{pob`OE-x3yA3R7Iaq?X&FmKzW+w}qBV_I3PmjpnmZ z(D5OR9~!VqO2a43m&eg`lTLm`<4H1kF?wxVDGRx9#;923BSxMnPq)|h&x^_X=el7B z{Z~!I_C-x5JtMtdy_NDN|Ef_OU(`h919LUsni{nOJGb{>R(k2oc>*WhS*M6>iSj5zF#fzyqi{K zwr#=un^$Rco80Hj->g3l%v<6xO**aTczeCKu0op9>-$jsxYjcRs-E+0mWP?HPZZ=~?k=WXgGZ*wnsclMHZS1);Y z_mX$ds`P%Qv48jW(!cw9fq8!~c@OlG_uwj7osVM5m|UfeiT5Eo`kBV{;Z<^4-)NBM zeq>d8|91G@qrH6h*sAotD>3iyz2rUKOMOrDf`=!2$$P4oc0S!pTM|AtQ^)z)RU{(~ zJlD(G@cb&0VQ*n=eIbRm65qbKDzjY~=D)OxWbEh5DSb)6edRc7%d5x9f9*K=uOBD> zja8ZL=`jDz<9z?taq{0z3qQ>~k=|LAUf-PMzH5MEJm-xLWUl`o$7$dD$I1U-Rc6~$ z%-_-rEq>SwEp9yy+-<$U{bw(5KRQl-K91+-Q<*XQcPH{lHk)AkJ|@37SimJoxT%52gvo)( z#NWa=&+cOJO5}aW|F;N?7Zry>0 zhtF6g1tQ*QftY-I*F!13j_uUP?cIReA9r!Y&ab$K5cHy8C)7^S-L~5S&)2?)t+>8R zpf(LhV31hsU?X2YUwUaWj$#p# zkXW;9WKs6?F64NuIv(y!Dp!q3FL#;YOK+i*^A*}`cHx63fp%uJ29&_V!%*kZQ4^E5 zEJMxja6o~-sI+Yvl6LOaXYst&07yW$zZi(RKU^m9k(o__ z$jpX-7K4FdX&61npBos+#cdpUj&E`di6xP?1dE4sS` z_55oi##GHyBU?9+A1hRS%gIE&m0NOPwDS~lir%j(^`p?3=#|pc5U|1iN_a zJVGXlywL7`dKpUgiRuHG?Jl+PzBIe1K)X>_xHZsB9vM~zb+!_u<$N+iMy=f)eKk$< znDm0$2Rpg#ghc9#x<0UPZSXD3DzZK4Th}f-*^vC@wuB$&ljFXHT`9Iiii5USt_z_3 zjyjhBgWs%_(OWU38+Dwi-#MVd%y6mKzDr4im1Y@WW|z^ItLTIO4pN8ZoZU7z27I=T&&(1a;jfz{a9zm;VW`5kkH=H`)o~L zJ}i$581Is`^6Aca>C)1}#eSxTYo?AX}I91m!yPk zYkF80nBShvlV1bNth)n7e}0NjgT<`sD#(2K9oXO5Jkqp1GU%Q3)AUYU#VL9xIz0>8 zmTjyphW5S9XbJUwvQ!-BQa|-(ph|X+%r9B{oBR=Egnpjc<2aZv{bMp}6ecji=G-Vc zkLqEM?d;-HWSxB}F8Ud0w|`o^GH7S6!oBo;iedEM)Y)aE*#ZhpquIVximJ`GFqKQi zfOEJrijtd81&kZ{xP^Mgbr*?}MdMD87ZE5gvU(-6*2v&Rw-VDVI{&HnIW+AT+=^2D z>fTF?sWHRo;QH@+jo|?A@>=ZrJEwtE=BBL_xL(qIg)1SI63We|o0tazl$+02OMTZf zU;bdShq%5r`g4&etS4xxsB~u+Pghrq8VSWSo1=Ez32B#w#s$PEcO_QhEwWfiiJ4rY zTnnQlVw>@4!d%><5NkaFzI46RE*%PI z!&tOShw)dy_Z*UK!gu)PJZ&PWTzWI%Jf4~GbOqo=Qm$(agqt54cKTpw)nDM*dH=AH z{34>PLXPpbT?QLQa@k;3=AmIrov-m%I@#Cv4_n&&n(4~srIoJ%XpZsLu~S9Tf4X(&0R$54i_GRi9G6?teFjzqZd{$Z@V>r0LwN@nyhdFDybN3_v< zlhW33!ybG>3cV)y^rJoVr4L~iW9$Mux22ffCBQ!ZEj#~Ysd`(5N%qsngSj;hbN6vz zCf(&q{s6oG^ur0~ipynM3#a)ZfpulRylt`r{yIsK&e(l6=_Amv=)Avg|6tNH=A?t0-bSJCL8^C&Y-``O@c;S=4nqcOZe!0}P*n ziqD*+bJHLyzkUu@Q0mjf!F-z7xwkIF-DUyvH|^$kOFXQ^FgA*3YCv(qc~DK8{Te$_ z6{&J-qmB~dV@mmy0G%j&^bfzRI?*1-PXI zH@*kBaXT3^7r$Rfxmt~2Ou$GDRj2ouBe0?B22dM8ynD%2* z2K-0LTcO@1z2ZMXfx2-UR1f&VUE5EL-w9NkP}{eSdUbtt_?sAD*4>}wAuat&)l!R; zPXxI7ansHxdVae!Enk6WQjeI-uT_aZ_Gp~9>xTr~{_z+u$?=HJR@V<05nXI0t?pv| z-H+V9(oOGxZth~-g`LzCCpbkC_xZ5YpPO_ihcdNl!9tvZ;D||E_6h{8s{{&dW0ynq z+mg7A^2GVd|65*C8$+|oGa|2O9Y%)f=S@Kz|J8yCpi?R@4;s#irZ^4dW|(u4@|Hm6 zm=apQ3w7l~P(I;-;Ss7UluUbxm=5{J8Cw=>%A&ikQ*cboFeYX;CT2P&W*QHxq%0;a z+lkVntFp9R8~<;D6pWe7QtW((sLw?T3#uvj?e~2NQGM+vYkdnzWLg&8k8P#gYS)7FzI~l zWXFB&MCDshKJ$&v!_MJf{nfkruQHvdTQi)eGtCDj!+fyl;!x4GZyJTKlldua4FOwG zdFA8fHqman1*KyqK}6}8EHt-{PdZO)YoA3YZ$mkYtwd>U2vozoH^83O6etffx!Y|9 zxm$XvV}mMnyp2j78&s(yauCQrG!m6pXfyH(i&S2r50wZe<|Ok&l=jRfs1_qBXST#C zZGn)^ZbX}rdJY@sn4re?NjH|E3}cykFY?E`t)z1st%UCGveG$}g(o67%?mUNs(O>N6z_xsA? zPr_G@4O9-vhTob%@5)z&XC-r4aVgUQGIVx3!%_Q5r&{DV@MknUFNwa#5%H1o6qm3eKtq`z?1Y0}Z zk}ardmVhXlFm0BYExPXJEUp)cVQl&v&pn0Ox#xIi9Fq=4kgi+sb%plz+*q7*1iW3p zlBbf5Mat7bxJ;`d&;9m8D#s@QP`hcU#9vZ zg*KpXplKfo9*^ ziMNHxdi`3Q%$EXfBxhtqdNGjBc7ypXW_ii9`cj5{?nN~{Syxi1jY+ku)9ZE#wNZKS zYAsf}pwnNC$!k}8peO6IV$%L5lzupC6?sstoipd-Ed1kjiThgZyMEO2bm3~$ShN!? zH-KMK)ZzZabsUd7+L9uaVxhm|CBP+|zZ!V%BNm;{vHna>0K2lYHYy!!Vw%f%QwHyH zPZQI6xVR{K*6h`8Mb#$$n#J+d`gIPy+rMQsoM&kZnwuQ8O4wPe+2W&}x%#a6K@hiz zV!mc~e$}gbyYs)$=$&@q6!n&%LXEs;j86AYXjyY(d2KZr$lBkiZ+{V?@4EKGsUPwm zT!a=Cv=3kA8}4AsXdiA}&8NXeQ3^H~w1*AQ2({DJ@Ol%DsdzeIB)bgf`6m}z)HeOp z)Cy2Xk>$iD(X%mN!3QhDskugp_B2C(w_Padu-hCiuSKkC82om((QzX!e;Wh#uPTJq6K=DX6Ebkz=?w7b7-!kMDD z5#K*HHL9alMGp4>m$rHmoRG_)H~V@zM_!y{`}sT`R9bZsC4^ao^oETAO|-T zR=m$IWY#C$`4P!gi?O7K)F#{R4fxgYfP-9w@DNtShLFrU{U?d;dr#B;N2TpnJkQ&N zm^Wv!H`tSMk<=0nBN%n^c9s1<`3R)pg+mq0jP1wgr<;zzy*=G_Q7 zQpYEY($OCqkaOsNEpj-Y)uunIdh4Y;D4uS2dV9o`reeJmKQfBA8KL4j5~xp!gK zz7L}wmA~(nR6AUwZ(%IOcBn+DbZ54x`_}6mB)Q+El;#xoFSSa=vDyylqU+e*>US4N zl#)?T4_Yh#(2aA%$z7QrbN}N44p!(5*A)@hVf`Fnepugwl|^=6Q&dfGh1_3i=e`N! zm~7Y~!Avd_t|^L?_hg`_9>B}ft4Tceu4u3+r1{=wR?9V+^o8;JXIE=-9Z|>2My0#2 zV;USe^v(-?oJ75wu0tOuI9>;!o%c<~c5b5WOy9QWS7+7{$NU#o>utgK=!maSQYIm~~5VlG%7Dig2IkNf(6$@1Ysi*mgdnZjbQBXW}O zi&Q(Jhb%8GGPhk%GPEmmU89SQb-i!{tE+&Dn z(ViO2S8tTrzf)*Cmt1HfEoYq;Y?(YP7&+Swy?hncp}WxbywMYMTxugDqAc;{C&u%;j5fqJoegmV^m|njB-b}~a)usmhB^?huoHzVf{t<+2X`MbR^$nbA#NA7 zuY81##rJk{$qNZMdiaTF?M|~Wjh~iwcg>BsTZ+0ljB_q51NLDA?w1M-^wp2jR};|J zSV~`&K|4Vo;O){!pCMl6kl{d0^^jjd^M4aWUAWw&SWinXB&3BK5sdJs2hS1C2u?AL z44z}I3P!Be!ARDqU`zIy!IqrS!F=6r$au3Z;0(3(m*`|QBOD^J?JFRa_)AD!N3^p$q2{pZq?{7?MtAa9B z!C|z_i7AVrnHWNlu?ip+eK6Eg>rWzfidp}4s~rnTXKv!G*fNNByLcd*&k_myM$nl{{ien585Q5@LH49i4f_Be+|?RBeE&my_|FJN-79v= zLNe^sc7%PSc=es{yX-13NcbNc5#T-j_tG>v_dD zDp(Etsh!hS0Z4sRU&hH5l_~yF!8T!dFy{?Oyy%(QDp9bGf@ zXUeLYJVq`MBV(YWk?I~rb~&hQz*c5l^`V&@zuGUZBk;q|Itp=5EBM5*`)wI5ze$%+k4k zi_(P8W}MUOaMi^;MMMLa}**j zu->7hy~l|ElT`XYQ?;u}-QUlF^|gbpuVaGw)W4-(H(6U>eZg~hfAAc!CKxe$gAq#r z*4J8E-kKC!VabIY^sYsMFKqBdF?`VnzUUi(y}jv1E0rYRmuzp<%hznA+JtgqN7E-9 z$J3~*^i0ridE!jqX!@9kJpS7r8fi#AY>|nL8{zn(=OcmR#|kFlBa!2`i6S>vG>K7n zxz#OhLkZP)#`;#Pd%3C=M7&>UJ6tZ{+)HN&^3e&6Ak_FPyCzX;QrNG~+vHLXL#djy zrIf~6*qiI=Z&WI@vUn(C;p_GHCiZX4vsp>P3#N`oa1)~^N^Re-ppw=u>M_+WYBkmX z_XW`8JgcDUQc!JWL0d)KP_rhL1^(i#-uL+n=$uWZr71v57gJgq3nQFEJ$NMcdX1Js zuvZ6zEka$eMI0B5n8pK5O$bi0Oaz*$4^GKyfIYjBexIPlLDU}wLf}b@BNRj_mloSE zA_KHR0BtZpJFz|(83GVp6N1%Q*|0K9ktYVH3vcP|3)03z+IU@BDWpw+vNj51bkCxlGum^GT z5{+p+5snVFLd6pd(kDmQQ)kSp2z$mEQ+$f2o|SG=JmcBZG{rN4J+(J`CI->&P%Dq} z#AZ)JQd$-Xdm0UJ+oi*QNcfRR@ahj?+l5o;{*H4TCG@u|+Ad}1?)f&ZL&V{zXchob z`Oh$e?A$+JPvqlBC2mDn{%5c2zpqRAKJtJ*e_Trbln3r>!o?bYXxPsyKa_F1*)wjPHJLMx9Rloi~l0 z$>9wS$|`}Qa6i#2{Vjs_E(W|_n2!FWnD=p&{!-g~Qie8Pm;tYggX!f_+iukSAEn-# zq>J&$|F6=Fvc6~5N>n11khR*WEd0}TBGrBSbRBvCZzpf8Lte!rTZ#6pooA!ouC>B6 zwB8|xxJF4aOludJkF8}9I?V54*HX;-$8X2lKS%}m0aWU|MYfFG9`gyI1 z@|dTGs?FIj_Mbq`Ptfj&G%A!&B7H`MT)(8oyS_117FLhhdQLnJ%n1H3=gq5b=U{i{*t(@XF>{$ zGEubAChPDHr#hs!1>iKFrce*_9msltepCkvihE=TIcZfNKCaEXjps+=$qTjWH{7q+ zD^Ph)&ZW1M10LCH(pxo*U5lel)(J#$SBI+OBhz6V8DR+It2l7$aNs^Y6q8NsrbCU? zM|rqnkEEbp=9!^Vfvu~*f&cxQ?_n~g7kpG@#D`v|E?=kT;|1FEh1!X*hiZdLHKBZi zu08WJYv)kj6_s7vQ7@uha;;@NcOGZw>hMNT3a-WIqxe3LzSrUVKGp{6!$#QKZ0a!p}^RxqbS@~*}Cvp0{Z6xL4O zTFb0B-lo58T%V9f%1@KtH&iM02PinIG>?l)Z?0uGU^*|@P)i&4L$E{k(Y4aa{k=3Q z6|7@E-sWz{+x2@(W0G?_-uKR2f)dpew=;@&Qk=)+Vx)Nwv{oLo7A?8wZO0Sp_H(s1 zyS5i#v+`IZekF|Lg!at&Qi%gBxNy@cGZzCS?U`;%wruaj7~$44*V zUL3uYyZFV?S9AME-^M-7!FxCU_XtPm%L|-AzIQ5JE7yGxkI=v=UKqWU_|1Ld)**_| z8?y7|f5ljXQTJHEA)sE-Bc(C7Z@Y~Y@;a-LZ_@cl_J@*vf+uMAv*MULYn?+#&@MYO zvK_Eay<;!HofPVPqBJI7upND|*e*BG6aB^8J&^zV?aV_YVz{tBn}>9TfS%rTb$l$o z%M55o!m@3YXpGOWB#*BYhK8;VDzm2VPTndF70@k~M| zw&|kjWYFOAYx-y3!LAu5>gLi^bcI&oIIPIJe{2~%tmS5V7d|xhL!NB zVI`z-HuyFwUxXRLKRQ5@?yxu;tp+PSb#>f>^PTG3%6*VqA{bH9h>PVE7ss&;tclwO z_BTp3+h`Bhq((h~7M>yMTA19j8#r~2PM|g$Ch{jb=CDg}S8>x|5SMZP2~W6HdOv+3}K;3`b0W@MNG{KzW@_=CwY`DvqRQgP|v&@d$S;pjYSht68I?Kw#a^sOw z^iWo2Is!ZIV>>X0X}kP~9T;`b^^V-Qw-hzG%1nDpU9akE%ST(Z|F||W?(hGK-{i#C z^i2JHIjNuG|EiyR)qd`UelFaB`jjXcBWgd7sQo+=@2B`*>}L+8Ew&PTMd$owU*T$S za2?tcRST$1Uu@I(MBszO2Y`Occ8fq^H-|9BQZ|*bic(De5x?Q>6s0`dhAw5#oA)QSlMWH|K4r%gkqDpbqRsq%TU+3an zpP?6p)2I&bINaqP=#VRS4}$hCqdho8%T|$jMD^{ht8colzDLXK+#jALG+q=+$>`k~ z88%Jpvujx!$9meIwu$w$AIUXC?buWP@q1WL`|x(ILQtQDn7j{r&0();IT!7G}zC zp!o|HWy)`)`M>`*Q+^B0zweSv`AvrYvwYNh{hD$VQRzu)Q5}`fqUAQdom}oqwOkBi zc=1v9YPX_UytdunJr zzo&N~H>1@V@1Hw7zk;|vKpyt*K4n3Ad%G`R<;~HK+8{JqcT|8e8y1 z+7{#_wSY!NOtj$;>c2g&`j6z z;ChmzY4?Z#PU=lkjEn}q3nA6*L096N8uPbA6|C@rSS`i61x%3 zh)1tNPI~$pMigcHsFx;m}!?jL(X08@i?`|t}8XlZzQhWc2f5aw%{Cf zRj4Cciq>!3IqTnv@0_%Mw!$j%4oU6hgrr{n8+!@u{0EGi>)+U?^Ly>niOGF>-%iFE z+P8;jDZRDNb)T+}A1C*54(-tqNUK*()P#P2i93Q9IX$dD1&%E z%5)EG^Q}}ewmvT=Pk|i;&Ys^PPc|p>NE&>2s3W;e@593)4JA8{S!_dz?-)LhK1RrF zRSx;FdXAmP;cqrs&!PXa0`eS<%UVE0ZpCkY4}ZHk`0pSO|Gg@hb?e+HdY=7^?hrEc zi|X>g>V}l!sc5dF_c^A^^vQn9GaE)(vty{=L$Jl zdax`Zi@)-#ge=}7>DG9Hl*4Ggh*Azxlk5b#;}7((Z=)yZtRy&Co&KS>?J6Ryj~;c^ zu2wzgwM#qK5uL{!j8~^`H|mMesPggMx{&VWHM9@Ba@2+0*?q0{Gv7?}Q@;&PuY3zQ+QJL(< zke%zG+6)`lNz{_3^!FHR^6)wj<#lsmWojeqLRt#?>x;R+UuP50&Ty?R-4^E{1RV## zt7{#cFu!age@%k37vQ))v6H(TahdHFLDj>@e@&FPI#`{MeLV)ej9Vvr`a8Uj)yb}& zfcIg#{3qf4u}n8}h1$*B(!Zv=nJb!;>S1RNc}gb*nnRurCEE@$8B;+?OtyE+&_}tO z*%0a1DI4wAVpC9qxx@GV`_5Po+s((S?IZ^pW&Tx zJzMF#u|Q3DR&aLrQO6PW$t;}fU>l4^x-ZbHEt_$-<1gO^qoglaMLJ2GrxIXw5C#MG zZ$U}6bd!a7d3(b0EBC|4_4}c2JrQs{VfIXu>3Ski-V)Xm5o=rjKdbFBV{MO?CGCGY z9`3oG1P>SA|4gbR%9OnSMcwNxz+rrr+$N>%8Q`P_cGGC1@}V_6Q17jIB#k7iT<3=k z@5`#VQ+o#Rg(U+4|BOl`qO?99Y7?Fc*~L#`9d7qtw$AM<<%g1fJ&byEvajt2<35b8 zaJZ*J=u^L0ka%48Dnu_`k&^ZGS?w!#%ewVS?*~Y`JAOHYHoLEcn0(e` zup8CNycMbvBoZllB@`)sEfgtvGsOH#ybQa}`ZYG{k98hujtZ`C^>?W(2I(6iJm2H5 z;&>fa?3y)fZ$7hIQhjJ?Uz9N$XTI6-Y6!gp!;V~}-8z->=%eBF5cP%%zY+O0Y&kqB z@Z|bl(>dVPyXyS7?!*AYI$lD3v;cfud&t$-Y7#WNYC)k$uR$BD*3iB7r*!%iFNYF) zLn7YqK#oC0Kb6PM(xBpvvm(6-v~+qm`uAYB&)R)@Ui=QaNcFYC;GL8NuW+&+9(v7r zHKa&y0rqcMBdIO+uA!dnC5jd4b^8CC^#38!Von^m=KS*jJhdWy&Coj z)ki@&D`Fhr{iM)X!OmQ9zqr z)GiX^wtWza4B8f|Hkq{?Q)KX#P~^l9LoGu-4n>hT0=>&o+lKo6 z&b(d4R_b*rXWcKvnZ1L)S-D~o^Zv5-h~&)qvLGg(xa256J>?>Rmh0pnEG`mCNndgO z6M3YM`Kltj_2hpLEkA3K^$a)@T6S9wSWObKnhS~5Vk5k@h*85|2(dBcZ>Yq*KAQ@qI!bN4D<0Z>Z7%v!~+25b9R2zSixGdw-S+a92N; zI{!Zk6(-%ipkDVtQSp8PqlN%JK;pv}MQwyK@2k zHI$9~d1vUHtG9-5j`iiS{G`jbhMt(AEZYNfr|(5(l4E{yM!WalJ3LAb-|qcthvdnD z(ffV3m2;8{iGSfdwBzIBcC9VAUemZV%KA@$V=XI* zxhHks0=xVyfT6741!*#*wa~QbH0_g6_?C~MH*?@Em&&f37Qn$qz`>?1A&R+M0CTtM zFt_2u&?3tS#M&)@p{6n2S7t@-*bZd}0_=wF^*NFCyXm~kR&BqrX7!fSJEPlMl27aH zkj}$>;|TM2BI;r#pf21l7qFz>rvYb)0K*yA*JvyqZlk2kw!4?J6Woa>s0#Q zo8aW&4uEsT`0mRIqiv+yek5`wtf^Oi5<+iX&3(1? z+sQqhUj!U0dLePdqVh#h5?2zWbl1O(KGaknb@GMXss7beo!)q!e(&h3jtkzgvhisn z`6DZNJnL@xSG*;pKeYNcxR2~hXAgf-x5Hqo&&Btpfn3D)8E_Q4Ld@gwF2LQ)ZaGC? zE=Scx)$2T;KzYp^o!$gj*G8&zXG0#|FV~$N#X3zNNgu1e4Zcg9)A%~wIjvTxGsa;* zfy$;(x8oIhnyD0MOaM3s(K`~R@xghd!##>asEf+KU&Hhm_3{VQ*QyeAFhmC9Gpb1< za}SnPaXc8W6m`pZ(pa;(+iU;eO1+<0wTFK+r26#wFeeu-(N;jVQ#iZ1i zyHkC{%!A*bxyIQtjKga)s0f9Hq;=z;}?5WonODI zt>mHFN)3FfK9(}QurB7_w;Shr80v7nt@lOG{0{c1Lmz*|b!bW10>6=R_(l?MO7(|d zpz}A#>E@XRqez8Ol;QilH1mwv7R)V)N$=i-5|Oq#rmxQFd@M10$QIjl!0^nvNb!ui zDJAFCP3beMu3fsTNmRK7JQK{W%h#gd00*18cF(L!zX!~&OK->V{!Qua4QAA(-!smu zD@dC@tFAz&OZ40Cy0taaE8NUWi@8oqpNAbJg_43^U$jj1w*Di@Slcewe znC5$J{aFfmlKQr-HvOzB{0 zetI@S`9jJ&-FK@W&UTulxI;)tdn4uFkJsB~yb9ll>Ni?^X-t0)(o1NJ0u9Ps9Tb!R zGw)Lgt~#+kehl9-{{lNoqw>QW9C03i<$so;&ac(}_FiW~E^@$7&toa|9LZ3Ru&UZ0rs!Umk@?g+&%}4mF1YaoG^jlAXt~X#TDY1gnnjbX1m8IItz90Ey3DX! zPT2|PI-x*FwDIK(ZG6Yj#t$|m`_S34kF7h3X9Qqt60~XV2A*mY{^31p=OAD7o{u25 z5_SDMLtTdqb#0B;rOn-+wYnUqPblLQs4KdGqjlY=*0tun3cyE!PS-g1`}B2{e6O!- zd%P|!-~K(@SK7(u_n0i<&iCY`aV^gP`xFE0&r)D};;`4Nuy0L)eMS;&tGdqDKsw4N zMlOUz@#`KYgB>tnN2XTe-C!CW!7t8-;08DdhdsD_p3Y#5PCU?s{H6Yqb*cOmB9y&)td zQkP;XtUS0H&EJ_tCHj$_s3&Q&m6*sS9>qk4d;1Ws%~n`!!iaUANhWf-8#u9P=xGM; zQVPuY4aPfjeZh6O_Hym6{oEqg!2}NPNy4Efe}D9Qb>5567Y_Qu&r$p00L&;AX8?7z zKr5Fq>LT|u>T*Aflnm6R;qBEp-j2Y$|5wVqe>+3{TaQ!!D5(D&sQ>Du`X5cI|4T#t zU#HO7w~(Ks*6)B_=#PD3@^>51nsLko{rLZE82|knl6?a4KXjARaQusG)Ox}KW2dxv zVZOIQE7#(D=Z6m-KsdKDbIgQ9&bkfkzJ=~3JcB-E=McPggZipC6DbflFN|J|>t_vT zC;gCqPF4P(Z{rceI)pf_hI|?$%u@rkw?XZR*MjV4iiv`3f+&LiTedE1y z3HG4(rbC$mu@As>eb-LjevjS)9Z1MFZiRZvsa*3#JGOHDMm!PT3@5^-U3emVpkDuW zpW*F6!`uD!nhgP+t16Ba`GNWlsrzpN)kLnO_5k-m%34FpgZ232g{S-JQzI$l6ZX!} zYB-esx{>Jo4!#`6?fQ+98nc1!agdH&zr|n0qi=$2JW0TMI_nOBYI>M~R&Kik^{C`> zv8+n45LFKfb|dY{F5F-xRO0N0^{!et(9a2H!C@sY7}lS8eT{ z6~?DTyJzK5j)+!VA8({~OVrz%Yj0HU+}T822URaCLZP6|(;@r2VJwXB9Sd#3h?){I zmbVC1YJ_eI&%`2FZ4(5}wGUxVBd+}km>S(p+RxSy^(*M%`x}|oMzpWqPhIWJ+mmqJ}O}eCfD47Hl`=t zie{c9@-(Wb_m2S-q7D@ zpT=~S*U?{WhX?Tb_C_KT3wO+BnZR(Azj$HgQz*DlyIr4)i|GH}pULIG+mRjQUv`?p7Vp z&m9E{ue(qNEf#HazD?8n@I(CU2{s zqI^&vm1b-*)3guk^W(aG_a9K#G zw`^n)&&u$f!*?cQaMJg7dDljVF5S+(O{3u5qn2`{EftmS-pKGTt59#>DCuZpTbwpn z`?6GBh3$}DLGd@7(mY~G)bB9ff7UDThpT=o!KZfl5B_<(u$+$*S&2g$LQbaQwE6fVTYSEih5ZE$}u6 z)%v}IY5m$9t3BAQ%4Au8Wmp-tacnrKtqntyM)4%WC~9%gv^QLB6%S(Vf=$LzW%ix7 zY?KUl8Rs61%c$h@HyQ6TW@+TA#0zi*%^{a+2To zjY)GiY5rvCS^XeeR}y(q`FEQnI+J)+A7shFZq*O3Rt9Cse^N^&eAQnL<*2M(z6koN zK&udoZmMzdQ+*+)@pr2aGJafuKBqh?es=-R-*ZPyJh1DV&g~H9IPbt ztUTVc>6;s&O*1z$t*AWU6S$rco-9biI6%1H+yh^4<9W`t(+FFmqY(yQ_xvGkzW+$) zyG0#uE2Oufta!#x^;KdMaf);MBHt#G$c!WPHcpwr`T)GE0B!XE&o_g$b&%Rt1sNX?7j33KxE%OhBb&x?vA|;9O_o@VX*B?FIOMmYTO}>P71^6=p=mT*V4&_ zDRdG&l#Wg=G|-8r?R(iFHV>!R4%cgQLd#nb&-*!^r}gg!L;u)((fcaD>5#SuF4&~^ z1BiJW)V^zcnx!GaTO0D@`W~-B{!q%p&h4vstPLH~Q=4(WMV=jXPPfZ!G#vD7XK9E^ z_uk1Y6CT;fEdN;^jwp@UDcz6z5Ld`0+V@$!{Rsc*&B-y)zBA-Mvza9MME~UwTUTsw z5{i}s2f2ww2fcT*tok%#JV{AiWPkiDq zqwlEn`evq4TDghwcc*Pi_Fey0#AQ%4c}0`@*lM|d~AarR_k%v zg#YHpzYR9%@pExT{ESY)<*JNjf0I)7mW*Y`q?COiV_9!X*%vdG^`(^ElCf+}O4)y9 zEF0J)>-ZYP;g6Zhy2ox}Gc8dz@25;uO`DR}_e(RjA)M0Q)fvl9N-29=#pZh9~U<1man7{AJ%~E`YjLKha=GF6ws>^UhlSTdMF5JUf8xnD? zmq4C}#@389RCDMTot>IE5`h%`+mr_6fshyG2y!>3RPF{iySp~}(7pk_#j_0uPgCeq z6Dbt5XydmWQO^Va%{t@ncD~@O1W$&)(=xUwf!kM)XlJf-8>&fP)P?EG&gYKbi_z)>y1=LK)GXz_HHS&pjVtn@k_2leoeH&H?|)uuXI2SOonHn(!0q} z)^2@L^=WmbiV;HlroFGjD3BKH(;t~c{7IB$qMm%7g*^?iuvi3*bp5!E)A*XTN140= zwXn`@h)7f6F9Ls48WQ(McR?BSVIC>}ZG)c9KP7rP&-$&N&ZjmM^4fax+)?9tGF`_H ze{z)Z%TejFyBJsg`6iSTX|cDyh5Qq!tf<_%j1Opqt=@2+>p+56pb_Jh-q#1ms? z`FzIq*YtzRRH(Aq;wn%TgdG zs{21~`Rx7=Dle|A+(B+ihh2L{fbU%NmaN9*cKS5pw&H&K!EbpstG6eFrFo7d6}Wyr zU%g&Nx^cX+zWL04med4Vb+{(<-h_1%oRq1Q=|QXqD$@~Ao}*OS$GLpwT$MYxAeOaB)bx|gt)e5`kjz`=O}7`; z|Gi@Wqcr@FazirKKf9;)i7ji{$ukmsW)!u%bX<>CqChKe#ep-{B5p05=7lcULvwnx z(9?tWmFbP)eU%(KL*G~^S>uOxF{~TeDuQh%OWulg>2;{OoDan+Kano#I}hU!v|Q{h zTjy7U{+r>~k>0(lq!Q+YUnO1CE1N;T{*I2bh3I2ZMLjOv<9_t&X>o{Se!~S?(@>=O zbrdl1$v<*!v~K~kh5$f7zrXD+8xLiObUsM8RT=frjQfT=L|^rM8{@+Ye0V@86w+HV z$B$ulU_<;nQgzpPyql`6GPZynPbbjhDHFp^Kf3Nf#>m;24!NnuG{LQ6@gC`%0=7Ow z&oJjsn0?)XPLS6tc8>nW)xxW)$EvOA>ELlgSa&KjOLpIdW6IuUlNm_Fp&sDEizm zULU}6rR0_$yU&L5B`ak6L}x#yfB4r=qOm4dzmU~q8`i@Re~~-Ya&eDD4zSt1kHuaZmCd>qj0^Ja^0d)u54euvyibRePq4;(7UtGkJ+u2 z6+gqxaHNMNfKu%=t*B9?nAiW^_H=H?t7T_e8sf%vm#U z$u2(~_0wfgsy=k7a=dpp)x!IhIXrtl`c)yj_vGz3%gR1c3j?#-@CjsGL;kUhb`v=Ma;TgCHmGI?%e&^qCNOKuk(KFzB=o6o5zj)mgHNp+d0B5oyU!R zM=Mf$>AAhTWCv}RcuVH`G4|mOHzZTtU$Ftd%-Q)hv>$7lg~nU4+7Iospix6m%*QRH z`K|WSX;~`}-!}T9!kH4$ceE^{N1@5GuYQO}9i5qA``n%ohPJCEJ88QbmAHWST*n5i z=T0}|SJkc?3UM&~_D0$dIyEBHST~&veniZD9Xri*4_`nQVB(&uuTk9t-wyNZ@oDLa8-m~buvu92!3iskO zCwtvg?=rUsIWsrh$yjxef&+b`HO)_=QufY5%`(teD}$k$?g|67y7Luk)?Kz*-R;tJ zSLEQjW4?a61n!#rCGUi|zF>@%sEqT`AZN}1N)FYjj<+VZ|c#uxx*0D%y+t zT?;DBp5J zjm2tdJn^$G=FDcwVH3F9(0kPz{KfPdmek)Cer-X&pxv2LTzivf++4TWpRv?!{6#`} zVtMYY1H?HA?*WRSM;mq=t-yIG&cH0%13&w@xdU2Ip7iLYY9-e8+PiB;5d3R8r6Cls@S^|`xgz^xc za^viKsdz6w2jmBR;Zc8yitTSB-i!CDk=t>9iP|^U6xC3?7w@~Ba#I~w9E;_r)#N>j zGp2nuS=hf^*B!3-?CHwi|CT}IL=s~M(|#l`A-+1`Pm(R7&rAQ z>e-0OS)s2wQ5}gX3!Sd`1f@GZ*SZA$TIeW6DpDvbv=)o*lkP~>7O`W@q2m0WaYJJs zReW}nDaUi*Zb{dfrGFoMPaC%9LD#_{HRzTIqq_i|?-kP;qjkcg$I(4r@}E+HJiT}< z5i{?{WXZnMOuuF6uX>jl@{^-hHy73F#z1E;Yro2B`wOV@D(_|$9i}fTjvL+rfl6Oi zU(;PygN}iH@7jaABSqhP&=69Voc3q$Zf;M%UlEqxl40nkHYkBQ)G)!O#n77~rV#Zq2(Re!dxME|B@HxKD4H?&4| z+Kn4CHt4Wp#%VXzb7!YOUJ19)7WAzur`%|c6gvJp{`4v-xT&^Z)IKiba%0l*mdJ69 zvGG1q)AK&9Cp*vjq{EKQP1WYt(K_t7@#ZXTW64s^GHW9Ox_&dky&l7XLk&L8+?Ljn z;h~VcKdVQtio83^+zPwLZz|o^X-+EB%eIsHrJr?hXYOd8EO{zMH)geg_KEH^Wlz*r z5OC#UuFLB37VDCBR)XiwNOwDMm(uR<&NAl$_t3U0a~B0#>%DC2?fChu$hth{W1^^* z5XP4N9*NdofV8J~dO&;hjw2ndX&t5XoR(=-#%vk_Wa9`#?CD=_elet2mk-FU6ikxk zoVBJ`P7G-M8Clv{Yn8H|R-C^NIDa{3RqJSpE`J@Z1i2ACM{e$i*h)gxYKkkr4aNT2 z(Efg?l_FJKj@yfM4=bS@qt(iBzt(aLFQpvAc*~L1`I0VU>nkPgXq`jOa;w)7YNe!} zAH>1J#&N4S-|gu*)Wb2~`k?plA^1c4lhT?}v9!`KLFXaO1#-%QvOEIqwRfe^CvneZ>SvkXRE4|TBDn5$a0lF~8qBE{nj^Yrysv*i#(i9)Xqk!p@Jkb#M zh2fAUVg{GilIloJoGE=B`tD&#FLWoHpst_|y+U1F6`)6# z9VHY}ZZ$6-u-Mo2IJ$$VF~!^k&EB;TgucG3AvKi>(Tuwn`lgbqOT82#iwd+A(Aqkn z8M&*zko7@-r-xQZT}47&3lXiYNGRrJ>3atw+dwHPkM^XX=Tb^6yP~`MZKx1SADKZ2 z)N7_QWgxPmm^>hzl(JU=$hSOJ!v%6}psVWBS!5tqI@aoHrqGkgUo*Y~t(3B82oI7+ zO3CX0Cbe8h?IKF;2IDKllD+#=DQn!7_I;j9O$f0Yi8WJGI#vwrtOGvxmZq0dQM;=d zigSfhVh~ElzL*I!+T2-SpjKl_MHtkWp3IJ#T*UZEHX!{(1fcta?I^FJ($kjHY1>iV zipY|+qw{J3(xRkP39JV}; z+Zf`mgX0#f$m(NRZXqK}(O1eEVOdI{MlC=(l2E36!U{{zdkviTr-fYp6gckNg-S^| zoTsaWWZBqafBrmf*4XU;#PNY{op#i&LaxQVzwe_<=DY5FRStfA>n&}`Nl?ofI*JlXz4%fxo z0&L&awUBF%sTu1z+<@f<7AQbr>9Ek?HvD;?{0)vH9;e*sxG zZv!-SmmS4wH79|X|c>|*!|U} z=T@!VxG#3Yg0JPaKb(7Gf2$T-4>(?Xa_FdapTjHjCLbMNfAjHCj@BotY(IT!V;`e) z?%nHM=;=29a>4-L%X`xoT>p@9;)cmlpPSRyKEM5NQ}sKAw%6{b#~MAba#;87#LPkO zoemm&>}<6+Dj<1V!m%dI50sXe>`XQFY+4&TR&<_G=J`Ajs|NBbOrHE6#W-}!wB^QncRa{}mG zAzDL6HW1i2CV*;yS^xzA?W%ME3;~Qmb7;U^z$(B7z%Ia1z-d4b;342WAPSHGNJD2} zgvd5VYY7z91mFnh3Frs#0*nXD1}qVxwHk`@0|WwY0v-!F8zm0xg$c-Bu#u)S7D{!> zLUd_6*c)i|TZ}9Ysfmpa(|V>+t~x?7vOXFLX)c}O_qBomwY2Hb;uC&%b!pJ1I$s$-2G#S?|~|h@5_?nJ2R`O?2()4?WMo-7eOmkcuEzB55Vat4L~VBWChCl|n22D6bOQHXChT5r2Qo&O2-CF>_LH#lryA zJ$Yo))Cad+=)PK^FD3SsikNh(LAqn^6D`f_q3T)u8lhAt@Q&7`_u zLz@f}o*mL$*cR;Js>p(#0wpLC>DmaGlG{kR3PfU8Ly-Q)&6q%aME3P0WLpY!ZA46bo6*;U5TAgF53E`rS@gRTlstOi%77v0o>kW7 z_R;&3HusPcZSFzUkrsLsYh$a9Z(xffcg2EpX7rtI$mTw{V(+uShu=Tez`Sz$sx~)1 zQ-gN*dWGuJ7WYDm$KuvyEN)$Oi(4$UwGh+Vs_l$%Hn$FKb30RdsuqCjT2~$sEO|+M(x@O^M@jCE)P6b zpmRA&bQVNqUN{5VOGA};;T=3L6do;YUI^_L=7syuvGc+(E%QRuMyAvEt{dQ$qfL+| zx^JIpp?VrEwCOLjP^rv9Jch1y5k_r7zw#q&VaCTH&2TeBvWO?k~2u{o7 zXZ_K3ol)Gbi+-_PXREbqvHqWI*NcCn8sgnEtQY_2R$ny3Fmm96r}<1nq^s z+pddLPui4e*|R-8cFpl@4y9v3Iic3Q5XxO3(1Z3Tb~O^{u&weAYL&W7i^MG)d{`Nt zuHp>7tc=iJgFtol%NVtE(?A1g>1K%U_ZW`bpyarrwJRP4{A-N(H`x7$x}Z1W)|ED5 z-bbdzskZbkYAqeNb6x&+et~J{IwkCx=xE(5-Mjj+F!TtmO&Z zUdnadX92c&edRyB|tSd{GM#?BU^Uc3-e(yc2_qZyK5!bU8}I&)#X3fU4bRq zU7d>UuExJ%cTM=CcGu+E+|@waZux^M%r3dLNGkGC zqz3AX(09}pROe$jv_6DZ+iORA<4;UaPZwRA0zvD;*L1immj#R9i{gh`?Aq z?@aX?f?biw_=+}Q`o>qLdIB};>RXwunuo=<${nTTttoARU1zNT`M=u6W%(J#rHg>k zGs;q_cw{r!|%)tRUor5*(s4QQul$@5+Pm7p7@u*z0=bX-C(;UaXQoz?H+Sl+R zZnXQSh#T$t7h70L*)vl{=89#TA*OS3M%J+eOYEg7Ga5JK(d31x<|t^%7ucdXQ!vQlwE&Xj{+ zAyK7BCUo@xt|GS>(mMjaw^>V7lFo%4)n=ZwNtI= zG%IyMM~J>AwxGHl!@hJ>PO?g(uINzm6qbv~9OCal-!0)x>5A3If(HC!fmmvy?Hub1 zE$3L7R8i_hfslGW)9=@Q^5$4OlT)8+;qyAipp!oC_ub)vS)-7Or1~g5L%Qd$s;k=b z+YSSb44Ho4P~#+&h3Ey-@9Svx`_7aRyfF%aQsz?GfYMul=E^4Ugi2m1S;#zPGQNDk z5;lVI7kn$`RW=alEkJW+HvBL;ygU?aYIsr`4c>FU#xTB~!F$id{g81}of%JK{9IvN zZb5(1g^`?RBsUEhJ)j2@8tGUGAzsJ6l?|*Rwu4+4Pfaa0DNgkBTG~&qCx!DO2KD6QTF4M8p(U$i#FHboC%y-$0o9g!CZ}V+yfP#<5?=vH*~I zW7!1=Jpe!Z7a|LRc|K97y;Y=LL9N1$+J^diy1k*fvPO;2HU(x|t-@wiRFZUcDS24S~uh1{FrhGmYRYb~Obnt-$-&OrklYB|Kz3x}$y5>t8X&jQQ* zaLGjDk~w3bbZidq3kqj|{g^>XH^Olh6(HM)dCq}nV;o<40hdN9Zc(w|u0v@19i&5X zY#$5wTNk9Lm;|j0`MIwW^JpCIDwbWg)p*OG_Zd~0sjpLzjy3jw1fJurFq-beVJpEL zR*1FV0`4OGysiM^6j=$TP#SNe&{+f}B=SLWReMz|bp(m(c&8)nsUgvodO7QXL{A~m z+b~UkL1l`m{{pVI8e?61sN}Z~mN|ib6|jD73z)ZUDt2p%e@|!M{{ptw$g-J*%cfcZ z_bxUeYN#BfR)>%ZaXJ%mI=T5uNjxso40x`AwY+tIB&BZ=%4XU*N%G=TAa+|+DZc)dcTTnJeFdRy;gBKp)%D`AIFt9Q1YBi`sza@?eNCkzd3#oL#;cMaWHV|h+EUO0Y{qeIY zJj;kSWCYTxIKMjZY>A(Xa+Q+dIAjhy*Cg_i1X6SM{fB1@BJOV>)x|zOz_TfSewEAg zFf(xckMM5+k;YXB)erj$g6DzwIUtv3hhv&9f z-U^;G@HpE9p2dV_bwFC1kXnJ%j*yztp~bI zyL({osP+fZ9C^yK_eX7HeU1&-J>vM?@O8(t^Ou}zRetALvyoOTB7>Qv&l+{HTI9UmSH8KcuE zbf(YbALpW@!uBh7MV+nsDB4)jAbx|FFs0pv^=TFk{WDgDPR_7!eVrN6!!3JDeYc#X z#S3yC@3>dEseeVv>aGv9a?e`9j_f^xBc}Cq`qoR*y*O%@euX)KhAY0eq38K+x}7ve zbNy-;T_vlHT`Sq_KX3AV&KpyqS47q5ed{fRKDVnGo&8+h!PLaEL;o0CdH+#$ER*)s zACkYkfz{>nO->~|YN979Y+8Bpv1U1~nzo2~yQXE}^=qvLuI|~oqt&Lif~RxaO+6Cg zc=(RD)0u`#Ix8Dzb^B&}&1LVF9&R;z8TCeM2bGT=b&qH=uK$WQ>7EN~QzN`;?HyUc zr{XC41J0vIUQ~|W?cg{TttogNTsvX6>)?s?UdMX3yVgY+{o=i{a>yqiy6*e54 zG1k{^CR%rxr+0GhTWi~SpK@N#f4rog?xK^R>n6km#FI^d)CUyf%Tp zA@M|a+|hS?QPgb2VTZmyMV!8X(}3%Mx9DyPz)wICy8lnW+}&1LK+*Sxp|x>z|D+?p z1uzIO5}*Xk0{8-!0=5J8;1t!AA+p*#TX0G$9m0sR1jbKwWcLeGV& z;43wiikTG~31uNf41Tu5>2-Sg4iak-x>Ll@sv`7PepWt`>@bR6O+mM%+6eDeF%flz zI84MA0->*oP9bIB>*JUo=-}?H5Qa;H$fs_x&n~pj*A()ZtKm~>jrh5>m}_gi&FQc zC$OVN7g6+`i}XDk2KfAp5K0=IG!d=5g;vXKoq}zpIySn@=scZr)fLnGA`W6>p_TA{ zm5M?e!Tl;|JxTy$oI>Cu$<%|lQ@HLK+8?T>FVpju8D0=jdQy2jyGG~(X;q`w_uk+& zLg9|GtPz?}UX<8Zp3lZJ2jUr998U#^2XQWv@sy|B+kfzc8T$ov+pN3eN6+3J-+Qua zT;8&xFa>?b=e;Vush6IUWV_4}%Ye7c*B#yLM~8wo<@Ow{iqfGwFrk^7X^X;S#i3t$ zddnQ2qniNT+rNY7)6XUF^vSd2P_MzK4wH&(?|A_wKS34WL%rI7`6i#qqZIP!c28w3 zR7~%u>2Ntkvuk(IT6BTAi?u@WvxR`J6PZ{a-Dx|}@x7;yM3;8)0PW;7t1ffCX+Nad z7p-M>mg-8INNb?G0Af5nR>s3S*qpMU+|a7&WO~(9*VRBMay1l+U5$h~YWD(w+{)m2 z6=!fmyKTl*#zL?O?TbStyN*?F2Iu`2BU1S70ng|3` zd0%hYMlpS7>4G>-ubfzgKOfZD+1E-x((@`*I&k-Iohf*_V4>yf4R`c^Xam zIJUT;XU(2vx^ESEVg1_NmS|kG*Vvz{!n;4W>6iBBKK|zZTpaKIT=XB>pNsvi{kfR` z1N(Ck|8ajVs)YSHcIVBul%2P5yz^F}sBAlLc|1FBsVX~f@i;HhJUegScz51jmtp7a zCeO}W5YNur8Lc~S`&D+{cA~=)LaRTz_xAsL-%StOwhaI+0389YfB}GUfT@7_fYmB{ zZa)mzJ-3)&+jHwFFJ$k>PB6e{I%I7xuy@k4`*G>u=1uRNF)37q6!vTE$gyWohtoX} zm)@DG6)AgNCwzC=Br4!4MehntqMYcHspz)wNs{kZ&^RQIx1oMi^^ttI1~zA;4b{oq zNAmb4Jcn?;^(mUnI2QZ4HHq@LPCs3xjaz)bm?6yEof8pJu5urH_i%oGW?Tgg$sV`yR3{7&Jwr2sQz8nh^fw}{#V~+75qIb{P(Qz-?PGh z&kFxNEByDY@ZYn-WjZU|-H<&i?08Z0tZ*Mg_N?#(FXpW9u3tPWe2+dWe9zoR=6shq zE6kqv8eyn<-b-(2>F2%Ng4pw3+j-A>4G2;_?={izPoDR(o~!M=7fKbS-Xn-R@0F3- zV9WjN9nIPEUaEEuI->{nnyFN*YUk+luOo>0?HpPgp7UO6>j+}z1Oe(XDp@%T4RloP zGNt3-AU$h6g*=||S*q2ckiW;aghKubkIf4CQzowhioPB43Ti5`}yjmjb)1igJSX#SQSj_|Tx*5?n^Sjd(T35tI(zz4Zz*6QVHfi}-r}rgThvJ*{04*Q?s1jTB);x?e5lWw%E4E--8F zxSQ;KVD0u67WZ{%FDh)Lt{vJ>QoSFH?Z4WhcNs7M@mkRwixlOHxMfuKbPfal1-t;n zBJMkMWZpS#`Ab zSx0f76{^x_Z9b6j`Tgpg(R_W@dkW9ZL{cHwXYHVVWo}kyZrRp8%P{|mFP_yzF<~|s zGVgJ-s(7s}h+bv`$W<5qU&B=o{@<9}xhqehvK+bG zLNIeJq~tioW0@4S?PvoF!3`+NNjJtoy1Y9p|&>Z8~j)JxA>7U(Xa^n7dt zHXu1jORj)K{y~g&OEzS9$*hDmt9m=02$DFIr&u?E5$VS6w^RZ*3%Vb$!~KwVT*><_ zkwNZ=9j#~Gq3GUBmaDQcn}z_=kev=Y(8BRt(DD}YgmSn}wt^15 zG}g&L3wn*r=0B{Ffll-q*%kx7HL~+T>>AmLvagXjRtP@%M0Jhqx)H06(Jc5j`e6XHC{*m){7WyLj%hKaN z2R4lSD(ZW5sa1hvPrP5V@ae(8i!Yvqd@e7}m6`mjcs2s9#Wlcviwo{sJn8#FMf4gh z`e$CRxb5jPR;v*`0&KP+zELm|vhEt+DA>)__KkwE#(LOZcSHQGLJmAJ-zxO)LqBCI zC0F|*S9vNK?k(dIp_FU}-)cSdXQgCNUpj_&OgOX$Vytm)v3FlX^wq;%#>Z!vp9j*K zpl=nBWD7`!GO?UzBq%h6Z9-$Q%5NB7y7niW4=;ynrJc4Kzfmo-p((*bxy^t z^9=TT0McrQ(>esP*2L{_4|abK?)g~1O)B~Y<1j0*>?7LA$NuK$tGA^D1Er!CZl6B+ zXdcA)8wbxxL@9gbleHCsWA4RMdY{<$A7Xn+lu7e^aulNQmvP2AD!&Cv$K!nsrRus= z&1ZW#rED0XsUf5|5~nWC*BD(P#8T{*na7n|GhA-yTZOlTwmmq2IaQ{>)lVK{I1~g>#iajf@K}@$d==V-}Ah(l9x-y`fdOdYhrFGJ%$*5tA5L&1HX0EzU*>zrqoVe=;&*#Z` zG%in{TrE~1ejlN)aI6FGA^oiq_Ink=@5HJ1#Ik)>N|_~&(;2j=hx;u@cz%qvYYEQ- z*!t(usT*7WnzaG%(I9uGzp4Up)Wva2S$~E~*>tRrKDbvRO0^(IDH)AZ&dMpJR~Bm2 zwMe6`DP_-p+|B8h_9};L;Zmafuk-k-g7pmm&2|#+Q=qq9rz)!kv#R!`w6#NZ7nsP7-&0_jrXEe^^i+rx33`Uwb8ov6>f z+2jbGibwGEJh6Sotz%&}_!rT$m|tt-Vxm9O(K|3r_f%izi`BlM{d*K)@bu0{|>N=T_}vY%Oj(@x7G_431R5n0-2 z%e{#4_E}cxmR@h7&7997`#DJ{Q>#a^l#&3#rr(*x&90q@cC`w-9_P_H-JO}?&&=Xl ze=VF>?=0y2e!Kz4zh|MQgT1NQwd)=w!*!##^4i>#kr*uM== zT<5Tx33f|DCvtIXH-s{~PPEFROx9um%LIr1nW>c2A>Oh$kmeBmQV2+^Q$r(7 zJ3+*}SDrRdlDhPMVXvlr>WDPn|4jbY0=24WNVJmukbW?ct1X#ixxL5buna<+Biha! zke(-`KAB`0zs6S4FbJXS%hc20Ozz$5L6niJmK>p(@T0z(Icl0&dJo&Uk7g(f9!=lk z`YZ>UJ}1gZ2vT!Gn)Q>32l`N1zyKz9i9eMRG0}H~{UlS&B7D7ou+~H>cR`v$`2F`M zS!U&_G7y z_#{Ymi8|hwL6*ZyoYxIJZl|%^B8cr8PH!%cziw>*5B?H~REKA1@1-1wUaETr*J8V{ z^FN+6D-!86fYhfE?@tYo_9J?$svtGMeQ_mtE>Fa!pHWKRf-N7FcH`KnkGW7imdJE& z%;-n7r1$CCZ3A08UfxYtO2!lQ`)@kgYNK#zolfUki4B$=#Ii_`UBk7tohOdn*llIH z=1L^9YN*n79q$vX*WT&etgZ=`c#!cbsx}@HG-!*v{~5itRv095)3v ze+%4CH3jz&(*6hO3L+g@I@hjza9XBVhHjk*$1-CG9Z$q50O=B<7BbVwc6kWL6T{=? zg55r+m2Ty|!|Qo>)5uzi!SMv8DJ2_-oSshOYT+QE^BxE@4VT|Gc(!BTe|Vma%Y9WE zyTZ-XKD1s%9-cSPRf+u&5&J}lWj>+NFpwtWmN+<#8~-QbH?ViwZ_cE7W*O+t9AnKp zb2L^~q&^xF{YsQR#mI`w+W_V(hTYvMjhtrl?D=iQWf_;s<#7tmV`!>UvK*K1=TvU~ z+5m@nnX0{)Y)tf$|3Yj_iE{P_sTa}L9Zuz1{v@2*PAo$=1zEA{KM-2XuK%Qxt@i-- zH>U(mn-ZFiNacE?r??Fa!m>{w8^*5xsQ4SmuK$2Wb=dWP&GHufnVIO#0nAKP0%@7! zk=ziTjd8t+c}gObUH?si_Ydoul0vqJb?o|oO6l*rDSqFdrf~0@-2ZdIz*UR zAU%ucJX7F#8KLnQ9*q;Qc7q_q0V0GONN*5QCy@Riv}(Z6y5scO0<;hB(4t=;JzX$Nhujl=o$`E8Mb1+;ZTPm-P*Xfd6UHTeD!f2 z9zmFExG%nwMCv>WztEZNsstNBUXjQ1G({$p7e z0gNO#N8_;Uhow@cgUiN?C-oQX`cD$K9^Hyv|4Cx^1DKrsuq5}b2lr)i<^ZLYMehHD zG;jd1{}0j$L@TS9RC*8H9Phy8B`PJ~hJY#hv!$g4K9S|>g@Or&y8@-rr~r$q2~U@ z?&EoK+l$EUfJAhz71uvJrxW$p8OKuz`n7pD?l$1F8g6CH63e!V|C3n7H`gfXXr40> zTXEYGLyDsa?Q;^yJnqLj#wRExcZiY=P2kx(!y#Tnh=W9k2MJui5Kr{wm#}L%+B?PZ z_(MEHNc#_@7G(Y7@KPw<5L}z?J={z14#_;6#9c%w#HzP<} z!PSL0_)RK| zS4u*ORMO)~&GiUhp%8We&d+Cf?n~t71xPF7lpewJ62iyzc+P5X$*%vzYq!Rm5Tn*! zi1!E)??nw16?y(Ep6l&fvgbeI+1WieW?S}Q zR=qmL|NcJf#=guxYjx0Q5*|Cv;JF-8PsSh(BG3PUbTK*qk5fv{5bs+&NI#PAe;nCL zRq)H;6Gvc@% zpxW&IFZgsLddp!dKHK1SJ0OmFS^nBgH zcF9>tOP|Qk5s+3Oq&s8D{3KzWS3`(}L>pKD(roNwHas82?R6?V4`A1SW6Rb)i%S5v zPn9vEXLEcaq6?3P$?X1LEIGEEz;1P8xpO4exa4g>#|K1?%s`q#zW+S6`5MPv7{iUo z%ZOQGatwDabUs`EF-l2AqVzw5^f1}~$B?<&hvT^wqy4l}e|JL%_4rRg{6C4D?FZ=x zTx&aHxDz;w+4UbRdkeXnfn`e}%x)aU7rR%1Fh5xP56iwnn2W6a2Vt^_)V*T3^;-+P zXWI{azQeKij48dPZ^13Sr53*`C8y9Q_Wi7Q%GU+wqatY13y*w8JpMZ4ycI+%C8yZ) zAMmV4)NKMteaZ8GAl;4A`V!5={{YJD9**}FxL3h;?UQISeIu;fHSp(w(+`H{twc&^ zqRICA1E;bNLX5zncfj)uq7AR*3B3`A_Jt6~iBVuGNKX*bu^`<<=r$z!_eb*fxPNF4 zDNM#AxkEH(t9`;HCFjY>E1VN^2>TG1gGsdZS$`9v4HZOjbCL|U|BoV5io|st$>ZjT z!+nTSN(K{U^c189M60?5(tioRK_Hz(ylJOF`h=*F10a1$NVkIY86jN-(tILbUy$y@ zr8X;y?46&n??3o!g7ZHzif8u%yY-JM{f)ni-}v@C@oZ+-|DxCxQ*vhFk9SV3L8mo@ z{btG&>qo4eeiYZHRug5B6G`U(IXnN0R7wWna*B-PEbFznWqtwoxkO#Q1nGN1dJm)( zh}17fl6t?vsh@!mV{z)oBFWab1pC_&S^6CKG@b)5f;eq)?=&}(8v`%kvYHI;tBBGa z9m$PWZ_;L)uwYyUxf&v4vMJbB%K{Wax@;}#Alhd9RIapu}(?FQkJTpYo_7knA))N#Zf@C1n0lIXvNg0wf0T0fBPAfzr4 zzh5IAagEe0V_eWi9UHl8?%wO-(0))FGFr^KvqiEV=LJFsqR!nihXi{o4b?%_mB zoB`5ILOKDYQ*pjV!Sgzz=l2LJ{Y!z`L_2bXxNfoM|8WdezzX}0^;UrUQ0!iZr|jc# zxmF9~+0Vssln*Q2BAJ5sX|sPQC3lIoocM#=YwwC<4gW!EvkGhT4q{n{wSEE5d+_rk zc;qSrxcOh^MkIs(V%$CK7a?6&_0*UoQZ-M0Q9OT!oYU;cw>rTU@7_dh(LYT$Q# z0*{+5j&TTRx|e+aLF$DqdDkD@?sre3<+KH#LL&c-esH@@D{)G8JX##ZZWa)W6Mn7? z&&P0?SKtZbg53l>Ztq$9KU694BytrK%B==0z&^i&&p6_Zc@s*;{Q-x#7y4(<-EYR{ z?stZAC!gfF=GKFDC)x8KJUX>y_kTh;Yh^fl{xkIV$LxW4%ytPS+wgsM|0lHcUHw#I z)!XI|Xm=ZHmmi{(d?tF}RFHllq){OKN=UzikY#%o=kFPW7*Brx8N#ps1<36Y+#dym zl-{e>#QpuQkl!zls6I@2Oby}gBRGfme#SvA%yEuJ!1E%a%?||Wb|RlWLdcq5#-9HP zLHF0-{y&8LlK%@R+s#z9}WE$@5>|$Wr>u zp8tXnGuZhbJQtAXzrRt!{ldC0YS5faLytCGnB8^g!d~BBESw+lY0;R;jTU<~8NWE| ziT;walWr_IwKaXI*ZQ-|2I*W{7WTN~@$<65p=0coeZxYCLRJLfFSuSI-<>UBlmW&CDKs)?DAVaqX8*o7UZ*c6Z%n{U_^s zdAwdXs+VMaN_Lhe?~3 z-dnXPOZsM0jr%<}FUT9YImEfj76+GBTb^9pwI#7&+O`unTWmMIG-ny`b1U84v!8mf$NuTdJ-32G_Z&VyeqYrax9I!c?cba^@Fu0(!O*U64~};IaL}z% z_Q5_M!VbL~oqfotm;CUHsCtJ(W;-078Ru{q-Hp{{ieo9w6j=ak=~Ab-F7B{lr*YS;AdXX)hs zT~hOGvw6Y*kG^&R)r}VhG?4BL=;BuHoKxNL=iWQbIXCU4QhCHevsp*+dPrq}xjPCwgE2B2i9e1Oe1>UO?Y^TZe4?`OX_b}08nt?(uDBP7_HR~% z#lET8sqk%^PIcZ%J?6bbcc=y3J^Zdq_Y3dd2G4uHzPJ8|ERXgdtY>Zb@bJ~854Z0m zee68>=f{K<>7RzDR`@*rrSs?4{U3gohI)Q^@$u{ztB2WNMD6Q*jj#y%dcVqpuXg*q zz70v3@-5}u>~F_R4u9*U{QPb4hNSP_OE-tKiIRqPUz!p+uYu8zImgU@AYQVa)BJx- z8X5Sbs#DgF8M;lv8b9h5wt0Myu-EQ0!#WCd!*vE-36ITP5HaY;iilmkb0W5%5k>yE zFeY+;{Q1biAG0G}5;sJdwepQFTz)b7Wx=)Rc6lZ-_fNcy`FC8K*adG!#=0IG6+7tp zlGrYzx5V14Pm5LN<-{J(GK@RyS{R3T(EM-Dji1rgKfx-uQDR2WJE=>nyvP9{P`4MnKTXi~|d+{d8Gs^V28B zC9~Dl6Pcpj7cytmOwRO*teaKg7L~otOqnX`bnKmISq-_k zW_Ta5@m+Uu#GReu8%7Vr{|=59Ta35V8C)%0r$){N-2;Qd^n7=>FtDmQ%HX}=twF7{ z2!l)uq2Y|3N<+`EwT4fwRWMrgWroqWm_szL#E2HXjo0}57;pNPV!VEDK)JyBSDhun<$jMbx@nn7cU&aU5abJP+BO~ z7WbCoR@|*XahKwRqAd=^y;yN~OR=EA-8HzSxZU(O_no=_zB9?0v-_N9v!1iNpL3R~ zj$1vxbF%K2YTgwYP2Et*Z@UXAJuihs`6G{1ZIVhOb?d9HFqYdq{MXtH>$-v?E|%Ng zfj5Qr`irS3vv{kSvmnz%xr=0tH#F+=zF$AQLuyX@ji?A1zG-xEZG83ev`%2bJf*kq z4g;4)k5RKjEsU+M>A}QT%VI2r$NL(bfspYlznK5K&>>OG^PfpCf(BFvA&(% z!%Ie2Iy5Wluar2=Y)&zsXidc&&sg$;zW`gUXoF|?QHNa+^$O|Yw7`D3IucUrH*$h~ z$?J1BUFL3*&^GhiS;dAo?NhEtc4(_PhQ&!W)9g}rC>wY3$y zHnX{p+^y5LRl-J7?!~@g7OFW%=uuRrOuA;%qRUz zI;eq{p@y^ertM7@M@L)s%I7avR2(hrty3H3Wo;G?z9&gw(hvG@$M~spc;i%(vUr4E zw3U8tqJB45xlq>qM9K6ZeR*T6!lGiQcELzKi>ZB!k?mN+ay;8nTkQxf*X5;)osNIg z=GaTGBL*IU`P^!`&tValUUX?5Ji7uyvNLB@s@ye6jAG=KakYGeN8Yt= zZ;h{aOqP;H3A@{mRjY4j(r5O4JUOn*y{uMN8Rp0s>H3)YdeME~!1d2E+)MO>aM)kg z-Hn+)Z3j1$5f%2yipMR7-EkEgWEIOcO_zIxvK}YoS4-Um_qnc|xFymp>^f$15BixW z%Sxre9t=A|^Yy-?qM}_Mm{*j7o02hYdc4ct)A~o3Ggj$~u|cpU_>S+%JanZ{d*lm; zkKa_x?sg7;U1LOI%~f)JrB7vB@_g%;xfHQohk=7>o936Ve;$h&?lgCv>+Se2@)Z~- zKbSsT;Piq!*xC52S^{DMi}P*?4|f}#b5!zzz@x3Hgcapx!cF@%yg{UfxR}|xYS#U~ zwlzgBDhRJc8r>2Qz;)G8_X95PAACm0!={HI%TkY9Bhn)oPea|3zc%e(v$Vs&GHw2C zw`=v&yekSzTqCw?ya%~?Ekj{&4?FHU`wLyk#^JWNf3Jh8az`UKLi=7G(#`lB6s?bX zV@6gv+KamASN-{Yu@{#oCe|v{vY6Uu)={4(w&PoBYo<8g58pd4T6D2kcVeqEU@HBb6VDQG=#KcFiAn8s7p!$*RIIaE{&ZB-sBY$0@HC(> zI1=Q@_9VE{TVyljCwAu&s^Vhx)*f|_P=TB?`RL0FhY4F3jgTF6AwP1Z_9LFJ`?dWv z>WDtgY!)5|{&J}x`bkbPo=W`+MX78d|p<+HaJZDw32R}S|WZhQBYm$p(HGNFaUL}RdeAQA;IX( zoVIvBQ}%3cetuk#!V(tTH{uZRWiI1uY0wUjTx1p#R&|Qc$Oo~;)Bd_bWfq+GV-e8w2c`y(D?v(Y-d2xw%b9%RAqK>$?_YX@uzeGHeI)>ZHpGy@_4-vhPJ=yn)@;}8uAdZ@%l zRTjW&38i7g9Q|5h*ZOZXcJwk#JM=@$3^bJWBaj|o1pWY&gV0Kly^)&6m;%><+(3WP zJU_#wjZr3*%1|l^?lrzOvNc>rl32V~0Lr~j8k!K%99AecHyJk#3QP%h!g2x;VKt#& z1FnJLnE9X@lw~H9VK}Y{dKH)lqYljzSO_2o%>Wv}1Rywo6MPJ!2d{v-0N)|(5Y84b zl?jFwo)xwe$PFBcb`978Xn`641V9kL7*&Li5<(I=glB+ZKs^8-cm$|`5Ce>%dQbwW zGqe*T4EYNAhv39zF7Ao!yMs|qlM_6krAFa$mTNrA3_A%H%x6^IFh0V#lAfm|r?>T?MB zc5WN69q<5@1ik}C08v0vKp5a9;620=LWn}0dP=ZCTR>9`IrKSXIigT}RL01vu&RKl zOyQprol+Cw$O4~%@R&aZKrkSD5Kf3cBo4p;^@ZX6xj3D^p_i?s`M!bI890zJVyAU~3mumfxWT!NKBoPaFA%D-+2NEm!(LGT;< z6F?7`fvS}(NF0O}!UU;>3_)5^ZL0DQg$uC2c>>yioRQfeOHMpfFGdfcRH8Ku3TezlxF`|FMicRSjCPWPhOabse+oezt3*ZYN38V$~ z0Kq|=AO`?FSPb|J_#M?-0?~iI&JoIC%He{Na+7m|Q7sIrBB&yDLR%wj!t}(x28Dwt zwS)Xg#!zO>PXCa{7?EH_@HJ`z@IZ~SXfPa{1zZ7ifJp!?)42~ocAyIcoFkaSk@Gr7 z{C`QJ2DA>&9H9V?0B#c=DoKzhp)9&N5H0Ch0p@SKD)c&l0MHwN@&7dpI0?W9yaXr% zzX7iRj(}AlF~m*cxx^|C%Bul26e9;vhwg^{7iEmC2si}LqIy3X&;j%dKn1~h`$`gm zLTir^a)WZv*wO4T4ZtD*5wI^>Fjx(!3y`$!r-9;pLVIYN;IVeSIHuUdLX04{@TULfZFm;+h&Og`Yj*yp$uz4!f5x3H<&d#$q!- z)Ayw>-7v>E0(GOAsf^F5>ZjmG<)rJNxYwgwO}^qZ)wC4ur_1M)or!LZZ89%?c%vgI zu^dCrSxp_RDiw9H`0pVGYKope2&~H=>xDOz$SFM4vtbufW$HmE(&Kw6hc00r zep6(L*pJ&kqVB}}&xg)7P09w&-fbrf`0Jt9(u(ufx!l)bX(6tid1tn+Q_pE=#dCl= z*Uh^B!BmD!G^4Xwb0m%NeOw2hA~%c3>}|Dznj9ZMFv9I`0{*_w?7yi{57aiFFFK;~ z?Z1!|cMw*`%1R+>8+`|pnW1&QHBZP8lUn|ZMtc==d9C*!jb_MQQ56lt6`_p^(W+tS zfu(KCBSWb$P2ns9zi91Mt;$U<2faYsf_N)`jeYvMD1c%Z`A#qB0O2g@Uy=Q#eh_{! zc^S}k5hPu($GLySGt^yw4roWL1HJWz!GCi!=yMpqVfM!ef8`$tiQbk?^@7YGPXQd$ za4?#gF);(_STIQn3W=eOVsq-yZ zYUz7D4QC{KYZd$O`?wI_;rH3N_3to6IlwZpMG-q*b*>_`?_tl602CV)og@O^X5NSM za;7bC?wAs!6?D<^6rkt4Azshdl{~^Oq73iJyORNX!hItJFVolmq2KbNcEnX=sRSy zFnj3Q6zO?AlF)AyvB}__FbWg@OO&tfbk~+S>P&1nf@li==A^g%epMqwZ0I6L`HbJ) zwAp_Uu3J}#2LE*w_Aq&cGReTrEVT>2gqqe@6m&-BuWK979PvO&z+VygSW=!m2_y5#5g z1KF_TgID~?F$b@7L&Om;#w9~`;tga@T;(eAiijF1I9u9#j7?6TL0OJ0?AcSvIB+uzYN1xwBAMZ%0{Fv;>>OP}099+MSh9iEiR3;t3+su4i>Rg%1 zhsNPibrK=QFVPR)iH5}xTDRdaO!SNQhfP%|`pUX1tVz~vZA+H)429*#Y_fi9q1Zg@ zhz&b=L6Iya&o_|$EU`S3bFQ?3uHCR(I|^< zLc^Ejp0qmlbTcKrSVM1`gKw~7=XqZ|g{=9fMAPCRoNhH+vd{wkCSO_&%B20rm!Sne z+VB)wM3z4MIlSkJi1A~6qab{zCY$7uRiLfA;FWZ2{^01D)L?mb#$GYsww zPH`n{>F#F@z-p(m!YqraxboBt$)pSPo&r^iD^Mg7iX&Oji`u8 z7leu5P$pJ9u(yAu!EWa+N!%2{<6oR_eGG6pR7ej<>glN4LR409DX|CnA9JSVdI#}6 z2KO%ASni!{GKy^Qpsp0}9JqYR5TH&L+rTu_GFW`duhduTNPKM|cRdVWGjo^UGA$?` z%WOIz>=Gh=)6tKLYDv${oMx2`xkCsEKaDcZXA)RA*@Bd+I_ao#^oa5-oQfCN zip}UiXU9*dFbike&VrxGUdaCAQs6MAY32uQ&wO^xYkv_Z!PNZZ5E*%hA6b{3M4;rC zf-`4@7x^giAiLRA(D9FJSG;p~C>G;PYgE4}NbKRL=PGw|DCV{HT~foHtaDXRl4EKv z=qrp{Qp>VlXfE(BNQ85cy+8Ek;YfUk-TTXpXU~B%4-vp7BK7rqN8Sf&28u)hrOXI6 z@x;wvgNiS1ib$Y-;>1@m8e)&dSH;XvQ z@`G35LX)WL{K^Ma);&w#s>`mF1V1~rPkA4CwyO4cQmx0KJPx+*3Ik2C-6`xY( z&1`E~qb)odCY~ub}{iHYn|3;SCbFBKxVzp}Il;b-O zAH`m9xAXQY7?K6XL6@>Yk>pXhTkA`kM`(G9r&wsY ze&wcMXnD~YZTHNBXSC_T7ZF&MyI_|298Ngm%Wse!CPM@l?!nBCXSBPmy$Hj> z%rDP)cUzXE7w^5To0h#`PuiCpNe4yjhx+9kH*<~8&KBky?f!AY8}+r0R6WRQN3y=e zo{mIXnHoo_zO!maKa66g=0^%ta5-WU-a&>}T?TbrZf=@LZMqD4T5noipeoAzZtG4v z&{H2P6Ju_0puSO8>lPKvBTOVn_Y79;)(ktVc5{!qJ7G7xbY@macBf@fNVYc6)oJ#vO5 zHrq>MP^fWJikgN`@UmTwR=WxIxv(2@{1c<@Ij?q`4oAt9;7kxVJ!t*dHanb%*|rlj z`;0FBGBjrNHLJ96wzd@>3~?cd;$|mP#D@^mqf)M7ox-Tcwvu=Z*|QUr@uRlNC@xtA zZver|_D>K(>2c3^_4>8DUqrAhh4t zdB7{Ttd25_!w+EZQF@=YK&OLLawhV?jfVj-8)zj4uPh&55bR8nK|1@7pckVpQcUIv z!nv}oqLH=+f3r95U4HEJEp2<&*;18fVwO47dC+qYS;b=xGpEI14l|-i8MnMJp^m(U zoQR3|ueHoS4-Us{Xp|84{ZgGH(lo96@J*RJ;#qf7#iZ<7vW5<3sQgFPN= zAXw3zhZ;SVr^)uwj5kAC(pCtrbkf|+PP_lCs;RCf^47hmP45V!*EZiCkiBo9Bc`_y zl6Eo%`N9fTzR83I9$qoTcA4InMIFdo;Ae-A4rzq1ZK{*XoSqeL2P4mlUxc7YNEnLv z;UPBFeaPWw#iCfV@S;mc0ay_^WksgSk(KBC&D2boEka$N(nu&f?QKSkianZ2S!$EV zZAfxY(Tt#haJF8AQ?yFC>h+V^Nz3Lhft4$xKroLdEhf%y+TWf!s%Ca?KCAF}lqLVd zqEvsyViSqpTKytv?lnsiWr9^CnZBK|zT)QyvS<1{9;8gNH=?z|u8m(?F~cBF_k1@Z zP5gdC!*?C;kf?u5b=*!iSdrFQ32k=TiKd_!Z%irtW~%0`ov+Q4xd1}FHEvxfd*Osi zji5g0H-h)J?9#mdtk{0AAC+m%P*<_~8!A4rdR;2iOMR9od760BO?8D~CwLKgrmC;6 zP34zo!$n&7N4LuV)qZ=I&u;5arIu8$Mg`ZMajEF9E)#9}Y^K}l+S^y-vH62`XaPN# zFF7)zGa|)PdYt(08W}5cA^LTQsgeHomL!F&p03v}zIMj{{nfm!SL*l=Ho~|6gO-00 zRwtEZRq&Fo7W0Rmn3~X&Yr*bnx8qUB$@=zdDN|Qu>wgxmuid4hN1|Fko4F3Pu)}sd zo@!{*7kQ~>G6;9?L|x|vCl{Zm`Z7%TE^-Z3Lmxbw*Q)(#>iwu@V^ZE64-LVoHv0@b z;FMQq7Bpr{GRgLl&S1{PHp_{tL|INOfb)TYA&8YVv5j$0yw^x(9FG^p|f$MC+$> zZb$29al+{MUm8XWJIJ?02|M_<94t9cFXE1VcX~K9e+<}DJ8lvS&z9}n{_Q46-^@R; z?YU*7(0JC*tH^b2t36&R%3~PqT48sKbb?zH%?lv1^5p~($N4DEp`ZKeUOszho(JLU zCNq(N96xdjJVOw)pJ-aU__{?**tMFk{3=gP-N}e?Fi4AvaWMZ!euu*>gY!??lUZO| zR~~7!`i8SSH2TZw*6{g#BZY*T>Gq7BjB-x)5h{H{i8NQ~7By>^NH^LKqom@V>2T^|H|lF#CsZ>ALBUWXl>=9|^}egl1G$u0weG0TVlB3TULH>>Xs zvk2qr6^UNW0G=}2j-V2qnRX73`(THe^qHw(P+DjNU zeH2Gzy6$j@a=}vh@7i49ZPAllSqcwNfwuKR$C|{6S<`+%mquJi2TH0lZ}z_ z6`rcS-xl?5^r(&2(r89dIrI7Yu<)t1U7QzEO#c2S0*))X*cUB68Yk?y@_v~D{S5K& z>GpFVtv8BmFM4oT*$;n>>=p4&uk=WA+QUaG8FpR&y?<+L+)#VdzYX`inDLRSU|jN+ z+Ma$l#n~=DT&`UyW!`b`y+e<}!yj(LDzA$5HL+nv>5UG0f|sEWK0SlA+C;Fdn3EBX z1JaE~k_yo`qec>!LPZ8Xvz5LnT&r1Uu*_B}L>AL()@uWwyt)9gRL4rjigs7bqW<$E zUIp1()O}y7BrEOUNz8tilOuZG6vRsUfhywa{`#sb%|LiPGAQQsq~O+2!0_vykL8x< zwNUw-H=j6X$2((XZ%(m}hqz)A<&JOH*V0`6X&l+bCfay<>RJ~K8pZMqeyAwTu?3)$Yc6*CWu zKD`j-(q1i8q9W<&$dZ|C%MPn_-1)(s$7H!WHS*_?>qp~>pCt7Elx@rSc3FJm|> zA3-Mrz7KNyOjxhnY$Tymh3##&@nvnENYQGW9K%_g|3gD&z02K$*miF4s^fU?kq9ii z^xnUNzTIHs+E$!nVi3vi3a#%y86t4-KcCD_yGxDct*koKLsIlU$ap^aE3vP_HIF;D zwt#fF8&Aj^LD(Shx1e|u0!S;gUXh5)ZGDnbk?CCtPbPJOR+@PkLGiP_++Hq0wBONO z{@lb|a$}nxB&NLfDeR?^S%bG^&!3^SbP>-z+MoD;&Vq{8um0S|DWmf0l<0uYDDe{x z$GjV(GG5EieRJc2L0yvBu!--sg=cVa!LPLf-O*=j>7mo1Z3{fmuct!IZ`VWLjcV=# zKOaM%lM<5kGt2>Z!94(Q;3&lT*E<+?z?w(b9q1l=sn9a|K!X+mMgy)(*yj+RvW$_2 zqf1ZL_8|bqU~zzcpds|l8k?w@h>R3mlC%jtAhf^b24p?W5- zooEGQZonvP+n?3rpW;;{pGd7hbr>zc69AYsV9ms&DO|?s#Wvv*HZ4dQ)Chq|5adj5 zbObUo(*DNh!7#$~20TE!>YuamUP86OcFKX>TVJ7%Fz%kG+NC%>` z1~%d5CP=|%2lD}hA;M55iEX&EHzN@@a60f-LLrBLjNv-`9E$)PA1DZ&g<>$031HEJ z>46SH(MWVQ(7J?Zj^G&mF8*Ik3=lSy+k}K0R|n4*(+=>6nE^NkKY_d;>6iWmIqMtWm8UL|Nibq3wf} zATtt{P*4x57f^nc4FfNcQG z0@)b<#QX_n1AWOMKV=&u3r82jkOn0{QlW3x^iB9tC8uiwh@jN~xtOv@$Iv{%;h+`t z&w+#xW|LRk7%4dH=p8_RviEWs(#Vg|+s^6G(fE6@v&^R;oTE+V~8L@t&x8d=C|J9_J1PM1N1#1{>20+95bxn2c`8I(@axW4* z2qX)1%6UFUviso%Y!=uofwPUbgm(|3MTY|ez^RZ1+GA3zBHuucj|PF?p&w0Hswj1E z?LcaQ#*ioA*T5%0BjE4zK|(8xec(tST!Ju%>r{-Jk`mt+ScWzOP7f4?60dz7B=*E_ zA~Z*JM}}=2U-WP^ArJ$Q0c`e4d`;2hO%?Su{T$9Ax<4iypbfc$b_NFj25(Xm0W>gd zz)FFSKVP4knc#6_>)@0D`M`I9Oi=5!w@!qfI8DhE0$|C&GzrO^7h}Y`_&uLipeli? zP#)CTD*c>-Aeal#7+561xuyyn{dtZN3dV>0>*x%pz*w|MKp_bCmF3!%1luX@Db1-P zdLYvn;3sAmBsuVlgl&%K7;BW(2YnTy{)nUcyTh_Oz-KS8L^F23|(4m)}Eg+p8@+wXo41 zQeHaAmRib61K!%krec~Bd8X-; zQY$uoV)f|9;PI$;;*4$LAC)@8&-G)^>+J=;mWy^P*b9eJtbZpGqX<%s-tINQnP^~9 ze4&Sr=tsu?&aUr`s-4N=a6*e_IG?YmQT*l=CrXUirO!UVi2ljQ;eq9 zj2L#MZ@f4y^px{d*Aw1WVl7y|N=|p67G*X5F+Q4bUJyxKk%d)E(#%()rsuD%-6Jcm z(q-;4lq9|ov&C<$JchYB7;Ss1`0X)%{P|%D2g2tA+zKgU`zk(4G{rxjgfI+i2y@Ne zd9iDD9gkKa0ZXdScYfnl_AEE6Jqw#y)l;6}ZX0=+UEqn{`fT}4@*!dXb^lPVb+4sc za(u=k13dfD7`?oV)7poTBd|;{y5MMPvI@90<&#IWlO+Qmrl=51^=VU@6dhC=Ys}kT z`r}UO?FXLaWv(~wudmN8KZ(C|EdEKP3g?0t7YPp+$#K6Ji}!yo_tM(Fxal(SXG>O+ zHzWi7<#(m`S$gqf%{(#UHq;+&)1`?c*1CzLBNs`P4u*$N5SV7O=f;aAy#9HIyxJFmMv=koMXSH+wv3I_djex>zky zYEuJGcBSGHj0dj7Qb8DX#|4|w79Ou^{Z)mR=OnJ}O7hn<-ZFqZSL|=J%9ueJN(`An&(;kokq%&KYQ;=Wrp&7=c+4^1lZmRM#QZ#sjO)5KsK}iiDuIynjk!1jDK&mZgJU=F2g!$NOm%Fe9Q9T|~Yrh7lPC z%k!I6VOA%~wq{u@uFMS8l@r$5UoA$3E)Oe@CFdTs#&i5ds8}rt-uhrYJYbGwOL$06 z@Sk@^S z&<(yFZ>9crpl!Y1V`r`671k$ZSvxNJhv!@91&L@ioTrRwP}tGU&TPo;@;C%hRq*R{ z`bmrUWJXk{wq5N5f3*JtuWA>^?R^Q!m(-yT3X)FtNlWeGUXpdjyUq`M_F>u$-4x2c z;=7`jl8-*)2QNqSYs!iJ-UWyzh{b%VyGM?0`NS?~Y3Ge4T;_Gy{*CrnzkMMN| zyA*N~JQM0qMir=cea280w&$0#@6w}+9-k)s26xW-5NX7ijtf-^*(yFdN7uuKeywooGxg1Rg{uznyLy-s!t;hJUHFa1tcdzW zK6+zorjGoj&IlckrB~~pyJW8Kwpkx8KP4XVdTqlxvvjF!_8UrOf2B;{Rr*)oT3=q* zi&5<`qzX?i`3I^gSWeKP}D!d=HbFIu3+Ul z@9?MX%YnzVv|8#Xug_yEuBd%1V_JjFv4W=huUr;Ut_l$%KjR;>^xKEbSBFB=`QIkJ zU~fA!gRZBWKMh27>|>7jKc1_8TF!b>Y!=zgu9E)xguU;yF;E|!nN{(yoN=RBuAF++ z7X{Clo(%KZTc+gn4ET@V>&$KXz9>R-*>=Ts^;zRs-r{nj=n&rO?uD10y1$C_q{nI! z%N^IC<9<%IUQ3YUZcTQib+^iG>75bot~1x$-JJ=ppnm%BmdCyy9Nv$b1558J^m=_F zY}*q=i#<*+v-d08U7N&oPp)X{O8!g+CexVnc@>ODsZUZnF4fn{ofKyp+f#`g@J?3~ zkBHr{h@Kz#ot4i_Q?2r?Z=-x?m(6b-6##JhRbp@Gl{SyXQe3_vZd}+DnIC{>2;b zu8~zZ^L0VC!jx307*z`GBdf0C1I%?NJg&u2CIhFK=iFfDBriI$GPP~GiAAt-d~}9) zoEor><&SQK-G==)hj!RpiHDw2dG;gX6a9{o1e;UJuo)l*E4%u~rY}nC*UVuVL$e~N zLvI1SL21y8Cd}OUDVX^vS$veL!|g=e513 zL;(koY{-LK``@=t;3lvLuqLpD`rm2++=l%T=m>O%7D1U!giu;JK^ce-pug+Ar@F=y zOR&U3DytXmiYX8NxA=JRKV=Tz4g7EQW(h?=)lBGOasKJvoa643`cS_$V~K-4)Z$8z z@mV-P2-F@3gi@N281kbw@&Pjdaez43C(t-BL4w)|ze#CU0}0^&Iv0*wiji4;oYiOr zy^#<(#pcFI!BPZ&0V4Mn_6d(0n(Imnl22D--yf8otp(5XIC9DwW)5H7oY(3*GzfNh zKHPISP#WiH;Kp&rN9@bg|Y zX~*xdgMX^*OW@|voQ5G&^8Op`*0%T{dqVFWJ*>WOmAb9Uve(_E&bwCZAp{|LJ+7<4 z|JGI(G&#mEmj;hleaGK9Yj_23%&;<7Yr?5E&drYl(G5Y!c~qxBkd%%;Q6q`5u0@V zH8GpKeeU}(S|Z3H=zaUAvU+3 zFQnV1TRY(@!Y#Td$zQd<|JVFqsT)5Zv$kB}_auG+Tfagn{gpM63*58U8p66V-OD6O zs!_iLIt(Vc4dRk6tn#-JirP#e%C<(^(w&Q@O$Zkeeqk?ti_?a}I7{1{r9-{Nbonu3 zUYlm-2e*i%ca}Bxn{lh7oSk=1TgXj1$MJJyE&B;YeA@~qB9m)?M&HEfGO9vih0)f? zSEXc3@(`Eod?6suoRc4Cb-RQ^waK;XPxzax9+-S{dz|XLUcEppjMHm+k=ob;~1Ck0n1;S z<1TkKBEQmI4Z)Z)gH@I-OF4UdWl}~@G%W7UziJT#NN;(G!acaQI!8RILI*Jdg7i$@ zU#(dp1GFP7k@)U6XE4bTwQvM-IfzHK%eQ03Sxo%>iJxv*>wm~=vemKq(PnY$ZZDy% z54BnOEXeCDg3IKhOfC(Ys3N}SZx5qth=mevf@8gz?6%VTV`96pZ%Gf_FKM@0Lo`0? zZ*B8mPl?alY$8PKqwC|mjv5?foAYx#UVPN>%VTFny1oq>NfuM?f5%uAH8{D9vK)e@ zPo)NX`Nr>b6!DDk=08vRxZ3vZfDh^39X*;LHt+Ok)ZMIYO}m~_snETTQpf|0xeR9e znUKR>?mF}fd2uty1Mgh=fQ~Y>NshGH^dv)S3++4$TPf3eD;=#0qDv^#AB~t$(SCPN z-221YQ{T5PxE)u6e^+9*7mm5UCAIS>4|n6t3cD1H7Lq7k1t}U}Md?SsecbAVJ2{wE z97Wtkt=!@DWE)qyZneMv{XHo*^1wCzS@xDtz*V3l)`^&2q2a7`yK3|K$u8GzwBC07 zyg=@9<#xOm|8rwWl;{l2Y3S)vw@b*CPvnfIY9ZZAV#@$dUsj40EwbB&#}T| zMF)hyjO0QJ5wZNDJAJeAVXR1yN5->-KACRu+&}v0PDok(YUFt> zQJ3h|!1@%vz-Q#D?Sj>3r@w!SA885|vz!0UM2=G!r+u~RIkxD@idphR4U-BjW92_-t$){=xIlFAWhDE1xqp%N`Q?iknUh;&Hg9XxYtk!}UwL1y>Ur1K zMq@aj^_?Ab(q7?-B#ZU0dMaJ2Av zc8f?qb#5Tw>UbY%+&%iRy43jG0)U}d+{2<+^K9g-(9J=x58uE ztslX6c&P2Zu|8+vNQZL0RgQ!!T?fwDlYqh=B?&~^fUQw^~6!l+ZbQ(2_VdD zmAP8oAwlBs_T8E=x<*$p&o2dlQGJp<%ue<&R<$6`T z14c`?Q}9E)zkpj110Wl?85n}v%9A!Bbow}Qwm>)@!1*D@iRscccy)#dKQ68+&U%Tr zM|0i1ENHBnO#*i7@;sqyta{0lZip`6b%;$!n<4UDRrDe6HlN+Lh0-;fE`9va!@Swz$_3QlTH>hwFRfw))}0qPrpE z@cxmp!SQ_=B4hn`R^FT6_TF&c3T|)Z6VL^1vitYWa_TPp=PHX3w8=US-~JaYK_ix# za#BcDmdRnvc`V1rkf@U#x(VXgJ;8Tv!Q*B2kQ^zc`Cp|$w8ld*(mP&uOK(R18@+zv zzw~?)mrCEEqVH zy4R?Qqwsb2VTxFl84J=wk(HVP(v;dm?#fT1KRhDwXyey!Jn}hO$I_X$8eXA(P!>5S zG|XFC?(#>LxSYo-o;W}34jU%Q@Xm^97{%P$ZL zgVMg*)x=~ps{b!BtRX)6Y09@D|2^uu39puz;S-Is>T~-ZrnV?6Y}rViw))!EIq9kW zUcO%{Zh!bb&+&a>T5MPJ6IPnFB+ti zf#Y0Az1Y(*qa(U_5Xpt`VJuq&;!*f(jImTsSFC?U4j)p@5^Rlbqk z-SA^{w!u4qrndZ%b=`bwMjrPhJp3uFB*4;-K7=Cv*is>)e(?Mq*B&S@Qs z^;+xu9Zof*y)x53`fZ3*m0Qqac-=6K+gNUNZpx?lpIr*8M}uY+VQsn5x_znlRKr{H zg$AJ))#b|b^ICMK`n+|u=j(>F?CYRU%N0SprgV*CjM|U zo7L|=yYQ-|~alJnyDQ%>DGrivZrQ*M2-fHyx{Smk%`| zD>9RgEt`)i{*%3TW*EOY-jV(a(x_#=v;Q)G)abQ5^wyPVV&vyxUaECt3`(1^_(C#K z9($N4SG_1RNxtnzLRUgf5=-gqryp3lgvg$>+%AKrQs6a;I`>aX8)Lm?h5BmTUfu$Eo zEJAb(`%_$#=_DO8yjwR51DKTheSAHGHO5bz(7c0zPr1ZzUf{dHq_~G!HPCr_uOm0w zjYrwTdiB$Xx`H7_M(k@eN<2I?48RHS`}odcLv>5B9Zhg`OHid}Swj=IR%cyi)U-n> zt{8t~k)w0;^nfyKe`2u!v2#r2xz!ji!q2ZO$glnX^K`)%`;^wXiD_PHh?gJbH)6lQ05=s<%le#&>!tNBvrXork=QWSLyRI zHQN0t_tP~MuZy2q=liwGU^AcCq)J%+W%!o7?YBB#r9u%p|6IeZXIi3iMK6k~_z;l` z1#F{Ro|8ld$uprXQFyYEr*mTO=@_VHceg7F>ZKc_!U^3O0-cU7zwcj%2TSKG=Pl~f zVl&XkT5U9_^t9ti2nfP7LtKUz=M1(8TATY-Iftb#>)=vJdWNSh<7b~UBQmz!IBQ@Y zdo6L=o5TeQF3VQ&H4cBfW}}pAz1%PAAlLn3ivw)|*3@4~ofQUJ;-br*Q!Wpk8_f}3 zPc!*1%Od$Z9e93J(4dFUMu}XzGpYD5_eU7>vss{`16oz<(~Z-wzg6hk)mG?+caw5t zJ)in2WT9E7S|1aGo47?BRx487UrX!dzrJ}XcOKr|>ovnPDk$bq#2h1#vAq{AauADP zXK0j(m!XB9o2Rj}ivKs-=)1%zNAD~!35$0%{$O$RmhXn+~huYUl!|&C{Mhw;Ha(Wy|A!5%&@de#p)qy5}*7XmHwh$&xS_$yY_a& zwvJ1>4eGIrdQ~?+`$&ZY+tObghDqQ9)agwO>g@AB6V_AwD)KpiFJ>7UIauM>h;@T| zqe6{6srj;Dp3aQD%ljGo>OmoK3UkA(Y5|L7#iAOA+Q_m}uhT|;1+|$G4fAD`pT=YV zGD5f%!;-_xgTd#=Ts4I9+EK~w>uqK4kT0V(wpD0}FJXsCV%slG5nTWNO zQGL{oe{=V`^^GvbHiJxyIP=>*LgCbpeXEm{0s1;u{E>-XS9XziKmMsk3)cLP{y|Mn zLXQr=Hcxbt`&PRt6;wc-pdyGQRCP_jNhs|)y81R|XlnHSdg4Cc-*@pB2X3Rfcn9(5 zI*gy+SiA$gn95*0KRtQ^gWXURF{~c?K3wnYY!)>Jv~mXDAO(?E@5G7v?)#d{DTs~5 z-p)?spxs}8dF}7}gCTnZR&;&F`hQtOJVQ1-`{s;p;dmE@I70nkgA~PfD2@&4X}`_7ZqU#wTCerseUk^6FTh$O_=ERB!Sy z?p4Sv3gGt*EP-p|cB%x(HWU-pd-)dR189ogW7LoLHJj%d262RvhYR38zSNK5X1TZK zXAyBRRopeDBP~I>lvrY$d1D$f`6jn@IECnu;Hrrk<^5tX<+KYHj5+gIhxbt2xSW#1 z*&00RI7Pp1*+_t7>VEET?)gzB^gM)~YDUf%Fgt$(Xpo8t_z`CsWp1ux#{V|fO(phN zKM5{0isVqRG~auS;5(^ab{(pj@cH7`D*R9N`kS;&NfOayA`~j}%dFosxi7YeQZfr* z1tVP)cq`SwX-ccBqa_k;-pU=#tOFyi#og?0sp%Dr_T6-&{hmxEljQ4naS%@{)1lfI zMX9h*iK0`h= zGZh2Id=w$GA!lElS^U|~?`6+Pn!TpS+>-4ov=x=3U!*(bBl=Q^pUDYg;F($Q|8%84 z9-H!>f{RV@N+@JGXVmMG$0W{XO6{h{4d;S9JHxJ~b7jG^reDX#r%i8rg(@^$O%47J zVQ(4LM%P9Sx1~TS#jRLrky6|W6bmgBFH*F4DPF7)+}+(hxVw8=+=Dx$xNCrr0O8I3 zy!VfLecz9Ft(-mAoH=W}@`H2cD7<#n#4t(H0+N-cw% z7T%eq;;v7ibX&oyFPsC`$yzr=g#huqSiAJdcVxI?d8teczS`Z@JJCdi=_XsHW`Y-t zud}MaV`htNK!S?u?7C}>-ZZm?DBStsMQidEGI7o?j+T1A23mZ{L#@f-k6PUWdH#rh z6n*R3#{IUUE*ghl?{2g(edU*+f%lnL< z=if~mTGvM=wVEF;H8k2Wj5mzizCgVFU8L(e#bXk$U>y3`I8;!jU#a;6yKV}1bY?xZ z%y1ie+ZfH@WHJy(UAkevC0`rO02QK@v7NBrf~YTlP`%n4(ztr-bMKcK@1FIt=$FjDZ9a5YTa#- zJYQ#qwi9|^aG2h2Q4ik?%@ZSr<_nFIq`WW4VAfq{+rREVXtW4y4I#P@FP>iqJt-n`34J_* zVy|?KP3E9?7agT59P~>qo?=K z%QO_jg*=$~Li|Bt%O^W7<^jP{&<;BIwrNCJeYwhOu%GdK-KXmXzf%r^JoFA?K7s`K za9)Vhv7sA!w3}zs*u!0?^)71Ht1jyn1PV7Vj5^^HqJx!~k9&F6R4{BR7sE`0Ugi*2gmdI!CtqdvetwY#3 znc=#B^-UyuY4uHS#hqtgh#A=t+p7rjwL*sNc5PMg`H8jw_*_Z*8n9tgZw=TOv%gQD z9RPfKAV{jes^9YLEjJxPgkqbcfx7;~)%#+=#*c@yZe;KXB8Xy(g!3BPh>@!SicK<%71)-KQyMaXG0n>W+}05vr$cwy=dg&e}} zIfW!iWuE{r&>|M!!d~-d3sO6De#^hXy(w5{>h^k+zX_h@-F8wvi9_pM2ncZ*ANBZ} ze1CFvYajvlu)#pf!?3EJxcC*%oGxPocRVh6G4sR#iwdLCS83+K;}KdNgYg!_5PfRX z-5!3ghAt9o_)i8j9AO5ly_Xz-z#E$3Q0-t{zZNZl3>NSs4o2?uYSP?(g$o zBsVEY9}kQqzqXIS9F7UhJ+6z}S1%&5yB_Ueu=!s7w*O1>i$taM6YQy{Z`}-Z`G4P^ z{m7)s=@YkUED;n%^)rV8+-?Rr0_oNdo`S%?J&D>frt>45| zY>RzqQ<+_Q#A}?l zv7wlv<_0|muUhE8@>6KJxO*i!(}&n>SB1#vV=cc(v}w*#G)P&G%nX`-n^Eu7KqL7& z>w)Ka<+XHqd)4-b3~1|wsvW0+4`4QntrCCgjN`qf*ujqm{$E$=`RY#0(XK9rU+{WD zUy;$yhz~VvG4q>u*_P;X_2QmqNuBRt2a{h(oNQCh>i6c(FLusKW!zQ3HL>8%JH9KO zZut~Vo#W>)IqR+pxz}P82_P<9pi$QmrMTfvfch0Ijmx84cNVqv!dSp=j;H3s?${i~ z2fO5LZo8)0hltqtbV1$f(F_)t*>Fc1uU*mqE7be~GZS{lH-i6W($n?sVy^I!tYTkl zd|;fkWnBZkS7(b<;>mPHF_!_Iwg!h79;BU07sb~airZhI3-6vIlU4^upQVWtKfLWa z`l>(r-c%Cqm_EM(wwgafeO)cPiixS1(l?y<^xs_YoWZs*)V8`E^i*$^yMTTD8pp3P zJ-_v0oLv|7XV9*0XV)c@(@{W+Vskq{_2;!<*`V78xgr*FG3LOG2czw%rt$lr$yV?X zu71X??kMEG)}d(1nex4a+}gX+DILxDo36E=+GOy;eNqMqYLY}D(2Nar}9nrfwU|9nKc2iD@lr6tdiI3 zQw{?8nOdLWk~$OnkF5MwsyaeSzsAncvN0ZDC<8N@>NFozsxVI2xHJ@YI_Wh_uBdR= zSlp_mXFsE!DvaSXpnqiLGw$P={Re=^HnyeC&6)tjsz=9=mkjB{d(d`YhUYIE@9wpc z){pB))XQ)IMC=`0+N6uz_+amTYdKnQ`&Go}L$7@g_tbf@x}OiyE2|x@oyi@gU~A}> zQ@dU049~nJ?ZeV+E|Ncd>dk*3N#IYw=3(*dX7>j%LR533R6CFNp`sgiYJC-vv~r@i;^m2 zn?!YUj#e($(Zq$zdcO~t=3#``vY%QYKN;q>1$Dh=^scD+ta-?F*AzvYEE`E4XEIYd z80V9po=|H--%rd{2jFxowlA}neK{q95Zi~29R1*$0bGSx zDh||k9yr|25OmQ^MD688-_8uV4cNdIivbc1%2~%!cHyU`uOJyh5#kh8oU1;sR73A~ z3tjq^cuO`Iu*0sin`@Un0K+5kGZo_NpNu{FHUkz6&J`b@$IZILc5blSHhiH;z^$*i zZ{SSAO~74XIq6JrFuSGzn%SB-m8gW2&f(X|WcD2=gc>pwg*80#tWS1|UKxsJ^1hp_5w3yyQ9TPRsW+HkHE{|?^0&cKTllsZY3y{;86qu3ae zV%pyrJOYP4r>EeIl6Vrd7tEjoJH5RjZ_4hBt+ofQ_N7N6G$6}g8O4-|tNZN~Ygj)gyc7b4jK7|P;b&lh$1g>j zuB}h?W-cLEv?jdl1|;td@+YPz|E`lWZOdiKUC{%(`W5I8&@zF*N?;m zQ_XE<>-R*5ha(c@89gEC2U(R9Dr)KXn%LzK%{?6!OUKp4`HOLf%wf;vv)`HhA6%>R z6t~={CGY?e?K$?A&3XDA((72Avr(3D0l89T8lD+5CVdM6{)u1X?0lZ-n7it6NeoOH zvckj*$RsVwsVq-+CZVhekSgC`Ru1zL<8hUsR4zXK^zxcO+}Z;{NTmXBM=xW1D}Z-o zvQzV&hG}5e5gg+rmc;RGG=#QW=%nr<&xY0T(?U7+Jx}D`irw_R&Mq9cEzi$lIWTQ3 zs&SvK&bVi_$PTj1L!g{*3+8P)6waQrDhr8erDV+yF~qrkNh_PZBpNLWt0&t~q_|Gr z94)r#AhTiRUJGXud1)8KJPQ}5w+))OX2q(UxPIMm--)3PaoUCB<=j^sZ^|vN?sf4w zyw%T9I_;UY`bNEEWc^(oyoZu@;#bP}a!nc3uZDiVZuRj;?|?|2y}41R z1YwcXLX+?3X_c?3SVqfnwk`alcQTy@1(#V3mj}*;)bNC<0PMgrwKz6y^>`d35kdha zQcWTw5h8&hP2}^Q9`|ie*Ae-5KDGJ?n@M+Aq>AnPsH`{PQJQukS5D5=26&d)1J?vm zRj=2?Nl&{`xo9u1>D$PJ01h1ix6@gwJ_|+s#QjMH;z!!1fZL!kbKTvf z#g$4V1kHgGiS%_Srm!yE4x>Jrca)R1S09;)7;2w>x6G&jj{TF8P`gm#saE~WopFfr z8+TH6v9I!|U)6J=NE1%gpXK`YQ|ta&`%kgPax>8o{VVe>=h=m<(JJ@yXU?-Xe>WP+ z$H|7OkbHFQKSz~3+J9QkkJ8BxR|yv{XoTw*{uekGHPiyq^!bg7^Y!_u?KRx)4`qI8 zjd2v{HzqchCu2#MJ4eb#%D&B}QnmpuK?nB?ZgV`2i`(Y4Ah{m;Lt5}9quI{9h#Zgm z>TgcfBZvb7t&7P@)m&YntE?R1bcA1yhZrYWYvP{aXZTN*CvEelQgBsAuK$9=kl?i| zH!NyZYqYC&B**?Zu%AB;9%Tw#r2Mnddep-?YD!l(ZaOeLZVKWK->o}+O0lcw96a56 z^f1|K-Q_Hta&HPJ*S0K-exJPgvFwNi;@40~NFz&$>F|2>eKHNU>c5)mKnhDx5`|@o znn3~H`;-^e-TDmBylvv00yj)vW<|&GOww_$^nsRyr(!bMVl0^vL%<;MQiV4+3F)N% z;-%s2KB_q{eBupyL5a4c-78Xea+#xIYeoC7wwGFxPX4yxZ2lfh+SF`|)#YxUGQzek zG*p?A)6p$shfE*)ugAH4?|mze*Nl`ZDOY zHJxE#%~4>Wf6b9zW_Zm}R((oHXR0dGe=%cjTXr!+Gjt(?JYpeZC;XsA0yOhp`?`pS z{<>(Lvqlgv(a6qy9`m{gAKlT^a{Zm=CGU|U-sdAlCxh1>)AiOY9@9Plz?e0)$8?gl z$8`~K@%l*7XW|a$9gNqD_=W@VD;$`V594)BP?)fKS4OWrCWa({;1 zjUpiJz3jfM&ZTTd8ipdM zFO|GU8+K!LvMe`a<^NncrP~r!J><;;dAC0l6qyX$%QBgx!7F~KbXR0M_BkCnx6~*@ zW4YbDcF=Y_>$25_ybyo|^a4hJX)muI2Cb19WlJjXy3Ju|o*DiFqGhx6E=7w{D{0iM zd<4yTvst=%uBO^~oJG|ljm!Q~o$7C=9iSDZp}!Pchxx7?|8D5$rh+o7kmJqW8v-fLusoZbJ?|>Sb zZ&GeWO^-zU^8ZI@D7qD`_)UG(&UvDOQ-bmSkq*Y{XHPZIW6(clmwyaFzero2>S5YG zhWq(EuB0At!`Oazs{ZsJkI{=q{g3`}Z;7HkMp!qGZzvaV@1AECh^o!|E+?9^68r*& zL_H%sIV}6gfHozeuWZ9l+4n2jI7P*cn@Zq`clXzJnF9I26-UbtPR$Inz~Yp>7h89R zHy-EJXA#G}`YS2j{fHMBBzWjt09GqOZ1MYI?<>oAR2hYK6-PKiR40c_5 zp$+E2r3DJp+ixRpts%$(0HFXFd^w%-$E&{5kGpXOT;tDOPb+}ala zZMB>?fy!KStyP&%ARn^YM^KS!UIWLcDT&Ii(HkVFZm(`IFVBOO#&^%HZvEbew)auG zK_BW)jAop)&>EnVuUpl+f)`rLNq4iJlAe9DH^Z~r6Lvje)vo38l{c_zu?AZ#Fn;!p zZeaigYVK4;egqV)r^R*?4uQTZ@D9k1Xsdjl*4njCS>T<8jKEfZ!~84eqOM|(ill5D zovTf)v#OvFV&Q+f`58O8ns)^Lc0?;}`!Lv3dk`M<&d@5knssD8eY;%#Vin#{u}4Ev zVB0qpRO`s0-Nvoy&7An~VjDu71diP<@4etKL9o_daJ-zv(rvOYoK((x|5MZ^U#F)t zk;X1PhyTxyz0QrRm%Lh*9x~~K`yxM3hu;4aO2q5`phK{RGPwJGA{$$$JvX@E(?5%E zcHE~j-k-wTd*S$moo7cz0E7@UJuvaswF{EHZ$kEcBbOd{=B*n6>aiQ);1&m0j0QkI&2 zjfh|%Y4Pel|5Vy)TDyWf`C=3H7@zzFJ8yMd_$ngrc)U_GqyJfkbZ5rG`$CHqqTVa| z`xP(DTHaZfj#UJ$%+Yw?R`m`WDw6jiDS>aeEDZ8)`dlPW^oDO(6u~##aRhmnacL8K zz}`4LcT*1>9#<6^>j8bUy??^Nr#0}jw5Z;34mOI$J2$hMT{F%op0X}YqU4w`c79Vt z4S`HHVSI6Ois=r0qL^QyKwTYkjia=?=F(`8Y)bz>5++ObEINf|ESsC)YOA^eyp3OT zSW_o`gZ1Gt?SL^rjA?&LsP5Q6R&uYR)Cv{A7VbFEq7izV9J9=18S){skzv{-t(6#l zLs8zBvYJom@7Pt*S+8>K;z_B-Xd2Pe2XA@m*0sAy%;eU)z9EVmyUPryiuqsGy!I~w z64K{QpW?NAFIfl`sL#T#|0k_z+unDLeA+u(e2w&&F#v7HcXm+;AXUE;)ewHeV8`lu zTJ)scH|aO~cbu9>sdUC&*7f^>Lk;DmNxImCa4JhJj6VX=nlUl8Ur;pUUQY`KcAe3os)(ta2bp7Wvlj*qpo+rfBp&(O_{1J1&> zDOtN-?Z|(j!xyIhboGGq63Zbbm@u#Ny?PIF?##Lp&@ubB%76Ctj+Mr_fTVsBts$FM zaQ#Iipv-D`SZzP78ms<(m5pclVRkjT3GBku4-w8@LcyL}-d3la)njSZo!957ry#WX z8x&_*d9v(2e)s%bzxp}Q$&~ zvG%%sNStgKDR@bgzt5&AJ?$Zy&q606NlIP0ra-AUma>pJ5-YzUloG``+8VhqwxgHa z!o7RpR=AM~#Q7z>%j?wp>B^mRCK+ zR=>@NvnSG?Lh34_*&6U4e)opPxWt?jAN&P&b~}ujZzJpVnk}p92Ki?IT3*SAROJz4 zqXh+hFVF3lnpf*Y^({6>*bQwosWT9At$v;y>e28Oe~{1Lqm#6P@z6KU&paT=;VJm& z(VYr;u|%e2#p<2p>ae%0O=2Q1p!Gjm;RR4=lSKi3QUIHU4H^R?Qhmr(Dc&j zZO~!PREvwNTz-9q-^a4=)iu8bWLb{rCl-$Bf7|KTlqqBK^6?lo7Z>HCm*eB;duFrO zA5)&4mtNwy2;oc07og3kB)lfwLvb6vF=mQ0=Cc={M4Yg=))RU>XC=3+q90w%eiD_7 zDKYcs06<3E9u2K5H|`qR;dW0d_oynkCRbPA;Z78KVTv!A)}!)o*i*=7w5w%i-i@MB z>oD&w>fTtTNqD*52+G76*`b)zXd2_X(+fpl7C~&{CU@~AK_XAQPWEu8cDou6faT#8 z5dC+WUYtjmdqAtBOQF*;F@nTI07cOrFdR_)U*OyaQfhjg{NgzTnqY2PywI+Gjik|? zc2m{GX%d%?J$;ANY}%ZGIL2 zZq_1`5kIv%`v1A8aKLUnKybDUa4=)!BWHA<&8k~Ni7n=+}!`+7DJ8HFu-QUiz<^?sVi(H+0=n2xZRmUlf zlwR)mXuR2>$p9@uHBv!KN?{=AChI8V^m8o&VcBDiTn*bjgRzmky@o9t@9t^|jH0tK z8?AGJYPiR{^X!pg;7($3aFfyHo$Q9%fOyaAuwuGw(43Pvcv|W1?x2y0Wp0|3?^rc+ zC4@BPsn=}-Q2DoU)9L9dcUzNz)c1ZQS3mDxmh9rRQ59mmw({T6v!BdQ$riA{0Zxq= zVJ zy0e+{39PoS)^!-Rg=&sGF&m$hKaXSY`eQSbZMy;FBcX>bRp3rar9P0Wl9yyjr$SV+ z_`2_~XV>XR2Le}eGhy!R5@NbE2S!M(KsS!rZ2D2QW8JJlIfV#v`3$2gg-m&;=x4Cc zx_FV6{wp}^&(90=-rNgl%^uQsw-$)LIabetr6XbdLBM3u5C_^TJXHeIhQ0RIiu5hZ zZ06!O9o;F6%yB(1>#1g9Aw7fRo)KsYGFX}9RwB3;y4G{|CWB+BarmKreW|;#L7}xRPc2>um+&si>O1ur^)KAlMOpHu)WDFC$$B8(I{fkUzK39Q!Y1P`ji`Uzj(OYoy_P8l zFj3rkD{@^%Ns>vRJ631WHF<+OTO+dZ#j|L#{`yADXmc*urgo;2=<>#eYg6gBfqE>? zD041j(FmuPkezJ#*_0XAxsQ~P#PcJ}7;}-&o7#N~cLVi*zX@dHHBm$SjT64m2}PPe z)JK~a%=~j;!4<7ZMfc}>j&eqt`+OVVQ}tdS;A=9=B6_P|@69n+SEF5FDrZtrV|ITJ ztk!OJwj4vYi&>AkE62@Otd^7SraQst#}b;*{qD!F&eN|3PVYn;3g#*@*kHxOccr{O zWuqY0f5U^R^eY98#q=wy+CH!uE#+a08LjH9KyerqZYOrFv_>glo(8Fhy9eYjj0H5W zq2~lu6R#>@?E#R(z!v~V&m!|qacBb!dW;lE?NaE!0F(nATF&mKQ`7?lDUo^#dqC4` zBCqIuW4ggT^d zKLJK<^EQ;LR#cAF`|9weGnzK75KpJ-l*+bwJE@6I`HToP_<Zk8PW`Fo09xty;m~wUr;0juF(i zr6KE8!Au&Nf9ut&KY|J~vU|--`wVvK9S71N@ul}`Z=3-NHY(;Ks>RfkX`wQ4-^|^m z*35^-D3y&XNI*<~s1J(F^GXp02koDInxR%O{W6{h@DUm86_OBIn2wK}FleN)%WqOa zs#K_Xy(_1k4moLJ`$*?NBgpR`6D=DM)-h96fhFAE`t;srV9Fb)UA|~Lt0BO&2Wi@@ zp3|j#1MUgk{^lI6mONO!b^2*$C-n9>uvT0M@-``C9cd{tV9&jVnYBx&qr+7ek!j1E zxFDolc6zU{sgu)`5x+#Wwa93iC7MxC5q+o|Kl7H7_OOj{R$(wB6?pE2RU$w6sUSg-ujXf*KckSEgs9znU!w>NM&QDP$Np`VDS=@sBR?5?$^;X zZvc)qzsOBt$~Am*S;pwdD>2QOn@^Z7r+a5v#b6RV`Glb-oPdai|U(c|Hq>(-4^XV7yV zpe)iAJ~)%nQ+)iE_i`q^y@Nn^!zXII+KR-}%@KTw9l(|7ommVj{!w?4(h2NTJDEAZ zz5n**dkRNJfGwD>bE;&tvf37uy|&Yak8f+OMN ze@@w5J^7FuJGVS|hO{IKCgzRR0VDt$vzydGh==5G^uhuPLi8gWvT> zJG8Ln5dcFPL+zhBJ2m(>I16|*kCiYeeB1x21oPc9gZ8yxWCwd-V)r0r!OuG>Z|jUm z$@-YItlb*6*K0FBxz;C4E~={o?tp9scOI*(4<~Kx55W}WcOKOr5%X)GP>p0m;`Fx$ z&^&xD76d$-{(%%xJSZ-OV!5auys)d#K(&5Fz@@t`Vuo6{XifC?C5AslX!MIYYWG)i zXi^H+Oz>941Vma<92!&=n5=x1>Sy6qin9-oR5Mutj(phJZF}s%5SwBjtD5PTX~?U4 z;z>$hxa1a>Hs*&;zr6Bb5CW1XB$U3(57MVZza=y0(~tB@Ik|}o{iA{r^X?=ySLw^3 zcgLAuZTF0&u`5&b=7&cgt|0jcO*_6-UmbCQkR05FA8pl(50_YJ^&esmnu`zaf~5Hn)}%w`3|p}N zNp--cR-Sk4H+*w$gf3U+5R^I=jN^RKY}(R!$4{n;QmPwaNXrg1ISs_g;^!5zEYh3a1V#vM(@1*F!OHvPhre*t zjGpB2nhzxkX{ee-^h9Q~?Q%oyT02@PcRzY|sC-q6c9KW_V|4yCg1 zVkKz!i-)Uo7NaP5Q~J#*K>4|tOV@zaTY*H<;Ri=aA3B zMbJ}fJ5ly%HAmPn;P>R@!R^pwdd84k9MF4eJ}SH-Y@$xns-4_BtrA?;N2xJ+HwvFN z=srEsFY89_xEnXzCe)v_B4^7CY5crvdzHW+ER&Yk)orbo**`0@E~UTK3@Abbo)KIhsrkvC&vXjQ z+KX>#R_C@lMYm$g0mAs8wJ)rQ%*RPh7%U@n8=3TErjofo`FnhjJ(CWK{rhQ!`w!Qs z{ujfdfktcFR)fPJW2YLEY`4&-{_qi}D z`>*%GOfu!Cc_?tjm7t^rFJ5CKD{*c^d63wW6DurCDqlRgIdP1$V zdGxAk`uTHz{2il|CitCUZPMx^Le}efwyn#!1)Sw4==cGhlWPzhkPJA5%)m> zN2hACi$1HYw_^Iq_fYckBRbujBXDxe5trbF2P8i6-k5B$deB?ynyt<-?jFK%o93x! zmlP9AQ3Q5H3|_ypuIj&jcAe|~sr||269t;Mfh>fWzklRv4DV>`i

Ms)e8!Par$@Uf`CmA}u+wDw=IK=ThmLV_T+$jl6tzm(RT3c27))xBVi zYdw2bb0wZdBh=XNH_yPR#T^WZu5~}0qDl`$EbUZWOx7QP9)*{5!Pw84J8ag<|F5}K z25oK){MXznN(jW^du22?;1M{G$b9ee30hn0aQBDfv4gvz%Muq9^M`NDUaKU@W7VYO z2hb*GEh;DbAYq>7AfTjRyM4fQUrrkEa z@SRs{KuEBm@$*Sn;MTY?GdlC|!OI~Qxx*P95p%b|%M<7c7ZgLAW6+e2?eTG5grH3z zmX-Q_Uvc|eIl))^Cpyz<%C*iJ<>*H;($)AM#$~@$pUzH8|8IW8PM#&5p|=PaptR;j z>i&rB)@!jYsOv%7$sS7gR{}bJWb6f94(bxGbhp30A5ywSNiV@?Z>_yRm$z8W%HBGv zUOshGa6?xp$mUowVKQU|9(Ie8?~UV)OxMytn&h|Ppq@kDQ({w*InX>)byF-BTYi0M zO&)JyFPNx_SuX9Sjb4h|Up<>Wi%Vg5XbKVU*crzO7%yoXi=jA~J|4hT*pRW`2{=O8 z4zAE04k%aNzqEe~@!H_&&hIBq3>HzB0%GjFi`(daXS5$rXueNOkVB?yEi5xeHPx1S zywVVS-_`jis3A)dUhC!2W%Yci8D5&;<&jL)XQ`mfaoN?0Hap&42S;in+~pRh)W~#o zY775`wn5n5WGr>{S=;6J)+BFA4>t=v^%SG%!>za;!k_vBF*F-BYId@Ea83~Obe6lN zrnoQFMk8$a_UP`>&l)fH0R6S%`BuFSfHkN_*=_}EABC)aS6?fur2MWR(|eY+c!ca- zG4m$Qm%pHo0_T{Xqg$63Ka!>mN#7M`9038l$5(#}8qs{iuXNs#TMk`I1Zht!5g^AIa=UUH|)j2Wm_$?NhYsde-DWkQ7iXjB0&T!B)& z^*){#PX5h|;AuDv>a&ROjv&aSEd z-5D(>hIl&q9hVCmaLDO@Z_2}c*XH{#kS?0}Ja3)!P4O}Os-GkExb3&--jfxJ)+}pW z^aRAb?D?${98d~*rq zstbU~hdhdI6D89)j!&9b|JF5IQ;k=ZzH(E zk5DhYE=AQGrClCYzO8tzllWS2sSTOuhd3z)=5L17q zn{+vUj<&UwXxB9G*EBTx7t&7g{v3^YMpkh|7=1_Fu@sh6xg%d5rX|vC9vov^P&Oo^Z5x07lGg60z1UOblH4-VDIYrQ_6`^E@eYok(l-_` zO!BEdxmN`C*`{Cl?kArs14bwO1A~9h_{Lf96nmX?lUzGIH1u5?8-XN@N{bAGq^F4zzmB<|Ed%Q<*p zdYe}PM174D*~n{qACO7sJQrm_ON8q^Ri00;wke^(g8tjAeH&Ws8MEeI<*_?B8Px)F zLl57KEGyNc%+A6xhMs;gODXF!xwaoX>gyPtn-sWxJ#HxF`Qx=d!ud9D6-H6-oZqRl zY$^G<3yF367r(h*>dGp5&dW2|v$(}d!-+F%o??_BA1OdBCJQ}a-QT~W@A$v~C)b~T z?J()tH>lkUhR98W8KTjg%^LXwN-Di8;)8cU+#x&azVf}7p#9wwhIx%UkD|CkKWNf{ zbtx$s#};Ecd0fWlhr=ArPde8^IlH$fXQB-AtJ^a?Zr3&}K~0xLv$W$*l5U;H5=(Cw zhqtK?hGr&4syb8>=chRteH}^nGC!X(cwUnEA_HAgGDYwrUw3i-hJSw8w6@}|JU`YW z+&44FEzQWPJK3)={F^;)b<^a7POm0>QDZ;qWl?}$et5G((4LwdDku3x7&-j&GKmg; zC243Gy6`SAq-^ev&I9^*P5lbxb26qRY-^`LS@@pg^&hDvRSTB!v4lZYEXQy&4NLWuWto?YqV_OX!U(*LxmTFx` zW0}$=4X-Wc95E0ANr&BVh7rGu(eX8Jpv@VJ2UlR{6C=85Zc*qi4U9kVo}wE7!zmA{ z(Ry>lMsy0j#rnphD>x}%==k1t#$Z=fm=+sZeFK`tF-fzfQWjNMQtWksApCT;07 zcuJ{L$aW;uas^`hicu#jLPy3;31KhL=NtJ#OFa&W-J^8<>}9LuTq zBf71}5Ia|n=QdU^mT}QmX?3MTI-D!zG6%CJe+O?rhiKOA8uhi}-|AyY%!oDv%7i!9 zbBjz%pu6E4^j_*PpRRYAwuWitH6fa?I}&V00W=69s_XOGY|c7H|ooS)rs=TH&;Zm zV^N-1s&rYQ#YX4LeqqsgYB|g)6WMpp8xwf8?jj#hOW5{;!}f>f64b8m3X`KdnzhWZ zj*@gNAYE9h+zHo;Y22OUY5FJTU)qDLQs?5_xC*kCULQC4TJBQ?Rq6X!As$fpM6xV^l z!~EJTnZ6zxFbcqKT2-Jn$Zw)85(Y*`cb)CUbTCqgfd|qgT3`Q7wW{Oy0kKhRa7XsQ z^MnjV@L>};<(py06s)-2OSz(>TfLF&Dzjs01;zCgCJ{q% ztk$=rmXA|R=cZ;6>JC%EO-vr&&5V{q;x`t4g)m~!4xIz7@4oH`$NQk|A1OYnJ7pf< ztJ+5F#%@V_#g3YHDp@*j`0c#&J9btTX473HN~bxJ=Rj7G?kUt1SY;1QwTvV7b3K2^DeL}7YxIj0qMSv4Sjs2_7W!IF4*UTyeYEW5JZV}8B! z5Vj(X5wg2u3ckjxC1Z$t;3NphdT{R@k6AzviHQH$l{vceX?zuf`pxDi{x&D3#iyfR z_OlHRLC0a^@p3b5c>1@H=7m(pL?J%M@5|y(lUwlF?FTG3I{3O~5Gp}2SHRF;loldQ z%;QwKq{oGxH{@CecM!*Pd705RnpJ%F<>&pMlkmM>atsq$eErcDQamC+cqczGc!(I) zaevxfNPXn@DU+%}jrjd+?+bwyo23_fVimK98c~KDBj^KEltxx_W5 z3SYyo$T}n3N#efZN!Q;`P=Pl9Ieajo&Ld@b4R4IAY*W&_#1}rK_4XM@Ehz{SER`bs zO4E9qitkRfVv~wCk<=oZ=Q6kSyCByaoI8fhI*P|ry7IM}HL#xzs^dHI;Jr7DfA#YF zpNRK!#T`CMGVj1b*LV~Cv}^wZIL$e&lw@%>eU5J`Yk3mYbe;V*6(NqP1y+}*5uN4+}B0q5(I`_;>n+OB+UHp2uL{SLTSqB(h}`@=T}#5ugV`kB)L32`_5N7iVIsA{{5!$qF3P{&Qz_ak)H;f_ zW;O+-sH?03hHIVZ!3F726m#dS3cpLdQm{D18Whuq4B!$!43Eyna_jD-#u2UR_w#m(7=8a^z& z)Up^JCGxQ`>b6WQQQ!nAeadsvHt7>{{vOugw_ayIFJrwD8bw`e&mdsi+kZbVaFXG? z*x#vIXOEpd-=E|qDRNwAwMel^agZ`9|vkFRa|_6wAo;RsHQ!|30hrW_GxZ zD0hyH=-g=+3Vf8?5G9D&7&Radzk;9DMk!ZQ!>1aH%;rNz1l9_s1d=)Cbs0yTMB7Oo z3Vs5Xi_aEqlXuB$elXXy-+~pt2t1Xy=P~ zyPK`Au*vexq@&OBhw`{4`?w#}hWSeZ1{ts9mv1(u(Tigso6fHlt9~u^)5%zGhT727 zMlm$m_X>1bEPvZ6!@Fu>ZI099*IY0ARMvX%O}6!5S{gW;>aKSM3tM&%iYNy}{n7|5 zr`ID}FMFn?|6Xedm1;O;>hq;)E2eeF-@~`R`4`S6qt7Vz;}iLHzT|jOI@E|2<3o~7 zB4ksT^S2L6u;G`!Ld?Q(9z>z#%5LS#T!!Gr;?$dfU*hqjQM7y#Ls1~Xbn4Zs7M{&7 znw~8!=dfpj(k(pQQADw7y>@v|v?(oFGSY@r%kIJ;TMk8h zur($~xTGC%egBa%LOuD9j?7?$3KjsjNn06|$xzO>fTUp4Qr5c$hTuBxc^P^#_AJ&o z<|{9LZBSlJYk}m_Jie{2v}}`Ixvm(aWQ?1cjjB5+is-f|H*&WZ*}Q!DT{wE@foh6D zlQ{Qxo@v{D7_zO+F-j9uSxdNEU$k#3ac@uO88?k+FuV(P1;Y42U9uL z;TvnB#Zgfh1E-NI#~z1bbP={JYWj5!=V9QIBh^$|fhDr2z%rw-C8+&pBcmJ~(fJab zGbfkVAO+bkYCnR{M+<(o6(2Q-5wPqkWPmV&DpQ z3GQ;8$sUE_rTl3}b?W)RL>VYsQAHqF!Y7}MM!7$M_#{Ed^m=bh)cmaww*hA^#4P)7 z>R$1((q}oVw;Z`I1f#Jp73m3#bNLT}jg@j#K4psO!Bxi1VtDr#6__5L zJYw~SO#qMA0git|+;eDkaJR%(-^#)E*+2I_XX)n_lfmWJ!BpMydo|e|Y87?i0>E}? z4e}q8-cYm@S--6L+Hb(wrXbkKep-xiI$pCk0>h$nGYJkV2=LvVaACUi%e1_cE^!(o z_;z?_S38$SwR+ij_wHu?I*urt{I)_w)Q&H4zRRDnT8X#JaP%^-BXvKFyKVnb2F=H? zcP$k`D!>=#la z?ZfdVA0xfAtz*5pbjSnltrBn7TECoK?*VxlWXz9@#gJ`=G5AZ?!57G)K{4TL5uG(Y zo`w7~E^mchxBmmVKt{h~4!^5T6tS-^CAKYu&RFQXFX8zN*w13T)X%B3FE!GfrYcj` znS(bAKKk~)Or}qU3URVb3*vOvk3)g*pdTT|_Pbf?$Ayso8o3{}*pEi7ntq&P3eb<^ zdtGmo`N##zRxmH;l_VuvUO4jU~8W0`sV*G<_;m5~a`98%epaL#rpKTTCQd zuY=zo!*8xCmWZU>`X!Ca*8f$*#m9$1chzHp(Y9YNqXE2{F$^U%yUzem9h9MVZN) zGc$?%bT&%cTLyZ@5XOSt=1Xt)e;;FBt``HkG%l7CIor7eXeG*VHI%oE%0L`(@^LV- z1$a`?WP~1Z@-Sl7BVTkRX0!a;Wo->}x~SOf*i4YNEk84>pc6ekcPSB*rg4vcDbin4 z2ady2CT4oPUDi^H zr71%BmmKxm5NdZKRyt-e9pg+NKGPZ31A66K9@99}hs|_mjF{=NAK=kr*BrvI9bK~6 z{tVU%!y)c>UY`hU5D8D)(2N+(3A7!klLRty<*1n`3&kr(`n757dD=8Fi#@9|y_mKs ziN9kWCC}RD_gsTT=-ok ztpAEg+{g6qZCPwi;TH5@ofeCOW{IR&aLkhV5!2k6#q=tsK}|hqRxyt$n2%CJ9)|dV zsH-$XTPJHu_#v}$z-}qw2g7Fy)b51Z`7P)f?9|$A?eW!EKvL;f1}fDeNXpRG<#uk1 zU_eV%wx$XKb`8rHz`!Sktqv^nljwJ0h*P~w& zPcE0)Km00RXZx1v!?y4gbWa<6_M-dhaSU>qe--}!2-@Eq+s{G!xe@~HhdxRp(J4v% znhB^I+tyk^Ke0I+#<$^QT^kK0#Vg|~NIk}pFS6J?vo(P-;fV&%Y6E3Pb8ScmPNSqZ zDDtp7i}4_q?h*`J7!NWXwLgp5FHT|5ta9t1udI^1un{EWFvM$Uykl0JG`5)U2fuuS z{qkYX-+beRAzzVt@n`(v9ZI}h{@>Cwx~)gIq=Ian*@9jn=k6OLVKCT88-qB7w) z`{r~BbBoOM#+$Q7m+-*VCJ1%TSOc|@t#_Hs`jrz_W{uRs*tWb54I}R*C-kS(y_=$a!56*5$b5$uuaf??{~oG^vNIY&KF?P2%ds zf1~Gk-&B|e`ARQ6*Y#Z(UPTV;%Ga5RYw#&ud|ZsrxZKjke_XP*vT7BbRWeG%oim zk# zhQPRRzPkC_E=-T6k>#Kf@7jtde;gGt${hOpE=&iA0+up&E6>HynIhU}$Gb4T5CwPM zkgd2kkx1w#UlySdOhC!0u0gwjYVPGBnV;h{8#eppS*d|4XKJ>Z+I(P!N{pJH! zjX`HSrIqfry8-e<)A2C~xMr2Yy^-R|dvI%pfQf!{D=_4Ql)C-R61#% zG_@~bnu9v5lT!(DylVWpouJl0i`2hva; zmUorqp`6NtPFfXvQL3+VhMsiE_x8Q~Oz$XtzxDvmw_JIvw{iun@3qp*;uEP&T{67+ zwbHoksGr~d`c_WkpTAbh-#I}39~gwud!_4zfHV?z+jmr)s6K_j0@t5Ctw#@dIiMJ)0_{&Eo z+Goo$@wOxr{$+H|_LqsbC7JlkM<((hO$#a${{@-&mdeD!3enn@+>mw&?YYV1QIHX$ zVLoGxl#iF@!2PmW|Hea2ZtJnF9K9EujsG>-tba?mM=SR6dcF_g_=jK)6U%vZ)YxoU zCSQg6zoYd(RuQ9=KT#>)qLeT5&dpMPV%?d%9_-`^U_Hf=Db}C2qUCBkOO(Evk zQOMMqAjb&Ep`$rt$&|cbp#RKDdi?LMY$nqWf!>Jq(W#Fp{k0O>dxW-kalQUp;?rMz zz5aSUKz|vfI-io-Si&!<*rzc-fAN}!IA|qES=Ur8*~4*XV(B>!hSzo3zGo*^S6uk) zMD{lM?8MrDXD2S*=6iNxb9N}tPBfnr?CeC>ZS3p>tz9}h(c|iAF{xd}fM+L+c#lxM zmG(7_I5{D4#p}umidU5r6fd%T+mfePGq=@Sbzd??$fzIoP=FH` zcL!TZy`yf5kiLzrj?Sp_u9Uj#2p>n+HMxZ72j@OA?mzOH=EBRCtO|4nBm4CMU9L_a zK3G1Bapl*a&~?Z5(inHDcP8To_#02>mVjSeYeKb)JO+PwQsx;v0}Fp|_;B^sZ027n zA%F*%)h2P)FJyV}J49N^X{=>Z{!t^cz!K@ad$4`c>Dg{8dvZS07u6mDy>Lv&Or-{Xp^77(73 z>*D0Pj>|eCJ;zr^ys1J*^iy=i2P$+#ZcZq5M5~}WqHh2l(d)MPVbu|>B08c;@^F3* z+tX4)-fR>P&q)?fBFY4biPOlY9?mkq3yBk7^yQHAF zD-3|Ubqk&dEAEmaxNDN!JTXV+=66(b^CsZtfs~uCsmIMz6>eteYT?Jsj787K&9?w@ zPwrIs@{Ft-YI5YeE8l61Zs6`ob`AzkCi{VhhkAMVl&lYy`00apRp3L2=*`1a5e3bBOD~e~mSCP%*8L$@10mEbAnK({Y zXyoXundhW4U>v7S;o?(7joW_RHiIUc$1~6y5%uHnttc8@A;;#~yoO;9B&pha&Z`dU z?T7U?L-ZT!p+6%C`U7BJhuBY<6ZD)HJwfKSj^3u1bbwyb0fmn~sY4wQ=zLcwbU;c( z2Q(=iAm5>*@3xd&MmcsZps^*Ok>Wqd9Xbu{Wa3J83>jX9e0h4Oz%xW*uR0O;zj|?> z2=!!8pVrz&__WG|S9f6VWs|dYWkTXd_-qg1TU$A&W3{- zomo&P_Knz8)PhcER>HquG5VelDvIZ=1Fg^#FrJHAVJb+zMx#yR*cdJ#fOcJ>S)*r& zmvw|j=X0XU1i$sN&M4Vt1f79zQu^oxsXQZ;r)A|mf@nq!qW9GxMq+r{cEtORqTbz< zcN9@AV$`a7M^Qj6l0>X?g1)0j=QD!%TTgY0eeAa8MAmJxP8pSYwH0*=&UZS8L8n+F zI;Bb46$3z)ohZw3U{{d$L9Ya~D>%f1wV_=xW_Z>eJukgO_0?&2t%9AvcZ8zaGY??Z zhc?vHLs1g8-{~gZkC81Js2lkUd|qHD4mrEAj8t81Xm^gWEIV{QVh)z>j!AG?{zI>sIb9g`N(F-=m(d=4^< zWr=N>7iA;NZW1Le(-Wyr=oHddqana$>zb{&`^7W z-P@rDPBdsac5esXh3vhdC6*J3qkMSPwdA=?!vMZxwz(P}&GEcvv; zB^1}OlolU#h^AJEWMh1;x|@0WeitJvOYEvPCe}B=-l+ z%$4^8Y*V>EXnSk7bspUxbicGeNVcgxx$OQCWNIjl2ZU-ULOaV$Ej9zL)`{&4jar?2 z)0Rk_$@SR|X?~?3r{(^S+sAROmA5-k` zEvoJCbs@FGFFmgvJ__a_ivrl;CridI3#T1^X+%#nNj>qgq9=B$)Dt^FPdq~P#G}eS zLMCfFBpzmEso(E6M%wQO*mex7au)2WaOZurlgp6zM#wz>vmejzRl)PmC_KMS1<(Hx zQl7s&D9=9~faedctOzU5Umn44lf-YGg5SL=@w*%FyOiShse1U0>MrAVZ=>)#+Yi4b znoX7Nyvueq#P22Deet_b1%6*r@Vi3=e(l{uiQg-O;`hY>_#OAjyRD;WrTfUhjwB11j+Qx`N+bD)2igr1-T5#qVnY z@O$XMV`0UwJ%ZmRiQg#-eh;X`?>B(oS1Ep1``{PLx}!VW@5{71$LhbDRwi0Vs~u->`plId|0uY5y5Vg#P0J7b`Pq=?tZ}T z+Z4NN>S6cw?($i;gN?#&xrE)#$!;qNaMtZhKinQtf!j?AZogK6+dU!0ZB|g+eiQ(= zxBtCAE}Xc{ir}_M?jt$S-Fsg3&_$eAy)W4R5c z93Q?29N!OE8yf(}sXb&IAHHZDv$7lFxU(OQPpH80UIoYBs=#s2km5KyD3138!11|! zqZm#cXGd_{B<<+FJ!Cujgi1U5d$6N-P&;~eJv-W=VE07G=D_m$@Xb(mZ=dzypDRYr z`lTY9?*iBqmwDHR(==>^=8!^7pp{}Ka~v@n@&43J2W-aROX{}6z~NqM`la(MR$hMOdY-&8RCn@S8H1q>gd z7(QN)!#5}#{#&Csyrdq7f3~xsAA7$ac7Ioa-O~zo52?WJ(U4-dXHe{(3V_|}dosd` z-JTKbHc9OMtYG(dmDoKF*!_iK_qTd$$Y*=VYskO*^OJ!Sm|U>6_pD0n{sh?N zwj*}6+x@xsrk*nQp8Z$*FFy>j|ME^h{Qj*1zZM0*$5r6>!I0v&Pf+}t1K?M?Wpr5a z+b4qGCVBR7p@QGPFLJHOdvEFse)#%F1-@bxeEpyTU#mlkug*d76%zno1vkh18cuw5 zj^L|F;_IEB^4Z>h8g;f;UbETU(|^t8T*b&)b^m(JCVsoTW^>{q)@*k64CR_lzo0n0 zl&;Yxu0&!zE&}WA9JsnoY+r;Idx?mre36(|tXqv$C2Jat@H$!tXZI3*BX! zKsFNjj^Q#=y%FU(jk~LbBfqY~ZNGALs>Wsg=X1e(yXjF`AN-{7?YWD-r(D(zbv^yh z`|_2=vow{ByLYGccKN*TPpZ%RntO%vyl?*t-n)~uz2REz^1d(M70&a%{Uf+w zys$0ZUa_TrQDIBx_X?#gJuoPTw+moPx7NNIA5L3(Uxs}do1L6acwXEd2uw%i({mDvH61Y z;#Kq>tnSLZ__XSI@rjVmiwB)|Uc4&VZOsiZFW!9ihd07GFCG-ZcN4phmhtItAiHVO zJ@V0&>hF;snd}@A19R9Hcjj@@S)t!$9@Xag@@T9I9?esD^mi3J8j}}F9vvL~o$>*A z)LL>htUNk6g0m*M9@H#P=F!;7f4kn=!4F@83ViiZ@by0x_(~5czJ>(FS3v-LJ$>u% zVa3;w2)>%+nc8fS*(B*qEh3_Mqt4WNaoR6WUbhu0FXm3>;eObRSAoq!1)G1Uz~1hK8v}U*=gJ~X zjq|kdrn9Y9&i#L^_^teOPNE8(GeXfhf2r|Xg;eJ_gTJ>rfX;dLg}AWl9A`x5G)=#i zqH_{e>YO^zIYm_G46CPeHu>qC#IWd`-B3p#N#`W~OPw?7U+Wy(c3HRl&ri2BSD{;O zP;|>#6}pA=4yA7C8&tPkA3(QkoYOk2dpr9^bW4+*%Nu&jbA;v>HAiUC+ZR)LljQ#S^{)H|>AZx&8Wjfh~XN%D2a-ZEdeR>{|zWVdx9wWP5egOPG9g8e9=3Udq}Rk;Jei31lU8; zh1V|$=N^*lBG_$`+`U8L?zSqq+Xxakn{szey**;z^_KUDwfz_Svz-O)g6z*e>&LzA zRdDY;3ioPNaIY>ul-zqmQ0~1u0QbIUsR}Fi-VniWlk{gr<;#1j+gD!P*~A9^V`Wcu zO1>}NE>VHE`xU(DRN$>+Nbxo%DBkW1fVZA)9|$Yn#zgSeB=Kff@ODYa@Fv@@1^NE= zYX`7jZIb<}yP*C01hromDE6yfwf%Z+ekkqNvFEj4ab7(?fc^T|Yuld;r~NuMg2yI_ z$D#SM&Do(*cwFOy$LYz=-nL43{#}BMNyX-zRdC>c6b>|~;K1^ba$reN4tyj4 z2j)3m3@ZngL@?JR{XMtld;L8f|AoJ2ZocgA>3C6Vv5Wk$d8rC)KCWQXr~;eMgcO_O zf@1Tr0NDI+^4np>=C}wpne;fFfh~KvWXozVXv;35 zw(OINEo)M3%We;;Ej#|aw(KIXWuFLO%l272>tr}>+3^wVHc4Cd>wI>euY_FI82>4m z3HIydmAH^5?4o_;c@4bMtWWXK4gyO_D!H7RdaWp^`sE z(DW}+{`_yf^End>*m?@iR}o!}eV^`x+TwV@Gz?*y=+ zKPleuPB?Ao8zVSuk~sWI!C_XTZRjpRZ0PU&Z0H;nHuQSMhK^HVL!St#4SiEk-up0s z4L$l$=djw)H$`yPByH&56dO86r45}3n*Kd%L$9mngQ|nF>`GbceNaKplXIm~IC9Ik z-ZL;qWjwd)DVT~^fvJ8W#gr>3rZxw_)b;U0!ip(Z1XE2CQ-unqaxV%~*ZX0r zrwUAMS1{E~1*Rs26jM`zVrp9eOdYuNhOlC4N(56)((atnN47hAsffe{AwL7=g zvpetTBd>k-Y?R$uE!mfwq2!DJYo81I`1@^oRTj_6ll(TLmR-niV{VCln>~u(CQ-HD z=IK76^xKr3*KcEP>9+0;;I}z*=;68H^xKq0aNQ)|jrT$yX&r@>aJ?F=qo5p$LZL4B zI?4md&iuSew|#>5-5Sa|%3FQB_l);y#69Cs<`7n9!+XX*_2cH=D!6&S!p+T9aP#(% za&vi5Zr&Gwo4*@*dsw--Jc8jSw|5ui<7<%FOms;T>wFcs zKB(Zjg$i67`i2tM6N2LUy8yV}v^qPi`wb^VaNQ*5u`zw+d2Ieg?WIrY>u(SD2YYyc zWDjdDxQ=-nUB~=cv4@jX+ryXk4W&Ii{k-<@Z7>)3DS$m(^fCD*oc8ea2)AqFt_>JAIE zy^K8c5j=xV)Vu7laY_33 zHxuHrE_-4EiQ=>QOUTf^t*df$Y0y)1p5Os9BA{#f6C5$?vWl7$XWw>J<<@TBXF=W+ z-4n^u{cC!xOAnvL!)j*l(P%i^ku?47$K95KaC=Z4U=E-IZd?9MSarbd5gpJZb%4E}tOJIq z)B%^^DTE!U157*o`MXCynZJiLiob`~|I&E9CF(i&5m<_7*z~Ts9vMWwcu%m0<{6hV1LJ9Y-G{Ym=uRvm*lg z`nojI*H?L7U!Pa@-1g=>^jw3p3+WoY?DI8gxNMS~dauH%LsfEWN8r?W%BhJG zr&=UgTLfiwr*`$wKz6l}+SMj%SDU?dbsBL)tt-Gdc3byr1jx1OC?U=TXdyojBYWr| zpjBIR*Raa9<6U|GXspgM^1w!@nJW`=k~sRdf?W8teIxVlT0j0Bse*q~75=?M1^;de zDgRalA# z{T;$p7z7-Xcf4@=++N<_7q>U4z-^|2+e=m8woCs|;?@%sw;2I& zTh}Trthn_=aN8tt+e5+a4JvWl32=KQ#cg^$++L;N_J)w+cDx^M$Ed(njW6BM_70^oLG*NLsdiQ9W3xNVyE+9+H&{-X9^*Y@{c zvnj0{Ict)%W+VEo*|46QLxQi_aJ3vU(>0qyWzEL!w`S9@jQVRf^xm8PpcfmCq zCc|#)H9H#a)Baqa*g2eQHuEC5Y?}ArD12I~l25aMPY2Ms<<<4(mUaE*eGsLM;?qir zPxmA{@+Vcg?Y02>7+VhT<YTE&!#T>}t^;IS_@+i-H^}?i6G(^8^YQ|ZpTY!@frf1|wD`JA6VC|98m$`pN&twJ9d z2ZmA~JRDRXxC7{e+aT-5%Adk6a8 z5jV54c-AcGj<^;Vydy3?1@DNPvqQckuDj|x;ua1JW)55#2xBcpd??o_Q<Z9PpdV^?kI}IJ1zp-j={sLE+btbe*(Fl z;O>W!c&{qR^s$XT9nd5--SMyQXYYTNuPsrf!j^bku_f|U*b+mo3Z*UaXi#18 zSO8mM;GZR7J=61OL`O799WerA_EO33U3C$D@43k(+{a+MU%SiB)$@IylzrcmuJXP^ zrK%CWZ*SS&cc{qsNZkfycEd8efIZMoj4$El1D@@80~A^VB^1v(l;}beul2=sKL|@P z#;5dy@Dx*V8sa=|rvY#-K<<7kq}+!3xdCzZ{F8G{wjbp-JOypQei!v(doiIOG3xy> z-y<;Q^??wdM4m*1ft}EB{%@qZq#tM0rEtY*Zo9D4z@e>BKRo}WfwP@v`rwhI)32Vp zZjlykF?>I&(MKPgmUN)VVN3K>A3PsOALyAr(EIBHE$V|OgX)8;PU<9m(4T%oeP95z zecon@^=b$)2&fMXzPRO?W#z9A+G`*s)dw`s9z;F;w!MCCL_JNt2~khee2A#0wXa3g z)3CRu2m@J*R!6rmq{^TYikSo;)fffTOj zh`SN#G}jy%=bgq6yKm~@v-4$~2g3MeM@Hm6{ou_#$L>q%oAK!117xh959h-roKHrE zMV~MH&4NF?Gkq@n-G{y@3Gecp;dzkN7L-TlOLK-64+NVt#KW8+iF|$p@b<<5;E<<8|nxpUr5#+|fwi93hcwLf+<2*_DuJA%gC*lz9XpwuIxce?nq|U zc~j;{VXiu4VShAsB;z17TS{?V9mA%vwtm@z>tu9xBv%0sH>ddY^cwG36m!$kK=?fI z){;G2>{tEVb)e&y4&P{Xh}WY(q(>oUPcGNBy!OPCUDxG%a$5E+>V=qH-92e?Al%}d zbs+p*3x7rMHwOMD_~7;q+%pM(^Wg6h_zVYGh&#sc^ z?SMrR4|vu+c0Sua4y=MLbnfr${cNSnZhu11MfvdQi3WW7lEkMSRq^R-5}(3M8?gV3 z!l#4I%csxp^ySl*SBH{MSDcqmUz2zf=GxE-FQ58`KfTk-r@uV)z&~9aJ8}c@>6-!g zw7QWxV#Nh@glc_oLeU3D6n*erP<^mN(Fb2Cc;2jF_oIfGv#kk?GPJKH27D3w%tA4C zKJE*|b-m!PkA#_Fc*evBGgBm+R+bm*)%9iem46|#%N3a&+z6SyHl#B9;=h*JW%XqC zmhRUz3zy8k7?D}kGHa3KWhlrC+Hqo6CNU-a>dI`sC+^BYnVkwfuF>ezIM%`i1ih1m zW{r+{C}p3fMw`O1c^F5`rhX8gVqTSur>bAtY2>o`)=-`UrML`d^_)IU!^(S@o~kZ1 zb2|BCbqQfJtVP6jxOm=cm9{fp-@y!ME6yXu%wWkWtCl zs^&zNaV4IY<3Z*%K4;1~eAizG!FDWgd8?qj7k4%%wmmq`8uH-_y&f+)_{J-hMH@D^ zg&=(Q;MHNk$V(B7sK!VX^gLpu0_1K0z2^?(E{kdQ9iZ8>@t!$ENjcT*deF<7LNl)| zwD3AV?GE87CeVrymtuw)GQ_7?MkS+`-?Y=n(|1^r;uTU!#y};3rnes5`8KirP<+p> z%HnxD0U0tb-j#KJCR>eQ66TAG?tyTj3yh1^3>W(I=zKlu_I^CbI}fjRmKJU zhISg1wStFEKf3y zL8=rpv=>sQSfIU-IwcAeDt>@(|8G8-wFfUdw+hs_#{TeJ@Ea<0!ZyMGo z8o-;o=yJ@l8#xMbyrrG~`^;nSS0J7*!+p77!1UG#rd4BF_J{QWIlD~phn3F0us`h8 zUFZ)(&)PHR@rR8rx(TG&YcCFmdIm9j@e*8vF5#grYA+@&Q|v`;8pnEw+KW1{7xne* zMV$}s&|cJ|9zp!Qx(n^aR#4uvUVBk1BaYgOP#&lE-o(@86(g}79qqYk_Q-oCgC@Cg zw(WQCoa_#0?=ZGbPgl&1T2=F*fGg%n28qfh6;C$`9 zP>k5V?NF3Q9bahBafs6b9lpIxnICeoT*i#Lx@-fkxSK&@qckqICaTRS&=L;#$>2^Q zi;^AVCeL1tplb-1>~6S*kn8C4P&n5RPDXS}M5lyEr^vW| zUBUIEDsjEU57%-z??X8qlyVZGoa&pWb*@h2C%|dgHb8>J6q_w_GFbEo?7pac+h+DEkT>v<9ubGeMb?!S56U^Bg;N z>!CKh$?)|RQVzXu4pyU{*nTc9T`tX4u->1c-d=wGYpfal*C~zK!yvZ;{nyPP_Z#Q) zUo*?-$KqMbXBXePY_{z0!}hc&l;(j!yc)d&>(C&6jWg%q?+V(oKx zd+n%h_rEZ&s%)q+kR25YUk7VV#MhzD*TMKP8|0xSl~<58x(8Rc;QafDS0=}ST-(kO zDp4p?eW45;-4Q%*cPi~??;hW)6+B@1xI6HfV`|R-X{7wckYA6u;#MZR?Dy@)SQ#rN zepq=!1y&wcu=3t{YzNstQ(jnqJ@1W%{u#ZWe?-9nUVLrIlFk?TYmihNMR^_Gk-VQH}lwT=9^ixoB3uauS>p}L)#BLaL?Q~Tg#jt zF5k@G5k8Obd5HOZaiKhqdPC(r>dk=jsO5?tl*@VR*!k^(xBTpaSN(KdoeEu-wnx@= zTLbF4<-2|Dg116y7bFC=3sUzmyI{GGU2tk_$06H(B*lU3f{g*}f_odO7ZU!@+66D{ zuD3sVO#oYARS;WYxne6kh5Z8fQ&?Qf(O3>tgxj9=jljEvY^Wzrnd^;%It(};RS(GGR zdpEu<{M)^4p+pgS?a*EgG4naRQEJhT*dhqe`G$iM*wYd6EaaziJ7TDbljf;d?rI1} zU!XG|@>YB<*n!nIxSh z8RnvS{MQ9KIrYIhmfE&IO2SEN_~eL*+KAD3drsvS-IIRl(IJ^6)4s)L>p6(c(?w`w z&et4$7G8SpYatGKz->+cTA=-*q2n=m5F3wTzH>F3m-94yu9RLR#RA62;g3t{oe+xS zr-?ZQ#tJc!AZQ?S&O36Fe3B$?u*_`P!5gts9sMhQO_ zB>X2OTwg1P<9~lcIDU(f%EtdJgS}z047P$Wo<3Wg)H{T943MrsNf)b>=NR0ujshcO&a+bq+)!y)XeY#4o~wNp(J_dRr5nRNw>pl^H%ISBSnxwXq777qMw9eYS1F%rH|CRRYX z7Wf?5H=`yIpCdn`raH}4booAQs{G8@?)L_>adZmlP=1$v_*8O#d@-1fy#t;lR?-RB z?tKuB^653j@#Hn zq%y^^{ur{9o+qcJ2zmRMo|a4awzXV>$f1?yEdymufL{j04U~a= z*^{@1@pT4Yt#G69ttp?m(|T)VIdbF&j06$&h1g zMveGeMrte(g=`o_{9P^5e-m6oFW+}bK@58APDRmv zCMks(EkrYkG8dYSrZW3AwKI%SdRAh&^`?EO8*!E@m$%YMYq4fSEjgT-e=CSTHJsT4}NirO2&3bEEV< zM*R<9jd7%o;^Qw!XQaBYq^4Lq4y5a?eW(v*j2j(GiHTyoq{f*#4tm3}UyyX7jKdg* z5VPN)$z<$2rzKAwfxPGJ5x-rKGoO1qwD(5?cdU8T^jNzksz zO1rd@o#b$^K6KhkYn`y4qZh{my!&AHR)_lvy+fHJ7-{-wkX~%O7+HtSaj$5D| zE@;P;2JLuUX~!)-?HCR1a6vnc`n6*UZAYEdj$8cNv07=zi%L6mR09+8w$cuFO|hm7 z+EQNQwtlb=tr@xBH!A(^hJG)DelHK$@0*o+{;Skufe_?`Em9dJy6b8TV+>`68pFee zWi#|I?q}R5+gJysGNxEp?N6n<1-xbapp z$&-oQ10`rU2qnaxo{`x(t4r7HoUtY2#!r|iW8PHcZ#zUw`>10fyZ}CPOf5*7=2V*` z?G4YOwe;+P0V-8EX09o2@2@h+?8 zNH%Z+=GmG_jMbgX@_st-uG6CR^mewL;BmB@=yBye`E5>unTV${?c3|JqmUWXG;g$V z3%$P8Kz&}@Vnh+ME#j2<5=X8pVm541ex}D|KX9K9~KKDaKUYp7wg)J&#=Vq}*MPo8O=^CQV(P)UE#TGd;ZuDTE$7_i(t00;T zZ9B=6tuYY{bF`c6SyfQod2OCnYdenfMeLK;ikK`W!owGh&-9=?PSbyWShi0EigZHO z7BN3nj>Q6f1G2$Q-pphJJs(9+WqOe9XX>XOB~&icq18DsQgLSI^BEq88|p8E`h{wU zi6Y(L&o^vslyfHZ!cTI}9^`PH!#&wkP1daQ=rQH0G1UZRNH}L99;4Ge!Gqe$a#wZL z+L%O`Akh5ZdE5J25!*+fXjIo`sMW~YTeLFMv!-?w{M(q8WBwlGU|pJ?jqVKM7$dcx zjD&Ca%k$kz!7+BCr_B1}0o)@ra?C`Jb7h7n2P~Z8i6Au-OFhMJLY)xq7%P?UeY&qO zt&`m7LAe=2Y(L3z(!uG)ha7gfPnazC=}uYhzf$BrLDDr{Ag+ea`$S^o;z_2UC1RV{ z7$ayHYs_G4P7M5xvHf9;jwdP6gRPjZC??ZWv?bG{17(vQ6C-4^G)LsPL@Au+ZDacy z!<`m*hJEmiZ$O`XI@yz`XLVxw^ca0iZcKOLcpt|5ddFAr?~~Y9=ZHC``k<)g9_L0> zUkfGjxiQU&^Zf~)Jvt*dASTA>{0hFC%-n$3SaZfX+KOlQXtf;XupPznGLIz?=bBPh z@0alV2QzVgUP{}r<`UZn(7t)x3fo!kPTNVH)Q3MppWxiHC=Z^6r|(APb3jvyLM&Y! zmizjo(~Hw6kRg=6GfrlE6wOEN0X+B&lQZW+@AxhNP*=OtK@xHSgU&G%XsG9zm8k<@ zAY)0jd#%|CGGROB#lJXoDa>`C96);x=v$GG-G?&-3*`=xrXXa%P0&(unKrlk;nH^#%nDm|`+m>UPr z6bH{F;xoZ?vztaHEWq{`r;kiWYgK6AdN1Br;0d)Wm075OrLpcj#;>7A& zom67CxFo`UEosq03SVqCi-==dF3Ip1<52SBNT%VNIxOF|#W@Xn0LzO*%*K&wLi0t5 zE#%s0s4+b*%9tD1fq2$o*Z_?-&d3WS^%7B+HK92f5Xut4Z}U)vrs4xC{DN50ZQ)*5K8AhQzqoWciT=Q z_0WL5HH^In8nK+ClQ}_m(8~$w1mq3o@fhRvE++9?r}=miVHP~r;PoUbd;(g6X$X)P z0`ek-=z-0&q^KX*DS4J7eP?LL*iJE@1U;iXte%bmb=-s3k@CFjj`kG<&WjpI5s5eHjvkrot6~)DI4J|F%&N4{% z8{l~FfV{Y`vB=GyP3vJJ-W+k1KcEn zGD%NJNX$uqK2Lx?Z-#w7gI{qVfpkbfO%e|(Ml_4Y7BQVO>3^pZqyDVJGJMhQ)KBo> zr^7OteVRaPFMfm!(CRJm33hmn1kzc19f?oKq2Ie`hm*Yqtvx+KjOmsTP4F`(p%-ui zwhCGlm79{N_NAajSPK@zw>=gM zw?_~-+miT%D`=}TwPund0I#=7OyJ0psHgQ9l=0ao(MoYJ?dL%g>Vz{7S+0Qw&&r3=4Z9@0Y}DqfwjA z0yZ7m)E2-&jI4W3kPa5KRYjAirEWKr*y$)%Hva>DsLfLHoWdTW!JMvj{lm(^uG7_apvw#f6upW&eNwFxq z*rVr2R1C_lhD61Be=mkKQ88|-wieqLZy5`9TcGZVP`82XvG7ms(OJy4b@7(oQcOQN z<^vk@T8;_iwqBj@xANABa?78mPBAfa))iFOnn{!ed#2dJ^etcndP=s6b1W0<oPoblox0sHHrC z9FePULpdVNz*=u0Nyg}dto3tAl%ePa)a&=x&NW3Du;m5_3&bP~^t?vwpEaXB)gWeK z*6*BHM{4!@7SeCS&YAGrU=ZG%Q7^>kAF`0s8)7-Z77Hfo^xb;XC-sA-AqfsxQ(wtI=)*l($FUE0XA-$ zK0XC4t`(Lj;Rfi#q(Kj8HjCzY*TaO!;wBVYu;~%+ZA2dW@Wx=j%^ly> zY%y~?n^%z>!&PLzh69^J)M5JSOEE{T;YOOnSGFxavhA|oSK9$TlZ-WbABq3OEAdIj z=ZQB4nGD9(DF03}cGLQlrl2G5TSUjs=Cvf=xQ=AbHDcRR#I$%_6|t?_+5A@sua(1N z#f*3zG1`{zZ2kv?|0;(Y#QbJDj@TZ*(uQPDAGpO$nZtp<(qv;v|YqObH^t8<|i_Ia0Ag|1ZVznn~ ztpv3ldQqK=ELy`;)AU~)#+eXEkk5*5<|N;>-G8uDEy_#24p)AyoNw&+=ttDJgjq-Y z_obxk8mQ;vnm7EaIu}`*39p% zG@g3z^U-^MsLmly^f=-Jq@&(@BDE6ashI5#K-*mKxyL*T!uv{knaM#Oah7BI{H<>c zqwSh1x2rl0M{H4sh4-Wul>_z@*5;4GPjRh{rfxggvod}p{LAuAmhyt8%-CG#bZ2-_ zTS5!?;&P@fVP5lIjL+UPJGAWz$p_J#XN-V4yG;W|5Dt17fq4Y(uLTVk&==x?l;nt3 z@-u6s{af9N*?L0`uLB*~*@I&;!Rof>9~F4pU*3HueTwBhQstgF>O*4s`6>v180RvV ziY-NB(d(JigPg9_>T|TfLfRcbhH+XJF3|Aq+BCY-VARB!qc${xQKM#feMxXse z7_+zFb0&=03|F4^VEzP}t^i~RJ~Ikn?%x@hE(=(!3&>JepLCfhLrL20vGOiGQD5{n zYZus-hC+i*FDAN#I$XI1Eq&V&1J%c~=qJW1Eu9n1rD=hs1Rcz!JAmMIrTY|-r_S`e zkMr(fySJG6;^KK?6yrK4Xi3+0Ac@>5$omXsIA=QgbmIX%y-|9&V)%_=&J6goXLyRO zH+qVNQWzZ?D%|LCa1%W%dv{6IlcC%s$a}g@&WkG+xVmrqLEcC34AhTy3+~HccFEV% zympDpI`2qZf@{CBZ}F94whzXe{tF+!9rHNqk7NiaZL%%&Rx!I@Gshe#PwG?Eqg=Et4#EijaX9quCVf6^vkZS8VUc} z4x*(}y?%`qZIw8ayoP(USUxwVJtFTTl>L#v6ti<_Oeg3;CnS*ayc>@8o#D$p{`z69 z-gX@Q0&@Ar(Q^5^Bi?`K znpqTRiQWX)r5pt0e-(VjdDqHvNj`BtmEp-IcKYcw-RQ|Sbs|IOPlB+^h+{t3hh(uf z3PNsz5a@kUO_o3lfoYAX<-4Ol2TJ#R=(6`bI-kSZ*RI30Ib6M4vu+gp8$(2sZKq>C zSjq>bwALO}+KO?#>}_aM72vI!wo8w?&?v_}g==rENbw8oyYp%ESb$_FfMjb+J+!tl zN^N7XwzW6g?v$SerTQKcWpWAKj+zKtQ^kItG@9)N%P~L?YM}>pa=$tOlZ=ar5l6bz z2_vnAk%j@w)@sQb-gZjhjndf88O`>Yig75DiMVTp1Nq}8(z(S*%|y@rQwM1{p4lcG zS(85szM(&q7-?QQSc*4Hh@Y9^DPa|TpY+g%n z1p=SyI?!4;pLO(`=$Wt4V=2aL{X67INbMQBN294L(c3)(^m=X(m;&$r*Y>N}-d3Ba zKc->jf~AmU+avb1?P{*i%a4_6izdzWPu;~4CCyOVCUJsoV{?7g!bRTD>9#dEQ?(N3m5^8{k!*fEm;KU_cpZ%Rl6ajNELcc;Y{r1*N?MGy5ZnFn zctiC(h^^YRtnz-16l=w@pDMq$g-K4YhxE~;BbiM2P7DDdOQXr!E_0 z4*NP@e+9vQ#?e?gY$W_!v(Eps^GP&ySlpGzN@>qUb}d#$9k>z0ir7sZcz{r z@s|9br>d)`XEH&2-`_uchVHK8sc%(1_0&^UPgOm+ZZbRvkZ(`Orf!=x)#R;E?mj-o z;TE#_Q<)tJ?U@~3XC;&s&O{(zMTs{nFDs$Hz2jrhRulSr(DQm6|8+RzZ8GDC^FWg{ zLfBIRhBLPbj`rHp*)7BTd8E-1f?hqBJo{41>~kCr=LMj^XlK4SWt$+h2amAu_3%IT z=~tWsnBf`x4;!0Noy@|VXJPi3Z6!LD>5SSK#BdJBPy%gD6rkI8ciS?iom?~K0#HJ> z2_m|vmWybHaixaYawGSzFJV?Qg}`;pZYIx_l;O8=TzbCMPPyMbQ`wjw=cz=h=jZPe z(!%`Jir>YG?=|bKVg!%NSP85Efiqsp0OBJx(5imfww7el9G(8?lE?)@#8mou{e$I@I~xi`aN*gU)AoFchnG z9;V5P-^+^cHto2UgWui6T;l|d&L=kQVf~LE^t#iXJ;C*8%9!t=Cfj&Tzq+k4W!!c< zjaPnge@e|B@Ay@z@tWx9@9*Sf)EJ7G8l}5>hIbv*f$BFIscuf$>p){m=v$hBdZml! zoX>WlE1l2LKit`k+T$v;4+E{4jF+&VgE6NU zcr%-ELpJf{aNaxw+J=a6-XG*Ye(qLl44IG-{a`4$ad4(HX* zsWW8FLbNT9cxWoapB>yGg>O1dVY4j-lS&Ty9?Fo42>r4!5#yJGti~0|m|or1Ks;i; zcQq-0{?|n7=>i=NWzn zUvIO8MS9!4-ZToG(0pW@*D27F^Y$h9&hrXop+GACC8XkcFQi94hLm5nQhr$_`QFiK z)P#ux$f$Nr3GV6Q6-YsLd;j+K#|F1$XL|~A+WWx!s>cs)l)TwHy^^-|^&=^mC2vQ} z;F>WfQpcQ#sJZ2-T+WLPT+a9HFuwC}KWJrK*6{ItH}JcQ&J6N;e)hP8>f_n*u zZ@j1_ETWyaCK!!VTP6gObLu0-Y+^J{YcXa_Z82to-LhVJ(|f3dh>;H`gZp$}KkL$bk zaXUY(&G#DkenpHoWk0cWR2KKc26nG$^7d4paAtGz##F;UjdCr!OO>x9*>6qFv-TA2 zXkh1t)ajk(Q-`wC<$WPs|J^61&7&PKu_Wiwx)aPj&am`7>0BC8lSyz-p3Jcb(@zbH zBMl3;)5$uu_@G;cj7;%;)0wT#&&AKO;^)w@3dS8Uo$+9$yR&&Gqh%`2m(#hYUoElE zJt^c#5$SnKQO&xKc2Hc zwIBa-dggxojg)?TI`rc+Qu=YBk@w?`DgC&+k@w@%TT=F8HnMaue3;OFT%7{%hB^cK zh>P~K7%}xFKpFfp*^hODcmrrZ*4Sx3hVkCri*p@#f}RnX0e#qX?ANHQQcF!Kp0)!c zIezZlXt((<*w1bLy=Fc3Z?xtlT}Y{}1+d5&`{|bHRQo8AJ@N=y1(^w0TBp*xo#BOmO&adQ>{ISTIIwA1+KmbGM#_bJ2+?n&aVO2J*&0r$E8KjQxI ze}S9p4l^6M?l2v62W7u~AHcju`#yl~`}sZqzAo3)$j&QHU4b(;PEXNga95PE5wKjB z!Us;Ytw-xx$_Gbs$raBU*H5RK4&5JCO819t#QbgFd&h4*BzQQ-EXx}q-3D_{81{U0 z9)r^EF16h~KfuCwm_) z&60yhy=FN-(a6qjwD!1l$P4ZB?}n7_nQry_Sf_ zO%XN6^VDD)3-J?%KyH8#1;p<5WHo+a8tCF6Sxy>r3F;A&X=AXhk?nIRBxvnZwqFzs z9mBWnWfp8)ul%Hu*>0h);hzDL(YsG2EbPv`TyJE3!=6Sq--Pu15|urnU3+zj&66^E zhfYFocN)E88R+dX>AB2&{0L#rrn)A}M}J8Za3=VQKrB?cA1!*qVi_@-rng*CfHpqW z4iCu}Lu8olgl8oguKQuMg71S#sqTY!;55-u#^S$`#vq8ZG74Y5@_3_tSCfxRULJ#_-VApiMvB+BZB z+pl>{+qp`JKLp$64Oa|98s|8SwHWKOy*JPiD~#OWd%`f&?n08CBc*Nx-MIW|8G|kF zhANM!9V;sZjay>&2)L(rlRvn#f6BhxEc2`xEZdoo_V}ME+mR_LX zGQZD)Z+m$^{Y%RGX;$8!TjkC9`l=b6ujLfJK4{}>Y75p$xI<~-es6_yrG)!pFQL}1 zJlvl;33oUx+&xw}F(urQv~(ZrB-~LmoMOt*M`o~n2pFcuL3bc^uqrh|)2Z!aWLBy! z^xO<)?~v3`Qet&%q584Cp|o-5>oYoU&tIjr=l5oGY|qEd_RMXcwnLcVHl8b%Oud63 zhxsKB*&?(7_dH9={5hs&9uE~$zuwEvW7#4cfiP_Z_fiy!k{KrW#TMaPa6ba>2iglo znY-^w+8rL7!N&N^?l6CUs@-8%Vl+-qnJ2-y1@0CL4cVWxKSWowtrO7((XtVA&b*DD zPsVHn^Y^FP2pTpULE{dVZ?qFM?q{;xMY3GnUhwCw1&zB{Eb0HT#ULWXoHZzX+|O+4 ziXm^m`hT$BrfyuPdg(Z(lYl^c zE5&{7#`S>xhUqQb_M{Z_3OfF$=NfEnx6h0u&#kJT$>)Jk$8YE`4>WD&&&>nPIE8s2 zmj78Z&9l4Icx3JYzhpm4DmIgyClgm^9uUZsg0EX9Yu~iwSmUIX$+)5U2a@9>q}yu7 zjj5AA0p27?U93vRz0MZ*lC-#gu;T97Wsl3x7Qc5Uw-^7WB@yy}+864$uIlTSu;3u} zkqVbL|C-6{3|N?<#7A-!JTa4V>_YY819HkKc8jFcQ|tt4d-;uJd+8H-soH0*^8_Cm z48Vi$CC6{?&SbWitPGR3uu=8f7W=s)AI@Ylo`tIf$&?GT`V-{fP_Lo?a_ zbc`#Kuq2a8nM-?dT2k601$6s(%YSviLwL!T+nRGrN%9iJ5FqohBMJ-vS4Y z+>N&kh9!yQnl7Wj#Va(a>TZGhx`P41#{Hw4m~^Hzvpe#6oLt1QOQvM4Xr$w<)! zA)91-$R>TnZanj_Qpf_o)h}?rZK5ay+wlA|l=8u^ebNXkp4r}|JV~N?A>`&+%uX&q zHb5V=;sBms^L~(*aeSOMYlco`rY&EPkHN z%mdsC3El6R#m~DKgJ%p8Hpjt!4}o7EO?xAxy^5y&lbQBUR@y(dAHZGx{HE!f!4ST9f?X znVq?w)Y-hACUxM4ZnHT*+z7OZIo)quL8RHv(h)-eKEE669p|18X%6S3FZDgaux_F zV^$8-$_<~E%gBwO>vqXyrwtv^9Kj#hI1TAMaWPv1F~-^AL-`s8i{C7HsP(&6kSm+< zWsJ}JoFfpwvV$JO`xl)gdlwk>l;*bLdH2vV;LRT>_ZN_n0%$NI=Oz~BEYMWg7ftcA zWM8Cnz7q3n>!5jan5;~%Q!>roAFHi)J-XK%)?XQ_+KPIpPGwkfOkmlc+QWfPsY|Kh z_*g46ho60IF9*@=QP~J9*`{#prM8;=s4Yb1F&NiP%ja}9M#xLa+Zl6CHb%g(_Ax?U zt9^_xZqEN^jF8tF(|6D@!VYtcz-^tT&oR&5EzN61on1`o>|$6{JB$Y+)cr`irsdL^ z6Ta5E>X*=gdWtww>F~0-eGb?Cfliw4fBzh=+vl}r()}N@`DfDoADhEHIV~&Eo%@oZd3`m&oaSOHSu^DyQ>*v7G*TZc;AU>vXn} zEZu~djf5R;Kz+-nX!%|# zNJP_-o=kUF7FfC|(i<=@bAMyU679p|Fbw7MxNIl@S-E;oh)Ve7dx)ivvpKEEyyQIF zF>{_xG4=6Z&0{>k^3hSZ?rCcqlZO?yPO0cZG4QcZJ;d)}-ao-dHWStrw&KXmw&q>P_1U>jIjCOv6y8WK(jEm;+IWh=I=g4kw{cq;T3R{1Ej_f5Tn#z`k$3cr_JYbsau*{V)1`YF3p<% zOXN~FOD=WmR4#QpWx2%5e%<_}?k<0pI$qc?|Cf$SdfMvPmr}=f+0t>QrSs_g%zQQU zl=!OiG~cnM>G~{nT=LQU&iHD`w2pk$6ZooU2EOv8@YUh@>3r2Qjjw#IiO`jw);Lbi zSA!RDzUrCAS1kT;`Q&^xd%-W^tDY8L_3V_ddj8`6ZvBF!ygoJF>6OyY+^`@s@0}V? z^lIgLIM(%j3s}9JT3z>oy6$DwHLqXFrwdqLs>wKerqH<#31=%BdYSd~Lp#=!S^tiN zzW&p4V%Bv*@E|R@FK|DcX(zIPo$aE@VFkt|j>mh)Lsg$Fb|G~~r__;ZI7#&grTQhG zJ1e||&6@^Di$AV*J&bc_1?vJN$FB)-z2_mEIqR}6$C_&@x`dw#RIm<0MD93*vrWml zr~zsIcbfiu+)#Fjc^15S*CD|g6R`YMUc%<&7KZLQq|&uJhOx@RmsF* z!ML{*jE5|Ye!zGsEyvz~F+ee1PB9kQFn(=e=$#QGiKY6dWAwy2$Ee0KW9$~=82bXo zYbZt?F!rMuucH|KHjI7?gPsxNpfvwC60g|QSczDY3#0b?1(_&&urz=rWo3qvpk1NVP0&Hs)xjE|oL<5Qhr{I`X% z0x<5P7zYBz;S}Si6yqQp#y2bs12dN62WkH4<+$@C825LA@vwz)1YrD{Vmu8no=!3T zNHGq!Vf@y@a9T!;;=)w_bd27GonzD%X2#fKA;&lhFnYc~j6(q9Xo@lC3&c3ohOv)@ zVMs=dgVX%eF%CZo#*v+1Jk!EhjWV2K3<1U(iczN+OKcd&S{OnZFzTjEMPP!#tOiA0mV3(VjOP6_?CsC zA|u8R)BMvh?mh{|1D#+zYGJGcjLRv;5rAneit!Ac}qcUQgoaUd7app-d&g%qYlZA06V0@8ctOks;D8|<)#u^*O z6&8l-j2K(f{L?XRI0?p^I>C6Gg>epG{E%WC0~qI0jN2*3Gi?~}wJ?myh;dVze>%p^ zC&Bn^8b)p>@k%`Pjx9dkek0EJb1nD#gg@!|AtK^!5bMDG!9sJnWb3Jn(c{nuil3C<_2ZOg%B4p4CIYHS4=vJ=Px6zqk3t^!D)*wWB}puqJPVj0HdAZRM;*ysg~f zj)i`G*e(kvEy~PWvpH6ET!*?_yolG`D^Pb2rqo@_qRhN-gGFyb2YPo}^j-yen=C%Y zGJAMY^3Ld|4kz!7#&}OyX>B^pL4Q4h>r)T<5<30>G?I@OXJXC#D6ml$kdx30U#CXmpyxoAc zJhn|E{B-i{qPX6#EqV8$lkTzlV5G}@M;c#1e7tMdzDHtwLvn2_Am$gv)P|!DdN((w z5f6=OE0vRLZRgI(w35b7NB4^X=FnL@0R7fo88Rz zN-Wg>81X|bZt^f|i$1QHe&%SM*!$$J&8*J`nVHS*mfo-A*v{JWbN|qH*?uYM&-XZ& zHS>F%_bIt_{gUlhKcktQRT5Kw^56+$53fzA+jmIxwEd5FxQWNDNrNS~G*ZeVU8Ln> z*2u5k_)1MeJ%VARk3>m|*B@0WqrfDq$g)K4a=ZRWQ#iW8eE!#v>s|n^0_APwHmrFwAow}ptPJQpR{h2RzJGR{o(|uLuo~GMU972 zV_(B+(3YRlJD`1u^!WLw+Tz>DA`@dSVss$g9H`&&n`TqG7g3Ds0hd=S62FA^zFG99 zWro``?2ZW>x2NKc^GR4amuOJu#SqFPZ}-ST*aNv$SJDu*gT7TZZLS@39RA;Q7x;={ zj{>QGI1qgwzAK@=P2bQprcOg7;5t&$2~Y1j7xAnavF5jH&Up2;CVkeVCx|EOmCeX` zcpF7ReGc>CF+*oOLIMy zo|3(O0@@@L37G5REYx|oyGdTYCy$gpFoGfiK6S6S8S_uyevhS>4R71r?)I{qSRU|u z)9b}vfxc=*Qi{&@;B|;O(92$PbEt)403glexftKcpPd@B< z?KbFB>ytG0wsRUAor=4BhD?Mx!H zc_XQLlQeO=A_-xo2So>*Bah7PLBP!$Rtm|AmrZ_hJ$w%43QEoW@Xf>4D@3SG=%cd+ zLD>q8!5<*J7*@V*?<_pvtPOq&Ay05!WAYMqE`pY4lzyh*tpY~LXV7wYdaCHILZfsK zxc=0R&zSlV?ummou-_dfcw2S0L8x7tn`mDq^k)a^^lM)`w42>Yd$HyvOb!-_$DtQL z>hW7P;7pFLSi;9PC$a^btr_}Vv4r)R3AF}!nyjGvMH$`Sq|p7=qRZo6w}kh_4OwEE z4ci}5;(p%&)1NI&LQWDB^Sf^e-;ed92kF-O_bHpyTuWzvXo=akgnDG54q~mBn0cXT zhT1*o=QVA;p9jAcSPzQkSQv5S+`Jj@2_KUM?Me>IXOrztSq?jgf}DdlG3*41t5&10 zbH$7>=}Y314ts7MkxucoAu;_O3H_|B z$snPGal!Xuk;1H-M+CP+8ba9lQF|EhQp%G}zsbS3YJv6$=j-kG#MU~G$|x#>088Dv zPZd0Uz?3S^O*1gHFbO_lN+IW(*|qBrD6cF*so|s{f`^mm$@N}p){6vX6cMugHLUDW zQ$_dwOOrA5XOS~UtZmrn(sq`qDoNQe14!Y8mS)VJxpH$+a?M+-}=J!sT4wm>M!oP(r z!am`fW|upQops0fD0dlKZ`a2k2A!olQN|UK!%*U%c~J5$j3_y!1+~IXrQW|^sTJDb zc|fTXb|_Q)pF+CS-_VYtZ}2;=GY(y5Yrm1KEYuslX4?)gV`ro+47qY1$ih=Oe)PDh zT*qE1i|Pu)XzwIzgkE6{sLrrw}z8h(bNlM#4Vlzdo->jyjrsjuFtnEioLwgfbs zu2at5p{%(W+Y(CmHCMj6zW(esB~R9r;4!LWyrCGu?~*#`t;=lfDU_YX&wO=LZJdz1 z!G93$K^I(NSU|hP2x>`CW~lvs?#1yZriNp_hyAEcg0EQN*PxDYzp_z+I-)|KOh?m% zXvrRhYGX&(-V7|WHf?@SZw^n(i8=%FMn zm8bYWhx$3F1W11vWo&C3N22;3CCAd~52n;l9<3kI)EAF0W4d-!_)N($_l#hi_GRoW z4Qy+eM-4QlQDoSiXON1&k02;9AIS2!mDQ!!4}r2d8?idVjsbw^gvaT|(|@~XRe-#? zP7vMKIowkHtbGdFoFv0Kpw{2>DpcM&O?f+xln;PD^LRYs%W~G|3c?M+kF_qr?=%O- z$MHHZw~H=KFE`-^ftFhrtK6(Jn=du{EIm8NpXL|0{BkTmK9*g2DIZ_v<`B~!56kMZ zOHI3;keXBDXcT&aZaz&i1TSe2dMUu!p$BAD#F6=kER=`;l382l{p5{ie3aB8)pv5B zHT=bkBPv}u0zBphS$>4dK|-|+&>K!5Z!-O9)1`bIw0?pM#)3r>i;tsHJs;vr#Y9nU z6hv%SE$E~xx zm$Uh3T?figg0u}-de1_=Fo*5AuI;SXtIRm@NICS& z8nOG`!s$hN8Df5J zIqM?=q#g4AMi!kbQs0E9M~sJ_0(~scnu~gMIkOduhn~(Zg%O95C(*ONoOnN`-rWtO zTfMhCrk;l*TT&oo<0-9r<0N{E%n{pO_2qo8MR#{h?~6BGi`H7#a=w=WDg8Q+w^_Go zulDJ3cBiuDG@5(5o7BxYGS&Ekgnj=Lzk#nm%|?E%UEITcuOK@Tp*wT@PLF)mn1sG- zhe5LB-$W9jyVBiiViS%zTv85+O+4n9GduVrA^g7h9xIaf#dECs3O+w2ig9&kmVLgf z-wIaVG4*&ho9|+B^)wqDULNHunB6$dvmVXU;f>{uovr4eRM^}T+S_58kriwlVl>!8 z`T)xZ#F*}L*EX#owToIvZSz`EyZ8#S#2JHV(S~krjA2ag=5ErT%u#Vhf`0qVZph?;5?V?OoS>(sf_1;e3jiFttmsJ zh$=P;1-~F{ep*<~ah{{I&_)8wYFeH^j07tIHrv9=N+I@nqq&d|I)6ZN>6{UrzgfY~ z;X-@G{n-wBo^W+foEM9Z@8ve&2jj$^(@9u?zM6hTdM3z7cL|Aw_GRDX#Bhb~0NF+~ zf1kWqKogA#h3@kuLDV#3LNEFj*Aq_MC;1WdZWqfgJRK#n!s(Ah$NL}!pF29fD?Fj} zYgy@|6>iihbQ|M(x$#^AzW#LE3Z?@Zy3ehXkD#7&=z9@ilxdsQS30pa7wXSvmy+O* zoDc6`!Q1`q8kOsy2P?h5 zcf<6G0445U5LVtsZpQW~wn#40ix^TQn?B`p*wZnJJ)I-jQ#qYIU3K(X>;4t{_ME|< zS=H?6J&XBgk7duCU(;t@?)mIV#%GHvwoQDWm@Ve9_gZpZwy3dpgBaPad>-cPY_Wj5 zpPTLK!r!a1U4{I;Cfn7OhaZzIcH{1~*{<&VeRQ^~2Y(M|yFfTE=`pjr$Xul1+0b8i zD>c6+z}E@-)tk74Uckp=x~U@W@8ajC^jOK}vl~g@>_%Z-P9ie5dyR_o7n7ts+dM(P zm7Evmbr;j-5QbWQ^Sj&6#iaY;Ex!dF{HiR!OFGaz*Yb;Xh&RFVTi89FFQ=^Jd~$tv zzUF{`jVoDyolpEJ;pbT4hxD-Xe#}Z^R1bUl^!)6VN!h~bthVU<)Pt=fv(T-aj-KT! zwXJo~GhbIG*E6p6rLJe(WYOE`v*WtW!gZG~J@5Beab8G?^FLOccYUI5T^up|eI=I( z@A>R9;TeloK~LV7q5Hpic=dvwf-Q|Vtu)5<6m93NV;UcDTKe5RRg#?RY2)spdwQz2 zvy2X|RHBOzw+fYdS|)@^$wYn+P@a4hhNea?xc>CRfT{8YZEh-kbI!p}90% zid$qw?@&STYfiiTGV@+M=o4r-eO~VnNyd>Wos~c*_%$!Lvo7Q3)PJ8F*YE1B+Sbr6 zxQv(4cM!jS5h1B}nABayWNRfzMH)uWFTygQ@1bCkE(O20&ImQb8tV5Du3r(olMTW# z+Fgq5a|R18T-@D0jS50?@;m*s< z^G*CDFQGo>7w9}N-gLM{j_Vh~cOD)2@Uq#&>F5*v_Hx;L8L#(jp!1BMw?(S=+WkWR z^6OI4@68myXH)$Co8tEz_2cc~Q>%^&^O80WtZf~(Fup)B@;>qhi(X+~Eb@t8ugS6Y zx@4`ojcmYmLpib#*YAGSb{5rjdw|Pm>f&~tO~-kC1fP6H(gh@TNH7eb7~1C_2C4bv zsuT*q2k5Kr_sb-B)F)S`_!dI=k<=v{sadoMrOoJm>MtO{_kD6rhnS<1F~v+V5BQ5o z@ClzhCM9OKljO-B`!mQ-@MiYD!#`6AUT?FBTxBauwast0F`2uHw-NBucl!0T`Rk^X zxV!xJHR?-K{C21C(Q3P2Xio~ST$AFr*W?w`h9rgN=P5M*oD%P#Nt5N{FRR%3h=yJW zJbgzI)BO&m@cm;cw7*En%TpR)5E^Lw3fy|{$8bG~Qo2Q%*ha;qaAdcB`2 zCRDvYlXgy1ua_@3`<{ruf2on$Cl+3A^`rgmePT}@M}4%vXxn#-`1*1`{jvU~X?jVC z74Px>={m~@%kPQ)>3wsJh2!b|b{TQb<-GrWr@y`bHLURG1?{*eTWKr}rl&E(iu1w% zdz`seoa#a8{eP2{e$60z`j=a@UL2IXF_4g!%RA~mS6gAX4B}$}YRAvh4gD~vR8GZu zyA@~iX~gWC>75@OPh|gTI99OisI2h*!Hj>|{MR!U{+9=r+T7o?++U&Yl6mv)+9@!t#5=^5fX5Eo^Uw(s}ee%kQlYeum}ub|}3~OtsQ`$4Zaa z^IYy1dN;)DnU}>ft1R9N`E7jPYPr8p-FaDDZTc<;7M%}5_Okw$ zRo0_Q?Dh7dmB)dl>G^-t@*7l|UZ)>e>6}(-&&M9ieK2+BI@QtDN!`ArG*!3%#=;gU zP2s64c>33rrjL2tmfy9OpJl^$1*ex^W~bNHildjM$0@SnJYLT9J0}fWY`Q1v-Y>Ve zze+3ouPW?mjJDEvq#}vglx>`r{%D20%<3%n$Edqvt}`@V!TN=GWDBH?wm_#9MhgcQ zM!O6ujEA1CsB+}c`BF^pavpZl)=tAJW_q_n*kT-uI&|W1FscU@hDC+o(;p}mourRA zEf9q-O(+*M>VB5w6q@w^$mPT%ohOL`+f%BE7%B(&g6VND0^NDoZZ-`mH2yKT(7(ob zWMHB3_~1fKE-#)&#<-kvOh0eJ)x@iW6+8tDd%7_$Np6ZfQ4zlu&z2};-}*c9wZ!YF zbU26)vq$u0t2|+shZHHRJh9M=6)POuWLXGq(U;YOy9?aw!TsOh9{eic`l@%p&FsX` zM#s~p5U(euPT1kWr+!`A1H|k0d9F22_+?+UV)6^^!`$%1vukfA{ar~JK6(vXTZ!fm zDvTBkE;LkDzJ9V$-&XD?_C3nAYs_5o^iv!QGC(+aht!&NtZ!yM!O z+{*YVCrT?rrKC7xCFmp_IwJp zrE4AKvbBYK*O+s|`sk>iB+s;cWR0oY*~)ciIkO10>`~Y7w)gpPds}^e4R5QiFt%0h z{(dsR(?Zl z;kkZUvDV}X_4ckYb<_wxyFG}WX0k9eU<6xjjp=8M@KdW@1jOpqWgAbP$uWlB7|rav z*`9#$Yx#MLgI$LIH%0Nt52N*xB;I-}-nfW;j$zhXZlCf{1jm|9>b1S>cW%vJYn}&f z`ETfjT4zjuFk-h^#lQGkCIb!i;i4ikT28T#UCZrj9*U&j2fRETgTAqs4*DI{~J>L|J1?%#uWeiI{4p|;=ieb|L>^3+ni_l=UR4VyOytg8B;Gi zpV}A-@d+Q48>&X8M2zD4nyJP0)zjhE2)`NdtB2oY_+40RL?#ydgw-Elo2i#nI>H@C zqLGV=qi0Pkj-K6698*_JePvJ`O%rZ_U?I4>2AAM=I9PCZhXBDXxI==wySuwP!QI{6 zIXE0R*ya7|-m3d&w{~l4XSSd2XM1L+yOq=KW7~F*Q&qz9kA8%MZp^{jj*$bTOi?E+ z7tFaFn}%jhJ2rKvLNwZZWK-_roJrN>lag&!RiT5YsRN1q3ec178}@4D&VE50=*p4O z!-&YrCGF~H;fx8QW~{FMZA+8O)7(WYiAtwpe?^3}5FPFZue;$%I#+EP#u;%Sw0cQA z@2n(L39HyPYJpxO3PzZ=1l8v5^A{-_*VBy$T*_06ofo2zMvSbynCgl_cikseSQ{$& zWJCc@-e}sn+W_mC;s&u=@v>jXk$Q;UQ;+xCm;f9VSURN3-x|g`aQNf86-#m_|YRt9oQ~13j;-oab2APW5{kxVAQidkfUBYWPD=h_B0 z6Y(cl_p@vYe$ThLS_0yHXpAevd!dh5x2f2Zk>;U#^SAYVlaO~dz4oY51zHk5+#9)w z2{)`ceAI>w00)kTF0aBQHI%#K<)8S(j`+uf`*=-!(W(qLoafHRfI8=1_9|{~HcW*_ zEHAc7R-F#yx2S8cQHqtrGG@pRp>)l&bfp1;bSW&#M}<9c#yx`i2H+qPL z97eK2V66a(_uXLTUwh2)3N%@1%LeS~#ND6Ek@<@av8tR4*n&i0=RSAQyZ2o?!xL!+ z%OAU7x5Aii_kA=dpWSW={XhkW>QB|axz!Ps^9DOc- zzWio!jtymFjy}ak6RAtSZLa;rOV~Zsmini1t4uiCA-7K-Q=?gp$_l#01-yI_6EA&Z z+kV|nH-PxsM1tLtP3{D}?$2Ttj<*X%u-ob~Z}dm!pvC9+dG)v=YRq;%nH*ojqqC1^ zs6n#!?msyhG70mc2os{g2bQKNzIW-|ziUwy7A7_oI8*|g{CzId+qjki-gFNvgE)%6 zhSv5VN5;rygbq6Eg3WdAcdKzD1BY3p=6#QW*GR`%kt~C|U$w4U<|?9xv{&5i2`(^B z!`12V7IWfATcrB|kb+{tzL|reJ(24VL9=&-Hjxuh`AC3*M`SQbz3bc=I-@7ic?O z-Q|LIlg9Lz>_~N=XnpH;)>hYb`(~^*Y6extJoOfCp?cSAQGB9SxzGT}q>XbkH3gKHG4mqh~Oa{m;QB?vx7DPwqr zpU6?TBh79GTevO>al0!*=>;}%HJ~9gOc&El7q4(+*$u96W<}b(*PL)H7gy4}VyDBw zIoNenC|W!t%myhvU!icoN58wLtr&S!{4GWsYiNxhvn3McfUUg1fhnT+){XFt9%$)b z&$ms-j|~vx)f0ngGH8_DfVHupC$YJ-$ zeSggr5P}xb?Zj`e&E8uWL!Z$b<>8xbSF`x%m~x`XQ?w?Y;J$J`tK665sefdGI z4p)F=T`FdHq*i>GacuQamNRBkiYSP7OH8GU@Eh$j+-|5d+k>nc)gx=|2EXeBZE$5o zbEU%M`)&ImP-|)uLl5t%rNb2GLaxFOeJZM!mJrDLQXt&X0zc{hRH|-pS;|z&FvyEV z#NgmQ+m%(xz@plmjHKw29f@sjunGK_DztsiaQKD_mKyxs!7|=C+hKs}K(C~;n%Oy% zw0Nb!!2Izg8M@obW>F0HDxM0I z7LItyX(yZ*O9btaU*1eoJ#()!u8Zq;A-=`sRAq}_8>TYRZ>v&D6gguq%NyGXE$@Y% z*Wt6bu48q!jI4(8oV(mDJ7Qr#V9gx^X8t`Y{;DRHe|lQ1nYz95Qn<|IiOO7Mpk8;sq*ass@$TY~bFijP12;XBn(OSy|0 zzkZHiaa&@39~b(KY#Ym1uG;(XfDi<9AWJtP=KWsevw>i8Ns4F@nYWz(rgQ~d^&*vH ztpS()b@5ae84|C^=u~7TN%*MJ;O5K1m*bEu;xdaMQBKojF1}_0|~^|13SV70hM!P%N+10*T+(I zVuK9;GD>@J)zUmAr@dEdpo+1rtSpd#+Bo{dY;m_I>vw`ve#@Q2ykn9n3ikfpmQS~F zL>@JZ=kWM>vNBNheUZ@Wa|GBrUuY_a)HhVb8RHx^%kIu!UIU4lWbVKMVWB|2rWG(3 z!gfv|58I@v?crbMIv(?}a(O)mXN{NiS zlL9-~s>qWNX1BJY1(Gd}{@thjpT(vx=G;~;^A^)@hxT8u0;e~f_(f=&cFU2)gM0Wd z)<5ahvue-u|%a z`UaeL1J~v@UfK|7Kfm>fo;3l04K8PtqE>=#P9?RV&|GKIH)Hb+iFYDx@YaNAqFJ)r z(B!Y1AFLpn>u6A}k8>)F{o#UoH;@C}!&?hi>6UQ84rQU>$Nq_lo^)f}>giI;)ZOYS z_c%DR-VC%i z^c?iO2J{x&)xws+G(2R7wT{-}$(SfFfxwlp|DH!>V^fs7nYw6NNl^FSMd+C{*X*<1 z?as;X=mZBSIjGXa#rsOUL#{2IXY~Y`A9K*klGD^f_jU>GAybZ|#)9;;YXtNN5?7noxt zC}qEtd|zJld}FVw*yM?@LOtrINVJ~FWLX9EYbexuhQ?*7=9S2A9WGmPFblfn`AeFq zf(3mGHsVO#>r^8}Vxivmbw!*D6a=uFMSPnf%H#bFw#u2ob#uP)soL3(FcXQ(l+%?S zBb>ig&7B`^FfS9x_nXY0r0-WvZ#_ZUqm|Qh{E&^PoA+6%ZRL!uj z8aG+jiQFKEwKFCIJFDkUfCp36sB$;sl_%R|uSwtY!wMi{l@Z`uDGi{%r}SlXR(f{W zR;{aIsb?7iFLoILeGS%dL1UQvo6cz6{Nb)TboJPmP?yOGwXSm;!IwZcJH|e+(3C5b zrvjeFJ#?xvH@9+sD_N0GqY(9`J~hoK>wOV&&ijMB&pS$Y_#<~@GE%F>P+hp)W0>1r zl+W_yyPuB_fAdM~Cv=#Ua5K487CoefXR2<4!Al>+o0ccXIkBumM$X&%@8K9j5--=zKm-bG7T~yRcO5U>CQ6B} z@U&wAAWHh+%8Y_?@dRbpXHFTEn6f)|;6Uz5>wr_mF{oAGPwn4bWa3mkB zbTVLajNvSMfPrHMS7qXU6I+wdZ~3I3KWdG%P|?h4SwpO=ixcg|FA=DF*_ou6`OqzP z&Wt@`2_CLaWVQx1uV_Ducu&9F_iIMlbfS6_{Nirt(ihx<1PPbxAnh=?NF+4&%9*z7 zM}pjC_<_hbk3Ce=zUl_YQAgjq4kB0)Tx9z>D<7_ zfL9;=v7$rf8a&$j=E>W+bjKP%)LoO5ptPYS{%z}2jrJ7lp=0fdqwlO4DP;a&f(1z> zd#*ESD)>0xLZ#u!B*QlT?QTJ1IsvIyu zOZLPJF9*V}u1z`lB>M(MDr=c;%wrrot?Mgyg`-a*2f@~WsWwPXlfEh|{ea;3jU(`Z z)h;ag-zCalt!rB96;6thN)imSn6@t z865Ih-Oy&ts88bdOS4)y0?@e~VYLJY|IR;FD?2%=D`MBB8yOeHQ<4UL-RQ>e(KM(ps`2S-j<*|ek6akKSHv{GWa|qrrp-hy-Of3=G=ZltM=p6YoLv^F z)Nhi##aYD2R?gbt4%j{EYlb3b&3`UD_{g+0UydE2pE!DV-7JWV`C2Tp#Wg#&v)Y1s z)1>R_JDYk`@}I`$qu1z|UgKc*B!45Vm9wlJg@-8J7thvg7b-OTdQq`pbeMdBhL>~q ziY5?kw=vgzDI(4Wo}gus;PU0>RDO1dp5sdXo-&(nWv}*B!Qxj;J$NUoA$-Y3vVjHp zk&NNy?`3Gf&a9}y;Dw&6;K0-CQN(LfJKbc($+t$0&{Msl|7$Ycn%FycGkjDj!N&}S z)b4xAp!{&DOn0;p#GWq9!Hq>yq5D3noL&=&GWYdq_?`=*P&{h@vjgKvS*th(r&ghd zTxg(Nlw~^lm?LF}I*sxvGqM|vX7pJAXELMV4Ffd8ll4b2fp|&gXpgC)o~uL&GrM7OcWz&|ZWny-J}%!U}!1b)LpzkGFq*h*u^x`e=-{K1Wx#j7E~VOcG2z#@ZAPHRajij*svW_}2#wo{Q& z)q{^QvgFFk-EyVIefDT9{f^Lf+NP;xy*gHwHab{+gDl0RNO_d6mn*5L%@{p>izpTo zsk2*>eXhA!i7Mf+|BeZZP!K+BZX|gS&BZ6df%|M>s}-xJ%8eYEfuHgrU+k^n_0u{_ zu1DHHLnF~7F0k%5uau68;YIDi!|mVe=uEL|5#EbF1qTrl=kU^39CD3a&E`GGIMRW8 zQ~RhpA!1CiqnAi?vtl)F(yr9j=9fdRld=Mxrjv*Ha;avb-|b{HRaI7lvu|?ja|Bgf z*&4G)x)j1Cp99ibQZ_%K8W`_b*|7VVsBIHneq2OmI z;z{;l=f?8sj?&!Op7>)c?t7thas!b2Zhzd0G2C?*s(k!9jpeENjb4y#18VM0(tH)kvX3 zJC4AH$eGN1w@e^-QLw%`9lN?$T3pG`S24{`hcC&$oPyiouDiq(^Ww% z%N@+ztks>7Rf}{`X3I+}GzshGi7!1Kvaik|t%Z&F`l?3`!B#20kk&gmw$wTJ6Q`aj zvjQ1dLlbnPy)Q7R&k`{p!TLeDTk?++LmfuEF~1i9p(s20C-0IPKZ8-O@g3nBv*mITBs?iVXQaZMG0 zVZLZR$tv_%X?$_G0!fl&!&VkiojmI+z;+1Z+)QgEvKb3*Qb+;e%s%! zs;Xc5a=vXv_~cM}A=omaS|8?peR&IpeB02st!DU(p-5_;MEC03!<`W0k^S`g*-JFE z1f0I*Yqd1L?VpmAit_UcBWPy|)T8lTj2#=jk~MWI64b+87q~5M-FIuwdrrLKgz;7f z_EhybZN&}})MEC&ktCfCbYWd{o~4PVx}@swu1x?hXS99l>>MzrxJi+8kJvC}a@nrs z3qc1YC~mC}#If z?zP^iu-Sc~BvJ5zo571ZSU)qfcXS-%8UAGrQ}#CQbHAN5dvf{EGc9r7n*lNOk|$w23rMxP|AhIKCLi+HMsAGbtL6$z7BSRWn%PWy3k&XLe5vbG@j6 z`6?W7zLqRIRn*duU@q=*BcTxgH=k>VdF7@(ePkTvb2>eQRfDGUWUpPkGWKSf5yu0S zC%cdl-w{EUf!>RkyU@+XfDF``!??1Yk;dVYYV8B4UmyBNgP{~Wxzb=1}sB#k39$a$)D=3Ni-1eDi`|F z?=f)tq@qy5w8Hez;Q5TraqxmIIw9ErFXR$nJ_VzTs9U zhXyOG60l9|W_zBp)0s&|Jil%4A@L=F@>F=EMAsmd?NF)I%h#?n3t0-w z8o%6mn|3~~RImVDL1vFnQh09kuE~Y5@*AE5++HH^u73hd7aVxdycVeyVK>P*KrCC` zfMj_kR?sG=`njN@SQ%&$)|1R0J?2=7t?K|B22?*XA9x?I9(;4`Z$0hW;l*D~%iV;p zbeP2u0O{ub68!v@8!B^t6j;!&#-b}SYmKJzdX^mX^+uQN^;Wi(s^A!{-eK?5SA83= znl%GvuT6JMQ0VDm2OC9M&|ci_rXY0(0@2zz-e1`2&>f?(!zEl?x|I zpM!-clS}aY(_0q677D=WrVq{G8Bf%9I0o|PnD|!GPY#vL|4~F+OGsB5ch>VYgOBkPycMJ7W)f+K=^mgRz$p%1Wa!`lzYUa|VnO6^?9t^Qk&q0#y< zh&_3wLw@}z_?E4RkbO?hwYvZl3_CBdv}k8rY|<}3ms77ljq~0{5j<&dtyR;#(p{J^ z?I64H3+()nkNn-GC_p`;$$dxKfu<5$a%tdIcOK)J1&w{ozkPcKdH*l&x9ViKjULIZHJr@3(KOV4UIy6Pla{SDQy!&9)7ybAedbKCGohV~EFI_&EA1}!sg3i^#) zWbhxZb4nBi1qu&OObr)w`-9^j=kbrB+u+1MJ)d{@4fo2?iWvGAOoSy=Tf;|rmeKoypTYyA~Pqzc{RHmQv< z1vt2A&jLrkS5u3wYSVPbJp$HSv*};Op*IG2=wX4eBjQcDkm_%g=&Q*EY9&*#mK$v8 zVNpxjL@yGaOjSbnpDWd_quL~7kdhTno(;jZ`5H%M^$Nx93{$q-4Y#Fs*9tX%ODlT| zBK|r6|0A$rz5lE23jTV*S6f~STbaOt7U*g6k6^&2AG%vXjtTA!fzkPp4QHGB@gpNh zM_c8>OV@~(3+uPOY&oV=!`o-x^t+xTehUXP8t=Cz5G_D&`a# zpJ-#lWAIk}TRzAeTXF?8ztuM||CD`4b&dX9*fTWfO%~6t+_3z9M(Epicqw-^)=3z7 zyTB)L**CM^&H(_CamcG2?^foiwp}XcPuA$4|sjFy|#xC(`o7V0*fAk zctZv(^g6CjI7?_xrrm1H0ZFXb!tQq}vRp2o7XDO?0!49e3Jy>rX;0h! zXj)NiJ;9e_(3Z~S+Em($mC?ESl{gPboU1e8?Ga#gE^m(zVW`&82YB9f1=mUn()%2pn$~dn%60)En^HnwMCA(I%Q6a!_R4~A~P+8WO zv@5b`Lrv}!M0heTx&MH4|FH}=Dp#S?Q2oVD=a>nu`MU*LjHz1#G=L5WydLuy31Rlb z2*0eHy)kYxa|oGs&7tpYkM>$hTocJ@4^^I~0x^KxDwuuiv|$o1rv@=#-?zbGXdQu| z?j8r8;G0?@u>Gz#oBdpnFqN6UkK3=gROU9qnL%81he%(MhHcG6^f;@$(<8N+UY7Da zJ;8G6g`R1ESB#JbgkX8Jr3lV<{%#wrP5W4hgXmKkiR2TAEKLr&O17Ewrz`5PPd{5s zeU6wayBT+FE! zz>8TRo?560$HLwI^>%~a0_$T@Da4+MgubN+r^I0UCSGI)=AybXQVa#OcpG_b@Q1OK z(6yl~E~jz|FhQd}-p@Pjc3fQUT-r^C`WyRqmg#|dgXJ=ieHryu{Y%>IkK6N1Wj+RX z;!dfkBgB(04!%8jVEl$DK|88Ld4{Bi?mCbKxTtC1$yD%|-Dcyggs>?Usuz_~K_)gD zRuyQJg;UncX&&g<5+>Ew7qbelfgYD&A18%sX5lYXnbOQZs_+^@PEx@Jp;Pozuo{er zmMKYp(ZcrTLs7$b-eTp3-AwkG+SI%9Da=pkYDZOD*t|h@1QV5|T?q;%;vu=z*d67T zwaHN7Ou84)pL+#exl$gMNw*0mIT;)`wF;&<**~utNN1%^ZnF zo*v);HBVXcSy<{Anj9*MU>++>lR1z=4w`~?){~u#6HO#Iz!v6*80-(&&!K)fSf$F) zRPU}XrVkIcU@rLG%O~ILqdWJJ&B^g+d2jHBEASbml--e)#MfB()|+umgLQLAb}k1< z2f-8l^ondFcWv``?`h77c@XVf@-oiI+^~dRfqMY2jMv8>7;^0{GO4iCTg(@shU}j8 z4=?-o(`61Gsqh;=4;(e!lQ;V5mU7!gngcJ2x7yCI4(A|E*jtc27gtPG{nH+1|FDqP z{m4~wQT})*9I#Pn2>@E3JM(wP;Tjv25wZ;tVI zwnr!NZK68H$2tk+UHLay;X^PG(iEmX6rY3H3dPeamC-_P8Af9#_BY5fh$8`*Zs#e^ z0@7^c&&O?CboM2@HP&sKK8{fHVtdm|nsEKYF=p`iG zD(k=!C2jK3MAPJNnpv!94y`|%y*~x8ixlJstXg5U&vFX$fA}topnKC-sc1^=u9`6T zA6P^QgWY1nsFv}j3u;!68zY}MQMA6LdOiMnsU+)jz`$V-TmF5_JEzp!_btS%WY&(@ zCIm$XCQw0K!~rLLVp3Po=M3j zJm>ifdJPqW`uC-!_mAWln520j6S0iOZ`>W$G}S|tw$6Xk4_fq17a(EJX)8=|Fm>8F znq`Sabr?Rez-G(brf(+A!@K2j18x!#1|rV}x%sgYA}<;osCAW*cj~`#b@G3Q$4MCMP#98%N^C>6xn}b&7W&Gq+W4-B)a!I?P!C*#e7z&~ z2!jjt26LUXH=B5yC3MmLb5W{u|2#~xn5VJ*o8}1){|yUdxVkG|(!hdA-kgr={~%B) zq1n&)xKa3Yg|lL>aPou)26@B(igJoGiyQG2Z|K=nvSEqCE5dwFoWjlIF>o@}O-hM+ zLk_w-Z#lYC*AeR!s0vaDm`Gy703*B<3glJjpv>E-@*2nHYjbm~8uHy$^G-W6ipSRC z74k+8{W+gG7$(W5fBuI}Mfe(i*i--G0W=EsA%+={VbRJYC~5otLad|9Npc%+rh4#?zqCMv`U4XfXasZtXDaa$>(( z);SDQ4!rv`C1>e|_)_T`|3~(3I{EiuSL1}uC5BL*7#9?xkOs_>ApTdcAkX!aSo{n7 zVwm-9)=jj_F?+g&e#jMlOTr*F!*EQ=NUEncL^zxYh9OK+)x^7M>UT6TFIS&{%f1b_ z^MvyH(4~{7cH3^cWr*?h*;nhzBV^-W%Z-DK9_hz#6?&Qi5w0T3JT=SGFZQm8z7_pg z;DF{ce)bw$`vK~Afd9{Uv!ANFhMM9f|nYB{cjpO^# zlRxnUX=J$uZG9Kn;>1i^Q;~&4R=#H0-$U&_+b+e3WA>p=eLTL8L&|=UfgsUj%Oev*=xvR~PwMwq zU5?e@L!-;WTI5BN3QQoZ`O3W|C^iEIn#m zt0TyLo!rK2g-Ees<{*qaV z*3r~Rb`MOyv(EQ%vLv1Gx88~&0+P;yO2VjFjl5@%y8)>P67Oo9B0|c|Eobe10{;p0 zzCpIi?UPoi4qqqcus;!5OQw2w?H_eW;^#Vc$aJDQz&!erzeD{viO&Q&e_ z-7Z^HN=2?WqiM6v$y0WimfcZdE~g&VMzFMzMW0Q`Z?#sMwW3~e`B}z?y4XE)n4rOg zmIh7R{Mj@H$p&YE56*qta|Uh>;>j4b;|P0 zRNWW20xBnnzlb1ReQ&I)RVC6*~*S&ISSY2^Xj%HULB`t}UP6PO-dI0%zyD zVcd)5uyFx_)g|>ToK3fVjx})Wi-XQvU(fDsY}f)@k+dA%q8zsxn4)4Qzc?JcHb;P6 zxI3Dyu6(5Y!Or-X0=90KP@5{aEjKvX*S%&)=$A((O>xSDoT(8C>%)%)y7(;Sqb>CD z*TsbRzDW%Er9}}8Z1}#dvDX@{Y-ugAJ1j}vWbsPvHU#xo?)-vbFI98udZwTzr}M}> z*>QAlQIday!XBATE4>WI`*zbX9>8!G{g5TN*9ZO>#Gh$>kSX4BTrh)pc4OFy|CEs` z_3Cvk;HUdo;?Emotg%g7oI<{A=FwBZO*!wOW@kZ-XUp-0F}BU4jVoYvPrICb#Q8W` zLzW{j$4tRmKdeR&uGelC{t-Z+6TXb%^444^8N8~^af()TMvyUqstY%zu;@iu1a(?z zd%O?BtjvvSJ+{~_!TQE0F=;)l6Pu#uOPSH7C=|!iKuZn`TPthYZt&Um(Eg zth{!%Q8DC&X`vWeN)Y}eGd2p9i*Q`G;u0wW)LBH_dp|PWWHI(TV&dp$(J!+7sL6*- zBqO`rH2xbojN4SZp|4@e>tda_5_b+TtbS%guS?Evx3#p5ES#D|(MX5=b#6;A2 zBt}eT%ach~*4$&9tBb`nCD9h~h)%NUV}l$d;`G=pO!Tg@7L&TktRPO|&ERHi<21Iv zQ73{25hwW3g9%yBx0|1d9Elp)MUsh@%S5@}VMN$^*5t-ee0K4%X}9=>m(u&Sn<~vW zdYbCg;M)~D8mb=)b!F}fi8^2;@{ZfQ$u&SFK4MBufZ;w@VS5!hMC$x#rs~3%X1k;J^qawvRoo%ogR=erkDIhQx`5f-!^KGQF?7JF) zf4XS5O|~S5d_wk?B-n^W(OBevR9y~>HtoIvpoR)Z`r4}+WC=@UUA0mPjqv;Eb&EKn zvqD4G=7>kW+xEsm+FIGHyRqT)t;)W#uT^igu@n+`#IW$ z_GA*l2ggF5io9+b66@iMSD^4mZA)KjfzV?M{=O>^q9DFrayBv}OK@T#`wXBUmbM#vVIaxnFin2)~VCw?`ZvCBH4*FD1v zmk-~D4{05L3&CVLXukFCf3Bq`k`xh^=T%IuI8lU{to06 z1_1qIIY(3$QS*NW0BsP`<2;ibFO1uM-au&{eZ#rb%f)KQzb|MYm5Vd&8 zYpwC-pB&NfuwfL^?g)u7oifN}hkE%*bWdjLsr|0xE_}<4FM&&Z5W+x4Z#PE5JZ&~i zzV*g}16eB9eDRd3uLO7tb+pp@eV^6sgxqyvs?)}0iJ2paUtz=Izh!na+^b*?v}Dgp z^3xPL#}w|gzJh;v9coeC@*M{Zlq*)z7;dgSMV8|^sAC-5{-gjZAXX{?P}4qAP;QO$ zgl4q%UuuHVf`Ni%vc0$8WFz8C9-?np!q^-Q+j2P-vulY?;jaNVEri6NUaN8&X0|f9 zJdj0|xmAL=_N&z6dgu2;DbfIf{&mV>N8BTKb^0x7r8lw21}==t)GwR!(U}~f%g$|i zwCx|&XS}{-?eUjmai4U>&_n!aW*nD;15#kd;Z(}#*6udZj3*Yp@}^@yXGzHC9qkDN zeLvQfTOTZ~a`Gehs7oi{Gq}VkZK~!6`D~vrjZ3}q@?I<>8{{x9ttS(?y>UPR04Vy~ zB832l&BrtR(sh0A14tX4#Mxb?szG{Qm!L&KX3}ci)^Sz#TimFtMnZR0tc$|#M_^@C zvtivCAE;2X*e70Z$%18o4>`4>OMa{DWQ8v>Lw4=DE|2)0V>T$k|UGRfRZkZ zbG}E8PfxUyW^6HL@|D2Drp_9grS}>9lV>O}r!Ncr#z#qsG;E?4+Tt>}l|(9@^o%ya<~C`HbPzd8+JG@Arc}*W?Dk zc|LwSjzs+Q5hWI?H_JQDjq$iw1j=RyFFQbn@Shs2vFd0P?Ma)R5>^<(C-%V*#a!`g zCt@P>f3#Ul%6M55t`gTu+r*4y04Q07c0~nn+~cI_KeN-UK<*ST((BLl^iLbx)!j4K z9ll1=RUvkDxB2S%jy8D}{CRm_S z3RT_He!;ck4gQ5cz+zOk-|W}@1}Dx}U9yDr@!`u0;1r`0}! znLvY|Ly#5mp%=bAjw{ojTlU=(pF7W^lYiX0fcA1Y|IOfgBi)#Yl6|7P67FP}9z|Cg64dK6pu!yxLGs&7nq5#ZG@ayB0Tk@ z9dqNbbANqbMaEzv&@H048`xdo!T5)o_sud@}i?km3CaLJ>;%K9^~t!(Fup zMR9I?hLqODK|rnV_bLG`MDfGo57JVVKow_SF;R^c;7&ZP{SxZ%J|v^!D8(4+`}4*7 z=D=(w=Z-`f!nAPrrVO!JxFc7F=q=pYD|>{>@Ku2sOE7w6;ivpSCU zp9Yar3j_B{3VmJN?3e?~hRh1%L&I?|Ui+j+g|x+(537b*+FxqHjcao7vVw{k>qj_^(+l?|f95@MX|=q8J6kUaGU(J7G{Y$p%LoJ_Fj<<4$3W3I7J zgtVu%vS-!Es=v2YXVDSH%a;opeqU|_nmu9fv1(KG2hHCq=4mccR{Ryl+UM&?D$H4QIx!MieJ>n;j$ctr9;3b7z zS0$F0M%j%G-Sz#qGi!l;%)Kwao18LK?%try@Swa^nO+7rdlf@N@t&9ygT^*2H>} zGjj);+x@C9zjAhMV0lfjHyr+A37jn9>T`a@f4hg2^ZHleZ*ihC-<;C#W81&0Z?eaA zgne+!R+Td&Zi<9G z**DvLOD(GiJ?wgC=hl<}=}g$tN%Sz*5&@NRg+#7i6^v>c><)s`n^7k#N{+dN$_Dh+ z@q(#9mozSsIBJ8!$Z65U>REBg%#&#)&@aBSSVF>`Z%PuJvkmCtR*PyDlwLX78ikSH z_2NHTrBsh5y&+XPIcd3|&uuhu0^Xjpxip}L9yk9{_ERlT&OFq`JC zemxE>jXC-lR#=B)T!;7<_hhV_44VLnSXY_2CCyyS3#+K|S@G$qypAmOWrRet#O^m` zfUa+Y;OUeDD0eTEZ2vCEb@zfmqI7DY15TJF+CGrsk z&n4oBOK5miabpv3$jsGSpfxX^0zcLDxdxrjd>LUPbCq4fQsE=3h@s$yME&qft;_Fm zQo~1!^zcZbTb8Bq>IU>h={?kYc{#;p1Y!Vz@6iL66v$o5kn%k1qvLf2moCg&^fdkz zglrWOuMb$R3iBo>xq9>GpK4T(J`do%RIC(B6YezhmlyjjWtVl-h1oE3K~MOqsWi=s zx3Gr;arsJC5fWJVb;3X7c$HZ>xMWDFN@XQ8_ zQb)hV{H4pA<3Dt`)t+2bu809TR`MTLuBPo(f_>fkzL!%)R@7?O<5?B|7n|0&4yV8l z-9UgD;f~V&fz%Cz-lWuv9T8nNuMYknh)4q(rGM>xT>*e=R&{_Vl4v<&MXXqMa(3A5W8r9^7gb zfGK$R`k^QIjwO+Qo<}CTMXf)#$47n-x!K zB24u@#v!)QM*oVy&H0~5pUb=weLnZ;GJR-#?u{;Im$aZr&3_;${%1$gie^=d|5<^; zl(U|1kZhAjEiintq=JB!p!5&ix*`hDItglLNDVk)~f5t@!N-v2=D z?mzPmBqevWeL78U=9Hc}Yy!N~xO%N8+CHSL`yp|gfW-fi z3*Ue3awY%cpT{5naTQO_$Oj7%DIa{WP?Xi=i2j$ZZmHYn5Tn;jjS9g&%4$LS%QULX z5|K@t4~>5Q(CFIR(vEDb8`)dE1Ku^%=sbg$Bdf>{;z39}1xNOZhh!MML1eCfzbd(3 z$8{KBz0QcwkfuU>*WNR!+>5auM8Qw zDT&zv{uTgqSb*7sEv`SFgY6H&^+rvFMbkG2WYpcX9q9EtPIiZKWV(I~MpU}0g4u6p z{-fBHR37Od1aSW)()=$`|9>Ul{X^kH2&fomGLt@({Q)#juQbl7{TuZ1ow>)}-LHLy zq&;TX+G{oX|B-C_rf+e|BWpcdSEp%AY{UOqNhlUCT8-+q%i;e=y7xEY_cE|w9o1(^ z|D#H8d+iE>^%)#mzW4x?2%+`{`w%Va& zfTDtR$j!cmtn7x}6*36;$O0L47NXbvks{t#=3;fc(?>eGm>KZoM2 zIRnr$i}sqsDGS*C)t(yYsr}(*tKXrzdu~^JKgxcTa~_9KiV?!A3Y&7*H2Q{ zxvC?C#qozPaxXO3o9=56Ci;WZVeoaI@`P&-*m;~&mASO6ghQ~-;szASVg7c?(G*qQ zRT^nd(2FpvhP6Lv{92cG>JP!|f`06@pAKTZtVYLh{7P;^9nsrgNNu&f(+-yaYrU&h=)kYX=t+Jiq~ zQAb1{isW9259H;=2EWR~4>D8q^f4d2v3>jcYXd)b^q(r+nn+|$XB9?WXyffxY9?P?%}O; zbonY)=GEDs!Rg`9YwX2&$;kEHgLhWYoMGvD`jJtss%j2ot5>b6zR&B#{-IF(-IJ;G zKXCs4;1JdiMRPGC`yt@38#Qc?Zt4@G!Gl`PN{`?*S7u%GI@%@uYoiZ2e^@@PtNV80 z8q&r2A3G-CR|2O-BBWG!6X8SAXm2U*#U$;O(Au{dD#AnxSOXy7gLQiV4Fq!og`!~r-D(I2_UqUk{< z9Ean&)=;luKb`fg`uS(~SHdsj+O`Q0+5XnefKn_b{W6C+W$x0cH8*Y=5L?<2SFqGp zo3V9L)F!jXfi&j=-}*LTvF!_ww3wc;OKyaUag#@*rK^Q~IR$BL(k^Eu7DY-RPl2+d ztYm6cEK${xlh-%{YtYnv@tqF!;=Dhx{8Tpv^DXINV%u9sxXjzI^hhGI#xGk2KD6H1 z#`v%GXz#+u!yb%*8}(?vh<$`R(BS>t3LX;4hSc_S!Fk=^!XJsRx=_Cz*r!mo%h>i| zwNRyE6`wkwrSQ8U-enoskz$TNvTWNtWAOIUq310SPf`8)+PGeYQq?L;axJ-y^{MZp zA;1L(AUr4Bqy<`&eV|49+aI5+vbo=YR9q%K`$*xv>CCU+OOiQtK!$@il*|{EEStUo z?yi8%F64{dKb_F)VS1N!eT^(r4!-cim$kwkVIv-KH~E|CoIJz$kZ7%L7?qQ5B9E~4 z%X{bT*QgP1r*>Dg#9O-YGu@qZdJogg66>*+fRPlRNfg)6271?Mif*P{jnjogHoe;w z%70}z6NcPgigJ|41moO}6${jwYisMQrU{N-p{(r!~dWW2Ng_+S|mG3TV@VaMSM)qKo>C z)E&ICK!>m2Qh%1o5+frX%Kdp(eg5#gDP9Pdy4VeK@|)HRb_Km?mmt?yb=5p?W3y>- zzWFwC40>8`KCdAY%f2L2>O2SDsa`AxyTVWS8GP{vwOrS-~za4^x@0E(om0zNah}2V;!v!4i#$n4x^I|;; zKrsG-(TAGmSf@r9cj)M+6j(WrW18UEF8{F;Bjp9tV3joKV#YLVS6VFYM0@Ar4hgOc z94%YjZ&$ri5BjQ?=8>k;gs|_a^cKDE)mIaLJ@r$sa~(!Ir4!u4&AK7dcZ}qBjEW0c zly{qDJmTZ(Gt4{{ctsS9#?9U#OL#f)C)d9h_5%tTb(l$tb}Nlt6q{<~0m^SaTnE!( zo!83=t&!88Vc)IjEqn8vjv-}{mc7!B&T2fTpS-*}d(UKM)#BlE0*ukvPUkeJ*i&(~ z+IM=h4GS{?Vw4WqjB7kioa5xEfnOucv zv3~nIU+Fw8MJvX6{he~hwARY=)r#JSh=ly8rNMV%i?%}O!h4~jKlqYhQ$Dn#OD?1D z`^{nD6c4)u&?2Bbaz4r8`cGz4D|{-6YVLxfWSlwAM7O({!9z;a)`^kGce2YmV6ZQjesu$F#oe)8tX50~-L;E&74>eOxPfXps&m@izhg7nzHhAPDiBX!J>=AFuLr-@{%l}5Wvin{7@EF{ zVkx*SR!k9psq$xm(XUKjeil@e(ICcIki#ZAmbC+l91L5 zav^S)^Zvx=x_u@zWNPaCQ3qAKL&gO}(^$?F>Y&nncOVu$(fYJ3 zJNlXeNjcrYN#sDk)?GQKbG-Jg1hNJvd^`O29Gffk6%x8pMiHy6qXIMid|~}3oS@&8 zw~(ddhsj%6(6`*%lW_;#0=(sBUL9?0Tk!8yVJBedDV<5mz~8%Z(We`T?g7^VM{skm zK%!8sHAr2ciXiE#ymF3n65$=`&n~P}4fUg6d4OlK+IYR*Mug`&w06Eze3f3ehy3WH zYv1_-e_Cdec~0BOR{MjMiTJwo&)KfFH`NCdOo6ovZnbp;G13E(Zmp#3an&|Hvgtf- z2+?#5r{tR?WSy_wkTLG7FDKDMmLw^9;3>A!652AK?mL9&rn{*yl>dVJU}3)4rSNQ% za8IwwJC@p8->GhtfB#7EXR&~%yzaAP&97HmhgJpx*bt|38=P`qS25W;x>wHM3wvr2 z9c*Q@?BP|kQ%Fh*8A+7*KF&&S)Jg)F9voy4G+{4yr*6_(*uj@oM0XKMZ(u4{ZduAm zr6$ZVyTlVxn;i8zZoeyo*t6N+4XbYu>^3yz5kh45m~X?p4#YCGAjZF|$F_ZfK`&-F zEOYrPoQYMOI*@P68&XF{Jl~IEO=4RZ3hoKzvM8G*b|TC?YX=OMTfg$1rg0tUN{h)> zO7qw55&UXX3ntK`(pn-*n#q!Aa|fJ}752ZiN3HQC7wd+y>CXusUhoVJ?Bl(&^FMSI5r3-hxx-fL;?Z(KJ(--d9Vp;u%xZxDem#``nB~_ro{uN7_0Z*KUL<8p9~w*c>tq9?!?RyY4E z@DS5I?4cN`$J=C-{`n-+V`<-Bqy6eS1FuD8_LFTV{6-J3MeE*IXD|&d>?70_c9~8q zD8Rk@n1_CvNyMA@`gn!KnuTI9mX!lUws-y5jI8d4j&DCdPj~;({iHJOvSBXPJtDfz8 z&QnYUzn&~TJQtPewZFg3hj@2r^}E}6alFr|PiMN6Ov9Si*|-2lonxknb8cS__&c+1 zv(p!v#U7#oD?t=ls9JtJb}NAUR9Mta>!hoRbGNcWH{f*6B6EXUS!7PoQZ*Q}*(l`v zl@rcI@cHa?L(pS;sLJ@{hp&>=;eAcwF{o~HxaJwMkvZ#cD6{^1)%mn1qtWC#3mMC+ z_iitt_iWM)ILY zIT)#k7N|4gx2T+v$B{!YGp6@55DMaym z2uk*ICd}=Z8J>Iwp*$F3XdYA-{3DWhrr{q@LhQe-p!s33kr&WL;DV>7B%n^gtPp^S7<$3n!H<0+K>07p zvrtoj0Nfb-D)cS;40(RuZ$B6w^bcNe7*+65xHJefNHhfHUlg44zmWw`;C*JpwSb<{ z$)^;`3TTD#g>FVaqM4}^@`u)4-W3V8{v-y&4t?@@ftUuTTu^~yMj_ulK;Tm*G#jY} zvx2}3T)uEVzYypXG29dW5qkcbP<4W#$6gRrU z*pXcd-!0tfvqnKI1bZ& z%Kd;M5_;^r^!h(dUVD*u`ERYL^vC$o;cM%0eg(9gSwoKWyMs?>In^lL ztN2n;J;FtDabu!KFL>IO0yyU#Wer%?D|5FMM?Q8w2g8?5-?@R*@ss90&W#T@-kL*G zg31=y^J%}4>apiRt!%hsB*>AUVnbDU-&Ngxddv+WaE$J1u5s?|O$T5g8s5QMZ&SO;Kvr**f0;-z+7TT{l8^n+MJtE}Up@?egx19gZl^wUJ1Cskpg z^oiS6tTGJQ9XInLktHzqjKolAIYCFrqSSy^Mg&xw`1H#uz@e_k;{s(p%48|j{My~` zSH}Zxxr;VITIL{-Nfe>T#(EV$SEOXXv4!L$R_@}87Rwq+i2(0Ai09ypcxR3M#-rzR zpU?3n?F0aBnq55G)Z^ELp{ly!QG0twmk!m>+b~`;>m7j=n-I@TgS}gq+OHQ9`nQy# zhV(8@ADwOm1)_15yA@V`@kufwS}~M_YY9min$i}^#Vh5%%8UytY!I-5QdVZ{-^LVY zEcFYU>g#(dQ^T$-+DboS8#pTSc+0M)p(#5Wx+^aaQ*at_a6^K_b~*o6Eb7;t45o5F z=SJ+1D;tnTRC|aR_!cA#U6ee{BziYde6`X77QbJ z^w9*q{Fo;C=dfwVKJDR1oALg10uo#8_hkFA@HhXUcB(m<`-Q!Nj6b7e!OXs?SiOS7 z_?SKhtq(gZ!Vm?m{%(i7p@N!izqSic{pPZ3mxKtBRr=_a?!;t{_SAc0mJo68LzYzO zW)g0NxY%-%mRat`8hp~An>Q)ryH}i`Rj?EuR+t+FUe2tmJ?ulDHswOv9rIUGeZ41b>1TX0Gg=`lA#nIDXC5eP~JXP8`4p3CfP;&uuCO_^uxuUU$&8_#O2Ti-1U z0(q4I&)SsFg~$Z_7f#ZXtvAmkR~n>73Zi+SbuiU0uOQ%B%5x{2WYO4rzA5an{9M5*hWlP|ej~cMF^BSIFBZ|e4W2F@$aC<`)_F%;<{V*PrEf2%@oZDk zEXtFJV9Fn`Y^xm+V?nnv(dy-9I4aDrbpRSQj1JZ{;DR^R9e#OJny+ndJ|fim+aGG# z@vJkbtrMfWPt$;7e|PrMfzA3hI*W(u(snklY29i@$Ky{E3;lAo!FiFLwlkY3`12lf zg38YW!3PS??I{V-4kCMHjtj z^hZa;Z}$XeCrrL+39$IC$QQ*kMvI$=6*v=MkRT0qih_Cy(o=+vzF(p%RDWH0K4HwK z*vq+-zl~vg>cK9L?&`c2QWTmMLj9cy%?@vcyzr%*TERcxCg1({|GV^X&v@k%3*|xk zBDw3v zIN#X$67QlC75EjNWV@TZAL7IM;>92ND}EO-^SN>tvBwjE@8`4A)#vfZH(tJArViGyZWaEy~45!$*3R!rD1049izeFq6f3V;k*Yk z$KkC9CgF0;*IcyE5g^)Us3ZX6ft$qrTmnxMQjH11<|?dPWgvdPX?Z+~a4cxy9#Y zX-Qv#HUq-K4I{$bctgTK(|>S!B^UnRnnLFP@UM4i3w*Rz?37yXZ|Kx&3#$XC#(C3p zR1NS{rx+4ngL!gk4<)3XbT84HOdrB39A4o^IiYIbzbzZ9HlT@ofPIA#@f?_CT^Ohl zc4SyUI(CKTt;92}(9dVFO)Tssqfrp*dHKH4h_+3#@B;TJ>HnuinHhYHt{vOCRk|#rjJ*}uO$xaAYg~ML&tAr8RupT?PBKq zqU}ep=R@_VCommey{kV5YVaNDM&WT^YlG&1{BWJR!m2H-f7c1;U)XAZryKhV%%H&f zZH_?V4k-!lb9|uDR=z!-!prBqD008zl%okU>|dyZnqr`IDBWKmfkqUpPb$RaXfsJd zvcGo%RzJDIoxt3dPPnrnS}@LF=CcbC21Neuf#yNH<(*N@SIUQ{kj{KOBB{p$z1 zZa`wd6SOHtb-!r-v5<2>>L;8}w$Q7{x5Ns}Gu-*oLcrf(n872wQd$M;d^91BK+hw1 zw&X1$Dws(Mjj)ve-rEhv7v`2?#xft7=gOFC2tfsr=5smEUtTsck1#bM-QRGZOh2K* z5umccT5!)$kjTJ}m1lNicS?8@P*OamiG-lD}3>U0}#57d%cpQse>qtqEzQ`l;th zFPFhiq%uc8^guJhSpNbc8BlyZg3i6kpjRLd8|?lsonU0i^fCMUcE3sPUkC#yZLhK? z_Ivz${6kn=wgaAjqF07%I@W4Q^jKN;-ucOf5o)uwcYRy&1iMNKKO8YY`S0O_3LQxwzqBwC7Gfr)1UhG8~^ly0)O>gJ| zxQ!BiC-ukhIMo*?TzoylsacmNx5NH>1?0%X62l1`=IXHQ~xrB@t89g zL3YxGO5k_%iM>bhbm>nCfK)Ba&g~OZfI`Kmd1lhAn#5_+Z^p6O`1IK(^`If`|f?JqEk2a=g_!`B4V|<`mSD0A_1*#?Xi?y-U;X!;6>>^d7i$F7g z;{NYkqeLll)?n9uf4IPv2Wf7E$y%rxQdQ(mh5;k%0Lk(o{Oyd%hx>1m!!=}kWe>iK zFFzIaO%A)AWf%sgP^gdg)~uiX%^gw~yImV2Re`WkartU5Qj|YSzp_6t^Lh9(+t)$ zj^Obyv9D>GC%lcR=tm?~rr#NRiL{t)sW-Wa^@bc&2l$mbn7n$n;_i-eK6S&BWxchp zg!z|x=Z)mrdgY#n+NhZLZ*n>KecmYYQ8d$cgZ6?Q)EBjeKC=A?^y!f`FsEVgDl@&I zL(~%Zg=>Aw`N0NXNO$205X$y{t~Sx6!a|7n?60iKk*4#IUYcmW2 z{qrO*9m!r41R=hH(Jdd{_&Dthu02?_I1hb~b0$oR@V66q)Fh@>QzLsbh8p847NSaZ z6(ozib0L-l$d-NNW&G1pRTZ)SWOBt;0L{5#7S%TKOx%`PZKRT>eC=AaL8aaGTCxIv z`D;>7Q;A8AQbCj(*G2Fh`-_Wl%D`_aRoZ^evkW3qJB@Gj8;N_14DZezC8WB@I?&bg zg4r(PGmBFlrtq^2IPX{+jl+__YPAZ0>{>;l`0_n)ZZ(u`n~8eENotOPH{1^YsK9Pz zw^&WnB7ks$(CkP@C?Ry2G?C$qv6(i7Asqk}{_DT>h)UQh$=1q;|`7?0e(jvz<3r`c!Mzavi4zeayJ5RdM4w3ce#m_vV8+ z=LhpqTd9p}wY6Z-@uGTQ6IyUHOw>2ftjTgEHP*ZQ%!eL}G09ZmG2yu@cmeiYihBi!k={ zY`Am5<~g@B&(;zXDjYG~5^S>u=xmBkWg-=$Ir(nxL>(3_kwlrTx-DoL0N)nz+9u?zzJNVY(mxqZPdM|ciCNEO1xVX3A0IP3A1n$fM{`!e`lB^A8@=5PmFGC z2bssws5%RSd9pk)RBjx>1igSurEgvKZ}dL)xVE3+K)U*fJibc&_=50VNAA#z%u6Ab z+4zjPICpKMD@~tjD;lba`KMu_4Kv)gMM$W1>k`Ip^4D}2bz%?Eg5Nt|{HZ*aq)3Kv zPQlpIRg9Mri4XY%ZllX@o9`->3~wftx*j>d+Pd|(mJzSVohAb=d`KPyjt3wM;tV~8 zC&q~j$BEyAuTGy!s+sm$jC@=OzHL*pVcp38 zsqKL7|6K7R&^&0oVkF8G&+rzKVr<~3zq%veF8Ryxv|R8t2D)AFH5>lzwjxpRHTvT- z05)zuZ?jX!{|Ou5@3q@u>++r=*bQ9H1K*W-zaH!Pcl__rG{R1(=lHO3pOHh7zA!$8 zTXLr5Tk>A&$M|XfV)XW+By>-tOH0bDtAVf=b1O35z@LuLX0{@Z(2c?CvLjhOP+)me z-HTr=lYy)ujU|pUPU|Hqgz>r_Mw&!>f_YYU1^|Jhzq_a3J1_mvu@~32MRfIqcImSz z^w+GP3oJo4-^t9&P8}o#sp}eV+;__b62_}h8i{VB_c>C!$1D65dmsEu@OOXb^~k=k z=%=@i{?P!>bi641hH(BM-2fe^Of$lr`Sar*(*F_vdE! zJi@_res_&C0z=#)+w(eOhSmkE@SOz*X%BiptHU3d80&$bz2?MgTr2nRx_rXmy8X2> z z;f4R+y?0tg?k^B2V^oiz1pCw5@38P5&>-cLpLfjBGgG-ZC@w*4y^blWO<$XR$1nZY z7l^OP7f3rx3&Jzd^viwS=+`s-WU+tmBJ6!{h%pGy@TwGN{-p$ly$T;+5NHO!;#7XQ z2b7Ed%c~?XeCJ<8c~2(SLC%V*ft4{i~}ZFcd7r zK29jhHafH4{K9dlxO-ML`0u?px(<|*jYu6=Cx~mo63H4jRRm4<`3dF7{I>h+jH!zo zMjtF$Q(`tM0MP`>3Sj}S9AAMx|69KLhaHRxJw|TcFAJlE(5z%;egXSLa`YL4k0aw$ z$UVH<_FF@1;L=>1YT77kuPpb~&AVKS>ljJSknW`9yzaSnHAGoFDz(LSEXt+28Z>)pWik&N;5NZjFCcU$v)~ZT-06s`ursu@3S) z{@#AUq&?H}rzB)`*U$awt?^Xr(7y8`fr;tyeQyn{RA%2fT=lWYPAW?lS@Y^^t;JJi zJ3o~=4QoBwLih`Rg?c^Mx>w8tH+suQ@+|?X`^Fni(~=)0fc8&Qc@yp0%PX}R?LQX1 zu~U*VyW$~6_!&HX>+bryIYgC5; zK#mxd&)yEeZTqnV@JOyzr#4SI;n+3_DX+=6m@^kR*OcS1p%4cb73k}Md2IAsAnHD0 zx6!=BMJ4*1&;-ISPDKGj1$uHylN48%#V`AsggK ziNe<2A)z(PkaRRkr3EV(r8495bs}E~$J`3tW6Wim_H9{kV7 z1ePw1MHYCf36y0{x1CcdQ>*kJt<^p<|8M{@|2$QR@OT94l1H8-v9Rt-=%{Sckf>~u zJ|G1JD|Bjl*R37AHkCp?SZYl+SbH%b(LjU`XOj*GcZQ0J^6&q@uYiE2o(mOQBN`5= z+N=T-R;@+_^-8s5A>iSfLG^3Tn8`<;F!6#E9Yfz-1w((>G`x<~B)rako5un07cjc_ znCRW9I;)>$a#RP6KBJGUGNV7wC*&WKSkN2VcNdb=wzNWbRJZ&w-25(btNscvb*uiZ zeYs3H)PRg%^DY4M%K^OWQj$v^Jemt0WTWI{`!peqJI7izS38{=p6P}{Y1hPZ_Pgn5kZ|OYSs$9JCU2% zO{E(;Erc67T@W$o>RI^XVY@uwu|NJp@Bd4<(>>Hll5F*cj$i5rnLIFcqTJkNQXN#4 zp@8n#XmiQ~AFWD0pfKRk>w2@uxTkVmx!>pbqJ7wB!|U_JvLyb&DK*Z-@=yE&>t4D8 z>oSy^mX?7lz8X=rNdo+P>kyRZ77ZK_yL9M9W?|$70e!!FH^m2>2Of_(L>)^d8FqM$ z|IpoFbI`Vx9vimhS1%l}U1XZ=vsGoHB?YQ}vGT~U&=iTl?01z9-F_N|t#j23UFPv$ zX6AS^v61`v6!q<5+CevDU9dWGd$sNZDn7s=ZTp~O&|&mS+v;D<@=oGrD?0!3fctkztY_wX1aL52Tn z>JHE8#U2>A-K;$?li(sjPJ?#;N#*A8zTo!RIcDT_4%*>>kF8t>?OzGcmY(fVj^rA& zt=bsWCsGOYs>Yfr?Ug5R2d#6;eQpbwwJr23&=qj|R><-YW_&XA5pp)V(z4fla2`cR zJtr*$X~PHgDaAi6!h3xwXIG%k2MfLaZu~7C|5_X&yf`l4Yzhwp?K`CAB! z^!1^}A`oPSmi&1E-2!7qBOmdFT24g@>;|71P?^W!Uo zUIQ8fLZQ2nZ=q(e^B;wx0y=<&iu{)(8iz853Rqke^nIsEv3<76?0G zh{xPu6x~yB|Z;*52Xsvstj%zWB zxI!xmRgE6K3ri^f^p%4<_7=9M^3Vl6F3NeDSG%|e~r6zV~ zQvZuR9&wk)2dNiE6uoS7!%}F0I{VXpp7Y5^k)h@*tD;Uk(F;oSlJD*;k8B!!saY95 z`nM1(DiHc>_kaUW>6cr{?+Vgn%&C<}09POTY_!G%eUjxaq=l|MX)Wh7%`!h1?J_M( zI|rM1HEM>KDky%-H4>;+@$ZDNMAQq7$VJmTKK;{$z`!A!@Db{0tX_Hm6(k(PAKr-` zf4#Q_<62guhc>XmC!#&H)8X}!yscKr=@r2l$3%y_;Z3to@R#Ng%V7Gnf#vUg+4ooOHDFve&)2H-LUvXo%(2Wz0*n7%0LcnviS2?pLj zN}r2Vo&G~Vc@Y1VfkWr)yUr|sz{A*U*zNOPPy+vq{;T*k%$vl3T0sAu3ql&2>U}V@ zeLiJw$M=5H^5-3imw6#7=OM3O&Zi|8jD?2QGW^=6+XH+Y_cA{dm2L#$zvLNEYw@1j zs;%Z%17xcT62&37HEb~#v#G`RV5~KfKR$BRCglN)PvcXNIqYf}u znJ!VdI2&m>y?;AWMqZ#Jv`n8W44tJ;&u)>iejv6ZAdYOFJUW=w@*2f zd7)up^4-6m7iN~b>8G9bH%|8+{UHnp)ZouDwaQ40+#$3%>oUBPlM$&s4+<56--5NSzU zOq6d<0y89@bMnHS5Ll>xE*lIw^_7 zK43wQSYWMBMHbS5n{sf%?j$tOL#<1g{pyGg>k_?BFen{(L@ie3S0Tt zXbrX|Bre=f_yQ|pV28U~oEkl&#N|+pP^YF%6ZJdxf=3JY4)o*zi#c6WJ#oyAS zMje4fhaEe9gNGfNMdff`?nt6_^^+KAX(xwFN>_LSz6%(^w_5N5BK@~V5vPGsXuQ6M zaP1qnt?+KjO~ea!*Q4|xyC=8)-R7*J_LeNY^@4$Hj;gmM`*+F%m+WP`r@W@DSSgN? zPJcz-7DZRoVAlxB1E#v`*SGqE5@^3A>Y~{uR5` z#)MT_?)Nb}0#vtor1~r&-1h*&&Imv2r+x8ddp+dtPQeoz-0WtTur3Poy7MI8)cRv^cB}-1PvykzbrC+Q2J4Q{ z?F|yS3A9p+)Ixg~n#gPbYH7|5WV#jE}xyWUoe_1XXZ zOGi$}I1*IbgE+h_YaBUGLUmvNSXq+%M0{#fcxC^B0=bSPrbq| zLf035oUmzi0J5$Q7TSUxszLF%b}&H0W!@xC&o=6wv5d3p!*dacp(uUZD3{O?ebTnbLNq+OzR zR?FNx3iT|8ccS*uEQ{z|R!emESRLvz=e+|dfiYI}{b}7=n!{~;`^1Yonf9LLCZh@b zyt0)lqk^ei+bkRpLc+D}2v9Mckr$ zN3jm*n4Ym`9;+3K^PL`aj9GWFaLRl4B-h=e{J%pPhTWxhm54#XyE$c!oO4G1iOO-l zvSO!vt29+iUWqqYAe{J#NYxGXxMFmh(&k|2SS|=ajzUQfcoc7Rh<j_J4#G7r7tBtQy0;Ui z(^IW0X$~`(fW*m7Qa$V0x7WVyZ=DHDfNwu?uGjP2S31WZTy7R~B`-=LU>1%Ir=%x0 zcpJa$o{bv%H8w(pjQ6D%h|EfcdXc(J8Be#l&oe9&`TnsRH4V&u+S(Gh6R5wL zow3>@Ej~wG{c3NIk=$~|RM-7yn4onHt|ls^b)^Qkt#!Te271SLL$NMY+r)8a-ZA?@ z_jz$=z&(Z#o#HjW+WqG02aD^MJndLN>rOF&p>ohybPGrp=`A6+Y3k~tPlIpU*nol4 zGD{g~pwGv{j^l{(Io1=t_+j5}b-i=&;dXDyc#Z*L@homj?){nP*R#u9M8woNA@cD| z53X^6@82Dp)|*3)A4dKe61?V6y&AKeF^}YR_hU(oslqukv;?s?lwX!BQFbgaxFh{F zdHqdbybigB8cp4{FX6EB)D7;{>?g9BPHp?yF>a9kZ6yr9Q&-sgJmWg~)gBSPkHCQ1 zWUpf&bGI=}QWqPhnqJ@L>#eBtKh?;|jmf)j<@v8)bNTLp+V2wFS7LnkC|O=^>|1)6 zMEsmiD9Vhzosjv1V4r@j*JV6(@aj_PKkM$Mavyi~V*99hjF=~k96COq_1-+4bqjdc zO>dqyLH-x$yS&f+f}qRzs9>-UFpt6Mu=AYq3AG=;SAo~xvx>DReMRbOFgeb)qcgpY z^*-VXE4bu&=lAK_$l6m}u(I2SU!a;D#R)Sf!6Iem=O1xCoc-RmI+{EJ9vC z#m~-YC{e}4xIXpF!tL#HCU{W?tdo4bC*E_Kq3)=Xu*-*ej)geCq}N({9+z>)o}>EP zTGG#-zr>Re@$p{W8MsXTn^P|>@@de~oxz(gcpth8$23n*s2C_%_JoEzX=O57WjRy{|#G{0YpxLxLXowCs?H z9>WF^_~^lxo)$2{GQ>$8CD@ymFsR@c7hMpPM*U0^+s^Gwzrj>+W1X1wnuyY~!`P)S zYd!~6DEl7J%0KFE!r znEfro$k(?Alv9h>3ow50HT?c&IIHmzFth`=MCc{}yLgpY$syOs20ONYAarF zxW;EwtVfrNaDWxbv+vsXx-%)E3v~4FGQ{OQA$GD6X4RR~I{s(2pels9QGYoOdf7VG zm%bo=X!vjTY|r8e48gM+ZJ6G1PBTq6&=&tFqwEc1I(dLKMs_#Q>1@gTZHs%HQtJZl zkKkOz=40mF(w1k=5_he_J#qL*8hp=F9gY4n&sxZ`JH*t6){xuMMnO*GO%DIWd4aTH z;;vERK*FMQ#?KuS3nxyl!`#)4+>(>eb4uxTgLtoHz&j)nPVhdc0}fbHBm3)14A;yc zP2rc95DuAgQ-F9LdlV!zPfUww5#QRitV<{LZguw4l+&E97R=N&aZXSWa>{hSOLi9D}*^ENlmn3&|k4s(kY%D5P|qDx0GYOYHsXL#|~W7x(Ea{=$St?lFm zalyInpO2pZfOsu8^|KN6xp`r}bLXD_{01NRY{cTCbfhR(G_= z)hEVw(|t7iXo10@|&!%6SY~j=~Of$906i{PoQ*qs_OL;7WF;G?_oBKRa-O$Nsw^W{agwSkg7IZVh!P;L0 zM+fdfFTzfx3=r*de!E>efgyP*?V?2S^P!FSd!8pd`FG0k!_O!8{kseH>ye}RX}fS#adASYr(O0= z2eY?7+_<|5e_sUV0xnFb2w~_NwrwCtqnd)nzZ!>yS!>4K-C0&bCOL{a8GpVoBFYW`tk_;4&v-qODgyQk-2o(t{= zwzfd9HM~c2VoRyrpP-J0U2Z4J8at{+3PEZ2Ont50?WvmfXcETKb4kyjurH0jYcqq` zw9FNYjv})L2&^R}caO5Zd8Gk;9OT}lUiA(-5CQU{>-!LTw7v5nb- zBWEyonss8fYtD|0WhEna->8Wdae5U>9L1Pg4?I*o=U0g1)mT3NaE0BTu&A4?6WG5l zyB29Q$OjgvyP)Z+C#f#Fdb#SlZ=izzNG=~=#bRo`LT%S@>x*!Ou@my0w?(&YhLj>C zEjoQU{H_kKrTD_B2(QHu7J=4W_+Veob{*D{l=P80Z67IEowFLH{&>^e);X0CA7wyw z&Z4rMjS!8}V%TMUU<}z={C^nx%BVP^rp*Ko!3pjm1eZX7;2|WqOK=Ys+#P~LaCdii zhe5;O?l$-U1A{v=v%KH#e*5b?XMa?6b={us+o$`^J$1_=dVQsv=g61Tr)lr2v9Bv%1rA{<2bH>LO_-Lr(<;|? z0Uw3OPyT+@2>4xh@B6wsr2YqvukvGv%gW%>pO^%q!0DHix*n&GWJD%@uu9=OAtCgyJG01 zx`A=IprWPe$>_p$m0riIf1hDn1@lddWbrl5?9NuD5QwDmxebBs-pPD?eOTgZFLTrK?&yP;zX%<98MD%Z}E1>3D z)H$h6DgH6#v5g)f+pH?F4&}ZLfSCJVKYSYAi)!QNR)s759AsqONhG=$`TIY*VVXV- zCJ`~m55H5!-#3?C*%?PSXyX)g5Ba=8WE|#1cC;n1Q7N4~iYhg3Fgjbw*4OkS-Nm=#7!S_+7NH=PaK2By{n(d| z;$EFa%Kr1?(`c}Eq}C%m&n4`mNS*MsfhS4C%q}#_b*Ap96z@8z!*hS3B1<8EqaO3L zgn`bv+U`tZg8n$8(FI3QFG)EePl~hZ>^obs`VRhI%%RbnJni6*=QM5WM&o#@5dut)yCi{_dI8TGh4sr`UW!n#NMIZA0MzJ|Szrr6%+}ZePpv8Y|Oc z@BAkfR@;gCB<{X$Y1#!!pa7t+K6v*~AW)MJmXj9`G9b&&pGD5ax>Dy&W7PL228`M~ zYWQK8wuyM&AdS;B=wDSRnX3Sdn{^8#C(ds&PY3Nr25SAk4#}P00KfkL4@vUY8>CQ> z5ZRvQY<^GBMbNe@6dY!8@v_7$kE8Fq3Co*Al@AphR(*Nf2Z*AdF<*D53xIZ?n{Rgy zUQ~zq*Gx;F9T4Ce)^Udprr8oxMWABFl9zl_(z(&+xqNfWnsO!xMGN%xVi%V?tz*+agWaH`>t6?3+DrH4_uqra!hV2^2Z} zCS*I}(}dh)?ILGB2)vKR_V_JP@!H$}>kQ>#wA7yGK3!h8y@_yrreo_~lv2vCJijjH zh=|eXhVQ9w3YQd%JNO_b?o!ZK;3)bK*`=Cpri;)04s+Jvm;$L z9gr6UmHWb;uF;gIOIjH37I!>KEsA~LuSu4%V|b}*#(1+sX87p6QTo0-wR;K=BgFWn zyx$JL$=c;N*Ij|VxuQ33N!~+y{(xRx1o-D9j345?R%LH=PV%aa=(S3pOK%|Q1LPR zcNFM`DH_Dvlk}k9cpGx&ZX4EsD!cOdg3>+0d@Q#0{zpv{!3^ppDmbObIVYyN|M0yg zTG6ksviR{`K{FCUg&(qou+4JQk{TE zmge`D>{u_(eZvZ|XV48bkGZdV#(|u{jmN^1m8lnkKpDxq+v0@Ss9b0j+R^CzAF0$g zLB!`7zPeDXf;%13Yc%HTOEa&NOfvNA%kzyQxpy;SO-DM-8^R78=h#EOc7k!Nc}csP zlDa3!s_%z_)T^I}hh%^AuFC$qr{X$(2_G3oa1o!bGvmImA=q)m);W=No;R`~BjZ@x zvF~fM4Gt{B?q#m?{bI+h?zZjEVFoxpp;#qZTxY=15owYq{bQ@*vtVd2>SIS%9b^pw zm5X$LKS?$)ne+W&)>07oS+G^}-T6Ft@%`OVS8+qF>ih9XmqFzBGgOkRWG;i5*P(ii zo5Mb6bcug+mQPKds-Yost4B)hGw5a^2XloBk=4E!pd3P&_~F(BODk$Uq?e z77v#~Pflges7z-k*Rx+YZw?+Eo})#4mTKSZ>l0+Z6`#8P39}_wpYQoIAyYq=mMfZ~ z6mZ#7V{fVWO{r0tXJ*3X<7Mo{wOIg+VG*LXk?`4yBi8x8U#Y4OZeqdUqVw?~<{mg$ zhn=q|`;`TlQ6F!)q~8{a=lC5nDq(wJ*!?sVcbdNA%=e?-+RlB-Ob^=O3+cRm#cP-!vkp_3n4`yho@>=Qs0Br&pz5){GOUr z5Dc9JrHuMkrn#w$IZo$n17z+InMJ5~;HvMG;ZZ7*Yo{aDW{$D;(ng`>$uXsk75tKK>+!3jT7Ge~f@MNmr9TH9%snXU$-!*05KzTJK3yxa# zQ0_=me<&{Oa2io(*~c`VfkVs!t{&IXZa+jCawMqlF2DPvq&ZnOrmo@LK7rmb!RxEq z-B{Bsu&NDIG9BU8CfVEKzM}m?lCrg?$g>7f0t0*zHP8vX z4U+!;q(CxHl6`q5myG1HHs@RZr(#m}`nPj?PGvWc65d^~)p2Ue)aZ5) z{nb>heb?pFiWc-s-{BO>YNBt=~=hzjlj|(VL9FyKK)|(PF|=#J#f`^#@sb$f$q}dJ{8w_ z{^#Q$t>QwBhdY_}m+;m25WCNzVXHz-=a>^L(>#4Lx=ARGRCF~A(X1toeBqsxJF`~n zi5_SzO2xH^`LoVHtLF~BB+LA5k7_OalzucfXV^=F?5F=x#8RCw?}2UJH42W^=m(^` z(9Vi)t1q_x(x$^#iA@R)@e;hvO$T5etPM9(15A^=eR7zh==ISvWOd~*B;k;l&LcR* zekUh%<1j1vM?$i-5ToyzBQfRL53Y*Y5wmm2Dk3exq0{9=v%%&Qwp5kL{V!Iff{tFk z>$RQW6ggiz1)zRy-9lT?DBxx^io6NDki4H(n$umbxR2Xe(A8*E+*pM#GQahdCR22g zE`3_#Ox!oTB6rpP{9qGzR=ni{DRQCk+~~<&bu!m&;k0Nmvw8ZrmSVb2y>$L+t-)D9 zs5Y#7;(QX)2Pg&cjgNX5;691!jjgn+*(kQVOXxdeM!gn2Rq#;N@J8dn&FZA7Y!xvv zc%-7vXLafTrAIeA2wX)N+m`v)e!(9~%6`guEU=-aUc$Q;Qt`3*qS}zPVnf#bc<0CJ z@UOjb3>udE;GIL2Y;*k4vtI{FlnZQNI_cOF00+OGe+fxV_^Rq*YhKo!N) z%};$pC1trb=uXDa>W|+iDDiYN?I$7J(xV{xx(SqI&6iOn(@tFYW-Zq=ir)0W zI#x$I%8zY|W+Bm1B4s;uwcbZqZx<^&d2hQXUEwgtT2mv;JEw&wUGSpY{>v25dR{cQNxhHeeF$7*-5YebjZR?PFKu>Nw*;bVYi3h`#}ni-9Ua zT83C{qbq?wPdQDs@y8+LjUc^#%msjN7GCJ-z1=^zXBm+e)8>ukZMQ5_x7}M-j^d3r z=WMs#PL{x_l9%K>IN{BT`iZx5jggzFcnd|3Q@q>mOVE2a>II#5&3^Efq8=t`)ARpf zp85Z~9XpYL{p6ykrd_i%telfvW9XH98nNk#ZjpOCua+Nu`{|$Ln9E7wPcEuXTFCNS z^14_9;$Jk`b%85VA(E?7XS2&vjMYZBD)}?FGydOJY>I7Qw_~@K?)kR^-sLa?cc!n_ zhPvUPu?I~FxyA9b?;UV$vk77K$UEx3$du6EJu%k|$ua7d!6I?pkpjwqS{o%oa$}{d zb5jks#`=a0dGgoeb}0d@HaZ@t{LPuojzTfgZagVtOyJA43GT9usAk)Lm~JU=tykjF z78g@~ZV4!J5|-x{Uq!{_vqRV#&1|*%Y_$6g8_b$jRvMN&zaTYrS`HzXJ4dh1V>UfC zl{~swF{rN_AGIdI|8{d!s%aX2oQLj2?7o7O624$2DOe_9V}pX0StaW8KY98822^v| z7@hn64VuOYb#nvOj^ix;VrUF{W4zk8I&Y0Gr!#V5^exS;&aHu}O1>pX;J7)c9&F#p z?Xcc`mpX-a+@NZ!OGs{|>m9ec$i1!Gp>L|oTGGPH2S=;<#YaqMLov3M+;=5qYQrXx z|Ge-wnn4VUVhsE@+Dt-(kJwXkICG1dyY1b#H{%T5TMuF(V9rt2(6o3vU~Aiuena>D zPXpOCxu4lBsS0#9oUBs!i=hqO^7(iT;5$Tq;+`MxHWnlZXjQKyFPE*uWjbF!2IIf zs^a}4saRP}fPa_k-@8?XQ~m##kF_<%!i@q{k1Tt2}r(BH$>QJ$Dn*sn|^-Q zkQGNh6%jP_l8%+8{~8)uhUKQgDAF`Eo{vLh>n}O4|4n3S+N(;h9_M#|;#(~LQQrNG zYs$sB%*DhFtYc>C{mDh`?UhA^cXA)wsx4Ib&0j?=%y_)5@s@@3Vgp^#2c+7mK&v-r zc6|#j$T;qFGmmVr6&)a%P^x3kJBuJbGe^+8Q#K{=WW6o%mv))GjyvsmU@bxxwL3@_MosSG{IJ@MulT0#B4^G ze_{q%9vS{k5yUIe?Oq`DMU`$=#}z^omiZ|Y2^ zkD-~dGl_GV`ARq?%*ppkK|;uczlIq#1I8_hq~L6qG-9Km*ecDvwf12N>F#tH#yIQC z@75ErX?j|~923sDzTZMoD~3Fuz%7ZR(3v_v|&Sf6(d1D-%}%vLV9#E8!cdj0reqgTrNfx_-n z@7gg+7xof0NvQ;aV6}%*-?55^RHQ#S?s%IgKWaBZ%TxX|3?8f$_~D1xfOe)XyK2wS zw;sD-zlpRMMvOEzS(<8N-=t5zmK|*d$22?y9sRpXk~K*&dUd~^qMWoP^nv-&3UP4RMf^Upq&)BQUQQkB-8&9SqT znxEbe-LngrO)^&C#$P&OevR-4EMH*<;K}5m7~(D%JOKpr%8C$|UReI|96oGSjB(WU z_6$Cx@Mxok5QotNFE&SKZu&e#h?meIgZLi$ZmiHWdmhT{Mmd`LWT0fP*&5#Ox^PPh%VuU!n@id=P_^} zB>`KY<(82-eZ!LMA0k3mpxq;me9;TTKoYz-WtR&4q4RxqDeGQi4bda}AHUWI8>QEh zAeP>7Z7FsW(aCvaoYq2KSSauF_|V}pCIVjhz=DVly)`s*ejHE+l$t9l>F9#8I9_U= zo3wiDOu*w}zh@>xDL?tI2j){70|VvPZ8I?zkKgS*m+QIy9ge*VWs|sP_z8EFC-^1hy0m^^uB~1~;P`6PdEz9=$vSnNsrlMT zn1%Y>`TFt=k4bnmLnbADqAcU7$ zO3t=3>Nd1^h2*xD;%C~4DqmnUugx7=F)Fn*9r=7dcy_ab!E4u46j{hcSFvZOS@>#N zG^L-W<)#84>LVSGi{&Ztq8F-Ki+lEctA&qElph~u_PCpTX4(C!69JgQgn~#vO~SNyTxmb z6(?h>1+sjSAgK#?X0MzXI5YUF8A5DND){rz@!hP9J1M%XpfI}Ble5}itu9B)c-~3y z^1zVGe1*2lKV~RR|3UmdK2QuMdDSngjZ_6{JGF5tJsq*Afj>)#+YQWv$S+4 zFYCXL>-^;HrS>-TACgZ((chZ+uJ$+~%T$f`jO z+r(HUxW=aL6)8WW_@FRt{XI2Tw4+OYxsDZkwZ5e*T<%f;FuC*sCy?3=&b%c1gG_o9JSpcHeQ9xsdZOp%b;+bNnD!RXPB(}+3zKfWv>HW z73#Q~^MS9SuV>&Jc8vE7s$oH(hsP+`w4CkzEje~!$?lEtIDXj0n$~`-$gBF8Ty=m` z<%g)lR98XXI(zYjK@*(EG(_Rg->(zJiin?;Sr1Ng4qg4i?ss(kMRYYkAq0LZfzf;h z0&}4jdDs~81-`3FPe#)`F1A}_t0~sG0V5i43rl^dKbl#M9>bF@i>d#7Xpdm4zv$=d zsK#BwoIPBGkL7lru^mvfCu;524O>D%U(C%@Lqtuz-MsDgl?rF4^RROZ%<$K(Z~1v#ctVwJbj04Z4`q6pAd>Fz>nMb)RMC zN$8B*z1RB2kx>Y$RO8g?ZRr;})UzV|*vBKX!FpCa$Wq>TBe2H8RQ~VAUv4Pajh=$) z{RT~bLyEH?%lK4L!sWa8CT5`86ozlEWFRP-?AMBQMnr6sBXXGGR*^Fsv~CL@uD4Z` z5hHQEX}+~bIPH|j7n`Wdbol9}71d?R&$3ZZ6QQvnbcptx&3q`PwN@<(|z=RKHXaOiNNun6f%sI>x|Sa(=SWCKb(3IBv`IBAiS zgvt9%{C?PEnMTv-zhy#)xQ7br7WHZ%9nqqLliJen3d6)&{tR1~%3QMqY)X*(qDV7)U0*C5)9(a+ z#?PpK`F`yL>JOcL`34(D-*~+&(@HV4xfI~_=2UAbj1uDIS*42#j4|p!IpV;M0dx8J znF0kNOUDa-x% z9*t8C^|dIOZ|oT_jC0F?$~d!&@`nN}h_*C)1$qpA|kTlnZy!>+eVwcg@&`+?419LGWh4|5_ zk*xDS@z^|UM2kU_t6BepKIM(;FSpDvmVKDJ&FtEDeV5Cj4%Zp#P0Vg(u9KEawpns0 z!B4XC34xmSWL73XyB?*Zbvy880O(^bzWGb=!1mWCpfJv$a5*o>&awr)9POr~;`mkj zzwMCyOBuXU*xBuaY)h`R=kilT7o~}CaABqe;Jq^|Lyx63MdfSQhEVkQ4&|VtV49ejWhJS@`GKKGJV9<@5Gpx_fFgF?ZGno?_)edQdtSbN)@y#vMlJ^x zE-c2TMeDFXY2-Jb40X7i+%4prqK~2_dDZ(7UY8*JpuY)45~*CF6cxn$_N$)e)=ixH zibc-RSPjspJe+RxDw&_%8ez@4We1(1I?_!^uuUoT$RJXiv#rHFgH+1}Z_3cs*+Wc%zn>EEDeV&_Qi5uaBF3SlulgbHasz%{N?p~8k z*{O%Jt>%1z)-m z2fd}?rLrry3II+}(}T+rA$ZnHd=f8b^M@d8t0RIVJIj9G)z43Qx|NZYwq?ZF`4x*k zO1(dtivL@a9&)CeAqofIUq(jlM|j>}m~NTFMabVlf|i5C>+imu*gHkaao$VaSSPD? zL*LE{HB;i)Y*Z^>epk+Prn}9|Tiz_QO$Axwwi6?LA(JFvjK+~+yt?{I*>^f(7Kf-> zuUK?|h52k?*7RU`g$BR<0@RbiW4t}|*okQ4)kRG3M*G`&%#ZQlBj^sipSKnfw4p-q zEio~P=N8CmVsiLMSI@6A-&(_CW6-&T*m@`D0Z<421Lp#Nr$D2!6xi)pptf^6!N88j zu5E*`JM7{92)~tyHA4u_pG6Y=fRTV`*VQ{=lYQaFcDn5)=M$jZj?+SU)0vaaatXu7 z3y%xlMi; zKgeNjq@OoE?K84(KArrKZz`=Y>uy{uEn83>aldF2Y-g2AZ!JXswMQQk-Rp07%EfzXraUBs zfORjT^WMc__p3i=1ykQs1sZrYN_h?>1K0@IN8V$eg|y9=?W(|NMR^}v-tG1AR@@ozTWY`pd?!ira4BVy6-^=Y>}1W7j={`7#{3kd ziY7i<{n`a>u1(nmb1%tAa7P*#cEZ-T%zNpDLAaXvgdZuxN~TAs!_5_vfOYbVz{wzv zB5)rmQhYX4JF0x$mf67K<~L8+rMQuB>&s#Zh-UPSAq7n}pzvrQq}mLD(VXSLQj|se zSynOa+AxLin>6ZLe+p&_vuYpkuX^3rc+5>~I-)L>QuXt1_p0LUvMg<4Me18t!Rijy zf7IhNW7VfAY*(#|Ak+@FDYdnj%IA|14B{U`lU|U06KMU~w^C^* zgOg}u%0Gk;u)Hy;l?_}bQVm?zibc7wl73?%{vviSQX(7ZL05!w@%_a%c@aJ7H#>^S zC@OlTP0Fv@*)D}Tn2YwN8H@JfsuL&$!{`Kx%0HlY$~sA7F$;V*r0q~7Z{Ifg70PJp z{`>%hXl6^T1%<7w=IlrfEkbJ{VD-=kc6WtGetbA+9TQ~{sS zz?v9eu$Kz#D`az-zaC=IQGBDpK&IOhZzJn>z$nI}j=M>p8h#w-r|m*Fj;NYie`U-c z?28v8{snoPM7wt7-M50tGoT$Z+=cMQRLU;e?*x`xGZjnKb}C1+?gC~YmgqjA=vvHswWjLmbzP%#3!Nnq?+wEJhV{`sJ$Gc)2udj zlI9(zdn%*s_ppuSO;8-;42Z&D2zb?lB=C(j;HzE*>ivhoQb`$tVVcT`1{8v^4|vW- zR!Lt|s&mNqzo@wMco*&RBgp!pa-(;p!4r3>3w?L~hNs{sW?NN70DkjxtFjNGGR~*x zN8vp@2?K->>%TKZwd*!%ez#Ohtxfw@N0|;hhBbm%EBElt_`9?wap@(>X5eq|590r3 z1fo>t0sBN$D^|60<1KOdXnS-1s6pom+llLf>xb(z+>IlUK)44t$S-XC78XH;o-p11^BdCzpeFL65$)lu;=GTx)8%2 z%;!hp{U!M+F;DC@daAWxzOt#~<)@;k`$bxQd9a<;!M3#~g>=&->$p}pao1JmLQ8XL zprv0kfGz{K!g7f1a_(2xGiu(7KE3Ap4apuRfM6ff134I1qQ=Np%S~oK0*Gi3o@r8L zRk9hj&3SMiA&iyUiwGCSk7s;;`Tcv&J%UAv>*=wAch&&?4W8)>X)<3gu4690Q*?n) zZ}z4`Eb*R&VD|?#d0LZt_Yb3lf^8k%MG8v$5u&t8>#QS$k_4uM8xG1j!vPO8`w{ZP z-c!-4Ir>3i){XS@X7bOp-w%>N; zE2p$eu_eoO?Ai@Bs2suphcvX8((nd~qWVerC>mqIg zBNkoAQzk)5{$`k-E4B)$eRoo}Svatoht&_42IOH$@F*IbAi)s=8j!>92@3~F44%>L z+~Hk#-y;t0rroNG#+W|V@(rEQ)uz^_L5|1vG6`mGGDgvNnugGKu;VDq|Ew#ku8c8_ zVYBE<-s&{t4(ccWUXz$=4iF6d;V&-5r7?rwWEC9K+kLBgjA4MQD|N1AW=Yk@ojj56 zV0CLSPx!1a7`Q|)7#JQyTRO6FYb0V`FNI#X>}kdyD)xuK9&3f(0t~(wquu|b;E2#@kipm@ zO4jfBj6ZWM!p}iyxQJIC9>#BLmG#MfEA(<>Q;Qb$4G_istm+#WDdeEW<<}l?S*Y>4 z;A%y?s5@+qZE*ZY-t+vDe`9~8qADB5+0z=5MX)z^X3IBPA1N|-m-^0-6PLnJs@7^b zwTJ62(apb<6LE?0k|TI2FPmat8{ zhp#LciDDsnJC3&BF58HWFTONlZa6tvcaGh_h!eossux}M>cVH?f5E4?BUf(o16M2( zmt9KVF1sG+JU4BKro0(GOnLLY2-}NreVDqc@YqZf^xQn9d(iWf7F{y@2lfi-1J|fu zwBNFbrs5||@pj^cTXPc6;XK1s>5{D@H z=)s$KH9-#a!QU_nX`@2Uxq^Xo!r0pk7|ygluZ+opF)?&$)g``QZtHp?*l~Q97OdwN zN5GB$bY<#s+Q>z6ZPz<1u2!ULMtT<;jh*dFhqBu~I^f;Ii3)@~qma?^nvUxf?{L6dOBu$4`?t?rAHMAZL z8@3^DdSQYeJRg?Koxh7VE1o${<|;HVRXmA%3FAUwE3;N6XX7Q1!%&MT0w5Gw*so&! zH`7=qfQcPgpCadcVshUJ5)AE0MTXmTN=EnCYmtQatUaSX`=$r>JcWkztc4ANY^7wF z`|j81N>O&t+*qD{K^<}tJ(?lWFO2~`LVgcVt^SN~1EP45_xD19J@o%kh^d{k2uRbt zP-FakXHQ@c`eH=SnL+hG5U0NCb9amQ^9JWDe^B+RI}}K-ivz3tHI=S>@9iy3O}fNH z-NyIwb|_taWj-Z!Xr5j0qp3B5ySM*cYF4}GXo~CNU}iHY)!aV6qVwF)CaM+6-*E-1 zcR?Mb4O%;?4O&G%)ap_vEU{yaK;VTtuC-x%u5;fmI~XM{J1*n8?7IFgc^>b%4oFj{WJk%hr@$P|f|=OWD@ZgBXnJcJBpIPLihPiiL)QBG|0~ zSM%o|T+P?P_;|v2&@e94{zSYIaSy8gPCQ}>EgWO|VEs$KCBw0V@LUQi4X#WHu#y zpgUTV2;LsIu<4{sRX4tE>&GL(H?|O_Rlc3{^FKBD(SkR=pVsMDCyPYQ&b~rP6)D#| z)hke$#E`<*UWKn|@mW3=$j{V=j=A(kiYE$%*5;i$UPl24I>XKsa|I}r+mdM{%wu8) zL{bp*V_gqIWVs}coUwP9G&b+@io}PYViG#e$EIA)K788|OkKi&C_@je0*lu*9(l>B z{75jj&lBW^ABB73OI>*$A8(@I5KLeC;;HzOxS?I<(8(oWtGkti8=~PR%}7vIv+y!v=M%xgUlmsr`f2^4~6O;I)4RpN5$Cmvy)~Q8B;Np zq(2!ZU*b;U#_`?CwwsrxVA4#La*xE+nPu+(wP_4)mdJQOU^fgTUQJNW3nWhiC{v0O80SA4tYEzeOH1XH+A1N*q{j2_ZOT~C=619Gf@!tJ*o;Vq=3+u|d<=6wU zf~BIS_6DWYuc?#QoDirzCtnnA*rtY$3h7{=%Nq;S#4bBL9YdGZ}mveEs zcl<-$&zrUbNG_2&>M9^-sMoXlym$as1KK$5ZFbr!&(N=pMFO678lMDDGd_rRP?&W+ z`8Awf0bIxO^X*rAJgQMxEYrnvftjGCx`o=n9vP!VKuO~YcMOSyQ(ouXW&yz$XJHHE>*EW<;yxe-=q)xcDZ2Cy20foQ znis!Qd%*LejgkPlU?_d{!0C^~GwAa@rt`rtW`=^_8n>Rv-LvO#(ik}#3u2qQx2xVV zcD?>48ccWT$>n|`+x=P>B`2h;OCZ<{ zk0Wdv`(u{3;h~C@h(*(ODK)ls=U%v0WB>(o6sP#peeXHc|X$91>KBJYbd@^8Eq*fDM zOoxj%C}z1Z4t~UczBv!kuq^L`CDEql9MH!2YME5Ug)V^tg*`$`WbSmeaz$#78ZE4H zwfCCROzi({<3XRpJho-KN4 zLa!n9)YNxXe==OyUo8n=yc=|hXZO*oS@~M^t>)j?Z-tpI8*?LMkF!x&x>k~8AoHAn zK~g7duegPe<1e^UH_DCYv7X^<+}Al+vFD>XZ=7&q&u4_*IbxhmX3A$ACTz_J9l3;3 zcZh_?x;;+yd}%c3M^m-Wqd9w;T5zqAvyv2Mrayzysk29F6Yi8FS*!EddZJ z2dY9&FF&lku16IH#t|3ZQUUhQ7Dy9TeN@KxYZcc`gW3Br`yq2usX{G83KVM4`vyz$ zL7%cht&}+JbDMBmk>?YUtY@fp?qp~aafawi6;7p+MbRK~XlDG*K6rrt;6D3i;~6`E zbmfVJ>rw}m9#M)<>In{&i-=bWiH={I4~qZCNLccmP5PjYLNCST^xx_dfhW0HIc!`T zNZBGD6yLMn%hjNnLiBc^e>fAF>r&g5sz%`*z0`I z2Hfsu=MM2l$r8)E)+@!5;>w5+!m*EP@-{nLim8Tt^*#wi@r}%C*NV)gX=z&5CM)j* zQg`LpLcT12rv!dd0BlY?GIz))YuD zFre3zA5t5Ps(%<@R2^ia+lYx{!5Juhg(d&7Y*aCROc0^i%`L6grMSt(=V=icztBzkD>$w6A zc}g`F)#Ggd>HS1B7P5DGPPq!Hhp^FB#EsFG83h^IEgvQ_4Q_8QMc`vS9adIFU$3Dh zpwpKeORrJoHZkQ>o#s$)O&tEmhRO@MO+BG+pUzw6K4Iu^l z5#p8tDj_ME71J-3FH%2dnnw0xvP0$=Q-lB<8EBv6NN<~MO_uMz;@!Rk;EfFzQxlH| z0kx_pPb@|td!}16@M#MgIn|+OBbTn@UEeZ(-qbGs-EB#m=I(ar{q35FWN+)e`KG7T zq?x*B^Mw*LH2pG+E{KK`C?d(;;M++tKbM&US&L1>(y{S2v$T0j-@*ZEIiq=Vx)!Qr z@j;dqp5#zLdbGiM&{B|T zG71$reo-f3O)W z9eJS5x-TBQmGB##a!sy7XGaOb{;%sSw*BYd^hnF#mYW+@fY6}T`L)a7`_G`pVjupa zbof!Jqw81r?XUM+?bb|YgZ1#N6{oDQf6YiyJ!{ft=LtIBafV(A^x&B^zHnGrF(*AB zLm***wJ-+38l3`b$^Bbq5xJ7_@E2msITa46bV{?+v(zrt?hS!+_14!9rE8}=$~3FH zAlCx!>-6@a1Aae*PV3)IwT8?)s`aa}WEyb(cvo4N@8{%1anYY+L;BMxNUvQ5gD&)} z*XNWNXv9#qRWOux(oqhdn9qKEGE9lr9OmYJ#Mh9x&$#zhs|~R~Vi_rwdihhb|Cx)` zxUQzevdQ%e=E8gv z3hrN|IIcKeqyX@lXC0l*Q{+S*V$*vKgl}>c@JIcZiJO|Hc##I zCZUy+Y<13QaHuOwQvvMVVyu=Ewj%3t`h4Lk&gMv)Srb20s3;6b`YHGBTO5R+MGk<0 zV`3Is(*{IkoVqsxbE)+f*?Oe_8=QsI37Lya+sb*s`%E$1L7zrA(gCE*2!I;h>ti9- zlazM0RQJg+%!|v=Z9d%DpYh;{H}K(o8s~qjGk=ULSjn)IeUOh!F&bg~1lH9=f>~QZ z9hV{a)i_CywnkWGV&Fqrv_s=B_r&9`<6r=jVSIa2NJ8zf-pbqW*OSHoI>CAyoGa{y zpZgR}!DONpx$dBuB!HJ@W4!L5imTq-4sY@K&OB7bJS2kGnpex-T=^li?!cA2 zN`Sx2M?yWXbq_D%NUzCeZBdOcCl*t<>xQw^db-81u>CCZtLRDg5E~+ zR`T&w2~?_RT@AgedT>=1;|u1U`>b`#iW?Rbgp7bs`} z!!URzBfJx?z1GWboCJ8&n<*H|zm_i**2w!KvyDQ$rH1Hc?iF<{Yld*^dd<^*T0-L3 z$**F8M5{^C44(9ZEH&t|{%140_T9_^W{2)*f8E!eA?iUitCt~q9%|P3tZde(N7+R1S~sj+ zRMmKffraf+g%(<6VhfX=TYUQ5b~VTDxBdW#5_*ZyxW~Nh&DL$P)#S=-9B{@|C^=In(B748n%PQDu$%>JMd{p5$s0>Xn*=JjO{ zRR_Gx^4Y7857k)i0Gf|by%#5YOT`dUSIF0OW*f7%D_=7A6h2IMKdl_Yt~P24i`M@f z31V7*FnI+%p?Ddl+mkNX&@QXW$Ii@xzHEMbjawU-$|LpG*j%lC*&{UvrmJ1?Qb-~R z^6@VS#<5hk+$&dN(GF7OQjLzaQ3r6*%lSl!gN0~bb{HX<%&t3=sPEi4UabpA1PSGC zkcSJo!%^4U_4~3Z$OD8@ZMu`%8b^{G9KkJK4qzp+TEwmUj^gSl1~h7G^8YCW{(8G= zd}&IMaI;!a`=Xs$n{z4K)dn>&vU+a1_L%K%=+(pB@D@)HzrrzcgU?XFr*(YgfN)G};?x0RBiY@wIOa?S8BdkonD93R=6?c4fky`4vX-SZ=c z`({)0c5=4yj-q1Flil0@dMago+0eX8>}^F`*rx4E_pk`vIhM92(f{{&gI?R3zT8Tb zPo9 z0N$)~1pECJx*Pqkd-ZFN-k!7%bO6`CT&Mxy*`&DMp0zW%|3}EbO0`yBj6N3G>eNet z)Ou-3V|(?6boj<|xEYep+vb*SJPP^)pCBlaA9RJhEaO=uk$p3gEzJJD6wMsHN+?{^ zINdcl$vg7>H<8h(*u@c9%Y0(R{gWx9`uZ9N{I=1vdjDof`?dAj)we2JvCZM;(-}2# zgSE|SN%Ff7X__y ze2yRjp{hRbJ74RZSr6 z>s2e-`=X#HuW5h$*29-yWamnGR`pBXme@w_i#fQuDBNNLkf&>yWm`?V9{| z>X4d8bVv~$QbdOo(IG{2ND&><|Bw#p^6d;8Z31l6qgt&$>9U>akU)l@_-$xdIwV)M zR)^GAU5D%1YPAk2cRSM|VI8PLy7Qv^>IEO7AIYy?@TvD;Z0=K5Sf5aN)SvbD!AMOX zxHNrm&vvFmVtp_+EI)d|C;8Dg@%gnxf{*R7813_Gn40?nR%3suF2(%lSz8~`w6%A& zT8H%HcE1h@TZ=lRhr-YyU0bcyA-%Gl=?$=sKGlIbq&K&#bx2SX)gk@+lIoB)1?Z5j zuWq~!>7(sThh*}Fr$f4}I#7qSay!#KFd7Z%kaQXy&c>kf4e5}s*XWRT1(k0|hor6l z&~~OnV&xmsA#Kv=kiJ!q1$YaAI;7LvnGOkY2I`Q?8l^*u_T?8h_tmXKGVNeGB=-G< zr$Z{L*6NUKI|BQ$Astd{jSi{R4)u3;Q?*)$)MkfThlJk)>X6olp+jQ3B}$s1)+)_V zE0tzQ@C9m{5>(ozSe3S^xzDlNN=rD77d{GiiVi7n2h$-9st(j473^R-B-S^N)u}_; zM0H4;QoQ_-YPAk&7|`gf=#XN34eOAGRew)Z(|*crud z?T|4t)rgr5VVzMNQX_`@I3`W0^NeC6zB8|Id$oxu&+;d}J(HpXduCqg6x`SGy&(h2In_{D$cV zzlF5E8Xe^we?dq2GSyLnWI&FFp`&a`-b(cdsc%_mo3BeQ@(!c?gtg83#ii6;wyRfn z$#j%VXQ|d@&a4J0=$xdxM7?Fwh%OJH?y}?Gpu21r(OpJ#ml54%M0Xj{T}E`5|3kXV z=3g*OUJaQ1RgKccqrYTp0z4Y9`BRRRK@dB^Cy@2{3ow^AXiHw4j<+dCwqJzVdh(DbT@4qJ!jR! ze{l%$jg;H58>z|XtM0P`Z&sbRx}No)Tho8DtJQnX-3@6YlxIV|&bTnnTNTUjS-Rkf zsy_dTs^fjqiK@k%+vh)xwagcI8motD4a7n4gk#lDNY7mL`OjRv9M4hRq^?6gTXnm9 z=4xR4NB%MMg65g$X!NHqf8p1k-XZHx9}Yu*`g(x=bp97iXNGnBCrE$#(HCm{=^e8E z^qEVlKdlbXpU%Gs{ps2-nEv#RF!iU)gY>7{zF>N{JHphT>NWbyy+P$0(x2X-(Vu=D zRK6koskZ(fzF_*(JHphTR%`U9zpKXryoEshDcQ;Nr|df$+qg4Vefh;@_2^HNcQXCy z9gWhTt_aYdw%Hljj}7Th+i3KsSMF4QcMGf4=gnNTQ^x7?c{5N0J#S`1TH7Y8DwG46|o}@mRCRKGZO>-iS8|E7;Y=iqIhBBe%kO*Iu zN0{|i4z0)Ib1W{JHs0shSUA1R=h#;?4PxdqOgwHU!^9s3>0tk{lj&et|4yw_2U|^b zu+=GEex*hS`^ZkUAK$1jbg&iG%#ZI_Jv!JpXeH904)oDC$!f9o2khR)YAe=3ExO*& z+H?>qtb-{U*6S^~(RxE}6TLAvMsLcE)tmh%Lx6k>X{pf(sr?{5wF&$}p41rlg?y>8 zAEsLM*skV!IxBL=-%;pB)kRloX%ulBFPeF;uju86eMPU_?MvrgO&!bkIT{Ni!z<(; zNh3wiPV|lCuZ5TxZY<9q;+ho*s3%sK;HE^I?mzt=?;$0j)ey4=m z>uj-qT<+iL*V#3q8;$5jBf8OuZZx7Bjp#=IhjgR;cQL$u4DhzKMy(sYaTk+)=E*vN zVPWY;lWMfO(L2<2xNJ3Qzs^y+m|y2S*{^fVMXwEB=<}})UgYzy4PNA{e{HZ&(+5eK zKA5_T`E{~B7$4T!;P+LYn+tt`YlE?MnCk1&(gHDS&dpRIcJw& zFF8-vOHK?!FKMgM>LnNNV!9}-qeV@iUUJ1QwO(?bte1TDlIkUo1?VNyY8tPX+`5bD zCFg~ymvq(y>LsgpF@4s&F!hoKjb89*Q2B=RlDQha>{O%GOJ1=%upb-J zOSaYMC9`&`zq>XyYQN5&yVZW3^JKryjhAd~@Iqg>Yl9d0aBc8HpR_i3k;<=g%x;Dm z+tmc>6iatAog(X-$LrK79-}(NV=1^w7IlhE6|osKTC2sy&*SRPy0frmk}t$q3nd1g(J~X{U9ARfL6}yyt>B1(LJWgFNj3T z5RGxBbiG9Hd6KK=fF38&0~Cm>d1pjBjx$U;eYbp8Ic*(V^Xtc?143g`Q)o<@C1Fxy zXiTbETWnOXEv`GgJES{)kk=lc@UJ;OGA%z1*B!Gp$9?{WHOEbWSU` zz<4HBu0J7M86Qu-)Odx5eZuBGp~J~E<-BUizxp#si=(nk2Dy-dUs3cS1I(*8LKPn2 zEeoD*&v?LQ#skp*(|P$xUWy8_zC>fWo=-AAcgFSq|oWlr{i=+4rly1rBDDoXb_ z`_a1ea+}Y}b$Nt&7OSeCYD2UEq~?* z3oUOwgylWLJJ8?$eo5cM+IkrJrBKr^m+cAt?wotryPG7xy8-mwbqjcR*-E<}2zqy} zJ^pt$Bpu&f3VnBZ^xeIyd3U)=8;?R8AJVk3Kxv~*^X`fu9_8Maq+ObacO8=C@mcg; zmGN<>iNZ&vI!fezF5~&r(ldFSi!BBY+sNuF3(+4~*L})6ng;#Rgp>&nz&)t5}P3Sjn%xc#%jl^y2q;W?KP5S@2ZB!|4mB!Gd1lmQ0j7pRoBok>bgs* ztE;B2GNrCQVb%3O7UJubH@ZECN1{#}h6LkGebm)|v#=8s|YDXC`d z@2F|NshZVwOIUR^t!}ukmP%dyHFc#cbrpqGSBEg_%Bl`Mhh1CE=F!)K=F$EvO?d58 z;5>R`HJeA5YUa_RYBo0Bi1Ik!(2R`{N*iv}Jn!i0#=Xa})eVo0@?^-j7q^H9-jA`2; zEs4^4-^KwVY^L`Lk0kP>h_xbL98#9pe%H*)|Pw zb?2f5yaKugIrR z<6GcJ4`@>xs&}=X>6~nWcl2{Yi5c56Gto?}@k4s`i}4CCC5ot#hSz+U<9M5{7W(hw zu?x~@Zf;0UzZl2ySo+(JBUCoF(lL=nV(I(Tkzr8Jct}f#x|t-H`;mku9Z5p8KoTrh zkaS&QYJ$lJ{XX?@Fn#kCQr@9-{gGWw6mv{51X=J;GD?3)DI))bMX6#Q03=n0$!2)u@iq zL5xn%u^1TFFh7~%P1yG5NPCh{n_wCsKV5qg19$zEJ7X>PSbGvh|HeZ~ABan)cd7Jm zTl)73`uD0@ZfbkdlV10)wd);TLL9H#_4j+=_mxT0G|>0lSn=q zbQ**y{7%GDxZfc4OXH}G%#7ax_c*s#hxpG(=e!?kB;B+KGnc2JNs^GmY+r%MMs_ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/video_type.png b/src/main/res/drawable-mdpi/video_type.png new file mode 100755 index 0000000000000000000000000000000000000000..a4e65b10fa2bd953125250ebbbf3fa1cb129f603 GIT binary patch literal 1806 zcmaJ?X;2eq7)}8TV!f%zQCXw4V#!G$$wI(DIMNab1SK<4Wl1(9XtE($AY3XQbf{3} zP#6J~YbYJWNR?y20V>o135N(?1);PeDuRNPg4k{-V1Gz=X7~HPci!iDujiXh=KFfB zHnlXx;c%92KE}QS(X44~u|Pe9r~r|m(U1zpvBgLz3~=R87#sjY;+TjQ z*cpd2+$jqbqC%bzC_>~!Nbf_`$dwoxhjVt-C?U~77zIM%FqwjdAFHj$12QoSALPIz z^OWweROTJ4f(5a@fuh)hBBmJc>H;`xK#V{RqY$8xA5y464GTZd3u1e{nS=-CUC@Ip z{J%*Fd3?YfQNe%%(UBk`JJJCafO_V=|*NS?H#C| zWSWQjB9?=QBIU3GUBrstV`{I{&*iWKH4n@7 ze&d}1nYlb3?tJq0LBLO^a&Gghod8oYW4C9S~C=gmAen@u8uifv!H+aB8)><>_0l zr>Ccg%}%r<5D3o(bvmB*!68LX-#hl!ta@AQa*U@)j}Dj`8C>cfQLJ6Nc3-@U4byhK zvMGdIJu@@&tg5Q&W_%KJ?B&byyz}S5nqd<=A~C(ZygY1DQim%nEUapiOgJ*XIA^`4 zpeNj>%QDG8D6cH?1N%rSb~ZI9A-f`;*wEjp1?Edl~KRzQ=gVvQekY zQTIoq4BOh;iY!t+!-^VvdpF6#!||!9sYd(KQ%;}Wm;_00r)6fERcN(JF|M}nrHz%< zm+OU>dyRW~dhX$Czb@?B?d4@$<;UZ#$mg3ho}1D*AAMs`6TIeIc0ONw|Jj=|*L6Rf z_1^A$JU7?6-S&3HnY_H!yUu>Mij$U=WxQw4p1LSklUQH7O+igG8m+Fqqr)#{`?@C< zMg|`Nf_$xZU2ktMPGHF8a`^(m&7SZ3kAmTHdGXu970o&O4PMM1N&71&J9|LIGY3sZ zN8E}{MkyUd#l|2sIlt>)%ecTz~V zv^#_MGYrR@8%EGAvY|Jz31zpQUvIF8$lhQ)IHlPu^!X*stWw}qQrgt)266lg8GY{5m!oo%+hyx8wC|>P;&K+VyjO+mE~*-H*FL zudd(wt!o;sCtIv$GHYUwvy+YDBMPglchKos6?2^m6~mg$V$E%Hbe#I5ueJ3`!SwV{ z{VqoOfOdDyjpV*pe7m&3;B(&PB_$=NZ0G!&D&JKH`PLdAs=U(E9xV O0000lDoI{;5lg$;*gVS;6`QpZh2Hn5^uB-Wvwyt5=Q-#1`+d*%^ZDMN=Op`h?bgvY z(MF+AI-VXhUt|ZCpS7!zw?v_Mg>1%BH-_|UVVE?ADTYxl93cw^Jo(IU*cWDU4jpWV z9Z;xMa-JVU%AoJ1u!VeE=CY2hoG(JqD3pV;yQ-DF^`{mNEf3KT05>$Q{A=ycFcTEQUbfy^1u_ z5&Ym3gYE-Rg<=>W+S;Mn7&{U`BHLn#BocwN1HfUhLPa$9^1RU^jfrvFR zCye4tbN^@yxjBMdsZ>OPpqQ8#+Zep9P#g|n$z(Ew!9h428qq*Y4hf`8Ia(kwUtyrZ z61JEplJbNCV40E05=KiMLB!J!A@D_X`X^$6VP$!$>s@`h1-@3^&xH=Eau5zj=NaM2i|9z!uty^NF+Rgj3Z;w7&bW! zO$fsi(Dp2tg|_El@h}I5VJsF8e#CSB-wZ;CQ_ym|{7?I=h>)IKK7JYo9fszA<_hug0}LTdQx zFLzzuOB=~aWOeGq3C)FwpR1b8&COSRM~pL15G@{d@Ni;WyJyL1 zKhv3;n|r4DsG2f4J)Le6w6*;1w!-y#7qE#(7iWiCyk^F_Y`)ZVVe4Amd)Aqa8Ek8d z>dGTJhr@94?yQc3Uz-)rO!i-kZPi}8Zr!oMq0npB>&9$l`l)6{O;&F98G07n{j$2a z#}7+2jr74R@QLf>WxAfJX~B!%M~Y#YB7;$zl9iqPZFjeq`wfD_`GCNHn%A#oFL&D6 z$vUb)rvoI?Ib>aZny5>q1{c_Dx;@qLRQN!d*t-B_LsVbi&m7|4ZB-mT+#EYV$RS1= z+-zt#s6GGoO|xHe_r&D0gx5+X?M9hyDc&lQZrVx-T$eQHS? zK2IDN2o!HlD-uDyd|Gu#V`4oh4cNEuG%qxC$jipY2GhFjmpvy=^fI_V4VXF~*(w%` z6UI6^I#3eh?h8BDa1|;NLA2kecjD*jzN+)S4nT(b)&9P|S?qRF5+Ps$%KB!>;|H74 z(jDgJ#|Cf57sMIp7uUMCbatkuE0tobDnGxo(ha-{9OUBkyw>3CCdNTR^dAUKt#f&c;Sy#LY#?&A5wztb$Ez}PBg)|-6$AB_5)7I-& zR1|*W&emCDXlQ6J9$kBfEv)X2560o~Bl9daDGOgTJNPl6xf5_l)cOji&fpcRl*}U4i~R9<%0WJS_eQ zmf3~IP6tl)e;dBvB4t-W@~Q9B7{_IcO4va4|uof~h}@T7HK!G%JKp-q&TbykOW zV`HO^yN%9X(#f9m+1XioK*G&=c}OcJx_@YBXur0`!eDv%U>haxE7g!&s*yJT)t~>U z7aVk*s7R4^zt!2YNv_NROJW9ZMH_1Q{8^f6@&i-0sC3&tH|km3Jl9gg4r+P$yYAWh z$In`_rmL^NeJiu2<(oRpA9>o5)ln|RfiKclty;A@;Fp1cd9f}Cf{eJhCDOCRX<1O< z{zsFOqi26tss>b>{m#u-RIC$UWB=J}ba8rqdZayO0hR_?mmzbQ2{3@(XVii`V6P}?1<-)dv#bQj%J2%Hcd zSMB&}U2<~rR(%5_U0SubhCUCMRXF;&N%NIFDu;MV587o}W^$&SP*zzP+asTQxqF`a z@K|lL+{eU3f7&%%HTF1X^H*08_Z7UjN_W9h!+U1q&~djx83 zG$|=*jq&x*)J(h8U0htAm{y+)(=UVNT#rYCgN<7IDksLe^0P;R;iPy|6h6bZs0Nx~pG2gxFF2qGX1IZ6(a1O>@iFpvc#O9n|Q83ZJQ zBqd7D$RIGc2h>l$&E996E^W0KE%~^fNF-RdxG7XoS!=w zj{e=feC9YeS?~b{13#X~A>=ZEe^eKJNksr1xdIRz`2Zsy6e)59cmUwz;^N}r;^X1r z6P-SFnuwGTAD@tv{MH?f(}Be z`quCom%VSdBo2L)+S=!JxC1v?YLVZS>(S~)Qt#3ndCvF1CXF|WAJq3cO>Igu#JqS| z65G%>y_H_t*gvzaVdCunIHRm-V0MRBM$^-5+t25_!$zv}^+NIP#N1>6w=Dc+q#Iin zxSh_|zI75$$+Jv(aIJsOD%^QhcLWJ6nlqJ#?X9L(`H7KniEu$_;ZnjO2i;#U-}&5o zKj0=MR#Wyx@^@d)3*f8@Psoujv%#NU(z=aHU?rQ>Y4d6JMJCI+ymAKG#|M%9lg7iw zT2HQ*ta?f`S9ywds*YTc>dHK1->MDjAL<&TwomEZ!?`iPYFsifH{KMvc299|qSNa`$GlmVq&`BqK=+zY1gv7Rf{otF899@?Yocdj0C3p`=t_?a;tTBas$Y!hhJ4&MQ_zS z6A7=BiW{rA2j8l>=aE#kVAQc#W2Ob1F?j z-XtoR`n97k?Y&T^oh(Q?z;O)Bdu<2^D93`GC6%(-}=uR){nvi^SI1h7uAz3ub zq3{T!A?pIZuhE)(rn6w4*T&Q*ic5qw6jBT(x=PLi6~wL={g8kh`2}J!w|Adxueg0M z2feq`?xN)jKI-v+zt)IiVwQshQ6syzxp6r7S~$M=tnM(qh>9=0UwkpTRk$xoj-K|L zlotUK;L5jM3?Il(`7rTd^wffDt93?~ZUJ=u>C=v9)S7#mE4nvw6RWmOGo0p>mym#} zonNEZvv#gxlY{Q9x~GQnZUTo@2exIAo~~M92E!#w#iLjE2uv5LW>a8?99|`(9oq(z zHIaf3o!@qMemF?`YUy2STeq+4sbAQ*Bg(WQR5@6Y$b$s>zNsUDS)A*m&F+;3{pE1n znm7JUV`*jw6BhD!IlXE<&6={SY?|Mlsk+tFZWQiahd=@;d!n|h`OWF32UQq^v}3td zSAz2H>7?;$HPtK^*oh2Ow$o2c&MhpC&Q;9tuW-&$jLI=IM3fi4*1N(cOukj(57%hR ziLO}A#pbAT>G3X~PgbS6wURR69=zJpP_w0?n3$m6cM0#Hb!+HgXBY|K&QxxjW{vgP zQ7wf#^$EfgF>Nq$3TM*3)akotJ=>NWFsfa;T2NdxXzMAJPs6t`r&+j-1magW2g>E= z9UZI1!&TTJt7XmhbCDEjn>wXcT8)|nLiO}*i+Z$5XOmXenzwYREO}Y3qVv6(tXR7) z>8n-e9p;@eCI^Wv=SKEyb5jO<9eoic4}W#|Eo#WyvrP_?AxOAdY3OOZ*RIsRTI^n` z8)YB7vuAT>WPT}OJjJ$Wn{46D-r%U7SVPkB?uu?@C?~={IilvJ;e|fJY5@;4YefVj{ysNfgKZ;JY5mW&Kb4v64 zt2S-z>qe!?*x!^sdUJ!7Vl&e^?HwF48qw{dO<;+s(N$Eh#l2IQ#(>ZtL;|v}51$3@P$dLD&|i3d%QCYs zw5o=utmYg2H(u*K!6-Gq=e?bDhm z+Zx+9Bpu0a)fau772~)>RlijxoNhSnNL3yX33tC^T~RhC_}bG-vs>P@kKM?|QtQyJs!B z=SL*KwEEf{5>+xMitOFyY7WO-5cH5^Vu~WuP$Z8Zm@yLVO`{Ae8hk6L^|ofkzrFU6 z+D8ws8HEDFX_Kv+DS<&~EiFxD+2S0h$D6r*Dh{aa#_sHld?W|`OhP~9*XYo z?`80J4IVPD9zZJbMYE}Ia~$*=Oi>W-O1cpe_w+Pr%jGSZta=wtD9U=?++bIo15t8KTJXb z_jQrLi#SMEw&*R-i)Q7SQzE%{Jq1Q0OVg*J{@=7$#%w+wAc1*(B!IO?f2#Jy!JWKZ z%h%St_Y4O`FQ+t)+@9!OwrMK9ccA!9Sm~QJy|6dPdnR@7++nH9VU&*RFv$$OKQ?T6 zORs4}?NjJ`*YRe_l=0b0w+!39)jR~Nu~mI@cJ{WJ^)j2C;K879{Wucn@v;wqY3&XZrUqSY+rrm{bHQcz6vtM^$~Wtv z7LJE0p?!A#H=%-ftPZy?cii2(;W{{4d0J$mJGbuCsLP1%KwMeVGoUa%zra#gX4Tea z$7a0TE8B7D`Be(as9v2SDyolR5A)98o4f80)`|oi9Kh=1t`@164F+-RO|0zI$#u_G z+USwQ0Xb zNtczEP>#Wj$-r zc_WFCzy(dGup}w}%&}GT0PNCEzgewQh0;3j^e+L~y>|uGllTtiSJ?%OQ&` zJo=4-&9+AO3$O5#&wgKS_fQGmlb#j)#=;P{o3B0lz+QrmO0AxNI#D#0^+QJsJd9tS zI5H91$i^O1!}TCqcCJXlxWgOSzfBW!g~3v8P4dD;1s`gzEJ^iOG0e@7hJbK(3mN)@ zN8chpGe)9umuo6xO)tK|h+(;wl@H-tA*SW~_CX+cR2bu}@0T@^evNYX$Hje|5DWn` zU!D3acogGVV z^nbjXtJNBC<_$TP^epE>5-j&hc}Z#gO(f9&m2nbOZZZsB zV-mr$@2BE&xeIOAVDJ~v=9Lw1DufMs!4@2|OPMZf%^+dqoP?!BSdXyM7H+w|?iKnhMD+D=Yo|#o0UnXAnM&N#gB~SB zD@&*;a$p%`K!)5 z+@GXBbErqDg1N-JXt>|@aF8cs#j$}{dHy|FNd-p<#>I%J=#`7EiLEwP&7(fI=Ps6!$O$K;JS~Vfw~!IVBAe>zK4Xq<8r?PStHQt03q&_Ck||u@Wzl;kB+6_Zi%Yb2FM#TgL0B-PC2paFnPVqq)$;1rU7K!Y1J*lyRfYBChPm}b9SHwA8%jbTT1)V zC(66d#N?+tmM+nZ&Lcg!jJvVQ*z~&Tg_ru<62IiZ*);MmE7e_!PZsCh-pT9M$}y3N zB8QR7WXyjpSg)~h0DKa1ikQbsO~OlPw*U+ZdYMb$G8EkhIF6$~T2Y;C*FMt|h`We? z`})1N=U;zgJW3~U6c-KN&w@YHsuBQB-?cZlaa3}0yzAr$da+Ppl2-O=#x_pYKisIN zs*Hpr>M3XAX#67%3zHV$AsF^W?1uA|M5Y(X9j?SFbyO&t_} zdL->_B>(c*IR53iVQA&>Gv=nLqw`OXl(p6MpB}K9e`PHJw=`8Uw19)<9}Dn@WH3-H zsT$GH7}+`*irIcbd5`euCxxpzSUDbr zE4x~Wss1ECT=}A*gW#%9o@kj+L5L(p!5R(PW@;C0R4!A?W0gxfZfCdjIjdmCenb}58Kez$;QaxZ@mNV2nFMgOcqL|tZZ#ef8>Kwyy*2&&<}| zUEIpt^oOJfk1H?xBN*fZ$H>^k!0E_r;W-=IJDxzU@gw+m^3#T zv;lO{wIla&-y%A4qaE8GOcd&Ttk7sjsZjI)0m?$5x{3+-O9q`>0Pw~KRHJ2p90XX!{4W{R7(m0d4<)wtqm|KcMX&(Dn~#`~N@C_IS;B8C(Yf01W(r z>qZa`1;ha(z!oqBi~$-z888Fgj^NMX$OXbnz`6f`f(DQT)PQ4<>S*10jPu|eLAGES z$j<}>W{!?`1=!hb9M}v{o1NI;w$|*f26x$^Y#i)>kf`fj1GuHJBaNXkh*usXQeI2yRJ+Bnet$lL6?SO(W*j0@kY@O`k#vnP}Ux}rh!IJ+~!~C9D%Gub)@n>>S z^#3~Xk8g%t!%9L;S^9gfuDN5Z>5_QRc={AcuUiHzVssqccI z)KQ}t!P$+ijIBZLQ3XJc#0QF5;JPi`2^A`LU6>ZE4x5p=kpQ10hx9e^>(?a2CAgqa zDQ-TlYtqu!u3eMnhe}`Lk>o}(he|7FIk-5l@$gAQ!P}3t$4H)m)qlEt0ZDsf0}x492T}ANs{Pl?m|u1e9+h}ZZ4AQh z#=^9y?S!lxP*y0HI=Gz>$|b_3^2HFp48!tJ|(P&2ms?y@om^9OsFfB_u!YDk#Y z!2skLRVXU(B!>TE^*K)KVrC3x_j^PB);h;z4z?zaE(Z3-;-;XA{|8!foC0oUU}K7E z9d=q&{n%0V>9|7d$AbT>u19gd*s>qwpn*g=e_Cdd9~Sh_^N$4nNZ^kI{z%}D1pY|i ze~|?KTH6`hfKv+>aOL*P!4NUjD)i`J2qp&V0`HjE;0Xq794t&sEF4^HY#eNC+*7!C z;DvkY6h7)Yz8^V%xuIcVVd3K75}rCm_+K~}f@y)?fq@2|r1`@s-&bc|nP!S`vu91H=^8=(${VB=tbH*^OybPOU)01G@BBCdjc&Hy|a zLc$rDf(?M$lD=e7YV@h_qIWnBJ=~Mm{m!dLgU4pbFI?e~y2xPU2;<#IE3Ri` z>Ydtr5c8tscb27pIn?s&nU>#p{ueC&e)i-m`ozv?0zRyd zJm)1;Q`s;-xlva<=(QiI)BmDiWY5%vYeF!l(wCR=s~a#_oN+*KyN z9INX?_u5ZoD}*M6=N&53DpKcP%RqTcpD2?VqKCbBiVw3Lpg{s&nfqrObd`wEgi;HUI}!p^X4>Tj%Sd*7^oPuAE0oZBqRy5d8q3(rCr=GHQ$ zCSbmjEoyl8@{1%BRfBa<_K{frNuihe_P1w*sdY*=X4A8pZF48o76#tuTWCe_3uH+_ zLMw|tl^S{8{UO^EGm)1gCgGHSOQ)h?LIdCg^5e-~*XANQJp^%Z>unp@^wd*SW!KzK zyjiyKZS6qi9HTCKk*k$;MUEU-T40CRSc zz{4%AF-$_T_DX$zYnWCS{(YPd(zw#!xX?%T{@VUp&58SSnFxyZ%|(}fXX>ib2ToBY znA!VfS#Ju0_DALv?{z+nc^Xz~-$TaG<3mgv>K&_5LgBLdh$Q#ksWitLO_gq2gFeTq zxYBAL|1hngES!`)0bd@vdNi_vf;t9ou5(?lb+i|51kMUxK8y&K+BVF?%r4!dcr$gc zr$*+~Z>;@Ln0PPnJ2jcRxOsExR=-Y5nQ|9*W5+G03#dbT(ySKIEgqN_nV~QRtsfZ`%Pq|-$El@wFex7K%fdrnc>=z_I zTKaUKF0YGF)s&OQUNeHmX_67D0Yz}nQbRLmt)FaSb+p$O+R|=Rne2YZGBS9-!d!C8 zupke5+`;~#jw+QEzMUU+s^W-7-h@JmD1B3dqPNh3Y9;sk_GkO6$J|6>Q#*GOZ%L@r z5{C;56h~M}4!au`aP^ji>TAU`W@z8mSF9o_51g?esA6OwRqyktDfqGwo;_c#ad|;` zv>w8pY1e`ei#gQyvOt8lxLCZBAG{^_YOg7Yi5?fn{y|?>ieLzA$K-y#`M6OJt5XfL z3Twhg9BE8qLTQbZp{$`07}v>txFiDW<{Q^73{sB?L=Iy69@f@toTw{Ajc8^or5x2y zo?j#lO1pzAdft1uWmAda{oMdEAAjh%H;kEurnxKe1qdhjfv+P%-z`?oT} znnYKPLZ{+iQbR!}i^=*T#pQlD2oNl~%J$+|K zj^LzLcP-zaUfoZ=<#JF4TJ4vX&tWwCqe!5YdPZ~)3I>=oYSos5r{=t8WDbhA!V!W& z#nhcj`%k^3kU+>9NVwgoJdxlWn0jdJCfNbO!0fuDMi1b8h#|Wwo3Zf8_H$6){`R9U zR8AWK&+n+cy+9NxLJA)Hi8KNt#n*A@zBKAfO42-q#NO;odB{sbTalgd_mSne(Zi5H zr<9xjoXo~;cc&Nr{7%{poJCQDseaLC9&vF2yCJYm{Rodt_JrzQ<7B!$yBm%9^b?;0 z(M;&zmFRw>lLZxAglu09wR@9$w(hBympzmqV8(y~=s9rqltB4q&i>+@U%k$d}A+f>mrDCw3DK=#^p$8qRc{a=y^wSsNzYN;{O`w ze=|e3EY`Ue6>D8{W)<%x&F9G^@E;iJ-BFF5^$=c6;&jeDKgYT5Fctf4H+b1IsUG3s zAygqV8aG=wBuMH>H^Zj?Ighyn3Am+YQpHR%?V9$C1vert3EkeMJDe6__{fcT9^3xt zV1C@@63#D!DYE}}eLr+bl|$6b42@#Tgni(QR2HwW@QYkkvd^3woMm{jRlw0W({XV} zSD=Z)b=tYyFr2PN=_3gZxEYww94}zT<@t6U4+5w2qJBIBZ@p5H!k%ufbt+;4%vQxpB0-Z{eGdjtpiD%3I)3c$z5G@t2ce(YFYOa)w0NwzakkAYa@c*j%c~HK!x|IxXoJo^roYTl(Z~av$s_$~v-p z1fk9(@hO$AqdQmwsdXX@q;9s;S2B$=ybOmahRGn6K{~EuEr9G~HnVIB#Exo?)H4Cp zH;-Z@z|WsMqU+|T(ET|j@f~)QGo|=*Uy^S=$p?JdnfsH=54vWBE!9c)s(B=a%SWDX zvgA)Nj*xmvooufC4sF5X{FQ@sQ#kup9Hbt+N3G$h1FCg15@7U7LjuqaBygpd^q$wr z6#^AZj~)}&blc5_%i1> zDpNNrCoN@$mys0-QoJ{1b1#Tzk*`}yn65XqgwC{eCy@ky2ba2cL8XkpC@GQp1xV2)O*&ukGqq3 zoset9>z2&)7^gm)ZaeSOk?w=b7#Ca_R=Too%AYq$CSf2|+~4CG=&NHJ)HZyo((U-! zeeqT;G-ItUW`lPrG9p@J?KnSpt;^Wr!?p@$H6otQ zMRIot_f=YIKIX=L(2Bc#?(l*%GeT3Ma=)Z(gL`)n{&cRBGq+otc7uf|W$WXEhv=DJ znO3kB(aq4;ITLPF_i$_!Gj*%YN;1i3(8V`%$Qt$9Pu9#?{Y1?~t>BhHXFbE`&D@=P z7Sb4PHp(!0zYorEmBL2-3v|^ti=-QMagAs`_?{8RbZpf7HeG;drN|Q)pcL$Qtmq!` z5>|KLC*B9R6#0_;+Xi_yd^Q}>TA|mSypi#A-ih{uu3iMDQDpbo2t@(d>&b$of&wQ| zj)f?_alx?#mnc}guXaKx0C>K^hwboAcSX`~h{kFNb}Ql{4j&5bH*MPjH&x$>0;uh3LcS(<*z2cxIVhY+h?t9(cK8_eL_c zd}t}9oZ!7d{?4|YI;wmbvV7>H$M5u~kwA_Jo4!Nk;634JC8B6F&VsFp*~~74!}Pa+ z^F)o;ZG!?YGg{V;Y<2V<#4f#$nmn8AE-e$V>QuNq=7@tAyN})h*W36SQPOMrqVYnF z!&a)-Cvx9)1!kgbMd$7ud1#x9-4^c zd2ub9@O_Gc%Q8s7SV~Fy66=HpozIunYd?G2MTEhg+_dYR(=|QooOy?mNA%nUPK*V2 zJ$Jg6-@5`|+ zVSqT=2Hv2jIFN1nm6ttr5y&TX|ZK99TxW6aJPn&#yEZbg#75{6yo^kj7 zaC&pjm+0VNCOkd$%dyR{J7P2;G}(6lWMI@sw5}q=9Ff4!k#TwyHn0Coe^oT9ZjBNg zAwml^*r%xxiXL@H!1}Z;LZBjNRpF89fBx@v}6?umtrgcc3b9K;rj>2OmvzRAbxHjvItdz!< zF^y`hW@=F1mK6*S9GyA^5Qm3i+_=kILl*ocJpne{>FP2q#5jg_n&pT3hjIwpmd#Lk z4S|eTz-b3gpUA`+;*1Bo&tVJXC-zz0plZv_(;E!?4zqImZ@81P_F5j@;n<5|L?5Ug z%oBoYT;|=M!gTHy`buS@l^m+jN;mQl1|x+;(*qb;Z?a_eUluTX_Z`5?OT4#rNN+6F z&0SdLrm%A|n0=XV{X8OC5^#iEJbS85xjadp7bDI_Ns~lM_@FB*0wYaNxVx7`HWZF|r zrkBZA4izL+eDTS<)u{;?#nld+9O3G_lJ7}ux7h!Su zc42pHVh6d|TD942x?Ld~%)8h$o^NIfJECYGJfgZ@a*5+g%lQ=*6H}q*j~ObtMcvw3 zA;YZ603%OG_v@AiIZQ9%P?LX1iI){}6$!_DJu%3DY0iV$2Iv_nS> z??{Td?u3AkbhaS+CF?o8Ir|vFX^m$5L!u7@tavuDQQ(Rr7h)dz7=i{`3kIe=d^Tm11 zxhDQ_Xkd1B&bdNTnsY5|L%7`Hst2ZrcB@@ov)UC>w0*C{7J6!OW@((| zK~;Ie`FL$2Z4r8iI;k^B!EM;I-=Uoes3mRE-t*@VYYlS?I_n~Ks4T*z!$x3H?ORe$ z%|9nX+4)kxVc(CzsLW@McDr|I_xjAa+r8TXgHN3b6WD}_Y|a)2`hg!vF~g%+4yu_W zbrUH?5Y7~EAZi!i?bFW^rYu-(*ghJOOTemDIsbNBy3VSuRzI!*`Dw=zr-Eg3^rsX zFj;`TQMW%8@Qke#MrE>9a&UzVTSiV*`--v)?%7h7$-YK?C9~I8p3E!@P_oFC>sT_L z50Xw>WvFCmn9K@0QHFnEJ^r;tekw&3uU;$f3_?pdv%aXj#q?|jr_R}+wctf`aF>`9_g&<5s84#vQ8(a4789khkICriv1t=+Z3gpwN zmVX8-zVNc>Wh)Iu|9Z3NPTaMZxbMw)?lcgy$oFz3l%}=kbWb-vy3d5Bxk}JnTzdBH z%P_fM;4mQEyRB&Rq0$~PHDdYvet#m5XT-ATHuUf*^|}&h)>0|YZ-(z_du7zkXuCBZ zYH1$Ifa`hgPe?$5GV?G)v{&+w$-A2%7|}e#-nWX-&;yP3V{lR!+3no{4o@iry+}Zf zdLI0m5J}ya0IB_{jkpDu{Ty~aB+z~e3AB8vo2~Z#5MYi3vck7MfIy1=mSpOo9YSH7 z$NOsa6cV_~f&}P3BY~&uCl#M&t=cW%=du)pVY+|q;3qByzt4J4P_&^VaBv&dRsfEqza#W7(nIQ3+TC(SodR`_Tf`R}V_CM5gW zISpZdMhGTL+iG982hI&GV);?6zYP#&`7IVN21)#6;jpU>c{*e_Pr{|ZpTyn`Y6>j@-c+>8j_%$we3SUdLrW0UN}sxZ>m_l? zZ>^n^+`_^`I|r_K87hHS?N?Q+sv)xbh9EGL(Z2On^rrMkgP8bdg&*&yXtN$B7P^>A zu`WvRfS-*eg!dWU&%mZBQegRZZ<-Y^E%f8HV#2hFujJxoX~g`guL_-+v+y&nNmvA| zeQk{33Ly~;J6N~+hdlsC@4WsygrlAj-Fu6$#F=`KO65nBScO4&4&oC||C%Ix zEL$Zx(9G~C32igEH~M6WdF=gZB=vQl?I$(wO?zKsr(g4{t>Q(9hHp1-a&GA33N99V zNADtm+kfKzgt+WXR&j{%REa z_Zf8dmuc4oL&l>JgrGX07q9Scz_(_%~G+ZSp z&Cpv#(&dYnYnh*c7t?P&tnOdTXR@vB&=Xmi{dykyh!&8lV^TItem)uZ{*A*J(T}!C z>m88Fq zn`DgGSZx|LWao*6!pt6>hOPnXlM$@`W9_UXHA_h*(w}^G01dxsCjCT>n=7&;XNT#3 ztMB)*E!#Nr=ALK6wLUtm{wQ72}`zh}C7FD5D5_ynmM&@DukU;@8)>J!#N z>4ZDa=Jp-r*i6TlaA*dwPO8C)NT3Rj{&>>1(&B}X^E&u1EwT$~i6{sST=WJA| z(O&IAEw8jCUeygs7g#FzB4bXrFZCC2?1UI&tu;r(E7^GJEib^AD=F zNLM#ykN~E4hS2}5$kM%2-L`b?&gr||-K*Lmbq)nS|to%)N!GY+6 zDQS^g6z)fDg8FoU=plR7b&G4J57sJ>{@G z;zSaz1E)qc3WbK(YT}K9%j|kJ&1KAi|3Z`0p+zB4ZrqAWHlT_dCUD7BvDPzDQf`xj zAFnd6XL-%v<4K@jP z?uB^2_r~}B-?yc|T;Kapl8e(e!uAe`yRDdypOI)xg6$&f7&RP?#>VlZoh zEDi*TRI|=6UhGgBDt)9@|18Q|Lz8oQlH!&qlP#(r)6{Gdl~q}~8fePK=M)p;(ZS^% zQ`Xz11pYjN(j0rQd{}~Au(3S5PD)-zARk}!i>1*AF|L1@Z20!mxs+vVe!BcL zk%T5GwIW+CDCeUN_xltqiO{iXoNd1Bdn80UndAdLPQo36(Lq_y7Nvx4q}KM+tpXu1 zov#j=OV!pJG?Q7}2NC78T6M3l#0ai~6LuI@P=>&Dr3ImhS2#o~ayYiJQ1yx9>C=gZ z?q9DRPmC>t%Z|(_)sZno;gFRZ=4ksMc8!c_DCjWQ?N5z)dpa>uv@%jlFkPwli|dvW<|iYRE0haAolYPL)Xf8{+zz^B?BB$v@LSX<=IylcTCn zCU3hQi|%`kwiPrs>cV{b&5Q>xpHLhGql;>{N~;etuG696WRAt5pAKe>PZ%_cPqp@H z_do(#jYZ76zqi+kE3dF|wMEW{dNkYsx}WuH!b`AgJ?f{O4f-lEzb2#mk?Q2MEd*XX zh|98YNoN$j1Y>Med2N&*M@yrG$4u`064P(jFsrmDpe%-{oLI_3?4_t{qt+~QYZ^fN zkc5N+O^j!)@h=qnUk&cRXx53%^E0i6(m}6xl3nn*R;*y1LfE;!S?KKTp&<0f*$?wX z&7!xS;}0H*_;0J!W3Rcgw$?T&wYPqMP=QiubO6uuI{AFP$yCk-!3_UQoS(?I-k}M_w~0BZ!!mVS+tV)EWs0!dFFjMeGPqL< z$2BGOz#scno_+slFdp=!xaA$9sfJwi%L2}tf1S)CWBw$|jbm3M-JnK#<4(UWAU7CK zUBYAg!jUhV(W2~y`ewm>^tu94l{ifjT9Pc$k`c78l!yDUt5Gts?UnT5s&=r7Y||I- zK0mc*jA6!Gk;CkrxdG$;7enEHLaZf|FY6mFDZ9}?El`T9*z{?JA4ijpXy{?3PQ*`D zMJckuq3M3>#^7V}kq&58ACD-kJdG45#TmjJZt)liFmSu)_tyJ#3#lGj=>-%YB=uV~ zpS{F!=va42iN6mC2yZjQ`bTEIC9O=6u9$(utSFJes985uk(fY{1!gM3=cxFct6JeldT2!#U}Tj`)7>W|TD?v6$b~#=ewi z8dOI?V>X`HZ!e19-aO(aGl2FLV{gn^--xRRb1LTT3dFmic$MwY8lkBhp`%1+9>-b~ zoQiqF12cKOpxCaX=~?O843`bgYbBQa9k^yjIEh$`Xo`payr`NGCI{w4zYp6a{FQF1 zOxjpDQ*m#U?Kmk|imY!os%X569Bh~zrjj4}-8`MRc9mPsn-)ssHd(x73LV3`5nIyq~UOj%3> zD~B?eXWDNUJoTcxtzfaS^|PkjI^Imi+~ zo~>}mvtfI1}$;M?y;`h9}H_-T`!OJUNGzxo#&Z2 zv}`tZ*&S)E+lHDaZ9N0Gw{cGuRqb0(Pwd5)bnPjEdu5-l59|J~;YIWpxrp&T_ei|p zvq=yy#*n^5Df(%>tmsVX;k6C#gBt?22UozImfTZjX`>(A+S`cF79#uVVNM%D#M73XhZck-49YQ0}GETk$T%ywod zR(T_&D~1i9_aB8Gmb&$eq-$!xPsr&~eZeO9Z!f^trF)V}b;bQxll!dbwR7{8oxxj`D|>cgV9asaSmF2!lksvfhBbP$ZMo z1+mSSQ`eQ%c#DQ$qJY$PfA2YLVykSPgtc&%Zel{=C?kx6ce?Z&>{O45OD`2zlH-{=yS5q(TImDCkpZ~Bo z;tFEjN66!?CS z>)G9aM{c#(?dq|7Ol-cG%b*hCwQ*^2cWUGCe0Sxz2*+#g+0XZ!L@x)^Tum$d9iIK? zK*;~=Ay=OZ+~@$-t?lwm!8h|(aQAf29cJo_pN`RGjp$PFNETQ<4cocZwh7L|+d5`( z0*G>!ypaP#5?@$knp2AF$Ji`AiQH02{nDUUAwOjCW3HL6qi(}U(8rCF&YP*YHxQq_ zB@;Qo1ysF)kpjeuyjNlnlet}+=Qir!dq1{)(L765ZqmP8TZ&sABdZ+b5c+22`Quy> z4E=|N>g+QU5l-Iklc1S#j&26!@s0Ei#hpr6Vf0zU7IF**L4|>z5(g%A6yo2z@T{yW z5oJNEjdHM)hkU{DOzmiv;tB5d;RCn4MMZt^ZeL#APvDchU0EZk-8bGp>5K90V<04d zG9hk$;jTg~XA^IUZhD_)M4%y;@C7B92+poCCcjuJ2R&-FP^H_~E7e_kM*9tI+qiZ= zp|p`I%snh4cx#4#!_{?$eb)DO9@X=?4t)6TqwtZA4a)xaU&}eibz4kcC%lhpo6YSU ziSjb_*ff`IiBgPyUnf?7$*w_~_JI^Y@`^qR!P~OeoG|y=Pd*AaG?k^z)C4{JRXWMw zwJmq11uN+qwzyJ3{qv@ep8K>v8fabej!ra-)2;ZRVJU8Bi+;OgbhJsOgGY!(-@-(B zDJ1i9v*DX^9d`4QdZkNEoLT2Cjw~S31U#XQK?22mV8e?r1XSEmm#>toluOX8rEX@wd-7!#fc&Hh6y7K(8LqH#~RYT+AU z2`@+MvfN3NU&H&_F-WG($9&ElwhOZqm*R*datbX3g9g^-OWKP8qh=zNSMUREY`9g7 zo@v&QN3r32szA;pYSs3avY!kQ{Wf1bc^#y2O=vUl1-d36cqabCsU#1W(&BmQ)j@De zzvv*T%K)3`L;(s+%V%EAz3pA6j{@Ot!zQ#Uz$1}$`$UHoIkkm$hX>vu_+_W*X*hMT zhXg<*ZZdzbvH2UgyYW-_cBAfgaQIhn^Y&Zn#h|KRa`!-h+w(227R)HI2U0%winQk^ zHa`qIMaIYMT->aX`{Ad5(U(_v4QN5kk%8GZ}Sd1GelmzOIUa z3{#cE@XKKhPw!4l;^(bxH0l+yPqPKivI;1%&)0e$KoRN5!w=#lBK>r(U&buW#ec*3 zz)&N*QT&^1yt%$W>!m{ZwYG;K6z)2t?2qYt=AJJHv!}~+0f)Am=*`X1HO7tEEC=q` z+|SvwS{Ry9_t$(?`ZN!AhH|JHZxd|oiKS#Mi6wKVtOivO%k=PKswT)$aZx_BQ|GU+ zZ;+zq$at{RsLeeQE!1o|G?+M_4{&|eU6RVgELA` z_MgqaAXtS$xeiM* z1h5KxcdM=1wSL^CX2y-8=i?W!MnJi|D%zpF)S4}ZN4;pyhqK`H=Ll zG6$P;mnQY~%MJbQrrQITt7GR{myOIa!`f)WDM;_Q?XXmIbo!d`T{|mFqu0eSa+Y{t z{yw@`Th`NsuW@z=HLV(jK&iEj(wyK}hXr5blsj+y3u+uJg#zkh@*g$uy1nPS<1l&u z5p=(yEM>Ho(t1f~I9bllb6c}^WAH_JG|xN3>NFD*h}Ae`+TZ3 zU_TBax~d%PO_5xWx6?`NdKTvm=X87XZ5+RqxoAF?t+&@^?iB`D1O?d?LrNub`pW1slB z(|Z*!pDo0S4`Lc6wu2?9y+#5aqWgHDT@ft!T8{+YfOD_^Q-S(I;A}ugoJ$Y3frve& zsdASeo!P5^Aq+ibLl5&9=~)?93#;$)-VAqNjb8p#@YEy4nY&6W4YO6aq=?E|3{41@ zAP;UWq~0_vp#4yy&xr_I5M}$KG01DLJ4$>-n0Hp0ni0khbHUUi2;S%hrNYqwz(Y3=EaIoh@5_~imz4o!mt11q$#%k{nsx#B=1xJmZBcDF|wA_Y-u zn&PGTG2xta|Aot;`Qo@y(jmP!3J0?JvQjs)j2pGc3Z@UduMY^-zZfz9%DZ!@SM_vY zZ-rdXK-uv@gw@mFTJ+3{WRK%JAlGR+Ejssygo!GQ%`nM>D!Ybxnpc22B zo-+Ur5aj`20N|AOL*9Pwhsu&8#j;V^FFvy~J3Fhk_kCo4bh#ilHkU4t;;d8;OHo;Q zvye1<|8Ws+*@j6&ZhytoCpnB`)ZSf>FpNtVQu!T3hI2oOln%UnmR}rq7_ov*NUhq5 z*|<~_?R_Q~O1jJZ@cG+kVkA$Nt{%2lR0|U6F?+qH!**eITq;VNslD}(PN~OjA*&2` zcq4PCMJlsr!u*K%V6_M0*B1}(-_ME%S$A?TN#^uj_o_t;Uc8jB_raTCA^4^tbW~5x zt^_&fsSwKn?ko)s+jMd;!8XK`#pk?#)UFuVF(9YOde&-r=3&fo#aasn<8Z&}EZpW{B5m2M0JibQAyEg5q%eX@iou1FHZ=yHZz21*LFfAfxxRx~uM4eN`6kmCi}x{6@KkH@C-D|;+5%{1p;&KVal4Vlqa6VW$5j_JU! zqprfFDhlpZZ-`u_iKzqmgqpD5l=lp5cTUAs4YRDA_xrNFxAAyIn5JyM z1b}i@uYZnLMezhep33J!%e#7tJN-bfHYL-;NN=oL?zcH^*9MtKJ?QqIX8b75tOu7)$v|W66r`19s`l;t{e0LSGbR zh78X6F2;0eApo5ZS^Ohx`hu!>nOEr+lEf-RJ%SIMs~PF?jAPlkK6o+;ON0>}LL}B7 z!9o(sV>#R8BM-Tk46+j}+4AJb1M^Z|T$(1VrWAt@OXF?4rqwbOCWX1m_Dk}(-5jh5 zW!bbG6fCaw&OD+ex(`KuD;f3eK^8i~xm)5;KC1VSeqJT=#iroE`&C19hTW+Ac&J4& ziTfic2d>Ff5J)E4H_YHN=z~|lK6SV{I-ljp=O8|QK@Ps8Iq1IRqU(b)9a_AF<-{b7 z&@IOBv(V5*%mnXTjd0@2_c5bR$tC|V7;h%;Wl^M<3Wt0L-ImzRAIY&#iFZF%8~fT+ zTm6jLK(}sbOYROm#q;w}RrGE@a7xcw8UTkidQr6@72|2v^!DOBYk+6p^_VI)ZU!%| zE|bYs{#$ql&X}7|cLyCp71Jcvin6iJeTOVugLaQUtGV1!urLT%O7Q0%So+r1U%`%E z#4Q(~{A-HY+bVLUg7OsJtI26k(1~S-UuwQZQryXJ#szVpw)Wn|t<)#CRFxWIU3)LX zG*-&E&Bkl>ngdk%v#iNw$4JlTJ+F@2BMPr{zKw?i;tu5ts`RH`+mG0=~QI04%-bvioX2n7d^mq#~#-s+j0oGZ@;_N z97>?2R&)G4}nJ7))o3VYu^X{P47Mmv}7N0aE{k(zYg$`r0O?ulB zeV0ibR%TU_v~L=gvpLpsYk`HAoyCs8O8hihk1lA}`U*d#-AL9&~gy63{leRbVPma_z()jw-BqsC<_29l@-L#z5$eN3yK9{Z_Z z_k35Hp}WhDp+s?}_b%}W(|5a#{hD)iH)xUJ*7@&4@i(+OtT0{=R2cN=!Wo#P4x(VlP{E%FuMFt&M@JE!ygoxi#T{j(U@KVc94I<>#^X8*R4#o;fZXSR=3eZ$ zpj5X@(Z+d@sOXax^eEl4zCLF181(>)LOP4`{NIvE^YJi$*9{Ztaej$;)c8Qu{c>6NicPm8G(!qTy#K0BO+G%NT$Sp%QpA7EZNnLM2JJ z!O`?RF5y|i#x{D>{EIqM6+6Nd%Ip0*JG$x4A&>7gas;FW*$U{)o?u8vVCk_!e2Rl9 z5mS*=6%(kYge5DMR0D%3X7MwHv?cU}8S>oQDq0!88%E>sHo!?wHLeakLfcQ#$CFT; z?!o->q{_gQ78mF$ZPinc7&z{X0nH6f^_1x z1lh*&-Dia&iRSA;aC2M3b;&c@yqQlNFW&!BTNgm7a>EqGQm`vL=*r@iI10KqX+XzK z$~8}I=0SW(mU7Vi)!Upt+Zon3NXQ+mi3XQf;Ii`dlp%y)!JwYUvnE1s8tt#G;;W=( z2TZMZs}M?m9i&`kyYpguHjhGK?s+96RqtpsjPy+rrtBrTINWe0S3>S=! z58#j}yAQhSTPY$Mp7T_a=4ddbH9e$&;GpCq;Tho@7s+et#6cHK3p#i|o)H6zFYBE% zED25`t{&WGjH(eb<`|b9E8X`2$*0Au65l8^3@3+%66PL=yNzgcy|N4qT_J%$?AxVu3Yl)LFwut0Ti$r=iV zPEfNO=oe+pZCl8fpcap>L;6AX2yQARU41 zW^w$BWdKq<@c95BJv)evU?Dvl_-HC{8sRIvAvlKVQ_b%1Eg<)InBLzkA#-Zqe*45j zC(i?rHh^Dv{lPftk6+&X`PsA|jMIRmDwoyopySpx0A2DhJ&>d0sX?r%1HRgKkX|bj z{=z1{&{E#rW>x2SDYai zQWhfbQr5eT!bg654T1??fU{&22zhJU*Yy>&9j*e8fd9)~{(qqt|N4BiF=0F45=o{& z?R1r%2ZIXJyms@1W<bzglD0HemtE&3VZsQ$u7HFTfO8eup8#SST ziWsuv#(UqzhvW7F8#j7hg%S0>kbH7M?iYihOpn@_%2h+ieG14&zRf5gbCGuoPo8;M z<1KBsw(vz|^H`S`_jB(_ALqh@_IHsGWUaq?b($G)0~HR>yu$h(9w%;IgPKd9q8%%n6zT~LM8&pIL5$4NFm@_CctoPnl8F#z9xzp_e@;o0>NO?T#R7j0eDAGyvg?7x>rpG=>b zE%++AhsDLgqu#;B6`E_FZFy%zZ+z}5`Y(&T4ANgtdQDfm)y2;;cUHXHv}aG7-6?f2b38RRRjg@AIz17()bji^`FhA=yw&(p-@!fA1)}8VhJ_uc^GGHaUSGT#9(EPw zi?}FUJ~m9^FRS8zEew~Ok2gDk8&=^>fe=A)Mm${070~1BYkELwo~8eO*=%V6aDu+x zyYdaC^K>SspV^lvD5f^1E=zzji|Y zb9eqTF7E%%=lwtF=f4QL{vR3jpOKBid5tv^2`@c+-Hi67LiiYD&lD$mXiRf_MMtkN-0u|36p^C0|+(tS)_B?r)xIC6MHj5YRCJxPiah7~ns9)0qd9l^M5> zt8@_mJQ3!f+x~v{)IS(Gf7d2=aDu(mL-b*^fg7Lt?5sR9?X3I(3A~rM{>$r+Zk{fF zPc9urZ#_MIQ#1khh}2^EO!W$Hhds{-$qRy`7*QE$`{ZZ1np`~msVCO+a;1ZtFL|1!E1DkKj z>EpA{dT%dDZbc2Gdtt67vg=kh^F0!E;4VJgk`U8z!Dbl^k2_$@M6c1|?T(EVZQZ4k z4C(qV!AGL<;Zd80YfQ{|OE38F%L8spn!8)}*S0?PT@Dbn4HJLXs<(a9z3IYaPx1cg zZ3fDd>An-2kAQH}CS!|Yd=H?sYKrGshgeD;r`4nVIge3DWZJLqmmYh|rOKzUTV)i= z8{7Z^pyBsK7XUc?xA{?8Q9{_j@&0tfNr?gfYuiF4c1}on=G&q1l~7JI{eaB0Vi&!h z`V7qL#bio19=l_yFp6aRcjv!;8UYuW?Ib-Yg0R!_*~#HUu3)tBWo@Pa69-VQOPrIwgVrw};RmYf3gDwl{`T<6`hoAD z{V*Ru)@^2X9I@sC5r%BcApywaUMt{VY&qI3?u%ulWE?mGD$l1ZfP?kXU8HvR_`1fB z#_?M$93R6E-)g1@WN$BUq6$t8e`uL0B_R%tBg(}8r+NSE=otZ1osn{5qAe*?0{)g} z>Of60tcBSRn2}A&0e;C@ycPDgI>x$`3F=U}?rJxXk>f)2dPREQMEVlcp1i1!u(X-* zHwQmMDtw0b=z zw!Bn4nEv^$QM_^(F&%5nd28B!4nffK!K>r&1jy??)F$NzSZ=sP&%=O5X6A-a#|^HX zj@-Zuhp)ThJhj2u5`wIekS#>+x9M8r7f-eK1fG9U+CC+Ni{jbW@3eZ6{_F_<8bbGC@<%sqI@OPw2>KK-CPD9S76oE>mv+KINXq z>zsyhmTm89!~DN(3ChKuo89}>OEYAP>7rLwN{8vr+U1s1Y>sN41=w z`XrW7s%1ts=NK}p!-B*Nv$Df=#$(vutfrfnPvULvWQd_bZQnsNpHhYH+Ad{vvAROW zEDeIUKfoR)7dl)GGtZk-_VPU7IS)1{6j|{l9pUW?_fmRA5VNst?HSWTzF#fmsx znZ~@?#-b?rS=oY@hko4@FI|#u#1NQFw-DUlVIf02p?CA$>!n^!M)S@oJM-cWUIVFQ zss0ZKhH9>=HIrNVb$MIL5>P6k#}t&$NG)!Ue?>;>ll8>V;7*FiM>G=k^T7`|xVGxL zf3k1k|2~w$#0|R(&~TH6;D;j_c-F9$ENoxQ584&LnrdrzQUhgHXn`Q$i~?$##e{_i zr*~FeGVR+;G7K7Nb|t*EhlSRjN2w*M7Ccr8V7>fKu~6AWtYpy*A?k1BMc!8nzr7i= zC?QPL$EbQ{TwQ^IX6Xy9Di1t?t&s9$m)f^)HA7&1!2u(=Q=hjsbxf1yvd-R?YztC~ zrJcH^0m{zh(+`J6f_qA)JKejCG)xj0g=cf0!H5>#Sd=aOjn-wKp9iyuygV%~pkR#fGI)S`vzfF6EAA*1g&_-4DK0MaB9!FZ5{0)E+5TJI1(t4#WrSkU8b9>=~AD!pv9gR6MxgI@Kx~S|}Wb3b6EpJCd#BA%tPbUr4j0)v+>rhrl+>$u;!U7KD9THTU|8Vyr zG!n&BWHhsoBEwfVuc`FD*1S<>LhJR#JP43d#}B#t^vx#?^iHRjC5Gnx)s_}?#f<}p z-e^WO2Nmb4>;M`>&53@=yAgIahNAi_2=!JMy=?3_y3e<2g_6T-wtuez$elPxKea^7 zx8rUddI=VNj)%~H!Z|z}&W#Jo#!ky)=8sB8N^QNxO>L)&=jED?BX>2)*d9ZfHkT>{ zI9?a?tBms>w5pFQjeQZNi`Xx6b~wxIny4)giv=wfi4}XTB5nYM6)=PR$TUCJy8-u7 zIO?6D?BTE=>&)_%OR{$y!>bAuBR;ZeMV3Mno)HU1m!4(G4D=`mAHD%%tv*8tOq7-b zjHK2M1!NGK42d*J6B?B6C`*K86&Dk;;%})4=%r!L^;52D-0I2gb5C(kJFm51KO3K2 zHT%(!%PZGD21ZC2g?a={^Ebysy+lU(7SWXup1LCpX;SH`A)hrn>(tv=S!$Dbt&6cD zEY0{Sa0de1(va?iLB%1%-0sxA^i#{NZ)kp&e7)21$!H+?^h9Q4i1SNo1+-SR)P>(`&v)$^U zC@U-Eef$0@u`4mCHqVRtOAiH4CxT_a2fd10;k|pV=2C%1={hokz=ingr6TbQS#nR? zE3UPI7LB#yZ>z|I@^{)D$MeBizbxvLH+UEK1v@x5uQ5%@!N7-!3vo=7O ztl$)X0Sf-h3lmf9Rz1yvR<*2H>Fg_|?#wtPYcmlkW*hOjl?XAS(vW$R<(b~+r7@BM zDc?bAS4WaN+FG`tTM$g-chKJa6dXkZ`Ii1P?b*S|JkZ&<8S@rLt>*?^{2#xqda_{j zMqQ06=D@l^(~6m5Q}pd&o+AQ~joJ^vW%Q)-u3L=5Z+)ag%QW|%QcBJ=a zwj}J{x=tI*`1l*rleEM(Q~QXnkXG=foHqGB$gGV`APjodp5EGiZOZ4a#xAKU>8|he zoM+U0dK==X!mTFIHt(U^5_vR`7ZpY5TJAeU|MOn+C+Yz|0aO3v$G=&d5FoBUCkUVX zaY(oRa!8j^6JPXZETHyD3&E{icv-wQx(-ifRH(wRPo_1^&Dp!S1iC9tfXVDhNJybB z5qUyWnYcLI#}-C+K-QT*LE@bo)w$wz?T!ub2$kx!i#61|h_mxFU1tp?ZO}~U;tj|x zFHxoXw0(X0 zeGK1jitiV%0;BcB?ei==#F5*wNzu`ABscUy2gQK!>}Gg@p1v=K>Pc!DSiLs);ML;$`g*;xjT9wGs+fT*)iefD zub^)n76!IdT}V zm*TLfl>M~u>CI&oL$PfY13c~`TTDGDPnqeedzb!IBuyidfyZF779o-Bh^t3Q3OWK# z(){JG*B*vHeF73c6G}00&}C9%orBl&vgu_?CR;%WEO>>J?ZefNJ!BYO+^%_Md*|XE zbt?(oh_8|UGj{x`LIcew6bi#9_dQ-})u(XtuDrUu-X7OWv~MQ2o-v33`$Mty zgFX5fMCx=O-s?CqeZg|<9^t*Kj*j#fU#Uz4NQ=jcEfw zlWKt-%7D4@a;J>k4YRC8&Qdr^88uJp2KM z+BMKGt>woq6UBD3xs)4nsZRFHBvo7oGL66Hvu7N`7tF4s#*RRGKr88BM#3$J?4_8ZXqgxxnoiZvAVuUSZcb*gni)`d&pLVQ8- zCj|1nzagxy-Ezgd+i|U$hBSG(@_N(sUG9PVPcvgq>Vvx&M{bXR z#piYB@!I5~yN%;DCuP`{?KJimhnRXtxbF!sa$zrQVY}pnGbe169n12GzBrj=v0YfC zaFOeBE3?tUT&VCV-@wpEsN-!K8efmnc%3a|1c9gsMlA{%-U?+gaH%gWcdT_8t0NQ< zvJ@T_!Qc&|#?9sbSUpD-xTOrd@+K2D0zm!Z3fS&2w^sZbztO1~gsC{p(&T0LN!L%I z=g>mm?uSb|zMH>%w*U6>HJ5(UZ_h61#%VsqX2rXPT|P0TF`AwKXryNCb1fMCah50a zwPtRptpZ-MX26Dsj5bDrfApJR2QTqwC&3ln&yMnTv*~#`^DjSvH&n&zs0^~0Z&8;4 zbwYgK4G35#a=YC7n!!o`Aipb};|>cO*+zQCVALQXmv5h^gQmk;%5*0!M$A3E5Pt0h zq7C4la;F*iT&X93Qnsa__yDUa&((yP<|^@;D_UwIo7*W%%4~6ibFHuLNfSjA^6p?p zV89NU@YX~*oJ^s>ndNqG``HGzU|AU~L$H&eL)C!7tq+yx*W&cN;_BY9iUa^!G1cBn ztocpb|6|@_>!!kdT99r{G+0zz6G*0CBW>IcJa*HT-I{du^TRqI*ITMqTKQF)iZRl`3W!h>yP@*sHvDj2Sj4J-I!3}tK*=lw7c&J14md%knePy3<7RQZ}eR0 zGflbj4II%pVvBScr>5yTN#XHR4`#G79iz3>Ichsx09ZOF1v*m_%Ol~ z-%ut#9fh6VWtyfg@ZS3lx_i2Oyi~hu0$DX}fg9u*;H&%QKbuthG}CRAnPrB@`cUk_{GS6r znUHN$dKgwdSFU)jwXAERUNokICEn#cI_{da{iQx>^U9f(5DrS?-_7egxJ1iy(Neto zm<9h;kZ@=;`7_$=A!!n6!YJ+3B*!(fQ=HSEe zO$9dgyu$HdTe_#I+2=`a-qd_Vbx}r#?Q+Lm#;(!S*gZB$Rz%7BlLvD|8X@h^TH>zq zuPNdsj$Or*dVjwhe_5S~e;+>-D6VQXF0`I&msb<4tRFc1;f95xtTJ&b)Mm|*6<>C^ zh~|K-hd1ww0K6>S6KCudrhTB^FTD~F(D19rg+(0$)C`JT_+;B0{$9_ifS!Nw7-VA+ zaIRS_@vln|a&}Ay&HyMIBLK+wK^L=XqmJw6;JvTEgYv<4l*e2aQOVj6L~sJgISKrJzjzeW!|O;@%qU7?O!wlVJeSON*wrdcCFbY%q+D>l zxRj>Rv;zdU4Ew?>4W5WQ_895OO?Kc!oxQ8o0aqHy8idY_I|zNzhZO!_^k_d;ojFdYO}USxLh>+jj@vx z-)x7baS$?0$vAjUYzf-rK|SPDQuBEAIEeAv^oGZ2#@uWfEemHj=QkU-qn3JY0A2LN zTtDBVFvVBFjQpB6DwgL)Mz*Px+I!)t-I_VS7eIjp*!Qc?qe8&Xh&s>2;Ym zKqtdia+QKi#nL`y9Yfpc1g8skR2S~Sm(t^qQGF0juP2+E7~ZDVrSBm3*$^@oxuq%+ za>_X29aM#6Zzd4^4HA64f1Kke^r9z*YQ76|*cK~@R)c$U7%jkqo z`2ISk%P2Ot?z5NX=s2};c&UNqO^Y+-qO9*<7vp|URQj_%6~Fu>Lr=}uu&I(_Q5?F- zf{}wt?)~MD5dVPFSmgKVVSM&}7#T#W;G0EZFVjSrNgbOeuDgd?=f9k;A|v%mcJIcI zihEs}4tAoH`oipGvJr0~g(nt;ZyYjo3r|$;MkeHgL;vBO%5I%6Eyy9H91qW%s+R&( zA@tp-*2uQh!DVKVcN$5cMbbWFh-qpCi$c!p{G$<#0UBdx@wCOFznb}fvE*FJL^kKB zRhe()h&3`Xsdf1}>@O8I+`QqwpG{0K?%0agFJ}F#Tl`F{{LOBK-a%gMHrny#+T+Xz z=U87`8f!zzEq0u^K%)if)5_*?=j~s7OV98JNBqMs|5z=V?97YczC)V$uj>!KEfu3b z5ht)xF^|Vo{Fu|L)|a2gvfMear`yky!azSBTFMYWn3gGhGQU{;PKYc>n)O10NcD zFE;${gd1rVZSiLih$7@Z)S>J8t84A--WDZ$e=$|RE%9P)Lq*ARk2=g0VV>8aO8Ro0 z6LmhqiW~XhCLS?Mvjbj*rB>2W0Ud?E=cE1h`(NL}0;)^zDak(+8E=mNvW$yb&Z5aQ z=3rVOjuG%kaM3>+PF`wzB@lV68i-aok8r^eg&5A@@$!A+cn5KRG2)|R>e(x&cA>0m znjfEt95}u?R_BnJO;NMJm4Qeh#AGceE`!h*m}Jr*odut z1yEMbrH~!&WE%xUbsXYDYTs@72NR;N^`5kU2R(tPNW(<{w{Ea<@{_7&`mH%~XP6_k z$8MVi5t)2( zd+5H`MC{pfVg`|SZkasY|)(Y5Ar z_Z{x^>jCZ9Q-0QpL%9bpT+CRxc8+cENhOmv(&=BvE-lC>UL)mNQMmAmQub^i^S4)P zOZS2zIy(9}*un_U>ikkd;pYkd@7mgbci3rBIFFd9peK84Fjtd>S~ZyUGY<6VVK@JzA!S$L{d2eyKwNMU zP`+!(D>#LAPyL^09ACx|qQBDCcQMPm@cvm`31oln$H3M6ZQu<5$w8s{4njKmL*q2|+Mb!7*c$*82O}Dq@R$BBc6 z{og$PH{nAg{qZDGY5QPG3iZ*91|{`#=j5gRpZY(jA!hU(#WDtLh;$sZiO{?h3HEd{ zkNoknEkF%e5=AaVMiS`i5(l2mBBr~p+3-hWFvrc!+1im0x$=^ttVyUw1r=TxkZ7SH z4eIT;0BVJUhG~&^&URi_&Xiab^0)GTWQ?tfOv>?o3j=-Z09DWHW?UIf2Xj|HZ+mQ< zHM^?4-s2KtI2U$k(sB5Nj;=2yFCLA51X*4TzzCAq!!_~AISc76Z$vyiF710#gnWv) zF|Qz0USK*IB=Sj=qn5Lw%-?OpKh?{pIU005cxw>|BEafn%XMjNnnqKr(%*&7)KQ9s zG4tp+k#=mqktDU#Py=%SsEhEbk4o2Ney5ptDQ=XmF<2hHot?{`_D=1Lns-`Mqsg8(?G{+rxKL#87KG*by+ zku_5T!)5bn-UM&$^&YjM&9(}gU`2K3vWfCv=8}|#N*D7;3zG0^J7b90?c5hpXG8#k zQ+xL$z(k^*1qf9{^m>kXOL{#gZ|6oLr-HW=h24`)?nHS!b#_&S;=YA0bq@dWB{NHV zfFE@p&1tUtp^nqVJ&BYOhic$ z{u2qAcsP?wM2W%+=i{d3-`~lNx~L$uuswv3M0Doqwnj6xo3A=v7&1-u(f;LV`U36G z5ByyZx+kmTfX3_o)|fLQWfPtel{Y5W$DQ^UsXqGs!2TP3+`O>jdFPU0G7c^tjs$-F zUDpSp@($I{Wj+ha#a%uG0)fq@(Wm;wzgp~Frc!uMuMLNiL$rGuw@J&J@lqMEE{zsq$3R#gO;6?tadEHM~*AeOFR?P zJp~(iw;nY+TCA_Z6*u*!dJ;$`*Rg&>e7(an>xk*xIWPw&ZL5qtbauA>=O{%pzpwTA~dTu?Q6rI~4$sxHGnnuujl zCqTi>$zQw)#4UtCJiNaX<5_UZFRXDKk;JUk{p}Tahn3pnQh0M{m!3S)h>+&J%z@jv zwq%*e8{~DIP5}FsK!d4E@;K3eDr}3hZ@JNPmL+HWNsGFD0BoM`@7;R{gz=)>D%js09aa(9ttm@#@hY{yIyVwO- zPTD#7hp{{alshk+SyO7F?+CEz5i&Y-T9hvd=(*6A7%BP%uUxi0y9op8IF$qtKP`}J z$jX|(C>|(E+6Epz*zMm|mBlrnS5dr4=Y-Q+d8=y4Yj1H?Au^pY!nDtTCZ;ZYkTAb|^b5r5nM-%tEn!HwZLoG!4BiDjd;}6@_Om;Fc0ddfnOA z-igQNA~0g!)_e8iE4O zrAhJBsO_@e!LiJApgt_~)#VZlUlLVT^fkl?` z)U&za097#!|IlA=9uHH^?(!%x*l;d2csVShG1w`8hftb1tMKyy!P>Xt5Tp%qXap6K zl7pVCo1KZ0H7qK>ri!~nAYII*%=QWzYWz{d+{4A(J@w``do0=Vrt*y^uL$TblBb<4 z6-)fusI~(DCD8);YZ$->9f6HAw&zF8qZqO?y#mn%|A(Ve`~VeU`o}l7 zCa9U87C1FFY^CwuUXjqNM0AgEZ}Zz*fA}2MY1=zKr?GN`Y!JGuMQA5&?Va+?*I)|H zzFyuy(&mg06PL>f2TU!UBV_yhy0XT%{zZ%~qz~qd;y-5lkvW;jgiXdmkqq?x9!-Z4 zj}AQ&$*cKEA1V`=oi%fq*^(K8+qyf^ez_g+h1q2Iq_Q<@a%EDHQQ3uzPK5DXs^JC@ z{u9Aok`-sDyqFm+!@vZ?>pGyZA$>5n$-!XNxyOe|H?4si3uQD_KHQ^OqFqX`y zM^L_Juh+Vs-3XMV)nN$R-M1)uL0l_PHD6s+F?b$Y)Y;8(QLwbxg%^D01aPFksu6JH zrzy&zH^YnGxls2fzS^N+P|6|ttoR73_lt-82>z*}*S{3{W3R)8U|#}}Hp*e*=ceOL znUeL#TaAQ?qCr2-OMn%a1c-H3pq!c^NwtQ}4r;RE2K+2n@4vI&550ahlq0v2Eu&IE z=eg;Jx+pIDqq_=q_ERZuQx0MmWbMye30B8w%CLT6-VF}7m3lS3|LF>lACMXqI6Zjr z)M@HFNV+z5K;15)MX$c(VFX2OX?~DVpjcW-gn*g9C+-N>ld$7kVsqYKY5b8v*~*97 zTAH0#;5?WLQCrWKJeN=DBR5hEI1_f9tnD7!*T(h_ZcUVV39zNN4hw~ol_QW59{nRW z7Z48*wHIgePD=&p1Oj0}ydWXAs2n;Ng>AYnMl@M#9f!y@wzsot*-05=WsZ<8Q>G%0 zX?W1sofxRq@oedH2~k&c;92I;zzd%vUogHN8#O*3M)je8uXL|-leKelXe(o)l)ANE;UF59IJUccSWJ*j!>@Ue~G+J8Yv>BFLJ+`{IClhUt-=E$dTfK8KXk zw?#g=v%+2ZFP#sD)Xi)wJ2VN{j#zSU3h4%FNAQvA_!d$q6&+T{R7$$!Wq!5?b15ua zh_bc^Dt?Ih;9V=Irj7leuriWDMAetD6K3lytdmzLM@Xos_L; zaqL+(irzB#=c>HS0R&gessob2Y1{&c!Lz-0IFPQg=YbhUEic@LX{T8bxib;B1Fn8&k7 zZt?WqjEO}piCAn^H}H1WT)rM2tESBP#9^AAEIUsdFx$?_PeM=vm9@ry`*2k7OO*VC z@$MCMhkSiWLu3Wt6(4emEE+r7zn6>>erXXud z+7EDJw@#xvIm_FsUgS#k0wP7e1F7^|PF*H|!7lbyV|~bS_9Nv2cI=R#C06ns<~zs{ z(%9|O@3`s*K{uJ+Hf?J~H8)cjgx3w_x+)cBP>_HaB3S3xe9 zA=)NURbQfNU*siTcacz}l0metBo9bM{;*UR0HG`f=M+^64>iuufet=F^ash;C~+x9 zo2Ti?U-}rA*zvEWOt;@M3tIF|$v*fFQc=Vi&bgNOB7Z&-{;mp@4*x?39|Lxoy~1xk zqp>9Z;nUR8-pW=}HC>!{*dNF4nwTGPR#=Wx-yf{35t8o_KCxFSB=!I*?vUp9zucH5 zJ%7V;JzA#t$^(QqLnL@{N^u>cq$K98vuyl)3gIW9=V#>~x8JH#kSAL=BPP7Qd>>k- zlwGQo#RO9{y+_on6QJ1p3cwPJ`h;AB>`$$oxIi5F3EOi3M5fhjkAGo4&z4cTRE)A# zyCoL;LYA;nNTOksVAlxhds$I3JlTlawml|nSA{Mk%>|lxrFceqyb?C4Q$>`;Okipr zUfRG-vEB0FqKOu33<0&ZB<-^=%i;O7KQhruEb-g^at9Vat}FT>cNUG6R~K(fjMXGf z3A1z+HHtoobthtp7jh*Pl2i-^mxMQEIsx{bF?uQv^+_E4)awlzKfK}R1Dmp{opd`# zY|~s{br(h)A0)^$o5?hH&fkx zs*qf4eeWfIN383>_-2qq8Ft;(VoW5%n}%uZ!Q7pwxI(tT&NB*yj<{QSnDP>=B{nL5 zQ6vJ6j8Nt`j3rj}NT4ey?xVG0j(oFJp#&UdAgmAKYM3`1=SJT)?yWpW=YZD6^d zYpwN};bpWE@s@zj;WP~Q5r;sBM8lE#c9%yo7uHAZkK+&DzF#q2{KTZ?xoQR$iwfW> zxDE{hx-4&7WoP2^TraR|KL%wiwWyb&5+keZ=yHo&@NUGjn`JPMPN&@Q-hrwjw&}(` zZF--!iei1Q6TC~0YJyk+5K6x3lwH*zBMp1MMyw3lp$jF$Tg9>TF=H5p;H!+d5Hil_ zDdDWC5WDB_?qwPg^b<6wlc7f@Hm`n)d*#$&Q0hJ!S+Fvlwm;y^XZQB2TH(6WcaT+y@%}jisB=w>6$Xy&<>&Fr(Zr2Ry7^Gh93QDn>P{^U?~Ki=zP8bJq~$H6 zif>X=+#KUs zb|29#?IqGkmDh8N2VlHCFd~pOwH$-i={InGrz`5sHFa`qBLzbYm*wTJhe}uyk8iUj z)2PB(YIkq1-L*+y!rTn;v0iC49hi227cNMTDpI}up!5OmNd@58AZ`;yYEJ@p2DDE1 zhbG~Jh{!5Suaa5+*m1tqNW)f%##d_O^&GP86FMHC2+ohFt67KNP> zS+BEw-xR1?P0{a!2LK}*g1s{A4c*R2a@@z(m2qmf1}a&+ZK*M_xMf8y^HAQJ2y2D+ zg}%Vwo85Tg6=FQ~R9twXWh8U09v1oBh9%?-PMHeaAM()3fKi_4Fo{NF-|)@IAY@RZ zpI>wa|8V{4gAITE2)D9x#!Yp{jiu_6K2MaWd0!-C=G{GgWguaLZXQ-$F_p6Qw@Z*z zb>JSE(gZ07TG?7LJ2vP_Xjlexa%`_LC8z65;j*yreLo^48CSJOclh~m@3M#NoOut& z$r_9VLn73>2DImxlghBNJp+qNn}AT69J)rYYRaixtvjd4K91gyp1MJ}(M``>yR(jp zPf*pF16MTps2sk^iE0{SN>6era&UBHo|n+-c_Kr_z||hnWYr+@Rzicgu{p)CC{K^K zT4k%0TlU;6e-(YI-FBoa;Xlnxa=cbq_qSN6`2!=cZ z?Rr%ByD5Ix1A=y)_Ec znwH7IBW6+(AKDyfXR|t4ua^i>O;h)>&CYzO9=CCJ$^py;i9hZt;AriSgsO zgOz#c-bKC$)VW4?@F4`-6ILE)I9ay*<-ouqbVO5C_olCBwEKzAcA8C1hi}L+A`b(1 z?EUio?lD4f!;f0#OPVVRY^6C)?eP0R+)u^qjHJzU0%QuAcg{-6bZPDxz+_SSOPZ$+ zjRn0|WcDq}Mr<4(d#TYrWU6a`C=*`^FHKUfP9T&3>pabqnVBwRKInq^iF7UPn^1p& zrRXrUzN=UcZ`>ca`f}7(r>9D&P~7LaX%DqAMNlrqFjs*8pfa0pv6_I6I`~-|3(rf# zBs@y6f5lnd45U%#0`+os%zim3$jty~>Pxi)wW`z8uJk+%1Aj=#E!v`uB_N$yDt_|O z?rqD?EP?S$&C3!bG__3b;1;{YGjd`9q~2E=LE{A-Fv@1?dlDCW14ZSn7zhXh-#C8R zwU851Zq>59hfM+Q9KmUa z<=`}n62q-aUtXNkuHiuIp`6np{PO)?s=7Y3H+vmkK7__{Jm#W*Nk~xOk~nUhyI_vF z*^Fw{HFh4W=5pU0V0=?y@9ztlT&&cbFnHA7VD&b;w#rIJ421`|o(|*0?tx1{>CO zxjMSVv)5lo(q$xPR6;{*Zrs|-?#O=l;0(p`jM-^V+b7V@wbtW-da+p`{>&96#s`L4 zA+jluo$ovL_bEAAATm-zvgYt(!*-25*&GLEykJyU#hhYPtFB|b{0&E91hpu)kzNB% z_mZOqQru-#1#R<&AKA&mTeNt^qiCfQ{4L3x>gFVHuIsbb zXES^LfX#C2z~0rp%<9BjT3&-_IRAy+P+Q2ZkyC-`dB=>(qXdt8En zfVAvM&F*-TvZv+~Zb@Z3yGx$EJZnCiZr8GrerW#6`jw%yEAQ(WXCJCXScX%kF?aY( zh^9AZP*bk2oSYL5*1S8hOp-Z2_5&n%w!Z32?-9fJq06!4lOC&(juhx>S{P5r^DqKj zBhMs9IN%7qT{-Ho$P+&|9h^07;BZ$n&R7=X!ryvJOHZx#>8@~h{zc`$B%C+*dvohH zcxO}y$2l*uXw z#Pmcz^#W^p{H+AZ#ppE^{%yYF7_;5n+WXZ`S6N`=?n<$IAi}bAGB-}Y8G)h1v=7eu zjPeFG_<4^6ehtsI1JHf86d=#aKR|~cU;O~ZqSLiXTe5>rXHS2Pez3m##VbTMLiZ?# zb;u9&Zpv)1)va!>J@>^rpUDHYoOgDFM+x%83J-k@`Caq%xPs&`vNlWl`c@w49oI#7yR~)wrc_t%z9>Usd7%RGK7DFD@X@;_$949SXM)5< zT+5*a8`;m#1QG@D;%e_(!iVSBX&o=mZIS)}1@?OBEx&(y?4xte`vdgio7`758{09z zy#U{ioLBFP27RwQLJr?6edooqda(w-?zL;PL?5|_6E!;g8X2UEl+%l(9^GL#F)U!?ACf ziFm=L#S4RdaWhR+E?#r}w2UuJ}#{1bAKp1m=7=`P3eu{`Km` zm9iXJyq=RJi7^C_{68#;|EN9!SR-L!tQ!ho!r*wA0?(#FOA#k?10i1R;Wsqw_gNRn z$-fWD?3%t`Op-j#Jfd$eY;bOAO-{h6v89#tJTub?RC|LiDNKTN*p! zNQr}UKMSf7Eu>X@HdLk1Qr&LGFk6E)$==dg^y!4h8~ubvTGpfm1l4oDYLwHi@RZIu zI=+h3uPGh7NLt!W8|JseV6XWo<92EKN^|;Bu2TO}%3~>-&vB5vQhJ>VGzAbzY3j>u z!&d!FfXS7I1$FJXH$L5WDx?0kx1P zxLWbise-mP(HDI)8V5IgpwoM7*RL~b5fP`Cj2Am6Tvq}I-CXKe5zCU}`O=EnuWuTA zz`a6aH@^9=_Zy_1|&miYI+L zc-G-sRJvmlG%v5WJ|Z69;F_pDo@g}b*A0E)h0}6~k<`$_V;5xf1AOtH=`z160|?GQ z#;>F@aJJ(m)j%<3=DkelcIdCcsN}o91{Dl+)CR#yE*SzYLB1dJ1fvs|Z^lNi?p&m7 z#;O!ii!siD*H1)-pEf+s;aH*p~`vG`+GZ z`{UwURj!|>ZH-FxLebKke!UM5$OG&<0!@voM?>J&$`{pztB#tgof;{9xXpS3)!fW7 z(>^v_GIuP6#4Edvd|gP8y)Klj?8Wd|DYj3n3Gre-hvUe4Y;!+Uf~@JO?p4IL@_C6I zPakGJBQRDC^{9HhOC#d;UA5B9-J|x-U7PgHSH<}j&Z27sW#m#6yZQu2hR;^N@ANV% zv-io#t_cmxYB=PLv%5t-zqmL>>-GD*mVY<<>Gy~IHo|RSPg)Rp*z^`K+HK&F@|C&c z&Qm$T<5I&t%BLY8PS_@lpKUGIG}oO>YAoArueJ_@FFyg=zQINDsY%s&J64EA=&IOL z&JHLEMeJIQo@i3lh=rNdZ$}_X=Jsz~WjT<&dHy!(e35^Y*A@PrW+qvF4|_4`* z(dABjjRv_BYN@=FJb(kRSprBCJIks00?__44WH|!0NF8&05Q%((N{qFN&$Nd0P*e0 zokr%J-s+inG`A1&mphOJfE7<4fMw_V)VDTVRN@M*6oCG=DBv3%4AxiSBPlaLp3O1K z`Pg_yb z9Sht6pjtOSU|3J=T{}Mk>nfy01Sr7Rm3(5PLzi^Q42)y-f6b8aCLMQ5r2`jdE+&#& z)dt2Nj|)E?{#BDtZY@ObG?L}C&w)#{PVczW^{J}O&Z4ia>WRRb>fFu`P}D`yRCfa4 zJxG+n$Brn^J8f`--m}+d#(~#GH3(29<$eK#Lks@NLt3fjmlyVT2YO+d20Q1@Ntce! z^*jNAxzVxFL_+g(RP02^(9PJ=+>?B#Cy)3kbL=HOs! zZ!KSb10Ku(I%kp-Wc(cOlQ(3V|C;TuGotTTqB&IZ$k`4|8@7`7><1|0(Apd0(Aub{ zXW3-%C@gz^z!Bo0@M?p3cK^rZcCeEfQV}D|zK|SoF2$3~j^p28F*te>n zt9QT3@si^ThYw}Br_bwrKe@1c?p?(_-GBU1$YXcSZG6%W^+&Do2hzNMODg?$w8r0n z`CruZf7!vNC_ix^!FZ)3(hyL}T+ zq?i_#>u1pV1jILARBD{Q5qHW}Jnu_;LG;9W=hP^NW&mfm$24lb+DJ{I%q@*j;l?%) z-ks3-WFEh=I?pm1_|CuHT!!-`YIyI?+G(I{;x5bLY|N64p8nW{F_F~5EDa@kF>}uR zN};-u!-q1Q(}8e_-S^|0uTJ*X_Ir5-&RwT9A&*-F%f(E+-Og;c}op zDF}blN9X9>d*R%GWPa|k!PBcpK53z72>iHr?q-`WWYFw53jSm|-JfC{Osm z?_U3r8}=tr|KF3&fA*H6UXMR`Cz)4t>v{vk_(G9cKNA#>HLp@yYqe7gwnN5=+?0k&1cTR1MyEXc^~D^#kSZFN~b(t7rKH(pM{e57l#Ua zt>IzyKg5g*!HYMUL{X;|DJiIYwW}vKWs(&q+LQkMG*q*ybE{7nC&m9#4t`Sjma=P3 zfIaVWG)#kCvmR7q06%cF0d09LuF?-}zWkYcA6vOATZ0BlKYtquBc`l9$N#M4G zz0G_+;RdU6AMMbE&i&6t{;S7?_oMH*ltP18P)=ueR+QD_7M41M*iA1?iL38?%C;uIBvTT8K1B6zLT(`j^j0Gf{y{n5k z#27ta2n#U4dHpOW-rl!<_XXW<-xJ&s9{Emqg2Ex!G(&Z5SHSL}L#nQ4p!YBr_L-o} zE{C2enL$`tn9N(f{Cr4A(!oIVyEKNWhMpK7j*j6>%wu`Sv0u848PE4n-5>=81#jh!S&XGSpo2? zckfBg-P=EY^u|-`L{9I-wBi{4&fN5w?ZJcNazVtP>y0Z8tKdD;?xtyPR z0$G-iwGQgOY-1YzZb^SyZ?c4SrlHN5&!y}tbK88;mR#Df0$?ZfmtAADRll}p$#LP7 z1mp@_1^rL}mLh}Agwq0qa>StfN7zbZmZx_BbxfrIC}>+^p!+p+T;bS{4i)l0$NZld zAEZ^)x?d2*GtpxILpBf_!H!f;y28-$3-hFVsSw0}p^=$2U z4>o?wH|yA!VO3&AOYZ=treeNNP&1tEJGC)2Gdh?yQ;h395jYF2u34?m-2dJqei83N zCWY(ojYec~<^8q;Ez7ezbn0~4~*8_bhQ&dxmw^$V;0%&R{@YVabUd~VUI z{L|=%WdW(~ZJO^m$QeHYyhHLTKs)olL<=9pdj1`Sr2H^qS5>L{*~`Z^0y5TbCF;f8Ho{ zU{lAP%dnZ`lB0@x6W46Fiu-hCv-&VEc(wig*APbL>&z8dKR}tCLXkl$zjIT6xp$*E zPS@?F&mNcFhqyTwnIfP{%6jIe-mg_3$POQtkGL$bxll_B0ct3R#nlNe7S>bcHG8Yz zEg4jd#8Y)Xa^~KLH|_Ep7k|3FjWS*^e)%${I6BmW@S|ibZJ5s(w%p+qs3!Nu?v$4VORWqUrliHkz2qxCoP47U62+^CwEty%fu`-p?&hXMiRY)8 z(*d`oT-^MbT)3utSK?UR^h80^wReAgCchGV;-hhp(VX0^1`QD#9&_m-de@+7iSnCA z#+M8=M4&1@U-RzzmcsITxfs$sNY35^jfkCha8npE`WEGjBx7>#&#oBc2o?V_gh<4B zW3^`91fp8TZynJZk^T!u=r0NwWgf0Bj@$>{#BYU5e$ZksAEF{v*JoEa!$B|UFFuhM zfXOR?23$(gM9K=jD*RRP$$!>asf_>U>;cF!5E%?8;K`c6ye*kBQyyS#yDL<^$)a6u zuv>of>-($IRtmlOUs!rs<>ns7lpVTW&ZvHToc}cO-lO)C-z200$N=B9PFU9Cm0F#E z?Gd_}E3jf|N5UTYf7jbHm7#noMW8dqlpDhJ@Qj%qz9ok`zxnv%VPhyqML^2=hsC#B zJRY03EOeV6jUL;?O)J_(V^7SS;B8w+R~5yLdk0s$)3#%3DSB{2V3~;NB|}ImtK?BPzRk0bZH_ ze-*MaRbk)VEBj6D#OT!eS#I`@?l16(p^=HL&rzh%zyo0Y*JsV9h9B8xeZ*s9y zmg7d#(H^dPHBdKTaFy>j7%Az4Z>XB;m|fdw|5f=%`)Sk=l0(f1DCMxIRaVt-(fgZG zS-AUqXGQD2t(Jj1nTtzj+sntVapa;?2bI3-pC#BoW{kpJx zeC@`!fC@>f~z!ZqN}_w zX?R4~E}rpFno|M+TD3vRdTPbz4zV>>%A_#-@YS&q+{7NmcNF`dQM&)EHmE{d{0plA zOujPRVq}18Vw?|c?sm+NkNLJ3CpTWMw*T7nrG&Vz z0}D3pv~2j{$ri-<6NwJuBhNOl*gb;!q5)_O@Dls(LHm-g;3pey4#j^R?_+XWNsR z6|wTeJkuw}B2*mG>=>5$A0Vyq&v!PYFJrO|ujom@Y4|>NbmfNZ?mx%AW6ncP-rAnk z`y^aSB8=iXPZg@&Wa;<&7{5jsEuDG%v)gwx%Y-|ACgdgc_-AD*$uA?Ii0GA*y%09%K405GFK3( zXw-$8sj)@4z{;R%u}9mv$ZzEpwUC{9Lqx%voBK9)yzu3zZz)$|Y^`rM-_!dLc)z(n9cET&59df0Y#t+zg+o8D@kbXjE zPh8PjzWThr0D+G-%;@*agX)I7q)swa5a^dE~-d?a8 z7OCknL}CtD3BNdH-KUre`+B>xe-~X3HVMR~e>E2-boz_}| zo{xqeZvDk%x_X_QAmsD-aX$B1>F@4T6(pqkejxkuni(Mjk)J}tAMAq{Z&l1j^WqNQ zDvwjOQR^w(w>qoXt#7Ut8T!dErM`@G@8l|_QV?kh6Thwp=9>SPcPnnOY&N|P_L zyo)&t++%T)Qoq;#<;@A3KkntIP)DHJZ|~W_rg41L=wt`BQuW!(RNt@}_0y622|fJI z@^yRh#4taPnj6s;0f(MXqMC2+R)7AVjsFYB0He2L(*`!7>Uj~aB5Q^kkQ0F4Dom7+ z?ppdD@G7LZqn_lR;motq*QDi;2c_D3a2J{9XKy6-7bea;aq#_)%A?cS!CEQT&I$>= z((jIEbCbLEjt`@w+!WR*9|`p=QInFmZimuoq7x<@ZvUO`s+1x$+;A!^m&4$(-xnpU z)8hyf)88{Gq^;{dJW(c;-t9{)7~407fVxlJT2^O=f(5-zLUzjFgnB!04eY6FV-%a$ z9ofR6#H9SqO52xBiBm)iWSUf0E5RzDIhjX$jYSB4KZ6cHL;Sq}HnS1vzbGuo2W&Xw zwDC-e2DxgmB_|MqKpt%ZaP7qZA?^I{Ynb2st6#l$m}ymSbt1GS-Ac2Dtb$Wv=CYS* zPT=tF`{CR0YNv-e(Iw3de6f^rz6yt}(|ZFc6qJUy=a zv>(dXK~W->D1Yn=l+?u#sS{Zw?=Z<(f2t@P8u4jj?7DZho`SvL%U?XUQ#uzhKrhRY zAMgY8tgCrhcI-CLUixFPcVm#_tEW$OI*Re1=9dv>Fo3vQWQ3$N3Wkw+#GKExnkjoJ zk7x5%#ak1sd8n}c*Qu5d^tc|H+^C2v56mt`4{U=G$s;!ncE*_1-VkUX;JOdBn4j0V zKz(rczo~5;$c9cm9MR*SM|&l~cS5)In;5S~kCA)<=@V^mZRSSoLc7CT(8jl0=npp$ zmA_flFWQ9id;smW|8EG&$e-5^R9MxoQRsgNIE|sNtl2dJe;bCIwWh{)Rg>7CX(mXc zVMdUToJ)Qv9g?Ymj>vxwtTbGKzIcToI=`a$(_0xHU8`_2hOMX-TrC ziW40ov=?ld^HlUc$V!4r_q<4h_pyBJ~I{*@#VCj4%R)=_#ct?yd zG7%lkm~%cC%I^)RlO2;pR2k-cJ-4uW+vWsY6>4fQ$vbm!nBGwZtyv4oJ8RShPQTIt z)L_t;l(>*@0OSSn)#qL&9hz&Q+kgR-0&JK*Odngv9nKix1c3uB&ba|L zsS4Wc(wZ!CvbfS6RE^n28*PeNWxnb3=b6_xPSty@frhCT@=t1?&22>Vo?y$1ga+K- zre}&5>*zQmDz%;-1V|;vY^3V0fYoAH39Mefhhi7W*R^4a%PS+{*{P)EfICeSjB=rr z%B)&8-axU3e`kbUIq({bDgIrU=TE)sw2jb*o>rK z`vEe2*_OiAZx>km0#q`O=dCo>Yru6GaJr zI}L^hkW??2f?vd#RYzyG63b-@XllpvTadd~Ozs*pF?c%zd8cyPsk_V9s`w(6cTJ;| z^P(ftK{+T*Y?+LyM&sCijKz2MT&FI&sRy?&CdwyYBG3%O8>ssdZI=0-O@2R_Jabo* z7^|%pz(Zqk)-bvh&G4Dy+NMJ~>4WgcHzk<{YV7rFRlVtl?f0*}>t?)nLg;x809<;T z#HE*CD97wq9~6lKotm6l{4ZN6A{($1nmc2DpI}Mr?`_0to{<~{vfo-KVENt@nlzPt zZ#|r4ob?B&`-R++!EradcQ#A!U`uW-pH)Y! zIaq1W49aUiN-Dl4G6{sizq~9O4ZixKQ=v~+X~j~`|8zwsZ%RhHmrOo(`zreAC6grA zSp$vpiCie^VEklGkltkV=y`5|U!^p!J0T3>K|oVONCS9U6Vt!g(;rrU$w&DM8wfyv z{$vAL|1%G&Cf$$d?<{|F87~uHWhl3<8+t+gqQj*l8kqCjX4LumKn0Tez{Qh$-q;R5 zXrVh@qRPF=NDNr{+)Yh__5O$vSm#UFXFPT>9o!j=O1i`J<++L@Y$IL>n5-hohp(k_ z#4~+TCwY?%yB@plS9?jV>Gpy?EpvYOLOV3BzNXdj*`jfy^HoIbx`83N?n)O}+06Oq zN~+MHCk8*?%f(F|ERKAqI(u@M(ci;ur&cyT6Xv=wn~A(bYbQP`^2r#)wZR22c$f?f zl?^@a4}m&{EWM!y}j z@dnRIgW$7!&PomP!jl0H&;}g|z^jE#x?6=?AsQy_D((KtHyr)5_3=+ds0nRl5S?CS zMy0!izy#Yp{b{AQLqDwlBBu&#Y_+ED;p_W$6~tSLqmd`Iu(Hh|BRC}^i~;|oj!5dY zGomVh(R|%5 z^duNtN!2})uwzOMTDOEby0{`5jgKaCGf|4oDBC=spl)i&Hr-0TQhvs+BGu|T-zNFM z4L&Yw_JR{GL=orizj!D`y!AyI%3dR zJS=YZ^Xs8kGZSD10deFEEag}XCus!l0rF?5En!*MGG4V!fO|&~&_*nP!(D|o5iX04 zck+ToFH>yDo(V@M46zK!o;h0`l*wg>pdJCAB%4VcMBMESBzs96^jdJU$m1SDi}sg4 zH^EJzcL`4Ix4SeaKHB2E61d^FV~%@g`BCk)lzWt~Y>WLrvf}O>Eog3A)12BQ3RlK0 z;Jkp%1!ADSJi>Y_q)QN5OAL0;zrx>E4=2bt2B; z-0KF2wnpej=$|bT%wJd}(a>22Q`^7BW846;GX_(8rzYF_Hge>Q`=uK5<_A5a8}8=Q z3?@6pei}a&OC2<7to-0MrDy4ZU9|+Sp&SlX(3pYj?$yk9oQY3 zmr1%shJ_6Ru)4Qw%(_wsXyaK)ki4)sGKG-E4OY|HAO#pkr~%SUpss>0;GRfp0VuCy{k)Cyx{H75z$}MLVB| z53}aL`l5oloz1AkXFfdzu80C{K883#s#-eK_1!3U=0Yy_m=|!YE8?a0AGFLElNXFj zTV0}GzOV(Dgi-N`F!6&jH0=kov@5otHH}pSM!8db7b~I98~kJ%T>Mz3*6`pW%D_lo zbRA(Xc4bCJK{5T3J|0*GP!4Jlh9>+KrsepB+i2QVYdU*D4PEvsZY|qX3Cz>du1Y*w zNB{<0oNC$mBo^P>=P;ImSH&OgY~T>SD8PHEtep0%fVnYM!DcEfaYQwKQyw)2JnFZU zls-;Y#Ka21s*_DK49cm#g@-ohzRY@AY;{{3hPJ~mRv|G|?P5ciCwVMJT}K=gQ*dj2 zSDT1Et(hvn<{njoFP}!C;>4}T2yIKFt?I_4ON|_rK+D1(jv@$N%kT6R`^Ta!e%iyv zrkf2x#sGvJ_%p%aw=4nxp8E4LMlN9TwhB7#1>k`++OR5PG*Q*<8=hVW=bAT*`c{^P zYgm+anC~<#MisVmP14+TLSe?X2=n>@&doUhm=q7iN58eLUsy=G7+~qa&eD){k<4nn zM@6BmtMkqC&(#%b3kf1SF`;*)RfS*Osr8I(rvPJ{fK9J2>Q5fF1}t>u-sn`3A@?*? zu=IbEY>vJ$iBws(IIKfJ@Lzb?FUbQ0+i%x9TGkO&ChVS0YTB@CS4w@UcT`IU!A4?D zJTs4<1Jy{VjKfu;D~2RSie4r~xwm__9e6i1(8kPB?qhb9)Lcyl6JU3u+v-wdzMF_T z1}%*uM=wRRdOpL&ly+#tzE+DCBxb%`1W2R3RQOC7A}xyIxkJN>tImL`?yW-Q6KR)Wkdg0Py1TLHlcs zuM{3ubSz(oV<{1ZJEqK;$SYqs{23MN9~54n4*J-DHt~E-^2K4HfrvE!+d87czwLmK z=#d#sA6E%BSIQ1`vn8NtpP9p@Y(Gaujoo0P5jtbyQ{;Gw9c4UHUN!GN0XA@QNPf(j zNthVllZ7uy@p{MDJi0zwg9QubmFH6Uf+*0L9DBBDTYv~V37ZH?oVF{Aa|B#Je=4E{ zoA}X^HXw7+_(fxjP^g`k1`O!1m@d_Y6V{hvtcpTm3YOR6A+P?v8IC9N7)*6 z!fG1bn9jnfW@LY5m9>)xVPv-axcuZqrPv|bLW7S3KULWXgQ z(yj$z%Yt2(8tUV=Y*K|T-*7JzD-eHVLzi)I9#CYXEP$0SVE4omnFHJ0NUM4qiL8r| zz?*)9z@j#oa+XXUs;C<^fbt34PqAfRCctj{Xp_H$c*p-@8JEPuUR}RZpG^GSz?BRs zg(aZ4Q3BiP(uCCX@5ejWZFVXo@HW!7O%U+i_!ovm)4tl%UaZ`ZtB5MrFgm|A0T@cr$?pgaW7oID!wQ(Vm#}jZ?$Z)1AquPbY-3prRSdZ% zz;~uTPwDWoc__XH<}9b62q^;@OnEG4#{{jxFcN@8X5-NsncJZZF3C{5u`5sW4$@LU zREfzhfL+(wd%=o&tOtQ)Fhhwxw1I|*3NbYE_JAuOyC3gyKz2yLCc8!L#b=S7)NtTc z-K9fbGB`D{*}L4aLxMK=j;b|j>_ze-8E^1SR|;JGjJFxCRgM9Bf~bR!fW}m;k(h!i zXe}FpRgqQSUl<_IMqIEJlhK9FcDZR*KG2{=g$>RFE1>!Z5GkiLF|--)3t)1=ZhDea zjPG>0d?Gl(!p2xeu;4dj7qNJR%rO9?oU}o!=L4c(E(SYP3KcDs0xAh~RjR~*&CALS zU!>1u!yZCMemWO_5m)^9XLFzu8-WqM++8LCVN51h&R_B-7kon>rzq1)V~!zb1%I=S zaC*3xQZjE4-dHxnNEY5WR6wLb`|Yi+vc1#Yu@uJ(GxOJ9DMmPOFhAv+q>uf~hd761 zmMn%IvksAGwYVfjnY0t!a8F4lrJ-HiDE-!N;hAk(T-?R-Qm>7K=Jo)|4OL9BFi}{Q zw6?C}U{Oj-+Cw=E^9_lqP=4lA#JPAt3gcIxN}K z%v_>R9C^ppzx!Yg>}r_fkQla&D3pHgS_V{H(^=p+no(kCee;-UfEYd#pbCnWg(jiR zr9#Dl4sr=vEiZrueoh=|*jG(Y9g=CjqzdqeM>P0NE^_5eZDkf$_k!=20BnDg$d8^` zIWd~^91-P^uUj7?cWzmNrjSBJjF}@2ai-kFU^+b5K?&Fi12)QuO-OJG@#fHsj&O#w zq;Q`$6jR89RVRAyEM!bIlB=kNxLX39*M0-VewDoHX_x)-^8n=Dghw-~jLY(8a?ziy z0V~8MZPBXB5tm2lO&iTd^=Ul3-c3{&ls*ybp>&y5+J34z?hW{FU+O&Q0 zUA8t%bH*!^JegYWg1VTmExGzz0iY1o?+ne2MKg4xw{&7z$=|_CRG+JhKEfXbY0Km5 zxK6-JAw%TlC1V-7sTEOJ~lW_XW_|jNm;B+zKaf7Kjdi# zx`OpIqo~kUO>VF;w3YQFDoGoL%!bwI1fA0%Ye*{nwh>j2H^(R`GEowk4O>^3U4EN> zhK%YY^3%Th%G2z4GrStvNn~X~V}wa#xI9#rjbt5dF_vl|3?K&?U%&q9H?~!tXSa=Ls^F3}rFfPIFQ9@MyWz$z6xC&=!s1NlU3S~yx6hf(R zCOnsk-kaLp`V)Nl?#)}?!hH)h;|U)UG6gs|XiLL)u0g#@A3G?$Q)(7olj*fjkQ_>R zQG}T&_BO`2+!s37OyI4gX$acz6yVlsVn;kSiMUItgkk&SXkwMM(r!jybS1jv3hy41 zmxWV<=V%onRk)QEp!D4J2RRAyC5#_Gudl6Q4sSI=qAv8V_p}U$);>aO|XLx~z z;G8nxEk>u@y|h+n8f22Q=K8cpzImBb<>Ea4BeT#F27LnSXP!@P6W+=tpgUlH*y;c{?% zMZ_d2?*vFILE7u4qbA=y3yX=gThOx8uR@H2eu|J6Jhu|&_*E|E#54#_4op(1TqvIr z974uCzBzTXnJw+iJ3cx)cA=*5j`uq#my}7z#B~Bkq*9E-=#~NzN?^P8#D^^;69Qzc z=L$>7*(47ss=LLTnp?e}ppvf&NX0ug?clm%JRDc{>7B`sg3jc6Z~bg z1aZ{{j~e@}Xk!sjPA4M05aH*%uV!K|`t>E($E0GTBTI;Fd4zI_bBGxn@Z(zUG=CMS zA5EJen?@{FvT|PK;|yAKPvNbEaS|_7se@6ZUk0$?Rhs;LZF?WAMm@>hZuA#6mqg2ZfdTeX!uM{+WF!hZ8 zqmtd7M+stUk%%g4KLXZ1A}704dwJ15>ONJ>G`C6=eh`N1#z4F?OM~dZ^y(yve(%AZ zQGjv16nhnHM@j!N3|krW000J}sCLoj1#@8kIYiS0kUOykq{rV$;4&n!gbCI)vwGbO zf$?i(CqkYJpp9<((pB;r=!ZDq?V=4`%X5RC3r%>JBE|_SB`9b`u z?E0>Zh0V0pM`*resq6LG%q$-6y{y>&#GCaM=sEkC07uy63%F|`O^`ESqB9G#A-?$&eyLZ1AZ7`JYZ*35q zUewne)PPJ}A*>Ln^-v=huv(24k-}8rUn6pT?4L0mAKHf#kJO;5Z`=1B5&m{f0P^jY zmF!|p@0XZ3#*2e@_{LeH2_T+q1utzMvg*qBXGS>Qr&GYNYT3rBlE?_wO%XwRG)TU_ zN&k*w+PjU%tH7l7i`7HxVCV`6DY2k=WC0p>WhPnv`UKsK75R zfzFXI0DZLXM>5r#jHQXJYQq?azLDXf0rH(Os${>iX|QtEoF;!PEdt~MOqsPn4wuo# zGj?SLGmNmBv9c2ZlenAkLa^I)85IFzWqo>LcCae+J7A2zx_F2-O)nNO2`i{>hjt{B zfIU-Vz&dB`XVr{G=O5u%C9p&0A6-3DJA_MSF<`1GMUTiU4c{YwQ&_3Dhu17208Emp z+Z<1YwXNl5sSY)SS#j5#`e#RNBU9~)Dm%SWvu}s76&^UeCBMso(cuH(WhdVF3X)}( z(>0Q?c)%9l^61{97wlz|r^^zb+cO=IBUaM)$J~z|3OZ{QdV0E;FYi2XfhS@a z#~noeDYlaMI54xMHa_j8POHW(2WpBNaopBf&zEc?%rYGuOYy#rkc|7!pP z$V3DRGk%xN?EXmI1p_HiMqVS}pLu{5uHYo{QnU)>2g}RyWQ8bRuqPtdL(f47Qe4O` z8~b2ob&FA}!#Os{P*~ds>#hr&`P(YGqV-H)tD{9T&RGTOiQcM36IK~$6Pem-(d~s_ zcUxV!xn>DNWcUC;bwM_LA|SR3()r)*P>+W9>`>?-wJPYUjF@>ukR4Jzg}?}byb_%@ z2li!y;F&+i+sC4|-4jZQd_SWf#=}&u8xl|{eau82&wz@U)98?{rMwmE10E4ETWI~D ztm(MhcWAX?T#zvg*gHa<00^lO%C{^bkm8`xtlUf_gqKrF-ws*ej46S>2Hm`asPZJy zhUtg_KpDoJouU_PG4T~`RLw_l&?NJk9f)_(p*R2+GHL4XUC95H;HFkZZ;}*ERD7-S zPPV~lJ8{-x_?=ELwMYU!Yd!;I2BeNbbOrHbhAi9xaFq0!>xZTEsnzojhn%m zzDKv`=OuNE0;U(fnW6IWo>YM?>-#y$^J6aJp}P?xEBY4*d{?dKcq;JeHncMC-A_o+ zk<5;d^RcJWJiJlV7N5{m^|?I5o~UO4oVHso#YephA-iHnYHvDMm zG}vO(3Md!)t(4N`@6xN0-l_Cqo4UPVBS=nvKX+4KWhH0SSlP|)FkQ_7x1)wtm9xj& zH9Z46%)1i>BzijVdA0qXfqVhH+q*v+>qh1LMd4haE|<$c z<29+?X{8)+_**Be%u=-?MSCjzP10)gz|P>S=4p%Ent~r7JGl~3(?qM4<%#jiay=C; zTp2F&leL6@URFEG9W$c$lqv$#3tZZ>zJd4!VYMACTw7G%K~HdQd|qw~D4z;v!I0-3 zGP1YKnKu0Zg_NF=0_Sh5k#3QPn$Ml@=6z#7vA_44k-b@J?c>}waI?S(3^J=M)m zJ_*34n`ua+rU0-6XrAs*Nb~Igt06v-Btot^T3;qyDPVkSj7M$>Xzy?(?`JF9Q_5q< z7@SJ=&sMpzUAWsoh(E>kT)-qTr!==QIq!J61K0xU9S9gF60plfd7#;?}~&T=y|D=%w|V(w=98I>G0H`i9uA@t^-yrN=9 zQp<`(JuC!rA$dN)-`v_qn@fg8``uQ#X z&lbQv14GZV0^)vv41gUIV?aU7QtqwqM8F8JO_8#B+a>6aM8M>Q%ck!jUI0<2aWgJQ zGUI5g@B$Dbi9iWau?X~*d$@;a%YqA>zK3qPpY?77DWy$&EU&Ot%X2?>HN5M{!~x&Q z?E#6VS;qh;TiX-BuSZ+_c4}*d0^xJ!@ha|q8h~8h9UVi^v9o_xz|no9nD31}YB=DAPON<}?Twf?xKn*Y@FvQ} z0MIWPPN;>qt|ztCkO(!lj)ZGhm~&X3+Oe_{^hJ>E;) z{4Tr;B%f$m#uF$Oy_gT*6&I`%-dlcr&i^fOsZO$y*Ihn8f?q0x{ls>jscW&%AusSa zy`NCvc`rRzDGbE&#*U4IHIgkbwY>l5W1IbcU|fc7E7w#Wv2xks1H7lgqD8$=$*Vz}#TEHg&Q9Wgk-f zU;pKw0N>K7)*enA=!N;0RYt!SO#W_N{(t)^|H?`ITS4RBt9irof?eEAu+hI)8H0?} zr&!o#rbALsZJ(pNf<3jUsQbC`S|+auvpk$cvN>O)RnHbTzIJUo_QFi0;st`*5@<1` zs_F1sqwVuvNQ8x>qtkV`Q69^xvL9$z1lBIh z6Zi{wg4VM$U$c4T{4iG3G*TQN%u1)XN}^$ULw)%A(mWio*TVh8eLUaPo#X-9ev&Rp z-Ii9wrAmNXq**cH$I^{Vgm}yriFF6Rj(?LZnU#(9L3bFOXr}YW+AT<4GnF*no-<_O zj%2RX2h-)R9`M4VQw#6tN9v9B1-LQwS|G5pc~P0m#U2nBp|~9=Plttsz~vION?I| z!xLzZC-8_`QPcLv%E9ClQbH?GG7bAWi|6)8eEwYofd4Ypl^_<} zsc^|vCM_)7Y@poVpJG!70_z{)MqqI8KmF-ZIx^ws(5@npy@<~KDx1Jh+9C492H}nH z+=I1e9Fz)1H8~k%#sJUn;Qqm5g`$* zB}@AGl>_DU%Be=oa%QQah6GC1ywer}Xt!{E{_qQ+gaE{gp`-Yc-L&K`h2IHjHu*Iz z`6vArMtiyUp_glHZh_mBNQ8KBGT88<-n%)fI-(YeV~+K~OKEY&aZn7L!5CLI_m zSxYX3w=mqVt7@prg}<|V8DoTme$t>OZbXL{2j*TCePDXqEG1Zi z5PFiG z?QMC#fo82g@=mHIm}UQ)H>lSM`N}*3Fcq0-@|&B4a!IEbmpIz5O^)dcx)R=YQ#mrx z=OOgAK#59nm8miOpgDvz0}rU=b#ZP}RWB$}17L4g0iJn{7nd#%+^_P*yzO=}yhNaX zBGlB%% z@&m^cN)q)ml&hjr2?DI&@v1@QtAN(a_uQp6R%)61^=rDsM<-cmdYdDy#_;G{$G1Zb z$oj4^jndS6=VA;%%qkECeibTkjxRqa`qZ)eAo@m8E-Ze-i!_UFs(hj+9y@oLK=!NY z2fnls$D^MlUSX`vlZ5`0It7KyN>6S}p(~m2n9oxm-u3_KP zT_a1Ssq`QF0(05n zVKLnaf2_#g2`LW8pBRdbIkZ#FrSA4x6#HS$E|yb|Bt?vBf%i{g8Yh+t+p3SW7CT-o^ruk@_zP3BQ4-`(}&eh|wwFLT^m9g|YUvoFgMmQ>6h&PK! zYXg0jvPselSP61HM zy(%etFrEMV7zC@3&G76*nzV^jaME+@sFap$AiDZFB%@x@*tWt)Zq!cAq5~!^+)vb2 zEYp6Cal?s?Y#^|XSTo<@4S(#xJ!hR_`{=A*Bt9NjQY6lM6poZ^k&J^mu_KPRR~z2v z2?n=1bxAFlYNZEHQkSr7H!)2UTRHNDQXL0f868%HBbimkc+9cpcKc3y-b_%WQ@W6} zP6>c;ql_GSh{S#Z=|1pKGT^Wj+!*Ta<0kqIi4iF_P!J1%F2Vv$+Kjv*P{d(g9v9(^ zPZH9`)63*>7#4_AC`PL(-Rp_i<1pLnb18YBG$_fxy!9_t*Wbsbl+607r}j5cfvjwF z9@=V(rCFuzgQe?~&bfS4NkS9qEW~obW6|2cM&6`3r$V zU;wkan-g$sbq@{efC1Z(!d=ZZAfI{CEYAz;TNem05ci-dQ~q9n^_vj++qki(wkwN( zx5boh=as>1{wO;8gPSEcP2O!8!^?@}?p2c)0M_5+A0jM%tAqaP9al#lzyUJF{aux% zSynv2#omid``_E?ug&f^BmQ?j5&Xg?9RmpE);dqO0L1t(Xu)^~z{n8Sxf+31pe^(Z z0@TLJ@Xc8Gg2IFjQ2G0x|Dimb$&73FXhlQLD*Q-u__rM7&r|0NZiMPQ1}yU>Xil#z zg62dEVHyMatDXd}0SZg_wkwZeL9kC^e*YdnSU1uY6_f(prQ%li&Lu721Uvhy`rpqi zS+AZs1oqZ#FungGv3%w9C+HWkkHqFz*Q><*cN(docWTR-rT|*d1N#vEJS#vmbhdkl ztMMn0BeoUifQwoJt~qh1h0UrA;25o(o?{vdtALMF4=Etmcdx0$on$EM1BgVyHLLUs zx`Qy^SJ$%gw}5K~sfQ!`W`MgN*k1;(0gr5$?KbNP1upS?b^W3H^6uSl?mP(JOaX{T zE2m4`bb)K?X1gb9H-NhraVOfY0JNg=jhfzCG2jvhVB`*0fV+dJhn;nH2fS_X?!dKs zNpQ{jAsqnw_n&wA|9qXiOyx!6Isr4Putv6;WBq>xbpDyM{FRwM=(Kr}P%$gVxK52> z@Ic^gn%B?MochrmO8|tVpHNW}^l66JOv)GDRaYa?oXi&A0?AQpJ#`vD9knLj%Nl=N z3STG;_a!!>aYe8T3axSG*w+9J6$WU;7{h1rVE`8B9ueFEe~WZT#P(P0h$8S8pg>9B zQDmI}5M68mP^|wv{-2!uFPuZv3#9yyyOZBY#V+njvHXR{OC{UR16pH`J1XF>ca_He z^Y8zT*(hHHs7C;1>nmEtD-Y;i9wXf_wdSs@YEX}_G3Fg0 z)|*ze&Ce4XgN8Qe{BaEn96Ba2uMDS%QGoNdSiLqhS?)U~6p{=dmT9JMsE5BDcUi2a zIgB@|d=bIcSOhZpdSM^8bd0+Y>stNXKWk83bLKeT3{m5*q_lLvJVPh?ru}hUszag= zs_~qgVpo#k1KSVFIw#B1J*%`X6DmYkbv8x*Gra%d*_*ToWGn)fng}vwnh~HHjF)*~ z?|uWb{>;!U=Y@)3gSS&ng2h_@L5-AeM~+`{HUC<9{lE4rC0kY6gkTIG`jybwFBHKs z-e3Z?Z|++s@ZX$Rz8%p11%v#1^$o1_P_?j+=i1~~@B5c8dk=nFIl$cmg!Fw^*qn}t zIn1n+#X$^q8AF`Qv;NqNCCL{D?6Qwqf^m%bK$rECKMS+|Yu~w?2}iyyj zpeS4n4_zWQ5J_!52^k+*DfB#Id=3BPpq)8uT+k0vq3l-x>vHO`NiwfQpHEK|Vo?eo*zk;SW zIbf_238u@OwS*UuOg_N+CD%_UMo6o%M@JX{tb~WqO5{Mx5GASZ(QBjG!YmsUtaMq0 z1OU1KgC?JQap~N_!sm~SILG3dZYCEN3xSD+cYaV;n?XR&K$Jw`92`1xKs(F}$QfY0 zkjGi#Hp&*9{jpj|K<3pSrll7_ZJ_(YUeuBaTVC9MV-qf>!UI{Y$7$&q)OD6~XF^~6zvhK-= z*|nkKjW<#J6n>1PLR~(u?V0`TOb$Sgm9yR~k<1f{y_x7z6V)?-+!~Nm{NoS!pZ!4o z$lX%1o>{3l9!PCpfgD*+?f~e5H;;XJNPPeHif9uA%?7%h!%6_SaM<|x!X_&!{H0yx z6ZyVsVXhEtNmXl|?uT<^4g1cq5h0a+Rt^yv> z8!9IS-~lcv+(oQanq%?S;`ZjIqe(jHMhM&hSUVCat>@M+#;pet%TL5|9$InT?j1Av z5CcNkzVP+11^AKGUWezcHbiD0#w#ZvftsYe)A#U7j^g(hnwm4UI?(Zj0LIwL0}zcm z_b~XhyLW}0P~N>$XgT@n@yc%4dHxKRf%gm6QWRz*Ya@r1Pn9Rxv4VS{0`_LF{7Qo8 zU+6o3F^w{#^RE7%lq4QJglbSuq|K^boiTXiwr?&#N@Krh>=4y_!G z0X-M|xs)%1ivrZ9j;)VtiP*8JoeP^!;0yjgfsSlX!Gbh^mR`Un@Sj`%*GyBnAm5j` zHwbJg22f8(#B!*Ply)ttPw3pDb(468d>j)mCN^k6_?~_iYLaaW6qCrAam`GA*PUp1 ziQxvL&(CEADy+Sl#{esuVpa55u_FgP?G>bYOyK$hQCNQf$8+JfoHH->TO%5Deqg=$ z?9yjEuPmV0aJt-kBjKwNwfv3sG#=s8dsLQB+SLKWpEr@4HD_f5CSQ-M`td8hJU4JO_%nQEHm` z;YQFWBR}+u9G_2VzxaNT@f5=3W>kh4OLZ4Nr)#bH&vEn~z=XXp@4vXPZ-e?5dQt~V zcx3Y}(nQ&$_7)?-L-`X?q&qE6^ybk>Ce`F~e;bJ7`m;Owp8UF|7A+csj zvec&y8>qI)Y$rSoavn%Vl3!Qjg_3UrT_mFF<-L(w(>ARc1r*-0p`IOqQ5k&x8`BG3 zUGmdQ-0~qpR3D#wMNSRjdKu&!FgWLs_gb1Q%vf2ng^%TgQRk% zSt(!#o{03}p@RpHamKBiMy!If|dTqbFH5b72cdl>{~{s#+b@;#Mkvdt zr}y}8Rad`<@!t-<{QlX!l~-F@lU;n?@|@7>0+n6<46Bw*%k4cC+tQCEWf=52|&CQT1%Do(7BKBedv@2T9 zESxAe`9`HPm3;mqJf~^2&QF>Lx>J09K}}<1pVpQ*IKo}wfk?d1aw(GeK)qSkDRL(@ z4(W*X`$)td7)y*mVJ|=hSS)0B9HI6*?ppzKCOJ~M@1FfrpEErr=lJ1`$15UcB}7IX z_Oem}+wE}3;(RnC^6JTx-70rrq+I$(P0sA8TDP(k>|!l$Nne$D>4F#;xLK_mIBZR@ zHG(Txr{c0B!SkaqyVBzM`RtJdjOT-9P}9kPxk1hEfA;os*h@qsq=aqTvd`#rvL@Ko zs}046zxV8_`Zv;Y9C2P7ACV%+oeEw!vU6vwZOL%|r;o03saGLs>wQuN40Z~$9XnOq z7n9vA0zCE*T;2;c>ayQGwRj2qMt3rR%rVSqZkK*Mv`Jjeh7`5fnNA94V8nY}>)~G& z4e(-BVljJS$XF$g6?`Jc+3U*|omds;-jKM!q7hsJ>iZU9dhrN4? z)P1g-eDW$)P}ct3zHig@Cz3))kJd$HK<`i2y8SbzoWV#wt5~A$5_{kwgO5$4u#PNFhH1RjFn^~{oJkjWC|gxABD$g}5|Y=ZXx zpbi?!GH(y~W_OfRfckUacJkTjo#_w}RM^E(`A}!gU$*->toSQWjx|y<0_$Ss-5Tqy z^5pG;BER*lh045_ec)tO+($_JjBK)h>X38ygXG&)C1Vde^m(_U~X;%t4by%$pRc`T}=`&r<3;V#i-zSX0f>)lSE!Y}V9-47Ox+K#uEcoW4 z^~NVoFSFC>gx{-g?Eyf(gMV(at*E=+t~+Uw)twWJNYy#0kL9bZXTYDxrW&TUac0vM zl{eUgUJ@q_c?5Pzh(RyoJ2)iB2QX%?W|%^~;$`t^!ElNleH*JSo8&$Q?POs>Bkz&P z+V>s{{4E+Iea=*3O0lzpU3(z3t&>6Bk8yLdHoB2{YEmnC`B7UmTnRTd6x4?1adTts z^D3^fL!)zCv4-=btgO9oOYSU2r_aa)J1`T>P`uQzSat+lS-JCg{oVS#YWeRS{<0E( zGFsF3IJu}Xzr?!T0cnymeSkh5t`(6AR*Sud^cPHeD8BCc$mZBpx57#~==KmR8+__X_{v;B`a>5w4iAgVBJk4pMLvy`@+Q)$6LBl= zTQTZPUC;V%$K#)=%YTb2OZmb&v~`ExhgvO|JZz6!i<`Xup8nc5^R?01bU*A1G;2}C z`j(chzwa}L@BcjUUZ;3=KqXSzNH{`2;IjjdU(eGxz-X652Kvl%pnFMO0q4@+fo}oN z@DnI_3Lvi->_`neHkB0#i+OTqeXRa6fxR$8yyJY#dk})`G2RsKnCd+I(TspOxb5^w8SE_=I75{8 zimUpdHF1V6@wV;>z0%YSI`ry+Qi}vuRph)tjjUSg) zGb=yO1OlsO`!=23EK5%B5h;c)v#c*oIz1?#$g&OKFGQO6;TSZ!Q@>5tH*fp*^N^%N zxICOg-l!O95*z2#Ev0T)uAdW9jbg*wUYzBR_Kjx5L|(&Zb?0tQlT`{A92bm~C_R9( z#OUpUlf`G$O4ZpGeA_&* zZxWxob{OG zde;+5ukM$^uJ`#uhMKA2f|{t`HRhWR8`b?gJ-~MFam)3UsfB&`$6b|jpu$dbs0;<_ ziF+Uy32!`r>-fi~4-d=E!oTxqWOlw>r7(RGJx``_!~ezS1WR1G>1nRBFxbE)~(wD6o(z zC~DN>ol$~gcvUC710s~jQqpBv>>K0Wz-BIypsySrfWqs^DYIwX=FMvXkk&v@r)`%x zdYJHSPXElhi`wB{nS60s5n)P?CSH`htTI7fmFC0AmZ3Ffky^=3LeBc{Ze^9djd1rn8ZN&4(Gk6fE~4X{@>Akw z7GH5?VSMB%%%u0Y0QOvDl7LctD#guwG9u&mdlyODcpAyY9jd;L;jCQfdmf-8z0As>v$|3D7n&v96b>wij%!3qAkn$twe*^%Lk~~bHmA6?FwXFldZt$fqp8~$nN%&6&Gv}!_dVc`QbI7ulutj==&!f0f#g0RoLLJ|Ce&95`-C;n?h`vElA9(6~f1ikL0Ygd*cL# z`n>PCcsw|z&HUJ{4uh=P{3L-XVPH@IPIEjF2uT{e8 zC&9Xh(R%jpC#JjF-2x1rWT`&8=`Jlwx9FHuASQJCJ}^0{e6xTewOr_Z6II}>S6q6h z?ZU2-6#%!IEXTJ3ZSsBr%KoZBmy3>@NLljjD+qvFt%*sV3m;BQYwaV}d!qd)Bo#sa zLkJRdo_NP#iM|IPl7=%bfcU4X<&Xc6)nqNKctigX9Hnb1FCo>KD7B(mhF12L<~_y1 z0m@%oo;F1>H%i*U^c?zHU(k#5DCJ@AgGL@KF-t&JdvDgzQc7Cd2bx#A5XA-ut+UWN zikr^T+04=FMP*|FYF(ULMX9i%o%`O{=p=CwF20_=jZ^xsk}$7Y4vcb;t#4nv$JaA` zObAbZD)SmLU=rF?57U%k3k14|)ej1)l=C+EM6XD8$!c zps~Dy71jjQ17@RIjPUUO!N)L1iz64h;JqxPi=C7=kQ`etELP_HaD=!QSJ?bBuWU$z zF#q~##Lxl{3%rpu{x0W>3qmVS`8(ced?c5}XZF#r2?4j93n~xIN)A0WKGMI=@%_mZ z_L2qnYe=!+lSf~ub(EbJ)yWeXc4?RB&bu6UG}a{4OoA)4>6}BYwJ3GRMbfOuB`$cP z&WN&1&sykgJu9)myz4W}Ydn4*{qNC9=8o^P$Oaxj0OPBr7+ZQxbtP&P^~pf%n^Uea za!lZ|d+@BJ*n+J940#~$Vol*g*^z0vE7VkpMpHFJB)~~2HL971H|yOUOn&UKnR`Qq z!9f<6gjo>{kTaymh=jQLyRt>XHV?J0(b88~xn!i{muSRc1FZz+d>~o?m2;p97Spi8 zX^pZ3WwZV;0m_AsNFr77b?{`g^mMpDM?il&McM;YfkwZXo)1?zZ8|iam9NW==1+^3 zcX<4kcBhVL>m;`QdUv;2zgH!n`}5)KPwW)C@r0fyT|L$62QkuHc*jWQS{ubEUKo%( zTj4Z$Tn}H6qPMjr-eE<_)Y9-VpeVD=NoqL9=j}_d6X@h+*?Ra0y&3)DNfB(ncz-UC z8lC01QjO<+MRUaD4pDleg_2U@wI=nnVADfEOeCG@F!Mq?$zXg_?djBy9=S!E+h44E zlVfVnY8!-7*F!63(zZy8n?Tbxm#$Mcy7EV7c5Xyf|P1gI?OHYg^`b)fxT_Z(mEr1?Yk72!%FM*kD&Dm=5}h}%6gc?t8xTZMqgb} z0XG?F!pcM#&%TZN45$SKiameZXU~z{FABGbz;0JHcUsA-@X& zciz9A2^ln*QQs7sx;{Dk#5C9OpNb}IUVAOwwFO#CaP|AcJ1$`cVQ!HqSwJ!uD-GgC z;Kda!JhYeaLiETgKhff#WKmrxAh~HQ2^nIYU?pelRju5k1I)iaZ)Ems zAJ*SS(|_fX@5Qp-qv^^2dnBN}dNTa`FXqo1bGbs%U=$-LwO_m^Ilr&qYtzZUIP8G! z5}^Jkg5@ES_sDntf)M;wr1PiV8F#x^MRA@6<$Y!W0%6ia?I=Qrj0eu5daBMso;Zop zqcKa0`JxR&la%W$3Nbucn6YZ<%pW1JF`jD4M6E>ZdENwpdXL{04c0z^S27Vlt7m%^qF4(_XNLH2!V?X;pt%!b_X$*? z_iyBJEYgNIb{_GAQ@kToRW&GUirgC^R~*F5RoxtJ;%@dm$p+MidulqLqVvK(OJ5bb z29wQKon+EO;L2L+>zp&RMUs(N`%dfr)cjQK?}sRNY-mSVBrc?J8QU=H2Ev>FG-Wip z<+cmL_`oGssi)QLV;qtNQaRyz07l2gAKPlj`^NsLxjElMg$Nt)8|C5@ZWcfb8VR~dZ|oadi&GS{qD$f|<; zJsna6*s<(V*%(s-W80#>2Qxs1eq83EwkVuHxMe7SWWV*2z|rvNahi%S-6-JyXGU)D zO5{lHKYi~^5#9IqQTpnIkwueaK*?F>DT}zh1EJ+kub@3Tort0fPi2|0aZ}fz$ilF3 zt1XFGJj~|iYUnNOu|KSOlC&+t>oK;Q@2?#;GO>C47{n9~%9tlsT)wnZr~1sC;s8z7 z(MuH+OdvtL3^?Op2Jxy$KcA02Qm1)T#2ay-bb&e+2(O#QvIb?53@D6Vp3U5+9*-vu zMs6|Siix?+IRw%Kt08F9Oiss{Kvq%P*ARGB>D~$aRrcP_rO4S%SR8LLE1epkhHf}; zuej!MK(Bty@pK!B7g76cO0riV^i}jQ8>jEkMoA2h#Pp3Dlb+_>Pq8roxq+vRkQM8c zW>LK(*Z6x(5j+Xdqj%hZGKCo$L(Cyi=MH*XCvET@YM+|A5eKM1^vJP-NTO6?Q8gCT z^72a<50Ofs1Z=1MxC5}>zg6n~HuFG9`gk7~#7n!Mz*mFD`xPg(T%@$~8lC1HrkGhn zW!1#FK`;_i00MLW&_X${Sr?Sy7zI@+k;W|T5OXn-MeMl&u}HFddH;(joPynn11D>b z`4!|tw=*2E9Bw0NeA;BSQDLLpP>%O7sza zWB2g!B1uPj2qeAJLQ2e!G~Z?4L`SFDs!Oqdw;6i&5Y8uEFi$os&Nj$UoDIv39{?MeCE4MoQ-R-Q`J&-5(}?k1=fp z3GX1nnuC7=y%6*Lfo6O3D<%?vOY#A7f61rwwoX~C$J4AYQmZlAKY=!B{;RFczIRve z1=6eq095UtFbP0#U1Z$7_5P;GX5Ly9`Q!W)v4*O(yr)_6yvm)>AJkVC4u5vA6 zXWV*K=f$S(XWcxQF>?D^*x9+twJ?|bO`SIa6#I&m`j4wAYk7;ZzKg9>CquAd+lm=G u2(iV`7glRltv>=CzP>7D1JCONbT?pzlN1AL2%sZ&{6rkgcLPuY9{w+t3(8mk literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-nodpi/help_collections.jpg b/src/main/res/drawable-nodpi/help_collections.jpg new file mode 100755 index 0000000000000000000000000000000000000000..dc0191a1e212e479d4eeaae657e402feebbb109f GIT binary patch literal 388117 zcmeFZbyOVNwlCZSCjo*dxVyW%6C}73T${!vSVC}uJ0uX?0tD;EA-EG<8u#E9I{53o z?>YPIbMM~YcmKHKz3+V^H3oyKu3Br&HP>%S%{6B|%ss3Dp2_*x+W-JcO3VN>z`u@% z0|1V!r=_DW00Dpm|Je!vcvwSZvh(n85$51C~G3w*yc4|s{D=}(4K2=Ut7a40id&Spo)>^OCv@KsdS_)ZFONdj7 z`Uv{~U4Yge=9E4_CuetIA2I6RI~RtZ|MoKnHRbP*csPntOZ_$~rM{{Lr3}c;nv##5 zlg*NopOccGi=B&yS3p33m6Ds2i<5(sn}ds+jY~k7hg+DFlky)2HGDKTD;r@=S^0mA z1-}xb{>P-ey}jAJdDua2wj5kSLPEdw!OhJEe}c{3*V)6|ht1iY=AS*tTDx1i*}Hhy zgPbXU>(Sf-Ro251Uahl&6y9mp;S(|%++_XU;r+;!$!w%#Da<>DyP|9fWQR>+{TYEmS zTTo6=?w@UCL6)9CYiEytwzc}BEf?qCw*3tVKo|JPves_)Ue;FfZXh7#?-Lfb|9e_w z|F*w>w6*$MS~%tYwk-#o7>?hT^-s(E&!6Df`R()%(84eNfW5Ud9P4gyP(K_2uzrUs zz^Vf-JO~d^KnMWgzkfXX*Ma!Q@sH+@5D?&Z;eUVJ`0t)PbO3PBkQ^S3AR^!Z9^oJ$ z;vhV9BT&HUdxVOB@Gsd1prAcML_$VI$3S=t{~ZDOw~_z2jSRnsf{K8Kj`0+LfQa}A z=@AktDh4(N@*@TW_$?e{6aXp}E*=^ezSK)zaha0}L=)uv0C)=iz&Kaug^ljHYJ+Ywxwq%Q)W=1tV8^8Yl;=}(% zICud3^pM+0R{vq<0|)TCwfmgq3J*E2P4)7VoW4Ao1o5iQAo7S<+3R-n+t<`Wczd@D zaD@N5{fjOC--JWnI8Gjotb9Za4ly;aZ0Zn?zrdsVR{xQ+7VoFE3V?Qxfhyg7veu?^ zoDud7dLGh2G+Ki?w?Omev0Lr4b#<%E4ho%UmKbcpW33{{`ERWb_)2n0Vk9xIMmv+1_{lWMz&KTkrA zX*M%9RQRT%W`b#Sqmm9hfsU@E6-~ud7K7}s7Ey9PSN8xo)LeQ1j8(UvHc^+nwo?3x z@*@4T^DCp)G5sJhcMLMg0OoD1!hE^rw=M>jHZh##nz5n-bI8W0R3AZ=C{M--!U3>%mzIq+Eva;igilLla~W-EZfub`1ounK zi}F8gPsY-#R0@B=4ZBMAw^tLU_V&6-X*$G-4lVN#Nk(T>NhpGD@o>|IO~uy<4yO;f zrWtACqcOciBE!-9&y@d}0r69j}i$-PUBrsu5yT4IM(P% zMQ1G}{*|wnK*rpnVWujSsMV+{_3TW@cb>bV#;PVf9$zRv51*N(3Ncd&5WJSYS;por zr%36pJfdCt*SM6m^W%}7Z>~MEe0r#23u?|y(S4Cx?$~os5p3GFSu^kJwTsTD=q$*_ z)R!74qxce#i74~280BV%PRq#n%vcwOvv_pmEs&))A|ODQCZ^V)+ zBiKN$n7iXl1k97DzeR7|^xZ!FLJ3nC7ryF6DGKQUDWwn+9nCt%Ldkckn%jKKuz9&% zTC1i90L&4#L(%*J%Ty?5kR=YW|1j`M0&^TN}W842xJ|=U{5577|SZ*Qwn$FfXt7yx=IGIBZzMW->Ifgs|!bl5Mo)5V{*#H z^?zW&1XK^sfwLrw=ghp{KZyQdv&bZ+VWukOA;BlPAMXKral3eB za$cT)_#XL*uV{)n*v;7Bz>)l-Se>1sk$F0hi;>Uh>y!v5M|Mj$~7 zqDE?INtU~;6&-kliV>@=j@?vw2(iRij6Q;{nacN}KnamtU0=xX?{j^xwp8;{aaOXc zB`@*kP0oGHl&fLDd>J@$&mj>F%53LovoyY~-jzau0)a?a0^<6q>w4;sY3VY5$oKNL zt4O|YNfk`P_G}jo!fvO0P4rn$|k2-c$EWYtZrG9xYy(`g;D(@kACE#`+ z1NjomR(2#1lxB&QMiizzv2A5{r&dazT!q|x7&uooQt)q5!7KZZOWpFVqxqQm%0}cP zBi$RZM5N}zQTM$q2i9k->@PB~D5MSTYt(!4*kzjUV3|imt_F1H04T{)AI>})NC>?o zUU#c$KRwJh(=FgkOAQ?Z(tb#o7o0k%$bzAPPd(#B0TGF5u_oR0GN} zn9QgnD#V1TJ;grWbO;pJeU4%wEN^+A52PQ7`Wy{t9SGE^pX)bJIb*G4Q}OEa*lqYk zYCC7JxtHr-3W%;%&0TU5@B{A?EXZ9dP?j-PC|ao$H&Z z<2dzqhATRS!XNdukeX`~L~ZdT`XbtS>D6N!e*G-%nvg96b0GVW#p;DinjT8u^scWp zWBzcVgFY>FGQjvy4JNO$81}q^LdQ5DzqiG~U%fcC+|;``d_LUk=G{WwTtM z@h!J-RKaf3#N#>G5Y5@ssbYd>CA>YOkCoZ`;u-50H4=jhGD*MQjJ1!|CYBXts!@5f zn72Y}jOg;I>Xa>jWiVj42W05|9z`5I=_N_h^KDb7WZ}t}1`KV%r#=qV5oLuY7yp!> zf14)dPy0l6bFmwdq}L73MH7dQRUZIvKmUww%tYj1QX6TuA~Kk985-AY(K08uGU`0-`F^oM z{xqQXz+I1Qd=wgMJbUFdS{(769u z9d)j2qfzB0%PyEdu^+eci9scgRZm2rC@z_%G&80upF$?zl{40}N0^+$QF_?~#neQ( z1yQl+DX)VHf|g87w2P0AMwb-8`7Hst4W6mdfqH&w2yW)INCWcbLw3On_c3OAUV+?w z2tDMy)1}W1MUuiN)iA)MirbS1JznSKWg-7rjDBN2f$|F&?C!M_qdeoWN^ zAY|1r2X6Qt00Xg*q99C$dxE{bWwLaOfKI30jjH61M&-KBG&1l4D8tJrpZ$e#ByweD z%alqmN#0aI2(gBqeo!x8OuHQ1J%F1U+f>elAzn`P(t5`>!oy0sA025j?ge^J=X$se z+PiwXmlV!|%3ssPxg;cr>qiL22@?T`d0^|M#rs}mYL^xqkCzUUm(bY6Q=ewNexa`l zAr!GCYwl?%;!0dmMbn;AXJpiD)DEGL)P++|!s;z~yLAq^#v zMV+on(EWal@JrOwl6w+U;i|12UH`fUUjKNZ1J?;Vo5*ou#JJE?zG=iq2WTt~F4pMr z>niFTtR=&3LfZK8WI%QeCORo?=3>OE$$sl7pA1p?YO&mo6RM7<0eodYD-~DpW20Ws zI!4gc5fd2v4HnqMZg#y>e?Z8-babB1pRr9s)EVQ<8{2Vq@)b=5facJT6Fi_V`)d4) z15dt8maeDi8-DwwnV-k*C?b2fx3+|JXD*^dXg2=^_&C zJox_fn*Arq;;%e8|L$iECA_rp+W8pcUbjkgv9MYDBcU=WR|sW=N>u9lx!cn!oV7Az zJCPBhPdYBzH>3RlJ1YjRvmae&b<0xNX7P3F88b6WvYJkN4l{&|Lv#c=^OzJZ2?EMM{nCbG%l0WQ_7ztqqOVyoQ zkY=t*BXe@{WG~e(xbYi@iK={t&a02wEvCg=*zbcBj_jgamIske7xbJT0Cr)BE3M?1 z<6J{>`KSkI;*!OAD*onYy4fF%Vlz1_MD!|0gxQQu{}rM5H|n+-ma_;&SA51mTy!;& zI9BtQ18H-vqK7S$S)snlP(yWODvM8XiZfi#1{M^)5ghna6fZMx9D|NI0y){%>YTs} z+ulo!Jx+7L*h7AK4xu5{nJbq@BI7;w?*y2tHcxa7RP5~^qcdaBw*VRognA3UqXIa! zp8zJ0gP2V(i55q{dt)y!c>g3nF)i5M?eH4iJw}`iOA=^iSlplU)Wv z>+ZT^NY{4@&BmAe-U+qf(WI#G_g0v;5Og#}O$$gkj$a5Qpzdk7b9K6t&yC8-bR)|< z1tM(oveJyCfnsRz5uzRe+MgpM|6JM^h|3}mfHn!D2SA|_(S79h_3h0AU=Oa~`VY$= z0KG$I4*=97$9>Q$T%~8g;EH)Q=K(-q^@YI=a>LeD2TZK%Y?4ZGhp-TwpFB&1*5tZb z;?0|7STnQpC}<;WBSs<`5B<#B!wkFm$@85I+u)RHLEb47lFKR!);%DAKKdF3J zmvodYrHu!4$Aj5p!yI!`+j&;s#`+&G2|S&t!&QHC@+@hNOBC5yEg~)Hkxe$ zb3(+soJHmJlhi`~aO6uaM#BZoU_xd=3ezUW29GoCLpsyYPX^df+Xdv>A{N>AgE&P-=i3DYE2xjd}|Md5VBz^@mJS zPtg`j`u7*b2#T_HZgZ|}Wx;PzvkeW@znXYr-{+BW-;Hf9p9jaUR&o3tHi{*D|(ZlKSPi>Pl!L2>Q42|E{yT}ILzw%0C4aF`K9>R zd?>}-(1Wn;etgdJF=$Ze(fX9&u?Jm0uoMfoQZ}gdTx)(-;GX4md*Qvs0|0$VU<%Y; z1Ja}zI+}O3e*fb86BLpnu$bXkDy&_HL>*I2#q|pF%drXF`M&ppIPU5p#r7wUw{cwc zZLj><-AfA`?C?vwbkTo!-6hKn^MgQDuC(-urXnc#g#}ZOV_I`D*2ig+bc;Ca?nVM8 z&qzw=XC&xfJC<~HZRXfPuqCb)=ctptBcH7;6Ae@Fdg*yQ0ESg}?AX|x^v=FheDiDR z4f?WuJ!3s&6u54IT>MW39WJ8Jmtu^NC`zhj1j{ zqRJZ9!Q^fAM=_V3pS9#|U`>EhtFSN9%I^xOSu^z% zQi;z*H1pqFQ^RD9>-~OsbN9r92$OkOQI(9= z+42T0soihRQVv_{gAsCh1v(E!vCItF7#-@=hH3+6Y6JHmX{4Ri{kV9sT@5k~+gHR3 z`jENmxib>uS<;{au#UJEf@18zbss*nB!)&|w_l6$g}cdwC78vF!@SlqHDW}jUcVx~ zg8%1dO8#LV7a9R#5mo*i>pCiM2fzj3kozX@)U@uO3hdt;cp6zlGFZFUUB>$~`5X4<|HAH3AXuPB2=o`^LrnG zqk)4f-gWg%%0>vQJBlgzNCcmWJsLy|W@sm63VsHqMOHD-A|co1<`VSJA|(tocOPJb z+h!pWc7Cci?zDpf+(W)~N)0ODWi7V(G(Y#$s=8x6zXKnJA*h9LUe^j@ztA;S< z*74&PmW(q=JE&C=h4B|md=QIz^Y~+!BitAEYJYWdqu6O>ol&k~d#vV&UUWQ>j@j=> zR9k8xqdyI{$l5EFlfp=^!_S?KN5&^njwy0ewGK{acOC#Em{~uq>aO_eO#K@d*%_`X*DOz~#b)K+v`udx1?y*_jk^~3klQCY zEb2|0AOxK^ZEVwRwHq3A5y?CNGS93W&9QjX(U|pNO6#%3-HYzLOfOq3dO;?&?^7IY z$wibPkACjUt?%pRv+FHj)zHjH`IfW{Dypg~0Ms!-D-y51H)j`JiGXI@gvk?v&PS-v-xQq+W59yl)BqX3~!*S%;l;c6{QoGmPG35^S39d>3$XAgt)|$p>M^aDvZP zOQsLmzX5uwywpy@%CC9Df92@SSi^p>x#702kjlX&1Jv9g7sEAL7h)DX6(@eT7t_2+ z5I*J{0_rzvj;<($PQPvPC|XS&Iz2(LKi`O%8aJHOI5I+6@jN%&-%`+~$kaW7ER`J|p&ms0no;jY+U$7&>u?DEk%>e$z%W>-d1M}WMLlUxEpnD^?%$CGm zcuEneI0yv3%NjtjnqJsws(IE7J>AxS(YFpI$1LUluEq;l?@)OhaQ!)yAS6GXA@j{W zn+N~SEibU0)|+bP5;hwoXd87zq6-=Ea1jK9Yxygk*zDrp(RsGK+2bz^jQ3Pc8-+V7 z8DQJOElB-U0N!eSEO%*kqEbx8M#o1n?z*xfB#qIGl{aDio9?5mJ8i~vJ(srAL zAV+*Ve6J2)z8g*t5OsG%EzzIIo9vLq{nt> z)a7fL4ee;O@-T(UfaNU$CGTw=rMHXTiIMH*A zeUygSag1%PH&tQyFOe{ZR27HrGl!~4m_;n#4ahxpwdbez1tQETrGpomiY~|2q zeN=OM!}OHJ<^8RS5k@uVkDj^Ojaqugq>KQ*h|I*W)Oc;w7<;=!7rPEY>S7t zEOOeMa6KKC5qOMng`??RTg->U^T$cG&!?P9ebrWv3gqSs7T6LB7xW!|;0{?uHP#qs zk!`xE*rkNj)!=j^8ajjvLPDi406ycMPeTj4sqFcb6H^L)x@aH~`$WAfn~f6t%jjdY z>C!E1C)&$8OzMT7-*eO5t(ZYIhG=#LTKyRA_>>jUp1p;PZpkq#5;&7xc`u}tlF7ax z(Z$(uTq<(F@f;lFPl(;7$JDH}bVLxckxJUHSXUd*L$>opk49bcJ)4kf&E?&|%REJu zDCMm*6(tPP@5&Cj+d?8w%e)ddwt|t>iPt(_3!SR%Z5$OIFt9d3QjA1+1=`7g=H-K@js9BiVr~{N_B| z1C&FjnnES)8jUr7!Kea$+(On9KvET{B!LizWa%eE0cd34uJaLWa4lAPq1thj9oH19h=k(3G7wo(_LJsYaU1{=IiiXEJ9eBIrQh1d-_3`~U*Z6`RR$;Knqxi45kX3oy( zWe!EOE9Qp9Cwv}#k*|QF)Zi5i{v2S?ii>`8-~tK~K9wO4*XnxtTaHbBya~w$giIu_lFeBYa2qbIAvkOWLnBF*I7BL!~V|fE?rb z4BhqFB;I_ac=o37SnIn0nK``kdA3t%;F=4I*Cr5nMRaSkx<9Vcla@CWD$b>t0?NU; zpqe||D3$&coQS5Wq=dBSSpTHNmp}^Nz*~po&nW|cypY$!qiq!M*dWRKpov0wOhxt_ z9vck$K?4sBI#0txgC>v%z&jYZmYWJ_EXULbR}63AyOcARwO z;4Z)ylE$WPEb)mYzR#?z$ZM%joNysSs&0%$rJj8>f$hU<7R@ePtgce==y+gTXm&TFqJC&tkI0N`lnY;xYn ze|_%rT_w}^CUDE$*_VRZ_KTp_TL8}RQ+bxln><)UQ(6Id=^oqdXp~9L$H7untbi@X zuii}u67S4USs-4ZT5IG+zX-UpQ7v)K@T%2!9M`gVMuNv1+;qCVA1 zX}Ceq6GHTAqp%W^HsHd*rcT64sat3MX*e!kB1SABZUO9^huoCcn7A0%vc~cxMreKJ ziq`tAw*xe_-E?+m{ZFqN|Jav}Y=WsT+Au8i4qG)hrWUBE)>S+8eU9*DRUF`s4yMql z93tom#w|8_zkd{uF6%|Afw7fKz3$j3z6qge!W?Wq;$Jt(j=z8;FJ<>mj+KqYEW}G& z8dl)w=0TtECg?B%iV3yraaENF-45P;S?WC|;b7~+tp--tifX0U9(QVuXBgs4spgG_ zmWEXdcn>HtVKA9v?3j%xM|`w7xJeYr=vqo*03PcH?n05m6R<>m_j=DzX>wWdC720T z=_kpYD|%wJN8LAd^XkTNRe*OxcPrNC8S>_cI8Y-8EAEUMj(L2ef-y!@Wm*vwdO`L> z2`Wt70{)E=IxCIOh#GP&rek8WMhpwBBP}y)RCi;GMH^HRjb!(DPZmBqY|B)&$IUes z@L?I1OFojR6g{^`X4I6P!I!Iz>pQ*W8z*Y|X9(@zLRf^E&Al)+tUXB6j}|r%PPh0x z*kDb>%9QT1!FouWwsTK_O<*WMbB|cLbYNYrglf7odSObVD8(K2RHg=6ymU-9{I!0e zBEc-jwPEZlG#UlzSq0M-_ttK1+0eyn^j8&@k4pLNIN*019mQpw-51Xe`1-<MyeK#%W*A}T*koC7&+>g@o^0y(L>d8iA+_Xpk-UVcKl|tL`RDMao zV9IN5Na{oIow|X34Q79G-A1O}qTK&{+0p5}xzX8h>=T)hyAi^3*VwNt;!B3k%1<%M z96NmW5_?5(kzdkpsiX;QDQ3`Jfj&=zlsx;E3`CW*V&O}`Fypxkc!gW9#df}JSS-^h z88BD-YQVx+iB%B1Y$5Yl<#W@*w}Mg@=?OH-DV*Fwt^p#qrBE0JV&f?E#D8;8rct$$ zM!(YY848GT9<~KTO_!sxd z>LPkNjDHpRQ_XL_i_BWA0+Gbj>NZ35f6TH#I&~^{Xa&t7?zKx)rk@nD4eeoBZ@IOR z>aM?qR$#Iw7sR8K1lX?)KMg1=`bggz>i%QCy$RH0Y}?Sn!M$|gF#cvu1e7c}7&^aL zj6a~0+G^22|KhP{(foTeX9$X6_6?d*)Q1S;gek>qNt|+bzO%k9&c=`gJs$_ASc2)u zBkHK4@8-0bYiie@y&JQ4*pG5nNJgsg`cC(^m&~{gc+8J1YDt|5D(CH+R0Eaue5#F| z$K7Sv7Y947sM)}ZS~=RqcsdS6`&O@2Rr)BtS&w0@wtT8&zzBS68w(Sg6zenti3BA& zdH4nHP&E-v>|aNyJcj0I?RGcAVv|A)PfT$+ zUPs*wn>>f*8jTwjZq8r_-?KE>#ssT!_mNinY`AAs#76m&6o`cgR{x-CGMN|zk3>$*7fGT$M%Zu2=>+qM#V+p+)^ax ztyqoPUw`=knB;IkBJ%X#Y6-giuyVg>rcAM6=0}~AU=(!B0pD}0B|p04b6k{n;s1P9 zSN^o~^l>0@z6+RsxAf$Y?+iE5AO+!xgu;itSe;OEO(vO<#WwdK5(t`mhkq{WB9Bfmb>>g3)eLprAHtdD92jUQ}96iRa~$XjiJ@g3>7Iq`7+K# zW)a=3>7bsO^Jy{xzsWuu$Xf{bOxo&vdHpMmipo2G@YJ_8O-A2Mu%RG!1j0`yHS)}u z!1xbs)2G)~8R1rf^xn+^0X_X7ycD~pRzk_@A}RR9EBb-f@|E_Jn*xM{8Xrs+)!6RQ0lsh;f&y}V}>CrnPeTpC(Xj)!^`Pa5;I(F zQ4(Uv+)F|E7qGlfWyVw8`{|`=Y@@cDC{NNbd?Sm6#6Jemd<$ZI{dg;N`4E!JU#<$C zzxGU@6CLoFRZ7(|pk*tatmwv+PcAifFB6_Ddp&Vr`a|vjmc-q}*WB5$q515qJSQoq z9l@tfLb;ir^&x*ajejJ6;jtgj)(ePyJ-ptipV@CQBG+;3uMld(b8T$6@v=EHl2s`z zWi`DmFmSscO|x!SwW;9Og_Z+7G?bJh>X@p@x5(G3Zi2gv*0Zn>AmHeC?8Zfs{hzNe zp^U+k-Hj9!G1f^gFKFn{bKP8G3+Rl$VrXoQ6RG=|*Z<@nHTN=Uhkgzu6o{V7r{*Q` zr|@P1GJL6_UY|=!| z*ve~-NIf0m$nUJQ=nuBOf=jRyY*dt2eUo~VgHIU!73NK+kHg=ZkX^P`$2WuKhEZ+J z$B3*gbRi@SOIovNjiwAkfm>dg3$zUzCDu0~#rPqaNO^A%*7Awh3={o+dV5h7Bj@}u zJpE&T@86sgJcDBuJD!-U!z>SQjBBdwKiq-;7yFWVQOBX?PO&Z(9g>kyL3ZGl4}o&`b(xfLdo`I>yL@Qyhu)iA zT=foS4>>#o%#WAXF~enO+ep<+NO8nx70H!3?y}lDtbG%0899ePHRLkwch_Ytka^{V z4CqoY({u#s&-$$TxC@a(NBj@mD#{9?*4r2G<}UpnQNqW%Au^&zUT(zVUn6X40f-!8S# z#8-%sCLGjNSRBXC87)VZP#KF2n!2(NY|?BqP5H?y7xf&$gz}nTQ+r+SdF@Lb|B3vK zwf%7dZJ0(Q!b`YypHtdeP0b>QCwoP}(?~9&W}q2>%}!G=z+6|b0Sj(4NyB0`|J zIrx_g?jsFVMA~`Td71N1!_GA3(Ehd^#uOk)p5JuGSH}aU}CG`}=LwyMZ zQ+l1Ibj)~5e*S!YA*UlY#V)C>Wq=9B_4T1E>MMv#%oD$lXpM+at!6q^2NsJ$qfR}Q znfBH>Nv}hkEkX* zI)<0HO-ELzf!JTTvRWL+EA*@{r&tYu22+AQIyWtDKqntRt25oHBYSI|xTB+57;>?z zOQ?}3J7Wg>bjiYq6>y=V6kAqJ3IrcN-HXT2sHs~;!YIfg!_jU%Rz0x)3GBPOiSN96 z!vF&>O_1Ohb24=>`vw?N2V=LQe%S@Kd|d(TdX%d8AA(QZ*_2l$m7ph*MG*z<$5IEn z8l*S7sYzry7J^XVGSxICey+8B2O5ErxG;68-*VR6b7A@$D1U`Dm*ly6tw(q?(-)h*f<-#a9Ou2 z7}_FJCdni{IQix&bE3b8oF=SQpt^VsLIFFHdAtqCS%!KmI%$6BC7TrfWAJ;q)vo?i3+vaK+^p<&+vt(PQ(Tf;uEg@Ml&>} z7(l5*3;+C0;qhybB}bRD#PMR7-teP1IPqneQCjJ4hgVe`Wtr52MhwdkN59#4h0S5y8d2SGO!Lw-pZ-mm!pZ3pB}D@zywD)3nn6IN zy*mi3k8cr4l z9eytN8?zn&X&J-yjGAwJU4CDQ_<3u99&cU59&*IGXbqX>qr{Yy!e9g@hCW#x4(pjT zIGZX{f15^HqKrlIHZs?MXcKiXmP~9HaQjK#Z;Kl=G`ww?%p@t=0FQHNn)N%?ykW^S zl=Xbn?MiNdRf?dbJUHY@Pnq(VI5znWBnd{?sDHN{H@LSxk910FWl7GBR;*0-}nMY2xAi&v*ya#xln2$h6Xk}8a#-Wc1FVb z31d4oflRWRR3R0P4Nc9Ox-XJ+zc1cF)5Il_@= z$tGASOrR^@4?~)vjHqcy7 z*Wa!EI~cEgX@7??Y0^+0Bju*x0sr!=LH2OvWXNsHsCB7yGU8A$JVHlz8#cuFsIjm> zL4#ERXDfa$9zXeW1?yAv|Bwy#x^~QlJCB;SSNQ%diN8x-tkTvv{!=$nFA@-^HIYoA zveCV%E%#KeGQ!sHpuLx|PDU`En4l>kq=`7|_f*7C*40f#L;4R z{F#kEnL6*WQ|>L z8RQ5k@c6#*9bU<*^8`>CAAs6lI#tGFlUH_CsL=OYUcG|fq4E2+IZp10x2`0oQT(5f zaYF)O(0tjGOQou%aUzbt+B}bT5Z?ve3~uLKP{AF;@5@lT==^}cVC>%%GX1BzrvKqf z7S5?JwrSjEvZLT%&G>!<{yjFy`&(=>EK8j@;fz2PNArTxWkYg+lD`SXt8+1 z`HS?->jeaUDjLv{DGW(+-m>yM_E#6beebHWu1ihyJkq`>zL?C_HU&*uQ(L=`901^z ztp@>NT$@xgUVU!M_T6;7OO6Obr1srxqWwnB^xq09>fdQdom^z@MoBD>c}N5=jXnU% z7u#>+@@QbSOW3Or_x3#)Jn@KTH{$L9Ci9bR@%XxR2wu{9O^q^t6ngEntxD~O-#Lw2B#8USAO^h8LCaRGQ9eakAQ<{6C0C}K9LX-a z0OVuVvg7Zke1t+i2Fxa^^A`1tsp#fmB4S+_PgHBnfI!2PkY`9tvgm7M9Z0=cfyu%1 zdfX|!$$-e>rGS&b6aT>e&-qk`ahQFs+VptQgKlIID~|M>lX^rO-H?_`8TbCY`FRWf z3|0QYsS}lQS1Q^RfMQAYn15fOQ2yk`tGl+tY@Z($4V5ODU%i5S&KcP3KF&VXaaR*a zF}{sRwGf%ucRNp=9$NK~vr0H_KPDt?1mA?sII)#&0W+9a-0Mxg1oYLL0MnjvRPsVS zN9SEe({n&sSSpS(pIa74fv-XV97s`gdhoC1tm&iqg7E7Z{X_wXy)<;D57w{0&dKzeY1Wg z4{UB;slMU{X0Syq-t`i0gVeSyG`LjW+ps?oHn%1*i&TkN^({m-(n(QKE<>O-bb~bp zt!#L=Uk-p*h@MbS!<05oF>xGi{|{*)eHqFltyiaF=U+u^2E0M2HK3#IbzegFw?Nfi z7%{(D()wKa2#;@*(cz$uB0<31aD`%$ShVNY-HMiJ@aqj6h3eM+0|B>7(R{i&viYwt zx319bEAmBay%*$Hgga1~aYH539!W277#-mZ zu9*OjxcHeDW2g#CB0KFOTZNY5fKQx{ww!n?&Y+4$t+iRMh~C~RNDbDhr{Q`N0b-c)#Mup14xSdaegG&9CgN3tude5js4!ti-JHk zz^->RmWR0K?~~ZVqv|XFUo~C zi!XwM8lPC=j&iDCotS$KkIqIpvjv+9q#Du~BSxxdy&3{OGDd%F)e34*UTHg3_bC@lZSqvsWN^)Fa9G!O^;@A!xvYj~J@jAx0vYhdg zu2eO0nsXs{wol@h9-P`AdRZ9(G5EcVG9}$XUuRxgT6ug+S6Yg?{2ZszQC&_xqQ(Pe zWc;S2sD{{y_UuGPwKzuc3Zp2Z^z~C=fWH0m2#>&36Qi}T1h~D2Oo>gbqccv#`5K}LJSXPf?B;JvkoqfMQ9 zje*TFy-f0fG30T(>C=le4s71~dO9>FNpu9sMA=<|9S88^2J*$DrP?hL@JKXP)50l< zW>v$eSy+9F9Oy}l{&8w?et(N}i^0@Q%>f%~Q~aWGe4z&Iw_sM4c?J8{`b&NR0wdpc zqR;E{TaE9_&KX?Y*&34@6npS|RU698-T_^VXKqYYC>yZA)wk3yp^(ox7|@{Q;^MOUWCp)KUht ziL!UF2Y@BNL?d(-6!d{)(yflh90q#2WUTVM^Q;A@InW^8!W#{HBcVpnn}ls!yJ43r zjf@deiC5U@T!^8hiJ{n72!j`Q!F5_g&d)etDZCy$&f(%ZjzY&nuHqwHfEVJLNbb)X zi|^2^+ONIA3)H(Se_aFmKawH%LS`9xWqa1I?J{^g+eYwGrxBXaaHWk|KSve}O;=lj zaQJ&0!UmVpp7vB!TZ|?V0pSB`1rfag6;GKg6NN3m9o&*$tw!mo8kp5iA8m5KTPMtW5?#mQ2`ZK_MeVkB4V-E z_aIa^?hhP{Iq|*KV@*bxFB>gJsgd;02vAmlIP2XqT$#WE9AT5jqhfQIqaS1gqS`td zBnW#4*5lNLKnN{KhNycxmlm@~=CPhl)MWiH_TD-w4ra|8Bq4<0fglO)?!nzPxYJ0` z;O-s>?(S{@f7!=9|5a z!9AP}boTm<$C6Ug<1V&Kn7y(k2M4hX$fJ!`80gBFaUzqUF+GqX@FJhi+W+fz*V4^c zz3_JB^atg3AXl?cUgxt4c$`kJsS@uRqdc@q>o_b z;m1BbGwrq6cj#UwjdzY{2E~#~r>z)Ul!wHYL{3>n>-f%ZK+Wm`E})Bo{Hyj&^?JZp z9fq}2GV_kbp8Mu&HHKeJlD1Y$AoJ_<fx7Gpu(6X=+1KIEsUY&J`hWtWsENmv+W!z_?So!k9r2*|q4nxYZ zf?=t(I*ZC?&v0-zVLbwbep`Oi)X3~;lfH-@ zROaqp^!tE0$fkF*XScvNR=rlQm|_6jwHk5&w%8>lWsjB!gx7fZ8pvI|140(=Ca}#P z` zGC8T=9kGCN)b^;AJlFa+c#dx0cC4R~t_cPY)U7gk3$j7Awb7n~Kd!I=zXV*@zj2eF zw5u_#okV+-WOUzWjEr2}>)uwDwH@ujli&&{w8Q4w@SxU)tlz~4=E$h003V%~F$TpD zM6x`V9aeASF`rc|AJKgmpga)#tF$t)-{ku2!QMqx4`U+OjtvV9sOy}4nw8QcrH{9@ zkz}LGWMwdvM-|d+>@C5h&Bu%=yky!rb_-9#H7iyzZxR;{a3uUxmhUO00f?J>p6eZq zQ<+ya&v@K&87#hqB2rkyBIbLP6QE-I8aMew_TjN!ilWDy)WZJekSQk)RbZn?0>y-H(4B=#_F{U01x;2- z4+VZ9Snx1igDD%n+Ap^l1QMsL4Zh{@MjHBoDrN_i7*Ru^H1ud(vOK>{=-fH!6t0S! zT(2UtdHe#S=rkL1KS?BzeUE0!d>5ch4Fr3n3zQCWsmmdda#5;V7(qyn&-{?RJq4Lo z6!G%Wmyv6>DcgJ8cRX1>#v5Z)k@wg?G#>*90Pq~T7B0wys{=aVPyonQZ48LIi7S0lA4^BkQ|kiisSk&9Jq^xhn9m$!GQ zm5E@@$rStK1tfjgm06kA7I?eIOFL!SWO27{W)(m(2n)=YVL>c(v0(v?v75K-tUBMA zOHOIRY9U_iMbgVLScIw1j%;0s<$Q6Hc++5LukIXrjZz82c&_Hs2TMH|JxyM4U zI$#yIDs3^RuSeeU!>~JH(h16)cEn47c)#RS7YBSZn?cqzFuEM04v&R0?MlzmN z%(hdsrR^u(j>ePp^;2lel<#rD;NkSn^3oJA-4rRK*QlL4JzTWoQu7*m zx%c`D%4;ZD9Ar-^PXV*f#iEjuB$}l)X|PfX&`Q~OQ_|x@)_!RXn}i^H`>%pG*47U^ zvt5UIB{A2#GUMO6+@yVP?O1C$Xa6}#dbyY8`!)@X)IR8i;L%~Xwm-N$q+#KEfZ5_ORID|PI8jG^&w84gEZt=pro3~eUL`^ zrDn0ZT!|-lU2C~pZs)0rgLhNg!U@0!2xbLmH?PcP9JMbKjxt|VC!XGvC`i^5xYv#Q zx78V6yR!gxbzQ>Z3$d8%fqI$tmo^(0vM@bMDk9-`waIJ+Vo zbfVZ2FzXxF3(M;F=pY)`=r$a;SO$WpOt;M&4KF)wHuqLn&N_pmq)O{PztY_mcR>%w zSy`e~_ZVoS^cqKF6UqrghR%qn!X^ zJ!=bbp2lSh(&mYrDs8KD9amFBrUc-bwv7L+@b(T=DkR7^{NXzR`j*5qIXedt{sf2! z^=K*INWxro|L{$gCXt`ArFtpL0zhKSni1t*EJ_Jv4-bD0IHSvLgaW;rx(`J*SlPy- zy@otYFNV%;jeQ&VO!?*mvAQ#B1yfu#u^Oyj8x<76{ z96?D><6zA$Jzl^KsE3kEI?#Xfq!iL|>&o-x`B}uQPIKlY8XDOcry0p{a~3YR@djp5 zgBzXcB2j9fnvwV(n=ft`wt4&6cbMmutFH>AWeu$xfJhL)!QWw$Z?=E zMAK5EH3$1o(5wEkwH$3h0SOIO>WXBlvMSRxhRqc&X$Oeny5Q;a6SnsrRSgrDx4fR& z?f3f*Ued+Z_C(oWsIcD@uv{2)jz4el)uGzOn&O8_Uxx zqML@MLtq{9!UMO5r!P+tt*dieEgv8oJT|1Sz+Z&oXtjKMd0-Z2_jlD%`&mZs`C8Ro zh#+MKw5#^-`cg7gce_vcf;F7=D8tvh!?p<@>j9L&y56IabDTXU z`OV-h?MCo-K#NI_ffL&G(K70M2H2jBl|GSj^&~9w^4%r9`zv*p5-1F zaP3fa4v2g;J7sl|6(7GP8Y??aIR%DtkR5Wj^SLVRQ|gNg#n{jD$WnT+{}w0qKfDXj zayKrM1?pg43TD(hDzBfEMmPA%@CLVmd8{KX2#DhL%{_0weILmlfjBgINA4zcBqWp0 zOf*{u4R)?2oh(lziWvS2?DoGw%8`0urJ;r?)YR3aTISR^j6EDgX-!v}R?&1S?#;uf zQMMFiUsc$iajkgG#V1r+MWq)a78n&CT?db?Z$N6ej9L7cj6NE9cYsSU8QJ|8QkTOK0OH<&j?7apCIj*!ZRcf_WW zyxEJBz&8WBS^5SG&efxh%Y-RqKDksB_>kI|^k|Fgl*^~G93sg@Y%C(MPKiGM4htR; z5QndfqCZyj{3E!H$4e)>HRZxW4yLe6WSgDIE=oaRd&FQchLDwLh)tt=I{=ZgZSwsY z=$W_j)<4q8^cd%C!9KR=ko54)m13-urH@C9f`ctiwqk@EQ!W!ih*}Yg_APhM?c+hq zn7{^cGHHvchARQ{g!CXpW4(Q-UjKwgmq+*IYR7Q&6HmP;2MXu?c61sW*JXPOavbL0 z|Nj5pwW|x#r zT{-Etty*z<98)A}9~=2At7xh)JP&pJAML7NpS<9z_D3sFb^As(2d7!oF0+V?Ro&1F zukxlK?{VXDh5SVqt)dEp;O3Kpdpv4K=gV2^ZFLceiXuj%PnaKl!mAe0*n9(l zt7evEg&^~W*PKtHibJCfFn-(a$mMh?euJri=15`=c176xfThZved zag#jhtQaN^w{m;Ar*ZA!2>*$<5adKZC4s-K$FI78SOnqAPwiqURSszPX^~>3Np7tA znp|Zf{JUNhoNXxwAjd_7`!D8Rv7_cL4e}%uB`NPfkodcVG+LjxQ^xkVPx;5w<#t7@ zCn59lo~AY-hWFy-N6lG9Jr`bFyOMW*_qM(gP=Ti|>Q`NeOG+$1)q6hu^0fW3JM4)@ z$Lq2gTy^=?+=6o6@+eP)MJcrwXxnN1&Sguzjk?(0-ophj$m#BBthrwMAz($mB>>h7Ov4a+CL0?n)56H;cZbNIQ_*!MBY z;nikDKItRERHCRD}fFXOG|8 z98VA{fyUrdCWnx}7FJ>rL+myINL_msr{tsleMIE#l1YmMKn8VqziLlMk<^J>g`FmUKJlc$`LDxkYG#h z>5MEKVlmT$Wb#I=f_;9jbE7DUKqJbUNj_r;Tt1`G64q&p{0oY|r_NWMCiocQp^txm zDER`p{AqABvWW7Sz<|w=6Y4o^Fmydh`8ST4=Wq{3>~PRw44l4HYx* zc|ILns2MTroKWR!Q>BoElRk*zz=x{Bfw;oObq=?T>=pkX64zS}VUI^AIZ^803biwK zhcSr_VYrm&>P|Bsp&bcX1yLm#4mn7f^9^ftHEWg1qbP2DY9U6V%lHT(B=my2MO@WZ zf@W*kCA2i=eKYcYtKG?&vt{ke|>7~(ba5Bq9E@i`AbR} zJ;zwK0_>NflauD7CU5@6Xf~}ce(R-T!r!2_04tj+C>Z=y)3$?3E?){4ORA6xP}bN8 zsuH^Iy-=w1sdas|=(ztZ|lx})O=U#R12-4}o@_2X?Q0_kq?9T%Gv%vmTus;>-&k^}wc0?Bbv(y7QoO+Px zjLK2i{x>q<%Df|jzi<{X9B09qHJgzgQ6meKG8&MgT}rtt2hQf%4|=ti;$Gt<)F5W% zFo2{qV}jtu57Y}rXQqF{VMJB>e*Q~dNc3A?sHhY#Pevo<|A6g_{W9BBV=E7=?A?O5 zb(Eqpry$XaY2#E*g00T^v|ap)X}Dsb=HEC-7%QNKf0?%Jf19>hc!a6_Qn7EZq)((I z>?2j8eC_%7R&}B))!-R}sGIy1Uvu1~<%WL?oNFn|aat#`qN?^%$;hybA}Y(0 z`@5U%Pc8aWuFD$!oM`_ShkkXLkhMzV;W>fTln2jKTK6fd3n^Ic7NhEFft4|1!S#cqz>@CqO5Up)Ew)kc~c_SgXFSSPkC2j3LW;8n;cCxC;=7mB^z#NhR9vuJBeIyC+p^st12A9LO>{)Oy7*z9{24B?H{`t&5^Z92j z{mK+y=lCMyFR+zKzcxvw1h>}dCCx@sGb{oU zj#Cwb733wq;1YgjV0_+P1V@lV8>*uH6>zy>rFxNID_xekx%FA2 z*x%f>Gt!UZ&>QTZ6}d@!)o;5}19A-9n`T|oG}G5?YmSFie@td3lCYG%pBK{7Oz?t7 z3oPrBK-GTNCxC^#hCP~wCaRpOycz*ls*^}Awzg=vab6S^+JML5<6X9*REUBm9fU)I z2_Bg#M2vrmk**KZN>?1E0pZ!%(a)*=LKwA#Ka^Otk^PeNQM;PLG8xnfl`3kC+=6jR z$(o<&Ao;KT`OH7_`DZQt|6v~`(Fg8w!vkXrQ$yErSG3!vcZvjjVnG*?VWA97RVfuW zdvd!sN+RMl5nq(1v?lV&`^DSdwFAw$yjVF`)U(~0C_^$^UPhH+ux2s7C6>>k3%qq{pe18ZRdL`_M9IN1j*UJ!v#cyy@PwC0SZ?ch$zp(ilS!|R{ z{^W7tiQM5VX!gM)qVgZ-3MUJ=H-o7w;Swyc!fya=MdC-|5~B;=Kh|rc+Sar& z3*Km?&*=`%%Q63F{WJC5ThP5#d+s_zPh{4nZ9BeDR%UC*bcb|I{dt}-A=u29v%egrxy?^HcwIn&*Y%1ANXB!!g{k^Ot$B~53Abe`EIXtdVa*%8~s8! zY5KU7LF#zQ+i!o`MdWyMahvpvR2%AzHwrfgx;=B(3&o2bU(~A&asug*eypwp7qc3C zJ08*h>cu|Tnszd#9udSmaAQrTs4zqONd2REvbs5Lb?Cw=bAN#* z{y?XSxARuSWN%U$sOvxS@p`0T%~4x6f<^?anB(${HfSM~wz~_ETm+H(`DO>XiF-pP zHS@zyMaLMYpZ#`Ci8+2PBX6#3F8wvH$_;^!Xa2DhMy4A{HRr%v-jtWAJMUUpzm`^p zQt-m8z0s-S@kULVtgmv#4X?`f9k?aSECXfN9}mmxlG^i?{T>dgkHj6@yut3%TtAI* zwM2htzZYCzc#^B}y~V)(*2>vIyW$M$u{=R@=ZWT*X8AR3^iguU6a6l^yr`BkVk=ge50|Cm3B{GHqj+um~N@+7{+{C2d19Nwwe{{eYT<FJFgtV4ftQJ&->`wd!@+j@5OSS;&xYrzN zi~t=Mh-{oVQk<$(Sbxysbu;OMu-rU|d)bln_5Q$nBo(*L@zzU95wN~e2_79O4`RI0 z44`yR$Jp&0igm|wKqFN2Hp6r3uQ%$eg>^$4QvcR3ib3T;a-*LA9$8Asl>|wTRyWg{ zmSW`8#)35XphF&y+Ih>ih-U7e2?yYQi|1tW@{K)xLNNcVnoJU(>m}y%a4Gqm7+Ij% zExr-)h*LrvDmSB3q1bO1WQderzGDhr=r*ccky6y8y0F;F_XNI!NQ?iR2z3$5{o$-1 z%s_zAv64<<^mY$*YrTO$eRWKP{1*al8%7%5*!;IUvaD-Iv*eZyw%K& ze6qP-=$?ag%6g4A5_Iz@C)2fk)W^If#a4=8F{L3)zxw5;i^3)t0|El~v`H9|*MMph zCp$etuP^_3jqP?d$falPl&sakRo>Z`qAKr}fbU`;2Vpb>fe*>_{QCnI+2PSqpZeS- zg(Ht~Tsmbz8$)*ogA0>29;>{#Qw`I5!c=A&F1&AP+v z^^bU}Q($<8tCQg6(%S7;-qTkyijndfuT0a-c63)4iD1Sgd0Pr0I0;cG*wilcprjxo ze-u#~E9WMci7DH*6{t}5$L}J?VajA>X5sEkw~o^8Lt~2oojpN~XiJM{^#Xb3%9Kr> zJUMQi?>8}(F)=2x;s8-x(hR>4KKtaaz|YC!??tpdF*QO=PzMsnrNkuTwDL%9Mi&V6 zRquI0?O+j&{<2nI_h%#wnWF7F48&5zRMdT9zEUG(DQ)H&)0)?pXTO(t5`Qn%L9fE> z)Wmm9cp7jc?K)8Z>v`D79?O#5Fyr;bN+CS*#zNsB^22{_Im>Ricx>VggbrWz^?|UO z#%=P*zrh@W{DhvIU)u;kAL_j*3j?QrR&lO>8`%y(zscXxU6*QmOU$O=4O$hUv7yF9 z+$qV^M8$d*gbeyDJ9=+iBdK2cdT3~k85ivdbp02CDS*SfPX7WXB2N<&wZ`bDn43k- z;GA{glKkfGw4Tby>sXFeC)*D7t5ZNf_E@>9aolNrP|9;6;!;!kja99h~uPp7R*Qbj1YUMd5hl94ADB?jGK2VT%`Ui&tMuMU3s+8c16Sv==~(g~^L`iq9q}6nJ>m1dy3R%Yq+OMa*L@BMR)D z7B9FZ?6loVzD1SjfB)EfPRu3M@bA;ya6V8>u%C#IJbGAUEU?|gXIzlw=o}j+PkAfH zXI%tZE5`11wq!b1j7*Hosc`d$$|W23$iPGC(1@%bbGJ5j4YA4ohmSSCu60$ky^C~c zad23lYE?-Zpl3I+%vh~Rwp4IOmyX0?BA_Enrd5Q}U;sZ=*y;x%Bo{G<{=IszKi!)n3sw)k0&;h#3v^beeFhGOJ=1lgh}eK1w8Q7ld*pROgrRn6yqh zI3VB4P0F4MhWLg#TwyXr_#NKIJjSm88X;`usz!C+V!lVy$uI2_0^jzA3-X{IXbo0_ z@VBD@aeU3yAnj5H2Ns*kg=WG_2Ai!SuO#<5eR@HL1LE|rldd_C4+O6wx0JbQ+xFxc z33bA2!=eXE10K6J-(WH%8hJ38oRXQXo>aPkTLJM1g`V^}>iN(d6>PuImgh=cj3~KI zN=EhzgvIdWHV#DPb*QO1CJrf;hk6MZe%3+;oP~J&T~y@jhcyb z&OE}l_Bu`M2>2rnpJBq#Dop3d74BQU&&m;>Y#LZ()|od(ve*T^2*XCFehn_nGGiI8 zZz_IKfiZ)`iJ}1%tZD^tr-+Sv%rdlXEw-}pG-l zRbKwaTk~nN&jR%5tD10e&WJCj|0idX92Yg%t%_ZjN=uL3M)h`UqZc0^h7$GrgSAtR zZT7tc@!mz6c^zB-zU7XzWfYe{S^g+ zyIR~2^&-vC;~I!yif?s7yFKEuESLWx`r$-5yZ1}}+9}5jk~i+(x)fPK{G0%59B~T7 za|+LPC3Y-pq1l;xOw$lNbI)BaG+}AY z`MGw#Ks^I^yr1Bx#f;TepT)L%1J z6hbuM0bKyBqVm**Ii^D)59kU&FdVGRz(gW>jlCp8)fEtH2UrVNv&V-mEI~YUu)}#X z#_>CnGdA_V_w`1lG%N_DtLOhn?=f|~z>LUx2qvs~1HaFr?nKN#-sLIdF%o!_e|eVh z{WH9lF}(XN?rbUmzy+Bid{=OBXDI#ORl3#uLLTqUX4fr0iaju0Gai%ENE;NK%d2ho zOX(#$rV)QVPe(@Rz{_;w{*2n(Pc;-SrO5Jsc5X@<@e114A1B{LKYo9IBiJO8p5468 zIfl`&O)$Ju`W&sj${EYfTe9rxPF=>h=zf+{Q(Vk_X8~{%@ z5iT{ou(2IT*23}1CzHQQ{!Hx3msA?mkKUl9*iQ10+Qg%aPi$7;`lT>@J)Gj^8%*~h zH#Gxlq=PqUxsmlV&a$YmR~0uLzd+)t)C+o1x|4Wyue%UM-x>s;I(HfDRx67-wNE4pXpE^>ihD>bNbsF0Sbe%f;J(M}JnfiL z-56=V#@L;J9y3(!=E=(4zKZX>kbC@G@CM;2OaSCq4`#```NJ;+imfk%@ewkcLvsnlOw!GA4Q9&Ggmw(filID0 z-ifr*?pTAV_=@rYTp3eMn&HL6CIi)|@4RG`=9mM0L4e-^?! z;5t*~e&&NA1JrI6E}XcPQ;oB>jaGhN@uR})Um*(~bZ21E##??C1aS25>8SUlsbYlI zibC3_c=3uWtH}4SwU*@oM{w7`GxC|{tKY(Pu|N$tp)5OTW$!QkjWc}4SF|}uUBK=9 z>KB4x5o6dt><(r=nQQMc!U*?%184q{!6mdOU&_P%@ga_Zdq$kL`b%H-x_izHMBvhM zMd5#6oNQIrDSjdJhWtV(LxzW&3Q#WO{RbFGG|frR<0DJ?FNBiLSHBPx?DZ)Rc>h8y zHQuEYK9kod6I!)OC>CYa4A&Z+#V+P5&-WfAMX@hS&{QeF@L5Rb<8Ez*!y9^L!E`DN z7?H88&in{S^1^+t$lXM_qF%g;Y*S^erxNFG-uPChc&{8m-veEAH)-gW#VuE7Ek>V( z3YFHRsx4ZB?J`@IKsM9S`rIC^TPn4zqiho*%}07aS}LHo%aOBO;bX|qfemzfxEC^x zmHM0s7YqB#ZWVK2$D62|V_Q!;VJmGJf?x}8X4Tr{eHMJZWC{i&Jh2S0`yF?@H$Si` zZ9AIEHQdXZ>Oe!7ABb`K+0Mfix@IJe4fTt~yuoRrgJ#|au66Bpt;&KsYfinIAr3V5 zfo|{+KbDquq8`!rE+?xV9AjMjGh389u#X92%)I2KHj#KZJEdp<6p2=E*BtlGc_`oQ zmi$%f4_{(uNg~sag>~%Dn~Q0iP`Qiio+vos8cO(r0%b1kc<;Vv#+#?dU;$6c(Y~_q z5l=L9>aoh&UMgyfRM<8dn;V^sw3-9o9dNU}n`rGJJ#rYqsF9_bsMuF%p29zSjCbs! zvZ~fW+a_X(ae!1Vt*j+@m^poE)7o7~z%6BbPUmm?Y7`p1EBm}i!haX%scNy9T>Wjk z8E=;Mmi~r0vjG_zr=!n)Q?WmRSyA(+zTciAVB;8(K|V zH>YeknaCVTr99o()-T7;6QD4U+1*nqGS7&-qg-QQozYD!j}> z(DycC6qxoI9jcCZet+&82c78Ay=JTUg%D0!<&}3@!kT;MK!*K7=tZ%G)hVF?GEe88 z0(iX%?>Z^v7s8w{>{Wh(o77@8D~%qhrdigA!?lmXy*P^fQwVud;RSr>C}w>AwCepg z0cnnw&EJ%$oxcU7URIG5NkJV5pNXClwB|or2OjXeEux+MkFWqg;o!j2t&zZkne$%=rF;$%z*G32 zs#6b3$(@dPhS>46=&0bNP*;X56f0n;-bO4LodjudmqIb#Buj_vDY)2`mkJMp(n|B? z)WXB3|#}qp0?TruY9WB z*Ncr>VvOU7ufyZ>PCW<}`>rAfG?lzr-t9`j@s-?rTjsfR?&SU0_N2jz;TF@UsyOO1`zemc{3OjsjQV z+XAa$0=9Baz>?Nvv63V=vYdS88_diViX+mTh~7TFDBbI}lj6Q_H^;2xN7mK|X$dk< zQw68Spbcxh{$G`(SPtCU3>#wzU=>L927P$OeXfkEx_az(b-*!dR%1|W7}|3bwg>7cb8e+p5twSg#7 zk5qKp3Ij0+G3nlTUn>Vc@U15wq!-<{C}oyKUE=HZl48AZ4a1ym8~WLV%UsV_C~Ymk zfI29z(Cytb_NdigLV=kD;j|^oh{>Pxyw4rOt zeU^gT_u=>DE<@G75VFZ~9s@6<>}S{jklKk;dQ&2ctkb!}hopUt{IXZ$c}6x_*j&at zD4oXptSf6hp90CWzu6)Zzy)kstZP!&ql1p-Tb2~drccvGD)~)=hxOz z8!E>w=L{Fc7#UT2Cg&!+1k@zHV3v}d;AQgHG zrPo4Bn7h02zA#p{rGpr`M92shQ%w54vIlaY2x$G145JY4Y9x_JC#2JYF0 z?DEZ`DMak1do+$kJ_|V@b+)R#765gHY*o{=hz9WTF3gBDbI)d%?-)v&b)GeMhH0#V znmQg5w6G2`g)Kt`yN{9j%8Eaz?btEJ%eYg#0yl~YHafO);`lec#fP1=ifXH4Vb_pL zek|_Vv_5=|ePCSv#m}Wq5&Me+Ler%+9`c;+s*Z)vxn?Z3AJ|vXhII!v3F}yc>wt2U z@jX|y#Zlimp=*IAJ#BVT`)BoqgXtsyr)BvJ^mP3IW7)5VygEv^RH5^y)K9MPdV3pk9Ln@9 ze^LsoR31jy#@5cD&$T=j9tGOCUSQRRMPxm4ww~3twYvA1%E$-k=TXm9j5Q_CA`S)j z;76p|TIf9gQGm-$7#-Kkg_(k>$&}-?^;;ID+t3!(YBtsTJ6>9DA0fW@36qK_Z>YLI zA?0|s&$2Dr5D{HQi%BDS)#8}VC#Hu~rXreuaDlZ=4-k}G&7EGes}ca6dIL^hlTSn;3hf%exe-n|>q$wnG%F|^r!-^`gY zVmh~_S+JFYug)(=T@rZ>4>ZG3VNcR)ey%RZnJ=kOUfP7zUYW1MiR5pl21~vIACP(d zLSP(ku&k)+E9&mVXIkhioi3QbZ}Sc5vjjmM5yuFgoSTdkt@O6JrF^y-<{0LExr5X- z_#%CmQr3(5TSa>U28O7Rh_4$7q~~0Awo4c0joH@*dUE;MuP3@O%xAzbA$ct74WcW{ zfVtd{@ZEG(fZ|01oJ7Ily(H2Z*{qEo$vr9V9dFUdn~_0?B1O$JGD#nAT{YR#MN6mm zsEBSE>D=)QbGB07qp-5KU(pSq&TQ1h{6fK&LQ$^iA2p}boaC-n%=iV{5mA>!sIb<9 zoXe&(P_ECjDPHD_{cqITuZE&;8m&Bi>yX)@M5n|JKwZ?!NuX^WSW z#2rOs*@Tzg^;Acid%@dE51)?-ty-R3_ZD~;>f!ryiRfgIEpu?=E%59JjzKuRY z_(tVSvr+jx$K9L*Kn4N5Xtkdlv=1Zm3cK#UwHXQobcjQkVoQntZl zVWrQS32G`N{>B%cWi{=RyB;I6;24K+m*8OmOF|p-S^inMMXUwek{KB;@@)fxiC+jD zo>c)w$FWmhjlLEQX*&_CoNmrxLm<>MmiJV3acJDfB`gdE_Bb(uIdsQTg;z9FORK`X z0WceZ5ukUR2dPY6L-i_`2m#l{XT2VP?6(5Ve-*v-nIu_ma31@)#kF$^p7NjVigk?s zQ26=mAkr9Dwz-)iJ$XDGx27bNlu>U}9r=|?xRmOB>V2C+SSIKWTywa{6QFZQar=;pv90^7yeKv5Z#Dw^@j+9=yV^WHV z*XT=|PfK48GWG8p17w--UXvi%j`O;s$7-@)2uup!;@YF`3<)W(aFSkdkq5u{ zOddxb%y%~ZO6H__{B-T%RNu^p#jE-TveM&vzV|-6)(2z{H7JA(ob2tR?&91giUp^a zi8Y%6lAjATE25{pXfBXM8&bo1V=gO@8A%6kPDe$v z{6+m|7CKlTe35|nmd_C0o%J!>Bgouz%~=Zwu_CR6WEz+7s^iI~E7l z++DEDJ=wb~rr_8$&#rvaAVWtTRedo33LMtco!Me4A;8vnXT`@V(zR~bV%QO|EImG9 zB8=tQ!eje}#|-~HnbmTkjKvVgs)uuBL_S{ndMXFEP|_aDv!qye((IKr;L=fs`kqEb zKVv|Ziq-4H@x(qq-pk^e_s1d?*!B%5JWS7DZ#h*{`_`vvpA|>g>U-6H>|a+|1U%gy zp2kVWxFpNHt4*oR`ngko?_iv|Co&s7UCOsup`_PZ-ru9sQMe(l4iL?}@2X9OZA3=p z{s61k9Bt2@`Ed8M!w8N9(%^60uHSE5_aoY#_hD6G@@cdZZIs-B-E_&J3Zd(AOi!r! zY=kAH6g2*luhHYrQ`2C@3G;0-P$>L81cFIfg(Tzk)oo^hs;I()Li;d^nhw2?x~A9J zG`=}_HyqCI_4Tq2S{h>5Jgs&bJ};cc8T;qOYvhedk{;g=SmkS1C2=3)iagC^8fUK= zh|t$oMN;FrUz8-)zG7B?V)GeA84b@Srz4Pdft1&~f2{La_-?r}P}$HQnKG=!Kixo?aGN-_4DoBWFPTv! zA|m(KJ;IT866xj(iO_5GCc?e}xD-@ks(DDImbSNU z!8>K7lG2tvmvDCO&4S6(<}{YOEHT@jC)~)b|LjF>$}-ikUhf`fuQ~kS;o7RF{oNsr zzzGsf4&vn{Y=%I^2J@!Vm3hXEug8S6~H_q=gGVd`s!lgZ1qx z-0Aj`Fe4hD!^IQho#qS8^?DQjft#&<@XV03-~CPgxuo#OhTG5xHZI7N3*>|XWTAgD zGHS-NIHrCc$-JJYAWJ#gR@m?65}&HC6IbRF5E!;j;oG$+s&X5aUlIy`_t;~uix@ko z$}lmj-cJyZQ_BS|+otn^;;$Y#j%x|k+fUxqPM-K$8*9BqCGiTUhWY{^@ZLkTyFB}> zzIQ`wOQn<~8x%GIq^$-}nkJDdT9Mi9u^O{?e5rE&y=BET)|JHi!S0CNj&%@bbX!U2 zMzS}i1Ao-no22%hF}Bq7UkL0D#_r5$X5BMV&OMEpNUUlM@L=J|fZ*j(N6MU4`_lQi1p4@XR)O=8+7wTgmMbvY0 zK#zBbx^zlRY?nbMeOgY8hRe8?@CsuzPW zhu8)}MTq%?#bdD(u0dVNCh|(nrwa9G04ID-I}R|hfmy%^34dVGp_(M3ZmoJ%sxVTu zA6IjajRqy2924G_1FH^|`j-F{<8|KzQRiZ048%12g)c*D1@s5(d0NoZCMil|^F-N) zkk@Q07lSx4oXO1*iX?Yh9&VsUr#_<&u{*G6wpTz}x4Ro#XCF+C4=MMySsNz6LSPZd zePK#ey0m-KuG&HzRdqCsrO`4Hcz*Cncn*)RZPjKwbB9ShLA4|H*5D_oGux$|K=9K- z;*nQu@jH&>Y|8h=($dNa21hpTVwIC5^*0^So+K@TVP$N$%w{fiC&664e$5p)=lATa z+TBer(yPSZD_Z#%KUct`2vP)ffMD$gs{f+ad%rAtGy9BGe3_%^1 z;&H2Fz%_~rL#aYI*BxHmC6@Vex2{QGtl|kP*On$9i5(9MnN0Hez|YPfpjIMp|Pg#VoszAhc8q8g2H)ni$&l{coRU@0&x!O;|vCqIaE z#e10@&v33{UoJEoRc)vq0UsUVjs_8rbu@UEi$v36-zV43ZRP`G<%B*?47#nplLaM&D28c&xOeI6> zs#FoF^(oq(5|FnS$r#Hjd~9DV5@GzG>|;+5qfVigYeqpbVQp?y1Z~|fFIw6S2>=%wOXQKf$7T$~?8=eWN|hK=(*LEvqS-Ow3ZyFmOVwG)Aj#-_wy`Z2NR z-|I!!nOHFg3F4$O2r~;kzcuzzf&T4))e;4t@mq^Q`Gb_phDdscFdQBb+D+I{8ddx+ z2~tG##Ti0wivA$EOhUyDFfILV4Yyk_bamkfBP}bIigFBNdA6XRfMaL5B_Dkxk?zZ# zoH%yUoY14#Ix{MJ9aycm&)GA)^ZeV+DJ9 z>?bq0mAKxJ!Z2Gt_YacW_LVKykO=D?2NC$3N39 z5IqJ9F?DhOUM$`}V&S$O8iieF|BruHKMU-S30u`=$b z`ha=4T>7umP^H(n4iH8=&ZWq_5;5*mKCk%rCBTl6(~IGb)f|tHC{2XCPBSmTuM%UP zMS-&RHW&3XFWcD73tBqyPB5<%b_d6B`ld@+U(XOZN61 ziuphz68-~N&&g$05eWgun)WHQ1udq~m>o(8SzW!R7u`zUuGrI?vyo%e;ZkIqtgLd5 zVq$T}L5T;$~ycCdF)bJKA^DME@JGm$q7u!WN4JImNXG`Ws@wyPM-uE;i zlUp4m>Ute^nB9=Px7q;Zdu17&ec-{JmU!Z^fR0S-!Jd4B*0A2OHX=Pz#o0>yW`D$i zInh8|@?`q}sCwZZjzI_@M3zrQ&mE_o2J@9yPn>Oi{!*!eEpm20v>1A$J-tpNsDFtQ zX}>EZ3*+Ov8*G8FsJ;1vH+Yzab%gjQ|pGhKU=hot+CJerPPwSS0o!;oCmcnwhu4o(O^jH$CblH06JdjbU%^GOoN^mJpGF*P$=S?CFfg7*0GDR;Ov72h7g4ZEd$Mg z*i&EqVyK6t<~4PYCnEUr$w1)7X{C9Sv#Lm7UU229J?lPNqq1xCd>74K^4a4c^DA&{Gv1QV6;_jym?=*6olE&w# z3bo_t4fJfDI1NU1oyc*g%!S8#`fKzh*gB^LV#Wg79fHX&V2>KlUFGtDxgE zIic16h|2sQYKi`S)P*-v-p{x$|3Ol26Z(VH_nK_l-H8>l>RwqOrR8-ZCT5%1tERDG z*FGUE4@PMy^kzjWxo09Zt2Jc+%;%sULH$V9Dh;O@#~e%3qh=DPP+tph#uc-hQ9ql&)#eKije-6GSK%Xc{Bf%d@&r! zLm9L(b0(g{mNBW)(pRD$M8k9!t~=+Cp)9&#*5}5?G<~bkLKMps+VV01DCHiN#d%}@Cl(`!Ywn-0<*LJ7=3H-EGLZ| z6X&*Y%ew*GysNwT|C^3w6`Lo&h>pI_seToBRm3bjdlH2qxR{7nP&` zD?r8UgkF^Y z&RGhUS}SB%GwG^n;cKEQ@UuJpLE?e?P^A*?z~B&jiQRY2KC2L* zy{m3JctZVy6xosUxPBO*`TwaAA=J$O<0eIn*83aE-rPqRJNg7Klf7dKzOj)14t%q+ zbw^k~-j{LXbJ-K33*>Vbby}w}>@-enmI8HF;Ixiqwh!yYi_-(f{!suL76KoD8bodN z)9y8UQ*t(^D#-kHT#`21eLKaPz%sn_lGSq`d8_P|dOuj+BNt;;TIW%Mk7ZZ!-H%>fL+aksztqN+8)NndMP@Xtc9v-p>utwu8Oew9VG?}%_g zeN(dl#T>BlY?(gI@$BuV_ebQ>TZVT08N$4UTpHOgUAdDNW@fwdteCl}qCl*-tJv4m z!m7R6Uk({px)gs)++YtCL5`u8=za8wbgyjQn@WbdJ5ohI!|O5YFkz44qu6QlsfS}m zm_jgvLQXGFh+UH56kCPNN)epN;|6teEAjD#q~KutAjgt4V0=D`QW3;wK{4NQcr>|_ z55o_Tjd~#3t1WUDF{PE|*9cuw+9X?mgN7*qIUKnP-Od+7dX5VVuj3sZHwT*fBc8v; zmJY=bc8{Zd9~)9I7`^f~dQ2AOI|B5DA9sMNs^nY<^15)2QueVu)xYMHex?}kCZu;T zqya1NBN8$UjnJrF`%U5FK?(w;wtP&&AY-`4-QIdkgF+!u{0Sl(Wf9(AvV>j=^KeR4 zQz=qmS7b@r5*W7amnjt3XsciX>LV69QeLS;tuY86>VNd ztM9wpEDq5Z-17c73<7PS3xgQ_jfJn>|u0L{2hxM62!Z+S|H_(LKW z0d3|@3+$CWph{eFGd|!DctQ&2a(a1YPUEz9mo8o|36!}V^DYV{S>mHC5(rw6R&7t| zEbw5No;@kqjD`N$xIq8S$d}m+>CO>Iy>wFh7x11lhjUBI8U3WN!Il;Nz0Q##BGhH{ zZ=o*Rn-@0CW@#p7tnswk_gfzP8l{Fi0X6uNAq8{XQbqru(4F}PRFhEoM^$n>LGC}P zY8!SgmcPX)d!(bGURTdmRQe|oIt32U%OIRu3&lgo-a) z!`}!N5eIpXSIhnA1pL^mUcuPXcW%(>aTQisK;GheE2NEiib)}!wpO)}wx+b5Db*}> zr9#iUFL#sfLUyf(pZh7i9FkRm`~R=7|3}ySvDMD|mbS4T__>+0LV>04_#g;-4Qfz8 zgLq{6+I%PXgn=LGR;#Ysv)cGm98-4LFUXt=`;^-E-?6+ZdiByn%Mr7ToRA4|I%HFg z*ENg~s~~O!hgGoyi(aTj*ryYbP&3ZtYs4uh^zCKY!WZ_4y$7F8?r{k@E%{P=7rjn@ zzh*l_@3fz2(~7>&>Vpf^ld5wGVkE`v5H}VpS)3vZ$2rQArr1rY4<^2}M+wWj4y<$s zmt;Pnl6igm4d}cph#`9QCh|V;k;P~La{faff@ue@Xd#_7{IqRo2eNAyBT8i<#$a{_ zkq;1iNdB0kMF;!O_RlxjKsPMs=V0L^FGK-(^Qkt&(a3KX%GWq-j$~x~@Nm5D;BdaS z7cd-H)teU|t}4D(YO{6JMtvcYkLsO$u5jF5FY8LQu||F*-As^;0krupgWo{;*~!v7 z{Wxmy((1RmUB?>xX5=VbulvrB%#?3@0o~)XZ|%?Q=Z&cOVtb1cr>-?)^IloeKZIw# z7XV==!F9u*u!4WEUy(oJZIMYc$v3TVOnXoUr<@0^Pqqhl%6u`giKREaiPqx}g3T?- z^M%RjmZ#e>yrl|8zhzRo9vbtq{Ro}7=9Q0p5kyj3^4sz}ZVX12Nnoksasnp-^Xd&b z#3kOJJ>}l}U%`hT)f&RipFh%Mb)Cp`frm~%aGpXgT7-NcscS3w+s&j7*?M3PVBKSq zi3%4qD)vhn8u;z$AbI?}S5TspAyq56-c;cxGs4>IKjw8^Y9|krQ{v}r}wS zYB~`C95Y17UmDtQxtizL`V_E9Bi-%q<&5Zf#>)u?76nqT8%D;F@Cy7OLQS9-w%za; z7^tdX~@m7%eKj8 z)L-m7&G=6AiQl5MXGPCONKqv8Ri_qdlm1ulm}O$O7T{!5f9snOHt{OP*SY*yemWTZ zCM@NDkP;~#{jf<3p0aj~cga2OlotOW)re~3TPgjsFR269tg0NimDmyVhVl1(Ro8uetKT`-(@Yz1 zVa^`zB#=H%>oIIkM2!8|mcCQZs1$=&e6Uhz;P6`Gz7ESG7=MPK@s=Slq|(?v!*vYl z%giG3W>iC2_2*&Nbky!7&RKH21u-tTj6ux=o4wLya(&V}hZ?YX}ffL>E@k2Lwvxm9^z z`Qx-9J2CRjm6#?ooJjhs=-5=73KUX&lr_gSdcFqO_~6D6)7le=EYRFC>6jj+AOCMv z*IqY_Vu&bvwVnZ>PPlZ4Cw}$lI_WY1e+6wtoL+JVkx@(GRDIcenL}{1;yl4$K0nV? zQkod-?yMe+Kri4+(j&WSqaKP%E9D`Kf2&H<=?cN)i?DM0?mH#w=tO^fJ4igzPb4UH z79Q(APB8yPP~+48q|V`QB$ds!T}U<5p?G1xO{kgkEZ(tWXyEKNSt^43>^O3r1hPic zLb$A@5I)3#z1Qa+qD3CT!8*}Jeob$s!c0==?>w0Llu48uYeO_9xi)_WIzwHJYE7~2 zn52h)y|)@W=U@fihgq!cRCQ%}$cKfV%}&Q|aYhY&kH?$5kYZgTcL(ep4@6L7^=!PK zlI3@#O}+o{TR9quB(h5ZQF!4rgjNC|d9Y|-M_Q2Jc=D5e-AYPWP_wqYZub16x0Y#<8~~nGmJCL{F;QTG&N@9eF@0JYi?b8MZ5JA_v8? zkP`ujd1!4|xMiK1zFYNPfISJsK^dxnY^;g2lKmG;?__NDznIJsbe)Cl3a{)Kyx7Yw z3IKRoTUXDmZ?fDMbBG#?*&ad}q35p7jZNoypys5F)MEVERrY7Rly~tnXp()acZLr- z*E!>))u{!puzjHzWmvaj!dty*+t>0^v2P=SDJWb7?Yw`7Pt{Ah#Vj$LTev^XZ$N>a z#HJqPt4nx~{K(cOXYF|C zgSi=n)w^WR?zL0{F@={?w-~Z&UkN97{CZ$Ltp)aL<4!MIb2T>vj4Hzln?j9 zL+6>tec!u*#e1G!^26J%du#}XHu2f3^Yhb%$bk%q{5L$RLqS#}!_@<3bSPgVT!Me3 z8Lo4w+gwGF46}Q_Fv_WqMHRq;f#$x@x(g(*LXSWB#ZwAbR~xu6$PpMmaknRoTCZno zV``DE+t$f`XO-nUTu0gtM}2>)Wy@Y0rhb;N+nkF(#?EfT*w=qN^O4XMTT`tWYjHZ~ z+P7m^SM0MZkx=DT4!_RVS;Dk{zFE;??itrRgsI-I9hg)!vxIM>R%qRyZy z^&R30D3I2VWP8a|1Eq4az+5SUT;PGg#{PS2FKLyd*gE7&ZUlK(mH2=9Yf^$kU z-aITh-h?dsrdaiWBcdTrO@@M@mB#R2l9^QJ)P9bKoIDfuf;NkXz?wEx?EQw-SE;n& zelH6#koo3#%1g}H0<{th0*sGa*0&?TvP9X;SZ8EVZZ4ro$AR`!2rdNlV;SF#`8?C z+T8ZzI^J_ocF0O*g)6Llbx&pNYc&mr)-Gf_G(B<8v~SiBsMTTZGD4KMzXl4uY|B-LTKr;Q-qyQ+ z4LnJYd9D7_MzzE8v$Qcm_a%w)LvBM@SIA_gZD`**@P{QIajK65<0H$J8QjJJYaj1s zK`~U9S` z>$K;I;de~+J7cit*Gv$4{mG+Hf+k$TtKMhR_uPID-bZ*w`NctNwF(wh7CwhP-g~ZP z@CV7kVmDP(6$6+gW@XAp?1m}X#L6JY4^GRh|a16g(QqrYmtoWw4dp* zm#E|0cz**Nv1heZ__fpU9@uL;d9dQS-iszgZzPYoV#c&aO44Wu1Yp|a_%us6>IbU5 z&GK&U3rBNEQ7W% zvqEe)jI*lOnkL(`DjVBwN%^4;#FxfJE1$~9W=md~IoA?CL#vNob?}15xzc`3i#he( zHiic}+;lnqgqadp5_Iy#nGYgUyL~xSmLqk$gI}z-j;L2l*}- zxVp!ALSIXX8dAf8WuCgLviswQRZf1_ImSA1a@&v-9~ooA1M{y&nv?eQV^k+MEn9mq zYiyeZUa%pZ>BUahX=z5$&1-P!yh3%j%T+>^4D8uWCi;TUH`fks{x|^q=P%C`E2Fb@ z=M;0_(+pcT^30yKF?hIUi`GM+UlUu;up8IbxPOii$^iYVZ9PYQtb8N`R&Mt&pO+uw zTUb9j>zq5UM@)F}dv>mCOXX*ZV$=7nz^kxZ;pO* zOS(?FeL0Qa$rNL2Bl(Uojf2@x4ntU@zWXn86VCU%E7qOkuc65VrUlAo4dNoc4kSUv zIc`$wqzIuaLyrLb^6U!O=syIdF8+#BNo9;K@#zbVxrgKh(FJK}H5fMmg3|+!s=n8A ztkW~~UL;b@zpT}rNswTPvkgHbNYLh z^tq%U5Ar)@fpIwyMw^`4RNMg%A}`2>iqXc5>0^ixRSF`}>I_CGlUd;&{S~yjo4~Fv z6@0GpTiNoa217#3DxsM&7LCJ#SMVwzVJ>a5ubXrM-;mH!sJ;!rOn|A#s#ush; zBu&QY@r@Y%sZ9jh_lzdI=?{ce73MH5Yz0T!*&7yL62E!T{yGZ-kC%Wn7Y=$2D*rsa zTla4jr_Kf}gz+=8lIf-M^8L2GRxD1^vL{R9>HPc5znu81N5mJ?L$ZurJdr`U6RIqK zkgUXaHM$dy*oLd0M&~KK4IYDy-_*yctXth{3SMSl`f+&5U_31*RuNv@=!j-{T;N?9 zJLe~8yL(=HIeEMgHA-1LTTX7NgKaoy!evws37 za)O8GZ8&d%i=q61hiuTy5^_DC(@Nj_vI8-b<}ubXk-^0o(YX|_7R9*FmmOIH66Mm^ zIkeogTlMMW`VW&sj~l-zYmMw@o5kJ?8O!_5vv=;f@~l_<$g7AF+lu@Sx`%*D_O!&# z(MumA`Wo%A;RT|Q$MUP!zOM0}68RRK+35bvO-8fEG6APyg4YOeB4do|Jz$eBO0w}CcCcve^JC>U9a>Gu&GOUnW9W&7H}@Z;ifa~P=maGBD6B=2O??n@ z+&e@W+~zb`=JKmTk?gl8?otOZYwU61?<{hhTd)(X4Wcbo@yowSS`Q1$ZEjkXM3+5` z{&O0n<`?~+98W22+IrSS%34&!$F_#S%wrDi`HdT*b+9N;KGF{fL#2=5&=dQDffL#p zQA8@=&2>-EV{If&!g|7()>RwV@HJAFryHht#@``g+6GvW*mxzyoo%@K1j^LQmWmeG zb>;+4+X@z*X-NtoZc8|Pw`u+CN2O1hPqf9`Nqus)+OavIdS<$JV_-Q@ec$n05B6cZ zSJi-z3sUL>?<>s+quB6!tyyK66)Q$(@{&NI&k81nfdQ?T^fvT>r^c5UdS%Mm$mPqV zJKUekS>8>Oe!NIKL_MO*X5rrQ6b(kfEe*iMtLVZM`)g(3R-NT@!h_+;{qHHNfWX~d zwZw~R$<5hK%SU5`jnZu4Tj7WdoyhDH=G^hh(HQ_>_S&d&T%G{~)dBJmRwcLBcEf zM;~(wlV2z^dHv3N5Zu>v-{521^P*BM>XZ`1Z_#W6sw24A=3Hnxp@+{ja_0);R0xv1 z6yrsn*@W_pb35i~^7O17YI+uV{s-;D|1qXY$;lk!YnQ#e2?F|sA(ZNFzc=j*b26G; z^S)@l?CwT`d#dDGe~>i)Ac3{FW+!4&rT2BK=VSVA8h~vKHeMLRmH7>a)7rt$IWa_{#$U&DuG?@Jnk$#QhB%VTs zA|K$7@6OuoEotO&abb~Ufb%2M%PWwFo_vYgFkk}2j z*MEGcgbVL}H0`>7-u|H%hvT;`-Ke_v*Mfup+_9R;l(T8rkPUSt0rEALFN%< zm{iDFb6?z$|3Mn~=e0|7GK}jr_JTn*zdQZ)+YV6{+=Uy;T94hXIHSjE`y%gAZ`Ml# zO8;DPQ5xKZ-^R=Q}zE{c>m->R&$}dOO0Y3+5oiPZFfpSRYdeYvaVSkVw z3|-E1D0!4pnEf(&Kl?c_{y|ETL;SBzPFQ#Y2St9B2Unclmji94Sy}}dwGYECq78F+ zn_EdpdD}moMega|@DfcHRRmr~g|JAJA;c$_fQy7g(sc zupI&*tU{h^I{?`!SnAtJb-(+?ZtewQPw)euFy$E>fYaGmC@HX;-My{FNjxr|nrg}) znj)==NDGm>yCm;lBc|=OFa6`t$l58{fpxz+@+bqN|Hj;- z41H}vwhm)W9|%S`QX=Z@wv)N@*`tM?>;hDfTz`#V3XN~7rMAbP z#@xuxoZGR-&h|hhqVpe`MsM^5d3hR~Ye7G#{pB%t>v|jpI8vmcyK?tj7&{(T9PIcx z*d+n_>}41%+C$rw@eAHU*~lEoCZY2C&wrNBDIM&<^`oAa14kms>&~7npJB4pVTQFA zjeYgwdBg2WFi+uYJMnxbm>-ETG`eN)7$nvYnK)U*>W}9k@rT(6Ev#Fk>P)|<>j3vp zSyS57aC)1J?@`)DL@G#kl-1kGH8ldGxHhda=gMAqj75zMgt764(pEAvtM#Y_yM#kK zq~m&sX8|f0>Dm~-wG3i~c^fOPgwb#WJhkkh6AQ3GF5A5|d+gA+4V$W5wlF(+Muc{X z+0F;BoH|qe`x_w~SgM+S%BUpQB3_IGy8l$%$&j;XD>!{kBBaH-bTF9!c$C{TU2Nr@#zb-g$uY)a;D}~F zZxS_=Gld?2gD z-P{uUEgoQY2K$AuyY0&hfz-^zLN_+|AvQuV+t(d7KB@Fz6b}kG)8Fe$Y_rE%Sra7)=kgFQ(A4{44L1JpbE?KUS^INK}JW2oo zovwEH1vJqt>wg_S19s+n9oQ4HFa^zV=t?BA<<5K%4304Y@EJP zOnRQIA^}xZ^H4u&84ObIq0;uh&XQ6_HjP3_XlxbT4lD2Z(c}60?4F*WjA}8FHA+Cd z`n7ReB^PsgO4LN6wWrpW_K@i)5R(jzfVsCYVe@CSkziR!49{@n8 z@3UJxqsVFqQUJAVGOGgdvItAg?Z%I?Ly(V)Sol?ckb=8g-yi6yj|=!CQ!z2c^T!>` zFX!TO&kDXn)3ISL`XDmg!=RV=kUG(0CEg)Du2GnezKG1gs0s~{BP7zHz6D0$euvh6#`g+H1=hWRD^O!>8-JK1Xq)#xK$&8T)cGvQsix!K~T92?H2yQ64*z&e1_)?EK zNZy)yY0`Q0#psOF?uwQka3~xR6eI(H+2>&%rXaj%HE$lxsGfjdX}6{C$H)lBZnv82 z+^KA>80VVafmf|6Qb!EO;AjbZY1v1ccND5AI!;-`ZTe0=jSxL}_F*g#2q&!D&}sj! z18g#Bo-i zL*ftAqlBnAAcEOs;Y~Yn(Jv2yA=}G*##oJ(Z(g`Xm|jMp@3`NtN}bB6M93q7qYc-~@y42?a~ofT_iP%!FBhc6 zbML|0E_4S!U|OMf{PwYR5ggR`oAI4{n%m!@G{(l`c`yfU8aq24`}Rl1KQs!y`EDNJm*uOq9+3*mN`&*GSk(FxmZw|2h6r`y&cP4Zk%JCnwmI{iSM5g?N zqLuCIfKm7x5hLgQRkuJC$*at1-)AANU7bAtLi?UY`!BVZdv&}o?IX6k6H}Qol8-Ph zu2JPXO@3qbC}s(nYd?zb`6Nw@ZHE#as=IR9x!OO~FOGVP)B{zGF%aFN+$P2t`W2NM zbZCrfVuZ$2Y;2aR0<=e!2N3wjC_Dw_lE<|UPr^Zv+N$HTDG)<8CGy2>boj=&TRA<8 zKdzx{$=XwLnf5#%m%3hQxOQm8nTAauZ(xxpOFJ$vwnW&iD6VqYFRSIojgV6PGTl;D zBwUQ*uB4-R+kQ>4PbjvN(gfDsAf%tw6^r>ybgawOrQSva^DX>rZ3?hb{)&}7nl87# z&`O(?2^r=`)d#T{DYZ3vW(kyXje@=?>%P9Qi>hy?0FYMGnJU;{NTmN$bR+Xim)*R= zB#d~Q%@P&~TuRD7qe?fg3Otj?0iZ81$3h<%y`GwtxN$1(dVx_|!agzrmI4J+&!^~l zIFjY%{#*>7X|zW`-7|po5MhhcSfj1xGY8KHXg|&SdnJ|&PZ>=$9SO;A;-!&8E<+l~ zJMuQ%i{-~Y^RbmeVJ2<;4IvJ^VSJ=x=8BxpbrO4beBOErVZH=pO3FK;G3AMNg=!9+ zvoOF#m^Dsr1Y$=sWi%=wYJ?ldpV{Xq<<#&b;VwR3${d(-W8)?c$y_3xSw4Cdv>0&S zhZh)Z=dn_AG>2$K+oP9ODdXx?RY@{OYehes_MkJ7HSp8Wv`|#U0;w`h<5lBG6Mo2) zqsUcWD=n@uy#FDq#1dvXv{8NiJbwQ`0z9U2SY`l7lq(6PC#Xgp`Yu@0K^!b`M3#Hg zn`jLnnWMvTKG;}EPRt240;%C0mcAPej|{~YS0&i|s3rzZjZFODDeY|$cPT)UB*tOc!Hx(v6&FYn5#!f7LJGZ5s6`$wN$uF zb23TtPqJWb>cI6BSjN+h()^9ua?6s?y?F{8GxBD+CBvDBqWx3D`@Ms+Id3T_8}YN2 z!-xCf3jw!OyQ4;D zV}3(585l|zHtM04A?4!iO=I2{x<=B|`nYj+uK|uZi}}@=n;xy(MBXh1E1tJcrfuiw zUiRY2KK%kyO!H)|`ZR1|u(Lwhv@^XII@4#bTcBUat;eJX<2p)Li4q@iaJ%bsV;DUT z!n5YYLLS!c!nH~G3h7E7u|KGA-Pf$%O)KKpYWbOO*EZ2E(kzbPT7V@WO>lzh`3y&g zxpY{%oywxklcDw`VXl$OH%pDwDr~M5379@y2EX5on}Y$nfHEQvw_3pm&MCQlZsEhr zLKjC-7UWoArygxn+ZMr5*=;Z3CJ#?JFKL|0PmJFuWc<&fyUz!QcLf-M70qUo+v=vP z4pF*L!)nF>2M?(HIIY5~{eD;V!41Zg73B0b^0lvC&s%RWD}ZD6NjF$=O?Xl4^ug(J zg9R%6>L}7yb*ltF4MJe*!|u6)f#34-z+7V}=^>Qq78iUBW2AH_%9JMc|T0vyZIvx52c?=j0KB zZY#-@^y7Hk{(3LK7~W0E#q=9=^-S{*BK;$kr~hvZYA20e|X zfE3bZSiY1aX=EPC+6$kXIjqA`tlHkHc8}L;)@7(4bOT`v>DsTymTI=_VhE6OW*3rf zllM2%48|tfUX6j;5!{6nCaVd(HS1t)>(rAwHt-(xT0V4F)^nD9FM~zWA&6b>ng7Sd z{7M2=fk*NC0j7+<1ngN0xFd{LVP=S3+ja^>g+ zLvaIl363!eQZd*AJVV}{&gd(L=aCRq?;Hhmx&TJGCynYfb~uL2!AFov3hXI>Z|QMR`n_NQ%~f7bQa6J>N^4thKv#di9P$l6McNN)X%}`h(Tl zCy`4->*M?_R5jP|{nI|Iu%}M#(s=XwO(jB3Y|0KizTT+s{|RJSOga zsmcV@JuB(y7TV#w1aKAsMdj&m@A6xM+339Np7J1*LhzZ>7lzyo-=gn|MUFXY8OXx9 zpk3O`gdR~bKAkfHZZ%Qc;XHn}$42;~Dd0=!Xd(;Ji)t1`Efhw!o~MuJWRnLjiIb`} z*g1qOp&Wni=+)+pMxm;2??C||L0Pw|sINzLbAwMlDgE3s!ZVOQREL0xis*HJlFHl_ z66>kYseatI6SmR;_ud@HKP+|z;%E#wK4Z*n$ea4-sZ!G6+bVvPZ))shR3|B` z@VYAH`Ngl!{k?v;Wr>k{Y}nl=px40}!r=G?z~`@&dG@UO<+DWe8CvHq`cPW;`@u z!N)2xZU^}f}M!7Bq!)4tTzo&->=nlxd=vFK0&P4|z59 z1Pv4`gua4(PRtY-#vx%s<7d0=ncbQ&6RA7xTyOq)X|M)&m)HFOn{vX8mLZQAs9KCL z6-c@|wdP~>ZYvb&1XKa6->)9zf#SGeSL`Fv_xOhM$u0fvo4|hf5}(Lt zf}rO!cpazc_1s6`3QqnbV@M6;T}wtj z9mEUriFzM&m%bjS(;MXWjd4B`zTqSu|8{!`s%V_3=4~>CvM0l5fwBDpab&K5Y|h>_ zd!3NjNrO)X#pQZy3_O9z73qB<9h>_5jfTT^PmBqA=_4r_XE(!ZFMHnoL9$yqO$FyT zIbzQD(Tr5y(P0{y=r;oR8fnbFb3kU#`0s6__SDCuEM#rCj~1l;3RVhpijpVy^n8OC zajHvsnExP^{W~~qiMo6f0fULHl8rJx58K&P%X5pz=$6AFiBXxxPaFotR(Ju>8s%O} zZpSF`W5}xc-$Y>xyB~zlCJb3T7ZKUBBEX&LQmd*%(a;>lB}k$`sL!VH-hCN=N9^c` zS*x2Ospnr|z$J`8#MDg_h2Jr5iA^nr(u618Qhxt~B&kJIoxAl@fO=i+|*9JvA`iJ8V9mqh#GAY8v4mbn(Ih+B%{_omG0mr9YjOLdg;8by{` zxFeFkG7cqCNQZWyzO)?mTI#MiRgSE%uPEbme%=xpA-16|Am&-%fV4y=n&=^&ZNF)B z-da0I9>=^`kGl`fkIP#II^A7aSH@E4q@U zB5&J|wyK8&j7D!7!4;oa!~>W~W7RSEaV^8Ba4BrGV_@6mJS|>3(jy8is>)1?1pH_? z1ftp8*GISgn(jbTh8Cuejz3jdC}I>v{M?LQ;n<8%ry_A?&Y`uUIWs0v;m4;h#svFl z2o`=*2&kd+`9!Z;dOc&H-j1BNpRdMGqLPj=t5sTk?8XyahbXdoGekS0xK160Hm6@a zuEAg3#7bo#JH6(z{H8)(dZaE(9#~osS2Qn?D4O10r(a2yq-4AH1Bb()&TG13_k4$c zV%_W_BSbmO!ZCjP(q5MWH`&BqD*U>J^Ej#4e6z_t<4zcH}uGZ$RK&t;T5c9 z<@|foV5ACu5CpsLKV5fjoNGrYnML*G zcyyS!WiA-JaNc2qg4}hvBSR)=uqX?Gy-t!Q7eHg0zhnJUc`! z6uiGcdRnVX2-zx)lDD63o@jDyApoSjY|7z7-t#xwe9S_!iki# z6KdO@k`e9-XR6-;o7@rCteWecancp>$yQTynI@;X3`D2!Z@IIy3-frcMmc|@(%|=D z*_I4adp%szR_1~gh3D>#JMh;zqAdx_+Z?T;T~x++@a#@N@MG}UdjN7#Iu~&*((B|z zj!wi2x5~&dtWZx$ZdJ5O5(!`NBYh;C=Nx@j6oeYOR1JA$upc?VBtW^VNb6o7u{ZA! zGQYd1AGyyvB+$6ZyK?;Ey*5r?3g_Zz?R`Rfp8VmCDpoQbTUq`Jcp7Ss%YSF?sO`qJ zWaw@11JuAnAb_$RkhRQKuv%Hv5EjJ;yg>IkWvAdk58YjD9-=weEsG2$nXLPhn zy)jr^Ci1F$@m@a$Z-}lZjd(Hf;U#E~cV&8a0>(Q{Y>s@|AHAE>s7DH~WB9x=eT_SN zI^pzgiLZ^-*Y!u|+8`f_sV!`b+xMrJ+hm>oKow>R13TWu#E)Kw89HN!_jkp@l{U0o zJ1=8aPVK-y{Y$inMx$))j)lBd2Oz4oQKF`#Y4>NeSZ~hTuCW&MrBW{AC8^`?aGO`E zOD9_;w#yOjoyxyU-wcu3uwQ+MpTcf#kA5i0+@os_HY_Z&lD#HDNHQfO2OA~^cUC37 z_m{wCHI_IaAm>K^g&;=P@ZJkqoFhkN@?osM*FmE#QKnS>wL(*BhW0h^Ks!!7%)nwo zTJs8kpn9&B(o#5FShR~TMd-Z)nT6Z&XRR^I#JFR>N~iL|pUk%z8o}X{w#R>v(E7IF zh{atLeQWwns~6-P9s9KJE2n~&$Y32K$ZPMNWi!kr9Vg=SF6>|?Mj0iZmMC5U3$A6IKZkm>@8eoJxS!fvlH?!`UsK<#>$vg zRdYodb-C=J-l});!>G(gbh8a;v1|?oUm=VrO2n4OiWZbkx96T-E$eIaL2L7-P@z!E z>Jxi%-$}dj+9f&*T~nb@i`G2|^eB%QAs(fGi0SELv*kTm9TlMDR_HYx=_~d*wRQyl z+>Ayh#Y(c`KzTF4V|_ht|i(OK7z%5kIrM2x1~q5fVxez z-do=`KcK$)l#nVY_cQ#JwTcIxCZ3$b~P?+Zu!^Tw=p#Y{4?ijp9^qp;l6T|=rOT&v>rIzD~f0xk(THpjOC zIN9`##CRz-U`RaI$1R+InUClndOH)B`7j;HhDDd1F_Ua8j_6W<22WqkV!_lB1xVN@ z6pD7a`$ko8%4+hH69Fu(*b-~@C_CS5_IOtOsnYSHKt;}KH#dW*Re(k1wlyvdA@P*` z6jME)r4Sp|$U9-)Mzs@dA>!|q%X;+*JFA07w_iZ-jVWfLrW@lu;V7bPI1b)*LNB{O!BZ+tLU)5K7m;~TgcFJKa0 zS+^Qt+9dQiy_VHEk9VjnTnHZE@TZ6LlE|s5SCui5Aw9b&i7sYLifZ~g*kHAplP4vE z=iN&(l^_ka^x6Etu%8@3sR`4uyvp|VY5Zds>=ms$i&zWm5&iWd zWa}Ucdfj3ub}wM2FATW2@}<8S(EJT7W>$CPvvPV5-UL=EyS~*(jzk8Eckct>!8K>< zcK4d4P}4>BKICC{8(Bsz+IM=6q;S}RSpC~X`_;CTky8QJV?gI-^ooVyH|L7smNh@V zq;)CDMn3zN&%|_BO;qozURm^27ZKQTOm+H5R?9h~H6K<5x2>H*X$n(4`zb-8p(}B2V!fvt@<88Ol@k&A{_1SgovO%;bcvb!iFi;&K&C0kS0Q#pbD>d zl2ZE`0%|D+*3>d9%-hxP;H#|*llmKfkUor>!t}c31l{?NV~VIC8ROdsc^BKU8?+99p(}?&3h+~a^a@GduvGH~k%~V?hBt4WnpQA7^~dm^^IoEd6cWN{Ar9b^$W(@*sXiM2q6|Z==UJQ~$LGAc z`H<&1FZlOrgl;su*mqyR4)-((_@7PT%aRGZ{6EaSWkZvX`~Qs~ARyf--3;jl0qJho z2cD8mu)f_>AW!-0+)UaU=#7GT~LxF*Lvk3$?Q!Ki~5CGO9xR z*Xgx{PlkFpY)8wsf$24;$kzHFz(YHJ(=S%_vFRx0vqvUh=N3G7K^(SSp>(`+G! z89D-x{p^0{$ed++dEH<^No9o_iHn7L@t*dj&r#=!`L8#fE!k(8TKQ-mOys}*4?CIi z0#wsnkkzeMsVQr0BD9{OT{KI1L78V$qj_O1)=R?mO!#1zi zt?D$li7`_vdz8$x7pgr^R7gE8`s!F+)zo4Smi_dWF+-cNP8QDFA7Jn(0BMTUL8@Cj z8rtIMBtta}8o?}2Im1vJnD1<==_tg25)%R$M1k_U1OIajF=s6G#nq!VC$RLp3Xvb% zGmbIVO(y2G=5}30j=v;Lp?ZQYa7Zx!!IeN430^|1GskwzqBtK=RX@T6B zf@YwW@5^(#2ycG#Wyz9K25tytSK;?sX}CzP+M13{^+T=po=^ht$``eJ;{v!bUkPUs zdpnGwli%rgT*~Gh-;;vundw)aJ|BvG&cy`+?bx&QUHuK!#OG7$Y=6Ap> z0sjlmM@|STE=F%S{k8%zSLi-yUSFlA@cN5De{MeCa8yhhJugvn`wOj0et)8bl?G~` znyl>G+u+AONI3o&?780;tWVCZDfsX3R-PZm+LQ=WUm6U&E&kuyK{5I2Ht-+m!=v6} zSca=ol*|BokS(4j?vFFmKB^)$FIw#BHLpW$^}P?&{vEF5`^VLMDUO(2E0pZL8VP?D z^^W$3<6D27tm=$sWv0@EBMmH7~5Hr6Dgt-h$<5L@9V#rSQ?h9BqB=Wi=nm_kGSN=B}7tEeKLShNf*MK{dc zv>ms49C*<4f`Q&uTL#hFkB`jNEV4pexxx84Y`r^zLj`XB!z!%_xAT~|E%)K4F1jKi zDBiglRImS_tQK|TD$G^>UJuen;&J)!h2iZZ$D~-o7M!|qR~=JQ6vy-Rmh!KdUf>5D z)7UXDM3>JDV9zg$h10E0e#_)o1z*e!n3g&(Zk+YVH=)z+>976%#zN$NI>MECLc7!T z?w@a_WnFW5FE$CSdv8;`)3QX=>qzzC^UJfq!6Bxkcnhg~9}}oHkea^UFeA;Vh61rw zQpce^6Cd z>hMG52z1;JR0)j#_Q)o9GyIm@G)6qy2dPY-;t5eYfxM96w(bS|;H4F9(^1+RnlHM# z3%?vfUZQTJ<4ry_x}feC-*^ixXouFa zb|m8BvXPoXknDRFGjDo&MY=$$2R`;IhRdB8WAa965-@n<1aK?Y;@ca(j3`8NZ;^VP ztq<-b+PVORuJI_vXh*yxW2`(bsfHk5Y&h11CW^6D2bZ?fGhQ0DG2DS+FR~eRb)s9V zD`J}QEmHr`&LJOZgtxz?+cLDdB+Rh22?-7kaOGR6_phr=VHeZ}C2da$ZLf!ZEHP>S zG~Fd^azbTtMSs0F5E^ZIu$?bsEA|^{Fh?`DcWv=OQe_YL1&xnKeiR0OHm^*3wMI%- zjdd~k(su7Jh6VHQJ0@bQH*Cuj0k~X(2<-%(=_k%iFHl@@d+LO3F*>$RxS*3@H%{nH zhy`hLSG5KQF z-$C<)pWC=z^-yJ}ewfW%HE%^2qT|#U0tK@j;LKG?P^BaIeG4o!@;;pT$ z&%%*h!-%wINJHl5!E$rzTFGgY3{j=OC#EAt5kqBDspX~oI9cHWC7~_ouU%Q*LGEwf z@94`mK>}~xPpq!*&auuoM8`ZWf@mDHUhZ9wl|&X8LQ&!>Q}@BEPBT^v3b>(6 zm7aPl$u20y+2?$S`1j$QZ$((oyYV#aEp+oA+bNory3Jvv-{wj61n$8)xN z6>5>}z=uRawa4=NzB##kPi$$sJ3+T(K4iMccqM%l>oY$`iL1FRuJ3GNy*G)W%YRip z*8%eCKmocDSn4GD()sRvrFZvp|6yT1hjrGk*sS09{|olqU{0}=`?xl>(e(V%M7w98 z2Lss=nSjX&9x0Hd(-=uqW=YlqL_x-c0#oV5L>!+zX*xp!t~*3kd)WESd)Qet#fN_h z)cvOF%wOk|%jctOD?~Xt41e!@yA)&x_&L<#Tq)or z;|Z%*luWk3metz(*jyKyU(23HrW&kHqFz5cNDOp#W6}t9{Iqz|9{O*s09M4KU?w(j z?j^tK$E2-^*$fQmM)Pq7zoLyx%S9FdXC8xwj{{dz_w}1PFUDn;bqpnZ;z|~|(WEdl zS-afPG=4fbl0zrJUQQZAOr za`DjsacmbbwI?QvV9crb~ zB_I|$SS`Sf2RC~KD2&!D4oIY(y>PqYS>u5wO>}eJPieK*KZcwYZMQrh)ai`!-Xsex zaBn55$3@CI*9WDi4}ri(Mj9lu)9j=JlamI^M}2>I1a6J zP=Z-hYqbVAYmb6*9X$zdAuun;YpO}B)>?20Ec7jt+M`{)Qw6xK6?Nssrz^zIXUP5W zn4|IqeT?pK;Ij!Ae8s`kW_pgGBy+OaMXEBl!=b8gS_lr!nH^;H_LL<$bWUfQ%v zZ^tF;^+iZ8S&{pT(@Z7|^w({dwf3RR9JN~Hvj|Avx5qhzcpFrB%4MUOA74GmqwD-q z=H{K3pFBo|Wy0n72jdN(80zd<`X;-Ir^;Qd^}t+Qsw(_w2CzSJ6VZ7R1hjswXFqSv zOYHsiVwbmQz0D4-{en{U3!q=0yKNg!v8{UPzN+c8?n-Lt%4TLlbh5L*+1dKql|3J2 zl23Nfb#=oedtz@LO=Z8lt1SpD|NQ~-Eg_w&gyz|PK({J$LI3J~>@EWQE#~_>Mpg67 z`6Ycli4l0+Syenz72e!bf!K{Dj5Ea6`t&1b>lfw#U$lXCV_;#~(%JFRr0tg<+F z_Ro8ZmS6rC=rTXd<*(MG$Avzj(%Xid+a?#2)NYqWea|(tTw$G=l_!#q)Qw#bHN2tn zTVkH_tEIqp^WRv7?6*9q$Rni|NvVgqlU(%ml&HJ#9HQcZK^mPXOrO6+zFj~qS<`*S zAPTOrGB7y=woIs?+Cpe_N`yHn0bUy~zixb&Vq&WbBo=@jRzjZ$ra#C?6H9-;ln`)0 z9{YL>4ISnmVGVec1$m2GGImUuxYnUX@~@S}_xm}m!*?+%>Lg7(dn8l-#(N8N- zB7_yKs9quE3Yx^qM%a>^>rS^{$0zQNSz9e+YR=VpZgy3N?@bMXZxUV-6sI?4ySuTs za0i}r$t|9FOpGs?w&Z9#6)0HR#CYE>JuqRuc|9*sxPZxsT1Ob|fG}~bs;IBS*|834 zN1bk2T;&CRKZN@2A0 z^s0-eS>zo}O)`*NjD4$Ie6;0QN!KrTnnBs3c~@GtjWlb#m)d45-L{UitjA*hp3V9r zoFD&Lu?dklcB#KhhDVjQ%p&Oics7-Tf&}1L6K|w*bGJ4R^==S?8bp|0uX^dX&;Y?$ zONl?2^v!yB!PFR@BTd-G&vK>_bdC@V0&vVZclm|vOaeVxP$#M;WTIQsPVwKYZ$ zwvdX2X!o^Rf=&9VHsDxaznuAMLOJl<4T;m%eod5sSrl+U$16%C+cycF$$(q7>(mqN zKb{`>xUSF`03@v^NvmtD<)AE3zw+4jj^t6rJygREtJzI*?qQOQj?W|WNgyZ*Ya z^)bOCv8PBX(6gM?sX>S7t)B>C{x$SNZQWUUh+D@S`iY0&UvmUdC#F)WPyt4BeE;DJ zYr6C`NodOVd-v%1koy!`x}_!>_Oo87Ajm7tVWe%hxgK#E5fUI@B6(^Dvk*2PrTg1J z0Y%H)ClC$n*>Z@%Y(@Y}Tx8kq0WLX?x$>@$oRO>M#hyLi^?|mv%|Y)d*eQ;$=S@t| z>Xv3A;gx5r9K_v~4lydc20-yIK^=4~q$r|3F__+ZBe(F>rP__8^TjAoB-_ z{SqdeckMb*YJ4;O=4=g+wcca+mNfXj-4dNvsvt$1l`jR&b42CC7lKDKrT{2}#40 zdZ9lc7~hhT4SQqeCTl?fsk$GW3!D+IaESxsGF7#xrGW7>U3N#B%nl3?a!ynmWIw8t z@bDy+$w5-CfI8L*P)=0K>{#RRKaK1EO@Xkj!0zY&ITCD{;`q7Zp8WKFcyTLXA6yFF z{ha(q)tvLDo2ak&4$Au?SK8#~(&L??K>f=Dleike?a|NA8vQroYT7@saDC0cT>N?w zZ!5=joJRe+A?8-`koxww3NL9ZrJWZ3Ps$SBcLY{NKYup7(2j~J4jU>R3f39UD9-~; z)qdw9Mi2l;#R*i5b3XxzX-g?zXEyHMo*AQ)mmA>sU*M)>W$3*&Azol?5%3Y{Ot>em zB%AwF;p2C5vy7kTI3{_o0%z=)pfN^xC0)-R#P3(D43+UBO?^)3n!h_=XrkQ^zOzT zlOMAvhi4j8dU5>&EqGb3@Baxb8+i76i9FBCd#teSM7uf##Mi#R+rhzYT`ShVv>^Is znU1NX+0PCg)p1_nBiJU8mhvG7Bn`?vwV%n#|3;Kh`yr6ak|hI@NWMZk<)b&|87m;H zUE$%8ISVRx?mDk``d)2_gP>krvsjcR07lfxYEqbMGetHs+SMnWk9-qTa^wPCl zZc_SCWws)PYzs0JA5kgJVI{e^U9A{2${kN{Ejk`o(lQIKCtD4UQyCAFNWFYtQr%?B z6D`>iwnh!pUB`M6#OY*LrUlNqVQy%)Hi4*fgtMfO^x z7~R*NgX-v1eg@gm}i*t556tKO z!H8xrV>jzrHNhW&$jd#xw#-NdLe=KXLZ`>e*pd|~INNQ{L78!NxRsDB)z>btBn}2H zc~_E&l(p{q%}3%dLn9l9YsVkQVOq^d2f+Ryp7$EbA>GD0Tl4hepYU{<*OgRNPb*=3 zY^Ga43gTBDwj=T#W!L};Cv|E-I$170lkqK=_BFqr@eD9i8n!p>@2_U$O1W zsnHo@Xv!*bEsa~+kfxA>cCW(I>zn8^xfwyL9dzl(Z$q%?>wk~g z)1j+SJT!dJacH6m^m}#>hFBMt)Hwv^=|IpgUeoiLr0RUrmz$Ox=l<3WQq*v~5HabU z@bWm!!~C8vPU%OT3?+fQ;#b2}H z;CFoLvAB>l@zyV;SvaC%GI_o}*q!}$i&s~?1uO@&1PMhet_EH6pa&WS zsC#yjMw3OxuNpxUUdBEle^I)nU;YS64^EE8CPnhA9>_hJYIHOY<_rN;uW~Tn;u~fJFH;n8wc=bF46JM$!ng>v1L`;?fomdx%*;hKW>4t;% z9{7eR*+qhfFh3K;QFx8O$Fkm#fOB^#i?a;oBd!7@JEe#7dR9fzYU^T-$Z@B_CTN#X zj_&=l&&f8aBo{;zqAI8tNfBRaz9wp}uCJ_V?2BNk=x_|rHN_PcERp0>Omsi?dt>Rg zHux2sJ#c#dCXY!1=XgRSErKudg(3Sc*AI^($_-x^5Qz4K?+z2rgHwB(ZONw}Dh<{d*k&bO~k^CLd50^VHNc){rX z>Y*(sQ?VhPph&HZMOftXG`~FmorMClylNq5tfHJq3PUQirQcWp`e*}lJVA~QS0NQ zBCH*mD(OEhSPTnPb(jz&h0~M5U`}zRx_75If-nD=qg#NWHQ=z{zR@|vEzm^R9Bgg# zi7-Y~CDoK?R2hh?I45J{6I-<+o+_EY3IANAH*a=< z$Z!{M1&OUC?K%iK-HKjWe;n*k(=kVE7FLl>uF7slIZ2|}7MjFPhn~M$;fpkt&7%U?T+IXe{PF4*q_xv-89*CHW!9apH8qL z=b)Wh3U!%Ga%iVM!Bi~`T|UgDyjguSF~s692t^E~QdW3}Z(q_U=!Diw7JB@Ge5jNH zSw0~3sFDKhpWGoz>Z!jKJx?k%o4gUqoWcw?HqBsZ`9^WzM1qrRo}NpIwGuFI?a8SI zob3eCo6QmRmm73npCHH}lb-oqeW#ss@Psq!$5d;}*xCq6Eww6Tp5EctyerGQB)IwP zB5e;8E~iL(?!K|w>GfAsN~JaiF%+Wt4u$6Uw)*Iw37+=Y}2{m zChW9qDG)Iy-MVKaI2M=imxT0^wdNc*=O9k6G@Fk;3cqjrdiGT(30g+uc>(|zc zjNo=>x?gLV!{D`?04AA8(J8u@(Y?}h45S6l_ciB@?RcqcC+!y{DyC+t)wcfSH|=!S ze|y;Ph$S3mn57YIcf1h5vYqS-#dT)<9|)qs2d*2Wfz6u&7O6{66){C zggqwxS>WU)&EggUWcK@H4ZQKf|MPompS3B4ZQKot^B|Bnx27(9#GP1=NU&J58s2G> zxkzMr=2ej-5cRS{gxvQXjK|FXc$h+lsqb6++S&6opp}X>(+?KgSAFjyuvoW4UAQ)PHmLNc|?^NhV_;@>6!KC2o;!AccQhL`@AaG)JB@bL~RvZboc@aN!=~&;71bYUQrFv!mde#OZ z-I37j#PgVa5J|!pE#h$=FkajZ%zt?hO{pt)Pw9T%i*k|k zT*Ygyyovel+8y*Uugd=Lq#JngR7?O)NEf&QAG}c&(&mV3woAqZAEFx*xB1;7`z(@%k9o?Z!!*SPQ7e@KqjNX z1qevy3;}tw!gP;sr|cEiGFUR(kQ?nP@FM)w)h7qSRb3oySd^Y&I_TGHc*ZzsBly(v z(~p#W_pjGW?6@+ulS^LC@eDZcQT1%)rJc#o+n3}icQ?+?C6%0z!d}-OWJkAwEd^r< ze}|b{M|ES4f+rc?AV)f4&zkdmtD)P7mCMn9iJH$jyh4$@24`{$g-e1))=SpWgwC7m z{oVFxD{GsfgFgA^6MuC8P9}^A7Ia99bwgDMd-v-|GQvcKB&_6*1uilh#8&g9=Jx7% znLYVWB+kvb8B{1D_{U|oK#y%hxXP$`LjPgbuCS)JJ)4aBNb2XBhemLRQ-^D6fhS??7m zUs>Qx?li~`nb>&S)|e~#KqhvmG^AeovbIJ|QD|rubwQN@47ASQtVZ^xyyQC!jhcso0 zKpMfX5XHC$tmMN(i{e#1^OEkPMxT$4M$kpj2cxat1QG1lx|tG}cZoEPyH$zs0LJDW z!Pj|=JSmIHR8v=TJ=5*O$;55VM)YT)kp5@MJ{gE~q0qA)jgPxX#t#=FHP$x)N}|nD zJ~T14wvPLdURba7YMblyj!)^%1ppq?#ATBccLi%OM;+>BMUD~z)ccS(Z<`g%QU&Y0 zf*(01ogw)B>k~)=UreT6PmWCd`e#oeRFbGDXi;akHp>brfKUh>zr^QI$=-b}=c;;v z5mfuQT3p13G>#b)CHaf)tqzZ*=d1DxURNwN8~lHmvf#f>{w1+BQc_}^=8=1Gaa*Z) z!)$3=#m6bJW8n7iqDpo+Ym<4ruVkO8$Re5a!_H1MZJah(o8k7;z*6L+k(XL7e-uAa zCHY^&U=4VI72C|fEG+luZ8$Ua$RlS`MFyWg^ZoGGxLa@W3&r!zlrin8G=Tvk_sb`{__LGp zXo(*(RYl?aPDs%<5#=C9+Ym~j~1!|1)4yT9I@5!wXKwuWIyu6C@v8H zubZScHKGf+>hRKfFXU1I1J@rA$;bD)C}Gy8wEKS;_TexC{OCVW>O8!#T+SIi# zYB)?5*+Tb0fUjwNpBRfCyGYFR7AtL+(c9vKmd-6@Z$G~231EJ>5krN|c`2Ou`+#Zp zor0d}m5?Ync5O6Bf}U!Q!FAvx>VE^e*NlkU^vsAFgq*cG@~mpZTL1B+KHi9KUJ|}! zaj$jE5ujv@br@X@7;SFNUQ*BT?xoK_l<^_fgK&vRx*AI-s9woSoR+UA_^zs%$pZ9L zbIlz>sA46V{FLA0v$gUWrQKxdeIG{rCT0ZuW_n#Ff6h{+1~L#Pely%I%5;cp_RUeg ze_eptRn9T!y`O!T54Lrr!o2vrTN6}dHJVrbz*M}~kKlDu2bp;Wn+_qc|IJkh2d@G1 z^ftDLr9o@%tcA>vBOAMa@!?Bl1EkKF@eX2xl zyXewhGpUg5a19cSS{e7z!IS(Eu2=s&V7E*&$ePLc>n|{$gK$A6txNCANarR4%!Kjn{JJEl;F!be$zVh*h$5%Nx=W~J35_MLPoIi(Qdz-+-bazsoBt3 zvG(-vY)|p}JAG@)@ixc8F z$Gy&f!5OOhhhf}EV87U982$-)YC#e&z| zz%9JW)%MWQ-DaG81janHu26gLLA|&x%$eiTvE2CliZ)u&qf|l?(yc#il3H}7`iJgx z*uFb%)fFK;z{xwxiCyP<&K$QK?f38S#Z1KM+7L2;K5{3|J#D=Sb*Gn1ma{hPdn3Pp zl#E_rm+4-;5CELo2ph9&W|1$lw>$bdYdJ6G0{D;=x%+FSabo-AUvRlvPP?r-M%d7F z+e|;!8i$|%Cf(g`1$jsR;b+tc^2KSoo_-7u27ohPWoKIVp)>Zbe~kxkNjz5_J~cm4 zKlfxF8MZ&N1@b#P)=!4ba|yug)dt_Rgtdm_2y3r$--UF6cDke`N@X+W9@M1AUBh3L zsy5v&^s@GKFVNRriS*YRL#6$6@0nIT%jbMXYiG)|T2@*fdj7*&Gyg$#mzVHzVellQ z=SWgamzF7>-I&q+w9;$iPF&XL80WU6Z&+CB_lOYFfE6Efyvp+rq{`+Ad7X9V>k}$FNGq3JCkSL= zZWO8Xq;(8F9y_kq;R(vI|C6Rpz78{;4U*o?`@4S58;_bZn zS_b#_oR3*WC63o<0H?YEQpdouWZKx3sydOMs9^5}5*q9^LW4kAU(w5Kjs|%)5@1!m zP~9>T_3{t7hdb+S8~caO-P8Bo2s@SmL@#xV$ogAP1XIiX*@cjt5?B+13yRV zl06$kuL1didHb2OtpgI}-KaW`GuOAwy`=$7bFlS$#j~x6eL7I)0})9)L-+ya%oiLf zNgv5F@6>WPbU3fPrnOOZeTvCc_32wi$3De3FMZAr zQ}Wlb!rW~0xp?Zkk#`QJu$QiiVnAV|KX!6xxI0aG3LzHi4r`Fv72gVO@oFh<+Z3-X->i?W z`6f(`Ig8fxXk?EL)p9S{%&R zvbYDuz-^11H5pOY6E&TH9m{#C;$hlljP!{}sm}sZqgev8!5nwJp;;H5$NR}h95;im z-MnH!moN>DMxi$d%Go}DR4-IL>lD0`@fe1|1*l~HttvT=i-vIH$D^UTKscg5QQe$} zk}oHqbDeu*9q47m(1h64N-E;3oTAunzc8u*tVv=JR#>TXBr0DLNM2E3J%J*;P$+v( zSkn~#hRh#5($?A|;eZQI9)gLNBeR0!#e12Diy;*U3iTuq+yO-Y>A2p|bTC0YJnm0H zWzq$45q9cM6)(~SBY76J_-f@y!{f;U^SeTsI0sQH(xa90FP`a@UU)wQmNnWWz`HRr z3gtI1yw0yf0bqs+PdfBr~mzm4oZZE!%u@q^WW52@rF43STA3*GDc_zUb z@>ZY72R)it8|OmPPH1>FuDDQ?bZXaq#vLX($G?A?r;t3M?yR*BG(DzCDPJV~y6;x> zj3uVVQEpGc3mzX=UvMt_m9`Pt;Ah=w45$B5G@5`ps6Q+&K5xQf8#NT6fOn-X?zE;_nZ>8b6yLGOW-jktwmb1>_P@x zu?&;EG{l@^&KboM(|CrMI6l#>!78^wx;}UnX=4wE8|1E`!=gLpY1awr()Ll}JJwIk z9~|XJ#s1cPb;OW77yJ(kB3irpS}xPZ2eAz|_jxQ1LbcH_g?PrK?F|O+w_^}MPs8*p zo_O>b?c7DIqg^yP;$3-lP*Fo_+Y>&(H|9 zV}O81Fr(N4&AP9DTM>G<=x>&!E-h=OqY@i2Z&mBn$5ic9?bV1sVW{SHC5^r#?xbmU zZz>6%w99=w>!t`=a$fH`#h;knJmwSWUTETfSlE5{;hPiDloL`a2OjMpvFE(qfvwzJ z5jXn)eJAh1*~O*hg!-|20up>muK8z!e9HSYr{_+nHOJ6f%~tmbBAOJkeZ&*$NY2gB*^bqIJu-v`~r3 zy0LbKVD;iZECHAYbN6X7`{=`9&(nZM2IO(SUdGce%-U8#l5q02j@PdU4Y7!QikS4g z_v`dT3b&>pHe6z-3V*tJ*+xJb`_wob2EXwnplY7I4h^g(31aQ>T0<|Iwe%RN8+;s%n zvbYfd{vG|?fLImhc)-l-1Okm8{n-Tupo9y<#%8Dw(oCJIvgT(^w`sP=tYPlPx4Gs~ z9VejB`t}y5*$7VWs(MGl8Mh^&%lhYf5-;4f-HlbJT9Zsg)6*KIeJU5USbtV+)efq( zZMbIigN$Z9B6y20(+#Oed4CI-yZY0wb`!|3SVDQkb34bhsJYZw-Ou}Uo`(-JNm zj*F;=!N;bCg{L}B&nSJH^W-C;_ zje34asd#s6@P^{^JCmqtq(9UVM@aR^in393_0@NUxnDxv$xj|B@<5|WpMKQeL)+84 zr2Wa(8>`6WY?>2!g{bDvPC6Qk9LKbmGE#w3**DKF8v}Oq-sd!3m+fDRg1>YoHmek` zf*x%xo(+!Vb2vHw)R?W^3Y_D+3r5Fp^a9n#^=(d`B_iPh*Kz^Vo;0UXEKUy-S~b56 z^N$tI$yKf@UbIfTtvLRz;kQ%UlZ}~rnV}RbS)Qt|{Qx_0=gFPg98Wv=(Cgt9c)bWo zo0DCgxVu3MO)V`puW>0U;+78wzZbpo9xSpupR0>EAmsp+ZZH0r*$B0PbHlD6!o&qq_C zJ#>WRm;H)gn^*3EFU&a^a8;(Q!TK!h>D*s}2_qu3EtJhj#Ld+7_@QYeR{ZMh)efP7 zx50imMkQr;!RDD^SG?^z_Yh=Aq)W?PUaMpP4>7{Vu@#hueGu3P@)@ZuIc}{v-M5YW zFkvC4t-AM1Tw|0(!eOt_*H6aj>*X3v_D!$A8c1T=r5S)A6erU3DF{X-=V=kX*6nkNVe@ zNNR>P?$nOwnJWyUr=_ftd+FvyQ9xfluBqw}Tc~xbrxAm#nf%SSxAeE*t8H6>=@U@* zyu*a?=ReWC4!)NpF}c6X1|FMi6MU_NHX5|-c-e%CY`##KDr!A)tbD1-@{;*33?LQq zb8&Sx#&N;1nikO#(k72!O-@lmT4!&?PrIhawDc{u{CgI{A{Re@F_XKTlBRFd9cez{ z9(QLY#UgH|pP}e{{eR3h0$$Vnzd!WvY}F9W8z;{FDSd3>J7KX44G<>Gs-}&Zp~k7^ zvS$jU2nE}rYQXa(+&wJ(O0@S$aqW}LX4|MBEkfQ4P0e3_Mt{!6v-Xsv8|Q1^@shGo zDe}Z@{WQ-t<$o?A!LP%Kt>tZ|DDmRfO}sh?CpSvP9AunhA)#{|f?ZW2$VdnaO7ZWmrNvZ(9~XJ<;ea?Pl3TR@k_$!i!E zeKM)nSh)ASo}9kYB&fN4-VJVlXzYpiX=+CUB30F&-UyY$|8^LPPM8a_ZiU?%lHC&? z9Q(7?rYu>#z8Cf%HQ=qoqT=ZXW$8da(?d!Q`hWt!1GOpHQrEP8nD4uv3bz3Q8v$$F zt8Z*!wDBWZip%WvJ1(tJ6}BAB_fHlY#`q48EFq>$7DH`|VN+M0lX{NtS!WzTejDc^ z6yL~Srs%=$DbC5qh3NkYyN_Soys*i=Cl|xShc%+dD|f|P-7MtOr|EBvp|LgM*2=982)_E&Qy5F| z?CurJW79KgTyM+*$%WOfq8+m+gvN1LWPa7+$+F+2q5UatlmzY%UF&juKGfuCKPUwl zTHge8Xzstxi!u>17|yopcq+p+F0ansyz4O|++(e*t!Q*`pL8ej zICtMA0#=>VeI!S>Bj{dHdS~L@2U$!|R68^4Wg8Nv$!TFw>sey?D^yk6dY@F0jvfGL z>6SgkHf9`dc&@JP1LWMBzjm)S z2#yzG3flEH9LuC$YqJ&8hr=s1*bUg<8E#8JvWDgp0ox_Q*EOB1i`=c@1@Z1Z$KCf{ z>%Z6Jy88pjk;pvg{NAnFiKok1A^kimCnqJ<-C_N1*eQr6MtCABTeN4k6QI*<8|Yid zZ#*eEPP`!_9?c*7yUB4qg1#a)8O$L8ATo*@Iy&_&T*doz zWGA=gE+q)%>?{e=RpaXPdsj}b_#!VYee|_dc4%3dkgj+cHA8y(Y+->_nsKNA`zqmQ zTA$^EPOf<0u>Y{GO~Ru%rODS8CqQ({$Yw~T%U z8)O9D?lvt7zG9BNcq|?tEZCo4pPHYbJJtP&%xQgAqA-NzBc??`O`v)7n;FI*G=Z*h zxTe*JDztKZIPM3iV$Ba_T}hbN|3T(4t|{ExzV#frJWW%#O9nPSU){-aMv+(qLC^V} zt_xfHQM&@|)|<)Lf`R86q?-QWHUrJuxk5i zYB7I_47U)XllN;4E`Mo&ZN+8)zFXnmF8OHh8_P=<1OHTr!z?oIQe^WJ8-kL7pIP-2 zqdiJvn(MvHKv&EWu7JN578X9S7Nh3lL^`7_6m~-kNFK@9o3HoVc{twtxJ^58_8%4w zYcJ?@ zDhDuiSqn84`WOo#`BG)Rsgfw7NdZbmdJ^o8eEhroY^3t*294WuYA-Br*WQwU5L~#} zR|y3Ge!u0n#wdl+V#<^*tFW?H5{6#aC~(a0>u%f}~WRykiX zwp7++1Ha!lU&0H~CoZqVNFL;X&7JIf*f>%rCL#gD9y9C#DY1&ikPAS>ug%o3MMLE5*qtfWDoR2x ziT9BMvo`X5lr1$0i$YH|zNsz<4x0=kzACK>AWcVG7Z5R4bcLTd`{L|{)z!kH+%99C zQWEt!HT9U}r5SdTm;S@D5eXIiKb(dMKk7${w)2^kAYA45w-8aBO`{mdQHA z2m2AC>fZQi{2Q@kp#;Y+e=d93;j2U1%HZxd%{R!$9x>W+JHn+OGgR{vX5T)(a&9eA zd3KQmX}ov-SP#7>dU4S!^9hxHhm(Wy0HbTA*WI61_IN zmj7nDv^<`=HLaq8dR!^h(yOqpc%PL2W|@Hn$#gb9mr^07l2@-_@E&Ue=?{maLma&T z#RQq<1;wSuz>;O~IAuuu5WKXVxY}Vz>~C|=&YdJjAhM0CbKgkhAz)IYNyf{*%GeV= z`s8}w+6p#=6Ym*q$fRlhc@C!M+D>~e2-booxa+B>&x*+~J=&(X5yYe4LrFiq`7_>N zPM;d9FkcCx>#th^pwFxdMLzD6pLc>pbUL=A>zySYW9w4RQlqfGrjWU5<+ubqdCNK( zg6Q$foE&zQwUk!AXX*#AcEoBeG;PejAKjO~*t2XS5IT&HWBkmEd_4!FhZNedxn6^u z+v3DIwtwxruxkb|mKHkE-ka@JY;Ooc45B|ewzu`{QCwhSIQ5}A7LQRh>Y;?z%M95S zI?=I{+rr!RZSk!PHQ!Mev?>(|iCcwmeOGcY*rp#o*q*~JmnDHNv=eqi@`D3((07Wm znS$2|Y1(-vnI|j;guCcO{baUZbwd2?r8Khf0NzOMTt774_NetefvzvZaXG{N=(Z0& zSJPwmgkiaUd+CMzuj_XrtZ;`wp*L@=>d);v?Oed^ObDARKL^GMrnpz1pNxE8i48{=th3^SNEy?>>j;zOT-}Ph!PV1FOwmhc(kS(lLG^lOW>* zUgDESzLasvA^GEFTJy;_uWij$nu~3)qnvia(8O?4G_BCgh+p31#=qKn9UNwJRv+!y zmV%?BMb%e2-3M+UZ7H$Tk|u!P5Ig`w(rbK885rPu_qnC=D%S-Q0# zXhlr>z)8G1&A=1c(Q>9$(yq7FT|J-OntdHR7|!(B>INdj#-FSidyt%rj}-d&_kqMX zr!#-$knnvs?+KtPoj0aYKoV9Pkeatm&N;U`9&tC7l}0(mr8Qa2mzy8@;xI6|_hY%o zjU>8e?QbH-S~U`RMk!3lp`27n%o-HN$5`S9q%Vk729`@;v?RV7vec~W%Uz2!(JyDa z{y*l<@~z1S4)-7e0s?|Cy1ToP5b5q1Asu5QM+hh(-Q6M5!suS~p5!INW&nlJM^ul-<}zNad^YY&;wH>u|3{&`LA0xamvp?=_DyE35LVb` zE&-jgwV&(y)$rbA%xSR|m7cS9?Cl|uPXq2A;~_{J74H)YRs-so#0-Dz@Lk&uSJ(3fHo4MohkP6gJ><`0iI z8mIhQiyR&=k0YGmupR1gj{%rwV(`F4wN#5a6%Kd&SHE&G>4k5FX*~6kW6>#>Fr%{_ zy&0#wcE}@>RBS?R3H}IfIE5fta14Eq281do*+%W^rm7qywL~3f|r>z=%^-Sr4cP`$Ynrc63WGxcL;x@ z+79uBcNDbcVx}u;yJ7s8&eX{0SU9ewg3U=Iy(l|gep@^=Cq=EiSo~{3FBU%3uG4CM zDqh$X_Nmhfo!njD2qQW6XGim?Ix(g4s)S$6kY=7~Bx0O(-L+)BLk(;W#Yed5BIUoX zt=0xV_h|k{YH&^N9 z*rwD{k|u^Nx19q}>g;H{(u!PN+ghQVtw zuJt*qmM+SIeYSbAD|~31*L{RSI`c-w$ba@%QfENwwRY=-^CudHF{GA z)!9qgx%1EKPb)uO3ZFL&k}sR@-5xeiwZm8%j}bR~lGS1SZ-)TpOZ7wARU_Ioxz%=Q z1tMtH)!331jt8@FRZ<$HzdEfQZdgPM@y;RgLXhC+byj{1ferkx8l#{kTJHjix1^IYgaqQZ6Pvw}We46chvF|DSYgOa#RLkr9G z$y~EJ=)ZS}uYj2{kuif7uj{lTJ&*>yoY))*Ol-3m=zKqjy>+<@C!>A=4CaI}F+HET zB!Y0`#@>o;R;=P6(+;Df9ajd5Ez~qKK9s+)c1S7bV^Tjzat!dg)v1~-@2e&^4X*<& z7cdeTEO~cOvORy5nIA!}OZ@ax`PL%Vmhc~jRtR_h+T)z=q0Bxof9|9uavlQBm!@11{37c?u=?Fbr)i)T7t+zYAW-6tQtX2=I1Dj~^0AuW1~J z2{WgSsiiY4)=2%!wMp>w$kSYPmj39)O@21aPM8aXtTfFiUN$Abcw*#+}`gZbiT z2j+caMwyPXoZUu*fJHX8#&J%Py>Wv+GEb`lLqlmNf{#5>x%qtR-iK6PAVcl$Yq9q; zls64V(}GRZc%F3CO|*#t=zr`_dNt$&Fw>SQ+?&@9oh)YGyddny5>mD@$k1iSKEwww z-D6fX%|pPWibI$@N`bo4y?=(mSY8f^S0vZ<^gmSXj=>0XC}I0ZEZD^(JJ+(0G*!>U zb<8b*8b54915;C(8iTPG7lTfr5=+U(ltJ}sU(5jhH(mH9)ZJ2NqeFW|3-89ZKbI86 zAkt#V4*Yw%I3?INaY0a@Z9&GSYJ5o*>j{_L;)Gsr{(@@5%byWeCTUy+ytdZNdhsB} z)cKmw`#+47eC%m^?+(ThN1!kW2(v;yn$;nDr+QOcqo70mji9Ux&$&yi3EbGzqXtt+zY2MbrEs9I^R{h}h|4r= zl02R#=UbHQUmTzYD{GSHi+e%Rmdnck<0n)s?=Ye+tD)1jDKOrTMi{><7+&@E`=UWR zv-y4;`76w7da{SgUTfM^J$;*M`Jl&Mv!(p;58=d2x5Ez+*(MH*9YmTx%MK$qFO#KJ z$K_-tKZHm#e}T$t7+ZM#hv84B=VOeMRvu)z9qy|0?E8r*HTTk#5chjbb+IqZm9e)t zUB=a#W~>}JUL29Cq0fn<``jW^%J{f6My5(|sgw7KNrQcr1w&iBNpS@$iO6UJuq@(^ z22F}+XG!rJB5UP8?EYN6sc%{CDj-i;4GAMDw0nHvF^tslp-<+z;hozYCU_VBwZ@$_ zFYfD)LxEaeDxYR?lh6a|nOyh@VYoE|Gc5D@&*K4v0PkE>G&6 z;&w<*DMbwuer@sRgStfseJD1x-(7+xUncv zbDSMyt39={VbFOejxzg$glAHo9RscVgaRnpCEWVzeu{{Xl9}*bU)!fdQAULu^fK~k zmok6{Z~CkDOYb+89u!<5*sUQ+$v7xz$fe+yPhG4{yquy z@M3Lz!j;o7wNXFu#SXvJm`LuV;Jmd4OEo`h!^&|Tb487AWv{--D33!4PNq4WWs@H3 zqULVrA^*WNqD$tXUFNjNVx@CkMx*We8_3Xr@?9tFhIhPaBv62jNEStc7AD;L{|zN3uJeNxg!W^Iiq15z;yx1_uOts?Vc)>Fn;C=KxFQPh@V7aQj2V&eSsgOn zNXbLy*@~4YjjbLXtA>$vYHsp*Y4n!6aE$v>oy?~&3o|ucyqwG5ty1!0`T1TpPH*$A zUg#;hhXzoe&lJ#PoRC-d67f9m8%mBvo|}8PKVZOD>yRBCYh4nWt1NMA#hvy*o8*|= z)p-OY-Sq>ON&IK^b5^TzW!F2+U}9O$Gu+-Nc#u5zCgYtY)`LlQm-zZG?KbK_Z*Ah$ zngQCnB7dTvLRE8PG??&lr3=~m#gz2xAQxLpnATgR29jwxD`TF5HTcwAMpd31)Ac-| zkaP(>o`=I7uVy7w{o%XC1mMn&l7G;z>+{x2+k=iZf6_??ua%-cgvU9Kls8fagfI&( zO#PWv-itI}NwGAOrN_Ghxja#J+m@*bgBy!K%z4x@hWFf4uQ+FcR4CfCx6>%YVo#I=E$ap&#^=W^Jt-mi#+@8 z(s|HwAYj0sGca^TybRE}QUO?f@);f*{= zCWBz_Y}W4#;Pztu4e;|&67Y43{f#CM{~}l%->n4)z9yjglO^06Yb{{fXoKr)vN^j*H3hk3H#Cv^U zjfnxb_0PXeIc!@ZVq+`6zaFI=%JwG*!$1|-i^dK|-4kf{YoRjq+~18w?TZ6&`?4?% zMAM-YJ!5G;>Z4`}vd<1K%vh>#KB>`DVrGG{*5U7Jyeg~OiqDT)-<2+|MBVFEQviQ# z?6#u$Wo5qS+9ia2OTuN|iy!DR-;-f_LzA&=eFy1Y+GzlkW|?;^mJLOU%N%Gzyf1lD zNRw@?^lBGqouDt6!)(<>@{{x#RFPA~P37ERr<}@7 zsaU41#V|@s@vUruTsY~0Z)vH$s2doQ2)sV-|Aj%UP6>{gss&n8L-JR3-E>zNbrT7G zSlLfwnrkEr@>_zEF>R>%hyZzC&)$bXkLpeyvpHKFUCKy8|8*7#a}?!H^>X>gSN zzXwP8*iq{F!J~EOQ_}lGr=5Gfna@sn4tSn6p4o!+>E~vmtaXJg4cgPl0;-+E)M&Nk z=tz`yO^4?WhjP!aw|76~oh(JBg`~psRY>e)*iu_>E~>#s~D@_0-KY-71$@ ziOdEF+&}A_Q0ayGi>f-8?~qIaG2B@z5+|!}4gJV1PQ{wncFpDNpN*O4UlQTQY&^wH zG5J~7JB^KPUWVeEv+c~_1U2ZqrKTF&V!D|IPrt??;7;MJddBMSapaHAY0RrkuJ^-i zwhn=Z^$mQ+H#A5gA6f*YvA}N}z;+Go@8RJUM-Gp$ppW=lR?VOFrm>~_Hn4Aqd1jTX zghT^?>UZrE{tvs_qT&g$zXJmT88KBbW9nZHR)d4ITfD^8_dLr5_pIq7Loa0t9$-R+ zLY<~T05OLKhYN2@?msSFE5)voFe$*AUyF4!g@fSF{$W%Z#k4rV+jpjR@Qk7_UaoWW zr*s7kc+P?E6Iy#osbB29brU>)CPWJe_S?B|eJ{q;+uKK?6s6P{*qZ+zMhlgLIq~~N zt7P7;u|y&r%@hm9)|ZwqU54TTZZI^f!eP$2j;NV8QE&=Qu)@+^c$!VN{|6GE#~t{JK7sH|G; z!_&yJ= z(ud#kfnSsh9a|Wk&>(A55yd~fXuh#&(jrDXU(aYlYA;|Yyqz!nYy+_dR%Sa~OtR(1 zuyzX7tIV!mmD7&f8rhda^g2@1ezZMe{qLZFn;@Eh1nz!mfx&RKddu1>AJGe*5rY;YaYmY-J_RFwz*KwWU6Pg%_=k#__-vbMOlFn^z9Ez=?WhTdlH0JcTY;oAa|M8m~gdAV>!{{z<{*4mI?>mQCoMDX;A@+j>O`#cEbhcn9&?y_`gacgC$_XdM+&EY;sJAAQ-W+>Y%>tAa|&6SO~ zz$?os;@ZQwXMvFI2b-VW_FC`fflqh!*s3=_zu{agMwtTAFds@%59m6l&z4}D4R0a` z-rEHLP^)Y9Tz1o7+ZcVm@C~rtNM`G&PN!VpW&V?A3o@KHRhT=IF7$IMqnz9@?*o5j zJg_{re0pR=6jK3XT@oQ3_cH4>9C6?hI5GDmC`q@hAygb?3GYKSN1y!mmT^v#h!e`J z^e%B2-^rJF>N>yduvW_3@k&rR5ub#H-ww8+PJ~)MQgiH)Q24Uor=~(8QTSVMB_TnPiA0OjIbHy`7mrYHMv+x0WQ5Cf+7As(Gtej9;Rl4^OnT{2= z8;j6+J-y=TLsKx?!kI8-vQ=H)AK{BC@AB_z>OK)i72rKI zR&4ZpC)z9KEh#tKYIZrix|ZPI=qb`1Q*Km0UUvL?dz7||@&OZGO6_-iKnPk`Pg*<#h z%$4>v^k)TeeP8Aq4oi^ihe4}rl;3WMj)KKU$TApTZzJP)5^qAdD3&W^02`8K?*39( zjHY?v|3GbUK18}(cPXtXyKKA?<;jubID$%eV^Fi($w3`&pQBnsI@*54{bks?-3w#d zbp9UrCI2s&u#gt9vj-LHvD?Xvt9fU%hvZ}FW#&qmn0xy&x$w`N6BzA_4UrQUqp#Q( z3;0gX+GPoKvRS-Mp)#iCKG%Zxmq^hDyGprwSCA@!(mWMEp=);5R;p^ z#J+-qJZ+Jh8ry_w!Ih$e{RxpNR__i;T=qIX`XH`*~^6l|lwt(A+|3c9WkEvJxkeb;bmq?i0!&L!Z&BPh(bufsjj;}{Q`K2N({;P}U2W#{;_uzS-(<2eP5xHiSjw69N;=4SRaUa80}ej-di9^rkE9yusVHIXPL z%YwNg#Fkr4tQrGr|9Kkr$CKL8!M30tObP9-syKGAew@=v&L>wI@oX`crjA}>KF@o7mKV%1UHV63mnCLHQI{B> zNEVlYE4h;;~r=v{j82F%ttE^TrB%gcMGR>w7OI?_B;#`U6(IO$t= zFp1emam@vDUc}^!w&ZfJ1C-N!Umqf0Jl+jKBhHuVfZ!RBffyFKesRnc(!XyF(c}T& zB}xaRan}TZ_Cl_~GVx{6lwtxk;z73Tb3?n2{}MiyPbEWSM&oE$^Regrr0n-q{2l>z z^N^-yVbN@?3xoSP=3d*|WKB)yB|1X`H)ZG(N!2&<+73`mM?rJ=*aQM@`JKIkmK^_s z`kYd?QFSHis4M8M|^w=wpERU}v*7kfKM?7eaEEzI=M}2CGcv9_p+cgmOCN5)=MVdY) zIaZV)!+>LB&a}ZPUUJS%qoYC;1eJMxPqk}6XGG9=VkOmZydv&M65&-^8CyLL9r=7k zYLJVc%8*OPY>?7IUF1uef*-CL#?fn~pVg$qQWn%oDp!g$(gkh#MeSqU5AbMx{CD(x z`P)j+GPraos<`7$R>P22noN~fYl|+e@yf-Vhp!2i`{iCEAmE7F0ISE(_?maTMRt7^ z6vw~TG1qd9)x0n_xFXbHl%HgjCBec!GIbRJ&AB#P>{_b5w6Ffo>0r)mWob)4DXP9J zhqRikYr{_2Jmfn9`P3EA36=n9(bMhYh}HZSnG>GCFs9cjjdFxQ;s(7nef4eAFg2T! zY0G(UR9TY20j3quc6l?m=$$j6=KDrr88GaDgcF(pZ-~}ti*VV2V!DzmbH7!a5yD{L z2w$>(r$ddb3=C6<3`l?sZ5LUw@rk|#v{o;LrtV*>;dFnkMKTRx69x)l6yfzPtv?ph z3|mTjh{NMDNv`wL#{7-AmkgqxP3VP^s>$+LskgY2S+tZ%zYSooU#0N49k@Dv+#)4> zKAJB)?bn7&YeD^;d7czx^IjI^a7W{ismaKd0+=#*_ViW*3A7>*6SZq{rykT*-BBJm z{jh-WTv**xr2+`OXcQpzp=zy}s;s;H)AZZTZ;Pu3XN4+e;;VKd)gM@_3u_wrn7Z_0 zyPIEEPtzs$>uRu#`!uf<`PYIk2wwleg#>3AGRyes9pvXPH;$6`ag*cYV=ZiM2D(C} z$qaP959YE1fS2I53#e^Px?eM zxywQTQ#nTG8J?HA+4(wd3SzW<@Y&{@NY&xnv!VYmW?Zi$uchd*HW?;nMj~uz!JViC zUCw2K-PKcfDv@(q5vtBUczuSN=9oyBY za;m(JBtPLsPxV#_pSQ!s?B*j!yOFtvOGrIDHnq`m?k?Q2Zn|_BZpCVirm|{MggE%$ zK>+!+MV)0*R8up4IqA=9G-hWErlfG-@_y%qg*i=P)(+u=Xx2f- zbk1-5s`z*h?(&=#UZOFMB0a*A+8K_;`nYc0(wfSi+SqscAJ5VF@j)_2O>)#6$g`5) zY2yn~KX&hUaIE^X8hJGNxD}BOeBbegxma=ue?(4+u+{Aj8Ib8k;j4X%hB{OB|8ZcTsz zMhW!RAd-Qk6UJ|k`rS0r-x`h%Vam!8y1%k)S74PQuUI(-i03<`#{C5bydL;^s2*_g zMZ27cJ6`<@Lyc}#z%7XHXDiym9nAOM^+#NgAdulkZm|3JP0d3G_;%F0Y{b8df63`r zA_O6IH(f(E0WK*=#qY(=uGiGBWbN`4NS7E z?1UCvL3MMvJ1Ub-eC#fO24A37Zg{AH&ZW4xr1^*LFw z`pPBtJ*DxY8u0Ky>BV!#sn#q0FvV$wPlh+X%BsIyz#)ng!qHPf@~xo;(!S?cPkpIU z?kELQHMz(@a>>jA_Zedw(W)oE!IiSZuR^fjFn1h?2|o4Ikm3_hX-~gY$9-oW;qhtL zS{P)pP`lgx{mfGCNv);%2A_}fVX*16;b!eQLY{qtTcpD$c~m)eQQ2%Ur}npiCWZRk zNg-{NX*W{-6zBY{lnWQ1!xe5mnu2W!+d7sT#&l4Wpn%(diEI zD4*AP4!1VN{g-2q$qZ<l6|Mf)G7=q6v{beS`nIRSD+P1_fdY z9iIyWOes>Ilt0`g(I56vs-t&oe8?5nprwyn+8C#jk9dtcg?~MC6vMUyX0Oj}oqo&B zdM8~D$G{llcZ8gSwhMG{rBr=v%V1(_8KaJ@>D@w;UQJiiL@d$cqP?n{P zA!#IPyswUETep#X^+N|0k3vBD<^;CoNT79%R|SG5sjb`|wV*?36rvF?7vobc_OS4S zM^9uhx1Q|L&w6K79zyx>3k;2xPDP|q`MC#$oKkjLd-jtzPg@PcQ+K|W&oDIv-rYWb zvSq*|?As7y->KDqbgW2vKCj(#2L``W^bmo5Acj}>+tXi-X7N_AKnR3|VjCwit@y>& z(cOo;5(=ANw`vD3tH5ropZ}1La2eL~@=DNDQh<|E$Gv_WFtw}`G)ek#=0AP~HG>L$ zzWkEBwWJMEdev;b=8wHN_h@ZBbRuKiLKBg(^O|*;AGVWoMec+MeED3)yG=WisaH$` z+8SvqMDf1&luM^$R)bcV)PyYmd>QRO7e%#X zv9}!`I z)k(S~He2od)pI?^4R;ePVZnXLDYXeu)uTMV&aLD>1Eg@FhTUZ(n{S{9By8Hfe05KT zbAW&0tJyDX_a&O@9-$!8CZM6g&)+R^THaN)4;yGH9+vqztsLI!WeD_zb4a$*~mLQt;oy2OWYE6a9Mqh&h^9 z#Yg4F5bV1N%m>bme;jw_Li(GR>nC5Wq^kNzk=`J)pbb8vQXTwdk5W?ZLurM#e z&=V9&D0ORfqp;2y5=TEB($NOL4Z7GJ(e1>@kedJRqXh7BPz;qQ*J3^+e`QCkb;ofnPK|f#xc1&kmBslCa|Vmk##OA zSHNKj1$`mD&{auYfFbYKsU|s{s--G)6Xj2`@?`IPwp1(Qyw%^hR>J<#)H@N`)>V4x zG`!Rzd*4V&xFr!3`B}$SOLoa96!lFb?lF$;lkXux(6^XVR)+1-UIJgz_03h{C)%GN zpJCQD5enRgOW_I&u)j_)vFPi>`^P23qbk2RMk9SZfA;s|TwR zXr$3%IFB;qdXEks2pfF%F4yL+%~g+_JC?(r@#8gKj`j}d`pVMVz&S-b8}C)UqYVQDL-6^x%?Ic)A^#!b9ZULtCc(jVNLjM0k%!|Yo5gyyIqlk;xp7q z3Z7rgE(R7T9SN&()0TciI@B(u{w-Uvik8~#m`M3zu(eQ5Z%K#09;_hQr?2zKms>UW zf0?771Xkr$2GqALw=9iJhw-s2w7;A;vP8RO2Zzk$3$^9$>LUZ<>ugPB=k}N%GZ*cD zMDfn^{O!kuQK%U888T(_r}czf)k>#b%#~e)zY_l19;A|<2EXonsEEaLxzST^9~UdR&R z<~o-}T6$2?aDmy_tLY5^d1b6s^NZAjc`6;0HN*^4HK~w)tcF*|W-?7SzU+(FJ)Pf9 z>tV9#yW$tJIO$Ll_T_W-x=s>#iFW>+}K3bOrPA} zKhFPJz|oczH3k{3TYdDR@}JI*2C}`BFl0VOrxWpTzjqra!j|j z3gKj=ZagC)qV>^LhiO>)$NcoPb8IW%f8J&K zt-soa5`F?;@3GZczgZibUuEyXjht$Z9t1z(Y^FfDm>M8q$7KksqpTI5%6(QIcn zv|{h!u2JQaJS@R9&6%I>&vT#~|CplNF$h0O_zOj^CnFby`7R;w3h~X=f?m49ovn8J zB{qlaK;iYJ-I276iCUgaoX(2Oi314FG))nwAe)bW^uuLP)J^D$#BYXQFy8kx+H(8o zO1vH~g)7znFhsrmA+~^m$-eH2rl8sYuO+aE!I;WO{AV%rgxeecfTNJk7m2hgJSDz3 z1E|q))9~`>-XpUPcj0gUWV*%UX%Bw?9!yNLl>Mj~uWzZQr~LD58JG6Dy(O!hSC2jN zBlVUw*L#vNP~0gW4#&*?2AArF2{ zD?+u#UAdi>Z1xTC-;9y|N$|#jhNH;c0~SVzd_e*M`o)3Aj`sw}j4HC8`!0hoOzfVutVlauIG7rPM(|H zfj+R7L2PV-L>HlrewUjy_0vT(2QkVL(K23ZB)9JK*w-=)w{A+nS>NQ zg8kWIOT3@B8g!6V+r+<+15M^c>K;YY{Hn%{v&$SoFMM*}vEC=O1|)V$uzjBbUX~); zS_J6-yp~6Uf(1HMJH&&mDp-x9$E+?3`jdwBouA?vS>^@V8FPEV!l+gDDS-cyh7~?> zuGi*2jKdJ%bPFL}9~q*B>t@PXWQ}}%t0@66q!?8)Xe-RAcu_@AuyWfdTv!UxUfT@4~gi7#yS(y|Ja6nVTf%-(Xo zpcP9xGV2u;s{OJn`E63iJR-IfQF$fXwV#gm;gdk09lv!qZ{oWs(gfx&6S(oCUV95^ zTc9f>c{EN=!`sO@d6L6j>5q7Z4#8G5R`;Kj-8(++OuPGh5{(L^($`zElT2Qf5DGW5 zD=wuw=t($qFh<$r?={D_Y;@!Uu?q(asL$CJcv2{hjANqK=5b{g>OSe z5jT1-`z3Xwzu40Jhq3SYFb*M2h=<(xvC#6?BC`?lpQZxRHN5?X4t0}z>UMiQ+Tov7 zJ$I#kcyb)M*vLbP4X*w?PQ%1=AS|G2E89+<-mw59zv79Oo0ROSotuwAjC?8hCU{T;r8|Wd1 zBP%&ohDkMOf*N<|p*?oFjgB5(3B8&=z?c8fxy0{WF$&q|lP}xcqrY$a@d5AD$^gWs zSgrf0wALtfhx<U*<_S(FqQ#-*O4JFc ziv}g4GDpD$Qw{A1Eu973!{b4Tf?C(CGDg|PDk%%ZjGFK$uqx-A z(#lec&^;a$oz5NkO}E|ThwRjv9DKH>>govSYE6)fTx^;zlkH9FZyzk=R!xsv%9Aan zHrJ*ztuh#EQgD<2%#B~}dr=WBYjXn(#qC51j-HlfYNACJJcqo@G%i|FTIa@mS4Mj=M&)^fbKNhWOBjbK@#3b3?%KwE5c6pj#jwz|)i)@$I~duKzi zUtHeYKFnMz_TqShS&FY#g&luk=*E zhoYWL$VkwaRf?Swfui5+)EliN8rlGIT#}|%l9x=3Y0m-!0^E*GC{js$Y_aTPuf+JD zGu#i#>_2^SDVo)9I(&f*u2rGWrso>4pE`hAGy*MJBjO!CwRfV#Ct3C!jBU)b{+ax; zk;3qIKqO*FV{XfBXID)l^cKoObk}Jnt0b!+=;=}i9CPjM0v5Y1!WIswII?A$K(UpM z0XL>oIlK0sw^1G+kcue~GxWurRl-5SWy6j*jLSdu_JlQSg`rwsBf2sQL09h|@8vRs zmFI)Yph%a?$Ki+CY4H!uLcZiG{#4mKRZ#KcX1opP40am)2&L-JTbMxnhz|;!3d zVHs0p8iuYrk=tFN;;jpaTZ1*&6Sg1MG+mvLJBDEFDN6m7a>Qg=vm^UCiFyz2pJuT< zO!U1kaYEe_aUzCHg9CV*0V zwQR-k+VLw}vn8a0CTo}k=8r?pM>v)=8Bb>!%TN09F>_$ngDl(YCkv7>o5WI^5Cdi` z`La=Rg75W*mKECF9$8pORSBVN7p*FU`|qDqspSMms(kNsyYaNg0eZ3{bKX0@uF5u) zb0E1+t8%nYrdy|O0Z>1MUoB^v#~^KulM#dyggW?=gudc~5}2u<(T~uZ<;~MJ=+!ob zB?nQe)M6|2CHxp{bso!ic?fGjtEi@(M!B6R$9KS~GDjv6x3AOYnLoPH&=fsJ9XSAN zMWjGTtJidFv5-4sz<$LY{x_yO>m8n@(F5Hdozj^znr_pouO^eE6867Zz4_+AyjZ*& ziPiRs_$p?wO=NZbvH|j@^~N^tyKk2>(*30&U^%2=xmJn1!vZYxVWkzol@-67190_R z&X!>&aS*R$t)81HgOg>W8&p|2UZ4tYFbEH{s2HdT4Yt zlRUR)u?Z+v2a1k9`TM>LBCO#aSZFMYv72X?Q6m(Rf@e?C@h|p<)-gb&YP;nr3q5iW zkX`U~H16D-*1`aJt4mWB33 z1w#dwDWa<#Y~z74^vQ0KlC^1o`Oyp*x4rJ3O@8wLMaTQbUT&+3&pZ4~8ZTX=LLRsY z;@c>2eo=mxGu_-xqbfePt|2;+rT|s19>k0?o4Me&%8%#B?e=xdpnHrUnpH*(LJPkS zdUaBNyfizdi7GH)H(2f%op(v4?z=FXguqz@SaM1Exu_jbzFAo@5OuA4>}Ly{W?Jxm zJb2SA6H$;(-XTto|1~d9&+ZuY9H4b!=iaH(0~H{yiuX7*u!-`a4gXDtVs;>X^n1P}4%wdc7y^W+``PL9`X<5=ZS;izmu_p<9ZmD|pC zX_7#0pxYvtKe%a6LQjl6Q_B7(ktd4stDWt%51kdI=(^zExRARlxYDMhe*6p2FWYMy z*mMUN;yZz&*n0NfQ)-3G zd9jyKKg>Q)qM~UgzlU?SQSBnY&q0PK zok$a1;nu}hkF!D_7>9P$4o#}bq{q6JSZ@_~Ua>M7R0;~R;OnJkSK zC)EBrUi*H?kglP=72V(Jok7;NOY=exE0b{sf5I@j*9yvG_BBZ*Doi8UZW^-fn-G-b zK=u#$Q9d3>9jaDP{HDRK=0Mlms9KT9EzF^mr0y2h1V5Aq;@8g)?x4>36FY z|CYMWgr8F0W8)+bap^^_2O18G^iiWyx`ryBVE@la^o1tUNkiMiUD}Ujw^V@$)U|+N z=fYAaSc+R777ebfoXT(NvbcOywZCt=&wo(=-zPH|xZY&{I$~q+Wge;6j<|1eJW{)k-9+Jg(W&5z{mYT`R`j$0y` zS3bJaL-elHI5{$=I{7u$p#f07Sn`*7h2xK{r#t?%i%-XznO%Hie`~S=x1eAu`$HeI zPB;v1|NKW9Dmxy@`K&ArlaXFljKdMRv=;XxSSgIm^NOLW))ifjkdG0RHApu^WOr_>p4<3zNJvW^VMbG~e3=H$&jLZydf1m9c-tUI zM4r|l#JebOJCX}O4poOSQuAdjZ_}ykVr{5Sz=QZ8=hV>jC{A3aHKf*rdFzCd)L;4_ zi-XlQJat-gzrRWOse|x8s5|SnsQ##5gNRBC5|RRf$u? zV)G1RA&4pKPRD}1eV2*9)#<*;pEI^*J+UYr@ z`(pdWMGPvywsNQk&Q|p-NWcI9KP&rTEV_3!(oBsbG7!Ai(H zApg|;4u?63@%LB?8SRA2a$GIO#~G}<0 z2^U?t-5P>>^}ksBv<~(>6}Jg!D^*cwpzI872h`KHDPyU$4$0FUmk(-X?9+%GbbG8K zM=r&Ujtel{|2e9%JULJHeV&F~{rZgq#Ue6|JWFzrjF58en#;ucP(vjqxh&k~Z(dQa zT+^iS@7D>1CnMEZlg2&z#&PLJOL`<0ah>g3W#MQaoU*J$ z5VCL~*C}^7+)3()Ef^4ReRh-jN`9fo*(Xy9RYa>g2rnB-BVYJ}wL(NC6Mb!{smaUJ>Tl8VQp(pAaSg;1S__+5b z32MWwKuER#g1Y;4H4VD}os?Y$u8?u!Y9M=AYRW(&lkwd3@zs=C4R(E0lOgYRoDKE* zDAX(L{4pvIydLIy-RAtoe&|A@z@n^q!710j# z8$=JjnzTjyhbE@2bt=ue_QZdP)okugFXzYL@2sQ4^z3p5og>c_r=0e6P)*=5s>*uj$k@_pLlxDW@ z8|lmg#m9XRg!0Ve|J)h z<4u?xOudcLB;SZfEQ~egO-Y85N#fMsr5{%c=y!hbDn;d3h78)bHD&14|1yF)a|yg^ z$b1uKSMt)HdiRV!ukRqOt?v~1o#l!kzBX^X_lD9>_V_A^Nhz@abJZ^cL{KUGB?*TT zJ^o#}aE{mO9DM59>)%|I0{2W(>2cIJ-UTi=SA#Za-2~f6i4Iv9JSng~CQ&%i^YF)N z^V|BHxOON}yn1(L=J@kke(*0qfo5WC{sa6KxB?DGn0X~0w+#8k_v{|LWqXwV(Sg?%d8DC8YLSW;aa6)N$9m-! z1nkk7-EG-Zjm0Z2aI~HU=>a^;?41xx1nWrG$FL4V{QrbERf2e|5~NIv8)M3+oXd;n z(eS@)Jd@=!jMF3xqa1dR40b)be+9OqWDJ`*^0?PcRVG9Gtw)+8Ec`(crkXI=)A@!W zoKzU8zXy)!;9zd6v*v;l)JTVA^z__)iU<4&ZJJ(Bu;RCEgP{r|mJuptSXGf;DCE(%gsDe>k5_2;#)|h@?U6v^ma{H2nrTnm_O3tc?#*LgYJof z#z^;ERl@l};XR?k#&pXWw^g7D9hgp`Co?Va742K~Uh?-7qN}&X$EVBIN8RAR>0#a8 zNv#HZih`oQa64wLBco_ig7OGHfaezUl5Y}6Ay=u@OSvGz1qGmkTUe;4ieRXBCXX56a()TY()Y!Z^Xp$ zEhwCkMz*qvZM`jkMxHmYW1Q%d`H_2zDJ>-u#n%J(KRAhNVtQ9Eymm~u@T1@I^PPZH z?Xk9vDD*N)DwMxCuEqaWQbJO9@|4%n zPBqJ_SzIGVqyvyOSL)mtAN*am7x%%uE%FT>6(+jkIfE+g9t$l&k@{ zuL?jQ+yDSBAVFl$QA-Hj)GVsqc$suidf#?m0D_!DoVCAK_f@8cV^V}Hm?$bJ9f_e+ zd0Otny*`d*lt9InW?QDM{4nY^Yczj+sCHVry_r;U$VOGKV!MwE^bzS49~a}6;nUaf z{Vz}Ks`V;M!J{d+c6HL~LgMvsSr7}~uRGVrMe#2%L0q{zfkRgWA~P_hWq3`gc>r=W zQ%CqId??JfT@2~)S#Pa?u5ljd@ao&z(jv_h=_w)185IVKjfaekoQ+dvaG^{Mo##;O zWE@cw-JZti16)=+UY_5&m6>%qupI3gf_i&?SQ6d9J>v&OW+n14*v|^j9&EKCp zUWh?eW&q=>a%Q_K@+Frdc9`&tln$>V$Y+sl4r3PF%#QFY$ zeb-6g-XLJiLbD2&0`raVQkyk&1t{V`jlXp_?#mXOSjmbzUaP$#Tq(Sv#|s(0@JhAUmDw4aBPh1e-g+@rXes2 zOd#x(wpWiU7YJ(kbLvrEax}87kB}u!8#es@?Di#l0Zfp8ZIR*cX4HC|a@ncgEuCpz z$Gw*DtOYKzHdsQi>K@xA*(8A(IYjJcdS!p6>6R8s?S>e0Fu=)OYKK{^*n- z&;!ZszyJvlSI%YGzgJFoO&N>EhPy;$JXi*l0Rz&F5qriYv8FAGM+B`>4w*!?qUIIVy7Fw?AoKD33sYcYL%w;8Bds_PA%1uh3| zZ1@jG(PgCDzCV3`dS#k_)nBn@qBOHNo)DrNzIX)tYdu1z=KfZ3yY3=v?XU-YVujz~ z&rB`hDF~kltPz`L4%=RNlq0BkR-g%V7k`!(_SP|a4-Ek4nl&XE|;-=7zM2hVHP?k7=1*0dv-yQj@xVPff_d5=S zx#{fH%Y*z>-U{j*i3sZ0gNs!%1iF#_DVI*+F^()Zri9?LWaeoHGh)&PB=heNR=3BX z8oZ(i@3`JuB#*;$fBABE*C)TA2)c9O3qSi0&2b80vGVSzHD0!5(=BrFj=bB17RGsB z`(2QHH4}KMR>HAH)uLOkh~8I?&5FswvP;s4>YJU7YpZ3S!qD%Qhu|}<&#Aien{KKe zL_OF*i|=?|20B?jwXS|*>%R5AZf`47d z+YBT;r0F7A#9`O1GmOW#CUO>e?`fPQJaXs4Zz(XL1aW?Ww-8&NC71V4K9AS=!GiBldW{FlGK;F3r>)km2WvqRHECHrJ5eUs` zz@l_}Xj26dlnTYoHswd|9Jm=4UYPa#d=?W2PRXT<=lg+!Pxa=NnIF+wD|)C{)me#m z1)BY@;xdn{C@oUVCcMt5S~F71ck^`clL}?mie(2#tT@Q_8&3vDw8t?akaGC+YX^g)lkz_ke{`Hf?{q zhm8U3pGhP$h|sBO6j=-m`CfIsS=8v@3Q#I5))}&qKjAsaPDMCr)+$MnOknL8E9o?v zY5qEqc|ZOJO)t96#TY5g#{PwRIPawb4rU9i1ES8;V-yur`OV;;nd5CuN;@lh<;&~~ zl0-Yr_jGfsVhWnNXj_4=O~ol%ed;gk8(AxsQg=vpw8n(nqk^$nsJa5hg7C~gci;=t z=lP8}FX^qED%gk}0jvEBUX=4;fh<_eS`tmg__y3yn{slMgYNb2HXw>%>8m`DB8^rA z2f!})KuZhl{)pdY$MRLiuB=Kg`X zBjBvhO<4nn^u)}5=$Y})moR`QI2C)kqZMhWSDMf{DLvnLwC>K-f+T0(nKel3_A`vX zqccvS=-qrb+E*@h!9Wt6O2to8Qp(7Zyi2Edn~vj{N)$CrlkZBLT#k;SpzyhxC8=ae zoWS+-pO|6(P##onV*RqJHl2orRm{gejt6wzpKZ#swMAyx%n{j&uGePmGjkMUQ_7jE zf1ELq@nOTMQNiJmQu0h1q(hX!!lE42Msv`Id{O)y6dk{G!vDJAC*ITy+F2z3$`mN+ z#@Bw)Wyq>E_N`5!_kr>ZLuNFjM_h^cOu0S6{yBzBRIUlNAu_H`Vv4{Q=ok@8I92l2fQ}L@K&x zYtm;_KTA$YNEYF&x#@(AO{{)lD+gQR-UJ_l6SRLSHHXGLHCv>nSNRm0ia8ArpWDZL z=5{cCVT^8kqLr?W&qqTePEp-jPhJO%@2iNS8?vm;=zBLIqQnp~l+Sil!gS%ZjAwXI zH~2IID__AOI`?<)Ij_*Fec?q~pPT7RL}Nv#sU>;&=J-lH4ax~E`45eCaIVMfKeUa_ zW1u{0?B3QCVB-W(jl57~Exy&z(JIE1)hS~eHg@*`NBWT&glz(`CLp7w#=s+nUpXL) z!Mbu*kSe2f#9QqheoCht!>OOa>FKtk(-Aj*EQ~6z4maSeVy^Sg(wZ3QG@+g z-^+4+&}(`8$A0Kt_lKRY~D4HJ0$2 zv`-&=r)G;}fwDpG_J22a^e$&xFfE48`|Y~^f!p}Yfr)?DW9*Kxw`--x0!qd{C)ejN zxYO`!ekY+}GLulGXjX&OE{)Mjx+jiX%qxfvkTlk?R}#%zPhT#A{7iu?%b>=Kr%Vuy-gEG&`d zgrY~Ssux`6MoBcIV$e2`8eRe$1MX?OQKV&N3KkQ}4G@X#sLv;kSGhs|F#DJp(|xlt z5B56tN3sR3nbcf3y=5QcvK7YDHaF&A?+;>KnwvARS*ipuz79<-#jo@eI__{Om-y|} zl@PIIE5Fhnuog6QcM*_c+YZ{;+~5$vX;4lyWdV#}TN2^8ZFmk0Yk!pjYDqB68ne~s zwR_4Ibors9PZIa%?&rN$`r_(to2*+A;d0kR;B~u(0-xVnAo)q`THkaXl*0KcdhS~3(dNpN^%a# z6t(Sy!Z@ge1Uo0{+}1E4^v!k_iU~CDEC3~ufVzfZH6aC={_l2SR#{FjkNp*=^BjIN zD}X6U_o?@1Xv_f^9o^lhRbupyJnNOMd%Pdj;VYc}o)Nu_@#0hp%kc@&KDEGLt0nu? z3&{3JMg};H=ZnCOvL~VM=4iA3pGKFKiitm)MJ@*(M2h6%XJJP;HB!?8n^Syqe*(=W za>=~&js*}On15actevt>=9&9Od<(qB3GmLaMh2ix1>D;o{8#wbJTp%}+2UDk97W=# z{NfvL0^C-7131O^*oiEw8AloZr2M<=@Eu~rsWGgG^Y4h^G1Mz_yra~agVDX$%%sCe z7d%urk=$=Eeyc)Bol~%ytXCWph}F!~L^#A|*v7+b5t=eL+AK@8mnWBX-+sS7jfJnMql6kHRa5ks^{h>r{`SFFn}GF-X{O8R zFqcm&R+7mB{!Xu?i~`&11%P0y^(?5D{Hvp=!foxGUFSAe0 zbP1j$KAQEMCg#M?kbd>;wVaIn{4YnOdrGg|zeTj^JjkT!c*D$xayqY-dZ;LV@q)44 z+Of&RL?s&9?j)z2yg@tqBp`jku42)~!Bkj==@x>?G{N;BT7Ppw`L}hEo(tS4R@R-h zdMx+-ls^4;nrn(oywi=L?TDvjLF zOQ`R^Jx6ajTCaD(AS6f5ePc7B+RRXLyXEFOGL_MUzGkl{&k&A8XL%>T=D(P6)jY6vetj~11*!B%*tx}*p28je(iO`GcSFU`RzI|fsPcnOta zpT0-`GfZ!YxPCRd73i0V5DbF@qm6fte%{(vt^4^Q+|s74Jf@ZKW&XxIcx(5rOr1Cz zpI!Hx2d%~-X+7TO2^F`C>tfr!ol&AmjBcU?+7)~(P^`LDSoB}t{l076D5zr6p4#B& zHf7T3=0Vg(78W7I0lBPfyyIE9b4p8me`{xBLd&(uXoK7#{^FE)X+%moK3x$kMjBmeSM-Eh|dLujp`b#%*XrQmg;uZgCvnwBQ&f@R&7s zLDWIpNS!}KeS-3R?<|i0+G?CxDUe5z*?FKdc*>s>(P=KdEZXnRA^678Gn&ny-80+f z)_O9tKMsv6xEi0xSF&W;eDjVah!g|f$M`M*0Kj+44D2;v+jpWsXUMSZDOx@N0U?m*3sfB|I*o&E;sTaL1r{1gSI z$J2bsbG@bfVY&k^tsK&art26E0>1fWf2#L_%h_{G$A1VYwq~&#kQ>wPLFSN>_QaJEYOK(A*#;DPqiB@QG@XqYcH+ys-{>Ae{yN`EL z+hx%bM-` zy>i0-8UBOg_6O(Gb9o2*_g+PNTEL+7Ez;!JxeOC!FaMCB8-Gsg5dOy7g2hO%wxJO= zl|t$ar0wKYtXB4c#`f_tm38EfFGtZG(%%1z6wH5%0S`v=b|~rF2S;~(>j@XU$x5JQ z$L~p@3XM()?LcdOcT#ev&_@j|&BZvTlz|8xlCl>Bk!31`v-Lg;KTc9sxal192lwl7 z#Xp6q{lhUVD8A#*K;cf)b>1RSHKJdglrnPLtvgMMQo;J4&fgiOyx63^>mN^*v{2>C z%mpzr=;aQ=bKjr;LFn5%cnLrqBJ?ufc#=^iEu0Yn>%LL=ew6kzi$xk+YLgXa$zdBsjaD<89_6*ha=zN$`SB zt8>IAg{^rt8rI-0Hs;UqKByShNcq2c^;YKvU?wO1E?p;oNhq!9`t=p#NTM-_#$qoL z7@tGL*uLO>6soE(!GDoKhqa0iun=jdslb(^v`k$0WIA$2Xcr^rqmV; z)5515ow3L|#}!SL?#)H%_IO=ABS$4ZR=mbHWf(C4y9DzB=-TrC=ujk?3(v}R{K#q> zS!dF$bTdNUN%I7~%X!6xG<4^PXN-%lH01s?-U?;0SgHl6vN!azsdA_O3KR5kYV$t4hmi6s95%q(*8ypAf<>mXQ-9N62{zLrKjwh>!;QP~0clQ@4lrY~)*z zlC!;he9FK$@{ksp^YTY!l6v;;oX*fNkUxfJ>$UyWEPwbQ+f4osGAPPJ4elhLh9|IHC z-C<1R)0J?W^lfW77ktY_;Q%uq%AD7KP2X@zhpn%xdwEa~eLk7mEDsxrMPi&6d3E`_ zE1uH;_a@fTlA=UDT_C-VT=ag}kh4!vS(Z+BzTZEds3nu}<$R!wKtC1{}AJ&Xhm)(&8ep~Q_ko$K#<7sw9Jm)vprHJ}&`5l!eu82-L z%X%m$Nup~q5wD+qogj-hhE?FZvV>s_RSuVM{4d_PT)*l-r~+7ALUJP zUE1UgCu@g(zld{2UAg7Y%{O>QugdLObY_VhhffRKHL+#H9vAJvzkGI11-xa~7p`jr zD^K#BrXVzx*7sS7J_kIFJJmYf(|m+Gl(SSt<~ohHv5OZZZYT>|COf6Kr6s%$&$V08 zn|@-1gU-nb|L848_Jz;abNqH5w^1_rDcIhe{4$!$AcJ0dg7-t^GQL21L%EO?0oO;Z z0!At>1*+sZ=0V9QYS zEkEyj!CU7jnj{`=eT=lVJq}}HvXb%0ujVdQ{M6O9Iqu4)N`{-^n-4)=?&?g zLh!;-PIx3pwbY3S7*AB(XMlB}sm>xYMX4j`?WH|(h=nSABSfuBUz}@|^`b%bGIrxY zAQ;H@W`K&tSe||9?DwpXro*XT^~53fl350f8v+WXjVkoyJ!p7AMXggOOyY>wM!Xin zqCY8K07;ri*$wB{^tV@he{q^pcPIL+af`u9Qg)5zJg-QWypSV~( z;+5Gz45mC|*xuX6va`H&xk_QM%rGtVxSlVAgEuXpA4==Vyo+rnTkb<5Eb*G!=;pN@ z{7k>4RZ}%J4=B0K!H}*90f?-(YUR6$vTjcWbe=%0>&tc2n~y6Z_Y*Etn|33iFIh8; zX~5VjhK+mV_~~d2d^ZW#%_yN%zd{S0RVDQr9ko1Xq@64) zP)(%&lx~18fMjYMK=-5c&6dJb8MWb(sO}git?}+ko{k;is{rrJ((S|<9}*(nsnCo% zqM0p8P5NGU-Gc^a}$djdwJquSr1DK#A~NP)#F2S3B|Z`4>@J(XBa80k!@7Pi&I_+*ktB}_7Y zJgTQ?R~g$*`qX9^cMT8s&v?k@HHd3RTb0wk%mb7Ki=hdO*vTlN2m_|Ssw@;83a*$7 zCGF9{!b6_Xbr{I=hVw7JM~`DuFsAX35kbZ6WMWlXiVq7~Q55(zub&a{W4#hkj<(cR zY)tIbRHq+|Vga9ZW|>J^7j?d87uov-yg}2xuqR6#1=fzBD+ShDqU~;LsvkN2ht_59 zR$8K}KUXI5IV0rGCm?`d;j(~7w=tm$V%^J1MQ0ZK z7R80GbI)dUGSorY85I2YQE41MWE&CB$vvv9bM^l&mHaXltx-LSr6?YhX&hiHZHs26VMU*i*f$)_iJaup9 zT2iG_e(12!GW|G>+mJhcubiOo)Zzt8^@TQd7k(EQC;_5u6nzhJl9o(J7PXSmvC5f? zp-#X2Y22|bX{p270ddZ^cw`?CwRov~L1CBl^!q+W68}(nj9Aj=6ikR)t0ZbHMqoDD z30nK_zw{hiSBONi=I%}j6>>r4!1c-DcBL?ujPcfyB+@JMB>Q%GeCWtOTfivK+l&%? z;_D)e`uXd5=gb-L{hd0We`eJX&g{GRl+qU{392lP_d&dZ%x$Ibu=dcROp_0r=5a%X z^R<##CHKE`mL=hNI{h7D6ZPKW9zQiwSN53P)ZCP}!<5FT@y~Ss!87t+Z^sh)(}FF* zzN1_#-?7BaR7riVO~+S(FI{&bMSMD#%1%glC-~wjM|cO8 zmTf2MKygg=ar8oKIVk7F=P^JJ#<8+q__z(xM}Tz2O`<~bTu2SE6rLp7X`yuM$X!+< z$)nz=_!CJnt{49k(P4|)B`@xmPd&h^D6nQ@4oiCUU0&FrrP%T+q{_OQD!(OJLp9KE zxEFEC%&-*3NZ0B~Y^t5Vbk9#Rqi_DSjf7n&k3!-%OgY_#zV%LGFvc-{=NhBY(uuxa zF&Q1s_Z$#X)e2_j$MeL=5sD|kVzY%IciJf;-Zl8xh<@%Og3jf08eB707-Io+x#t1P z#ymMSF<8V#%mfq#7DSf0QH)vj!rCQj@~rMyfuoX&EL6k|I=R6L>ZQ4DH(K`4BRtO+ zl6yJq_RzMd@)9f!Vr*B&L3f5H1x4Ci^rIz`d7N*Thq_5(sa%5N3_cNhg`JPE&R%>A z$`3Tky|#P45mlyEx&Sgz=q{!cq~Rj2@lgrF@FF)vQ`HW%%+c~8;(`RPN8;%L=x7{J ziYd?E*j<1+nQsC5zs7G|qaT19oSh+dNM0cCQav9>8b|XOrY-IQW_y-ufk@7q?hsS zfF4dX=*j6^Ae}8UflhKt18UOY+TIWl{&)VD{)t9>;18#dfGbDhzOF25gUHuuf=vjv zc21Q>&^qj7@&s5(KYrokwLRGnr|7E_g@A!y{QhtVd~jy>y%QsmZeWardbkEcRr*cOOViZA9>vVLOS{CW^m` ztHFMP^{Q=Sbtik`yr&Dt){s?4~pvc0A5VDcf? z%?qRbyDg@?K1`PJR{68P!a=9OG-$)wIO_iXjZc%S_5aSNZl0}&?~sWkoq9;m32E+# zJnPI(|@ zvf66l9EPNDs(sU&k_Dk!Jy2r3lx1b5&3U9c^pIy^NTqOlFW462JeGu)xi=GB-a5vQ z^|k4FH1A40RR`6BY8zwS+IS>r6-BP{xU+A5l!Ej6AWRpU6M$Pm&gV3;tyP`IB3fmp z)V&CSoHL4k|2C0@qoYp&`hG0&#o>%H%>4pa$?!2NV0md6cCKs5=ha#lcjWcq2XcrI zdqG3CDWltYQLF#tnVH*oLQ#+a?9@6d_drJ%y0B&vj3zi2&h7CxIc82TgrwhqPZ ze~)mww2yVPW!>tdVHiP zUtUEwi*GWs;S3R{$mEgam-&UX_R~UUiNDEq8fl;@kc`pW%f+{RX_rGO zj=i#u(kQbW5Kvnhd|13C|J^u9>$TtGD>^FYA3hGTa07wIVH)04j^{L~63N)CQ6KS% z;?WEdnx^a3ABsV%fr%e9O7Mq>3|mi{vR};shp)T5*4donE$~)u3k_1V`wQI@Ul*__ z>7Z#R0%QUx(o?TLgeMYSw8TH9i|IA>x94oQLIxcxDc6Mcbax;4cNU(!7Hxd;`4|_! zXDrzmD`YmTYU1M;agJ@*7TMLT zvg@8B7gcbe^+^yrdwcDi}@zR&OU54C>Ot z$1|04t@MymsN3)jh3|%&x``&^C`#Ej7>!ES`bnXuKSsL#xOg?fOBl>qS&(L8j3#ZU zKOb3Ahex|#-e$3;qjxi}Px;5|Ha_Cg2+>n^!p?!VfFZp@dnI&jcxe8lk&tnRF3|5& zxZe+MRK{g{B@GF~B+WDFJ0GyeHFai_q3`2Rh;z4?$ugmu{`F!J^{y&#xmx=6AiD}N zJYHXxDlx1`RWrv$t`}!c8p+f+7kp~lXNmqzfxfs+2>Z2eUs-M{WFo!r{03~j>Hbv6 zAOG3MbmPp6g$&$SrsTOG<@v`Og&9~)^p2n#n=dXpHM|NwIF&1v6ucxbyRi9c1Vtm0 z#WO*5XQ#3AdB?vShxM>B$Nk+!^*)!3vX51Q!-(5~cGsDAbKCvK7Z8$t2x+}>9u3y* zp&B50?@8Mv;hNkENWY0q!gPFH1&_I_z4#=?o}=-a7ol$1Yy+OGSTC=DPtmaM$Y0OJ zIn5YaBGV~Tq}dy4SP0xAUNX#NCd;#d1X6ay*tTo+AaYCh!BrY}X$rd%s#JQw)wn6d zxtwtqdVV#oF;(K*3G0YTl;8%NROxH+a@IE`{JO+NAM`4{vH@@$n3U-Zq4cp)B1H_^wTDkE>cGhY7 zL$J{PU}#ao=Ej+PZJ_w&kP2zB+Tm6Q1n8;$3*kWWGQJZUs^Is5?U$IH-n?YctY4}g zs)7;PP+aD(MPbV($v8}DTcc4zi>8hzwbp&cVP2n^mV8ig4x~yUci8>O*7UcxbKfhk zBrfPlP8&jHv?VeF!Vi{Y0YW2$?1L4y>REm{(fb>6SaDcQ`f6Y%xbV`a3;#HVa;Z*( zF3(yK9hNIb9%IpZ2#8LhUcRRc28r_($iYzcg$}llA6pedlQw0RPfr?En%iwnp}fJW z>Y#Ew>D+Gv|3KPhm9}#*%ZRl!R0!)SQD6@HoH9wy=P-nPIl_E+>qyQ|wL!54fWJX~ zy9VbTwBbJJItsc@9LCU9&_fTE>O#^jy@Z9rLH!NDqNJ2zKQ4&7pBBU40xUR18!MT2-@4k*PsK5Zo ze)0~bCS#7bdCi+3j+QK_FDJLFbmksowI(}U&ss^VuzW6IHOPhKs@bQg+vVXiidrlw=|hwep`^O}S7PJ4ukWY5 zmiBEn#gq;+k#&t6UMtP>Zs~2L;~tAllN(@_cDl$#>IgaK@2h5V#k3kH>jwv`utV84 zz8<-j;IkuwuOwg~mSx^l<0brsEZTQFH@`g3cuO+z`7izxOm5CO9CjaE+$b^QT0_KWfGE78{Ykg$HdBiH&|~g};~|YNdLk_|bjSzH!T)0t z??w8ft9lx)&E~WUNIvV^?LO2zSvceds!4_Eqph{Hc^CQBIFMDqY+dxR@(9Sbv{Ss4 zva@ERnBY8W<<=^A=9T_OMnUx_cLsUYN#H8?PLvf3F1vQJcyYSx?(vrO)r)eMP^P|< z(@$Mrq-x*RZSW9h^g6}S7*}0ej@!#QusBSgx8p#zZp2kO=0dfIi9*!S3JlmYh9|_) zgo4ryaouff)GSP#+anbrUB2V#BsF3N*Jh6XUI%(P)3QbsNvs;V(|qZ~vr0z9>G$b{ zB6$t*-BBcAyp(wmenTR_9Ktn%%UE?g=LQ460k$np4VIe0-enn3OfKWQj%q4&O-&nM z>erpRlTNNFNr^hJPem_p7S|%QPs5io@R1E8r-cshYo@}f=mtrbGq|@JMqa3-F7=v4V`=B%HrF`D`FdZ#l3O?&#~sHU0RD~k`3pXkCnrp~{*h4qVd-l$yK)tu#GU^6 zhvH|jM2ueklK zukje#*Pa)W_x6%B1y(19bJKrLTE(^(kX9N{QkGt$L}-Y~Nvd zQ!7MYEe7pM6@CAEO{M;>clOL1;Tmc-V4))t!RiUeGHW?eP!Q88zrhTDCq105zq4d+ zOA#rl^{K{lz35$x!Dwbhf^{G3MOeR?-Y--^`rdf=RAM^mDYC@rbviV!H98mem+{~} zd}6+w#s73xWN8N7zrJ~~KSAt$G9zqpAzsx^sV%%v-YUl8NW!At!ghA~Dn?{g#-dXr zlsCp@p-t~b)NGM}hgv_>SbgrZ;uiAu8~t=ZrU|$^g>c*izM4WeP(oJ)rEPJTvS*PH z(!jH~@`!SIHD_>gV;uMl!m(&u-*+ywedg=%_~a=@?Bk*m`tkKxNdHyVzbX1aJ5cWu z*fAc>Jw~2^_0z?^C4!6OcPvyLPi9lbHrr${T*i`2vhlcT7qRX<%r~YQXpWgJ;L=XB zCn}YH{k`p7nVZkJ?9abj)IS#E2bpg;%$iC$1o zyjSi8x|nWzD;!SaaA}=ahl<>&QvFSxV{m0GMKt49FjsS$$e9K1@)(Ff%AMQ7Ou(`K|zVgj+ zH3D8_wbvyP6rL+5ntYV(wc-X%t$`ELg;}a+zTH-Fh%_?q!yYTjLc#N4UrvtuFb*a-)}S!!LEXTjF2i>g9Q| z)zf(*PF@Djbq@wg-zRmS{(AgOQ{XIY*=loL1@1o|Sa-rzJz0J7+D74@Y>~#H#);QP zo{}gzhTNh3jWKX%H&pKMdVsf}pqQ8L#zuA%3Ua|ccca?Ynwh-I>aE|oz8B?^iBsXL zIu{_Zupjx7-(#f1$-IrQ2Mc-l8kfq}b{(}h3%q;%^%@76 zFLjE<4O|Zi=-ogGvj02vAGdDzZ;=r+SX%K0PN|A}*`%7g(Q~t^=Dt(F<=Pt+o8U1? zrab@5xR6XKZMh=Dkx+~afxHN|#N?@@@TwPGp!D$a&kLW=sdOK~pTop+ze|98juS%N z9+`Q4u!O&}=Qd8zG@dHqazhPunl`ieGB^jFzI)qtsBv}X!D@?8bZ1M6+>It^+q2th zbu`kab2=8TzVR3}t1-j+F7h`PFJ+@?yBCi)>Dz;L;sB3;`}+6Ejn1JI3d~ais~blY zKezb<@OSQZs1<6ssU@E?8w6V_6Vb0bYh1s{5*5o+I^e-* zq_Kw2`0kQxTGuJObw$b(Lv!uOWGKr7;rNSX(VJ`&8ZB6|s{W*AD9Qlua{`~Qd6ai; zgzn0pzO)F_?4b4^m%+^ls6L~DKTWG44+FosZ_MTSX#>`!naq?Oxo5^ppnu}eCv})r zIQ5NGmxSWWqb#7!gqye>Hx$mnSf-P!lM;b8mP0~2{=}S19&p$CYYV-e`n#idcf*Kw z!PxDEOEQ(C4Bp>0wLHh|sTCxZRkn~8$xn<}p+#MB3_Y)EgY|x+n zZ#kD8+ToaG@VtiM2(Es5cavhLo+??E|In)aZ<)T(9>p{mSm(eeIyR|4*2gD4O$7*R za9sDK_M(f>>kks5KngZ{H;jX9)pYW)nLflJ1M}On#Lq+e1>ofCzIYFZv&?9w?~}V4 z>GS7Du~v|^;PLNVQo7oU{yFmXn^RacEDVp4(P_TGSEqKqE^imO!jofTm*Q@ZHJUX7 zb!SO!5PRkCO?kp8N(9(MwCrWI0Iol_d=e?>4ejGHE`mIJsCV1DNLL|Jrjds(+0C&w z5)^EAL+cuqL_v-Z+G7OYjHM5paf^JzMZZM2{4I-X{sU{zU3SV;Q2Ro3aVgh+fdu5k z8XaTzL#aYse0LY56B+L?Dzh;GL%9yjlKgaH-}(nm6HN@V8H!&v=brluoIOR}k1Y6l z0luCWJO-^#aP33gtY2(qBpxx_Ce+pD{||F#!4+i}uxlC-0coVWyIVoJI|q=I8JM9< zLPWZI=uYXH8A?=2x^regT3Qf?65o$+t+UoSKjHj{=h=JR`@XM>R7!_J!0@A0iMlrk zS-BwSco(avkhAI5PF%9n?~Op)62q+QboScU(>N2mrWc589xF7_pSoCQpZY8%HE14^ z$eLS+ts3X`bhhwU(}2?rOjS>M6|&keyP72H73POvUxZl{lBC?j_UCQ3CO+k$MZWt8 z!nqo?g!I`hNTW>k;5p4^nnxlyM892hBRkp{VuxbSSLG|d=g4!Gn2+W#2XsFPLE;~@ z&_?Zwze^u?PZZ?U8{&Z{ln+iN;mnf&)5NX>g2b)t2lUcB8M2+agy*#;Wj}5-idBP~ zH(bde(u;w^g{N*|3#zC;ZO4TaVhl_Dcfwl)=538`xG9=>J3`Rs_0;CdB!B_5Fl5_P zB&@(A-lvW^(R(*H5K0b}+a%-iA%&3fq{^o#X-}V8`sGb;*%>|G4I$YPXpSr6XW+`qC=<3*A$x&_9vn7UP*Pp8Z`H(;Z=;x-`T7 z@i5E$-LXEPgpV^DM)#3ba;T{F`!gjvmkQ5ju0%1es}b$tFx+7WEm_NMX#lM&?Ao_6 zgZpbqL+rERKjLRH2|zvCc8_fH(U2S&`d3GC*m1lSJxwB9-zZE>0^)@xT>PYfB-`Fg z_R|0wyR&l%hFSw2R$q{>$SxwM#MWxKz?R}|=XdD_GwKSnvuKTX`~i7-xNP9E&ZG_;bM`FnS7`ct#vy8P@yOOA=ix(QS7*Vjm#|6MQmnlfcCa zmFKtFuRO9P{$RCw!}+3X)ZCDQm!Y~p&RnkUX@y551ese zkbHJ~87Cy*(7fY(k z7V}-h*gJ(=9;F-3UUyyRr3u`@^J9jK&r)O!rM$ac+dp#FN>2+F?0-VIm3i(@%GAwc z_9u-n->t)eX5P)EZKvKtx`GlMq1L*?4ZzGpzb8`sht)b}Wog6(K!xb-Y| zk}4gE&FhTb;4`eZV&1~%YF1nF24@CAr`hWI&8T{zKikdv=%)cSyRC8b{I0Id3t>M> zyBjGXbH+lCk4ejbr_%X8=N3f@Z<}s<#CyfWV@v`&lXm|u-BP?zHyxC z2aK6GKkE7ryg9Au>G=Gh#HBfjA0@zN0a!9vHhxs2C0y2-Mk8Gpk$}Gez9S{VLl?jF zk9xu3Bb#o6O)Gi99L8I1;-gs(Rs*v2iK(0GUN&4BabOT?sJq^_sT_>3(ca@yqkduQ zacwoRYuovk^}bn(dMAazdhU&3*JuEFrX4pROrPq-W&J4ZbMyl&G~~jw)JOFAT@ej3 zW#rxipkWsx(s}CIZjwEw!{F6;$cg78kHj3`2n*+p{CIeMWYfI!<|mt9emvI7BAlb? z7I>_Uz&pt}sO;fTki#IuNyg)QU4948spq)*6@OTWt8mCFq>$rk;=$;JgtjuuBY3YWLnBrx`MaZ)xO z=h@s`4m%~F7F2RUrzss`BF*{}zawp&D~QPpePpmE>Jwqhs9<2H9S6W7LBB8Rce93x zdx=?PF_#;V9ylHDB3|$g9LT zIles?fVGmZ<+mouUGQD(g}1wuz>D+Ck@8m*^|H~+RbsmrH!bWxx^y0Cg~@BAgv>^K z*7*$iHFh33Z2Fm$6VrxWp9oNo7PX+dhosf!f_*{|BJAJZ4aE@;F}Vpp(5 zL)bf^X3bC&Co3SBTGT?zXOWt_a;5TwILrXZD28w6xiyj^#B+6Osh~__mw8usC`Fy% zhwJeB06nx3fc~IyrslxVBi=x1fzwCqNHx1c_g3a&maxPB9=f`b8;b*~W2NXZt zB-n;?IDdgxIQ)3>sc(nOj>_riaCqD5uCuBvXFvIzC<{JIA~6w>@m=bb?aZaRt56GB z`8*$WwAD{tEqOc#P_ zbW!jSMc@2_+baL*Zv4`}n-T+Re%cV$M!fW`x<4f3e0p&&p29oJY|YZMm1VDXBCBF} z$=qibMpNUP?_#lb<9%zLH8xLcQ-`^BEhUP_ALrxNRwF~{2I+ZYBhm?1?7^$e zS7J$fj}cYnL#^npB)Qf2j+zH|oq*F^%NomDin01tK^jZk4-WHZIo;pI9mi}?s&ySk zpeI+41HOK<&ETL0e$+P=lTZAnKexWz$ujfAUwQEUD2SYq^j}>6T8_yyf2H)v=juW^ zC8UnpeIDV`P|;ZnaIb#)co^VQNm(g#@zv62eBz`Nv2izTT5q1{g>T6I%-P?>SS+dSc7mo5&!tq*Jo=y)d1Vxuxe)?8Ip_%-Y{Xmb9dzO>0!5STRopD0jqlv~voqmJ_ z9yr4-y9NKlVjQ(p5N-8h-goY1-dGog$EQlrb0O)|;LBqYiA_P$)sku>JqCPuzkO#9 zBA=OUse=b>_CtMTxEC@ZF*A~1d^{r7*Ud9fUcqNlj=WCHQZ#0R>_VTZqEmAmWz?vn z=Ky7qQhFB&r+rXY!}?IXR5;>yff%u8uN-0-@b4?|y9=LKh7UVuXZcl6UXc66Y|d+w zOx{|6s>vaH5u+kuDx%gHtUAAU1!e&J?48kr2=}$QL>Irs`wt6Ky);xzG6Hyf`e6bO zM3@&aOaA)fk$*&i6eX9h`Izn^gK~9dT4Tw^nR9rEi_Cua=endHwbHeO4w5_&D09j1?Bm)U%fT!)C00ueKR+L;sj@X zsY_)}V{!~2CkRA5d!1mnvM2pxMj~jt>Sg+9g<8w9

4Qn&aH+7WyKwm^hDdNi%Fd|0V(!+nQ0VY7VFXF=UcpZhP%AQHv|>kL zAzmz0*O;7IcqXzdzz7EX(gPJRqa5;QGf*TizriDkhu zem!;AjepJ7_rkTRTrh;j1$RO!Kc#$>mXS?YHRlPv_pRi`vMqS*O%3SpLT<6awRsZz z8R;mnt-aT7+bF_8YIwwfU)*BhV~OMw!N{C^64;iO(bHeIiUG!O)+h~XD+#-)id>f$ zq{O8g$Krhr@7ix6;_LYx5?t!WgZ+WVLMz1JA>g8K`Olx0964IG;yLylw$m%&VAwb2 zBU)o;7O0Z;;>W4^{jN27X1LDi@5-nWS1km_QMzKH$84h*Af@&4F4PYs6$oud>Ya{DJi@0R4M~W>;dtEH)bnKI*MLTXPwE(f65~VqUWU z3#Cdb-U{{7ok)4leG|OH@v>+72(!I*k^i^OK_s2|z}@O9*HHJJ3^ z4fa4?__!i_+u2DwF(@nCM!H|L5hDee`YVTtA;Ptwnz_A`A?+ zjdTJ}5@(kyBRV8UNdqnn|va z&k)v$SLm5#na!w~4b-*N<|h(ICY`EW?iEPu81?{W4J#@s(TUfdt33(xAmoV%ByWcN zaw}H{ON{3=BQI7{@H5j(gDtekFG_Y{5_oQCgn8ntz|FVoNh3OafdW$wIoyHzp(z== z-BQEWctMq)aO(wxxS+38vyu8$TT_l~a4+Z%2fy=&7OrM5g@@tcpB zcT)V$26q*LiY^OS3mnJ`@l1O|Bb3O^t21G(WIf8dWUK zS=utbs%MWaBb6MQ^{ZH}3>^~z;+V#{GkSk%tX-%12JqEeQP@zJ-dz<{^bjBqobhnd zN$~62FU$|>?4sW)v~JV&)L={i#d&n7S<3*2Ep8x>^{_a)R5`Dy{`EmxD4v`4g}kk$ zBS4%mH3U0WkpSK1FEnyBlT@O@)OvrQ1)&R_mb_co=sY)cm%Sp}@OUSU#2tn6K)j%c zmql}S-&OcbkqIt&h5-grH{Ybgnr^xWRpBESHp2%`f{= z^w@RyT{uxyCfP%89@DKJjnS?vaHCfTI@x!OZhj?B^kY@-B9ky4xvJPHoj_c#WoU4|Y2!JONEd3W>ts)4*RQyP0rhYroUeHkBs|P{%Bd&u1PA z#}=$MRYdv0Q83zJ4v4LtK6_P<_~Q~b5`z&o|9n~swVUCT5ZC3i3TtJYx1rbfPzBng z;&NSiuNc@kJqlYFmF_7^)BV*}#YWbX!X|e+aUmic1AGT^3BqiaKzSI3`qUWetMZ$yE+pqCzQ$Ojj-d!%=ep{V;S?tmxf{tNkS9NQtjWWv zqu}m8tgqfT4`_11EA!G)K8G@NX{{9C`aZ^ioh#(Oc1Sh5MUMr`uwcxjT>h_&ew1Qq zOKyzGjRi>`B}Wa$PIjtxBFkRCW2mltpSycFGn9z% z>|jHB1L7t%+~9+3!hSH z^Zgn^Wb1n$SX9Oc=#ag-w=fG@Zc1r%EAt!4%bLtOu9#UCUTagB<_OX70k*l&NZV+` zR=q-mjv4fj4PS?l+zd5hJ|9BBVw;*$xL@&D+(Cb$PdoZt7ydA@CeyE2l!dQ2MkS%) zuYIs#a8|jc(ILLWr(3DJx0_xI94?rlZOo)NgD2zW*Ao0MUI(J1vdt?dWo`nMBcu6#X+wRwoNZ0ZBJ>R_G9sMinJa10Q-tMgGT`voD&FtR{-A6WrsoRShY_{j1ctq{tC|9J< z&^OZ~&s?)hcC>sGe8vD`hP$J4Ykg*Hv|Y8oxfwstXspsh!=B;VeK)c zS8TTN<?0u3J9t`$LlKDQ2U|P|KQl2&{zwsDxsdLOK4i-wwSt@!_sXdTUMQ&)|&2 za3%+Nx_z6Gq1c;9nCzX=pE?XAV6n_70-Z{GZU4pbT1J0y1bcQygOj}W`hUEfnEg?u1<<`anApiM># z`_!NWC2rSY_9cihkkXOvnMQ1v?5^dak-4Q77w7)Ty}!bO`b1UGH}jqkU#BAE$EvaL zlI5BR8x*H9x3*4z`O|@M-a=nG{RS6dOZjKHE1uB`5Nddyc(H}@;PQ3#hH#MW;uOf8`G%9vUvK>{g!qsi=k}(BIpFk#loa{FED~NvRK>jr zi^wtXLqPxba8g8>Wj5DVLQ}hL%Sx7gxn1!kOrI4QOj+z^O=J#-mL|2p3MGqwuQ9Y& zx%}d$6_)Kt>p?@=oaBVH_2zKeo%BDN(D}-+8v6joe`M7cw_k2-X#E{U49+AGZHr^> zsK9>>yHn=+2r?2{D8KmF;bC|-T;%|OwTtlR>Yn;- zpxr0ipk|Z|85rEge&(QmEi5hlB8imQXq-?o1Z`dotFWu;+*DxWcZE}Q(T10iwgo+8 z?Pw0KMGDgqmECVne02dcWS#8MT$|qnIidkHh(Pd?-5YePVuchsMjW;JtFi}~V5ZQg zkqcW*M^!}Q5zZ#2@|SPf6WW9qN-1GFer!(?(!--l5kAQwr`KfULxOPFQ7JsWG$e3B z`f6E3jKY+F-H}LycDK5ABNcUE1xHw!Womg>D^{-PyPf*n>Wd*5nNF-^TF6{gE@a<} zkI7v%1ZsMZWu*6}CEQlDJ0@+iNr|d;tu{BY(adoPY3hPq47gnMbluG)pQk3)Pc=Ra zy)r1O3NU>7G#oV5aE8lEP=lKqaKh1%IcV3fJ?=|9b^iifSXK0%<%6(-Z{Z;|Hbe0! zkG-3=4|y^n$ObGZWMX0#WrWpS34@RMz0CZgYi)lb*Vv00eI{S3^K0K@ObOi_Bk#uK z@Ao@`#qRjDCZOO}vc@PmiP&!^&zqVH^11Aw&`=z$ul>T_;oXksLp?E)>%{Y`Z~EY9zllyL12|kXx-PwH)<=tf zYo{?zEg=1b3^YnnOz-i-`r}(8l-V)6w7+~LZ=rnkEY2Xqj#qeN+W1wMeAEu* zn%3OFuHf*cI7)v}nZ(dS`XFq-4Cja)ze4P#I!(|q-;&}y(ltINXFNTo@5D?a^(np1 zqz!LojKcUfM1|q3gbj+GvN&X-P3f*xQ2xrm0N3twk)f^@Y+qRTVOufaucMago=7qh zL!KYRJ$v`r#>!DhI9NdZa0r>T*EH=97t5go5~AhN2#(E`RMU`|kgDBc6V#`5{Ap_{~4&N7A3lLu5zk}J;I z9ulL*L6CE{t~ToYAP*O~5X~P1dYsafvo*@bO`_>HVMwOBp&)+az&|T^yf@;_e^{P; zd=*Va^S@I@A2MNL&7V7S9$&2M{?Chbiw!`hU9oOdDieKlm2(+Iv5vp4!u5JLlQbSG zW=w>*ETzJ%`%TGyT3X_*t;>!H_A`x<{WVANnhQJ768BJ9-Jsm3P-?r`-1j#N3z^Cs z4dlzM0b6QzB!wp|6YCcilC79rpi}+Rznk!x{@D93a0jLhgP$0m{^6O6l)kRh;(}lM zrg>I>o7vpIU-s4Dx2lb{EZ0Gu%&W0ZO{A%MXDcnRa2S*~GAhNozo2wNegn zzm@T4V$MTMmqmy~cOVHAR%g@whwetsjk<-I7JhwkD`AKAUJ zk8$XnYW{qNxjUdK5_#IH8NR?Cnn(fZm|rusKzd5k2bzr;2y$U@;qwXLtKmq!W5w6$ zken?3($$F_7W;69URv*6J5LK!s2n_{4W%LLzD@$QCAn^9O-q4C1apgwbWChAxFV;f zj-OVQ`Q_lr^HYE_!edh{j%x*%n|05~RXYq6Nq|RJWCks@1!sIeF~`ME=$I|vgvHOD z1aXVQd1&tdHO6rsx?r9Flg9wk< zmAsx~@~#(`P0xuevt=(g!)U-JCfr*p=x4~P!{96i^t$8223>nRRf@!%AR@ywO2e$DcMe$j+Ts zZxNhCa;SS#irZ%qwd{7;Tfkb=0~}kO#pn_!7q3!vFbQbE|LU`wCIt)`(TH>dYYu$% zmCp| z< zGTQhXIT&xMvYUqMF4+8su!+)lH-As0caf7}t82n5Ne&10XM?=}k-j;!?{BY>3R`

14 z1hY?jFaR>VEfS5w$h;CVF75l^N;p6iu#M!vL?2NbvfkgWzD=G3ln$^5kFcKd?2VbhJft1AT@K8 zl5W>~G9{0NmJQcVbe&LDP__ziY%b%=a*nq(Pj~a#xEMM$F4@0g*UD`2oUTuFUo1g$ z#1|lbw#*ZhT>tA-`sDp-?P&+qE;F!k+$?wJPv&o3oy>nLa}t0J&tE-{x7t*~*=tGH zhv&+}zyHI!U~2^z)BZN}&vK+%J;)>+)j1Gq6d%~QFrD=4sN0L7C>ZX}OML~F)Bkt0 zPfK&?^8qyK15j184GT6Yjd6#G1$A|~!wb)mS?45UnU_o@Q#~Si`>$JQX0uQ4a~JSv zTDp_2hohebKUV=HP80hnu<(tj7$5%gKe!(`qx2Fj1S8>vG)nAxlYzR3qTW=s!Wwn| z&rYYR+zae0V|+9Mc*m$~+s^?ES% zy6+viJZppPI^9B2bvby^iU$b&^fvn{*bBS%1sD7CZIcWf+{T`JNC=$%b*dm2H4%}b zu}Tv6In(s-x8Uasl#mxH8yGSJ`bU5Dh_&5E!36e`nbS9ee%k%fM2;EXs7Kqku=i3W4VQGc&cz} zn`Qv`ys>r%uu&X@`dKQXHw}>CP3K}QGS5b4(Ki@junT^@CpBsR#Jnf2mQvA%IHmQU9*5>bnT-0!zmw4%42%XMCm@&G>;-^566R&tJsJCU9Kmyv_qfS z>o?c4iDMDG4Q{Mj=Fx<5ZR}-*=Vbiw71Y&S&+=*5R>a78^zWRs zS8EO=g~n4@3)k!QJOvqaBAN&IU;!zO1v{YxHJwLq>LwLFoM4*Kz_-+x6>8L-%}*B& z)7UJFU%2sugqDnliSLmj{S4M`VCxrllf!f!0Pv&){dVC;y(@;yoZKQEyYQM1w(i(w zWvst$0-i9?=IN!>@%$WqYe#&@uy4~p9D^{zm@c*`{P}nqd*Zx8{CTq59bx5pQsw~l zbW<3I?6KivGOrN3SDDd%QFBy0+e^J8LtIUWDu0#y{Dzm@Kx+$+w z+R9AYHXG#&ufpTvQ*$%1psCLIR++c*W2IGZ&Ow5jE8^5AMfr#FeAhXGE)YL6h^g?Q z)GK!{@#jgM)sL=WGL68yUR77VD#V(qZ2+>}Le?xNU5Z0#rx4yLZ8Xb;Kgezi{glW) zzm^;ZH*gHvN@vpPWE>4tH2pcqic(Pe3bPDt&wmECxZAQo1Wn{L-}_15LMORKSaqRZ z5zk_Gdc6@2>&b~$kEa(yb~e;>VTZ3Hfpkj}$sieZX~So=`(Wo^2BDt+Z9__|yKyaG zTd0NX$<+s!VVy8y<|XT2BswZCU!@-Ju=>H1SBgfhn|`l=6~7+1@AWC;}-4 zA;@jsOSb2vBK-a`X7S4_4E}!pMWhcR{DBKTPDc?y%2P<4K%H@P*0tTMCrU}`xzp}8 zF34Tisn#z*Wo`_4Vh|>EQ}izyaa~0E$N9S`e2oH{X~iujFExCPWm7&H9#u2T-sGY7 zVe++bZT8BjwcvVLZv-O###h$aUhN%~5sE9CMXq)m`+H(UZ2j&j^90ynWv!VEwKtK$ zbR2rhtw@OLQz;7r7`8DAmJe6!;F01L8(M)aq}veF2I&fMzw45YkJnHOSXDU~?$7~D zN?q>Wh_L(+-yE*GcvFkygs-7-8QdXz%EDZ|p)meJs<{*WZvmV$A`mW|yiYUHu>lbq zVUbd+6ke)~I1CbDSfA=fSaW|LF0W3IkqKz2_;b zwH+{1u@1P0+rFCr`L(`AnORn7>w3eyrIhatcO>piY={%ga{aSP`1-$fnB|L!GU1Uw z19Vvrh<4fAN!ib#&tfJ zQ^^IN^aehFnI@dmj|fx36PfSd_DfG^G*&izuqy37`3Pb}oqWEA$zuG%KgKaCn_qLr z@#`tzh3)VTD1Z{U&!u8_B?9AwzEZaXc#k4&Yo8v81Vg>tejc2j_;q&Dk|(M7ur6Mf zJv9Ww2Oyg)BU)I2W%MWC-Ro!K3F^BcXIFNjq2q1Gu@Yb(hqpEk(?za}4=JSh*WdX? z0P+32;GWa3aTZ(5qt8_?7R{FyznI7-xY45)wnpW9@&X$RL!Y3xS2UmNsz}NDK0Qv? zl;MH&hJf-(Ec-y(!`owR0Q?0eTfrO+^CNTsP_RP1e-@`gP&)mQ>|H;h?*hy~b0 zNz#!ymo6^OYqSl?`>sFsGA_*-VZ@B0nU(f)2KP#>juQ zeoqEV4ud}Wck4OTe4+DHF{UvdP16gWA3auguhlN;`&XZ45-@)fvay{=de|!v*zF9~ zd?t{#7#q55$oJW+GNTt0!Pi)m6E-4uCNCs?))sytQCrPlRq>O*d6n$kBLHS)!u>E zpT&1n_r!bXHYr!Z){CfJe!ut6wMaGn5iUPNOVgf?TUdAB-?`fsR&SffXAPU9FYUhv z2Edf_^+>)BCqs#dt@!$e1qfnZ(FYd;I#QZZ+hGwui@WyhUUMY`z8}*fc^`OQ)|{#I z{_M)5`Pt07{Rv~4iHV?_#xc7IJj57cbU%ID+f^?K7;M+9_lQ#F+!b}mNF7Bq32XTk zmvu_NGnrd*Nqz2`Og3_Dsp7{IL2kr+wuGC%PyOOJr$Qsdx$PCa^EQWC0fJK zkRbWZj6zt30)j6&)HN6%zFnPm!?P9+ikZ=V*~q8ZaO35?t;@4$LD&~d-jr^XRHn16 zvD+YA(s=%3y<0L8!s>+|2k)PyaIwG0yRm=i@x3U*aD5zj@7^1-q*wS3s;rPQ8L?ke zn0-0y8acps6&6;_`Uso4(p58 zc$!w%b)RyB{;+QyI4BEFIREO`-fljUF9^8s+JtWg`4ih5 zEmN%k;heZ`hH%(f0ZS0qP7<1S>%;!F_nFqQ^tN`#rr_%CWd1c|@{^$`E|#&Y;0{4gq;!pM3c_QG2sofYiooinD{mxc)a)~u zX#T@r-D!NEe=F@JcJ6!v5l0b@axz|%;@=Hw?W_NlG90@$iqLtMIH6-Fqgot^La_(h^ATz38FHnP$(c@KO+y~x?V*7We zLO{>gTKD?mJ8~07KaA>>>0?UY$7eC{>Kyh4jh$8YMe8fQctLD^e|~4OHW`2UA65uc z-^dARc2E5FHD6I$O}SBy{QT)0KQ>3)SDoTl19iznRBl3cD^9M4xA_gOc+1qC2Mmn^Db2^&jqlp1r9^v6)^uwaY45K>! zxhq6IA>zN7{^c~j3?b{&?QIDrnRue{u;1$R#;QdnxKpjOFNiMhVQKjhpG&iEcHhQ1 z7Lqsl=c&3$?wq+v!P-gkhrH(3-Cw;fsFHzc9~f1aKmXdJtDatQ9&UquY`s8Q|Aw!T zz>q7tQ6-iNzmV7(jGS!Sn_5CZ|JnxQsc{LsRO6Z_1t1brho7T9v8j-<2FDLRLFjG)1$fzdejbnrPoI>ZJ7NDCqAsn=GQeT+lXh21N|Hdb*0QYwh zeShV&8`N9B$MJ127Y`v-c^hB{MiC=_qx0pVx!s*#VEV&OodV*c;fK#Tn=qzrkvI}@ z3KCJmDC3t&NRd=(sr`vW6-&N1zdsdKt|{)MnEyIbv;!dNAC}}^>Yeu9$5{Q^86pL$ zyR6ZirIZvU=r{WDsTeID%vCEMTN?#P5@|hZVnRer=)x!^JxqEv$82>+Jjg;BY>eP6 zcD~lOET_}N$BrZWC=w&8N{mzXcs3QK8kyL*kqN(HixE`GoZ)CWjp8Tr{jVkX<~%Rt z3Z)qAJ@HVT`(hpLC?CIUJ*V?+T(@Pt&_~Cpmi@bkg^cOk&eq|g^YwrPZDe)Re^{~i z4aDWop!%T#cRrRsLp?Io98CO&lxvnLxD<~{ZMEwh1Oyv)St(zsV8U%;x={>*amHT* z?F(-Mhjr%%InqWR{xKiilbvQ{$=5M3;qLDlGG zy1g(;3U8_8d3xZajNbPa?33PBFX#si_l=x~jk)%-b2m(&I;7q%@JVAE5}niH*FH|5 zi6G|9Ss~nJWebT$&OTpNYPV0Y`4>e@OcbeXx`Uu>3}y$ar){Y3rYO?(#uhR_A}^xxe1 z?D7vl{=eCf&Vy1qm2A#;Cxwz1m9t`^G$t6R}zD2eKw+}~w`)aX@>#|~wS|8xZH z;&yo2a;7K)rhy4%j(YAdGjjwk&+CP&+IvEq*ekz^Bxe8sAdgt~PRsCyaqkAtqHYCv z(7kogUvrosLaGOUhKsmcAq+<6bB1Y*@yN=S6Q-E0*#H`h#MhnH>nnEtNj>1|lNe(6 zZeWNc)>@O{#lZ7U$5Kz{K~2DIEGGj0U%S*hJtg18m8M4n;Xcw^_qGxu7Pb{O-#h~+ zCUUKzLnx$$y4NtI)k%RuF-g8zu)NoowF%P4Dg8~=7A!y3Ua>3o{c=_ zzRGQ14FuYBZDv>SVd%V z9btsdM6SJr{&4?5mW%a-rM4fHMfMsPvQ|Fmjo9QTSAJ>wX^L5K%%_{*`r}KFR82Z8&Blqj7@fazzuE7+N1sW3p`EF(j)w@FEceZ2*Hapez zetqvnSw*iNJfm)?skzNEsvNaBH$6$|g_9+gr7aD{(ZA^sEMijqfqT249DLn$ABZch z+rJa|am7KDX$Et%ioe8NtUo*0jSCWLsY}IM$Roo(T;W_l{l^dnOWdwe37{#x`|41y zeWw4HzOw)r=+;L7fX=_RI|YIMA4%1l)-egM{D9B$nszUku8VGb%k1{Txgv1<)mjoc z*4NV~#`bj+ElpI@s0DxV;U?4$R`7<6-^!!e_G0LMF02VXH*_c*Dd($2&ryx+bYVm7 z-$Z|^{d6s!W;akop=hH0I9B1lgpn*yUv99~ITEo^Q#a9`&X>ED-8EDQPQb@>MEhKy zNU3^S_*cy)R@rQQ_;SH0sn$MQvG}rYR9==`eGYzSV*h2UgNe&b%c|c+UAIgMUt6*2 zF1FLYz30a2&qqyn7Tw&#`PTfA0y82ajFfMGw-v^^m%*_oseN;2?Xod;Myl8D^5?>D zc4QUeXFy4nMP@zesEQ^Zk-iq|jYrB?Nn@1s{!iM$I#A8q6k0usq<0KH)q}!!P34$` z^OvXBV6i?z!n3;6jqB;{J7<(&5M$tfSb>A$33HVisfBw_@$^vTE$1k2Y_*gf6G|x9yB^tH01w@J|Mp1pM(aGz?SP zi8wzIVaO@i3<~vVYTeLD{ssFoY)_5FFrvv)^yO7cV1g_YH-pGm{qT)A!*z#X_4#! zw!_nM;}>quQ=*s91s&vpMwbWIU#JVNElQ6!aYOQ^mVZs+}X1)agNX%ML#{5K3UTmXRLvZnqs?kRrqY|p#-#D&OP zf`V(G;pbB@EYDpqhJ4VH?S{Y(*_}=Rkk=@|Bj|X_Ot<(pp}gkl&MwLY*~}gmv)ml> z1zU&W==q6Q9bVDr@L#=0Plri^#)$1UkscWeUb)gM%~Y)oy6 zAu9|4(M`XZ7>H)rM!VeukttW26E5?TL3grE@4N3-fRc~6q zEUaWM`PmW&cG-u0T5~&4rivM@N@x<_bssl+O;N2tujZc0wuFz9VX`S?fwiI>kT#gb zP;iv$5$1N~7O!RZgRlQQl{jIw{Y0!*O&4dy+pPTkBiM>^nuZHm=<2u)D4HoT(S9uz z8fVfkYTif)?yw&dv{;o@x91_T`Y_S;*6RGME!2*8iQv<7-yui)nI>zQado)dhqtHK zA?3O`#X6wr;Yy!fYjK68%(Wyf&(6{Py~~jWjICa`Ak8>)F9ODKiPLO6WtUYGh)g2T z?vDu2x$FfA&u-A3&1;#;rgwk*m zWZNv&?N9IPenTGx=?Ct;s{gR22}V_l3G-gmkxuCv_8@;m@!0pg#)eR(wk(GF$6+5< zI5R911(B^zzX!vWps4d1@awkIRmIV3C{R4i+^4BAL@Vg$a^KV62lk+2>hwEuL7}1Q z4NFa>faH5Ew%&mL%DvdFY5771zz-=W-fhP555^y!{yZyW-mq-8G1@(3;sF4#f+!{U6?ov)1_r=W_06*39hR z-p@1KPW8;EL5B6+M{D!fntliMkA0tRnF;I;k{fCt3YWq26XH0PSk4uR{Nu!dk*DN> z26MHFs33Lp6{rxl z1n;Tnoz)M6xZMzONwTe*dz;1P{JHMiIX3m{u7)K29pa)xfpvIt$;c$ysXC2}>XP?V zRT5QHIMlGY4)t$n5By|f^mC;;z2+#(nYRARX8U_Q>)++jDL4{5M0ML-l7do_ww%{A zw)%q(kcU{qbt{pDGNC4kUBrsJ>kK_CN0r~clx@ARTDcHa0Vu?}qfR~(N2_w%mcQgB z--ADubLcjqNeQ?AyBb+B4UE$xhwf?gbNh&%HP7ccB;QPr9K3bZ=PJ{555HlS4G$Ym zUoKp;3n#OxO|_`xtalh#+jnbN%y${QK;OKv9^kVpOIxR>fz1tz2`2Akrxo#2~vZ~R3 zEla?JcVrlyIL%K`wM(y_nx{--pGM>|pB}Gx41&Yd_%7@HJ{rfl=!elxJuCnpNFTkv zn{Kyw$0VAA-sS2y->}SQ?I6W$w2LU?NSBdroIfG+i|ak97FdG~&DlzJsak)n67>b^ zSz82?IIAESrV8Xh>3WvZpFD-1#-aD>GX|QGJ0ir+4Ifh;MgdNNB-=} ziU!J#F}03f|hv3vAnoJ zvg>Cf{bl}wN{fXH4r;!&s+ux))pD9q_prO3q1L-%x%2C?wt%#n*rdp2p-SnEZGZFa z-*rFsz~t=0*pR=S_M)M^x=p(&X2##Tc2`_Y(>-Kj&+@mov=4oN?Gp7@LhK)t0M6oe z7Q~2JUXIVC?sXRQZan324BD_4U zY{(J@Qnf?HNLJVXMC5jeT7iOpoZW3>d=C39w{q-1$AEf2)>xnETpJiYkxRyR?9#!` zbYEgxd%1f}yxT%IpuQm%JrQ3j)aIA3G=i9BqIeV9J*+A|8UEv3@#=#E?{p?}TS2=K zB`D+vjNj+G;_&9siW~dOQJih3$$7(fQr!N9uYPXlFkm>FFecUq+c#P_>LNR_v&1d! z=UtOI0p>;mgE#xDZCzd5pN2FEKX+Ze>Nvky2?y|kD!!`Xwo-L$SXpG|o)q(?3H&K? zop{mD+}XZ+Z;h>1mY)eiVbyKCL$!0D|DocK?-Y^xC8&idIAoKwB$=P81(I0Majp~PouqCo7 z;Tq(^?UtC(T4Lj!IvEjDixAp~KC9#6v{_ZD78C^rI-dy6Q1txIS9e0T%#unb(VP9T zv!?{Uqr0;QS1t8IxQ+RtZ>}#SvLKUo-DtsUxaRqt%97$#?W98Qoox1a=Jf_Hg`kw4 zt$b7maUnd6wC)=qzx|txdBO!ZRi%IXW-3j&UzuwZ3r`+Nd=BiYPyPD!F0aM`@jfU^iC&xDf zAU@tziNOntsz0aBV#h%J|6c=kpvNY`CB^v*ltN9$ux@osE4TR2+I=_9^8VkKW{#(? zH^n2~;_7Ymy!4{%l+oP1@5VT*=uLkl$Xp=8g^W5JcqWlL^3Ij!YVai zr3l`>>vfm9{uX%XX?E^n`n}mhb$abQuP%LfgvV54p9M)nW$*W%@KD7`u7wF%E)-s` z19`OVR0gqW;yR_8A(0BTp>w)XU#{zWT0Ey`7LxF?>T;9j^Oj6n@_PN!cL>r0#~KW? zu&Aa*Jv*lI+t>@Z^L3|btOLJ>L6(i}<`3VAa^-=#K=vzUJzeyI`+2VwCnp<3$yJMV zrX;hOf+MiBxTccYDlPrbhX;qYsf-5tnab_udsZm)*kB)@ zaU{IL)JFO6x32~Y)0q+RVjoh!f()<2=c5wuY)0rLQ^rl>N@1L^VHGBoRDs*%0UE0h zCc%abx!|`FpI0InvSc&3IX-!)(l z;D^)yX3G)Vdp-fy$C)a}i_=K9xzIrgZ-Y813r%9`n|Bb|+tn|0bS_|r7w6tZiE3+D zpD9e!y9G2p<+|+L#Vm{i_O*V5SDgUhw7=mk?49cJ}~Jj1DY^W2(XO z&d&2@#6>Fyk1KqN1emAQWFXpJXUb>la_HXZ`Rk9DhUrDTz+jqU?wL1L{OAoA(PVj^ zuR(R$=jI$c9BIe*)%9@IgrAr$Gz#dF%HJ<@<;i?ShOmr_R`rNH3maI${pf5HyKNmaTIqg=a zU-U}hN3cU6%1X%YL$?5ZNBW+thyGfX)$kJa-VI^$x}=qbK=##6ow3AkHd@KV#6&6P zFGX_I7;P$PAA(+guFo|-(*7Aj4<2I&&8LNz3GOSFuKcXyxWcu9X6LIiPJR(6mLERC z(#uBI%}oCW&^0G6TEc2O+a*0DSZ$D+r*Rytmx#he4Tvy(wLO{9ZjfJRFybf~;d|gj zQcus=pC7_DTJ7l}q{x_1NzC3#uOvtpW}z5zwKO8jgm%xy3HQw2>T6JqG!O4;o*X4@ z^-~U731vT(zPi;nr-*8gWD%-BU;3)+cM=za0&BPF!0AoT415n$JX^nU#hH(^{7BKLxCk6D@2o4qmt6Aw!A*=bva@Y4!aEy_nc0~<8pXX(wm2i zB0OFm9>fM^!?MT#gbAJLN=dg)$tz`GN!_1i2F0aZ>8;M}pXHur%fwyB94Jf4@(PJx zM5h)lrrc`W9Hp6`c^*A)u*n;dJ-v$L^=>Ii#V#w)@+Pc^CPcu->TQ&ZL6Fvg$zQ=s zw4L%#dF66kx0b7`U`L(g8%W8!w9;#cUX={J7vrv2ynVmiD2vt~_lngD%}K+VS6=On z*K7um6D>Ei3>2P&TzJ=a#vqHJz`Ws1=OL^MVFy(gK^8vbp=eKjNGso?AzyUGJFiw} zN}R?Ew`t_p_Z+Hix|t%DWMq%&H>5lNp%gtJVKSBhQ?Q@<_2`SdFY58TyLnpH3;ZKo zAFJR`73jb3dnFMb-QLtqgS(PZYs?!DyvO{UWZkfBA$uN9pmku6y7e4U;#O7`KSc~M z42PKmzy&*%jRCN^@LLFZ86bVXMytB5z&7$xl9gD~9l+%r_nN;09tRcz1+RxEu0OBm z^$!!_MSaqMb_!vgEUqVG3OGt#QUo`$oL#m(@MO4|{>e8`NKtPaj1W6y=2W+4U_x5X ze4~lIh3$#H*UnhNXBSIdQRE5Kyrb5IeKvC$Ybwh*wZ5L|c&Po9@ZvWIgyk zRoPhpO0{h1`u!jpaSpUe_S4B~BX83Zm@AvE5)iRg>3iq8q9$eS3L9JC%~dIJx741~pq6W8c51TTzbf{B#Fkrq4)Ka(K-i^&I}{=(Kq5Cf z(h!R$ZTWC*Gi3xe!m;8S^*gcs2Sq&FS0@}0FIvT!R)DZOMA*sSOPDkzM37Z^AQ2-| zH`9=k)k_$F1Isqpv+LlAh~09l{W_0h1#H?~!#TLfh_ihIfC*E)5jZWa!c-+hSaqnU zlU%bkX4NEgqzbX;EcdHw2U@Mod;GT=5VWgt<)iv|9-s<0( z`;IT20v(^#9y9!x?=3|p_-%#0CNO8FHh`k^XYRcAtG4R}zfk#S=J&`TMnSrI*H2=zNHHkjHkyj6+0#(8%r&XnecCN**^F1;lJ0#wa zvLeP=r$7n@BMcI69nz;xt^QYU1?mE^3$;9FX%}Ax+1fYRlonc^I7PSlGv}7XiFp!% zpH>`Vi;_v^@r%qAG?-r&HYA2q>{3!RJp{)56#%nlmE!DCP;2S+FIDwYuF^mAFT)#4 z#MWa*eD*SoL$smc4;g+Ea*l9D-o)^sW{1D!&Ceg<^QK@Csy9R?=_JD6#z^HHFzFT3 zeDw@XFY61TJ9La_$#b_Iu9A!&!pYia{i2SX4&fNbHY+ci_fXz1d2EJ#lLjonVYDka@Bw8pf2JHs^NM8}U|g)je(k}Hj~xlUdpT0cpS&gnYc zpmOCVdM|hkdG8yOwN3NMXZjFs+-c$O@WA8sxWrrA3@RV$beC}5*l(eSQ}HoL!)&+Ax`Iz$@Ch?ACgY>a5?JA$=~#FS6O7w9 zo+(RZ@`FQZxAN#IsivMu%4~y^LQp`AR4XhR6;;PE%4s}k!U3;|=S+svzoT*hK!l_2XVmU+b=cX&)DWgy!%IJh$r4j^v3Dz$-sa=j>N*__$7}1QPev zePm$oL#HP2;6fu*36UfB-jL8U((!d@)JWxSXoqWCG?zl7XKl7jrGetRHxe43(~2~p zeKEFX1xCE_?UPg7SyA9;pM)13T^*vYHUsC7A_lTf-eE6_LA7^U_oPPdak#PSjr`^! z56nrR6VaN7md10AD>H_E8?bekVvI(;)M^crQT$gY4mQTgHuem@22gc+!V0O;LfL{j z5Ad)9H!rB-$opUh2J5!ZseWU^ViXMa@AV`a_{ZEIJxVsq7^ngwH~C1uKXzGVZ&Amj!5XCBQx#h5>czBt0YElmEONnXu=*m z{R{ut2H2NN)b(f*7GqzhKT1BoM#R&rf;d1JHvi03h-OW6Ql=dOlf59HsHYw@$aQ(} zOkM!3AKi@_+$w#dsbuQkyN?h|2_eVNA=^F)-$G(m>EtFj)yT;h1#buncsZ&Os)57C zUMdAXW`HC2G$EZ2>KcV`^#q8#1^y*l()tV4fM>A

uwWpoPKf6Bzh=GKZ&IY5Kim?iS_7H1r@$ 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

Ehhyqd0OGpG0I9a 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 RCHz@~g&u2V8~0=EzW}LjG^PLm literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-nodpi/help_dashboard.jpg b/src/main/res/drawable-nodpi/help_dashboard.jpg new file mode 100755 index 0000000000000000000000000000000000000000..55d326b66f94af95403c5354a29bfefc561fff42 GIT binary patch literal 161210 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

SI`H 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

OdFUOq; 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 z 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-nodpi/help_text_background.png b/src/main/res/drawable-nodpi/help_text_background.png new file mode 100755 index 0000000000000000000000000000000000000000..151aa0e1be847bb4e41e6ad25a35f48bb06c0029 GIT binary patch literal 4279 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 RDUl!#@E;Q-*)5J*_#eSj@b&-z literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-nodpi/login_background.png b/src/main/res/drawable-nodpi/login_background.png new file mode 100755 index 0000000000000000000000000000000000000000..29b623a94bb1b37d7750d7b6f60d804421e8e141 GIT binary patch literal 446908 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≥WEjc>F}@_oC3CSkqYf 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 hn>* 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

    cD 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 i{+#nM4~wT0 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-nodpi/ponila_logo_with_text.png b/src/main/res/drawable-nodpi/ponila_logo_with_text.png new file mode 100755 index 0000000000000000000000000000000000000000..29c65ecbfba550674a6de807fda71020ffdb839c GIT binary patch literal 44985 zcma&NWmKHa(k_g<1_);aHoxxp#28ZAl+=D}KcRxI`-}C)A`(5As zn5n*3)m3_T_q0T+C`ltD;30s4fg#JvNT`8JApJ z9>&h*V4`LYCgvov0AovYHFIM#FQ*Z60WdH~5^D_|R~Uvh((CG7@VuK{9PlMHWRzadRtc8ESUNbUb zArb*kz7GI^xvMdWC&13$h0jxv>~CDY5Bjgi%w!~gv$)y{lKo?pj-m>QxP!Af2`3W^ zqbUm)3ker16DvChH#au}2^$M53o{EFGbolI8y^b`$-f`64{gq77JOV);!RX>;?`rJHXzxP)9|Q?=7gJ|z zM^|eHdy>BpjZGZfTm{KKEd9p?faCwb+PnN4rjLLzdm1}3vof*#<S>w|4(2S4KGJ?W;Jsc2RCQakHlG!|E0>2Pu$tu*ww*V!@_eW(+S-hdje~=iiFt93SSqV`M&y^EDcu=;c+k5N1|LS-LB_b&)xR@OYh(pc^67yEM zX%1RdUXyM{SgyM9Gq!{+V^nkFXQx8C&t>$W0+6Hz+V3|VNp~nQnc>{DSH=eav9E9Y zza9Q`rp51FS{SVV6dW-#u=wNW(%qiDv5d+-2qc$|CE#`5werUBP~RL*_`50MvHSmr z0`WWl%lE%gC{u(V_shUoheBJmF?eM&uMY>+kQz_&WWK)%6y34ew2R>UihD#hB zd)bGFL&Nd_%lbPLaESX3&BTjie`1OGW_!TN1iS>}xfb;xL{Z`K6+G5`!(X`mxvG1A z*&V!Ys@(?d2t4~cpo5}pYt!`MXM!=O9XkvQ0gJdLS7y@`oJLVVo(51fPqa~Xz&Z&Z zd(0%%FC^nk{AZ*aY~qN=J6=SomwJfzjed7D#U1;oZc}KeCjmbe32=}Pu4gCn8znP= zM=j4u)ug!V@MpBIqt%I!u7BqhN;70f6;x&eQMA3ha4b~x9B?n!yz@)_b;Sa4Cd!8d z`X^5iAVDN+54F;52UY8F;m&Zlim%247W&B!AN1|CiUm-ZbxcO-cPr~*EtNw?0e8d;ip^aq>#NqJV zKNk+*Ir_Z>rcAu?-P0V zKA#<&>5stH{;n0>x%b^q^8xeS!;Fi06Hm_!5eQJj3V$|b@pwFuFm3t=X`q~tiMohN z;O>3`cllr+OBP}-P=Xr0^7TDCwXd=~Yc3Jt=v~!U9q1lZWO)5cMHTaQ?pbVC?wh2x zdVxKxch5v2U&JE1dnjTh>8FIcv;~k}W?1<*55^2pizO>b^?vj**8h`=%+|&okJ2Lj znl6qt*H>#}K^SE?C}ZfE%mMj`Emo87qk#+Yd0B-PC!DN$`m_9OUbbTUikr=O0PjKE z==9YIgZgx=#XFB5xR=E)Pq9>XGRA-_3Zl&+HY?hjFoL5&X%=M>8&rzd4QanTBnVmq za`R1bbc#73v*$93|D0DI(5v0^mVC_sHOj z)>;rEZmGUsOghfBznkAH&#NHO#2{3xlIQj${OgHL@~O8cui^W-HnslyerQY;%o=;w zjdpVBKsgi-?SoLz%LxW1{}Hj!CgJ5`o(KQWe~Lnpe&+JdVCf=svW!zZ*OJa04bBde zlF8WO+R_kGChj*FxMv%ff+oo{o<=^D==qhLb^2xE@njj(ElkkBc(2TCDqE=a?gSWtjKH{B&VpsIZ|ir# zKWCIXu;dyD()s`H;R*Np13z&x*x11A}ll=fQ5Gb0J29 z@7l#CHfbYV`l1B#jFqH)zWZBN6H?PvZ*sr{GL@*&(){3t01^1O-8VRMt*>zDkNp!Dw`7WB zKUDAf&aT$8)$?(!u6LW-4rsF_=t%7*QA34xFWc}S@^wFYhW9yqpob-`hU5j(r1HO& ziXp-YrYg3lF7$R;S$~`7gWWIQ?9a#jv&5D)C(X=_!(UDlH6*;#j?!nHllkhWczAZ$ z**_fsRY<+?7gzC>`@NQjdAczJ?7kaD5`=rO@4`z z*Fx-|GIGV0eH6(Ilv-kJR5%#_Wl0*ei_%-uKdEt^`&=BrbIsay6+Uzc5!5=;4)S6E z2{1(H!pzXXT{IOm#|#lPi6);(HQoF;3{$a;Kfno^$?wT~pT+LU#yImUnFw!q;Q1JT zRjFlAq%L~&&)~J*AAazJbSy_m0e-VU**{@GY9n|T0Shikoqo5x(rOb)EX1e=>c~V0 zU>1z7<~!XV-iy4Vj^%{?JBCRhjQS%9W)>`OjBNgH$(9us=&Vz%J+^#PY=H*g#t<+ahZ>V!h`Ox218IV(%I1 zkn8^htx5LK6x+~J%fR1VhUA=8WgHSvFUuWBmz(uMyRjBTXxW!=ix-N-*pr$~2oCj> zhT1I!RK&^8qmUP<~yNd0of3vwl z-*h!TKT0o@QuVw$Kt@Y$Bo&{514UMRF0Wtj$`%Psaq)IU9EaNeyqUH6E9;;N6q+2* zEkn8?Y%8@lJ4Od9L&sH%0d=kutbk-@&BQQuUuV$)Cg_rc2(d{B29z3rS~)j=#IYK8 zkB;~?*EonMxC!kWSaIn|5kd3pMN2Cb=zIA1%Id2c*Jd>;9$}Hw1)=o#$ECB=f}BUh z;|7Tgnlm{`esm&)T$-H1T+`DaEoh=82UqxNA?r0Cd`j{v1%H!4#7K@*PB7lY`CH2q zoK+Nu6(u8>S|0|4hj}BkF{|9Oxk5CAo~itI3uGuID8Mo(_w=FNdYxyGy-ae4e1})6 z*)gQi0-Tp_b`pM7I1GjkN9uNg6BFD;opE0dxJ84rWoh?h7_t$gmaL2l`&AztJm|*) zTqayH5YIeJS(OYegi8A}6{x|&MF}jD1f?~sCQIa3)&QW)k5>A0l>+Y04cVGe9GPH4 zUK-N>tu8+Q+H$J}>RqsV=}x=%_-tc{iP7`?EfdEN9p`ekW&ABHCVD6@6m{;moBleG^TDg)72+h@eYa`y$C5h$kh}YsA#>+k7i2GGa#zP=#pu*f( zf?<$A72^<}vd%HFqwv(Xkqmiy2J!)M_|T5iu&lf;8^q|-BIuZLbY0JxI&$ z3kKI?@{rxs!Qf8LA7x>hLYXVllsW)RA?yutPngg*A1~AtLHw<~)ytcvEE~(luoNqr zOY`N$K{%=26IybK$ec;oij7|%E8TLNP6>XhQ<&*zbr#|(t_FDj>G7-W@^T-|C&Q5l;~2zD z&UY_^hf_MV$wyv-V9uD!PefhbNtVJ^3BjqKLrScWSb*lD>on@GqjJcMG2sYuX`p

    yRAf84bf7MtB^zRBIYPPXG3Rkf;f&5|yK|%y&eP#1 zR|o6NCY>1wefQNK!UJ4YRa7gwr%=v0Y8&5CK{{Y_HPoEghu@Q(S;qbd-1~HE&wC7Y zJq7T*1zmE-;wXTn0R6)Xok?Rk^+~>9Sta|r%~0Cq?ZlhsPb6@JY!P1iR zacjq07B2+%OkHJkg>WQU-Aw*w${(|N^6s0cvt{XOumBjaug!qib+<9Ermkb=?N^UU z=0m<3ZDtV;s2DUEflt$)anX%yJjGe&+(ZDHUFt^!=Ht0-9kBSZ0%VG+teqVSfSMMyO{-Q0a zhCge^r*^|Ip0ENr1j4^|W2G(3&D?^wO*S^#TOpuTe{1sp781VjT&>YI9WP1hS#sFR zojfRIs?ka!LgmFu59T0B$O;L8BG}_VJ z7t?Ba!|PRx_k9<|TCdsz#XXM7KU87AmYDu&e7)r~@Ea(d3zKIKD}vDT>3Mn8-@%d# z^`CSJWNzO*bsWa;<^_0+ZhmDB*Ti1W1+;E(qql@pYtXzFfQnz1a{J;}q_?c)uKk(U2p!6P{yBY9u*N1x)Nv4IcZ%gOt;*D)>?-WChm1-FJF-P_VPU{i z(K9%9J>iBSGtziwzKg0IZ;wnm#ul%pOR_szcjVgN@6!l05=FNO*F5pX!l!YacuivP zyhM!+`ibtxe&|0iB>Z+cLM*vALOGA+;K#83Qk^6?H^{C9NsgprI|aTQBWDWt@GI-r zP88O1cGCGlzavjbJK-!0lB9p(mmulMS3mQe{f+c}8#=hlblau(NEBDF7*}jF{(uJ< zZpCI9vqcAtlQ<0Di1O!@U^q0t=if6iZHr*$S9{gri;9fVYmz!wXRAo#b%%Db}lYd zVaNwd7Ujjq?6L^Ie5~z|E$kUIvbZQ2fxQ_WHOGRw{<*N>j_unIk+2JmEC5+P5cTTN zQ!w0vUnRQoV+WJ)CZz2q+YoVGx9%pXm+0|e8Pei9ZeRLm#Tr`OCk;)zSM}#Lm0e|a z1j;{1HhX#9Qy5n=tk07Uxm^53PY0Lcah-?jXMqzxsAztJU=Dl_7H%=u-SW^_mz zds&nFMic#w=3&#=-Y;-0gx{H95o1d_OWvk<@2P_0+(U=6>;^b+cV(9`MnL5t#5Yo| zq^#bin00$xE!-|rD4X3+Dc|s-@Y=x=zrtw5^n6|Nb$RB!8;5kEzq5kLHCp(>TnSSj z23|`KCLBe2_TEPv?qcZ5P0ysy=@K$IQZ!gmd^mc2hSFSnC72sWHSmh9awzJxnG7pm zk6o|(Q29gUD)QTV!s)|EtCx)?to7c;d(iDGfsP0zA-RA+m)mE_H=Ho(`_Ox`cHRdK zP3wWZ{fvpc=iSC7!g@NRy`h?Gn8g)e&C|(V{0sD|-prd}Q*(+G!|^d$IbZVL(D5?y zAmwnlrVzKhb|e^L!#|rn)2=0UuPsa$TpOIka$cY`2cJx3-&ziOl7=rPB__0tmw}A{ zH6h3-6=qA7ja*Sv#H*gSFXBV$2;e!QLVR_ABDLS_l&$4JUp=yPv$7p{DEC=r(&h9Z znnE_K(J9ZXD0<6OPHQ&nS|Vq%Yb9hK!oD3iXSS*GI&)0Ol)Os5?GAO7(RSl{X-sI*Z&9o&@mMD;s-{(U zI81Zo91B!BGzV+FjEcnygUZuL9%fYFzAgnL6=0P~{87&hBn;u;2hP3cVo&oZdR^`jSV4f3U z5JSMjaA5ikNl)M0LHAQm#F6Bgpi3JOZ>A`yZp)S!3(}S(rU(Ed=1HXAg+Tx%!p0lF zT3=1Up`IBBgwmA(=)Zvqu3UeKu@OXJLIW`=J{F~_I{@rRyUn~~L}0>6<$;xZSrC{c zwTM$9{^NGG`Y3yfpE}sCYMS1?t3M*aeYEiYgx$RWE9=tW9g&Qn=}Px>p0KQ?zT6K< zUcyQWm%E6oMFZ#AiGZhH!;f)fi>(bv)W>f;9Yj>Dhip2*^Xw1_O(3mIf>H|($^cAE z!E$6Qe^*5wz=0CVkXcGjb-iXBQ@H)UQv&5E?pAwU1mo}j8TwVy71i2e^;3}Ydd4g-sijXLQ zA~vL_i$;mTYTb>-{6SE1cSM>VV3ML{wB!mB*5Bdmu2DBQvADojvuOJ@LgOpjN6v{4 zJ~d?nc|hfgOvK&A8%9bQ1+vSiv%K{O7ls?1vhGHDhSf&}9Wg;W3Fk`9X|^fAE8APFh9@Sl zk#~1hcPGLIIti3j8~qU2;6IO&^1n$P6q=13!%U&eXz^8~HOwF4DoWr{6%raUhr~sY zI?S9j6e<`=ezo@LPP(d2@lm>}3?6=AXE9i#QcvWdO?X~a3kVu-f)U;6fu$m=#^&@o zqQX?wCOPT}CP4~bG?-byvAxg6OeRhra*R%d*tEKzeZU0AX@Cwg_uK^G*vQiqH7de6 z|5m8d{8`uq9-?Yd(mNur|lMMZ+}nkf~z-)f~R6cZtp3JlWIz&GA4N>G2&%dN79 zwicA5=boUVDGc7tg_m&qjZB9dIkK;C)w|Fy9uI4OSb>?y2_M^}RRS{9(@# zF7g2zvS^aRa^Ok5#Xe}OB2dF6-9)sZN^mOTc#X=odsLl?Fzzkjt%|lFRBmW=bPkF; z&-!p;q8edbIt&e1&?Ax{J?cysD>*@CjwEK*qe8ye5e7R*;v)73Rw#;TRIBqs&AEnI zr`r(x=kx>40*AT4Y+z#7c_+1`V)jbh4DUJy60WVGIJJ48ER?l`Yaq5Z97`lJgSpB! z_*_eo3L#7ULe`2~1Eck~dtMt1A+&I^>|ecnL9fBWd=3&*nYoOG)X-B+a%6PwQ{^2p z`bV|8i)lN;KV?*`o7y{PzvT95JX_N;)&`~|x-qS|=*N>u0s_!7B>6bWyCu_Rig&b= zxR}uE)RTZR<=o$;Q|a*!mCD1=_gmq=;i(UQAuGXF>4x2velUdrA3#aT-IME8>St>; zxXqd8l!BMB>1#?`657^7McjYXJ=?_A6YXs<*D1F~xaG@tfy52>gtbY1CD6dK^QH;p z#d2a}sDFfuZkq$sYP(SlWDu5S* zLMMXQ4A#pd^;oZRJJ90ijA)=mwk_EqO%~*z^DQr_hJ*+d-L5hr)S6E%YcU}2AI&1S zO_EiFDrU8%IV6$@`OT%cGOZD`E&)aC z@f|BgDW{%F-Qmo7Lsq^4eOMN;G-4p+=Nf4d{2h9u8@3hQZxP@bEm}d8UNAUu@fsQg zT(spY(7BgiXiF!&(0Txe+wYicWytH)1-Wo7IA?r^inRAndJ^Y1g(q`x-8}FncGNOT zdQ#pxoGW&5&FxIFP`ACn>*hxJa$Mspfz2t;lhma8qo+PXkT4^?IuWSXb)Q0Ec6^aw zVXnHb5}6(%$)Ebm%iLw@0GOV+s&osPnffy7g3Al}b{S%~*g#S7shXJ+fv+6;4V!IL z%WU*}JijPC@=q?=SdniypAv$E-&3;2^DV!eepoA5Zqb)mLUd@h$F}sCq|O;t%m@bf zF8@nXTE48_LfPRekJ=nK=niEMv%N zU^#7$G*OfF{V$j@&gukuPJ$<0Pka+lx$k;UKE>NZ%2dQx9$_W`icZsv>~#FrSCYB$ z8_^I|$9bn$Dd~pAQyxwPlElPx1?jsyz>CCZ>nn=6aSd&vk8~m_^&t{sI7sSLLCG{R zi5$>2G50VT)XCosD%|H??fu3XlYG{{r!9BbuSn9&mBHVJ6x(8F9X*-1-91Dyocg5Z zyc=!d8Svc+Ei`#jLdh?jzhYa9-w&dVM+KYb`3ok!dORPW^ANlc4Hw`YGJz<-TVej} zzX`9R$G(OrYY_QI+E*FWm{;S!tov&Tm{8Iav_;-$ zd+#R;iN?&!i_BYyYULK1zx&1qUq@Hm1j)%^68DM5vh`{ueF?%KzuuJ0C91^8k!V^hoA5$&bgDYQS?ts7BK_+=bF zlTB~6Ij=Kgc~JbY&bo8Hg`aucB&^#0^l65+j^l8$XB0IORRPpItZw^-VxyA^rKH?2 z=sN;1rV4vhDCoie?JI_d<7!LD>#h*)E#mvJ1o>>$u7p7F^MdotIAPExAk1{cx2vToU?&n=< zI-HHP)H@nNEErhLmkL9#3i*7GrH@yWq)gf;o%L8TgUlAz)Pp*TXZJ^A@IQafzmT>? zUC*9zF0vD^IBaFoIyd#y=`FgGWSbx1rVAS&g(MOjh@wo6*u`IW(Y5>|Ke zDx5ln9HmBgyk)I3p4+8QpXvLwh)_X#bm(H_RwFlCzHQE;1L#;ikhb|de!U!YeKMbd z#RMKUqb>PT0Zq@TdYQd^(NW_Lj+b`NJTF29OA!5w-G!!N@W|vq-g$dOjCG|1 zuB>29nBM7LtG5tOSY_uIA23s(A@_NS=33rwm^EgR19*H}P1x z_2<~)TJ_ut=yBuI4IwXl*Fu~83g%s3;TGQ$0w-m2K-yIqWPlqdwF{Sn@L=d&{|8yh7f$IF4NN^$ioRu3e$lPWYfXnom`v#?v6hZYR{xv*Z~%hp&V z#jZOBEOL9T86;+Ts@)GreYHk>$FA3xt~V|s{Lf0)r{H1@HfAyF_-b-$-(RRFo=|-o zSwtuyv%X_ZEGO-Lw|fe0x&wg@ePxbo@^jbKwx1D|Dxii8Za<|%0R&s$v)hfqyPo~JHHlWXU<4IPm zHx2{t;VKB-#V_gi+V{*st^e{Ak|8n=i={5q!g*$~imAO>eD2(0Q*$#OwCiTCiF}re;-_ z6c{BD|CPBZf=@IA`zs4h^m4}jlveuv_sohL#=Ep|GM4cb>^&zRK?9zwTU(rPQ>3+5>54S8?oCBuP9De9qoqHa$HN(-6 zHyI-Q_WTV`OB-JZGjL|=tR|#0HPN9^tIRAJf_VVIsQ78ut#i%_6@8C80Lw+sH9y~A zQ{Hp-`onx$(&SexnmI=_n+^;0H6u)NTS4cG+09jQ?O%bpGk;WeO!4i5cc;HOoGs;R zO&l3vb~J4ZdJGG9?0i#g8~8jt?e8xKh0-H^$~uhX2`80kbG7r}GMFW7ms{tz8(@^q z+Okgk>it%>or0sA-tqg6v78qjUYAF>uVlkO<#5Dx+S zlWzr6$*nyV_RL+GBo)?|0vc-@WsP59RrBIWl2s9GOR4RoeiuJi`MXeC3~uARZ;Q{b zw)s4bQO*2ulfyS;U(p1tO=FP?@V0qqvgKDkw&{RS`|3M_Dh)_|>~&2T;ab7|2h7@{ z9TrYtYp}%{bu~45zijmF&?&K|4WW|lji zq51t>{LKe6@;t+0LV_kwe4ASGd|v)Is72`d@yG4_Pfep8c&*i^2pcG#Tu$rr@`Us9 z@7U(x9Wo+8(P5skv?P7Cci>fT7x#P?L4+?`%NBh@OrRs&+dA-EiX83`vJK@T7F#LI z%HKmvSdK<>+M<#`1iF6y8euFhzr#X8*7isNBW44y_0HQ{L!VY^74o50J51;Z7;zHp zX2oJq7~jGdhSU6es1q&Ts@o-(+;9hL=30-0F*tMvC26mg5RMJJ_5qH2l%{xwa{ry=)>B zbDp>s8@-mvg{q#oE1nx@3oN%jI1`f!+QgzND=9^SN#w`w8zk=jjv;Oq7w{xEGwK=A zrj;VT>BEIj$_$pwT}xWR^I>ti|#E|IY-Q0AP_?q?<=qj5EvZN7uRwQxK;~Xeh!fRbDsB4k8nXQ6d zi+Rrf9sAC15C(!&6Xw@~h<2+9Vti2tgh5V40;ng!MqeayFCX^KSgK{HD48a++Z&um zj%LuE%noQllO6BkF|p4a^su#e`it;!`}S$lUnu681W8QBY~CII8t%6_aFYm38)-2? z7g#D_(+`L!uVP_S$|-4ew-?jj488+sDLcME$K!WV4#IU`i9Oi66 zN%kM~6PGj{E=|0#m8o2TF;H#(hP#f)5I2G2#&m57djuOi4E%#@LuG!lZrU6W3L#Vn zJ~tI>t;zWd{E35_-Sw2REB4xi`HjhTp=t~vA~6oBTlaK%cX%3NeBu4D69ytUuA(Cn zzF37F#O5gZd+8w=@Yr%k-vQ{{;Vij(<^_kxM#2@0`dJZ}$&6agG(m)ifDcplnZ;YB zKLAf@(*wBe#D58r3b<8RKI66r0Vo%ouJh(L?rI3wK~;{WRjv=VTC7~j17%l+cg zJZ6P^-3p&$vj#zSx|bKTHER~U(=ocI(6K?jMeOwgHg8=b~&!d^6%vj}%RIkPRZl3I^Kp8w0{NL_86v4A4e+>tIWW~8p zOjXswJ~?>aIJiD%4(h|;Wv!5`PK6Y1B5T3D4W%!69Ey=-6$K_(CAyHr=#_|^s?EnW zyeeJip{FsImG4Ea@R~ma-f`Smu(Xz2~?>5`E?zhMgszDmpcB4sD zStN6(0`be4V5|iZmyV7tkN7ARL8)Lvb^_3QT;Gy)CxZR|B;LW>MDYX+xEZ$DP0Bo# zD)Kw{w{%yc#6)^ z2j0d4ndFbTQ2{lr{XW_x9VSdhv(JNfs$+`XG>UNan_K?FD?yf_A^rZ_ES3y2hy(<)=%TFzn~6w=^e7z zVinfH8`WSp5J5^c=;-443A%xU?uFtkEo+Ag%b6?IdczvIq0T?kxaC_AtQwc23!3kE z=zu?QIn=9ZZj@t5EgcvTi^{Rs&TenVs9edm-yWL_3fI8sJPe~*B{!PIxxD&0*4T@; znhf^&fPwzRM~%NC&LAl9oaa?8Qt(u#ooc;|1TftN?ZGu8kv8J)X<1@#MV)ZXP)X(E z2bnpzQhQ;7me_tFL%46P)gr|Mlg(C$nM;?Dch43SA?pHCq{~b8hh3}$wvql zb2L~y3;#*L(N*NoT`m^6f~<1=J}NSGc;<;%31M?$G5Q;Jr4(zVwi_apb5=&-ynV4N zKzEGmIP+jo3aYQm@=)x4%F{czRKKQOroa6}7WC;SK}K%L%FXaRTdiNDcA?59x+!vk zF1a|p&Cx|j?WEshvsJHc_t`x|H=+VMW$sr*ysQAB~Ish>X4PQaOZ9JGSMfk!&1CT7vN3N2&I2PeVRZwpJOTKK36hd4 zY#@r{=m8mO9U=$gcK98EDdmDg?8RW(GEpFz>+;P{IW0(ZU`!EqR2z;>R!Ih}o^1km zz<1TVHu9K{>3o(}mM;J&d~I~Wna(R%&pM1-xpj#H*39q%ZP!*7rpxGg4yt-w#EEjM zf-U~Juod@BYB=-IdjX=?S<$!1D<{yqGP-8+DwD8U0Zp)VJdG1l{Yac%iGfEX58X} zzuY=!1;~{fXjnowVNZ|B?w#tR<6M)Zly$-kSE!+CaG(Yi=RLqNc#l~I#-(3{kwkj$ z=UxJ6-e-Th?(uVv<#dNYWIR)+*Crr}j0Jk_te><|X*B1j-H6y4~6TgL#vRQY5lLfI<9qQFlS1n_)pU28F zn#jgC!{@bzB%G)JF{f_B-+RM5TLK#yt$?G`ByMYGONZG7^TSJ;ap?O zM@z^}diHO{YSYKMKA1Z~DS}R@MNF1>d^@z=uXyPh)2*LHAi%wM2J}g#KQ44r13r2C zAZe-)I-s5lPpe#8_Euro`-uu1r^6Pk4f5mMilLm&Liuhs8NK}C5v*&_s2jF*y%%o31KG6<GvEQyT141iJt*a3Z zX4|1~7J~OBX(R<3&vPoJ=!$FPWAYIg_f^W>QpoGVaJNHL3uuxxK9obmd$Hq_;%AD3 z)~3DujeKp4ZYzP8<{FzQ*nw#FCg6TMY*~=GixW)~NqSwEkk!m1r9rBv;lKAqGMg%J z@t1#fwjm=GE@U^N{=gQQEZDD@X?VXv_Wa+9^jqUr7e=^! z`z>J%@!I3U(QDkq6$pHbA<;FD53et5-py!PfIc1nOK!67DOp@1yMVBYs5TTqF~6!< zekt~?2j-Yg3xukKC^2)+QqS5K`qC2!au;p!o=XpvVJ#LfMiao4V~_wS%*S-SfdHiJ z!KU8vM8<|7IK4y8zT`Ray?HWfq&4|Y10}tm1|Sk!zi8hw)L8G|L4k*QRzDhCijsw{ zX@NMPVwPs%WrUX@x;k);gf3e+h{44BE|q@0y>aq(=HE7mg-SRY`?|Z@`Mhxx1HZ8^ zK=@2LW7t!&bbYMJs=yqte1Dt+;@&bJeo^t|a%bcYbvkkFq9_D|gi1`+9$I7QJ0? z=xq1y(`F8B_h)6!;k3=OO!i$%u!`m*A8*6sNXfSE)X2xX!}}Cu;cV;G1^qyB1*nF& zmgXm+dD^`9eo(Nage+Ib*9KJ$*d>D3_tIRrkGPKLy8wk0Wx?4gB*QmR!bG6UIu7tmx zJ+fG?!>(V?dE9S+g?n^g+(oWSH=nnpO%g-v)t9cOrmjS*iBqgYHAtY;Hi?ibc>u)| z@S6$cr@V?`3+q9MX=qAHuA^zr=WNoH;NrvZ>Ea0UF&?f5vY6^4v6{zE|D{ z-LH&>u_`G-C6##-0ox3&o0&awyjPG{?b|N>UasVs0tMCNrLV(auEUyiEu<v7 zM;~T_IxOE+I$)N{RKAWhd3PP6l|8Yh=R!T?BLqFd{1k_P^4P`A4IEdf3Hzl6&UTt7 z{ME4+{HY5FQ8Wp7{#h;?bfiyDsqoB=(B~e}nN9)GdR%u2*@iwY2L+d2kwRUqYNA|a znBxX=4pT`!7eMLrtUq%keFjt@mn%0e&`oL<(5)+Htz`;UAu|eRZ{tdYcRmY)Tpze9 zzmr=%nL;T}nsr$i6P5qwP;73SQuW}J>Kf+Sk6)@z+xvRF#N$2A9!yWKwtBBbG5#a~ z>5URIksr?GQ8s)9l&qm|pi)Bg`52&WxHRJnR$Iqi2AZ0&VDFeG&GHr1)kTR;7488W(1^oWq1o&^-KRYH44tnRl9TUmtV)29gq1foj0ud>o>r_zHvI z;s<95OOn?~SOC<&mlo^9;y{2E6A@t&CVl-d6i#8>*h-$TS&$X%D)keGKfYKqC)mbyFEdR%RVbcZ za}1gzffsspTeRplXEa}<3Lr93crtwEYAx%N=2+LUrM69TB$PDlZfHznm(?QndfcfP=MPlQ55^_ zvM}8D&UR8Ujj>M1JP<6KLyhL)6yFmW0d^&9NG`tU)Mc)MG^pSx&}0R%Lo3M694f`o zvFrsw1b{?>Mie1N#Ih`dyecWrvshEOD(?EKyT$tIP{tSt2XMLS0j{`df1N~ky-0tXMd@GE zQ`1g{C(hV#`|W4%$5$YE9of;$x`Vi(P6bWmO(KZgb{5E#2HK}2ZiPtgxJhFNAh+du zJiXt%tijgG9J@_{Sd3kbcH2C$;YuLz&524e^~oWHrK|h(lI<<5f6?v+}9uJg3^SA z7}lDwb0P@RHLjI&Fv5Z~j6?3&aCxz?;Z^<$EY+m6qE{+2w-k^_^71cWb8r^? ziQ4LDVw5OpjEE=93Zg?|OCGj3He8RUVN^Nng zY^qddsnp7~a<}8JAPfH^MHb!5oIKwl&K)+Ex`xdl^dwa4X$8p0Q0dwu901KRTI3hxUhla4(kYkJz1XP2&3XO~_?{L84{lj_dVuMk|yS9 zX00Q1%@mdOLECaspj=diK-Uu){6>OJ0Mk1%`TTm4r2J6qxwrhTbs}U}H!IG!+rR&6 z(wC1Yf~u7{p}k~ZoPByN>S%3lfSis%q6E_$=UaA{Lekle65dGzl$sM!%_!XC{J3UiI(zn;qfu7Fag}E=p-`6eC&FmBMMLh_z{g3ijza7> z?ulvxpS={wmX~ejt*vm${E!tBY>4DZK)*-Wk;8BO#!$_&61r=FiV3)i4k9}4S}$YY z>uToYk3AUA_2u{bsO{Btf7)-Km%JYcX$5_5;880mrBSbZ&NBwe;2~DOsv1{^9b+g& zs;Yo8`^pB?;d1f{wBF3HktA6?ssBhp+B_AEh$QT(UU*e5mbU5KAskSEVOlt3DM6GJ zj!3$3!vZGrowZP;llnx^vEZgAPK4hSscZQ?hmZqi-;cVN)Y`X&H*B~Bm>xO|Hm3zH z8d{BR7~)lcGLLAM9ARi=T6Hl_AIC91d#fDLisbi`tTcmj8Q$fiRs~!i?hU>_zpWmw zoCbMKxT}ECFg@=Wwu~PaHmwCGWlUj~Da6Chc_qxZwIhJ7Q3d5=eX5_Qgi|~#PuNAT z%fS>>3AxCQ87VgL=}!AxmB;lwO*j%+{0gw&>FH2UMQMp6RQ&a5Z{yvupYAk|A7NaS zVO;olT|&Qp-+8preNBH^BK`VfD7fdocNVvcSp1JA8a#5BoSmL_8Z;F&XRfGN&YFt+ zJ#xd_R|H}*JwG=RzPS8nDxhZEk63e-K*>! ze4Z8owLT6YmUX;$1aU1OVJQ?)V{bedg4~YtL8X71975n9NsV{L*v5^boS<}=19V4Y z1b7EV9RPHvp*xy1Vbc07y>P+W@d46^wp?fo!QlJfb~pd*=iZd|NHARpMF`%hFCi{6 zPz3{-N+HQ&Y8?fV3fkDpC(LT=h0F&b1JqP~NSTk|k6No90w#-KdKQ5$85sQBzrADV zA3yXHm2T^9_ujqkS=;yQ!gesVa|>X2^cjy4pi|(enI|}#F_nV#OW+MjsH~I_#w7@B z6}jg4ygb=ej3H0m_yI~Thp%>k?r1MyzWb(k8hR%t)lGq;$s+;=&j{)aUT^C{YFE_v zq4(U?xao!$!rTD5WiJ$B4c#>#qBHsQdInNqZUii)#Q z4b;$6h?qjHKDE){B?NMlq{wi3A(&f&+V`(MZSbOtf715RD@66Z@v@fIelYl(w5^U4 z1nkhJym?%M@Btc`2Cu+CZuFtPEdx$wdHOtcY4fN@I|aNQczk}b7Xf|Y+Uc?%9iUGE z3ExrMbLjT5qsiHOkel7xZHT(#UqAjGxcSBx7YegMc!xkelTa-dV6em?;}W`1Q;$px zb=2ZhlL3pmpicf{F9ND!%m~a_1j;W!%027XClKq6BiI&GMK%UPZ2=i%Ai`O&<<8qq zsekIcUyXOX-8(GsT|!AawTdbcxa8=Fvn0@kdaNLpykGf?2lYNm>JA^1mN zA_2W3fo)&E@l^TK>)yTFSn4pQMJwRt6UyIjty8oAxh<7ynmOoV;u#QClp}y9UZQZn zDMsDf1b8L{fxsS@Qt(&zfIrX$iAP0j3@Y>ndL+)Nm-j>0D(~5z;lODXso4%)FUbm! z9P*-jr_*tC9BrRFg(-6o5V0Kz*O;koZ)SS$K-*EN-WfP1**e0S4`VgL-QQCkIwLc9 z0ynQ&)c2LIU6K_w)O~<3MGZO-HlQuYCho@R3<@D&^Oaxxj2hT5Z}^QOsF^gqEm=mF~Zp)^yx zX~2F2j!w=8YJ$q`*hv!F%A>1foIpJ3wB?DT%HO&Et%U{DO-w*3@ogE^Ol80baE+eu^B2wupz-x@yxZ(tvuI`l zI=8v!a)4O}LCeiITyT4s$CD$2TYrP*B2PyQ@plhB;g=53X98&@IOqvIOzko$4pX~q zEIU~CaHpY99?7!Lc(d)Lt%d$nFm|*L?fj10-!8XphLj`Nq#;Nzf*{r43lDYl3}Avz z_vk3}L`1;))I*SY4~*K78q#Pg&ml8eIPp>Z+y-X39XnZsd(e=7QV*No zJH6(e5Pqi|e}S^7-u~lvn5Y1{pY5Mb!mAH8En z0yhm4TLI3N-WC?f71y@l4CzSpIa~d2{z<=?Zujc|eP0T?OhPadcc2ak z^kXt2Ok@YDP6$PDX(AZ>Q%|i^1t*PRsz$dqac+y*L#|>@Mc+5$-Q0H+U-{sX!VjPj zgb3aWJn9XO&jco+_B(QJ4#acFv~N2Fu6l5JJg{!T%mZ`{in0Ne4@#L~tC1${yqV=< zU$UReGc(BEX9S1fsMBtAfId?sXqA)>N{Toerw?7%gwm;);&T{2MI)GyIb_b{K3RgV zmcG`lEo}BMvpe>(FKRrwcDd-^20np^l2Bs}2v8%JCbi{BYk>!aq;mq%p69P+^~eNO zSVJ~4v<-q4D^8kmfG+ZsJw}?hfsrV8n_|cF23Z!sbHBPFK&STXUI5{Oy7tTH71V|Sv9^cDDyTkqO6K`(kB@tx+8RHAL-^lUjUaqO>(1=Qj1ahMxAu z=e_-!J4=0L1KP$Pm?l?q_?eyIztCd1eu^EQ9*`HGe$Q_P10a z2w&O)G!d#7b)iv+DMExBKl3v1Oackca}eikRe9O~rSXIFj#cci6Mydj{a_!c=0*kP zp|Xn*h8!hGadD_{ui4SNUuFcQVUAN8RqIJ3xT@MC$8nu?KVKQgjtpi2n{+Az&9qdfI<0nD+IXWDFC9K-Y6GRgu zs7MDbMJp<#6P^$oSV`Ix_p+HZ?{cU*OH#A$$sPx-9r8_+rI78~HRDX~3>7`<6E6Z~ z_oJVimB4tpE~IVEufVEv)PFm|xuVa-AFI2oSBl={Zp<)%=%y z0p8NTxY7aoWRO<2&n<;2O5H3y$(v;e;n1P+T#{|Q>D`((cn3^g1mzacM=HP$Gdk|g zK}j(wj_bPHetI@Z))P*}LS<~6w`X?^YT%LMq5QO)1r zf{B-x{3YWmeJHno{tEq+PO+T_^^8ZryxBV)G>`NAAR1>Zh?6~IICu#m=K!F-?YkG6 zWD}4_N!z?$uu`iTj&|=1dm%r%@#k%sN%L;HN)G)}D=j7{`>%MfE5(x-7@m5G~#^GPx z`N;9f)^EQ`M^E){cRWWqSP0#J?$4#=aYJ7I$HdvTo?t)5BqZWhklEY;+*U#+EWq(aSKb}&8*|AdisGvCf$FrWR2Ivfxj_tReHRio( zw)aBce_hN5ezn-}gCyM#{P-NGtUG+npRcb!9QruEvsSftoucee+<`l~>5>!&ckT#&$jcpW;yIk7p(8Txf0gc+>s~ z=K>TKt(j4lk)?|t6+zcjV4&7=$io8gqmO!Y=Iw9}#lt+%g=RArKj*{VaNYK%yU4zc z!p$GO=3aK#3HMIlyPfWMjw{5tm-}in&xUP=BEX*$C~y4gYigCgC1VBk`s(-pB#gIO ztv^u-GN=xiv`w%Fh~++iJKS_Tl-FK%HB>gux8Dzy{pQJKtpK&-%FD$V zGcC-vyIxmc`>AuRM$RMZKyA4sxxZ{HU+Ww0jKE2J)(g57g!B7n(!57UELc}8bWi#? zY+klDC>WQZxOmYMGi`s<{T1i=pqrePqS&>zojR;2LyA$NC1}|Vl%-ra>eXML-r~z- zd?~8Z)T=i2J8=Us1d`k8K55thKcp7-DP)MFB?Lb9$V(oAEq7WixVEp_=jD4&N*{Rb zD!ud0h1BuW*MT)5$_~^kQ6j|$ZXLW?%|hTF6_LQPs?Y{ugggGXH(mMO+oAHn^NY~^ zl+>JRD>QHO*Df>Fs*pcn*UBR@;{RbvQ|D9Kffg&mE^=I0ih+BZxISa9S44o8-m@C()Tp$(Kp#oXwnR z()_deubogPn<>phltd^eKgIJ&@<_^HOobvD8=s}gTYU0w(q+eQfO_4Ug*on(VZpN|s*_5PYEnwcLsEMK~7eDHIeE zh;d_;@c$liFOFXmh62=*0Ns{(*h}%IKa>@au^^OEfRoQ5OfrzGKYNyX=uJ<;##_&Vn6&lg zJjMe>*z|=<;Sc|(ELMN^EnXE5M!+F0q9D+LTGT<1LV`R`mMBD((xMas5PmJLanKb& zsr0NzfsZw?a6|(Yp~#e1w5cp)hO-lZz(hkfwjr__Q}5EjyY|bkiSIk-LD+K5MWuNAZua1wEjPbK-govc{n&@!7uGjJ z!7EtvdM7McAqnFM{wab>#6t`0q&+G8xsJ>>D!uahiB&NCEPu{p0gNpP$|k(IOwTJ` z`hyUK-h`J>P_086g(wFXpyHvD;t5*{wr&21l2u4&MI!K_q7$>&)-3l?Xy{40Yyq2a zNWtvWU-w_r5x}T#ye}f~vo2gQ+{2_qXeuUyd;`IH_CkUGP4lcL+ODLYn>-7H>bM)^ zrv&V*hQh&%KKRcN_Dt(~2i|0SsqyFbB_e?cHyHt4J4B`wjUX;K8U9c!q*Lgj)Ssg4 zpK?4HK7u-aNA;VpQd__Is#-7$BL7*HK-Igw>O=ThWFYk<&j3RVmw1>BO3Q(-!DQ_h z$Dj$WrwHajo-&d73c`j)CW;4)SydL9BdOx6Kt29X7iMe!{X!NUiP(bdG8sV4zKl$_ z2EE8^D9uIVpvcZZ!AMyHm83R>_$;kJ5TY(^8idipy=4V z211IL4p3{bg`t5L4&5}B835gH%1|>bq*|Gn0iZa0Q%OTl5DnWr*Jz z6voK9hwB-|HINIB0`ZDhUppNEEJI!uqEJYE&r_)2UP@3PD?o;~DduL-vl#i7SI^Dt zz=qQ_$=+v72nh;OMf|LqcNApLdBax(OmCVL4LvB#*_I+;+D31A&>?rgrF2j6f^=&l9ef{*lK>v zW5{?7g4zFP?>hkOtg8IaEnj(U-jqzrB&3r9p#(xl6hRiGh_av}AgiMM0T)*klwB3e z;@SZL#kMMfD2l9zqArR^7DSLD2!TL)on(@k*S>b|{hxEcHz}k{!b~dP(MK|qSH5?@ zd(ZFG-=Xq=9NH`e$hkwX{T%wvk?oI9$hA~u$T80{NX4|O2+R?JRg}jAfIeG@i^ScTF! zU{1%1-B|%hp0kB<0af{;5kr;feuUm3?ZfIka4O5dZL9`2P7i~^8%tkJ)46+f6bc)! zpJ<>WCN2*HejKMnH?G9{oVVw%xX%YZ0ozN9yuH`pq!fz~Piy2qDC?SeTAGs}R^UjwKvKBSx^4g1bLW;?X~$Z7Pnu z=z7Q(*GJQIZI8tET~ib%+PeL=*P-V!__jwc%2D9N&aV~d@d_y7rj_8K*`F|NbLpYq zhYBmUR;f=4DD08$c?_?yfeH^TYc=?k z0I}iK$%+ppzBeiAUVui$=I_Yi7I_5I#DiQz1A!l-^g#}6{ozw!3hM;$U+!h1e+i9Z|-KQy3Pee^Vgw7p78qOl%=SrVv65>AG7 zg8LlLB&CE<=ea5XKg4@GZ7Q^!d*P?{RF9Mx?lgLEluls62Nh9GKn%GNsIMkA&>u-s zM-S5CKf139((Vq9#&-dAni)0;i5K?BfloUP&;!`8psEzRBQCqDZzzi5 z$fVa*Tft*EDkI(pF;CJGC32P;XzAl^^4HybMJX0wsIcnzI@eK_@sA===%*oIXq!4G zj`)}lKAl1!NMrk`wA~Mj5REzpw^%E1Tc9B!Uscc+7okH@9tf{mQP?O3&!fU1+%Of#u7f+Yd#>7Lz*$QHWMO(P%RlSj^G; zj=^u_z^$R;#RHNLY0v?rEK_a_p%+4(yaD>Rp&0*2bGC7vh~+7w)jH21g(uWZBXI#Mb8hP%QcXtJ# zQ3+CN#dcp951m4Zh9Vif28w}%BJK?b7ln)z3pC{M#muHc(6t?c3!s89W4*@E7G>gx zH>i!O6U3zJPXf1qyRfuF^O{DKyQM$eUW4rhrE!}aV5dx595a4-?q9FIN=6dul{L^P zlt3k+tzThk@J^yNP;6}o&5dyE6fqYSo~{H4e0dms$%n4?hfUlgy>t8hXe25gK6?() z_-`a=z!VL%Oh+8>(@2s{qS*ANwuP>?71BBg3Doi5b4OhAdCwoS0`>ygX@Ks-D?F8s zH{Quco<3)=?;8?YQ~pz@BpCr(+6`wI)C?7)A?P^h9U~CwMA|T#PSA@Y?;N#L9u*P+ zt3;JSZ2d$Lm_)QFxbYonx#0(YpwOfAB*gf6x_vqnrvDtgahId^&*SEz52yTA)usj* zdgi25jY@3(K8ZavFwoEHe*kX?f(!SMH;tH%AmF9uFJCCqX=Q>2G-jFb`L0~Z}yrO(s) z$p{q+NAFVd0{jQx{@0c$~Gx^2T3xuR|R{R346J6VY z83Pm}b#R+IiLIDtl;1|6RjBBOB8gJ#9}?9v4#dnKBZ!P(eBuX&n~?`r2n4F0vY#sv z6eSCAgND`MCN6nb;YGyr!RReRW$K{{M4(dj5)Iy~iianDiynrh=lU-4x&@$xO|hIjzJhF5hRUP}+KbibNrNY)mX>?CRZ;^$8rap+7a ztz2nSZkD3d8G@L9qOEa4bvtzLv_{84g-|$T=KN9r`T5iKbO1BLwGmJs_puH*@D>e) z$><(AX#|uilZ;9y{Fr7Jk3mC?GtW9r?N{miDf!Yy;JV{pVxi1$N9I`y;fEl;@e z_8Q*Qx=cf8Iket#VcNf~$f{!^Ex^J5F!ao2!t5j-JEz<*J7$mAgeY`OkNz;MEvVql z2P!*i3(@$eqFf;5sBCpAeiz%@j2jJ&?0Dq69+Zd7?tt7R{IoTBa7J~r{eM0wX@ARe zMchh)+OkliCDJrK1L|KkwvET8c1=2xlEO>e_Lijs6*LdlU&{s+JluwX)Ah2O8OYlA z@LEOldWmnFTkojQi(aqiLOAQcz6Se#>z~#sxDhAa6CU;3(|mg`JbVoqLTC^n=qdDI z$-?!i-3?Nv28w4$>*=M1Vz!eVjii)y&usLt*JmGeFDPV|79w%9&Zv!wY9a(npX;Jc zrs6sz9k1_Z2j6=NbewU=hNEtWLUL2Sdqg~J3ItJP3*xlfYg^e8ox^qK_Bx5*k9zZU zlgdDt^d2+i<322*;T1uyhWENA`j3|;}G%Y zlp~YY3eX;)Vj>=+v5Cf;7klHGJRYts@DBsmBAA`PMx!LS*)P94fdT3yuZl(wMi{?IsfU%J#u zU?NzHMvXt?ZBIMA{BhmR^y~h~Y4#-ZiC=hE;eelCkYi{p#5wdr7!Xf`i%Lq` zFgpSgDQ!Uq29+4z?T9N|_(PtV^@_>yM-4|0I^?9(Y>z5l3y)no#E`@Hq512MQs7a@ z6(6{_P$8m~o$CUA_^p=~W_Qfn~Z)$Jd0>p?L7T@S1Bc#!lS_%Bo; zPB~+qIN-(+MTP7`@wAnS3ELZG53siL)P;Qr>n_>mu~hlu_e`k5-V=6&s}l#fmWfqV zwn;jn>qXCO-?N@>-TzO=dSkBo@Fqc&;tBV{;SV1xN1ZfBL}|r4!!IiYwJdQPe%D6X z_wVo9)?B8B11UO_@&wTO#!b%s6d0NZAC(b@76?&`*71-j2LaVV&_r)nMYIM2`r1n1 zPP*n6Z~D(B!H75Bw;_+fkV*U0IWYD|hvi00!TX9fJzg{!QN?Q(c+#6QIC7j2MpDDRBi)*()I6xk*D6drzn6vw*a|OSKOE%`}RjwA+7k$p%t8u zwN;=@r_{x~*_UmoB@{i!&`lulLiCP=O}S7QQ=4=wu%h!r#-E5G5M-#L@hNHDaF3AE zx6dVm7+G#z(yk+|1T#^xzIufc`ggIcyw`tEn zeaWQ3e14w%la6uA$K3RdBU;}1?)&r_G<3oSdYuOH+6SK%aLv%LMn{JXAp&k9i;0x9 zsR3(vYHGDitl`BN8Q8dY(bMJ+YKI5cS`=M^w=M)+aOZip?4r33!SkA`XH=9=yn)Cy&Mx zUaM=P7wOlttX$-=p`npS0572DPljBGhDI*|!SI6vHub&twH)yGeZK(9-lrVZYmtVAJlpAZedrJwa+;tlK%{j*Xa5W~Y>LZlhF| zx5JVfzZ90Ue{_}Uz2|flEQA0LWl_O8T5Qo|JF*9dq7{m#d0v)= zx}jOrl}10)S+Ws@GZh4q3d9M0H6&GMcEBpH}B> z$K4I>Z@kl#54)eqj-5ZwQB?&jzyIy^rJuYlsyq$lI^AnoprzK z{_UCZ(jQ(KRqj7Z*1N6sLO^Ye-R3Zhr1_^GH`}F~wFLIT*6#&j`dh)MT%`nYVM=V; zUjK75?1VdI`G7|pXP>2;9t6AxvbfXRhN8cmw8&ZV`!NhXxY*SQiU=YD6h@-|2zfMO zll*aOoqzgM+mK$+l9xwU|NE17Ex-Ta!=0BGK_Ty0=Z2_>3*3XGfyTR+OR0C0M%udN zN=xs`YYKQZhWhAE=sf4*o8W>AKUEkudi9W8R|6GG4%EtbAJ-TCPD2-8ri;rJHr=4$O;llbmr=dtv}#(~H8du%tx$&h zb^M&QT$Wcc+1d?mxd&vv5)^0M@A+e2V7UqZ0Jm)y7pG7-e*+-tx%X^X^`|pUW6@+? ze_xBJEAk3f8A&06aV%fM4QJX^)PeW>bg}U9F6)s8hDk)aLAqX z*l^jt&(MFrh4V+(et*yVtAF_A`;+<4jtu)&0;?j3p(Pv;$qyM^c-DwutHE5TwX{LY z!3RA*=I}%Bhd00b(=d9>kYAHVV`KT-U$+=~iGMx?@(t&^r@T09(49h*Gp8^+dFDEa zZTp=od^_Wzh8~X`9YX7|A?R|Lh7j<%u||`Ig|-DTlVh2yER9*IU<*3W3ElF;x2)l=l0 zClm$CcHazQE}1*lyg27DzF_XmWcjl3y0U7t6mG!1LLYPvU*zsP^-*`~^haUTzVrKE zQ#V@V86VO;-1zA?KfdxmF27dh^BY9qHr|U=5IJ~27irEM&j3YxeC9zIN0#Z%ZTFyf zWEG$@u@OlY8PHOLtI@zjLm+VD^vtM~w}?^U=b7LAkaNI=*YB-+Snm2u7@WfF2Xm4= z3Cz=Q(ykc1i>XoktbZygaLqIG=w6%)rl^8f8hkqw_&pPm~09vLpa7UwivKGMe1!%{y zq&zgyQX3zyD+WcRSNQu{0x-A6yjF1Z1+?3foNpWtRXt z#U)i?ml?wDZnpNK{iyq>n;|WVd?3nLwZD>&4NV9X8d zFd-&Oz^XBHj+s^ACw=Xl;t;pIW`O=06tRaIElFmG?Bd7)*Tg+-`or!0{rfyUwrU7Y zuM-nfq27ghVDr7^0~*1mvSS>ruJ>INm#2cGgdMa)z4X*`@7Us0k<}HWUz?oDI?x@+^ENz(>vVEnudyj6uAag(? znC+Mzbw?JJGy2?{8(gJR2Z=!vAC^{K%ajDif<_DqZ%UqsmZ+sP&I22rKxN@?rofZm zy0W$z&p6n_0fmf%#*e>qZR3v*Owr{s%~T%zelcxmAQ4YN!*&}9%b2Nc3#`KRjyz?j zA#!Rl9u-09s5+RD2{ifyH6Y{v2K(cf7Al*AMg+if89Ocrv2qLSY0YW+7Up}pDh}UJ+t3n`W`sT1dAtd z6&4c1lx#WRVQ4%1#+}luKK9-Jsh8ez3G^+o%+R{I%)aFXcd4Br9puAk+GA|n@gS~% zDbRGn2-g1Zm0xIWKm0xzd+^ig_fA9sr1J5VG^sPUhXPCd{6ojBy6!7idd0x9Sc-^) z8Kj|^a0KYYP5bDb#18*~C~pT-`7(kaG*B@y6sJc}Jh(#i2$u8T^(X{yqf1c0dqMOV zt>~#oGKb!N1Hw>&^je_pl&`%P#vOP6YeidRfW8aFn3`a0Gs-MlUBXjyXk44OpGqRn zamqa+*EJ7{M?LteKB(^>(@pro%sA<5*E06q{Dfz?d(dofHrL<1>#Dgk*&>*y6;~#0 z|FigOX?1m)w;Y1hrHv$SQ^gN-Q2osZ!nKduvBVw`a)Aq>Am+vR z-N_3%D0f|YJ0JJ4iwn8+`_6)SjC;;mzvs-#d)^Vv|H=(<-@~2EMBpR(1>6OnSOt|h zq3&M!AH4H~dAYIw{+=B=xWym4)EoVwFNQrIz0%hO1ReC!i3fwD2Ps@gXuy+D!27kQ ztXr}xpP2H7Igrflh2;JZJSN|A>lA38GQVJ{YEsz~!JIX2bw!H*q4VjM0}zkK9ld zyB%}Qp;c+91{{IDkfQpmTkq^u7{y;eI`ybcQU)yuUPDAv# zI;CG_Egj%>oPQ@9@!ros+uqrWxwlAyfTRV|lf$_eKIX1?yi8salX2R2ta26tm>nKOEDosnxd%1b0qxU&bP9|- z{=QA#D_rYG^RE7xp7)JYeanX=Ag&`|77CzDji_%dn7T{QR87dGmuTMAP?b@2{c z{Mxe4OE?&qegzUYHjKbJ3X(ZVnZBy%je% zTE%Fss;==+ocR6M!?2?ttZ5|*Tx`5Cd;Wf4b-_7LiN)RMMfFdupjD&Sn@bptDWrHn&%Z zB2*sw(+l~?fBwNXzo>iun8wS;EMhB{g78v8MQsOKp}Mt&WMIb=+tHme2Vqo$oFmcO z_P{&nr)ROwH{Z39ihcGSe=RQk$tr%V9{-t)Sf)=CXc`aEtEPfHl86bN!bn+f_h}6<@h%=n$#fpAo%w# z5FmRMs2VER@kc`Wd=e$}sg7Cc^Pl`bsFGbqM+DB<_5CTq~B z8RUpr7F#Apvg3Rs@JAN{;$I&ZKz=_3PFDytt&2kPF%{gQYwmFx{A8d(EoqEu7@~AY z5N;Y3I*>d4n;-TMc+b~fi;>5yC~j9tw5$^redF53^Os%g^(==Lnt+DNEF!LUkq3`L zmKB=vu<+M4p9K85V`ciZGJ(r zsuVB%m&e@hr8Ihg3coE$Foj5ISdy=N1oAv6$susi(@tuj^Y(?{S8Gsx{?ec8XoLMW z_dmX?m)e9U>4K9pQSLGuJzIyU_Jca(c(v-@29%=``##H3}oq5fQ2mMu&j7Zdr~T;tWS5 zHeL=Gp19hQ58VXI?mKgR`19p)jm7`^n`G^3fP4XBcl zHYMTJK%ye5&iUMX%k5bXNKPjbvhd?B*9o6e8d|!O8Pzh*o1~E-0qCghDsnk`dF8J)%p)qgVV3vSt zS~d%AtiW?qK0V&})2$&P(gFrMaE5-?_)l%tJ*oyihX#7M zNn(L0acS-?-t&M#&@vAEV;?U7Z{Mb5sD5CaY3PNJr{W~P32s~0FsWm2@Oo7O5sf0I z9OvQl02Y1$!UZ?jp&P6@n_%7Ku5GnoD55p}+Uscy^N#UYwbL^H#}|dqeB`DiUXJVU zLL5Ypmkt^kXe`sHSd)%tBTjn_F?e(aLkGGS8z}bC_+4#V5=2D9LmY^`qt=#YT=<#% zp(pi$w+H&B8n_}OF_lCwJr<3=T^$z># zh^@^-p>!tF(Yv(qSh`Mz<^Z7OM$;>GkOwtPJc4d+1Dsdv8C^+i_Yz6&H?@vHYFVF)?74bdQUd$e_f z9D4xL>FAV8S}xS8U%yT8aW90mxn0COX=qk5PyrQsGIj_J&+ESzl zm8aWw`~%wx=BDSt6XIx<4JR`}L?3FKBL|l8iy{qnG;joJZ+;_;+CMAs%{=s7BYlq?-VnWi^+_Ql15_z9<)PIYfD^g6u@k6s zZL580Cv7C^EZ&;;wqPL1>NFl{|OD$v6T98|RaNRUT7I#Rm3 za3*yooAE#wk4XM>>~aw;fEs$%G)2k@Q;#KN=>Uwa0y=t-MH+ERupQQf?PTQ*beL9>Bv@IH~@6` zBCsgf#OvE051pg25)|@~KX!oxv4g9ZA3x*y%EEi5dX9_Wg(r}ztLb|QX@QI4!30Gr z*4A^UXt3&*P+N}PqzwzF_Y53n3kDlKXiz=KpuQTxuF8QsMNl5T7c{Kl`<;#IYSd*GXAdnev_BFmS9Oi^SW`mT}Mf-!FOZ@xfN zT#*tOC}Ihbts+)vy*BqfjdKMT4?OF65KZK{DdnM{Ou1_ICTsgd18ktTw^lVNA68uo zyz%@ja7Sle`fhbX$E=X!KXASJ$JLkTX&j`?p#p3`l;pva2m}LkJ+&zEB3<-q5>$i+ zatSIzuLmlzg3^f7=0N)~_iXE>h;ZR#JM)?n-Bj5v3=G69B6%M7VZ(;rm9ZuI;LWpP>1gtQsXmaq$kl7YE&Xuos@X9F{y<_FV)cL}+1R z1RbIaFxJR26nd8F_~ifr-)lEE#~b(H`Ai&ZU@IjpAQxH@?Eaa9I}h*AKXSmAIFOGJ zyk#B|PeX!$tz~R!P>r20Pm|q*1zVFaTVKQct*dZ5T2&yh5|HDXS`cT<8UvEkXqniq zb(DSp8hZH92?8?xOKc0#wkA{zNohTe_tee>AkQ19Z@-3Xk$~rQ0*i5vHt>5>8`}Q( zeJ3}7w>NAXtyNj38BR|~x8d5!G{Q)xibvTYUIY`=A;L8i)d+aG4V>dY`8j{)<)6qD zLlVR5r98q^&}llmZ^w zZJ=>x&8l5Gn5I7WKq#M(0s8JH<1hJ`S#|G)qI-6khEG^Rldz6nk3aBhX+H>})TC~1 z+!JnSnL_+Bx{Lc>{a%nezbAK(jS9+g;Lg0SLq{j{MQa|-bBEbz1D!OE08U^|-;7b^ zmXQch=uM(W*)oz+z8b2lLXZwe;Ky@WjUkT~dIbSCH@*Shm<9w(5cgj2K`rrsg$@Wb z*j$D{NhjZEI|v2Hkf)F|6&s@A5Djp~nT6XVE#@PmOs+Se$lH$`1l@##7pIJbaT83r zWyMQ#;hXdL*Xc8<(ufby9Z}9arglXM9(w5X9;?I($d~g_8ts5Tp#i!xga$=*@Um%+ zoEPUH5fqlk?}th#R-tuV$T*@;QVNZcxN6%1^9=;^sYle46Tf(dKcdP07O%;J(^k)v zm3?JY9nI1;?(XgZLa^Y@!69gZyIXJzaFByba1U<5HTVhc?(Xg`2bYiM-siplzxg?9 z&8+U~>bUT2aB>igm+p`-vL4QQJFMzH>8x`mLCRHXwdtOh&7IUor0wR`}G9u*#4nL$5uxcROb}!5wZY$G{zZv{b?Ps z=sw~3HB{~;*y3Ann!f$6?;@e0KcFJeIljoE(&1h`t7?X}<%(#BqH{a*SL96N@U>R57w4lHr_mbSdM{&OKXz^K>*Qt9&WUIZ(C^L;JrZRH_$~k4r{(45?)M^mx7n-n=-1G1SqpoLi%@>?Fi7|S zr=-FFr0&)@Lcg;%^o6A&gxPo*C|Vti>_*e;ebPIQ>#YHb^BlpuieuEbK8-g!g+w)M zM~P;fcrbzE$9~q|ei}z54naoV$l$o4fL}V>8^jU-2`b!3zWx%eiC}g#s;=~{NVyJj zd~v)RvBO2286d1xx%8);u?}^9N3!usFY!QyND?ETI`l>txQSN`n2NMGxMv?pDa#oX zSqViP^Fe1KDgWZ*EL9QEGl>=@sc;?~bktx!iX~}~USmmrlR+sp^g%$$m;Co*5^BBYM z{jehA0!fA+aNBd-{9QKjz$Lf?$p*2RW$6Z}JBH0C^g!TEJiKdV7()ZbA+h{abgtdk z(ak-hh32G;2H(YELv)pujL(M>NF<6#@rKd@9vnZ0nY7ho^g$`Q*x%!wt1qm#faB z@jSF9b+MQ8YPCxAtQ2RzzUHc!#Khxb%l`_3s?g)zod(2|g%P+}mFYryBK#UD6eU{f@r2H;g}T z=$6&Drmr_g;$xMq2nCukQ7NKA)3mg)VdewJu#|US6|^Y?KMr^L*x6LkG2O7QuBYL` z(imXE%Quh7Ks7;;uTN4Dtk*=VgfAt)iUoTqktA(NGRAAMt;3+@6VES^)b}XKFgt&R zj#?Tt6cBVZSLCU3DnjnAtr>?mOrjyeu*niqfQQEB(8*2~P#}{J6F07@)0)+)(htmL zP^KV1EA4Pm7P=3zU6GzP8Io{G+XduWFyTo!O4+PZSzWPm8PL;jME2GSGY1sw1$v{8 zb9M5t<~7iXj#Q%e_tI@KvWSzknF^bV9pWr8j1rMK<=W&ao?`Z?g85hB5=aQty!R2O z#y%CX#qwFnCemQh;#~B7>L@_uw_)*klHQ2yyBosBxBuR<_{HFn!u9;HJ|hyZnod)Q z+)atqM@NO>8-j>QtI15M#z-J&0r8wM^ERJXK%Zd+Rq0QhwZGj;y!P@EYsc-bdmDqt zQN}sJVHmL-Cy||OB0ZvZQqMHev>wBOW;caO@BmBG> zf#ckJJkC)aSz{IQmUH#YeDE?XH{sDxt_~m7^FysN;fS8sf|b&@D--;D=`KE8$1ib} z+Ie+*zXBVMyf|=+P-1@qjw3|^4-<@-VARNsxo84N+0bisuTs>& zT6u(|1e>EIq^5^@=&N+OcEFgQcYFrQ>|~t+p%~)G5Lr}_be-=ixv@($!crBkw_SDU z^g6Vi7*C3-FSnlI=(U1#TGe-PfGi}>i_Ltmte``IaA%BrU(3;34DgYO2s0^J67(Yl z-K6UIqo~N+ZGKaVMz!i{{0Ffut}JX84U~TQq`A)RO@`y-M@csTelEX}DJ!^p`EB^T zd`tf4wZr}IhyLB{-x6_nDxl$A@N^%@?Tk1l4$XPS7--CPVH;_As9W8$fIxOg*+92X-#6#S$G(0grl>&xmQVom zW?}%{x-g{t!}+;^mb$al$lg}vVh+ukuyL>8jH}g=0Hb1861IGoVUL8S51C_G1cN-w zO4BQW!Qa5#lV)SekUZ{I(b`qbfe!&1Mbm@ivh6!1~=`Cu=r(W)0x8cuUBF^Alppl(K_HqKyAb5laRR{1=U6jz;@ zWsfnI`WSU(aPs$$B40Kt#@gQ8I?tN83h#1x)%NvXT-u(iPDM~Bx04&hGsALi^&{kj z&%y*_i(0&dLw;kn6Q)gAanyZ+MyI zstSfQF6PA%$b@qP^g?gLP{kztUE%BM3H`}$9Ok>*7+&E*$X^|Q6u(z{CCpH1pMfBE z0U^&rwtS<{NVr;Q7mtOU{l1pu^zVS9)Fek1O3LNnXD! zaF}2B>Ig`SpP4hNZ|1FHL?L5*ubnlyI1G{DMDKuM*a zj+*Hy7dN=U`=}(arLCU%a6Fb5)X)cY0SUIFIcx9yxE_2M`si!9Tw89Z#^R8M0Da?P zOf`V}M+wGy)z2EZZ{~5+9w(0vp>LgcUC&IW89?qI$9`&mx^^DY79CL1KsfM9QA=?{ zKoxyjzpQb{PD34xPeSUk{z?|3chKA3s5acOgu|{+2~Jgfco*yBB>Num_OuRpetUHF zRSe>5BO%L_IMuGr?(@B(&7)>Zr*5D`nXZh|qp|cgyJ8w@@#hAvzXHuhk3JbS7CgnwHOy5A zhp-3{zCq7MmKEt-n?)5u{1UGZuP!1K^FqE4ev!K_$M zuR9(hCku!T1efC3gmTH=BTA~Vi zzUpb0YSj7ITIp0s$D&;-Z=DzExgDhi(pYe7iIRnKUnX}0*|JI?8>>}&Pl&}gZwAL) znZ{9m7QVjS`|^7Wj-tY@OZy=J@*>bT6f$&-w9gEastlMb(d|jB)q13S#furR>prbS z?lV5@0>{+jP(D={#<%>opKNWJO8L52(8FtfCX_mwX|!eyMz2keRzEKV>(3S`YsXhT z!{P`I6by<;yY?Sof8T|1CppZ)aNYKn9gO|O`kSjj3`uVP^8G(^5D~ap`Xd5M*_&gH z&P#{3$)dwpgpIrpenmAMXTw}DRkF!NG?XC&AQdT!qPcQoX;$@7^J-?0U?SO#BeP4k z_4rnVt9y%Qb(Psycl@l7H*fteQTwjees7a|IY)V_91%3hMR4-OWGuEuLO_37g1?J_ z)s3mm+?VOvOa_{=Q`+}WosNAk1*e+T$PD9ZJ~yqs%(|<%HDc>F%CW@B*)m^DOIGUb zEQ?VjwV)Q1ygf(}x%aAjy#RwhEvdV`x=NgeCV|K>AYe|dCMy(G8=o*BbLRJ@aeDy# zL5k+2X%!>f=)l)ny6#|bd!dxyTvX34PH^h5{KtGWryY!lE!v4DIc~iU02H_ypEPil} zv2cGdHLBm@bu>5Js0XgEQN%l}t06$J;pggD#~dr)dz**4dhKMa;BDvSNcJ!MuXeci zRfFkm1-NdQz$Y65C2q(pZN^eYs&uab9xn=$ePVpj0WeWs!jYJ>i=bYv-J&I#;a)#4fY>_e2Q^zBi^e@D9%t-X6_iS>}E=PcO{dj%R%9S`pbUFs0Xs7`gUh^r2 z5jG{cX~8v|p6c=S73T4B^b((1-=p3)-=%Bt8W>P35tK*$3mb+npkW#Y1&3XZT6(dhpi)5EdMJyP|%|EDh@RK*YVw=*AxG&kv{!yiOcin?0ch)`wr_p?xfb~ zU&?|(Wtfqry7aYtgbST4QGl)WPL90bdJ?!`p~QaBUgn}WMnU=AW0@ks{J-|*AlCX5 z*}l=YvQuVn+y!7Mmq0gRuY5mb*rTI^cCQvnOz5K1p=2xj@WhT`9{F`am(4G(X!Rk@ zP?9?__YU$g&SZ(WsqKt9p;fvj*6SZ|*ly_pi?-!eJ%z9x)QGt_2vNd zD6JlTD(pz|Pk`Yb-8B?iy=W_Q{z^8=qSCTvNixCcxX(McsbxdK265+0<_fk> zO*OVm!}LEL?HE+U^P4mS^}wO~I-23nBJ%F50T6y;yImsn^HaR2FJ-VpoA#A?D-HIl zMBK{23b7x3|N0bDC7VO&ZlkY|p6|4bq&c^;G0zOX#{DXp?t8!aPQKEVv9x3^xpm*9`3n22wQ-Q*NrG zAIX1a?>i0GD67EBOJ zzJ2WcjO?BkUIdDX5jpB4x7UNiM@$xSuJJvyOgWIk%pjZ9goz=gipOeFLhNQNg3p*^ zy;%O6+&4YeHkt1Dte?0yh@tae=!kZf&81(_ykR;vGS*zU8;N5+Bt9fW#ov%wLwph1 zETspWbheI?RAuv4fnLv*F|(Q;mWCqQ(~S4yNzpNi!mUPGg}=3}z!r#4Y{1A9!Du37 z^>;+_7b0S`+~cl|xUUM)r4*C}TyyOhWZ(5C%&xZq$w!{HXPQg^UT#lhX+Q?@v|;-W ztHAjrj4?SJN-+_rtnTdotfmFQgPO7(Uk9*HaSCfm1*_Ef+X=_@4R7UaL^e#+fSq$U zpho>iD^dX;YnE|F$k-+~k6f_CbFL7Y^Ha844CtajQ*7UN-26WPZpQK3$^d_Zz|gCQ zw!R>9Rz~ElV#rifsP==jm((w}+Fq7X7U1r0m#0gl%a8CL^pmjaR2QM_xjfH8bwN=jG7P^tkED5xc@7xX zV8K+urD;xduRO{(E#4rL9=%s8n~I(fzJU#oDpUpXppNCPY;rCv|44NYihy1nl+T;b zuMDe`T(DlQROa0n!(8=_0JgqL@gfX=dNDm22eC-v0@k9fC)~Q)4N<1YNcHeGL2R$1 zSN-S0i{S(kaRLN~X+*E^`mTsLVF--N3D^NdBv7+G{@ysSf6$L#lrwetAdd;(ALLMZ z^~&Z0!fYzR^nzjUOeIGjh{f%2ORDj@HG+uR>Q+p30LFrGhcbc!S-V^x5G`-GmqV3h zJwZx58#^9;(NZ`XUPf1=S)5c!R011Q!!tQ4fQQN4#-m`CZHXah?FnQDv4z$&)nB|K8kg$BaH zR@ZSs;M=~BXj1E{iYwy{C7|aL*BV9OZx>GI3Yw$;=ibevKZz}2`v+pv&p_A@-ufb? zV(U}wWTP#{=$13NwT+gm@uHyH7UYEMwH^-wS_*okkR=6`3> zp?(f%CgcXZoSTDIO83jWd>(7B2I|+7P$@p9I%8Lrgk{O&vNqDltu^)x|1Y>A_b9ZzHBh=!p2Q68iwC`ZjP_$@k0kT#+YE zUc1Tsz1gA zrcrdX09rG+K_H!}>jN;A`qkyrt3G(Sulz5!$~fsw5ca`OUpRpuInkA6z^l*{fP=fI zd{v3)WkI@GcTOXUigY@RF-8|-z_*OjCxL0CXLv4g1Xd__>>KrfwYoVTc&g&o=-m0} zb!EwWpGjICjz9djOQyW~+F|py*uf=^SXs{x{)K>g4{VZ;@3I55fv=+Vci3&Jv!cFa zTqfv$IIBB5J=RDBjbspVHgWtuoFZQ|ryL-QAhxhe|hcZFQEjoXxUON+(z)Z zH?Wq?fo3t&Pj`N${oy4>ylX{G6&(`$k3#u_1?vkm%}^?@J_QDJgC~ z)2@C756{f%m=}VKPvmt*R5#J>LZvVHH-3HfWh@|Hi~mFY@;j7IpO(6J#}zCDp(ptN z9wgJx5%~2dk7odw4)rm<&$^H{{;V+IpgHj58MkdtX;!3$P(x$sAqCH&d!7y+6&TI6 z2yG{gMh)!2}wkM3=_tTDNkN}i6a(F}_Q!$M2+Q4#T0x%r!FAIDAkkg;-*=8|-<=h_o$5|Fg0mJN^rigOyABkSK zIdLKQKM(GL0kA-Y}U3p@ZM zPc~YTU{aOUmi#Xi{0PGeu1DVQa1Xfs&FE$FO?_3gDg&jZ7;^+x-m)1naJ;)x z-)URR3AJkRfIR+@2B10x*97)9$IZF?ViTTQ*}j@}?2p)uCKm)-fu5JV+aO#C5PtE3 zWZa<%2z8il{ zk#TaKL+xPHJyp~!j@Tv-r^$^nlyGf(8%%`HvUSc@FcdDgC4QnNu(Vd^rqTbmc7i=D zjc~@s0qCTft3=`|8(V=NR$v4bweuHO2C<4YM{$Pz=(os-Fwv1T;Fug!KJ>h|jc0#1 zh(&j*z5T&fI{O@1;&oByvAtR6R=)i(IiBqhHT&dh5=*0LXtqb|i(d zH0dv@MV{*J0m!B-a6cSIz13IG2e1FT%@+-b-wFj8mB~3Vdic&{oxkBTGTr7a@a5UV z1y-fWPmC6_0|PqjMcEW41n(vVDKSkJ{7In`vEcDzgpR%fJTRNOvfYL9IJu1ANU&!4 z5MsJ;^{2f&>_>ho`dO@`pH0AHkhMNYTC*?Juf0Sg^7&^cz>=)c7quNmxBBQ>{5OlJ z$&63`(dTZmCr<6;cg$6!sO}sc#*ELrYrBgD=lT&ni<7^25bOC@BtjH|1o}vjOIzdO z{<+s43m0C}&+QD4{{0DS1aKM7#lUqTvi(!*u3);4iHs%NiOc;r371*_t3{jrTMR`U`Dv`4Pw=>UEnry0yFtK%rr z)b4iF8#R8$J!sMZG#1S%g7sZ~MM{Z@^8O7n*UeRS@2M8_?0xY`Uy@H~Wdquj_d#F2 zv3bZu@GOPgdU-+rtX;b!UljOpND!6q(V;cz{5qu9hNc>?+L?hXkJnM1WyO-UeS8 zr}((qR5{%VzMz|7USjR!gteZ8uGWjNvFae*;U~3sD;A!wIB`fq=&xX!2IWLnyd7*o@!_ z&wIo+r0&9z)v0S6JnQkKt=oK&XR-dpOQ{u%eJm~#_9M49AbjGTwt$hDX}jtfiOA{i zelt<2Q;g(fXNH|MM~GBa5=-j8U{jV<*-gosb^m7^0%qBe{Jb-fgfU>cPlBWjCiqcG zw7YnyT&Op(R6E@l7L=GJ(O!huzfSt>PNPT7ffry}he;Kh#ZzDESu5hfOZKBzUAH+y z{EaNd2jjsM^81ZnCM0p)okgD+Vj_6o_feM=JTJ8@GB2*MeNxZsLvqDn=p{VDcfRMJ{H5PIYh8HnQ&F&LOsKcv(1!H6RKA*O+vCkSPJ82w z{g+QRQ`Fpb$+u!QA%=c)N(sgtaK57U>4?Pm^fA8$@ zFXoQCf4F;(=sB(iLAYC%i@&QS;5WhrW_&IdALw$eZ0ZI!}jc{HN6|JbtroZC6>@Wt*t(6V)V% z-llkvETcA@brH|!l1tah^cT@a+*Lji6F8ZNx5eg0tg=!*w2k$)EFXK$e&U#<@XrN@ zK~cgxfovqiJApxQU$IohF~ifo-KdBuC@YeLW8+}EdWErKlH3^m@MQEUb|T6HR8Zq1 zjLL7HxQu1h-YquH={zaG(Q~W;_MZmDEci0CYZpfv-)znyhS9XFTrgVxtm!kpThO<0i-(_h{B&N^=?edJZZcl)(g@}g2t9(c{TSQw;bmGg{+bA>B54pBu zw0*ydX*KcQj<;awu&anl_$q7aD~`;ol5u`lOI#{lz5nN2j*g(P77dD5{VN|4M+|dcC zP9E%#&(1n?pI+PVYIlXb7UwiHh7;tlllMx_%L*I|;j4(d*aUvLyT6IpJ*3;*blt$X zz&JAbVcw0;thZ8ZgWh0Pt8z_->~@(I3jNdI8GnWtj8(3Qw z=lJNOLy3IQ^Ka`8+}R?uPm3h@EUEi>-`UhuT0lk}2VTxtkLDVw`Cjupx5CYW0>VEt z?pLVNRHhF_zLW}=7Bd-g_F?Ci1gEU+H?RG zesf8HXws(CeU}w^0hRD$z_`wA;n&rvk&|Bq3?RMPN6)9qjS0;NoVXpGv2QQOvjp{5 z6n|G%m0EVVyn}2_3HjTa%u7x8)d;)vF1zT9?zZl(hz}$sxkjOcwR;B$(_7npwMZj< zruS#QJJNtFN`ebhbFBLr5w({WCPt_avM`(PCS!g^JRwfD-VY>EC)O zJlDGRxBj`#a*1}(>rt5H{Ew%V0a&Tifk#3RCAWgL@a68MOF`4~6FpjF6#muQ^xk+> z%e7(+ZN9BUdy4kGKv$3<)aR^Z_nM+v0Zqk(fhmaiYD2Sfsz!g426!KeY4@D`x?_0RIk~(*SuJv>zfGAP3kcdwl@_*c{%93i4aS8F zda@FFVbQ_iccS!y!?gZ_VB;U=7Ye@@4o3wa{|51nFA5!Qr73IapClmfIXeCg_`h-s ziTp;_AEm>>Z}|Va8UM9(*v;sB{suSv!%*l@KYv+qt-mVEc=x|Y^sS(*HRjHta9O9^ z39>=?p^^T<;a6;|G-bc&--X{bx3M{Y;UdTebjjG{2U{Z`(CkN>A1)f({$ONdc+vLa zrHg;T_-}PDT`~n3{rCgW)YSL~Akfyx?8hH3+1gw>Z)^Iav9ZZTzqGn zweb&yNBG~p6pBI~|AV{c@c)9{6li$f<_DmSv6-pqH>yp~Uow_;ys6E_i@+aEjcqjl zRrl`y7mgXo8e{NHH2yozi-LE1z(o=TXp<{W%?2-Q;f|Sz=1!+9dP$InF7jf zasWRAcJ25UWbv+jyLRr{cVN%1U3(6Ew}1bE{rkU@-zSR??2|uuNa3);p@YiGDk{p# zTAG@gS~`CRx!t>V?cTF{@9y1u5A5B)_kjEXS&&!w1Av0E{6SfeS3aV2`0!z+Bj2j4 zsGK-){KSdB>+5X(29V#iEqKfCTjewXTjb@o%FAuG0NMa@a&myJvit8Kw`JS*9b0$) z`T9S9`1X2>+|KXh09&@m$!*)VYmbbYZ98QYZjs-*ZTkt}p&dV5zo2j@oRB+nimvyq`rE0BNSxV{iAPX*x{$|6^-T|^k`ia<-43b zHN4pm*tb;%M1HG001R0FUT)!UV*V%bKOFcU4*U-X{{O&%t$@Avzq|JLnu17;t#o`(I?y zyGQ2%cYfF|_xI%>gZp*c;cX83fFHiMk)im12YLIpYXI40yAN=B_oMSKAKcIMR6Y-Q zdHi3Ow!;29=Xagnb;kwp;C@1l+;#^UIhyw$y!?M^_8!1#&7@tg?(aJdcq#X2o9Ev9 zKYZ_??5Y3n2Fsn#gntA5Ek1Mq?lt+t+iZW^b#}`h8E@|Y@4&wV$Y5@{zvmCY?=!F2 zzI(Lo@Ne3R_qOc$>AUw|f79Nlzi-P=p32*l0GfAR9{sIGPGP_HANO{-)bHDB ztt?@4?YsY5EQbNt+I=0N#960{c;Z=|H0{( znJzN2lx2PVde@zMFCS!XQ`#YS{!W?l4%>J4f4H~R^nA}x^5=iw_xS!FL_CAb$rpYj z=9;{UjGk{C{Ez9uzcI?lQ9S&OoWp?Y-yfE<-F6Fbz8G-6^!~*?KgoR)oZ%nNpO$sS z>3v_DFUh6K@Tk0(-QUBuUf!3q^>mMnf=`ArB4m`ws7l(Z`SSSde?$K(wP)Lw2lrpU zJpJ-CApd^;{XJWf0L6goKm5tO6OZ0M*z=RZ4wc_zIKBrx-2Vqj4&NB1t#W=}fsAu- zxfgq6$hQ80>`#2(7`QJ!hm}`9#{u6Cb_v5o5L$9v>o`cQLXgr!Eo$W0 zHZV&^S$-64%h@Co!|KRp1JskGKiMVg`ZxcVwtu&0&zAgu>}RD{kDNH;PR{?87Zyz^ zD#6nU``jv*QdS5KHqw7Ct*%*|11srQmGL3;MtH=#2P>qHPBS1--*@AySt;!h%{Uj} zcCvS)s80~Cwq7|JQkzr5!tYxqZ@AXZ5LybF#kM*pF9j)Fby)4C8qy0c_nNQk`_?hF ztA>Ha<-L%s;!kc7G+$BXnnQIj8Fjl6s!d7A%$&~5`{?T6;Ly^Rc1-(-YI(f}RV}YN zvAE77qU+NQ5IB(;8eLy&yy`N{UNPs@fmQ0?NP;Ys%OF*0r+APa9Vd0;yvZvZq(L6k zHyWW`!If+pQFz26KDIIj%KQyx|e^y;^_20L=&MU z@$|B?=ojJFuHjQAMS(@4oZM%ZEXCTW6gs-33R zC=x_t23Pe=`rzb}CTN(x^WI!)Vx<-c2@(qOrek=+u(`GFls@0udyc>ke&><#%=wOh zUupK$E|8(@Zf!XnptMN=>BOW7tM3Fk-UvdAveB6QRy zproo2d`S&ESklQIq98PKoU1gZY91QZOx1H+7%iOviR=9sMX46Gr@FQJ9iCh0u*^6r zWg(4U^h06n)4R@Wz17G!D=MxMBsQN=0GhY(wX+v%>*`1#AAiy;Vyf@xn$=81`I}bm zVk9e^BQ6lSiJA+Ks0NdoI31y5IV^Cb4pqZPdEu(DSNgu(>Lf;TTvm)bJG+$+jB!Sn zn#Fhah*mt7DIz#U6C|fq(f@dw~1k8*ztly*Xy=Sh>|F-pfb)=dxbU>GdDaA6< zPb|fn`^@BEHvzo|8^9MQnII;mU$h9dPE5x{YplP>!&Qi;!id%Y!#U{ZA_^&QqTO&;h$*ULwkw=B(xx_fHog%_CG zR|Q_-EK|Btx~4W%QwwC3dSD24F^dvDgFpCI1O$rxKMjXBT6(l`IDr z6&G8Pvb>>&UL=7OZsV1EqRLP-PODjIFnp#wtu#Y18^JD*dwWCH^ICfo@6~c$UwCv8 zjgoT;`m+`h*5zF*=%ESAwF$asOoI{q_wETn&VFLk4(dn4Mc7l#Zk2mIP^fiLuvJQI z1*6baug$E)5gqx(ZR?}nHy^9vqpn8NRDYCu2cwi)`=!Id>4>W1_Lu^-O1M0Rv(T0miShmLiJ=+~#RYWksYdf`kp_U59SsQnSPzLQ#U zxTMu{69DmdA&|n?jI-CSd<1glc-i3A_tw=7nEkCh@7rb0gSplvafv|dlH5&z`4o88 zZvnBKUE(pp3PZSxrpSJ)ruXn!6p*BhA$*hKUNLutlpK`%EpZD+m$AE8#=QIn5x$hPK1f_;R+?9u(&~Qt|z#fA+lCF zDUMh%6!mts6syO?u&;H+q7x)h2>h!r_hLHDjwD;YZL8;0)@$`;Nu1xPqS%XOm6xng zDbVo51{+rxL%}@8>p~Eyr=j0A-y$039$|X^bDPfYNAFdX-LqL$m=4$HPx_gY3E>TS z_0iSr#LGm#dEwFOwcOtyHBMO|bA7`&$&LLiqiU(zuflm~){~Gv4(R=ffsyOKyAZ{t zL4$}&urWe@-P0mP!^GJ<%@Dui(`w8FAMa^8UDw5k#KotuiY6+lDelx9$2&}8hVfZ3 zMANScL3g&8*5973E1MN)U3s#&#kC6FTr%b5(mKKm(Myiw7~91)?ON9Gu3#*MSn4S( zmaGcw@^$9Hs`>sg6K;8kphZ@X)-N7(e4LihBgi4|vrEvtwUlR#7v}UDK?*^_aW=+SRyrJBjj zb~1suSqZ&=;~6%R7iezaO1Y9;JcXOF!5qosv|y)KVjHKdUsW#0jL}uxmP&`m@R|iK zySjDd73Ji=na2M#i`R}TUjP2l5xE8SG;%dvdg^zJb!^*EEh^t@tCrY#T(}9?-*}HI zvxv@?0FbUpNY5r9oU^p?I`kO!`D*bHO=9-l`riCa07X`E-zLDYiZk?iR7`(EpQ6Q{mI34)BaSct7|#g1HHB^s$uwc9@TM-e`9lAa!r|18u{hOJ>|A ze|aOkDA@;oj-O+HZXX(?=6UJ3axBc!OGc*>h<>9T8%oj=;^7lo~Ad<(Z3S1tsa#6+;KiBIgu8wX3;!$rnh2FhWs_-&C zainUTx;tvn#%V~K7U}bf3!(*0@`8uddv&cfQZQO`lx6h6;Q@RSjrEH-8smbY-;>w@+i10HElsp>N>b1wFVLZM++RaWy`#g{T;n$-J7?=8$!k2964rQ=n@jIYsl z#e8rxIW}UWx?1C$cXz|b%LM3`VyGp#8V-ig-mt9qBZrij{KU`^HD}MU{w8(x+7^c> z3XhpLwH`cD!8vHqt7kkho3-H4ERN9I@E!0u^6AW#o-pq-AdN^z82=*w%gBm^s(zVe zx!!erpZQ#9)H*op6A6Fm4H;)1A}{9be#gVIKe6*My70~tDUf5}k<_F448LDjndn!i zsT8MC(6(rhp+|HG&+~x|lItpRPfb=zn!^fQ+TgNw4Y(Mj_x%hYxS z!E@GoP2$UvwI7!TNFna4 zDq77O&sKdBy?U2u{YZnDt_)g*bF0-x!j-bTbx0RLk%(?+Nxe#Irv*`=JJ?-3Hbl)|e~xxMq~6p46>AjRDyAsdFHl#5G=*O_Gjf zs1{-Q)Yy5I@$2n6!zJ_Y z*(DplMLvaPxTsrvE&T-=D1+La| z1TAHV6`fHsxd~_{uM6UIXVY;$s7cPs+kbrC1ZaYf#T0dtVl7Lqt*@qSoNCG_lVvi% zOEY%M8B$jt!wtetiO%O_nE?jr4C6ggwyM`eG;Yz1rVw1~9b)Ge48UWXfFaa|VpDeG z-mv+J)mYq(Az%FKje?EaA$9R{8+HTIL0f?oKeypLARQi6)G)-74ld9-&%_zbla@C= z0AQ{LE`KZHH>19vy+mB7{es0a!9S2Uo?AH#PKf6>EMmACnf1#0Q>YvHU zFI}}86E$M?%GtUv8#x*!D}{l1T&$@-T*&4<^2hjfrCH$-RsHE2j(MMdU3W~Et+t^{ z$>xi})QGyyrhq6;KbuUF=?4e|-q#4eO{?c~fJ2oC=Vrp2v8;nxRgP5UUzcvY7!rHq z?&`;Q8PYLJ{rxezn}FB*f;lR0jPo`o@sIKnvU0T=Ve)1Cg9NSAnSy3-4&y6Y3<71n z=veyH&xGed!azf3G9Brc3*kdUXAYOSTE5JB)M3^5k4(VULw^j7V+&n&(+%sYRY|S+ z)K$u=@!BEDDq^^y`F&%fF=oR=BX((;?cq#MVLg25p9{J}IK}G)`{Ic_-s5x82ql-twridw%XWJ1KRx^J;r8{*9}7>P&42K2%R|2Nzt!VkscC#CIET7sEO|dvgsHWh z19X&e=~vg8s3GaAPa!c@rAUkFmW?WFQ&KrF-nfor+@|qz!QN(p+mxnI=-^Dqb{9@N z1cxGc>LmwDHw492k%U)Fivz?D<=o!h@-RmrFmooy8AG}o!-|1U9VMlp%N$&_Emr)l zNLj0A9gPIYV(=@Ue3cUNZl434=9EB!qIN~%a>4dRm&b1hk{eUK zCnb#h6H?@b8#ytf@gnW_Ev{c7;M&zn{~(H|BMRvjrAx?KeIhlD?Fi zK^6)jP^O3x2sZA-C1z+lbz%C4Msgt#xAfao_t#Ljq-KD3u`GvfFm(hQj6kjNFxir0M?#5+JL4@G#PhkL@J zGn)otG%a3Hr~2N+->D%_I0ZtU&-aVk_c#`5uZUVAA$rz79*M zFObc1bk^+SbTzWU&JU$&Yp>T0#0JY)w(<_Ed%}jsRhgZ6Pi4C0M-LfbS8;R1h2BXH zAp^|eNz<>RH9k8J$1BM!$idNd260rq`Hjr5tTW2ht*(phrsg&Q_G>*^GOa(m3BXU^ z-+}g(cquIh(;87lUCrf_7U=1(tJw^JQGe{Mg%KD~pP`;LogmE0nB?mB=Kj*}>+1`2 z)nVN3!Tu74R#1IX0bFHD>NJ2IQOmsxtw^vXeIz_M(shiT)j{T)u`eef2%dH&V;S2M zrfN%b;s|;=kk0DFl;yHe0lzzvT*%yE&iT0oVV$RSb5S5_HYia~tHKh|vt)t%{3k_C zs3d_00)96O@6nDuAv6%$?;oP{v`e(zWuxfll?Nd$Odp#eupzETOtKx<;8w@2NY&Ag z1maD=V#m2@i{Laa_MF+-RyPytAl*o_n?HNwgw8%HS zHl*#4)`@W}j)l1la=toaV9uY!&KahWxtQpMMqZO)D`i711h{;=dwfVQ6s5xNN{+~z z#drwt>8vuhxu)14b3Vf{c5YTxZIqp7yb_H;k5ckV(6d2;TCQp#+T79X#nq^i`rw+m zAbdRC!MSU~#`cZsnSe&UqeOvOBHq*CWFzERH9WAjpk1YgsqGLkPRHEn9#SyM7~All zr|P`w2n`RSYLyIzsN!@z8R!VVD%p^0rE2Wf*H|!;g&nGL%5%+q;pFHmHDSRk)A)&4 z;OAu%e(uGz-}=m`8h3m21f)3RJp0h=K_MckJJ7Bwcy@PCjE)OsCcQQ1N_&bXdQ~D~ zwpk3Bi_OAcu+batSyIpBIKM3CK-pTZNSTmVb8p-3))X!|aY0{4-Aq{K{A!RdfEXlj zudujcixpT!tQCikJV+O z!gnJX__chkCg3VA`)wXs8iTt5PG{7eHQG0&`BL-h2bp31+bqj$@|i8a z?fK`gdtSekPPOzSf(14$Yvu95_3%EV+Y?AtVq{3487#G}w<96P`C(9m?Rv;mWkz{; z`z-Lra`=l(a!*xrHbs~m8+Fg|%M9WdrqU9sL}PdSB{ODEbO;#sEk;AF9RMiBk>P|@mGXV^~iyZY+V&H2g&d1#(h zYC%`PcxY5#vZ{8fm1s!Au!@#OOADZ^r$whsFWI%qe-Tm_;w+%3Hdgx_a$$Hj66`7^C(G=yx{k zyVm;Y(rZ$eSD`wqozDtmk5;em>g9X=$Sg!w#vs}yT`5)d9Qx6A9~;3G8dc0ytywHX z7WOdZ16!m;lctTJ$E}&PU~UB$5oxog7#gi&C_Xc@qS$4XW9MHm^1K|J9;xtv{V|4V zu)D~JWm$oUT1iEI7PVbYVnK5kXBRGZ(Qi)4J8wf#EUNklJ#C)uS=HZG0m7`jB_#Fb zOk!6uxgkb#2#T$V#eFo7A9q`LgTA@KGe{dWBCDHFa+wp7Jp|r7FKadQ}g&7_nZ*AX#k! z9`T3t-4vWn-0HY$-0Fr%7ItS7>DSyD&Tx;ffqfX$`(s|0ySQO`Nj~1dsIf0uXR#qb z7_oxO@$kFJM#d=+_N`SIl&H3IgaLWCcwSmfWP)PJlwWC&`Oibcn*dZ)ZaB;D>L%cE zMVLirgImssn^3AcKl3Fkm8l3Mq1G?5mFA zQFIje@y)P|+FnA1VV`;p1x$QY7QRv9sYp@&8021hgsE2S8(mQO8UH15y^R&>;Ehl! z>_7zYn%{d}o2Gq;$&iV}TdpOot9t!SkrvyS(S2xG%>W0I39u9a6olup2Ep@eKH7=* z>K?HwQW%NvomvF(sp|)PG}@&`9Uf_w5gk}tY$w)zHliESQ*qT*_iCH&?dgO^Lsuq` zzRAu>9c`?CuS3{n&M*wPFGsDSokdFu*McXwbsR}=!i$K!R%5R*+934mLO`9 zZJit33SRMCtB?i_^=<;rok06^mV90Hu^93uMsn-A9U%gfK1_ry;&w*|?TpwUdnFEm zUS7j^I6Ic{ykAe}rfNK=vI%al1hh=cRgt-VlX`7yZM~%leYG)!R~<{4qv<Q+yv;?Qu^rQ3!E;*TLjJRozkia zKJNthPF{CZGn_@4p0~FW?{uaIff|Z@sdONtWR?YUvc8QmoyFdnsB_Kp;|9$3k#0@! z=9Y1l>(&;-D+B^|v?(la|=)7vdYsLRst5$;5^~pJRkcQ{&~XhK$$Nn<9&sX$cg3$ zWX(?d(s^)dce5}y)&Eq%wfw7}E}u-gpLq82@xKPoJ%B%!GymAT?VQ~HA5WiikoF!{ ze4PbVxqmxLQtp3P@oh`T$kBL4PSZfJ+M-M4VrCJnm*Cuaz~f2pyLfHHYK_1+*CHy? zidQ%&DZ(Jl^=D8AlTkZ5(-8DH_)$825`pg+nTNeAff`H})oWvQvNWMpN6JQIuGOQ; zD+IJCxmj}F z&1jCl)iq^d7E>+AYH_XQ;6KqKu(0hzaboSu9~Jvp4XN@VL|YXISe_jjAbMEL&hTWK zi-r$+ltS}tt;Qd>3i$Nc*n6Cgg$>7=0b)ers&Qud2MNnNzdJG0b0MW@eNh$Cn>0!{ z_txU_`hXJ`xx%LHBbsPp!EH9RUTB>`j+RI4>IgH$BoPPRDbVLXG~e0Tv30_K&W zz(vRW5YIIQPI}bfPrTp;mpC0KjAoz6ZEX699;DMoDO@(tY~p=Tbyv8?J=C0j+s%q z!3z^ZpgF!EbK%soPS2R7cQU)XE{EKucO@~NQYpwsTjmV7J?Yj^INVkxUkK6bGmo14 zaZp(LizFLEWna$Y{~}-L`Kk^D#LgDXGJY46u8g0~8sSs(4S?WtxZlM=20r*rfSpcy z^~P1LcwRw{>&Fu0%UMU$aYI+ISOFANgrw4Bs=pL0Y-9_w5D}ypvpIjPTeDF#NwZ~-6PreE4(N--rX7;V?_pg!KA`pEg{tGi@ zOlZBMf&C?IN@7dPd%J6NqfQ1l3SVq$h|`}r6Zh;+;^MFUzJAL{%Wkj-;DkP%yy1zc z7O!w<+S!_EqJ9x@{Yq5R#s^`Bz}jV!J=v(K`+*dn@re-E)Rf%@bPN;O;hN82j)etD zGN((9t}3cwLL59)dtm*YMF{m=q;*21cg8qY=Kf4TZ5$xw`xM(@#9%P4#bgt()2;hV zqusog$nNb;AAM{ct_bDj?YZ3|0I;<;#KEaRo7)$ z_d%P74IdSNmuGlj-vjd^(BYJs3&OSfwxxktT)^tF0MRC($m;nT$`0PqQL_$8T-~`P zTd2&XN^;^tKwO`v8W9;q!jc`Vihv&WqHrSb!@@Fd0o zpUTc&yxw(a%U@;-P`GW&+iyEDe?(;`&uwYG{IYcSUchH-PwtV?x!Je5)UsBAdM)0r zLrPWvn#G@6Mi34-m@I|5BFrO17)24Bl2MUM=Cy; zMzvZj8-ekfA*K!9hRfB6)=hvl1~%G$O5x(JtK;Q4hd!Oe&(?XwIwde!Q-w}Q%lrnRdQiPz%I45 z8ced)ox(e}_45iBzI+)bBLf=eov4}9!+rAO7r8T7s}WyAqTl5dncuSPq|shO|3|jl zZ$7$z>+GS~a4^E|=`J9I@$LX~$9ECy3U?l!^e;9e=c7rM zo%vOx@v%7rOQdt0%XwTaM>~z2wiK8WOdX~WunL;0j%fbpxlq6Is~&1R$Y7O+-P5S6 zR!F02NQ1V{ZE^E^R5ul0*-v$a$1Jt1JLhnPy(P$yrss`*RAGygb!5^QvRt^-ch${H z8{4WYFR!=|dA`x3$j#3vvz>8NJ6ac5RGq@b)EF4&)H2E(&7c)3T@9wS$KKw<-DMt& z>qbgP{K9>^M>=GFS^UKZ7Uhr3P5Re@FJ%X1+u^;4x3dzuw849fkA*Z1Fb{|Rl+)sB zm^jL+X!ZuR`C4aqaK8GI*UM5B$^^v?p4M5+#jr>gv`XcSSs(6_*1X?vMj16aq0AN` z521(K-96O5(3RtuqI-if(KzA3aWrC9YFeJSQa8Y{8iAVmHfSETefB)b;!$sP*G6t# z#ZfY_65Ktzc2ILEE|1% zuImQp;ISYM$uN#YPzVoMF^}vI@roo8!QF|%wS)dqt$7->N{q~leQ}CBib%=*NHK%> zHJ8KIi?r%BdJ<-%R#1^wJ+%A9B`uj`BiZ2_^^B$>Dp_z8t}=hG8g~%?iW6ziSc(7S zson_sSVZ%m7||MPfl?D@lAljA=z|L&g+uMP($p@vrHjhW&IMl(&R_C0$%a_SCc%D9 z8fl?xspI;3Yeqaf?Y!h{y(5V$dc)MOe)v(^g;0a9>nY*%;#DGq1>VQ#JjfECPXh@q zZUUT|%NtnC<_9Cz{)3_XIg!J6}e35h{3`nlHP9ev|UV?ko8 zQ^n9Q-7|@KqYY7SQW~n0Ph79%LI*~dYiCWUz4F8I1FoQe_|d_8W6X?keWaudUf#=e z$9vbc>TOip4@DC?ATb9I^-CanpQ&ytMs`6xI_t#s>*{#VHPT0!pAgCffjA(mstcqk zv;61~8v)Rq^Kp2;Qai?ig{p6Gur2-Qh~ar5Q6}5uAWS?-17DR!F+!yD%@S-Qw zd2U?ykhRS1)J~gJvltStQ)96O4(pkOPYsc=se{7{OIxU-DbSFsz;LB9)|$rSHG{)z`1_Ct3E+YuQZk*3Y+hyt;At zh|14p4ogN~t78DSeYV%n**N@TzqYmoOV0J+zJKoB|KpE;8tdQA0bak99XKs~0I3Mb zW}x$Zv2Kq>18Az~g`g*pG(3KI#aq}i9=>5{jD23@|;d^I8~Q{^#r0y=PNTT|1hg@a7(Z(LMa+(p1D0brJS8L;rfa^|5G?&w<&jR|1PjYh4q1pU zC>0^(lVd-ztdjeP8;;L6KHE=FSMc?Y4XSl^4+h_G!4D;>WO3HhD+Ak zHvz(sO@NPVPC9A45UjU~?j$?EGs9-RKS+DeQ<7Ktu}=|M#4FlopbTYNQAo z##aqM2nXr7e>~DDo`P%O-o{V1FqrYWZgwLGA?@*9*-m1JhM}ehI>}<3Ir?+oz;GE{ zp**+yz+-P>4)SZSdt>9RC-qJSm$F({B3f|uBwV}xU^f44lNvh7t@n0wPBXt@FkH3_ zlQ^)Mm6$UceEXkgE{x?l80Et1w6Z_cQu|$Dx9PWqSp@R?;<~^x7cXCO$`n0}!jDtH zS*TJboR3&6Iz({37RCkh9*%A3D5#o+9ZT-!9Nq-LG<3#d%X^k`Vy|=e>SfrHi!TH( z+o7}@U?S%*tA;62TTU>@ib|NLV-6RWTfY@8OOgUh!tI#WwNMBYvWKNB50Pzu!{yad z_n3X#oHFkaWj%Z5ZddZBI$yc@&r|TiCa{5Qp3-=3<3J;g6V_g(lO4>1vqKnts8nYv(O0@7%oPwYz@-!*P!Tw%GdBdIS zKp;p##o=D&^IsZ3Q_hM;EKbCrk$|m$n64fn%X~FiSg+DfuG?c)WY|P(D0z@+KP4CbXe{)rHGdKf^hYlY==5JKPd$n#fya<$Y>d1iL&6iHW>6 zf(}+Q8&F*)b1HiYf$0l9qRGtA+{i;6Q6iKXTa&O!ENVx@zx#Zv1T z6MNdjG*PW8vesdJIj+`Nw*UA6 zVsK(lWEh#HR}UoFc+}HT4r|vH3>Y=JI-TAyHnzYqgX?^lWsKwuCss#v!rk*eEEnwZ zcjqKp!&87N7Ag2KoRO$*Fwf1v zpUh`d4C--Bk5~I!#(P^JNNdyS)oZg2;wmV~AgHf+k&VKXTi(h_oRu`w!%091Nl&8j zC8mhtgST%rvqUm^**3Bx&{;1coct6LWt&yjj<9w&GR%m=b#YJOCuUei(AOyeC58?* zV%w4@S1(QF;3ZbcRcpF8SY>{c(>>{B&e%E;Z#2-pq-v~Uh^Vt0@xcxgi@(zOl-$6g@%p0mL=Y2g95hL*sW(TMo<4r zvS7tdbW8OGAt>JHe5r7XnV97KcCos}W=%fh7JUO6&Y4b{kMal?5Eh@2Bm8*fr-jI_ zJ)CrQ!n1R6261V}{EPQGLX8rKRp?K3o;1F%S<^=;ybgKO{&l8YsI-Xk@p?Gw;N*acmy(&p0p_2 z-&U)MIJD#hFLUJC!&O?MYQ~?0JQXEDKR0|`8Fln2o%rx=02 zykITJCirn_Y7$9|8eZlmD=6oalroHZKl3#LbGs>;R*krW<>l9FNUbl76U&wy7CkyL zf^#!g&1ZrAwP(!5tx+6x0!A2f_h#g`qk+&HuGi%C6dSd3bd?I1SlyX7V>1&I6O(;0 zzCOO;yaV+(o3BE`5!#U~f-MFiwtraPZaoiFeS^B$uU)l#VYc{GmYe@1XJ1;Usc#zZ zN_O1!ciK6^PKyf;d>&m8jaaeE7$RZcEbAFdWA%>=>7(PqfGSp_ShSwIbbj$omZa9> zl~CI-@uSZ<4-e2k8gFfQi&nH#P}fG)xBVf<98*PX4SVh~QQ*L3 ztZ&`93DDap@sX4bt%XYmO?=X&1nC=o6Ip6Rr~0SP}j{(he~INeMTk2cq#c_&AMul2x!EdC23?(g}Bn`jh)6EZ9n-w zd9M7xlTXb@j@>TEP}IG=q1?S!+cQhYGlM+QZeCb$J8R)&i!|4>4+=@Yd+55qocuM} zvCBiZPVTmS_U()QKZ4xlUE6P7yCqvtUvo>{@Wr8fXiFMvO6B3!_a@iMN$+^VVYk7V z5s28_ub*se8|$s%Nq=A=zl6>~&O+L%ntzVgxrMiDcksHneIBBFJIAJD4j-6yTRQe7 z8VcU1XEu$|gy%%qdw7j(l#^HS3)E*@=N&0c z=8zqSGS$)xm)hf5bxQ^v7U4r_ZA{1he7HvdafC&}{W7RKWV&!1I^fqdn8~|MHbW<- z$kya4`!k#dews3)8jrnjZ_-XD*02nM19H_TI&$~6_ct`s(hBe;HgNWlkx-+^eyHC& zh1l_pbJ9>zlh3@cZt39buEe?dnu_v%5Ev>(siPUq*6JV8Yk5kyyPMfq@03eT>M$QSee^=1cIIwe>Bw3qq(&FlacJH% z)3_q5G06A}6x#E#1UB-y(ax!FIhM2(m>t@En0LVYf^i1rksWy=(hLNO(QteJ;bB7v1cCa@1bOhLjW`ieTiGe$6P;VmJV zJkhFfdtn(0s~Qf^HDNT`mE7aM=eDswI1QGJrckRc5mPA@!@199iiHuY*E1KK zn5;Z8PuZI6Wvo`JtJ&b360MGOhg z2ajhWbJQYx>F$&ly3w;`E3p=XvmIRBNcTxjRBSA^+ruq5yJJKzaKj0!oD~(E)f>wl z;~p7?4+kX!qp1%g)y4Ag+13KJO@OLUqXSEo*H{TY*%1?~3ZC`AkNbGZc59I>>-%X- zq}s5rjl5H#K5F@fEUnrJc*T_Rc@Ja;>S0IE)~&J)#-^I9{MW4WoZ0nrXj801oQ=B_G3STPw*QfNh|h4_h?X}Zsmq9d<;R+ z>{i!Mgi=ak?TDQ;u?9&ty)zV{`@0kRuKKhpSZ6O&AfS2k;Xz+|QZ>yGQc>8JP(Smy zejvDVqS;i4KUG^A9L$f6O#^NM=7k}GrRDX#v|C(+fJu?^EOhN5seG+1!kQV~5}=ESp(gCk|n| z*|&&&?8YU|^KnXjmNfOwsB8zf*0*|yIMRaupdDr&r;posxCy8o$GL<_aQ1C%y~-XI z<%NOK@bGRmH`rrDh9WQw9&7Z`l1U=NGYKy92dMTElEw7!O!aa^D8ID>>r~fov`$DP zOT8?KW89nNbqk#eicf6%Q{gMfppG@tUY2FfxVN*%IQqbm*GWM`adi=w`fq&6fofZS zcCaT+uo>#!M3XQxOJWQ(#G`G6LjrLU6Ue0+=T6*UCiNjRwi7$ydGM6ktFy+ZxxD_7 z{@IF=Y+oYwn9r3Q_}YbaH=Kr@LQ$yc8WPPc@y<hf$)a#ZLAgU&J)?Je|zgtX?p@ILEcW;a2%3VB3(> zC+B9h+zQTF}Xu3d4>3*?{ z?VX)ku(~^RCmW*MS=Q2WZ#F}Z_WdB!T6ge_VvzvhY%;?_XJFPUM?=k2r5Q9%T$4)R z+_KQP4Z7Z!F^O-fIX2TcI^)y0q(E<456Sh+c8>SAdOf`g>YH=+qY}nZ-kF&x;6pm> z!+jEA6lX>>(yBZkW?Nd`U>Q}2*2mXygNZeqSPQ=fw=0j~eaEV%V%Nq#jlso{THfWC zKJ_5;V-*|owag`pzB*&rs^BFaSF2d!V}kxNb?hypmhx$OY(Can#TJgQxFQ*8QjV__ zXJpqAGNL_^u~rb{z)=LbIMQ{InpBlYf3Ps!(mXSC&J_e}aJa!{S!b=2)a(&v$cis_ zvOSE?fs}f}lYJ|OWS;s)f4<{03i0`4L4za8{*tdRMqB&TN@R{@QT;1qN=0|EsF|40 zRLl~IX7fHK&dyEL#qE|IRE}Aa&B~g;SzkuH$;uf}hzizJU*TVt-+3nOP?5bgAx{E&o4ZkBeXZgGlo49Nr$3U2^3%o z8;PVKqZheN-du}k>u&1%Fay;bhfo{(u3TR|pwK3|=+vp}T-k)}DEZA*4`{pXncJN* z*Ri}hHET*8ky$O^*YTRw@>cIcVKZz|NsjrWhH!q}gknN+j)*V&NNql{q1md}y!h%U zWe62~yJRoKickGHDxiVSwNR^QixqWtwvqEXEn##wgtec*+CWJN)_IV*QTprG6%s7T zNTL=J=nQLQD_8%ocCIw4iDV0RFhNCeh-`w2Jai%^BAVa=3M86&5exzfXar$|1e6#V zf-DL`#0_u>3PHn?AWA^iCtF0eGb2hsmH}knR1}o3$YPLnUNz{9vz&Rq-#K%t=vp(xs{;s*?Ji1T-5rL3>@yH;(o!>9QBUiC$~E8kIAazR~p_p(i~%j#zG_)V3Bs zsh2gUqCZH_4CQu5yS?xCjrB0_I&u7lEwfl4kR%qHWxBmQYqA~3t*)P(R+8>LTe?k12naMw6&$^g~U`s-mVO%^2T)*;YFb(`9S*Q5A0n zdf57s4#T2eQzRu}?aNDIn?B{-L?+j)Jg~|ir)Bz(R-b46sIYZ%PlL|o~LN!cb)2K?^=T?2|GQxQ@u93jXg50 zdE%3cQ)2(wAlq(l{f1J1fn`tuztVmU-}K<^Eup1_div*lGpc-|JF}JTDFIaDO!bIW zgIXC*-svk^(C>15_L1ryUl(uLk$qwqr&%iVIwbok;=xH=unR_?U4Or~MoG+U-FCK1bzyyHt25Ihmv#+A zf~ZDCv-TrHnAuU^{Y`4Zaj$dMlSb)>eQ@7wOVk@`)a$)|)YGjh%+-@#Y$#|+6cvkh z#5%57VEO3fyQDRT0vd0&5u`cemD3(syNgT7|Gue7_TBR|oq2?HCWbo9=Qq05HMqLu z$Gm$zm~*nDtRZW-!@n+1C^%-fI7HB?e-kX#((a7@;PJFY^+rV*o$N#2V_THku@NVI z{S<6$E=YR!)2GkpJysL<{Y*yfpV<#r%FZrgI61A^TXe6kc%)NYt%fL3=`F%U4-mFB z(fC9B5WecL4C9g={O=;C!3UF@i-#)!piz6UhBQyNU9=KvCA9GsVwy=bGZ&&v|-oG9?N&M_A&0;CX1H? znQM~=1>RD_jLdH?*aamzw6aFKUj`J3Y0Mq7DlQ<^pWk#oIBxxkTLqyV_MRubs?6;o zoZNSAZIb0XJ)aedFT9-`=%A%f#OM|03d%oF?II^$=TA7MU}&G#X03g!N?5&iHE!=r zbFF254eMC|e?W8pK8u_WAGmwY*Yp{yi&`JP@I798E-p8t(l6;%S)hq}Bjyzr8K+=9Q+2!*GQw44n`eYz zJfzCeQ6(v$jN3TqchoY;+rn48AR;ruTy`>yx}Px7Fm$cBvzG!}h0!;-GY6fbx&zDK z1lE__R84Eey-a61RO{@rt7eZGo-W&-tHZX#o%(b`cPjdoh}p!t)w1PTY~G!>{8wec zmF0Z$X$rG!!}drb#)`O{jJ&n;CDBiRvqe%GyYT3&E;r)I3hzuxPqpF$Ns`rlH^=6% zlR{hR3a&uQGqkHa&$!dQt$6hK$kU|5Q3Z@!;x^}8{|9Ijv&_ZNcV=FX4O)#dm7jDC zF-NJg*@dj$#o~cgho^-ok;yLEjOCT69d>P%0@l5c4t}wg8M15SfSZOs#q?Kgw|~r- z@r)T3v9_$?doX)S&7~gV@>3B4=k={Qj%%Og)YCquc=eX8wp>ar%XXv*mpC2OGC*OQ z7wU_CNU!N()}m#E*KH;#lw5tA#LTmGH`CL%ptWdcilpYPvN)ZG1j3suseSd?(^u%T z4t)*X6RySULjx~KnjG!Y+nM`udD(k~b}m_g6i!Ey+Zxu`0C!oH*VdeX&5xvy(jD%w zJ)=k1%xPO8*#4Dq{Z=+tZ|8bpjODi_W8b5&?PrCXDr+p-lsi@?J(=8k<~T@g3aPB2 zlZ`VMUf-o9pRu*1aGGfpN5jFG<-}j3Fc8RSIJ_Hi>=?W-365%-m+cUVu9~Pz7p+dvF2{qmji%kP z_`~iRpnX`L7j+)2VOq)acqls?b!@eb3Q-l0Az48rh=??^K}OohZ|iH2G@M&0Rd4Wn znySCPW<-p$6-{f5PZp{0Lka^vg`Ta)hZZ!y>>vjmzLVo~q)>11PF4@Au;z(CxsBFM z3k;e)*g)Vmj|Vlh4ewm09%WdNuGSOuHutQvD`s?<>>H4I?6o*OlrI?Dcy0;H-pg^k zkTO`aXzU$7BCR*~bUM>aFxxWb{w&VO?=iEiyXnW2xLWBaw^#0Z+^h8q@OkOZ4^`91 zz)7Q95;EqOqX}u1vc7jlx1;W{(n~~@hm7;OTRk;qFU}lz?@?!zsJB&sX}L4qYH_bO z`>x=mIHr*m=9Y&WoLT*Rm9f3&jfeJRdPskaf7iZe!vQ5P^3}LnC7zZR zGFedSfU)Vq3uW&gyV-Gb{eAk|jAg)pKqT4CSF8GKz7} zs6KCVdCC~t|cb+UX~y^VDSd*jcT(ESkA3m546Dx{B-ty3HU(@ zVMy#;z7Ywk%U%N2fo)(v>25TrxL{ssutX6bUzY_Q(>fQ-LC5DBoQhRk`j*5_d&^eP zR^a3LC?y0EMFPeK7gt*Znij6XBbt3@hTLtn`~YZMq16tM=8c@R4r%i%HsTlrLXE-8 z=hojp+q&i@1}V{14Uq_&`X8$;1BNA0?}jrmwDNEVK9%#}CSHNBq>4oRR`_6<-<7!A zYB9K%Z@-<7aw66(Cw@m%`f7(cVy`yJ<}m7CDr#!zxk(0}L||ThsUQwY{M=HK7^Ly# zuiXtlPUR#(2^y#h4ABP9N#+BEf$|6*oLT@>Q$i}qGv;&#xJVe$4Ep-TO$ck!_aL^a ztvQcsJCAKmN(4H8skS^YkL543<7*=&b38MaUZCNtsljh5=qNOP$xR4J4UXq5f`Y#k zxpgUW=H~J1?x%pBiyRJTUCOT%&s|{S!3L6)ir}9>S{YQA1;+I2x&R*7@^HYmLn;n% zx<~ux>O)gZ%u1?UDS4@X-eA+z7ZK{i&_DypzHx(LSxFWQF=HnH> zDIYKhMv4!!Cn8I*bYPTx6bWGk;O4-7FaN6+N(p6y0Aof}wL(?IFX6$2xnUJxU9`a! zF5DVAs0-krd^|^&gQZu{Rfy`kFc8oO!hpvlPz3=&#II!j=@MZDK&T19A@Kb|mz2NyoG~XE77Ge2>92n2pT2(>_=kc2Lk50n`7d#NdYk|N literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-nodpi/texture.png b/src/main/res/drawable-nodpi/texture.png new file mode 100755 index 0000000000000000000000000000000000000000..06d7b1ae15d1cd9f57904f8d65cdac9552944ca1 GIT binary patch literal 53970 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%0AWW(3p0tpoE5Gl_;qsAwEj7<-hfKz&P-z591LLJj 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/action_follow_2_dark.png b/src/main/res/drawable-xhdpi/action_follow_2_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..b45f5cfd1bc1353a185031c330aad1eb0dd0ee50 GIT binary patch literal 1753 zcmaJ?c~BEq99{xm99nS@RMa)7s3W-`Kq3)B!jWPCAz)fBax5f5c4M-TfQ&{gMNttP zK?~Fpl|w+h3Zfjr!iWN~0R=5ur3@8|2qGvQDYhE~>K~;$v-^AR&G&u3^UWR!4)n7! zUuq5jfECA|9fDae<2!dY_AQp~eTJDOs1F|vMIup^Kmh?vF(QOOj!X~*g+Kyv{N8(z z2LPCYQXU`WbGOh%h>RdGVhC!P9Ag83ho@RD5Jf{MD1@SgqNu_Sv|afVZ*lyWs1V(%03McPPNr&90MBest%l zQ$>1R^BP;7r;;$Md}yFt^`e|}tuX^l{Efy? z^Ws%cGmi?##E^DA66FprBH$$W%Ib5)Ii{wjExp4>ObikizH3g+P&q$0ER5P;km15r zI@(zhTJGzipMJYy2V@s;Gvngg7z_rSs~6Oh+M-KJqFMFz#N-~$)260lIXRB0PN$po zb2&+8K57;D){PHUPC)8$;RXKkIlwLR9@W0^Lc8_hTc70F&R_7gca~=3H{w+zLGP_T zz)DS8f=wN6KOO{&OiTnVyW264uqXA^>P291kL-u*=QU^xIj>0-;HaVm;%``Zyymi?T zi9Yf{Ik2vx_SvrELYr$AxyzRYq=)AruaRZbJt~aR=)zHoPo)eN=VJ_Hj~y zcAozt`OsjVvmsVeRrV^)-KN#D=3pReIQX8)f!%r02HM)Lf%GCc{oCHOS>2gdoNNbUsp7C_!Gw0aI#ACopCkKPSnNRsHdM?*auXk z6gF;VZOiK|9q+HZTlVwmug0=ItSs5W(|W2_6q=K^#{#nsc^_^s4!g7I$;rfywwE_L z-p}dSKR+TU7P!5_-d_B8{({AIe@DFK@A$0CnzHhhI7{GNpGT4*ye+`^v*Gvzvdg?9 GlKugv1hD%6 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/action_follow_selected.png b/src/main/res/drawable-xhdpi/action_follow_selected.png new file mode 100755 index 0000000000000000000000000000000000000000..c652cf6a64525b9fbbee904e0a6ca9a8e9d27c6b GIT binary patch literal 1848 zcmaJ?c~BEq91e#X5hMXi3n(rj?LlPhkfk-0aF=9*>vOuyiSxgWG#ajnN z3B?0J2J3+oC3rDbrPc!v@Sq5IPO9Q9h!%uu+YN&HN9oS&zTbQEec$iw8zk{D zP7WRpI2_JN6e~!?#_84 z42rdUNCn3()j`sw@iN8I3M|2PnLIHynU?>QL(kL_rlf_~M0d$ZCQb9VEMh~X3I1D-m1cBj)gk{qy zQ#px(=;2)0j7w6XsFp*e8Vm-Cfk8oZX;d1U&9-XL>A@HxSf8yy<;Gx*-e*KX0O=Jv zSc}4l2Cyp17a>_FmxMX}RDxRjSyrPT-X?6rs7AS#N~3_*l16}H@&7~B>d$CBnh1UI z`=7#kS+*9UCPI27OQ*mNF4f1HO3UHvAUTTYWC)TuvWpTGf+Bhqq6PTU5MVZ}Q6dKY z5Lzteh%|asu2DcD0hfgFDKM<$L@`4`1vFk5oke5PXu?o7$Yk<_JX$D&PGg0E!V#_j zQDmth4LZVAe&Mo5H_| zSid^vktM8mtl{UT#U`KI9@1dFuEUzz^r}#e-IZFAfG0EFemPehE1UTpx4Sva=A+D+P9wKbUWg-KYC6G)$eWEpz|a((vHagNFVH(X3gMbWQ#}1Y5k#YFre~ zdj(-SUUI^6>rc4LW8VUsx+b?+b34!0H=qF^_lH$Kx0x+!Nim^wEbqe!`(eJa+Rl9N z>P-IjxT|NSw^z9;Sao~zrDK-4r|0+Hadv)4Vb^SHqmw5^`j+RNJEl(gVPF!&F!0smjF+U!BX1l-IF~qX4Z&P++VbJUdwdC@u z-|UvN9el|4BUYb8Pqp}077&i*u~h2$KJS9Exjg(fu1Z&4l=fy@PZeQr@$o+mB-s?NE*k%6DxvVP^xO3=6qjSJ9XC36^LqDX7Z45wG~yq$=9ahN z4;P!H@uX|@w)d$y%}o{Fj$s?Z6Kp2_+;dV$^m6Gs(sni5-?xNIZZDJzsv@j6YU<{POrz*Iz?>ljd6DNU=+{wok*I%r0`;s9nCHKRMwk zt72K;#WF;rV?~*BY-+bgO49JR=oJXEvM=m}3*lU7a$+)$3b%n12@&ig=1&-bLj(gnOJvVuf*g3fUP;(Kt z=KQR=Q47R{inJWRB}d1pfJ|mojeV^9(9ee`8K3m|edM_~Gw# zUnU_stSFD)k)Zm%fWKZiIb%(VOJDjOIfKH;CDsxqy4>%&vS0;Tep$KQpoMJtE4{;MqROYU6x!mLA-x!5lnWPKD811Uw4JzSkIcNh z*Uw@r$3J@rJ}~#M+Y;gDnEE3BS&JgRp4Mfzb#Y%0S-Kk|V#pGbB xyO*;>Ulx~epxL%2pWqz()fEBk{X5?KHR2wr-Qpv literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/action_help_default.png b/src/main/res/drawable-xhdpi/action_help_default.png new file mode 100755 index 0000000000000000000000000000000000000000..6dec86df89d3895cf9c3bbfc1e1ec33e73ee6bd7 GIT binary patch literal 2719 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 L`H?SphVT0i$u4Y3 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/action_help_pressed.png b/src/main/res/drawable-xhdpi/action_help_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..d74e989409c1af24d4b860e0f803790e015a9e1f GIT binary patch literal 2463 zcmaJ?c{o&k8$N?5(jp=)PSb*kS#2{+vSgbEjbX-ajDyMSGn%2rR+OR=3N1)k5|UC$ zgQ!##6?#pJ60aroR!DElH+s|i{qgmk>pJJRT=#uH_w)Ro>v#5gx;tyC>#G9*py}%3 zNKuUF>36oO;!9JSN>L0;#2e{iFJ8D1`Ao`~eY15#j%sqLV#A z2c8fD&5>wRCfWiGT40bEoSCJir3r{dW6&rx7KOo@Vk`+bECG!Me?D+UG+|gcf#T@& zGnQgSghz_Sd;$t3kw}md9FixDKw^+Rs6>69Ax}Jdvm^NO^e=sy+nDF!-Z zLmK92WOH-c?2a0?a&?!VdQDAdR(og8t1EBoJ9CWRT#LaiUp--A_)s#~wqvkvQ2y5B zz|kd^AFBG+8Zd#Iz?bK+9 z*I=vBv6!hVq9|yFqSJAe9E*q^T`QTWd^R{#qZ2GIJb)Q}Bb?Mv*x!=@4u^6DIbnQ6XQ>QAI z1RZ-oRMM?lsm(~cUD<*t2=WY?RU!;raH8x;*u>Wkm3J%jZDUq$f2kR`GVh@$+P<$U zcy)>YjqK9842sz(PU_){P_3#?CaRfjtH0cpv<@0L*8#jcVuQNlKR2eUpk#*Qv^_x{+h)z|WzAl1 z&vJ6t?(qCm-&{U5XsNN&M{undBPNron+HGKX?!EIQ}W+MLH3mG8op&~BaI7Q)bzKm zKFD_HrliC^>o&cuZ|e|FDEAA&TkafwU|=t}WM2;Yyd*upQ=qf9dQd;ZuzUTxsryW= z`L!#oD{2#(LPljKK60GrRL+OIkuYtbT2kWo(&@)L(XD zO91VH$qt-VRWl-9zsA4_ipx7x?7O@iR+w?Cu(#rqR9!nKlQ=a z`n}uA>GAT~v)|q6F#bUsQF%x4&UbJ*rngDJtj{(o@!7Y$x-+Z9xi2uS-vsg6voeOD zlg#LgGrH7K4#rc5@IbrSA=k758<02fR`{6RqO^m*IBsv@w$&A!)LES5$BCMFS4yRyzAt*V`^|NOkUEJ0`}J8(3sQ(? z@q)%8L#lS~@wxG~eWg$A7Om*$RPsXR!}(7r8#+o(Z5R&ST*S^99dL*}bys`pW1`#1 zg{rw#j3U1VHt0`&7|iWX)tSf>t@Q4>mHx$z6VbK+cukx0=U{qka~Cx;v+Z^+oum^L zZTUi4gP0V@rnpODUOB(03g!yVYOeZSS^BeC$=d8EpuH7tj! zMSk`@;P@4UJ2qg|))AM-n%+E(57bAwLoWO6nNj)9k8J6y?i&8>=e-5{W#{SA^I0KL zhty2XkB!LVyIwZXRi3wKZjU9E<<XigKgZS zy2~DdQ{Md=>49ZVq=CN7Cf%pXl}88k%-McHn2w&j&lq6(GL}F1s}fKKl21yR2US89 QKL`MD-RSOEVIPwCA4j4Fm;e9( literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/action_next.png b/src/main/res/drawable-xhdpi/action_next.png new file mode 100755 index 0000000000000000000000000000000000000000..374916f189aa04b35555d7e91860a27a398d567d GIT binary patch literal 1619 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8Mv>2~2MaLa#Yay`Y4UTL84#CABECEH%ZgC_h&L>|v`++-@ z3U0TU;?%1Tbc{YIT9Kj|CIn17ASOJ~0y*$xpPC0u>qWps-O^_i%)r2O($mE;q~g|_ znWwXb14WMI%NZK#-=$R4Eq`5!ajpdQ4488?~Aq9qRqZeyR6?*U|k4rY_hK zu;j`w4$&Bnr7U-MUr61=WfA$?+nWTE# zPCWm-C~S3SLBvbPcZ~c8O}KxsG4k^qu9$T)r6qG#b3N0R?*Fbrj}tiGM9q0FqDny~qe=4@HJ^POw>RkiDj^A{C-vtx3&-jwDXhzm&6qkj zqi*h;^-p-WiX2Ei{{Df^k2`T)DKZAfwP%QhcGj!yOq5WP%8gxgWZN%2i^GSXaa+~P zTkee0zPxtljrIE@S60QYzrK6w*_B4VTQ7v}GON9xow{qizk*QbmKQ?P!bLkBeID&| l2PPu{4i1(d()BD7409H}zq?%djwYy>_jL7hS?83{1ON&?Xc7Pb literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/action_report_orange.png b/src/main/res/drawable-xhdpi/action_report_orange.png new file mode 100755 index 0000000000000000000000000000000000000000..f53cd945965344c13fb6929212f42c4f1afda774 GIT binary patch literal 1767 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/action_send_comment_white.png b/src/main/res/drawable-xhdpi/action_send_comment_white.png new file mode 100755 index 0000000000000000000000000000000000000000..a9e4e6a8369eec6f7470c6f0c7fd2da300de72cb GIT binary patch literal 2016 zcmaJ?c~nzZ9u5If6cDI{#a5qT6C}$^FoY~fnuP#OWQj4xiVevNL`d>T9uh!30y=Xr zQbZKoXk`(RML?v`aTq}Z4ph`anIc-N!(pt-xYY#;bmqkh?H|LubKbkZd(ZcMzxAG1 z5G#&!TI#(NgTXjO33>788e@Hz*rQ*%IQucWcp-cllAu>3nF<4h;i&XU5D=wRBt!9# zLY0-?2eB|1TR8WaivMG%ZxIz(Y2=!`yd z3OvZDG-zN%qt^jeMMaW617YLQNPkN~3(w2yjPJ{Y7K~(4z$B1Jwx%=(6p8*nRI8mw z85Pa%r-Y(-Y&^;*YBVYahb-W7c%ft}MF4^zpBBdFhHyA!DwRW} zb7^6eIWAAH%+NwQWR9!)oeM6=wGM(7Mm_T&gJvhB5*YMa;9bHD&4RJe_zUX2=c*Qr zg(g^#OG1MoS=;)DHqRZQvtu>qhZfz;k3FPAXWf7fHRek{kgCjQnf>zmimw?Gdr{mscGU-k?@`|Dx z9=I+$(Uo@jCNsi|?jRoydDRQRizitQD{{|<^#7~Ac)ZXtHaX(EXxQ;?k-Eh#f+_?} z1KzPqgSsxKFq2>BG8La1!#X}*$zA2STI6Hq<2p1K3TdNDM*j4i;B7e(QT|0*MdQYc zUd>h4asuv@>ztRpl{Bwr*#<<^m2^JH5NrMOb{Xu)KPwojsSqSI7uNVbgNK~6zX|kt zvaZ$xS$+IsF3WCZ_lVHL{7~YEGk0fEp5FPl`tCMG_|ljP+Z}n;)2&C-Gmo2evPhgz zJ#wYvWZx0#=T~-*qL$Z|;B8k2X)RTBAN#(X(*BUAYRiF&Mf3sxCpssH86@Ow6R6W+6{$v;zR`6t_bcgymI;lH-wF4XwN7$4?cxxdwAC)ezo zpICH^&eN{Q-NVs_?ETQiqppc%Ns{DP_zrEwHgbAm`>F<8P%zyW)39w-OZwi?C~R49 zVm+<_9NL(eG+<|&x9CoNYLm;W{Zl!#Us@Ypm6XX23W_F2s!~ZGg{+(uxyyR0ida2C zZ~k6@-FC91Yd`SgB^xO`v3hgMVAmnv?ysiWI=6-rnsOl)|D~cwxR{Z+8|~0{5iYzv;~ZD3$56 zr2&o!YP9HYebATGQhNw_)_G*_!IYNAfdPJuJ<&I^99+#Am4d@EZZWa+_J`juAN}=e z6l;gr#q6Gntekn83G;sbTV1}I6CKleWZL>xvi{J<6Ja;Vtkgse&hRW<7@O-qr4?Fd^L;lDi+N*J+PtUqT+&6*Y-U1x6Z@aIt zbN@f8tL*o^>|r+#i-*YK=dX<#)o}uaxws}bUz~V!k{JP^F_Hz%$)q7PI?O2H;OOjo&Wf=y#E66mLLrP literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/action_setting_new_default.png b/src/main/res/drawable-xhdpi/action_setting_new_default.png new file mode 100755 index 0000000000000000000000000000000000000000..70065fcece5b79e1a80e14e5926d17a29060a073 GIT binary patch literal 4750 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 PKSZWj3rxAe)f@i-LSti+ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/action_setting_new_pressed.png b/src/main/res/drawable-xhdpi/action_setting_new_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..e6b763c1bd646384d71e3841c38946849c81bf76 GIT binary patch literal 4737 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 E0Yo}e8UO$Q literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/add_collection_white.png b/src/main/res/drawable-xhdpi/add_collection_white.png new file mode 100755 index 0000000000000000000000000000000000000000..8e60f42beb2119c9679589b9ee014a6f42ac072e GIT binary patch literal 1588 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/add_friend_selected.png b/src/main/res/drawable-xhdpi/add_friend_selected.png new file mode 100755 index 0000000000000000000000000000000000000000..431865619aac3f6c05a6df3262ecba7f0825fb67 GIT binary patch literal 15313 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/add_icon.png b/src/main/res/drawable-xhdpi/add_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..acec21701120dd011da1a76708bf1f542f66930e GIT binary patch literal 5912 zcmb7|)mjt`+lA>42|+>-7+Sh($f09~ZjkPfZlpuHhfe8`Qo1{&O9lpsp%J9R-}m~D z;M-Vh9l*2k+}9loR#(8sp~OK#Lc&*4l+*mTMgIj0<6pl-No)JApPFF1 zksf3OhXXuA0m*1&?_virm;~LI9mU*tYCU{o)3hgIo7b+Ha;>yth1QG{EvXJ>nB1Md zu(^K~UPEJWQVa|wkPo{{H|}uV)o}DW zoWHc-?B&7a@8cG#IrkepjPU;db$A5FCXkH0F#!8keTz=Anh38r|9neD`tG*h85YKT zF;du~O}umoSQ*j{w)4FrD!As$u%*Vac4QzW%csYn;S1}(7{1*4c!Uq}a7k3qh2P&v zx7!yP{aRQJFwHVhkm07C)PUq3hi`^~IUf)XAW21RsRkhL3X0?U+^cMF6zjob!Busu zX5xENMf@VKU_g%A(+Rs_Xih$2;%vl$SV6skbE)ZXr>(bx7lrdt_YoiR^&0U;#Siui z?M5`3KV$<6OFS`)e28o<%Tb%5x4*|!*RRZ>K8#k;@#Y_V8Ge$#kK}-#vI1*oPLgNx zOyPM8TzR+*7Awx0{J_w!_dYDoRA9%gc*Aqn#RnsBd<5R%?cA(->2gyNOiSkc8MS&A zQRu}R=21Tf+P~2cr@#?d5@%Mc^hgN&!2Nxq5Yqy45MwWMV!U^X; ztpuAzI!06&6S7voSV{71B!uzRho=J&Za~sAX{*b;au6^b^{rfDfBT%xFTg>P>?n1a z%OAVbG4B_EJxb;$V8ZN99#H%A=mZHcZ#XA(+wS`Yo* zUj0^oD&rLkSoznZqr()trighI@r&D&XkMe>^jg2

    uY?UusAR1_8TQwc&vwtbt}8 z%=wAS@5wG#XA%4P#ks2?kZo@MaVvc-t&91su*;z|76%tngffu){ii~|7nGHa1CJw{ zl5wGol3~VTH82O8t@rqfqzXZIR^DU%c=_*oc?JUS(i4%W%OB(rU7K4woi+&=hg(_@ zav3)X)4iKRj%eTg&N)IZm67gorz4}~%S~WWtLrlVX zS>LyOJNb-erVEsJW}aW7hR!x1-X}u*5g9G8y_RB}iVi6F#7`15xv)-!3%BlI!p)}m z<@|BM>ypF47`4G6kwRkNN{#osLaj!J3Q^N-OTkp8PBR82PH}4eH2!X8qnR*`z9^wn zL57=05tc*buZ|euuVF0(A;g#zmZW8PQ4m4N@DkAw7Hyns*a5s-PELL4Gwc0jUt8`N zvyV(#8-Ao?6Fpp-3I66?d|=NNG--@ET+Cw9ZZ6iW>07#Lx)^sJ-^rh3 z5!2cauc;yX*+Bzypw9TfW2LJ@8=q&iG%j!B>$g$sO6xGT6!p>_YnfILRT5EhyW#|J z0}6@Fd~1rUsU=-k2?~MVjVp-mc*G837IN~P1a!)qn#-xUDOn_ZCz8$q+AWM? zKI=T%&!!3MBa`4RMy&R;LQ~SXYN}opELYq7iD5{}X4pp1FYFtJmC(N~6(dos=mN?4 z5u>9tgS&n+mfn4kK_!_VnGRXh;{Wrm;fv$M_)*QowRNBNrAbfN*)=*j! zKh*bmi$@tP{w$O|&TWc^t(sY!+aBb;%QJLje+u)uNbW|`%=w_F%un98bHTKM-SjBP zFzys(*WMnfdLl^)J#)a)2fp3QIY=1uEJ0<;sD)i2%lQnj(!+T>dZ^Ql;{ppZxVemR z2&PTmSu1q=;m8Nf9tFdeNZg=3JoY=Nsrpv1rLu;%j<4H-3S_>0Quz)8Ze<;Dg`LMu zP~>0kF35x84RnP)QDDL{C@(NHw9m0P+cULvA>5rp`Z&GsLXuhUm@fCiPWuYCb*D2t z4QcL3?~Q>TjL?SI&=77yvXUJog&5u<^u_hw*n}nX{Iq)J{Hy?-Htgc-h3JgtWzq8~|1eKJO|}PUtVXaI3i7 zka#G2vq>v?ai|sB!4u9q$(FTcfX|k4#chkoif^5a)V0Z2HxVW<7NIB(_d`B$@77jW z=W6|cUz@DM=U?71v^w}2VTz! zv;D4_yV8NzreJ5ju17lZW8&_T7Z-neHB(~;Rulrqe!)xhb6JBN&%j&0MsD^3dW$7w zwl4I{$q9SsuYTo3`8nUW7aY(Q(-wj%*(O0c{QX| z_8WxT=#j5u?x=ANWTbWUy5pKIT8+ zI|wYuMC%T|U8CS0epu%spGV>9pPduvG&^?4qYmKIUa9Udss;7M>nfBvo|!k2zF5tM zdrmq^p5u%ST(V~T`@|5PeSQ(F%84cyP%#dqPEP9iCko3=prYMt?0_!z4{haH2ig>1 z1Yn>CDF4h4+j%x35f~EvnqgvK(iQn^)D%1WQb{ ze1!LV!Ry93zQQLx=S@_l7G5=y@6FNDooV3v-V7SIg3Tqaa*?s4b^9NGd z?cXU4f39KL%2m|onYXk~P-VM>P`{+`1lsbiczio;IOu!>ODEPYwW+fU^BCCBl)XeG zDQxX23sD?^PdYXc3%n>6`f75ZD9DNsG)i$0KVe2Z9)7wonCaxN&MY9-W$CY9U?L%U zAnx5Xbf{B?&btE*JWxVR2~@b7df4<|l(xE|Td3JQ7B9KwD(4!oqVw$~*urgUC!JQp zHaPJxsX+(KzaM&2Zd5E#*idwBQVTnrNmX)3x_@+Z#njhwhVcA!tTHa5)H&Zm@;N3M zzAoTOanz6@B)RDOk`qc!1V(HB?BbkXUnBTR&U63IUHtYZC-yq*g>k@r+&1vq)Ba$T zjT>1_p-=Hm6Wf<8{_VjvU1j;2f{;%Z-)K$NHVw_LUPl4>keSm%6Z3!_dXjC64p?DD{PO2CEv%JV#q!CWmB!LttOb>#63fJ$- zg0>LhuUg9+@9jy&zVIOX5F^)o1-FUHudK@vHA<32kQ#AeLF}`Aj_tF5uq<#Nw38Od z!%by``p6E@ROKK6>=Q7)(gGCjyeNCtFb!LyI)I9X+<6|&vO+?lQU+Fvu(tJQg;kL> zz|~P%ps3OVmi0qSEaya816-IP<2`A>%ecM*O`TCGbIBx;Bj3iBK5Dz6OMFESX}f>` zAnC~s4|C=fHYVx_TPU=IH1L%7>s#y4-4jDnh72us$Tu=$0c@|!?%%X5Gqn`=P4$|) zYhEma86)=!45jR63DM=>u7alv?aWG9k$w z>cTh}I-d^8pz;)iXeaId(hf{zkwX0q-vC=>jQ5+PQ7V^z&8JhJ@DvHs`}E5AYK+=+ ze^&sSU6k3PUT6MHFB^D}jdY{xSlHNGJGi#ub)Dp&Yn$q0kEx%U84&Ks$JGvxu}=Dq^maOg42vJ{S*8GxEr86o|%3Uv*G?G-wyV6lurq zPjJhc%d^83V&;wg`=#|9G@Y_}%1mpb!)cHiT1|BGTPB-!vueHhISa;;i)|Nm<0QGf z(Hto_aGmKgTS2KUD1l<|jgM}*=#rYmZD5w8QmAss*A85TN&h{0Ss&|fc)h{1;V3fG zc0@ZuB5GcM8EE*&loWrK@LUnd+`TozvsUIJk5cgT46xILMPCm6s$42V-_l2K9|fgd z>T8NhfN>lnEYFHgE{AZmIpq6(X;7e-*f142^ql3d$^ z%dC(}kTICY%~8qcXW3&e{h=&3(K&ou%zLM5j9)EMn9iwUM;rh&SG^K!rsyFOe$7x1RBuGP!M*J)t5RvHm6PiJ!&XEH!%km?9@3CXb%i}8rdJ%mr4PqWQhF?| z2x{BXF{q^|*6s0XIm1TB|5QkehX?j|fphAl&-@8D5nB8FgSvD@_0I_7qjTvx-ro@i zT#dqKfxYeQ3zyw^KK3(<$-pk~X(_i+PNoi)@M^+8nBRT0Zn=+xn~gm&Nq5N>7TmM! z#?&?Hd?S~)9+hU0okgS0(jkNdl)e&ka+y^gn^wY%8kje3T>4AfrO-j5G5)YuhHf-f zE>h1*co*Y`Rr$pvtn!FkK=1NF!I;KWExlir&>|A>2a|1WQjMbqP?ABxZsvSlo;BrF_3U0-pI4S zX;#VIYL6eNmGstp~AC_PU4*lbDzjvA2>d z&=gk+)z#T^1daj;HM2kHwaf4}H@zzOL7ihV@F>CiNjfdr4SfFY9RpltQtFFRSfY3O zXrWXcTW28+qIX^(e|n0N0{eg%TL^pfMB0+dw%w0@Vsbp0f+jtfv`3Al`T&1Upti_S zq>#eP8DRW|1tY6+DsATkcfXF4N2~Y~TiA70O0TFHF4-WkBT9%ntv;yk4U0pk(pjiH zyliZ>Jx9s6oXpYLtL&aksSc$JQ}+?5pP~#?R_e3stRlQCA&^k5dU^oH$XgMQQNC|LJ0T znZS`bg_;|{`2NcIU12f`2|S1;vxH(mX~EJ)JasCih~`v2-y>Rvv2o>5{HJm-ZJMii zkziX*Uzxjr(=v6=X33#rQ=XA{Dz}5Gh~!gHhQpyFOGLh>^Ww zTA=BnJr*UIrx=|(gMeehq`>VNA@E5L>RiV1x<1zIu$T3f9Ai!QY=4$)c^e6|MrtBW z<9IleJntiWs_R&#gGe)ub)AXDeY(xL=v`(vk_`_7liiwn-P`E+V&!T!=tGG7T5umi z#FCNtNFq<^*z2DZKwPoZeC=pG1s|9od*l2_&A}#7lF|9mfwKQ#7Uo*a-emA?U%~p9 z9^|H=>qm~cW-5>W2mFq|@6joHWgwR1hys5>eVin}f=KimcsS>k&7Kag< z(>cUHZnN){{}=+bT<^QAOu1x+uBiCbZ(y^a;bC0ef%DguOBrpjvmAAd7^EVl9g5H3xl)I_AXh1KUc`dOU02*A*#lg7% zoZ%`RmYc0`!|Pg@dF-iTBU-S`kdYK6Fy+=wRgl+4Ca${Lo+ZLHYJ#|{jWry#Nd?llH6kQl3WReN%x$jjL6&}2i=N`Mr$*{ z0MQPpCH`~1x`U%*pUkLWDIW<;njeSjH%d!>=d#G|ky=0CPgl0%(|qF|-A!fGn`07Ml-EEsdy=2htgnB!5gW-1MrGTD*ud`$xNv%{f!JGS2g^=LKV{1@ewG zRvRgUi**>aW8-$45qWcTCRb5bgL>eC0LXbRy%-f9e$_}^RpQHoe(cK|o-G$)bHGjK zr&a29&R@-JSVsWo4a4xSkzpkju0@`E_*ItjlUjjLhJMgcz{C~Gs-!+rPQ9vP%T+;w zFqZzMIrNrdjKDPl9ja{9E&N;%QR?EN#dRZQlDS%{WdG|eKvzE!rn)Ce2~+gJx<(bOdIhp7DmoR z{D)S)Muu3&3xf^?_0XrprL|4O=UD%`U|reX8WmUk-b^x_bajb6u7a=ZEps;??{s|W z_3{30Uc7%IdCQPx9H#0uRg2g7n?PV>>oFdC!dAQabTJgOEuVJEKK`d-hq8!o8!O0jgWa`uO#n$ZRgkv|lzyp9jthrP(TU+Bg|KCy8sM# zF~J)b1dK6X$V~wY1yWQ25)bcbd$|-CJ7u=#wtz|My9w|{*|%0;%sR&QV`H}10`}lc z9erx7z?cTc9xt{4nfwNA=ip49oHbzVL-ieyQp{67>UI!|1K%w&i@j%(GG)azMoHJV z$KGhbelvS23B(b2KuSCRJ zH=lrHp=-4DK`$K5gI=8MQ6fUJr8EK4{J-8!0Y(;@wZIIvo*3In;-}aGvXx)(SsEmV7`gJKf`F{&>YJ$_*99nnL8#NAe=WAkojMC;%0iXY`Wqb9>;y96o z=1hEno3I)-!tls=N>oA?>hDqXTw|W10wYc9&}FF!gQ4PW6(qk$NZ8g7I++0`4$rqm~B!X4Iv| zoJKcDw#m@Hte{ki(E!FzOXkT##JpTq=)We{q^^CD8An{6f=qZ&T|VR_nyq|<2lQ`} zm9r?I*|GPdYAaNzFRH~#D3|j&1hgzRZaKZ>t~Uut^3=AfSG?kt|Ev53q^cb#ubrK;00000NkvXX Hu0mjfA$Gj% literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/arrow_down_white_24dp.png b/src/main/res/drawable-xhdpi/arrow_down_white_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..5b6136fc4e62517bf8bf9e0824e4837c8c834cc0 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUtL!K^X;q>n+ z6QyN8p4Y5b3)-(LbKfqn;8yBv8tS1d5?CI*~vd$@?2>?3^U=08O literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/arrow_up_white_24dp.png b/src/main/res/drawable-xhdpi/arrow_up_white_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..0008f33b1dfc2e3ccd2b0848d520508a89d005ed GIT binary patch literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUt`JOJ0Ar-gYUU%ebP!MqqEDz1q zndPFl^HzhXhKI?@n)yql_e37CUCbs~#c9^}>ZMfl&J wwWj~V6u^t>KsI+)(ioYTHDj=^@8;vEp*)78&qol`;+030(*CjbBd literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/btn_google_signin_dark_normal.9.png b/src/main/res/drawable-xhdpi/btn_google_signin_dark_normal.9.png new file mode 100755 index 0000000000000000000000000000000000000000..e48e5a278c153964be6ea06268b884951dce5b1c GIT binary patch literal 1569 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/camera_normal.png b/src/main/res/drawable-xhdpi/camera_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..16b79acdf08ac6669eae6f2e939aae9f85ce95f9 GIT binary patch literal 6878 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 L)&8vM_~d^8#Jrzj literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/checkbox_off.png b/src/main/res/drawable-xhdpi/checkbox_off.png new file mode 100755 index 0000000000000000000000000000000000000000..d43c68fdca7c68d91346cf49b6a7b9e163ddc80f GIT binary patch literal 1084 zcmV-C1jGA@P)xTm$?f ztyZgS@Gx5JbUN=K=$WCRq0Pa;!F@dU>8XUqZ0&?Xp(VH5Jf-;PrZaj>F-ohrtyxp1_$O*%7HyyD{5)9*^f4 zl4B4SJkf1#Zax)_MrWm&C#O&mU+``T`cafppF!EL!rpEI2EBCa#fm4rXzKAb;WXPeSLii5^$`uv$Glva1=H-;;Vr^`~Ch|6hWz| z@-MXPeD-9pA~4yZlo@ zzY<%}k_5myGJh8ilq60N}*L#Kc1Ua)dt{I4d;Ze4>{7z>^*f1}|YB{?+{G zN$U{?uhRP@oI?t*1-^kF-{Jsl0gMY3pp_i}oy6!M5)Xj>rvE1c0D{c#>gsw)J3t(O zZ2;)_p8!lH0PutXFaQR?02lxRU;qq&0WbgtzyKHk17H9QfB`T72EYIg3;;h~6%L1` z09Nq%O0odB-R{>306dl*fL5zbYiVgY3joXU0O&r@>-E;keiQQtVl)~Je!u^N>&%2cvnW#B1#GDr)gSE^!h792|k6tyXI_d{QgA4biZa)9JiHdoj)f%dvI2PIvThQg)@^jp;gq{uBrV z=Fk(&Sd!&fni;BO2)b<+&FR633jlEoj+$sd0nXjW9xbclHyir;`tIR#U2AJ=HJaT~ z8ry-Yk}hx}4Vq1p8A@nUCq!9TSXfwCSXfy85%~`9dfviAafpfl0000e{f literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/checkbox_off_pressed.png b/src/main/res/drawable-xhdpi/checkbox_off_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..f969da99dcac8cdd366f32b883666737c7d339f4 GIT binary patch literal 1223 zcmV;&1UUPNP)x7z{*2L_|bHL_|bH$C8aU)mfWOCR+Wx>=g+0b z_&2gq;jL^8gTe2r5&q&YfiA((LD>ODtCco3oS5_M=_ZRD5?Lke8COEwBkgw2sx~EU zXp_<=R-2aA0mKT7d3Uzo`L4rGwcA>Z2AiJFI~dBI8gzf8C3_y{<6SPx>sCt`D&NH(<=bd6)Tt}11#f05l^knQ`AjO@8n9BM&FD#2X%+5E` z^8@Zr!TF6n=c^_o=#~LTfGA}~JU_4ubq1UBu>01{1RPxHws#Sw;K4`~C&VYEX=$yP z6tcx+FCLqgR!a$S6UKX%j~#-rH5YK*fGnW#?D(+TE2Ew$43w{m0CGMqKFW-8mmdx| zT=ze2>9}{*Yrl8(LXEALdGN`rXP0ic`(OinP>6}!mCFwWLA}W@LKeJ?EB)KmQO{Ck z3ZlPvCd5U#zpEDpZh~W}uGL~Nv|7xVtR4bkG{Zi0c6o^V8m<4TER2hP|L%9aXQfSz zHFds?HrD@mjdhi#q_uqjc`%5=R%V0?fb+Dj_m5_iK@PZH*OFfKKtQ(Dap5|=x72z- zlNu4;)F!>pH$U{$64GWi!oP#w>wXVmDC_bt_Xh+*s{oKshq)xor=`X>K9dRE#Lz{g z3IKdY-=p_>1ArT7+w#!)dDsj~6(><49pdib0TBBi0I?GVkg5hC0szmK1ONd*01yBK z00BS%5C8-K0YCr{00aO5KmZT`1ONd*01yDj2B6;JFCGD4BO4XpJ~05p+`_^C3M(P* zi<$$l(njO2KBt6g^Zx-5P$lMx66P<%WE%Abz;;k)GB-V$s=`QA%&DXN2$uRF>dH`~ z!b)Xf6jf!FVQz+HsB<>jte^7?)ixJ&U4Z~R-7k`&XJJBonhAS80030Y2SqI@N|^hm zvL079v7iilzLR~Do3%GtAsb%8X{ZD~AMC!OO?xv3>y+B(Ju3@7sS`^uU>TTaeO;GI zlhW#;-hjCHOiT8tuqI`&pTT~@VX(euAjQ+=$R8@v7t^EMS1i-iiY@gV40USG@49=a zM84mx5fw`C+`(+S2YUkwuq?GH>7g8Sd9Zhhp!J>^aDR`EoTIum^tL_cr=`cKfb$Z} z4S&}dYDAJ5>NO?kx?h|qx5^w96&-qmkma<5_-D%R>|>cmi*CEHt$YkI@}T?ul@PZ8 z>9<}eugfhsing&>?7402B&5I8F@6d5gqYm_N+)Y?FdI%nu-+OW?b>C3_l1=q?nCvK z;6n`xnQ{KJTALc-ud5MZP#NR$vpCQTdt0yK^S2&0uYHNlP0g1R$s8#vxz lAR;0nA|fIpA|g7L{s9+%sgs;4(Eb1b002ovPDHLkV1i6;H^l$| literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/checkbox_on.png b/src/main/res/drawable-xhdpi/checkbox_on.png new file mode 100755 index 0000000000000000000000000000000000000000..ba56dc0a3a033826178a442e6cebc64be34f936d GIT binary patch literal 1666 zcmV-|27UR7P)bhbH!+ zF|`6KcyD33s1?{<1jI`s+L+4jG@+nX5Ozm{iU`W?O!}Qc3@o$N#+_wZ=TH7fWSDcl z@Bhz#I|Eo^i6xd;Vu>Y|SYpXjNp>bu=Grh#GFvk-HDN$=GvKCXuCQa?xk4oyO%z%j+BP;;woUH?<}x+F6s7?^YYo%k>@@7+^5)D~jl$ndT6{ zXdkG=4+K9jW?_;+kGLAF#@E*l;`!irSfrF=0ncS@RlIXMa=Oc~uBQ?%x_#eh67+qX zL6>|8OSo54Qr_G^IsOXOK^<**M&&NqiPy;d%()^OXXs>^qkOlhHMmx8YcUFi)g!%7 zIf5_wY`Pi2Z$8scFv9%@luGP0&F%hsKLx=f=pN$*BqUggViGVrri;Y+C*+g6}qJw1fu)oJr~ddY4&>Z&>dK48eOaq?Y20KM(m* zA_qZHhKjP8|4P(M=?Q8?haK~MCD^Vt7`NE`zX!omoRagf%#p}xPy{dkK78I&j<(=2 zbg_9l<$m*2zz~@{l zLLq;5J1Y2M)Ej|MR01-YqW042_YKBZs_KEPRb!RE1*vOZVmn)elCTGNqJSSHIUbU< zc+&I&d}bOqy^bB@6~kGf=+`~?J5-MiJ!Lq^pZko!QwM!Ts3rJNDfv=-y&7Ek45+n)fmz;Q8ZA3>j5*}LqF5UhxpU+FWfyjzH zq;=OYFgBpwXq3*(&`0q53ErNR6CrV5=f8k7?Ht}>rPt2CQAaK~2)>uG!b$MCNj(yC zu>6zHBTcEs+CVujhMS=%HMlD8!S|vJekNvu!V|>3{_-41N4FwpxgGPwMa$$Fiq6KA zt9!9B3IQAc&saQrRt%@YE;NoCi= zT#V!dT*Hmm=>8$-!eLRC$9zHIwmiq35esUxLK`=;OdOLqg152r{8(JfMBESd2dZ>~ z#Qu(0jG;)tZqedK&gp20#*05=^@?1c?M%!uO>LOt$VaZc4_~m-ydG%`aeFM6Vl|(O z{dYtnh{=U`Rckhw*NK+*ByRBhwNo!J+P9dYY`6bVj-W@3$;b5)9)toF@QTrzd9G(i zmd}YI0={Q3xzY5SV>dz}b5%0{uhB49m|EA+`cuq4fBC*WXb_!Sly)}0pUDh^zb5b3 zKbV>kuOL*w=EbF+(9>er$SP)k8#FR<MoG=~-6aR*s{SDR{Sh04oVT?$`4pfiYG8WUdr1F#mp{)MBgR#x~Qm7TW?x@hw~J z^~?s(i4P&f?J*`=MBve{u(Ob1y4rM2g(a3)Vu>Y|SYnAKmOPdG3ji^$+N#~C1^@s6 M07*qoM6N<$f(aNaOaK4? literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/clear.png b/src/main/res/drawable-xhdpi/clear.png new file mode 100755 index 0000000000000000000000000000000000000000..336a6312b8a032018f93b85748745e8a1d1da210 GIT binary patch literal 259 zcmV+e0sQ`nP)yiyEw{011V6vg;!1qH7ZBOSlN z#-oCY*9tmbDfsxqSZd&vf{(8*s63*tFDKwln}hH0rp?0J$~+5?HEj_--L%DciXz=P z=S@q)pEoTPU!aI<6#T#L6q9A~TFi^rY~Af_tK($Cdpw>W%L-vMUpPVGQOy7V002ov JPDHLkV1n>qZ8-n{ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/close.png b/src/main/res/drawable-xhdpi/close.png new file mode 100755 index 0000000000000000000000000000000000000000..f3d0556b25731b3dc8d127ab0cc409d25141ba1f GIT binary patch literal 3992 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 O%8s@;n@TJHg#Q3lMd6SD literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/collection_no_image.png b/src/main/res/drawable-xhdpi/collection_no_image.png new file mode 100755 index 0000000000000000000000000000000000000000..e810451a2936d1ba8a95a278ba3a527d7978a521 GIT binary patch literal 1899 zcmV-x2bB1UP)f5FMocc1+Mz9*lMd_;0q4vJ~r%%i0vt5l>!O4PpZqV}Dl zgU1A}Q42%PE-pP)EpC_|Oh2HzF~E#+Ik7D+F8)-hR6b2lPk%FVVdT3?EV(zbIW;x) zmwA1c^V{xb%gvhM{3z zs8@5@&+2g1r!N3twB6m^*7fyu>*nSrupA#BKR9XhY;JD0uCA^^>AASLXwA*dg)%zF zLgwe^TSrGn?PH#vp0+{s6#!0Vb#=9MdwbgoyEU85*3QmO+YsoQotC7A%j)el7s= zI#d>cc%T7T!^&(4*WxlNZb;UR^HKmY0PtCkh$+VfI@g6e7pychp`idE;{f`}j%3T` zJeVKIG7by{0M{{Hml|C28a8cJ05Jd%h~UT za8_Is<=p^a45^3D-R6W{09bA!b9}CX@*6ri7EoN1`L20{zFU^!I4v%i@C(GYb(0Yhqc|VR$#|7UAkHKU@=BB}h>@u^ zip_>xQ;k6ZxB{_vjZmj4%B0tf4$U~gyC0d3JO-^@?h63dJVKIdg@zJ+x<7C=+CZgxd;AS3|l?V6v+@_7VZvBQbWpj8xd05(9-QAcG5I@ zY7cJpuB{9sN$5#nMEdBFIQr;feRQ#k0#E=d3P1siVZwabRKsLueD1hx7~6l$ zv5k(7zBfOtsd2Jv{pR&+sZ@I229VF^Uw--W55_tJU@=CMG@?i^Vs_-p_KbZE|w*wJH3`$T#DoE=iSC lVhP#Kma*lZ=JlPl_rIxtFLT*_Cqn=L002ovPDHLkV1fZ9d(;2` literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/collection_white.png b/src/main/res/drawable-xhdpi/collection_white.png new file mode 100755 index 0000000000000000000000000000000000000000..fee729aa3e730b4ebbf0cdfd70415dce48c83e32 GIT binary patch literal 3158 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 L{an^LB{Ts5t^ZVx literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/delete_icon.png b/src/main/res/drawable-xhdpi/delete_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..332998addf2ffd6593a42bf98ede8a7bbf53addd GIT binary patch literal 6143 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 Wsld-B!vDbj6SY@b$~8(>VgCnFgXMPL}8bNiC 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 Qv4eo2uB-!URJ4uxKO;W!m;e9( literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/done_24dp_black.png b/src/main/res/drawable-xhdpi/done_24dp_black.png new file mode 100755 index 0000000000000000000000000000000000000000..18650ca67ce00142416fcc9451b46f7c3fa9d43c GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DiJmTwAr-gYPCL!ppdi5d{n^E$ zkS&J!x2MTQ^d&L=@Mc+D(U^YWO+lL4L-7t4M}fFy3&mE?KOvC(m2K*VDvt-Ze?@)y zfAw|BSIg26g|B~&aw|MoUT*f?-*<5`M_jetviqtbJ!?yaQ)~9xFHDm2F%LX?Jzkir zaBYs$;=HxK2jp0fy*kf%qr7F~FI&c|+)WegjCUDtdlk2NYZ1_K44$rjF6*2UngDqY BQfL4G literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/done_flamingo_24dp.png b/src/main/res/drawable-xhdpi/done_flamingo_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..eedf8f95f93257aefd4bb481db88300ad3659de8 GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUtPo6H0Ar-gY-q_81$Uvkuv3yF- z;cCfa3wCF3WPGfW*pT3@u(Y5<{<__^lCI$A|64lN&iGhoV0&J`fq{_)OjML_uKvPR z@G*b)O}{E;oyX60UHCuVWmxn$nn~s8cBUQ6j%{Z+(dEv(>G4E{sTCp)x^j#KA18;^ z z&dj&-O(p{X0000000000000000PsH|_%L(6Uoh!xX>~Vjq{tl0U*mDQ%eBmkXPJTc zdPe;FCy$%Y%b>teC*>E7AtBwB;`M`m6};8G5~ezU&+?ClvprJ&!XW#P@4Vtl7)w+> zk@Bm}<DJa(J}nHfcYx6tR7$z$5=uqKgNLzE)0Y*3 z%z3^=w+64$)!HD~^vNWigkXH|LfF>Hx6PgNWd(ZJ8_};?T$^rLP7uWJ{!RWZ7+2-9 z%nF~=H|uisWMmL5@T-M(f1kfeNNU4PQ!`5{=2zCnj?1@%e4B29 zaaI1P(HB-T(~xhG$6#DthmZ78RX!nMg@LQN3O za{ku=>%9!d^<{=M<o=g ztCGd?Po#uTqQulXQ4-h(kk90~P#D+ja%=5CpGOIDVsxUYqhcHHk2N zXvE4y2EpTvn;;^(Qg%Up!zX}#vqYFp_Wm)}bGdeN7IvaguMPPVviS~{qh7#bHKI=~ z^ng52s|`XSyP>`bLf?sKq9v$#ttWS91BpLYhx@v8KR4fr5`9~h%jmo4N@-;U#Ob!i zhhFKyYQ&RJp6^5{YYxi31G6o^fa&fQP97hsMpP>0Nd>PKgzzpOZdkC|a{kY((9Ph8 zy3H@uQoctYg#23Bo#+>gZLrz~b2h!U%`09G`>*Lgt-^hsaq_=Ko{DkL&aaj2q#yQ@ z*?>*N+}X}JwsAcSF0%k9^7>@lb|A5L*dL5%aNkZ`9PvVJ^#($D2ZPvD9dPAUGIs8P za>U*Mv=abEH#BN~5UZLmJWh&Ef!vGoai^XDiyp0&9scw=`N-$=g)$?zqi~jD9Z1%D rP%Hxg0000000000000000MPRv++0fL)(BKB00000NkvXXu0mjfeU8$$ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/edit_white.png b/src/main/res/drawable-xhdpi/edit_white.png new file mode 100755 index 0000000000000000000000000000000000000000..90bbad426aca19170e292eed5a9fd45aaea29b4a GIT binary patch literal 2584 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 qUo>7-hg8V@%Ks(0( literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/form_login_user.png b/src/main/res/drawable-xhdpi/form_login_user.png new file mode 100755 index 0000000000000000000000000000000000000000..76ac22afbb1681f94a52da401b63d315b861633f GIT binary patch literal 4614 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/friends.png b/src/main/res/drawable-xhdpi/friends.png new file mode 100755 index 0000000000000000000000000000000000000000..0810ce136cdbf9932eac3ed847b2900395be9846 GIT binary patch literal 15657 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/friends_white.png b/src/main/res/drawable-xhdpi/friends_white.png new file mode 100755 index 0000000000000000000000000000000000000000..c4233738cf3caee972b7804432efbc8708233c08 GIT binary patch literal 3620 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/gallery_normal.png b/src/main/res/drawable-xhdpi/gallery_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..3d736063b1d222240d09a9174723f90af7d769b3 GIT binary patch literal 6574 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 S(WV%B)_!nLSG`OP7V$rCKOcAi literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/gallery_pressed.png b/src/main/res/drawable-xhdpi/gallery_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..d14bd46efaf271acd96e925862f8938d26fc1641 GIT binary patch literal 6556 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/go_36dp.png b/src/main/res/drawable-xhdpi/go_36dp.png new file mode 100755 index 0000000000000000000000000000000000000000..1056c75764a943a5d99d33340a0ee6541cc9e647 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2U^Mb{aSW-r_4f8b-X;eDw?wN8 zTvwu2Fg7`CG&$=ew}~J&fe;Bpz_>P`RYn=CWvRbAiW^ z%i3I>RY#61Onj}tBD6Px$Nf}5V7pRkrge*A>Z`LY3aQx%q3)+{JYC&2WvgfuuV(T7 z9b7@*mi>C?5iR#hcp1kQ;Y$-6%oKs{STFHT+4uG{>sw~^5_8@xbxU6<*fUx1MU=3* zbU^7G9|uK?$c94&Mhv|c`SrgY3Qst2$Y=?$wR4mxKfKW3Hm6^Fh0w!*h7A@h3ydY( zH#K#MpWLo!*|nkRi9z?{0KO}nDJ()B3XKrL$onT#tN8!RYp*|901QM1Pgg&ebxsLQ E05tTCi~s-t literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_media_fullscreen_shrink.png b/src/main/res/drawable-xhdpi/ic_media_fullscreen_shrink.png new file mode 100755 index 0000000000000000000000000000000000000000..eab123a8b2c48cabe29cb8d09862868b0d295623 GIT binary patch literal 1189 zcmV;W1X}xvP)LlawTF zN!dKufjeUZ~v{t3)g0cX?1~2jTAhe4Fny zGkfp%`%3&J)iU0@7#0ly|FRID3v9RQd}$o76FrD7a46f8~*vg)x-58 zOm9>lI?Qjbey)Fn4F|?(<>KV}jq7zV$y@4muokDVRtW(w*T6d{URBicRaC2N4}9U8 z6>ZGS%%q~CBFf0f5O1ioG_u?6(%(aRdb$!L668c~Umz^@r&~EPEhCAU{8! z&CbrUXnA>gVbjyotfr=hEiEmD>?l%?00e8W7CDeBT7U^`(*)}3>R2EUU?O>berAV< zhY>cT1Rz+893lZGu=NP&4zkP3OWN7lk#5Seva-0FJk}zINPr1!)06o4_?QL<2WfwQ z|G!NyU;z`@2{}rvt*uc{PmlCVBvOC@EMO+|EVR11O5@|>bbEW7wBnH)7{E&SVGg|+ zJw7KVCuszb8yJ!~5I+HIw#ms!YHMqgPEu8PKab0&PI6!X%W!khYoocjxom!Zo*9vg ziwoA!&>(H2@FB*C%+1Xy*m`Z$u164OlarGZ;?t3M&z8nLK0cD)@2B31A}T?(WXq7kEb+-ypNDlokPtKnlJ}MBL@FvZ%7Mk{k|)wCx37F^Kng zIz2tro#@5I#i0%;Yokw3Pqe$cOAikZ<_P5Fnp{)iTOpGhKGlBN4wT@z20FCxq$(! zgmF3`b8|C0J3EW$)qF}akH@3# zEiEnV;NU<3*xud_6|X7=4+`=5d{P4NAqKJGcH}}%2rz(U^g<&euqY}3Pkkt&y1M!w zA3qN%c7E285`Ygeh>iBaj@(htiQ&2!3xQGWv3GQxL@lGS5UAq%^BoaDEmfjgZKBa1 zJRX1M>f`$9jgS1lxPIsQLs+Zzrv?@Qi$H42UjYUH*^}h<*u}EY00000NkvXXu0mjf D%MmtW literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_media_fullscreen_stretch.png b/src/main/res/drawable-xhdpi/ic_media_fullscreen_stretch.png new file mode 100755 index 0000000000000000000000000000000000000000..137bb04b212a04fa98381f485cbe842ae28242a8 GIT binary patch literal 1608 zcmV-O2DkZ%P)PbXFRCwC#SzAbzSrlH!yN)KKlchB? zn4owYlf*7`K}7}A5}iOn9|mk*#u0n*nngiaQ7;4e6bWTdqZESTEiB2rpg1P@A_ZP1 zvT)KdFWEU~&03rDJLeqtIsb2`)W8KF=eGAgYwfl6x7OOf4iVvN7TvZ1+XieKU}=C( zr&Hc~69Nfdgw3#0QDl}dO<0y~wk-p`C;UdpA@~vWn_z$w!IdyZs3H7Gy1rX8iVZM_ zY3Hj=yS`O0L-@s7SBA_3q4d&5_;GbBoSeYb)fMcW7xovbAv&d=84T_kIKL-Gup|!OYUcGuH z9m8v!IB`N4va+&be%}69hz$Jr@gocj48Zf}&&4>Cd@Eg45<)SAcP7{AQ&Urou-hEY*bHbWsZGZQB#CpE3r)YN3XR;w(8WCr|1_{TJ9sjRHbsP<>%85|rO#8anE z*^Ol%A0I3(E=KYYk|*u1IWseZ+1c5u1~{oO0doA?6Ar1qzCI`^DS^huM!RF@=jWlO zrUouvya?op&qh^tx!6|BE3&Y#01qENgh!7aY5GHs>4t^|=ogASNbeLp-1=Ot0zb>2Uq}bvS(Zuw5fq`7>wEKy`IB?BBnC zYZ#yidw~^;kB=8LDN{ZxD+?}Nx&$F1A)hr}YZi{nxw$#P(=s`B>=<0QZ~=mYgQdTn zKYt$f?b|1vyR@_f@87?N^%j?^1}Mpf7w+%xhbvdEh-78!aL2{PL1bj)nl;!n5fKqK zm9ML-gPS*R!r0i@YSz{yDtTa$c2p4d(9jSjCMF6_CS|azt4qq|#4gfg#yR5U%a?1$ zlk#}`_H7Id3>4!E3k&h>+qdHToSYno6WMY>L4mQiw-+-qGAtB2dh{qhdGf@<2=WjT z!$^}Du@%x<>lr0`0-;*OG|Uu07Fnvkj?UdSVyFME)Uok zTgoeNb8{0$jEsyRmnXMw-NHS4_DC~!baXTZ1Ozy2fGR>mLy_3UZVhB@#E~OMkf;}T z?%cValKRUSuz~obT4>A5wgFZb0bg{EOk5nTgSdp?j*XZ_B)AVBKG>Z@2N#GQ#cO+e zI}8sGJ7$5(A=Wdya3|&M?QLD(>xNFxgymsvx zQaK{#G&eUR8NX&6l^b~a^l7A;$?=Zt+_`h2r7S8c5=n-?r@j^Q^74ez<}xucA$VRH zXAY*!t5>gz3~MgbM~Hl)jN83?H`dnHinW=Z9W`LFs;Ww)T25BH!~XvMqSdojUJ+`< zEfiu}ozvFVh6fHDKu(%BZrnhF!GKgSB9-2%2B@6@ol<#Hx);?X$2%8n zwyH{wZ9hLh>Gu?d(mBb=$>NpzU~xXUr{MQ|wc_X*(A3l`vb?-3$^)wsK!8gFj(M%Z z1)Y`<`fPcC+2`K9dq8mxZ{ECF^E+Uc|d388Q1RaZe2@Di)hM~n+aKA#vGrLk^&DNJPSUvN604?>gU3)YsPw=2D9m+4BLuGJ9%z&>>tI78WL;+}+!9IkOR8i_2(~g_B=w zY^(@NPLS5;i$C*kd|k=PGbxzq*GcaawS>?Qguk|6M^>w~7V;qcO89#VDL+6+(P{uo z5aAEPzorF@n*c@m3BvCLA5G85zWV3H+XieKus-=ufB^uy+<;JVUH6Ot0000rj literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_media_pause.png b/src/main/res/drawable-xhdpi/ic_media_pause.png new file mode 100755 index 0000000000000000000000000000000000000000..1d465a41e4b087624ae5a4cb096aab184e9ca385 GIT binary patch literal 599 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}trX+877l!}s{b%+Ad7K3vk;M!Q z+(IDCccpZxz@0!tqFuMgM}_ z3T@4f=>}I?mz~|CC#BkH?AbCcY(~A|*n{@108Jgrt52XwcnW~7`1kbX8xPocPfn&*aV9GC*8iq>C(n~{y_8fTE*<$ zO3kTWO79;xcFgk=47@8_;>6^mQo4&XIL>gn-_NQ9H~BJ~ikervUqiH>74MJ9$^FkJ zb!Vcj_1UW_p%XOveogi5Ua?@oqr#P6m+lbSzQtr(c$3KvzMl-o?}a}1zT?**AHcxk z072Fc*`HPO6yrBdz7!Fcx%jrA0@JMYq*Dh~&IbgtxY(`}e#CIY#Ax^7qC&Z~ix%E( zyxyC8i*Lh$E^FUy&mS73on?!tzQe1%VA|e)Du2YXI^N$Bxxf0{`u`0qtg(&z7$n=* ztWtXNWH~UvMN3>GN}P*Q6H7Al^Atidb5j}2^^MH*4GrJc3$6z$Pz5PSNi0dVN(QM) zWiT=@G}Hwm1M?6=Ln~8LD?qT!m(~I_>aQuV3Dnn@*AuuA^Q6f5RWe~6kX8Dp3jgVyD zJ-yfvWeMzuT(zF7-FJ4*Z=dIxvvU^sT>tqZ^TDkHkK8^^z^%Pg1^@`KapfMO?7toO zaP9-30}#gf0LG6=0WnhwHe)W2DTVFbvc(b;+?i0S#oB|{Nv03&YhXStM5FViQL@Lu0Sjwwgevfj2 zlK|G8L5>6vn1v_N^W~*BeJ)=t1)`MXBz9QcOT;?%qZJSl!0Zj2x{x{NeK(u0?gpYr zB7p)I$yOp376Bk4FvA}{`^Dvx?>Fbx6uqg7Q)tH$${;IC}0Li z$ja>0(B#XlM2IWA0GKmy319|@SbsG$GM-zB_&eHU1%p^V7_u7xGl+oA#fj00xhByO zl~tL;J**sT?*hO&5m9OVQFeHyDq|t`Y4aH56+)x-4gstak*JpboE&_xS!xXiTjVMp zAcr#57lYew0Y;>{wm3bMeX$V<#A326hcSf;=)=1o+&b(5YOb$7AG!NzDds@-cqJ+oL0O03h+^pYf527seoI zHY2qKV4a}rV|T{>+O5Vy?9~?PgJc=0HGlzLP_(yV=vk!M-y&5!#I!TltpLQ!bVuBb zhILi$t?!Opx3Y){c!For0}axR>y{Y+Ajo=i$F7@Ond-QI0zcRPp#B9Qt-zj>-YtFr z000$qMObu0a%Ew3X>V>IRB3Hx05>l(HZL(T?SB!k0000bbVXQnWMOn=I%9HWVRU5x zGB7bQEio}IFgH{&F*-FhIx#RUFgQ9eFe;7g{Qv*}C3HntbYx+4WjbwdWNBu305UK! zF)cAMEigA!F)=zbH99poEigDbFfatb-k$&f0338hSaefwW^{L9a%BKPWN%_+AVz6& dWp{6KYjYq&Q#En5<2C>Q002ovPDHLkV1lj6{CEHW literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/icon_label_red2.png b/src/main/res/drawable-xhdpi/icon_label_red2.png new file mode 100755 index 0000000000000000000000000000000000000000..aca721c134dfce30a324d4fc8ad815e412d24dc6 GIT binary patch literal 5280 zcmcIoXH-*Zw+;}RNF9nGV(7ht^b$e@M3CM)1Vki(5W0v0N++QUND+`8IwD=Ag9wq{ z2Sj=iq!+zmW}NR^v+mq~H*1}o^X|3x^E|t(b>8zv>gj4wUSYWc001bpG}R68_nym( zj0FFWH7n1;-ai}PR6#eA!0PZl9J;=}fA>2#ePl@9XTzUNSrCF2%^oI+|O^M@A zQD!=NAP52p14)aB2|J425(C{57ZI0~l97=S0!fI8i;0R!h>A-Hi_6GMO2~_ef&Th& z;MtH)&hiH8xBue8uar3Mqfj35qN2XOz9PPoA_%05sJNV*+$DyDgfQMi*vlV|viB2) zdvX3kP=|RrB3(UDt_V2j64BlP;f+$_z$^VT1$U3XVc}kXl?h)kQ9pYRQE?Hm%andO z>gfF6uI}!CdwZb_VE@tkzXE$1`Fp@b4PagfZ=@r>an78VR37pWB+MR#KpG(s4}Vor z?>+*B@Vbxi06`3;L8h*7CxoxpAKp4T@>*~&ls()LrlqdLfsYq)b#;=5O3A3HOF-l# z#ib$Q;?P@ilCl!FC2mPc$w^5_%8K9m6|0VL^md2AQNLoH{u2xS*VxNJaQDD7tHY44 zJ}{@-NQ67+kA&r2|6PmBzvBHB>-6thWdAi*6fZ{fvaSEs=3gfK>|8$nJ+%16-(wGh z<7XX-A8KJWrx5^vmQhO`Y~(k!nd$FmbkNW}pC&2EE1B5a${Y4j6;wtdLYD$U8@-C4 zP!uo;tRu4^*lh%axE~NQVfi%8jWBL?uT363tg@hwehSRhH0P$_vaAtx$_$cQnVCoM z&};3@ti*FqKT<)rcbxDhepkr;-nxS@=8sYXJSo@zLI(hV0Z%{xRT=<@3_t?}kP!la z1b~oB^FNmV@cPH{R}kL(-xz;-ol>Q5A9Fj`q@|~)%Li>IIU)P56bImlX^ExRMg$ye zqphm%(w%|3f{+kg^~S)xzWtue!TzPA+c_rRF3Jq_A3ahe4;g9$PS&|G37c2v53f*D z#^pEg(>fh#Dov@Lvkn7d`vkiqqfJgN%_VOX%XAlpuaiPIym0}scPbnPhM5q`VCbp+ ztLGm2Sh^RhEz2Dyl!+gN1%+tBBB*j#ur zUzCxV*=lmWEjfo4UBm3QZg$~y;&gEkMp5@3TAIFXi#S%5d*D{UiBp|OVdKFVb0qus zu^6q41h!nX%RSMj8uT8VBFe$CP=nI`VKaB{AlKBSdG2f8Csia^nGm-ZvkcBmO)4*! z4wZZ8*S8JRq-VW;^9c&|KW1=v-#!MBi+R_Y`V<;F3yt0X-IPfJ9!YI;m^vLkC!_cg zR9$$zf$JI980glLnGAi4$#rE}qrkRF;Q?$_gD*)`ty-yp^!JVrpUPX(>uCGEo22XZ z&Nwnji6750Ein!Uowa43YUK6c^Aq3X( z2+P{BmqJ^G9#$0=2ZBvD>O+8078bs_>2v&L*)8^JdvA=>$lGrSImmK_MYEL>Pg8iC z)VlDbcZjCR_R{2&vao9k4)Jow)}H!7$Gq|u$AoXtX56>ehnUca22kW$BzMdy+lkL` zK``5)Ofv^mGD=yd31aM1`ybXlBiqa1kxp-M8*ENO?@y_*7A+>zp~We-j7Y35KCK960ITZY}CV^@+ePydhH%Lla zR@Gf&09WeSAC><4UFp@3D8(zl2K$AnB4bJMsnt$LhTpPoFw~!KFIC#jSw5qUo1@&3 zVrFx0zW6axDb&je!CWV}xlvTxxSAET;>g<#RQkC%K>#U(tH&wRLyagt=dEm*1nM?iTHOWhz8o3#?Hf?C|xR1hnVm-eUR~=KY$c}CN)c>9X;2vU*MWlZDD?-$zx09!`_9e{$-x< z@V!Q&{Q;7T-X|Dxq>Re+DHg<`ohKlqYZ35P%K2gb?#bvElB@Nvx=RK>NS1o&OUmm_ zx73#vsMy?{ljN=r*KpG*0^r2J!-Ez{28+pCQn73mOCUFM3QedZjj^#?5lvkX3*%M{n)iW{rHA0$hK3D6 zc{k2$fXd>9rNp8NsYdzBY&Hg%Pu@0wrbA&4_aW+A(-FgS^i@g4Hg-Y&L|<|T9`bKz zEFDdp5G2ZZc1ShZ$S`@2F>kK=|gt1DhlfdM+asU#r=0DH1nvC z05Y}K*+VMhdfeyp>KIZ|XnDZH`zWC<1psitpS>UZ_G&a$a#+`ORKLt!O_ssJ+PqBw zO_;r1@u;JJ=lTwdJH-z%_o0?o1S~u0)BwD6uSrOWLEnlrL9G#z zEl$TT-OWqRQnX5cjCgR|*U2nS&R9>1B?FPoSBLMQYsD&L`EXpy_56bV96Ob2&cq-x zPRwhQXzJvW*5Vq)z3q`&|M&o`ulA!qXa?64Kl4llyzx10+$GA+Vqq$)&%u``ETRHf z_NL+3C;{xt^Q`6D$DRrGksE*z%nm(A>zC7upKocdA?UN`B>4R$=F3UFNuPkWa9>6f zjgxF$ew-*w7E^aJdoLx~k$&?6H(MS?u(ZAjHMv>w@{NzxV$JYxA+ay+5Q4}~#(e3e zrdCt^xwRzeASOx*0wR+kSTzFRt~*2DI8sQ?>Ve%sSFn3Vl0{kRzsv3^r z5s|}-p{C`miI^y@2z(}pAW~6r=OCLRnFqv=)!(D$arf_o0N`evJjWy`iFEOBaXx<xECdkwe#+#xqjL7 z-S-=D8eUO^$K;N&d3*>yGU zMp8U~#sXBhq-_Y9aNT{6z7P_Ypxfvp0ImT9JAzMVir(^D)Lqeb!5dVUI<5_8PF8_Q zGDvYms+hQ#%v46XxC&{FeE>~9#D}4Xp&A}Z5%r;q0uRsgQ2m9ykwZ=q(osVl0G5yU zFboqPjo8O)5p+Fbe+tEry(Iu?jz90H-0$PFA7NF+h;V9pL==&$1`y-zA;4821J5QQ z*=JgF{kP1wO>#=B2w0zhZrD8yb+f> z>=7Vk{*ve^Rz`y70J6{A#xCg(y_++bqVS8f^)F1qE7MkNYBU5i`I5`uh2!#EGPXoA zbGnjAY4SPY<|n5$d&@{HO9Qj!Sgl05-g z$A9lDE@>N^oXLmQQGqmh%edV?$&6pinCg+ zDZ5W}+Vj;YJ88}|lPX46w#2<$=iXBCqfbZ6&?L0fymnZC_9g@aw!j7(kAEofo=Z)jyHk0;Cv2IAt0B@y?s-qj9F?l+BfFM?ql#c&f_ZiG|TQXUot)TczT@ zdD9Og?_%07oPdzy->Y&5)?S$tLDpo_$mK*?v3^0p#-)@8_!_Icd(Y8ZjoX#Nzr4>* zNTcQ}-Zbc;0c6NXZLb=idp8}*>zZtXI4YJv+1Jq4%mly&dMH=g;#G?&aqid0iNVqp z(?)uhY!OCyW&LJKbhD|9V03{-P{U?Mb!>w)_E436>r#Pr8{6UFhPf6pM1Q7tJ>L4j zhkC8jh)I>^CY&dt$Ygjf4Px0Z^vN`pRpcUlr}UXDe*UP}Vk1of|2TUNf)2&UbMK6)#J)aWg0U zd!JgjS*O@a>|={VyZxLZJ%*%K4MRG*y8~@y7PUJHH0d9VWKX?ck1uEhf4i-Jz5nOH;| zibe1PqUz9jlD-?cpBRQgGcBbwd%x)vdBwJ7S_JB;8{ypi>d~(_itJ=YSw8m6Sw&Ep zWZ&0A@1qMF?tC>VZf+7(!<2UN_e+8F@@053GK(avGefra_8A_*>&t-yMq1R#>ZrCcPjjLg{agpmsi4JwLHHP&A80C zbKE-0zM+raKj1^sN%tHGOfYmRFjo5;R40yt5JIwM&8hcNyG;s$q$Ks?tLvM;X3u5{ z9&KopSSRpz<>V>Vzc&3kR*O9u#YL&LCiBy;1s;Tt3a2tjP2cl5GEcd%pxHSlvsIyU z&t>YSI$o|D9<6v}^?4*}H@@{59~tV+;9U{sUdi?#GcNL-1or>2oyoE-r<S&qPQvY5a{-^@dESJY# z;m2JXT(t7r1|XIS*xnk1VwTB?pR4GpoI7s>u-qUWRhyD8oym>xA=Qxf^j(Yi9|rnPujBP{~q7`nDG0oY$Uc_`t`xCL(M8dTVMy zo0Z+;ApiO;^jhQB=(6YG%zVCw-}=64{5TkiY0K_67n6Fhd%j;3NfeV?AFy&#G2`|| zOTW4Bp=*HtQ7xA?N@u#K=+TK$@ucT%gCy)zi-j$meSnq&lQn0N<{;Zb^-{)yh!!32 z1Xq8x>FKnEMNxTt(d~-8tfVteFKdaa(=S_9`sJb0?oIWX*waOHp#Xx7wxGq^AjWkh z=l3Uki6%o;hXw&Al(wlZHN%eObqzPvl~f#W50qQ_`5hZm&QmK${BxCZwe86 Pd1j~u)m1N7vkUnjZIVW( literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/icon_label_white2.png b/src/main/res/drawable-xhdpi/icon_label_white2.png new file mode 100755 index 0000000000000000000000000000000000000000..91833264c80dc4387eb107ef164f75a4376fbf88 GIT binary patch literal 4601 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 CIX}_> literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/invisible_black_24dp.png b/src/main/res/drawable-xhdpi/invisible_black_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..a8e5e768be8a5cbbf99d91daf060780e2726addb GIT binary patch literal 791 zcmV+y1L*vTP)=AyMq1))+zs_`HmJSZL&6@Q&d#Hx5zq=)ve(38c2UKOmM_T<^B#a|SR zQj73NRUfZcnQg)y)DC4Wru#&1*GF|QQy8mzLO-%`Zg=aqa1 zc&BibY3QA_B8IGI8AaS_uR?cLIp=$=2C%3Qk+pu`tc-nv6ELlG(qWCScr5HbM#K~A zx0EvW6el37bdt2jmzwNOea!CEXh~)47o31o0j5yGrqg+`#sBkpK%;TJ+h^vaY`~7OcO`)R_QN0}P44DIbHDpFg(X>bqxX2#7iBG%KnBos3T?1v%TIy7U> zr`QEH(*d3bU!p9czTI7<%c#hTFt(b$$TP?LpDJ~wL(F-iZ6fN{4Nii~;68XyU#LQf znws)~o{dm5)@{{^zb>K`x8ji#k^WyrOhoNpqQ>?5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0*lEl2^R8JRMC7?NanVBh8W@ctire;k-f&dJ!dajxy&`%D|_`-Hdj}ZN9{_Bekf*%%7+|W#j)s;l9T+8 z=lxCcO^=$j{&gsH*e8knUBQth-?dVqOEjleDQwoPWhc#iH{JZ07nSWjsm%Q5GQqM$ zg_QL2b34DEsXZffOd_MKmA&B0bcTg(M<&1UHxOmr5;f`iE7vvOGwoj66id4Nw^E1+ zJJcEUL|F4)-J~1Ra?BH^Tvv^%bg0_--eyO%A4C4smp&%K`QGmY_mNs~m?$!mKnV;n!~6KZE@eqV(oA_&KOA5Wc|q zf~ADXiV@76z$q&!9(Z-}2QkIJ%Y`N?CdB9IG*3uZ4alo07yS{)a%IJuxkvIQm70b+ zhuynw=(a?m({@S4bL9=UoP&$C9@b`0o|pfN;fjIvGmjSI$MJhU`2~u!`D+}DOVpph zdi?t&*X4Qsz3e>3tOlaC%^wcvEx1{DVAZ66H=A`Hv7O#i9=x6XjH=?UKc^fY==e=& zbLehf8TcVFUO#I8q$y#ml_uOdIPG}qq!{;i4lXx@?hCIvxclUvSzbx&^ZorrHd!)V zDcs8SV-EYuN~VL|C!76sdv1mCT@v*T)mZ-f!zSj}`_botqh7b2|p%{L|9p3>xI^Lpm)rEJCiiW_gu z7Cdix4)M-|IcNs6*x4DFv)h>x) zt@ydJU)*fdxy}57{QXg7B6dW-Vgr5w&9`gC z7Is|=Nt07c+APSzd;0uIT^Y`zTLKS?8~zr=CGDSAaoNMcOv;gSTIK`BBRap{7Hyvr z$2oB#pT8yJqzi{Wi3d&!WS1~Gro{5Lyj&Q?*UE4zIK$W7WtDnm{r-UW|trF&Z literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/pending_friendship_request.png b/src/main/res/drawable-xhdpi/pending_friendship_request.png new file mode 100755 index 0000000000000000000000000000000000000000..ee0e412590d9133dccda56c92cf2971b79a53bc1 GIT binary patch literal 13460 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 W-;$B5@P7Z>2%spZDqABB3jRO6t_yJh literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/phone_48dp.png b/src/main/res/drawable-xhdpi/phone_48dp.png new file mode 100755 index 0000000000000000000000000000000000000000..708fee9ca9112c666fcc9a87412eed39d3c33b83 GIT binary patch literal 1017 zcmV#5DzGWT+f{2mXtI+ixKi9^G2le;8BTpGI(%lLLQLAPDUakrR36x zyijs0F?aXNx0(f9kB>qEra}OZ=RyJ&K>&}tLIT!70FO&T0tyho zqeV!-aR}g15EAeJ0(h(!67Y=}3<1$B6cV7wLqIgc1eYTU5a9M*;5r2GI430FJ24Uh zqS+-l4y=WMX!3#rc0)ikgNQ!d0dBh@t_g(ynivWJJa$?R|1+@wvmib*EQbGu$YLqN zj9TKQrSKb2l#j>0gyDDi9KHaJb=QFw{{t(L{KyI7rF~(i+%C`c1ngS*epBNHa zeV-Lce)tyV^2AmMkU{;j+n7C}IS7zpiY~fDNq9?4ga8>fFdsz^eSAMi>q4iP654!g zQBUha!-*$M3FnDA2(ZsI-2uUoaMl+IXnCwb3t5_0i=?Yt?|^}XN5mw{;d72#_@QTJCrj>dK_n-i=Z~=&r0GR1h^j`8Y|?E@KQi| zb8xF(zJ>sYj3ssuPa(iPs#>*|cp)5q4+KP`YP#Ert2!{70*Vk|UXjb{N0sVDYLBrT zUV8jOJp?32{U?ukLI2Td>ioJx#6`Ws^BM6$uTAyom%$$W%dd}fJp}GqXB>b42mlZO n0RRFZ06+i)KmbC30I&H6>AoxBB&+8@00000NkvXXu0mjfNQ1TV literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/play_button.png b/src/main/res/drawable-xhdpi/play_button.png new file mode 100755 index 0000000000000000000000000000000000000000..a4e117e3173e5a94ed897eef6f0176f754bbb346 GIT binary patch literal 6510 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 VHW_Ec>i+xz(NNJ*E?2x4{y!>?!$JT6 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/poinila_24dp_white.png b/src/main/res/drawable-xhdpi/poinila_24dp_white.png new file mode 100755 index 0000000000000000000000000000000000000000..6802071d5f1966701fddb85ff7dd0efa642e9b90 GIT binary patch literal 1859 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/radiobutton_on_pressed.png b/src/main/res/drawable-xhdpi/radiobutton_on_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..3e7cea2629b05236a9636a3bf42046c3ed6ad672 GIT binary patch literal 2155 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/repost_pressed.png b/src/main/res/drawable-xhdpi/repost_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..29d148522eb5444e3b3bc30375216e93f8a267ba GIT binary patch literal 2555 zcmcIkc~H|?5`IYlk;A}{0TB=eMvz0flz^Oa$Qgp75D`cKSLF~v4kG~)gy4Z(>mss& z$g0Rv+#-jA5Ck!@%PFTI5I{NP3KAg1kj#%iw)UT$s@d7vu2=QCyZUv1uluXM>*4Mw zEpb2s03hw`WPb(#7^K30xEOT#UjO?g0QR;z+n+p399-0tRK9sV=85Mu=_Ow5L{uy)E?|Pt12uUE8@{w^*=4`MMrftmedR_F7sEEH#Z8>*)|PL%4cIh=4HCAMbI->gcPQr`hpRNQBb+fKHODZJ`yKwWykSKg8 z91f`!=36E3V)>+8zvb&hV`@N1$k&1f1AZ8h$lZ=Miq^r6Co{B%B5vr-5~KvQ5#Badl=XJfmPmkMV8kI?w$D<5U4cxP!RgXFxEhseB0kN5AF4MmZP$a8O&%+d$+wK- z%wG<|ZqUlkvBmIu0~4kzLerJ?ql)npw`KI|eah>Du+q#4-Xm?@m2*Ok(_b$?8JP=Q z3qKG)(IfM$-=^ry_RW&BqoJes(0of~hRSz0y#b|#bW7SpUD>4QfV<*+&CRi=&ns-0 zg1)}Kt=qzku7CWv>7@lHx#0~f1SE52qIcq@FRg4gTX!MZUemyFIx&nC*QUQ?U4iMi zKPmSpt!Zm~B>93{pp~OA-OkPqA7VmVz1fy|)4tHZl5yO?AVO{PNmA$3JVQ4_K+d2> zO!mB1kI>y@A!krkgZ7vB+Kh%h-{X|qDt_S^_juZr4#v&B&(^?lHaB^(0jXO8y7vpSjGot>{2zxKe1T1QV+7H2-Db%(*L%ml0j zF4+&@QpPB;jS0cg(HujhVuvP3kdu=u<`1h%a`3l?r%hP8%~tssQ1?#tyTTe1{}OgS zOT3d=5^Z2fYE7w#2M6!Vwd8TzNQf*4iIxU5yhgI+JdBXttSUqL_Jx!0ET;pOTEW|^ z3z;G|;4qK@5zd8MrG0s+xeMhKrM*w%jR*w=U}{jL6NKXo)ROM2K@H_t0RR#oB}+c;h>=5i0;zhcbhig-Z!VJ zL-MvzJ>P>8CushXQ86Y%f$l&=&2_F{F3CJol$-_iq^ejh=@1mu3C}v{TtIid=CHKO z5~%QR@!>zR1!W2*b#q+SuJeYBt%IcN_ChUQwjD7|~ml`mx-+%5two{6<`YcKO|1PRSA?IZg)u12z6lD~a7NG#Z0yExbHs2_A6@ z;M5cXv5Aw&_KPTrY50zgU_Q;{U>c#^%heiX`~xW}ZLi-p;5c4YT61IsuUCV%$B7!# zakV}>Axm8t&FC)(Xl;y4-m~VV!!3|>cm#UKw4=AT*RvXpe$<Sf(Ev)lA@xbZtg#KGz}S^Ex+JWm_a8eA|wc2ZI7)|v3d%_Uce7TSMH}l&&$yiSNk(v0$@kD(wA=Z$4J7{ug zb4PF-b&K<-blkvoy_K5CGFLMmg$DH?vYl+2F#L9)YAM3^vcjo20t1+^rVov_)KK6fH1_xY}4$Go&PK0sf$jcamY-F)8k&)UF4+ ODV!bL?JH~vw|)g@2n@gg literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/rsz_icon_label_red2.png b/src/main/res/drawable-xhdpi/rsz_icon_label_red2.png new file mode 100755 index 0000000000000000000000000000000000000000..8783e4b5eb444cb1287008d363192f2fa5d6e453 GIT binary patch literal 4532 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 UXSc(@QVO7OV literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/rsz_icon_label_white2.png b/src/main/res/drawable-xhdpi/rsz_icon_label_white2.png new file mode 100755 index 0000000000000000000000000000000000000000..f5124b7691e814f54aa87180165589df1406b76f GIT binary patch literal 2627 zcmZ`*XEfaV7X1@Oor^^8M2ix`HHZjCn@qGYN<5J$LrC;H7(^GnyBNK9iHk%Z-59-h zf*VmIdWcN8ll4BmweI_H_FnsU);?#g^X0dr9_z!ww4Ag60Dut>HH}D2AXOzb1qs!i z37RCLcmdOc0YGg69nqSSr1@~73bIWcq zR39mp_N@ngUIw{*d>Jbbw!RwQMoBdpXH-3)Z}?h=zRrPtJibbWyK%LaQZ?Q?W*M&)};Q`~U8f2(`uhHw?vEkv;sntJpbnQ2l zRIiC*9^f*Gs_6M!Dd*VSw7u9q7P=WZ0F$sQdQL$|aQ zaE7u1kmER`P0)F-yF~KsgSMD1{d7f53M;Fwxl#+xs#eO8wc+3isGItCdFH@mTol+-o$IMk+Gu(qmlgp26d>SvCzeGg-;j)F=@p^4J5tz_Y$* z_Pq*kN3<>@_tRHa)2|IU8jU3W+&7C%0EEshPa`Jo3>&sWcvR%mx2dQhZ96COdOB1~ z%^AH=CooFzN}nZnV>zzA#V-^7+$9HRA_x(2GCy+=S7=lmoXEOc)i&NBfr1#3;Ul3s ze0r(1CQ}Q{gx}|5bkwfDOL)}l$_p{{GX=RIRcc=Go*X~q`^HJ3-MT&$m^Y<sx}YV%)sXzP%fG#|t-B&)#KoZ`bW@^OYBsduVgNk0ys92fuR_O7`f zgEw*`Oww*-#B=&a+{{~4ZY_h`hs>JuetY-(eDTo%+lCOKF7-Fl8paSrkEs;Lk~ZGd z_X%yWaObw!U$Qmz!$Y36%mkDCy=k+6DXP+6au)T0r}_0vsCyj_ep{kMclW%zMFv3< z5;JNJA)-f73T1X`q$w4k?gMbPYJG9W$EaySM*U-30m)za^&3-cmOCUHJ_#KJ(%!G}KL zg0)ZWW%D=O)|EKj;pLsNrsgj_B{ew|8{!i>{xo5SK35_8>1s;6@q#W$hA=Xx%=ehU zIHve5W+>MzD^0WgzHL?f9EU9VEPl6gKW>s`YBoT=xpWt<480OKFfC6kC2_MX;oFD_aiU1hk(rTE_I>*6&drEqfA zpIL6;VD4_=3u-=9XrM(2+}AtiJ@Gx>BnUYpef~4< z^lO>}-G+gKPPv4oO2wh_LqWq*_xod%p!G#Fx-#Mf!_Fh)ot5W(z^MQ6UbEjGYQQjQ z6YQ$0&0VlPLbQ86lw8C)68t)ti~a`HGi?23tdonewZ@D+mj4PfOF9Kp97CWN793m+ z69sw5$3AcC2rpizO_JIlbi~vyeQDcFnv3Dwc!qFrdbz!~e&eNd$MMCbEC+c+Z$qv^ z5Q?IP`^jNdPC$lecqhJK9Cktd`Tpi`JTXF2o6(}blnhjGv43wYFG$i2nlzH~Mj5m| zlzzObbbINIpk`xMI=iyUJ90sccG%KL|6`RPy5`J%`&0^2w}1iwxxw zPUf?>C}**ENBUnBMqy;=hEmkR2AFL^*VkM0phBS!23p@GUE?dgTtZY~N~?ZmBuw$g zMB9t=nWWt=?F2fOax*_W_BjHdJ+NAxgCkPVr@ONKt)W#Z4YuXy6X4QRJR~kR4n1wR zj2u1iykyKAwd&qr5YNdKo3B_Oys@L7-aLROms@nmxYp{#jb%%I+(xHrB+~-!84}TY zX4*I9MlwPRYhn63NX$pnlwA^b7%tD-WmQ(iRVf4z*w3t4vS4Me%FXht{WkBG4OI!I z0H=hXT&;VgKY*L&$->7k^U^&gUAAt0>w(kX_|oFDrtl7U{vfXHfn;YHd;pzgWT@&) zKfU_G#~!m*m2u%T0BhLH7t%$+7&>Mv>wLudsnDCphVeg4L0+Nh+{%G3Y-~Ip_jLRv zAA0umxk+-LGT^Ahh%~->F-L`~yoP%tinJ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/search_tag_active.png b/src/main/res/drawable-xhdpi/search_tag_active.png new file mode 100755 index 0000000000000000000000000000000000000000..9737faa196cfaa7104c399b11a090e5266de2549 GIT binary patch literal 5686 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/search_tag_inactive.png b/src/main/res/drawable-xhdpi/search_tag_inactive.png new file mode 100755 index 0000000000000000000000000000000000000000..a317e6b0af6847d30f2942b22f721c7bf1375b92 GIT binary patch literal 5761 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/send_normal.png b/src/main/res/drawable-xhdpi/send_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..164b9d98f10d5f6f6e1b26162c072758567dc3ad GIT binary patch literal 1915 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 LNkvXXu0mjf+%lQy literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/share_mysin_24dp.png b/src/main/res/drawable-xhdpi/share_mysin_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..209e540cd87397bb752bc71f562a51d6aa4d174c GIT binary patch literal 614 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/tab_dashboard_nomargin.png b/src/main/res/drawable-xhdpi/tab_dashboard_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..7687e91af0d3b8d9f39f9b7cdd7345b8e74693e6 GIT binary patch literal 3309 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/tab_dashboard_selected_nomargin.png b/src/main/res/drawable-xhdpi/tab_dashboard_selected_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..f50f6ad0cd74ad4926654e5e5c046b4c688ac41c GIT binary patch literal 2451 zcmaJ@dpuO@8XnS=$+d(L+cd7_G8fkwCYPCU%eV|h?!zn$X4W(_%#0{1Co0!QYN9Qd z#Hkdgb}|eJk=iLryM(eUTOm$GvOA-l_W9#<*6+90_kQ2+d7k%uzxVlL<@ouyE5meP z5C}xs(}P5nt?1=E=7-7G~S7<2+M$cBQZ zu!%rC!y}ag1f==|#-t|3;OI!FZ3ssJUM9cCoBFF&{HkN3M7_==KVT-ZESXtZI*_k7-Xbc*K#-cD-3ydA!3X4ah5#Ju9 zEE|U&i>H#@zU7kb2*`LIkBvv6_r!Y5A$OceUfD0ybVq}AhHCRr?#uGUJjR$f9K`?3M7X9Ku9>|Rc*$85Q z4I+raqJwhgPoeR$1))j|! zwY4U?+GAF@BrqnK39xu8T>9T!@(;PoMqsjKnMnYLkpj@&I3N@8wP8Ht$F;crQ12U; z{^MGRKjflh#h{kQ`d?#SIg)v2Is9%~+2*_L0hY|`9GR&LAcL(C2vpINS;uwrowRV@wY5K|8whbkZuVsC9dmuN!t1pZ1*1N$aERm ze@C(9F%Jj-Vf%_UPh@^RRW#YA!Cs@S49y5rTP4SaS?^DeLfLaCdS*sQFHUb3&*)a0 z!Nn8j(-vK6#q$AR)GFqo8t}n3J=pWX8tDEI+^eaaiqTVg zq<%k}y%!9NZ-@qu#JgBY;>!~q&>nZ+Dvw{CLC&hr#u9WtYS~aTi&Zq@z%00F~ zT3fHTYO3-lEmf^l@<78rYAV$9odUM-q5>^EMAgR&wc*fj4YgM2qZ%E`uuOfI=AN3S zYn!IhHk4OL;fjGqEqzH*8B!Ekz7x9XU&;~%arHyH^_CS~`;()tca)+JR=8wIniA@^ z6&Sz_Z@XR6O#{!QNhorM+P!B^cckBPZxNl$+c3Gq-@P4rV6kcLI_!1&!Ju5?*si#f zl*pj`PGX2K=+$ZJjPbmtbtY)Y)iN69tE4?I4`Y_-QJP90KFN$M+B*VExz)>8G;4Lc z`qfvEV?3+NJIt(Y$=%!`NT5SFMi4%&d7kq|Nq9c}WjJY$0K9^0D zJiv9v^*nlI{VZC8v#{0z8o5bQ;`B+hq?j#^div?gxLNjD&^b0jTd&{c({!KdmQN%(-*A1zt1vc@BJ4+QtLFBrh>uyl6r$`gdyewLc}t=GLzR-rB~# zDhl|RkYoRtlWP)3Y(Fx3BCpa!wPQ-&H`Lgg6*9!AJYz6#v&Q`wqe5Ys_C29o=B3I) ziJsXOE2-OtUDKMMqci+(-PtZ2#D!_*)t#+q=zcfp`g9F;cKtEMQ0Po4Cwj+??BH>| zgs0dZ}j+pSd-`i8@&b}1b0@pmvWdcWCEbzb7G=Npma z7=W5-TpBOk1TQ~aq-C@1#nkIt?TumQ%2IakjplQBS=rqWEF9XH&*j-R@vD@Z20c`@eF-^++j84kvG!50B=^gri++RnWS#nI_qqYSRcS5A@jJ=|2_eDZ zM<1bIc0?3WOBszH?uJPnpn}Gz46ud_Tyxhsk#F&=E7#WpZ(BL&4!56IcrRUA$5$FH z4jSAF*Z-pj)agzq_a+e-#rMTP$$&F{0;7GV2l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8GPg8y zGK1-L$xklLP0cHT=}kfC1**iM7nBfk3xGDeq!wkCrKY$Q<>xAZJ#3YU+bzyG&4cPq z!R;0ooO<DRx#ZmC+>>s6TzVK_YzRdneznlIRVZr}NX)*D2pHR^p3 z?D=)3Db|3W`MRT6p}d6($Gpxhx7lSKuQK>gRleXI)zekPR7|TvHA)W5Hlg!_q+TQ*)OOB%5Xiw6rOBJ2C=sB+ zdqZbYP~>E7GXd!i-Xm;D%o`hTG^pI1!ltDtu|ewImFQ_-7scr9KfZN}L}y-DwUGFd zAJ6`6+O|AAkN0pySm@S*{S)6=+?jexqUn6=9H&UfuP-^+N>7|@i01m+ncy4pD00P2 zo(#dB(9byxq4lC$U))V9sy54-vCOh2U23Xc?Df?) zxw6Ie&WnVXErvPJ)S`|W1A+y53AIm~oom%II!RXs4~M48P!$9IkK zfhHe#YbqA-+Ru#d{j~N-^oD0eZ<%}=-Y?;vbNfrE*3>^W`v22U@l+g}E)r%f^88rc i|9r*l6xko@2N?b?J7MOf)FKWlf<0aRT-G@yGywqHs4s>9 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/tab_notification_selected_nomargin.png b/src/main/res/drawable-xhdpi/tab_notification_selected_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..38602fc1794f327b702675af8fc7a5fab0267756 GIT binary patch literal 1704 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%nF$y5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8Mv>2~2MaLazx|v`++-@<%X&zK> z3U0R;;nb@Sbc{YIT9Kj|CIn17ASOJ~0y*$xpPC0u>qWpsy__RF1ejOkJY5_^DsH`* z;LojUWNSLus@X$b<8zO*a6n&RdXwEf==(^J_GR(i{>@-A87 zd_$2#NlC|w!!yFA!jr$X^-5dB?037YfB)Kdm(%e0oY;G3)*0CUIPj;k|NFkr_ul`# zH~(UbKt#gK`wsQo6MnF~5Y;%O^hEEaN@P)Y%$D`yx8C?KSSp^eH>$wVYR|^YOS&_T zC_F!zsL%Du$wArj*@r(Yk>Tr@UY%h5)YUU#FJI=aH|6Kwh(!hRF{OyVRD6GecT;=F zU-eqvoBr=6BwmX3Vw64+Tr}52Wa9ptWnb7;xO~5d9tiu?BolCf`-#U_nVVm#A~er9 z&)V>8-P~Ocf`>Dj?_M|8{Ooe@;?*^>YO;G~p9-~#;gzZ7?D@)^|NGPRiC4KdwQ=cq zE!)3*%cq^^PxMWgb*C}qkJY8D#p<#A?z6=W+hTG8G#tY0 z-Yjmgvc8}xe1YZv+Q6j^w}d!W1Zp18Xk_qR%Ft+JDtr146Juk8gM)&CfB**vOGS#( z_8Zr?D6vS0{zzYZQme6H=iD4kr}BFag>_bjH@aS~uf5>3%y#1K7w>JROum2Si>S@L za<-E@j!FG-O4`FdF?8`emL7f?m!eh7X{DW2{c7J^l75(pJa%6)L-N7z0O?oT`**!| zsSXZCKRw@yDgd;-C7>o~xSq{OTH+0PX8X zWQ(ox)-SJf`A~2@?~Kok3y1ElZ#TZ|utqqe?A8QfsbmMH?Az>#Gp6kp;|NuqS-}uA zN1k`$S%$5%8;?1ks$meY%Xf*`?3&80x#p1N4tuv+mwPKTLY6XAmh8HmdP^{rDdboq z<90poxar9XyZev+Yn_q*X+iZG8P+}O*Qa?*R+t|0>)#_g1*5VAO^?T^PwEvdUVnJk z{Z?IGCjFn%>VSrrGi!2AooD&lbk0<#+N8?KZ=!BXpjNp?-Q=3GGgH$JyL4IC{Z>A} YkaOqYntA1hD?xRKr>mdKI;Vst07Vp-?f?J) literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/tab_profile_light_nomargin.png b/src/main/res/drawable-xhdpi/tab_profile_light_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..0ed58583b9332e0ace0b29095a0612cb0da95bee GIT binary patch literal 1834 zcmaJ?c~BEq91ey{hshCcxK?tERnt}i#rF0b%i%8)$t4&BS zfj|Tl@rhWXIEo`fm2{~YL)R&6_?W2)Jy>sFqe|xF9yZx za73<%T&qFi)<(z6)~3tYFePL@5Ul6m0!jpv0(xbJO3Tr6DI>ZZd~H5vP=FB#md>U8 z6I7x&1_(zr2;ff#X)-VX1Ok|JCd)4{Fwhr(KqkllAqEqoF#|a)hy#Ma=tIH1Y2Z{& zEMGY43*T`matu>*7z~|GN7u3FsAd&|$!4?78W2Ro5j5=@6(-fwR9dew1wNvcX%uQq zfvNzrqBI4~#JChZ(tlD=sz1xBw4-Ih3&zk()eI&bG^aEM6pQ~Ks#JbPYq415OT7On ztc_ozMi{Y(7R}Vi@W!QjnO&(l;TlAWp_+IU%^0g`e}-xJ#HnD6OUEnl&$ggT|R z>FY_i99-+$hjL8QrWcmNsSpYc_t=-r~tPu#IpD)D|gmuGZ2EFs$)vu@-%bz63{ zmOkA$MA{d*^h1Sw&?a!6PuXRSsQ6yzGrwPpUs&Al;IXGpXxQA)@7YdlzUe;L;V_S! zcri4%=vhXXc1Boj!OD{Z0h6s4vON+fQ1u@BEUGkqF|thkGJmj?cF36jy!6727Rw7E z-UEI>qlDL^=-E5TI(xwH6*jJWbl&m}NDbyZqvpaJ}aQEU&Ba7EN?am)P zH_+RzzYOw)y&iX-pNPF9s z!JgwAZOHq7dh`4B*Ukp31Ov!hSLV+9@!HNH+qdpM=kmGsXSeg6T6K?~FMGm@aUyQW z=!NV!YjpSB7OjhNKTkdEH1y%)b_u9&-<~&+=$jQ$d_?FPb`5mxCAHrE!PITg9&j&! zecaMq1pQ@)EGmnRI@*S8P5+8yS(NKK>waxj-J8D*GmBrIQxcS^lfpL77#Lo^tskmN zy7dxPY~dz*neu}?j+=M<8rbUaNgU*5!dMlO##ckt1th1>4;7rtb8 zr4cJarH}pl+Y0(_9UxZQ$2W9%hZ)IOGOeQ0xY(M*^_|~Poi6+j6)Ot%qMl zNp#t+j)jLOv~7|Hd*<+pcDhXJik!>0t)mM1OV=jvN#8kf_4Q+&gPQUMAGW3(U%7M> zMdD=oSkpdh$$C?AS4Ub!VbJX97pQ)(5^^mFlkXNk=)P03-Te0w38MMO!zB5C16eS| AhyVZp literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/tab_profile_selected_nomargin.png b/src/main/res/drawable-xhdpi/tab_profile_selected_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..c4be2edad7928ceecfc10ee28df93ad7ff6f5815 GIT binary patch literal 2124 zcmaJ?c~ld39uJgjsVpl#Az;BFSZFzt31^ZL2;{&}f^4|O1wt~A069nok{~Lg$WggL zD65Ec?Y7H}$RUbg6~P1LP-#Vk!g7cdBvimEZeqpmAIr{rGr!|~KA-RPd2h1(e7*E^ zO>_|mgdTk_g{fRY)vKeW{06J9XDAnAm>L563!`BvOAH}AIKn6hpz~QV5EEi?kPm!RCMt}!U!9R!Xe zqJB>*gy9E}g<=SBLW6c}&=~}rv1qJ=ql=4+Enp8~K@4b*!P?tlT?h{L1P}z?KPY81 zF(;b9q|n~SQl5w?E)0tZ7>raZMN1vfLU9ZRi^tfN`#$6E`V7wJAuSvQ-K0W z*kYat<_QIWN|6;MOoWLjWv0KEz!!ax6-eHs%bR)O*k6Y@Lha zmRyW78H{SI|25{#E2Vc-+YhEy9zNI}5-7bcR+>6Bu9lBLXk4RHJOX4t4VUxd{R5FV z->$xF*=2`wDVwuw@*b`UqvWV7KJ82aqxPBc=$eQG)SYNhqm&S;-k zycOKi)B4o7hXJbt^n6!ZUGMUl`QC5-aqKdA%qnZxs!<0V%=3&FtCb5befx#gZx212 z(nkv?9gGTAdx=vX%i1fM>ow{%4b?ph-c1<&8HWW+`ND&sPa05_xhWpgVQpTumv7#< zVK@%#4uv;PKFE*uHUD7)*(=b`|2wOc*QWNO*Tn3~S7TSk6Q1oUOsM>sIsQ61%&Uvx z+~q3~mCOtNmNzl>BbR-k6|LR54e>>vaQBE?x=gwjzY_>*7tK)D<`sxr)8g>r9j$nG zxO721$RnM%t-5ZZ8g!2J-A%;;NzLcIHE?ZN`mpUeh1qOR!@mN#YVCiCJwei_H+r!> z!p$PTKGmfCxV3$wY1~EY)uW2aG3x-```G}=|MST2bkwy1b#b(w;dOLu5$CM8niu`5 z{Y+wT=51c<=ad}8DPL~z&qq)_uWBb^+TyMuzp}YYlYX`xNE*NNSlU&lSz-aichn^C zPZMiwpNxSiHZA7c1H<)?bLiZ&H@rdyM;kRuHV*IcH9B7@Kl7UXRA*0K_vDk}@XTx= zGSxMH66t!aOK)d~L zE}o-&yq;7=Ecv8(YL?obTR~hkA3khVb|9P_|>C5xeRs6P+JGa-S_Lt@S zRNAXB^y>d1;;QDMry5LrzCX-wzA=X!$jJ$cBKaJ<*Pq~aVM&%7-!guADQTBW6Dd{~ zPmFowP~M_eaK9-1Pe@boQq zyxyE$HdD4_7eYJrrJCsh+)FpjlP=u?4sfws6eqW`BKg!Qh)sua4ud@I+d269`= z{bY3+iUF5mB=gnm! zALafMo-<@MGmA_3&TOLp#P?&=lH#l!e#7mIjm1;5NYlEg&IxPZnb8*f^_4XI;P+Rr zXj#9}2Bib5I&X$G4xR9^80b^nd22K_e+2XkKVjlgMj6X`ww2tc98%8 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/tab_search_light_nomargin.png b/src/main/res/drawable-xhdpi/tab_search_light_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..44ad8a9fe7f7703bf7a1da637e773ac84537fe6a GIT binary patch literal 2055 zcmaJ?c~ld39uJ3sAVGx6Ay9{)fxeecqdW z-1sQG)mkeI27_luvv`ITG`^Nt!#BxvzRa*VqY=sIHY5Yh<;!49s1Qkq0k)W*3G-mS zP`RfU4#r^208wHxn#_rV1c=y=Z^Za1#8Lwrg9#2%Ncn=@Fbbr@nIZ{;Fny(i0EmPP zLK2k&a-`vKmMA(;25-xYPZZ?s7SM%+kS##40x}4QVU!Oj#Mu%#q+k$U>OzLS@tQ;c zUP92_48re8C3CnyI3j}qsvk%cfPo+oNcJQ92heCVUw{IVK@vzIktswn4f3ZzAPBsA z2!?1fVFtuwMZSt$?Fou#s;WC(yBC?}P3EaWe%tcK8sF@S?S9d|j+)&aC%nbg#|&A-cdnl8%hzT87>944{qOwUdy5tH=c2|RX&w2xj{Ir*#L3A6k@emuORn-Qit}?osDU;pUpIy76&gkJ-Ghm0q2YX5)l|==%D;>Dh_-cXjr2 zi>{{!7Q+GC(_KeZ>@?y(axTtbA7g)EzV&$-DA=FT*P^m+wU7JT%#?d_cWj@%$yjIM zz)odmTk4R;?ZOIQlYCVwwR~!Y5A$}Zs$t=a(!lDeZpn&ri%k0cg;gV_fz?)8d=SGs8sLKro5noQHCjuPAw~~^+s$*(X!Z_!Oca9C) zRL?%pxIeeAh#l#MS%d?P4Gs9AekMu%bU*DQ;zaKS&AQ8v9M6Mcp4#`)T60G)KPZkk z^`tq?86W3`xq0S9T5F1HLH5X+yJq^2&%`q~cQLmzyj^x$nzwz8%OW^EJRfDMli?0s z=jG%xKOwh!Hx(4sk*lTBnuMDx%yOPZGgE3YbFQ9(Js(0+H|5GyQ=yKFUG&r~T!a~cnGhMavswn=h@|zOQeMy;}Wl&fld#mu+ z{G2CQrn-!VxIrB?nPe};g{oBn4{oh*Q^$wexb{v|5b2jPpWLA*Jq*4R$UR(Nr+>n`mqtv1^Y^6)U{ZF20y`u2r6FK4| zs*Q;oe&}%rhk3<6r|ji^_3M*!&EAC;o9*_wcAw%m?lLbW>Ff@AUflUcb5~NrYX8{} zr3VBt9{TpRKK!@y^8Tm$=b81TssJhPo0-sGFMdtEO|ZPQ-z=CYYQaFAHKuneI_Cx7 zHE(k78N;3KXsX_m>Nx^JH5a%mBj}HBxs3#G`Ofofv=Y0$_32eSwxN7;?e2}u`!b~L zft237+VN*T+1GEf*=)2o$<|}-P}|@bPD|ZN)6`pcEF?;aU*5YcD~V~?Q`$TgJ-p+5 zq1kj-tiISBXe=9}H=R)T&wbY0IWK#0i$*MA!{}CPlMOLL1;1PrFbft(9L7FBhxr$= zi_|=$1MbP{C=T3)@nOaXK_S6yXKsb)ux9C_}Nh&C}D*KnFd*XGrgN*K=-dmj$gN2yFO XTXb5%qDTI$@z>0bh-aM*ODp;f-n}t< literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/tab_search_nomargin.png b/src/main/res/drawable-xhdpi/tab_search_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..4c1d830dc9994feb14dd9d22906d5504f8b15f48 GIT binary patch literal 2265 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/toggle_visible_nobel_32dp.png b/src/main/res/drawable-xhdpi/toggle_visible_nobel_32dp.png new file mode 100755 index 0000000000000000000000000000000000000000..61a2a04e8ff6dbbe755ef12d0de13d0184878716 GIT binary patch literal 1103 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 M07*qoM6N<$g2GC>9{>OV literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/user_no_image_big.png b/src/main/res/drawable-xhdpi/user_no_image_big.png new file mode 100755 index 0000000000000000000000000000000000000000..0c08e93cca784eb9a73d6b0ebd2275b71a04d924 GIT binary patch literal 6987 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/video_type.png b/src/main/res/drawable-xhdpi/video_type.png new file mode 100755 index 0000000000000000000000000000000000000000..f99596cabf05d2fc5a3bf9894a2c81374e9b4d37 GIT binary patch literal 2772 zcmaJ@e>~IqA0JkJ+z74HBz9x6{MhFACSx{i7#iir3A2qY`(>MKbQO_9x=P)Nh)GeY z2&E=hSGwd#C0WkJArtv|DBp6^Rrmel+xPQ$d_M0VkLUCGdc9w-=jZeIgpKl z00018GKol4ji{AdYqjbbrv4^dH9*AP;o=Z}yf}p>WCHLEejF1@=F$?FR3?ofO}fwA z0sv@Ou|vbf;gkR@ozJzStzhgVT!D%W0BrG)2x#;~rWhK>OknfeVUssnU{E&09Tw(9 zK~V$*CW}o<6*5Co14HSliF6DD=7EE5kziEuTIN0%p2}m>sgF&L~k@ohsDuk^_$`jKh zwmgyfCj}x?L>ICJVm6-#T~VaP@sq{wFjc1i9DytNEXxypER(8WNC{1VMBAZOj`Rsg zq5OX+m-`tl5>uJ~=KDW|MWIpw6G>%?_{l=Ls&Vn=E1?8ff{;lQ^M#>&KIc;vgIRnr zU&P`IpajB)szI$NG&-BNvWfV>qEN78o=8mN(V1kTJ4~fx$7VCIu4o4g-o@3+$p!6- zMteKEdO7%bpE|E`9<}!KWPh7^oT*4Q*D~8|-RFR2HA$u2-;Una8 zp&t&8Wq&yr%op`Oav5LF1^-1ZQk4vHrM>^v?oV4P53Ni;n^(2?Y=0(C<$0mX-1jtW z5CDLt7nz6;l_;J>vI9cHz&Ak}-$Qm0QAgmRUw^y#TZ?k4wwo46tIooP{jOXi!1Ho& z+y$5qy_=Zt3C0H;fqMBFBp$g7vr^ZoGuKkDyx@hO_vUw&fUO6AE?%{|We8p%o%}uJ zW=f~~OShLe^g*;Cu%e=3wEKLRA>=B5gPg-{V6oZguI|T6e%rPspTBVMpxiZ9C=|xA zSXGyro12*o@f_xHcSAr-OiO!vJBJh!5>oauZ`!}Cyj<=0u^)}yZS3O5#>Nyo*=!{Q z0zvS4>sF!HgDl|ihS9fI`G3fAaL+1d91C4n!w z`kU_+yYL@YKR%ms{l<;uq{)7F8%}*g!vG;$FL`nCZC&hvJJkwrrEG98PJ8|0*#}8U z1ut|YPFo`)at0z6kWum~Yp{CD@K6An4!5@Y^lN7x$Wkt90_$7S7WDEATjCSw1oMi^>FH`?z}J0E z6~-neeXcES?*rFGL`1BQu3GNv>uUqHwY6E8l$@L)4m@3pQlwGR?x(^;&L zKOXMuG1sdL&zCMtK1hNKM%p2NE@oyTtSKRyH8oDL8^=!% z_ct#&=|8MUtvG$!LQ&6tyr~nhd9$$NL{X8j`H%be$yUGsN+YRsAlG%m&FUB32wKMQu%86cHS})>f&N_qp6AJ z@9%H2cI___ax>)I)Rdq@nvjrivas;lU?H2$mMpyfeZ7vcpEJ?d*X5xu2y`>^urFIt zR8&N29C^}knRP@i-*U8|fDnAa+{43zSihwHYb5k_V{m;zvW9f^Zyg;lU0q%A_%rkz z4WWZn+vu_9F030>FE}cE&N#8diay)$IyI^TfhKB6={53V%OQ3FM)GJ3uPp3gi zNy#tu)6>&CV`m}^N0k#36&P37W8F`?DS5X6c;g4e0=(A6N{F#Bj+gePF0Cd%do-K$ zQ+mwdAp~+$nBUUV+i}-sl#hKa$}hk@t;@^Gpf@Kwkyh)&!orZ{)m2qc-Q>T<&vus9 zj2+txq8`jVa6o46duVDn6e0=Uj8itc{HwBdrjl!aX=ZCa2 zWQeR$n?ufkcep*%k1EgW{}^acepgpbP3`3EResn*Yi2bD&kfzWv1=lA*~}p6+_`gB zHa4L2b32l_p6VQ7N=oOBdJlj@8Q8#J`l{6u&fD92y$r@e^J)H^t4errtKZQyRuD zaFe~gkkt%{*}4_q_LN1{xAos=19L8(*p-)!>)Kh-(qgth;k3uz_a}YWd-rj26mG6S zmAmr#BvvuC#~YFdPTjo=D&55zd-cko7jnP7%}`l2Ggtcb;Q1-GFe__Wo2V+Etxe9eJiu1YYdz*$lL(9vT`#t=821t#sSA?<%UwVl5Gf>hhYJ8j$^t?W!K< z*5fSCo{3+En3h^Nae{(^PPvvuU)dV@7X1WR+0oIl@qzZQ$EPj_v=MAE1e1TwfUTZ>U3PW_PM~W>-kM;CC7N-&NDoQ(av?pD|;`j2Sa#%vS-r z!32nc9dHV6h*NqNr7>!3`F#gn1j1k){04VIlx7VKfG7D3{3-ZAt9s`VC*VCO$z|XV zKtK5DVcMKs&5yg97chbO&9R@UXEoeN3R;)U>ri-yypf z*bq)qpy@9K+LWgC3w^KulP~bbOqNmXrf!}7QvtUwikX73hYH^3)^~28+9AqCkC$T!NzcVNNY@_#6p5LUO zHAQ=V&}QY8%`<&%g8;W4Y7kr*!!C-sA;FdNxpeYYW@^06@+F3u<#Z}j`M|jooHJKx zjtVm;vjp4b7u9F3>;>3oI=rI7EJ)>npQxi$IV1RC_dt_Z_u@)wO6BWPzevq8&)X_J z;5dhYAAz^IZfvRM)0oHoA=M9h2a5CAp$kwGYBkH&qRK!k^i>P*yH8q1_la@ZzuT0% tuZa_Swm@T4;aF;V;>L^_GiL0+w?7i8@4u?BMQQ*5002ovPDHLkV1gUKOGf|z literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/zoom_btn.png b/src/main/res/drawable-xhdpi/zoom_btn.png new file mode 100755 index 0000000000000000000000000000000000000000..fb5f5ff7f95a0e4bd83956443c940c4090e415a3 GIT binary patch literal 4505 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/action_follow_2_dark.png b/src/main/res/drawable-xxhdpi/action_follow_2_dark.png new file mode 100755 index 0000000000000000000000000000000000000000..c7cec6764912b49a33f504791624d70963528795 GIT binary patch literal 1854 zcmaJ?c~BEq91a60aup94kfLkw7Lsg$grr7=Y%oEB7=i>_J1)sWA|@M?1(J9MISP1A zi_~bxpdyHfh`^u$k=k;4B7&l*wRSAXQLqA5irpY!|0vy=-S^(k_kF+b_ujX&>0zO3 z9c<^?5(oqb9v2ee<2v(gGYx;nf-CvN=+EviVs5 zb<7j5@a&kUlcB{Ild(q>c-B>Ts5R%8*W=$xDGv$|YTCO`@VUYbbL#qz(@+2E4<2y` zWgE)t=W;FtHMkaTL^#%@MoyXia_NRS)-xB(tf)`Ap1<)bn6zfL9EKqH<=$Q1XN^{6 zcejk>Z$EKpG)?Pi<$a>F>ikf=(!HIPj>XyJ;^&7oNM*?#myQUSC<>nBKu4j z^a{FOJhmA0jV;go@}4<9~^ z&$}OWCio6_;jGBYulpVu42B)eTdF+fIYPuE30AGn?mSMvrjqr!WA&T&e_uS)QmEJK zGi?g&tR1S>?a3I)oii-;?K);K6x@wp6g8vq_&{EQ$Z>^B<~t*ifB(B=jy8O>#jy!q zAhHcEsI)SUob#x>{erU$w_Mo))~#X><&YP@Q?uV2gG@C#$DXv^-**o=VzyV|Y}nt@ z<1#^5+ipxt&^yy4xvWceUT#B{zNYK5>@(YS8TJpH#cdzG(b&{ZZZMB-zuk^gt()yrmV`N0xR>!(O18=GPf9h%${GyaRTdz_G zdAx>`?!Jf8dZ|u@Yn`0$J{P=Qn%(r^aZ3x9bEfn+^2c;n;kAwO|H?7vNhf4b2cdW}QmSwIr=uh2~>T*rPuXNPe z1Pjyh(cS*Tu2&Z}=M`qQM^$w6{^oGLxHzn(tl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8Mv>2~2MaLa!-Ky`Y4UTL84#CABECEH%ZgC_h&L>|v`++-@<#X&zK> z3U0R;qWpstu^5bFhj9edb&7}?jHz~C!GFH&dtbkjr%PgzdN&YzwPsT z#qaNgUNq^wacQ%S+kp)dVuzC=c)Ak}nc9wmIH!C+&#HTVyW8dBw!kG7(;u(6z?z$@ z?z`7{-vM>4l`5ZDjP^AoRVmf3-7)Equlq@7$LlR^UWr;7w_HWfmOjy+A`*FadwTGa zt<#vAZ6CZ{7Su3VwSW+XeS{1|Q<*(ure#g1j^!Jyt8+_W= z0v#@%57s#U{*vNZ_g()N$! zgu=j6$KdYY_|#wxO9@XDbEso{%AG5(odOCoY)k(37xyo04-j+@`@f*Ywmq*%Y8l(r zYm_Ii8pKU{QJkEw>2~ic7yGvJ*>d6rJ1C+Gq74!=(ms5*(booCeCUw@0`JxLitvZ}$_Gsqo2kyGu7bkc=UGl9Z z_NbR{i>ASzIc_>!o^rff*)PbvSatDbdcKKjsp-r0za0EsD>rOOdAE9_+6pG8DM#<8 z$S#RcUzlIZ`u`M<{p>SMm#h^oNAEt|TcGB&f4lcKbKa%y(dCbKNU6`Qm0PKLg#D(c zu=(|XkGG_PY-CS<&RBiiU1Uz1!AGx_uiLjOZ^%n>2>$f!5xZ4D)C(RB9xJ*3wNVkf zryrZzzGlysQqh_{yT5N&zYvsR{Uy|Bm6*%bDk*^&x8$(4HT!nNUY6bXsPfc`x$8U{ zRNj?K&02Zi-zD7U)vle1+^W+%kAAO?yIs=1{DM%1^vykvF4tUs>6vg_F_lJ^oXx+$ z=e2Hw-Knji>^+aSu+L(@`v3XXbrK)^r8H-3_BP?Ykd&c)W!l4PSFQC1LBIEMPs`BR zZ0uID#F(MuifzK4e|^Dx(cv~-P8-xGz5KJKoI&6KpX25KAEiDvgxPpiPrUbs|5N!5 zqraQ@t~DgOOx`}>q`t#l^IscFFZ_9OsqJ6I|9OTMDMpcMr}Ul9J&ES?ept`>w9gKh oLv_p`Srn9Cdx2c(x6>Jz8JZG}c6RixY6VrRp00i_>zopr06U8k{{R30 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/action_help_default.png b/src/main/res/drawable-xxhdpi/action_help_default.png new file mode 100755 index 0000000000000000000000000000000000000000..161ed1527be99381f208ac56ba61cbbe3e7697fd GIT binary patch literal 3413 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/action_help_pressed.png b/src/main/res/drawable-xxhdpi/action_help_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..20c879123e49b49e0725416ee59301c830b22706 GIT binary patch literal 2971 zcmaJ@c{r4N8-DGwrA!ggn8^~2*(@2xHbX*k7~a9AefRg8&{#TBywz}i;GB~yZF0&pOW&SYaDGd1-PFq4Xf>@jmgxN&hb z29prUqj^WVlPHnF6iX_^)&^`X#E1o0GyxebWQDN#7$Fw&O&24cuWrL3;BOE?Fc$K+ zsl9HVU>t`>1Dly3U=)No0&I>nL8479EG)KzQ3xagjzGbYC>YWLgGONx2=Mm{B96wR z24RSJr|+@ED=dT|5O6VYczAfYNjTbs!=uBImX?;Q8YmP@jDYbY*aET;#^ytRDBx*) z3XjPZFga}SsvwLNXVQG(oJU^aJST_Wz+Q)=xBF zK&1WS_kRlWNfBHcoJiwy4)ZADgA0PLhT>vyJQ`WR;gL9;kRMg_WN-u=K7+#r6DE_2vBV*qb~xH2(I_V*66t8}VCrb^fHFm! zI$1d3@Rk-oxOfibFpI_({NPgm;i7)YU2OywR~#8n<1xc%R3{#X1^$*WhWSe`mQKIa z`_85Q+6&^BT)5Z_eDzrW>zIFRiF;>t`m<@pi=S;zV~cy8CvNH}==KNzkYDGFw{u5`#-1+}0-xTx57X3=`O_{Fzp~hvckBLH!{C>Rnrelz zg%45~q?d`siGd(Ox2j07nYd4(>blHZOlP})NA*H?X8ZiWqnxVe)o)q^13B$hV>R^p zA_teG{MyYL!^RSJl5x_&8el!3G?LYo+M(%8!keZS$1yg0>8~?@7$i<4s;ryRd*RWw z6bs~~jXM=65C%;JT_bsQve)J`{;hW=`fQwP99o&MY0Xf(%(He`;=`V2gQWFkx=W|V zg|!->&{k@1t&a<&{Co$H6GZW^=C^_Zn+UEBE5xywcsxbkk&b9sMy?An}* z=-KjJTc-ZpS+B5EOL$g+4XY^c4Brtz2J$CuGAtrAHhUkCbqcuaHSAMxYDGGZvea>H zscyaR4cAg@#r20i)nya;&Hrj+jI}b<6?c#S-dQ#ikpuQKlwp({yO5ZFHqXjbUTNzm z^@lPQ>*W88c2XacUIPo2XviO)yUH>8;R#Zkl#-r5I!?l_&7)ahob|ZJXHdkf8^Lo%Lfeh4aax67;*Wb{Y1q};s zD4cy~lsCswyr&iB@}}baTTwmDhWZMg?CZ|=F)kZt&DKux(m~Oa>Y6_JSzY|^lrFDu4@sP?Tgw>TG_8n z5{e?zcDSJoR2&T=zR+X%e*^%p8+(099L}KibTUeHj%q~fA(mzv`aatF&RK=H=i0qF zhtJRkGV{wYyTf|?1TjHsI?3;+ud3cZAt}n=x-+ZC$K}w{Um^V-v3-#$b#0YWaV-oh zMrNUT4sax_eXMQ&v$899ZZ6anOiCF8#ji_~cqa-?3iZ^{fJ{l&20xK@$mHP|&w0r# zA9c9_o23mSN;3%+G7gs>UiUp$f8)~&putd>Gc~x(ZXG(I13VZ|6;?3OBg!6HNgkk% zi_*J{&ZSf20A|Tb)r}gQuh!IU!&<9%1GZK}gG+fP$0_eE`?a&fbAlzTln#h4zgWJb zOq^cBO`5_ox7xlx5Ckx85*P92(W$MXbSyNn^T?UpftbQ4$yfKBd7W^^=gcNRGd)Aw z3inmQt^{jDs4aS;ms*~mZ3CUBUrpF{?&(1}pc?|~un8uQq6}oGV_sF3KRu87 z{Z17)_tq2=U9S##<^ST!NvWVn$snLO9vv;0aNgtO5tc~z4O7WA`L?^`4)e-92`GGc z(42=jId1&;4Xh_QH@J<~zvn8t8Eegs>54fNb;C3JV!J9#yX082$>j?^@mV&$Rb_e) zl+#(fSFS}Lx*k4JLp+L81l#EOC@`#TBW^u4OuDOd3+KAdDYL$@#5Sq;aXFr$uKO9v zqfdnSxEf7#*Wi=VC=aZ-{)_rei&iNE`S2iRRr=uF`dW^Y&{(s;nR0A zI+i~Rvr~r#Z!{HuDQN!sIe*)2o$}nnf%gIuZ<`;~=W|p*`@2~;aaRgQpcTdUjF&PCGFu$>-nuLQ$qvo7?Fpxg+i}ynm<=9)5S#kQIaph-?IYVa)Zc$7 zG#Gmt$`UDxNSBLTwu5}4T+4%GGLF9=8o%iipY&e%rCNUN6!oka zb}S!DA4qiV(2Uc)Y*0O{1;P>Q_Qa;NXea3W;m6u_^A06`9ML>REv z0U3*^v`{f%!4p~oQxuhH5e6@)LI8^}^@vA7$EzCz>>s5&v-=(M-uoTj`({hR!-5DF z4i*3a5JG~XNPPUt@S2<9-$v< z0e~f-R2YlJ3PRapL`D)BFeJ4M#n}MB@l&HBaXO5F$#AMv&Luwmxq}EwC0t^Rr+^|r z`EZ&vI9mZnWrqpH+38|$3DM6N8k<4^=N=*+O(98P zM?!&fvG5g_n1*2}n@m=zR3sIhgeX$URBvx@g9eS}fg?PWS#nII_K+)G=M^AWDON~P zOp3@sgQ6%I$;7xsJkyUQ$j}8@xpJ;ec*DqQ5lW_#D29^efdaw*LuIlBv=WPiKjr(M z!b)Kl3X>yYC6cKS;|G`GY6yk0`3hKsAqpXaWXyLlJPpARWg3El{3uT_Mk<#eD&;I% zAYg~cm6%8_hC?7O5$BVnQVAR4^8#5^2Ax5nGpW=7raz6&gS?nt)WATdKNI55b0I{W zDTC$MJXi9G%UG0aFoF!lBSWx4x)YWJDi9esTQFO?crMgM_2#&e#dD!8$|d8;kPXNB zuVbFy!o6ddE|?ZyEZ82F<6c+brXH7W+=t(l^bm+AR1ZBm^2a7&gmw2!S-~@SZIq7}{+?v})-106(J!eS=ftT?F`EIiqrqQ5>>ArqG?t}z zMvXI!+=Y1sB6Et)tNhNrd+rH$JVxw0`>TWc$8@fDFX&!4>6mwmbDSS$n2$M!Tl%`M z+|}Y_w3T@x|;chEaKZg`e0FZ;ZR2n0QMN{i56H-(oc>51T@_PE?bM%o*S`8u)`n7I-5aCjopFSY99`iQ!Kz%BMd-MC zDnhTR2HXoGE{yzIQRDDrb7$MR-kx1HV0GyEP=Vm@GzNdKXVs>xr4(P^VXDum?@rSE zyj(5ryC_ZdoYU-@FeJt?xBg1Q?K95H-&}nE!rZrE^8C^a^F6>aU)$2P)>WO`^!7LH z$v{&}%d_TjuSP=Y{nnmRd-7Mgx$iEdF^1|}te#jEYm=J#jVb5@qtlFmL}tLCi-sDV zPt0kqzUgRP>?^vA8BGkt*OVQ|^`EvpC9uoi>4K%dYDv7NJuYqs&iWjS>8fZtV-=3K zjbR(iuBnM`tKAc7m)|`+yoJ#5t!{Apy9n*+mITuJ)jIt(-jAR=8hg!&9?=>pw)V7|0IJyzM~lG)}L2nCsR( zQ+$xO3M7{{^sj7oT2ZVr>6uwA+-jz9Q;#L4Ycfmzaw!~by|HBD`{b+Db(7Y*YtLVg z+PQTzBh+@f^{dvHe5kzh=5@KQ-Kpqo=sLQ}k+dqjCc%04e!nt^sNKJ!^#fzeXbSG@ h*iSYOZ<&tCHv&|Z!%1u1s%{v5L?HoTP_uth;Xe%Avc~`b literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/action_report_orange.png b/src/main/res/drawable-xxhdpi/action_report_orange.png new file mode 100755 index 0000000000000000000000000000000000000000..549dea6a963dd6e5f9e1220a1113601660210ba3 GIT binary patch literal 2080 zcmaJ?3s6&M8Vyf*7)2-#nO3ghjgZ^~NaPBVkOT-4gb+18M#5pr)x0tpD3LW_V< zVNnD@bivYDZ7mEg;_!9>!If21Dq49J1zSO^wMduO-dM1^Gj;FGz5ip*Ip6pF-sA3CL(P*qnEmXibh6EMC07oW_gL$w} zlA6>D`{Qs1fRry#3Ao{q7?lx)It)=GlVfZg&OcBi7m5>L6(EA+q(}f^rm2kpNF@P; zJ-%F!D`&#-($F*o9Gw=y7pEnN{Un6I?SQ`q!USZnN(g9ViHH)?1Q6coLfBllO(FpA zAgY7_!tY55xRC%8RltBR5%dy+R1lz&iDYjd8ja=&P(U(B0x2Xi#fwaXyeSX}0xJ&z zi>8poLOfRRN-S&@K!{hVZz8IQBa!|5{B#-=iWi3PQl=s*p~eeQI<6|P zV5L|gm8+yE0_YTlA~abQK)^Eny#$&3y)2?!IVSADNE)G>L?(i|l2(CS?*E6%Wbe^R z6%YO+-#-;r@>At7i3cmuWQ7=OT&$xmlpJCzV4(_C@KH2z^%NuHQ5C9;N96!B+85X( zMI@+N`3}wHLL5Y?5+Y)l!wMi^e47FKB^(xmuX#Lmc7HrS#O`LB z-w_TqL8QjBqpJ0GRQ2z(E_nFeju+0^r9Tz#?x4Hp7U!<-%alnE)3_awWOPZqVn%c&^~eJ`2#L_DOP0hI`ekRQP(T9!ijI- z@h#+*z3Z&$GmgWWe77fgjI>tv9X*Sj6V)eL?QKe<+0`}v$}8rLi@-Jg3S&LGab>?q z05^}(eLqw91sG3-J$iA=WohKsfd^5vhrRletQ&8Vf?S6ecNTdYS#%UgH(2#6?*3e6 zo=K>^IzoSdcddFkZ?Z^e++bvDkxaAZ`CPS}v9w#L8MC0zIJX>KU-dF;Zb$QcH(0W< z^tWA}*EIO`LnOBLpPMJ_UuX4^vWN~nsb};}9BdhhcmY1vta##_8aN&|=-Gcbm2Tl_ z_$Tbqvq?AG|hAU_UMqpE><}Xmj6N zVH5M?0F^^mKRQ0pwK8V+~1bQ!!723mygi6$y*VE$BT~ zZ2s}N(Mz3)4iTe%+H>4mR00vbng~hUNOJM`fR%2>PZz z^p`wH=sf4dsohU;$=M~od?08|b9MffExC0R(aY3Y&%o;$Wq7-i-WrFmMMj4fA(gpi zy#H+s@n%=fFXb0gk*c^rx1yy(?#oCCk#~-0>nk!lIZ*ulF@AZ&wL-Noah&^=hnsyi zz}$BE$P1g8oWdnqr%$WTa)anz{rJg6tI7?BGjKxJeGm2X=ZfkM{`+-7<;FuL87>bT zd<283G?V*Pwj1%?9Z77WIJoxj&%76^Hy-Q?uno%F=5GdoT3tm4ZBcHegbBR(hG^uqsM f05QF@VOl+0^uyp-S>r`(-9MYdj$mC0ipl&B$(BJw literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/action_send_comment_orange.png b/src/main/res/drawable-xxhdpi/action_send_comment_orange.png new file mode 100755 index 0000000000000000000000000000000000000000..597d4db4280c90901011f34884515c667349abef GIT binary patch literal 2880 zcmaJ@eK?crAAdIFWradX)Qlpr*RU-L+hl31nYTJCvpr_9m$u0mC2~%bu)GyRuZKEC z=|@tiRAf;dDLK_~PJ~pBm!!m*PIZ2N{Q5oD^*s0ey|2&b^L@F$*Y$nU=zitMj_yzA+jiU z#6LlW(CBcINCLv0k!U9l+64`F!5}fX)vm6tj&Lj*gGQmTC=AvK<4VL~iD)$Z%Y)E( zlW-%546^qZUmD9D5h;_2i6~TTY%DSshZIS8C=7u>nAN~yoiqq1X`E2TmOBZhHeVIU zpp+xwi)DO~5I(EO4j0A9+!2~c|4Bh0{w6DwekqftU?@3TjKUz%vnhQA(rEu5DiC}_ zOJxl3-+2G0u#_1m22l)9DvFVCG#3|PGwVuBBuPNFOeA57MA2WXNRJfBMAAr+7)}as zh6nS7Tv4p_Gnz&tQiW0(TgU;aWOsyykL2^YL{Bu9;)3yX#$mlN7!1Y5i$WlIlhGQ> z6^|!)dw%7TMVuG`D3pEWa{uMJe3v`h2m-OjGZ~cdcY<7RiAVtdoG_99{aA3{)%(Kb zem|Dg-{qn-!JuZZ^}nw9>yf5+X1Cv(R%3i?dr+w9b%~~_5r(IV06@2zO7>*RpA511 z(ab>8wXqSAD=F2LRFhO~dQ(~1{48>wF}NwEY?Eh3zY%4l*m{9Z_U}tg!FlOqy>$I^ zU_OPOw=XG*mSeo=^up`m1CR5tt)mH}ZyM=!>XB!Ou@P_b6I#?46Q$2TJ*%B4lD1zp z%LB9b#10=uqM_!Hxd#AmK+7g+eq*Cvm^K;>ePITrehLy$6lbEJBrKRlhaS~2HF#r_ zo$@4f(=J<>&zK^mtaATaXhHYLi;+4Od7ZOAmTTpV8#OE z%Bu9sOHW0zf_IUprtX`!yk_iUMBrT=OO0cH>9V9V87rT#>T?l456*D)MoE23`?S=Z z5zN@A1#hrdR=?Z3`oOBgB3uLL$KL6}dQ}M=Bh9=vjbu?x1%r>`u{>M@r@nEBefjZ9 znEjg_%!>n6DayjqHr`sN)R3ktYFW&!9f1Ev)la#M)j4;@yU}*o3G8#8A(mC_312~+ z_e_0*?o-Yfq`pu_Cn_7hm`y<)63CXp2wS|P@&`52cC)#*z z<2?`gAs!_2=7jv(5<*&6o8G;I6HuWH-#@r2g|P8)JGyQ$7u+}i@b>)mVG%`ez-}fh z?o$yVPf0uevJ%*L%O(Eav!m+F{^*ek{5BmRNb&g1hn5DvNqeC9x+Jsv`TjQAbWFP) zWP3rObFER6VOmRr@2DqG%B=dx_uV-nTGrLl5G7?LS*bY|&lZjN`b@t@teJFm2-bQ3 z(@+dsh4H%O7jj+N>0(~t6QkEnZszXlUHH1Z z*1#+K0g}3kd|$=ccY1e5?(lNpp)r`VjO?Q?4uhYYf8#U+IJD^ zx@X6w4O-UdD!)Tsjwj}7itzS=Sh3VY(WP@7<$PYxc4leb{qYSOY$jh`1U__W`%SY=%@?og9jjp?J*-A?I<5)2T`@nqVrDv`i_KdwP4Vd+L#NW` z*)U<#W6 z*7fJ^*R?V_Q?gv8eW|S1v^-#~{_Q=M8&3XVC{Lcmj>cXHzP6P)c6B#~*L-ky-q6?; zp0Ga@chQwoc8fV_>ir@>ElvbHBsWwFI@U4cV9i>f)@m^v0W;SZT^}_yZ zAE^6V%j~bwAaoq_RkofSQIb=EvCUAHfXOM6bDrUblcgqplssXN(Lk;|HMkimwIkTF zi|R2Mjq^TQFU_`E*FI2t_w`MG`SKKZQ^*qc%8H#w6B_&ssiHe+m)Yd)l?BOa#Q*)M)A7x8hw(WiKqy;Tz(`b$r+ zg|IMc)x>5Xto-8M+;PW?>#8zkg(TjOaE47%dO&`s@?-a5<<&>M>Q@%~!fI3l2}TyZ zE|uG5Nn;)!CQ(cW51%8Kk$9yD+GN9EiQSgzGzR@Dp}nbP*g+T*$>Oc_G3Mz}hdQ%* zr=cbO!|!+5{5E~ZyZa!pA&XIBO@U~qjUxYOa5$B-KlsMOlR<(>ZBeF!*~8za!;TB` zZwGarQN+|x?o6k)oM*j0uCTNGU9al6U7~0iHMD05Gah4>%N)RJmnT@BR}H{2-?}z? z|3I?vJPKfZrQ0*$Pvc8BT=+#?Y+$U_rfBA_F=;EVQw`a`lKGphd#iu}A@BOV7?>33 z(!Ck37;?{vcYc?aun6!uDTd8oJ@SrJP}2EIJePN;O)oSP^Bjz<)G`GOO0@4A%hN}h>g9O@i7}EjeFVAeNcz8B@ za0UBCgC`WkY{w|vH}<&_RQA|Ma@)%nwvuo0CT)QAHhY#C4d%?B7SC8W_5RL_MetY@gtw} H3QPVQ(Hg)a literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/action_send_comment_white.png b/src/main/res/drawable-xxhdpi/action_send_comment_white.png new file mode 100755 index 0000000000000000000000000000000000000000..83b546aa2e226939e3df9bc5eb7b01acf5422252 GIT binary patch literal 2414 zcmaJ@2~bm677YZ#Qi+JI0-=!*L_y3hB!pcO1ZD#15D^rGEFTCV3rR3xk1(RPK&vPi z1p*?9O|f)?vMRwD1`%42O+>{sF0^O~E(k6y6Kt`&YR36h|G%ZqIrrTAZoT@4=)v1y zrf^db2m}iZpfGe}^wMh#(S0XR%1OGxN=6Nrg^FTia+U-D`Eo^U01+r)#R3d~#Z6A^ z0X#q;FoMSnmxa^*PUeUNXx0)2tq_QHY!Jx9TOnp~_<#(-24ZKdLnnY z(6BVI9}ve2NRa@cDZxxm3ZLV~MS6Q7JQQS|fB=xO5DGzpP)b&KB0uSpb@Qcd3=;7P zBIA1^|1cF!qa*x85&+?X#-cb_S1iI6hsF`M5Q)Ui2s{>t#bEIm93F)uk_mV+7K`}& zAa&6s+!!*0;{Q38Zsm!LlgY$n3`Q=OqvZs&ND_;|xw*M5Y2fiF9Rejy7Rp!(lu&BF ztUv*z90^Y>YVtoFHNgkd}(_?sOxo!uBmHUw3|R6!-s(sU#4RG zSqcB(_U)^?ZzXL&rRL$ojN|`dyXtt^PX|Vf>>VATS({ho;;9K`gICYw2Cd9`H*k7_ zc6&9I`hZzMa}6!L+_&dgCHoXPET0z)cg=5FWY_gZ*3Rco-A#St^}e*><1AR!LWot* zsT|7wz@NMO{BCXw|HV`_5e{iVppLKnsZZZ_5aSu#c=;qqca2R zRl766aPZ#e?+kn%ob{{8Yewzre6_U*j@9%BoF9+AK)V-xA-C8y&Xmk}HrBTG4%6&$ z@7esRRo~2+kQh?|Z|xqG<+V)S=VPsJlc~^(Tf|~+(%xZ-#m~T4G9iD?S%cpl8nVPi4sIK_n)-K}BOU!rap=${aZ9rE{uQ5ZcRbJGEgN-a0vjxAehZKS}9f9DuTJ zuXOI}aFlOrV!ZscyC&`zNE0hiD>>Z7XPhRB|}8ozd;Qw=IoOmeaRs)F9|e zYgOjd{k2gHx;p!b*VM1+>nt@=b(@Z<;Qykqg^F*QiBpN$As)%Aniu2+eYH`Q`0q1S z2ct$i|2d%6SQUysB;nZQXT8+J8|=?tB9$t$@y?fO_}8AfKgzp$$CD8K<5~8)!jMFP zvNs~J;<)z>LtDkzcdv@8OrU!OnpmxT8!_3r85{{IRK#e6vj`OoTG^GZG(6QHoU4zV zHyt>Uw<9ylA)0w4{5D=YZ7KX<*Yf5`nP<+^8H4%kqbxSit2B=ef%+{ofw#j&(N0$HFKJZN%(5npww5 z?vN6v^~v3^xsU(1JP)fAarVtt!&Iw{ryFn%KMIp>1>Nv)s zs9Tk_`M1c)n<-fZbG!DqynNKiso5A(5eiPpMhBAyZFvMu7Xui>Cr(2b^b=k^ES*1h z6XbQ{b-B^}ouV*sxL2|Lm|4nTJjm?#R!^)}-3ZrotGx2xW~8pSIX9?u9HK`V+RT=3 zv9AC5>S|40k19CkmLx=oa8`K_c`BKaJf$C{Pjr3R9&OB#j|Uv(-Jd_6;NMxy_{+U=`}< zsVx0X@^4=g@kZaeQt8tt(FK=(8W}ce3qO+Rt1ctG(&<`hhQTeyi%M## z^7oo_W%`SVeaQ}k%pc%d|8`JEvzGsU1k}`8)Ytn#GO1mxhBS{vPDdG!)7D+#Z{byx zv41S^D!-iTmIFT`dy)xML8|mN{nvFWsaiC&1pPwdieezG@0R|60;$22+O5%9{{etx B=Z^pY literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/action_setting_new_default.png b/src/main/res/drawable-xxhdpi/action_setting_new_default.png new file mode 100755 index 0000000000000000000000000000000000000000..2a2f916f48f522bb4b467914e63ec4512c1c4832 GIT binary patch literal 5665 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 X!`5>NNKwH4`f01HX{1r3<{157-n%$q literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/action_setting_new_pressed.png b/src/main/res/drawable-xxhdpi/action_setting_new_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..6c60f0e25e18dfed667476c78f251122f242c0db GIT binary patch literal 5751 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 VSKG`#lnV?r22WQ%mvv4FO#mM%eiQ%z literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/arrow_left_48dp.png b/src/main/res/drawable-xxhdpi/arrow_left_48dp.png new file mode 100755 index 0000000000000000000000000000000000000000..84d9fb9038ed39729f47dea25cc376f332125fb7 GIT binary patch literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$farflk*TpT|a z9S-__Jp9?O#hhOj#4O=bYkX!9%MMhJ4h~#@bKOzoeBs=Vj>m$6Pb*wpEae0P``lfo zz_{~%R~dJy@7*tXR9WswbAd6%c7hki-^| z^9gPr!O}ocAj;5PaI;5ANKnbirNhGo&gkF}R8(?NQF3YN5DWr%tm_F+arf;2b1k&i<0`cR@m`(&5sjt3wG!w-2boFyt=akR{ E07A8G&;S4c literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/arrow_right_white_48dp.png b/src/main/res/drawable-xxhdpi/arrow_right_white_48dp.png new file mode 100755 index 0000000000000000000000000000000000000000..481971bba7f6c60c37717c836a5dccb95b4673f3 GIT binary patch literal 545 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$farf$@c>i(^Q|t+%(Lxegf!v;~$g z9-bqR0)ivkHzK}QC# zhQJ^fJvpTY1tyL~OFClAAR0XdcP4Z&G;t_&Oj0UZ2{Ay`^@)-qP*q{av%z-O5Nj1O?o~)z3Iz!$UwyH;<^K( zE407n&wmxQs#(m1!y;q$`;(k^BHh?0shu_Gd%U1bfPs;Tg+oBWp#eeyxhf6~V8IJq zcb74k7Cb9tzH+S7$?IsRqt~%c2e0EV`$8C(YX^zW$@9px_+H+xvczQ0-w>W4sdF~= zY?^}VT$-Zk?=DDdN~$wy$}YDKVx8l^7YQi99LvB7a?}hXvF{k literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/browser.png b/src/main/res/drawable-xxhdpi/browser.png new file mode 100755 index 0000000000000000000000000000000000000000..4f10056da4b681ef01695a8032a557211640f60b GIT binary patch literal 5285 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/btn_google_signin_dark_normal.9.png b/src/main/res/drawable-xxhdpi/btn_google_signin_dark_normal.9.png new file mode 100755 index 0000000000000000000000000000000000000000..3fb4c67209d81d6656330093789f4d95dac5850e GIT binary patch literal 2536 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/collection_no_image.png b/src/main/res/drawable-xxhdpi/collection_no_image.png new file mode 100755 index 0000000000000000000000000000000000000000..99a0dc0d69f5cadf1459e3ff4ad0f3288863f768 GIT binary patch literal 3202 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/comment_normal.png b/src/main/res/drawable-xxhdpi/comment_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..def24daad421caa11f44f83707da812786a4348d GIT binary patch literal 2372 zcmd5;`#TeCAKx?)Z#hIdylEnb$sv_S4qNn?^P0n)!c$)7bdZ_RcpRREkQdX)Od`jL zCYIKUi_$0$t;`%otel=rc+8AF>mPWp>-p{dUf1`&zxVaMzn|-K-Pis7+;=w8!)dS5 zVI=?nu-6&kh?32(f4bss*@zmCRR93?C_6jCy|H7<6)}+y{SUp3h#omJQXB7@*q+VN zi_d=K3m?(rDcIM=s;O;cgh1MsOf`rQ5nL^xqnAsNuWyeu!mIkn#v+VPXq`G;r0jf} zKHyFvYLk;oH>}(k02J*mDhWA=(cJGx_^oc)v>?#GB z8e1V2B)62Lq)oha1^)K84;2wVPPcWfo+%%Uqc$})&8==mo;;AeAzojcxh9|VFE43DM@L6yKmWRpGwJE+ zF$m+jJsmrO29dbUj>lKX~3pyn2+es;o;%*CW%JwN@9k=3RbdRSXfv+ z*5R;^(4&_jwDQ+{M6_u7SG5T@Tts7RO`^ zh8xcd1X7H3MR2WXofsMwWn`k&>%=b9ssKTu=H@~JHQp}JP#|DEB@~Afqh-7vv3pxy zViTx@3p{HcMeJ`rbc;a_`u$bPExg>=Bq! znud0c?ZXETL{&kGF*<3s+6A8Pl$`+S01!|$4GfS|1;JzsMVKl8s3->pzyTnzV%q<4 zk^=Z2On=`GK9HNGmKJH0HW>bFcg7n`()6(gEl)Kt%(}u?PJ&PdE@6^6LZOi44Ov$O zA}*y(PEL9qhmoe`k!C1{U;DBSfS$ZT{V#ZGXoz>Jd{Ey+h+|X+2L%n($zZ-8ti&A-OXKG&PuM=3qrd#d?331*Gw{7Y1mHPW6}A6$_-M-VJ5u^O>wUhzg;H zNrd}70n;XczBSuc^O!D{+Y6mOf!Zq5&^FX@SxzGp)63M%`{nJ+V1Zf@^`{;rBqT6Q zx?n_0L`z`h@z;_X*V6ow($aEwYh87y1TW=yL)tSzxV0UWgp;42-_h9E$Z``(aFj<~ zU0YffP~%?sBfooSQPvS{maGGsPNrZWsYhhw%~&47x3caaYR>FYKe!NA5U|eXw9v_9 zva-9oyV<1`Ze3lS`Qer(*j7-FQ)qht`x+|u?brIa>(`~50|Rcz-Dh>qJGfN*ySPb^ z9($K^9#dRB8t~48-s;+S^)f%g9p6zb30~oFIIm05++ykuXog^U*>NUoll-W)WN+2(;quw9L&4OY<+^1cz!yi zZq)fDtdzFAhSku`W#dWJ>Sxj3O>aJ0}^EnmbT_?b@}ehQ>y&=Ss!_IgPlRrk-wYLC|>qy^VK;x@%h$0stjhfDd2s^!#{U zyWrc2+}>_V#)`b*+E#&M+I+5-nRW}6S~~@_1sOgpr<-l#8`rk>`uO;49gG^f0GP*+ zsm;y*nVphM$aJlQyUd5H9}G$Bj{4H=yuiOjSNM@g;BvXl z+PIq*ZJ}6T&J!pajgGHEejgtiLNZu$W30OLX?a7MO+iurW3lNKnwD7eyJ8*X5iMJwYRsgZH1-)m9}?2OC%|^vKxLY zK0dyN9bGdA{HjdB6J2VwS?}$~CMS3JtykYdu&1GsI34 zUuLjrL=OtA+WE)msNdpk>!b$dJ}nA1RXWK?j>j{lVX}voMYEyg$H}Elu&y2f$!kiB9W+a?#hOb5q`2$PV5Xm|C@U^-0~lPCu9YqAMAncF)j{& SVQ=66S?_$&!;yL+H2rV7uSF{W literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/comment_pressed.png b/src/main/res/drawable-xxhdpi/comment_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..98d52c781b65b39b111f3eba3cecfefbfa828fe2 GIT binary patch literal 2144 zcmd5-dpy%^8~wDkV_jBFXmF9iIT~1bA761S_ zPY)L#(N5c0U@4LGnTnDI05Htc#mO&za+!QKD(95yovNmkzttYze^*tL&P>`tPrPq}9if=pQfF3iI9!NEnv2S@+t?Ux51OuJo_Jj+YtdU<9^-Fap+m|z z^nG(}Y0&B|>b5FNy@VCO^+?XpZ40@GtPnD&4kjw;>`Ie`gUj4V%trEqP~E)O+qEaT z&e1qd6H6~+f%QoFUA*OIx|LY7oP^ zQjE*&RX(rT;z|7IXShZr^`bC@4!t4$4PVoO;!7)H6S}mV7@Mw%DYh%Hgxa;c`nM2Y zubc^lP`aq7=q8o`8d62%42E|jAb8Oz(=>HENMwthGcCHljO@82i`An0T1XA|FuH^OQH&OK0u6W98>DHW@B z;t;09d3A3uqt=fpPY%*i6a4<*FUt#+$Ir8akcc|25M`17wgnFn8~3 z>WVw?$a6N#-F;xVu&~fNA|fRb2zvDF*|XZ_=Cvoh4_NVzxJ0HzA(&8nz^D z=!KBlrXN7J0uxc(jF7!8)v!(r8Sm$@%aeL+HXCLoSyw9LH>piiN(@A4@yJ8h)E`ER zGkjrOMIqE!KsK%H;+IevF$6+UY4t7*=vE5j)^m^ZxfzVYhkSGG+GD)=aU2pE|K zYM?-Gd7v39iBR=S`>N*B#iZkkZ@isO*BB2>i4Pk|j&H1FHuME7St2%(l^mf_5(?HE zXd|#LYQ@_J1D6w>=kPL{VsHcn(0OQo2sE?jLt7r?B) zAaK1vfRhF96p=w)H?Ci|AyXOQrVbvr#nwZ5|NWWdR~R)l8v3#>*Yq#CL#6pvcTLR~ ze00>QfcJ_vTe9DI3G?SCbd{r8=KKBi`hJ^q;!>&|C^VQd2g)wHDX)z(@oJop_R~0` zm1~Bl_AT1{IykVlraf?l`YqvySm;Iam6x# zFD-2*JZ@~fmP=aK;@wBT31U;UV#xw~IbL0gMRo2FIhsOjT8(%)umfm%q zQHWK4{hXQ$oQvJ|eID>!znn(sxw8O?FN;nZ%UB+Fp^*?ZLS!>(Bi z;r(auefJ!2IB0>;-m!N_Q}*+0a4`Gm@@96m{TXc{A1mYTTQlO8X=lmX7K9nfOTvl# zus9b+qOp4BVY57<8lEOAHZ^ZKbE&mk_`972zyi;b>|mmbF)fqY#~IlYsbaxs!8Vmj zb^a3b+=)Y|oZr@|-7N{HEo$_wt%Wf7UYP097oGB_!LtONfF1%n0EOxy9xq0x02TKT z)jYoFLrjmX*PP~DOWP}pA`Zv7eHq)w$#2C=K;%hD%HsJB*{?rKX$?%Mq`8zJ_DebH zmCs75YTF|m-V*xd`k7<=J8BicKkhEPq6AQ-#V-Nl+>-yE%p_kq;Tdj`T z;}CT53G1Xq(i*!PXC2)xzs(M;OhCZ_qF#Vq+o9oD(=NN$k{PAUs^%BgWU=1z?CuhM oQL%Kznl$F5`5;q)%1t)$ihK_0@~Dqd0lJOB)78&qol`;+08wBFzM00000NkvXXu0mjf DGWur7 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/done_flamingo_24dp.png b/src/main/res/drawable-xxhdpi/done_flamingo_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..799f2a03b85581c097984e0f7d112730cf3661b7 GIT binary patch literal 431 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2U@Y@=aSW-r_4d|T-@^_9Z4W~n zSX&et1GE;%XDw*d>~%WP-!iFMt6}RC;Y+9D-k+&T|0K8X_m7D=?`v+Iefzl9`4c0f zLIVR62Z-okU=eU&U<49*pBVz|`Ze!sG6l#zFYjTPa$M7`t7r4s2O^4hwa>*euYBmj z5_Gha&E$cMNud(s%m*%vMu$5YQo0_?zBnm$+&Dm3X1&AN0vjgNqaQ(vq90W-MX?^| zzK~@h*ARAeC1aK6Pbv8WSv&6DvhZ$<3$8oH$nWM6`#^`W%6sP@=@99a(sP0q)Sfam z{t(EyQX9xV-+3^5BHNr`e+%z8Lqn%mLg_EvtN1SIG5MX%kK zFEy70vt=Hz{NA^CYt|H{od+-8Ir>a#=b?*nVb2wI9@=>0+42c74isP9VHM-L0giT#taWwO$XSe&DYfJZ59DcaW77`+$U||G@632pupUhIf=6UdT SOxOgB2nJ7AKbLh*2~7ZF=&(@$ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/done_white_48dp.png b/src/main/res/drawable-xxhdpi/done_white_48dp.png new file mode 100755 index 0000000000000000000000000000000000000000..226553b8a09e291765c6c010e05611cfd9a5fab0 GIT binary patch literal 645 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$farfyu|y#WAGf*4sN5y^a_NI9&W| za&Z1Dt*m?BHm_D_@^4annPQaw&`#fnKXtork@fk{YG2bhm^>Ib6&O_*RT@|(Fic_) zasUc=f`uBuLLdPwYOa4_nNXGe{QGjoC2=;-LpykC<87uZ82#A$(Z@aI$M458yH2pK zXiS$<5?{zSPqQPYBdVfJxybOJJwJjCW?=DuBtDL)FI=Cl-H(1;_2%st+&+=+B#fUKS*} zrh{W1gTr~|wz~G^-(**)x_@Ew|C7I9O~-@C7x58hE+2G$$YiiA60gXz?~IcbwBfwh zy0(jBo=g7YaAy|(Lth<$fvx_r>qv&nhnx*dN?8_#S7fd4+$SYyBdxb;KNpaCe`-cA z$2_LnRcVS%%P;KPaIxco=8la8B1#op?|oz&Ip#fzo-J*|km|y6KCNBbq=Mm81IN6x z{pFb-7`7-WRdmT3Tz$Zp!Rqos#QxE`gUkUeN)-&R+<;+vx8nih3TZ(bhEnAw_62z^ u9~iFm0>c<1W?3cxg>b|yIQCh;aqiJ=-F>BKwF)qKF?hQAxvX literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/email_48dp.png b/src/main/res/drawable-xxhdpi/email_48dp.png new file mode 100755 index 0000000000000000000000000000000000000000..dc58481c6215308e9ebd9862f6e8c05e15a2416d GIT binary patch literal 1028 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$farf%&wji(^Q|t+#i*`*;Io8b12@ zL^f2IdM7CMsKiBo@KAZXkz>t)GsPF!%A0O5N*k!0J#%39>|-le%<@na=e7Bd zwz+ryoDbi=Z`G^ntkjJWYZzh;Sp+y(m>L}v8XOcrEJiR#fCJ2FbYK9=fE6$>Ev#zf zQ(LDZryi%eP3XR%X1wrvVSk};;dU>P4AVmWjkyQAmPaoB{q|s7i^FoE_qsl%CfQ|a zS&e!T9j_v1do6g}nJ=cmvb>mki~7fF51i+o3oGU-xqRVpq55=(-NNxaHczhJJSf97 z*YwSXm{W=ub~&~`4diQ_CtVU@R>bk;*n-2KRNEc?S6}}b@o4GMljpjRT;!`a-{l~0 zRkL7j=j*r4w%ykM4qwiGdnSAl$Cf7^k7l~c^)Bx`y#K7t6bD{wq36Qyb$%q6__Lnd zx;eH}@4}?Lo$O-!&0oLO`ET}o1Cy@c&A&=N<3IE2PdM>T{Nz>6FNH_=RW|*%pTw!M zsoK@3(WPv?hZ;~$^dyVW&Am#NdmQ+y>R8WfZrbhg>HdxDhKz3FFM`|ozpmqbEX&NJ zmXz|n^NIc0=T7}UMKmw0cfT>Qv2TOM#JzDh%u6mZ>7M_1o!#d6b*Y=qu0@B}9qDb9 z+E~#zZBLGPecnXd5*7YhhEU}TGRnJKJowZv$SCbz;xR8~!Fgr*g%_2o_ioC+v5K`z z{x_GDE6td$O58Mc`SgZmmExxCt|yUPAw?-Tr38;&hYgCdXt4XzF575-8%@l6wM3LsFkWE@1Bb-X_c7_g4_I%Vb#DIl*twy_TT54Gf9_Geu)gr_9q)=A zKX&f^y^K}+(Z?fh)sqX>o?cqz*JxnOgCpxeeE{-h()I(5qBT#pE797wBkIs5 z>>*X5P1*RXL7TK&TY)xhi#;A~;<<=uw5f+#V$mj_K#D}0erzlb%~`)NG+<$9u)@$l zg`q(TLjx3s1}6*+Oc>f8U-4<{^-8c^(f;zqPTC(0SQr|xFf?FcXuyEUM9_uZf z;}*`XqpA1S(G)DhUs%9`v4DkP0sG$lf5!qAh6OAP3s@M|bg($A$zYLKQ^8`fCW1XA zV@(5#$C?CIfi(rJ25SOX6;?Y~9ab~gVA?t8pE+nz33Z9jg_qd6u{~e+w*N0tQUL1Pqvf2^cT|6EI)` gCSU>vOu+P|4|fcJAkKN%0RR9107*qoM6N<$g599V)Bpeg literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/icon_label_red2.png b/src/main/res/drawable-xxhdpi/icon_label_red2.png new file mode 100755 index 0000000000000000000000000000000000000000..aca721c134dfce30a324d4fc8ad815e412d24dc6 GIT binary patch literal 5280 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 Pd1j~u)m1N7vkUnjZIVW( literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/icon_label_white2.png b/src/main/res/drawable-xxhdpi/icon_label_white2.png new file mode 100755 index 0000000000000000000000000000000000000000..91833264c80dc4387eb107ef164f75a4376fbf88 GIT binary patch literal 4601 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 CIX}_> literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/invisible_black_24dp.png b/src/main/res/drawable-xxhdpi/invisible_black_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..33a02992cf29df4661c018b980a786b58506d9a0 GIT binary patch literal 1091 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/like_pressed.png b/src/main/res/drawable-xxhdpi/like_pressed.png new file mode 100755 index 0000000000000000000000000000000000000000..ddc806d47cead45a1ec0fc90e81de33a90179f71 GIT binary patch literal 3947 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 L;ObvgZBhRN{O)J^ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/like_selected.png b/src/main/res/drawable-xxhdpi/like_selected.png new file mode 100755 index 0000000000000000000000000000000000000000..519fbc2cfc9b05d99d3fc70f2da59e665e85285e GIT binary patch literal 4187 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/menu_item_download.png b/src/main/res/drawable-xxhdpi/menu_item_download.png new file mode 100755 index 0000000000000000000000000000000000000000..2097e2fc6c5cc055c4af7077ead10885a58fd39f GIT binary patch literal 783 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 W4s7CbIJK&80KD9`GH<(vru_%PtIco# literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/play_button.png b/src/main/res/drawable-xxhdpi/play_button.png new file mode 100755 index 0000000000000000000000000000000000000000..cfcb88c5d508f8e3aa34e147e71f436fdba58992 GIT binary patch literal 5473 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 NeH~-%D$SeG{{tiqvZVk3 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/poinila_24dp_white.png b/src/main/res/drawable-xxhdpi/poinila_24dp_white.png new file mode 100755 index 0000000000000000000000000000000000000000..31447fa4eaca56870e27a4c2c4f0406874aadb78 GIT binary patch literal 3310 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/post_no_image.png b/src/main/res/drawable-xxhdpi/post_no_image.png new file mode 100755 index 0000000000000000000000000000000000000000..d4f75938d0e5d04327035aed018ad53681ad24e1 GIT binary patch literal 4325 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 DMENIj literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/remove_white_36dp.png b/src/main/res/drawable-xxhdpi/remove_white_36dp.png new file mode 100755 index 0000000000000000000000000000000000000000..36d1c7da33037353a9858706e2b00d78383284ef GIT binary patch literal 642 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz1|<8_!p|}=FnM~qIEGZ*dV9Aq_mF{rTcVrB z-NkD~cKv5^aBmcJQZfw+<#hB&x^Hdo{h#4myHfJ}x3TxXTOaOhR+u4phC>Y>!EkV2 z+a6VkJ>M1Q-#oalJ*HjeVTSUx^Ak=_(9^!rVrr^&tHpHdqKvH@R%HC&_-~QyriQzR z7cIPdSgR{cy1VHc$7+dN*ESza->_)0ZMW&x*ZKDg6COX9|Euz?2v4rwwP*Hw)>`|x zakqzNU2=5c?hGx8@^|9y4*k_{%&2P;*1L4&iHwIEvvmLM>)MttyZYI;Q+5JUY^%T3 zMX;ENgthRVnU!I&M#K7?>4gaq6TMix7A0<6bhV_XxqhDIgy%CeGS+msT0}2;xN%XK zZ*Jo>Chek`w`XN!Zdi0(bzS2$uI>PjT`an?VvISQQC2!!H&)NzRuZAILHA<7)`?$M z-Cnk#BO!Z{qW964?SiuoDK+alI?taY=wo2t*<|^$AnN^=d-ms=cA6YzsV=?x_r)Xq z*9lH-pEET!n10)QX<_Oyug+<*+OkpH5i2i59qg*P!pRx7DIv|@E&FR0t4`GEaBYQ) zQTy4M+n?D=7?|kmYL)|4i0!PAYE%>B@zs%-6=7hqF(D)A;Dv2(-c)e@S3M~9H)hMm z^YT~xlfJ7&E%Tmb{cFkN4-C4OO<%;$Pl>AM*S+k_>>Aguar36&+2u9~-obX$m}CBY swOr+PzTH%k-O)gK2GI3*h{zezTO_KtSGhkq2TWTGp00i_>zopr0P_qLApigX literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/repost_normal.png b/src/main/res/drawable-xxhdpi/repost_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..1b43083b89a0390a02bcb11caee3e1c4ffdb95f6 GIT binary patch literal 4491 zcmcgwc~lemmM)A$Wf2wZpdjH1jS30~jX?u~ihzKCC}K-6C~82~u!Suowg#TE@3I*| z5D|d}WQPP<1%$Y;2m+Bc>`6c%fsjnac|EUZ&Y3^vo#|KS)XAx;U)@{xe&2V0_vVqc zrHQ22elY+5Brlj6*#LkDQFv~Lf_HM-%BcXb+vbANnJWQ<3&Rd>y?1_V!#@1!y7T>~ z$v?Rt(a^6dLTZ(T&6k!f_IhZgee9C((Z-^>ZbW{JeR=$b?1d|`iOo9Et*^@v=?A2D zXsYdc8@XiD@aVebLgz_QSWu3P^IY7{YmR%by0@Q>xqL|ZLC1$J`gvrlCCQ*eYypqJ z-~|s_J^?@FuQ(*sjvdRCNz33o5X&c;Tcm2`9`=n&pjB!4Ouct)TrnuAs|)ewFjA9} zl5G9_{B+jn1i{#3X9_)2?9+^|iX`dC=boN7jI3~l^-%}huwRp3zk}TYnxU?k_6sZW z4H=rTp3Oyc9mk3Vsj87b~VRoFA;=AF3yLVKK*lhb$wWZTY=CtY_pVifd)##p0G zhk}EG!Ws>v%t$C4Zmn%J$UvcZ(+j#j5;RvBWnbY|U0ztY@S-an(XVmscgO2`+KciN z<*dgqO0%+VE>^gIRrpedp=ltI$j@yta3*ciJ1;0W*gy)w^BFbdl_;4+n~Ku8{ULgg z(W4>$^IuA0ng(?HdV5zaWq-@7@T60YW@HYQmX;n_RG#=;u=yx!i6jo=w{&MB>5{Nz zzSl>x7;Gbt-Am&l@CeAvJ9xMw$1P+xbTom*$e)^;T4g*9UgTH%F#1T^wkP~%uf&AQ zmLd4rtiJM)xxPXI?8X9Beq?YpOgu;v_3Z(JI*a|5>q)?A@@Q<)&ogc(g5Tul&*YlG z@!!{LYEH$3$=c7(&E=8g1X7J^$rvaU8g!b+Y7#^g-<5ZEnRu{kWOqjAq_;q>yFYs2 zYo$TYhY!{W{QCDti+U*A&o3@UAOv$y34AVLVRm+QCt}lz8q_?_GJD?75`RTImq!m~ z)>ovUL%AE}<>k4ywzeKdsFP?1uioC?7B#yfo~3HiJ#hptL4j?WA{cI9$x4uL1H-QU zMVo;jiW#hf@B5)uS_pxp+zE>+?o_%OIcPTD9(n3iC``RoV~CThW*>4?#`s%v*17P| z+7Rv%Rf5?X1*Fj9e>T5|TO8ujGcz;UaWsYp|5I=9Q5gfv19Xzc^*7VSogE!2)#tDS z3LDA^?E|&`3+s2PrY%Y0Uhlfl`=w(@(5CIadfbTw^H&805kn=iD{ZIQNrXBs+#rCOIpnk`OY zrxHTu$A7=zw1Kte?HubZu%l~wj_4^h6FRfqxXIqkcW0*Sc?Tutv2miPsF6 za*A+s_CBm%O?1V%N-l=V|bM$v-({lqKUP&?7}fvR9~U} z+Bixb;Rxi^39e0BV=xR#xof}5Cgmo@HlX0z-W$i~*PJqQ8#zYSyeur0+vOQLCVd9= zepxVaAF^$|emzBuA$?|>l*0R~SFf(W04O&CB6QuyTccmD-0xbW5(%zoD`%r}t)?0W|Vq$*< z$fGuI>mh%K#2yDih5-wAPftQ!Wo183U`9d$3L@-s2`=5`Zkw4mbi5#M^)-5HA5h z4dX=`08=gS{skxiQ4~H@-UmKc7B2r67qx@dgdRY{piR&qXbbfA4@blhRsMmTj~$?= zCB~G2j6mU&vrJJQP0Vqt1TcOJ2s>NN!u^_LnMaN_{_@I8!T+a*?Xo~?3m_3jH8Igj zeSJ}R&*j`WnWE>fG`FaUkCNg!y6R7$i33QW08b}_1m%0R??h7IM+yuO`dK9i4(AtG0`ZNhPAF#2pzr>IE$#^~u3|&S5k>o$&qXmWv zQQRlQ6wLC!6XR#QwkiG>oO4rxUwO5r&o5Oy4FkEQXyw7ra+vWAvYp=HqD=BBQAOET z2T1Dxvc%)30XB1&C%^r6scM|5MUt`2xpU{-b>&jM@RIuh3Byo{25B~H-JsKyH23l# z%4){TUC7EG!TtMwz)XVF6;k*QAce^l0t*o)JT?#V`@vL;WD>RC2#jy;gq6BJAz$J@2`=#Hr_dZH62g+JJ@6xe%%-!sNh>6;nDhPh!WKu`V*}cwN|o zz)+Bo<4!<#@FB%0Gf^)U@Cx%MIsOP7l+=H!7iuU}?Kb28U+w<03jByV9*iF3)!`hG zzY8|?_4U#GBT+fUMM_{=-jUM{D)3K z@e9EP5dqIX6#MP0Muy1YBS%sdqlCrlT`{zY?!=5jjOeZ{)-s<4GV9l_nhGOs^z(Ih zb)CB>T$E5#TWd8xQoli6ogY{x=U*|a$r)RbE_#l}lnqpPsZc=T5P1O-G6Fq0exh*? z%P*0MAV3;8`-sKHhWiVbHub@^{hbX5a6=!hQ7AVsPoDzz6D?HA2<)*IzXX+w-c94bL0DDbUR3(li-Nq{m1aBR z(MEzk^IcmUmI@P}eA9Gr@72-s!;YsiyTN8a42R?!VX^GyT=SF>nGqF*NKe>-{q2Be zbWcyu6>y7Ph!Wn&_nMuV*=Lq(({&Trv*?SmuG75^3TdoBG~8JAiJgG46Mi~mDb7TJ z`>Tt~%x&B$b?4T|eRsg_IWViTaxGG0t2s#<7;vkg78Q9!*UF<^I}(rd5Bbpa=}6z{ z4_JueUgJ?w2YF&qM@NS$?j+^o{6HBd*CyZ1%8GVUNpVt8AfQkvmtFf_S69A%?e-Wc zPd|)OZYi!?>Yz?|S0`Y%${##ZOyvYGPP8ZB3kwS)_B?7f!s${joj>2wjG%`s2ajgY z90zPdsq0di!&HKxn2cW?Fbcpjply||&d!HDJv>5HB#2D0j+<7z7n;m1IlPStEA^DQ z8({yqhI#*Fbie>s{OZ-c#xO~6he6T7*#%J-uerrW0Y6$-MMXu)HEqvW{b=p-K6FBx|6U-Ke9V58298#t zQ&P`QZSh0;&j;jFsf32@rcO&!bjrQnSIEXLx(`9Ub9+zNZq6FV(vg$x1LPJ65>AJY zsR;s>i;If$byRAo5|{nyJ;+{R13Vx`&+~P5!^^1X4tj3 z-oKN_UCwKR_f1DPJ<$$an%JR@={{OiP>^2lHc*NL8_W^$bF53Ao}RptPh|XxeQV@> z-%%4i_6s-Mbqzk4Y3ZpT zEBg-r{i6wlozmS#z8WwBdo#54mmAb486JTH7w#K9j_`)t0F62bO$L#a{ z8~PM*M16HH?Ri&|ud;o~+~Ar_2C{-{;xc+27L|4m>=|ZT|3(gS?OjPTTUT z5yfs}&$Gkfp&arJ!sZIP96IW7)>!p>BXTSmF%mFN7h*sK^;q}_^S6vg`Rv`a$bH&F z-}f1qnVUy6o<}Exe+0P5CvHbO`=u`aGUVe@>r-I)`ZD1qxv#Rg@32Z-rGmXpHY3#V)H>H->=2c?u}A1UIArHi z;8--4^80Jc&j*Ds=ZSCK+F-xEhN+@#H5=NYewB2m;I}$)z}lguV19&6fRT@=@gsXB z8bc3eucRFUUHY5bv@`iue?05a9dCwm$zgQY>9D2Y$NF*^Ls55C;!j`mQQf9An;o-Q z*yPRHZiA<;K*`XfwxWW@d)bb3#YLFY8j_&2Fsxix)3OUM>DZ$l-9ryRWZY$p2*M zP&$y3mUF#}&-!k{V79cSOB56ov-)g4t2DZAo8pZ^YHplcICnw`ns@_ioj$yJi*e%ED+nX=1Ml5%k zXKteZ{Go`{8%qVx=QF1}_)n{F=iqI;SiGRFv;*X6qLgiv^|mqY0v+yX$Rbrn6Ttlxi(l=mdu?U4Ql6r5Jh+FciIBs+ZB3R!AANBJ8xv>`N;f) zB>uz?O4i6j<(_x$l>HFGFnBH(spso(1ivruZ!fGU^@UyC+}axOy0XSQn;&={Xy3L% z3G`w+IyzR9UryN>W^i5%K$_4H zSMMSD=|aXTH17#J%mN3WoX?7d3e?HTH$bYoDv>dt=cx0P zS3av~A_ELs_R#z>Dxn){0*m7k#5ocWXU~k;nuh>lC`kYYH~=UBf|Ug%uz)pqn5XUq zWPo#jWe0-Vwer8_h;INa5M;dQg^oI~b{cfTXvre8KE>2aEy`%k<1kwZ2Hdp-u1`dU z8F!Lqi~48CthSB~m!kfXq~}BX>n9ZfNZEQ$Vgb`l=jrBWzJ*>(X8zM)rFKF5FThJ* z2yE28lyJGyQ-9o_bb$L<5`X}AIr%^B$knbxSWvbA2|&tiN50JA07LHo^vIsCYbVWl zg4^F7yEKYXmaDD3q@&QnuS|1&*y>S!q1X|lRB;G^5wqntSIR31Na5`;ISL@s3wf<{ zlJ{eB=xLz$dok-!v5F^WC)_IrO)T_!?;F@ydAuEg0W#PaE$sX54-5B!mqifl4%>rZ z=vY}IxY^cVz(f!)2pP0qc6rHu(Q2e1hmxL|sg# zUxI;s#ZKS}(oLmcfhX#A(mLW1!IzT4hq6}cc7gX1wpNstmGgA>C1tem`_JrP9epS> zmrQw~1jtawk*lWVWdm;)IvR9`%GBxtwHNal3Lw?Vg8&k~6Wb2h9T!l5@UkXA1aX63 zz~lxo?~cO$?0_R+-tR8m`HjS%S+Tq3FPXCY2lXC!G+0LA;i+;4(_bBSd~B;@*($|C zY2!HcQMi%5XH1DI5-GaS^*Q|&=)=C+CDRX|z~hoh_8rjgh_4A|_eAp|q7QdJ1!sfy zh>>!pqqHRerZSKQdXD;bx2{0X!Rkc;J2d~q8?U*8{J-q~s?L9M$k-5AicY>oeccTXAz>&SK4m^SlQ!t^8&0AWfPs6Nzt7$3xk>B$bHk8fjJ? zr@~FTe+464RuLl|n~p|G0B$OOE90F+`cn@;0f`lR$c)kHJOO5KsvCl+ZDnOOs#eRT zHfM>$oTMSxkhdrMZ}Hj+95@bz>UL^GL@MTydAJ?Wo-9xGEN9o*p|kY>I4JLt zP=fY*7N)oPl85e>vwgEe437myGT>)O=m*}kaZu`rpfVrqB-J{Givc&P<(!qp)*WkH ztj~CcxA(|U!7E`bV;=KF9nX5xd{uI6{1&<9-JqYw9)J`K=>>}ifkcjinD*Zd>jZR} zB=63C16_SktqoEL$v3X7xxc%#yp6o^)>*eC=~{R-uCzf9;$>wb3@3xaj(~^3jaZ8z zp<+kDYdF58cl$@6eOMYL02rbcOQuQ;1hMed;6i}|MeD)z(yBj73AGZ*LxwJwey{q( z4ZLytI+fz)iOuK;^i56wZ;A}CIQhdX0-=cgaca3xN=oV(dT`Nh0n!JJcT;X&!E^TY zo%n_FVbfk;C`?KrP(N@XT9B$!S=~-d$>QU)Yildj+bf$Z@Wd&F*%v!*g}9#E zuPk=LDL^m`uZ_GoxA>#>H`9V6H#?slYe1gi<>6q5gI9({I5W*Owr=4kr*c|3zPvF0UA9=@&`b9j~1DskdM%h@v6>9xu^u899}wC@P#- z6#2PUZ*(CmzlXFYqWq8X69LK*s7QN!QFOk>H`L=*F$hDKGWG20qyAg>w3z?c9y+Go zv9iUu5yJgA%1WtFi>+2Z0=~3N5BowYw6M9O_|-iG;X?7%s+d1mDZy(mu;5M_JXp}? zMF`?#QrT0*xzgiwXp3IVK}7;`^+B*|Y%bzM%JnO23kDCR*(GOnwZj#2`Bg5(b!3;@ zTfM!#TN8^7y@_$bcAG}AGL4a)Q_JcGzha;%vSQ(XC<<5GdF~NeH(aBlHA4b!+uNt) zEw_d@s5vVuRhvnz3LImW<5rVA~s34s4b=d$<1+O;{(*bexN|$1ME7N@QpJ~r8O5qUlE@4Gt5XRyg&b? zs%rd^sPz5qFCmt5y|)_LCBqdP<2izk=H}*B#LUrVdTUN&^7`giw@@be2f<8-OjDyw z(~^`>s6c+O%Gt9gl!Y#m^F6(UXwocAw7X?Y9K0I2AL z!@H;>0(bAZrbDb&j>ot2?T=J&qn2<}9of(Qb`dm+v8!5%O)LuCWix&KgSIQ{xf$?x cw>xPfNs3nSYY{)`(~d9aEbS~xPP_m7ZxvhemH+?% literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/rotate_left_white_24dp.png b/src/main/res/drawable-xxhdpi/rotate_left_white_24dp.png new file mode 100755 index 0000000000000000000000000000000000000000..5d2c2e48a5b6fda3a31b996ad21409508d0abff7 GIT binary patch literal 950 zcmV;n14;aeP)FD%anARg@ArJ4=kuxe-Of3m=k=WL_w(cXc~;_iUI~dW zfuK!Yi7^>RQ2aW8pt#15g*oA?E1PfcKh$ z;asPhZxg&l=S>5ejhi5^0uOuNUd?vLeL?M3ZW2&C$B{A6a?O3MM+4Am&^X7pPLqHJ zIZj-QC|ByzXqfRLwf{u{hb9~%m0?;|m z!+R41=px6*j0r%zNYRuaKusJU@6!0oKhn5;QL$Q=05}_M7pqJ|F}FK( z)W`8{z+^w@aEuKz9aRes7CTG=nj>hr-mwIS^|c=f8uxQeH|@Ix{oh3v0Hp;@`%KvT z>Sn81A2^#Wz^TJB!q2{g=G!_r?8tHCrzJR5SVHjZsO_WYrwC_@rI0Ry^Bhlatqw0N zQGip8Fr(a%kAQv);AEqSs3yMUM%*7>M0D!02J}Q>kgCCj`Je`$&9fiR?@I%|F%(OfU+3P%HsMQCZbphQ~i+$0kP$DMkhl~Vo$mp>!ksoNTdR2 z9Oofhu~;tXpF^>4emCf>r24-FIt|(tb^yv%K=hv%2oM1x5g-CYfCvx)B0vO)02QTo!oZ8?1?REdYrpEKU8UlwTkf7=i zlqW%AJX3#~dCfq2p zcAroD&MosTz=+_*egIj?o%B6mLd>|<0CP+WN`@*N4LSMs{!yu?TALt^>@OwlQ5KN84jjCm(W&{@ejv6;sZ)N(on z4I)9@khm~Ap=j@N8;Px7m!MgKxo26zmpYerUD@BJzf_4aQ0xB+O2zmHIDt{THhzM#RL1X+v1f@t238EpULeOhO z&>|8fUgkR;Smqy^+$eTiB0xiD)nD5q7B+0E({)F8O9?=vU}TVX!~b-FL@y9IMm&VU?tY5x<6 z=a{Lq4_5obvI|QMNZJsP+4v;0%a;x4kf0ZR6y)M7NxDqZZj+f+mM?!9BFV(kzm_L2 z3kmXT%8M78Ly8wlym(Wk0G6v?5b~SVz-(K}Up7W4oGK`~bzH%FZHcFvohhKoMyL^D ze}4e1irMv9k68yi4(Od3R|NT0W}^`cqTT`5fL$RaeJmOIA!G<=ToL3~Si~*;O zzofJ)g8WU}phiIhDyqqJ3i7uA2Y6*gr34lE3R&yY5G!W}&uES)6vV_Fmnn?0Ns!M} zzS8vvOyp4n{RW=#;;cGdahp1I*8`h)FX$2cj%^8!@_kmlE0^~4pBD%cM1n{V2_iux ihy;-!f+Ub2IsO5yeqRsTny)he0000= literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/rsz_icon_label_red2.png b/src/main/res/drawable-xxhdpi/rsz_icon_label_red2.png new file mode 100755 index 0000000000000000000000000000000000000000..8783e4b5eb444cb1287008d363192f2fa5d6e453 GIT binary patch literal 4532 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 UXSc(@QVO7OV literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/rsz_icon_label_white2.png b/src/main/res/drawable-xxhdpi/rsz_icon_label_white2.png new file mode 100755 index 0000000000000000000000000000000000000000..f5124b7691e814f54aa87180165589df1406b76f GIT binary patch literal 2627 zcmZ`*XEfaV7X1@Oor^^8M2ix`HHZjCn@qGYN<5J$LrC;H7(^GnyBNK9iHk%Z-59-h zf*VmIdWcN8ll4BmweI_H_FnsU);?#g^X0dr9_z!ww4Ag60Dut>HH}D2AXOzb1qs!i z37RCLcmdOc0YGg69nqSSr1@~73bIWcq zR39mp_N@ngUIw{*d>Jbbw!RwQMoBdpXH-3)Z}?h=zRrPtJibbWyK%LaQZ?Q?W*M&)};Q`~U8f2(`uhHw?vEkv;sntJpbnQ2l zRIiC*9^f*Gs_6M!Dd*VSw7u9q7P=WZ0F$sQdQL$|aQ zaE7u1kmER`P0)F-yF~KsgSMD1{d7f53M;Fwxl#+xs#eO8wc+3isGItCdFH@mTol+-o$IMk+Gu(qmlgp26d>SvCzeGg-;j)F=@p^4J5tz_Y$* z_Pq*kN3<>@_tRHa)2|IU8jU3W+&7C%0EEshPa`Jo3>&sWcvR%mx2dQhZ96COdOB1~ z%^AH=CooFzN}nZnV>zzA#V-^7+$9HRA_x(2GCy+=S7=lmoXEOc)i&NBfr1#3;Ul3s ze0r(1CQ}Q{gx}|5bkwfDOL)}l$_p{{GX=RIRcc=Go*X~q`^HJ3-MT&$m^Y<sx}YV%)sXzP%fG#|t-B&)#KoZ`bW@^OYBsduVgNk0ys92fuR_O7`f zgEw*`Oww*-#B=&a+{{~4ZY_h`hs>JuetY-(eDTo%+lCOKF7-Fl8paSrkEs;Lk~ZGd z_X%yWaObw!U$Qmz!$Y36%mkDCy=k+6DXP+6au)T0r}_0vsCyj_ep{kMclW%zMFv3< z5;JNJA)-f73T1X`q$w4k?gMbPYJG9W$EaySM*U-30m)za^&3-cmOCUHJ_#KJ(%!G}KL zg0)ZWW%D=O)|EKj;pLsNrsgj_B{ew|8{!i>{xo5SK35_8>1s;6@q#W$hA=Xx%=ehU zIHve5W+>MzD^0WgzHL?f9EU9VEPl6gKW>s`YBoT=xpWt<480OKFfC6kC2_MX;oFD_aiU1hk(rTE_I>*6&drEqfA zpIL6;VD4_=3u-=9XrM(2+}AtiJ@Gx>BnUYpef~4< z^lO>}-G+gKPPv4oO2wh_LqWq*_xod%p!G#Fx-#Mf!_Fh)ot5W(z^MQ6UbEjGYQQjQ z6YQ$0&0VlPLbQ86lw8C)68t)ti~a`HGi?23tdonewZ@D+mj4PfOF9Kp97CWN793m+ z69sw5$3AcC2rpizO_JIlbi~vyeQDcFnv3Dwc!qFrdbz!~e&eNd$MMCbEC+c+Z$qv^ z5Q?IP`^jNdPC$lecqhJK9Cktd`Tpi`JTXF2o6(}blnhjGv43wYFG$i2nlzH~Mj5m| zlzzObbbINIpk`xMI=iyUJ90sccG%KL|6`RPy5`J%`&0^2w}1iwxxw zPUf?>C}**ENBUnBMqy;=hEmkR2AFL^*VkM0phBS!23p@GUE?dgTtZY~N~?ZmBuw$g zMB9t=nWWt=?F2fOax*_W_BjHdJ+NAxgCkPVr@ONKt)W#Z4YuXy6X4QRJR~kR4n1wR zj2u1iykyKAwd&qr5YNdKo3B_Oys@L7-aLROms@nmxYp{#jb%%I+(xHrB+~-!84}TY zX4*I9MlwPRYhn63NX$pnlwA^b7%tD-WmQ(iRVf4z*w3t4vS4Me%FXht{WkBG4OI!I z0H=hXT&;VgKY*L&$->7k^U^&gUAAt0>w(kX_|oFDrtl7U{vfXHfn;YHd;pzgWT@&) zKfU_G#~!m*m2u%T0BhLH7t%$+7&>Mv>wLudsnDCphVeg4L0+Nh+{%G3Y-~Ip_jLRv zAA0umxk+-LGT^Ahh%~->F-L`~yoP%tinJ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/search_normal.png b/src/main/res/drawable-xxhdpi/search_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..1cb33296432c6c356ea58b182a9cf4ccb61776e8 GIT binary patch literal 5044 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/tab_collection_selected_nomargin.png b/src/main/res/drawable-xxhdpi/tab_collection_selected_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..4e34a83691e5fe37da180e05b7b656f8e34a416f GIT binary patch literal 2626 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/tab_dashboard_selected_nomargin.png b/src/main/res/drawable-xxhdpi/tab_dashboard_selected_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..39413ba1691c2699afacb7d0e79098bd17fa4300 GIT binary patch literal 3309 zcmaJ^c|25mA0Ek0*~wDJ5hiNPW*b|~j3v#GeY6=f2a{$WndwH6eXCs5RaXe1kV&bC zZdbOFr4TJ5x~UX(i8k-(-tK+>cze(1bIx!1JkRspo_|i757}KsQBM&DgQ<9W5PT)8 z*YYbbEBV@z_rH`ZYXrn#fgd|u5JTlbFc&&I3<5lv)CkBIqS8g&PRIcUlLi?6!Gd7Y zRveAZL{OJ82qBXrVZ&e!&O#2A76l1_Ferk-as=NtwtxVG?g$21k&q+~9*Sgm?B_v# z`^o;a{ZTYKI_T^KI0$hP0VX7%0z&3q79S^c1i$IxB>UxSOAz=55kxtHes32uMK zlAIjDNP&QZv$Twfi9y6*5NuwACCbjuZdn73-XuY6;)_@Us&EsFZ~R?>0P$%&21meP zvw&qqY8X3O;0Q`G{i_5f=O0-X|L-knYs}xTB;Hxx{$pCn;UC*WEQ!~75>sE*s=~lv3N%lGi@$K>^$vx-ngP0B zBO2uXgoRA7HpzDwH2@yiE@pfJC{wRHsNfD;Zk zBU>r0=B?;f#u@g_FwT-UU=7B(DJ$i`+5Pgf*4{mf=PR|c&xfQYr5ZX+W@@9$HB>*T z(Ohz1;4|}9?CY%HLy^kQy&R98&nPMdv@T~E$mMsOde=6Z=C&@c@x8%Ldb(*8dK|y2 z+tpZ|tld5x&jHV=9Qv%@eDVD%%9VFPq?Iphcj{0|%8gz+9>`v>EhUInnW1ac2yJXP zha)f<)YcqL^hsjSt_0oHV`g=!15H;Flj4_@XB87`k5+cl8%#>+BxS#>YuiCJ3pJ)I zQQNLyjSsg}7F4Qsvl;?JL5f0Z*%k5C1GRB>a7$hg( zJQZo&sdx6_7ZtN(oG{Iu3#K(zyj?{^`;Rc};MI z6FRLIyi{8-)|_zTL5`U2Zg`9?qo`B?N9u0dIHL_W+-maKDpVNj=Nr(YiIV5VyDOP? zZ5l3`_@J^|hqx!-S^9c%mIx@mX_5E%)rGd+@FOiEsTniAnty-Q9)Qw7%$f8alv!}r z+CEB9CfuJFp6<`9$0RF?Z-1#b^Id&NtaSr8IoX8Z>3!_qC^wpES$yLs8}EA~yZle9 zr`-;={}SMML?5SM9ESJ>r7|7ozrZkcA>B>Ymh0NFYFv(Upb&FVb z${-F;h`86m11JjJF)oSM{-7mZboZ-es7|j#v9(J?Ti;v{h<0m-b*J}7o@*Mm$2Zdq~A_jcsm0K(ehtE7JgLW^bJ5nz8NnCG0k@ zz{<8_`czZWbr<#O{tIW&CYQgi&G}@2Ika)Hs%^~YT6jkGLt#&fpZS9wdBeriiK}f zx9a(#lyuD=`k?vl8~`5LriGkW7c53zD|8Hb84_%~LAQAle{tj^!_(b;KPP?Cy%q8i z7uSd6Twh4|wO1t7_8?G~(wFuOrQK9w@gy)tZ4re3L2uFuNihywz?@C3U6YonZc6UH zIcwW%ibcKKpq{Ui?F&6CH7Y3U2y%LIHj5e?Fwf2M!!7LzrbfuWlj~gDthQAyM7B;L z*EOM`(u1J4?Iw6;)Nix%PeR!T-C#!fJk0hn983moLY9yXnVcUsO^U5bL5oM1AAIrYm=hk52)O6s?1RS2C^CI-)?QpsU zVLHOhov&P*n|sikR@<0d^tJL)e!EdWIoovpm4{)H45hFXLUyPW8C!HZ5Ub4}%gcS@ z)gOIC@G)>F_8K6?ak?wS4wLF<`cq}z+>RAzK9JsS*U1yjjK{#!>M4K9I0#l{1hIg@$ZdG`xxwC0>*lTs$}x`F4JQchz!kd~?e}{JcE?w(XVnUhRH&Tr*vpvNC21LkWA? zgw!=LT6rX?pe-s*?2@s~0zZlK2@q8!_prlSy6$0?$oNk&F2nX?`FRGbWb(z}i2XaIkp f)Lff%mXd`9t+#p678i+M{sHkMk_k1gp$Y#1w55ju literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/tab_notification_light_nomargin.png b/src/main/res/drawable-xxhdpi/tab_notification_light_nomargin.png new file mode 100755 index 0000000000000000000000000000000000000000..0179fd1344c92d639eb644aa00143e67670503c0 GIT binary patch literal 1783 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/toggle_invisible_nobel_32dp.png b/src/main/res/drawable-xxhdpi/toggle_invisible_nobel_32dp.png new file mode 100755 index 0000000000000000000000000000000000000000..5bc3f853b07ed376e4bb5f102fed2fde1e1de0d0 GIT binary patch literal 1777 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/user_no_image.png b/src/main/res/drawable-xxhdpi/user_no_image.png new file mode 100755 index 0000000000000000000000000000000000000000..ba20b1f817bf2e030d9f4223bb370466bebd2f60 GIT binary patch literal 5973 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/video_play.png b/src/main/res/drawable-xxhdpi/video_play.png new file mode 100755 index 0000000000000000000000000000000000000000..9cf2309bdf73ac8ca3193534d170a50713777eba GIT binary patch literal 1633 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%o>>?5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s0*lEl2^R8JRMC7?NanVBh8Caz9qrY4RSrsjqghK8JY1}3h~FugAM$)&lec_lEtDG0rmIQ4=OL~a4lW|!2W%(B!Jx1#)91+d4hGI6`b z45xWey(zfeVvbX7ru(}gV_ar<7LmbI13*0E0}b+T9qU_T}%>KE%pV8lz#UQYR#a%J^A5ZxG}RV&Ta zT2g;`)+gTw4Js$yk0yPT+0o3Cx@gYjmnQQ}gg-httiNvWzclE%V%yF|r=QOHJzenW z4Hk~34g(%z-i-@?`dt1pH?jAnyVioR)#k|?Z@6~&)?UsryT3X_>%%cEVPWChcJuwY z3pZSyH+OFA>8C~M2YSTcXR$ zGRN(2ye$h>n;a>7^;x^v@{4WpYLicD7StPZwjS!|Ykz#rz^z4jJ>yKDV=jv?ihl79 zmP|ihHcRTqwhbE+PNr@4ethpwXSTz_fSlIDiM$=F*;W|L|Fh}mdl6Slu2v?#XPeru wX2m*5=XV}`^!Dr5uczmdKI;Vst0BLk_7ytkO literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/video_type.png b/src/main/res/drawable-xxhdpi/video_type.png new file mode 100755 index 0000000000000000000000000000000000000000..081ac0b0bee736614d7d6854767c33d90b0e7760 GIT binary patch literal 3518 zcmaJ^c{r478y}34C9)G5GYOU1jBO%eWM8spA7(HyOEZJ9FA*i-P(+3E$wXtyX(Pm` z9Q%?bvPE_xOSVJ#M(1?C?~kwVy{`9tmh1lg?)$m7=X$T$TAK**%kl#N03kC|j2&k@ zv-k4t<9tgA7e_dQ4Bgm;Zcp~3hhnLCfB}x|g9n)rvHo~FJQf#ru?epW0Pv^~99-xw zR+eaAG7*a1lYugb6b>2y(A8&9u)cwKI>-m_Pax@mKUdX)K?Iy0*jd90ZbdP|2M|od zsd)QvYX{%(KwljkSpPIgmx1OG5b<;@h(Qb@(a;P%@ONG`XTG-$1B1Sc&;#|re;MUs zWeYMQQ}G}TsHU1PTvH3Ar2|E1XlbFePJ)ndga!<*4pWD#A=S|+I2wfn{r!MB+Nd}` zv>oQ`-?}&}J#YY>PC>(9p`oGBP<1Go>JLNc=;*-UNEi~S#*t8?g^}o3h8l?m`N4p} z(|oA}3Y|bEf%X`&KICA!9++e4Uq>KP{-Gt&{&o|`VK4@k0z*LIdq?^qXl3>PMTx|J zq-k_J{D18IpTsnWFbW=Kho_N)slJ@R`9bznQP4(IJeE$TI*`dhKfGugK&F#v0b~lu z$mqM*Kq^*PUjk`wQ}sK_$_i~pqS3J=U%VMc56t0#5(qf7jye*dsg5wv&_ZY<5XPF? zhU#Yx;o3Ut8pyM7l(EqdEQahGOvIDuKd`v}U=4qY-Af1}g`*jRrxHT&xU*C;5%m4w zXu{8J(f%pl-&owwZPEED7RE6Kwin+23ippKP7du&|4ClX;-B=#lQ=m~KRn{uxf<53{`@B_Q&g9_3K(jTPa(gQ}725_4+=&3hpvjPFr-< zD*UEn5$brNXkv&)8@g~~zLc($grlLLY?_`uwN?3P3#k@%>jTJlcH<_G&@#JYw<72?;$SqOO;C7U^ZRd7jp`y0b($bjG z{YuK%)0rIU-V)ZEEMP@tRm|apge01v&0XC%0V!xJ^f=V%W)7g}yc!QTkDGq<4&O9* zaim5-UQW(h3#Hk9J2q3<2Kwk(c?pKCa=WFmu`#yT&u`n!&5dbOH~5?!SN|JcYSMAA zL;QC|#i)#ojKE^6I<4#1xl~nEmn^vWpN*QIswzF<%WcaEmhDxTja4iTooEyLmGzdHa2bj>≶eu{LUnZ-VcM9nX!#p>(p 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 QoB#j-07*qoM6N<$g8QuMVE_OC literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/zoom_btn.png b/src/main/res/drawable-xxhdpi/zoom_btn.png new file mode 100755 index 0000000000000000000000000000000000000000..2bb7283540f1b43031bbe9d23e8d483f94df5faa GIT binary patch literal 6308 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 Ht%CjsY&f)- literal 0 HcmV?d00001 diff --git a/src/main/res/drawable/action_follow_collection.xml b/src/main/res/drawable/action_follow_collection.xml new file mode 100755 index 0000000..7d83c26 --- /dev/null +++ b/src/main/res/drawable/action_follow_collection.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/action_help_setting.xml b/src/main/res/drawable/action_help_setting.xml new file mode 100755 index 0000000..0961c3d --- /dev/null +++ b/src/main/res/drawable/action_help_setting.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/action_settings.xml b/src/main/res/drawable/action_settings.xml new file mode 100755 index 0000000..a941ab3 --- /dev/null +++ b/src/main/res/drawable/action_settings.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/add_friend_selector.xml b/src/main/res/drawable/add_friend_selector.xml new file mode 100755 index 0000000..5ae63f2 --- /dev/null +++ b/src/main/res/drawable/add_friend_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/add_remove_checkbox_selector.xml b/src/main/res/drawable/add_remove_checkbox_selector.xml new file mode 100755 index 0000000..9ed084e --- /dev/null +++ b/src/main/res/drawable/add_remove_checkbox_selector.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/bg_texture.xml b/src/main/res/drawable/bg_texture.xml new file mode 100755 index 0000000..a5f0438 --- /dev/null +++ b/src/main/res/drawable/bg_texture.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/main/res/drawable/bordered_focusable.xml b/src/main/res/drawable/bordered_focusable.xml new file mode 100755 index 0000000..641573b --- /dev/null +++ b/src/main/res/drawable/bordered_focusable.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/bordered_focusable_float_hint_margin.xml b/src/main/res/drawable/bordered_focusable_float_hint_margin.xml new file mode 100755 index 0000000..c8f972f --- /dev/null +++ b/src/main/res/drawable/bordered_focusable_float_hint_margin.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/bordered_input.xml b/src/main/res/drawable/bordered_input.xml new file mode 100755 index 0000000..068e20c --- /dev/null +++ b/src/main/res/drawable/bordered_input.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/bordered_rounded_rect.xml b/src/main/res/drawable/bordered_rounded_rect.xml new file mode 100755 index 0000000..94a67d9 --- /dev/null +++ b/src/main/res/drawable/bordered_rounded_rect.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/src/main/res/drawable/bordered_rounded_rect_checked.xml b/src/main/res/drawable/bordered_rounded_rect_checked.xml new file mode 100755 index 0000000..7382ad8 --- /dev/null +++ b/src/main/res/drawable/bordered_rounded_rect_checked.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/bordered_rounded_rect_disabled.xml b/src/main/res/drawable/bordered_rounded_rect_disabled.xml new file mode 100755 index 0000000..ff69744 --- /dev/null +++ b/src/main/res/drawable/bordered_rounded_rect_disabled.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/bottom_bar_remove_background.xml b/src/main/res/drawable/bottom_bar_remove_background.xml new file mode 100755 index 0000000..b217e79 --- /dev/null +++ b/src/main/res/drawable/bottom_bar_remove_background.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/boulder_rounded_button.xml b/src/main/res/drawable/boulder_rounded_button.xml new file mode 100755 index 0000000..f5dc9f8 --- /dev/null +++ b/src/main/res/drawable/boulder_rounded_button.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/button_library.xml b/src/main/res/drawable/button_library.xml new file mode 100755 index 0000000..bb09b5e --- /dev/null +++ b/src/main/res/drawable/button_library.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/res/drawable/camera_selector.xml b/src/main/res/drawable/camera_selector.xml new file mode 100755 index 0000000..2b7ed10 --- /dev/null +++ b/src/main/res/drawable/camera_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/checkbox_selector.xml b/src/main/res/drawable/checkbox_selector.xml new file mode 100755 index 0000000..e0ec3aa --- /dev/null +++ b/src/main/res/drawable/checkbox_selector.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/circle_black_transparent.xml b/src/main/res/drawable/circle_black_transparent.xml new file mode 100755 index 0000000..2752710 --- /dev/null +++ b/src/main/res/drawable/circle_black_transparent.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/main/res/drawable/collection_bottom_bar.xml b/src/main/res/drawable/collection_bottom_bar.xml new file mode 100755 index 0000000..d5bc28e --- /dev/null +++ b/src/main/res/drawable/collection_bottom_bar.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/collection_detail_owned_delete_button.xml b/src/main/res/drawable/collection_detail_owned_delete_button.xml new file mode 100755 index 0000000..16166e3 --- /dev/null +++ b/src/main/res/drawable/collection_detail_owned_delete_button.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/collection_detail_owned_edit_button.xml b/src/main/res/drawable/collection_detail_owned_edit_button.xml new file mode 100755 index 0000000..5e02454 --- /dev/null +++ b/src/main/res/drawable/collection_detail_owned_edit_button.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/collection_follow.xml b/src/main/res/drawable/collection_follow.xml new file mode 100755 index 0000000..1a6f404 --- /dev/null +++ b/src/main/res/drawable/collection_follow.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/comment_field_background.xml b/src/main/res/drawable/comment_field_background.xml new file mode 100755 index 0000000..ae07767 --- /dev/null +++ b/src/main/res/drawable/comment_field_background.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/comment_selector.xml b/src/main/res/drawable/comment_selector.xml new file mode 100755 index 0000000..37beb05 --- /dev/null +++ b/src/main/res/drawable/comment_selector.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/res/drawable/fab_label_background.xml b/src/main/res/drawable/fab_label_background.xml new file mode 100755 index 0000000..75f6288 --- /dev/null +++ b/src/main/res/drawable/fab_label_background.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/favorite_selector.xml b/src/main/res/drawable/favorite_selector.xml new file mode 100755 index 0000000..cafcfdd --- /dev/null +++ b/src/main/res/drawable/favorite_selector.xml @@ -0,0 +1,30 @@ + + + + + + + + diff --git a/src/main/res/drawable/favorite_selector_list.xml b/src/main/res/drawable/favorite_selector_list.xml new file mode 100755 index 0000000..6c045c4 --- /dev/null +++ b/src/main/res/drawable/favorite_selector_list.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/flamingo_rounded_button.xml b/src/main/res/drawable/flamingo_rounded_button.xml new file mode 100755 index 0000000..09163ed --- /dev/null +++ b/src/main/res/drawable/flamingo_rounded_button.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/gallery_selector.xml b/src/main/res/drawable/gallery_selector.xml new file mode 100755 index 0000000..b2d0fee --- /dev/null +++ b/src/main/res/drawable/gallery_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/google_signin_btn.xml b/src/main/res/drawable/google_signin_btn.xml new file mode 100755 index 0000000..3871038 --- /dev/null +++ b/src/main/res/drawable/google_signin_btn.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/image_caption_text.xml b/src/main/res/drawable/image_caption_text.xml new file mode 100755 index 0000000..b5d82a2 --- /dev/null +++ b/src/main/res/drawable/image_caption_text.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/interest_btn.xml b/src/main/res/drawable/interest_btn.xml new file mode 100755 index 0000000..f0ebc7c --- /dev/null +++ b/src/main/res/drawable/interest_btn.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/interest_frame.xml b/src/main/res/drawable/interest_frame.xml new file mode 100755 index 0000000..0c45202 --- /dev/null +++ b/src/main/res/drawable/interest_frame.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/interest_image_frame.xml b/src/main/res/drawable/interest_image_frame.xml new file mode 100755 index 0000000..a89fc50 --- /dev/null +++ b/src/main/res/drawable/interest_image_frame.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/mercury_bottom_rounded.xml b/src/main/res/drawable/mercury_bottom_rounded.xml new file mode 100755 index 0000000..0ee6399 --- /dev/null +++ b/src/main/res/drawable/mercury_bottom_rounded.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/mysin_rounded_button.xml b/src/main/res/drawable/mysin_rounded_button.xml new file mode 100755 index 0000000..57fc1af --- /dev/null +++ b/src/main/res/drawable/mysin_rounded_button.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/notif_tab.xml b/src/main/res/drawable/notif_tab.xml new file mode 100755 index 0000000..44ff461 --- /dev/null +++ b/src/main/res/drawable/notif_tab.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/option_drawable.xml b/src/main/res/drawable/option_drawable.xml new file mode 100755 index 0000000..d0d6b80 --- /dev/null +++ b/src/main/res/drawable/option_drawable.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/option_left_drawable.xml b/src/main/res/drawable/option_left_drawable.xml new file mode 100755 index 0000000..9481b7c --- /dev/null +++ b/src/main/res/drawable/option_left_drawable.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/option_right_drawable.xml b/src/main/res/drawable/option_right_drawable.xml new file mode 100755 index 0000000..49be119 --- /dev/null +++ b/src/main/res/drawable/option_right_drawable.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/options_background.xml b/src/main/res/drawable/options_background.xml new file mode 100755 index 0000000..23d29e6 --- /dev/null +++ b/src/main/res/drawable/options_background.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/outlined_boulder_button.xml b/src/main/res/drawable/outlined_boulder_button.xml new file mode 100755 index 0000000..13568b7 --- /dev/null +++ b/src/main/res/drawable/outlined_boulder_button.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/poinila_frame.xml b/src/main/res/drawable/poinila_frame.xml new file mode 100755 index 0000000..24b8f47 --- /dev/null +++ b/src/main/res/drawable/poinila_frame.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/post_general_image.xml b/src/main/res/drawable/post_general_image.xml new file mode 100755 index 0000000..9c4e7f7 --- /dev/null +++ b/src/main/res/drawable/post_general_image.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/profile_frame.xml b/src/main/res/drawable/profile_frame.xml new file mode 100755 index 0000000..5c56570 --- /dev/null +++ b/src/main/res/drawable/profile_frame.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/profile_info_circle.xml b/src/main/res/drawable/profile_info_circle.xml new file mode 100755 index 0000000..248b8ae --- /dev/null +++ b/src/main/res/drawable/profile_info_circle.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/radio_button_selector.xml b/src/main/res/drawable/radio_button_selector.xml new file mode 100755 index 0000000..4e820ae --- /dev/null +++ b/src/main/res/drawable/radio_button_selector.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/repost_selector.xml b/src/main/res/drawable/repost_selector.xml new file mode 100755 index 0000000..126bc7f --- /dev/null +++ b/src/main/res/drawable/repost_selector.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/res/drawable/rounded_rect_noble_tag.xml b/src/main/res/drawable/rounded_rect_noble_tag.xml new file mode 100755 index 0000000..545f643 --- /dev/null +++ b/src/main/res/drawable/rounded_rect_noble_tag.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/src/main/res/drawable/search_btn_background.xml b/src/main/res/drawable/search_btn_background.xml new file mode 100755 index 0000000..ac520ab --- /dev/null +++ b/src/main/res/drawable/search_btn_background.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/search_field_background.xml b/src/main/res/drawable/search_field_background.xml new file mode 100755 index 0000000..54e0b42 --- /dev/null +++ b/src/main/res/drawable/search_field_background.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/search_selector.xml b/src/main/res/drawable/search_selector.xml new file mode 100755 index 0000000..9997c30 --- /dev/null +++ b/src/main/res/drawable/search_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/send_comment_selector_background.xml b/src/main/res/drawable/send_comment_selector_background.xml new file mode 100755 index 0000000..052480c --- /dev/null +++ b/src/main/res/drawable/send_comment_selector_background.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/send_selector.xml b/src/main/res/drawable/send_selector.xml new file mode 100755 index 0000000..c28041b --- /dev/null +++ b/src/main/res/drawable/send_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/snackbar_action.xml b/src/main/res/drawable/snackbar_action.xml new file mode 100755 index 0000000..0b19a98 --- /dev/null +++ b/src/main/res/drawable/snackbar_action.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/tab_collection_selector.xml b/src/main/res/drawable/tab_collection_selector.xml new file mode 100755 index 0000000..908d0bc --- /dev/null +++ b/src/main/res/drawable/tab_collection_selector.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/res/drawable/tab_dashboard_selector.xml b/src/main/res/drawable/tab_dashboard_selector.xml new file mode 100755 index 0000000..9baa36b --- /dev/null +++ b/src/main/res/drawable/tab_dashboard_selector.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/res/drawable/tab_notification_number.xml b/src/main/res/drawable/tab_notification_number.xml new file mode 100755 index 0000000..200e786 --- /dev/null +++ b/src/main/res/drawable/tab_notification_number.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/tab_notification_selector.xml b/src/main/res/drawable/tab_notification_selector.xml new file mode 100755 index 0000000..64e8e15 --- /dev/null +++ b/src/main/res/drawable/tab_notification_selector.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/res/drawable/tab_profile_selector.xml b/src/main/res/drawable/tab_profile_selector.xml new file mode 100755 index 0000000..2d13da9 --- /dev/null +++ b/src/main/res/drawable/tab_profile_selector.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/res/drawable/tab_search_selector.xml b/src/main/res/drawable/tab_search_selector.xml new file mode 100755 index 0000000..f7e10e0 --- /dev/null +++ b/src/main/res/drawable/tab_search_selector.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/res/drawable/video_play_btn.xml b/src/main/res/drawable/video_play_btn.xml new file mode 100755 index 0000000..5953c6b --- /dev/null +++ b/src/main/res/drawable/video_play_btn.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/video_play_btn_background.xml b/src/main/res/drawable/video_play_btn_background.xml new file mode 100755 index 0000000..fa1f1f0 --- /dev/null +++ b/src/main/res/drawable/video_play_btn_background.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/video_progress.xml b/src/main/res/drawable/video_progress.xml new file mode 100755 index 0000000..74cb631 --- /dev/null +++ b/src/main/res/drawable/video_progress.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/res/drawable/west_side_rounded_button.xml b/src/main/res/drawable/west_side_rounded_button.xml new file mode 100755 index 0000000..dd29c6c --- /dev/null +++ b/src/main/res/drawable/west_side_rounded_button.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/activity_change_password.xml b/src/main/res/layout/activity_change_password.xml new file mode 100755 index 0000000..c7ad16c --- /dev/null +++ b/src/main/res/layout/activity_change_password.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/activity_circle_management.xml b/src/main/res/layout/activity_circle_management.xml new file mode 100755 index 0000000..dd8c66a --- /dev/null +++ b/src/main/res/layout/activity_circle_management.xml @@ -0,0 +1,15 @@ + + + + diff --git a/src/main/res/layout/activity_comments.xml b/src/main/res/layout/activity_comments.xml new file mode 100755 index 0000000..cd53e36 --- /dev/null +++ b/src/main/res/layout/activity_comments.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/activity_crop_image.xml b/src/main/res/layout/activity_crop_image.xml new file mode 100755 index 0000000..84624b4 --- /dev/null +++ b/src/main/res/layout/activity_crop_image.xml @@ -0,0 +1,79 @@ + + + + +

wq|JEHbs#~Ou9&skU3wq<;w=$cg}g!qiUg0; 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 HJ@S75WgAy} literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-nodpi/help_profile.jpg b/src/main/res/drawable-nodpi/help_profile.jpg new file mode 100755 index 0000000000000000000000000000000000000000..c5761b35f5bb2fd026612a20a62a0858da0c4049 GIT binary patch literal 94525 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 z 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