From 0fec5c03e2bfc4cec7d2ec3ce93d1e55cd21543d Mon Sep 17 00:00:00 2001 From: webshunternet Date: Sat, 7 Sep 2024 07:58:50 +0700 Subject: [PATCH] first commit --- .DS_Store | Bin 0 -> 10244 bytes .flutter-plugins | 119 + .flutter-plugins-dependencies | 1 + .gitignore | 6 + analysis_options.yaml | 219 ++ assets/.DS_Store | Bin 0 -> 14340 bytes assets/AppIcon/.DS_Store | Bin 0 -> 6148 bytes assets/AppIcon/icon.png | Bin 0 -> 6958 bytes assets/chat_background/.DS_Store | Bin 0 -> 6148 bytes assets/chat_background/__light.jpg | Bin 0 -> 105079 bytes assets/chat_background/dark.jpg | Bin 0 -> 187431 bytes assets/chat_background/light.svg | 1413 +++++++++ assets/city.jpg | Bin 0 -> 1669840 bytes assets/fonts/Manrope-Bold.ttf | Bin 0 -> 96364 bytes assets/fonts/Manrope-ExtraBold.ttf | Bin 0 -> 97116 bytes assets/fonts/Manrope-ExtraLight.ttf | Bin 0 -> 96304 bytes assets/fonts/Manrope-Light.ttf | Bin 0 -> 96312 bytes assets/fonts/Manrope-Medium.ttf | Bin 0 -> 96492 bytes assets/fonts/Manrope-Regular.ttf | Bin 0 -> 96412 bytes assets/fonts/Manrope-SemiBold.ttf | Bin 0 -> 96528 bytes assets/fonts/Manrope.ttf | Bin 0 -> 164936 bytes assets/languages/.DS_Store | Bin 0 -> 6148 bytes assets/languages/en.json | 0 assets/languages/template.json | 374 +++ assets/lottie/.DS_Store | Bin 0 -> 6148 bytes assets/lottie/_nodatafound.json | 1 + assets/lottie/loading.json | 1526 ++++++++++ assets/lottie/loading_white.json | 1526 ++++++++++ assets/lottie/maintenancemode.json | 1 + assets/lottie/nodatafound.json | 1 + assets/lottie/onbo_a.json | 1 + assets/lottie/onbo_b.json | 1 + assets/lottie/onbo_c.json | 1 + assets/map.png | Bin 0 -> 334089 bytes assets/riveAnimations/add.rev | Bin 0 -> 79438 bytes assets/riveAnimations/backupFIle.rev | Bin 0 -> 130328 bytes assets/riveAnimations/rive_animation.riv | Bin 0 -> 32306 bytes assets/svg/.DS_Store | Bin 0 -> 10244 bytes assets/svg/Fallback/homeLogo.svg | 4 + assets/svg/Fallback/placeholder.svg | 16 + assets/svg/Fallback/splash.svg | 10 + assets/svg/Logo/company_logo.svg | 65 + assets/svg/MultiColorSvg/.DS_Store | Bin 0 -> 6148 bytes .../svg/MultiColorSvg/delete_illustrator.svg | 346 +++ .../svg/MultiColorSvg/logout_illustrator.svg | 224 ++ assets/svg/MultiColorSvg/no_chat_found.svg | 113 + .../no_data_found_illustrator.svg | 97 + .../MultiColorSvg/no_internet_illustrator.svg | 179 ++ assets/svg/MultiColorSvg/propertysubmited.svg | 105 + .../MultiColorSvg/something_went_wrong.svg | 230 ++ assets/svg/about_us.svg | 4 + assets/svg/area_convertor.svg | 7 + assets/svg/arrow_left.svg | 3 + assets/svg/arrow_right.svg | 3 + assets/svg/article.svg | 7 + assets/svg/bin.svg | 87 + assets/svg/calender.svg | 3 + assets/svg/call.svg | 3 + assets/svg/contact_us.svg | 6 + assets/svg/dark_theme.svg | 14 + assets/svg/defaultProfileIcon.svg | 3 + assets/svg/delete_account.svg | 5 + assets/svg/down_arrow.svg | 3 + assets/svg/edit.svg | 5 + assets/svg/filter.svg | 8 + assets/svg/for_rent.svg | 15 + assets/svg/for_sale.svg | 11 + assets/svg/header_curve.svg | 10 + assets/svg/home.svg | 3 + assets/svg/icon_arrow_left.svg | 3 + assets/svg/inactive_chat.svg | 11 + assets/svg/interested.svg | 9 + assets/svg/language.svg | 11 + assets/svg/like.svg | 4 + assets/svg/like_fill.svg | 4 + assets/svg/location.svg | 7 + assets/svg/logout.svg | 5 + assets/svg/magic.svg | 29 + assets/svg/message.svg | 12 + assets/svg/notification.svg | 9 + assets/svg/other.svg | 3 + assets/svg/privacy.svg | 5 + assets/svg/privacypolicy.svg | 4 + assets/svg/profile.svg | 5 + assets/svg/promoted.svg | 5 + assets/svg/properties.svg | 7 + assets/svg/properties_icon.svg | 27 + assets/svg/propertymap.svg | 8 + assets/svg/rate_us.svg | 4 + assets/svg/report.svg | 19 + assets/svg/report_dark.svg | 19 + assets/svg/search.svg | 6 + assets/svg/share.svg | 6 + assets/svg/subscription.svg | 9 + assets/svg/t_c.svg | 5 + assets/svg/transaction.svg | 8 + assets/svg/upcoming_projects_icon.svg | 29 + assets/svg/update.svg | 7 + assets/svg/v360.svg | 10 + assets/svg/warning.svg | 1 + assets/svg/whatsapp.svg | 24 + devtools_options.yaml | 2 + flutter_launcher_icons.yaml | 4 + lib/.DS_Store | Bin 0 -> 8196 bytes lib/Ui/.DS_Store | Bin 0 -> 6148 bytes lib/Ui/Theme/theme.dart | 140 + lib/Ui/screens/.DS_Store | Bin 0 -> 6148 bytes .../create_advertisement_screen.dart | 392 +++ .../Advertisement/my_advertisment_screen.dart | 298 ++ lib/Ui/screens/Articles/article_details.dart | 89 + lib/Ui/screens/Articles/articles_screen.dart | 296 ++ .../ChatNew/MessageTypes/audio_message.dart | 400 +++ .../ChatNew/MessageTypes/blueprint.dart | 49 + .../ChatNew/MessageTypes/file_message.dart | 163 ++ .../ChatNew/MessageTypes/registerar.dart | 223 ++ .../ChatNew/MessageTypes/text_and_file.dart | 478 +++ .../ChatNew/MessageTypes/text_message.dart | 139 + lib/Ui/screens/ChatNew/model.dart | 119 + lib/Ui/screens/Converter/area_converter.dart | 231 ++ .../Cubits/property_list_cubit_dashboard.dart | 54 + .../Dashboard/Models/dashboard_property.dart | 568 ++++ .../Repository/dashboard_repository.dart | 70 + lib/Ui/screens/Dashboard/dashbord.dart | 242 ++ lib/Ui/screens/Dashboard/property_list.dart | 265 ++ lib/Ui/screens/Dashboard/widgets/mTabbar.dart | 220 ++ lib/Ui/screens/Personalized/.DS_Store | Bin 0 -> 6148 bytes .../personalized_property_screen.dart | 253 ++ .../segments/choose_category.dart | 101 + .../Personalized/segments/choose_nearby.dart | 128 + .../Personalized/segments/other_interest.dart | 352 +++ .../Report/report_property_screen.dart | 196 ++ .../screens/analytics/analytics_screen.dart | 61 + lib/Ui/screens/auth/login_screen.dart | 973 +++++++ .../screens/chat/chatAudio/audio_state.dart | 6 + lib/Ui/screens/chat/chatAudio/globals.dart | 16 + .../chat/chatAudio/widgets/audio_bubble.dart | 489 ++++ .../chat/chatAudio/widgets/chat_widget.dart | 446 +++ .../chat/chatAudio/widgets/flow_shader.dart | 101 + .../chatAudio/widgets/lottie_animation.dart | 44 + .../widgets/parts/attachment.part.dart | 158 + .../widgets/parts/linkpreview.part.dart | 77 + .../widgets/parts/recordmsg.part.dart | 98 + .../chat/chatAudio/widgets/record_button.dart | 386 +++ lib/Ui/screens/chat/chat_list_screen.dart | 405 +++ lib/Ui/screens/chat/chat_screen.dart | 1000 +++++++ lib/Ui/screens/favorites_screen.dart | 245 ++ lib/Ui/screens/filter_screen.dart | 773 +++++ .../screens/home/HomeSegments/sections.dart | 0 .../screens/home/Widgets/category_card.dart | 73 + lib/Ui/screens/home/Widgets/city_card.dart | 15 + .../home/Widgets/city_heading_card.dart | 62 + lib/Ui/screens/home/Widgets/header_card.dart | 43 + lib/Ui/screens/home/Widgets/homeListener.dart | 198 ++ .../home/Widgets/home_profile_image_card.dart | 102 + lib/Ui/screens/home/Widgets/home_search.dart | 93 + .../screens/home/Widgets/home_shimmers.dart | 163 ++ .../screens/home/Widgets/location_widget.dart | 153 + .../home/Widgets/project_card_horizontal.dart | 184 ++ .../home/Widgets/property_card_big.dart | 275 ++ .../home/Widgets/property_gradient_card.dart | 275 ++ .../Widgets/property_horizontal_card.dart | 363 +++ lib/Ui/screens/home/category_list.dart | 162 ++ .../screens/home/change_language_screen.dart | 98 + .../screens/home/city_properties_screen.dart | 24 + lib/Ui/screens/home/home_screen.dart | 1441 +++++++++ lib/Ui/screens/home/projects.dart | 10 + lib/Ui/screens/home/search_screen.dart | 379 +++ lib/Ui/screens/home/slider_widget.dart | 203 ++ .../home/view_most_liked_properties.dart | 123 + .../home/view_most_viewed_properties.dart | 122 + .../screens/home/view_nearby_properties.dart | 113 + .../home/view_promoted_properties.dart | 126 + lib/Ui/screens/main_activity.dart | 867 ++++++ lib/Ui/screens/map/choose_location_map.dart | 598 ++++ lib/Ui/screens/map/property_map_screen.dart | 508 ++++ .../screens/onboarding/onboarding_screen.dart | 302 ++ lib/Ui/screens/openmap/mymaps.dart | 5 + .../project/create/add_project_details.dart | 650 +++++ .../create/add_project_meta_details.dart | 177 ++ .../project/create/manage_floor_plans.dart | 272 ++ .../project/view/project_details_screen.dart | 853 ++++++ .../project/view/project_list_screen.dart | 221 ++ .../add_property_details.dart | 1409 +++++++++ .../AddProperyScreens/property_success.dart | 84 + .../select_outdoor_facility.dart | 597 ++++ .../select_type_of_property.dart | 308 ++ .../set_property_parameters.dart | 363 +++ .../Property tab/favorites_property_tab.dart | 220 ++ .../Property tab/sell_rent_screen.dart | 267 ++ .../proprties/my_properties_screen.dart | 245 ++ lib/Ui/screens/proprties/properties_list.dart | 320 ++ .../screens/proprties/property_details.dart | 2585 +++++++++++++++++ lib/Ui/screens/proprties/viewAll.dart | 164 ++ .../widgets/report_property_widget.dart | 125 + lib/Ui/screens/settings/contact_us.dart | 337 +++ .../screens/settings/notification_detail.dart | 70 + lib/Ui/screens/settings/notifications.dart | 258 ++ lib/Ui/screens/settings/profile_setting.dart | 108 + lib/Ui/screens/splash_screen.dart | 331 +++ .../screens/subscription/packages_list.dart | 898 ++++++ .../screens/subscription/payment_gatways.dart | 266 ++ .../subscription/subscribe_screen.dart | 382 +++ .../subscription/subscription_status.dart | 15 + .../transaction_history_screen.dart | 291 ++ .../widget/current_package_card.dart | 358 +++ .../subscription/widget/package_tile.dart | 216 ++ .../widget/subscripton_feature_line.dart | 65 + lib/Ui/screens/userprofile/edit_profile.dart | 686 +++++ .../screens/userprofile/profile_screen.dart | 909 ++++++ .../AnimatedRoutes/blur_page_route.dart | 74 + .../AnimatedRoutes/scale_up_route.dart | 61 + .../AnimatedRoutes/transparant_route.dart | 43 + .../choose_location_bottomsheet.dart | 186 ++ .../widgets/DynamicField/dynamic_field.dart | 1329 +++++++++ .../screens/widgets/Erros/no_data_found.dart | 49 + lib/Ui/screens/widgets/Erros/no_internet.dart | 60 + .../widgets/Erros/something_went_wrong.dart | 95 + .../widgets/adaptive_image_picker.dart | 395 +++ lib/Ui/screens/widgets/all_gallary_image.dart | 71 + .../screens/widgets/blurred_dialoge_box.dart | 449 +++ lib/Ui/screens/widgets/custom_inkWell.dart | 38 + .../widgets/custom_text_form_field.dart | 118 + .../widgets/full_screen_image_view.dart | 197 ++ lib/Ui/screens/widgets/gallery_view.dart | 80 + .../widgets/gradient_image_shadow.dart | 52 + lib/Ui/screens/widgets/image_cropper.dart | 43 + .../screens/widgets/like_button_widget.dart | 128 + lib/Ui/screens/widgets/maintenance_mode.dart | 39 + lib/Ui/screens/widgets/my_maps.dart | 55 + .../screens/widgets/panaroma_image_view.dart | 38 + lib/Ui/screens/widgets/promoted_widget.dart | 52 + lib/Ui/screens/widgets/read_more_text.dart | 85 + .../widgets/shimmerLoadingContainer.dart | 32 + lib/Ui/screens/widgets/sizedBoxes.dart | 1 + lib/Ui/screens/widgets/video_view_screen.dart | 50 + .../widgets/youtube_player_widget.dart | 56 + lib/app/analytics_routes.dart | 18 + lib/app/app.dart | 224 ++ lib/app/app_localization.dart | 75 + lib/app/app_theme.dart | 49 + lib/app/default_app_setting.dart | 102 + lib/app/register_cubits.dart | 66 + lib/app/routes.dart | 251 ++ lib/data/.DS_Store | Bin 0 -> 6148 bytes .../advertisement_repository.dart | 27 + .../Repositories/articles_repository.dart | 36 + lib/data/Repositories/auth_repository.dart | 82 + .../Repositories/category_repository.dart | 24 + lib/data/Repositories/chat_repository.dart | 95 + lib/data/Repositories/cities_repository.dart | 19 + .../Repositories/favourites_repository.dart | 39 + .../Repositories/interest_repository.dart | 33 + .../Repositories/location_repository.dart | 102 + lib/data/Repositories/map.dart | 69 + .../notifications_repository_repository.dart | 33 + lib/data/Repositories/outdoorfacility.dart | 16 + .../personalized_feed_repository.dart | 81 + lib/data/Repositories/project_repository.dart | 99 + .../Repositories/property_repository.dart | 366 +++ .../report_property_repository.dart | 30 + .../Repositories/subscription_repository.dart | 75 + lib/data/Repositories/system_repository.dart | 26 + lib/data/Repositories/transaction.dart | 19 + lib/data/cubits/.DS_Store | Bin 0 -> 6148 bytes .../Interested/get_interested_user_cubit.dart | 111 + .../add_update_personalized_interest.dart | 52 + .../fetch_personalized_properties.dart | 240 ++ .../fetch_property_report_reason_list.dart | 132 + .../cubits/Report/property_report_cubit.dart | 44 + .../cubits/Utility/dynamic_fields_cubit.dart | 9 + .../Utility/fetch_transactions_cubit.dart | 109 + .../google_place_autocomplate_cubit.dart | 53 + lib/data/cubits/Utility/house_type_cubit.dart | 75 + lib/data/cubits/Utility/like_properties.dart | 86 + .../cubits/Utility/proeprty_edit_global.dart | 30 + lib/data/cubits/auth/auth_cubit.dart | 147 + lib/data/cubits/auth/auth_state_cubit.dart | 30 + lib/data/cubits/auth/login_cubit.dart | 63 + lib/data/cubits/auth/send_otp_cubit.dart | 85 + lib/data/cubits/auth/verify_otp_cubit.dart | 71 + .../cubits/category/fetch_category_cubit.dart | 258 ++ .../category/fetch_cities_category.dart | 141 + .../chatCubits/delete_message_cubit.dart | 42 + .../cubits/chatCubits/get_chat_users.dart | 172 ++ .../cubits/chatCubits/load_chat_messages.dart | 125 + lib/data/cubits/chatCubits/send_message.dart | 81 + lib/data/cubits/company_cubit.dart | 70 + .../cubits/delete_advertisment_cubit.dart | 34 + lib/data/cubits/enquiry/enquiry_cubit.dart | 73 + lib/data/cubits/enquiry/store_enqury_id.dart | 34 + .../favorite/add_to_favorite_cubit.dart | 60 + .../favorite/fetch_favorites_cubit.dart | 132 + .../cubits/favorite/remove_favoriteubit.dart | 39 + lib/data/cubits/fetch_articles_cubit.dart | 111 + .../cubits/fetch_notifications_cubit.dart | 110 + .../fetch_outdoor_facility_list.dart | 85 + lib/data/cubits/profile_setting_cubit.dart | 150 + .../cubits/project/all_projects_screen.dart | 115 + .../cubits/project/delete_project_cubit.dart | 32 + .../project/fetchMyProjectsListCubit.dart | 133 + lib/data/cubits/project/fetch_projects.dart | 111 + .../cubits/project/manage_project_cubit.dart | 41 + .../change_interest_in_property_cubit.dart | 61 + .../property/create_advertisement_cubit.dart | 59 + .../property/create_property_cubit.dart | 52 + .../property/delete_property_cubit.dart | 32 + .../property/favorite_id_properties.dart | 28 + .../property/fetch_city_property_list.dart | 145 + .../property/fetch_home_properties_cubit.dart | 117 + .../property/fetch_most_liked_properties.dart | 273 ++ .../fetch_most_viewed_properties_cubit.dart | 267 ++ .../fetch_my_promoted_propertys_cubit.dart | 140 + .../property/fetch_my_properties_cubit.dart | 182 ++ .../property/fetch_nearby_property_cubit.dart | 266 ++ .../fetch_promoted_properties_cubit.dart | 274 ++ .../cubits/property/fetch_property_cubit.dart | 20 + .../fetch_property_from_category_cubit.dart | 138 + .../property/fetch_recent_properties.dart | 251 ++ .../fetch_top_rated_properties_cubit.dart | 73 + .../cubits/property/home_property_cubit.dart | 1 + lib/data/cubits/property/myPropHydrated.dart | 268 ++ lib/data/cubits/property/property_cubit.dart | 67 + .../property/search_property_cubit.dart | 130 + .../property/set_property_view_cubit.dart | 33 + .../property/top_viewed_property_cubit.dart | 67 + .../property/update_property_status.dart | 36 + lib/data/cubits/slider_cubit.dart | 181 ++ .../subscription/assign_free_package.dart | 32 + .../cubits/subscription/assign_package.dart | 36 + .../fetch_subscription_packages_cubit.dart | 114 + ...get_subsctiption_package_limits_cubit.dart | 46 + lib/data/cubits/system/app_theme_cubit.dart | 38 + .../cubits/system/delete_account_cubit.dart | 67 + .../cubits/system/fetch_language_cubit.dart | 68 + .../system/fetch_system_settings_cubit.dart | 200 ++ .../cubits/system/get_api_keys_cubit.dart | 129 + lib/data/cubits/system/language_cubit.dart | 39 + .../cubits/system/notification_cubit.dart | 72 + lib/data/cubits/system/user_details.dart | 37 + lib/data/helper/custom_exception.dart | 34 + lib/data/helper/design_configs.dart | 24 + lib/data/helper/designs.dart | 244 ++ lib/data/helper/slide_animation.dart | 108 + lib/data/helper/widgets.dart | 54 + .../Personalized/personalized_settings.dart | 54 + .../model/ReportProperty/reason_model.dart | 20 + lib/data/model/app_language.dart | 10 + lib/data/model/app_settings_datamodel.dart | 66 + lib/data/model/article_model.dart | 29 + lib/data/model/category.dart | 64 + lib/data/model/chat/chat_message_modal.dart | 48 + lib/data/model/chat/chated_user_model.dart | 52 + lib/data/model/city_model.dart | 39 + lib/data/model/company.dart | 36 + lib/data/model/data_output.dart | 33 + lib/data/model/enquiry_status.dart | 1 + lib/data/model/gallery.dart | 1 + lib/data/model/google_place_model.dart | 95 + .../model/google_place_predictions_model.dart | 54 + lib/data/model/home_slider.dart | 52 + lib/data/model/house_type.dart | 13 + lib/data/model/interested_user_model.dart | 49 + lib/data/model/notification_data.dart | 39 + lib/data/model/outdoor_facility.dart | 36 + lib/data/model/project_model.dart | 279 ++ lib/data/model/property_model.dart | 582 ++++ lib/data/model/propery_filter_model.dart | 109 + .../model/subscription_pacakage_model.dart | 91 + .../model/subscription_package_limit.dart | 42 + lib/data/model/system_settings_model.dart | 49 + lib/data/model/transaction_model.dart | 50 + lib/data/model/user_model.dart | 86 + lib/exports/main_export.dart | 64 + lib/firebase_options.dart | 78 + lib/main.dart | 44 + lib/sandBox/language.dart | 360 +++ lib/sandBox/language_overlay_changer.dart | 72 + lib/sandBox/playground.dart | 77 + lib/sandBox/section.dart | 54 + lib/sandBox/theme_overlay_toggler.dart | 67 + lib/settings.dart | 138 + lib/utils/.DS_Store | Bin 0 -> 12292 bytes lib/utils/AdMob/bannerAdLoadWidget.dart | 73 + lib/utils/AdMob/interstitialAdManager.dart | 111 + lib/utils/AppIcon.dart | 99 + lib/utils/CloudState/cloud_state.dart | 185 ++ .../CurrencyConvertor/currentyConvertor.dart | 36 + lib/utils/DeepLink/blueprint.dart | 31 + lib/utils/DeepLink/nativeDeepLinkManager.dart | 105 + lib/utils/Encryption/rsa.dart | 38 + lib/utils/Extensions/extensions.dart | 6 + lib/utils/Extensions/lib/adaptive_type.dart | 38 + lib/utils/Extensions/lib/build_context.dart | 18 + lib/utils/Extensions/lib/color.dart | 25 + lib/utils/Extensions/lib/date.dart | 13 + lib/utils/Extensions/lib/iterable.dart | 10 + lib/utils/Extensions/lib/list.dart | 65 + lib/utils/Extensions/lib/map.dart | 71 + lib/utils/Extensions/lib/num_extention.dart | 19 + lib/utils/Extensions/lib/string.dart | 39 + .../Extensions/lib/textWidgetExtention.dart | 108 + lib/utils/Extensions/lib/translate.dart | 9 + lib/utils/Geocoding/geocoding.dart | 1 + lib/utils/LiquidIndicator/.DS_Store | Bin 0 -> 6148 bytes .../liquid_progress_indicator.dart | 5 + .../liquid_circular_progress_indicator.dart | 134 + .../src/liquid_custom_progress_indicator.dart | 105 + .../src/liquid_linear_progress_indicator.dart | 159 + lib/utils/LiquidIndicator/src/wave.dart | 120 + lib/utils/Login/AppleLogin/apple_login.dart | 37 + lib/utils/Login/Disclaimer.txt | 5 + lib/utils/Login/EmailLogin/email_login.dart | 35 + lib/utils/Login/GoogleLogin/google_login.dart | 56 + lib/utils/Login/PhoneLogin/phone_login.dart | 54 + lib/utils/Login/lib/login_status.dart | 17 + lib/utils/Login/lib/login_system.dart | 130 + lib/utils/Login/lib/payloads.dart | 37 + lib/utils/Lottie/lottieEditor.dart | 258 ++ lib/utils/Network/.DS_Store | Bin 0 -> 6148 bytes .../network_request_interseptor.dart | 69 + .../Interseptors/throttelIntercepter.dart | 49 + lib/utils/Network/apiCallTrigger.dart | 15 + lib/utils/Network/networkAvailability.dart | 16 + .../Notification/awsomeNotification.dart | 213 ++ .../Notification/chat_message_handler.dart | 146 + .../Notification/notification_service.dart | 217 ++ .../VideoPlayer/video_player_widget.dart | 88 + lib/utils/VideoPlayer/ytb.dart | 44 + lib/utils/api.dart | 310 ++ lib/utils/area_converter.dart | 322 ++ lib/utils/constant.dart | 205 ++ lib/utils/context_menu.dart | 97 + lib/utils/convert.dart | 45 + lib/utils/customHeroAnimation.dart | 194 ++ lib/utils/custom_validator.dart | 17 + lib/utils/deeplinkManager.dart | 77 + lib/utils/distance_calculator.dart | 43 + lib/utils/errorFilter.dart | 43 + lib/utils/guestChecker.dart | 92 + lib/utils/helper_utils.dart | 408 +++ lib/utils/hive_keys.dart | 26 + lib/utils/hive_utils.dart | 261 ++ lib/utils/imagePicker.dart | 155 + lib/utils/isolate_data_loader.dart | 54 + lib/utils/logger.dart | 81 + lib/utils/logger/server.dart | 1 + lib/utils/network_to_localsvg.dart | 88 + .../InAppPurchase/inAppPurchaseManager.dart | 134 + lib/utils/payment/gatways/paypal.dart | 110 + lib/utils/payment/gatways/paypal_pay.dart | 87 + lib/utils/payment/gatways/paystack_pay.dart | 96 + lib/utils/payment/gatways/razorpay_pay.dart | 88 + lib/utils/payment/gatways/stripe_pay.dart | 57 + lib/utils/payment/gatways/stripe_service.dart | 231 ++ lib/utils/payment/lib/gatway.dart | 11 + lib/utils/payment/lib/list_gatways.dart | 15 + lib/utils/payment/lib/payment.dart | 62 + lib/utils/payment/lib/payment_service.dart | 74 + lib/utils/payment/lib/purchase_package.dart | 34 + .../payment/lib/statefulwidget_extension.dart | 11 + lib/utils/responsiveSize.dart | 33 + ...xed_cross_axis_count_and_fixed_height.dart | 66 + lib/utils/string_extenstion.dart | 51 + lib/utils/strings.dart | 19 + lib/utils/typedefs.dart | 15 + lib/utils/ui_utils.dart | 661 +++++ lib/utils/validator.dart | 92 + pubspec.lock | 2432 ++++++++++++++++ pubspec.yaml | 176 ++ split.bat | 65 + split.sh | 84 + version.txt | 12 + web/favicon.png | Bin 0 -> 917 bytes web/icons/Icon-192.png | Bin 0 -> 5292 bytes web/icons/Icon-512.png | Bin 0 -> 8252 bytes web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes web/index.html | 58 + web/manifest.json | 35 + 479 files changed, 66365 insertions(+) create mode 100644 .DS_Store create mode 100644 .flutter-plugins create mode 100644 .flutter-plugins-dependencies create mode 100644 .gitignore create mode 100644 analysis_options.yaml create mode 100644 assets/.DS_Store create mode 100644 assets/AppIcon/.DS_Store create mode 100644 assets/AppIcon/icon.png create mode 100644 assets/chat_background/.DS_Store create mode 100644 assets/chat_background/__light.jpg create mode 100644 assets/chat_background/dark.jpg create mode 100644 assets/chat_background/light.svg create mode 100644 assets/city.jpg create mode 100644 assets/fonts/Manrope-Bold.ttf create mode 100644 assets/fonts/Manrope-ExtraBold.ttf create mode 100644 assets/fonts/Manrope-ExtraLight.ttf create mode 100644 assets/fonts/Manrope-Light.ttf create mode 100644 assets/fonts/Manrope-Medium.ttf create mode 100644 assets/fonts/Manrope-Regular.ttf create mode 100644 assets/fonts/Manrope-SemiBold.ttf create mode 100644 assets/fonts/Manrope.ttf create mode 100644 assets/languages/.DS_Store create mode 100644 assets/languages/en.json create mode 100644 assets/languages/template.json create mode 100644 assets/lottie/.DS_Store create mode 100644 assets/lottie/_nodatafound.json create mode 100644 assets/lottie/loading.json create mode 100644 assets/lottie/loading_white.json create mode 100644 assets/lottie/maintenancemode.json create mode 100644 assets/lottie/nodatafound.json create mode 100644 assets/lottie/onbo_a.json create mode 100644 assets/lottie/onbo_b.json create mode 100644 assets/lottie/onbo_c.json create mode 100644 assets/map.png create mode 100644 assets/riveAnimations/add.rev create mode 100644 assets/riveAnimations/backupFIle.rev create mode 100644 assets/riveAnimations/rive_animation.riv create mode 100644 assets/svg/.DS_Store create mode 100644 assets/svg/Fallback/homeLogo.svg create mode 100644 assets/svg/Fallback/placeholder.svg create mode 100644 assets/svg/Fallback/splash.svg create mode 100644 assets/svg/Logo/company_logo.svg create mode 100644 assets/svg/MultiColorSvg/.DS_Store create mode 100644 assets/svg/MultiColorSvg/delete_illustrator.svg create mode 100644 assets/svg/MultiColorSvg/logout_illustrator.svg create mode 100644 assets/svg/MultiColorSvg/no_chat_found.svg create mode 100644 assets/svg/MultiColorSvg/no_data_found_illustrator.svg create mode 100644 assets/svg/MultiColorSvg/no_internet_illustrator.svg create mode 100644 assets/svg/MultiColorSvg/propertysubmited.svg create mode 100644 assets/svg/MultiColorSvg/something_went_wrong.svg create mode 100644 assets/svg/about_us.svg create mode 100644 assets/svg/area_convertor.svg create mode 100644 assets/svg/arrow_left.svg create mode 100644 assets/svg/arrow_right.svg create mode 100644 assets/svg/article.svg create mode 100644 assets/svg/bin.svg create mode 100644 assets/svg/calender.svg create mode 100644 assets/svg/call.svg create mode 100644 assets/svg/contact_us.svg create mode 100644 assets/svg/dark_theme.svg create mode 100644 assets/svg/defaultProfileIcon.svg create mode 100644 assets/svg/delete_account.svg create mode 100644 assets/svg/down_arrow.svg create mode 100644 assets/svg/edit.svg create mode 100644 assets/svg/filter.svg create mode 100644 assets/svg/for_rent.svg create mode 100644 assets/svg/for_sale.svg create mode 100644 assets/svg/header_curve.svg create mode 100644 assets/svg/home.svg create mode 100644 assets/svg/icon_arrow_left.svg create mode 100644 assets/svg/inactive_chat.svg create mode 100644 assets/svg/interested.svg create mode 100644 assets/svg/language.svg create mode 100644 assets/svg/like.svg create mode 100644 assets/svg/like_fill.svg create mode 100644 assets/svg/location.svg create mode 100644 assets/svg/logout.svg create mode 100644 assets/svg/magic.svg create mode 100644 assets/svg/message.svg create mode 100644 assets/svg/notification.svg create mode 100644 assets/svg/other.svg create mode 100644 assets/svg/privacy.svg create mode 100644 assets/svg/privacypolicy.svg create mode 100644 assets/svg/profile.svg create mode 100644 assets/svg/promoted.svg create mode 100644 assets/svg/properties.svg create mode 100644 assets/svg/properties_icon.svg create mode 100644 assets/svg/propertymap.svg create mode 100644 assets/svg/rate_us.svg create mode 100644 assets/svg/report.svg create mode 100644 assets/svg/report_dark.svg create mode 100644 assets/svg/search.svg create mode 100644 assets/svg/share.svg create mode 100644 assets/svg/subscription.svg create mode 100644 assets/svg/t_c.svg create mode 100644 assets/svg/transaction.svg create mode 100644 assets/svg/upcoming_projects_icon.svg create mode 100644 assets/svg/update.svg create mode 100644 assets/svg/v360.svg create mode 100644 assets/svg/warning.svg create mode 100644 assets/svg/whatsapp.svg create mode 100644 devtools_options.yaml create mode 100644 flutter_launcher_icons.yaml create mode 100644 lib/.DS_Store create mode 100644 lib/Ui/.DS_Store create mode 100644 lib/Ui/Theme/theme.dart create mode 100644 lib/Ui/screens/.DS_Store create mode 100644 lib/Ui/screens/Advertisement/create_advertisement_screen.dart create mode 100644 lib/Ui/screens/Advertisement/my_advertisment_screen.dart create mode 100644 lib/Ui/screens/Articles/article_details.dart create mode 100644 lib/Ui/screens/Articles/articles_screen.dart create mode 100644 lib/Ui/screens/ChatNew/MessageTypes/audio_message.dart create mode 100644 lib/Ui/screens/ChatNew/MessageTypes/blueprint.dart create mode 100644 lib/Ui/screens/ChatNew/MessageTypes/file_message.dart create mode 100644 lib/Ui/screens/ChatNew/MessageTypes/registerar.dart create mode 100644 lib/Ui/screens/ChatNew/MessageTypes/text_and_file.dart create mode 100644 lib/Ui/screens/ChatNew/MessageTypes/text_message.dart create mode 100644 lib/Ui/screens/ChatNew/model.dart create mode 100644 lib/Ui/screens/Converter/area_converter.dart create mode 100644 lib/Ui/screens/Dashboard/Cubits/property_list_cubit_dashboard.dart create mode 100644 lib/Ui/screens/Dashboard/Models/dashboard_property.dart create mode 100644 lib/Ui/screens/Dashboard/Repository/dashboard_repository.dart create mode 100644 lib/Ui/screens/Dashboard/dashbord.dart create mode 100644 lib/Ui/screens/Dashboard/property_list.dart create mode 100644 lib/Ui/screens/Dashboard/widgets/mTabbar.dart create mode 100644 lib/Ui/screens/Personalized/.DS_Store create mode 100644 lib/Ui/screens/Personalized/personalized_property_screen.dart create mode 100644 lib/Ui/screens/Personalized/segments/choose_category.dart create mode 100644 lib/Ui/screens/Personalized/segments/choose_nearby.dart create mode 100644 lib/Ui/screens/Personalized/segments/other_interest.dart create mode 100644 lib/Ui/screens/Report/report_property_screen.dart create mode 100644 lib/Ui/screens/analytics/analytics_screen.dart create mode 100644 lib/Ui/screens/auth/login_screen.dart create mode 100644 lib/Ui/screens/chat/chatAudio/audio_state.dart create mode 100644 lib/Ui/screens/chat/chatAudio/globals.dart create mode 100644 lib/Ui/screens/chat/chatAudio/widgets/audio_bubble.dart create mode 100644 lib/Ui/screens/chat/chatAudio/widgets/chat_widget.dart create mode 100644 lib/Ui/screens/chat/chatAudio/widgets/flow_shader.dart create mode 100644 lib/Ui/screens/chat/chatAudio/widgets/lottie_animation.dart create mode 100644 lib/Ui/screens/chat/chatAudio/widgets/parts/attachment.part.dart create mode 100644 lib/Ui/screens/chat/chatAudio/widgets/parts/linkpreview.part.dart create mode 100644 lib/Ui/screens/chat/chatAudio/widgets/parts/recordmsg.part.dart create mode 100644 lib/Ui/screens/chat/chatAudio/widgets/record_button.dart create mode 100644 lib/Ui/screens/chat/chat_list_screen.dart create mode 100644 lib/Ui/screens/chat/chat_screen.dart create mode 100644 lib/Ui/screens/favorites_screen.dart create mode 100644 lib/Ui/screens/filter_screen.dart create mode 100644 lib/Ui/screens/home/HomeSegments/sections.dart create mode 100644 lib/Ui/screens/home/Widgets/category_card.dart create mode 100644 lib/Ui/screens/home/Widgets/city_card.dart create mode 100644 lib/Ui/screens/home/Widgets/city_heading_card.dart create mode 100644 lib/Ui/screens/home/Widgets/header_card.dart create mode 100644 lib/Ui/screens/home/Widgets/homeListener.dart create mode 100644 lib/Ui/screens/home/Widgets/home_profile_image_card.dart create mode 100644 lib/Ui/screens/home/Widgets/home_search.dart create mode 100644 lib/Ui/screens/home/Widgets/home_shimmers.dart create mode 100644 lib/Ui/screens/home/Widgets/location_widget.dart create mode 100644 lib/Ui/screens/home/Widgets/project_card_horizontal.dart create mode 100644 lib/Ui/screens/home/Widgets/property_card_big.dart create mode 100644 lib/Ui/screens/home/Widgets/property_gradient_card.dart create mode 100644 lib/Ui/screens/home/Widgets/property_horizontal_card.dart create mode 100644 lib/Ui/screens/home/category_list.dart create mode 100644 lib/Ui/screens/home/change_language_screen.dart create mode 100644 lib/Ui/screens/home/city_properties_screen.dart create mode 100644 lib/Ui/screens/home/home_screen.dart create mode 100644 lib/Ui/screens/home/projects.dart create mode 100644 lib/Ui/screens/home/search_screen.dart create mode 100644 lib/Ui/screens/home/slider_widget.dart create mode 100644 lib/Ui/screens/home/view_most_liked_properties.dart create mode 100644 lib/Ui/screens/home/view_most_viewed_properties.dart create mode 100644 lib/Ui/screens/home/view_nearby_properties.dart create mode 100644 lib/Ui/screens/home/view_promoted_properties.dart create mode 100644 lib/Ui/screens/main_activity.dart create mode 100644 lib/Ui/screens/map/choose_location_map.dart create mode 100644 lib/Ui/screens/map/property_map_screen.dart create mode 100644 lib/Ui/screens/onboarding/onboarding_screen.dart create mode 100644 lib/Ui/screens/openmap/mymaps.dart create mode 100644 lib/Ui/screens/project/create/add_project_details.dart create mode 100644 lib/Ui/screens/project/create/add_project_meta_details.dart create mode 100644 lib/Ui/screens/project/create/manage_floor_plans.dart create mode 100644 lib/Ui/screens/project/view/project_details_screen.dart create mode 100644 lib/Ui/screens/project/view/project_list_screen.dart create mode 100644 lib/Ui/screens/proprties/AddProperyScreens/add_property_details.dart create mode 100644 lib/Ui/screens/proprties/AddProperyScreens/property_success.dart create mode 100644 lib/Ui/screens/proprties/AddProperyScreens/select_outdoor_facility.dart create mode 100644 lib/Ui/screens/proprties/AddProperyScreens/select_type_of_property.dart create mode 100644 lib/Ui/screens/proprties/AddProperyScreens/set_property_parameters.dart create mode 100644 lib/Ui/screens/proprties/Property tab/favorites_property_tab.dart create mode 100644 lib/Ui/screens/proprties/Property tab/sell_rent_screen.dart create mode 100644 lib/Ui/screens/proprties/my_properties_screen.dart create mode 100644 lib/Ui/screens/proprties/properties_list.dart create mode 100644 lib/Ui/screens/proprties/property_details.dart create mode 100644 lib/Ui/screens/proprties/viewAll.dart create mode 100644 lib/Ui/screens/proprties/widgets/report_property_widget.dart create mode 100644 lib/Ui/screens/settings/contact_us.dart create mode 100644 lib/Ui/screens/settings/notification_detail.dart create mode 100644 lib/Ui/screens/settings/notifications.dart create mode 100644 lib/Ui/screens/settings/profile_setting.dart create mode 100644 lib/Ui/screens/splash_screen.dart create mode 100644 lib/Ui/screens/subscription/packages_list.dart create mode 100644 lib/Ui/screens/subscription/payment_gatways.dart create mode 100644 lib/Ui/screens/subscription/subscribe_screen.dart create mode 100644 lib/Ui/screens/subscription/subscription_status.dart create mode 100644 lib/Ui/screens/subscription/transaction_history_screen.dart create mode 100644 lib/Ui/screens/subscription/widget/current_package_card.dart create mode 100644 lib/Ui/screens/subscription/widget/package_tile.dart create mode 100644 lib/Ui/screens/subscription/widget/subscripton_feature_line.dart create mode 100644 lib/Ui/screens/userprofile/edit_profile.dart create mode 100644 lib/Ui/screens/userprofile/profile_screen.dart create mode 100644 lib/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart create mode 100644 lib/Ui/screens/widgets/AnimatedRoutes/scale_up_route.dart create mode 100644 lib/Ui/screens/widgets/AnimatedRoutes/transparant_route.dart create mode 100644 lib/Ui/screens/widgets/BottomSheets/choose_location_bottomsheet.dart create mode 100644 lib/Ui/screens/widgets/DynamicField/dynamic_field.dart create mode 100644 lib/Ui/screens/widgets/Erros/no_data_found.dart create mode 100644 lib/Ui/screens/widgets/Erros/no_internet.dart create mode 100644 lib/Ui/screens/widgets/Erros/something_went_wrong.dart create mode 100644 lib/Ui/screens/widgets/adaptive_image_picker.dart create mode 100644 lib/Ui/screens/widgets/all_gallary_image.dart create mode 100644 lib/Ui/screens/widgets/blurred_dialoge_box.dart create mode 100644 lib/Ui/screens/widgets/custom_inkWell.dart create mode 100644 lib/Ui/screens/widgets/custom_text_form_field.dart create mode 100644 lib/Ui/screens/widgets/full_screen_image_view.dart create mode 100644 lib/Ui/screens/widgets/gallery_view.dart create mode 100644 lib/Ui/screens/widgets/gradient_image_shadow.dart create mode 100644 lib/Ui/screens/widgets/image_cropper.dart create mode 100644 lib/Ui/screens/widgets/like_button_widget.dart create mode 100644 lib/Ui/screens/widgets/maintenance_mode.dart create mode 100644 lib/Ui/screens/widgets/my_maps.dart create mode 100644 lib/Ui/screens/widgets/panaroma_image_view.dart create mode 100644 lib/Ui/screens/widgets/promoted_widget.dart create mode 100644 lib/Ui/screens/widgets/read_more_text.dart create mode 100644 lib/Ui/screens/widgets/shimmerLoadingContainer.dart create mode 100644 lib/Ui/screens/widgets/sizedBoxes.dart create mode 100644 lib/Ui/screens/widgets/video_view_screen.dart create mode 100644 lib/Ui/screens/widgets/youtube_player_widget.dart create mode 100644 lib/app/analytics_routes.dart create mode 100644 lib/app/app.dart create mode 100644 lib/app/app_localization.dart create mode 100644 lib/app/app_theme.dart create mode 100644 lib/app/default_app_setting.dart create mode 100644 lib/app/register_cubits.dart create mode 100644 lib/app/routes.dart create mode 100644 lib/data/.DS_Store create mode 100644 lib/data/Repositories/advertisement_repository.dart create mode 100644 lib/data/Repositories/articles_repository.dart create mode 100644 lib/data/Repositories/auth_repository.dart create mode 100644 lib/data/Repositories/category_repository.dart create mode 100644 lib/data/Repositories/chat_repository.dart create mode 100644 lib/data/Repositories/cities_repository.dart create mode 100644 lib/data/Repositories/favourites_repository.dart create mode 100644 lib/data/Repositories/interest_repository.dart create mode 100644 lib/data/Repositories/location_repository.dart create mode 100644 lib/data/Repositories/map.dart create mode 100644 lib/data/Repositories/notifications_repository_repository.dart create mode 100644 lib/data/Repositories/outdoorfacility.dart create mode 100644 lib/data/Repositories/personalized_feed_repository.dart create mode 100644 lib/data/Repositories/project_repository.dart create mode 100644 lib/data/Repositories/property_repository.dart create mode 100644 lib/data/Repositories/report_property_repository.dart create mode 100644 lib/data/Repositories/subscription_repository.dart create mode 100644 lib/data/Repositories/system_repository.dart create mode 100644 lib/data/Repositories/transaction.dart create mode 100644 lib/data/cubits/.DS_Store create mode 100644 lib/data/cubits/Interested/get_interested_user_cubit.dart create mode 100644 lib/data/cubits/Personalized/add_update_personalized_interest.dart create mode 100644 lib/data/cubits/Personalized/fetch_personalized_properties.dart create mode 100644 lib/data/cubits/Report/fetch_property_report_reason_list.dart create mode 100644 lib/data/cubits/Report/property_report_cubit.dart create mode 100644 lib/data/cubits/Utility/dynamic_fields_cubit.dart create mode 100644 lib/data/cubits/Utility/fetch_transactions_cubit.dart create mode 100644 lib/data/cubits/Utility/google_place_autocomplate_cubit.dart create mode 100644 lib/data/cubits/Utility/house_type_cubit.dart create mode 100644 lib/data/cubits/Utility/like_properties.dart create mode 100644 lib/data/cubits/Utility/proeprty_edit_global.dart create mode 100644 lib/data/cubits/auth/auth_cubit.dart create mode 100644 lib/data/cubits/auth/auth_state_cubit.dart create mode 100644 lib/data/cubits/auth/login_cubit.dart create mode 100644 lib/data/cubits/auth/send_otp_cubit.dart create mode 100644 lib/data/cubits/auth/verify_otp_cubit.dart create mode 100644 lib/data/cubits/category/fetch_category_cubit.dart create mode 100644 lib/data/cubits/category/fetch_cities_category.dart create mode 100644 lib/data/cubits/chatCubits/delete_message_cubit.dart create mode 100644 lib/data/cubits/chatCubits/get_chat_users.dart create mode 100644 lib/data/cubits/chatCubits/load_chat_messages.dart create mode 100644 lib/data/cubits/chatCubits/send_message.dart create mode 100644 lib/data/cubits/company_cubit.dart create mode 100644 lib/data/cubits/delete_advertisment_cubit.dart create mode 100644 lib/data/cubits/enquiry/enquiry_cubit.dart create mode 100644 lib/data/cubits/enquiry/store_enqury_id.dart create mode 100644 lib/data/cubits/favorite/add_to_favorite_cubit.dart create mode 100644 lib/data/cubits/favorite/fetch_favorites_cubit.dart create mode 100644 lib/data/cubits/favorite/remove_favoriteubit.dart create mode 100644 lib/data/cubits/fetch_articles_cubit.dart create mode 100644 lib/data/cubits/fetch_notifications_cubit.dart create mode 100644 lib/data/cubits/outdoorfacility/fetch_outdoor_facility_list.dart create mode 100644 lib/data/cubits/profile_setting_cubit.dart create mode 100644 lib/data/cubits/project/all_projects_screen.dart create mode 100644 lib/data/cubits/project/delete_project_cubit.dart create mode 100644 lib/data/cubits/project/fetchMyProjectsListCubit.dart create mode 100644 lib/data/cubits/project/fetch_projects.dart create mode 100644 lib/data/cubits/project/manage_project_cubit.dart create mode 100644 lib/data/cubits/property/Interest/change_interest_in_property_cubit.dart create mode 100644 lib/data/cubits/property/create_advertisement_cubit.dart create mode 100644 lib/data/cubits/property/create_property_cubit.dart create mode 100644 lib/data/cubits/property/delete_property_cubit.dart create mode 100644 lib/data/cubits/property/favorite_id_properties.dart create mode 100644 lib/data/cubits/property/fetch_city_property_list.dart create mode 100644 lib/data/cubits/property/fetch_home_properties_cubit.dart create mode 100644 lib/data/cubits/property/fetch_most_liked_properties.dart create mode 100644 lib/data/cubits/property/fetch_most_viewed_properties_cubit.dart create mode 100644 lib/data/cubits/property/fetch_my_promoted_propertys_cubit.dart create mode 100644 lib/data/cubits/property/fetch_my_properties_cubit.dart create mode 100644 lib/data/cubits/property/fetch_nearby_property_cubit.dart create mode 100644 lib/data/cubits/property/fetch_promoted_properties_cubit.dart create mode 100644 lib/data/cubits/property/fetch_property_cubit.dart create mode 100644 lib/data/cubits/property/fetch_property_from_category_cubit.dart create mode 100644 lib/data/cubits/property/fetch_recent_properties.dart create mode 100644 lib/data/cubits/property/fetch_top_rated_properties_cubit.dart create mode 100644 lib/data/cubits/property/home_property_cubit.dart create mode 100644 lib/data/cubits/property/myPropHydrated.dart create mode 100644 lib/data/cubits/property/property_cubit.dart create mode 100644 lib/data/cubits/property/search_property_cubit.dart create mode 100644 lib/data/cubits/property/set_property_view_cubit.dart create mode 100644 lib/data/cubits/property/top_viewed_property_cubit.dart create mode 100644 lib/data/cubits/property/update_property_status.dart create mode 100644 lib/data/cubits/slider_cubit.dart create mode 100644 lib/data/cubits/subscription/assign_free_package.dart create mode 100644 lib/data/cubits/subscription/assign_package.dart create mode 100644 lib/data/cubits/subscription/fetch_subscription_packages_cubit.dart create mode 100644 lib/data/cubits/subscription/get_subsctiption_package_limits_cubit.dart create mode 100644 lib/data/cubits/system/app_theme_cubit.dart create mode 100644 lib/data/cubits/system/delete_account_cubit.dart create mode 100644 lib/data/cubits/system/fetch_language_cubit.dart create mode 100644 lib/data/cubits/system/fetch_system_settings_cubit.dart create mode 100644 lib/data/cubits/system/get_api_keys_cubit.dart create mode 100644 lib/data/cubits/system/language_cubit.dart create mode 100644 lib/data/cubits/system/notification_cubit.dart create mode 100644 lib/data/cubits/system/user_details.dart create mode 100644 lib/data/helper/custom_exception.dart create mode 100644 lib/data/helper/design_configs.dart create mode 100644 lib/data/helper/designs.dart create mode 100644 lib/data/helper/slide_animation.dart create mode 100644 lib/data/helper/widgets.dart create mode 100644 lib/data/model/Personalized/personalized_settings.dart create mode 100644 lib/data/model/ReportProperty/reason_model.dart create mode 100644 lib/data/model/app_language.dart create mode 100644 lib/data/model/app_settings_datamodel.dart create mode 100644 lib/data/model/article_model.dart create mode 100644 lib/data/model/category.dart create mode 100644 lib/data/model/chat/chat_message_modal.dart create mode 100644 lib/data/model/chat/chated_user_model.dart create mode 100644 lib/data/model/city_model.dart create mode 100644 lib/data/model/company.dart create mode 100644 lib/data/model/data_output.dart create mode 100644 lib/data/model/enquiry_status.dart create mode 100644 lib/data/model/gallery.dart create mode 100644 lib/data/model/google_place_model.dart create mode 100644 lib/data/model/google_place_predictions_model.dart create mode 100644 lib/data/model/home_slider.dart create mode 100644 lib/data/model/house_type.dart create mode 100644 lib/data/model/interested_user_model.dart create mode 100644 lib/data/model/notification_data.dart create mode 100644 lib/data/model/outdoor_facility.dart create mode 100644 lib/data/model/project_model.dart create mode 100644 lib/data/model/property_model.dart create mode 100644 lib/data/model/propery_filter_model.dart create mode 100644 lib/data/model/subscription_pacakage_model.dart create mode 100644 lib/data/model/subscription_package_limit.dart create mode 100644 lib/data/model/system_settings_model.dart create mode 100644 lib/data/model/transaction_model.dart create mode 100644 lib/data/model/user_model.dart create mode 100644 lib/exports/main_export.dart create mode 100644 lib/firebase_options.dart create mode 100644 lib/main.dart create mode 100644 lib/sandBox/language.dart create mode 100644 lib/sandBox/language_overlay_changer.dart create mode 100644 lib/sandBox/playground.dart create mode 100644 lib/sandBox/section.dart create mode 100644 lib/sandBox/theme_overlay_toggler.dart create mode 100644 lib/settings.dart create mode 100644 lib/utils/.DS_Store create mode 100644 lib/utils/AdMob/bannerAdLoadWidget.dart create mode 100644 lib/utils/AdMob/interstitialAdManager.dart create mode 100644 lib/utils/AppIcon.dart create mode 100644 lib/utils/CloudState/cloud_state.dart create mode 100644 lib/utils/CurrencyConvertor/currentyConvertor.dart create mode 100644 lib/utils/DeepLink/blueprint.dart create mode 100644 lib/utils/DeepLink/nativeDeepLinkManager.dart create mode 100644 lib/utils/Encryption/rsa.dart create mode 100644 lib/utils/Extensions/extensions.dart create mode 100644 lib/utils/Extensions/lib/adaptive_type.dart create mode 100644 lib/utils/Extensions/lib/build_context.dart create mode 100644 lib/utils/Extensions/lib/color.dart create mode 100644 lib/utils/Extensions/lib/date.dart create mode 100644 lib/utils/Extensions/lib/iterable.dart create mode 100644 lib/utils/Extensions/lib/list.dart create mode 100644 lib/utils/Extensions/lib/map.dart create mode 100644 lib/utils/Extensions/lib/num_extention.dart create mode 100644 lib/utils/Extensions/lib/string.dart create mode 100644 lib/utils/Extensions/lib/textWidgetExtention.dart create mode 100644 lib/utils/Extensions/lib/translate.dart create mode 100644 lib/utils/Geocoding/geocoding.dart create mode 100644 lib/utils/LiquidIndicator/.DS_Store create mode 100644 lib/utils/LiquidIndicator/liquid_progress_indicator.dart create mode 100644 lib/utils/LiquidIndicator/src/liquid_circular_progress_indicator.dart create mode 100644 lib/utils/LiquidIndicator/src/liquid_custom_progress_indicator.dart create mode 100644 lib/utils/LiquidIndicator/src/liquid_linear_progress_indicator.dart create mode 100644 lib/utils/LiquidIndicator/src/wave.dart create mode 100644 lib/utils/Login/AppleLogin/apple_login.dart create mode 100644 lib/utils/Login/Disclaimer.txt create mode 100644 lib/utils/Login/EmailLogin/email_login.dart create mode 100644 lib/utils/Login/GoogleLogin/google_login.dart create mode 100644 lib/utils/Login/PhoneLogin/phone_login.dart create mode 100644 lib/utils/Login/lib/login_status.dart create mode 100644 lib/utils/Login/lib/login_system.dart create mode 100644 lib/utils/Login/lib/payloads.dart create mode 100644 lib/utils/Lottie/lottieEditor.dart create mode 100644 lib/utils/Network/.DS_Store create mode 100644 lib/utils/Network/Interseptors/network_request_interseptor.dart create mode 100644 lib/utils/Network/Interseptors/throttelIntercepter.dart create mode 100644 lib/utils/Network/apiCallTrigger.dart create mode 100644 lib/utils/Network/networkAvailability.dart create mode 100644 lib/utils/Notification/awsomeNotification.dart create mode 100644 lib/utils/Notification/chat_message_handler.dart create mode 100644 lib/utils/Notification/notification_service.dart create mode 100644 lib/utils/VideoPlayer/video_player_widget.dart create mode 100644 lib/utils/VideoPlayer/ytb.dart create mode 100644 lib/utils/api.dart create mode 100644 lib/utils/area_converter.dart create mode 100644 lib/utils/constant.dart create mode 100644 lib/utils/context_menu.dart create mode 100644 lib/utils/convert.dart create mode 100644 lib/utils/customHeroAnimation.dart create mode 100644 lib/utils/custom_validator.dart create mode 100644 lib/utils/deeplinkManager.dart create mode 100644 lib/utils/distance_calculator.dart create mode 100644 lib/utils/errorFilter.dart create mode 100644 lib/utils/guestChecker.dart create mode 100644 lib/utils/helper_utils.dart create mode 100644 lib/utils/hive_keys.dart create mode 100644 lib/utils/hive_utils.dart create mode 100644 lib/utils/imagePicker.dart create mode 100644 lib/utils/isolate_data_loader.dart create mode 100644 lib/utils/logger.dart create mode 100644 lib/utils/logger/server.dart create mode 100644 lib/utils/network_to_localsvg.dart create mode 100644 lib/utils/payment/InAppPurchase/inAppPurchaseManager.dart create mode 100644 lib/utils/payment/gatways/paypal.dart create mode 100644 lib/utils/payment/gatways/paypal_pay.dart create mode 100644 lib/utils/payment/gatways/paystack_pay.dart create mode 100644 lib/utils/payment/gatways/razorpay_pay.dart create mode 100644 lib/utils/payment/gatways/stripe_pay.dart create mode 100644 lib/utils/payment/gatways/stripe_service.dart create mode 100644 lib/utils/payment/lib/gatway.dart create mode 100644 lib/utils/payment/lib/list_gatways.dart create mode 100644 lib/utils/payment/lib/payment.dart create mode 100644 lib/utils/payment/lib/payment_service.dart create mode 100644 lib/utils/payment/lib/purchase_package.dart create mode 100644 lib/utils/payment/lib/statefulwidget_extension.dart create mode 100644 lib/utils/responsiveSize.dart create mode 100644 lib/utils/sliver_grid_delegate_with_fixed_cross_axis_count_and_fixed_height.dart create mode 100644 lib/utils/string_extenstion.dart create mode 100644 lib/utils/strings.dart create mode 100644 lib/utils/typedefs.dart create mode 100644 lib/utils/ui_utils.dart create mode 100644 lib/utils/validator.dart create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 split.bat create mode 100644 split.sh create mode 100644 version.txt create mode 100644 web/favicon.png create mode 100644 web/icons/Icon-192.png create mode 100644 web/icons/Icon-512.png create mode 100644 web/icons/Icon-maskable-192.png create mode 100644 web/icons/Icon-maskable-512.png create mode 100644 web/index.html create mode 100644 web/manifest.json diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..93536d1f845a721d565fa5d6209479b6a09091f6 GIT binary patch literal 10244 zcmeHM&5ImG6n{M**^ChL6c*C4`Vvj$edgCly-Fqxj2?2g;hHB9$p z5;jW)JP6Soa`2`Hk0PRi2L&%89{oU!;Mq(50zo|Juc~WztEzX_5W;Q(RYUcw?t1T4 z)$i4N^)W=`tPI;FB9Dk%WKL&~q%h0f&k;7CzN9xYQ%k6QS_CWt zX$1J${V|%OHZ^IWp5NC3*75`9qn^9eIpn#2MM8;xo1@D(rv(XA0hV4km){_c%+MRC9p5EFjFP92lskpFR@U}{em1@DOmX@}+r`=P} zJoo&ojm@AJviC3qBuBl03lc})myCB7d+YcMw+9?R#)Y~-LKw$<()gf z{lF)jp{K{%_rTTPP+H52<-pK$r9KD)7OtZOK8j;7S%hB)<~F9SgK6trPzZxi36N^4+b@6eVgCzZDouxKs7XAUnbySI&~z9^%9D>+ z(}jl`K9&6vJyau;!l@YO>qGaa$Kg+lFwjD^$o;8WE*8A`%A(;;H_>~fiSESRO&O7a z$_Wt}d6W!*O-P%F$sD6pl+4_L9u=hnB()hpS?=HmaI5p-%-yxz&F{s0I8b8GjqgoD zn=9m@L-d5P`ZO@=CT0jkFoU{xc1FKGA&z z`Xh1dQgylDEtbVPxm2D<;H_5f!?EREgx3T5>gsh&FWo?0JKKhOUSZz_)Td0L-DKtEpE0F{H9Ig48}UFu$$zUUF$RqfhhD zC2Lfhef;dL?nmE=fVf+`XR~yzX0x3g7F6405wHkY1Rg8`*+iYk@Bd%Kk$%Ge{|~lN ztIZ-{5qPK&aB{2l)fIGU(vE}QwR^~yka^;KD3%`y(gUor0obrTn kP112f@dfG7{|q>c`!sw0?_fK<&&`B-J7mxQM|E5KA7GBmsQ>@~ literal 0 HcmV?d00001 diff --git a/.flutter-plugins b/.flutter-plugins new file mode 100644 index 0000000..99c53ea --- /dev/null +++ b/.flutter-plugins @@ -0,0 +1,119 @@ +# This is a generated file; do not edit or check into version control. +audioplayers=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\audioplayers-3.0.1\\ +audioplayers_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\audioplayers_android-2.0.0\\ +audioplayers_darwin=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\audioplayers_darwin-3.0.1\\ +audioplayers_linux=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\audioplayers_linux-1.0.4\\ +audioplayers_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\audioplayers_web-2.2.0\\ +audioplayers_windows=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\audioplayers_windows-1.1.3\\ +awesome_notifications=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\awesome_notifications-0.7.7\\ +connectivity_plus=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\connectivity_plus-2.3.9\\ +connectivity_plus_linux=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\connectivity_plus_linux-1.3.1\\ +connectivity_plus_macos=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\connectivity_plus_macos-1.2.6\\ +connectivity_plus_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\connectivity_plus_web-1.2.5\\ +connectivity_plus_windows=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\connectivity_plus_windows-1.2.2\\ +device_info_plus=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\device_info_plus-9.1.2\\ +file_picker=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\file_picker-5.5.0\\ +file_selector_linux=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\file_selector_linux-0.9.2+1\\ +file_selector_macos=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\file_selector_macos-0.9.3+3\\ +file_selector_windows=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\file_selector_windows-0.9.3+1\\ +firebase_analytics=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_analytics-10.8.9\\ +firebase_analytics_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_analytics_web-0.5.5+21\\ +firebase_auth=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_auth-4.17.8\\ +firebase_auth_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_auth_web-5.9.8\\ +firebase_core=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_core-2.27.0\\ +firebase_core_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_core_web-2.11.5\\ +firebase_dynamic_links=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_dynamic_links-5.4.17\\ +firebase_messaging=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_messaging-14.7.19\\ +firebase_messaging_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\firebase_messaging_web-3.6.8\\ +flutter_inappwebview=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_inappwebview-5.8.0\\ +flutter_keyboard_visibility=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_keyboard_visibility-5.4.1\\ +flutter_keyboard_visibility_linux=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_keyboard_visibility_linux-1.0.0\\ +flutter_keyboard_visibility_macos=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_keyboard_visibility_macos-1.0.0\\ +flutter_keyboard_visibility_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_keyboard_visibility_web-2.0.0\\ +flutter_keyboard_visibility_windows=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_keyboard_visibility_windows-1.0.0\\ +flutter_native_image=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_native_image-0.0.6+1\\ +flutter_paystack=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_paystack-1.0.7\\ +flutter_plugin_android_lifecycle=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_plugin_android_lifecycle-2.0.17\\ +flutter_sim_country_code=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_sim_country_code-0.1.2\\ +flutter_stripe=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_stripe-9.6.0\\ +flutter_vibrate=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_vibrate-1.3.0\\ +fluttertoast=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\fluttertoast-8.2.4\\ +geocoding=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\geocoding-2.2.2\\ +geocoding_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\geocoding_android-3.3.0\\ +geocoding_ios=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\geocoding_ios-2.3.0\\ +google_maps_flutter=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\google_maps_flutter-2.2.6\\ +google_maps_flutter_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\google_maps_flutter_android-2.7.0\\ +google_maps_flutter_ios=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\google_maps_flutter_ios-2.3.6\\ +google_mobile_ads=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\google_mobile_ads-2.4.0\\ +google_sign_in=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\google_sign_in-6.2.1\\ +google_sign_in_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\google_sign_in_android-6.1.22\\ +google_sign_in_ios=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\google_sign_in_ios-5.7.3\\ +google_sign_in_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\google_sign_in_web-0.12.3+2\\ +image_cropper=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_cropper-3.0.3\\ +image_cropper_for_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_cropper_for_web-1.0.3\\ +image_picker=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker-0.8.9\\ +image_picker_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker_android-0.8.9+3\\ +image_picker_for_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker_for_web-2.2.0\\ +image_picker_ios=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker_ios-0.8.9+1\\ +image_picker_linux=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker_linux-0.2.1+1\\ +image_picker_macos=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker_macos-0.2.1+1\\ +image_picker_windows=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\image_picker_windows-0.2.1+1\\ +in_app_purchase=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\in_app_purchase-3.1.13\\ +in_app_purchase_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\in_app_purchase_android-0.3.2\\ +in_app_purchase_storekit=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\in_app_purchase_storekit-0.3.8+1\\ +launch_review=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\launch_review-3.0.1\\ +motion_sensors=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\git\\motion_sensors-6dafc3639b3e96460fabc639768a60b431b53610\\ +open_filex=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\open_filex-4.4.0\\ +package_info_plus=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\package_info_plus-4.2.0\\ +path_provider=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\path_provider-2.1.2\\ +path_provider_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\path_provider_android-2.2.2\\ +path_provider_foundation=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\path_provider_foundation-2.3.2\\ +path_provider_linux=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\path_provider_linux-2.2.1\\ +path_provider_windows=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\path_provider_windows-2.2.1\\ +permission_handler=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\permission_handler-11.3.0\\ +permission_handler_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\permission_handler_android-12.0.5\\ +permission_handler_apple=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\permission_handler_apple-9.4.1\\ +permission_handler_html=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\permission_handler_html-0.1.1\\ +permission_handler_windows=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\permission_handler_windows-0.2.1\\ +razorpay_flutter=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\razorpay_flutter-1.3.6\\ +record=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\record-4.4.4\\ +record_linux=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\record_linux-0.4.1\\ +record_macos=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\record_macos-0.2.2\\ +record_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\record_web-0.5.0\\ +record_windows=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\record_windows-0.7.1\\ +share_plus=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\share_plus-4.5.3\\ +share_plus_linux=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\share_plus_linux-3.0.1\\ +share_plus_macos=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\share_plus_macos-3.0.1\\ +share_plus_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\share_plus_web-3.1.0\\ +share_plus_windows=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\share_plus_windows-3.0.1\\ +shared_preferences=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\shared_preferences-2.2.2\\ +shared_preferences_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\shared_preferences_android-2.2.1\\ +shared_preferences_foundation=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\shared_preferences_foundation-2.3.5\\ +shared_preferences_linux=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\shared_preferences_linux-2.3.2\\ +shared_preferences_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\shared_preferences_web-2.2.2\\ +shared_preferences_windows=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\shared_preferences_windows-2.3.2\\ +sign_in_with_apple=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\sign_in_with_apple-5.0.0\\ +sign_in_with_apple_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\sign_in_with_apple_web-1.0.1\\ +sms_autofill=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\sms_autofill-2.3.1\\ +sqflite=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\sqflite-2.3.2\\ +stripe_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\stripe_android-9.6.0+2\\ +stripe_ios=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\stripe_ios-9.6.0\\ +uni_links=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\uni_links-0.5.1\\ +uni_links_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\uni_links_web-0.1.0\\ +url_launcher=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher-6.2.5\\ +url_launcher_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher_android-6.3.0\\ +url_launcher_ios=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher_ios-6.2.4\\ +url_launcher_linux=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher_linux-3.1.1\\ +url_launcher_macos=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher_macos-3.1.0\\ +url_launcher_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher_web-2.2.3\\ +url_launcher_windows=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\url_launcher_windows-3.1.1\\ +video_player=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\video_player-2.8.3\\ +video_player_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\video_player_android-2.4.12\\ +video_player_avfoundation=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\video_player_avfoundation-2.5.6\\ +video_player_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\video_player_web-2.1.3\\ +wakelock=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\wakelock-0.6.2\\ +wakelock_macos=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\wakelock_macos-0.4.0\\ +wakelock_web=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\wakelock_web-0.4.0\\ +webview_flutter=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\webview_flutter-2.8.0\\ +webview_flutter_android=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\webview_flutter_android-2.10.4\\ +webview_flutter_wkwebview=C:\\Users\\User\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\webview_flutter_wkwebview-2.9.5\\ diff --git a/.flutter-plugins-dependencies b/.flutter-plugins-dependencies new file mode 100644 index 0000000..26f1556 --- /dev/null +++ b/.flutter-plugins-dependencies @@ -0,0 +1 @@ +{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"audioplayers_darwin","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\audioplayers_darwin-3.0.1\\\\","native_build":true,"dependencies":[]},{"name":"awesome_notifications","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\awesome_notifications-0.7.7\\\\","native_build":true,"dependencies":[]},{"name":"connectivity_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\connectivity_plus-2.3.9\\\\","native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\device_info_plus-9.1.2\\\\","native_build":true,"dependencies":[]},{"name":"file_picker","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\file_picker-5.5.0\\\\","native_build":true,"dependencies":[]},{"name":"firebase_analytics","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_analytics-10.8.9\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_auth","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.17.8\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.27.0\\\\","native_build":true,"dependencies":[]},{"name":"firebase_dynamic_links","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_dynamic_links-5.4.17\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_messaging","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_messaging-14.7.19\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"flutter_inappwebview","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_inappwebview-5.8.0\\\\","native_build":true,"dependencies":[]},{"name":"flutter_keyboard_visibility","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_keyboard_visibility-5.4.1\\\\","native_build":true,"dependencies":[]},{"name":"flutter_native_image","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_native_image-0.0.6+1\\\\","native_build":true,"dependencies":[]},{"name":"flutter_paystack","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_paystack-1.0.7\\\\","native_build":true,"dependencies":[]},{"name":"flutter_sim_country_code","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_sim_country_code-0.1.2\\\\","native_build":true,"dependencies":[]},{"name":"flutter_vibrate","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_vibrate-1.3.0\\\\","native_build":true,"dependencies":[]},{"name":"fluttertoast","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\fluttertoast-8.2.4\\\\","native_build":true,"dependencies":[]},{"name":"geocoding_ios","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\geocoding_ios-2.3.0\\\\","native_build":true,"dependencies":[]},{"name":"google_maps_flutter_ios","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_maps_flutter_ios-2.3.6\\\\","native_build":true,"dependencies":[]},{"name":"google_mobile_ads","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_mobile_ads-2.4.0\\\\","native_build":true,"dependencies":[]},{"name":"google_sign_in_ios","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_ios-5.7.3\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"image_cropper","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_cropper-3.0.3\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_ios","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker_ios-0.8.9+1\\\\","native_build":true,"dependencies":[]},{"name":"in_app_purchase_storekit","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\in_app_purchase_storekit-0.3.8+1\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"launch_review","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\launch_review-3.0.1\\\\","native_build":true,"dependencies":[]},{"name":"motion_sensors","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\git\\\\motion_sensors-6dafc3639b3e96460fabc639768a60b431b53610\\\\","native_build":true,"dependencies":[]},{"name":"open_filex","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\open_filex-4.4.0\\\\","native_build":true,"dependencies":[]},{"name":"package_info_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\package_info_plus-4.2.0\\\\","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_foundation-2.3.2\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"permission_handler_apple","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\permission_handler_apple-9.4.1\\\\","native_build":true,"dependencies":[]},{"name":"razorpay_flutter","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\razorpay_flutter-1.3.6\\\\","native_build":true,"dependencies":["fluttertoast","package_info_plus"]},{"name":"record","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\record-4.4.4\\\\","native_build":true,"dependencies":[]},{"name":"share_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\share_plus-4.5.3\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_foundation-2.3.5\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"sign_in_with_apple","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sign_in_with_apple-5.0.0\\\\","native_build":true,"dependencies":[]},{"name":"sms_autofill","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sms_autofill-2.3.1\\\\","native_build":true,"dependencies":[]},{"name":"sqflite","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sqflite-2.3.2\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"stripe_ios","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\stripe_ios-9.6.0\\\\","native_build":true,"dependencies":[]},{"name":"uni_links","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\uni_links-0.5.1\\\\","native_build":true,"dependencies":[]},{"name":"url_launcher_ios","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\url_launcher_ios-6.2.4\\\\","native_build":true,"dependencies":[]},{"name":"video_player_avfoundation","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\video_player_avfoundation-2.5.6\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"wakelock","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\wakelock-0.6.2\\\\","native_build":true,"dependencies":[]},{"name":"webview_flutter_wkwebview","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\webview_flutter_wkwebview-2.9.5\\\\","native_build":true,"dependencies":[]}],"android":[{"name":"audioplayers_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\audioplayers_android-2.0.0\\\\","native_build":true,"dependencies":[]},{"name":"awesome_notifications","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\awesome_notifications-0.7.7\\\\","native_build":true,"dependencies":[]},{"name":"connectivity_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\connectivity_plus-2.3.9\\\\","native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\device_info_plus-9.1.2\\\\","native_build":true,"dependencies":[]},{"name":"file_picker","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\file_picker-5.5.0\\\\","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"firebase_analytics","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_analytics-10.8.9\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_auth","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.17.8\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.27.0\\\\","native_build":true,"dependencies":[]},{"name":"firebase_dynamic_links","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_dynamic_links-5.4.17\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_messaging","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_messaging-14.7.19\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"flutter_inappwebview","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_inappwebview-5.8.0\\\\","native_build":true,"dependencies":[]},{"name":"flutter_keyboard_visibility","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_keyboard_visibility-5.4.1\\\\","native_build":true,"dependencies":[]},{"name":"flutter_native_image","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_native_image-0.0.6+1\\\\","native_build":true,"dependencies":[]},{"name":"flutter_paystack","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_paystack-1.0.7\\\\","native_build":true,"dependencies":[]},{"name":"flutter_plugin_android_lifecycle","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_plugin_android_lifecycle-2.0.17\\\\","native_build":true,"dependencies":[]},{"name":"flutter_sim_country_code","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_sim_country_code-0.1.2\\\\","native_build":true,"dependencies":[]},{"name":"flutter_vibrate","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_vibrate-1.3.0\\\\","native_build":true,"dependencies":[]},{"name":"fluttertoast","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\fluttertoast-8.2.4\\\\","native_build":true,"dependencies":[]},{"name":"geocoding_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\geocoding_android-3.3.0\\\\","native_build":true,"dependencies":[]},{"name":"google_maps_flutter_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_maps_flutter_android-2.7.0\\\\","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"google_mobile_ads","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_mobile_ads-2.4.0\\\\","native_build":true,"dependencies":[]},{"name":"google_sign_in_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_android-6.1.22\\\\","native_build":true,"dependencies":[]},{"name":"image_cropper","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_cropper-3.0.3\\\\","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker_android-0.8.9+3\\\\","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"in_app_purchase_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\in_app_purchase_android-0.3.2\\\\","native_build":true,"dependencies":[]},{"name":"launch_review","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\launch_review-3.0.1\\\\","native_build":true,"dependencies":[]},{"name":"motion_sensors","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\git\\\\motion_sensors-6dafc3639b3e96460fabc639768a60b431b53610\\\\","native_build":true,"dependencies":[]},{"name":"open_filex","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\open_filex-4.4.0\\\\","native_build":true,"dependencies":[]},{"name":"package_info_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\package_info_plus-4.2.0\\\\","native_build":true,"dependencies":[]},{"name":"path_provider_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_android-2.2.2\\\\","native_build":true,"dependencies":[]},{"name":"permission_handler_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\permission_handler_android-12.0.5\\\\","native_build":true,"dependencies":[]},{"name":"razorpay_flutter","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\razorpay_flutter-1.3.6\\\\","native_build":true,"dependencies":["fluttertoast","package_info_plus"]},{"name":"record","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\record-4.4.4\\\\","native_build":true,"dependencies":[]},{"name":"share_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\share_plus-4.5.3\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_android-2.2.1\\\\","native_build":true,"dependencies":[]},{"name":"sign_in_with_apple","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sign_in_with_apple-5.0.0\\\\","native_build":true,"dependencies":[]},{"name":"sms_autofill","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sms_autofill-2.3.1\\\\","native_build":true,"dependencies":[]},{"name":"sqflite","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sqflite-2.3.2\\\\","native_build":true,"dependencies":[]},{"name":"stripe_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\stripe_android-9.6.0+2\\\\","native_build":true,"dependencies":[]},{"name":"uni_links","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\uni_links-0.5.1\\\\","native_build":true,"dependencies":[]},{"name":"url_launcher_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\url_launcher_android-6.3.0\\\\","native_build":true,"dependencies":[]},{"name":"video_player_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\video_player_android-2.4.12\\\\","native_build":true,"dependencies":[]},{"name":"wakelock","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\wakelock-0.6.2\\\\","native_build":true,"dependencies":[]},{"name":"webview_flutter_android","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\webview_flutter_android-2.10.4\\\\","native_build":true,"dependencies":[]}],"macos":[{"name":"audioplayers_darwin","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\audioplayers_darwin-3.0.1\\\\","native_build":true,"dependencies":[]},{"name":"awesome_notifications","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\awesome_notifications-0.7.7\\\\","native_build":true,"dependencies":[]},{"name":"connectivity_plus_macos","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\connectivity_plus_macos-1.2.6\\\\","native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\device_info_plus-9.1.2\\\\","native_build":true,"dependencies":[]},{"name":"file_selector_macos","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\file_selector_macos-0.9.3+3\\\\","native_build":true,"dependencies":[]},{"name":"firebase_analytics","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_analytics-10.8.9\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_auth","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.17.8\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.27.0\\\\","native_build":true,"dependencies":[]},{"name":"firebase_messaging","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_messaging-14.7.19\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"flutter_keyboard_visibility_macos","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_keyboard_visibility_macos-1.0.0\\\\","native_build":false,"dependencies":[]},{"name":"google_sign_in_ios","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_ios-5.7.3\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"image_picker_macos","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker_macos-0.2.1+1\\\\","native_build":false,"dependencies":["file_selector_macos"]},{"name":"in_app_purchase_storekit","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\in_app_purchase_storekit-0.3.8+1\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"package_info_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\package_info_plus-4.2.0\\\\","native_build":true,"dependencies":[]},{"name":"path_provider_foundation","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_foundation-2.3.2\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"record_macos","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\record_macos-0.2.2\\\\","native_build":true,"dependencies":[]},{"name":"share_plus_macos","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\share_plus_macos-3.0.1\\\\","native_build":true,"dependencies":[]},{"name":"shared_preferences_foundation","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_foundation-2.3.5\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"sign_in_with_apple","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sign_in_with_apple-5.0.0\\\\","native_build":true,"dependencies":[]},{"name":"sqflite","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sqflite-2.3.2\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"url_launcher_macos","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\url_launcher_macos-3.1.0\\\\","native_build":true,"dependencies":[]},{"name":"video_player_avfoundation","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\video_player_avfoundation-2.5.6\\\\","shared_darwin_source":true,"native_build":true,"dependencies":[]},{"name":"wakelock_macos","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\wakelock_macos-0.4.0\\\\","native_build":true,"dependencies":[]}],"linux":[{"name":"audioplayers_linux","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\audioplayers_linux-1.0.4\\\\","native_build":true,"dependencies":[]},{"name":"awesome_notifications","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\awesome_notifications-0.7.7\\\\","native_build":true,"dependencies":[]},{"name":"connectivity_plus_linux","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\connectivity_plus_linux-1.3.1\\\\","native_build":false,"dependencies":[]},{"name":"device_info_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\device_info_plus-9.1.2\\\\","native_build":false,"dependencies":[]},{"name":"file_selector_linux","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\file_selector_linux-0.9.2+1\\\\","native_build":true,"dependencies":[]},{"name":"flutter_keyboard_visibility_linux","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_keyboard_visibility_linux-1.0.0\\\\","native_build":false,"dependencies":[]},{"name":"image_picker_linux","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker_linux-0.2.1+1\\\\","native_build":false,"dependencies":["file_selector_linux"]},{"name":"package_info_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\package_info_plus-4.2.0\\\\","native_build":false,"dependencies":[]},{"name":"path_provider_linux","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_linux-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"record_linux","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\record_linux-0.4.1\\\\","native_build":true,"dependencies":[]},{"name":"share_plus_linux","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\share_plus_linux-3.0.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_linux","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_linux-2.3.2\\\\","native_build":false,"dependencies":["path_provider_linux"]},{"name":"url_launcher_linux","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\url_launcher_linux-3.1.1\\\\","native_build":true,"dependencies":[]}],"windows":[{"name":"audioplayers_windows","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\audioplayers_windows-1.1.3\\\\","native_build":true,"dependencies":[]},{"name":"awesome_notifications","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\awesome_notifications-0.7.7\\\\","native_build":true,"dependencies":[]},{"name":"connectivity_plus_windows","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\connectivity_plus_windows-1.2.2\\\\","native_build":true,"dependencies":[]},{"name":"device_info_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\device_info_plus-9.1.2\\\\","native_build":false,"dependencies":[]},{"name":"file_selector_windows","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\file_selector_windows-0.9.3+1\\\\","native_build":true,"dependencies":[]},{"name":"firebase_auth","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth-4.17.8\\\\","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core-2.27.0\\\\","native_build":true,"dependencies":[]},{"name":"flutter_keyboard_visibility_windows","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_keyboard_visibility_windows-1.0.0\\\\","native_build":false,"dependencies":[]},{"name":"image_picker_windows","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker_windows-0.2.1+1\\\\","native_build":false,"dependencies":["file_selector_windows"]},{"name":"package_info_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\package_info_plus-4.2.0\\\\","native_build":false,"dependencies":[]},{"name":"path_provider_windows","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\path_provider_windows-2.2.1\\\\","native_build":false,"dependencies":[]},{"name":"permission_handler_windows","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\permission_handler_windows-0.2.1\\\\","native_build":true,"dependencies":[]},{"name":"record_windows","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\record_windows-0.7.1\\\\","native_build":true,"dependencies":[]},{"name":"share_plus_windows","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\share_plus_windows-3.0.1\\\\","native_build":false,"dependencies":[]},{"name":"shared_preferences_windows","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_windows-2.3.2\\\\","native_build":false,"dependencies":["path_provider_windows"]},{"name":"url_launcher_windows","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\url_launcher_windows-3.1.1\\\\","native_build":true,"dependencies":[]}],"web":[{"name":"audioplayers_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\audioplayers_web-2.2.0\\\\","dependencies":[]},{"name":"awesome_notifications","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\awesome_notifications-0.7.7\\\\","dependencies":[]},{"name":"connectivity_plus_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\connectivity_plus_web-1.2.5\\\\","dependencies":[]},{"name":"device_info_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\device_info_plus-9.1.2\\\\","dependencies":[]},{"name":"file_picker","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\file_picker-5.5.0\\\\","dependencies":[]},{"name":"firebase_analytics_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_analytics_web-0.5.5+21\\\\","dependencies":["firebase_core_web"]},{"name":"firebase_auth_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_auth_web-5.9.8\\\\","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_core_web-2.11.5\\\\","dependencies":[]},{"name":"firebase_messaging_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\firebase_messaging_web-3.6.8\\\\","dependencies":["firebase_core_web"]},{"name":"flutter_keyboard_visibility_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\flutter_keyboard_visibility_web-2.0.0\\\\","dependencies":[]},{"name":"fluttertoast","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\fluttertoast-8.2.4\\\\","dependencies":[]},{"name":"google_sign_in_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\google_sign_in_web-0.12.3+2\\\\","dependencies":[]},{"name":"image_cropper_for_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_cropper_for_web-1.0.3\\\\","dependencies":[]},{"name":"image_picker_for_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\image_picker_for_web-2.2.0\\\\","dependencies":[]},{"name":"package_info_plus","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\package_info_plus-4.2.0\\\\","dependencies":[]},{"name":"permission_handler_html","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\permission_handler_html-0.1.1\\\\","dependencies":[]},{"name":"record_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\record_web-0.5.0\\\\","dependencies":[]},{"name":"share_plus_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\share_plus_web-3.1.0\\\\","dependencies":[]},{"name":"shared_preferences_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\shared_preferences_web-2.2.2\\\\","dependencies":[]},{"name":"sign_in_with_apple_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\sign_in_with_apple_web-1.0.1\\\\","dependencies":[]},{"name":"uni_links_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\uni_links_web-0.1.0\\\\","dependencies":[]},{"name":"url_launcher_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\url_launcher_web-2.2.3\\\\","dependencies":[]},{"name":"video_player_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\video_player_web-2.1.3\\\\","dependencies":[]},{"name":"wakelock_web","path":"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Pub\\\\Cache\\\\hosted\\\\pub.dev\\\\wakelock_web-0.4.0\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"audioplayers","dependencies":["audioplayers_android","audioplayers_darwin","audioplayers_linux","audioplayers_web","audioplayers_windows","path_provider"]},{"name":"audioplayers_android","dependencies":[]},{"name":"audioplayers_darwin","dependencies":[]},{"name":"audioplayers_linux","dependencies":[]},{"name":"audioplayers_web","dependencies":[]},{"name":"audioplayers_windows","dependencies":[]},{"name":"awesome_notifications","dependencies":[]},{"name":"connectivity_plus","dependencies":["connectivity_plus_linux","connectivity_plus_macos","connectivity_plus_web","connectivity_plus_windows"]},{"name":"connectivity_plus_linux","dependencies":[]},{"name":"connectivity_plus_macos","dependencies":[]},{"name":"connectivity_plus_web","dependencies":[]},{"name":"connectivity_plus_windows","dependencies":[]},{"name":"device_info_plus","dependencies":[]},{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"file_selector_linux","dependencies":[]},{"name":"file_selector_macos","dependencies":[]},{"name":"file_selector_windows","dependencies":[]},{"name":"firebase_analytics","dependencies":["firebase_analytics_web","firebase_core"]},{"name":"firebase_analytics_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_auth","dependencies":["firebase_auth_web","firebase_core"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_dynamic_links","dependencies":["firebase_core"]},{"name":"firebase_messaging","dependencies":["firebase_core","firebase_messaging_web"]},{"name":"firebase_messaging_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"flutter_inappwebview","dependencies":[]},{"name":"flutter_keyboard_visibility","dependencies":["flutter_keyboard_visibility_linux","flutter_keyboard_visibility_macos","flutter_keyboard_visibility_web","flutter_keyboard_visibility_windows"]},{"name":"flutter_keyboard_visibility_linux","dependencies":[]},{"name":"flutter_keyboard_visibility_macos","dependencies":[]},{"name":"flutter_keyboard_visibility_web","dependencies":[]},{"name":"flutter_keyboard_visibility_windows","dependencies":[]},{"name":"flutter_native_image","dependencies":[]},{"name":"flutter_paystack","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_sim_country_code","dependencies":[]},{"name":"flutter_stripe","dependencies":["stripe_android","stripe_ios"]},{"name":"flutter_vibrate","dependencies":[]},{"name":"fluttertoast","dependencies":[]},{"name":"geocoding","dependencies":["geocoding_android","geocoding_ios"]},{"name":"geocoding_android","dependencies":[]},{"name":"geocoding_ios","dependencies":[]},{"name":"google_maps_flutter","dependencies":["google_maps_flutter_android","google_maps_flutter_ios"]},{"name":"google_maps_flutter_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"google_maps_flutter_ios","dependencies":[]},{"name":"google_mobile_ads","dependencies":[]},{"name":"google_sign_in","dependencies":["google_sign_in_android","google_sign_in_ios","google_sign_in_web"]},{"name":"google_sign_in_android","dependencies":[]},{"name":"google_sign_in_ios","dependencies":[]},{"name":"google_sign_in_web","dependencies":[]},{"name":"image_cropper","dependencies":["image_cropper_for_web"]},{"name":"image_cropper_for_web","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios","image_picker_linux","image_picker_macos","image_picker_windows"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"image_picker_linux","dependencies":["file_selector_linux"]},{"name":"image_picker_macos","dependencies":["file_selector_macos"]},{"name":"image_picker_windows","dependencies":["file_selector_windows"]},{"name":"in_app_purchase","dependencies":["in_app_purchase_android","in_app_purchase_storekit"]},{"name":"in_app_purchase_android","dependencies":[]},{"name":"in_app_purchase_storekit","dependencies":[]},{"name":"launch_review","dependencies":[]},{"name":"motion_sensors","dependencies":[]},{"name":"open_filex","dependencies":[]},{"name":"package_info_plus","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_foundation","path_provider_linux","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_foundation","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"permission_handler","dependencies":["permission_handler_android","permission_handler_apple","permission_handler_html","permission_handler_windows"]},{"name":"permission_handler_android","dependencies":[]},{"name":"permission_handler_apple","dependencies":[]},{"name":"permission_handler_html","dependencies":[]},{"name":"permission_handler_windows","dependencies":[]},{"name":"razorpay_flutter","dependencies":["fluttertoast","package_info_plus"]},{"name":"record","dependencies":["record_web","record_windows","record_macos","record_linux"]},{"name":"record_linux","dependencies":[]},{"name":"record_macos","dependencies":[]},{"name":"record_web","dependencies":[]},{"name":"record_windows","dependencies":[]},{"name":"share_plus","dependencies":["share_plus_linux","share_plus_macos","share_plus_windows","share_plus_web"]},{"name":"share_plus_linux","dependencies":["url_launcher"]},{"name":"share_plus_macos","dependencies":[]},{"name":"share_plus_web","dependencies":["url_launcher"]},{"name":"share_plus_windows","dependencies":["url_launcher"]},{"name":"shared_preferences","dependencies":["shared_preferences_android","shared_preferences_foundation","shared_preferences_linux","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_android","dependencies":[]},{"name":"shared_preferences_foundation","dependencies":[]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"sign_in_with_apple","dependencies":["sign_in_with_apple_web"]},{"name":"sign_in_with_apple_web","dependencies":[]},{"name":"sms_autofill","dependencies":[]},{"name":"sqflite","dependencies":[]},{"name":"stripe_android","dependencies":[]},{"name":"stripe_ios","dependencies":[]},{"name":"uni_links","dependencies":["uni_links_web"]},{"name":"uni_links_web","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_android","url_launcher_ios","url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_android","dependencies":[]},{"name":"url_launcher_ios","dependencies":[]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]},{"name":"video_player","dependencies":["video_player_android","video_player_avfoundation","video_player_web"]},{"name":"video_player_android","dependencies":[]},{"name":"video_player_avfoundation","dependencies":[]},{"name":"video_player_web","dependencies":[]},{"name":"wakelock","dependencies":["wakelock_macos","wakelock_web"]},{"name":"wakelock_macos","dependencies":[]},{"name":"wakelock_web","dependencies":[]},{"name":"webview_flutter","dependencies":["webview_flutter_android","webview_flutter_wkwebview"]},{"name":"webview_flutter_android","dependencies":[]},{"name":"webview_flutter_wkwebview","dependencies":[]}],"date_created":"2024-06-06 13:14:31.041464","version":"3.16.0"} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..436b31e --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +android/ +.dart_tool/ +.vscode/ +build/ +deeplinkfiles/ +firebase.json \ No newline at end of file diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..d8feb32 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,219 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + - always_declare_return_types + # - always_put_control_body_on_new_line + # - always_put_required_named_parameters_first + # - always_require_non_null_named_parameters + # - always_specify_types + # # - always_use_package_imports + # - annotate_overrides + # #- avoid_annotating_with_dynamic + # - avoid_bool_literals_in_conditional_expressions + # - avoid_catches_without_on_clauses + # - avoid_catching_errors + # - avoid_classes_with_only_static_members + # - avoid_double_and_int_checks + # - avoid_dynamic_calls + # - avoid_empty_else + # - avoid_equals_and_hash_code_on_mutable_classes + # - avoid_escaping_inner_quotes + # - avoid_field_initializers_in_const_classes + # - avoid_function_literals_in_foreach_calls + # - avoid_implementing_value_types + # - avoid_init_to_null + # - avoid_js_rounded_ints + # - avoid_multiple_declarations_per_line + # - avoid_null_checks_in_equality_operators + # - avoid_positional_boolean_parameters + # - avoid_print + # - avoid_private_typedef_functions + # - avoid_redundant_argument_values + # - avoid_relative_lib_imports + # - avoid_renaming_method_parameters + # - avoid_return_types_on_setters + # - avoid_returning_null + # - avoid_returning_null_for_future + # - avoid_returning_null_for_void + # - avoid_returning_this + # - avoid_setters_without_getters + # - avoid_shadowing_type_parameters + # - avoid_single_cascade_in_expression_statements + # - avoid_slow_async_io + # - avoid_type_to_string + # - avoid_types_as_parameter_names + # #- avoid_types_on_closure_parameters + # - avoid_unnecessary_containers + # - avoid_unused_constructor_parameters + # - avoid_void_async + # - avoid_web_libraries_in_flutter + # - await_only_futures + # - camel_case_extensions + # - camel_case_types + # - cancel_subscriptions + # - cascade_invocations + # - cast_nullable_to_non_nullable + # - close_sinks + # - comment_references + # - constant_identifier_names + # - control_flow_in_finally + # - curly_braces_in_flow_control_structures + # - depend_on_referenced_packages + # - deprecated_consistency + # - diagnostic_describe_all_properties + # - directives_ordering + # - do_not_use_environment + # - empty_catches + # - empty_constructor_bodies + # - empty_statements + # - exhaustive_cases + # - file_names + # - flutter_style_todos + # - hash_and_equals + # - implementation_imports + # - invariant_booleans + # - iterable_contains_unrelated_type + # - join_return_with_assignment + # - leading_newlines_in_multiline_strings + # - library_names + # - library_prefixes + # - library_private_types_in_public_api + # - lines_longer_than_80_chars + # - list_remove_unrelated_type + # - literal_only_boolean_expressions + # - missing_whitespace_between_adjacent_strings + # - no_adjacent_strings_in_list + # - no_default_cases + # - no_duplicate_case_values + # - no_logic_in_create_state + # - no_runtimeType_toString + # - non_constant_identifier_names + # - noop_primitive_operations + # - null_check_on_nullable_type_parameter + # - null_closures + # - omit_local_variable_types + # - one_member_abstracts + # - only_throw_errors + # - overridden_fields + # - package_api_docs + # - package_names + # - package_prefixed_library_names + # - parameter_assignments + # - prefer_adjacent_string_concatenation + # - prefer_asserts_in_initializer_lists + # - prefer_asserts_with_message + # - prefer_collection_literals + # - prefer_conditional_assignment + # - prefer_const_constructors + # - prefer_const_constructors_in_immutables + # - prefer_const_declarations + # - prefer_const_literals_to_create_immutables + # - prefer_constructors_over_static_methods + # - prefer_contains + # - prefer_double_quotes + # - prefer_equal_for_default_values + # - prefer_expression_function_bodies + # - prefer_final_fields + # - prefer_final_in_for_each + # - prefer_final_locals + # - prefer_final_parameters + # - prefer_for_elements_to_map_fromIterable + # - prefer_foreach + # - prefer_function_declarations_over_variables + # - prefer_generic_function_type_aliases + # - prefer_if_elements_to_conditional_expressions + # - prefer_if_null_operators + # - prefer_initializing_formals + # - prefer_inlined_adds + # - prefer_int_literals + # - prefer_interpolation_to_compose_strings + # - prefer_is_empty + # - prefer_is_not_empty + # - prefer_is_not_operator + # - prefer_iterable_whereType + # - prefer_mixin + # - prefer_null_aware_method_calls + # - prefer_null_aware_operators + # - prefer_relative_imports + # - prefer_single_quotes + # - prefer_spread_collections + # - prefer_typing_uninitialized_variables + # - prefer_void_to_null + # - provide_deprecation_message + # - public_member_api_docs + # - recursive_getters + # - require_trailing_commas + # - sized_box_for_whitespace + # - slash_for_doc_comments + # - sort_child_properties_last + # - sort_constructors_first + # - sort_pub_dependencies + # - sort_unnamed_constructors_first + # - test_types_in_equals + # - throw_in_finally + # - tighten_type_of_initializing_formals + # - type_annotate_public_apis + # - type_init_formals + # - unawaited_futures + # - unnecessary_await_in_return + # - unnecessary_brace_in_string_interps + # - unnecessary_const + # #- unnecessary_final + # - unnecessary_getters_setters + # - unnecessary_lambdas + # - unnecessary_new + # - unnecessary_null_aware_assignments + # - unnecessary_null_checks + # - unnecessary_null_in_if_null_operators + # - unnecessary_nullable_for_final_variable_declarations + # - unnecessary_overrides + # - unnecessary_parenthesis + # - unnecessary_raw_strings + # - unnecessary_statements + # - unnecessary_string_escapes + # - unnecessary_string_interpolations + # - unnecessary_this + # - unrelated_type_equality_checks + # - unsafe_html + # - use_build_context_synchronously + # - use_full_hex_values_for_flutter_colors + # - use_function_type_syntax_for_parameters + # - use_if_null_to_convert_nulls_to_bools + # - use_is_even_rather_than_modulo + # - use_key_in_widget_constructors + # - use_late_for_private_fields_and_variables + # - use_named_constants + # - use_raw_strings + # - use_rethrow_when_possible + # - use_setters_to_change_properties + # - use_string_buffers + # - use_test_throws_matchers + # - use_to_and_as_if_applicable + # - valid_regexps + # - void_checks + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/assets/.DS_Store b/assets/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c00a1dee1428f24a36bbdf7694457f0c8666b6e6 GIT binary patch literal 14340 zcmeHNYitzP6+UN-@$7oR12zjd-mutM1iIL}ew$a;487{@5T~C4@^EJ?I-&N&41uzk{4~0!Ll{)Ed{~Y4vvT~9o)!P$7sUYbpa}-)XI+*C zEDcy1ury$4z|z2tXn^g#bcy+TXgw_rSQ@Z2kkkNMAKY}a&~JoeddQa!daxrrD`!V| zeo>tK0G{VILcbA?=^+;-87@kpE{cYWfx0;5yIFM#{YE&Zhq^eRE)Hn)jE0ATymyjw z^Xhq+<0VO0;m7QHmG^CC+t3%O{#$`M80?{Vg zdZl@zqcz@okGsxy$m1UM)ztYs?#9NNLx*hQoU+Oln|t?#BT@B18V_A)EJ83tPbZ&j zyjRsvxZl?qR3kcjk@Lgjlhu!?t*wSm*aFvfr@=F+2%| zhU(^kMu_NNx4FYRq{U;DGYvKoE+T}IWN8LAo}!YcO}viLh6x2Pe&Q&YKRR05Q0;O1 zs%kk5s=ZYN17Cdx4A?Z&bwwB)p+aLgN^sZ!HGVlUoQnxi+wA#{88Zu{Sp~BT3JZ(o zIOjU&_ezC*f#AOW7z1jH8dhV?;URfPe@qE=4hDisw7)wpABcA<_sG4{?2M|L<�ybqTV(T;^U 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 QPbcO@zzIo}4EzEE?^ISa(EtDd literal 0 HcmV?d00001 diff --git a/assets/chat_background/__light.jpg b/assets/chat_background/__light.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c1ea8e87e6d6a16ff93693038326b0edfcf31502 GIT binary patch literal 105079 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.`W7*bHxj?Bb_(W!xTZ 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Չ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�u3CV?!A!U#{ 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 z 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�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

HMS%WYn;>81I{i`RQflA@qE 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 z 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 z%0A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 z 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

;fn8&c^{1fp%elVoPp@kGG<`y}B}x_)WzX(!%~F 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�G#>Rf~69|Iv{@G}&&|0Kb$c7JolC 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

$ybnvQLmCFUvF%EL%d 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

2VcWRNvxp_FV-^ zfUx{TA-us2#b|)@Im;cZR4`>Ye8+aMF>?k7kKDawv2{=g+`Cffn=jrDqYSE1lisG! z@*c)D?=)4QK)Q|~>$afzIhR$8qU!}Br-{Mu-ZL8`>(DXNEZv)%V+wzix!Hnbo0=6g z%f0VD@jjm06m973h=lCw@K6BWYi*a+8D9m6QI|5I&CQu}FQ7h-GD;ZjlSeZ1RPbAF zkZXaX3d4TIu}UxmwFW{z*mIgoJ=misTt^? z>vGGVMXobhi!ZdLz~J|WErqZ#Q|1naaiegYhKokrZ! zb8|pIn2805w41NyV6(by%4?N;&@0e?3iLA)s5J+(XiJ|77>r7K9M7U*HPj;}%)l2? z_hEAw&dBgtap*jAGrwg+ZsyGUrdVMU5pl~O8ypq4n0rjpGuYg z0D&q$%DpSm{uk?Bwdl*QQ8dINgKSrq_RP)*fRwxr*f3|devIyE_MD-lKLpW-@s!Zz z0Fh$3V+Vuv4I~*5jd9 z+wI1TT#Z8tv;VdDlu5qd~Jvshfv4}ZMY!rOyfV~V=<`rn zzTl~?3Wn|v+{1#aGSnaS6)hM=t4UtK>RoR=Knj;V`#~j1o=gK;mNb~aEzGvnbx^(p z{l?Y;RBQZtzK8JiVXNjoeQQu*tm*A3>|vWuFX9Wyxp>xMf^-CHY}U}cOOYES50(l~ z(K==N?}>r30zM*+bt!8#O2Q=08_MvJCPc6yVt21;escrVauKMBVYq@l%j!~YY*+sP zatwPtb#8YXz|7{mm3xI^ADAXx;-1SFX(%Z`YNjz;#K~D8TXGWIEkk#*76r=TE@lL- zVuuWRyrw7?am>Y}8E17K@MBfrUxaKek~(T{`a{r(8MlEQc3S)Z9RI z0HXP1wWb%P{{VEn?y-JM1{P!PU^e`8bW&2OKPC?q}{JInKWY+&?}{zuLu$B)Yf) z7vWH2`;j)uL&1_C#Qyc!rw|*E&qcTnV5!A)oV>o6VmKk9GXX9DE(#U9Wd4KD-=h!V zyh@l2OngayrV{;_oSOVj5J+e+U%8hZvB56daSKD`&JE1JeX1;k++|{2R<#Iz$lMKE z!=$o9LOehDasL42Js(P*eQVO;2~hqlsLTE}Djt{r0E=7%%nFaNq&*U^5K3XjpoXjSq|0Zv;vTh|egAKLfm2{6bqxkS!E2Q zY%V;znDSgGugWl`>%d+^bD1ULy%*kPXCc8nV@-IRQKG8&)Y(tzNMZ~FK1?3e8)q>iGPrlO7)RmyR{I4@=HLfM8M6#N4hsoVa(Br zmF7K;qRWmh3=-|s$_O3TLVbi~hon_slgxIT<}fYciCv`rB@Yfcf?OXCOtcOtAQZ+W zp@sQ)m;V6BhbJtpiui?_mb#YfQrM55SJRiH3yOPs<|Wi!t@8>qbr=)4DUUFQJGf37 zl=+H*D7b;9W_D8ov64`9z%P7E9{0X63vUr<61Z=fb115it_W}!If86w;y$qRa7BS- z;%+!+GflvACKv;880{%TQ``ahg@e$K(Un|4AjXyoD|o5H;DFBGoT0=RV6I`o`9Lro zOWM?tR_r5N5RaLh{5yq|=J5+N17$#AIUpkw4xX+)NHV7}H>`--wA3w04l?oKCK}5} z{2P|MTpOLQ1Qlhb!?=djzmRxcU%X!oWOBKRS<$@0q+G0|lpcO}d&;s_4a`ce>8OEh zcCS!9%8p@81a>J%^BNIzZV#CO%Ws3lej$>-uHIwqIu<>V$@|H*DyCQOS7HEok1 zd^|%U)E&jtwkVv!P~n5{QitBpeLbfp&o1=%uWZftF+ zN^X^guPn+$maf;CWI<5ylg@=IVZ&D__4G{3e;)>~A}&>tc+j65%yXN*3pknCa>}q= zrzxGV;x(#-dujD<#%dZ8H<#e=wE&8Nd7=;a|o67mfNK z%=CYsK8o}T{#E|~f!O(k;Od583y0t!%C#^855qQtXS6wwFx%Q{`%lv!7X4A8T}-*c zz2KpBQ01Y*`Gdm)@)GPVF%E?_UB&jX5i2Q#R$J6)n_uFI&<@-a2O6vo1!Zv#RI2c* z0hTgufNwJMZSwk!jtz=hLgAssVl378SyAdgM7Cr@eO&4Kd2LQc}v>A38r&83-^jD{-@JeuSL-0`j%o% zyg8eEjKKWnZyO9msyZqG<7Tn228a1YL8$UvTH9sO1#Wh67nY@exKe7DPOrEsqj)=o zLA??K!t)urHU6RWqui)da&Kwp3|RwOrP~G7MqO=j?y}?FDO858AXG+<3-XBYdYXC- zc_jvO95{wsizvXljZdUQp$=~{f-I)6$H_3Y3e?CmPk5BUQM*|WX-(#G*WHOq#G9cb zi{)EMJXD58updz2^!NAXbDUqP{VaaAK`wVyKXc7z)6 zTUPalSkw$a2RbT z$RLEOai4)3xY6}6AdW)67YepiSAg`#Ti9#T;37Pw6ugg#bjVC2(Kj8$ij=~^9M34j z@SP0rbauc59eE(H^qD;eoO*yfJz$*8MP$feY}_ng!#obAZ}#P8gT%$E4`)yb?xv~q z5b!0*p|^;mHL6#w9`kSbMo5`8$V>V&VTF4jB96k;y006QeeaX2^Bkfd9V54Tlyl6Z z1=dCvajkY14gB{q>`<<9s#Cfy6~$kS-nu5TAbTg<@4##Bh>Sh<7Xsvt9%-JMO$ z#Ke7SGNnU4h5^lDGjVZCmWuVe&aCo#OB}}}rcu1Q2JOr{gZ(m$%QU9rZ_zo>u3oO1 zYZCC+X@dS7{{SP_zwx<#xBTx9pv&}Pe*^eerApL&YE(TJ{{SL>MH18h0GuOG3$pfDru6~yDh4bTP97oZhXNg|Yvy7FrtOA^HPXTe zC=6hzq%-DwrP}1dG3imnf_rh)x6Tk1Bi>*v=MxH9!*CZEx$S0LCSy|ju>2q;>{?BR z3R~soWBWls@Wnvx40_Rqqr=>^)HGZm z^5>@n3;tB!eY~Ottqn&k3`z?ygm_MbJ7t)+^!0rL`UJtT3^|mQmEL{jnK+bk=GaZ0 z;y3Z7QfGDQY8n)}_lQ@ZE6E*6qEm%V<1K+%z8Tzs+0+4UoC7wi^96t>m=j<;rQ)6Q z#2r_|Lizlo3N1NUJBSF71wTq|fYbj3u0C_Y;<_voD%nvbG zK7o@HEaSkxDxubcDBE)h$GYNzO_K}G}zPd|B_QrF5 zNGQn&T^LcTBGoYXc^nB-OMIUPiFG6I1DTzj=vvEDm9nHmY^Ix)&y;}R;gpGA7&rTs zt}c!6$F2EWUoQ}Oc6dw2IH^UL=OhK5H?;S6?MKFnmH1+(}M&-9{vG38dmOC4)fmF$H?EqrzrufgTd3h#3BW;i`=< zIcM)fc*2TVvqBghc4_8*A~6Iw6H=KP%(hjp8AkDpna|7(Q$L)XPxAu}y`YBL@`jiR zk0Z>oJ5|zY_n+)T;##bwg<`$psAoQd;&>mJ4y{EqoksiBLVV9cKhCaXx`VV~9b%^s zGUTr3wx#;N)5oC&@hDl~Mge6VL_TdN6No+LR1Q;+7B95B{F0)o9kXpQ<>&tZHb3}Z zrGED zg5G9*;g~FR0qT7zQiS}HBL!{gA3|DJ2vewD9J3YKv6$rWW^3arEf-HQlq1T%CA?>K@yJ`G9I2KRrUpdw3E7lPP>+Qwod3v8HKPm~()c$g<6q;!sO%Q2A+;bUIW! zRVn6CSeFOT^`*ftTq5FRr5x(|1W(KgkUL}n)E3~0#SnX7m=qZ0&Gk?uRH9SDqoP9X z21!^mtYWV^+dokXiatT`B=*gJ}8RaO#rhtVPlJb=08lRet{2#N?&P3Rx!(ClYCB%L5S~xwPqHMQ!l0izXiwLrSZ%! z%z>)I2hO1b7%qc79w7Aq_V%Ij2tjwhX~D9YE3$`Bv$EN`r}s8+^xj!PM{4m_Eod^Ck=~Djyf$37c zFZo>0t^WWD^-oR9^uJ!EdOoPf)~8;VE6{&|2hcH_K84J(i!+oqldSp zK;PPIjH?OX7$L@~ecoMYoUFr$!@u7<6Ofsl>9u z$n;h{3x}auM=s$&VL+DH=ZKqp{h$}8q_K$Sg~fTrUep-&8|DUC&ynCBA`b15hO_7@u$nD%EMKD;2wVe&I?5Q=5q5C+o; zV_q?j-7^sqm0J3l1OsLz8NnIZmSv79j18?mV7Y`W^U5YSmGL5x2aVUVy z6HJa}vYztva*2oWH%)Lo%na8eW(tJKalw=xQLfxd)K#Vp3yF?|s~i~UT1%U?eI62~ zP!6VWuN8@B?iyH4+$3L60@hZ^y?u36s9Dt?fc&P2Yp&5vdv9@Q$uNs0_GMUN{(cnc znGQLCCBs7a(Co62CibZPF|9%X_5=e9m&|L}&BZQND-GAY0kvSho4G1SiJxdQm}3W_ z88cc2vOqKn*n|t4i~ft@?3Qh-#IBjhY-XiRCSB>o!#_H~&}wI03r`=LwxG3bP%bcV z8F=21LFz9hxn5%I1a(ca!Vvj_*N<3WKpzVC9wQ8LqWjG`WxLKfhte2vP~9Wj_}CX! zW#9$%H(qs{s<=ARGuvFw6`|}kJa`%7sY177*~t!aTDfXG(^c~E1#(Sy12Z7*RqzZG zA?-A}xPKb-NpL|IasI?L7NjoHc%_Ts&%ZE(t=RPDu8Ew0q&0HL$X&h{Q(QLhh=4lE zQU;wP;~dMzl`k06f6P5!{3{-(@PCC%{xyEJNAsvZ!llR3zwv!9(DfV0C|rS_yLqWq z=pEo^*$JZ!y{720-AqXoz3`YYrF;37J&}JA!pNwl4h;_C?m9O&XmZYbEkY~Ar6Z0k1OSMnAv*?zsD2Ud&ngNyl!Q9dF1C|lLIZ$Pj zcz|910HpjN2DIt`Q;BHN^XhVU{C9iB#dbM~pLRb!r-VgiA)lC+v^Zs2`-X+iV8!;I z8er80tm^5rOd`D8ZL|#LA8KBu1!N21;e^2c4FIYzTGpN>17#dO(<17=G?W>4n5>Sf zS9D-$DS>O7^p;;RolFvN!4k0iGOL#wsw#(!M@dzU+`R&=sBJ<&wsJ8Ye+3-iAlq#| z-sN)*u36`aayO&hDQ~ID1`kVQ_&<7Q)(LZLsCOvh8D{I1qj`-RiOUkNX})Wi1{LBf zDB~H8HN(mO4|!$4VNh8Lt-`R}RkARL1%HN`IKJMwodE9h-~*v}^4z zH!fkTH|P&Ai)Xuo=BsR5>erRlqYw%?Xini~%+=Cz&2$K+z0esT5W`d+Ce8VpGQqn1 zOs4!Gagtfv!0@$jGT09zF&3eM)zb*R@rPxxFLtbEDd#^+D)^t*L8tkTlxI#tt$V`K znt7_h;U_DVj5B)%+0~NP76Ym6q}A|>Dt5S-EazYxFPN3jHqH8kKxKo(!%=6Z!%@-8 zN|@DieJ5DmxbH5@GR#AlG*+PlX*y3Zu-xrc2L=lMTv6EvF;KG0-!~7}dr_b6-`iSZfBwZ`|3(pi>+wR2zyF-CqomI&he7R=qRMSjE>#K~%`{ zaGFlh?=XC+{uTTQf5M^v0N`axl`H=ME>HZc)wqA*Ua1~dF>Kon%|Z8qV}iI&VAI+L zew{H^kU& za1#Mf&Iy4t&Sl&JR;6@x!??T)Lvaihczz*S65J(PT~4(!9gupBzjC)6U(y;w8-mu# zfHYLAYXR7YGL;xwCMqao6vdtl5X_h+EN@OIgMJYz4sy)p*$8tEr8e>60kaO&!w_Pc zA9OX)E>Yet0h3I{uhh2ArJaBC%k^@Cv&2d+ZxVowFNweb_{KiHYuEWq)mhYXn46|{ z>4;O#2?|leE}G7EJ~0fP?=4lMZQT**bJp z>bybi?j3zYwQ$dHs0R8Nz7Yhi!@z%-sa#a7JxT@4gJU{kREy|qi0!nj9C(fgv4FSC zD(S$1ZB97RfcKoLk!3rUG39)cH6%X-nn);W* z`|by#FFj2nN_29Emz=@oGk!^f!nQoiiKjAPozSPevyP+uzs>ZwxWmuHzQk_73=9+4 z5ig&2`j>tIpTEMQj!ZwMQz$bORvREGM}`HSOZSGLbb220ETf{LIt6U}TtH)GkM3JR-xu7Fzxemh5y!JFW+RYqj$?iVm55Xz zSgC>`_m%yk+)~Eut}CvgXp-*Y1@=prcMK6x%nQX8dB$v3~(GJF`)>0R2Ku16@uC5iU@kRcV6JGZgUQ5>KI>{nqv&!UM2}c*(rMT z=?!in7NhwkLYUP6HwhffvOyR(G|lFj;6Mj%Wu21(z!j`o@h>f@`j!WA@ak%-oN=De zZ>q<2?_%%_72Oo2_c1{V6zPe5K&Jy8L2VWc?q__u7pPziq00K0IRM!j0+RDGW9}8@ zs2k{IvJ&40sfak-bRX^kg|=cH3e{vcrJ8K4uRN*~097ZGCy8h;I9dukP7q+i@@8%! zZRRMokT`-)8R9yW9kl-dZ!l?9>WDdgG8-FHp6U-QWFJTvfx24VTi5WAoHiz}(TPHV*KwxxEN`joUl_SHP7Y33u5`Y%v8ul9NPjAM1zPmv!1-{5$bH>raR z#cWj_ox%0v+U1{#LvK-i(EcGg^kvH+=oN4r7|ni3OH6-kOASBF%|`W7$C$%97n$JH zxH^MJQnM>Vv<;AuQDfxlB9{n;v$=*-dOy@_6pKO~`$o6ec=7yS{W6aqRst#u15d z>6ZYnWqbIGPr!dVIDwD3PZJWB2)@#cCUclJe;?l&w1AUO z;3lF&i73vDzeEIVtV&^`pWiU{5)d6d%xzWXU>2&nW)KFD37ilcn+Di+{0xm@PZOm5#pq(f zB(=0rwk`pN1g~jQt~k!_G^SsflJghuG{37au#73SA_@GxG?Fd%(=nH|-8jFr7E> zO1jj-^9?sEfM<^Vy$@gA>Cd`QY4Q|D(b0O$M}#l|<}LZXOGlfQT`me!8gVmth$EDF zT>SWu>H!DT>y&c|O5$pewzeMZV%|t<7g>%NkL6YJl@hdKVp@P!(a)nSUcYFxLsED% zDrF$t<75X^9ma&6W2N2l`pZRJM6AmvEyUGwZ~B@F;!;pdjKeTZCm(Bvv(BIhg|Dn= zl@nTtQ#Tw5DzCJ7R5epAA~hG{Y9UM<&S&sSLKHAk#p+ARqFO|TqrsRd_vQk*3le?< zI<9QCl(9!Z<%itj_vQ-XD)yn&z$^X0XR>$`WH3vOLej8(I+a^h#_=O=maIr+H;5{y zPRaQg=_Pp8iv1xcV9b6T{wZ@0poqHg@hX%u^w%&dPq2sXW=hv);o>PNz}peL41_tE zql+RVMLqSOrdy<3JsLjd8pZxXz9lwIt|m6E;wDXtc83eZSr!9jIhemfyuf%WvNf$= zVSkuljDIq5f8|8w;-D`&sHuFvlM5O%UvLE-Fo7+^{jS5O#IJcz+OKG6P1XFv+ZX)6 z)reT}#M|+ha@w&HtuSxN8k+~?+%n6GnfnQ4LlX|7*)f~JirOquiHjPEXK+F6HxEHy zb}?-TD*phEKb6DzR(&!2ALH%lKDX+6ap`isS0J{Q>4A509D{H%gtivO9tpP8#m`uN;DvaMTDjY}@>5ovb zwbN(^xWiO+@c`}#LGVFXOmVa&7|!7V*jT3t?4)cG*JW?XexcBMI57Y_=8c#@4x0;!1LnP zS4k?+b>~O*c!agYIiasYBMB~Rt?IGJO+mr)DF!gfs+FNR&%9i;8jsVz3;z+Y;gQDUm_F$c_r`T7nCnNc$pi>XaHn52}R@u=h~>SF_xW>oZb zxB7l2Wz4*#McUb@_n@D-T7Xuj3IGHKb1X{`+EK)#xnB-%17i}h20sV@DfuN}V}(Z^ z?V>Y%gBR4u?A%4_F}H`t2CwE@ zpc4~mtIQCBRSpO(B^agp!WWqSQ3y*`whL7K5{5GBdu3-)uSQ<;1~$in{V}`q8nKtL z`9YN3LE#ioaQGy-mDjM38DfPl;RROi^E)wu`ytzklz>JFd@M_CE$$Bl<3^kAUHFA~ zQLT~rO6ZnOC%iZ#*3NZh%}NJWZxgA=E;sQwYa-%w%cJbBW`DskbyX1@7}agjI)nj5 zONIO=y-3M4(s;c`Biu+Q)E#w)n{U)spfPTx&{1degmKRMWnzFHw9NuN7%y?!dyL$0*&HermQvMm#q}yFZ zj)VJ%A295U4w+Ci<`BGMBFHjg4px6R#1r$F@iPtF7iAbN>LH&gQ)@(LHV+jIBrcGq2!!RNwF)<-ek#i-nK063#*?6NvLuB5qhG zgd+#*>BH9RHArFC^4p|Sn_}TF6AgRI4yrHAFx8e_(Pdg$vhzl@iifI{3`ZUT%)1+< z*>xO~6`m(v<{@~93@P9lN+{L97Z4(Tl9Jb)OxsSW zbMYV}RJc*}QS43KY4aD3;GfH@?9^ip`JWQ{n@axx-he^Z)(Gwbdj9}Y!&9ko1)f+= zE(BPb)?>u24B5;bt&HQ+=0lzHDxAusX#D$1kOhx^r5};o`+?J(#@mXWuBOOs=CVvj zFYC;@?v5RE2=!y|jKx&MTD)9P^;<8w9JLIwz9^bz_+e$eCx|1G@|i1Z^9sd1O7k@k zchWq!%yJ*2iCzYSBld8{Bgu=hpJ|o5Nh$ZY8pFmR!g09TSI8Qe%DJfRZ@06SzN3nw zh4#ZRd5(3IN-ajZ#v3p^v_uEq5xm5mUX6-a%2m|K0Kx8y*8+6<66f^s2t0U(RE0%Q zaMzu}y+7W>lJI$ivvMRJ$XwO0vvVny{{U?CF7q}qSe92(^3Xb5dmKPmsHF2~`6dB> zdXJP{xYxUVhe%-`B0k0*v_c~nAwLJT>8YuPJeEIBr)VrG%qaX(iT77&^= zkc-q5{{WVw=(-Phuf<@SJ@AYCSP_Cl-Ka|y5`^-5r@x5I_=78EpAqaA_QVY(se%6h zSg4yGABoxtF@c8r+P^Y`iYOlCIl}>qaSOi$#%T*q_Pm@-t(jh;nkf|tIStAl;--LpZcQo8_$EC1tn!e`@RRAv~d~q-R!q^zI z=HdML-9|&j#rHyOND|{H(&d4CBQM0z4T_I(iB&8b93l5RmSYL#nG3Xg6-eL2#RGBR zxU40ZQjzApF_7HvdW0`jn3f1@-V1>{=3(*Q%p_VZgY_3VDluxFS>q1n=xG-Ur%;@0 zHszHBep3(T2$5dvj>etku1k!s!W2yR!Q33V^t~-`SUXGue8u?35v$xcO@rnj`$~KC z?J<-D0hl39;Z#;;BN~m}%t8}BW%$IN`T8+ww!!Vh9mFE3u zUpJKY(Arp|2z9wedww`YeL{(vfFEpWakwv`((!BFLkCILd|w?w`-&`U9I95AV;EZe zLz)cM@r@NY3-ZEDI|8E6Fx+bMkFol~TC9ij01^3LL->^kn66gRZlLygm7(!L3K)kP zrm4j%nsUIg&xa0SOGSVCF>Ison43j?9l>LHqPkbSt3^@oWW>CZ)#&5jh#_1mq%NkA zyOvXJa7qC6ctjxU;DuH311WR#jJwl4vlv5avF$?S}3I!63%v5G@ zJr1R-mRo0NB}6sS155KL?5Db;Pu%_AMkG`~Hv#J4RI0?HgLMjf6Bw@7OSB+#D%p#s z5DPoB@dZpO#%1lpJPR4LJiga40T*R`z*7Y7S9s!AXdq6!lb+*@5y86yV|Nm4^Nlm3 zF`LvA3PDeJ2xVCu#`0BW^9-qdrru9@V>xwx&}-DN^eX}M49?C!%WPxBb#*udSW!3_ zmeJlIOKzgwbu<`ZsOkwehLdm&%$_B^EV_%SLPtUFThX2)HdP92q-`~sfzD8e6PIxY zG|Iy3D|a)7_rZIy>H%hP&^-GxgruElXB_5{mkD+oF2*rkT2F8^%yg!`;3aF9iiN5% zM^eNtCe0#<5pT(&%|RQ8QK`zr5wywA#B3Bu+vB*<_>>o6csxPauaMyxP+Vu(>I5qm zZxDV1Pl2I>wby4+I4Z9hbPGJ%G(6?vh%v%4*d2aD##0bMU56uJ-|Kk zGs7|mo7@q-Gfo1d6R2H#E?*pslFR}l)xM0)bqfxG8Z24S&dF|(b=oeA-I zVX1BA-{~mZ4VOVY5|2^?IH#}R*DulaW&Z#X@%$OodH(>;V1MqM?+m?HAKE?yJph6+ak;5`^tq2qJsJ9Ma7sVlP<=R=Z6%4JA5w#eZe}eI zd?3M75A7|eT$Q(oe0)r`3d0|0fEWvkeG-K1G~W-X=1*1f-XWIV&X(7QQ;3cj^yE$= zoxot%K)i|O{6R1Q9YmC1!kqd@-7r@F0G!P05N2v?+7nLUn-&j<2x}1S=*$O8vR`V3 zh1NG3DJiYuSXvBRRfK_EAe67(F&8gfhU0Z(u&I>*H9LZ_1=nda_nzN!sgmGpT+|B= zw-t9!>?K9fO5(OhH7b4Oa6x8=eL|OMyyjx_;G07S?m`T4YWBZMW%T2IVUO=wDEuc#Df3B}OLhS=4vD7?+l> z5keScozPZtd5SiAaXayTSYryBoa@|59K}}ypP5|k@Blr{9ws+hKRv{SFE`5jCbL67 z2#eyY+A7-?`KZ4U_^|jDJ<~DlU)(yd(G=PxA# zXeY(M4Ha^RmzDdWsAq!5N6EIBmV#i%U+{ZEpv>UdS?{Q6&@v1y*iETd&Z2w zJ=nJMDDdd_mT1z9jfXqkBsx<5>NJ*fcB9g@>BM-x=L5tc)C+G+CL{Wk`zQQfZWVQ- zXlULuPZ5@BV=HU(E5cNH?%O=fz784kJxYSJMJ*D)c>bSS^+vCvhn{mcnp`am{i_T?i z#V}om3Mctue9BXKnW3H#MXA|c04iXX_pNX}c6*xvj!`H#Fk~X}G`NG|r{fUQKB{L! zsz{rt4P;H8U#VvoZC+q{b2VaMo@S&H>Y_$7sKsh%_=Ynz7z7{ZQC77DmJ{xA<>&9x z=!NDctwg$;s)IArJrO($IPhs)&ZW6bx0FL=`$b@w^<=YK;mkE{^Ys}uzJW_p<9H|YZ(pm>|+>b=DrpJB9C;AL(4X2t3 zW0AR%xekg{{Aw1kr+YVM&k>rGqN=F_2?fHNOQ?3AKA#ISM&|i^Fgv-mlD|&p4ZO1Y zre%%F$<=u389ExKm2$rfwo)zcf(e`ZNN`H>aVZW&jJ6^iJA)Z0s_}S~8GZ{teo0ue zgP&22)0S_+3jh-p+&Uci;wmIq3|X`B8=N(KPVoe;mGF_FO~$G^j)Egysy<^?ZCcAn z9BAJ2G9>k}#PG%FrvZ#N__~b$`s=gP}NIye^e0?LNUQTay}F z)O5u+E*S1rT{Smxm+>jrEOqV0e(%!1g2j$TA0!&YR{N229E1Y+iQMmaBr>#@Xi>lo z`y-FH-V1|Ku>@tE$IZ=-IF{xP=J|{$ zRJW&aJXb=*KTaZY!x_Czd_m9(F-ItDPQNVoGB;g1vE!H&6S(wcdROwVQdjX`Oa58( zzvExT^?g}T{u}gb()~zk9+jxG_MOF-#2;*PKD_=5#@}hg-Sw)Grs1ts#|=g*LXFDQ zcm=Cmn5)F5p&DZ|`2!mc-UfE3< zhAV&=CHfe-!RTF)TViSHo%4PnPMFoVuA-UNMm&gMVOO0?nP=@W#!yx~2NRc9Ey{oz z=5OW-u@>w)h4PBpX!T3JAG=AZDX))Aend*0vqlkJ4;MMJ#L@ER7}MiI5PaqJ7+I%=X6>fq2BT?8bzIJsG|0f$#K*B&+uXIi+@sMS z3S(SUY{7iQ3r+)yL%&Bb3^rVA9A09JR06KHFd!HHNrb3Kfxv=%kZR$LmTzR#(p~N9 zokGzPt@Col#7my$tY&1A+POzFIlJ^^%;J|jntBARrs9NgnR7D`Rm5Ui$l;kXl!jY~ zFCtW^!5&$@6O&gK`ng^m30RCU81)s;M#Y==j}f-3Lx=zr6cX@TRvMm=S z3hM^$UY!;1Q$7qqvK*`)4B8nM2Vm+2*qN?j0Hmb{WUVWyb_ZV(8ypVB&%_4Qg+psr zo%@lMq@w<2HuEAwO9szBcxo>tLZ;wil!2`qeBoHyUYf--6oWRHC7jkJ%u8Vd5d^K8 z=1+fkBesX+fPGBm=7vR72U3^S#4~Ko%B-+@8HSEOVx=8v7#E@v+pfFaHhhcd{UhB&ewD3vHpWI{{{Vg? z<6{x|rX}mY;AMzCXce4ypAevKb1#H-CTkRt{g7YC2jH9lv&o&81O%wBJbcW&vAP^Y z&hb~3lqWCl)O^bj5;P8(it@+$LYbEc`ut4juMj`&)I!c?B}sc&nnMs;-!%hO16ymH zFHr1rn+ zkN*H;XlDI{)>$Dn7A#|^XNct;ufL*8E*b>|5{o55+cXq22t3&Q&lIi%yU6?IV}`IG zw%})zpyCuBCkBj0A86!44OsSi(PTrvY=eF|a>_HAcfBfiHt&$Q)dqFoX!7wXA}PLP zKL#O8g7F{W4bltB?cPxPM*t$pmCKj50r~rv0AjTnPisVA8ee#g%R|IlETZAN!G+Cv zJdD0p@V)6mz=`W?n``Jdu$=m(sz0C15G<#BQuW8oErP6iX0Tb>baxR~m45sk1FxD_0m zhExKHvzUv*XkOENMe!HVq<4NMOlDb;NaG`f@^db1eM0~(M4gC|8-Qgd?aMNNi&X4P zGrI;RYi(ySX1X@*tuz`YkGT5ih7m_WYfx?~3Qu>I}0{jLP?M$Hb%ot?ezeU}L| zDrW=p5M5O1cGf(cMqPNWmHz<6GM>f%0DxY|2xxfw`-EtH$wpi?g0qvi!zrL#O%x88 zIrLK#6YPGt*4FVg{LIcX{4d1bUBj?Yx@y(!FM7H;rUVQ!M;FE7hf&IuPnm!%?57do za4Xf5HLzL1Fa1V=XS4{!qn0dh$l_?gA7eEoDZmePt~pJoQXU_>P@r@AV~#U9Vx=YB zLLlFN1?Ad~DP`%qaVTA{rNs{6wlTQ>04GrL8Oq0>Y#<)&yN4AlL+TQgD{!c&XQX{! zU4IMoeJTf`FZr-y!VJIR%+IC9U#E}ao~NVyFaH1y{?O(OeK#@12@TZ;624NiIep=@ zslBRog8ak*v{60r^grKI!I1RzZCSHZK9)>hfXUTi0TeRxF9LskZ`=*`&@5zjg3QsA2p^`5p zqW6R}ZsyhTEdZHccq-2G%=R<`A3VdfPhVDrio3xJN382Q`-gYf`+ zrLglc`9B;&a`*AW&^bdqKo6(%jJ+T6%;j*`#ELcMQ|=>JOQW%7U@9oAMQI}7vQ{DB zn@p;6MW%5xkvKY)nYD@LR26)YsWk3$1VGwV4z3%zU-xktg1ok_qLjc^t4L~IRZFo! z-@LW4oFmH$G(F6A%YZsleOcixPCjFo>MYQ+qo^vElO#E<#D%Arc*yni77)KKlv(enw?hKd|bc)^Bw$Wh!0BMCNQ|6f9%cZ)NVFA-#VEykoZl&?HE$WCX zz99y znJ4g<%E9)&n3uitJGv|TgW)(MbOZg$y@?D%51R8WPA82wLH8j{HAOyfLtg_!+Pjx3 zjI>3KdhE~oAjnrEH9D|tu0I$SI=b}=r{{XH#bF{DG(e#Kg zhZ@WzrDx&BL-#UtsrDt8JAE)Q3_3lR4d+z{!;vnVz?Q|Lb;Se_l?^s(Smm+i!wv3F zW1);3hT_OudrkA}7PQvmJzjIzfgcYs32HMy>=ikd1B+;UO8Qhf$vE=LH30571Kwo{ zUKak4n25`!b=2!_-nuFX^TfQqW~~KyhJveMR7G`(qW><=*P!C@(eO zWS-5acwtjXXJUilDjZcq_)!JaX~JH_X7bY4b2!ANUBFcLh?SBoOLrJ=07EjST7|Zu zDkBTq6Kly8+oI|tV%hE(seyF$$ENmKDCba7`>nUCel>g|EX-k?_m(=Fu)z+Iv@ zFU(fn`ni8ly!p2p$t8H$cvZt3UZ$eK)Y4fQ~DwfC@c=?tgN{t#{H{53va2!ronQrl@ITJh4 z0$^bt@!^_K6i-N3M5YXsYba5R9ZNNh=B3^IVlrzB_7)hu)gKHo6~)~rEB8FK2vWLb z;Vyb-6GxD&wI7I<5QTo_ z=ehbrbQO*UI5}lN`B09|qvUKJ4hVC!U4vl3ykh7lECo82IT@G5iMu!VP4QFtL9-0#v|=D`FsLtmh+G1P#MHJWVitSNu#qWO^!qjNeHa z?e8x-<;-}-^;?QqF@D(6S93C~-_N|PpK^OE32i#Lo#GXAL(P0gS4>{wg5PL#K1fXkO{s)C?h7*i0OofK z$;4^sRlLnBsPR&|<_wh;x`e~oTrtF^VK*ER!fbWKW_Wnw2SXZ)+Ng_z-YvZM-y#<4 z@((`J!Z)GQ7=Y^Hw_BJ%Da6G>lUYqD-2VVkk+xtcw?sxb3#%UfWuvlLz8=WBwAT-x z#34lVufhIOqR67wxR<0U^U^F;3Y~N=6%|Y2xCyD%$H6q5R2@{m5>QK&iC!?a6WV^$ z(U0KhQ$tO~;t_f%m%$w3XdJ9>W7xqxrNd=sK-apnFJTW*`sXng+(a!g05*%cX0?b7 z9f7A2xl@yg&LF@tdUo5NXtrxbS6EP0G5 zHVxgpA!1!bFDlC)g2<MvpK%yp6m~TUK5wza`f4o`{w!Jf7b(Y%Dn9nm0TVt8WG}Rn6>+r znR+>aba5X9tf2d|wPd_YnFxYlTyNq941iylC=Qc|aTKbrY|j4x{E;0e?#0Fb0KXVt z+7t*0%%(YFQfkkm?k3MpP&Qr5jK?6t3hk7>V}f)h2}4_BYiNbTLjxVIj&wQ{anYGut{=6})MM|U=6Uy(E~D66){_`ZFRnB;G~J)uZ%2z41s?I>JS zTl&B<`!^}jzCn2EP~VNK{G-69qjWl!!W|rxQ{q~-yKWsAg~Q9VBx>AG1;MYGy{i0b zRKPQ%S2FM}yLbyE)0y5($s&Yld7Cv3y zHBG>Dw&SNZp91F^zUH19I?q$OI^GKH3L)|LSyH;syuw$txsD!wW*-I(If`lpt6=9l zgpdt1dyy;RI!6$)Os|654wO(2qb^(5q1?Po)2ITz;^yG1yJF`0tPQP?#K*>iy5vY< zr6na@Z{k+o*lN%53%sFn_-||r#pT=ef>gZ^27VV)vdwtj9%?&qTjP8lB_y>8f}OFn zXeNRMmv!Fk^K&hxhaHi@3mIUoL@M!_FWK_sM{4&Ii9$uFEBeWJcMmqf6mVhZ{hkXY z8%N}EiqqUZU*t;uIQ6gNU;0<_J#*=Px9ZftQ}`Z`uc1+mHA)}1(Tg^+_&S#-m~H92 z{r;LuOFjrFAObZgPamc$s-mc*)g3_dDV5Dc+|6!0`W1#2Ej}hvh9lXB2ikrjX)!Kl zk6`zL0b`oj{{SAMGbz+bxYAoG%zh%4VkOq1eUD0EiM8>6b3o=eTQEOzf{e{Mn49p0 zV&mpwc@ULEDhBw2xH(8LZlf${q@sBx4ufwFBbe|t^1uvH+&rvvCsQ`ON`|vmx6Sm& z#h&Ba>Sen8wnQvw>gWJFZ!=V8px2(y68``b@Aps{knKJmU~VU;JHOgK8b;CQ3ho~O zE^?0_5Z5IWL9Yhkw#q5Oc13nq6Hum-qS6Hwk@o)pFhhi1!Njpp+T3FXCT}snOskvD zK41(U81@N5yVQFk-!-~}9x{;2tdYIJQs`KC>Nw(8#L{0@GgPRVxl4?LD1D^F~8@q$i~)qRp-k>Ib$bWA_+< zzr`m^qW=I&nMm$*Tdy;gI8EoNd51%kXp0^krnJ2bqSKY&dcyNrp38VCms40C9o93{ zTC>w@Rq%ycfMtjWS|wJW69R6k40NA+u9dyYRHy;BlAYy5k*|P zISA7fn9#mPD~q}AAT%oAIjaQ}C_lWn5~OBdJuKcl62f;RON4&*fB^Gqk>(zMQfFVM=LOrwHbc?BwW z5Fe?AK}4C*6cbm`I92L6zqGLX+kpl8mdSb8rb|$)%%edno;V287x>{5PbOF4*+^!u zPY@#NA+F-FsEo}bYuW}QeJM_S$7RWj4nCpdP)@k{O2>O&ey-{)=jq7eBy#F(#m@lJ z=~W%fqw^N+rNp2<^0BWz1$Pi|AeA3l{!Fjr&B~Pn(!ZYlE7HIAuSQ~Af05~o_v*s} zT?DXu#MtzNMCaZcV-8sJ@APnhjq8VV9T@HQgGG&w;B+hmwsiElnqu^Kac_v2-NyMr zl37G(Q5_cYM~A{J#KN^X2<}zs*Y}CzFZe2Qnjga_Rm{aQkx#V(%3tHv!Z3Db5mhj| zZA%)NnC0NiyeCd3LaPay2{*(WbV}|IUX>fI&zm!@l{G=uz|-*&2P`gvvpc~8;mVyb ze5V;g&Ej;g^M?<-L2q9Jm~RY+DLIwD<#4I`j@i*QlZo!7kID+JZg;v;1;+tK})T?f$0pE#@YSF|gZ3vOAVo(em zMRFtE=>W!O%NblJ6vVluT+Q26Y+8e(Ed0(O34v*81GSf&Lqt4IX0(5IA%nKfAk=Zx zJ?MlGuMyc#$%Eqskn3|q!MQO#o)5Md^rp)PGSqD9RNFjEsO1^>fIyb%%PyVP-6XiAqP*%ey86L1pBb}9?WXM*!q=Z|Orm+c>{Fvz?z zf>*gcMZ8uk-Da*eQ9vr25bm^*fa-BN4{SYcXo{y%3mWN$mkyG>#hDvb!`f^|ir2wa z`HbUHu8>9#k@zN@4UGVvCp~?Qzw({m)}{5Z-~q+)7_~<7&(GM5xM8 z(A=@LYjBXfNX9H;O=hA_{`PBET{wn`Mp=QlT5t53ETcPmi1)%+oiOvNb9{Rsim$r% zaj>KhY6Vcmet4D$tM|qFa}b1HM{DyfF9@vGc#J^78((KN+{1PPD$v48m0XgqoT1L! zwEp5+5O(eIAOqr2!)SVI7jnm_1UQEHWkB)kJrAbR!*f&^jOMTKz`-}40h*0s>IMuO z97}*SM-j|t)>wRBFbb`UTk^?_v1Z?xSw*sT;I5uiQ5dI{*b&jdnapZk_AFtpdV8W& zvl*W+#7Gd1&Fy?fhkbM|>DpUMli+=aQl)`bMe)SwS3#s2`3UarabOOJ2$Gg^)u7$#z=vNJqJd>)a1v`ov6L<|h3 z1fmy(0XHgcit1X*a~x(?^(^W*!BTNG79-SX)UOsxRZt(s3`O=-EKoNWn(dUU7ccm$ zu1v^WHC((MzGF_w8hERyy#p*reJ7_&E|8I;weZF zh`F??++Y{)5x>N@a@@yChK41^2_@T&~mR8l~uVc*8 zKG=Ac;m1rCm@eVL9sufJo zHzeWgc!Q@!xK!xwU|z$Aa~kQ6Yl@f{@Iq(K<-q6`6oCQa$xf;;R7zIP5yzdEsK7?L zU@dE_&2=iF<=S%*xY;?+1OzE5iI3qc1_a5-7rq6jy1X*iaFa!MAjz^{1nd7l>ky+aaI9+!Opwm?b0 z3W7@9TFOfeWvuuT(UT@a6A8`W)D^FQftiaO?99nG&DB>Pt~y&zg*kbfX4T_3uZ+ss z)tb87F4%_f4>NO2hrl|8e*pZq2{_JoTiG{OsmT~u!wlCyG1!jqtPnxKaq1c?iO3kQ zVr(zD8=05aI-Nm`q0NhPv)%*(3*nU0RDtTE-~?$2+Xzc@7$Txdl^^^A{{SlU=$@JW zZ~j#u#00m+U z%^qcQ6?Ge!xtzx1#IeNpPF&qeN?W<0X+JYZu_{{i6Iu99BYEci*~RVG?;>S_vmKG4 zFS)zWa)araj}YV84?-&4VBEM*MhqPNfVzrR{hzu4#oB z2NAG$cgArjIe-`F9fuHw%b!ZMjLIqvl}yuuZ;6y0#C?Jy=W%P{C4b;OSfhPRnIBQ-A6*m$lYWqH6;#N^8$o7{_%qYcA zd_$=<`8-!sBUn0KAk7WYocV!RmBMox28-@ucIKIIwiCEez|29^UH1`fc4B54cmdFq zwPsH^>m*uf1m2>B$RAR)m{c;$e3{=(%&t z%|WS?iE3fQ4n_cj12k|>>SES*IjO(#1d1N(mNd|K;mE%s8HP(Kah;N?VV@aXS!duO z40qQt{1N&#?;^bZu2Do>A+qtZfZ@UyNMVgf;Y$hijx9%04+9o8g0E+k-wzof5RE&>;* zR|((D8O1lA0u>Fg%#bEHSEws}OX)a_RpRf11qRwS+OH8LtOVv_nL2 zkF8}r=Bsk8pfFg~Ja_Vl$b8fIQP!%c#pb2Rfgm;)LkCP}fy9)J=wfu5#} zZX+!A^kg=}b==sbGxNdj1N)fO@;unQ$`<2La&>Is8`N5v_+^b@pb<@OS=JK_>QR8~qTeYr}^^HVv4F%WSxOnrgBFXxGHMCN5r3SSK>5OW>!OU@6GV;mImPnS{eDAij*f zF?oq|OcdG5Tx*6AE!=5T#`~I!&CSD!dwYdyVHDhM@f3?XBg)|Vtma^EaJ{Nm2#OjD z-%H}Vh)H-Se6Xri6*Uh?tplicI^G_A<-DgpS@{$vajk;h7fiM)D`=zPd5K?j%JTTz zwp%qXrYJnhATI9@a;z<8xr$)2Uj(yhU4vti)FV+P2%O<+53IGija= zc$aKlg8_Q2j2ri@(BOH3Vxqgquki$^vu^OGl4oh*UU`c1;vK!UN$|n0=Q&wdtj4)G zMl~)Ik3yV8oWBFcbsw94U72#*hW)vevC^lWCBuLz)t+a*_L-XVa^*A)gyIVc(>UGu zC6dH7Rz9ed*YkkUd&8*5?oTmWl7e`MsHj}xFBu;13-*eh?X&J+1W~q_@eUmqRqYIl z-DiEp=R=i0yaF0C!7?bRI;Co19DIgEsU@XyxOBzp^nbZbSP>=|aRr`vaXiouGPhsB z2%a9SE6qnq2MAI@MxL7f2dn%aQ{VW6uUG#7bvAoLnW8UAi#2#F$V@H|5kYHGoP405 zyV`3f3GKkANV#)$Y62Q%f(k(g1h53a`GFkh{Xkn%np z9{uz_aWYn|y|W|S5fXyhvlTo-)8>4MQP~=$?r(GB#61!7ce$A$r_2Lns(OHM5^=Wh znlIiIRm?rX!Nj};$tpS*^%E%jPYk&NZeheN&0Ks&4j*}I4NZK@f+6RbhyMW1na5a| zyi2`lDpN-!yY>|O$_Jp9s|9zZSoC3F_ZWjaiGfvIw>&c5V?r&;Vo=0DK@Adv1m*lo zwoEs}2RsXyO)^xd3uM+}iEbQ&%EOO&L2+$&^ZjMi1KCNrJr2GiSENAd6*s7FuyGcp zqCREhck2+alWZ~RHjPn zIyD@((F&@@4`>k5+PtGx{lZ4R&Jn^#H!I2)y{UL1rew~RKJkyreZ+$yNYfuulO3fn z%Y-%HPkhtNF10zDK?rWu&)P6!?yLT}iI8E<+h*_jmDQu^y`E!4bljOv^Tfr9os#ue znaexlich3ljXYdtgN~Z_xlNp7F?iSFHg*@q)|-~reTMpVu$F;q8ufl9dVsEQ?i_v} zxL~kX_ZjA9Uf~bmy7Zq)NOI=`gsFEz7}0KG-53sviceLN<=>jYY81C9jlF&Sm_JM? z^Gvi}V4RH2x|wX$M>*0%s0QNC_`frV5*)>%vt`?d%wq{eAEdE+^9S0@@dEMy4{7tw zNZejo1aNUSy+v0Nn2EW!?ucIQr3uBe2i{`S_g%!wzn2H!r-MYh#HcQ7xs_B<#B7-& znq5G2%YsXl=#ypWOn6TpI4H*~JCU3IM1O$~;CeocsQ&;9{zs`d`$Jxah|HP&zJjv8 z9HJ!Sf>@Hs9UbZ1yH@cN%cabtx)0hi%WxvF4D^V8%)|wJK&r{qRp*Uxkp&mi1uVx< zyc@S%$6hKvn2k&|oGR92fJM1QhT*t6=&AdT0$GD8nihyFIDXmfLH9X)W@GHjlHs|T zIhS@oH*$bNh19;5#yXUIPf&vhan!Z4tyXWlHKoaNYh`Ywj7oAYBk+DF(I|`bKG=YV zzoCNQLUlI3GZ=+L)f_*la6tb6;ghIKl^{;%ud-)+KBI0CYdNsH}LGTR1)=tznd0R9f&wJfsZ1aDY%WRKabY zcWZ0A1TKJ9hKd*i- zm=XyO0Cz370{;N9z6el9z6wenW5-z9TeLi)FVb&7`#oIU;m2^o)v;W4D)S8z$CwC0 z0Aca-(+y>Yhm6N*h_5lPsJI>ZRYt@6S=22g=9-nNfR=JhEzB-)bo8_n4Tz=>x@om-^n6Rqj1O5_&Op((8RVwz9 z8(Pm7985+s$c^mKfYcb(!9IFIps)?qsQZPzv00-b?KZD)O+CK^0DI5DM2xRmi*o~< z%C()$FQ_f3?cWdFvbR4;$NtQs9@t#QDE1M|5WhUH5wO8YVQ^&d6XQ2E=!A<&1N7gXd+#UtJ~5ymlYd;w9&P}agq{?+bL@itKX$B6Hs8ZhDdpT8~zol zflfjI4!?zZo|P;A02fg7>T~=b{0M%idKRxj)N9PW+sS4}tXVFkJ2)b3!PIT%4X@!* zOnv1hFqoJ1hxalO3sZF3E3&gi$1=7=(+=k{90YVqNf(A#??dKY4P&dRrKX8c)K$Sx z6%mVuA>6kUIQg3vZH&$T0Ef^O_mxWV61=k_p2;6PN5a<&X4-7q{E@HK@71wxEL3O2xZ`D7?iMPlR2OhEB1X%y zd+{Ew57L*bLwIFXXF}j-70m~4w4-r@fEq?SY^a7TUIXzjmaVIhMG9csT({KhJ#GA< z&FQhl@Wmlz6JkH8DFESz6aoB0R>X-*{n58{GvIMA)0k^&T^^$S+1@SJyv2!7>s3UO znWOD2H}VWr`Iyr%Z4@2Tq=v(}a<^ZZi4MM5h>!ioVHy(VCo4dU=bHPDPb!$>h_asM z2hnlFj0sF2G4x?}O(RsY#2h(>rs4IMEeH{ZC>ZqFa7&uxT%w_vJ~JwArL%{g<`TLv zfm_6E7=&Z7qvi-5Kei8)t9i(9Kf)wyTrr`X(`DW%IiCUuH0|IIQk%Y z>Sn3LRX64jD2yI$ovWUbvo;aTe<4{1!| z{=zSj(86vEtu9!Cx_F9WBg=r>D}Rh)+}vf&y;xtEvk2WI0QNhznIso>Uv zh;p#szED)FA!MSs&wc_f!Kb_e+h(ZlVOh7bN7mmB=BCmj3JfAZKiP0IZxOK@S@qIX zqv~4sMVq?W_b+@z$TC}^YE9}~CUk`IvYE2tULl#ZSLjn46m_h=n0PX}i)dC-Vlz-M zFmo#E`c|Kq+^Ih>NIVP%`H1~zS&c9_V4hI)wv5l1?wIOh^j6|!VhMz5rt9>57)y*@ zq2e@OOboIr({B+Ad-Sj3fA~*IhyDQueV(OJUX?Stl~H(X1UVN>@dqzKj-~osy-Qs% z75l^A;t_LaiJ!IY2oC&5DMX-)cy#(i(Tj_`L@*{9eT#hN16LeNvT>Y|i>vKT{d4NkDVM`*^P4fLBD>F-x)L2ci>vP^1m_!s++0DYhybIaXe|X{PQYQx< zBQm})2TJGWTq&?+O6Z@9#@DEwtPcKRk%bi*cxHscE%2H7m4LY0a}dIqIPNT}`Z3fLYneY0KpWr=B5=5T%vg%-{{VVp z&$@i?(0=R*E=IhD@a|?p?kI&>9wRH#)6BweJA;g36|sHY@)ZiKD@(fX8c4uKpMP?> z7=j`l5J+(*jIxZr(V*2`4-qYFh}^fw3m)88Ym@J&fp%NoHY&PC;gN7=S$N^%47V2V zbcE*H4tX%eiw zw{A-?1>MeQL|fgj=>oP!1gIOHwPre`tYj?aGnmc#IEk_pZpA@59UD15^238mH6K18 z9jZgYpZ736k2=r6h%juc;^q>ERD8t55hj8bSeQmpwR>t|hxu}s%s{2;(pCWOW(dRd zU~USdks}J>+!!Km1U-qGhYNO*eP8(#5`$1_Ws>6;(Q=G3W!5IgM5z)hJE$m`5I2qq zUY$qNKlxveNBO6r>iXl*^bJdPbuc2P3jA`$=h*Ftt3|9Wb#%VhFTYsCSWA~K282Dc zJY;bqZN?^7()>nanEGYzd4}4mgn*9(#xAUCV;$IH7~3u(SS)6yF`D8b#LGW0Nb`m< zEc6H9rwpX?gMZ)*t-Jn+Ax&mmgZ!~FyhHMpkP|(^yOq+$VydYArCy56UCU`|TphnK z*+{8DUNpz0hT$_U+E`J^JOUvu)cnjyBhk2op{ZotHb9oEa;@g^;sbKf(&qY$)j^}! zHPpzXfTDPUgm@R;*BD7BF2C*OUMeukb)+orYfgB+psUIk8p#~&t7abN9a611Ly2+p zQ>GkyLE>VDQP-K=f0|&l!NfHUFEBSVFBmd*&F-~dGV&E17tKdO6Qe2ki!C{_ zr{Xo~U7UXDn1!iZ`-s$|WBsOf)MH0Tm@MANpkwm=;+Lj1qCCZwHy+HP<$-n@o*=^7 z&?<8P1zvMqLJJW1M4`r^U1EE~Wc;lt;e_ODjiPb&2s`dS6G(NW3z*C6dw#WXi0bgl zp!DR6`NX))s;FY_Bn;z-kacNv5XXg>{^ihlxx|0%JZ+;#?wDuP}@8#iH#BTK7HJC(e&8w%=N#~JkOOYY#&#dq9wE(0a9 z=C27_75vKJgr%yJT8pp`hR{~_^oY9zq6h{hF#E*d2D=d+J)Du9FE=;Lz82Ny8>;=c zKInG68G=*x_=QLNOA$L|+U1oTAxfJaODbR$GU`F6f>3o8cr8`oCDb>Xd``~EMu6r( zoG#yZ(4`{0#>?Zm!D=E!0OL_}Le6iW1VUL$0xG%w^#N2}#c1gHCA)bmRaKV16Fy$41M2Jy`ru{2l!1S-<`e5Q< zEodWtyojf~-5%2ILJ*ye!;9H5TI16FQd^5jYqb`wcEBx4x4H;p(Rh_qd3??$5deu= zg4xER>Y29KO(;>WV>4p4G1>)_ycpGN&3cLuX9Y%Sm@7M3v zuwkK4v=f-cUS~F6mH`4>SwmM00&~A%56myn)!=bAJTX~=HAgQjW$-@BEm7WPIJ_^I zi|R`tR}q({Q+pDrS=3T&Ln z?g2rAm7S%`tE$lle1B{s2Byo2ISplybnWE!gT_ z^3cGT_j!sB+`pCAG3j5$yR_%)ZXSgdZsqBU za*yCg>RuQbf!;3@BBj4+$s^^j*)UZ^^=0*s7ZV;PyJPAH5KhM6khtc)r%@Noue2%wdg2gE~1553D=4JX1a2AuoCenhJKn3JiS zs7n|1^E(kCaI2X~LPTI-j3F&+kNm=1@TPOiD=APU_n3=jpj7eUFLKrzX~PN=j$A{h z3PyKN$@~@Rk4ye_5ByL3FVOxnp~M`riEYPh{_I3KmKthap~3Gv%F_+4ap`fKa5rwT zGe{M@T+Nf^ME6XsXCvfj?hQ&O7g4k#G&k`oBmp@kD{eDnrv*$&2sb>@A8$fqE6f+j zy+g+(3iy7T632({4W;ud4yDGKfdDL_<}pWH!GGGRvOim&P%7%0gG14J6D@ZVCMw%A z4-(-uUrW%&1&_qqV!&SB=G{K*qhrq0C}Vg(FB z+}nndWmM3OK4mn}zj3(Wc!(&QOnc@>mMFT+s@#$W@MW8lVHjW1C`g0kH!NWX$zQo}^ZS@<(+Ob<0_ow7M`2%y%P>41 z)x3Oa%t)fg$V%%YUNONqjOyK?W40YjHk-l8tYuX3naE=m2hyVYHJOYS3%b43rr0cv zEX*Sr`GQn*tVIoExt>VwDR)>aA2Vp7<}$q36EfoN5Z>5eiR6K^$l?zL;VEeit760* z32X1nZd7PjT8o5FO`#6q{y_PNUc4-CFA}n-YQe=_;&AiBPCj7C<`$f#PPC(WJr~g33A(SC>8N0Zv?Cr7fzv29 zG>PI4CD7(k+**ww9OhoR64`HLvEpIML zR}oTJ5L+_N8FaEVtak%=)Ya>mE?3pPp({;LddFy0wGg^VK>kq+N_b(QSgCFj+SX+o zOXxzmON5YI$c1HAW>G-mrrys3`-Mx~3Esw>5A=+;Uv+WS9^U{)=Ff4;7z}jLTZ`sY z-2(UmcLM;cAfGqPAAFwyVZBLDO-xq$>m>4=MAi5s2{>&rR(J4~8K`QS`%G^%2*!g= zvDUh{yBIgh9T*}_)ZI8VQALq;qfB_B9X~pL9K&lj&skvF^ zS92{kE3w=Og0jt$#}@A*MSZ+)VTA;X5|q_y0E0;2Va3Ew*m-Sy&A`*XVT^`PWPyzR z&f;+UC0NBeV$owC6*9ATaX=eoD>#-st`modtgF8J$FBV!9)jdBiMy2vn{u%;hN5#b zJ`ia{sy6#f*6MFzaN%-@{KSCfF62=sMnfVcCV@rJ&^}At>fjD*BhHo$;#?fZz$ll zFNimLAVmwk%>M9=RLEhwgU!u4edc1Jo&hE6AI%bqg_Us^8&9kyxtzLHFqsrFoyC0& zxV$^gre4@KMfR#U-rG9Y8Rb`Ve(#BH^?I5PaZ}?6PJi=J@h~`VUqrq67(9KP%sb5{ zLJQqp!S8H3(BqhKtj_`Z1XwNuHjoMj;2qX6iERG>neW@c)8Yp#AjMpP)LMNrGuv?C zYz1MfhnrUJoFLVsVFnmJ;{Dk;QPixE^3mKBPRd`M#cLg4I^{e=!bHh@k*ZRIu5Nrv zNIm}m3vfnrfT#O{UjG0r*r=-W%d^D2unWSr_lcOpp@cc2Eu#uU6I%WPIl{Z0K&<3f zWT;DES541(Yr^Cn35kLuA*!_NXy z5j>{g@nKpw(F5~;<7&^R4-sSC{H|;}P3L*3MK?hCKbUozF0Yh#$06l)9G~L)U#)*7 z^gS#1pTzY&PfVQP;t;%L*p@Ne;$9s@+s0FW(s434soD@*Hj4s<^;Wji9 z(X?t=3d}_><@S~Cp-hd-1~n^CCW(b5OSn}E_z9!Ar*XN#>2(+b6*E6SSjYZN;R{4i z9aPzDJK>D&7Q@8iN5We8j^_+KLF(uq>PtK9tkAj2hzzg)0Ej^t+%mK=1Cms8AaKk? zxC=_0!8RXpP-MSRG=eE{cMXwWW*2@yGW)4}<#1h)!Dub5;JI2ALFC;7F*Fko8lKk< zW)UN$oE$?`hDFsFEDJo50Z^%}+{`$QxN`R^e!9^s+5v0;Q1=&5o^HNU<@t?nYaYt; zECus2S|zo|l3wNuGPpiT2uYLQBiP5h&TYf{NYZA#ODJbdsK*8^t1T{=UISwVTaXTsho2I}1XJ;E;U510BrURB_;C*Ll|={x@f#MG?G_1ok213ch5rDgE_gq; zfj1{Y^r*caxZZM%(~G09BN!F$8M$o%QJR5DeKY}KUVNw9D4{Q4E`H|IXT8s zuQf8s9DIiH2c5h!J6}mUSXq4U&p@uy81MPGE#vHkd zC1s?qoOs1TycdOh``oJ@EWc?$n+GKBUqmbDahQpyR#KLNfa#YQv;cmOA2HurW5@VF zwpAEc34tu~LwJigtI4%1t$Bu8EUWDhuvtts?}SO(AM zUcF`wdSCGf!Fbg2;s^6k`i&MCb&#DLP1%_4vI1)ie8c%y^S|PM41XH`0LM%gASZkd z2eMJU;6U5=3q4e9 zJ?6C{#1ZyL?|!q*OenNXOY$T?p-%(HNoKfW_?f7>hmB-jwtXT-^`PFIvZOuzG9D%? zZNv`|BF*{^eMz2A(gAmepLw3(S<@J;O`Lc~@?>*)m40MdE9!iWkEa>RlD~1<-AQt% zKsJT}v>j(ZPc^w81g07Y4^dk z53q|sQrJN3E@C%9^E#IH1Y3(v0HMWnirGLbYP1k5wwceAzlHnF`s3{_+rsp}DvIE$ zJb?W~_Pz@Gx~r9SQ)ImN7(-L14sVZWcY94x(JKJ!2bX-<7_oJB&A>WcL&Qd9^&_i$%q2Y<1N%4&0gUdJAnh`1wRx)>y+1! z%u`uD;SfOP=Ezx$d$TWV_de(O->J+&yN99t3ZD||d2Sv-b?%MS=NFRmaWCU7R?@w= z{ueRo`ajCOUs4ml;QAlN;pzF{s4r6@{Ij4KXoYM`)LQgZTbKD5?kWCIhxs%8kvNDM zjS|vXM6RW*;$kaXa+qhmm=m^T?)jmqJEgdH0bh6u;!l=3aa_POUI!) z!4EyAKiD};L%5}7YEr9vraC#QTB#@=qMSc*8pDq>ctmEmtYfYCim#XQ;^km3L05Y~IRrjV=gUItNA@4LO zv}ofKYx%o8o?)rlC6;49a@6Qb3j7$0C2(ctTv*|U6K8$}QC0r{*!&gd37+nup?!zT zEibhJY-`{ej0;iM{PlARm4-r(jrf*`#gv?%Hblr%VV+_G+d3kfQ7x*DX8z_xE>9j3 zqli*QtQ(m;i%2$2=$V>;0OsD{m{sZVDI4WDQNaEf1tOJ}PAM+6%f((u2i0>O4j|-a zSD39Ml8zs6*>hi{2pLMU??orXf66rSSxkO9Unr#kC(VSjmakJK^hakWIsjw*65(Wy zNK|t#ZRRr}-CMW5(4yl;t;|d|y~ny)4cN2U@f_c`zbCyhVofXS-WcX|(`j+;TvZku zYPmzV>}JT|V&TJ_N9Ta8al~OLZEX3JndS(jcwtwzek{Sa9G55|6PBP`K+&4}^DTbh zwLViy^Zx*qO-Jz|1kEWm1#z-{k}~5__8fjCK89ybm^}Xg1^)m$^uPQo*1zyQNKL+u zAk?=U*NL#Xaji<<+AmR5$JY^;ZT=+%-pcYSCJEFcWI1)XjA9hHWa=!`9L5Z@s8J2W z1feaBl^+ZxUoH5Em{R=Q$RTEHGMB+T3ANk(!L_3++}uLrWfC^|hf;?bz0L>BbZT2= zIhbfUv9it#Jy^#N?itL@tHJw>4Q-T7)hq!;+{x|(JGLRzr(TDUFNvprM0Tw{Lr~!B z=ee@*&ER+K6lR=4bB{$;F6)Vw8MD52MuWy#Ryq!KajB(B%)bB+E|HyzfKccl3OyDo zK0BCcQ!fb*AbA-5EgJZrX)40&y1o+g=LxE{Pl@zm&4%<1CAT^o+g`w7~o4uiGAW!D;Xbn_-u(?0aG(n z9~?1mh^hA%3lj`r`sE$b;#i*HY}o!Lu;wN9D5&?1@=P1tGSzGCHpIV)=&CSjvR*~i zd%atwG%PCOWYnS53%q7u<}h{4Ct8JDTpAt&91eDXv_~BnW44yj<&3IUirw=rZnJM? zCWOJA6g#J+gb`Z#pm#}%7s+vJx1Q%xQ%BK&HRv^G{F4Hxayx^qeXE-86}!ry!9Z@j zM`(LY3E;=wAz|0~>|6PaID((iqyMFN_`o5DS{mcOXcYvr`sEx zxvp97#G*eeWqwL!{u4@RyVAb)e+%`WT^_aTwGYs|)oS=C^{NdExB{{V(#{3>6qe=7a~{B*&F z2bl5?_JG*oxOR)_JV#X>+#i`ZCCZ$mK=EHtsizT;ZyF~MuzPeh1E!9$s!9Jz{9hyriC$rkyQd0=1E8m$8r$B z&+T2;}<%oUBpsubfE!389FM+hG0rvy&iPsD;HuM>>B+!~PwCw~y@7`7ZHt(1*+ zLa{QPhZ*>n2J4xyva{YT<=YaREp$xEgL(F&m&s;HbHm>)QBXG_Lz0A#(0nB{Nu20 z&SRA*^Yu3H9|TBdL1gpo7$CuBb_QF9rNz^?Ee4#yEM{NJE5ZKYKkzwIWtFm3rD65X zS}XG}k5#zYxr?|nae72+Wwl=-G#!p7E^`Z&)k4Mo606(_u5Y|bw~X=On)^vAyUR#W z03@L2-1jOZE}zPyC{zmi8-GzL3e?c%!U9h5S)90MGO7%BjhU3@u3ake=40yFmSHp8 z$UbCYK+3MscmT9+UyB~)mWhP&E{INd?->68e6!W&E87^Ram2+20<}cSR1haGh^d>} zTwguKGZ0Wskicg%e{s!G2|^X@OiNa*anSafSLI6h`dNHr^I9fl5O^hs8|O8ugV?Zm z6>@@h*Pv^XZMmtHEmX!B6nkboWrFu~zT?6@ds}YM48T?*_NM7-tpUU41?z2pVlc|4 z?<^_y;$T#RWLc@Jm6c;I^V};jWu47aS-xXJ<20v>O?1CK!vaDNVr-er%+oA*;EdF7 zAcn^ib10kmnA#0zU~zDD_0u^!_KNjiK>)2H3B*2CF!%<}%)?r$vkt5)vHfu#m>zxU zxWT6X0GT6l7<=|rJzWB;dOSsgnpfniK;HiVy7P=a%@^uWyJ?m%h#iw_0V)tXC1iamZ^3;;k{evxnP85ocPAwbH0rs|A|dDN-Q zyll*U0Yu%+Mg_!{ZV{|5-A)~5Q@8>QB=uGxDB)}73v*N9)i!);56}B!F_<`jo|b2z zAZlVAAKWg<%)dg`VpHO(K9!4HYBqR@dDO?8{$W6B_=df?W1b&%vB*_)2QZ=j$nUp+ z^9ojc)M}N)<DIaGG!j)68=#A(!OGyRfLFiu?KX^_yp z=0%)lqvN=eYlVyPaPcT|#Sbg|61mviLQ<=O`Tqb?iEzfaAAY4hOrnXwujAy$%B<9O z#ITvNWbne$sybK?7m_8jSnI>$XY^$t*JE<2a`+8F@9XkQOxJSiVpPJn15y_GW}F{fOy%&r1<|f99q8x&1$joc{m-aLOhxeIRj-m*}p^lc-%h%ba2Z ztwZ0(TF*t)dVt9j=D$Gj;BW$|l3`hwBM5 z?Y8A6TK@o169L84U39W5V?H>E`nTbFuEajRj%rd=9lW!J_xoeXqjdn~hgSlVnA+DY zM?Q+n6uWz2<&l7GUl6AhmMOUNu&w%cqihqNPWy&TK;yXV0hZd(T-chGB|F0s!-4$4 z-`}U?$|2kupr=1EV^a(|l?|ngSwLgpQMp|{x?XGi%lolabrlkUh}O;WjS^A+|h8qA7^;E>^zx=&gC;A=9?cgeR0G>XsO3Y zSPg`zN8|~fIh~oH+lYs=7YrSvy3{dV+(sbV^&^0mzY3)InUky#poi~_aIdBV>Oru-A zPZ0u)KUM}&f<4C?PIJY0m;V3`SnTkY!9NDL{vpj}rSME&i0>(9i-3}E9BG~izNeO~ z4Z~=*Vv%DWKTw4%GO_iA)CQ5n@4_-B&*gIc2wbs#kMaB{fT$#3uj1ukKfhpG`zdV7kw%j* z4@(qfwq-e#D+HsGAk{{ifNG`A;nkM)7uj4(2zIqEeXmDCbG~B1Qa{6zAUiNg5{0!;FRd#)WUAt z)JpO@g9ip5b`E%rSN!=@U1V@&5n>H$!f?Bf45UJi3F-^*9?L*yTRN zvqfx}#M~tpEZwDCF1ODQVm@Vf;ukPmFy?tF;sh4HiI^B%e`SZ+EEX_6KZ#OGoNM@B zyh@cD`*j$sMLTK;2RzOTDg960ZgDB$PD_s)0vvw+rF$V|E)|gXy#PEqoaatZXP92w zFLY(WZk>D00_-xY-?XgT3(iIlJjqEm=w(_?sxI9r>=1G-Zj#%68N9olOQq&qzj2yA zlIpHMbl94jV-97tITCzI+*Jr)u$vz(Or&WKt(NqiD&YatZ*09vZE)60&BVHM0|LEG zsa1SRu&&x;&ds+EN5#b=cl#1&lc);;Ry=d+Hzfe!n*uHhRSoNi%m9N2*!`eJ)}7Xu z=3}{B_vm(m(h=)b8ig`v9`t@Db{KaT=8pz$IDJ0MFb)!)0>H)abu?6W0MQk8DeN6K z#4j3O>FyeV8lVQwok~-d)D2frT@KG>n_t~Ko5V=Tg-y2nOg8i0L<#L1J$=Q2yC~|i zVrqWUqlH_cm0oL^f07cERkFeEUKD!u(o*w>#t65)L=CQJn7d30L6?;mwpsvj&gFLn z)iI|RK^4vYMkIah1@3Gm=x7YHT#x)d4|p3WvRq@+2w~PNp!gSc3*FItlYWnzF9dH? zA=pa$tPYI3?#`kSp4P@0EGQim4ix_2`wV`bD>{xtbku&{lLl6QjQ9Ka)}RH{{Z#Zr9x_k*qWEPf!XKr zDT}GE(7uAg9~}FhTIhvc#VuO<#)349%(or_W5QG*#^bUpOjQ9ou~$h_=wt57W}p@V z=(8Acvb~|yclv=W;vy_a8nDlg{Sj|CH|9WWto_)FKQlVHQ3lT9EXv%f6|0+mEs@%V`=tQbtQ zG8@R*8!p&lo(o6^r4Z~MBNR1qYTS~vUoTuV7Yh1lUHX{YnL#WM4ms4ze)Ye!id{2BV z!J@ZZoXhm@E2{(QSq)YZ_FTAQxJQ;qo+Z>R)(-^7G0`!d`QlVc2=p-`TfntUUK{Dj z6^lA1%-S-eH%i0X3X@?K-hCbrVw;^yu>=O08F;AY>I_-an!75dTQoSqx9U*H)8LOS znVg@~Ks}olBbU(TCVEvRkWN}0!I6Bob7{UHMc3IJGn+#mW>byj?V*eFO-2uDp4RB8 z4v!J=*;GW=mr+E3SE6m5f(_@(@eLy8%P!hr`63BTYf2+7d8U<6H0$EtBd~~4p5}gS zvRwP-L}qSaWrWZ~bnqVhN_cpxw+KfAUK-I-=K{vrZ;3$96D+w#=Hu6#TJ4TdUS-zT zjwOqC$B(B@VL*}OYgjY&GU6FfIT+>x0p+=16Jy=Br!srdylG|QbtDgV4`wh2T8qh< zLo1Q+UM}s0%2#S0=nO)sc_2{R_FzlRiES0Z!7qO)WZMe@gq*rwSHoMDW!l*|58~G8 z2)V~CTYkmL<&g?F{h4(#=q)M9-_@&;dW~ZSv^+f*DP-b~{{ZpQ*5&V7^siXc-2l$4 ze33MEzflfV3E!&ixczj+>RuUT^AHCY!zq!cF#c!oKky(*{we5x8}yB^Nv4TWGgr@o zc;tTKJv`%>drB{56Vz|{nHR9AvI3QVK9M4fcN`c?r1_UpH5J_ImXB~-Q#Gi!7Go3I z0OZ~v895nwmaEK3taxTuqti5e3H2imKl(+CH3rD7s>FOj14`7oe5H0C(DW57*UYa= z$PoyoW-mltH`^L|B}KG9F_V=EXN1Z%o(b(Ta|H}sObjIym*!iVnzTj@iVH0`xR&O) z5%><}8?2m|SInyHfKx|x)Elg^vdgb%#;V4z>McrJs{#QUIfuENxR6F)c&lQV{h$gp zG8QwL>)i_#HBs=GB0{l);#eblEEREE2`mH(7cvu1mNS*Yd95KvZ6L{rq=`v}5YME! zOYmx5Oh~27Dm6Rge98ea+WGj5Tke+?%M7ky_^&)SGz7Z=iHS;U`-rfexgZxSBZfHQ zLC`!QMWx<>?@@6<{cpKEg!0?O<77v$#K-`XKy1J5=UC@FMJx!{K4EdGEncRm zZD>85!N#>{pzssSLQsac5#-M9Ob_EZZSw_nELUUHCX{QbK~tBfXuim!n{pnAo7^41 zHHmf}Wes%vCD;crNZpvSVTyOe78Ti$?)r17S-4p78GP3s@NKvw3mbiZ2!KiLN2IZET8o8zN+WM%fH+3-VyNs4L8jGjozy#%l%hi>?Ww1Rah2 zp(to`z-qMjh}CQkvebAZb`ii6EL@_8g5YG(Jji@_>NZ?COo)Lvr>?{5E}k}A6BJ}T z#e`y*bf!Tu1(i+5R34tu6jlhPoK9dY)?t`v2N#s1)7k4j=5rajp!@85Liy;@jOn4`cy_XG1)9n?ggXH{WjNk7c9{hR*ap&ugMy|V0eqaBm%g(Dht$e zc4Jj+22lLzHPGjYn1R^bLfo?bF<|J6>-QUn3LS4U zz#^bxr@Y?_PZ8od3~o|tIIjbloeQ{h$&rkCfn?-T%dqKD5mzWZRPimd?>k&5Z#+gA zys=jVN8fQiD`czW7t$6!TKD&Svnk#`>6^@5Ot_i)FXa%F&9<+y8iDKyWS!5CUnB~g zYI`^sm;B_6F4DAb2%ID~RDI);B$F*K4-DS0v4^-W(X=#qm7LX_f07wbQN7EIaSy!d z@K4NLolKeF+2u|dZ$oA;Hv2&UpWn!qMd9b#{4;C~cG^?nq6 zaA1B20CR$X`IX0e(y@IvjV4 z?J;duVuNgT3XabR@5H&I;RLe(05b9w6~gh9$y~n{n1mX@tJs}qr6T>LvPY#+?5UWo zF0d`LKRSWN{)8Z|m4X456U*MiQkK6h1*em6dd#};ntXULOyv9ZRU891V8y6ul`T+J!{uNxW~jAcFdh9@*ua~*nmZkLgppT zM3Zt^SJoqsOiyrb5H3cd zUM2oRm|;jkjqmqkn7ig0Fo-|gvAj#XHG$#8-!M*K_qmWoJWEVVaRZ8mm+}lAXhm58 z(d{oJHTVll?*o`!HT^cv4{2~pn<;ReACq?*f>p$=JVKo>e(>>51a!@!82Nuj;;96} z)hx=y0N0NMj%v~k3~&THUfsn)eR>M4#?&Z@c}S>eG>>qwqPDB`A8jSQ5_60p!I{7% z1CJ2b9zm81b|f3I;QaMBr00txJ$o|Jr+Hzq)D>*Bqxec-0?;fxo9?Z zmXDd;a|OP;siHx3;Ck&dh^blZd5*R9^}&R(@fgDK6t=>@hFZFpF56gC+SJ!?-UB6I zy6#zM=4*At$hbIRBvsSF4k~z^yrl&R^wh)Sa``1r)!|Me3Ke>7xau8z%8u#dH5W}> z;S?Q?SRiVpd1mY2Hw_eYH2(mZXqTC@D$edRj}fLLigR+U_jVamK9un2=39Tv$4t1@ z&TmI<^2SY?Xhx@(x%$nB-RPE z?h(qoOf5q46h@8@l3no}S~omcoHPLNMD$68nX(2}bVuikJ%j0CQyi52b(RAN#N-sAj6GVCEVYw7w7bHGAQ<6HUSh z3ss#&2yFufj|nbYRfkcm(qEL7`D?^al2J}(lO_>%J|;O}!EtJC zAl?BF%qqRlcxAw>&cz|ZJ++I(zgm-AT|Z0K7;xrkwKh@IgGc`W6!(gKuzkLzfFW%A zfj(nwR6Kuh+4l5c+!yZj1a|>Vzc4dv8u@&|X!AU0AE|e~Awf8XcQ?XODXEg0Xq7KF z3K*P2kvJ56PovmCI@*Ppq4YDJW$`|e2yhw51wDo3l^pUm?~gBaE2U|eG{H-8y;c7J ze8iq4VH0C6-!kegOlTLYZ#3^jaL<@J=IU zC4GvE{{RF8h>6z64B*q!UE({+X1Ro}->H%)XkQm{nzc}8(V?<99x6|W+Xy1qm}U&b ze00Feh;(aEAz==CJ*OD_+>2giMJ4oMa(Dg5KTrM?*y)r$qf=yNZ>nTqyPK6~bC@1u zqFF4Sdz@-iJJ^Gcwv4kTy?-Lgm4UdVOvSawc z0v<2k-@0`n_II@0cWu8!%@^ICI2Al8qQ5Zm7JzK$-W7GDbLU28TW*2>0DLfACyT@& z1ftl)s;R%a8uiZAT)z$1j|nKhxs!c3fT{=fm%7GJv?4(8zZ1++r!2Qd+P|4wbskB; z_Ld!V_Efhfs}$o{)ZeK}0tku>Tg&h;oRX%hs%E^SyK%@WV@cC&6hu-_?Tx^oYjZwThWzrLDEhS)T8YxtNHtL0%ydd4jX`<%rD*}a`v?9 zP=g4AEZwQ&5eLuI#xw@O@hi_`jTUZlyh|yyOh;j(s5KQ2+{&&r^=J7YZJ6oYHHP6K z04m`GVE_bAGJ;&d{#!kwG3^4LzoZ=%5?gMYK48%_r^aXMb)jEf%9+G`N~5AD{uS$= zN{{gf%9Z~BnKeb?0=;;NUO(tjM)w}+Y6NnUodTw*t;WOgnO5qb%l$wuT-*NufexWW zb3~|C>Hh#RC@7}OFgAHy!W1*7vR^T5&JN+73AvQCtG!}hPOrT|qYY-z1NKABEdp4u zNb2G$#>37qVi-QqY+hf?6#D&9C;XX@k%S*C)z_nIC4@%VQX*<|b1Yf@>5tc_nr8^Z zaCfH_Y#bjcoxY`Ot|J{-BO%Sdb2REEnj;f?iZ&L+WxFhZXiS-9ij|9h6AmLNpcN-Z z1aLA#U1DHWX0UVbh|HE2&L8~Ts$tU-ykCSeQC zO5UTPyujW|qBR6q=lD#9y+{{Tw!>7-spM(ZEE%R{IfRCsAj zmx-47sDiDs{Gb!w6aoj3w=>`;Rdp_zW;2pvW)`ZTuD>u-05=PZVOM|=aNUcc^!SLw zK~t9gC+6NQ!7p2Nb$F1>dTv))gN7oWE`dK2{{R~B>Lq%ri5aojrX)$UNs3+{5~#Q; z+DWcb{$qGA7wED|mum?SZx-Q~nvVj@OB-=^O;*p;l{z)tJC2FwCfcp96E1Y$_P{$5FI>l2Fu>kC>6jOQ3pC9isHOIBV72(*dZeT&B_h{g8JC86|oQl_piGglq0K#?8TA#eV2k_Ks zwQ*tPvwM|QAE>xKa!dj>ltIqE@tzhP8-Vw5tQ6zk15JL`wJ96l^-G27RilSjYT)}O z%yk>>aZpQoZY-jU+ag!!6lm8MKJw4hormn=ZRiJJb=(7E|0weJ)BA!r4XZ78hjR7?igzU_$WSbzp$j=^ zT@Mm~Fv7G<%UmH*H4Dl_S*SJe5qT}kOSQNd^tyos=>61s_#*s8^uL5LI4%Ja3zarm zQ#?wm{{Xk8^f8E01c8fzMpC9@Y*%C!K^3f(`@vJWQt2p24mM|m%sPigA(k|}McU#* zbcYp1i}0Bx>)JNGOUgRpzlNo+a*|hULf3=d5sx8?hj$fJv^n>~1dGDYyjk)}snrg- zlB_D4Z;1KoCxVGzeLY;``kU3?l4y#bmWSn{GrlP?(M6qlupTrs>@)PqpO}()H0L5aT;xVp1XB+kH zEpQrPlWe+1>v668K?X1y@jSEIU~f{zz>dLwNlK_f*K&)!4+aPWmX6WyxjL>Yr35}D z875B1sdtRN%b470%o%w+ON|oK(109J8g(;Lk@^X0vior@r111$^MQ?Z{GzY&jqbViyBZ<_fx-FJkvlFYTbosCI za=kgnAmzQ%e1d_b%?4D^Ik%pv<#OObc4!uBF6O0`0}z z00DbJ-gV+v>&yQDpqGrrD=YCVbuF1ofeKF(IObD{`N^^t@>F#Wc^apu+r-sUk%I_0 zoP#$umGxU}J0FUC#>UAG-x06iTt>ljT$MPx!xI2aG3#uhc3@}s%92O}8jdf8FGPmYi7mJFo zXv5hJ2u!UI%gh_NN!Xd@=tiB^(hSdTw8vMah{_L>JAK#i(GNg@2ov`J}aq$-MvKM$j;#^#XcgX zs@=hoa1n+!wf#d2S^Adr`x=LnNp15f%TJ>Vm>pDgE1e-auvAah0Vu@S(;Zey#P~Hr zq~m-3u>Kge=Y-18J?GtEmGv#!Did{*HOxg- zaOdh-0rNhecrkgrKtD8QFG9I?ULeI1)LtK?Sb1TGGQJQWGWK|kF7Ghsn!r|qW!{z^ z5$EQPPLI*J7!Z3c&kkM)w5sMNYuSrzs+Ko$^H%BKlu6~Ht+!s%iQmttUmeBo8H5fM za2bm(#s_Sp!Gn0c%0188%4i~%je$z_gV$p-f` zrZ-P=J-<*fiJU-=&@*x7(_Fn6DWQU{eDM=dYPwwS2nHPnLUv8n z;&RH1SlN1+$I_H|E)LXWy6XFbE;5LFQO*3DOBueCMCy z`dJk2R`&(=W*-eIW`y{R9*pNWC?n$4I= z?n8Tgz;1UyTr&&Hh;o$lMO9(;#48XKGQD<5q_|ylA++HM5b70Oj1cz%*y2>DRhLye z#eWF$n{Uh%_LFYmp?~p>r^yjf3w;UQM{Khf$rmt;txUcU<%}E4Gz7Yw%g}j^8u^`C ze++1*J5WZ;OYZ~Spy;@U$OVF4?iQbfyUekmqqrTgeO-KS-^0`k70Ri;JCZM}<*UZ# z6FQ+T@`A~f+yvl-LnwQU?c5!jG+fOogI>L73u~^WiEk`}^dKZ0=buU*VRO znTS}+iv^?K2Dq&w6SiL{>(G`t=l*6=Hz45+$vQmBIjAEgE)zjr34!ca?U;ADn4F<1 z#CGbtwanH;(s)Rbl)Etmu-eYZWL6FQz@qUmv1Ok9&Cj7;YHBIn3OD$it{0l&8e$>* zGq3#nLS0dT4ql<{lY-mz3q2pgncObntLIP(+6jtr3P+2@NNJtS&OXZ~L2n zJZMF_%-W6R@jAe)=2!AoLYXfdlPWd4l{t*_H9R8(MaTCVT8n_{3NNjfcN@%AjN{Bm z0`xMA4|M}mI?SmeO&g9OpbxY(;HF-+B||*|sPQTpC5mmSbenb6IZLVt0tpL?g`arE zrXtd9-0XbD;?z(#TYu|_^|{1G;yZc)?om|M7;VOGdpVShvnXi&=Q39dy4D7G{{StH zPoWHo;=7Fjvgmw!{{V8;MhANCQCH+DYwK5>9$38!ZMMkHATgf!j}xpL_8ZSJb}A;$ zwgI>umBR^*Vka0MxNnTdn=(Gc(^adB+=A^-D@Kogrmoi5^lOQm+Pg{ywD28ep>Vc* zFl){x3?p4MReOsESgs}9(<~a#3w@=*3hnj~2&VzJg@lwHhEtL}EyvRY3IXTL8~h?` zWBO)ZLS?#}n5)F+5Np+nw1;rh@keUhEVj9o8JRST) zsv!1un%4gS+SBzh_3&V(VQ)#DHEV;9ftk|9^9^Yk1D|4IBV`7xN?wwr6bkfOqN$TA zsI+C+BD}7WuE}9|hn)<*_ArR>-+Cgb-$KtEA9F1@9Gs_^QBsI_rg$08wBcj(NJu;q zlEyuR3hWSB*5yN-#g9S+Ur2Uhy#XHZJi?`t+3hVVpe3;vHHa)=Rl+{+*$K_Rbz}P> zw2p$?WdzeM>ZJkEeWicnU&j3yp0)gS=~DdIk0Pbwh(chu@_y36?sCMbIsX7Z zLt~lGsEv>Y8LG&A;#5AIv%-(2RbFMzAdN(Fl_uqMOP3U+SyY&7x)5H7#2CorX`5oL7yN66d8$aoZU^8=PV@V zfxC6*SHvCwHYCRt2xNIVU*dZd7f+E4S^*Cy8H@oBl)+~Yr^In>HQUr)w5pgw#GLb9 z=)JaUp{~u6#Hvtc1^TIbZ-tK+uH?%;gyNA=k+9s@hslb@;gOtQOxfq&ET{OEmEP*4 z_im*^UGe)wDyW_k9lXt|$Z>8O-X(JPFxD00gbiJufF%1=H2t$GqTBFVij*#=aYi}* zlE)m&W=UO|JM5dR99L0@vaS(xSY(L1W^I?{+}cPM9i^h1SudH@5#E({Y8mP<2yFkP8j)H=0H`IPn*f@e(S*(nil`^@My89cE$s)3EeFuc8? zAQLgk?+VMDOwSj)ADCHumN7sst=yujLee0JW0tG5$^tvwDUI?amh`6S@&Rrmd3o7QUyG;>+`F9R@LD^+awm;_ zP}^Nx9~+a}R;CE?h%;!E&?b<#;#EH{KvrWK*tx_M-sDzP^yq?qSEPtQ9#X&x02@~U zEqq#*CU>krBC!iY@&(k)qEn^45|vR(mGnx*KUwZ3``*_4L$eER*4NdVkfd>K2aY8k zaw%mKl0BEPaEPLldgLO7qD|zJCZ?~6o;8()<%UZj0Oevb z4Os{-Xqj&>7i|JMvqQ?&0=o&`7O#nq=o73i00k_E7Y@ye6WRn4GQMrCB;N|H+r#8b z{{Zl2{E*5s9s`Vmd6anSaOr{fj?iKUm>yik7TLkd$qb=v%xtgjZClQ(RZIA}8$glr zA9D)v9F2UA)LTlX4F)CWn8@J-=t!#{OrY1O6uEs8jFR_;UVTLHhOsI%&Pc|E*77=* zF3tN)5~X^74x$G$y-NuQnFDSaU8CYq9kc9e48Q*X9r*ryL;0$>ExsUV& z02CN|5MH;{ZP~n}4a}uT4@t}P`-6NFAZ~f()0uy*wJ`7!xup65=%|jOcVD=c$MOA0 zI~9xNF%Hu%en;*CQ^pZv&>*qH8uSW420o1q#;>%!k={H^xyGr$v2dcKq7Fleg)H9L zC2oAj4NFfjHIUIyi9+A0NY60ES0Y~}!l$i;4w=O)E4R>5b>hohxLO+47y7z*<%2a=^fo0!GpEiw4Ydj9& zDnmxentVEr(v}TWrHiJ;9w6n`Zk`9_xlI26*&i`kyN;!tk$&M@XQA!^z+N!Pgsi)- zX@5|Z{Y2Mz)D%Z|I;nIkCCKLsu7%)ig-{brS6kU1xW$ISre2MI5`3hJj2ev|oTfS7 z12pYDi2Q8BtV8scz`{T#pn{%>Sc^;Sv961GiA>I7;ljfi=>dLa$+Y>E)+U~ZrMQKW zhO2XluA@HDs#gr44g;XQ#XBNot$}{ni}|K5$Sy<}k7x0{T|(lpjk_Vt!V*{#_D+oWQXj97Q;iw+T}4wnlD{{fLqd+mr#XGbZfB$S}b%Q)_c5#S3=;IC+O!k|WDxke072%xtHW!92qCoe3yiOHpywBmV+wJn~~wVU{V)W}YQ& zXfwhYw6EM_YnUaFXt;$)D~9p7lm;#I2nU3S@o|Y-4DfViS;|PXVHfuZ6vbg`xG#bc znMSKHvH;ocs`6HJ>`(Y-!v2-R`-?!d{n8oGSn4o7GY~8IXbgWT|wc zldVk~`YR>*j&2J1@=BbxdEdq!S(L+ApZz5HEvl9a4-mw`1(PKc%-``w7$-AHud2fl zT|q+b68e?DL!QY?!wb@|q8B%HFjL|?J3dLmNB2Wn1fPZbgO^x~FtnpDF;EPh9jns6 z@xS3xzxF*&Az;Y>viB#YOm0xjH>)l9#0p9?`$z}8S(B) z7H|vmjyLwevhO&J4oOS}Q83GJnJ>}i)$2TDa&w%(taOSISO8^2~=uwAKP_J|y{yjuNb zhSM2t<(J$o+cgy}q3~Uhx^?vz{m&G50ipSdwzJQOBJfynuAv9K!y`?qiDtFmf|B<_&-_0#R3F z+tM41$rZkrQMKY#nt+4rG43D=>Eb;903ItYo&$B9YW1FDDr@WgfMP}`h-d1-HX^|H zbVpq2<50SQQC&wVYI%aX(pHQPBlJ6><{M%siGi9H3_!n!YltT(zR!MQx*RL1eUj|+ z5pM7Y3H$K{HfK{rZjdQdHQ6Z3gD9}g;vm|g@zhwM6Ak(S0=boJv!&=PY6skayyS|* zO;}X03sIwj;Ng9Xq*#od33kh|nL=ki2dSptVlE{>O^M8Ighs)i?E8nHx7?!J0)0Z5b5pSZk`BV|Q!#d>FZ!!EHE~-x8qO1`Z4vYoizzhn#{rReP+5qCb+Y4*gSG1fBQq0C5s?WA|e7J%%p z;VLg!qe9=AP_s2|1*zi`pB*Z?_7uxiI)VoXbV4SIcu2rC0#zyn173>|G&uJ$cC6GY zfArWOVe4;-Hw#%pZ1e_ccqVFmf&`d}$vGR3i+8v{1BlW$WJI_H<0tnkx@FBu$x5Hh za}^Tg)p=()KPGbj0Ls6BN{{hBnfwL1rOVX91f&w(;R_sQ$o)zN`iQSTvkx6-o`2#4 z8tFMpekGo;6|b9OO`7O_Esz|ZvH){$5K@z+cPy5+l&g1jEQFiiyXWEr1wi~Sdpn=a z@#2Yd3((Mbc!WbWjCdjZr)i$Yb(M&>Wwe!=+;jRq_{W) zIW-n<#nXKqK1oyg?>__knyWp7+bAeurvBo;C>Q|!9%VBgz@lsPvbDI1irT6kRa9h` zf;I(v_3lbgF5%k#W>?Gcl9TC~mKN21Qp;lyuGg46?v+V)S6iugGqrp>r_2+Xm-<3% zA7i!k6r)=5ypV`0)uIcUoC5h9fFz5(9bD8SEFQ^ulLa&6mIxsEmX*}BG76Z+-56XK z&!t0ldc??p$|3IGi0^RA!sSukNowfe%PR?)Ln&wOk)KD2X*}K|R&CD&q>vi_0POOG z#i;x9IBGo+Z!z>jN=T*A+!*vZ`2JOu{1K=eacs&O{WCD;qioc>5he8Dmt?_+qgTDc zN1sL|!rNaRw zCD^+6!2^fi&~*7vEL&zX1o6YM0QTwg)EPV5Z59NcE8yuS{3rZ zg5Y29+$!85s@ruR?_dt7B4I4O)Dpa1ndcvv?0oO5hrYfbIeB@%+b^3Vsit^^cM*Rn zQ#p!H+m~30YW@Vl1KSe2VO0mK**xp1a{5}k-Bi7RjSp2u`m(DSL&7=Nu5lu#}rlh5jSj`w2ii7Id4VE`DbeLzI_be{Ei}`y@snTB| zhh1->vk$}pcmx&NhqFT!5(lYY0HxS;FBc3VBzD<9P`brush^xB6kK#n;XDmQSOmPo zxxHK-g+{oVIfS2jKLkn49s5ivuh*Ahoxwp(5IsYP>dA{!0WgOckwPXPRl$oZ6FIwx zVx`5c)Sy$Za$&@2M+|gfc$;XdWov>9oQy_`2`PGs$kb@ui6;Na}IZuqg4fOs4g>x;936w zw=7I2rQg?nBFC+dxcH6jBW>`gVM5Zgfx4IDmHz;AAy9;Ayjd?UAfow<<0*Iv+zIIF z+V|2jGfnl&&GRr#T)JQT^AOt0#X)Sn)Bv%wqRNK$UmF+6#cVEQZO6~fJYibj~*~2`J zC#$bZvNL$ZN@5L&q4aCnPc+Elq6Xl-)6F-NapB310fA=*lJ#AUhH#3@T@p=h_)du>Sy&$K;h2+sO-e zOCyu7o(K%NIPh^e3P>hB7NXTlb_XZaTA=F`6yuG`si>fbfw%+G>bALk!^JV9!u%l) zWTL_H+^0m?ijN7Y?tN0m64NeY&l zxUF0d5ti27qL0@Z9}HD1lW>*FsVeujB*z%aRW#Jjl7SGWihSZM43Ecwi{=-7Qdf_S zWW=}%Cy`%Gu_7H53ozm*h^i)wTQO&dJKcv$2wxJwJGBUOSL=`K!ZiQywnS@o$$(iR4(Osy)jet#g}UXU+^<9wpCUwgW46b zb=a7%%<1e&Rx=oR&&Y|UJ*MJP11+(c@f$21N~D#xCj0*YWNR8|`b%wxrR&6_cM~H> ztv(`H%`r{8J6-3mRo}Rs<1B>@F;19E&$O|5xpyt26|O(r(uTFVxH;*Bj**m~mz1~x zvR2?b3kSKO@1HQms+=6uAIx!0VByAp%TnMf8(}aVPcnu_17ov^%kUm4;vADh1MW6~ z+nwX%GMIqWJ^15&g&I_OUrJ!VBur*i!@BXEJAg9dLS>}Jrc*NhET0r3TfhE^ov)Z| zAX~ zDDD3M#gPPcQXYd-WyF@dWPo2V1?JH@5m5XwaGuHDVJszhy$-x30kp{l<2+`4{vckm zym>-i2!6aJXLX|FN%OiPY+VerMK;7$y}5-1r(`E-byv*4CZiAKD#b3mONv;1Ls!X^uPT`0uZa2e$|?dGo~T9(Cqh@98?Ka!_20<#1~%k zk7gM_uBX}XalIY`bu_bRhjc}J>@izUG*OJ@=v@J%KmpBTmJyYy^I^*Zdy#+JWCl!im1=anYAo7i6z>%PP>Q4z{i$NN*0h{ zs@huSrTY+R0pJL4G;^2XKi&XTCgt{lj1U9^M8xNLCBX@N< zsO@`VWs~9Qb`tTigMJF*oJ*H+r5l40@BC##WtO<`$872!sZ>?9Vj?U;PoROn%*h9S zAZ{>U43rz3A25`-r!kLdnUj>5d6r?Oz(aCS{jp=s^`+y|j}u~LtTS)7~r zMki|B3y&imqRE5jvQj*ST0Ay*g6Rm~gw55>CQBe3D!{aEi%V|hMy{K^u2D8RH*OLA zrBPvh+YpLfG18fem)`L`<2zuANpW3PgW-p9K1%nUgc87$eTZxwyQ#xi&&m8st!ws7lc3+1aD>>9n0X;J$x*DHQi+{jV!(IF(=+$$NqArl1sIof zIe<5NB~hDUiWL#YWAhT$w@lS3OVuTvEHf6HLe$Qj)*=OE-$XQ~Uhh%rM(B>ZBTx;; zZiZ3QIgu*iyeXo#`iK=*P@zXR3D61;8*iHSj+sp@iMS1hE~R(mspkj4CI%RZ`4Spx zUr+qp7-38Kn~Z`eKP#qNvDH!CE0${u+^Kaew_zp6 zXUq}hX-c5L#@7cYQ^jZTZ0F?YD|$VpRo1=i%6>@)9pWuwedL|7s75B)fopHujs_?%6Lf81B-Dv4ve5A2$q zBVOXbz8u5kDBR&nLL4NsmBXm8^nG|(;(k3|Kvo0Q&MI?0%Ved<_#h)v4~!XLqXgsc zoy{$kg9H_0gHxrhYO$mBDOP_b(jXxj<-eq{j5F`TW z=3;Jiie%t)zaCPBhoCg%#I7Ft9y7KFKv%6zTA+(HQD^uUDpjWpNYVcQ$o?E~L`G!@ zw>LAyFk8buC4=0#MD2m<;I2#g$yYK_%iSuHj?k(-%Fjrh!&F1FXT%sMlXj5@sGRte zIFJC^hsrM6b1UmSTo@~J3l;1* zl@<3uEFJ*_V!TDTshS9AC2icask?!g1|U{7$|W3)irG=w5ODc^tK`I{O+h&D+V|cpP0~;z803Og>w{^m-u+G|yB8&d3J_cFR8vV<~;D=(h#~Sf9VmA!CQ_8k{VmZ18 z2bakxKxAFIBH1pLGNqH5Trk^W2Ix zA<&L9nbu0LRfg(2lu&!vm3rqdcw*g0!sZvuva~*tbH)f5Ho*XmcE6}7QVa6V4?=88 zNDwbfp)4KB#rH#XgV@VHi2fTt5e89p=2S~O6$wR`03V!Kh>V;2KND)JNMmjvafw{V z_LX^@USW^4_;LJL{{SkF@vr?&ku{(4=TCl&1|xEcAKOC@`EJkbM{nPN)Y|;j%!|4- znEQ%YVJ~p=0l1{4o})9-TVtr#;{mKZTtvp6&=X~_k%K!=%hYuyuA0ZZy5VosH+X)g z49PMoK}!=tIGUSW28Q9p6Pz@9x)+&gU;c8`R)^~jrj5n9Q*;nDH60?sx_XVIj?^li1kC&NFZX+2* zZgOfIVKvNEZHB!(GRJc|CS!$W?Qo8}Ws8nhqc-+SIkD3`8&t`_8ij$1_=l{bw-b>* zNnNa6CPG|7^$aZK_W>PB>Y45%9k;nFYp3EKCjuDD8D#@Z5}hv-p!{-(@HcLybd`-e zgiLDMbEtDkXPU)E2*KaZ3}YA5FK*$CQws3N1(@XTjo*k zGEA6{FQ*?xgc1C&{{SmJK7_Q)>U(X+f)?7j-*_xOKnrSODETP{z}DqlV}`0$w5ZN} zHyxcZH6#&|C#dhfU+a7tlnX)?k`8t6tVE zR?F9zA}=d>;DSSP*r!JEzdb~}+=&TRY4iJt~rc+mSAE@PG0x4`G-SnJbSk!B@BPvEw}D$q4x-+$yrAdAs55-T?}hwqqUqwO?}`$2H#0n0cd zFnqF*vQ>M_DA5;#FxgF*J+2#WJPCLBGblH^m+90+%DRcDZo0N#La3vVY)f-4Lxy(A#E{eZF$ePmKRl)un?#;(;zIl zbJ;RYH;G5Xxk+-X3U0hHN|QiJ`w*UXNn3g$na73$gYDGDPwx0Xv|^Q6nePI}cN-{l z`P{9p*5aF{5oa?OINKbNC0y@UGs5k4P;GJRK#fGJ(0i7aZxlmb1A#M=6gLWBVOoLY zHxH8=m#fQ|!YdjDNcD5+2lA6(qS?OU*rUrYe;R-xZMNZgMEpxiV3?dsi;I}H!EZ*A z{{Z|tmk~_3saYp4o?*xiA|uNI_G0%h13t)2_iuNILC2KY8a0UJ-AW3sinmgdT<%V2 z@NYn6sNQ3HKG6t=hBQNfxvHh3b!RE~!d*~+$!|VlB0^IdO&;LWD1q}F_M8D{J03xpKnuE=2aI38nyeoYjAv%ZMw`NnJB}@WZT!!^*pOynPN!bS6fLwS`YTfQ<{{Zt@CdknHsYn`FiL=Ll zCMEtU^%gS&e%La@{{YiowJJ68c#K7lhNaA@taD`Ea9bZ-TWRq8%P8q^6+s#$ET{#Q zd&S7L=51Asw>0lQS(X6vanKA7HSq*){KfN6%#T}rHh7ws=h2hj(R*GXe#8K}Kt;c6L4~9nwRo3H0UQgcudVP| zb17yR+^O7p3flAN3MwOML?*3s1u96GloO4RpfXmd)y4Fb9spv(=aoY^-CZ=`^Ayq&!-I42h1ga(5LXH$ui6CQgSmWN5E-g(G3GFngsb@6{IIN)l=Gz3}$W!Tlm% zz(^IgIA~raEDuF~Wqf;sOa*KTx`d(7(c&(HUh|yMcEsu`J*A;-ON$%a*TPdDy0v_$ zHZ!3$+WfEyX-?Zj{vZqiqTJVYNNXY~RQ zuBiQXL6+Nh0n5oLb>0lA`d;p2F=PJ#<20Hu;GZ#y*&SI;w9Stk$9nUKFStQLP7D$G ztOkY}+Y18`mm*j)>Ym~`y-U_xG2OL`&L)!n0RbU>Lo(hm=$X<5r8u{iKKH%Sh#3o^Y{1UTuYzk{@`7OFLWi0kZq-x znNTOUQ#wH2)DG@B0aYtQs1?A}Lf87`=KlcG=wpZH--xBEG#CZ?xrYZE*WZ(rq8BkdMK*?-5*iEn+!v!h8Iwk0lm;q!#Q`yFNobk zAIbJ{bCyJJ3qOLPyOv~OCef{v-MIYd%XT#OxTu?M8GW2VTZAk+R{iDk;BwNts`XHu z2KS)V-*I6KoSG5lXMhz@)#m!*Wa?{8>)H_2W6bFu!BxTLR0&m57bp@e6^9orC5brq zj3Ur-rwlg^=(sq8mlb?Qb+VSj1cGlhHSignOro&lNVs4W`Inh%L|1PM_9mTNH4_@j z*Y@{@F_K)BTH{zTZ0`-w&EySeHB$co98YeIny6F-bw<{Qxvabd^_ zzN+SUNgCh@o+Trz8;r7lwAK z;K+$C*`uG-UxHT^QK!t?IjkksRD742bWK|S08mize=)1@LMpgDoXmy2#^@#jN8{P^ z9aUrjqlshQQP$=7S(hgx&}kW0abovTgdKRyRw6gygR!u=mSd-?f{pO3DePkN)%7!= zxg~7-vz^2}qa`?6bKJw-Xku2?KG1;1ER6xNzi94n@#i1mU;7{USD_H=se4UL3cOOK zH-2LRSpc*0_K2|1${|aygtE(f>rk!&m33tC_veO^(g3ixw+(#C*ZEX3s_}4d^3b74 z@i9#BTtc_w2)`N9SKNHK3zt&kQnL%2jikLM=yRL`b@nW-@B=dzZlL>~nlop#%rwjK zH7a0ze~JG9PNC>;5}=xT7)2@Sl)N?UdSYjD7c<0rW6aL@>QgskD;a~%VP67fQv->P zw{ovjvWZ2{B*J4X>NnKH;E(jS{LG@x3AI{|;*MWRicqIO+I+wm%+g}L>{NAzDX|_z z*%nDaA2C5wd`v?tp|LrEvC~V=9Fq@$)WHeBYWWXIEP-QO#8!$1`fd}K90Ky^!~!oV zn-7bZzqd)4we6Q=b*1+{O-p_$D%AZ3;Xhx`9zBj_s~vPw@%Ls|0$G-8l;1f$s!#4? z(2xRwfLtsuMCbjXC|y;533Y|%JIv2f5}0W>JMqsjt5H8RPGx8hXu8as_?O2yHZhes0oe~NAlRQ4sy<-MQOv`TJZPb`}uzxl*P zGXcH{?<~&Gn{(xt2Teo!`B!81FujZMF{76Ilw>GZ^K+Zg7aHaXS@S9hE(t{ta}e!} z*OzE;oy_ZwP})a0j3quS3owVg9YmHgl?bhcQBX%rqCqUmn#{M<@0OMc6y&vUXpvIBf)8gb< zYP?Iz#aMKWGG_HNe2SemAqw(Vd_trSBU0xyeT-I`-CVkrdfPTeFdlFd=^o+f%mw|= z+nt27>ODh(iyweNi zHO$u&JVh!wmhK~gaP0xGx#Z{b6_y-G7-i_0jS)mPBS@JM?1JJcqh9_>l~fT>hfz5Q z(e?yzg2_tI(n>{oG0!Kl2gj2a!a(LpoLQ+K=G?L7=E1At;Qs&wzq_V0NDS1iHk$5U z6nYI7zgdZ?(klxq{XlxH@z6Eym6*HZA>h1B2$xem_@9n?eWukN6WGT6JNB0vO6x(% zC{ZRDqi=#G%7!t4XtT%9vKfZX4m08qE&l)zk2SRppBjNY4~OpWgSb}ZIt&= zSw}y4p2q8h%FP7i?jq&xR2g63mX03_4RuHHiu-dmSi#|_tOGvLDsi%`XnsEvE(^Ng z&7qju<;O|m_Ca3eH(-fpRpVx_<|^0z5}ZpnDw$PrE*=rEOVhb)TewU^TP1>YsAfRp zfgzot#M~sACE|FY4|3vL+5`nNPYDHZ40&Nl0LL^}K49jXZEh=?w<;+^56rsick43HHsEgAa;-4;3aa0&7g6PHLwC{l z7?UxEAqUE{jhvy=wL1)D8X}s*M-}eSS>9?tGY^8qwV{6)FjDld{Q3T8^Qlu5TO;!I zFD>mTD$I*_wW_83@}L3a%WL^Mq1ItNt-tY>jTyW@S8(edA8aQ2CS+K{-c^d2i|BoB zoXyX9nH@BC(=Kv<5}HMHN`)27Zp)y9H@RHh1^9`Rw^dFPCx7voG-&uKDI1!&;$UHf zg0Pp&!FZeHnk_W87Br#0h%}xxtIPW;D0kM3|U<_kb1w3<9TvlDCuj|3yQPt7Wqn&0-r<@Kg$<}*xdjy#u!H|PUN zNRX)LH)!t>t>r<j2!;5ZHOAtI{VQ`Ah7hJ|ucGo&QBL_CFw)`00 z7^iBET9&fbCqFSWxi>k35Mmp&i%3->HasjTt||;uHaFxT0iTpWZzG0P|>d>&uat#qVfZNJAj9-+wjm+t7#^X%2sPW&@stuF+4m}h)a<3hDa_w5g` zr=inUR5gjz6x!4}&s5XccnD5+7w{V5U!Orhy1nT$3eub!vI;-swQ{i2nBWT9=-azx z-JmntCSfKAq$2RVJ*DPcKpOM_8X~}~7v%-a%7J%(0T+#-I+V5NNCNnVEZ&g~V!l++jE3dEAe_9<}KI0QisKdfPma zRhTI=+}qg4fAhJJI<&jy%Jfz+6FhC`d84=R%%J4n;ry@EsIa}75$1%Y?pLRzhfrZc zuCe_IOhv%e(*9v!>F4xpV)QwI7}`e{m@?dFD6=y;tVPDha-nkxd8_U)!x&h(!Qu(l z_)HCA9FAC-Z!c=s^*L=zqy#QlB6Dy=_SHQ=0yaz|NnZu7s?~oGik2rN6GtIgu$qhZaVb2tF0QATaMTK${4hg- zFtDS|M8K-;8X0CxcP?h5!p4IxY*)YEzi9wvou0kIC-GX~Y^=l=jx{{TV!$c($Gol^FD zO)z9hr56=)&4QxrW+!G==D#mwKg`TMAZRa^Hf(hZFKt{$QAN0!nA}1RP~MyaO!24!-?h?1`?3xQ)I=g#%4QXm$c=v zCbQGxDu<9#I7Z(1*Pv?FuLnQ##1w|rx(zP4TF7>nfi5imXCcgYD0!Iv!AK(?%t31x^}Ninv#EHR@k! zn)i$+jg~E2T4FixlyV;M0*8%xK3ahtnW1`^hHp^bx}s<^#<5YoAS)j8-PEHn+4m3b z1}juev8nUQIMN;Ta*Dg0GRq4y^)pz~`buue%~zA^H85+jc2_~DSA?=f056yEEr#!n zjhNx?KIU@)#Qk}l1xT)>xU#0&57t#JqKk%>Odb&?3`58@ZO|8L(Y>qfb zX#7hJ$A%isvOoe7_Q8DL)-V{pxmt9X+`CqP(KjwurmR$4{{WZJw3B($G#p)iB}_di zf{jOUTKbf)WM(F~J+w0-SOcn;I3pCLWpOeB;um;+5kEAbGjQ7k!H7A9{6d>E5gGQG zK;dG&?oh3sgqB*X!7g(Ru3Ty~R(A*ztmY%}Jd;#$q8@*X=r9#+c!L5&w6}LIUa9Y<38ezRR z#_?RGT^OU4$CDYq7XwC-U-8_thA(8LaW)B_PzB64c0}e?4iR%de9ESp$_szh?%y%$`-iPR3*IY896L&rs)vU%S&$A-nbQYt&?@&v z>bYYBm{x9+p(=4+jqb#);aL{p*^7(BwWao=y+Nym^$l;+n97LDBj8Mu;&fAKuL*w) z@<+Tv)tq-V%y9nz4yLeISm1tjGF-fSvb1WxPxGd9)@IS0tL9s9Uj2XFEoIzZ$vO6y z18NV9OM-yW)CF40o^c4(LZ!{%OYQ|)hfU;|eu39}9&F#OwmK-?0i?3hK{^NfNcjs*0rU9k~2b)U9yLX^On@ z3l=mzdxP;g@Y7;~r>n$D_Ft)L+)JQRZl}K_EGV!`DaYm$RxV!8GV?)L*<1)8)#Z7z zyk2G@<{x5aQDTh;Z&K{pu)#5^`Q;2- zSq`aezGl_666R~}LXU%F!L~B{nAW5o=BA%Y^bh8Lu`p`7jA-SLPr7^&r8iz#++O7~L`8K>Lu1-$xb$giFuod< zZO4+Ov`P>ZipWAOGUc3A?wENky{9A_6ms}41jJgyC9BSBQjP2?16^frH7Raz!fW?J z+ycVl&}@84 zh;MbI?i$|<#3-JR5In$u;tE;xsYGs6w7g3l5$H0Z$Skt{CUHM*Wmj{eC?=*Wl2Kc` zkI5`$Kctzih2lJsmc6{beGJelP$)!wQsWWb_Kild zGVm^*-)QYkMxeOD>~ADf-cqy` zn9mfXE13ApAjQKF!KsEd<{{L%HI+dwnvZUMH%7frIA`P}xdVoU@RU6#^V9Vy%DI|7 zp;H$Vnx85Xri?svJbSm_H{I?oczZI%)l=SHTH(wd|hf=S1@Y~eM2@7 zXy?alUCG}N?PeiH_KKDuSA0VT9kT-Xf&xHV7j$}G@VE(uN=2MkOZa0jD(w1i#7t<{ z;m`PEyLS(v*zuxJaPZzEGzzg*FSKR!E8F4<@4n^_9-QUs`nMbrgPl7Lgfu1GoGZ+QkM)vAgkN*IsDp7|KFgYJ{64c*_Tc$XAns?-(SyQ%|mk>!!j zWq4zV)(wa598*Cz8knA%i=PnSi?ZdNYE}fqtu;tIw($;50(NMlpIIhb64J~1i1!g; zgD_Yy1r40f32}{Kb3zPEpCcRZ^m!&Ja>C8jrLBJ7n1OHszG}Y+Gbr2HpCN>>HcukD znTwR9Kv*w*N2NGx#drkfUUI0mIeQ{BebGutOvbo;d6=yoU=eNrnV82Ezi_x1eD_UO91e?z&>>`23tRaE5yn#v;YkXHjIicG9D- znS>Z-9^|S=0AWa@D2qgQm|G2BhvE50YG$B21G|D`E{`4}x%m;(6Lnp2GYH(P3|TpRBesk&~=ag$4hlDdF(QbrAh+VT)XtO z;#I`=JTn=ZWtcsO2PDZbkYY0HYFTQg@Vvdiprbg0Y{xY(1ha`~5JwfBX0Os-8x`k= z(ayd1A6GRP2!7K6YS?s398%YroN5{@U+h%`YS@->Ww+cJ#0Lm9a+t(5RIxFNv7M65&k`tYcp#Rg&HGDI3m zm2+1+Yf`DCIgo69PF@$&X5wo&ge6}@R3CviP|#~3;3Ee-i>awtel`uF!>l4OU|Erd zOmg=YFsyTt!FaQGst>nq9Q1m zzf$HpWk#+{`HqNs+_<*QCWzd9!#1oa`CUy7k0UIlB8Bkb4B}bLY|V4{!sx=e0fj<= z1ySh*sbw5D0ofBOe8VN;&$*lOE$@$`>CAtMdLQ_Z{{YaB`Bxvp%$?Q@)SEwZEh+F|N` zjDixvtYmx=`g$gyFw+IZ&8^LmjOjh)s9#A@;)$6}V>$vqcuj}Yr0uc*1K}tI6PYq} zOM!O8H;)i7SD-w=oU)|QeFGKh>I8iWf=v?f1v`OY1@{u}tP1dmScHYT&&h$}!{}wx z-*?#ZMi|=GN1-gx&D`DCJXBV_=C*pvm{}{neLExn0A0G%0$LoT8yIijiJN`rH7R9j z=J5cD@kCuQT`1kJjrK-faamp6p5 zjHcooQITu&D3n}7vNbq`a&AyNinQ}77mz;Ep)iykFv2xydEy!?DD(*VMACH$yqwel zEEP|={{ZFUA4k`UbcCUR~T zWGNWf{{TxESB-dp5kdDf*ieSNL&s;k=?pwH>GS>wcV&H?K$qPh*zqs}&8Gd1Vzav(QKTsv(twIMgCJHf53*)cgzlI{CK9m`Bl;yY~EeHoLl z57L_brhNuHW;f|h$K^&GdWTN#P}>x4(D#<*fN7Yit+3gx#(A))G1oa|%A8ct0;MG; zAefk#l$l6bY9C&Uxo2>UvkO6Zhft3=nL$Iu%cbyxUudXrj<@@Y(xRnTAnpV(?F`;j zjHCX>Qa5Eq2{d~iMhIw{q09?BOi2(cV7f5bH{A`Yi?heUNyeTgc|IjRZZ+C>N4eS!9)7l))0zrF9p$9IOW=utlFREK3q+0jehZoT+Mw) zRQ~|^hd)iOHl0IwUrCX-Ouc)Wgl(agTO(-+nyAQ#7j1&62R`9;a73k^W#GPo{DSqxIJ5AHn52+|gpDh4#E zZc_}z&L9%J$C4&s;%QlbNHyJoa-?v`WSA@$kI=WQ4f?!HAetG5*Fk(SJ*R&H_a=Xo zC&aXO`lT)9`j4XH9)O18p|K@4YYLZUrD-=YjVXn-sP{MFeJ*;QDW6J*yti{5Tx5VK z7hvx`(PCyvfb#u7N0O0fnkdU#SkEg?avl7tU20Rd@k!(d8yqOJ`8Esc5K^ z6T;UJ1nd!zxA_inBGn$pn6R3fyW>a>&$RC|!2bX*h59F*ny@=8s8%DcQJgxRztkvn zOFwW}4SPGh-E%5pg5bK?P`lNGHF2+>-kdxdwWqP09x8ppUOdZ~X&nR7cSl?i(_#l-weTQf@eOfW~uJqVV($HWMa zFrH`kGj^Y}M5etCfAN3(XQ3(Yev|2$W4wTv2T0S?Rxfh7UowCs4o#ZIV81U^eq!oc z&Pxw;*|_Ct@huF{t5F|;i(UK7s_n~3c22F~FwSrNxpCY$qnWY75gCp#puYrT{!Hd> zAhUxp%t$KgTH|>yzk!_UGm3?nX69CaN~;`SXvE_=(Y4E=+`qy)P|U1^xYu8ZRt(2b z{CZ>BG;NATZSTaX*Ps?*j6RCp)TL}%WZ2YOsS(Q;Y9?9fxdRA!BJ1b2AeVxf@=P5Rb^vEui-82hX@+}*u~ffsQh!>Ig}EP zL0%JZF%S`1#b(^~)k001Hz{2xKAWexh|XH|)Kjf!6?Q89=B$Zu1vxfydu<+I z6|b}!DiuzLo~123#ch;FnM|*`Dq#*y>+=JY=7qe0OaVGzrUciDhQ#PW>}qz5nemF>_~jfkk=733Mn>5fc8X-y8V-~ z5(^!VFi|g4=6mL1ZYJ;W{v|c0_j=kdv{*e{+ZCJB^f;ffdb3 z%g^>lO;}#=n2^wY6XZ|SO!^$g46$QJbFK_#Hps1q<$@0p$;@sgi)}-348ahb#$G*Y z4|zat3meawg&CK7)+zqe+Lhw}0BKl+T>{dU=x#qWIr2O@fyQF!*O}A<%L39B?Y86Glofg-MS8d)Wghl{;`0&iw#&{C zhkCrui%+7Bdo)Z20sW@bH3sU*yuU^Cq%Hw8+TrkZ8MS5^wk7cvX)4aynrHa3LlDJf z$@7xTD}eofsl-+8A*sYe{(=w8pIu*4tl0kmrdJ&U?dgB}SEDP_GXDVZsY}PBQBODG zTpT4qz6LXgC~8on#BQGUmnPzl!XRw?2wldix%j%9WIGG`g)<&M<-j`|Px(;c9H@Sy z_aDSa*XDyKQjSWNqyr+9zk?k`6Aa&(kqB#N&BqBv@tR5{Tp~5@f33`Kz|R^d?LCH% zr|7<|BblFEN84ZQjHSMf&11ZqhY!?NmlpiP!FnK|a(R|0%lM0Kg~a5>UE)(Ml>(Dn zjDv+t`ZH3;rJr_YBJvt2hHKFDa~{zD01*xH9Ui>O+gqyF*q!<;!Bx;J{umOv8pe6G zj-;pv`o-9H!Hv0}h*nmf{$nni1E{r75h~v11@ltzRm?Pd@Osh5AH&4h*KzsOMOhMl=sj_RzQsy5fK`KXIqQs;yLFGq@kK0Fxw@~7x zQ7;qXffmJ!##p7`_?0C(=fq1HbVXUXd|=rdP0Cym&E{8_AxmNLgtfSs+^uRW?J6^w zNwSHUvc$dWY59T$a(554=^;&71K`Y0YlijB4|x=Hui628F+PO4vNj0PKw+Zs{#WUi zpWcjge8=I-^&Vv)ePj^_lU?jepEC}%yqLLopF9s`-mWSvuhI27@W zULAr{;2-&FB;A)~?;leYqf5pM=n)3Q<`mjUSPb=I#3>l7Cd-;e$RxrR94K^omI$pT zHA?R&)$G$?GQuFt>&f?1kcjo%W*NA6$Qj#tvX2qxb32f}Qs>UqauDH+r3(G*p>L<+a7#{w-OcV{?k znfg*VX&BzPSa4>^*{bPmHc#MI-GWuo;H?)R~8>c z%L10litp~YYnquA@pWD`N8IHEXQDrFy9ZpRq9 zUpV&v0QRzc!~5so0raTuZE}LxO;`Z*k>!;f`ZnYm-IaVwml$K}b?eAP7|RfbZE%gv z5}sn@lAfg}SUIexmY^p%i7H}1ngU-$dTm&<(PO!!oW~xzWm5MYmk^bVKu5WFxR&(o zc~3q60Ep`>1@Z!y#6`B;0r4pT7&UZnah-k@5YDE{$;wBJU)1Sz$T#+sC@*CmQyG1K zDRaNl+8+8wD#%kl%WyttC-62tZG6Jsjy9(Yc7ISfkfoYw*$X4fmejUz>d+h?FfBrS z4o8v&I0CL^FIOU5HpzpiIUY#JJBJ|jHOx|D7Gf+0o{Hf$nvMtq2@8Y`Uf8BrKd z{{W%U9zRW>4B5g{Vo(?yN~5Bw@hnurcdd_^ebutj%M922^ia#<`jemnFgDgi(xNEaj;VZ7U3wf9m2pmh?1i3Vy>B~YBvsU)t@A+ zRtd5aq)f#sazPt1g(M@?v8l_QHPbOMq1Ta!3E38>DNbBRa}u@t_}nr& zW}u?Anx)hRi^O=;F$%$R=yT>PT#@pkH{w%5n!lJvF9St|T--TB1wX09m@vp+iD@)n zILXZ00Hqo&DqO#z3TYSLa`OwFN)y(g*@oc%0AUoyOn?UG12*4dRQGOUT5ebx&xlG6 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 z zqpOubA|9Ig#l_G+G%e~~3m=VkhmY!b0;6~_h&Bp_ZV@I5?>G2^zw|@oIW8`8nkuz) z+Fu$p!FMN{hu-?sMf0h1L$HauAg!XsQ_jBSOx!Ite*1)?!iMcu*$Vmsc?212`Iuwc zOxHnlxsylK9E^C6(HPrEKry1k{fDc`wS z?AGE7V+IE;e^4m2a)bgdod7wUI0&;hFHf=tZv~t!8D5uq9$_+ zW8m7(BHA53*dO$9niE&$jtf;C;{O1#Gv%NVyKwUH2?ja7aYyYe%ez~%kH?@&k0Mu= zrZb#Z9;Z>@3$wOZ`Uk49b9mdwtC)O8rNrb&oec1fh{HL6D>EqZIl%tYAoyiDE>l%p z%XG)lhvui{nM@ld&!#)(8vMi$tmYWD=i~ThCVu6mxFcJJSY@^_Cx;QLzeJ=$UWhej z$lrv8mOiKYM^w3pXp$fYrh;nu@%p z)IsnE>6U4_@RoiKS5re9sfLU!;dU_$;#}2wbao}M%V$1GYRHEqe?`MjzGD}D_5;My zV}Gw`oL;2^*M&o;Fs*d|08Cv2+gvYAj}%f-f7aRacndO=jk zWnr3XRhVyyi1JGyXNf>pBRg6;aY}gbdpt^G1;i6o_AyUsjYM}4#xR`@YL`$ZMi+iq z?K-}#hAXVMu9(+T;&pMETU#`9?Gbcnn)-mbvsMOiT~{+T5a(Anq0CqaI&IMtq&S#V zf;?yuN|v$kieNq1Ix}|q#d3ZiI+{R%OCD?^PPhl0T)U5KAWKfn`IZY)FDrkP8}KOH z_+XqRw!B3ExE9ztCJYW6rhlvCw%y8;Z@0iwC#pVPE7LQ=!6XO=LjXwzK z*3oCm=6;8z&Bu0*!SU$C4r6K=K`}4ZizLnnE248<%LdmKc@yI>Zb@Uf?7S50EL5j@ z%&P1-W9?Gu7R1%+WbP~Qfd|^dlUACZtC_7IQxyhbCi{k6s&JRdc2wfaxAn;Ajwud zFz5O$T`v@@M6Gl$eXbZBf_%nQLq)beCD_l3VPWQ>80V;$GQtxGdKk*{>0V=UykMy9 z=2|JIt{~vJfZj{1jksE6sI3hTGO5CNmI*<}2T-#)Zi$FDVa$2v6Xtkgs2t6ZT}#~+ z=2JDfU0l;{Q@t{@c%@0_&~QGaDzZri^0r46rD2f#|ImohF<3H ztYAtHISefoHO`>{DUAE#!_wr7GPtJ5{{S84-@s5jOc0-D4F3S}a=sz6;#!G=+OPYE zr{Y0`T-lqw4UtiVtb8dcH7#E=br%gF%e8Ejm!XpEn9cb_6CDkmmU+vMqS?QE7})Rh zi4jMb$GV7obxSs?+!r$SP9V1f%w(}qwPk{ysxP996|t|(pbmC2=Kgm!JEHyJ1Hm=m zPG(7HQGEk~^h_dRiKe0JbXT00iBub5`kNHNrZ3ug{MA^i?0RSrN!r=K=N$zlmEb%@5%Fl0 z+b|V5nA}1WCIIR|siSg&n=)gV`1z||pkfXn$|>aHS>h%5ZiM$H0}v{{ht(3ne3)5!#r0vn32GR>w)Xi8R; zA}27_`H?IK>>vkbHuL2 zIhU{U!HrAX0bOw_=t8SV3r^ZT07Lf>roG+Y%+HfMmnb;+g6-$rT)>k^zlJzd4;;?wSPngZ;BSoPVvujrfp_|Xfz@XNE(tKMB3+_{{H~9tB=Gk z*Tkc8(F0C%-N8e%l0sn$_dz4BgdRAuUOge;EmAY&~I%PQfPKSxLq5;Hj zSc0xcmOnprD1ehxKQkqjPq~@0)DIJ{&C2f?MRsob<*Ebi9>>S@vjYpF4!wN#74jyBB0*EfI zU*aAkeO_)}FF2Lt<-KeBjD)T#bj%G1s2qX-p_mU}FuZHx5ZRT;CYb2Rf|^;9#vZ+g zgK(>dWMA`!IY8M3j@?76GMB4F_+dcL0p)P3TL?CIKtb`2J?Q`eh?Ddy&P-eNEG%FpLeAXR`o4$#k&P zU?=xpVQ~1SJsC?NyG6RD)lpJJ#10U1fVhikzc&eCy(EG~8S2J`r0y#alo&6;$>mmMAM*uz6fT z;{lt>g?Kn43$NiNmU8NgIlvBp3W9 z0mG&RS?vG~?3EWqnPpd-QS_VO`Hq!z?i6W2Dpf!-tpoQf^lil60^JL71Iq>k8ymt) zGuXm6(=sIP^!rOw4+&82^b}?7pDD_!9#buHN@4uQ%B~6wt|EkRFt+z@*K)m29Loi2 zXY2Vkb>>iN15jqa5Q?icuMqQ%+AdJRM}C~A5au{dsWi>*Tpbt=g#Q2;BTDN#iiH=o zk#VdQM4RR4Y>NiSnS90fkMl5p`>E%z+MK;IuCWFCPgcl7a$AB{1)S8{AyV0&yk%|& z?pT$!bBws#;AP@CVW?pDmijvofaZE~A2B9`ReTvT;p`?lK{r7E0C|LieJS%Y;I9hJ zmN9yr9I4~b*4YjN<_-tAj*3M`?AkZl7&CEnWW}x0wYC4;Q zKwhh6WFFWD90Wk=Dt0dd&X!f<{>)0>4#z3*+<(Zc4I8;!mdi)JN5n%;L;k6O1{a0K zKxTMPnTzDPbcE9Y(}mYC99X|(Q%EISs!NEF(ucR9+tD}Z-r1UM*2wcKOJZWUg#&f= zJi`KT_ntkvoUSEtjw7_uu=2;$wCr~hGh^~51wn7x5vP%rA0x*3Kh(lVH~0vAvS-8n zPccXfm3Ma#PNXB+7B9^a+gOIXx~YEhl(svnb@y|%$>zT;VTZ7;;kxBsXIHqF!YlCt zZ(}^n9eYI~vRPLm5VAFpA3h_AS42$8F)Q{}5mDgW4y;hq zh~2^%C?s(|(0s}f*dB87g6935CUAV*QQLB{Rnu2*E6j4w61h#BB8_4d9C2bpyJGGG zxO7W}X7MSiSAdo*MC^qVs?55aLxbr?C8f)`16_48WdkJjPkD<0Nv+EpybE9A14Zzl zHBdeql;VuO=A*3`XF+{sL{M1i4dz%lCY3Q=J}gz4{iWMJ0MNw38^hz!VY5?YF)zdr z@llpBqWunRhDIP94*Se~3nB)~dqA;`H+Uhvp+S)17Fqxr0sD&0mR7}lvnX!gc34!! zdwK?tzM$P*BL+eeJSB!^a^f0H4rFa|mFyq6xXKh*MZg@T9+`+i+kO~pdKa$t;e{X($|Q+o!l=Y;i$;6ar$Knu68T zbTz@5LEI#{eM^_O2p{TO{mHCV0{Mnh?_8)J8#+8rPn3Bg*kH~3LsPFqi%)ke}9w;izCDZS8tRB=G8*UvkEar{6Yq-u-rUw_L-e@aAmtcQ8Ft= zvv3g>7QC@cx6Puz?UxvrlXB`>u#dW_aePUk% z*tQDG%(@m%9}|a|j*Y(I^FmZ}-}qF=xLs{= z?+_!L^9OCV`5;i~EImy$#5s+ra-sBvaS98C{4(B(VEfG;$89B#+GBdHrduZd({iQt zsZg=SM1TUb%)ZDA--x%IPG@VxJJthTK=d@;3@;2dtY5QVY0tm@{{S{ihM4~Va#hN} z`eqlr^$v_69t(krh%Swi#~;W19*y-XR@_L~Wvw6VX95L|=ZXUpH+H_)Qw~NlTy6I* z;RtdLt`WqJYcqGH%xS$GcYUWLfHrE#pTaY@6Iy}Eej?_*U+kTiGO@|}+_1-fFpu;R zC}#_ss1?dATO*$g1JnbGJCrvoZC*dJz?%FmmMNVsQFrcxaG#PIgqH;>_nk4mT3u8A zkBA}x*Wo_W#^7IZj7G>RMs<}{?Q=3Nv-K&rjTrR*0EiCn17u%=smfT94et$NV^Q%r zfHpxaVIrHc?~v^e7zUS?!{%)X+oZz}#hbsTYGQ3fqmUnd(9{YS=pzbTA2S-A%I*SG zTunz2<0ht>gEGcbqRW0I{N7*+DQ{6WG)f`AN_j)fPS@`?A4%_h;wC0GPaBn=CB#@X zn&FgBDazchN%absmx;UFX4!&Os1l~Ri`EJdxkPL*&N(~&k%PVM4|qHi*(>DT%NbE^UeTx^DY)A`=kL@K{3ql3HDk6A+~F>S)Stc~V0^^4CAK;b#B_GF_J^*f zM`U(q<{D;b+=<88PKG9PF?r%WZpda9*NLtsPB)Z1Oq|!@6=>Q5%<5yOo+Vq|46Bw> z{O^?O$_%@6Jo<&*eq>Hh4^g6RXyKcQil_H0nQH@QA0A_Bss~tqnCvBWTNmbFZ3{;a z{{Rug8Ff$GNs)F6IG;b@=3;g=7qR2GD-aM7m7BihqS6|^d6pghab*|;A3R1wwGcN&=UA76 z4$I}Q4&s$B1OEUia?{-+d%&s#vGPj9SjSNFHnL?3-uD<-jk#5zut2V}3{vh;Z^WmY z&;_SK+{{~4Y$hr5GaV}t)MgZwFV+755Pgr)9i_oOru;nIk>;~Fo74N;S)7V!759uF zr%Q*pVq`(~;M6bi8F+efryX}hu*&Gmr;ZWF6C19amX-y}HHJqdPQ4jz&ju8NZlZT} zWOW(IHy6VCCG(xmn?Bf@ZJKaI1bZ~D2nEM%;upyd1&1}v6DTNA93N&O6;BXV=1^k= z(2ZsVz;%k-H|8_IyHSFIbKC%#li8~FmPOZtmD%QK{-;*p-CP<^Bw~RKbLjYHIDOgo zjNn7!CC*RLKU}ij!R7{%Ez^ymFv~}c!mJLc{{WhSV&;3jT&0AUU20zL52i#dt8p}T z&we`ib2IJN=!W>N(?-3=%}}#GE0tlPtkn}f{TT5W99Le9#<->xiO$&FqcGeIK+K0- ze&r0gWKbAlo7d`=S;WFm{z0-Tec^%951G5wVN@h>JAI&pQ2A#fH`fqS zyso9AZB5)@{4t*P)n^O%YFcHieEaaH1^@7f<_AqOW2KJoJ^aZqEj!8$7dgu92plslwUL6MI0xX zq~Pe3RIi!BJQB3Y2p^L;5Ll(aWyC08v4c5cw+b@a}ipAY+4^IM3!_%fMJHUv#}}_j?B80%qr&0KZeH<%1ZPpa^gB; zUzn}Rn|e!wFt@2tPC`~zEZN7T^uP=Q)=pDq9)YC5&+j&R1-VtQzwAiA=;kvj48G%v zg+cC`AVMdA8O3w^j^bp3#9nZ|E=4jbD|Z^`MxNUK65U8@hD(t3o56JtX!F!z=%b-WO-s$=i(GhQzDaf_%?snj zm`MKs;}dUPj!UdW+%^2Ci|Sqq{6>FJ<>nPtgBOly<-TRRx@2+%zjRvAM4_g#nryt3 zRcMTVQD_Ivh`R$6XXKp2m|<$xt}wh*x_cNgQYJ_mB2gf{zJW2;6Ib5ZxsppP)DoSa?2rh8< zF&n_{A|M}|I9xxwnC39^ZC=b>!{~uIIIYZ>X77-h3~Mh;2-?en))joz%WEYGTrUj8 z1BC^%j^P!nyn!kdaS4VRer1#f$Vho;i-xod%muvw{E~of_dAK?IJXV&!{`uP4S{&D zl_U^+kEr&^&eYtX@>lTOu+g4JtjmNlE1GK)q&_7O4=_U!Wi0ehH;Z)~dkygbRttsY zc6g=?h$u7i!9;JdP+|#1PEXwKbm7e0_x)z^!gcXgF-yoFb_=;-^L~BCWU3m0I+WfO ziEUjLEWg|>n69&Q#tCUw7#}i^gLhX4m9mkVa0sOw!?OBx_x568%t^UvjH^bV9m2`M zu+b6PJ!2E61gMFkfa$6kOf1kb**WtqjhBF1a*%=tYtNb@!;8}^fjJ{Iw_3M37$x1n zWwNpFP`zbCq_#wiE?db&O*sc0a@|V+i-4~$ij>((n33>_ekN7sd#P=0=(`ypA!oyX=iHqK(SEN1SY6S@|DOPz#|@0l@|sE+u06HwI?Jzd=NXRosD3K9q|~O36*J=hC7?VS4nV zixF(IPA+hBOhi=(MMdo#`e!N2>v5VuR%4gj(NaKx<&4@6ZIbKQpR~3Nj_^)c4N4k8 z=2@e}QRHLR3FQMZSv~PlF4Ssw3|wLU3>sWNjQb#$DYFg2$efjZ<$=Ab{{Uq9aU1x! z1-gc$N4P^_)?9R3sIA1~x9)~9F9cBmkS~RE1#o4e9jkj~m?Ob&Y^|NHy6)*B&QI~X zBkpAD$6hQ|H7v{~{!Q0g%x=L{;WX-HZ)=Muz;O;`77UH=%%m)+2O<5+eAA4#QPy>P z^6Z7GUo$6KGnOlvO-XifVxx5nJ4kijXR(KP{!G>xk2H7e)m`wSyi2bkN#4LX> zhCgx(>(6jg`7jwjGLK_E!TrR~-{_RilxN}>x_2;L{-w?l^S`$#BS>bEX~sE5iiU-l zUOR<%(ES0J9$6YN`3;`Y?$>lvIWxRM)Y)WJRl7=oid{U*xLt`0X^A2HArKk}3myx5Wo>$n6 z;m3{*w=iW1`3c+)lnUA&J~B_HC(2mTR7!yKC-*CIO^bCY+8qK{l}2G-+5RQrtlR89%Z)w0Fcx*UAJFo^e0&S zpxxYRSLmM6#Ur^(i9YdR#AjrX;dlu077`#$d40mItbCWVULEqT3!z$oh!IyJou=N|CIX^7u(l_d#&^ zNGMapzuY941fuu`arD|-%~LJ72;G8#)^i88nd43dyND7Y+PenVXmjYz%Qwr~cX6Kn z7b*`Y$%&bnWL@Ur6>Ai@4iD};0@pgZA=@|)wFl$37b62$o*=$MYiYzU6R%(zibEl% zl920J%KJBViZw@eHv2?T4p>(k#g}j9b-0(G#IUSbd4pb&yY>dAppT>7zy@z7d@=Rl zMIVe@?rw>aIrBaycNxPbUSXb3gvp5AZV_m}dxSo_LLWFyx+pG|Az+s_@LJzr4 z;L4_0!?kx?c=5);{GWA(?`cPE^69tshO? zYoi`_Gm)^TplKoy#JaZq(uc>1F4~wLxq^=ZV2aRh{v(oI1zsMKTp4s`yN0@Rlykdfw&rdfV3MVKUS>tIlV?(q!Ymlz z1_DqvY=J5RA(nLoEH1jaq$+M)k@E9sFwxm7OeCeLbmdiWo}xXrU)knq5Mt-rpt1`0 zob}|JAw{;O`Cx~UC!UDcFnF_YWs1opzRB5NxGg~F?^i6iQqGML@Q%# zICA!SnLr(Ew_dREAEAsHmp%K+Sc7q=ZSUq-N}iaxZxv+Kc_o#qMz}5JC=)CLClJF1 z={ZQca^nW3vm4B-aBZ)ddxD(iI~@=Y3GjdXqFx+1W@b`Iv5*EckCE;V0}r z)8=3wlU*8l%)}4q4J$Bvpo+9j4__Slh6R_9Od0+qRzt?TtHtN2H7BOZiR14Z5ny-z z$eFHQrn;x*ReM`BBT}aTFl1&zmY{;4V9Ix|M}e8*{Som{JY6_cn125NQ!OtV(=h#1xnN2y@luW$5$ zKp7Yqg@!x0g{nM!p3=I3?hL{f?D*n5^%vakDZ=cA(}M;q9FmkoUkh{x46i`vMbS9N zZT`Y5t7%HU>KKdJ?KyJprF{T@K!Cq(n64g*@eGa4OLuMYG9t@PvWx_Q&ysOZsb3f% z5)vl=0H#=ui};N<*u}HMz~XXDLl1H<5$PadR<0o2Y%ucig)>0z=L5KDjdyv5fDmr% z7hD@)V_sT^&#uJ3EmEcPpAi~4v{cJ{vtMp*02GU0hUQ z*7x27{8caDpIUF^VC5CuMr}W_jk?A@BT!=cy1+nvv7$#PXdDG-i2^HZ%IdW#8$UVX zJHH=Nsj#bzCS`$8c%&U0&=yLp!hQ(TY@K2HAt6V3FB zQQAJEV#OY7?iB z!`?TL?or%PX2`gL{$g~yAZH+MBW**(r@NT~#B9Z7!}Ol%l*>KIM=-m2fbI;$m6$ZP z!K$pww*fERFv=l-Y-|`w+!mn*GT3o9ma&Bx;q$rB81s*43B3A7FC~?K-NjPvGh<)U z5qVOkIr0-OQK@J369c2g{{TTZRmr;cio(U${8)e&oY_ed0qYl_5b97Lf5X{6C3@y8 zvJ-|;D42(ww{UD4XqGiy;N_I|xwN<9OYJ;Ue`Vr5s+YLrmY!3l^EMgq-QYJn`vRf9?^tC#o@gI>rdFg5;P z5!_HMTklXZwCU6cwF=)SP9@=R?NKt_LPh4Law%^P%EM(+j5DH|WjevfPJU1wCnUIT ze^TLKqYqE^ijuYJ{{R=6%=G$NZ==kz99v5NwJ$}wI*w(M)F!-N zcv64c5UpDN3pldn@Ft7|x3H@evP;tivzV6I)sphHJO*a{Y)!3G_PSUfc^mHFuGW{hUTmAT(4R$fr5Ip0?A!O_{`j9 zg6Npbh~a;M?Aj_c;Q;B6I~jeL{2gC!=*GRyb}6KMdMBdh=y%ijo zfH~Toyr7!PLtYz>ywP|fPG%JU0EXglZb!^SF1c-uBx{UFgJ-$a9aJ*I+1voY1H>48 zrWDC(eu9W&Z1k)H=P?LBQq!S(F>&bXS_086d_hHzY^x3xdAY3OZ`G6gE71eB@h;h% zpqA^=MxS#4hnoKYL_NHCkBD_@Hmt9@?q1mJ;$BY@Metpyy%8Q@$+3wG4F6?gV) z0RI5TJd()P#p}k{QuDX^CjS79ZTwtF(|f;T5EES0VWbS`5Hl342c!6oNpsR*5N^Re zkz9_LsH(Qw>*g13rCQ(%xP~bF^6F4bLV_fw7((!x%wmp+6-jC_2GP(+D9ByCJ|er7 z=Xlcp0K15&9L)&WA=G9+{vecNL2w^)6+*)_^h>WzeI3F*{QyQy!k;rRm_TzZVZU}# zw^42tFRTY_+gOU6Ja-LPKe=<3k<)tMpWr30kf8O6$hRRGB*L?tT|&|~M)-SkI59%8 zT}(wda{I``Qfxunx!%Yfdq23!H5M<*Bk-A-nU?x3mo8tJ4{?_+T)1U~HbMJ_ls|0u znL{uG62vYD-s*(e(ECA0t}1TL`eG3b;NyvVK3Ev13{CGa8xs4=TOGt{=y^_+cK}(K z)t<=sgmjxu3~kL1Og+#0d(9Z)7rw48i_~xyjrB2jz7KP$K)bd{@iLuQIysH9Xguo0 zNY!b#FmhrwIvD=Q==9)^q8YWQO1%((=CHl9;ybwNU!g+_i(p!F6SGfaE@v4v+Yx+(Fi!Xl~cca#^>tFnWlW;Eht_7ps9-FlcpW=P?nvT*1f6g$ZpAVTRE2 z!QQ4~4e4XM0{!=+;5Z<*pK*Yu<<29e#AtI9%0Lo@_lOt5Fyiq#%HnKxl(Faakl*@u zj;5{>I{<^p{z#|`u&i{O?Ynnm!`dc86s7hUh}np_dtM;uNw{zvS3S$SoCVU~GZ`m5 zd3^rDF%la$p6lU8fy*YvMIkUrWM2 zrdjZCC#?9C=ltr+*@;NjO1T!RA2Pvc5PhJuBAzqyLr!&a!TN%4+@ZqT?S^9<-Pzu()<}Tx!Z%Ah z$y8J(_(=d)Dd9pfwoB_?r@Oj5RHS zO7X}nF}yP^2~MXlsoAJa1{KuGO%2+I0enCzm#&g={!k!I=d<2eHrO0l+`m{w&5BiL z+-(3yV2iTqTHM?4pW-Pqpk~iSdM;i9QeV@k=3SIM6k%UnB4weHyO&kwgrK_0af))E zvTNz;m=iftKSP%8Ux?l=5V>Ph?l`EKxElNwj@brE7{M8a_HeKcX3?ADc&*;Fgs1vy_wGJ zEKOl?FPT;0Zeg!w8^(EyLEm_XmH{&8S+Y>T8No0QXum>%O<38Qm0^-mSQyf1!YQPHAT zsqKYCnVXg>;bqqnz*ym~0isZ0YPy3Ds}M#jl-#?xg$E|*j@7fI~yh!Kye zt#9y3Y;Ja(d;69JF@49Zw^CPiIIpd+L&cd{w8IbhH? z;0L3dnYN`Kz<(F03ThMJ9w&|0{AzQdOMkdu8tk=(@gD_Li>7@ydBX(H7SM{n#113r zrNxIZU=__*(G_@xEjKtZU{q*VzAB(aO#P*DKk8~$@l!<0+&Ck2DqEgE6N$oBT}0F# zM0+>8*%Tn^lm@EcLd*N2z}c?r7vqsYaMUQC19WVXuftzW!dqSZW34eC<R+< zoh5X0HbQ6r0Af^;X#TMsT~MoJ>#0;K$|bjFm_i+2)h$#+`G^|{FpoWnf z%;}uHrx~t(e5pg)qAVL!@iHTehgbcqU9Z>~n^CNH{!+9kd{r*k<{0gH{h@}629C&; zyZuR8ghg=9d;2D`HC;}fwSUv7gD!yP(8~c!3B&T zkvjlmXS!S@iORDu-huIRsgHTx>QNDmz^>uJV0Nn*(iwE%jl?aFZNcYYqX`R$a$P;r0D`U?gL_$=gbD-iqu%VoI-p&rLHe54oq2+ zax<+rA<*>+0~COCg0vPy8qf!S*u(Bzwp;%IalYx+FNvkhDod65naem6mK&8p*i=El zHcnB|9iJ0BwfXXkg2*;Ke`a8BZQDA%PaPwX5BQ4rs&u7~D{w9!g3p9;iI13YLaTgN zB(x6y0BkssK*2aLwASELHHZLdC(lc9oXan46|B|J7|dr$&Fq0#j>!AQetGV$U?C|_ z^rlfXm4zClFkq>?W@yE5bXzw{W%Jj0+ZhyF>t1Mtl01gP-5L13)#Ri*exm;*SdE6gU z3o`vqp7{QwZuN=(00!d0s9+XC?)|0;eh^`+ZH}Y9K@UEr%hW;KE2==?j}d_j;!;S`-*e`9bD8wmJj0(7TZtnb<8I|m}NJ>f~x z*+Ic8V-U$-3XS0@MIdPaVNuY55mxfHLN2Z-gy0tU|&7S)s&Qz4{Wm=Ky}If$?)PrOu^VeJ7KmY+HC4A^QD zVvt$f?5IA!sn{k1L?jGr0l3-Ux8@9Fd!RRR)%T?6C=pf9x_G_RZ5}=d6DGmF3x}C@ z_*bDvxFgK5zkN)W?SgQM5K7E780K)5cNF`8PAOl6k4le*19$!tnGpDj zmXjuR70`gm;R(kUQ=jPrkxVl86i%8Tkm(*E1Q-V=nPDEb6g{R^9}Dn-vOJr7pO+I3 zJrrsI6O?FGW=}GbQ%_6~+Hy<8+6z`$X;5awFb6PWFlyn0l`3WVr`a)a@N7xOsx2<9 z;%v0>FUPQ!DHrH-4g7j_!CvZL(tl!VIt0K=5$rBuNZD2}-?070-*O1ihR<*(T$OR! zX(@EF*=hwYS`vIe+!qi_rpGKo>Swa%!(&zB(BgD!-US#fK=q2}(6yd~tBEDIhLz?8 zrQtBffPq?x`I&$)i5ZiIp$*4TVO)UOe@N=y5bYBin$YpqN3)huE2rx2CYCfb)%5Dk|@h1YV%#Q`mNH0`I-c&c)l&gHr8=rJMEf3kpXYe}W1s>ab;h zcP>wV?hz#a0O6nW`IbO+R9%KyiPeW|&;8<7#E9Q-58S9K==+Cjxu^J&=ao5cxE!T| zCjl2sx2l3263X4TJ>n7AUc?@6vCPLiDd1K7L0}+-GKUuXLJ8c)g~@0GFW(nsImhsi zRVEYzUSHI())dtCf^g1-ID0S7;49D$d1nUvOv7v4`xRf9PgV`9)_RJAeZ=$Bu$TTk z!Aq&5fUgg{bfB)#+*Hy_C7D1-7ADoVT(D=i=N>M@@h+OGRtNS=5b1E{t|jnlM&!%( zO7jWsTB5L?VfjmHfR&H?WiY6WyciY1 zDGj%Y4-iI)y} zWl*@#EObNLEnOS-T&BsKuO;uVLR}u2&?CQH?x?oZTpX!q17I zi?b~YYs9}SssK4m{6acG{Gi^mzr<0whKpk*eeHR08J3b|1 z6_+)gn6%B_CAuy&`)Gkyje>3Dm!QhW_@SZ9bYjoR5!iVqv8T6p=4bbFIHDTB+r_gz zwO#%cRHD7I8{6#j#9ZWCw~3dvTAweus)D`6W4T>__b}W40GiME{L9EJiC^g?+mQZZ znrz~r=ZcHFrESZ4IFC0YNU+@2Y0(}TpeabRU*;$g#R^;Yjh)bU`@4eJeKJvS19&Al zo^2G(I-Ex>F`FFtnQeukJOOkBOeaFYue9PUhWWd*+)f0!L!LUzcRdGfO>`PP5%a-{h4%Aw) znGz$YYfCLv&MnY*gSC54+!(4h?d6r~4H3~i*(d1NEL$isH&&~_RZXXLh=0t=xB#iq zTMh5ZYA0h7S&$|cs#{fiVh~!7B*v`n@f=_>njTnes9r*Q@h$P70e)g&-^}YoHQLsr<>oaO zXphWR>I4xeav7bF8euOabR?{5TKq!eD~79vp>mEL#oV{SUhB>vJ1EG|*2xLHT->T^GzYYc?!=b2-{vfcKjb7*v&K^)s1;*SWmr zZ}B(L1mxjM}?~X z<>gCSe*{HIX}@GFoiebL>O7d!I5%l(Mtn5?05mR1{_$0NA*?|-?S49jR$bvJkF2oq z%Q-chi**Q5;ji}12k>X9Q|%s{$YxI3O6=^|0Q0H;00tVuODQ|^6f%ZM+l!7^*e`Nk zn4a-ct619D9}{VYBpIXV;%Fj#GV9D@rZv_gZwTlOw+&P#TuUvbVkiY2HBO^o^!Z>P zzf(PX!aH@t#Li-q8W@WU-EF`6BKjVz>8n-D6yd2B)k~GPQv2O6%X_?&*g|!3-ba}K z0R8MPGSz-Rb7!y)>D;75ZSuc}!JI~;wSo6JQb==|KJ1`8qOgllTw{E){tebiMe&K< zK;3c0#8^IDC3tKwjsVtVc@uRIN+WE>FHdAJ{4-3t@bM^_0A%0ffS;8h*S&QuX~>vh z`e+{DApJvRba2VmrNoA-+;`0@mTiMJb@J*tpLq+N%+=JaK5@86)LpCuxLuEyDUBF) zp^1Z)WX8SQ>R`Yzs@OQ+f3869|HIE3h zw`wqH!vef>V%MnKRR(1n?S4BrB~h@A^Il~ghI1`T8^Wj#-AX9lp+@iB%tctVq6192 zJBB|~-(uqv3dzYxaE_T#XmY;O3mzbTl|^DOIxpg<&`SN((mKC}U1Wk$3bMnCn!TrP zoH&(k24XS8sK?cyij>E^voN_7&5SyM=4gs5oMx=-nI-P>F-RKbr2 zytA33K~K!OMFxe#KWRykXmSn8L_01=obZ(4)%}ag_bHv>TABm9VpGgnl-{Mh)&}y# zEFHJUh)?AH{gWb`9?oJF;THOWHb%;c&(8V2;lO|e4^0J!iO0(}-iYD>DjUAOYRV3!r({vwDUBtS0hW`L-qs+6j zx5{3#JYkOjsTQDe9n44<5FoGBd%qK3iL>0c7Mi2H&RvM<)i_hEM}~U><$xaS%gp5J zZkayvE$l^+j4clf@tIjIp99hr^b*&rlrZ$&+_;<|Y9=ER3b}O_36t4sCt58^$2t5B@x7^N*qIZuU4|SQad3!bRA3O0K!2> zCDh4*fQ`T#D|?TLc4%zHGWXbmvn@fau*k4?C~`z)UMH74K~+PSw7?Xj?h3*SoBqF1 z9|g<&CVo5j9;WSkyhbU_N`u-5-wC8e!Qz2uQ#!x*1Ai)xTQYk<9|1iq@4^T%%u`1t zr{ZOiY+~Qy4NHLphi)JS$}~J25iNBaV)aszK!+=Q*r{0;Oxk#Tr_3~AO0RMv2!%nq zMk-7a(b2>os*18N-xkLt$+>JL+<)EZ8jJ{(5!Bf;q1+@bq`Gk`VhM%>fMWjuL1Ze| zpGTQU9-4=|fy({rr6dyL20A-)2s?tX{F0MZxwJ>`GO4t*NFlcyZW*SQ9UwdI93r1K zDKaK0?Q0jrIaP0%asDNBe#QZg?|WveG3~WW=zntBaZa)A4#$MUh;vf+Yo+E{YG*r@ zsw|kb_Jd|^#KbMNzY#N09HiUlxo&4}E#UBIi{dW=?LQO5{{Wg)^4ekZlevvriSb`7 zKs4@+YJX8k7Da1v5Phadg{yD%G!(P@PGkQ7o?Cb3dMa;oU+NwdA$<(WYS;K;u6NXJ zy`sIJdvLeG3-zpf`R`UmCA^+VN)Kl{Uv7zjLlLSld?qTGk5gJJa_a`Gv_|MKEzme& zE8NdH+k*fzvizgO$_$O-&z9~uR@Y$EUzvJ;7#Q#AxQ>BMy+MPyfPS~l!a=W5YC7w2 zIWF)1k)md$^c7XE>J;4}VR0&OCK6_1$0_6DJK9!5%W?Oqld`r?&8&Hdl9JC~6H?OJ zj`rGnP#t*+nuoE2Wiso&%y^zLGGCuEPK;*91y8&BKSM7v7TcjlyH5v-^BahID&7Qf z+A7o?(Gc;t*K3q`p3@>fxYP=V14w_il(%K$BnqL=&SueRe$mq^kj83y^u{vO*L;{= zq5UIqSE6eQ^f^o~cx)qzpw8mi6=vwEwiRyK{R0qo;74-)S(u6%%(~RBk^9dppJ;Vu zYS8Xht_6jPXSl!`1RXJz6*{=FHtH1Uvhgb*qrdE80qkn4qT@@H7XJY6FpG3W^5z?I z&<*frZlCungXV6XepkfP08D$@CURFj4@>rT5hN2 zJxI1uh`e@!Rz2V-!gAiR;VL>VX&*2j&;sR-;^DUNI4sZ{TbGotW_FJ~g8kwQ$Covk zN?Ixh6;Q<+oX;{PFkB^Hpif0zN{^z+pU;)xjd2?;Ss}7`BMrC8IM!opQ0Z|MsQHIs zYeBHnq_01-t6Vgx9FxL<`vlC+^dL(H{Rj(M2_2u9wTmf2C?qUvTC^rog$GK7aQ zg5VL$~I8F@U@vxTjFRNV1%^CV&WWPc}Qk8liqQt=mm3f&sc6} z!qS{d&>|3+u!?CO=0J2z3Dk#9sh_v{mllHwWzAkMm`x!bD0em$y$Aiu>doC`KUkc9 zZzBR$UWRW+`G~v7fJ?_Ox(#S~j+Agj7V2twW-^x`{-G39hX-(zQmfVvY4ix{r1Cu* z;vfVgVsTNO?!~BN%QYJ;TPa>8M;_zN!6d)wY6jEOCRTf#Gl;$>{V4iet}|8w@h|=N zUA)(!6f9K!$XkZaq$L~c>^Ry}70it~NPq4-ZbA7^BkeAggtO*j zbi?!bGaus)TJ2csUCC7VR6M(ebE#oZmWu`(;;85jN$)g4?r-W9Rw_4piBL6%w+1{y z{>ayRO?$wLg(k8W?A9eGHp9)az+Owl)$-1Swf)L?G0u(6_{Lc2e~Fsxz6M=Rw<*NS zchtBGm$SFpEXGwQwE0P~;+bCKdF!u_c#vQGfyWVT85Zal(g@wB@h$1sW(HiAoq_sS`B@tkF zT(5bBPZ$(=&HF+H0~z3j&(p1oQ@-e*aLyhi^rj7VMzwi`6|Lf&vk;n#U6o{Y3Dr8I z+K(tfPzJ;Hmu8{>g`)-qM|1L#6IaX>;#pkG`x8yfSAU9KSdKy0gScK228AU>-?3-- zkCj**^nhwenRCG^-UD%dn7SMImVvgOu6`jb_h(CUBFSL)hxaKcp-i%yTt|OvF3kWh z;9;pin=+!&G|k8POwkqPztmxKH)IFzNs-gU4u-Cq^v{t`^lkulV>GQ;%@h;wE7xYr z{St;2L#08bu_Is;Xzi2ygR4>h35lq|Mxdu{CC^wF#W9>tcPI2ZZ;D@Mb#-ZM4Tt*Zi7EE}9 zumrX1nvZ94tP;P5DI$rAsd3!@0HA`_@-MWt>sJ{604S+YRc~)zV_vqb_@YsCWR(>y zY9|d1-j@%f5P=+La^?|%7Q_Po07fj3{kNhQA9FTt9wyJRHS5$_f3giFTo!H{dO%hy zK@}HdRZ8M!Ugxr9@jQApy;!>Aj>EDb&!)JRNs z7WWdpj-Zfmw!%KRR#Ao8WfI9@2$aqO1|6Ra{Rx{06$7ez{WI3o7TU{QAOVY{D~81t2e z2a$`HGcVw$uzFohA<-|H-XQKYLr{>ISWU6qe4vvRQs2HpXuY!C%La2U4{N85%r?2x|x{@SOus$xmq?(H$*Q$;%^4&JdYLTVe6W$80})>k$r-H z_?3d3r*18H?liqM12IDK+%#FtD6(+ZFVxKgR+GJZOtnjQRe{p#ail5nhzR!n0H6Hk z$DV3C8uyf21mH9M6%yzyie#r!#1O{}+@*9ss%l!7@PL#hl|k;Bm*)wP7E)Z zF-zhg>js}UQrxOJ*$5|B{v-Q;W?|tB;pcD0EwDeGOy2`Or-`Z^cvu=dU%0jh&uwi> zZD`u^9gP-z=GMAw3X4HMi6BS!|afsqb7YZI?5iUO zbyCndzvs}uOdFe5>)?fh_NdI{f-Bur5v&QL8Xz@%arS0bi^Fa;^-KoY9(J_Xo9Zhe zRT9rI50uY)EP{gPvxDcUOg>U+jS*&^-bEQNoHhT$`+cN;jefCo8Z(E{Hz{{Sd)c+0?*mmyJNcFfH| zpyEMrgNO$NLM#`ODX5rRbaN|KM-qiwnahZ_yUTU~L)forjD~Re516_g&=31CC6d*pjOh|egj^?4s7~*9YnC~z{s+KX!>`RwZ zy~~+v9`f`EZOSy+Gg)%GGTBABgFBfmE5vHC_l}MR`-||4WWsJ&m=QH_9;Np$#MUKh ziA*A`z*Ft$J6yP?6x6N7H&D8Y7%mFcVr?#Yse&(wDqLDA9|i@1Po84+hh)i($r2cR zN-L<da9UYc`&|dRg6?zxVQyUrGl!W=nIJ*qsxs! zyXIq-+WWYIRa;irjixT1Dq#{1a~=EUaJl~8$xES&#J-+!=7CA?I7RK|@BSs0!0{iz z97Px^2XS0#%Esjzl9SKE;P2>@PxzCg9|3ptex-@W2z`o-u?a;YcQLF!)22D|J*;{R zLjAMK#r&h+qy4H8-!Tw@=mEvG9#*Fu#pBb18UQE=#2-Fus>9+7vP0gt=v=OH2U924 z5{uT4TXFb_lA;)kck(5mVzIO<1&rMYK1esY1Re7BCQ~l;=6HDGKW0nG&3T-syx_mj z7&^Vjdl!x+Iw^wO{{XUTRRYPeu$hQwrDY9fB@uiDYj`Z0xWKC3mMLp%^AbS<)%khz z9ZPv#8M;VP?$_TwCV~-hVf^XVA@QBR8A%Wpi}RIMDWc9tox#LcU7zYu99WeSw6S7@ z#;nw;T8V;mU5IkjYuq7aHxOmF?sfD30LWac1#c*U(t?jV6iQmqdzTmW3vwp&?kP-K7gXwSEg_&$TwY^FULqYWtGRw(MV0xuuQLb7_VBy70kAx3 z`XRwaCW_m{D!0sj0&OeRkWu0#*2G_JbLt68R@lU`u?RbK%KrdW;@T7^P+S-UjpR(J zH0M9{ZfIOio*+gq;6Jny%1ho`@?gNX>LE$D2V5+&HRBMY@D3#z{{Yu)b6#P~?ps6U z#A-60UXy~n)%Cf-q*j7VVWe0PjAC(WaLz z?JK+tuhRe{h9@F2JjD&GWetjP*Y5m6Ha~QXxXu=1h=<-I-v>FQ6=_Uw4fG`9wsNPyd zv$>~MM8NhU#IqZh;-*n@KX4ECFB%ZoluRn+_iHT|6N58u;;`G8@Uw?;2-zx=XL9yL z%dLZ`pVJea1sYo=$6kK(QvUHUH0GLa}OQ`&1nQF{Sbxal*t5;IZ z8$KnWn8320x74QKZe%5N%sV)95n93{)TgK@+_zJ~EiEkvDehi-;pH-(`R|qVz1Vil zt3wjJqi^81q&{VF6vq@UpsYuB^BP4Vg1A(vK9ak>g@}>JHnR7+{O~tw*lc+|y-GOSuQNU; z+_hh%8E9caTqEgVse!9i1N9Q-M6)5SjpAx(rGO29;ZW-4<3(eIO-kes+`D4oOBQC2 z?pHFk`0=@-8iqv0I(PZvCE8Eg@%Olai&HNbeVFkmKn8@fPKKsvx~fflw;ZKekeXG? zS|B3yVeUg!rFAW;>H3tpe9hWnJ&J_6n|*l6Gc^3q6-CRsOC2xR+~x^zvqKM!uY9K9 zmD>pBxBWzAkL+b`GCk54uQ5a`Bg%=uTsH~~a{Q886CAn^xRm)nB+PgCE?)jO(=es~ z0K$GUQE|l3kN*HF=4)-LEV;N+AfX(Wueo{eI6MfDI=NewzDw3()`b%k14Lg-aMdc| z6bLibTvyCzA5{}YR;n44;tuecb~+nf%A-~>3i7nSGw^3A4ID$V4g;eql8hT}k#C4- zGyE2%FKKrajRBcTmb^g!0Jj%wqeR@|;yA{1t5Ue~X?9PU(HDsDcX3CX`o{Vr=(Aj| zN1ty~f0>%%AqF^~jE@bR);Tu8j0XXu#8ZY(%n5i2OWI_WOasdk_RnARzTp*jWMBHh z2{x_sErYeK$AM7Fem~Y3`a3=U0EA#>SL#}C{hk?^X-lwLrZ7~ke{EO;5%c^5`-#Yy z{{TJA_qaX96D?Jk0@d`_QxcBu19F)``rGRFIV}SG#1so9`7;41gyvi*Ue%?tk{%GN zC+G%Ir_y83PFiYIX|W@zY<1dd)Kk<86%4wVIA$T{QkjE(lzWPze8TqQ-7Q4bLo=#s zKc%WR^$+s_z5J4acMl+$KB9P2egZya^mA{yt6<*MRqi zFo?W*h8VFfk5N%7CI(!x(krg-b#P9I2yP6IFc~GhrL(Un=E4zv8zt%GJ5@)4lv%U6 zj8KhM_r#N#LA- ziGmP$&NXH>CP^x#1j)>zH9gVSF^1(${5~0PTRFBZMFNmq(}*}h++eVlrIE`KT5QZJ z(4oL09aGfy&u{TdOZu%aE?!&dlxKqCa;Z1CnUbFW0JJT$$buhRWNQK1GK!^fEsMEU z*Da8v9hXa$h>?>QFywI=-qMA{0P%uYH$xTV2+vl1IRe?kIN*J|gjW2y+InIAaNEXa zcNnl%9m+HIBM%t#Mkgbsy|{$2=rg%e0*;Bq+@hwI3=r!V5>d9AweN_>Sryd#s68yK z<6M;Z9nIu>t`I1&Zf+dW=666cv2W8QDL$kND;#=6&ufc`QOC>a3@0dQjqduG^Tu9n z7m1f7l+#~i)+YC3;kF8Go8vb&_9IobPd}(@)*cHnZ=kjkhob=E&rGFxW|FV0Q!)u8rLm=$Cr0veO7S z!s9Uy#7gLPLs81uUfH)SUzuhP43W&LsIqDS*%=tyK@OpAXH-G#;-};>7?+V>EDS)s zwHU-iWtTGl0K{5{4!NSB7h1^aySL&R=NEm?&#`S{_w}1su`{tFUV-uuUF$xfM=|wH zTc2sU_54hpb%2hhd*{~aa71Zjemi(q7 zSMqWmPcea~v@{B5^Ps4+w_Uu%&+YZ$CCL&%Ob<~LIV;JNojxLZq&gF2_D#5bi=U4L zDKf9hD|XR&4lJi|e~DZ&{2~Dn;w*Qs?ujOY%mMz`zRTw>XE`{4WTv9Jt=Y?R$9IPW z!m1NeD5-Rsn?E-a28r`(jK!=D4Wp-<59(}*)GNv|y7z{e3nf@k87)-F$M!N^$$^bM{qD* zK(ri>i9)Z5$}=;{3T0`w2Tgpy=q0SJbu*<2%(aQwhs01 zJ;l+VF;z(NOd-peqwLJ8gmQa&0|X|Ky;Q|xdWF3CmF6eZsX0u6b8TM}PNJ`L6CRZ9 zF%iEkp`;y3xxt9oETKZ+W?V{Y3Y20DQw1vNmVHr}`<%)# z2eI=?1^BA3$m#f>G>3CS)TlzT)vI(w3)FN3W*(WIt=)AF4oHxsLM10U@hzBp@O#ZJ zZJ8s62G<6l@}n?CM#s_DrOWr02Mfe7#vC#&;f?S&;ZX9I0)&H>DVQUcgI?MAW;3O* z9em;X43yW0o%%XQ>Wl--%MEy$~RA>Kx61_Xn__ffc<`l~UoZV-;o_ zhIPn0^oz_%AaG(Z?C(5E{9>1gblP&aXPUIs;zLbz$?m<&{{YsD;bRHwaGP*(Y&Jr( z*myp8gjgvP&!aB3!=l|mR|w1IKlq{03mUcE;aVfCY!IumvE9WGh-E{BSIkbVx~Oz3 zEJgidw`GsgWGioPC;KAi@BuP;#lRg;Qp)$UP|#wB4~a(AVk_)n4MUc`2&Ix&ZV91{VheLyn0tfw4+L4@mGp|+2E-|w?0eL0)*cMadez1UJNG{p6Vdyhr%6 z=Al~?Hlev*bV}PSym5$0YLLLc$sC6&S58Mh2lq9XRdAQ24YYrrm^#LPvR!AH55gth z^hMr~Fthjcs4gor!!5nJoN~hW!Wc;M+$RDTg~46^(HAhsRWe-7xq~)k;RfKm_*FAz zbuSeFIUVya^Ur~%kUKM+fY{M3hlc_UUX_%G)0pID63~Xcs;XwuS>~nO&L3eAa>^QI zUAT(k)*vO^wf0MfX+O|$8gFRp%mJl`c3Ia!?o)E2I-i*`VB)IveajC>&dY)**09=F zmN*l@rk#WQMW~xPJj1k}3OwSLsu}=8HeCnO9Zqv{<}KV*CAo-^!7d5%m79tJRwxs- z#5vE1`t@Z!qLot?BdK1(+%_PgQ5aKBb9zs7Bz6yg|K>iHIQs zSV5?GOO1);m-&xUWsOI;R0>N_a?EZA5}}t~4~7vfb5MCp-WB{MtXz`gNlW`_3aALf z#fiw^@SATBj$ol!yk)ui2!L;49N_*C@`80gQio3NtM>tPKE_edo9MZ?=Ng-p{KE+P z*D{?O--s&Pj-yE&9eExZ$vWUt2K+SmdVK{TI}?pZYnR1MG+sv#$@XI9+ zQ!hj%$gGA>NL{EQU+!@3oL#3o5FDi*>^Qd&)gPcW#iWt@9+Fto%amvp?QrFe73)PfOO){) z^@9>%S$9GV%&>+BY_nH&vR-(>%_|6yQy_G=^($Zr-?rHb4{Rjmnc3x>J(99sZnp-~ zX-%0mD8oi>@d$hM`$o9GBoR}gSb1u^M2*yyC!qx%RH||4H3^$4`^B+{`1Kx7ET!M^ zY|Otu6=bg-^V5h9uxFV!aM_(s7#av(L;E0_>h{xV<^KS=yO&(xpk4e&%B>w!m~C{a>22`1hRP;niI&xUCJ{%T3))O92zTnYbpqUWB8GfWt&!swyFKzEdqH%rVS<5e$yk z4-KO#q|4^LldmrP_z7q{!*M!qXzC3hm|sJYj;vjgC}wV$D&cBQakSPb#%jy@jMW81 z!FasKoB$_-RXR%b00IrmxMHY2X>IYRTU<}ViU61bc6<7M1R~*Iwg+%axHDrcT*QUJ z*ubnPD$jPnQPv#PC8hZ_Q&6(>+Of0ew(Qqkv-)683t>9dlP5q1?+Z{;kHD7cgt)O0+f0T_IvDM>iOq9x5p`C?!I z87uQCI*@_rEjjs+GrO57@MZXe=B7vPUBFGoU2yoc~*+}5HtoRse=RaX60CIq4m4?m_Tn--TO;0lHI7ixcQBesnEC`m$V|Q4O{?? zKytqY?i|Pb-c%{G#Js&tXsA@MX6F4L;#rZeX>GYc!evxkmd7Z%M@_|Q;T|*a=o{t7 z^y50eS_J6E<2A(m`0#o>OO&sY<4n8@4yD)Df*Udf75AOXQwpPCfD{2mDpS;F29xwf zZ+~FJ%GFFrg-qNK?R-T{cEH1rOfY8ivnqdcnJiQ$z>ZP&p(60}7${F9hVv;zx6$yI zHmw>zs5uS$db%rGQ0};tA@||3CX2W*o)Knse5R(7x6En`T?+p9iG(Z!%H1p8H-qdh zhdvN`>tI6?E4{>x(@AMtmp^FMStG{Dy!x3u32-c&0-vN|zDWfxnD$7&d6TiEONr=M zn=NPQN{UZ4&|i%4E^THOJX`#*SDu(rXwqZMIZjtSxi@j~s2=+Ehr|`P_?cK~EveRg zd19M_9j{-6yJ=c+FFAvBS%a+=?;7-6c|~lyHB)0Rv|V0Uh3tusbuXHiatB5tun zJiYjwY9p+W9w9ryc-tq4aofZ^7r9k~O)IXdR-mO=0~eV=!|6sUx|}s#M*vJMPK-|e zAURw&1hY0;7JS9?)33U`-7w&og;+h6$C#9XH__DbH%Xhiaz+VsttW^ba=L1GMvBxY zfeiS;McC$1ZU#t}g0GO9@BlEU^ zMN=5NG%x(XP}jt6bNYto;Wq(bpK|9JjiB}=wMyVC@jnQH3NaQ9dUi|6j;%F*@EZlt ztMLU*o`1xe;PKqVrR*?_jv+vRUiiWXh%TDKkUGh@a!2o)G9dU*>V3{XY8ky{P3nKf z>(fS2eZW91Py*FgD}`8+mfLOa2;3@j!Vh6Zi~^V9Qf8{lbLeq1)Hj4vnT^XTF~>21 zW^dR&kmPTjRBasC_J*{o(uA?UFkb-js;;A$h3EHW$YLJ>aB}2o8Gl=FMPPzvxwK1| zGMJa>2~v$2+YjcZ6}0yyhFb+iiHKt$?U!sdP|M17HBmOl%4U?V?t6=rVT)jW=5HIF zDml|Akq6p#iNv$v4^c};F+hS8B@FpCMq(5|C~NXzOK{KDFba>1q>AnAbN_l?vRGc66zn24Oik`IyvLvsdL!SM?W2C8K;_vpOfgCser zkq`x^F!81bPEn|+mGDD$=0$0A$CT?cP>>ok1RaiG`a`Vd9t1{|IOTwo;fYU1;j>G1 z?HOC4EPDFd1BO183K*|w#)iTle&xY(`44QS<@7}xMhKw|#Fq`m;&3Ta3I=9yj2xmx z%vqP1GQ_XqdMN{ev}q$O5yP5VcC>2H>!-6-L`uN~wkrf?_qkGo=3KqAkEa+7d525{ zO{+adYHpv3aT3f1T6q1U(hJ{1(hfi$Y-PDv`KTV%xrkg1ML6$sB@Od)d0AVS?6zXm zeLOMlwB>lD87TPH%i#0oR~#YfTn8(t1Bgd1?{rNzH#LMTs|~mcxL2m&a~bQ(J1vD+ z`naV*=(ivC>YK6=YRXYOM6W3xdB1O0Dm3q&6N=nb^Dg93y_>l7QW&>ytgltbCXPf- zU!H&Zfhc&yU*HwT9Pv?s2Sn_RdpZ?^Vgrv!HBKVm=pS&c%BcF4BVXd?6OxT)I3cpE2{Q1NiwZHc_ zmxv&^ZL7`BPO$Q+RUie8GZ1|ZGVRnG4HxkL0C{~p+^)JM0sQ8zuMgB%QR53YmRwrm zRXa7Y)WO_9fsR^WPx(;8oVOO&>eyWy^VG(`uHZb^F?LYBp70D5p?q7M%ZAD<9()zK zWMDrCoR)h+Q;P@^pI+a*U7KJGSQY`)8mh7OxS#^o!%~`8c)Tg@6IbPm`+(nzWh;D(R|vHp-IpnF5MTKGjzJ&lHaGnu???})XiaDkM56f{Ti6F+@E z#q=A!kd7x52J>uZXt`{GKltFjV_5|HYgawpKaQ^^alg=I-@Rh94 zIoz_k{H#}DfqA#m5u&N4;3G^fHdr~#sC}Xk%u1IIAbmMz<_6tQ(p2AXVKgdJaQ+0p z3pj^RDdLC4k=p=)Lao~dqljrJaj);_Zd=iqptwN~Kr-o-wj_n1hGLk91kBtMxbM=H zs9jAgdzju8(GLmLJRpwNrTB%ERKDe75l}87a|3f$u=q|GJWN71?M#XBIlipaIC_le zN)3EXG{hWY3L{}2&v>wopmi!+xrX4Xo=--MF?A}OMOQYQ+@%k)X_%<&i&Bb!cX7t1 zDwZ5}?MLqqGm|H`Q2diJLJK#njL_al^5z(#FbEIKH)OyJz~y3C<5Oz?0CCrN`Hg_% z5gRf%B2e&AHsTL6O-jo^Wa2(QXlZtI!V|vSC|1_vT=7_+Y|&ECjf5ME=FNf@*^3(7Gt2bZq`( ze6rtnho~v+U{5m%QKd5tN4+x@{5T3}(1Oh{_B5e`_bVJe$LM*Dm1IuA)XAngG-K`| zc0_rai9)H#QPvJB!CRGG5aZA^2vfkI5?IPiVz-nJ`Du zk+N@c)*d~Wi@bi8B?ilYH_H6N@l<^iRm{7q;u!XrSJ7d=iO%NB%o#VMGRXy@YWfI; z%GmCHWa37xL0UJ@34o{S@QRd$Xn@3iB+S{v)hj93zX|od{(9x!I#8cKw?Z(Bu31T&>!-a{y zW6p`G7ecdU=9PG6{{V$E8C1>Iceo+VYvEhqx|BT`l(X4&POFG9uBOTHg`BjkSHgk? zM?L_~oy%!vvd^`5=+Hc7?`B@`+Cxyo5o757rl`4BPB?=jRVayr# z!JmBY7;IquP%ux!CT6R7F*%FD=sm%5IKEs<(bk{vz_+J-9}>Rhm2Acu#W;bkAhvOv zUlGZp@Pht0VFf>`Qh2*)xeS{kzofHVgxVj;1d1q6X zi}I5A_ZYu%sDpOH^n6Zl56)}Z#OJb{^=bHrDQP(`_?SMzj=9X|&>HeVkys36P~1l@ zksf1hFtwIj#1&>$#E-NIWVUB>+R1m(hVvSSl=6UX+%pk9UrWvKwjjh(2FzkUV$kAK zV7LeLE_T)2ZGMB&x40p=vFTV?gu5zQM}%n=2;2ze_e_^`j+yQT8msL9R?eZXZ!&`k zdY5DFLy<^--X*h16Q_RMM6F-M_Y#3BrDNaGN}QuGTzP_cLG5+S#WKX%4?`AiiPo8B z$@_&v+8~ZM#9tG@n?e>$&0|Q!Hx&mEp?4S1bG3(JW9=&c0K`(Tzy-Gv*&EJ15lIfT z2zCfPW%S|;fk;uiL#PZc0MNPc*?w*PK_EnSvjP?~RQZQvIV+YQsd05XsMU0#wPrT$ z90BZN1|jW~28xGV!L8*A&z9*8**)*Nbu$!KjZF%@rQFnI%3=$Ml64GTI;)l{Wi$>*S0h1f4t{{S-iOD6?(_^FD27p(U)03UGI)SIv6 zXn(B6lgrAn*s|)gIaS$m_q>DJXxZBfy|wJIe=Xb)ZCjP>v3R+Oe4R2ivK zrFl_bov}G}x4Xn5og*)^R!T_@j{Y8gBjLzSK=UeflB`6kV|NS#Q=+K>dD1*W6=78i z0s`}S*VQ058GTrG$t-dK!u7DBl&6sa9RPWR9Qv>-)=XTay5oyR0i1OO{5f#c)QGVA zxIa$|Wil9FjUYBTO6wVdpN-&wx7Ic5J{Woov2-SA%vbmkJaIqiyJmdc6X{UqZ|<9W z=YE6w`iJln@umx?s+W9~;!!Nm%?HfLhAS{tXy=ilqu6{z3W!!yP^gjjAgycSRsr8m zZ5QPny53F32f9c`uBe=3OHGe>%zPq^eA23{cg!Fan-2Yh>L=Bk%i~If7_ICQllGnT z;soAJ(f$~_e_4PVd=B6Rv;;#8vwg?vLXM!EOFbZNEzl9Oh`tGOI4TTM`VI~v7wlOu z{{Wj4A{RJR>? zOkYLBtWU6s_|myGDY;}0vjZ8HHK_a0am0E*P#*KlNT&eGRX-6k+7Jmt0qUc z;h3QFlwXL|#o|^XG2#YgJ!1QnOCM>PNOy?6K*JgPDOdF{E?G+rV@NSjK~WiX3wG4B z?HW3O^3y1lP~+360I@t*+B(OAq3yCJl`*q7+zCt4Qym5SO14^8rxXm*h~&AsWPssk zFQv!IxglyizAS8#*Oscz9cUjYDWnIs3zuU+(n`~%KnqpKc!8yCl+GG*UZsXi%@R>6S9YgI?kWko*ZXrq zao15+9AXmm%&dPX6GghUMjb_uevHa#e#;d7>@TAK0IWo)aVnmDr*NhLJ>!WBp0Bmz zMgbxEV;;xuJ+2%)y~m_jIF_vWg_OK1mD*#8nq%}#BTB1pxsY^{?=AN*W-zyime>dt z!izYId8OqyH?*Kv$-~sB>JEgVE$=dJFm5&r(tt5h_A%TP*^s^>a_+YhSR&>(pJqMx z)k^UwCQ%0v!;DwF#)B9<#(biEW<8++FV#+NIF{y8Z_$i?>k{IhX}_ipr9guHq|o-7 zWmDkdRX04u5$5BMX^B%?M`a%SmBw20FmW)vdy&Y)-lioAJT@~AP>;`}37M1$#-$xZ zM(JLg9Upmw*&ACW1FC}aR^jrJ_}|o8DEO&=4Td3zb~5*x1FW+uDkpJWN*k7U8+eA` ziik4h#*&b%t9YAEy$>(Mx~(RunTI&(;!}6(eZ6FgVN3!g2qi=PmhPY52;!O`w>xMmhAdHqaPp(@5N#h{%93# zaE0)T={jRH%&3$w_W^^sL0Zmc8UEHT-&2ONLH(Mb<>w+bVN{#K@j8m8VgcpU&-yPO z)x_oR=+{x=<@^$Li^DcNOE?jxd<`*~p8#%q5$IYuC8h5(g@b`){ir`faocjo$a$2k zR2?$&T9gmdLTm8i3r-Fm_Kc1p6Xc8$@0;#@lzeb+P`*Kb#^oTiCYbI zq+62ciak0tx8h@T6>oU@LAAEO6w~<4o^tW-A-ZHUJdJKH(g72B{tUIe>%)^w!wF?O z>#lPvfzk$x9n3~Og#341aU6K5FBPG-%}Qt8-k4pt*HD$RD7)3@^95B1rMnN&FLni8 zI1^unQf=-Ne8=uVEN2au1_QD9VkWISgYrzv5?bso4PeCilp~l*U$kwQyhV>;Fc@?2 z6BP66T&@tzc#pOd5Gm$xxt{6i46neL0R9k#KCA`{;D&&FN>rc+G=0ngqx?nSj`3gf zKBfI6`w=+<3cG~W!hoQ$i^9k)>U7)7KV_1i*380EyQX*|D7d?OjtQ%?!z-*kC=)?+ z-P0&O@PPXsopoBi@oMuMs1qu6fq`M+C7#Y)*AvPSdQ~4%-`Sb_hLj9h=a?%18B=P> z^9yE#5%18W%Y8 z{{U)Z!*=T_jIr|^vE`^!ZxZVof@U8Q@T0;?LR$IwB6vd_)1OxLr1g)t|B>b`O#%Lq{oOI0Ev^ag3v`rG}HyK)gM` zRrL)@)ko$DF?t#%pKVy*5DL0KFAJJ}B_)^)r{Cm=ODrVgS%$cSpolGoaOhtE^AfJb zTvxekD9qV7nt&G4+`iJq)E5`*q+=GIf@wJ8WZ+7N#Ltr5K;OdUHA9M;LpNt=<_(1! z%Y>)^(yex1=`AwZkWDvQX16l3_KToeap7f@ouiAs!WiZ&lJeG23JCSkw+ zI*;hQe}XL%K0nzC#rc0^9DWFXhB+0B(5K$Gl>Y$quE~W#^Zx*B6Tuxx`$w=ps7Kj< zhbwt)+WT-G+M}-*1}Lbpr^KVN=raER5f%*!4~jSna;mPR!MHB2J8pWX`-BPVRiwxGdPiJLk75*++~QJ#nuht@Z62Vd zAe@j`%9#tyS=JKbO5rl(m+J8P2)S5CFe($8ZaTY{KEu<~&^Irlf**ufd_?ddKZfyh zd`7*yHzD}bGVI2#QwLQCoC@w8asuKyOmvrfV8>%uGJ|hS%KKxveeRKk9i-nG%pqwZ2g-q;OxefO z5W$G*YQBy7V&LSqGfny_jtRunBJqH|!FDu5k0)M|9hr|3ju}RXxVeI=VX1cVp2Ypc zEGsWj1vW>sbdxe9r@m_y2NT&7G4%LjX2?-h1#v6UZ!y|&^AGTa#n}N28OiyXmdvb! zMa`?_Hv+0&2NT6Cfr;*o3E>-;sl*o(QCAQbgf*C!+*&H49X_6sgG+AXP(^r%v74t8 zGIzO%2O5A2VpW39B5a>zU`BaLN2jN1p%C*k5qng-Sa-MwHqs!r1=7l#C? zgt-tZDFC+4GAJ%ECL5)bnbkq3P&`m9>*WRNuAc|be=_Rst0%b#De)=>5IsKxp}JAU zxeofiWpFGZT0CY}?DkH8azy}fGuMI6;DxuoFE+P*+X3F?_D>ALq+*2`c=n3&w-`P# zU6=22!IOD?)-^!J-e57Xcgcx+m`dJdBZs)Cutn%S+K4y!=Klb$Z0y;j;XUSWKufXr zO?rH>Q|t?8l{kbN-EQP>$zTuyAkPj6oBEaQoqRT1T4 z$?`@1U;^r#5Mtw5h!^eNVNUD{{J}E$R)%@0Pqt<{{6W}LBTnc}5x*baBBL>H3GobF z{@G^N=MxQU)xqM*%9ZUXB1$N#kFCW}evm}(ClE(7P@o-0;{=)`Zx8n_!hh4038TT! z>M=v?MZKzuDe&%57TqT_+&z|R#kA{=1mmr&6VCqtoBQLmc)*O%kkB{=&3J*Ke9L{g z-nbxAL=QQ1F)T0H`%WvY>96Kigap0|)*v(ijBhH(TtteAntAe=J!KAJi(I2IHb8L5 zT)J_vJnp5eyT_di@dUuyP)+G)Quw!9bc&kAr_6lWNxKbQ%ukG_+!}#tsPCbEbqVN1 zuCzE|&YHtqchm~w(QxdP8X)L-GTezFt()-{4~zBSz95ieS6t#;`y#+Q_GKh8s(3k$ zo>7K3WuwQ2WbW!J_Fj^dyH8?V-eFHt3KDcut7M=LgZ|~?IEZ6kvM|~qi)&?=9RZ6L zXbf9x?g9Baxkjoo*v!l%stXekC6KP5g~cs9131^G6dlV(tQ7<@!+!b6f#F4pg96=0bX^f)5aO8NHS%(p(1G55LQf#KhsB=YITxqQ6bfs*n@EDj%}kEEjE3*b8ep^8=)ptliL0}T zf7Uf+<&%{`9ByvoLs^Qpmnuuo=PeG;61P2Mz5uS?(*9>ulxQv$Oi<0Pd>spi2L)|^ z=z3C-Lke%)V1W>WmsP|W&{{Q7%!hLS04c0rjm_bCt}YbbA!9@9Oc)2KT7F|_1z2P1 z4bW#XaE>EPt8bX4eRR|x{1I+Mb_{yOYG9_J*; zb|xJwqjv?i7Ukx6nR-F@ohhcF8dt#slI(-LTykN=YvH-W>>a>)>MLKRRb^`CjZ*kU zGZ=)=36Aw?tt8g1^>IxkTZ^SyzhlxlawQ(_qf;?_8aj&8~jEchG zqrk6dyqwH*{QmXQS*EF7BCEx{jiJ4}{hd*>T)R&L2~Y4(Q0L>bJ;nF!co zL)*>Ntc|R5G*X%3Iz0J}nIcdueALIi)_vppDN9cI7tGP2Gj~DEztd4~DIVh!P=VlN zuP+R(Nj$05ehm?k)IKA9ZPf2x$_q1^K&wjohI;W~scL$eY|WgEUzFUm%hY{JP}on% zG-5WJi&`IWgkVp&O~YQ|s#Fk(F*t;v6DSxa+Md&wSvbN|T8hF~piN_N!1L*u;?i7+ z_@0zV*;Y`<4xy(qJTmyn2#l*fKQtDeiZd0wqEzS1~AIbqT{{Ryj=dvqx*Kx$W z%Z}z-%*(z`Wo4}JY!<JhxBbDS_;DHHzmcW`e5V z>dY~}eG?a-`?zsvYB@7gLMEyu@RUm*-k;3FnH$)|D0@1X^M9I`*#~e!$J3#Akplb- z%75{>{WozE*k(RiqI$Z~oA){J3tpla9MtKG*baMl48hrtmuY?!zuzpbMr22vq}r?Y zLi>ir^|VB;1%>4_WtpuQEmzX~@hFZ5kk;O&Qb@(tZ|rd&+z4XDq%SRZ6)`r{1(2f4Gj7UKvtv)qjx0~7Qcg$~j(s+!0l$>+pjI3{>)Uql9rgJ5KD zG45&>!_S0J+$2_rd5sum2ZZ^Rlv@7)276(j?7&^uf<9&j4~)eCdk|zr?!`m?naMOu z+FUCSZ}zc`p4tfTZWgI833c35#a#96Fm||f_k#Jk?#x1pjw~hASvv2>a_^By?25nY z!V1m*07xV5-^y0MNJ4p-%}7iu-YNv|&`6JAYjXSi2Nx9C)0!`UFN_a~Mj=Z!gLa$G-^gr`O?mBPiABLe z1pfep)FWe!#qtQCfbE_mJ!kKlmTTmKo05d3kcs+;`8)Oqi;IV|**pEBlG#C^aFP}j;Z^-w-0iPHgB6{Jyvom<4hXTuR>WSQ{LTebuw&Z4)oe`shHu97=`3547R zUr2*gsPP4u`ZehNBuz~Wz$1<0a}cVDnpEHT9K%gp=#?9Ql;nqp%)yExB`$fJ6>}S^ zW!?@bn|kpT;VHYiW93yZ!Awm_^DtkYMgzT@hHRL#1uWq`f@mY&cbU#g zjY7OI+>8;#$eYk`@euaV$eS;DNp}D(wwq`nT;0j2UGHsaX`yffIsdW}MX<7V_Y8EWQ_=>ZQ3N z+W}R$&ZZ^jM4Ve|geFUrHj*4e6+?jYSIoZ*24Q+?<^gyK8b0+E%;fPhC|uxpBjR$m zD_v6@RZO?^DYsF7u=l1DE6$*@9efseHX4mO^7eSmKJt=Jbj}$*^KhAQJtU^oJ+T~A zzF#=Jd&DkajnSr|pCjv@kTvXFIGZAb7;bHiLEz;x@DvM&UCT$Agdg;CFH0xo8Rw4? zZ?k%x?drRan!8oDTmJx@B?WS)o^|%aN8=c`{c{8SWXi80iH8jy4U5CJ7KyhpN`c%7 zP^8x9M-9QEjtb^dbduJAh0%ei*Qeqr%M9B80NiyP-n*3SPn2P!%bo8CN~JgZlbQ7K zfc_G=>*wH6>A*cZTMRiqCC$4g{{RGFOCwO=tXRKA%yk0fd%cn|JiPLJQO z%)vO1v|2aJwqW99t7cHzXPWM<_#^sBQ&>T+2jfGRz4}2!1@xauLSEy$+EVx!5rP|( z`e@ub-6O2!sBYkTx%ApzVS93IHmA(Tm=imR<(0L)AkQUB9a$3Au_-W9N5p=G!wLDz zC%igCjtT7ZI|*6l{0uH41REcuHqS0}ejtYP{uIFGU8wu?#89-#)Xn;%5q|Rm*QRC0 z$-fL>jgUGJX`LQ}m?P*>D2d#}sa~^3(I9TK8ZSobEmyflmNJbd1`zEy)H?*Z35v(d z5;pKMl5sCCA#Nv#yhX@M-1giJeL7NIIhR1Hs*nXN^Hy} zc!GBv%4;yQP~*6m#Ct-1_&{PZxD>+XXA9w$w#e;P{E#?iVr&10WM{Ie3rT9qYHS^1LpC5|;cx*Kk*w&vOD&q-%KX6W^W zEBhfa8lRdt`Hq_2cS%<%bqXduPcbN$ZGPtsl%OGp2cj53d5UNYM6*5IbWsYPT(Juu zKT)JIObVa2;%WigEUF&MQy8$1!utU#F`#0#cj{@D6uYEqH+HEBR1QBf#s2{GH?mWuWDMOP|pum=_4pTJElCOY4;d2PcU|dPJ(#Ipj#a^g-7q=Csyee2gOo-BZ zRLe|QJS+Q5UuiMiJ?4FYP=DfKdh(VG{0rR7Jo|rlil~=Ky72Q_k0cEWXH&H$KC_w) z4rhD=w>JwKy>hrw2-Tm^b8+*m1jdzD2Gc<<3sxpfaAnFqQ#C3&=l&RH75?g7fcQ5Z zw0y=0dc;fa%(hJ6MzBjBb*<@enZ-=}K@e+U2hnJjgca35Xjd}xk)MAuu!qoyzlP4U z#7lKV!DgrLijSnnOnE)A*O580po(7La}d%lqjlz0aUe&aVqD&(XT!ud%u@w8ZgEx` ztu9|#JfG51{nqwn`l&$(JX9V-M^`V`kSVL~q0m_5ACwsfr9#z&n^3;ZgELPRP{462 z8IK(?)qGCHn5Jp~a3ww;*!T8J<8gTr&kWaW5T?z(*)slg2X3M%wLd4OvD6$FvYW$< z7Px@8W*0sinD!=6f}7puRUB1AA4k!G04q)q0ic*lm5E1>S+lZ-Y(mF}1`Vt8H^q3EIDreS#?ZpC0XHf&7&8(p8fUf< zRJb#kNFBzdo80F|5H~PO@iD?WWxJQ$A^vF-QqOZX3>j`!mPVtQ@fh@rnRtuJctkjx zZgPuRoy-tdGw_>E1RrpPgA)8eZsNL2iM+wMm5K4rYTz=BNRh(xa7-~L zn7RkEPMKxP7RHSm7QCS8(t`%}UFMSnUICRJeXZIqITk4q+35kz3qi zx-P_ibw|So%PV_J!7nGWS1p6@zayA<6ub3VpU$OGqaYz;D|Z+#1=xm^+M~CK&>^f6 zJCI?wn79B}56q`R5@e%x(B*~4`Jghv#>VcRr98hwi@W>4AS8zLf#JSqWLjaVKBirg zP~1BRiyxvq&|1SUv;l5;)U^nWfOlm%CPkL;G=+Ojv8Y^%c3E)F=-0J)mtJJyX(Hay zuT2xFSme331SkZ@7S6^2t9}e79VYp4(h}(Jb}nPFrWy)+xsCy4$Qg^0q< zu;wx$vcIp1N%CX)o>Gu*3IVR6E0v~um=5FJN(Rxa&cmDgb6DD06mQEy?=&hah#XUO~U&zdzfdlsr^F?&B=_gbdY82 zTqHwA7}DsEgs%`76$UA%nQAUoL1N%|mVL!9Q3S6BrR8I&iN*R-OI~0u(Bffz^Zd*; z-?fldrUhJ7E*??*zzs`|(#g1*rlaCH>K_Ods+j6FP<%(j(e2EoJ85mdSk4DAn$*dO zZq0=fVM4n>JB!RPbu!6lIJr<%L2B0O6Uu(43VDbZ#2K?r0~P6KGQ@ImY9Ph~t914; zW1ACC49wzAS2sfLCBmUnd_zG`al)B{@)iOomE5;Ef>t2Z(NZupp}FP_%TFF2<}b+4 z@IZ*i&Fhr#S@Ad7*$cZGx2aj)#_kdMN`Y+EifS}E_K#28v$2p{hK=xb8O%eAHEZ#y zR0?lp7Y<|=kwHgid`|3S19|2Lx(={vj0aHf)#M|v$k(YpxGW_G%R$@}GPG$ijl=HX zbhw?B4a!`(L{4G3!a-J+5eh89dl-OK(3fY)d6mKPUCau{#lLX{p2S7a1-g1l#Y#UA zFODnSG6f~IHmq0qf(b)E`M_~={rXfI%bBKyu+@Cc0KQ$7b1!uvcdRs${{T{r%wA7seb*Cx3hdQ{o+)euZsLw?+&$;=n+CLT2yB>w;&5bjoJc4Ch+09o5d zyh{fW>RZx=Ox(hb!^8ZMqXsRv;qkZ;AZFb_LW0{ySRe4c}y;#tgv_nfE;Tw#cE{glL64tQby-lnE^@i1G ze9E-KPyP(nKeT1en{W_3-OU}#Tlirw90gzxi#%@;xnCHD$w}2s5(EyxbXt#*#0HBF<7;ixXr1CI*nniUj#MH=sek9 z)K9TS`;})tVxdjeBct2X1Wz!`6xXx3033R2(%HwT%UsNd=3+*;l&zAln4Yc(`^q7= zrcQ5$V8&i2<=i`$wivG|TqFUk^$KM8KR9X}+KRz`Ke=R?`8I z21|P^P=Bndv{Rr!xCw34V(Kf%xJ)w)0lzW(A(H9IGdQr}y7rd0xcon-T8j4|8IBga16xEoR&RGmA+AC#OGA9Yd733DE^8)iQaSa!I99i!&k)fe~#fe@N z&BagYG$gDU=G;6n$wqD|5ZK8YBI}_J zrLP!@TUc99;F@2OWubmxRZGkQmS?(fSmQz*I{1l1g}vrG>Qiq??qHhzn6N8Qqgwv} zR1f(JO(neB^)gEktL$|j>0ei0EKAsMd`H8f)8t|QlmB@(;k%wl2n zrfIbTWYu1$nQ#@U5CP)!zqkPvjw<%G!?|AyRk!0R`heKogUnYP8LDG%a9C^2N9G3N zd0)n&HGH@Z!>E7!$C9I%w9&E7{{ZaVL`5SC&|w}fL#e%|a?fCleJ>8K917aKqjm8y zyI~x9&8WhudSyA~MB6DQDdW@Miw29iydKP;QCfd-EnE~~z#uyUoaQnqO?I#>M-qf# zsmGgA>(4pb%);gmX@{Z+-A7E!-rD0;HOS&<>|8tZlL=7mjE`3g8eg<+?W`Cf$T=+x z=3YLUiwmLb%u5#djrYc*kiBSviZf1Y-efiC2haK1@_|7_jiUW0A6LQRuL5(8W^j1L_!h zCM8BPrXd7kceZEnmW(}2u;8bN6FP>}#9t}WlxoFwiMHzcjpDwtm3F_0P+sIR?G`#F zr(cLv9vZ%<544laU!K#HlMQLU2Uqa1vcC z2~kx8rd9I-nZ#~3sJs#y+!{-~O%)q&65K5@=4}WBT zOu2Hx!7eM!%7!Lq6<&^@m%@5D^eR>*T>Zp+#a$N%Sv<`t5?yDLDK#D|)K|>&MG8!p z5V2NMfY&mntKws*sacaQD0_2+nd&w#iPI43fDf_EulojAUuwNi8YL~pV2nAOUiWaZ z<=BWYc0>%S4{J;SIc8il)S&QQU{@sIT49hd=JrI}0b_sWJHPJ|nrOGAc1NX3xov03 z;O=JyRGlXfKgH_7=~$5w*0fOodtVRS&L0c4Udmd4*c6!wy#}>oTmYx9a(g zhYI6TkrX&jnD>@#L*R5i8BK^b7-M3*duDEskn-vwU3uPgNbQi%)G9nBLQ2g?SO?lc zfOv*qAzsX_5J8I(f5pULY^2}`#Mct6fiSs&a+*T(-xD?B2!3%9t?*7dWR=Y!A4Aa9 z{{Y-gsE~iC;X2n98XWaFGf-#g2suII%-#((7&T;LIgv4j<;7de{UTBsy3aEZv|p$oS&jlre&glUaCdGLTY z8u1?DIF#Sph-&TlLD?IX#Y05+NCKbWAe}5OlnD9G!HN0BXk}&Xv24`44iiOd4}&;~ zwbDlr7km4I%W@EQmZYJcslOT^$*!Hqbda~N+5&t#(y)G2EO2e?h0g`Kfl zFTXm%Cb9E3Y%9cbRoW40$(FL;cA-Zq^Uu7f1C>X!IE>w2nU!rVoAfl7<}Piq0pppB(4Qfhm$CE_o49)~ z>_kV?8xqfh7-VAIcMG(rvY`k3W(i0K(g&qiplTBVXlKAB?F~aTN{n+VYx6F-i7^^l zS-3`hL|;K>%40Og8C6bRr?M4; z;hTulQ^|7ii;cmi5aE5I0;h^^>F^7vMToHX-gG%Vy?$-HS!yei+Uy)*i{E;;pGb-lxDrh8k$Lt+H6m za!Fo4Bq?Ss4^UoN0CS@Za0g?HIxbQW)4a91!igP#Y$48fGmaEkl<*9ej%~496+AG41cMNSm{_f>#KhlH+hMF%>NL6)+Y+Q6PwOye)+#kt@}!Vi!U{+jM_n&)G2OKu9pxpGD(r>6*V7V%q=rDGlg=C=$I^N)6KBT@j#=Bi;Bs+!!ZD= z%pPUof}Z7^%7{S;-eZel5@W1u|#XCV^b<{RW-ciSd5d59dof^F@XkTWk62XgZV zyKvM;=b3~79%2|Tar&gP#oG8L)kC(STm!(~AOGdJ`;(Turr;EbZ-#C#y5&`kdT3W8t}2WGAUkGN<&O&1Ms z(%z%25FI#mDYB})1zzFhiuw6KV2`m8rVM{hOvmVjyHA;FI7!IeOIsY}B^n#f$Uqm{ z{6z*Dgkp~W0K!{Pk)2lp&%|8Zjnm=^%!6wQFp#>HWW%@(qIYo1Orurh6#JEbL+`?|m6`h`d3Bv$YL6Ms+$HEFYibGN766&QL<^j}0x#10) zmlWo4?26kkx5jdyaLZGaKxP7^ETr2tE~Q~?!q%CVPcvG@b17UAa7T-u?q4G8A*ibJ zNIfx?USTdLn4zddG7sW%;YZs7vO_Y|8*NOTEkFx;D-v;As+lM)dzQwWy zxONDWje!_diYed4HY zza}y-N`ZYkkk3I_@ZEFSFGS}s3u9!;10&MCY&V4dC2UNZg&{&LJ?V2^`+JUC;R;un zB^bCj3EU#E&5Jk0;PWVgv%!B7@Xd7vbN&xRcM|?|n+}^X(X=k7ffDU-wbXOJ5z6wTHn7?65f~ z0uxj@1HH&d!(zO2T)*@k4| zYRi}IDtn2K&!cftp69xGArpw>08GC|66a;S86&|1fY?ot`%352XNWkPW5|sV-R=Tg zI?7eBeZ!tVgtA0SSBtnr6h2(UFvobrrhfcEp613COjU2l8kFhT99tm23gDD=D;Z_W zjZ5!5A~=Odq@#FsJOH^5>cS(ay>Mq_D#I<~Wxk1-PrUA!jn~4M2O1!AGgrjN+scyC z2MVtGofshY8Ja%G$GNFU4vNYOLVy@FZ_>R7l-q;9J-`?x*p&ki<|M>r`YauPEPdv(Hh4?=0X^ZO zrAt>imWw#>nXf0I8354Um)4{|hFeZa?os#&UjtTlNMr1gj*{?@laN)XvznS+Zp07V zXlotO9wb)*SIj-!n-C8Q>KX<{p?h~Ptql@`J6!GNA6AuATPWJZc+OVTMD5RBf}$WO zJrAKBFO+yf@Sad!&q;>`D##K53vIR^X?dI1HPmoGC^VNI@`xsT5CEuNe9HGAW@O(| zuL+GaKdER32diS}w|g3@Se;UfdF~WFAJXc61%Th&GZlqjGypML-CIBtfwRbE2i#Ji zq1kyDCU#^wyQ*akdaF4?K&8)ocCv6TwJi(5-;!ZntSx|5x~eaJ!wyGDf~c9MW84r> zTi$s_6zhgm7;RZq+3$$J9aT{P;Ov!e45swM+`)LQ>+F9~j)t<(PcVT)g>2rT?KXc) zDRZTl;xsJ3m=5B}r&+0fxe*04w)Y8##YpmQR<0ie-?tB$Lz~!^$PRx*fBB>T0L=|h zANo)F6U_RY_WG8rZe?E|NM;1Ol;URL%5f-reuJ5dSzz1L-95_!;e~g19VicRA;P+z zz?NmfF?EaPN(m=z7H$ul7AnQ$c!t>?3W14!im1FwK!`YrxDF-DU$F^sqlSD2r9W1M zRBdr(Zq1PEIj(0jtSNV|vQdU5XGoYX0fP{q3K7vcb{C$^rhVc&Wl9R? zaKl%`Amy$lc$Jx6WlV&<@}hAtpppI-a~;H$4=BN@1HzRuSG=sWiI}@;8AToBp9F4Z^(Rn$ z0peyV$3wY&a`Jz|W_+F0Ac~A(R}J&20dPt-`9wN3$GVX!vrV|<2UD3{)$YRg1Fq=tDOU?p6?65tI={W6=l?Ji?b8k96e)M3b% zv|bTG6kZQRUSkFWnTSijQE}XJ3HE|9RdYm#H%JC-g1J;dh_Li-2vtEI)?7af5g;(b z+@w0Q4tg>!-;LHxffGtd4YoY4v2gx?S^g_7`%jYa2ayl z_bM`Xv?Y@KdR(iWnwAdn7LC{oj_Ns>57yoFw^#BQBp zJnW4}WOE*Ic{Y2JkgUG5Dr`)rRKxd6c{XglCBbyQTTVCKhBQy6w9@8Z+XPNq)7k`& z+cjNAGXN2j?<{t^kfV3O+@k)w^5HsQj#`-}I#HD&T~8Y300}H1U(^;0w`Uv2)UdZD zSJ|l7Xd*)NO}TDZV0^I=edFrlDW7W_{Yq8F@`epWU@?TFk~dL{y9n%^4g|W6QcJO! z2h$7ObG3PlhTU?gw8hGizn}`Y9CG>Ml)lDT)ehx*L;b?vu6MY>_CSC+mMw9a`}}KW zh?O!oy+7Kh>%`As6}((Vg8Z0%Bel;l{gUcwjY~H{k%rruhx5^($61tKUE*DcjJFSMrCwMNoz?s$UhlX?O=XkX7f4&+nf515u1u%uT&a^? zxp+Du1-X0C8px2nl-5~8xOh)%Gt(aj&=z)>lsG^?Xxm5JRnhk!cs=8~9}qP??ss_f zHFGZpd@Oy$@Q~djPB0~1#bl<1+-$BVa)q~GW>#{z#YW8&rX?o@L1{%50{l?X@%~cg zGbCE5MMZ&*i zQquBInxclu<+i2GB8pFl?UOE%q5>@GD!k4D7Fz@C)zUH%?o%~DuEvmBmI0UT9%;r?gwPC?GC|3d0M6w*F zbWFUVypo_wveE50N}RIY;%#x=#hdgT%Zi@Q)EC7b57&p^nQs{a1+itKiacg3I_p>~ zG|UIkuY8`;mzlNC3Va|Q@~;;7`kaL)xa*w{h&$yrS&R52V0T9dq#i<}*HrMnI=y>B zVEMgeYT`93`ljzW;$G5&jHS;U@W!Hhf$WX}x(~vS%m;n~XW;hkYk-~cPcdO)SD=-a zdX%Z>SdVXkI*ErL$DDZaH-I6l6A|1nUzmZP78QMu%osQ? z#_(ThFwzo&5%Pt3_l-iWabJl>iqvwe9MJG(rRp+KqodjbYWOrUS?XHUtrm5^Y5xGw zfm6X{4tI-|A1ieu*b%Dem}s$d*P!ssF>sr7RygKR*yAl_%-KnWgUG*9&sYZ%Gg>jO z8+9W9J)}kOiR}t*)Fq1wJ+Cu9DJg>6R-w4_lQOUl(CoM_jrL%vj)b=YhPSx8FNbpaT=xv~P_A`lD1$27ZTqp6()x(0 z(@GduQyoXzI7)JZ$kf7F42Y)S=_XZI#rywkUrW z0`R9Ou2S3}ndWB}2;+a%OEL9h<^3bQw(~|E(@(S;Fw4-?VU#_W8enE5#FK2ekI|HwbfK!7;$X_{85WgVyVrbx_uza|`n>49a_@vyg(o zhnV&GCNrx}kM0q{fD+f769T)5q`RgF>pq7kyb(UTcQBteN|*W8k8_x)^39&iy_+Z2 z0Z*e2UXnDx0fJqWgWh4hToY9ky2M3hKIaiBOII^0I#KT^US%mqm!btzsAXhqknSixW`nT^}xQNa0^d9fb0KvCqFB{HG!1>AU? zZY=)*6-6u1-pSJtJAn5Ab1Vx$ZZxh(!Qk^8kfQMF=C&RE)UEv^Dsg^Di_ctGPS0`( zfgN0aWGX*k@)Iftb*L`3SY#qi5C1J+_e=#MOMb>es!B~9BLk}(IkCev+rdW9^uXuII zqCD?C%gra7i7ptacM!AHgf;&F>k(T`MhhwHnM!9-X96rK6W)8Jq{HH4+(1Lhhna9n zdg?ANh-lyy?lR@*^&4~sXHJOwL%M>8-8AkqXa{N&H{1)zb4y-6X2x;L!s9dQriYMA zTff4CUWzca`(VQSPt^tIY zXpx}ZF1Jby!oO(+YUN8;L1s)t(~Gftrx(}xHc z6Of1Ij&iRE-$Wl#>_s-iewF?u z=F|1<=vYI&LF;Gwi&0mv75?F^ZI9M`BNeUqg~M~Sra21nTJ=5REtMDUouvWN2QuIy z*{aPt8TkW7icH5d0z40tpob*tn?mIS9Dn9vZsB<7CG!oyfci5tG4xCMo*p2ZCejZ~ ze5I?PC8s`*k~HEQ5{=Zm`jmGZAE&KKWqJ$T6s)IygXUsam?Co#lkx-)b?_!n+%V1` z4)B_^_Qrtrp3kN0@M|;ldWU8FNF<>4Moc>L`;|~F&T95$>0g*z!P6|W8{#6EfE>cU zS#mPM+${*0QlS_bnGBOlhN1_!>YihZIGcpzaKJA8qG`BO8aje$RO(j<>4F~PjI`)Y zD-6U;iHDkuUDF8k1MN1cb6St5%v?%?<|}5IgjQj=mkic!UCZ?4^m4NmvWIV=mN@*{KPp&x4SHyU6ZP$A{$yQqS4cSfO&T zbR8bjolZqUT<|K6?w%s%icu*?QBZP;!C!N6T*8Ht^tvYGs`&eZ29(j!K5a1)`(lbI zYSM)8zQoAzBC3DPO3};94YHM0+iM36Jf81>Ng{h_*rP~Kfpa? zWxReOT|K7a+pkrM2MZfSd+kJ;S0?f+xrZBg}7N~i?WyTF&Tz>N@ zCbyJZ?TFu`M{w*V&3xH0X`6{HahL3y!$E01qk>qT5fbHaj#&~^iF(@}(-Z7Ugvu-? ziH-UTj_s&}dveR>3OxuROy(z}xFZ4&z9 zE^I-uA=96DsOIA|PX!EOA|SkOc10SfuIm!kGZ(QkN@c#7jfqMrZVeZ>>*Ek+A9+Hd zEm91^j3vq@5UTW9a^~WI;FT;0OaYaJK-qSE*IpoA10K9$ZW0c65Zt?m=@rMNGOQqd zA>Lb=BKX0zE#fmKmaL8mc1oP5*@a?V)ieAS%z!@gz@0)@qC1(;Hukwz@=k`#fmw); zO^2nzpz=yC3jPPBKxO5OW;f?8`)`EJd;Dr$k_xw6G%G9GIG}coHMwx~dMCc%Ob{EY zzC7a0Pv$F> zl#32y7NPhNN=}$K-%V*#I{sly!!jdHKzNivf&dK%2V}C1aQ7*G+HYm;3EZh&ur)>| z@l@Ls!6Q69^u_7NMqZEkQyjWXjMJVKC&EwFD*cPSPTNO_Z`s5Nws-ipGX}HKEdsm~ zIx!4|;$+__nXaa8EeE<&^(}Q+IfDgxWiK3Od!yUtA(~gZRYR(k&woo>4y(^Hv^V^j zE$NkYzaAL2J(V7B0~gxmRx40>9RrLM-AZJ+zFyz;Gf(;!<@uiLjr0+2`Fbx2J(`6@ zSbb@NEOpa4^97D-+p`H!_t740~^m!)lF%Oxmxj|?pt6gSR+j^;?iEZazP#!NSU$_VLF`Cs@ zY$*I7@3IxtwvX*BIxet+!LtpP%Vrs5VjzH9mX zO7%6seiSD>Ldu=Ph04KZF|(B^d5bp6p)U}oNyf+vR$M~>)X0B=Fs>2Zr``_DFAcyr zf$4yG{xo$dDp#Q40EAq`qq&|KcPCJN<%Kui5`d<0CCAKWYD8}8-Ku88?$_9t%FkfS z(|xRwQs8EX;S|fPPk#9(QTLxo^g%FZnPw|8oX4u-0iJmFV}ap@wfE*}qlmhzs9~>! zVqVBIvSz~#AVUSTN-?=&#WBPL7<1e+V#=r)#H%4J#tcxjg8d`W+RkYBVZ$Pq70R-f z(*5QOA}P0O^aB=|Lr^h{lLzoEN>gph4Cq7tST`F+%iF?S)#SOkL_LqC6)s?i^sd_} zz#N^_dR76*yuk%Y^gd&>SKee()Y~hA=1u)oKfUYVM2Teh`br}pm>iB^lSu=L5_>Wai#xX{( z^925uSyl&AVueU&CGjbuI{0;AQu*wIriCW;b<|$6wtdIo z+Hg9Xk6fjW*L=!{KGdi-^!>&@Z+Lk~1p?ccrX{w`Irb9VyTIYw5IWAAJ;u7$rkL!W z>}BIro($>7H95}JJ^R>Sf;u8*-rGq+{1DG+Ye!4oS4=PNhz0n#x*AT9#z}2nsIigH z46OlzBsprRY~N{I&O3_RS`1DP_cIx|UQVhCP-xX$Dgzh^R3?NzXnxLc=wK&F?7k!a z0GEkCdK6*B%uVxB!T$g>{v}2iK3fRk160h0fa*4r1c_j05^kWbK#X>xV=mqvokNHoWHnR53i3}+fMG#7hQp5cWU z<4fpd4Zd98ZOap_)j3wyhC*~p33seH3S};zaB-G{Jsi3Tpa>MrZm}=KB(Za+F8oZD zpV*JpTxtoA%oS%BIA>{`cXIvPpl)UG+3B55p09|ddGs>e5%!pX69wThm>tDtZ9h2B zVD^~NULc;&4AB!ko{MbUF*s!`{{W=uepBoG%$hO!hQiL8g6lh=`&fnF?O=bxTa>2% z0O&HvBU%2s+%KRDr{ZHCM5m(q3_+DupF;)@(F`9kWkB-)gL z-c0QiBh1~Q*k?gqL_e2Nf#v`hCUX3r<~c>%eaSBN=4AbDP@}_};$%TygcV-disk4t zT*Mmcj>$ylP(b*lwLF)yToM=yR#D!?hgU3`AWE|vuX>!N>O|T16B9ulQ@E;zyuopM zk?<$7zob7aEGn%M;Vbn3VT?+laqO9KyB{B*Q0AkiSV5=!&4#3XWm#} z=3gF?Xv)5FR-rXe=ECATtLs=!y}dN%Wc^iwN=7$AJwj4GwKJUE5!4(FErrk|i=Ol|KnxDpzQ6s2V@JgVWG$Qx#UwzV}6^K(AXmf&xn_!^B==1clAoX(Ht zsK|60zS!Kk3F7@AW*Z^st1~T^DLvBOmtKJYdGr{N$1w=Eze~^PRDkmf&G9up_%4|8 z$F3s^*!W*~;(u;siT1`CP8O_jZdIZhK-D>x%0h{?%=wb-SZHCbvDC^eexfPNBX<;c zGhzdREL>P52XVOD*_$0B*7^;Niqws*;eNKPz3}z=Y4(QQQKy8JINv+@eh8n9@ zSqcDiE5aAJokWz6rOe)ek!lU-KN9#N-ZjS7 z=PBK;GbiSO!}d#~p6iT6Kvxn}fByiGJj`~12azYl6jkfbywB4z z%i=g*0#$ALhzZKVUyy@V!Drq%hENjmip7#U>MoN7l9oja_S#_FMA-ZYMhBKN4>-8F z!;%Y%jkuY%Zyt0!!`LeUhxhA==+L@^8ooJ7>eFLxvW-Aw3yhO}xDe_LD0oJ?sPA#= zi&DPTd=q$7y`W81p$f@UE~VuoxTIqg6o(1uO@H-*)v3g>a2SbRg8ktVqN_Xy7w$%Z zzX?QI?BtCvidis3xw0AWE#@AsVaEkN()q0IW@97I0%gK1eFZU>9!O^h;#8IGgD7lY zBt`;LZC|-&C9v2#JWC+sAE;t0GRHcbB2b2_`5h(9#i*+kQ@ieFQPH0fcH&n~(+My( z@)a=3to_+HLm(G*GuHnA86}p{jvUX7UbOcmWqSxMhLnft7lVP#6JYgqy@pnO?#T5# z^%Gxx*KfCuB2uvnQgUDtG3NDA4waosJGf{zk`?-!A59S2iD_TXBOgwm& zw_T+;{{RtoE?1bdR~36`!<02?d4Cb!=7xS*StsXG{CXK&8Jo}ww*>Rc%PFQ~39mwc z%)s>1IgDBKFqH1%=i+9A`b`k^q^=A?x0D*f1Z4P)f80!U9(NSrsBETCY5-*T6N=Q# zI0v}Fwt0gQr`}NuFdZ|kHzli@F&YG3$kY`z)KOTR>49F&b3X_K*svgb*&7TV)pv$6 zWr{)iL;cu(io9wC=hEf+H2(kra_696W=ZCY-=O`&u>s$sNs?ISZV<{8w5Chch%HEks(Is`MLvR$ zp>|7YB{8=#NN`z1q<~ZuO`KTak#HQt<#@C|leji>jR?7ybl}v~?bN;xq^{!n6+w+G zWKzpT_OlhE{)k}B@h%v|3b2UPD)*PFtCpl+l)2E%4>1EQqUnIBqeto_z1S^2<9TI7 zs`l{?y`~4W#s?S^1YTz7Nk~eOyIy#iAU99Z!5y`^_7XvT6{AECKM~Bl^*Gp>I6bAk zI2Rp5mG_qzG2AFsjiy<`N-4fARJvt&AR%ntc$ri+o!}AfD}BXU)Ix=|zanak!u;LR zTT{gx0ONjmiqW0o2WS0IFd1n`{{X_o1#Cz|GFp*J71RsDZHTf|pPJ%To}en3Oop(y zV~KE4!~%L)ueYGX4IKJs(HD1cyHKGlCQ^ASUQiS24{bf7T(is&u*~xkWs&yYDswXb z0A=6q3H>bp0L-{7NH%{u(e<+IEXNPI8+zuZH!$Wv<~%OT?x_Cl zeqF`n8i(~cC0Msrb(G?rTt?;s%$PHGhrXo{SPEk&o8HM z@HbQKAluBqZYT_Uu2ibHro-Ep4)FFu^5yoP_*!}yOJ$SgMc)DJm2%liS|&^H@Zd=S zexd&WYd^p+4UV+|roOIV{&Of*fzq^s5E@$t{hHJ<-s|h4mCX1XrT)>(8$6PQ4N|4@M6}i3c#A!7d_>vlrwg z%+yMOEI6O`X6NXhKql8qa;H@%E41-0H_IJ{y!RD)TWig7%oc~&{TW^3vLI9 z3|4HKAwW7iHo$3tS4W9}`CT{Uic|^^wy+45VHs6DVV1r8}6! zx`{2g+n5QO(7m9r+wK6ljHc53;^rkx!y1R1@qNr<>&bVU%dI;!>ga9TM`5xrVfIu4S{6U(@A^_gW8< zjIg)EmzBbbl~U5+)VCnPx*u`{d~aK3G%3#`iIytmD=8udL15l#n6Glhc#W(fhc@j- z<)A}Vv1qI(v?vMdHaf`*1XqI2aB(^iYir2MYi*89Y*&`*S}PPYW|n>uv7}oqOiQcx zl_VMYN-{^oMM5R6kd=%)l@bkJp<>|a3I2q1q(E~60omxPbB!zJQ|7b6I(_k*je49inTg7+%)xyvt$_2H8@I({1zoX zgtGHfiM-w>U*w5c8k9Yrdz86rvlW~`6fr)7^G`UG3rdE89$;}dUS>=OH4R|qD=r}0 zj-VTa$WPG{$zO3Xyg{}(jTTH(ZZ64RxqGEox4oS=1?Dw(slFeKpEm;-`8zLV&59Un zpHMNi2}}DV(N~%N>2?1AI0dMQZJ=)+BTbniR>_Y2G>;LOl`eWM+_DA?xHA0u4>(Pp zirIuvz)<=&J(zj3!GDvSL2F?kals@F_3GweWdNJeA6 zJ|zL9(g#ZLDEq_kV-Vb*7|UESS;_Xj$LA|cqZVhjA!p)4k_KVKIekE_z^#P>)IH%& zk_jX(vp#(>WZceI0T+VbQu%cmtNNNa`b=OtDv~m_LNq7L(b{!Ohzu3Euas|M^4c8H zRpCo_z7}0_ zGpDXSA610P9I}mTQL;eGL}PC=K~beMI?0(?LX4vZ>*85Dc$HxM09&l8}=w?$Hik8owJj*BDDPrdnV9`9%*(rsaP&vHI zk%BscZ6!nN=^AZUv-~p{h35qMn`F`OD!4_$iRmZ4Vinm9U$k%q+tURWf#JE6h>4F& zk3NSvoscguea^yGU!X`nVc`j*>MCmDO5b9oh8lUJ=@4G3?nlzp zQ;1Wi(&EF=AR@F4PQ*HlWyX6ZTub8laVYZl6?l@v2+ega#YUjP^jyO?jyQ<@DVE#~ zewf&^cv7bn_U`uls#8q^Y|Lpcn$V`Nrf&IdO5pd1S<087Bi@n(Y0EtMte8s@=8!)>7ZW^oL z_c6jM=qXWhyM*Zgip4lEU&H`zS;iVj%Zd)7uYWn2L=_f3NcA#?2q!X(a;Rz%$jn;B z9HA^FUd_dAc(3%ST`paQx{Ru-?PF1NlTbX$LRgME9ZMp+2+hkfv~Cb6*`%9s{H4Y` zm@=4qLarHC%J{gYZQ?zcic6K6$`j#S6~dDwxPn78G~E2m!*Can%On#!+(_-H*B@ASjFyz; z7b(UBXciZr&T0b^N=0vgmnprYKQTEVIEUO4(0BR+VMq`DT_YQ4~oJFJ9KVc09!x!ZCA;v`aMYH6G zO6T*W)%lKv4B#BF#$J2JnGDtpO)@}c!_dm|h~XkW#i1+A_?PBg@q!H6HsdxS2BTi9 zA4P&Z?tBy_11aVyv0<|kk*q}+JK}Q$*JrfN@PBgdH!M~m?GJm}KVl}l%1XEt1!8@U z`<6$a1ypzUs94~EuF{|@OaRw2CzvUTSzJPPS*R#b>MxqiO(TG|<;%WixDONE6WSC< z(qk|=H*k;#@WuQV=HSd1j(#WoAkIjSvMq}0(4EQfrSoI)D=W4|j*9-0kjLcwR#ey? z)yy1_5Ojnrqr^vZuru2M+&d*<#LHneOL_y`uc8d>d4YYy3_=jIdEt_A%gsvEEu~vY zO2$z>X5J$I0P+~YGU7V%h|l+#UcAQ0$sZ2lF)Fte6f{)DK$WR1H33?W3!3!#V&f`Y zN#ZOi%QYO!IhmI=ho|c&(=+UtI*kFSl*;i4Nmi8oX()hSET^w7A!*kxQ`}S+cQecu zF;qib8#6Gf59>1vd2+p&Jt`Qe4u)PO570R?3afa19wn!`7g+qp4-QQiGVBrLRJJ2| z@&pYK6{1uD<_;Ew;@bI61&|Ir2=)tEqS%#7*@d6#4<`*jLNTNi#U>^!UXB|=^36}o z@qq%GgwT~xNT^@%6|?exxaip%uS|Ln)JE|Q@jfC;oFL!bOCp|XS-%7|R>-06kacxa zbkaPP+`6&E39%S;HY~@1DswN?Jk}CfSht^PgsXkT6a}`#+^Oy39&$hnt{*H{%-1lP zjo1QtB`nH)zJ$+pMb!}e!n_N)Qo-h4_@{$dvKNtZyZX78h!hpZV)pIvE>{R6cL$hc zF!C=5F!ye-0b9hKB-PQ2nin0`IIW;mio-|PAXMEe8jmM_B?ax*W`~D~&UJOMp_UR< zU6-E|4>U>)F)7sksv-sp01-N63%Kc7`GUAznV0TH95m@Nm>)2X{#8ajyBHyz4VN*u z&EntOro4WS#4D3Ka|i&UlGC_~P7^uxE_yA4*_wbcTo9Ngy7U>FNZC~k2q+Y9<^zJ0 zNHDv^6s9)M0#j`x3`mE(?qT$U)|ZkuRWRM;33138wh>ss>!NvL1jamY2&1ct735T5 zb9LwzH3y>EKB{J|g#K<~%{ankEj1TQP@eLZT+fJv<{I>0s*jzdHab_UCt5! z)m+Dh=e{|ED)q!hF^=F}m0Zg9_l#NaAae`aGKz*+$@lbGnN}0ekhXw4M-0;3g zllDq=pJ{$^=+T$c4|029)qYq&3Tqx||F(SkZl zObozwH&e?BRHzFaBPH1h3e5{s0QE6(xnuR0O7#NrMYlKdm7JX7HzZVIh|NdSOb1ao znK6cVL1Wz>h13}R#FKtv^C>iZ&QjWlLLdosH7T=XFyZuvH zcGPf z;RR#gaf8^TU|A4?n0p}@3n1={JFfYqekFhg*Ptc${f&7ZUohtD*?Zq}RxJh}Yunr! za$Qg3^9(u*0Zl9kwR9WX`IisdZSdM17(i)Dh2sxN+$nHT^!eE^t**&*_O^99D(6Wu zkwUS?#rcM9GL_YF7hoe?JC9kGWT`?@YckkfA?wV{tT!oQZIp%x^dM$_2^!aJ%8LBM z_6cYUFnY|j#3AtX;e~{y(G(3);%&u^#Clf35phqUS(`3s;$UuB;$AIDcuP|Dg1oTK z0}kFG2V@4preO1S`CoY2ODue`-09)@(4gOQ@g|btQIuF>ZB6I9jro_g#aOf9=;jyq zElg5WeKz!c125BY$D`^ShSW7ni2If|%sGLH@O*A3=%6~{0izEv=p?wu`5}$ZF}SJ5 zTy8J@@l`)FH|gyR=GnQ5a%KQS?*Qgtt#K%bm2)m|w=*{bI+^BTS9+EP_XTUX2L}|) zs~)E$q`VvrL<3l!>p6x{Y~Yj*A2Va0671EFnNJco86}P4CV%`ec_73OAVQA9%tpe}5?xFXaXlO$p3mK5CD!Zj$22dA_bOte{oPCb!+M`mW? z;fC0lD8P2ooJTx3X!nHsov1|wQgtuV@wn>Ez_IQTEN6ZyZ!vJJ;c`qh0|oe%X@|io zE6)xX&vXg%DRprroWl*m6quv-sFkSG2MSuXMRbFiglfNY+9>Ijk{Ig@Txr7{AGTKB zrP}7(g_GUH5Lht>pYTg(iAnCOKGTiOSYJ<3aMNc8m6psG-oT6^xJF4qnQt|?@ni_S zyBPUz_?PN(;@Wflpu;h=tDfmsFa%w*m_B0kH36r@OcFfO6)Ap6WwS2CbS+E`{1H-! zBn`l~^qQ_Lun$jAMbiz2{gc@QRg&Qz3mfQnO7DA1|F14rMjh5_#=W6N1@bBPYKK#EM-)urdzIAN1y7mNJW7Y~+%vz*kFg@d^o_$J?|i}k z0CHE4wT9F>S9qz6Rpu~cq=^C*bFO6qI!z+aGYiiXMor5MCu3a37b`fGX>(Bw_bqCL zL|MhhDzzx!rx|}a*T3pGE>dL65iESl%+C`VM(f%VLAsXZ1W^=MaF=frP%BDQ$**G8r&E0u6bO7a)xtcX z$%^qVQ=H?88sa=kK464L1iCRWcQAsvmwe4Lm?innM|F;GxV^o|pxrUAGPv;0GGoyp32L&I$)(~`#paZM;k~fS_Y<3f z%|#xrGX)2hFiW|1OMi)}dSi*fh;sO-)$C3Z?pbniSyj6wJ*dzee9DK_yZyo{vlR>; z`-9Y>Ro+A5K33Mi7Vc+5$J<;=fnifLnJk7-fWZ5@s(EeMD9Mlmke&P5r! z?=ip05raLo3ji`!Pi9sH1scx}Ornq}gB5Mx41PLxQ&iz1;sZf-nmo*j3cGDb!yz$W zgRPPfQ?j(N#bQ})y1m6~1I#)xS@O#I zPHz7IHpRN%3!&6OkpLZ+DT$5m0(4H9EgFjFScFsD-^^3*1-$}5p;2}`rTLFzeF|ve z`&_HJr7E<=a}*J~rnKB30or;vcL8Pc-oitHoafBX6-&?lVw|jv+8oTrHdOGnRm?;b zzii#EQ(?w>fX>{?oJv`MyHgn*%kDyTZmR78;j9`{P$NDiQ$FyikMLhLa`|(A?ja6D ztwcWD;pi^yVU05^Us9uaUHifdpiEeq9mhe|Agh-aSragUna8f8K%zN<2x0&h(=}36 z_bnGLSghN`XXw~!YSWu-`G9css9XaQ~sJxutR#a;c%yMk$4 z#{0wg#8KVEF{oTAF2grsVrKdgkkvdHpbmH@R#vwEIS6FXi{GN4@RnOU2- zX{wzByH}k*WGRsNKBDF{@mFI*2F5W%?QZ`7GN0j^n)}YAWv0kQULg5`%FiS_OQrdj z4=H#_BTyblthePah5R~Y{r=fOnr-1K77F&8Q1Q4_&+REJy=rtT-e#^UHZ?Hsk0_eS zTTH^@QoW|oOBX+ISfH3=QOOr(o?;D>__ABXMl5C_lU}tPLGEpX7!G)R5ebtII@)-G zTu6Z z?p9-k$Hlt+u+V1Sl&vu@S(h>F37Lz;V}xak4To1UH9}LXi}Xd62RD@2>u(K^h4kT$ z4;t!o`G^RcxKmiUU=I8J7A741(RV1TgL-mF!IX9r7s_bKU1V=5GXNXZ7G zy0Eg5P$O6vIMy>POaPmCGT>7G06ofEOAGCE$DDZj$KphZFPprverLD9Seb8s=2;uzo=X=l{juaHW7VIT){?; zAaX`OaL+K22IcwM&`K%`Gb%1ne#7LK6?p3P<{gRe81ES8=j3PtRZHjx0_Cdx6rCRo zs6k5ZD7y2D(h%iy?jqq<68)iuW@R*v&=0avQ>~4M0+p0zY?*^tc1yssdazRi%&|Gc z-Qra6XmgEDc_CP(U-Xt%sW(nf{>B>|Be7Fxjv|jtw$`8J3W}BF)@L_)BhG$2YZUwk zUX5M9TvV}h=A~SK0CtN0B?StC0(~&_QQT$vx7@!@W%@pYaKx2&;&C2*t{7>k>L&DX zL;!Y|lj=Bwi(yi+FTD`LpUy2UlDQ8t5EYSz#r@`$W|00TCI|sJAhKg{fLEDw{i3T0 z7dI68f`N&Q%(P3jH7Z*;W~sM`C{wN_6jtWdP6#~83VX`XoVd&6r{j$54f6AGq>nX!jA17eMh@hSQh zbpS!F+*_t9s27=i;fH=UT)z*C>6%CC#e0#O_sBoYbc<%xLvwFw$}n|VhY<8gzohen z>IH-6&~;^@HDS~r7>T!nxT}Y^7gg_&N13zCDNTNJNdvs*cwbfvx>uSm0uu1yip_oH zxI0gh7=H&?*;kQpwhWw3)jSgqb1)I5yf;5o67@O9RT!CzH4u$XVqAJ335JqagggWi zpTx$2jNm=xiw>=Cd{mmhDK*oTf7xBam(r_AIapjg{O z?;rBWjpY$_&&<1B4a2jEw9IJnk@_XMB_1Ve#I`b2VUjpoaiXZw0IAInPT6P<_U3=5TdJ-P(4`|rj-ky7yN=FUmHJu9s%fxVCp_7zf5yrgg+zHEX?Edvzk|zIrzJO*A7ZZv}+X> ztGkdo)QoTFZD5ZUILfe#-zTPc2ClmO!lfcas~OQu_CCyENmNVzj9{{@jmhn zW+_oCwEmN9LmFGSnQM1~QXsm9l2#=6CLsz1-F0wkT3`+d%HM^!{{YPY0McV^l)V>O zARdGpa?I#M%xoWMUk6-g>9q=+oM01YxXntEtCqo}^V6tcCZ`I3w)7YtPuim2v92yn zO-sdFNeCsK0<6SSZj=eZ+_74T6iPl=aK_Hy;FtN)`GWe0TD6OX?pCVFsC*zkp|~%{ zF+#YOjY2&wSoRY&i+|1>M=(swueJXG1LzR+V8(7UiE^_LQCpKk#gU7IoLr!rZ>UxQ z@VW7rF)8Edg>V56JB7LQ_QI;UoNdeUx3o;+T41=vKC*{fcP$Xp9Lm`=3Al?!u03!? z6QT;4zM}n7l*4)XfI-P(RgZK9onir*=$y5Gr1}Y2uC6p$viq3+hAW;`iqm+lM%xF) zJm*FkhSmn>F)wQ^ItCydi2~DHN-C!`=Mt7~;4Dl+rJi}Xg%-a;4lr4CMy$3_;Vi|t z0(JD+8wLr3I4llOg)YmEOt6Ro4MoP6k&4alIBk3YGb+Qk{X-2rXhlwFDT@yUVxu*~2 zTHKICt6rb>W=Qz9e3K&I12B7cn!jnOnZ)8T5lA{5@F#kL#xCPE#|dhxE*RX{h{9A; zvL0A-PDxK_>ToUGQ~gQ@cf{_R?80CN#SKt5jOJRhyw4+Y;V?>E#fX@=S{M|=Y^?eW zR_J1hnQcoVTB%35(S<+QjYVHo7HVaVk1!|zc!Rghy)n&Lwn6+yWyM;RpMBKGG%IrD zIP(x)3&hlZb348y0bP5Mk=X%-@dIdo=Hd{aIkIQER2ItW=0hS8gMrNb1Rp8nJBV_*ooMKW9vmtm0X>M58#6ajz z(E(JV_5*QaVK>as@FQQQff@tGW9lm8%`x-DTGokprag*9DE@YeIFZL|a4=>f+2jW%2n8(DR5#t%T@E7(b;4*KBwc7&b zKmt5Yni%87!y5ACy_3X3yAim*)C*O#bl*31;Fy$M#bcwyLNtKUrxz;ZN@~)(PDnN=$R6kLJHwSY2qe=lsn9iHoGM!Bcp3vTl@=G|x1|fy~t!j?8)&vYf`) zmu{nNkt)V9xwJ1n&vIKiKk`9vCj*&a4{}@D%`K3N6>}w2+UcGwpk`6?EU=lj3DcQW zSwMWHwRX6LqWPvN;w~U$6S6C3HhqE&8K7);$lObQ8D%;T@6nETt;91{LySu|cw0@z z@`-S%pM!)W@41`5hHJeD72;Nf@YDvih{ij_GF^0&RdVj~SDIL>a@AA@UBzLiDdisT zxxgGcU7ry4c7})98k|Wmue7lBQBL}3T(kz(tj93X7JSO{E!@?Ok46%-I!dJ{mM-O$ ztL7d4o)svr;kv9}B5TxMEjx%TgxEFh&SOdrx=$Z%)YoOJKSzun0LLMJj&xoBtvc`JHcv)uQLyC#;U*zA8$ zHo!yRn9h)@3=YlAY)0+*c>=P}Fcio5j`9d;IC6<)6?$Joh83kCs>S$}FZ3iI{sksR z*WH3%{{Y1ImA8(E?H2(cwN?wLj#ttM*g+MG^0>Wms(lB&9VbW=;nMMQZibiScU)#VkI0Jp9ocX0Bwi>h zZ^XQyyS=r3rS+E|tBggXkcJTWKe?%IRew`hg2vJ)kcP26%7BuuZON;M{uUxoc6BYe zpNOd!_P9fog$BEo2cm}06fsfIzTjD#XYGM;m{+0fhf<#svU#Lo$x$59&%Q6=nHf}> zZ;00&e-IAvJ9%p`gM^Fs~gA6p;7$<39uuZmx z&sPb?QBk7jw57`Vlwtyh#HwR%!4eeQrDc&wL-0$F#HZO*3M!sZj_YeM-OV_Na(Ix=XDng*XZh1>>R0_|WOrRdv>->gmQV+Pbv5}LkQZ6_Yni&1iY;bBChcyWZ@L8zIba2DE=HMvLA=a@&uNYJmr=QCX>S`YTv3iT<}{e1?h7bVOMl&&z-b3; ztFH{H@L*RB&);P&&6J!#3wJGAi1EK@RSZ&-3lqlE130QuUr7+ao*71j^aU{v7_`I! zYG`vm7cf-vmPW0_64OzuZqd!eWo_ki7D@2MmeHAKu>xD(Xv-9G+i((|>M9N|nMmQ0 z{{TJ8unj$vpl`4QB7XWN_>pIK*=oh+5d1NT>ZTF%T=muefppvUcGg zC#EvlV^Jwue1k5SRs1F;Oo^sExz#`s#(g573d<;ufTOV z&t+l?V;~GUYTv1F0T50`K6X|x1geVo$rym#wr#i?U}5+J5tc3X)GR9g8I-bNtjqN{ zM@x>#5bZo*Ll%ln-$9K==My2_crI=gyc1P-4iyg{D2jx3e)cfl%pt99L}ca%O6%%h zjhcVmiFNT5r~|eFK6RqZk1%C38;rroOWmMl(UMg?4IseGMHb+Eoy0*s?=q5ug3{tj z!o92S)#79JR&kI#wFPPi7mq)9Cvd%p!nv%j%UP{;+E#@==(q#73^vU)<0PHvpal`I-2Ct_B-_q8yI|_@2flz;Z9j zaD>7J;}6~?lFZNw-~Lg-I&aLfWKpptv*GhfhJ)xVedb=o48?UP6D}Fxz{^&7kz1rI zm%K)!dAG}UuL580KXWK3!8n0hlmZEwGZ%8G&Nih{4sTWm_D&E$P!UHZgdn@WP1A`% z=9;dMjoWIl;xV#^Cu<)Pgg6cNGY&aTSp53aM>D|%u)?HCCoIMmuTw}u`xwxYoItvo z>GfygIae8c&T&e*&+!@1RR9i}{E00N-Tq+37NZYG_*!W$Y9}b~0A^f`50!HS3)!t# z5Yd_i=2jSu^9LtMmsU5-w&>zFviKz=TOTp2d3#H0RPv?#!{SuQ-+g$51wnR${Y+9`Rha<-zR% zcMhPTtH*Hbmr|j;#+8)a#>D8}b}rQCqLv;;Jk2^B*sLy12Ph!gAm92D1jTj9qz{ zXN*wHpq~2shf(=3{6I9FF___2Ow#gF4UI5F#A@YpRDfrG<)I!~KBATL^M}M9>v{sy zXr`Ye0ya4R04xp>*^&8_vO#5MbA3eKr2`0_3WHMN197Mlq7?0;gSY~*sNJ#Smv=6d zrsJr2L;)2iBgp_WObR`dxGD)xGol_|SN22wLKcNIvZ(HK=Czj%fSuZ2Dqs1Nnw1Y2 zoJ$8*NX6B7tBMkU!sYEHoQSvIfnMn08W?$0OT2J z6Ni>OP-$QO!MuWtw7TY{tL_0#yA=|^E)1x!*RYOtMme%wC;g>p{{Wkva^S5@#`r}= zj&@23cf>oHz{M@;Je6-=Tm}QKNyhk8t*ygk1q3><)N^X9KjwpPdygtKVFF&GHTuf8 z`b-tFhdyDB!qHb5CZ91f@{fqLV2#lGz2lI`31f}$!8lgVa)s0aJ610Ucum6MV=Mmo zY*-9HUecA){{Vbq{{YoW0|JHo&1@#`+GwpX z=z)zI;|vg*am=VD7qlF+6=lJ>M0kfZIUf+p@D4&W5EEO)-yP20$j(@MJ9UB7uBP0f zP@9$|V7G1+@OU=}Ao)v<9Zc79oKFPt5b=d%UFIwJQ5NRWIxzbpoA1U%Wm#Yw=sJrEWI%DP|1l}MjssniWlwv>HR2q38 z6{6u%^c+fx#_#$+Bl$_J*53^@d)}4Ud;>-uS>i^(Q(g)ACh6dakmdvE+%*H!B*10+S5WAkLJPyWUugOh-9aT+JM7HQ zT)@hFlBiy#5Ubr?Pd#7|172e&zM)0^u~mEh^0>t;1qL^@1{`+EbKRoWVHO(%jJF7j zO~bfVS#MxRFqZMia4~~xGf-Tnec^@LZ3f{%y$jm|)KpP^-LxN3NBKK3C|}Q{jI}cK z4vIq6u(lf;$5OK{O)2Kv;s9zh{i}#?a_Q>g3_Tp-RJ=OBaIAj^wJ)J~2!F%+o6Q^f zfWNA5}xjf7qa73jksC}Dy?ocEiYlFy!@SfSa4k9?Ye+t|k z29_B{h-A6M;ZJ7MpNN+aj&PA3FulPkfV`$}Eq&QpH~#>Kik1FdY5A1!Ic~X41S_ai zzY}S3=1&Ew;zWEAlQMAqdklve45H^p;$a!jE+*i}JC{aSUhrLC{ALPZnx%tS;t143 zp#}MbB~@ejEcpZV47doi5U`vf4^tD-%p&du!duW`-7vLs>YH|Od6tIrX|-UkBY-k# zDN`UrC@T?=9L%%J6B=fXTn~sGD-)7Dr{NZumv}6`RLd}zTezKD?J-8)b$Rze;=7+lwc2zo7%ZtQ~bsadn`W$L@Zf&C##k@t5#m^#D4SJMz{ zgIUUZ!@y-6dI-EA^v^kS-3KiK%RBVBtJo_W#^rm?MzXiOOY|K~D|*V@@S+(*z{Dm_ z^EXD=xS3MTQ#A`w)HuIr*PEj1hs;K7nR)p{UHKp9-=c&b4V}UY1p%Os)6O8;o9(aEXnS@zbZRG*y#bt1qSN%itk=N9 zhThQNehI;M(Jo@OL$9`3@zDM>fB@lgzQQ~JSV{VZyNVIfF6j8lV2*mr*-;sd^B5CT ziS~moEXOjXSv&fJoXk9|y?a6N=DC&J<`l}}RJ+^|V0PZr;rAzs6)k&_NVNwQq!uH| zbSWs*V3Mt6=P)exN_v;o(ZiFQxpcVJdwLTm(*}s^6)AVJEP4GE1ML~z+6R{{y8H7f z@MWxzW`C$cl0#LvUowGss!wQ7-%(Gf?rCT4V;ovL;>`U)EoY2f9ZfS5fUI>0RLwoV zv~vrlBS*nJ7HR;`kf;igRTy!zWrGOIM|71?Dl$A0l@RtfM@of7_<*RkOfkEpYyk|z zB(15$97bTk7^((akCt};_RHlObU`WVr@0WNoYK!T7^*@_G4QNzGzD-9$Lb3kC?VG& ztAuZh;%r>HmV1H9j-$c#qDuGeh=%c>h(_Ck26~n@0qopJBPp1Tl+Q+^4bkt^W5b!A zP(-Jg0TeVvfnH#^53-knYDSO$085EyO>_H8eDGmB;#_2zvsW1wwp>gl)%iq^2bb_6 zwXXjFR0 z1XVtAjI{Bn#FvK5YBIai= zI)mc=5%Ck#{0uoOXE_mk);~#fg&ZYJSx!kpk$wVOsiYZ;eUjego4U_X?Uf(!a~Xk{ z_ne*$%f!+b7c0#7K=fPDTDZ7k4=)iwJfn}tQqx$Jn`8AXCfx6{FyEtE;sKkvO58&c zsd$#kC3*^hh_^EIJc27YR_AJ&v`V`sNV)-aw($}NS!Sh++u?U<+)ViXFCp6#yNiLA zD&^u+Y+d`C?}Rp=Gn>bu`VoQ?i-^MDMh(Yvi{e&_)4RuM=27u+sc%-$N=xcoLyS@T zf@8=y>xhla5H#j0UvBWnB(DZJFiu%ro#TH(7_zM$hjO}zdlfh}1B^Fq1=RdS_6&dx zm@LXL;E$O(CWJS&!ary-L6}eb>R3%w?DqcvN+88An-A_Q%MpXzfxNy*SF`dxAwS-+ zTHog|YBx;V`eIyK`=>VzaFzQDF%`hYrw+U3RC7S4z1Uol&o^?Bb$57Kh_T|ye%ino zAlMApTsj*}v??C%F5NdOMPIp_maYz9RWbL`mh&D==t8B6ps}bDT6bl z$czVwVq*b`Nq2xQAr1%yuTYP?w6!SmLRMY@liil9neiMD%|)S_mh#=)@}*MfoaQ-A z8mZG5mH3u6zrtMGY0sI6eqPeiRR-?m_by6}bqovW#cd=a>Vm%{MDn_ysK3;U^8~Z; zm?odpp~uvGeIIlnf-BrT7VZiGn0k*)LFJfZU%xSJo5LNpc49c)eqc9bM-lf0Hm_n~ z7lDZ54|WP6eI{k5cx4rVK(6I6@Wuq@UkMVsoiU7&v}LrZIfD`PJsuLN!`UfY#R1|3 zAZ5g$ZVQTIQ&OugHSn2Na_1;QfirgiC;YPf&F7j0>&&2(H4^!Nri@vvOj~gDLM4wf zh?VGS^3^WwFmOTt0JoGhXV7K2fD+K6KF&M!DXt$3#WLI?jaxDH+n#xxDmQRY8gtB7 zxw!K#Tv)hlHCXT8=mYa1!C2$I-Xqf!hUM=ri!40O1o-L9PcMEyW5dfjgeWMX>%7f$(9&qoN_l z{{S69mcIgZ4;B6sJdZHig%_031-s9M$?XcKOz;RJYo=-Fo$)ABcg(EHWqMwA#3J#o zT*c3LMPO!zW>^D;3@$M!;q@yxuV@z^d{LjYxECkHJFjM@&VMl<#^l7mqiy~oz+s78 z9KM6;#*6Kq24bvRi@m>;(ykL`QGKP4bjOX@-?YX_)3psQ!7An9m6dTfL65XSSNbVg zkI&O9mIAC=tArlGyz$eR=sC0T2)F(Sgkk90_!H43dNP#3C>y4_nlgAaJg_}}-dDJ$ zOstWX_)V<*zztL+-r^M*Q-yhm_(ZC_@g79xN|m8D+b(;kK|+Q)A2bwnn2z#!gnS03 zba?$n4R>(Q+H(urrd{Ic{mhP)6c>{`!ne%ewg<#qI@8_-;S9pIf3|qiG3@}z)oL&g zaRAs7hBE!)FJyu7D2}>AG^k>wDU&QlE;(ZLzxaWo9pG2K<3X0mD+I8ed6*^MNlQLb zmr?dCFTyw*G3gkw-P}hU3?N#>0Nk}aOh#Ej{6%juaB5kV_?-y+h)|)FIWWu)@p7&+ zI9}!jaR(vHER5soX$Lh>>S#v;RLy)J{KfbO6*LDDxmdqi3j$yM9A!=nR!`q;h9hlXd zuk|i^4YoiKxX84SmHz;XmGn5&z)v#^saUF*LL#i^*5y)UE}-_xmp5f6zcV09qF37S zb9#<8Ms*r$fqv;j{(PeKGwC?#A_BE71wr&+Vo+{a`dJQGfL5SG5;@$=v=W7$(I3FQ z+fcCr!TJcoY?B3ob6YbSpBBAc>j~iH)yG&)tu@;za5g=#+zJqZsftu5 z5{w&x1x%e)+n;Deo~C7#g+ry!x5jZ*7raUrpqZKWkXzakxJ5;>tFN_Dt*YL-75qwE z09tT7tjt1=I)G7HaDo_EBmBy2yzUj5$yrZnjxJ^GXEMp+!OFGblyR<}7RbAnhkOv0;h-ewC; zm00A#I9(^P9BvqA1g#bs&)hj4*BKk2XUrPV%`4h6Hei%*fP(4N`jlR8jPnkaJf2~z zQ6RPo)*~w?b1pAYhOG%+!#DVtnLsv;Qst=3<7PEE#hHr$3z%_DPYJBlWsxmSS?z z8O`DgBBxU4=5PpD!iiENBOK;pF*b;eVm1!ttBLV18G_WTdMYqxQF6VN|_=^@(gYrWM%euasm9vth`*A-G^nRE(Bi;kTKG8=I zk8~LiC`DL$0`3qQW7G=bT(4X8tVx;o1{s(H;m^Y~J+_~48?}4JejQZAH2(mYTvrMI z09s8+h09{8aB&JAW_=6vc$9h11Q8BQ=`Jejr*GVhW;|tlIfMS)!spPnnV-oGvf(F{a&}u)J(G92u zE-`RiV+w>8LS|gJcp$ekBjp$;y?!QTcZd^lr8bMtv~Nq_n}M}Vx-d3xpq?HZ402kx zOkS~{bJH%9{x5lMrt*w|0;?*vKK%P2AOaN4a(fcl3kT0BE3$67r}UVjlF4{*^@^EB zY8Fs2iImDAs*4o4g-@maCFz%8Fcy{CAq#Al%M-W&phik?VJ%GI=ryP;C8c5z^cXO} z>6MG9DUiTM{i2!!qEtOIOnu5|XK9}uoIn)tz3K;o$1T8L$igEIf030&0=NrukiU3j z!bfd)ZAul-JdSJ}%>`N2^?uw>z?>-ew{Z8ARf)K$C@%CEzdnt^E0=WrdR`AhJiRL( zhjQ2+5C!f!i$&_)Tc@}xmv3*MO1S+7)iVPZ=ullD!q;))FI%E6rRd@8mk=%tgL5(J z*_C~zrZV*b=ZrGToA#*91CuDrl_hPQ+v20{m1b=?AT`-Atl}ei-jFvrsa>ngvM?-u zB?)i4@g1aa9mKCpR>|MNEDYcdn3p|kakP)r%LUOLuEeDA4ADfr8kEEL7DY0viNPqr zmT4L76Gmqt_Jg@{t6;(N=rb(p<{>p37}@rg6u48*GUqd6xa7_z9Lb$A3zQ}WjqJyp zA#qFc`dPisYn^ImTw4YPf4OCib#VqGy}~AM3aoP+Q5=%j_Ll)UWwF$}B`QrqwxVKc zC1Mr`%9w%+7Ar9*a*v_3I`C@|8BzuzaAY8rHB86kw|u1>ml=dzK*hVuhD#Ok67VZe zPz&wQIE+6N{vj)Z$M)j|b*cy5D9q|m(lWTo8QP>9(Vo~rM1kh?RxU5+lmB8FOm}A_f zm#@rJNGAHv0Jy+&HBzF-_&iFw(5IxmAu-2S=hAMlf8Wc|{{SPn!m8}7b|$7l#d+;~ zNp4K@s|p9ZGWAi*%KL__m*I#I4Z?9My%Nx5aEd2ZSh!L#PioWJEUu6gHsiD}2Tu&d zBBRwN#zUXXhKo>ti3ovE>DdS+95TLvJB+BKe7fX0@i1%X$3*B zAu|0Esw)U~OeeOqM^QiY_332F4!}z1M7MbAXw1N;m0(mDN4L;~B&7u}qc3o&73@Y~ zt%4%+tWBg1w!FcGhdTBB~P?^mo&zx=rbtT_g2*f_Av%#D8G1&#fzAQTnAjn zvN4lZ_=%pO!pr^L^)h{Hl${sm_e2{aRGfs*JK<<>faibJDqH!KFAL0WNt9CppOOYoFk}K#-d?| z70fjh;!&RyWpv6=bp%zwvvZ5MZyA)8dVzOxt)rTSON=nPVe6N{&!APnMqc)eZkT#k znR(I{6#L9p_?WMXl-oF&OQ~eXSd}J4#Y)_xq;GNA79eYTj3jR``Ko5-mxCw{*WOyx z6gj9a{qQcaWySbaMNC#BqpBIyszSx*l zv>y?Q^3Hz5I~>C&Ff)M)&PEM$2YLP{vhRnYTYQ8+=+Y z8aRmAnQUh<+WLrtO>g@&tywqf)r_uCzzJiB|?TUJ`gVR!r+#I8QM1Wu1jnAT4h^!FNX2NIR z_M4OBRQ~`%$AzBpJVD?u*@nZ7sfZk>f?psGS%%v8!{KkYGcAPkC{t%GLxL?sV399p z^vp8;1r~8DxU$c@N`kX-?RBEt;Kq*;GPDj`Z_3SUS;J7$H)MCZL z@oYL}hv6yaEp(UYpA5*vzoL7S18H8<=2y8_A*s+wa>ZpX1g4>Rr!rz!Iyl)J87=#(rHGr~l5f-AhRau&DT=;LPrAw?ZZAC4L zG?d`40vF7vfTvT+A)TX!Ajgv8$ldWZQa*-3Eg32z`GD4=g^`ua4a#6QA1L-lSM?o$ ztHd38Sqy^}Fx&^{#IXajm}_X45c`-&DpltwHxoNvl;I{d#_4*empsua4#AGvPXYuc9lOAB}WDo_aUpK(fz z4Zu5aU(pLcgdZ_|I*X63pJ`H}iReiBStCeYu0^;sRI3gxyq_mrj2l6^6~HWYK^B8x-9xv6uI zXiDvp?PbgjBF!;#+8C+0WDja;*t~Zy4ay$7dPngJ!4KZxDv0H8kx`Z-i)-?TZoX^x zHJ@mFraOS|(t1>c0n8z0$XY3xmndgTGqSUkx0SrF|3&{H-+^%6uTxWw4yAD{z=4xE`Whv>TmkU&N zQ#*p*2`z!gFqi6nBqFX+#|QZ&je?}p+D_uqw`czVyvmHILYuY{)P*#-0%HQ`e&#L0 zx_nP4PGuu`q;=;0LrqzZ`T_iI0-!ALCWnUf?vB;z+kp;kqEHM)f%B^l@Da1m*+@yA|;o0xm>m9wZp z?1Mu}NEEpkRVZVrka}+(CvlcUs9?2Wjw)EszY>tB3Il`DmvE1xgX0zo_d)PZZGwe2 zGR=?5TMx>7%rItT;%-}(8W4IPFuaKSgDr2w!K`%wrllIVLhU-55Xz$K`C*{NE_;Yy z-8QS7dqiwvJ`cB3uTG!Oa=ct>D-!)6ghna*fYZl5Ac2ix`G=afkeD`M4!M-RVo@W@ z6R3cE)Hl`QZmLwurla(+Y2(^BH;gE>Yj+5u;#iHL%NCMlO8~v*8MHvVftcfkL{v?A zMNP7s-r+$F(F`3Tjqu_JNwJAtt%u3Y367s|@Co76nNb_+lxsy<5D#T}( z9&s6z>8O(~WmagLn=z{0iY&@jzQ zV^af-L^NrE-8sPP(;$jqW&Z%NF?=I|%Au5UJGrf*kHD2TYFe98AsIM^sY`4GO|~-K zz;SlfR9VJ?(nr-I-C)(un-o005Kp#uRJaosj}nG=xdd~5RRy8;e~FTxde7Xpi{dYl z5u(9)JtW)KxCbzRIUtpuI zj~_IPTrBD~QqI;0j|~@C)iv`jkaawbjw4fp5XO;kCz#z}^M$${b4d*Jxlznebkkhp zoGRW6sZ~cZtD;`@Di|rqf(uVarT+i{CzZ?ihY3aXllsJh*$aTpG#ZXEiA*q_$$cVS z!Kh}l60)i#mJlpz|2C>;RtNlTQ( zW9|wi!HCL?9>{)g?t+(WE)tavy)H48=u{_pYZC*-e9tT}QK)+EzYve3awFOk`^0B~ z)J-{;awTA_cQ36(xd=4q>B#j9n*S->|H|3;u()p!jS`<#fx5m^7)TbK^my{3>?*xle|nT znD%*tH_AMEb`;Cp1!DIt3g+WEbsYOcEVKGbV&i{#$dplK!Nl{C%f{s~Hx6?ig9>)NMZ#tN1PKKIaZrzBpvO$ZO=4{Hn(8eGmMkHIc5 z$o7EwJ%^N6XFGU9Y)hoI_P{`|1vOq|7JPM01~z$+xcKDe7bh-`>Jq|BNZ!lx7dUq>l{ zg7Ib*E1MqSFKFxjOvji(w=|C8D#f3_?>HcoK{}v@?J8oH)ZQQq(L`MAK0(g&6FrFU z_C^8)=xNPy?JLksJ*A;EdPDHRAN{;ylvLVQ;Q4>1D?caVCazMHrXYcZ-8sZi@z?^4 zW*AfMB%!7 z(>d?{Fp9~sE-Q(b;FS$P8-4sm{sljZ)S;u8<}LnVE#_cL+cLa29NuLwn~CNndGjyB z?ia(p=1oS7Y?iLxVi!-@IZ!?3OLK7!K4x~zGJVdO*AG$tk>;vS;s6Wr%P0|Cm_jxI z+Bumh>W~PnfY*cPKd&9R9^9{c9s~Fc1?Hcajyckz;wJhc+P?(sPmBNB-rZHTs z!1|^AMp?m#z=a8F#KP`10aT(lb8L8sBJSp2Ks^uYZ!z#0w%D?uPGwxw@#`3`z3rJL_bCc06dr+Z^D1A+lvvQKW zCL)9o0a4Q}yyok|8%r-RnMxXsOTg94Oodnobp#VLLGg&h{ls-&!aHBNDZo@@48Kgv z^bi*?T#)OiNx7)wtB<5IMcz+;u>Sx#Y}usR_85=o$+A(&xR4YOqJ7eB9A;!g?ic1< z&O;1jWU8<3CaXgoM=K?BFr&jYmxgzyYuXGw(6avk)%tamLYJABil@eAe&{*-M8(BN z*glKbV4m(JF)@q#P6$^I8G(jF#H(oHWeWw+QF5+Y#-G*8%ZX)_gxY0X)kQ1*P9IBr z$KwX3-;|nF9E1u--q zW?~Fq5G5*RDgqY;#CewFN4U(;oI#gVU{8pid-DWnTu{!F>YKQBO8Y2bt==0 z#%z{xQlarT6bptf(_Y2{vR<3#nTd`k2Z-(?0DzA;{KG+9ZVStqWI}9V=MdDvMsF~s z(*wdD7#-9LWhPOwnQbOCI0?lSpgeXNq;zn?cyYyf-!MKX4M5gNJ z-I+L43?T@eV$4piB{6d*;4`R`7)&w(s`nK&xKK73RYxJpYn)sJwOCbu1k5|%+-46l z=`m$^im+A8!c3i&O)=`REeWlZTJ;|?;KcY>aRnOf;hLygz4a7#L`qiTmzrX+iH1?c z#I;yli!=I_=eLbUQMb$_NHoigHa9kkdtyKANR})2r}H1qkmkR1)(LM?;LCbjM<7rT zc2ooXNZrM_=Ec9U@eBeA{k0eNODhc^>6mH-=3*XE%2cI8%>eiis>l>gLPW1847u2D zu#?16(-0MDdmGv#;mT6~0PUYnOO+{$hUoDQDDyemYQat4^m;6lox~UJS-}srtT~=% z{1DAf62Y6jp{5yBlUH1|<8s=ZLPcz7Jw(&D16LOR06+Xk&8gb_Vq#y;U42aw%>MwE zM!JEvIQN)eFW9q;RsR4M6N!N8YK2mXZX7cPP+U+(&gk6b2ojkTS-XkPFAx#l=PH`aSbBkgFR)Y+Kk;S*=7|elg(u>A2lyL3 z3R#Sm@wB6NOf$OrEeFWYCST5WG52VLC@+ZpuLyWy(DWv3$mN((>vs89KI2uoM1QqeMx|=m>&K>!LTC7T9}2plpoz#4~OJJL+W|E}(}DN(xJ8bKJ)605syWD460{ zwqTTnW&`q=^Hc#CWO?1frLN{=&R{&nX9UWz1*$ZOxaDLCX5%cWoy|!R#Y;y&5U8>h z%Hfu4?i8ZStj$Iyb#QHodeja})W{nntQiS|2sgy80MbA$zvrX5bsTxzOmf6hnAAmI zqb15YOQDt)h%3y_U=f&jo5Kcf0w(4qdPn#ox!q9!65=poTr5<*ptjsf%yT?XuQ~|U z-Uv2F600lBF*D^2PQ&#&k)1AvX0|5Nu3-w=+6wOF=)J>^wbHfZOr|xA8ntBSp`19vzI61}5xn;Gw6Nl4aXTu9`E=MTgi zVIB-W{OR69$@h`v`tj$Jy?#@apEw|?kwu(Y)HciI76J|p=B~jd4DxVRe9l8+E@2;G z!B2+!g4b$XFg+K1<=izdB$K=K4V(V}$sO_s;v;RDhjT+7lzBl`0+JVAiX$0#KT~nP zjl=qSsfe|&j<7?o6OGG^;TAm}q8+CRH9j6x15ED1cLzNZQ>wSPGV$9+P@-G}EtzKZ z6{Co^-E zU(~f(c3OD<01!ETY`o78hyhaH;6_Q?bx$X`8L3)DnI>g-GJ~Bmz7C9DiqyvP=36Q{ z+W3~4-8|EJr#Vn16z9Rz7~C8l5c@uS!$;kqgYqG{T9$pKmsw*3GLsdVky2%@Ak^6# z1BkY;myV&|LFQ->X^lXb)%v%oYC#l@QD1ZpdnXC$~l1Y(i6tBsuMrp#@DKvmq&G1bkkEt1UU@{1~IJkfhZ z0&EGGMUZY?U(~K3hZr2Vja(_K5O*5zL*^h#z~UNff?YIAH-qKW*<8vJ&2Kh};h3xE zgf~W}m^gs93PnY=DzD~S#OK}tjck}Mnw-bpJaJ)08&NB;q4Hn3Uv~E;PW-^e?!EGKd z+HL%~nzzkRFRCx~G}ZTjm<+!jftjK4LVg!FO;EOOI)aeY<=2(Tny`w#wmOCl?usW( zB=8D>;Xrxs;=*35+hEHq6Gokg_(qXkWoQwQ{(S0J7$0rKQf= zmRHhebvXY3^gz7Fk{~cae5(Z3URs576h9?TC zP#D=u8v*z@N!{kXq0u>}{*}*}YBy@%hv)mtujr3fbZ~Ank{86*2h*S6BB|fvRtmEb zBwfxcXLCL)li ztnQ-nSj8lQ#cC?~E>=>wGd%tlM25yCwKX-R{{X9)Mj!mA5H%ZpVdxzqn;axo=G7fT zdy)0rhtnPgT}{X$M?d(fF8z#ofjUS}MF&6934`LeU%CB>)p6OP{HxJJjHuIGS%!*1Y)8i{bG9&!oCxm$Zl{gLH{f`M$DO>T%yoR+KT2R(WOB|T ztj}Rk>~zeezj#enqhOepwnqyFwwL9p&7@AlsGSW?hcROH0#Unl8hgvLo+SvOl&)pT zoyRDoW|>mv5r~#ly3Y)tn%w0$BF%lpKtG3rJ4-6mvbP&A+F0B*4Ft4z zu>@N>xoR;o!8$_*=WKIAvn>Dv{zMsa8BMg|#rV$F>;9-qpxZufz ztGTXbl9XK4%Yqou%&8pZXEl97fblQa+ALk;Fo~}#f|X6*uFq*&6`<-`1+dc?4jF8z zIddCwRa|t31Th4m@lgcZ#mkz#w=(`Cn}@GJ&ku?H3I70u@DHh^o^p&~PjXn|-|uRHax>|A2VRC!0!P6k2g>du1`$d) znwJ}~+!biDH_RF((6HscAda7}(Ff9j3>#FCi|-&GEXUP0!GdCQ@bj~96LakrG+BJb zF%<+ZOala=_{y&^adDgAijRVm+Al%O0C3)i0l2Y(>ofGSjKyA_XG!@daC~8)PYsa$ z3@+&h&j4geckXQmqFONI{V9yzrrz@)DynuF$&LnW_lFs&1p&Id-XZTruJD5W;7 zrH#BA_lzM0=yxxN=oUYvOX2>HdZEKtjuKdX8GtyktcAGwEB zE7SLpkK9cK-mX5!y~uY3MlU!kRz{n_F9h?#4eT2YL*#@0 z?&BEJhbVo<_$lGI7jLel$J9et4!%Toxo^Z1gt5r~0Bn59G6I3o2F}6gfV>VEmk=Rj zxp$96H7MfeyDqa|GQ-ovSA-?|W;~($T4c@NsVN*K`-`YI*Q0&Ia{ViLjdv0z3FFKg zj`{WB_+>f`aDK>eQko1Iig#6=w(f!vl=cQ?nFVE6nMxO>e$fJfUL`;ex#()So+eqB z0fpJ@%k#kZkTRoE{)=prJc~j90Ie4Gs%zq3jc+p5=`u?K<1Z{1r3Tj(9+t#Q@QwsK zw%7}d_x^l9!wP_g3z6B}1{o}sf~W8a@f$`qQH@FypwVGG(m9YY6cN>dwJCK&8=vpCt5%|)A(=`-$Ff)tO9LK-ZQ!wU4azoL!te|n(RuSNZJ^>D zrX#XLHOBye11R9?Zc$Du{{S(HEbMwspGej|W0J!%51d|58y|UImrq55nCxYRT(i1} zWie8X#WLU$g>9%NXKI#g4a*Lylv4m*x{Td}re@0J>D``XG}Xmvh292OYO?-e0U5yV z;BV&M>8XCwB;TE<7>B6>$krG?5xWba>qvJgRAqU5%JkRTlMQ9L!UPI#l*@TsFn&kA zSG(~I-aylSfpr=yq5-Y=0?Hp#lxIG0FLrtj!p=%I@lBf8P@2*YPxqLvY4m!3kR6P8rRBhTzi2}ye%@18Xgq-dTu6j zH3*MUHXT8=t|r~w%NE`lXY8si{Xr961k#S>2h;&Ua8Kk6R3YhEQj*0Y3wQ@}&<`wh zi{32Id%{5$d8UHs+-REXx=rOx*bSiiCYf8+ROLF2tw5tA=1-AH>Uff}*jQ ztxLWma31g+y+956F^QWM30@7uS=4Ci<)Bn;<{pX_iYrmdO~PtWYFcA*hFP4?%Ugug zj{=?!(hV_7W=4krLXXeRM6VLl5f4F8oW8mfwl3EeKXc5m9Ils6o)+fxU zoDaCdt+ixtZ=Z;3^2zP>?Hq}FKH42^+fYi~so5@j_G%H8y`wX@t*^vwhWYj#vA|Bu zbag1{Sa8XV%Q{^AewbxunAt;4A}S^351^$9xcWixh&n4y8JCh@`<5{*sF>cOsKpY_ zc!S6yFbh{i$$~j9nS-V%{9^~1OJ%}mWN{A?veKT+)>o8PWx36ojw|j!Qd^CA4aKH- z>CDZknezcq5EcMUV?QQjFNo(*SDqyb+%6^H=5V;N3gyjDF;bHvLGbP!&FSJ{=oRgP z7h|VzdsiY%GB<3WxhjrcQJEN<-Yy%=J$2F-gnAf&VrCr^0tyr3q-hC8%9&*bA~sog z<8ue5KFJ+1Qu~J4aVNSvD_7Yxr4@^I%50C_u>8w;zeK?(CuCW{KY~KM%4``<822NJ z9ta8{!yXuqhC3%8rU0X?2tp#3V9k;1oLejI62S2UfI)o7nQ_6O4MFQ*JVK?+z3=ff zCpnNL)Z&t@;#I)ZRYCMsPj3edv$xHDE;bRTTP^bDn}e;(8+dKi@0rJ(`~>3{{2U951l_tyPc&G9lB8JB~IBYT}Q&v$a5LX#HK<%cr-?~cJ)UF!RlnR-YVcqAi~Sgu%xTK{g5Ss^{X$a_?$qP?>K3|a(tXqr7g}j? z9-!~);^CG^V1PQg=z5733S+5p$#B4>Id1#RBZlVh_^C(!j3UtZnOhb2EhDs{+cg-( zucLP6<)xiUonl~ZUgc%)G8$MxXQuw4iT=k0Im&%Shme00_dmG!+FBT)umYaQEo1#q zMm)22+YRH9`GI!~dhL&il2JTNMODV4r#{jCS)Byj^I}tQ#vi{+ixr=lY@?`y4j?mD z{YLGt%hb5KU=(3b)D?}Z(NCz_RK6yeo?&hxOV&Lsp2**~r9)&OWB5-@&=K&z5eudS zsTs`{!ug7HzeNYT!-y-Vod!Nf%enCgtPNpPj}V6xC&Vcf_WIf^=<@>bqJ|Tx54C%1 z9s6!yw-~e~=)GMHl8sgDkEK5bU&Oor0KefaciH~{MBD6tR2PA{0)lH!h-CI+O$L(s zOpge*viX{k_Z#AAlu;oFF2_?JNz|L2^hFoP?p@c5yN<;zWquC;Q{Z~)gy$dyw{!Uzb3T;xg>SY!ROHB6hBGR9eoAQ1Sn(=MVOAX>SP zBPI(&Dxh3>Trmm6jB=8gZe$Q}5Hpa5h?Zp>({h-VJ5MQO3rzJm%-Dpo42~QUQ=7JL z9lgp}Fa&sr4GEgnPm@2WEoFBw3dN+nw%8R!wr3I|mmtohsS7G%G`l0o;vy{m|u!wiF}e4hR5+UtE|7Exw*OdBv7fp-!8X^>)T}trFlHK;sGl%0*@G61v{-z zE!L(!Kr^x}tP)J(@|m1_s?WpqSl(Q@~8#-Z@^c)9lUq`VS3W$7u( zZwcVW*&n~I=$IS$@#qI~?zb{r&D~8vu!bObgyUt-reT&N4`@sDJ)sDg=Qk5A4a6~+ z;-`ij!9gJj#~5I>cbCON8hPi#tsDO4AyoXVrvPuxIItfJr4X-~*l z8^8{KP|4OAh!4!t+A-0@#ti`cRZukwyj9#>1)ikZ4x?-F)laKJ;JdW`nPuPpo+mGT z>Ax{Dwvm~9CK$IuZjn%>I#VlrQ3h#%uWTx6-dwWm=6F3yk!S6=g|A?zl6()5>F@3% zFW34A_?U=>0VQ)#?3FSEio4MFV@aUJn!DM4VF@1v{{UVYOJVe#jHVNmTw*y`m`Cbc z0m`LKv_zPgdaEZVh>K%Qt{q7JBY)CRMY&6zuQ3$6P?VD@W0kGLJaWToGTvj85{4^M z_%oPF5Ub}B;ueL)O=|8HfsIZE6rSX;)Iu93ZW?N2<|51!=O2;j;!r?+D}QqXiOm#X zQRI1ns)~cmKx+g!Ik+kc#;J1*z+wcnBW1<_XtgnMFXDIV(K3g~e4_8}ek33`SKUO# zbv`H&3L1U{2TJ?2qz0X%D>2*)U_uM=6VaDKLQ*fSGc}*^ ziS{YS7PWHO#*wdU)Xy_&_=54wU{M&q^HV}LtK$@bYv1bh#4}POJ`eRp^&p%Gjg4PL zK?V&6roO)F2}hlC-~L!>h*3nON3rz$>7M@pyTC7|Wj@h?4tE!IDhl^pZEU&%KcEHnJ@99$Kgn-QSAzC{Nt)uk-k%Fg;!}9YU}Kck+bla05cH3`!O#re>T$* znd0J7!Ns2QXW!^e@A;_d{;-y*bYA336@eri_a0~#_DY&A6>{ogX(<=nn)@Xe;%Nz9 zn)KXClNERP*U)1Rf7*KtzRA9DC)i-5_8Hs2buE0|c zHGJ9PU6O=XyJ>`HsH7>9p4MR=B@ou#kDCX(E!_MED8=k8Q&_;D8*U}^Z7pd958 zTKLu_mTnAu-%sKTG+TdlXJmbm)t;>zfNf;!O9NYgSyfX+KMEr*yrX|u*X#UA93;iRU(-I}98LO+ zBW|OpN`g_^ej-~B{FCq=i%&Qc#=-fC_WuBUKlF12`!G<$DsO=DyhlM=QBlg<1~)(L z^*ALDP_k`jj6xEm^NI{V^;7YY@}`IJ0IjhXb~pHs)}Qm3_^7Zd#YBhN=UV^ zEn1etf2RQYIAZ?*pGko^hxfl(@&+6jf!f2X`QiA3n@+^vJfMR`SLAmr$;bZyiS;_H zn-+dpsu70#v0gt67MLerYI)zEqw--STG}g>ok$UQTo^?aKF5l8ddwETd3j&*ON;L? z%IU@qhGb19HFIhHts4s=`6Yd#;hCPXxp;`>JdE#n4;I^lmf@i92h`?xm#4uTd$smV zphg~#byoc3LSztZ+`ljW62b1oB+jv4AZzzcCa>x$-Rlp_J?FluDMxM3KfA*P{v8Zu~vG7lPO(8B+ zA4~Q2mvh}8Xv?W{QLRof=sSaogr{-tYAx1b8jpw3aXQ4ryhATd!e{dz;PkYOk4V(g zmy9qSzm$Y|-{B>w7$fjYpZ;$gOV%+I;H)nC*WviB13A!$v=fRh>kH^d0# z_{Z`}Z%{Hh>Q~(--6i-r#3-t~OZ3jB2~IREMN|o!%t2J_9}v$rp+0tagrD}#HbHcr zfc)(Y!R+Ohy7-j?=RCXba@JVaULDADErWmHH}f^+*Ht~veG3inq~O>F+Hc9sG`d?b@Dh92ebYa>23XWPy18NfvEKk; zZgW(}QtChx%~0TZI};=)NaDGQe`$|ba;xNG8y9{eAO{k)HtK24g}&^-wSAGBXtX(x zTUl0DG4Kmye8Rvn#0+IzM6Py^pE0NH3ASL4+`+ZDH*3@^LlH$0My*dZSb&xsC--a= zK4W~%G0OZw0Y~CuWl(`nc2jApR?P7P7cs7YqfYY%nR`7}S5+R#O@G5AbJKhybQQZ< zWnMqX7&}#X1b$=B-!kXYpdMgOeHap;a}jKMZe#xH3igOsp%Uli3_tbr1~B}2kFn@~ z8TyA4QXk=ll6D(|ds4?3FmV6?dI&g``O}FUc=|(aU5;Sl+LfYp1;iqr@5<-W$XACZ zphZ?y?92&H47;jV+`5bRZU!ESDC}_yD$XfWn*RVX$k3xkyMlA9crO(6ok|lr75|mH)Wnbwyh5rCPAKD?-Tk^`ft{=4f8F#z;L~dNpd`md<7YK&U zuXAwBusN0oAKYV!uihyC0Cse!<^dsn&v{|D6Ff~}E)Q6Qs`c~H!ok-FX)g3f5fSp7 zL@`GYU`6ULiHOgLZ@EaO;v?ulT|)koiGG#LVciB^rzAMIZHSLTz)P=6iH%gQWsC-P zLO7`1`9H``Gf3F(wCQ^MEVbbc|wrlB<=ybgB0& zLaPgfgI3^lffIHn6kL;qlU{>CfA29S7YfgHBkgk_kMc520%Wy*$M+io%)W^K00gL_ zf#NsYxHlPU(m?rD<1?a?l05l5k%hCg%LRpjt)inoZJZ=Dth0CL+(JF8SHq4btj)}| z#^xx1gAxp7HeLEuvBrYPWpg--0214Jf?KDg=ino;9+TKa>JhnX;x=OD&^qLm#m7vS zsBU8`#{g}jUIGm)7R3dZm?EHz6;7bWwfBH4wp*!-(+I;3rEKXRshc*cbUwiEM24F8WFw%-1p$r0=LdarE;_os+_&T%GDoG-|&6L4%!6| zVg-i7#Zr3%9++5K7?gKM;W9f0C0-E@@=?$!6Uw~SL?~2jtL7nd$da@o+R%FTCY@1< zmyTvG4bM0HE3~bZPR#vBMc?U~f8#I%^1;O3-?aXtIxq0g6*trpvtj#$BS-CxPl;Ph zrnSjyGA*W5%-U{j5{+*IJ05}PJ<#8C7#gUlxbISHV{*7sdS-2LAxNabPW3@e3ZpKa14g)zLO1 zahO-c$1cjgSzk}`C*}VDa@Gpv>?Iv96?Hdz5}Kt!_w=#<0OI4$C3O#J)ZTL$m`X+# z5WqtcfP=%B9D>Tf0CDjTbmE&YP;W@&N?$k^JP#D1qW-U<6 zF#Bq<=~_!vs!qv9(UhC22J_bWE}@wS;vW$s9#yDxKa8WQc}DQT7U|_%uHY!@$SL@! zCC6ebDlMk5ckWR#@iI%1b#Sr=rVLa=4(b^chI7p$+Pj3!{`LGK#{o!tMr0c6aTw2Z zAY#sFf5gj;G6p5X)J(ZvmmN!1ei04&d=^3ylkY}2Kl)C$EU=P}^KZXKw~3@x?SF~X zz>Rua@t>$^IXwm)%b&ab!FZvI^nRNTZV&qQisE3?CR0a;l(;-M6vTHJSHtvM4O`9P zh?K$%7&A=Wya!k1hh}*toe{smE;TM+pqW2{ucH3|nvUWjWbCylza*(@rV|`1PKmNN zbLmp9Thudg zjs(*@`fP@!MTTP%=LehYnbb8PuGC6a0ycEvv*H>$$EK)*8QL#u?a}!osGn|orAy}) zjeiS4jDfY-@i6{>dADDNX6pOf3!E534{E=tuhFJ(tAXOchn2;?$;bN+)vR`@UrI^POX`Oui8wCeqpSlT6%fMnfn!0yPq_jAALnWqev^aH`QRt3UgC=zVq(*ZCJA=x2Nh!k zx$LbwS8O!}c@32aon}6^Jj~yW53CDgq^aR^^^8sWT543n3V_Oov>bCkYJL(toDn}s z6AZ9I;hLXHreF7FJe+@Id9?>YtF=mV>jtUgoQ09#0E*!eZ zwZi3oi*;V*Dhu?S0He7VzK67ekGn?!TvQX*5%8W=%g#9BaDgn5H7B! zfl)b>oHYft_>{kz4nP3ZxZ`mW;?mID7rS?OisOXSf*W}JA!T+?Y|B?_{4mhh3>_Ux zV)sw^{3U~h)~9cTzc)Y5T>ZmsT%m^wRQ&fU!qFnT#1&x9(TBfcT7r?Xtbotl5FtQ6 ziCLC|(AJ>8`!O@;2h`^9nEQ-;%4z5HnOpw=?5RcZOwW8zV860Uhd@TB{%tTBPQl|H z%?`l(jN03GDOlXCZNZrgSrL~D5hf+N#0#eLaMJgBjercj~FvP+u=F zJKVQzPQ4otsZ31E7Yt0Xj45aD;!^2w|YG|oWgSRHI0i8Pnmw1l{EST+|<8Uj$xuN zcBj_j+#s+f)J{NS#M~!Og7YAIN1}VYc-=hh!HV2q7i9h3=ATAq;gSAFitwu7v z7;O{q$f9lQ#QX__1}LV>*+1rY4ddDvK||2ps368TnkN#;)D&F*08|p<99d+3VOR6} zmWjZ7u-ekiR)%FAD~J$&M0W_p;oH+xvH3qJ14ymAe@d;?HX$r9=30j<^_IZdUnUsf z;LdtE&-Os;-mpjj`@8sJes}?cZD5`1184SNQ%jbUFtF2(XX~32hZZQQk7Me4$jp2b zFwR;}W?|3JgULL9xLceZtv+Qe@`j$9{Xst2mKIw?H3a$strQ{VDCSYzqHbVvbtz-& zrOs)3)OW;0GF$v&eTX?SXgow6&da=aGCiv>6OY)3H-FceH0pM^gpKmPWkQ-q>Rqa< z{ZOf|Jno1^(H}CGy+L>678wQ?NNH_cZcu9+LauGpt`M_3!{%bT{Sap5Lsgi1dC`8R zaY{Ggs2`yRA@fl_8GRInGzr*M^79i5E_{7Z?RwCoorM#PCB{^RZl7uU@%9H>< zaJ4rI^_PeU97>ZaTQAN%fXJ2nzLe-4JmM;?BRYMn2gFB9P z!it!wc!#{pajkk;=)!X_<{J`*Cvv77?%<)Tqvl#t!~SrimT6Wf2}UJAE@M8Q5O0WY z)8-t{30%X>5bp%@H7<?_zW(5^H|>DKkMl=$OfTswZqGt3aeg8!xswwKP>-cfJt`=34?-A) z@F7;B2?Nt_L674PTZi#S;l8EMlA-HR9Y8%vQFMnir|JepzjJem8aAT8VIRJ&{KSD` zoILzEAp>aMllmBNpF!}|aLr_-DDinH7W6C>K=p0BmT3?D3 zyN9%Tt6`I0_>nX#Y7zi%lG184TQ2#qs*xAI(2uH z<_IbB&-fo^r{rb7UU}@0-s*vMH=f^Z+pl{{ViW z4Ki_;bN;7Om!~o4)q5HHf4O*})^x5o4%QYaHceOXFh2#C=4E!SeKkUaxoj49pK&%8 z18TkSnSb`=qGQwkXGv;~#Qy-L(tp_LE58$L0s4h?33LylEbi}QvQ@Z{T{jfXD(ljlv&N#+4eZzj|UlTr!y>VETuVi*xbNP=ya7eq~ z%pQgiuq_eP(=(7mtR{z3colN#Vl&+<7vU`1iGZl~lrZq4GGSXB-ID!>sP-+-k^ZMc z%m~Hm;e@^haSos?a)M%;w#8bET&F21vMSb6LxCoKb>-J@69M`A2(n|F6 z9w4=jA&v~;-+FH0lfT;mS(qnm07qGSUrkAjpVy{`pn6rzO!`#R!7kvGgX!hXW_iq2 z+4X{7Pa&};?%0W+U+Kvq;yPr zFbcR`tG2qAqqyRHPGdH71&ENAg(C^udQ^Wg`Ch(_fAt5w@V}`He8wb#`uFu3l@! z#s)R|AmlZ;?n^PZ(~u{jBs1rymWkh(>BCRCnLJ6__6tC;XE z36fB3mlxJ2aSz=_4UAD{=4($1YF4FV<%QmBMJnOmYgKK(X>BHg@3Hw!i6cz(F)2TA zVt}{ZOxKBS6=r?ZcyT81>abAo{h5RC&m~W|m zpp*^kQqAI%vF;Fy!|p{=Lj2@6AX6C{qpaeulzZIaN{&wy8iJ7qOxx&#o&DC za^O|IvKc+$t;gOr*+}rt4qZ&!a^o_WQ;uWeajBl>qmDN+ia3sB zY$IJoj7%{Z5U`%yUxSziE#CZhE?JTW7}79q^tdf{8gl>FF*P!-?p_m?@j)KAe0520m z(|7*>b93$`Ab-_I`8@&YUYCA^*)q$xlx2DebBM91OO!}gk(lG;&4cPcuezJ1^qYn3 zkfqEQLf33zkHlw4U42GF24$vZ(^C2b1z)S zn6mWA9DE*xtl_}%|IId#^UlR`G8kLU(O;8mHJ@hssrXOxr9*icv%_l zAEPl2_c9|WzlbRJKw~I)=H~A4Q|XBn1xmWhG0(*ECVEoEHW9$_HB zVmaBA%@K)9sLOG68#|QO5k+Z<+*+~Bm2yFtJxXD$zlnmX=VV+$H@M(nmSe=C{{RZq zuSCvb$|r_h4>R0YXwF#iw9HCsbxSX#f;<@jGAmN)T^Zz+7^bFzR7Krx{iWZcB3ps( zxE56lUZuRPjuigo&~6_N*y62Z*6^?ZFdBtlp{jv?nKd)KI56eOYqP)EH)rBazR~?( z;uHQpBH-O$>L?t7G7k~f;IkQ{-e&zdj^;z4`(-OP`4Jq}OkZCq`hTfVPzm=l*2FL7 zcR9hb<7tRtr0x7Q>2M)NXZTZor{Z3r0p<^)s(1~8Lu--BC47-~q1_BndKaWHqU#*Y zXyGGS#i|>*Q;yiD$DtDuVx6F~GN%x@HR>^3JQII}P_OVneRlAa4TXI$54nBizGu)U ztg|wL8kr36Og4x9wxz~aXERS@Fr`=anOab-25|YsXQJ3XCJDhB&xO=fwGDn!-KP_W zG1}HRoR)F$g5VM0WWjFFC=!^UH$7vRWGf=XmPjrmFZg|ZCnw{dpEir(5!3mv+z17* zeN1l!RC$WJODfxmScmPq$JveZDtX;}M{%3Sd1889S5hX*wf39d8pM<@ar__8N7{I$(RlF`?bsSVR(e)CT^s0RR&iw^m9G>cx{bv+_8spuPG>ro^XyiOT|axzcXby;ydff#971QHcWZ- zYfZMN_vkL6P`im`f@cDJ%vbj-%ojA9fK*#|72adL%bJgJZdN@%SO)SSJDAy&px;nx z3l=c(02qAN2XsIe0KQi+ykAn(Z!yidnLtI=XZV(-#z!fr2B>8Hj-hHUKeV;IK)FE# zvb_jEXOYKt&8e08pSEFeZ_uXlzQ`*cRxG#2^ox`K0KDDyn*HX!$)a=gH#UonjK2{; z_kEBiE*IM@hnfCy`hkei&azE9ep($OHbzwWi2431)UsT;c$erfLg7ArDut7Rv-&@k z==4AE4@|$}%)#_azIjkTi|DvxFCLE=dRv%`%it$|6)5z}(}<8%*359lUI52I6sN0f z*;2|X&#zDvW9tRYIF7xfw_*PP2T)=$Tar{Nzi24uqwXskC_cueNp^`FanK+IhTWL67oKR?E*Z( z>n#~*l>7ex^)?Vb(U_ghpB4IH0y@7G-AH`~xvEo$06#62q6bUx;dt zxhKIH5W1x77Y;d6?$2mhKLK%}hev-h_R2Snh)aOh(a*;Fme(33X-v>y{7mF9{dQrV z7(BkGW2hH4Wq7y^(J(_-f8oprE#FDFjF;1>*e2(i{i<>w^dO6CA2BQ)DW4MPtpLjJ zTg1s1Ia*guOly3S%&4&prXJ0l;&(E=H|cVVaLg5K*mk{$huijrs-3DY#ix~=6+`93835X2!>a%*k@f^`|pG3A&D3=j&P~A;j5~CROUh@&|3aBdOhNnN= z2rL_dJB(R`+*4s*A+CDOf0$$4=hK7YUz#4-{{S#MiR>2}u|vie9~gI)+y4L)I@q%x z@x-e_yMNWp08=wQ`c+HQKJtmir^Kshm`%qdK49=wxz$-eFtj|K73)QMGI8jBpvAqo zcHcj_)Srkm@Fp(d`NEij|*2K7;6# z(uB~JG4$-4PGbS-oa2&U3o#O-w7%9g*n~H^ZW!?XnVH$L0Gq53wMHmg>4qu`W>h}q z=2{hbnpr>P^XVT-hDd|!cL`+6B>uUNZRV&r)F)7SQlByT(th{%=~wK8LgvYj{C5r| zDeOUXE*qTDZL(N377?d<$1A!10f8uUHUqKLzshW zW#Nls=j8R_<|3*lV|_k}MRr@x0}o_bMhF>H@@9Ya)*g5y6tPi;uSawaFoVPt$}n5& z&}9!H zKG~Ie5_0}29deF|XOHr%XZ^c?2ynjyB@Ew#1bP0WxHzQ;GOjqKAQe}hP{G6nSeMMJ zyXV(Qh(;ZpUB7baH-5$((y!0`^EWVaeC&G%eq{$Ux=P*}@D(1YfG%-7G)a;3ejLMab#q?9Cm#T;aJ-sWr zmC+tCIh7s6CMFlCxZ)DsR%Qr{1xF8WX{3*#wU+^Va|~y3vYZeX6GE9dn-Ju;6ch2o z`$b~O%67945x*hJ7T?*}{StIofqy-wcua2m%95M>u$z;2{lv-pW0=}wGNQ{MAiy4j z`VkdtQ!Bz$XgyfF@+EO-le2((;93_XDqHOwY9kbr%XjM`_2uE!r zQ|o`Ucw;pL6?p;kQ`o9C2tl8b=-N|QL*8Gh?+nYPRCNwL38{XhIQiVl=+hlCXHQ)p zO`fR-_*bFo;}-`!&-*<3*P*-&L(xfY4NN(P{S3rohtqgUK28Aant;ZxoD9ej3V`UD z(%h26iOlc%j;C_GW@v43%zr4RW0YDbuXM!+GlXUPmw(@WoAnr#Dpbr(%8xO=5a00T zQ45sx8jQyuB*Fgx=4T6!PM+wb$d{PD)arHYO#RdjcmDu{%1}bWh{Pf{_+w3)9Cd!B z3^m_wrak;OA9@~T8xXp^c$w7nKTu(l8$r;W#+}Z!@u?V{!v6rKXA8LrimfO8{*tL+ zwXV684nHwGOm=N>#y(>V_Xy(8ET~Gb#YJX1S%~CO$-r>}G1;JbMhA)b5PgUdC4T~O zHghS3(Y>Z3k2r_{`C8mwjSMNo`=L%pey>{%&DJM3;tOxn+@In&^8#72?`hpwO3%kh z-&}m&r{Zo`%KX%E^;CHq3mhi`k`k7fzyc>wAK64ghv8w_AVD#zrVbYCMsDb1b zP8y1Q1w&Pqy_hxXwR{fZiFf_i%%Q;?I*2!Kjv&_02?v`@vvnfdb5fBv%O(1#r%&@N z64_j>%RNfasVq7J*a>x<=?&LGaf(HDlXIVfu}Z2FA-J_ z;Lon{+ZWZBFV25N#X7L<`Tp$5{{Y>@(6i*+ve#aSp?bz?f5XIK4b&_rH4H=2vFLb0 z6U5|RGB^)z1e9W7b z+yi94d@zjooI^7=7%^l`A3%Rp!{h#9!4nM-LFg;*%6^UaFQ3fGn#<@T{{WwJDvH2# zex<=i(BJ%+^shOKQuW;1;$Qy&)^dhb1yX}fdhsgbVvA-v>Sak{7d5!Mr1_X=f<3j7 zjL$OWb9*BBp3MIMiwsFu+GHrorjYM$7_+tR+nXMugJTB6-5Z!wdYx1mHFaU^XW(M# z+C}Qy)U`+@hQF=Pc$G)ur4U~{%)RBZqSUmTb#QE4M~r;>IU9lI1(@G+{w`Oe?t2J4 zPq~--Px!h200u38ltyFTXbjnxw7(+q?Upc>02QrYS!DCXMvgPj274ha+LR_LNXVeNWeCqDuWGY?q8O+sKv)X?RK`PLP_b+Zf z;~m<6!?cDMuhyI${{T-!;O&i)%NdEVy0UL}IUJCNmXBN8A2%=935$x176(w#_=^)> zjL4atvlht4iOa&leks1zXwSIjUFY}`>_5~-GNV89W;cB}j)N^#)U9VwGS3W34}8kG z9?@8ZR0EOC%SZcSVc`wRc!i5M1JvLV0!|*OL!tSJM=ukbsYVFqEpwT+RL6YH<5-Wp zq*#}Un}L{AN|`32Jy!`VUi4Oa1^ua%x&xSt9JKDswNb@Etx5A>8@&8*wkL2wcr1`!XOSIPK{Eb5F&ZVWk#j6Y<1ukklRYv`2_ z7F54UF8BEV0Fe<`Ecbz~qi-k>kD&~I0h7H%`b6q3Vzw`c<<=&!Ylx|CY6P%~0*GN? zqnTRM1onWW>S}7WFsd!O`+?>pw}??m^C;x|B&Ru$-*aTr9@54djo#qqT&PUji&N*& z_nqg_(Q?rr_IZmBO(4ODiSj_*{{S--ec7m{4_dEn`b@pzaB@eBq|f{PO6M>b3F7*EZ5Mf7d$ak8}C+<2J>DJGRzm-T~4vL7&MH`@45b{z&&KSJ>1GAF;T_e&FpK1Xj}!yv2Ug(xUe2OzHFzFdgqvvlsXhSf?gc()7zG`Z?@<2$o4E5{;h3=d z{-KlsgE_vY9Oiin#Fv87d|5w)f!M03aN;qg?+$%Pv*ub=&R@wLz7PCLL}jY!{IY^w z{$JFi*qNnz{a%b`z=?ecK-EP02osd%2Matww&JkX`IH?7Tiy_mmT*erdm{o3hm}lJyZ>WnGnU}O6BdF((L3I`$j0`%M@rRg{@f1$; zec8$@^shp)+{J2&MX*g=J6${-#pe^Aj%quynQFbm4T{Wd*g*Mf0X((TFA-O44~*rE z6pAAEX-KOwJ=FsVc_RW{Ytf>DhfwFz(q3c!mvZ_40PTldU-q2GCvkS0WmcMdBk8nx znO?U1%Ln~j$(T_5#g;cv``Jl^etMsfgw8-`=0+J3C|$uNL-`q%0_9!JSZYyTkLpt3 z_LQps0EupdtMNk&%o~dsU0W}{{c3~hi}*xX^{l88qDB!@hSq&!d9)adIGW}dgJc{a zLAi-h`GT$S6lWJ%Zal(k%X__#i1etdZahbZ#XKc(=2Grxm3Y{UEhYfr+|x2h)?;#u z_kA2WmF6|CAKq^SAu4Y*JsOUfdP7gfeeiv=M5J(xt;Q*mzY%_Be&ZB_9G;aB$4BTv zsi{KGQj#zE_?$kZiagkq31{l$REYJ;5Fkpx6TM1)K+5HOtTr^}qWn1^c$aFVi>C}sIuiq0gLnEe{OmJ_)^CHDX&v=VFe%Ou$BOcP~3p-k>K3uO_@DiJNxRb_Krf}d? zFsi))V65)hLGZz|oTk$7D~KU#5u^bMtbJU1JEA^giwLL zt8&aLZG)+yjF`#Xp@ZHVytzWJn4!+rE2zcOsc#b(BbW)zi>}xS-@MC-*%i|gnf0&P zAPNwgjv-$&NGTX`0OBRF3y)Hr`YJ48JtFTr_cS`@RJrt?xkD8fC${|`45vJu^&b1n zv$$LA{7j^VY=HAJ6DopzBL+?_K%5~2>Y?Fa5`$$J_Aro`azlHMlpD+{1kdm0R!OVW z8h`O~G5-K!ggyX6EWuFXQbF!qm_J$g9)#b}-;h+e>ggU^o(lu@FBb9WHYG1xq5SAC z(Hi&Wj3D%Xk4))`jLVyP3|UCGDNx)uHo=&hOi6jcEh8<)pUONpd3B9;8S zLt}e}N>9TfxTXSe33&C*K~Q6f;)^8q>Q?jV%zZ1qKP)qG`w>)bV@s!2a&z+oVk0lO zLUZ_liBn0j%*c$pReJo&cNSB}qZ)th&J&nSLNex68#wgJVJpXMr_(6=Pu$dj4AeZu zH5cYFEPKD`kKdXYHxA`UDprxqJV5qyg)hJ)i z;Z_+#xyqxv^*P~$K-uw$*s|;dH7uwKK_lr?^RQFxe&M6iy%}~!2~Z{`o89dc^p2Ib zGj_zhw8~j3pdhodYq=*E@JdLwwY8V&qaT>p`93CwsrxY$mbms@Be=hU{-LiA@-qrK zjE=f5&r-0-yWCH72jK||(2vf6uDBrU$9Vac615RfJ4V$jJaDDnEcJL08 zF{`nvmk(3Z*FUtQ*gY4aNP3LjGHNPTG0f5tVTmQKB;n{#7!r6HRzA)nTR4)&t|SOH z#$i(JIH4*YQDgb6Tbh^PU!OxB)#By?fL0c6V2#JGk~5z}>AW=r_VhDrM#pd~{tV1S z$Iz8eq?2ac`GY5Zs|J6|=6*>p;~ws&{{Z~dH64<@L_QGwqE|AfxGHx5&oeNUsqF{g zi(`pWk9fdLPrXoMw0Z&5TogYnnd#d3CR9pN?T2R?-X;Le#;g9*LTUhhSP@mEXm_iR z`Ng9147#em<4n6#uHPwjFJAJQ?q9SZt5N|pUAI8q6KGN|yBw^7dCR`^%KKydu~iHyiQyxcZGz8=U6pu$8Sq5ZHEZ9AxuPqpEgx_`X_BTi;#uQ} zOKAwha;Rs*NO|!5Zg$gH37@_Go^wHxJYlAPN?CrYIfz^rDroTL9)NRy|0){8A!l` zU}hiX%p5+1%_m3Hu-wn1txSi}?h8<|T;HL`p(%+GC95ezN97KE@Ce<9b2roN;$n5> z^gRVPgWgb;n6(^2qr-cSxGOv`N6MMsUpw*a!|s-E_4qsQR{hP7 zOG(2wdT-?krS8eC>H353A;g+-n?Hg$oaYdDSNJA7Cn))hS71lc4fu{>tUnMbZVP;A zf-ZhUtH*Fxfd2py*#m|Tr^L+6<58Z^MVglwxtV-VrUlvc^?GibA?aWE9+l=L?Qw`O z!x7)7#J@}3iwH9hsA6w2KfwW6CtbLMi6GNYTr$0gWzudLMQ5`R)I8>5`UL*~P9r~J zQJ;8_Dyl}{+yR;Tc|=wJ0CN-3tW756t~V0>GJ+-f$B=mw1<_x*q3Wq~C%hAeo|0UB z9ZnBV{1h?!guQ?DQKmCQ7(tR{m;V61Wu9m^iaQHK=1?<&wG|dn?`R!<&uBBl>=f~Q z9%FKsy6ghP0#VN@oyZ+QZ6-X!m21Gck0VrK%1j4(tAG#PC_+}@FlU`hs2L@9p_J#U zvNWwUaYl;g{BtW6!!?F0+01&PyB3?@i0(4cJ7XG4^*tIlGz|=Syhq40pp6GZ=^4$r z%j3|*YWiudO9-}0&9PdkwHi4bVaqQ>)PhzCK(fw?@OVa2=lNKpm8!=#y26eqG0XQj zl+iQ=#m1JvV@G*@ z5kDf8d%H5GGS}d#_%R&$no-ny>%8A7?uSsi{#%#3X+4tSc7I7ku5fiGzO`xkAgOvJ zK9}hhTwa#p)G)1LZ7o7@M(KJkvv%jQBi*w0V+&>sjfcdg-{J|8D>`Z8iP~2)jEqrs zJq^KQ7N27<$qZak&!uZIxY;!lIEOi&B4bgPsKseThF1p9dAMfg;iZMUxO!kdVv@tq zAP+#G@Z0MGby%HOsD z(7&{=`uKotF0c7O#JoPzjN1@?Fk1Myw!ZSC*!{pC@Ko#7^to?wzWo*=#AYposZQ88 z%m?VkB5!y7p1Qp@P2QL4f8ZgPaTDk#WTIc6OT;cQn?1?Axw!KTxpW$33Ecy%!I3F78>h2Kuo%figdLU8&3X^Zd!_7#H1&SCQyTuSej|Dc;4amLGkA#LLmGQOwd8$jpGrKKCi4YzKd_ z6%+=%$Ftg?I9D<981WC9K8#GH%_euUi*{VW4a&v2mjkMUICZYrgU`eRIorEe!66m2 z#gcIY9}D}IOzj-SRbR`~D&Z^eh0a?2Kn*#Rj?onfD~H}o)&A!!sapHm_M&0v%Gu0B zAvmyc7sOrRmYXjU{!5QDp}3tp;O-j0%3Jv=7}fTjFIfAqggpX4DiOwr z4=jA!l6SZtK?ybZOw}#y3X5ys?r*qr1-IB^LRoOUzkgF>Fg#xb9>4WX8*@aZAoQK5 z27ZcpsQ&;7Z}xFn2(6Pqep0di-iP*#;%OO@y-ZBdVuO#)W$eW%0NeinDm;dGe{ttF zz@2gF{{R!XYN^6v&qfvL$%N#OJAsT%HRw|c^tjEZ1QuL>cxj$kE&C6yr>5z$Ts;r` zDtfvSq=3toy#+mJ{vWf@6ja&>c1%l@M?|<1^C^(K{Y;@nIy@|96@~P8g|=msL#McV zma_V0RW}!jT;)nG;t%kcHy#W{D3zDdHvtMCXYl_38k;_n^9RvsiRQt6$^`!arsYpS zLmrrqPvD*$pSuZIh_k5w02lKQ(wRSb^(@F={{T6nX&cny^wz^a-#_Yf%SG;GNgni= zy9TkG#?=>YXCYwIWk#biah%f3rL8-hRyg;UP6E9?-;BgO@IlMlT1su@iEhm!6YV8` zs)&P|Aa91y8p5+t?H~$9>;C{!m#+dKuQ;5;+y2lmxoJ6%7VXvQXSC+ym~I0;ZlYXl zW2ga$3{rqkPu6~6PCPvfB}()jh0wB%St^Uja^-IiFxoD#IJYhvGS7-=Hrnzt4?TLAbjn}&;eU7rbw-Q>wyiyQv{h)vDjY8& zEH?u*BkqAoK~HcfQU=Csj$XWG0pe#L!lM>a@w4oMVj8ue;wzwqI9B~3a>W*5Ex4Xu zh^_oENp~u)WA5)P2JoIi@S}0d-QEHXDLh?)lB9JLk4Fv zGLYggP=_+2z9yp-Sk{n>JVHolPW?>8J8$Y9pp7nv^t||gY^s68H!QQGD-o_PD^*y8 z_IhnDI{JwU%=SU6#^JbtyZi^Pgd?=w4^#Obnm_ju*q_rl)IAAsNU@t@$?5Zg1x%pa zx|>UN>4U4k+?TYdU&aRoU(?K5DiAP$_mvX2494QQ0qq6OyWQsl!eL2?{orr*haqX0h|vnO*FD^#_KA z=1^hxL9b9>V=B*bTmBfg@Ghg;NX~7WJI}B6SkA4h*YHJjSrg>dOWXUx&K)tkF;Xo( zmBwTgO6t^i6wdqo&dZU0~ zyi^vpY-(q#F}4J#B12b8#Q6Mn`GEX!vQC2*xh+{5Ddj9B84YfU(r9%)j_ zVDxlM!ctE>jN$Oi?-RL@QS-RhH1_HYP2-jWRku0AGp{_jhuNC1WO5DiUgeChXH$_y zHOIU*S#GH?oC5a6a$gdfq;Lb?HXMA-TfQTOhH;zug2+%ywfgkh4qIpLXh&1xZg8;_ z*Q|5qGsL;yqfu|sCz1@}Sg}&*!IBPr0?>$jJr6;+aRz~x0YCa7N(enTnA;E4tY&ox z#2<8fj^I~mVlyiDHNTX|aftg%RN8Yd1IMCi;)grFn~A!#rm4Zdc&>lYPCnj-^6C5x zJFO?p62r^=Vy}0n#HK@qeaj2l{-fAt$L0*%mLC`!JqX%a{gLIF?3?G)k3z+nnDiLb zdGzGOja~6ANTl2U0J`>sBQeKJi2D2{%Z~K)D+ji7DN2Js5AEy{$ z8Qv4IiE`|cwZ>6ZHZkbFlQ+D z?+RezF0RXr%%4*!tch!)3z~L}Q!2MwuoCBm7WDXM7M2QavK2=IZ#5fAf~ksorr*>d z^xyae&u%V=uR)?*Y?%}FiZebzL%>|iQ9EnwCabI;S%}Ds#LvXmq}7%d814aPbMAo= z>j;yTF**MLYX1Ny?E#1Qq7ufwCS*$E#q+-LIDEpaILeQ-%sH~LW4F|^H=x^A5AG6< zPezf38&h1$my*ZfpSfx)Kh=nL&HK$2a$)T*CSAPWHwXt+pJfX3?`v8Px|DfW(Vr`i_h^H7G3UlU6B zrlr~YB8sKhTB(l6S~NWbNhR-dZJXj_C|3)OvuFa(o0x&gO-Fnj%5r#5|emtap?@V{{Y$>{{XI;=hS?`GVY;dKPMAZ{7I+q9wEB{Rd370M_QBe zm+`FrCncyaeQNitlK_x7=$`uhB|eywHvI@sNwXd^>B%kbX4qTk(1P}yZW;a!Ou3Y< zV+GJ5x&Ht^uj1*NLFhsM0Kk~+{SvFT9)D7LTl@s^wL^klE+CEZ(~nL`eqk8)Tg9T# zX7}H6$cv-maJE?7FJ2KgCAu1BwJj~ZhzC=FD+)b>n672PRC+UsAlBLWpXOIFJ}1wm z$Hp=|%fuL>#0H)d48Lj?B4K`*ne{(Z`4}8d^8~HRhiTx$7BE;YpQLYTFkW*r#<4tX z&~-%39i0{(dOH(#9kGieDS?4&Rm>j3N zYb@fwLL~RftPVHsCRY+yqP$DJzL<;*FGavb(3Nl zMnD6C8omjQ{c5f<+sro84Q|{(R0A5II`x(mJHLto*QwrM?l%TY^o#*{R}0 z{Y;rQzlh7aTOny`2d1S$%CL(MDUeO(NAiwl8BoOo4@BHpZ`+#tBEK6fo!`;)s9e5L z6gMl}5x(L^e8D$Qu?I+bjXqUThu#%d4|#2Xc7n=M6Q6UH^9(hdseV!|S*n~- z!@S3BSfg#rl)m!5FCMS1kcXwDS6W3UR%gU}Gh|+u!!hXkQbw^ZUDT&?%Q%!^OjDmh zPJIY^aYG4qW9^lw^x_?M@!mhn&!T)G2$@)0G~4<)xQy=g|}LSt4d$EyfXdEdx`_hCYVwy z%=$WCNneTg>2l?%oxu@FiKOB5Vpd{gAGtvoKLyPa-jn=pnWw1#0K(zF@YKFYbVtvo z=AdQAt|#NilCv;OD&|tSXR8kog+?(-m*pP!o#>3hj;+H(Emv1tDQo4Bc|;>wP?6ds81BZiuZcAdzVsb|3v=YK>CdJm`v%kDENyJJMP zb$?R391wPQ{pGc0G1m`DU`o|*t@Djbagx2-fi()g*^MZxQ^eBA560h0@o}(^pY5-L3)f9Ycpjtg}b>W^%>s?z0cHen(KLa+#IvJ3^_o zjNPz;3#&_ozftHxc%1nk^8f~zLG$}c{{ZVOo0=YjyFAe0!)ZtJ25nnHx-h_YuIS5$ zaq=!Fd8*XNlO=F%!%&3wO^g~^QFNNV*_iF!%!@flr#a`kdp~lj?rcpi_q)VsCq76n zV-S%=S>j^I>vc>ry3k>|O~*{U)zxl`)k?dWiG=B=Y4a)z`(hutb)6N=`E3rel{EhV z?K%Eq+_uqQFuExU@b83in}0;&1T6KHK8EEdkFZ2l=)Hur8of(m12cC7@Qf=T@l%b< znqO3Rl2DH%cw!R@2glX*S>--)3l2Rk%%UV7otW+_SK&m&QY;oNcObU?y+CAuT*l!< zNfY4tg*!+QtGSl3?=0e}mg+F0JNJTBM6-`+-uzBQe6Oa{4PE~LGcyR+iL~z(#NIcy zW#|qk5!5a&C&YcGE>Ua<+BXoz<^uML9G}4TjS-YHTj1hhEU07E`G&PBEn-%$o0~!t z%l4$yoc#`7g#*gcR^-xr)JNa@CE{S>J8skMF=6)gu0FhHBqGhVAyTHI2L~6K%x-zF zA+NaBq_f$H^9BW;XY@S*@hRTBkN+v-9EMg(_A;Z!fEPnK{MqVbLPq4w5&kVjVzxLqyoV(Uz+Mx_h4$Ww$Swb2w#08%7KudPkyNf^1>I16M!SC>s<&$-2@L zPGW|DeIm*tw#wethLp<1W|lV>!d0SwfvQpsi6@dAonGeXJZ3idkx@UW(6OmOpO#*b zYdF3ysA;Jw`6p5E7cHW9H=MW#w`->0_NA-Xt0nV#g1KlZK+;3VnwBPwxV?=KMx96l zjY0NT7me`{0tVVk=0mB6c`TN{?vH6VR*~yzWTu;xZU)p*#uhhg0k$-)CiIxP^rgo+z`mc_QqX0yVOEg1CY{T@qM3MwF6_Kby zDWa6)@7Xio5immhOMq~Efv7x- z?{%0dD^~oLTGNI5gFLEUP=Vc*)t}}nYT=m_H&?u4T%ovaFNE1U`%Fl1Fz3|5gTLl- zIUlHhf9lj_td`z$F@nzJ0+5vmhq3-Brd)LULRXVtsJzBl{J}}hFN#8YE0I={w(w(=<_s#(Ek9!qp$n!riQ&;awYH5;LFdVemPoA9@A7-o{TS~Qnv#d zK)He23)(@)*~Gwyx}Xh^0)Z>od$N+S0N-mE43XJih#&K2^Fubwhcp%aO{44hh8{P% zMF2Q8#sV436$BPNtlWF@CIeS_{mSgK#%Twzk6^>02+M~Pa%~3&40-JMgQ`|i*^NI8 z^XMzvV9oykbsfx8pRmMdZF63TGgZX+LlpjDn#u;7ejIQSxdl0*!#w8mU z`G=YB3TUqq>4KZydm#QyASz;yXchGkx;|!52QyA1aDZE*P#EBblY$Jwdym8r=?I2V z%%eM~7p)JLt+qTea*G4LEQ34v46vzr0?pRcri9tCP7)N^ zrlChMmfxweh4+DaYboTpc>Zg!seahJl9&&{wNg2IV~`o=2;1{H&(i~=^BK*H9x08` zS9LDy>6Y?`hoY3b|Li zGD64y00L}?B}?hALtXO)yQxrv#IJO3LH_^fkSF~d6$~Osf z(m9J^shYIaZ!~`De`K%)_eody5cLS?fbasU3)IDg7U~$6J*QrTa~GLUc&Wx5M)NY| zhTX)Ky~oDSyI}tSn>7hnGFG;S=P_b!9jUqP>cIp?3%|!Ly}w^1{{W{^{jbz@tW*eP z@0cnbLhSqWyGoP!MFiZxGR|eO>Y`k349}p-v3fJlj z;WwO}3}D7^K5~?d4wg}vywsPf;I(|t0P`PVTu~Q+l&pji{%FRh!5WCz;U5x`dHbL| zx6EFCc4nNuBU}hLid7ZVqE!}6goXInPljO2li&&zWR^XX1^2n1b*XTAdLi8c`I`_O z;CU67%(xRr0Kn{{U;3{inPdyR63+@&nE zDvxNkSzvXBQ$)W9>O3$*B6ox(Zhy%DNoxLQ{6KM3qXGiu%I5}ISI_`P$a@{kk5Cj2 zN5n0|vA`uHTU496k7?kkc8~5606k2dzKHwFvq$PSV zBL+b_bN<*>q1y6->LHFn4olihRHIk15!@Sjjxp#vK=TO45yy#{hIwuQFG`kb{W$ha zK8NX?36y8FQ6%BDb_AmLAA1v=siN@{f8r7IGhz+UBg*D>54XSO6q%oJY) zY3TB1mE1~qC~66`yPM`;k{Z&IW?eI6iy zbP?DiQ*pGvO=DhW1Xx#rv=OKZp>IYqtGKO z#KbGVOY;UZqnUOjr$`E`?faBQHC_*SN{3_F*#e2!)psi_uhgB(tB}$kg|q4mEgEkn z?p)kyAC_|qI4`E9XYdsZ`#`rVyi2KZj6w`&*{_K4`8)HN_(T^Dqhhc&_#hx{oMPCQ z`@hherE&Dm+;3GE7^RlqL`;V`nXhH~iU_>v@daP>QHbN-Gnllrl`979U$i_nd(6tY zRUNQOTgYtYgV%t2KMYFSdcpYZ5PeJVg=T}xBMGuOIMdrZ#555U8L(1#}l%~dF`9;Mi? zsZ4_PaH17UR*c4sff_u_jiq^qTi}Rv_Y_*Jw_))EgLaHQW=5th>wqx@YgcBAj^NE# zQtrawm^~k$mKVFrcQ6!U4UISIHN;acps!M~=sm-P!cr3q)JIZ?YY=UVqUIi%ZsiZ( zrsuB@sKfYQ@u`m}&xulSKBh=|WXI7LQPDOuBBjEW&0{sWfb{1ZCce9a7G^LIe+;!) zXc?5N$Umt~M(Lrq5#{UB#!;C>{E?%WpBSKlZkysWRrh1m!u@@SoxeBcodVQu`2t;$@ta2AxU} z60Q?4WlI9(Wtfjn4AZw5==Y1I#4M|Gc0lLEu3(1^np(tWOBzG4%IEu~-dg5^G&*mj zvo!T>Xh$GNePu{_eD$rZWNDrw#FT_CqQ77`uQ#+jrscBx0SzNWQimtMd08-8MjSOW zxa)59=2^{(%B6Dxtk`N@#EU70TbEKXQaQy+G&6j_xb)kxJ12%$SS1ONmy6%TQ*xSY z?r(0x=)D}uig4mjeo$J3D+2U(i#S_FVlwZTZw%`yE7ri?w@|-wHA)RYqpSYX`IWf1 z0ojd_xRc66!r|WHVEW{pu$OrXY_oq7je0k^WA@Yx>18^=fbEo3s$qxp2Dw48MmU}( zC!m8aD@E_rpsH$7E6vS&GnsWQvj@Za;d9UU+~@L!^)PkB>(KT`o}v+n>_T6e@ASOE-wSEEw>3#bgR2F?$cp`2vJ@6bk(wYncy=yInN zCMNEV^9q|7XpFMh3u_uMQG2tcvsDry3olv)XEs)7@Wp}obfCfeL?VhCk) zF@tZ+_rQLjw3P^OZ!-2{HHuSfXEBNeGmhRnhIOVJzJexWhf`*~0aJ3NOsBpl?t8rr zB@nxsoyDv`s8!8#=)P0mFiW|SFB0HYT(|Kk6x-Tp-u9zyK!YecPKQ1jnaQLZeUbFV z#d>NDg+~@`sgzNmEd|`WmG_l0S5n_k)g2ja7>h*|P{&rxl(-^myi=)3fkZI*&94w7 z7T*05Tq22R%9se&E^On`(sSv4Wz8m|G8uwg9-$#q&U?4%qxi%B0G=nx$lSp^M*|RI zx9M^4^o&Nzf#GTRDWq5EOJ)XX4?v8+P5%Ih$p%8LB70wT7E8u)Rp_+zSivr2pvyR! zw15{8^aec_xbZcEFx7^xDv@S{z6?Y44o}jImBCaM8d|A?!wp^P90qGqspCFseyl6bsgc!5Q~j)h(0A(61n=rH2lwr@jfD{Oi1|5 z1*m}n!MpHcjjc=}#)*f?uq>(hZYX4G1DHS8UZ}v89H)_{DbWm|yZktM0-1CO_cn!j0RI3Xf@XnqKWr-~Rvz>6bl;3Rj}JY13-&?^2mnkjI zZZmY0qfy-?3U2c)S%wulHE-PP{ zR0FHP*$AA=Zdtjh%&LS>k~)xAxWJj}Q#rzt*u4g!6}f(*hBnT#2x=rR@DW`Z|Gn+ zv**(@!xFijGSquTk3r^Sn3m=_i&HbHaARvIQr9rS?Ee6UvH0}c_?Hjj{{RMKHAWYM)xJ$j!Hor?gG55&r<2^np={*qmG{w%5d^ z5Q2-|SfU|<66|^-1y>KV5i=^V!UPe96soFaAH@}w2x7zi%=vopHmVg0QkytgIM?QG z+VM%vb2YGpU&_&(_TL+p@RaDpnpb;DmZ82zHn=YkFQOz<-SvnZ9hFCTy7))7+|M`< z<}UiXn@rTwvF2id7Ih9ep5~sg&-f!RfG-jBF?|u@!7;kH(1hK6r&nGGwq|z_(R>#u zZXoa0+I1`hv_!>`!C2mvPBS!k15h6l)@yRkqu>oANjtWOn5eita#qjnD7Nb@w;XG@ zphZnN99?dgYo_VA$C^vqKEYCF!C#Pcr{Z&U(;g#-S8}$T%!#+ApKz%lpy<8!h2|S} zEE6d&9~8tNE4&_nqjrz-#~jkLn~J2zKe+WgGKro2(;2VwVl9qVG4`fI5A#dQmm19v zhGEpER$_e^-~FgA17i3^4+Sr&mpQ$-Dq%#UoN>8dj7GVmUx`5@d+j`2#mm#)cPZTP zmJy5yUy7D#gH~A+ak~EF75H3Tz5-Aa+QP z8J=0@C7sN6%cQuI6zfx}WzvpbluqdG&BlKLc(v?CyS2R5+T2i?Qfv$($Fw4A zBzNlI9*RSU;DWUa%XbybA*d2*!>k^`6PiT%c_V8NrE2^}+`!B6mD1=o(GTs6Yj8As z#?!=t?8^MiRpHb^y~?NZyaW_i649W0C`WsjsbwkgF*poym`jW71TourECdv}Ui&Vw z9hLt8akvVPqaAux)T5Rlg6c79C#Vpv z9L$sHyc}OLi}#fGC>e|Be-qK0YFOS$#>4~{OH99StEailZ;`Y5gVCeXh=&uOLR37( z29_-Nm1l;v!w!@iS+~t7B`KG4TcV^+Dg?&{^Ow&C4Yk{Fa*Ui-k^-qGZ(q5 z>MUGdt2p+baF{`$@%lfVANh>`0P_-qGg|KwrT+i|l8D!EhQ3mc*vRz`9@F8R@tXol zbQ9W@n97Deo-p>63<6Qk$j)WE|pJ z7x|SeP{h@Lh=4Aeo2M{16NXY!t}#g>>j&*J?@460=Hcv4v6J(27VXv(+j%l!=fsgo zbJ>nciGIFis0>)4Dr?8yUz9OKQBwTIFj)W?^sjX6ZX5<7T@&JS6UJTQTFmG^R{_8W zefa#q4F}!tE7WFaTMctw9n0#TBj(-8_bbo&d5SHo+K54wq8$*~5nM)8XvBI;8iURh z);VHoth8=H%IbMS+xmpd797iC?9IW1VUx%XOl7kqbLae^rEnPBWnVKejTu6{{m4e? ztjy0KVz|P$$7-0M_MK}|n%WPVFKec&(5nUa_Laj7^9U+V@&5pbg~AJ*sx8;$ zEO@h}d0{O=4~cjsPl(DIxWitCWd!${;$u?7{{W*hTlti% z9O`bgT(p#sPfXh4J8klpm(vs~F`CD9DJ&-kpmi*Q+3|%3bh$G8W81J;9xrDD#@d%J8_mr%sI*1BC<|C9f z{9#?as$V~8p3&whd7-!GfP{|Bd#I(9!mR~gsdrA9&Y!H`(=lhvfYKkR2bpeSm2BxK zV9QrNUqdBwe9Ff6-0@eYZeI{9(L73lcPtLrGLviRdwm#7^XR{O{S%rV{QEunia4sD zVxXDtKgDN)H5@XpP>!fhVyYC1|#l7gdk0G-flCgWx75j>Y$v9?|??xiVT}7(KK`A8%3OG3!Eq z@d(P5HZC*Gb3e?c=ph9e?35D_hbjAn@znbxuW5!{Ty)-1&Hn%|(-=C572*>)yX{La zx3v`uLivDhZeSCFb+0@_y#X_be%)U&AS+zKMfeGK`%Cc(I-73CiFGPBpj2afg{o_b zwFyzl=&3wEQw&_P>+uf#NB#ln1F6QdbP+GVeE$H6P9g6t&LzaG?t7+ssEp<@xGud3 zF6QMu&3XncL`+L+pelSqGt0(mpjjP3a@+4UrCl9AQw^;@VqNHIE6`y!^jk8Ryq}n+ zL9~9L{{WXvI2Hc@$}&s}$C&=<{U(oZLfcrzR}=0_f!)p~OuB+`+`i(>XGmkv#oRAZ z!MTUHov17Roce6~?1_x$JX8I@kM8g4vzm1?f={UXR{&R24ob*-^JYAO79#ZmDb17fU# z%LkXgIiKdGim%ArUSAPthM2=~PLl3tkF7%5d=RDfil-5qO>+PM*QH9A=7QkE-Y*q8 zYI0KD&vbhwI!o}3XC_e?pDJu{kOFO+A%(j@m9MZyyv)mdBCf>NlRE07S`J8hMYsxz zW_ykL>MH<-5w$}gRz{42g0#9Mg9?#D@lt#lT6I%5^bb5-Pq9OZbJiMCH8 zRRZ~no5DS=94?+vvkK3{A&wRDhAYd&xRKKnKb#NL7!9T=Z}BWE)Y1&*=T`cbGqI2F z%0K0)MZ1rip5RNm`c##vX;GNQ{{XuYgtifkO=bN{vM;|ojE(J%vVWO_t6!%=8o+Ui zi%$nV?NK5z?-l2AxtZBAZG=>1R+BM>$1?oGSktdcJFBn4Wzk+@w-90OZT!eV1Yzk+ zW173+757So&~@po#BTi)#OiYiSIj*LSe|ZF%&0)WX_lb@o0PDhTvt(!rs#SHm#bp^ z%Xf%eDq-}PV{!Jfg%qUU*H@-W$BBhX3QvgKOfc?W^DR@rejxZ*u0>fYu`c+YfD^Dk zQE!h$ib%0@bJ`(*5ll@CMn3SwuQJZ&qOS20_gJV)G1d>SPF}ku3qk_@pX<>70Lqm% zi}g|8GcREgwQd*$I6X~zA(`~iE?s3GNzFYAUYeVX!5rMf0|5x<7bLt*=67vA7^9!q ziyNW)JwqOff@}B88iR|8b2b2dgt1Z5?lQ}lP6cxmDYUqr{{Td|sd2=`{Y3`K{7w0o z23Vd6R%zT3Lo?kog&YPL3dlxVRCNNYOyM==EqZlp(VIo+3H5{f-`61b~`kNmQ#Fj(AI?iC{p*|BZMY3UV zZP(4lPym}jy-)WcEHO@+m&6w+K_K3IO*TC(6t;2g=n{thB`R+J0N_0X=@y7pP|RH5BnuFgcsJ3!8lo^x%t> z#KJM&<1;JL2{w8Vf-%BhnA9t{Wj*qvI7b_nbKQ^U)1UA)Zuhh3CI0{b{tlp3Dn66b!>(F0D<|U>zGK=YXg-3hOt^Ls2Fzreng@_qt zDyA4}QGgMYohx$NgvCt~_8uL~_t`TpEXoqHIMvc=GK&X~Ll7pQi^k;+h!ylIcf6>6 zDRx_lYy393e^Du#y_$BLPIwxNIu<+3()9V>Og z7n-G6fm2R;DkXdt#Uye-gJaHOSFkV4AM-UTz_~%2BE9*B4kcCW0&;7coTAiNbxVSi7^Ntk+_@sKfr`NA?T+M z;9n72UgD8-`YvWjGSFiOv?DGyCsK;s)VQR$rNUg|T}-C47D;YPLHujcm-$0;cmfBQ z=-|H+h22okJ->_7W{l_SwC-i?Aow4O3ddV!URjT8{B;(F6Y)Pp3-X(F1r%mr=lVrO z_bxXcprQb?Kuo{pD4K?eaL%Cdmkqv{hUJE96J}y-u4VIY(Q@>t?u0xPS7Bek{zs!J z-bh@`{k+ga#(B7*>dV#~O5osnFGz(N%*RB*=(Q~d;fS_6PB9mmf>hfPNb=RVLD}%j zyMreKGTWMF1Jt^ww7~?TFt~v8EWFCbdowdC`inUg7#{Ns2tWua^C@F%f@v|u@xP9F z^_!aON`^oBna?aCU36uKa636wLRJck@WT!$6|1L40JlY6>hbvWe6tJ#?eTt*XXJMP z!mRenFjWtGDptpHQvS@ky%{_vp-?3``1BKX{1MEJzUs<7pdM0QVP7ar4twhJERIS& zg+nOfQHKa0D>t3~2U3M3*??oDHGX|67l_{U+tU}P5Pk|di6}Y6ahduU!NGF_E)Hd- z(od2az!)o*>4DcY`I$|A)c~wjD%1ca1(&-bw^5XF5)@SSmliQ| zn4Hr=%(GaRfcQoem6bxurRmfzeWuUyArC<% za|v)^IF&7O+1gZAW>YgP)(^^KV}>39=*=&fP24tJhubk{0GRvF<|?wQ(gvRXnlo3| zZ%Q9$`Ir9yp8_(ik#Cl!Je5~3&0F%!Da9+>l41u@ecpx)BXUo_rsfHbOt)l{g5~0a>LSNDe(5i2qNKWF zi!XRzndpXuuj3Z0G8>;`EpSAY#8Rbb#D}~}TnTW!Snb&Dh07Ii>vGntG2$DOT<~3PNI=n>F~M-u=5cst=V|5?thel*e=;M| zPcp{HL`9CTcQKOMxpTjXi00H>5Vb10%uNL6&>{c9HtEH?W9}uF11m1IrSMJ}0 zB_)`-tKeC+XH&;YV8p<=n>s$^i=2>*MS^!JE@ZBoap*a;t!p1SYd{qT$kE6S$y9*z zz=K?GH(8&Dmz}5llW>M~kF>rrDf0y#=#aTmmH7c3q2&C|6|F@f)g@2K%$wF2T&v{q zR`Z{!aNHiceNIjB1yzI(Lrmtkn0v#F28ZMfSGruy>n3$Z|Fe*5) zE^tCpQp>n5q0@5OSTJ&^rA-$-tn=ykgYAn=PDCXza-9DF0uX`fSx4+qExXLurFn$* zWyjLz)Tnhg>3Ynp`d(o@(}cdIo{4xR<`i2$Fq+VRZ02#5qWgr_YB#^ojhW_os2`O7 z0JZ-B>y_zf&7R-I{{U~?^3=*b=lhVBUl5YKS%WBL?K3ID zR+$3sUt`W8yIzO~1Dbi8;Y}#6Wf%d~<~I+TD6s~cfXK33aD#4m7aM;H7{E(ZL*^R! zGd;)KU~iU)5wYSlsR?6O!>IoNzmBv){`j21PE!3!pgN8ExOl~0=slTg$1vM;mbgl( zg2XX#j;5ZMGY8D4a<1_XpOOubZlIRb+^~3M3g1}3$m0TfE zuR{e^%erMD{i0-Qpx=lq+a-RCEk7s-1u>2YKVPBUlO*> z^)FbXsPWV*xQcP;X8jk`vZ|p;xV1cv(*ekD<^ZX0@-f?bO<&`G$cOOxxg3RDtvjgt z49&4Jmp)+3^8_01{qgEr;>j$ag2_TR#AaQdn?eQ`3Ym#WrDr_FYHtPo38%DF{kny9 zKpGVbYzxfHLofN3ED~RTxD~sO{2Go~+#Hio7$u?mgXI@4V3xArgA-@8TU=@@)xxm{ zhHj(tD1_;zkBC;UzFVjj&Tuu&vjs}^Ttg?Li(|GQXmu6wh*%Gu<{L%)LY0B}O{u-^ zUr8J)BWR8(x#Ov_`C%jGvJey>yvy+nCp=Pt{mKy$!LFl9dTUTVb5&91+IiKV*lG!qMw9LRkp?4S=mR}QYAjZez)BN~j5%tW_|J$ur~A`j0ge7>kafFLA6vdI!?- zdR${N;we*89ZKFIseU~J8hyy`2Fd>bE4W85pgxZoT*i9E0?t|g0F&Nn7d3|Q_3;o| zSzDHS{{XoiZL9f??f(FRcOk{P#}q-r6_MY+7#bQ;#KFW)liaA@qmEUI*Djfz3dA2U zH7=m%P|2ukGkihr<)ZRBmvF-|o_``2Km0FG+5Z6G`G$wVxENj~+*%k2dOnmxG1J!* zAd04UOxaq+QC?$MnSpC^N(Qen8sY%72(-lxt}|zK4b4lKOV-=IrI?3_oS~~1G7Bt^ znx081U&#(KUI|AJ_*E>8T&R`5%*^{sDDe&%gygY89ukv^j3K|Z5|>CmaUi8Tx{Eg$ z4*M8r>OSq%HO8?|sSaS!J|Fgub`x5XKz`s~igo5ypmzzo$|aFL4Mwa8+*874Q3pkm ztgm?A`hhmgY?vh=e9T{XTJJ4ta+E&t!HHP{ zDParC2dlv~j2%D(t|FGSC!D{9#(BR&HpM=HI&P&g%U^QH23U$)4*edPP-U^JfJ=lL zR+xI1Rn0UyNZU)^3u^7^5UDaO!<^aQ54_WzpZKu{=x_fW+{}oENJdKBOwQCeG#1 zs@Z*`E64@(iBj_bFJjK33R8!Ht|0aVi+zdY_^Ko{iD|;xZlw{Tgd~CCiCAXKk-{>! z&8AK*pW2y64Dd_1;a1lSk$N)o9~?1alu z0ls^ML42YN0|v5(w6=%hi;vV6Px>lwOv20yn8BllUe{d597heAQ6FS*x}%1Iqfc-s zN$xulp>MBFqz~uOOu99d0a=XRHgb0mec+?ym!8>m{mf&wpnf3#0CaxQwV8!N3qA*R z+CNd;&Z7fx+&ig!?3YP^PY+D`GibmWO<5id+b zGL+QLCT+tOX3Qdb_YXtf!zOUS7I z0C5zUE+$+u3ig^PnZZ4q5E=alFXo{nbFM?)4?*ImJLrb8O=9|mFvi@oP75r1F%7Vs z#g?$?F%cJ;b4(S(bH*Tq`IK2)pth4x!ce0ed4Tr|Pb&&WVYx^N#tC$dAMG1M(1vF- zD&UyS!{^cVO1Y@|LPldXShX8&Zw}8mVinFdEMj4ZTkUsj-{tDzQC|Dq+`qpW#RTSa zcp##f+|-QDWQmrR*O*=o7=frUU5nhif?p7eXRJ!2QCrO_KX*>)_W+dx`A3Ub?3yC4*Tk{^}E%gbp?dhpMJN4Eb zL1F&@bpubCi*k&9W?y#xrw~>CiCm6an0qtyL0jm`oskVdL5S;UtKwSnG3<8CaOM?6 zUlR3f({%#pa5MEC#d))6x!n_A!o%V#U8m>&00{nPrxK@uuYn$=!w8WjtmbWrM8#(b zo=y+M-HsMzrfKmVBQNkU7tBrWC$N@D!5Q7l!aRw7p8jP}hg*cMZX%z{G-?*CZmflD z34OVpGsiokq8*DZ`^CUkAXD`{?>dzb%^6iLS(Mf%0yQfyF-RdRiIEdX%oezH0H*To z{*#DQsT+YG(H{WHj1THCV2XekU?$}e!1F8V_CzwOUI=1kWAQhS z;hImDP{Wuqper`VIOm9({Xsd0Z=~8#Oxof#Uu1cv%ZalSeUm_3Y*q2pYbgk5cui@{ z@Q0k)m_rc*x#a~`%D928Of>2+TNJ1##Gcresf@f;{p`Rto8!qtx z-K(fJ@Tazi{VaJUy-+WI=q6N0Yf&{x`UD8?;2o3^y!T0;a_ zWJIEx)M|&EGdbTlYvC2Tv>%i<?Nm8m2M)`Y>D{62B1yIVLieqwO7Es^1foXKiesi2N}KcFdGkNOEE^&5c4NIFGvm z%*I+_-lw*qShx=?OmVrlhGVg@DY`CRMh++U{{UW>yv@Ui(rE4u->3ss0DEe4h{{2U zsd(_G#k zsYJT|xukYq%v*eZ0V}7bq;&PtIF7lcd=lZhCu_|WG=tKc?gEGs9wfe#6st>fgeVOllKqf*I!OiYq#cyJP8Q5%*bW_ez&1};}lA-oSr8S2b+*wj{p zcNR{|z(_#F$F*xC;hW^|SzKur9Huub zmHrY5Nx)3?;07G26nx7`d6vmy0OJl^6|kv|iCT3Y8kNvXQ%cK1P{53p%&bK-G4EN$ zNSz3{)MY;N5|6xeVR6=TJe3bPNry70Ny{yqf(57rx?=-_jenFINR|fElvu{0>+Xa~ z>o%1(fjTn|o7#8F64PuaQ7o-XdOo640V(Z-xvxXhxejdbZq9w@JS-YE9`t~(YZ348 z-Z&kl@h$;ird&Ve0=p`Q91zuZx?}mdMJ@9Xff=Y4SJ;=lYgbBf8l@Ynbu<`0Tg2i$ ztkg3oE7Ua!v^z-Q7F5=+WTYDU!f!e!i)&QfI71rjtbwRO-PS7C%n%~Dv?gMq#aMFl zEaM9-W#VKmese5Ipe-wcd6k3LP9GCc)%GUb8-jZ9uenk{`eW+OYxIH`Ge%&fyw;K!dpMz7O8l`}fu>zN0)r!m@b z=;HqX@rk+AF7gx+-|6G}oBDB%k4MlkaEfeYn7sQh`wSikwjMw}ljfF-00oN?;^ z0OR6ZOiVn=7gFJT$3Wb&)WD>;io_a*IfklT!Z6;WY%afZ7wnd-O3U=n{{YbbA6AWU zUJ)0$nITNty$iY4Af@BlD+n0RQoA;Osd&rPzzd5c0Q=OhxsC{hDB@ttL#bB*%nh55 z5t&AOa0)g*&KMD2wCN%h#D$_jGdver6Cd zgQ2yI8QBi7tw0rDi1i*UFhDH^2hNr5h*OO2A=M%RfIj2m`-*?{DX4*k(FLl#qg*08 znM35C)C!-HHis!fyh8CzN=lXKsMCo{e^VzVdq!_XOGbdlWS&SJ%TZ786)V!1x|Avj zY*}v5-XmLS7e{o!rlMtLTaTu+ZsIo2aJrq|;qzkU2wS8dxUHC-DPd`PJk8fe7i_VK zkq93lBZw6EAse1(sexv1C+=81FN`>YqdgI-9q%h%C*DzlXpYTnHz+Igl#R9g!cm-N zGn45Vl7x&xsh6ee@jcS0dD6zy974iuC2j&Hr~qGio>W_&wdk%? zE4!4sLPj7VN0@u`we`Z@(S{{8#!sncM&4r}Ek4irP6d<`Xz!lQmkU?n-gm}X^AaR< zX-|$kMBnBCj0t;5a2NX~rPmP;eWmeXWX8L$>+=3K%toHb2w z^fx*5HT*|ib-#&b;?jsx{{S;{{(ot-Cm87Tbq%92N-&{;{{WRezd`OJ5vQ5kG}H=ZS-xYSz0U!kshBX*M3!>ICiMh{1S~<^DvVFc*3{Lq|+U`^E+6Yrr^*@C|Q)|S#kJE+;}ms4~QCp82VtCQ5T{BOv+B& z$_q6e%QAGG<`Z6DoPScO!^I;QK4^-Gebs$S7#IF~Ij#Hciw0eEqC=kre*PPxd7gj2umvsKu14LpljsQ|Ywf(FNJ*a^@vYG`(Vf_D>hy3xC=h zX)kXmzyNKY%qo;I^z>c8WqK@g7)+?~KgbvrB?S)rPDiTote+92%`0npgvNm_NcfBm z&fAQmcZpDXK>>BP#gz`zG?7hqtG5fTNT=fANcJ#-y>lv-XdFax2Xc}35LoN2k8&Fq z_RONB7f+ZqHpfBpGNF^(w0n%>2zF}ks60g%mY|5*k?$&$Dp77Dg-wu9GFi<49)_)K5%J?iqv}ZTkXY z+dgbcA4-pNEgNDurK;V<`;K9Emfgx^rQMy%cZ$xeSx>0d?xTTt;wQY0Vp#y<3^xH& zYYe~m%vIN15O$vd*n?q+gyY5*oU!$gGMf7DsF)A#$+Qi*eFbns-lyRr)i+n>H_ulYPd~FUfn$|H+d78+ z&uV8MMiOIxl^K?C{x3j30qFk#Qn-))X}?AWbeI~TU{Nni z)W~xxh#@@8GXql%!jyn-GiG)sQPyq!I4B+uP7nV81CrwrX>qxUFb|`PIK*Ka49v=x zmcl*Z^#a?8dkOm`3E~CsnQ~ah?qCd^LhTIlms3T=yxi2|n9pW&maNT)E1=)PGV}0D zt=Ty0RJ}robLJQKb5f%Ih+6lV0)|7^QAir-{^w&*Ge;4dEHNrRQRq&FR9$-^TNIQj zCT;pesbnp<7S1BAX2`Y_BZ|dCq|&!fIp$&WHPps`f?%*tg10rB7a9>gB_-kPoJaAf z1q0$*!+zv;n_$ln87(OZ9wtag@F+kwa}^D?d(j%7nA?haEdp3X@U9`Q$xT*!Ld|6? zA1ptR94mJ&kPJji`MATA?i*!KI2)_WOwN_^5GJJ$C^WDxrHjwHHY1l!+e zSCXlDW_PZ^I{C0Z0}}HGEi0*&H;wem3ilo$jO0#2QW=rFMze=Z05zkH5brr@t{B+G zEhQq@@d4%Hr;B`fGL9Lq6Alc@SoFwU6py`@<@m;A0ceOJVXsEjXD|ZoZ0{ z7MLD!Em>Nt-3W!6)U@=r`59p@s_Clc7ocI%7F#d(>q?0@%`cQY>-^h@}kGv+pCYB0rSa^^9l9;M1r91I*Dn*^b8Vk-rDVx^Ua zswsQS`JU)PksgIFFhpURhnbLLZYEQxZ~p-3^=}?#kYXKtGj(vh5A&7osrr^)UzoXL zZUq!IMVxco3H{1du{4gbO z_`Jh9xPtf0yhRq)9Lxrw?O-u_{qWY=j2VDtmqULsra1F~30#V84wl(y0)3GwYG}_f zPLdXFiCXs!lX23DutUo3Al#tQa_+!{THYv zgyk{)Mw<{egza5UZmx|*GoI3xH4kZLIz`~5!e53rs`&0Z58_{%iR?tYBkY-R`IkIC zU|tvpNov9%*qbm^JoL&H`9Z*zyi9NGCH0B)fc_LkZ#Nr?P-4JkoBB^Od&X=ZmIT~b z93`_vcTyqD#x9`mI}z-jdFGz@dCVe9qWTZq6e3v*O=$Wf_GD-7Iw74@cX644?aUx5 zVSb(9z%%o^n3H6CGJ_{7+{EC~@o^{?<~CX+8apgpUl0naEpd4-&L)pAOvg*|#ub;g zW{Xig$M~M@s7nhCf!ZGM8{IPTQJ{{c<2Jq#sE;LFDdymU!Xst_Xb5?#&tKvWyT_5~ zC1b!4S?EfPPeeVRM2g>zz1Az-4k9`9ECZtt$ti|JWb%r>LsaTKdaW3~Q)FCl3h_%{dc%I0L_Jmz= zE?mV*Ys^{naP(orH<`;dIP)CU6WOVnVqBirEf*)Wy%rBx|{>Zfs; zY>ggGz(a$WNqI5JQ(2)f@DI$@j+f<_QvU$r1~S-#R^wA?(vKxSxPU85<{I}c`JK;4 z)5$8QNI!G_r%)a}b@s#tzsJmVlf&Jt3>^`lG%=&;{{UmTd)EZKRH8qrdc?_ux?>cn ztkE!@PfOjBxJDH{!{L)6w+@d{oTKWRKl0hf@FS)=tml=1RR?fhZdZtEp18ck%R==E z!oD6+HQaTCMJ%sv$3dCOJHBNP$l3WI8w~|JY2oP?|N-pM}i&i>Il(du>^az^X z<}Yg;Z4HpTIg507Pm0A+ka7d2}R6l zmMBFo@hW*CQj(zM{2*3MTwjI&vT4DT>XiY@53%^2GCAf^y6+GWsbhhVV))ajpZ=(L)W}`P67>n_^&dvJ)Fy}1%ZL?%SyQ4 zP!g6;K~YBBeX7W^U;I5RS~xqkAr(4B^eF7Iz6%EVK#+9n#RNH=oA))E|o{*xhpQoXO%151Kmx%|_5MFirn*0q* z=;=OCrI1(d2)yPuG2?L^mvbbu5Uw}4#@n9Cj;;f^9k9(r(MAS2HeiW^2c?{9v&;&NFEDRDj6#kk7oeL{?t4qrttqc`q}2)wgv*&gnNIy^Rk=^9 zER~KG zc#K`p`t;6;X_$|IVzyhvEmBEZ)7?$9=a#N)hPps#{bXw0}?;HkA2&bTBDj6S{{XIk#rgv)7tFIu43uT} zxB>>UtV2tyadN{3dBmk;_na-oO8Vl zvGgwYv3jZ=?Wry@oZAoehf$@b)62}|2tlivr$?poBRZab;mbZuv-^(t%IYBM$@dWA zf%uAm8kKdrxa7_nCGeHHS>3V~xn&K}8kk`Ws^i+jvGF|Rz9MPLa)cjFeGs?@qmeNF z72Nlgy6!zpkb6sFEbd+)^O%?ZVoSZjm*!j;^ByxamwZah+!ed1d)&Lf6GC#p-1&sK zC_#_qAFn|4Tu^%zIQmqXY)0mMk?u|6MQUzLYziZ`0g{TS;FA`bC<7lHALU6TR* z#dm+6W!+;ICF9(~fp8`L4gUbgnDh4f4t8uKfdwmGSq>cNNPs-OJ1BU>_(<=hFg$&>i0AL@&I%{NhqA zgVg4lOh8~*<~rP~7tCR^tCn{aO+-n}#>BRI_2ZpnzS7xNu2$hC)YcGgWMxd+`=iuw#W=NoPe*aP ze^Z+D&1wySd$%yXQEM2)r=ieH)kbVkhtSfcUgT^{#zDnb)%piejql2PpC741oF^|Y zn6Bz>0AijH{0n_}eEJ0EGUvd|P`6^b&CbPB|Xt1k?T>>=$?a&u6}Ir*At4y%bpTMa^l(yf)^9v*{p<|1B# zT}mazAyk*+a|dybDqeeujuRM|a~4Ys`WT`o5uy!|8jf>FEeuf%&xk(}Rl)HB81=_4 z?Jk98L3=0E!G2=6-k{BMarT@e)W5s+i=2+=cQ{k}(A=_a#ek%scUie!DOhT#l)~H% z{TP|N!OUu}njHND?hQjlF`QZaK)uXxvK{(G=of}U6`xKJoXmoyQ7n6mqW3B^mP%Dc z6*bv@U#P)Zk;;14*xW-@5U)oKwde=@t=$|0op3zagyVVRlq&<-KR z?YoF=gKUTgGwgq)wt`k!1bmSgQOk$%C{b(NfeN4qx~CMCEH`j{F*Ak0lWfbNs^5MH zO?Ma<_b+#LkaYJ9T_xZSXW~~0RNMt-O{_VTlI+^Mi`R~`fTwmCf-tM0E=w+ZJCDcJ zaRnafSyETw9T9cVigXhzR$6kTu0;U7#JPjHPF5p|p$_68Wg_1ahY6U;#KqcP{{{Sri0O>?YPn&{dADACZCD;d%mc8S_aj(ZH*F}!`MS$ISmjw+bf95!GfRa0qa*)s>qE=z|N+PS2F5pHfKw{hw* zJVQf^xnOv*y)LG$e)Dv&y`_RwO&l>D>=WW5kwShU30pZ|&)nD2$~;QqZmLsVKN1>- zstyQa+l9NPVp;KJYN`~#^08Q}=V1Q;GVOXd!is?|UZmrNc-?AIevq(N=2;cBf1*&_ z5aU;G)NpQZaYU`)6KR>?cPK4pT7{ABH|A1taW`%yjinAIGc=JC(yn4<0$Hm5h~DS7 zqRpC@arB0!&!XFIKJm=FYF1xpxPn3VKx@pr%V1o-h-9A;Jmy+rF!58LrLA=huM*>W zo+aE%(af-FTy7Y|5>`!N%kxQTbg!kDs(c*MI2*6=pXywIwL#sR6M462KA{NLctc@7 zy-p60@L2I6qPN@Sms6Z#@c<1=E$qL{-_f1FL6vr_xMKeR4aQCNQ3s8|GHt$yAZ|B> zgw^lqb{@~u2Gt313yH)^a#x98Q;0lHQ&DB+3_wN{l*`l{k4&@Ql+L8sm<*O;;C_7% zM_#VyG4vz0Y5cAwSPi%HDW>2>O-CmZ+2W3Rnc!C!ajOFHc$DX~nMQbnu`#a-r{iCk zswXOxCSyYkA#smWK0Hv#anOZz66qKiJA?>uKue24#(#Wc;v>#tFdc!l4`BypSJPAb zDl-T*ma8G#^DHk@TRIZqp;q^2h}`9ZT)z`K&Ecdq({{TZT+2qbyUtj&=D2O7v zF>wr)@Knl*hR~}>`I_T{rv_AEc5xc8-naCMc|rxK2W!zilDmEcSGqwMBjn^&X&HOV+`gZ$!13x@vx9nSeArSv|Q{rF4Y$F&)fvsHQY( z2hgaj%;bOza|s=fd5ouw>Up3{Lq1|EQ>I!l2j8W1n3pbJnU3YdNgG+;It|i=1tbj6 z{Bn~iNvqr54mUU4EgddUFs;%kEU+N=sd)9NZj$G7R$9&=FE6OzHjc$Z1@OZ3MdaY! zO(l!6CUWk`m9_`kbT-d03mmZcW4<$(z<|`JwII|phrG2&#yLb`3<3F=HZdr-l|-Op zW}BD8F_3oqkl2F6?wu)z_YF+ z%3y_!jLZ$(eCi?ANV~Oiwx2M>{GyNahj9I&%tW%(41B|Q6odCYy=lGrFonupMUC7` zip8N3ls6hd<}&IjLSZf3ym~3_UDZmN)y)$*W$s#FVB-YIErw9kZx4w_!UkU8gx1gY zsKaXCz8~DjK)9zZTy4jkp4No$3o5wGc1@#&fBlgnyzBQfXI1Ykqe>r~xE@RHCaDUi z^%53myQtapVkp<4jSkT&bQp=d%>LNM!V@=hViXBm(_-qC{6)I-;#EgvZI`XbS(agz za6rUKEi&pL5SUn~cu0&tDZFzH1g?sqR|F>&eI=#1Ye zYWpy_8GwVjhjnM{FYXzPj*rBt304jaRNQ~SmsGQ$wIb|Wer6d+@-|8bw*=lZ_LOrm z9>FSp(12vYPi(Ik?iN99^O!9KK~53iw0U2M$oNlbg13mot2LBG83nsW$zzTU`@mlR z08tuH2cnT%iP~1;J}G9y(%k{_%ZyvciJh0;R~dZDBp0Zf6^qg1%+G89QG~+cxS2ID zol18Iq**s`xJ%h$G0#$+N71RROyvzvY$9%49YjvcbGS|nD|2K~(TXf2s8heSQvQE% z{{U)F`$^3^L`ieBKjck6qBi&7#boX<8T(@8{1G(yPNHoP{7g4SGOh16_NjQxzlVq| z#46o8!|Gj72yPYN-w{R7sxW7nn1ow>#&a!o4$k2lDnuR#YgiYfm9G_&kCDi^lq73&b44ZcVNjP&1! zObh1uJU(C-zxqmfk^E*)r}9Fz8soeOQv9NSF=n-yxN(GYz~T+Ha)q&};~hlHQ$U*- z9FsQpIw0%viMHmM*^|2R~`?6`IcsO$qN7%vYer=~{UDgcn}YtI;XxP`2Xw7Q@{G(C>2f4@x`} z3t!Cplkp0^f5v6u^oOCSdUNRO(Db=~EW@h)Bd3`d`;;oZ*d4)^2QAJ6UBC>9O2LL* zBZk+sz&a&A1juD_%~dNs{UFOFhq7VJqVoZ(7N~tX+5~5bY`d0_?sI{by`nv9-`*RQ zMw0h96)o8d%%P7<(jedy?WX&D$0)cUA*@HUl|1as9dR|B-FwG?)v4q&F@Nd>5)=U_ zAUS1?&Q52CtRyqk`;}&HcG4%J#4)@eT73t;ApjGzN#P(gXHy0|ZacrY9I>VQGNj6; zQT8TmOQ!dWg4H(=7Un!JVl$ivGMp$HxEFA6Q}gINiu9EM+~}3m7QtJHBAm{sTd98G zaZx};5V~Bl$1%F7DO$jv2#%rO(0MSYqscwV$R$9o9S^DAkxL>J4p%*s?Tax;_Pncv z-UwzNDtk={$hr`gG-GJyZKXhhE|7SEkgMM6Iikl}@hU$maTOX`Wz^A&Cz%}w4Zjn= zw{pjs&&<@r!vQT<*(`fw4>1?G-!p`DGSitzJpYcGGflfE!H;|Q3= z-ySR*(wufw8y=r6irgQTxrVp;=5 zzzSrzmj&i4RtE1?ex|_Q=fU_P3{@xUFIMh;*c6SH^+hKl{1L#sR$d{qlM9-TFPHxF z%6~C`_aEY2Qh(nO#$UuA%(70xJ)y-Ol?H>%SX)X~cbJ`}LBeJ23`LfuirQSXGS3kM zNrfV~4q&Ihq{oy|iCo+`MW8*-@9H1&&Jjgz+~1oly!0X!uK9>8{w40mq!=MXh~g{+ zLI=Fd4JPyz0C60fsBOKYSjxrwi^|~5I)dI3(w@`1(`-wLvexE2$zU8xQl84xxG!?z zFE!~`nNM<_<$7M}iKts{Da0(|QJf2yHX3=IBg*;I3P7(Cv58`sT;^FXs#4MQJjNJtR2$5|bBe^qPG&!hsNB(A%7egM zzg%uSL|GL|@f8dWiovP*5q2ZY(~eUXQ@+KQr?kIF@XLmwB{vy-y$Y|}<}#fiXY)#* z{%c}+gglDzcjy;d+($VI;Qs)CB9<&x{%8Glm^G1i?TKij4hff2Cz>$ll$Z^`)kn?B zsTk~oJf72FyzvW6ju1H_F|%ItRm>O)2YkaVpWhbS<>*JAr?=cWmx)>3!tto{n4!m{ ziH;?qs1|sGF`0UYtikaPZd26B3^Q`2p^BBfdP6$&yu(Z}Qx0n|Sy-ZPs6q`F-mli7 zBaokh9FoJp?i-HawG{|-=G?E9cu-)Gz&65L!Ww6Ni0c~6pgQ}Te+}SbQQ%ZrFg;Ed zcCytXg>M^{*kWa4=LoTn!8!Jw?g&f7uDuHA)NW3b@|BN?#gT7iM?*~7#<1KMo}#mO zhbL+HiwDE}&PyRAmp=qmY-a`Oo6sYm4jN~}RWZC<7- zlsFKs2}9kKUephmSg0C5C=^rS6+o(#6Po6sb8Fnj9G6GSY`R!Qe0h}XX^I9YAw_r> z_b4u(c}@v1a!k!W(r_3D1k@A6dW>n*@sa35#T@3d&A@1R9%U{)3_ND)R~C9e`GxtD z94Kmir51pmW@ErdY%7)>;f%kEAMPT!J_u~LSx^{v%v*IRxOt9Qr{;MOraG934HE{U z7y+^RnBl@W>Jt{>dW2Y%qekLU)U`(4KM;TTLWW_9JV9k8oy(R>9Wu#evNE_s&U4+0 zb0M6?MwA1E^c)d(Y>rs2+K&ppQET9@Vqa>!qb>sNgXEUhJ#?i0z{k8AG#zR)R2~x| z)7mZM>l1yvgyopbC>N?7;L9;Ggku2W=c}oj<~hql37lEe7)e8}Dlk)75mUBiYZ-KN zL3QmN?J9aXW~lKlV3j?;bn*g}K8bb2MZ7aM%Zq(17&79K0OFqj{+UO?XeqVQ6bTqzAVc4gbKJE6!uIRidjVyEj8(6ThkQc5{#n{$uKO7 z^8Wxta(l(Ix2FlcGZ@u#INWI)q`kvY*QVpe%njmTK4Yk6dqG^{S*e+3s!{Vewigof zIfFZkYQ%iX;br5}rL70frO~ouxLz|;G3;^iWS2Er#W{a|h|)T^3<8X7lPO)RtKQ;EwuL(qq# zDTxEoSx#)3x*_P*z`kNszlr526)}HOl(~Gvz7VLG`oO#0@iK?+xRa0Ei$3xyEQ5@n z$uDX2GOWPi!c8N;2fV_*FY-b~Pi9DfW?5eG7AV)|6&2ik5w1&SsklLCW0x`Oeu|($ z&CD&8jo4|K3_3{e=FmQZ6|)6UyK`sV!gYi6l`^Xb`EW~ka|?G8V{N5PIdIegC24B3}-{Y<_oajGWb>01$KcLRI|F3#my|V zT#`At$Nuu0y-dda8%1DDMR4L-MqMqHK5l(Am|SLZnmvhF704O( ziq%(K0O6TJK0A&0fY%!}G|n*tFY|CYqAayd5>W=Rn4>&uZ`yJ(S-FJ?cLZ}~K)*8U zh}(i7!#RauY$Z`pP@y^DDTD#2iQ7WIBPYm>udq7(3A3J3}eGOMtai z4%S}%E?5vn<13=BQMjw0Ff5m|kt|B`+qJp`E`B$!yKaW-g#gNp_<`FvjJzHTZ&+D-#|SD3@=wZ_KO^$H1vs6cc-` zgU#iDg@_(-A!h#oT>`#lFA?!}-R@YqPiRChK=BSV`s#)>7N!!j+1<=xRP5#IrJ1Ag zJP)r%Ab<3yC=!~O8>y6^7Kxi!j|MEv-f1hQKQK;za^1e+PCXv7z-?u`5U%Y}YTKSG zEIRsZC0-;}Qv6KaVVz4HJXETp*9XyVeGldq25p~E@g|%?`Hz+fyNzUjY@-#3KS332 z-*H+FYFWb1W?0AJ0MSoy`Oo;dU;QJlX$REt9`Q#cwdN!R@e-_kqqp};?9Kfsdl5W{ zL)lbE4&xQ2^BhNO3aFYlxhy)`>Kun;Yq9N#ayirrMn84?9-o0WTH-Bd;u}JrLphA%RB+60@khU>aOO5d zT<6f%r^Mf(-iB99iOzmt zcf?2wq1>vNJCwOR4ss;&_$AK$rJi6gp{&0_Q_>43g+~OT;htdzt3J`jCN3iv9GgdM zZbcAa1({TB?k|acl`G88ezz*-rTP}Rj_ok{m^~c|1HRxK?r8wOKtR8z!dKQFR3K}C zuXqarCFzNZB|X@psrU8j+ny{({{S=|OUp)#ZdhmaFYn_MJU7G>AigS8E|prz2mx$x zV=6s6&#dc8L=H*qS1nGa0Eou|+5%NHZ{9Grod6{ZqX$zKpsdHHic|(S+8D_37T|br zo_8dw@7gqLDu)&Vs$oEt*bHd%;{}Q(6g=WOrw}(r4!Fcv)z>crshZ~rV5lY`)I6n4 z7C1b@_i8gwO3iy;xQOo4Gwj6&D6*Aq173&xROdIBS`ErjWO?x|c5b-vV2Zi6UvCg^ zw4cmThZT}!3|&+QHf8NGhy^9v3I^blP?Wt!qYRJ>!Au2Js#5OdYVQ%w`x+5}1reW=nZ<<`~{eocqh-UNI_C z!BBgy1>VXLUERKgUEUoz!*oXd@0`Q}e0!nlR=F$Jza zGO-f`8!jgQ05{Y&iw(Yndn`N6PZ(6G#mB;QgK%2(zfzg)fn%S7q6wDVzc7SlN@k{G zo@3kij^Sy!SYavz#joNsO9P`F)FDsCiY)sHiG|s?f|mU<%w6XZZ9RY$;$fR`ZI%np z%WL8^QQJyBNZRb^D11(CN5Vmx{$t`6QgRn4Z5LcJ!TJPr1$-kYC$pH#3C_Gjs1y+d zNuQYH(bTu?O6wBB7Ijld;19mpdqv~kA<^(H5kTV~Zea@Dw)+Gv%G28r94!yEG=Q7s zr^GzV;&SbbZy9B25moudFY>g8gh8YVg$~odFwt&WWnCe4`+?}eGR^$4aiET&3Z;qR zr$z~(3V~(Br54YL=KV~V{Ac~t>$(ar{@miS;SOH$oR#>O(r?-tC>`QG*jW7=aYPHB z+-+!wm}vtmiFfUP5MJZ$7q3m(h!)96N&+`7Q_OoOkqhcxDI)O8;Q}v&TP|G93s*3% zga?$)E&7NlZ#5}u{{V5jKJ%udH%XUp91@gNV>7GOb4)Gd^ln&adO0a|#w!=J)jM81 zMkP^Dd;?ld!@GDf5TGH!#v#)#oL{`ySBLvTfLT>)`dPAjYgzRQ8i8|f>QIJ_{{SpO zdl-+)#wFy=e+_6&YM`NJlc?+@P+iL83j8v>F-&nQ#piFBoW6@+Y&8LPX)1M}w$hqW~mWuxX2XUo;@+IbNwq$FJ!>4+KiuYx1 z*J>WC2V6?M9TBy-sHS6ODR6j|a4XPd%_D-jtiJQZ#wf|rGduC|H}oUv#JEbi2%V^> zGLFFZk>;X6&aRnwqxsYh2lp%g0PC5Pv}-TvAM$imt-Ub19PTk;a9RfC@qSTtb@Mh4 z!Y#tB9I(X!>IQ7-Xonv0SY2%%%MCri^H4)ly0#81E2A-cEz0?KDPCdtiTOs>txnlT zWj3pA@f5BPv{3YW^AUF{{OvXR`Q7OFCC*k~b_Tv21XilHY8i4E_za!L>92PZGCOrG zhwO=#;OcHzE@N>T%*`A`ETp4P;&Lww>|xoDshm%wd|%>dChNW>P(O+56J|J%hmWos(*n@~OZmp$Dr z0sjCrv(+uRNZ`dh%G>nPA@eK+HCO($%{|ZfMjy53&D>-UW0`@1prEOAKA9ulTN6I8 zqvxoVxc${El3$i>57{Ye!deoCGBNiE>r6ou5KSuCa{4)+ssL0w9J)qjX=y?sJ+6F zT!)xnV?Vi3)S;?}qKed5iMMh6#$YzXh`YW#K=U!D5vVzj0dc`K0=}SJHq;BA$eAWP zm%l`Zqm_txg+;9U#uCC6^#gLez|hZ`TQ9h1_N&_E_G>>vTiCb@Q*~-CJsw!i6_}VN z3V#(qpAx)Bx1jQ4+boJp#2c65EzkJfB>@!TU_LTfc9WQL;B*r7yg&|aWGV-wW9YMt z%3#HA2NomKb(T>5Bs!cOV>4q6%sG|lzO;Hig%K+|bu9k?{_>C$Dzs`gvwhHeD7HDr zqn?TOze|!MgOxZt#uL0irS7G<|C9x(DO@HpSf<~6@k{7O#&{yPskkMa?{zu@sE0eZz)Y2G6+ zhVSYYJ4Fxq+^$gWEx@jPzzx{zPI|NR0jI+`@1#pd)NmovicH=ll@yJtwo-yz;}h{m z0sFGV1h~**4a;38&-6fRrcNeaCzv4nn`?oJ339!_vYEf4Q~t@drCGxnD*k1> zxTd$Yww@*_C*E5L@xVl1)We1)TPH~lPt^Yax{lOQ#9tUe^p$N&E?1&-Hy2|ZA^!jj zvCbW+@DLKnEyyPgV^^Q4*@-Pe2%{Iy;S`xE#7`7-mvZe`cG3_Q0mw6P0V36DkoRDw z@ZzN^xC4l0lGEZyonh{dRb+nA$I_DiH1y!SIDRZI{Zv08c^P@#lokqe0?M(c8wwkFR+R#X^$jK@D= z$IK1-P1ie0=vhuc!~mNimBpAIbJQ=Isb_Hph?v8eEZ^p6Ze7+V+X{!g@eB{6E%Hmr zP1MTciBs9>cw*H?SE=!FAe>!GcPu7napH2!dQrr4+^oW(;V{MAGyWH86RDnv46v#t zM(acRh{68=3{;U?W#&{WUT0~&lz(vw8iYMA@f0ku7QN|;QYjqkRjT4FM1SLf=97ZC;<~?IYpQ*+sfAYC;trXY8QC|2y zpsnCr78%~-6O<#+j}1(D6(qlzi>DWo44GMW`f z^q??M=$XX*-~rjtE^;kj62jBc5RO&|6p zGlwP1?(gwFiqstFJ&$AuGi7`FM&EIE7oQ9rnJn6P2oHh?T_nQdlTfj%S2F2#{K0{# zWXPy(O~KElBJHSBKu zB&35FQG@Q7OptWKXol1q&#K~oycHp|QD!p9Wi$IP{}%pxR4TRwm%F^xu;Hw9{|ne3T4m|h|1m?tpT z1P3?m=p2il4_?z!wS_?6*%OSUd#RP9(9HKweD_a$r*g8Aoj{5^=~r)elzbYBJgn>! zEXQof*ZLwj+_3^A1GS5OptP8cR-QKsfJdX%KthHS!9U_w!Lf4rpg;jp+YOJ@S&Xui zLb!)VY2}540%n*AsL^upUcA9HLPH5z{@`g=VSGaz0sjC#jtwVF%BF@P3z7Zk#hXL! z4-=lu?!k~Q*r%C@s(8wjsG8M0yukY?8_@#W<=kAlbv2#d3xLaJF9fdenan1TA1G{E z_NE(+>_X)IT2-u1{{WNP`iC&|Oe+jQ?WkN{Juy0@esdfw{Xy`)2xi2k4@g@?qs&Uj zOgaGus``HnZ6#CijRRhQemsmhFZLs;C%pJHIZ5f=+&!*ga%_lSd&k%a7;^W4<}Geb-0FW*{v zo-fz0WnG~W%U^Lrb8chT`;Y$seE$FdeG$`xtCTP$u0TOd>9}h{+FW41 zB8+0uti|P(_*KiloFk0saDP^B`z{lI7D%D5sHvL0vj&&uHfgVTc8b}l!xIZ#r4PaN zO8S5Z_;y|*v;}H!6$S;rQp(u5 zB9jqiN$KvQ*oUDO8ru`?0cxS}s+<795IOEAfY+ggkaWyStoj5kU@G+P5yBXwIeb9! z`hwe@Uq-HGaPLQPC3JNwe(*dRrK1l%oBsgfM559~%Z>=WhW@{T)w_L=OxvmFqH@gO z=#}WnT|LCPLUi{qW?4rpJ1)!YgW_khlGiM9q9xi~A#m3-0d80fw-%95bjp^s1E=Q} z@#;e8P%7^i8b7FyCy$1XIM_4~gY{!d&SXa%IU*q~pf6^^qq*+;qnadE00tyO(SpA|Di*dMLa}o(P`j-4*dpnuB;}g8b9n(I@ zog92Hc?U0ZG(q4e5z=bq%;(x(DuVlsM=Fs}iexbe)XWkr*Gflqm5nbK!0}`w_j{Xrm<`R{7X9qkb zLpoaemoIAs(<&@ytV9LqCK|4%cZO~mt&B67RhC;a(Vop3>4ji2jZ~MV=-dmY{$gzF zxVXyBC9Dd;d4tk>C5o#RTXT1lsBN;m`ayW&2RMmL+yd?-UNd_m#xin0QBW zqm17QTw7t3;uCX;nSmlKF;~8b=#BCfEs!o3YXa(2QQI;nyiDoL1!?rTa_UZ^vEoKN zmIIh}4f%>kQtHeXQwYi7GmnVjIe$sURK7{^F@g)Wy4@(&2Ul{Zill*?4eLtA-;!@rs=!)(uV!##M0^vh9 zX9+z03p} z;j%qmuY|Dx>8I)y4%b4*lFdyiZ_c~V3cwM8- zw<@-Nbw0j9nR$E>l#+I^_7^Cvzc5))YOxJl4yJ5j?>gsU`XggoAET5$c z-W)KQeuiI?DPQK5ha>TxOYtkQ@h;*5+lrkJ?mEZk7Vxdq5d-9i^C;q6smdpxq)(T- zs6GBB;rNPhg5fi;kI9wQG0NhPL5WXIJ77pdG)g>5$C;ToxR5ef^)%uZ=h9BIJQh~} z0FoUDU1cbgXAYdoR?FT!)mX&SENHu0OacHcr=fB2E75$yYCDmNSKNH3Ar5f>2e6kf z_8!$y+XLz&wYXDe$Qe&bif z-{LZF>=K%Wm0vh@P!8`uQ1@5MnOLPb%wHD`S%`D&N#?|@Qbm}h#}i{P#4mLCh|igG zxm?B7#LViMZf5sBBk?oTE}_O}x#*jS-X@OaV2`}RmM08L&Y||5m>#7949dJr1S^TR zQ8RT647_|!Ns?c@drV_@W=XY8^)}8QN_Xkxgdsg0F*iCdK{U;L~KbS@#xOW?(rd_rT+zG^D&Z0{79xm90qGz~x#2pi~ zd7dF&9omfgeeF8 zytD#8DMON642_DwVvllDjnxK$e;lJ=qLxO9&jiKj+VXv(pk(q*5i`1ALlWGQou3L^ zH)|ZREojRN&lq4spYk?PTH_Il*>n=_qBE`*mj|}_l$4lT64Ff1A=J#dL-vq=fRp6>`+f;^lSe2rs!;5SO^s?l$oYh;s{Id&U*Ct(hZyWyP>> zFWeUQ`-B$q=3>)GjzZFr&9+Rml@zpTF(w6#&{l`fQgV^8KAkNEK`&o^22y{ zS5qwQi)cf>DT=r!gu;}Z{f6ObiifXk%QFQlIhJDcifNXa!t4=-^QKU(E3<1vKFiflJI79vG>* zbt`H*AS5TppjehK%r?Nxh^#y_9WFFXW+PWBw(0_?S=0xM+RV0x*qDR!3UlmAfnGe7 z3Cno$W4NW}`n@ucwcewbZ}D+`(&dc$RoerlO6^L$gHp#~kMmxs2tOz05rcFd0PJ z4UDuVOr@#{v=F;K(;pigc=XTT5#K)Y)vT-{=5ln)zci&WfC& z51ROtIF2JpZo&_APai zX)ZZ7`i17)3|bmVJ%|+*FLQYH3P&U?76W?EJD9)#>7SAW@R0bQnWoh?$@@cC$K0p* zSBYLFI-WUBr-BNHt|KRZ>LK(b%h84SN;pYKsPjsjw0VROn}L2wNEJ<;jK$9j{Y-A_ zS1CYVERjuR zpo^uNfsw*MdD)c2EaKhb1WQ8()*Y8CEAUDez>5_bq0|E)oWn}h;!wA=F#^E+qW=Id zFx=qvDN7#nSO!>Cq5S#?T(O!gZgIHx%xb0e3K66XkY)`ZM(&83)KRR*iBKB$fX7oR zO_rw<7f}zy$NHSfT9k1C^(vw%xUOf+t`S(`mQ=+;KVnwdvl8Jp^p~>Q}7%mEr~>OC3S+JdtuFd1sn=y?wItC*k}ei*~{r z%07ps`Y#<-eEJR-Uz4b6d#x_qyJE36#U1+@fCn@Z#1`auh6x1AW#C`DzIfs#c;P-dI|$quXR>NfWG2zKm0UxX}!= zBXWjlzl2myQv`RPq($fH4z&DHEvYs3aVS%477g9QSSuxYyZ4U9WF?kELP}iBCbJD* zVA{Bd7du~w>Z;y*^ypCzi9~Lmv}J{OxYo?DL~b95CZOX5IVMHtHj+^V1YQgdSBZKd zOfEO*xA3`smn)0(L=so1dG@Ftrp!vbRG>=t8!*c=BJOZf(SGobIbl)_-raLL!7P#$ zbY2iC8|g2OXSmcC?Ml9!ucR&4MldVm+Fsz zZDyfCj}qcfqr6YNnwCc?h@5I?Zl}y(s`z2jWXUlCG3=kY!O;vFa{xj5W&yy6#+Htw z*B1{117p?2(ytK+;hE5{OP2%1?j@CxdX?VUGv)m={3d@yVq+o{bmsZABa?ByrRHrH zQkk*`6)K@#g+zvo$2*&PQdXmys5z;~m>_tGXmzRHJsFncd{nn3%mJ2nxvm-SsaUQd zs>HpWA;~#BO)euX;TA)pD4r2>XyH@c2oDey)VFY*XgwOa#I7?p+_5+)^tJy0+(S4- zv4FQj?3(53QJzkq${B>ZhZcuSW%vF47}~{I&xuzxKU_{7z0O3ayu^>L?kv)1OiPL| zmOm(f5NIZ6t36lJrAj6}R}fn_U)?a3%nB94bps9hV|?BH9-iu3@#yCotMcp8yVh$G z<(4ee%Z#)7iLkH3vl6n)Hqd4mY~|(*g2!<9l(N)4*mC$~!Iq`eW1JxT#=;vKM#tI` zV1AI1&*8iGnqt){S=rQ65En#-&!{DUlscI*c^X@qI!Siu7XU8ZRZ9N=uMzDz)+Om* zS;(O88I4sVxUKq?Ft~`r+b*RC*oi1?Q(77U*rk&OQU@1157 zOAgHHUr}3goAHXNZa{MK#JB_R0o7r*m@TZOknrMRnQ;;_ zvW*B>;65f+(+@M0lzD;nWt=0Tu`SfG9GaB#nQg!h(S5kxg^u-@rz|j z+u{kpeL#(_eIm_&XkxXto@Orxm?bf{a~hhR#KE*;dA^9NaPhvUjQWI*QJ6C#lx&OJ zo^->80mO0?>qCVR+^d;)%m$#=$(eN%gUoc1i6z*^Ac*duI<^|NP$gc=sZ4_17+g*_ zCf6uA#(IEa6hQK%WQn zyN@L7<^w}aJ3E(rz_SLVsf$VT1L(P?S(*BCs|5;NxZ}*Vxz6rlQ<#$mViLEGB|SkL zKxvy8IgX`2F(ZD1aT)O*a}seIn`_awF^Y+j_YGIfusA20i7Dn{#}!$E#pN3COoFO4 ze2ShROZIwdY6(?eqMbl!LMw=llc6?Mi}Y~B%hr#h1H!|trcUlMxhBcO1%kH>TQVAo zu=bW+Lfd+$q{w<0%n>dgE7LlWc}hjaqudD|sCGkuidDt<72Awx19KlECIaR6Q?n=WqMl_iPFcN`$q;i1#*_P^6C}` zr~*Hv$F7|M{D@lsDf5zblS0-mMw@W2iIbzQ72AU@#{K`~R389v%ooI@ zJ*#jWdyp|Ju9r+=(xt=gK*o3x*Mg|&Eemcjm@COG#r}r_pa|+hcxABJFJdR$#O4wo zg+0jCD_w5m{?a~tJL5iQ2k#D0ly`29Qy_hz+o-z-L|e1z9N_w5wL`hYwZBK+2t$~l zqvJcAKHV~{q&!Q{D@Jf#^Wsmilv-nE2;;UT4{s^h9T}l#) z#rwpV54voz_Y}YGC)eC6q3%GNN}=~f^Oj;&eyA@KlzMh~l?tf%O3Xs~oUxj5^qxWS zEn$jkaNG~a<`;5)<7wQlwonE|xxG@}Pqd_=N{a1on4xFUh%uuQ>S-Bb@Mkv*EjiTL zUV4fR{YxiCr(yLt24yt{U-1Xdxuz!t@a_Vdds8tO1=Th@LJ%+cPOm`?l7@W8YPgR? z4(0bj_9e>)k_fjDp&AF=coo7WKD#laaf^o)KNO0KsB|VPeWjb4w65JIRcJNDvI{XQ z4CF7guL)k?m<&=TZL;N{_(C->AV%5CDVKCgm5$?km$)-8GueWH<~*g?&5;IRyv&m} z6A1H|-C==?H|W8;#B+u20NYV2Q#6tMhk1sx+`Uq*{7Tr&IfZc-7cRt2P#he~>O019 zEj9K}%;P)S4aD#=joM$eadB1XsIuip@*xez`F-H?2n;_lg|NOje#&pgo~n4=VjU9elG0WoDk5&1~*k6k8759$Dd?W84DA62=nR`bkWU807)+ zFiOh|PFmf^XF2L;5~J<|h@v+sv{p17a(X_Bfhts~Qn!xtESQx%75RW5sHx!f?rYF6 z{{XQOxj9>ZF+g(EQh+=lS?q-{wLp1iT6+ULK>Hu#mDz>9$#+4)=-K8Q3LkOYWc!3> z0Bvkx9!qHMP$(x6Wij^@gc@{t<|wrO(VWci-_#YTvhvBFyNu#DGq_IzQAb)tif{|S zSXpB8#N?i3sF5Tv1TTqy0C)>JI4Rj6rHw&~0BG7X2c zsWE#;C@+Lu1oB_vVMs*!iE6g^i!KQnP|PF$0IyAHye!iaF2p4;rj@}meNQGGq3iEig>D0+v> za~c+)?SQJPjXcaQ7sFVCnP*T?T^Wig>TiskxeD$36Cx;PHMl{sa*%9GLVFM#=2J z>Z1W`e9Cg#SG+|PijDgth2|q37V?=cUKp8QnmC@=fiJdF>WQKuJ4lOrd`le8J1bir zV&v0vc&qEUrMMe~V>w|Hz3yA3ia1sh5atjcGN%}2)QP>s3o}nIIgM%lWi8sUGP+1H z2=l%sq*VCCIWZZ2hM}0^V@Fc8@eUD@G8pt+F?P!p?;f<&$n9)qzOxVT*&WqAn_ z^n4(iz(5Wgja0)%B|9c=>w*ZJLGoed;PDD43O-?6LaOD*DTZeR_fKaM)?*U2h+iz` zZOllyS#ybM2u~(uF}j$%mO;b0?0{Z*np>xyW=Ni(hZ>u1a*8s`iGjF2(Xaq_HXLQz z$|it^sB(IGAHi7qT(%i9;&S>Z(fc!C{og@2m__$f*+qMp@fCKyy)CiS9rr0I%J`1u zS$v;~^CfpSPl!Ww%uSO#SmPpB{_vPsgC4ezIa&TJ3MU8jk+} zNMdgM9~oBGZsUGJ1H&?v^g_(Dgj(hvQpNcm(Yew~lra@mUh^8oi`QtoGbom;m}A`+ zD_uugwQ~(ynKu2Wl->fMI)d`Azv`Egq6frT*uyGn{6M0HK1eus#0&sAjd+CZl;(yO7BZ|#3dGopj>i+43XVcrtIPp) zbHtg~0(48l=MWCsfONzHi;hJY;vCQ9h~OVls}MQnA`56F!R%ub>?i*KGXm~&FIJUr zFjdhUfsfmdVjY>}mhO9gipE0&5amTXL!tCl=x$jbG&`eik6&$G5j@%Wmx|JkufG6jK`Bz?J+ZK)Mz*!NbUV4 zC%PCeW<-OsGF4TEWD4RSSQ#!Vgtre8q_plL+a7?vcQBkYIgRtV)w1!X4e>OC0}`P`TvW!oo-CAH zcXF%59nO4AZxC!p4NukuYI8A&;lv;jq-SycMzH??n6j|p!R;)~!t**VVOB}V4+~Qk zi;3u~(2L?c`Y|$x5!EejJ7Efa0Xa>|d!S~<47E-lPEDpE$L|M7ZcH$q22`9+`9(-m z2;MNu+i934W{7Q50Xu_ZQ{r^K{7o5;1z%cc{{UxTbcE}uSBVq2HO!%3gSe#{V*zZ; ze#5J{yFn>ChhOlM**&pcdfP(S;OQJ+tUcpu)$cPteHntR7uCb5(XOzSbuw4{`a5HR z(Ek9Kskk30bP7qx8<@3wCW_;)WR@y9Kh(%n_QA~CsBsH%hd3w?k-PB`5d^|MpJo-i zBT8Bxok}~$9APM|LB>PgAU3XPf<>$+oJ7{8jV5L&hcCWgq)jtG#U+cv1Kl}W+VdEq z@bV}kN*ig6w7!lb^-8bmQvmlaeW72}tSa+V%SAYr!}p4KPV3M6F-~88ib}noQ-@M* z3pA?|+cN4w2rfojbOgv%;uwPHDhJ{tY?EZB@B^zi8%)Skm;{^0n46w)8@QB)N|!0_ z54Imgi1VpOn53|aj%K|#)DYLf2ZQE#S!Bf`RYogv<`O1mOzBSu?o(95BJnU0@n6&> z!EtX$e{du0l@u^Q?*9NO)#ZdaWjp&%`?z+q?h657WGkshPpFE~JP3{w-HGFR624_z zGu-rhNlxiM>ZL#QhZ&V>j5(kE@Vg&uIPLR0AUcjoD4PsCB9*ZPSWymh9sV+axz|8{ zDxk^~T`o9POqWV`7UFwF*Y$~hian}Y5mt=B%F0_J>SeT9!82jZ&&H|Ztb(79RvXzX zq2f0kRSy!#hd3e2#H{>FVN86>j$-(jvE$k>H0_AtE}Zi#OP6W{3C0*pWMM~fcVY!^ z2EFC;VfvQceTh{M!facaS&@H;>I&(V>KJX+_=d3zN*+=;Xv`h4ZHTz0W}24FF#iB( zUZMTV!-rM6woEnwJi15nz38Q6A88;;LnY7xWDWpGBk5j8`gd zZX2AboXVQZxthf=`m1y1wzc;FwNvHW=-PtduwQwZt3RL;%h`d0cjYiQYfy)*nkikIe%AQq0S-{KGa zPJ*}lo4*SsQ@NP7uOHw}`YY}`X!d|RAg*%^Y88b`Ifud>l=j7TXZ%Uwp70gAKO$Y? zT9ZrMg2vYvWU{#oFEF(y1krus5TIJdCA2ftrGWgUMl~pyCTy7Ev7HEv22f;Oc!nxf z<`5Z~;x7c^6S#tX9s(I;G_``~*?xvNm+EcCr4oXC`VqpjFvr-B5Pixx{KNkMvQ^4G zm@Z#Y&6LNer=Md_?DJwzYxsaVqm4lDOAd8@@_9eZ>D_WCzxH5H{peh)E-Gd%oW3) zB>_yZxG_VQFv73qVVtmeW^kL-ad5XWg~XhvvQhYYDiKIQVf_-fg71jtrS(7KBZ|Iy zg+cLZe`(Zk2(Agw*4yq~yN=R%o{!*ST9*AMCVn8nNO_r-=zAY=7xMg^Fx?vgFra6)%5uNubhuM^{ zs&xemd>LRPG~c6$<7I7;*<>b}M$M3$g4iY*lUE_!rVP%|_*4O3#7uzCbGsBnmu^m` z8%ToJ)?#8=PDrC|bvz?0mQwp#WtmqwEh~(@1FTFfZRQ0Piob|3U`46N%&AhnZQO0S zR%~u$^4-gcT1T6ytA95XiplP+CR(!UR6NbG3-c??O6FL_!G#)?V-q)2VB)iW1}2mK zW7UYBmG()NN|f_2LHwWjCf-R-XHFNy1T(e{pJ{wCTDF4fp@pjSjrs#F&8$LM$BrEQ zB}|C9hrW=3F5{NB{&uL4v3cGzJF7)f}$U2#@w^O#bwmWLl6OW zP`dge1^Oo*R7!hss$slLt6{+^mIo6IW4yRq#W#8(sk%m~lXji&)jTHayY zd5ev5JSbJ-LN7g%q@)k6Nk&|w0Qyv^OmPDJ2~v(~3l?z_YAXlNrDbGh9T-MPx{#bA zh*mf;>6^~qHk*FHsDCQ25jJa*`KCC(Z1xCF>xlBf1OtxNUC1wmQ?hK4Ue}sDCU;hB9 zXC9Q8#DvxW=?nOq2j)@S!CUbPA0lh1a`lMUbG%Qu2#iG>BEq#_Q#`|d-+tdsrGNQ} zyV?lU0*{!dh^KLt>Ifh~0X@bZltd!MsEpCP7=6oJ4=GZ?2thM97f#~btx$>!kpNNb z^*9B?5&)47;^Z`IXz?-}p)&!VcnIQ3}S6r(l;$)EZsuObGh)yk%QIw(Xx-2<&@5n1VK^o4ZUMPkTd8Ek zsGg*>1+lyvfog!msN>l1OQ2-bw79E+@fm$Qs(oh5J>pOYBwB6dt~d7kpKt5YS$>xR ztO`P``G7XqYLN_vDVPe@80!B3WIW<=uBF_cXri|USM4lgjwIe+=+O|Z#xywS`(K&E zNP9*%o$Q-NSd?oKF9rumQ%UzdsGUr>mg-ZtY_MTrUR0oXl`VWn%ke8s{Zm2so^gCK z^c>4*xiCO?YA#FKR&MU0d{rEU6Wx=@Ao2nYbrmQpsp3tE8dy`@p6O(WgSg#@-L2dK z45jXS3=Q4Hhspsr8klY>uHaZGcRGWEGPxJ#Y~c5o!B-H2M8u_i;Fa6U^D1U5Eq^ZLPjO7m!;GShY5*|oXsIM}nWybo5aRKB*!4ro7xbiHVvx3%+cq9;X6EW4k>GIag&t3NV&o? ziJMUV39(aBUvTHJzHVWAtK@-g->H=m)JrA$YHIhDVV)zhoE*xX`WRY)77ChiF6(g) zxK4EzqfEd7nMLm7ZdFrg(`WGaMgiQ)7M9~m1Kwb>sJT5wT9~{%v)kiJzv&err-W%5iE>W9)wmN&?P|w&?S&$y`RJ&)DJ=itjejGhY_iap)#l1 zan4x*$4AMP3=@J)&%hOF&xSJBeGNW4A59tXW)c)(9Eo z%NPUvgv3J(#S6GI#3otYL@pQ1p%VbnWkxeO&<^j4^Bn=)S>u;!;x>Y%w0xb07Qv&# z*`8r&UFG6p!&^I;mCkwhj@1CQ>ye2-CksHCZ+g?D@DWg{05}LefUn2-vYi2d@J(D) z_sF|7aqEXmI!~t)Z8H;a?QHv*aKO}iuxu=wK}~fDD$(L4Y*ju4%?#3q6KOp{vZ+L8 z&ZhE$5h+mMA1tjDOg#j;m*Q&F6nLuTn-W(RN}wFfA;`iKqvqrOerI&A{{S+Ma+Bp{ z8X_Gth+L_;BiVr2ksc@HgSeJKlbG4mOxwbQbBSnQFd13uEQj5xn{VnTP-K?I?%NNyo=iDu(h z#2Igij$m?tk9N`KQPTl=owg>6#3+|V@5h*OYCm+hD6qGvI^E;Pb3Wlp&ftVU!Hzy8 zZd~N_uQ3tAA8Ae|!e#vz2h}iKgU&CAt)kUtu`XN?7TC4njtl{{W_>}cYM{3U$~mo} z@V>-Ff%wW@RtPHM5Wu0@Q>e{)RIfp#rd`rK?6mfN3?uwD5^VP@VmO_d!0r_05zMtz zzZ1xSsZ|gqz2r{>Xyzyy?8-PHgf*12e??SyzSy&9r))gJSeey>vOn|!Ex~+7A4N7t z>|q9Dx@v02!7&y%llL)rWepgB*cUEq3ELA#S)dPS)sM2HsDZ%_-K-dm*blTHrAF%6 zU#YroQZS54l*MSrg!zKOmy<8PUauIoE?vjtGXDTXt-a1G3@V3^jDBUjGqEXbfM@Q5 zO&vj13nOnks)c=ny8#Kas{Fb6`V~1BMih^@!&tr+Vq{$p^nwUl3$kkm%KIe-+{s3r zX~;=$(mb;Qc^96(An})k*;ERjX?(%#Ke7ZmYTNp$g~qpY#1_5b731aogu?h`{^N~8 z&Hn&V)$Ib5d-}GeO{fW``jp`xX!W%CfiCaL8AT6yc{k6P`57R*kl(|WRW9dY2)Ir>}!0H9))7}nuI0qJ;^I*kgjU8Teln1|*DhieKgSbj_?8SmP!17)_KK!q+RRyGackZllgT(iZW6rC zV9Kc6E;ldHCb^c%8;9iv=6U7r{dGxxr<`jv#&E*vnGqDsTTP2aFF2sx25=~2Q1ENv z)I-u1e2Cm09eD2m=jbf7R)IpZw11uE16_RWx&NSTnf)?r7eHe+Xuv4SF;5u-&-`h3NlT-?_Z zj$$XwPY`BVf0?SOVQHCFDsM1i6h+-;u2BrepzL+x0d|jay1=DfHvWdS)o&tHNo;!1!Y|q~d#f5)y(TxUPW-k!% zm`f)0Oj^}TWpqEejIH&u+T2V1Sd{rmv=5?rkv@M=Mf1_p!8xe z9Pt;q%+f%Ch+$)F$(To+sA_p*ISsLmN+2q0)5I#Mu8E4J9|CxH3wTYDA|t3(`A+5n z4UX4xu1Ur;?p}r&36J+JX|pY__ZNkkS;D1@>R)Y2<{}&FQtz2-duE(xaDfsWHp27S z91rr_m?hW23KqWW{J>qKoC#5SD>2aJ?>c{&_akpQg|j?+5Vde85EbOPRI}+3qD{e{ zMX-Gr3YR>+DcsvaoJB8is*Sw$2C3r4^8H1K!pDgk0jRsE@R{ycnX)2S6lM#gPN3^9 zPG|oBN*N_$$Vj=qrreJ%yum57(sL?WJ5*DO)15{ZVT5b|PKr|NWy2IJFOC6>T!W75eeeVj^{j_P@p^E1T1O!qCMsfRMzDT8i_ zSG>h@t(dzl9$?DC2f84o-!0CyP6Ahs~;ml~l z;X~5E^9(ewzY*#1dta_MF)=sF$Iw)kR2zw6P@b*l(!B_mbpdY^r6?=Zy{A!WVOZ|r z99+3~2!A*SLRooHlBMDqW;3p%;XSk47t|D6m_Fsb!uy$6nf@W*{{RA75@QZQ2oL0r ziq!}YU7}rn=3+v*WU78##G<%q^03t*|R-$3- z#7cg(Kl)KSZ_KuHLbGcTpFZ4Zl&kzc!&iAWJ;^k8j+g1S~f!5KJdh`i3`AgSgRba7O0XEX!*s zMc;`~r{<`MU}FZxP%R#1yrmG^k+maj0ymKQM|=agFby{c2=0-uG2osUsb`?X@=I|G zvY!2OBGaTqwvhmW$)G?sA)1TcKS4X`f}*y!aCArkVHL`0;U;N>cLH$=Po4D%LF+Sh z;{x!QG&JIHh(`0cSK2R>JD{&J(RwW|P;MUyxFR7CJ+N+L7@RE6VtJ24#e>}NC8kIc z_`xWU#hmwM6M;C_u1qwpI!>M65A!NUTr=z3#@Ts65usFVqjlqwaSA=PDQT9(7i=41~&OH2!TQ7goK!p2!p zGoYz##inB>bY9bWuxi!sEG#s#2fRSK=CRypoI~voPs)Rqg~QZ75-+{zM=k0;gEcKb zF!d}nh+VPi8##b(Q!ZQ>;pQtDvQ`{W7y#1P`hZwza|M}P8Fv81KsvuhUEHDb>Gr41zo-pD!i+Q9 zF9nzACVz;I4(2KE=tu?dgDO2BCDV7PvZ9!05>&q$VbCg=lvK}mEt#{3EZ$)%iC!f$ z;el5?a{WU2DT_8W64!Q8p}%X)ky-F8^d`}e^B5^T&03o<|GPl1~#p!T~ zHgm+^2w@(InU$pF1dBZYmacAqS5+Ch!-C$#GGIQ_#+UUtvF=-^prrCdQ1_kf@oWq83VYUe8aBIkRQ zkQ|k{reqyGTQGbqYb6P9Pfrq9(W zhF=78o4`~ovc+d19Wa;qm~#MVV6jX)<(g$UZdmYnK>)+JQ7^R5Zcq~vEN|4WC<@v* zGJ@`4fL-PrsqA3JKB!@@l3~O1GXDUWm4CMx-fEduQv-EU!K!6n>m7sj3ZLE+cFJlV z3`xT?pFWxNWgiGD!HTfdY-U|RE2tMT$IPOOl&BIQtL^5atrx zB0;%r!s_^1EGBNMu=57alPQeUzg@EFG1)nepraD=^EXo(qA=D|7?RrR7;~vp;E32s zg%(4EG8=}sE~6M6AUw@anSLeSnM0VDH}&a$mzKblnOlT%p@UDMhoSPjfcw+RAG#YJ zQcfsOb+1v6nZXVSEDR2b$jE}3K7hne0rX=XnMXQHy>biQ#D?cNF##G z_pd@Tq69QcDLWyHobii%hx#8eXv&uB&=(OD!fJig#o3`R)Y2VzLIuB2#{sqbp9mzw zj$dfXnEDU-Tzn9L9W@9oEaEY$hAOdHfb#@Zy(&2vu}>~|sYf(?OZgJq^OCca7nI~L zCaZvoMR#(Nmr$4rmn}w$?)a1=j{G2ppl--mZiWvOJ|<6=;>ue@!|ERacTwPX(-t#M z<5BtGrVsHkOt5O%rWTuk_I2?yQS4lDax;3rQoW9#a`eL=eEW`AWau6x%#X)Cv(US_x1ku2-gFv0$A= zj(sqOiJpwGP5PKqsf*MODeq2;o<>)>;>s9)Q0d3G`GlET1kVYPUog&&NEtL?gn+f- zO~T3$*17hEq@ExJ7}$488pTyw58}eq}ePyy9Yh;imI8s>HgiK^`GIAoT~tt*0dLp7Y7g zpN5$2%5&VccZtZuS-+66^xceU?=BUfd)z%JJ(wqP6JDA<;BvL%D(9%=Fzo_yDEP2g zoD#hs<9qZV%hWn$`W(nFFa&7%Z2AJ9_hM)mo9aR~+01JEvkyT^ja&JG?6U?J-eS7+(=B3V6%*Yn=$jK;r7o2KXUwHwzzrYD7=<9t zCP27};X|RQhCP(U3DD_F7pQ8b2T(t6sjfy6uzf>D7#}T= z^tgLtSfWr)6(36rsMiU8rTQMV=;@2ltP=_7DHMY2l$*=TcNca>?Sr1lZlx+mywZ;! z#_4{K~(Y*MF@pI@yq+fIr^`?8^EmoPnF{u9lHv|ivVZK-9 zHO-TNS^YkswPZD&M7BN6^Nz`Mq0G?-Lx|I0tmbGLF~4QR>DUQ}Ylfqj!J3vTVJzxu z3oEv`i9bSE=HC!_P+*-%ros&3_nd^_;yweEqoF}!pcM9(M#Q*k<8~FkhB(*E!IXGs z8&l5#s{|bAmN#%)bsr7aGYtGD_BchyEykte4jFi=OSWbOIYOJclz2YlM_LE!_GUPw zQz~hhi644l%+m(k)VU76{6fhW`^D5<3+@$`owJ$UD=x|HKy?v`7D2*exm~>!bqOlv zxQNHO4rLP9!SRoHhZ2*BokjGl3FcjM2(iq!bI<75k6ADri1@H-NX%VXiYbXtoOX#P~z!|dGFL(;cad7;zCZk+jHR`2CR33))E>UJu z*wkTxW;(hc+{zXRD^m+9%EFi+Vc7#V$}GG1j|J#@fLqJ@5SFar`1R@lvYP@{J%2WG zJs+*#8Lkn35%eKZCk(++q&tnjg?ids_#5@=1S>s9*K^4&3gGmH<(fuZSQ}>G0YjAI z1bk2diU&lY^bBFeDo4NYjn!fJCTX|l&*>NSS10*p5mlZPa~yv(MZBW-%oE{>g>O zD%&Fv`ad>{kSs59G!#p_n{E>sPK$0#%-Cj?uqrq^WmSj4gxjs~X1TJrYma%J47ij9 z^gWw@npCer>xfBxnvM@-Vrz=vZ~4;Nj^6}bo&%ub5*gdwbu4J)`_6AmggZGuFarMo zCr}LwC3Jh7c$xI5O^8E--DsL87gO;nzUPAkv&m=f=6lY6SN+CB^sD_#R;cp~%V!GS z^4)_kY-6Y^Ab~3@;;FBLWLuPIIkrI_vk07swm0G`jp$%`J*I?iZ@9l>uBp>U9dxsbE*A2q*H#HE-39i#D= zcuFU=#HGqV!!yKt#;vJb(KUgV(DSgkow#05DR=mpHz(xc-?ID&6;50HP0RTjGOU4- zW2t23F(rfXEY~M9P2Oi*ux*-}y*inj%zQ*!n2oSaKshkLy{njvz9NA$?4Lmjy)f|R z4wo>e8kW68!7BAU$BLH-`cS;iBGYs6f!yGtRIgI^je(y&fUDt`T1s%0JPuT=Fm2rb z0IJ}xRfMZ=hzTxFs@DGi=_;)`2lwmktiw;Es+9xR*XX~%{x^w{I0PsVYySWWC3HfY z{1ETMW&NiZB4*!H8wlqyogUtd7|IyoMm-3@mmf=!Ntp8l23tGe`1Kiiz_3-1^#t3q zznE`Z^W-Np10}y-5&ONa7)ocDGMfC$^XkfjdJ0?(56rTvwQXKvI5Epp{{Xnl&TnF7 z$J#3E;*{So#Fntb9B?WNvqp*Bf%1QX2l=}7s3mg+d5W$Q(u*X&;>V|b)4?isLlnOq z@_jBinDt)yY?wij=4EQPh4Onwn#r)g+03bnlm%MoHo*S8oy&5{3GVhk3;<$q+BRXv=X&mhYQd}Xa zAWbsiN6)?>xP{Uj2-!Z<+=M7EVX+xCl~DW%B)lFfco z7SQkFJRfx6Y?ky2c$qa7ABUlWpgW04gn5A&XSNHN_CZP_6+NNoWp4cWPozBWdpf>)4U?pJI( zW)4sfIJMCN?gFs6vlH}+uQSLWVY4)qtLF{%gY!E1KS@F|a&EMt;2Z5>o=kt6;hEO^BE zf%G?-z#@?CJ|)_XP)$VK7V?jFkL*1j!Kwq^9L8QOiUwMlE*CuN{XwMGXF(V5)zg;3 z4~bU&9-+eWkH4V5O*8W$&#qzWI-fqaT+(R^xACu6{I03$J9BpqMhls0tBw-oBj_fd zTT*=W=u3YB%5!YVX|)%h^p1tAYV-UUV$yxaKNR+3QE!!bW-t9>22U+Qv34I4jMp+a z6${#KaE>or=DB_08ebrl{0OFI3M=xsw-*xd$4lQY{70brD|&im{eAr}EPZlmjfJdN zd1K|wCCiKlsW2LURDTOEXdcaBKe8%rk$aCL#M=+A_#vqHDO-W2{6#Hl;D^Y>)5EoQ zt0Ee8fxk&>xb|OA+xS6WX}J@Y8wu z*k9Dk!HO}QAb9@(GUbUK67hd=EoNXI2}eXCd}c;omEvZE+@gEs&S$h*vjI%PRJIg^ zSoJxHWLl`Ja2cOV%(=Nfq2ens!X*)7#Ing!yWrjXOA|#unPVT3o+4k&O~3V0@hsc;oJ&1qgrx$2l_-3xQ+ht)bV*|~CCUuYC>-?MBBxMT#U2p4hOPeqG75*V6kv;`io;Sr9!g!SngLM`OVBPQz`d8LF41m+2-*SFZoi#jJ~&&WbT1%%6;#+ zH*c>ea9)La(&~4T`1W z?N8`JiZ;&E`-|UVSNMnyO6)M072;8)l*_rykzlN`lc+qg{fSIB%Pt{RMOL6IcPu!C zHB)6YoJYAS=L6hQ!5cbwlq_K@xoG01HGP?yaN9_R7I6qi(O9V7Mpz&a9Lsar%z5&?s>O#9z#|%oSrWm~uv; z#{M(Q(Qsz!<6Xea)0kU}DvAF9c+%q4=oa|F=%QkL!P$j9FT}qPwD^@4BU9c*d47*b zx3YU89bCwkap_ciBXC|L6q|v+(mF8wMOTv&`3Q{dDVg}@7d*zqF~bg}x@J-L8yWO$ z>p1@7Y5xG4o(RpW#CVzXsFJesaRYS;yHgbyyhSNcLa}d%UfJ6*TOI|G=1yY9CQqG8 z;s;-eLySggcJwalij-QY8Y%ftCdt4Gi(q>q+_7GTC3@$MIw6m7aZDNV!G_V&W~r2S zacBZ5T&RFoh(Gx+Jdhal)tn6?eY4cP>FN6LE2)O+Eiu;RI1mnVGr3Gio{yvLjIcQL ze35=2_}A?nxbtue%sHxdWEKWJ^dNQQgK@2wz)6v6IXcVuWwh7r0ZDT#R@V zZDT3nnHNM@Hl_+Z^nXk7g6D~}OcmZaoC!kJBD(swF0l;Ab(DZITU zyJfdA$vCKi;xutQW9TgADvin#*yf;isNlq09%y*XqHZhPuX4S`{tBlOj;1iKC;M#e zA~Ff>H&lRb4#`+yFJw>t^n6hfqvOP56@~qJCFy&fDeQ4ARs6HVux^snwSOCrs#>$m zF%<|#O^cKl^XFp!0LLpS5Se{fU&LlIy|FJjoJzgKIM^OQ!M#kZ* zy-OON!5(=JP!6A&lG(PRmov&fASPD2CIW4VrIExsB_`vujHv)|2hi>msPl=y9KdmF zC%PqQ9+FXZtUwHX!l{}bNC(m0=SV>%(0kzY*qSoym}Ql061@O(YwtLrDpRNqp-rfi zbA`E?b0|t7`AoQ$h;aa{@h)7g5lFL&7PZfzJuc5eZ2D#}fjT28IosRPx`%ImNkhTR z7c3#*h7*)bjjq3dDq$Ek5Adff+z)M?nj*bw&+$NI$1n~!8dKDLj7PiF%h@gH@cYd1 z%Z%uh6Nr^A97`$=`|JD%r81JnTD8!3D#VOUW&9V{Qor6{wMV~o%vzP;dwPnLTDHBf zrTSm3{{Z8`=o9TOGNSh`*zNuVsa~;Y68izn3Q3Avejs+w-B=@A;ZqSDMnbBMmjwAf z;n&Ym;4x~4;!&-oTTf)HAd=PS9TA;DI)oN+cN>P4BM(dj6U^=jO~)J%)K=n|30D&M z5i!hLwqTBYo@wSsRYv11)jDQ`Vy;W7$+y$Yfb&rtd4Ut=s}nACR$17jbl+)AG;1{(mq;}W$f@$>}; z(T*W*vlZ%K=4HjOioUp)9p`2;ElY6vghE`xRqJzA817=T?gKSXg2`G zi}jSu==Vqf?5W3F}Q;6RYZ!O)8)Wv5}AtT11j&)MIV`acPcW7 zo|}3bMe!*2h4!bMA39`$JIawRh<~LhSzl^pwE` zj2n0nT(Rl2ujB0iO|Ca=-d_H{m4D|@u?l)YZF(02(NHB34*fzCgs^0xF2H_eEpD0Od~}~ z&b;C|>0MXlU~g3kkxOf+5>Xn91U(W6&DJMn#E_H|0}YzZt%Nim^^y89i zKBb$F1h+{o-AnV#QMYmHiO;U!PW|Tu_(8Rl^sCk5VU_E}`pSbQWM)^O+G*-IAhGDW zgG|gy^?p{ANy26RJz}jSwLA5e2iALhF!S+SCs+g1%P{>N{ zLxMPqG4lR|AP`D?T&f^N$gioEsvegZF^acPW8{?0z^ucT@XB?CllL>6C8}^vC=$7G z0_I#stz1)syKR-!#<`ZwlclB(c#Zl7V&HvE>f%0x4KVcIt4GvHkpk?LLd0jsFej@2 z00hW9%7QWUF z;!%yoJJh*b^aWhGy*`(&m`>T}hxiGi9msf5K1d#9_7EnILW|MK6n!~83<~iXSMo){ zV}R{+e9Af9d(HVno0MmXkqRYZa_i|%j^j{gsQ54?<;U?L4U&=5&36`D(l9PKk=$#z z6kFr(xBmc2^sh?(7cEr={X$ppDYcG5{h?HooTWXdGIw}94{RrqEX|{Srf(=2WliUS zE#(JTj-VKaOkST6gjblZ;*q*Cw#cU`5ZBr>BE#c1w%Xg^lmBa@^9ABKV(hP<2m`-CWMk|a$lcPK4Eh;_p z3wB+!#~Od*Q01!2tC>{I+&5e_9W))akM)?p6#R%F^h*7s=f)qo&w+tudQ>$vSIlk} znOa6fBarS4qk=h^TB?xCy_BVRs!%t&u5YI%-kONUl~HkC7aYiCmAM$#D!o zzKqg<@#-i#&!T`b%5bT+KLt!B`;E8Nu>unB;6a!%mY_hkW(OPoWHfSrbN5mB3&b0` zh#99>190NwGS011$l5})m92eYKr}xAUA9S||-5zYc`Vqxu3E_i=_D^amH=BGRPI8_xjj%i; zw-V}7z{g=c6Fif8^frg0RApGw3|283+*-)?PSh73&L@bAH!((4YUR`Y%XmIzl}N?aU)Q6bC6aXXR4E@0w5 z%sOG_QE9}k#P7_)`ijvD=|k%f1Rk<2O4{O&qNmCWcw{aqpMz&4)*DG} zojgYkyfG=bQSF!n@|!1;RSt6tpxF;X5o;Ql2y4}3FX4^mD-5hvDO-Q6D8A5lA!Hba zgKM2Vp+||tB}n-9mW=-Z1PG4hGdwU-pTLDy>NmCL(1_)@%FZZ4D*hv0o0SE9<&FDW zu$AezU-&Ig!;Vj+ej!uCOJO*}Uc{jDV|wtwkfl`GPvdQ`7czlPKxF+Yq2Tn*ibZQB!6OL0Ouz`euER~F+bvsr%E zpswgBNC*JO@Ma7k`XL6LdJGNCO!VI|a2sZcYq$ijNJzk?rTsu-ZIK*6wU=**4SleJ zS^f~fe;9Izw?9m#7FS4TTa@a7f2MnXQvK4!lB0kV9)>NF($gMc6^XJxf*(bux|Smy zKwvNwa}vwM9f?@cxaiFm$lr4=3GgNOmEsnI)Wx_$y$)#~NG)tv6AosN^oi^~V!+$& z9@Bc?bIJRbOZ%sac2A;i-Q=1L{H`uXd=4RZe`uy(xl8?^Z8KSaGg3K}tbQSuq81QA zaNZckg;;|C;cHAV04+sl+F?NQRsBudQ!LN$7EBP;sw`8i%;fGRWMnqi}R? zQlT(RwmjbxOvAU(aont6iI)B2#hLhm$C->0rN#Lkr>2*N%9vt0jw03NB4J z01+|-0_3zu(LaIPRj7W^Ew?KQ%E9eD#gyR-A;bP559NSA_|jBhiif5>0P?u{U{+C? z_m-weew)~r)XU7)a|)(q9bm>GLFP~fh!hWRLnI>S%pd?Gf51szfMt30sUhtu8^&%# zz&)@esejJ@0D^&5F1)?RjD8tbh|Iw#<@%n~0Oh_VMJN%cp^UhClUa%#nO&G=zud1E zGw_df!a-@n1@L;|*ARUJ#Rsf<2esoNfjZbBC*fsDL! zQAdUEJAv)?iG(QG^oV8sN_ak^ztw=zY%9q ztUIz%!*Eid%7ShMgWLlMV>IL%znB(NWXhh{c0&(OK-SG4h-zj_e7r(K1{02$N_K}3 zyPJ&l5EWU5QJl8*?-he1Pp0^N8;eo?3j3qnCl=iaP>*zG{YyGT0PmRYmiI@v;VL=zluH%1IY!~uA1>vE z4kK8Yw}GY^aMUb@LH_`ie=C^L5xBXV)9E0;#{ClFgiGpZVvXmS;QYbqeZzq}f-X+x zUtRenYhaZ!FNs1nGbY9#a6JBUo&Ff@Q22t~MW(D++-ccgXw@e&gbW!w6}VL%+&Gm> zGOH4$<8sJjBsSJ=*z_WuMK$~X00G2i?Ee6SF*%H-cwPD?7m1KgB+O&hyvrOY3;2f@ zH4OyZX)P|3BM7nkAsRz;j2TYuTez&|Y7;$i>v7$Mcx3_9s7rXp{OT%$#7`Mtb8!?u zwA}5BEU^(j7U7~Qm+DN4tgT*C--)!&UHSh2(29ZSUWf1?%k&1War6}9lQ1eMqZkcL z%*e0OU>!_I73~Djit>ENk^RgC&ZT4SR~htGbL(=+XY#l}^A**OSR!(qNqQs-^jMz1 zibK-X=Z|?|aK7@zPF!xK!y zm|U~yeQ&%Jl)i-fV$wC#F{oQ}$va`&FLyk6caT|PUV2@ymF0IbYG8xYN1%8_WnFRG z7r=Z$%6cZs=s1Hj_)UQvm-vVkb7m$qhpCvqii7hYx|%r4s*r$+lgA3bByb-rU6Ep0 z;6ZNPMOI=SQjX9LdxhS~YepR(GPa=Ks?TSk=2DiamNK&zGq@^M!cr!OJn;%Q1aWX7 zewWln;H~R0<~C|sC_fN`=;w*A-}tW$F^iZ+0A`+N;$_VxsYY9Ia{gt&w#+EC_(wA- ziibHU(*9D)Xiew=6@5_nI*uMJ|>?{%!eoN z7R#b4t7YSgoO!Iofs%<#QCXA$hOSu|>L3i}WG`vq%kX;LOM@)-lb484tOM9XJ?>)E zwN=}nK{f%TS9prug1;mW{VVtqr*frwRKtkexbA`vE6PD=F$}C+KqJlob@J+DQjYAS z!m_fxkqwDnph@qHiV0}l{^(Qvzt9%b$#*)+e!=lsKA?EHr(X ziz2*n1DlJe{{UHG$?NRGP}2!Nh19rW7ZrR(X4rC-ruPn@Iwy22iZPAPh_6B&LE;Ow zkIdtUfw)VRxckiO<0(rvdqxzAHBKFsQ-Y-4}^Wrpw2t7l?l? zBPzD8^Bb1FB3{2OvwPqO-5)em0(V3fPh&_70eh{bXIAPf2EUmWUW(}2F<#E7{{TID zDJ#|S=rt&OKCi+nV6kCqD~QF^Zz@72e+3jQ8kGRFdl925XLkPp5;C_UtDu(z@8%C@ zY`K1xfZ_m+ah%+$k_MeS5Wa@|er2oXD?j&J)tN*zgcJ;9VxK!1KG-i9DlF7c5m8m! zK^ZjL%=|K_rZ1oFR%r6((Vpie%i}0x%ZmuZc3 z2h&3L4w^4%L~6BJtfVUrOv_Pzmme6!#hCoXvDB$R@J}`yDF8QTj-@x;$lTIhOiNolJ1)d^!5{;Owm}V=*r@0X}Ai1swh;PC< znwaf_ViMxrOBjuqb3RC3g*`y@wlb-3_m=J-58SK$piSd}Lk9zCQ`-{>I|y^H#G;os z{T3}{P&WhUpZqA2HS;sSG{1zoY&h{P?mo6)-U*a(Yp&K*Y`eBbZ_lNHC#l&26v^yr z?pn$beUHq4O1SzGFqUc=oTeE$m9})jUKcX#)iW+|!JD&*@#r3noLpCM3c)om%-iVH z&Ay#O(<{zN!c!_}%+ca)>0t92dF3+(814hPToSTcQdR}Pt`AHuM%U1c8;kU{1LiMr zT9@H`6M#S($moe`N}8Bw%%Z5Yr0p(pO^Lhz0Ik&v^Du_mrVhkAbsWJPAEFFQMdlZg zPb-$Rei#)=FVWv-7Rd}uHSx58yp6qm~|?X8jEQ4?!>i z2*7p2~N=$$XJ*=&b&ubq-Wf-{AG~zW+0o2;WfS7CEGjWvV zN0t-cXkGyyqMnh(1~nfEZ1f^=tveh$vuVsof(ZkLrt?ye35F355(A+w2V_&S1<;;p zlNA_2?osH`9^4)VU8KxV7wJOjLIX4svIK164Wy1TCzJOV%kE%mQ4Xda zV{RwAI)2GV{{Ux+`;>pY0(_BKzr@9%9CDu${mq>~6^Gt%$IqlIxQF}_mLtZA!w0rh z!C2JAm2jl?sd4(nlCaFb>$uHAjP{~_9I_s-#$LMMjZ&yRmf-4&Ha#h+U&An94PP^! z9wpCo*zp^B1HDAkewQv1&k!WHycyKE&p)k@NI<%lwz)9yLy%8&%GP|$N{>a#ONAJk zhIoL>K7bW$qjMnHUCmrXaFm*-=h0aOB|-}==Qj{0tOBW(6x^2O{2WeUwUh?D&xwEd zSNav)!`W{T0EToU*&9Zj2HqED>^;-{tA6;&*C}7 zg3ixc^gRiG$vrR7K%H?2qxH}w7?z_lqP6HF7G0Aghn725sMig}z_+^vr^XfXK=~qj zmNzz~CQw%t(iAkoLkn{*F=);ocvOQqN~#dSLX}%CX}e2yxPv*0;#^I%z?>%uFQ4|28X@x_a+Vdjf~zwYE80E&h(K*JqcH(!nv46H*#2gBujVDy@i+ef zNF7sO6TzOAIE+%n&v1g=!D7rq(jnB$@3?CUa|%uRgSrM6zMBEERHTXBP9vDxakz?? z2xG5BI81GwF)dGJv9#Iu4h!_2SEfAJTmBJFE$ul^@fPlX{mHbIJ+rBncXFOr;s7|6 zkwEPmPe`HYP4ZO0o?<<@hGpGWruAMWLoK!XQJ(dQOx?lGVfN}qZT|oi3w@Ur#`}lx zx7Hkf#8yMB%|T<lc(dMdc@a*5`Ik8Cqt z#$@pes-*Bn>x=W~ypsJ4OiP#PfB9Me03n!zKhiT=gj*XPXosc$0QhUr>sNRAmEm&S z#=;mah!2cEui_Y&DkhU}LG)$W33y3x)LMIjqL2nIFi^eFZDA7aBq#h&1DdbpczXo7E0AKn6x#ishGm&V?5{7yRv&nq;(d{HcY+#b1JOG22#GF zDa0D6r^LL#f@7OxcWp5Q(kSjGCxU1|Tub^@>VJ`z-4d9DzNJRubpV$#5lO>03Szm8 zS}KUu<^zmOirh1pyQGx4i%9Pf!h&JNJ*JSl>SNqEAB5cWWnbw#gYhiu>Sz8r;{D72 z0Nyu(nddFtz^>VSj8jN8goAezX(JY?0WPy$N@G>&gd1fl#j8(}9wTX~d%k7a>lO2I z<%-3O=I2SGEG8nBKR~x$c37EBunkY{XXfN>Um(4V47hE19>Y&H7aNoaeF==h5OP z?>bZ42cJ&(^Gkb{_b<=>7ykg~s{vmMLN3^?{Q^)rI0LN6aAnqq#mFTE?RH;ye!hFE<4RHW1YCF!~xWiZiii*bb z9P7{|5}giNO$=@cCk-3kSpj@Yqj$ti>J~G&;VQ!gvl^O;2(zMiu3;uM$9UvQsKlvxp$Ur5WuUIm4g%27DMVEGUe7-sZ1R}`NVfmxejIci=y%A$NvCq z^I#;P-!kq|bv4fCvKD2)irhP*1(LF(R={TQkI$NP{6t`P5KhcqDj1hj9)T&bUZ9K3 zF!Mqk(2&k&nl;NV5EW1ynN9Nm2?Auqwe)Cf6KbhnFx06=Qgne>q`Uc)Y_dGpI1>9h zga?jQ{s{1V<7B7H?hgTtB^=8+9}?aDqr*tH3|vb$aUN!gU@PZSG{>V)p;`4XqlAK7 z$7ufD!Er3``rKo;63R}_(unPvd`$9!&r#R2BP!2%b`dJSmC6Xf&$Jg5Ig~2`=C=$u zm+C*mGTHGI^DDIGTbqVXWNB4R(SbC(kNKPDy& zSj^0y#3)V(T27;V8i4tY`Q$dM{7{XpO9rqZg^qLl?p$>^CB*vN_?7$spAzaU1ZdQs zeGf9L?t0&7WdKJ<&`_zL6PW)1P%dH!rRUP%k0L(<(&r`)Wjtlx<+C=HTnb>A%$9SM zmO--#;SW@LBQ5whDy+biGh9Rx*xD9LF6Iz-Y z%YpDfH!{hXF$AZm7>A6u2|YVZ%Q}=q8kW=sqtXl}ZQ+|ii44FV5}G67D8QFe?3f|Z zIye@o3pD-AO8mVmTFz5hmo~U&XM*Lf$f%}a_L!J?my-;_o5j4woIu27JYT8e`cEa6 zwfmOa`aYCThCD2*disEK`t-(F7`EzFhJ8f;0211tpNJ^^BH3_h3lnF1uVa~X=?@`h z((ATn?`WkG_3;Hdf*XOp1p}XmX_z51YnRL${uLRhnusiAQZ!|lGd7;jN6YvU;vc}w zx$KV#`5*op)%sMaQon=z4^z-JM8kJ(AzrnQPd!QSLo?m|#kT!SUrN8^b!S>xQ3TrC3u7^1hjRR^1OO5{v-S)WIV+H1QQ>AW@MNA z4oJ$ITkJ{&kP)23v#z0_Lj&PY@A)pT_WuCRij@HYDp#d?U#2A>{{R3Yn+yaB#IBge zDikm!yO$_qTc^aSRZ-g>V_mq}WJ4AAi<(gs1r;z8OE+-@;9y*^3mgt(2Ktwzqli(e zohVbxb;L_g5f`?l?K~wHtPsUUp#~+1M%NR#>~oZ?)(oiJeB+1{5~}A}O*Ja&awtrf z9d`u`5nVmwtpuct&BMKX$NlUFl-pckzd#;KiW(R|yxqVJKvt!kPOQnOXT+mAAg^&` zb?whh!TnQTnvJL&_8ex*i(4S@6~i9}g>l*W0b`}8Z8v|$z;Lfrb55kq^q z;DjTFb^eq80GAH)(?`VUe{;%*i79g}wJgImDdKy=csl$tn|Zj^L{*JIUIQa8a~>55 zt1f&JxXoWa34n(G01o$g^w^lfGvneVohBBXVmu{Soyd3_8Vc%QvvNE>obFVwOY~(4 zS0JdtlG+PG2*>dSdO44)2uz_!*=)VRIHHo?6}X}$&unxsk^tR1@Ay=&;zm3~rf>fM zBh(;zD64BtFR~#nPUECX&Y#xB+ohG9T(CbgtY?-hh?p5rgPbt`aE-!Q7xJlVhd|0n6b1!rY15o zJj&MPml?`PzeQ9pP6M!h#6Sh=Ezhn&<`NZDT#Z;7h&KJqRbu_0?! zbV}!#mdk&djKQuI7|W9r6XpOfWW+{XZs2;iG4A8mkoK9a)W&?o+7)_I{-8luFB5nb z#InZF@#a_logmW&qv>+}5AYA*iGnP??vfD$K=+lJoKB5@iLXNiY}g%SVDwZ|*+tUx zHuWjS@7{y=5(j5~{{Y2|yGZyVm*N9yrPX=WAH{#c{&(pY;-9PsLms0KDQ?mv;eu9% zf6S-qBho3+zbEpgh|F_uO8zzJP(3P9EBMx}xF=4(Fn4`pQ6l28N zEc7`UYx15HLd>Y6h7o(^_0M8w!g-+mD(Y1=7`em=dCRip)XH&8>MiCPGL-0-=B6d| zS43gHA#r77g3+l^hbiuvgoXHx&t$e{W@H$y5G9ex;fem_3@|@4KIO?pWrTA%iO|Q2 zdTJ|BZYt&q<`$50OVtdSJ?9xCOPz5ok@FjPe36((&Ahjps)+522s}Z4AyI0)v4J$o zj- zJ#>Lg<6O$eCV#?Un&tArF9b6#{-63>H*-hO{{YcbDyncs4b7=@5p;$opCh&Y8y<}C zpB`_i?S$0yZeXRQ?+4UPJB;~f(xxHlt0Et?RPD^N!*cT+^X)9xu8O??mnQKkT`xX) zlm7sfKlsoYd66sPC51|-{dj{0ZX4qWZE@`=FPed1%_Gi3$~IzwS+@sR{y|E3iynOm zU&_Ck6$93;T}$kq3DJ;^d4;mZ(f}1G>MSy-j3Wt9{K07&>%_>vNWN|?<@GGr%>m%P z(t=g2TVe)M1-I%#pGK<_$q}#}U|pZI@F9@LDZo zB*#_J>RoWF&4hUj3!rbYP@CYS4#WGHsK-{(OUxBsaA#!KGMS$wZw035+!a{Q4JA9} zy0}482*#y5mlj{GgvIEW=&4erAWD@5MTVy{=hH@CQkH0z34<&|&})~tlD#YWANU;q z03+6=OQCKFPVI!LU<#YmumPE08HlF-!}tqh=~A_Ax`z^@8Bq%1_Kp5f^$;R?Fu^ku z#7fL-V6Y9ifqNkOMDVn%`MrK7XTD)@LeinRQkb4)`=02s(NCmYdXf640W6D(B`3@% zUF%!vYT?AHxw?v;a9zAF+^^wYm;(O*@Q0x({%4^XPoSz9V9%3$2XXkzyKzTQ&H4n% znB3%m_FlVyrP2>?=ReJH4xgAeDmPe?ou2ISusw;Ei9}spMKII6Ui}9tA=P7FK4qiC zI;eP0cxXs!p{4XrA#%g2VCH2h)Xj)(GC&%O0O3F$zg~%)YI}(EOR%u8tx8BX<*Ny* zOWHHZDxQg52zY)V_JLuE2I}#sXX%1vQ#Ao{&?PLC)MYCrCcz|97UDf}jvzZj5Pu20 z#)Q(1w5ksCE3Rc0r8*-AywtJc9upFsKy@ti9TCjMFd`jwG)Fg5U1?*(9!YxhIgsds z)am<6n;~6A=?Ht7xRTH_(Vj9Ie^w_b!ma9H5shFPh>KG9915EA74080wc=(45LrMs zhBT=xI5LYnyWLAJS?#!CIvAW6y*D|CX(B*U5oX|XhxjhUaXpN#vjO1LBABgt#J_jH znDF->5M`g-gW(A>kA(edF`PH~i`NU7Tv2x>^#kb-gGwVZ!;UZae@3X zCccBgC-)7*>1U45u^P(keFA$+7z>lM1UR0_{$&;m`c3>x54*XlW-BpN^KM}X8HX@+ zo*+n`;pgbAWt-RRO2`tSOwI&t-R-`_6bGB!&MAMQUfR0$8kYx?3;FCw0YO{|wkZ5x zA0Nu4e>(L&Djt;0{{VwA7kJh}!IEC!^BA~GDu9ky4XcTu;VLK^^rT~nN#Wc+j}aWd zQrZx7f@~(EP_V(aLH+L;y_I;H-?WKw{jfcMw+} zQ63}4kGCGjr1{IjH)9j3Duv+&Bo$2*n) zg%b)b@ixIRqriQUC8S0~)I`}V6S%3JT+kSCEOtkkXV$x!z#u4IE;Ki&4NP2)*uf&o zaf^^e%jRj+yC=$>7v?S1bdr_9$7q!WuHnqn0n_|k$E>`s{4N~JgrZ~8@m`d4x`U?} z{suu5t;+a4LeJBf^+Ux-IWhb~CHqF;G#DVPe*vlA)iNK!T_CUcPblxuLoU03^*2|{ zB7PF0!bjjgFYy>Ao|t>1^A7z@I~YGmJpwpkb>ED{a0^;JS)0LH+P&h>3`&ud#K2j% z>Qp7gdIrCNQ{yMm9Uf&dQ#6hJ#k3wNFD|ICo&bu%syq?e1(SfmCMFUcqku32vbIKc4__tC=E zUBnaOc1IjUYNJJ4a0|l$SwSW}3z7=pXEN|#0A_{jD z$KD+?oyPYlUI5VXOz{M8BLU(bsp3?&9-qZhq97W~z2uktOu~QF2y^MVbi{A|78db` zyD|1e?g?JgH$=1MH8MnSTNIjW_#71aj(sZ$r9vIPs8rkh2pBUNcGgzeM;uNDSL;Xc zIXxbrw3cSN$J7*JgrReP!8i2)`|HbzrhRT!<;Q@B#3;~?{*v4uad|TRK4){NOZ3VM z-1kEbj5F?gu?s2N%N8UmZ;M?7<7l$DOxJu=50b5G{G_)67r*%8BTP^I>L0*rU-79? zAns5EVSgwkL0YMCq`6me!BaERgUMW>rK-M2%?e(*xqK_1Ae;vKO1VCwu84LBd6OkI zEy0((#f<#HM$Sal%vm=wnV6$7ih==YDq7T`sL4^nkRus`LQpyrcvF6WxyJY*nQlkS z3%G*gxL#u6!dcKgpz523^8Wy5SeCdSQyDu=^C>!gndN=JWltYSwki6LdQ#ji2w9Jx zq*6Hsqkr(tB6~z^`c2}OnlZ{zI)3D%qRJXVcMb^jPH`t>#}N3R9-P!juXal|MoM=G z(qN2b^b-We^DnXja$G#7Fb6ImLe64qa^1m2h&k<+t#)1h(W44*?ZFXdEatq*be59b zO~p0)L^m!9RK4R~Nu0B&cO@(`Kp!|SCOAyLuN-IcjgfB%ZLLo$HNN6?h5bio7F|yl zpE!-l(6P6~=on($U!TaRoX3F>FdmNwto#g{{RWf3VCA28DGGZ z4>F0uW*xhPsK8&ra`Wc>-@xWGXic00H!dhjbhqXlL(>cGpEvFdzeJiYUC~+l!dc?; zGXPp!^O>`kRrFwtU+^DOGlvIJwqA+)bRTJDMk-M(l?4fOxLQz#ww5 zcn@T-J}(OY01r`R{r>>@E70^{SD^$8WBUA`iANAh9Ll)hYcO2P##F-H>SwEEfLE-? zODWV_V!UV2S*69`E&yObaG_$khL_Q=l^J^27XwpRi#4rG)h!gHMP-C?nZQ+;n6^35if1BGS2Ik_KUiXo}Pv#W9H&N`OjbJr8(qf24b^C8r;B+c9cffmPn* zBVc?LEsQUPE^z+h2F!KlOO#v0Sw%(qDsD5WWDtka`JxBT3n~x>7?k%4?1|~i`!JGr zs72t8q%`iaUCm5G=pp|AGF9FpmatbB2#XzVD0gvACjk&o3}175Wv@PgxD^V6JBH&? zRA7#!^%HS|01?a^zp^NTMf#RtB0MoZ8HOP!o1St#N7NJi5e*WVa)(hm)bgctjkNAz z5GUb}FkduQI(G4V$^c#}GMP^O5iM+BpwVicv9nGqD6H@W@ z5f=dB2J3-fg>yN<4RF(b3d{3u}Npj>KPLgpqr>$G?3MLlCNXBb`y1&c8{=lK32 zh7o0kAC;&f@flC6&Z2iL?t{mYpI)i9p!Vul)rgyh0Y{v@3GDi~^tKKq{Q3l| z+@nNaaF78kV=d^b=Ja8>3OxszrsIrV!YYH0ZGR3aS8WVk;MDE>2ETwyH+t}bx3*p8 zTQMpF`d`E>liOt>3~)H_lGf9!*HD}(qGM~+7hW~9zM@`Twl`#s>)tZ$># zYU1M8g3$PxYB^TXy>HWAygZ-G^uI&a{cF)>&H9iUCHd=<3+5DZx|uT-i&EnTAkshs zBGtH$v_z_U1J8e%Rv)@PGdxfbhTzO4OSxFlLPuN`mQN_^9#cIF?l|odj-vXMMJP_E zkLqI#;>kWfW4}ZveR>YeIdKP+SfO5HLD@7t7W_MusEh%qI?f@C8{7u7XpG)>&1_r= zr4rrcn3IAS?#bH|#*aZ5x@oNzF@|eh=Z`67osKv=H^|%+*i5F zaPo~gBNvqCs2XO;R2~xTz*eV(Y?;XPLoG)d#6v8vMUv_?f^#W&jpksY6M1M*fpIDh zbu%n;4h4$a#IT_Y;`*28>x=?Nw54kP(DRSPzoJ4IU)Y##_aDDxEX+r&@8 znNjLHe?E)kmK`zZhrSmuyvMMWy~_(H1eQ8y8R9a7&6sb*Wm27g3ippu;yC_o%Ia2G z#O7pKaC}3sJ|mCs_#1s}Liv_wy20@^^)IU7eI2LmIESUnoJGTNL*<#Q-58Z& zTg1YV%ka2CcLgs9&zVnDbf}gdW0Jfo?U*O_{$GImFn)sQi-Sk019P)1JEu$mHb-Vs71Y0Sj4&!S~Dc%`K;vvY(a0J{`eY0>Nn_vyFx-l-b zoAm@K9}`lkoQPKG8-{bAna##_dnRI@1DX9S5+A~F8F`DumG045E|lYYdII%Wn5vHg zKpUujC3uHfq*q5Uu-N>--AB9Wt^gB$anITl7kvYg?W+|37>XuPL@65%hd2b_Zs#Y4?w{zHStwON1vXYCtm+#D&k%z` zG4lgo2ktG;5o66B#25Fy}Pc6W7 z)B%R&nP7~57aH|5yUHE^0Etd=Y+K})8G!EDdXhbL1sbkh%T}W0WJ8j~4qBao=4l#5 z%_EvlsBQEFDw%31YEjpwQY)!T^!G7Jva#ft$#nK+RY0oMTpccB7CNK z5IsaDqfbLLm#ErBWyHeC8tc%Q%0qvWAD^c%1m)vNT@_0XtwOK;ej}VHU8QiYA zIX6K7KJF_j9z}>1EId;LQL+qexv|=9mteuM8fWzddkUBin~vq`$D5V{?kXmVASKp! z+GIj@1i)dby~7<07JuE6)iSn1m;EMUYA%JinaHOOBgjp7ye$`9aRtcD##OBNg4#v2 zZ_0AVrFs(L`TiA|S&<2hcl;^pc@xWta*4T*H_~hm;(rbQ06i*H!zs?-jRoa^6on#| zyI*!+!2TZ4FYXL_<*e!R21!$hf)636H|fq|71>=7H@7Q@o48_F7!Bz3RJl^6 zM-U}K5L<&bYpKsNJQisHG-fbt-Yoq~N7mHdbvgmw@xxdz_IX-KL%nNz6u6ogkmkjHFpTS&!S(U9LI@pCHqu2!vJ$H&|Sh( zH4F(V1h_+-2+pt8wkeXrT(D|*AskM%J4^#ga|;CYo=M`$abyV2pSjN)a|aCQrVFe1 zi%Og3qcQK^6w~&&3$fg$Q`|!FKT@%eox_p*%E>YLi@2v?pfUywg*D_)y6H1s^da#gQ7UM_OJ22n5%5K`GXTMxmU=CaP(`Y@c0N69)ry-6vg}c zi;rX82R;#$si^HozA99yUX>~my(gtmkjhF7vh>B@m4Dnr<|5lI@d9WYF98MBn9fTl z)UwQ_b#LM=0r4XI5AH0u`iGO&rFSv>*m@9_zl}@aS_5yGCXqmBBPfndYGE)-G$NtT zJw@r}#Bi#K;xU*ipeiMMn2IsDG7U<-%v?ayxqjn&E9O6BV~A>6!!Z)#a>O0_A#$0d zcKL+E+{Zr&UeVT2Xy#T>;#?0+N6@?e3LTHT9Lt^NI4_xvW<1A-?wy=LrvCsEs}HD` z=o6!UA}k-M?Ni=8Ntt*=ntwUxLnASYmpDdVgrH!Hl9On5pro#uUopAo8kzJOfpNVh zm=82p(vrN&AiV+n5_9MXJj;m}6FtNymgQz~L9GJQ%-Kj+j-?(DpyheE{{Z$x_+fI> zbkx6wXK)T+`^}jjGidl<-zv{{Ts$6db@gIha0{Pmkh3?r6Se2k`t! zv`n)$SX!6-iC@P50D%|LuPT!``(=U=uCo&O+wuHNeI8?i2caklj%!e3)>|&Oj`E`$ zZP9QTJpoR3z9m>vnBuYGaZo;zy-y3-!0PeJwQXJ+;{O1N33nVuJcT3U_}k)JxX+k- zO3(ETBxB)cHvWhz+ivBrR>EJYX)Dl%&G%Wr>+Uj`PH~QVDf#qNs5xkdp%nVmJ#F+} zAPA5y49c)A$9JC);XQ6DGN9SqL5SVCmvK%K?y%I$JB+na42F2j zEK`{8*4uZ#K-|PPI1j`TRLmH0MwP!4S({g}a}83@%`n`QmK>t7n9-&-=kSEZzfm^K zEk23Fd3J45+_mXNyGq4nMu)sz!pqRv-|ihL0LsrPi~iAz74%!^6y`5cq%+i~Nq-6AoU%++Y~eB_X2`6-Wun0=+{3>?B&sSf zdM;eALLSiFW%PX&ZWl3v^Kfe6k%@J@&gMNnfu0;dUKC51dRa=r4Cj~^4&^$|u3mzD zps+(s$QpAMCx}(5^*zC49FQ?H!eNB46^L3931 zCJ^|FdnI^{Rlsu%T4ll=KG3x49i*gG*cesI;#LC;p%S8WaaR7|uP=Pf&08b-x!F<0 z2@SwYoYBJLTW+xY!ZRuZVfRqUYFOMnk5Z6Kgn7(Oh(KN9I;U6X zhFC==JM^WgST+JLVFI|)542{jM*GGpRBBMu%&AhKO7tF$H%f*`S>@oEj@t3&-TCt{ z!Z>LPwM7Wjx|kPUoV)@pZ}dCF%x`!xGc(tw(c?E)(d`xanp*6CKDGP<`KBehjT)Ee z6Ioz`dvb}C2*rvRfv1^nnPjuLi=~7#)*Z@w`HDj@QwAb7Ofk8mBu6B!pFqmB#Tp)c z7`lnfbc(H(X^Aj%Ewagq;e|@vA&V1CGYq#b0&j!NqtQm5wx#Ccw{D@Cl46X`1k`hi zVTsjZS!Yt7Vp~d81k6%rNc)s=aPCW5M3{i$7G^g*N?$+}@#twEm={FMjgzbo%-IrT zQkL^m?od=)l^;rofQcT{6^JCnPon1#SEzy+!f4_#&vANRd2I+#A8=)j%;`~{h;oEM zxOZA#${Ya`voh2(I%Zd-zez;yqDvl8EAJe^u@#}rD$j^!uz1D$OjTuo3&gpOFQsN7 zQ;y+@0w9OEF>68?7A4i(bf)5fJi@{-+<;VKs=fmOAUEp5P1-2#^#cutal}WtX`Hy=eawm1rzK0ON$i+H z9|$)Wh?6c{%e6!9I9*bTRS0Zgg-&x3k|LZ3F;`gjj{aZQ@~M2IWkXWM5?WZ!d4)}s z)=k%<@kGy3-iyFbB&P^T3E!Z$l@~EozS(Z$#fbrf=2Q~5<@4$%8=0tJn4wb>xQx(> z*nmPjQoRMTaSq3C;vO)Cwsb>;s+mI%M2k}s(mpB!hyiY6c~olELb-sZC7?{)RheY! zPbHrbPX;GMOHaxpiQGYs$k8ZyirAGcQzI1ys-uR!rMtOnVp`gCM)y8Y;D2-cl@cnt zlvyaAZSfw%;sPFZFY=xld6A1< zWT#T06&PvE$&KPvvK7Z02%O6#&fjvE5-K88Ei$=C?sd!N5SPovE+{g&V{)w7?*{vU zaF$;&z2$7qABnYS0{tgLs5vVzsZ2);iqzn^u2AhiMNY%nFxyt@48Z)+(YMQ21*6Lo zRpvI((3Hbte=`u_6p^&OFKLZU(-Q!ze=ttC#6vy9XEg^LCz-`l&YjFYl&{1iF?yEQ zVfsp3$f(#ZWBN@`W@q~)Uev4df);X!1j=!`!pnrK_eiqSD}AZ5F|!t)Y=>-KmoADD znRY;kdWBiSVto2$B_kULKPgJ;Svm6<7q`NX$sA-Z^DHv=QyBlZ);@ep#1H7O6vChNar*mu})%ZdNlZ%)=ke*Ikd;h>vZ}9)Ubn{&Nqaz{g<^ z4p;cq1hWEw9mNG$D32ufo~xq*r8f`6-{>_sIVQ2|Wa1%|Mja12_njYcFM6CM#>MEK zU3|IpeJUicQt4LJ?#GSp8Rz(0FVcv`ARe6e4#{*A%yl-#;VO+O(}B5PR?jWUsJJDW zyvlV-m7teUU_b$M-%w?)<^{Y)_KbQ3d`kCB!Z(1iDXImp(pD-D2nJ!q$(*>6cN)}w zC3h%lAVCfxU0Lc?J>{vtd(O}^C<7HA(U>yIUP-`x88Iuk)%Hggo{$cg6O5>;`kg43 z0{EOkLz)A@!=w0`X9WN<{C%+JquwcHC31ziQizr6B|*Y4i24YU>K4R?DB>k*E{i)% zPjlucXg+2j$a(Zff^?-ZiGL+Tb}%-^We?gc zqk4=D%4!%=C*2bHO3V*(VwWvEY=eY@f#k9rcaGwpDcQok`^pMsKlMYi=Li% z^A*smlL>{7#MAarbpTug_q{{Vu&Bhu%?W+Jkz z$JLiJU)KB|z~uB9L6v@7OKUjMDWx2HtYhehI!c(DoBdEoLrwYx#iFG{aZum2SCk?| z^A!7qvmso+(G87-rI zE<#>~Iw}=#`9k{v;yL*Nsk~1Fcp)}!RdMJVJrHH?X~cE3z;Q9ms#s87XBmSU?ke5H z0To6}8`}n^2BjB(BIkrala&5il~$%Jl+6;hEUB%aAWN; z1Syx9_^>a1lIp5*GNki1uHeCPOcWZKLyQpvoY_i}$YNTeC|qtdQtoX+{MKN1iBK0Z z+WpXjgAzI-=xtF4h15(D60S^2Rc>dkRdqT40HLfdTfE6bv}yAYwyd=_KBex`ttYw< zn&&C_6Hj7T63n*RwiUTZv>F_`W;rUl!Codq0la?DrRrd? zhM32+;qaImf?FI~ZMWLzYMT+S;h*7h<<1{h{{SQZ01Lx{`aw#1-k6EZ7CcL-rEA2e zx(+5r#~j13jZISr@FIFKQC(9%K9KaS{{UZa;RR>{dL6`1#a&|ke*p|DKnaHm!R)~( zb2>Hctu8y;XY#*JAL1jpe^#13YKw?dg)utvyt6NU4=k!Rk-z2V`BcmcJB+VRCI0~7 zUM0iSIxUR=*ZhbG7zwyl&zW_RgLj!?iS-y8n5~X=4`|LiiB2HBM8`G33n8Cc^dApO z!BG@-QHDC>Vu0 zz}S~T`R=YAXmZse)BZLz!YKj^RnBBCN~@dO@k967a#9xCyzq z8M$)ql6?$jvAgZ{H zBQ=<1z3_9zRHq28m%)-Z$DMPaJ?3-iQ{1eYo82`V)3In$ubo3FtC%q2a+fZIP-tH< zQ+&;_r0K{q%rujr)-d1oQ|~I3cdZrF&feqtN&|-WT*|6*+3gZ9ph8)Rm5_8HI_7)K zWhw@0-x7gL$C*Zxc-#K~2i`p*pZstC092ax^pEgL`9%=ZGoV#xG&sa61Jho!(xjFz zKB0#rn;tI&9<_%oAA~=E#LFs^=_o?gm&8Vt>+u+4YBi0p^tr*(WOL|){B5^v(kc$* zua#nV0oe>*{%4=-&@C6!{tl)B@Gjj&6h|A!w&Sn-DW4z9=27U7^bwVCDgi1efDLx) z3!pwC#w2c75|QpuIgGTRVlnKzN_mWFFw11IoX8Bdd&F?#%zJZj z+OsYMZ&3`v%_U_c7L<94xKvR*Q^hdiStZ3Kl)~-q8RlZfn~Gdi$cs|*8*?vSkg1~L zgsT$q1ZTuWpFWjFA#(i7a>3+2qD=i!`lr+u%7yoB_aAi&hJ+v$l>Y##B~$!V%Y~i5 zEwkJLE?bQmgxHyAb?RPCiHK1OV+^%`EhFCzg`M9oSY#Ej7KK}ry1v9B_JuB~NmTNkKf*G0qWcl2k;heN+#|A=EjHpjR{D z&!?v4d6gT@$>UGq%vy}?KZ!T?aXh$);OF=URzQ7iogn&E*w(!}uB4?{i}piO{XP}y z8Yx=VyZOAp$E|-NU#TkJu|t{NwXk+OsN^t{H&DdSDMTKGD21rFuIfoq8>I9Z#80Mp>s3w7BXj zQK-U@&xnDQsD)``yhr&WYC>h#`HBrbE?Z@l0&!1wDDp>>@QQzee&CZ4L)l5k3XVPr zWzTj@de2(R%W2j)aKxtdAykN^Vdkw@+@s1}Q5cQ+g>$s)jGwq`YvNQ}$V1v9v&kI9 z)}`yrpdO3}TinS`uNayoz~0G!fkOnROVZ4HKOUAvewh`GxmB!l!4af8)S_a!%f2@S z8g46{5u+SD%d5&6Oc$;CGiUNWAK?E0!WkpKLTwP*#7f%_{4de%h5J1R zxgB4l(!CA}muto=_$+-3s)^*hzyQg%Rt~%BZiV6OV1B=e1mbm#iwOra^R_fp@l=Cl^XeC78hjPmSpsr>;YFlO$rE@TaSY9P| zmfWMz^f*BEzg-Zq)IBwBIJTArz$k6N4OF0>3{8rUNPPu>8aLt^P(xkH4{@#n8qCdn z6BCJs@b`&3*oaNh4Z1Q#6WjlJ{~mN(uh)v;Ffci}M)q z4jV@|Wm$l{kB>ql7y!(E!WGP>aWfw9Lf+vILq3;@Nl;_fwi^FM#%QT*imdXFLz#oc$tdGn-ZJ{M0<>4y)YfHJVpt$6wJh7MXAX8 zBKUm_=NLi=2MhNY-BQ=e5B$*YMq%QQ6k;<=mQOP*F#13C=OMjF90Ga%*T)vPU%ojpRyhE;6=w+{4 zma*sJHiH-c06T%{N`yi(p0N)Erka%%<1)g${{RbwB+OsI1hKGshWRyVQOs)gNEI#* z@Ku(aB&TJ)oSwEzjy(+HC@2!;%Vo>|0KgUm4^Z?yO1)0l3(ZG>nIA{{g;Lz9m7WE1 zl+h^WD(2v%Nx>}ImCU~v*&7v62jEMfG6}c5Z>f7@9=9JyQEE9o1W00HxsIk1>_mf8 zlaCWIMn-105r?u>>w&4{9iqj6zqrN~e$ZXHjV_^(tFsKbti>&L8M7_u^*IFV6A8q< z#4MJvJdq7nT|#V>^%0Lbdb*2!k;@p2)0wC&+#;&ryNZ{kCyJDs&kh{%XJl^XEdfwU z#eB=+D2%m0zePMp+AVr(2H-NHTa^+xp6H}*!wMsSmy#^P%u7L&Fa=aZqZlfPcZ%Ii z6RKJvS90+xmqz0pbL*$l#5n{?i*N}S@%1fgpQsC=D7ag_`e$g&uyav6G>;5VJLl5^ zW>B#=7+^d_lIXda{ZUUb-tfp7V2v!XxTtO(><>B4l6}Ba`dy;K2KW6(9A`S_J*$Gg9FS{rv}}Kp})y3VDR8{Zp+ioJUu4#l2625EK-87+8Pg z{{TCeE?@IdMhT3e$A`=UX;_9(+Iz!LxFA*~7^YzL0ZvCX>2m)7^+T9E`JTv*A?uX& zH5G>%N@Fx$P$(!E`yYN-AHjbOcWBu=h$d^FN{WGNGI(#$B})DS^{?V<&?OL+nXtyp zsgh^0Rn^qPFy)4)lM`i2QJ7hZkAU|ZA}bI&Rr#fCFm^j8JS%Y z80@t^AU&De-mHK%I>C}o`>+MM9Nq2sZ}!r)q~LX^l=f+2&$79 zG1(J2(Pg=SnD~XVGU(JTV{tjet*juXBB_xMFA)x`YjC;=XEe~@OEus-Wg|fR%~sRS z9wVu&Kw~n97rZm3Q7S6L7{hS_88s=}&oPqXOf*Hk;$qg>S((16W{6fH>urx)>Q$?` zf>o}P;#&6vT(Z?D+!Hq|4cc7P)5Niv$jpDBKwaV&>GvHoQn(B$%-&lU9hj>C^f4*a zrxxMqtY4s7CU+457+P3mBuSq!>M9Ebw0vO&$D(nFy>NBD`YncdQ(Av zgs4~D88{y?^NyiiL37BBo4}hh)r{ZsK0sxJ4J~099HqyKPA?bx!ll$U1JZQ)H4@fj z#zYmBv7>SNBV5CZ&rnV(T`XWlFwEj}6J}J%dx)~-I{yI7E<5!<{B`In%GR4aK7dRi zx_-%0rAirt8B(Q8%a?!3;0RV=#5HgEQ^2LpFaUhf5Mh+M@hOF1>H4j79%r@><@I42m%*vhmDdHhuGd>2dLGH{C3K_6VX^CT71l4uva#Tvmj1N(q+d7rb4el1+rvPH1cm^t7ub_7_ z7$I9@Qiew$KQU_(o#)c2ti;)t1GwkXT~Kl{n7v>SWDNF33(2+#HvqF??Z$#77s_!H z)uD*GmM#EwGtmefqO3|qnS`|g6?3^{)-f%GOuc^Kz>3xp6ItZ_`b81bGGbQnVog;l zw+ucX=P3FKUgSHfX3C5s9{5uRTZUasO2#6I!xCMC3hD=ldqdEdnOKriQh1_rOHL|g ztDM)wt{8eF0|V)%1fpEOAHhVjY=UEwa1fUgUY*!)bT>SE(?i$qYX=Om}9{n z66Oo2={g|#23*X)FAs=>5l~{l>L%Xf-8RzBCl!%oz0I$XFzb;l!Jo7>Ohq(&hr8^Y_X!*D%T9&vcxGbQ^(zU{Sz+i({n7B;546(Y1szEoT9NSz%l5-|7 z2YF`=z-mr24=}#i^HT827I>D~{6vCpu7C0-{{a3^1ToyiL#62l@&01J!eQR=Q@3P3(!(3vM_1ww5PNYgVn3lk5FC@u~dSF<}ro5ThZz_4g#0xQ%O zv20a*d-FG zY2pKtC}!f;NW{h|>F*R_S1S~zUB07!*^X9mQh7trtBCK8G3{GSPZ*|YN=8gVb7*=tQy!$i@1Xi(TC)7Jf=KA`+Q4sVw;0Z zUGH!QV?K-< zgl*2U=1cx6guRwZOX40XEBI2vr?8+dj)sK&V z$eYE>ISn9&xIS1(QD&iWRC#v4z#-_cj2Md9$12Bl>84lhQJy@*$aO29;PMp6Ogi;X zL)0P6e~3b-C}LoYX3aERFiBpFEZn}L$;E;3E-{x7FBB@aEBl;gW;n%i!n%|SP-Thk z1Go5v@tAJC=&}BTB7v4dBc8l&P@W0eA2s2s}Y`o~4HsGR5Gy zps4%LtOF8)#2)iUc)6D5!t&IE8w%M*DuV+{uwY9XkHtommPI_=;Fa8Rh&C*t$@hvF zMl3V)0V`696^T@+M z-zf|8JW}3s$&^zlg+iz#Sd7{Tg~}cy`xWSXuuCp*M z;%YM9WC0mhRp^H(rNc0NA$J!N`D4%yq7vft@BaWkKlkAwkXQ3rexEApQ5w;K9 zz>eN}kF6{7DM6R?l@c^@+{?Cdd>umPf3k7&ej!yxqi*HAzvPVLa5yqW3V(zVSyjyH zaYk%|DHo^-0@D`|Ou~D?t$jm?Aj^j7>_e!0#US?f(gG{UxW>VK73(jeAo0U-;#t)!J&}4~)rJcrRETfpwg^!dfT6IIlAN;22 z993cA3#oVuU>%|~M&*0U9L3rLse^lmSb!mMlUrd^5@JqfVXmUc1uq#(N@_0bfT=O? zfp;Tjo2iQmVCn}BnGZ}DH%WS@3eb?esGWI22exjgb-f|V}%uu8w^D?@9 zzaG5dT<^~O(oNjMP<8!77Y}#!y2kznp=Hg&! zSME*OnR5JiW@20Uy$XiS`ip*!5+*iZS(j<13oRQdqy_{P{{WvK`nQB49=8v8H~cCS z=lIv~4@`PhM3s)xmOnA%g!~ty?Dh122Y`mEl(LPi-l|#nVIK`QyU)MyJr*Cp9I6QR zRd_h`CFjTE7uRfh*Myv|Dh0BA3W zNe8_x`;UL&hTDdwt>E9(J8>CXapPvM+W}x-Pj*l!K2dB3pEG9pd0+yx6BNf3+W!EF zUXkZpMO3%U_^lnnnQa#Mixz33Wo%&?>xu4rZZ^X+n$Ln;pMaEogQ%FwhCJiy<{kOp zF~iFeHBc~44O9YT?1FQH^9#d&sG)}ioxp6h)@4B5ljFiy3R~dqiB+l3a}B8Zm!kXi zF^`DnaExdJd1j_!xuDl8%%J5kU1=KH)As-$Y-Xj!Q}V{cJvxYUrDcCo(+Ai-J=xRm z%<452K^?%f;Gurw4FfT^m$9~II3@ah4y}l%f_o5IRJ|&RBc!*XYKT#~#6(k>RyI0_ z?kkA$UJTl(Cv>PIxo8%wxQ1E@aTT1(3^57_ToD{B4-o83)@7#m7-<0ovdFoIo0&!` z7rAAv=3^~@sdBPdT}-e}@_RxE@=K&aNh-ldF&5(yn5upV0 z5ffi_JyQ7y1{j*$w^HsH=Si4cHK|+0JA+jY$+Z?6)s)W^V(}2_TgGl0vjr+=uMpS- z#hbhkmb2zzRwc3c!0c?5FygN_iFzsk$9{mK182@jdY8tgDv};Gxs%?ecZDnJFvOUf zDqCsXsw|8U#?d2wQ8Gb=k#a>+=1icE(|OSxl*}|tl8^q6{#wEeQ6J(EI+gr7^r#O| z;#8?qa-~X@;u4-cLNwxA5K8S3GOccJ+`k@!GU8<;j5ik@itv2OGmAa<`FfFFfb}51 zX>8ZKN0(Y(KWNe1#cMI%;_u4 z;FSbg{Ke#Zz93xgKe(lx91yJ%5m$lq6;dAwqi)}EM}r!e*e~S)Q$`0;v=y6DJ)G_Psn!*6Ww#{rk& z6Dq+pE!4JH$-X_M!G_!$lqa9Wq}RmPFZ-5o_njM51mxACxMHTGUcw$%1Q;`Xjvmv? z?m81fB#`UP4?cvbz%?)?gaFLa)XS-HxNX!_tRsApQN2R-;TfTF?Gz@6qlitDiqN@+ zOZiUnS(~UAGWsM|Gj#|@m>E`OjlgLQRWck-6UW>c#Xi%DFz+042<-+`(*wPx(D{`- zD^q(!BEKYV7Xz`JOsI*wTl72;ZlQsQ3POCPo+<({?*TX_Qln3I5pM2T3x_AKMXyu1 zse27$zN2`SLZ)Hb9t0n3VpDP6iQOtaXv+40b39N3M8{5D-sE@_5q3$V2xDpajay$b ziclqdDL<%@HxJ@1nNYQfHNK@8Aetp0Ga6VD#z^nHOmM;l0^ixWbRAlg!&>_#e{!tp zj>CXHqQ7=+4wxoLPg3;uk0{Ay;kjL6Riz}!mo_sDwNDr-!f^8qFzg@xK)BgitzuX4 zuRxV59)Uh(e+2U?R1e}8HxtCqEX=P&C@L3)HabUR?-{_!TlUH?+yR+cy9_9_ICCEo z8}<2$7iTZK>6fLz^teizR3$^wrsbuvJ|wGbj%x4v#he05D=O%oi=tBN<7!cd-R-ds(M zJVVbaL8(k8ElO75yHg<+^#w7gP6Vrx6EzNpqLKp4&dA9l6)}cTis{W9rjX0+m<9;8 zlP2N{vA?)=We#!xipMiw5UmXeUGuqFT$kO&TDBx&7#!Pil}B(52qG9uBbHlvog!lp zLmx3^a~NPo*Kp2=G~8_NU`2I^Mrf&4%n_ChqpUt=I?@PviLi49U!UdsRQ@waj3#zhE&WP2FR*lAh}yHa^qDnNh_GR>27Bb1o)Ri*fjsK=7(DJ+2tO8)@V{yI`{K8kTM z{O%E#>*LcAsYD4-Za>3Er^oSqrFfSdS|&7uGa}p;=#PH{O5o5!w*ppV{{X;w{vrHt z(&hRLxYN>)&)vZ&QMin`k`ZE3#JM_8ynm^FhpFNGZPCuOOexf=eiT$E<{0V$`LckX z$)Ww2jHi*G;|Xg?pYZA@)LtI&q18}XOT1rS0SrQ%pH9UXAG}i4>F&BmtXPB zRx3pXO&T)o=!R{V1pfdf(H;U|`(?A=@I(PvbK5T(Wq{~};pFu!G2o4di-QsO4qp%m zH;>#{{Td^v+PGf!TDi%{Kb$ZC9<3(L3#fG2w=JGEK7ft z)J7^Cynlid)@J0nUn~jcG-x}Cbutu9)Nu}s24Tz#6nU58X4GBX%=u*;MS4riFmLtr zZOB->)*!QJ=T$faT?C+%hjkg$DHkXeHAPa6SeP-_Fr(rIJkEu#p`4PZaUqA?@}^w3 zmOj($v*0d#WXk$YLHYFI=97bG8%(sK}D01W4 z`!cfM&R3x*wufx;PB|f~Qq9X$c;r3Li4f(Pcj*_P)W&DF8r0+xynz7hhTg}RJuri> z1eCm80*Br*t^xCyVem?Uv>0qWvEKZ`{P53y?w~e2&F&lY7|a)#ROjA!uS{V2EJP1P z$#)Lk^1h?FYySW~Kb@Zw06kwr)}TY5<$H%7oWsNpeHHIBMapv(1JLlE=}{s|@#v*} z1V<&}Vn&N)6>8Z^3Ye+eE=#d|9)ams{BQpN2IWf#n~RCyc=2$^DG~QQ29gr=p{F?0H`3OsX4Wj4~WeFO`O_$91t&CebpC3Zr4%>Mwpj)Ke%{m|)2}yc6cNR)>jNcopQxdL@;emM{Qv6zd%)b8s!7wjK=#SAm3=FKfy6{Y` zS$E^ESbM4q^gqn7SoZRp2YkP%T8j4ZEwhahuOQ0phZT|Mq9Ig@eZiOAz57es z>OE~ymO4~EI)K;(sQpSe>GWag{jAG3BFi2Mdhm9Fa+U#4DSPpp^<29wJ~V zd%&(3hHV%XY`9X@+^p1rDI%DlC8FQME^f})<##brM;UQ9Q7u|D%DIJ0^?zrj`m)0q zxh75tiPAY?kQDibc$_ivekVZsokPEb;PdpwOQsxQPQF1$nE%hG4 zZ;HCazMt_mn!1ljt;#O(?f`QgkfqKO_O!rmJlMgajN&3 z9Pn^TgOB}3^4N7MrAzdEetmx)wfrwrKgFMOFuv+>D=8Qlju7P-Z|fc~O&~%pzO3s# z#)DOh90|z7+Np)hWIXXNYUUrxzw%K%DEVu$j|NkuUteKee=#qLO`7z7ZYX;RD%i}T zU7745>v7(o1$DUp01+s9{~>#)aK9XRh*Cw3@qV`VzyGY z`jOrUplWX)0OgK9?Xjh-zlmHs7y$k!iIie(jH(?Og^i1HrL0{ZElp-_5DXZhO_PFP3y#iw5{Nv`z3t5Z z0O|&AuZY!S+66fIiYpHM5f8DfJa;MqkKCgPGkU$f6JnNdcP@FuFwnifh>3+6dxOu( zJ@LdRiTUO}m^zi++jjs`^T22C%+Xm`YY~?W!J(_%s_c|QiiJba%WoQ-aTl0~Cyz?? zLkM?4_vzoF4WSiA4dbDPa*Vmmq~O8C`Y|QD%xS|iK=mq{U<)AKVhJ*dP3B%G#9nw~ ze4dKUnS!aZWd`G9$*E&0D)9%ol3H;r14+6wFzFH+kEFR9m|S0K2xdgesh4?~-em*n z0P}Mu=QigJqP4(kP}B;$o+RS3xX(NLSGSPT@z6Z&A4-qCK%>!P&f&LE-+92gnxxm zCc#YA`@IvjghYDlZUD>Gi zVnQEEdI#{j{uk+w;dKp4gJ!M*Yv5g;NDOM=y5pYVKt@oGavtzmc!c5K4^f#*{tdAo zsj1DjH@{1QEf+We(ap^*aaO6I7~t`KST1C)e2^`c^y{$ZCnQ+YWDWZY@0B&(p9Z}c7gKjt?0~W}^bDSlt zcf<~GW;VDN9Yim`a*eCdC3M-!fL35&l*r#c3BW-S?&3WNcUXp|0)@G1H@2&XnV{sr zG-@as2fVYKy7LhC{0^ZVO(w&WZ}A$6bvOj5-rsYzMW=iawW^`{O|Q%SL1z33tE2ME z0=VXNDX*dzE#pUXD;)P7(yRKI=>Gt40L8xqcgi_~S=o7Ei+Q#Xl%n@N(eVmJT7;o0 z#lSH#Eg&U5{R6%{h|3ssXM+IpO7v}I9eOb(jwSU?PXYj_GbH8+La6sc9Lw#GJBDut zE*mjRX33Ie!{9la&2rm{+njmJ1%Xsr!$^DG%k zf?etknSkn9mMp|2uTz3PC3%~LxPydoEmbHbnYa(cvl8XZO0T$@Fn2<{N|yMSPr#{9 zy3D5L2{cG>cXIwK(;kZU%ZRgy20N9MEj^2wdL|`^R9eO_(HIdcNFDiLKAsDIW8G0uG!+G_6e1qc;Q4?j#%oQQ()K zR$7S7fBXze?jD`aJpxzqM3>jCK$Ylv6S+-)3iQ((rt|a2m`b3tM+Qnft7fc!KS#hzzG`-`wZyySDwqmCEJw+t&5N$koIV#6IWFf%iCI|N@IU}T zI&=P}^{2rSwZtN~{-rxTlu?vYSn+(zi;giDwYlb{w{-Co3+4ANSIL6XbEBeiQ%wgb zY;eYK8RBi8KP)eKqFHOMAX18q&9dSMS1&9y5ZqU_u1d@kq-!r9FsU$V;SUxd0JNZ( zMpH0uZZVEvqEVgA@ON~m`6DsS_C1M2ll>u6cR6Kn%ex-U5 zxFt7Iyv4A+83t9O@gAZIWWJ}0_xOj3-o52m0X!Lrf^5ZjiFqcK3Uo_sI+?T$6R`$e zIEb0R-LZ11$E3@!?Wv86g$5FkbqPRx#AOh9Wp7O90}n+n zBtiwo=|_6Rb(yZE>vlo3e9UDa6>ap!B%^2xR^!Y7%n8wNiC8jo90_PoA?jAHBeE6U zFmVK#_Leh}j__qhoT*cLweUrq%YG(zD$ABralySmP}360E$E4GWdb7_LV&S z4(1di=4qw~1r|zG5s<}PMZ#b3U;T2|rW=i`@d=h{JgO;;ndRacYO8gh_NHc9`86vQ z=*gIPknXwkuS57Xz^;~A*%Ybd2tUj++qT=i*e%1#SDRyVTpfH1%q@&(cjd&dd99oG zfY3Rt`aX)C#8>lTf{lA7C1<$bU~Kmxh4H&1)tc>voP?>?ICRC6@d2|6+IWem+2n+3 z@chmUJ|W8Ja**AM;t1Jy6eVCV5ODhsM98Bx9#BrsTJTImdHYH?*AY!Fd3u27gYySq zTbKGvs@>lNEx5g(w5qGk+#cGm6O7_i6!P&ZG&nCmGLYcsws)jJF}-*oyQ*k*%e!we zRyj%zq3w|CmT3N2#vUVom)j_`y{%Z^vKNs+nA`{{3GH1>C%L2K!eFX$_O|@X-+atGq(zcX2LfMcJ)*+tjbnV4vuZ1V=vhn>dWCfOr~>K^kw$~#0} zA=);}dX({S#Z+4mm6aBGovgt-5n7gxfiT23Qmn%Qk&sKN+@zT^D2AXyC>?PyVs)1| zsfHp6;SzA~AZIjM<1)2pbrdVj$Gg97!2wTCQPcm?>{rsYzVr_>{`W#Ja7hV0W}c!!OLinkB~TQH4jA_sG-&te;l8f?S9ukWT3!3ikEznr6E5uidj+6 zz}{kslX*jT6xY6gwDsmUP?pU+&Dz~O%Uu3}nl+4FJG{clX#2NC3aRlC=>6ef^lwGxOO>>{FFbo)pN6J{I zJ-MIMvl(sZ>S0J@sMi;2{5(Q}D6(c;dumPy5)0w?0^peeVpPW9s6wH|R^M4i`9tPb zwE@&~)MiP-CpRm)j}ZLKL%+Gk7x4`YTV-V^1c9`(Hf9Rwub4c~Z$erw)1_EE(Jd(b zQpZ23X@s1SGM4Ys&dIBTdSFDhTdPk+96~Qh$-x`bhooj$p%@g8MrLfK`WH0B#MB$i zRqazT6VZlhS=`SIzfi^WCgpl5)VlEl#LBf2&83Ef!uEx3`jkcpPU$#cojq@nNZ^VX z?xTNV72&hEDu7rXf-LpKDBZ-vOfwonm+1xegeyOMVNJ)w^BqWe5M*OZ#5DqB7Fm#O zGbmW@U(l2%zrK9SMwa3{%|o9r69IUBGa^Q!uX7e@&mauO<;wLuGW{CTAqG|SmAuN# zGnBSRr2bk$=F`((Mfwqs@C=ad8kC;!yP5Uw1Son`r`~+U+~d;sFNn-$WO`O-U&FcY z4xt>Pxqz_|o}{CapFG1T49FhOGS_S+v@-h<809#X{{XfB05k9!zB;M}K z*)oP$(KzZzn^^;*uAYZdy+@*MCkTYfKH|T`9LU;oE4EfW1&G~#bwz=SZG-xz>)sr- z>jZMYFf*StltAy-97}hC#Xj0fhB1djK1zkzAqmIk;cb17=JOMtnD`uLh#*rK06~KM zxQ~s`u&$B4D-L|9Hf3HU(^$7tVy=>>R@9*xtf`3=;vlNEnVzLF^AXFyl$D{hbjEOd zg&th9xzciV2U+;istVA>m;?U+gs}9$;DzpVP6)J?odKAx`kYKFCDeW?i>r!(H7R1M z({WXW^$h$({{Up;K3IbS^;?WPB(>;eJtuGrWxA*pyWO-*BtHiW>AF4RYNi>#nT}`G zz<&ThIIbfB9UEF<)N4$mhW24!3E12@wKQ=BY#b!ame+{Dx{qj;hnv(KRJ1%0Qvo)j zIn7KCVMJ9-VAeOGh7D)!7fb!e8JjrPih|Wy?>WQ)2kK@^ zE^&#$>5%fChBjK_7`EyXqBg~H+*1dpWyNY-?FH2^eWD3hh&UotT;CDI+F*h#IES~O zSElm8>IJ!H@Y7RZ?!c9~oEUB~$`}j4Jbh0YDanDXM^yp}$`LeMh*J#12JIst%e>30 z@*sZb$Y|?2j8qu7oT?Vq$-7WMybxT-5EHnScMxFDh<4x&Lg8IUeci-C`vGhXvNz`) z%7K&eYAV8OVaK4F>Rv8XE1%4&MqP6=^;}FxQ1rgV#DdlDxV|d$KmWu4MG*i21ONmA z2m}NJ2mu5F0s{d60s|2Q5+N}VK?M^aA~I27aU(D@ffPbgk#eE21{EYUKtp1|Q&57@ z@MGa~lJP{c|Jncu0RjO5KLPB?;V5|5GPx{Xr2(ibb}&esH{Bl zJ*_?xOVpkhuuv9!?DiFGWo17BM$9yS=YLz#XdUARsR6p z78^W+S82#6XUqoL{{SU85$dCi_|AYR<s=!NaE%Hta#M)gP3v&-&{UENB@kjgvgCZN1Bq24biCA3+03Y!u!k=)q-y?yTOtKtTjF)nR56MMUbI z-O*S~C8b`7zf||-00bQW05wL3s$kU{PL0Q9lDVd|ASvn1qhUcP4hNA~tPfiuqvWH( zxq;5ua|%M-t)~9~(tbK;3?F)BJd5{B_MBE@PqPk0?dWw5C@+vkCs>rL=J&vrql@lgwT@=H*;j(T4q3x?4 ze3K8DvA?orCGod4Ssa!Z5;1YO?B=7Ij-dG!J|f}D2B&q0l9`f??_P*}DMM(Myy&8h ztQv57*~^;2>^Mu}cfSIp2=176PYVYwSqBF0or>yC$|*CnAN?GxYrZGgA=qfqK)^$h z`aC4!&LKLp6#oDlkmHCtwGEdsz$c-yZ^=9{KTZD0o2Gtb{z=|4qTIL5Ja!s@;T(mA z!fS-_2Xo-(CSaK04ek^0OgU&$nY80$WN{H?puZWHk{I`Y<4?ywkVh9IcTaw8ieYi) zyeCx~gY-=q9hB@=8TQ)doHQx1HOgEBPnD7pt9DWnHcrDbk9T2cG>5g%*7^A+oWz#7 zOM%S%`MuP*-k{S!r39U1Vcu$3<2~oMH7PPN!MlY1{%oR?Wo+ybyT!<^^Mw{$+o4e5 zm{@kl1LN+r=d!TfW=zfk$lWrUTitP@nLAzR zoj7XI%2w^e1Gfo$PF2C-NDxicsiumHEsH{Uq+(KAaIGH!-JXP^;5^yy}+R5 z)|6x@l2CT5M{S~~Il8DGLx4|Zw@{e+?*X>{$hI+&Mb*JFH0GyIyMr zi81G}D`Y`?Jd~JX?KUb9SO6tEZyr{rL>~L2UTRq-g}K<@D^Ow}km%0v-9He~AaLA@ zKB=A2}t*y#y z?XGX;T^$SK>jS~xMH6|cnuu5vqUNRXJAqD81`4i=Pp~W8F?r_#BaqI+JNu@`Lc+-+=1B)Erx^dAt`3OI{{_&N%2I+b%432bQJokXr zKEPfr(4ZD2taz*4O#ox|C(U$pozf1JoYv;lEJHGn7M8Ji@WUAWM^%MuI?%%G*U2&; zO_Mr5s*uRuYosu2AUtTWj>{ve{nVgQyZa-E2Vc^nn8;+xY$k^Q1*T>Wb+*9%OBHSh zE|gSEosJ}ue62$^Y6ZHWo-8M|V3##7jopWY@S`Y=Ekx|D1vJAAN4Nfq zi}5D71_dG1qqkr?MGnZkW#5{_JYJq$Ku>arcNFJBpF4ch55g(+-9ws>#8s&s-%L6t z^WYag1LV7gGwC@un&hIJCSbZoO3GWY36oh-V#^#hrHbhZ8s&+_nOjaA8kmSpackOq zierPrUD+TJs>bwrVYX@$g>h-sJ5Y)mg@u!nIETh^?z4w5+I+^chJDvZnY3{yDkTQ$ zi$a~6-z37=!Lzz-L|cK;YUYBUmF=f$vAq`frVfY`=vEdvGqL>Jp$a((_D`2kGN8+{ zLi{Ji8cYK3O5KSGqW(@2* zhCAsL-^_-|`xSj;M1GVVOEt79#(3KAE!CmIFo;ETJei>1Vy$0irEvCI@HXGE5eDr! zH$)FKS=KW7pgH*`ftVG8lP^6V{FB>hr-YH%G=xnWotBO_mcOEKc3sBn63N;|wmjAr zT;brH)KP#oQ2XDKYlA^emG35*qK0drcUYq4G`XWy2TX~Mt=mmj4-qSzGdD^!hO8i_ zys&^mYYUxikvwX7o@4&hx-p@bp+hjpuv0zxiER(&vjfdJVf1nvl`oCn>d{3N8*T0P zSjalLN{Q5-uySRPdZME{g$^a+VAHY(PyG`Y;`=E4DDIuNVZ`OxG4$F)Wg~MT7n;x@ zZ9V==FQq>ByZ7P~xMR&m zoB5E?aACKZ?vl~}0Qp!co^LlK!q-|X$(WDX1DUD| zFAJKN#_x4~h=;^yy6IRgxyK~OCh8E-sNI>Mt%~Zc>~bIa3FD0MeUndcCz@SmZpYP-DbqSfWnzO4BiD1; zcMg#HMKoyT$vpQ;yK0@iV;cT@6&aI1DDaVVPx*oDc(-MU ze|V@dL>*8!s(Zslm5ZIk<_ARlr(sICgcD7K#|arpq_7Z#-RDyY9%+x&q;ueKjV`jQ zaiR?GS@J_YdM3ureDbcb&tryFi=FT|W!9Dp8uHyqr2}8#jV8$HBW`B%-93Ve4#?J<*P0Ek@TDJGBtHyM z=9zraSZ@;MRNqnF{g}R^J=BcO*97L|dzw}q)QZ5nx8lBg>l{Js4#EEbS&Q*5 zxHKwr_eG!%$K+9XmTnioZiv^0E>SbZ`vo(03lF4jN5jG~pjgADCh|??#k@k6cCk0C z#5>8pXa1B?HZeeUq&^-UA@tBYuO%}nr`1O7R30ZY%qO;-Q*~;0elKMa)kN%%X;KdQ z3PsUp{6kS((~UH#WbYItSZS&}&fAio5!MvuW(mx$2Y^F_A=l`qe|JCWSUgZUug^e- zKP3ydY30IZ(}fF0b6|QROG|ap0MdTQF|8VX)8lM_Cg3YD*=Adi!by8wHF#a{o zPxT$|*^kEGejP6jI6uuo{X%q79h$JwIgSO+t_5MB%PDnfU-}tXzY=B_OFSL7VEr`~ ziNGu1PU)>Y)7m#BO^k`4_l2TPtHr8|MyuI9H(;^bgx$htE-d4To2zPz4C!@~!ho&2 za_-(8BlOTZE=pDxMH%-9K;nQqg9GE8dqrLkvc-!utv5@tVJJB%F3-J$d@h2=ay<}}D@=nCL zjnFJSy<FBw2h6tilxD^7Dps(zDnkM0@@N6P))R9JI%r)E+X z7j+}F`>WX<_+pQF1s=nTc;pXxvA4;W#LgWf;9R&s@sXnTD-nwC6wG$OCSwj)k0t%& z;A)rmi@>#s$GVtDH6A_gHEKLV`{ObaKDo-124B*ypqPtl%AqP;m za@};MAMqLJ?Xu{YXTyh3v9c843dX|mt29_gIL6$;O2AXtd)lc^gaN5W0`}9&V+3EA z{mSc3+|%Cb%4{e|%0_Ke&b1M%_EC(@ZF5YRM<{9Ln95# zb6EH~shy^UFsH7Im&C;6(U?-fvnxOJJYS7OJBTOk*by5CGM;eO+M5$A^=^S&{{X0_ ziL&bqdPjD_s zaz*3?jn35=@h`R8(f1or-I6gx6UA0MN01G~cEaeiZ(} z8U-^P_SGq3>f564JDNJ^6PWMNQyfmgHVHJ*7G>P5Q?8IgN+D8@#E!}CHc%=d-5guM zs5$(X?%o|G;cp634&h!X-rp@p2u@~FaO)zzZA@}$%HVv|tjgtsVUju=kq0PG-CzL| zwcLjP0DdJ)4sJ`P=j&#!P1A#3T0u}sBx78g!dU48#38swb5sxj4OXWvQKhFvH8?dqQGG%47b7=Gw?sTBCjo&8WZW63$i zwW{mub=9!zNve3{d&`4%MUEhnfU*u(M7^ub`)Uzw+toQ*kU{`j(~XTW@#wQQ{?#9`bQISy`7g>Kw5V(bHuCqOk6#mj0zQc^*PQ+%>MUZ(T0Og@kLn{xC+vKf8L&KV;?pRuZq19%(;m*@tYYpN~@vK+Wf4^mb z+IhN1WqJkEFjItqMpTVm6E==#l6X)%%?xWZ<@Nsn(6N3rWhJ>lQN_%o*mvbtu{QTS zl7o*V`CNZ7MDPV+rUW)HH78VXfDvZY%oVb1dm2P2d8|XJg$jimcusT*Ka&3d z7Y>sAyk_tf9-@O|c+PxY_C5;(_UZ6UtTdUdTux-l>W6?jtS4hTK;C$0HYQT*D z029)}ONxq#av9%r#Io&xl>7v7waZ1lgZkP(&=6pwOlj$uOoA?g09B9HV=h;h_62 zkYPRGqjx$$8#{ZU(gUr@{T157Np=<+#GT?;ud64&80e8{z*(giiN5MbWeE5}d&5I* zV{rXs4hg%eu&~qhG6VK2bTlZ%@mSi)=VRrVw`Ntl4*;pCqCB^Zqo zp4%&{axEit3W3!2l+p^7LE&)r0hY?*4E>L z{6Pl;&2)z(c0psA-Oz5(qiL|B6#oE2qLv3W$~efQ0UonJ75+M4Cq6w?wmjtS4zs+Cv%!~SWlqD?bF*}sT-8=jm4(I!%x<* z6gW=H3DMOmtp_E|btZ>*boUm#G>w9E8FQX#@#ZZB`idbk2asQ5ZGyu-+hpprCE8K7 z9wd!7Om&N;Wj)q4SpeBF)CUVkg!1)lwGJ@YYq^~kB3hu`_fgGK7Y1GEe#x^j;L+E~ z7cqsc=6Cd1hBURnSh1HyBV7!GBLm0fy%S~FX3Bk&Uy;iS>vHC?e^vhdh78$ksG0Eq zQ#+TE4(^2{LD@;wD+n0yb2^lU2=-xe!Q#5+9V(QjwO9;zl4p0cAIU=~ zaM1q%=mlc@Xdi?2;&|evwi@IX3QqilpURls9CLnT-jVA2t^wgbQ0J3Wu+evOtWgd+ za0>+L1n#ve9}B(K8|lA>IOqZiyM)cST5ktx_bB+DIEb4g90;|7FJ>X;O>b}bploQd zZ!L3ouSE&G;Jnpne36Depyp}sYHyN#ayGn|QXd?C$@yC1p^>(v#g3~m14B#ku zo*cmz(hCnMV~3JsfoMEr2QVwes*W4gcvDP*t^H^JtXZgh<8e2)a^0-27GvaAr`LdIePY0f^H zZl8&}3~i2nh`5Kb&F+A8Q005N!rgXGi~xL!n8qd@-UO^3==hc|>c8Kxz@R5PRPo-3 zZAsfBuw6B&Z?cWZ>J|cCu2Fo{t{GiU3#0J4Np{w-Evx?k&~aWhAJh9L?0Yz-m^2S5hUTZBu1q8Kz+L_fdT}FExri`c#{tOxbI}yKn_F zw-ES~`-I5DHd8k+Bg`pq&JTBcD#On9*pfk~^jL@@14kP>Afm+<5#+JWEPIr1r5m*^ zKb!ieigJvS3V7>azHLyxoD&he?#? zDeSfyXa=!kH0~O;R6un zNny}#u??fI-9&6(izxkqk;2P&(?X@$P4S?=%*_zAH30c6PPt#^qBK+v%JSdT6phI8 z7eq~-4`n0zp0s(336Aelpjbze!ViajdaPu(h>@I#r1sG(5A+(2`~o7>(9uCNMTMWN zZ?74~UuAYwct?Nmrw=>TgmJkaU{U5g(8QUXGcb$PfSAHiFoyVfDddIuPE{GoLUWIQ z-$ewSV*x}WNYw+_&Iu#Q5qp&Q+TtuMOI_BClvwOI>xLsaPokgJgXgwbA`Ig~UqweP^n_ zP8g}Wrnvsg3lWYsgTCkPx=F{a&?p@8<6OM`6mVwI`;w+%wy+Boq4P|T361RS3Z5*F zAx2bv=DDA6hJ_tk4=}NVK1l~Ls_1-AS0+=lmNro#p~xcoa?h&|o{9mICi^L5E_r`D zwT+BeaM{|ZNBDO8DFOi1^5ICZJ9PN6lfpSm4T7PRNZa5=?u>0|HlvyOs`RAiIuhU< zJKxIFp&2f%F{3@^-%3*V9in8~jK@N$z~hcA0llzf-87u$Yt9S0#3`ppOvB zdykrPvZ)4SFzh?29ARxYYE8r#q-ocEMPYr&AyH09KV~bH(E!Qxy zpIQF>h@U`$m@Vy3A>?`@RP(;F@>4K278~S_J}IODuChYd5*dFm`Wf;{Sd=Csv4VOZ(cykNDyI7rF*$6BE?v&+* z9oPG)ewvW?T!Jf@KyAb+w`vKUuk9NnmN@0qfO6@rTEt=76fwF9ONLXWa<%=O{?j&Q z2=N`)4FM|?D_=2o?2q}m3`?3?9?Gz>%?^>O5gRj8oM=*n^`pxF0O>jxHz{o#x&@14 zgpR%UQx3Ke?qfoNy2|e*ii;z!k<=(pB?!$M+2yK_y7Ud@SgbK?y%QPT0ZU>R0lhAy zi?E}JNWmGebm<(x8U?2Jyjv_hK(*tQspBkiz7j=YIB>yDk>GOT_GU$=P&Zvm+v1|? z(zRG#wnkVU_K$JH%|%W&TCu`6(C<>Y<6Qh&xNo%h6!FwgWd#J=4u%F%EUEusCSJeE49zL3u1^ z)_=M@b0}X$ICrf{hzwzI6ox7fF)0 zL77O!(XwZbyq3i=mgbZWpFaNp&|!*wnZt?w5NR74{q3~tkJHHVZL zSSxa|a%EwosZYed^(zlGNZ(x$&?4)#f*sGgo)Gq;(g_7u3E@YE2N9TMJB|TJ4T2My zBaMdt0MZ!jv^u@CDB<%rKP~lGG8!u`{M6A1rQVJI08|{pDa0RC+}gE-P*0aGU{oy5 z+u1gDw<#O*P48+r9u%_b6(TrDEwoW@R>oy-{{W?de|w(3Y3C`l>-?k*Ijl^Dj{(l3 z%hfhORtt6HvAveA#8MHI))eO)NC!f}ER+Ve~@~!}*YS^H#6@Rx8Gt z^!~^V_`7r#JRY|F7BlOxdIddZJO=^6qgB!V7bonn-WPkOeG~Us&j>&w5FOyWkm5P| zrltO)8@KZNsUMu(tYnYG!v|e1Qrm6T;dB%;;bDCKARXPJu-Jh#O_PyR zJFSt=KV&uveO$&4YJ4bsL@&TNZk+=~YMdf0F34S6(8K_AY8clHz3mn*XJ_3*F*mAw zrbtG<9TYQcv-iCm7e>c;wht|TWz#Yix*tteDYW|>^-yY#jULO*U|Vp7OBaXCEN{Rf z+f&0_B9kM53JF8n4;iy(u(1%4ZmsvU*S)PEoeGZ<<^U7oW8}^cxIvJS%r2~#uwID5 zJN?xNt< zFmr09%uQzHWG6c#Dz?=_BRa8h*-pnfyD_0bH(3~R1xje~wAr3NG8o6EZ+b3VzEE z;XlNi^cFYrqrh@pnuiCPX-(vUZyMv!k12y02o;k}bJQwwqxG%Q5c??AC6{6641s2U5i0anprVqKI~Z=z#NTZWJg>8j}m zifh2v$#hhK;fMDNn#O%+s^S8J>NDL=IAQ{8PE{@*rOmKaQW5!dQqxO(iBE0&6%o)W z0_d4^a}iU=nYM=CAR6X`jvtu}RD+s_6z8}KL$QB572{0$d>-WaZBapo&0{{OPx_Dc zMPa6B(a80APKnMogBwQOOE0R!3wpzBGUm4(NedW-V(Gm?tYrp>A5ACR6jfAszZ_hxmoi8pGj_RM!LGR5!t;P`{c`n%M znvoiIZ8={V70fB5jn2u{)|F}TmO6@OdA`ba=4g7uyOQWu7Pen?h;`2+zvNQ~dcRhP z46pmBpP7TyDOf?J(fI9u(L)(yMekabJb9EoUPqS&(wOH5XgN_`04q*hy>vs8#{FmUrG_Ht zrZndcAE`>~q(uch+K{K|7GYTT5)c0XwI)1bVrziPZ)Ny*=4mHoiGw)XWcKC&rWz^Q zg@ltNttrWeM8b8x7xE;NC@TkwlRcIuI>6Wc7AwZO;MN3OrWz)B5+bTt^3?5}+1rnj=j$zF4T7Ehq3I}G-+_8}f#k3~F@)((2^i{?-+si3_*&SV-e^Wx2LeMnjyL4_MZ?DF>#?CuJbo!%ie;0*4vq z%U}dpd!~v#Xp>5$_?&3w$^qn~c4mT~Y0@}}vbD54);#qRz1`t|vgkSEnUT4rc`R?% ze_(imXaInVvr$qW>YgiOySACocx%Tr=6NUKPPE~ENv;U)u#)wW z1!>eZ?Yc@`a891lb%lp^W~eKx9-sH~PiGPdkkDU-G)YHAH-M&X!k2e5ugm%;cpvY? zD6AFD5U|Xq+QVwno}lOMpY&R#-2$xwo4{@nHzSjG;5l}&9VrxVygfTO)N-|h=_Ylf zHWiMudgw>pNMLyqF}6ALr8Wjk8^05VZG+-x{e{u9em)nP>f~wus~d{^EWk^L%5Jlc zY6>lk*5NUmYOyX1hEHXI7p`7g@F7Q!a~qT$Fk6E3Kncqj7enNiIp5zj-;L_EJ!Dd&(w~_PX@unj3agU13Pv z%^^dEG0gUd9dy^4>0BNsB$UwV{{a4d7xrc17G-w#Wj*a~Q)?Lf(v%f&!kC5T`zFg9 ziaIR1Uk9`_1LnHM&iAwmu50mtOOXDm2&r)`X*<|aOzh>)3lAXgd!N0jgLeX#MakZC zeAAkw7Tpte9hy@+UL|yELydYYKj&|l{{Tglc`3XOPu)s;r8IGsnP2u;v)x2e0C}qj zJqZ?anWF;1p5wjKmK$&V%46`_qzG@o6&DXBA2OH~A;P%LiEDHTxIEZbWYb-J)&m0< zQb~hX8h!dEU@Ak^JTZh(%c(00Wr}Gbvi9kg{Z=avii_gF0j*1EVliKhW25{Vjn#wy z0Lp_6Y-w+I{v~w|%~`2FX2~#!?A=_N&<2Q|xRr{7sE{~p<7mCoyc71MFzmnnSK|A` zWu)9mdtNV8+0E{{-v0ojg4M23zgCnT@axNl3+S`3_VC2RUE#)7W@>wKl?3jH_dH%} z13TXs&$@QSV{n1pS!hN)rtJ(%nX$Cib&d5ZY%PW^t;}(>*#%KfZ4g6~NtPlxqTcTe z3-dzTP6|l#7L?cbi+xnCqT31D>*}8aGqXe+NPq*ostuEhlf2hf^syM3gfHepcIT>s zAm%nfp}l_TxUzD#OvB2PrfZz+ytrQqSX1#Du^XUHP>9t{CSU zhMc;9B)p=?-j+8C*X7gF(2NorwqNGDsB-IMsPS>ed$Il2Y|RBVHQJD?voDD8jhToG z4%qPOC)3(d-2VWgpTOly5Ztd#+l5|=SiAR|b<%oi*a24x_+!~%4{^!iVfOo}{0vg~ zk=+GJnhp;-9t_|(zE-oEeD0OmTA{**>UAm@qR29|RRjpkMXX0gMJdhUc>KYB8U15& zzMJ{IQGuRI8;5gcE``}2{Excmqb?!yb|3%Q?k1uEBs zxTZ!}3DlZW*lDd-OU!-|ttoVKbFzpx=CMp6zP@SCWP;17xqy%L?V}=LmH?t#Y5o&1i9yo}vROfYitRvh537`(>&l6f5dLC%vBFSKefQ!Z7 zE=5ZoX)HIxU3U7Xx2p&4s6dRHOtAwNbk;`zJ-Q3mu1PaDHw3w7O7reaKzUz2>?#?hw7N zw`JJ7`Y2+4fsgJJ{F6U7DqHXYL8OiMScd9}R!hATnO0Zg0mKH@Q|4AFuP!yIJ1DPy ze9&{nb5EM|rHR0}i)Xry#)Ub$tOS|juO(Dbtk>F~#(3fUZCHm~gV`|v(LgT0_QsWV z8hpq4DZB+VSyKPxa6dhx}(Hq&0Bz>#X3S;u?lIMVS)YS(ia@;lkUG7%+Zc+ z7Nm`j9p-|tv$H$f>-JqF_cCFj1Njv81Gl*KP46_1C0%ScTD3;y(fD|!1+Jscl#sEq z630-zj)gs$<3ubM(Pw4BIkcr_cG7!tn&XLOA4MdY;kJqmGzBQJ8C^!}$zz(#?B6J8 zC(x(nbS+`9+ubpeM)CS~`zQl6?$VMr5vr0X#!7DJLM-TnW646n-UkgC`Eb1F`fLM}go=XMv)QbDe`CUy4EFjNkQ~ZK!Ym69=2JLv{Mzo@6e0}Os;Y@Pp2gSb}Xz!Hff+&TH zm+&VI)y7L);#>lDGrGgOU8SZwBb2SlD6O6;Vfs2}PS>4*-ARXy;+()jZW*XQs30~0Vxgx6gdYi=r#8_PRPkmDExMOhS$3u%xxLf6d)*lzD4Vmu*3gY9>q#D}PVw<`v8R%fS3R$*1!3>0 zW%+Op?-ALOuZ|n)HBaMMW8YYJ0P6G8us(GD2PpSgvvd&KhL*99sQ&96<3Mn*hYUA~ zPq&9|-vx%+G3rq_FsotV%>~cB1?xK0N?CX|f{0O!%=D z{$}ibU00IC z;aNO>9eEWGM!GfZsZxcy zrmzswc`fUM-W$5^IM@ggnKs2MPo>tiKAoa&AG!tXv5=naXgt;)BG$E|RfX^XQBJGu zIkqW0QLZ>&s?_#1$5k#VvCIHiX+xd}T+jL${0>ZMaiFnr<)k)NrFK}$l(>xS9_twU zdK?2v3@Nb{3|VzV*((X)`>9qNZ@NEA?xgW?2q&ErQ+MHL4*B-&V1>Kd#VKRBTo`Lb zhcAl{-tT4d<`xqf4kfo6?KOa2hzke|@7GY!zqEY~)jVV!$2(8>`YwrlqA25a=rlKW zI6;YQPjGiNjRx4@HoaClSy>cp&TNY-p|Kg*=AGO95m?#GOlcpfO%rF1f%R7$L{n|s zCp5mv?xs92`KDrX9V(aN%Uw=qEz{w1NpRF1(SL9)Ru}0rk%J%??Re&OqIE9Vo!O8GMS;SQOlIIFoFefECmLDtz{>Y zqvouH7e2+SL@Fnm#+N%FbL%P9WR4=|H@lmAO`=V3!|t|vt{8|*)KR&OP7#ex>AM8Z zNygj7r)1nXb5In{Z_Fs>F}?0rHkdI}EjI)Lp z=`-ZW+D`$)RV-P3m8eAneAC<1>t#oYjJc+{CgYqY*UdS?tRUvrib%wRRXal}&7%Eu z3!~=D+U!?grft|L@CdAa6|NS1M57ylduv}mWz_}-fv^Z&5(bJ1Ky!56WO1WO`!|e- zMA<=b)9!!@_WP#ze%t{}Qb<_RM z0oAOh?45v*ou9htmI&I$w0>fNQ6A!tnuEZl*+JoAf71J>omHZmRi~5_cphpU_}>;k z5r)g0G_zw|ugzg`ayhPKjH1)!qUr2DD;tXHpoo^or`)cG=zz>TO~f+Z3B6Q(4GczS zM%vEWBh7Slo5$T1`FxQbnrzAGO zwU5I%)7op9On8zl^-OWts2T*V^iJfZ6_f z6f_-ti8orTJ|15YlQV0W)dOLFYC1iz$lOF_!OuF5Rr+I0Nr37M(NQ2X)%Euh}q(8sL43=`1jYS{qfYG?e-~J4Ho~ zEhvH!d30dkpXaEe}YDPCP&8Z2p2EW722C`O)D71cMJRzgq zKMd*>!v!`&=!amSQ+#C*o8{PYd8Fsi`zEr9Bxt3?M#kAI5sYNeyCFO3qkDD_7iw0U z4hkS#@KtzJ@?BEQe9?ER4!#+!W!YA$X4`l$sLigD!8woX0MnYS77|RdH9bGR#|2fV z5Q*W1@vKX85~Q^sgcTFKB^+xrAM{w?t@hv%{EF3};JUZw;9&W3K#(KWQBW$^Db zY^Hv9l7gMCX(!D!xq#I}Gg%C65ASAJsSawiBQ65UlBka)?km{Cv)Ar4Ai z)oZ$(_qS0wIn>sux%=@aWhR9JR4xk~9o21UFtOB4r!+LEj%eCbRI$_CeEV2W8hdqF zJIMVthjwVfnZ>SSy;M?}24m0X(iP2PezUkYbtmOO3JONpI;i58Js0rA;D-6vNwA5W zYg|n>yFmLW8qmgo-4u9G*Ov_}Y_Z)7 z49*f!4;;Z+s~{tE>Le5Dv6$y!akSSoMWvnBMK`16=?=aZmK|+`Xi4%%L#ktQ%Ok&D z-i-*Cbw?yc)UfQ5XLnp0;E8)8{Z0W6wstt_M_{nnP|GxZRx1R@#`+r4YX~F|offDI z$nUXDaLN@I9||R`I-OTu5GmyHO*#*gTx4Q96)SR@rAsDYLY5q^P&JNz-b!}7OyY#k z4GVBn+emJrls8QRWX$zKVXZXiy6^a`-bzN26wtYc(R6+$&O^by(_C#71r832P1$#j={)E0dWS0mc6S zvcXQmG7Hg2ZDM>E+QN9$#L@v4{3V7tbW*eyEELxvXQyC%+-KB08R80Uf@;t!PC8na z+%DHhigUcq{;D<{;Q_J=KL}H7pzyUj>A7S?bLm#V1H34X}1>L`PU`USl+h@ z6WrXqzhoW`$AqAot@$Rs&uMd*T3fp5K8ub zu-Hh$0dqyBM$pn5qQl|a4sCZ`Yjb72Rt@Jfna_XUjyn%-&OYg*HzfoBc%Q!@n8BF} z2(gk{>O*V1jKeXb;oK;m9zJuJr^Dw9F6tP$tZZzc0Pk9Z4HyhLMfxeB&i4%TQ$|N+ zy@u(oJ6g(`&hSoyzo|j3Z{}TWb>a#0#5u3Wv(*f1UCBHLCR-&?OPnV)G}z$e9m8Uz z#5Inhu~OuRI8e#gb+7Ux_baZZ6nQp*J73r#;10*!2LBFsm)H3kHHsK~JKScY z`A3;p4x1+|a!Ho-2a!#{yA1a@LfR(XOQi7Q643Z0soSnwtigY0x>{+z1|~AsH=DVs zCJb(g_^D+DyJ>o+Jcl%%ORLEvH1DjDB994mxO{8Z*!Q^3dheQA3*X<#7bP-cQuT2y3?w`vfaAtPg=(Mrg)p~ zQ;!^>2|PEu%A7EZDtwo^8VK7E`gjbbFMMS37j6h4qa$ZQro z_t;cV4`UtXKc~+-ELYZl2s}Yzu?@Vu)+43kYrd0@-8_Y)hPTSN}w7A`COmBW10!PBsEB=`%x8}RN3AR#tMpW_>eA>u)w=EYFNkhZ_Sd_ji*@I z+NUu>B)3spM;&zx_r?;R$ls{ z^ButMeby`Kl@x9+?t~_OW`kO8x<@-Khi-O8Qg(+g@EYw)Vr-~xh60QPTyqHw+9tD(0i;n?jy-R!hMvYoPE>A zX4>e-mXg!WNZM1dxtelBA;%5kSo2bY?3=QC>6C`_u+FvxjT(i~Qf9+f={R-Lt{xia!*Qy{e`n>+!-tdr4dp8e*JN&T z3y7juNnnK7c>s1pS`e`KMmdqRF{X0bFRi^+7X^|ZjNbb{Fy^7|HLlRu=jyT5rfmW^ zb{IGC^5y%{v5J85eYPSa`2+n%eZ^C$hv#9%hLn)04cB z{?7+Y_eCkm>!@8R(LH7!JhBk@h5pM5Ns2!8_eQ@l+z#j6Vxv7>rjrwCqt(g?*ygd+ zJKl>M370lq!Xl3hEcp!`lXu}O2-Q-)B`}^y5bM?pWK^sKXr9|1$`{zxU?(iFfv}`b95Bz#qP;>opaLpG{S^GY)*t-4ebe8v6J|8A z4`z1{RU3{+X?iRp+(u`D!cNNVp;nGt4#pS8x+U7O9jw4`lBF_eXxiI5Tbz8kEG|)$lF= z>Qi1Fbg2`14GP5Le-B+~(EebU7MAtPUG2 zJa34(yR(veU@}nz7N%1rK2H9r?ecXd>=sePpq|@t(~`lN1D@=i-z79GnY_ocf*}(c z!La#`MRPvs`a(@6O-w)X-C*T#$TAkmtctCPQcn3>p#%Zvy3O5Y zVaYV;uY(;$NZ99XJ9UML@wv@AUW#Bkrm1v#gzQwZ0@AQ@WSymX{{W$r!c-qm6nx+R z0BCC@r~XOB7biJ5u8?o}PyYafEHL;j_aD_TcTpOl;cA&f;U2*_d@s6j)bZI3xHE1P zo3d|dz!ciqOB+sGzn1alv#Rn3c+gYh~^mWtUMJ^~mW?Az`yvrQ5Om24CXrb6P4$H0d zU10OwVswe&x@n@o2?Q+b4|xCHB8I37)0j-SooDW%b%a8A?zkwwC$bBrKB!m0!9AKNA5KhmmJ||aYJP<{qT;ZU zSRo$}R*OMSh!5FK$zi|Cx7`}mNI9v*t`&8vIrXa9MG4B{<93^r5n|8uwfJ_%(cSe@ z$C?sG;WQc-*acu+Bl^tS4Uu-s6A&WQ3{Ko5-6|O~#~Jjm^f;&FibLcSKjr21dTX_R z@h2xzA!Jzg_i)Gm0LB&+R3qGfRMV#cuu~|u`vm_0rW3b30n6b z82&c&gGTkLAR50rQ@zY#b6J>xsl?Z|UJSA+2*<4}_=nv&oo7T-~Wk*R|c|2+uFF!c)tRZ?c4B%-`7#1n{&}j2c>% z^c>vB`l$RZ;67PJ9nZRZz7xf%*_^fhd;6%N5f+m4{49b}FH@*e0uH^1Wys)EQnkZQ z5;X1+<4COA6yhJvVP|uDr0ue6vkOEZ29$#7U#LBma3we?1shmtEG!ncN=WS(N^}J^ zu4zp@hxI;b!s6Dx z)8-Ssoo$Em%d*0;!OkSuFd?R2ad#q*#COv>1_eVmo)8yY|(_vb8t^lj!bgIUi ztR$V$!04K~Tk1F2T4_ZSYOGR)`5j9MHd3RPGIObQ&0T8~WntK@0kq?yo#!T>vUz`2 z2x=m5)>fpbTTBQiK9zC?fUuu>O?8q0#t< zgPLgNmX;_wM$FREG_?apcIHlHIE91|ejeW5Y3%${SVOBVidf7uqbmu9GiTPai%kxR z*Y3GuzpZI2QCsW!UCfNp_rvWVn+JIo(+ z>TpifR}iAXnGVaXWDUr{s)9pr_f>kKvEeU;VI?ul!jH{-?PoOXdvxZd#$SeqzN%bn zoHCjt*)|4`$|+j~_gWLT-}xfe`4yFAM5im!L)}4j5KA3Y>Ye+OfHL{Lb++UH5^+2`S7nk}CmM&RYO=uA} z`IUx(CqvyE{^(#?%`t(Zf;t50gR;`2o!TM5kQLcQGEnoV_DqB|+H=(V{MRD6yWJO; zSE9n#TAv^qC`-(`-Gzz5F|P4tKC2lCVQKRV2Zu7S)0PN1l0AiEBM;E0;Ny!5{JLqW zQsY?Ynge^;zV$Rhu%w$&~ObrF?Dv9?vua9}Vg^*jRZ%XxCItBRCw9 z#{U4tM~cj!dLrr;q^zdY1KcJV)XtE!Q-}op=|tf}y=K(ITUZ%$Fb-+M zRX2-;qmGrVpm$LhXF8zluC)|_?OcxsC-+a?Vc(uMAGgfLV(3$MPLa-C?=)#rcZ4eR z;i{#T5Ctb45ZN=r-(+`F1s3Xa@c!uUzy*hGM16{PHEKhmXwgy#Z`o{aa%)Ssf9;|S z1BEJ8K?Lj3H+77O`PqJ+*$=%g6q;SE_VVR)NARkp|8|;Z1e=zMiQkoMP_bMM4L*co^ zYp*3Efnj&qI$X3H>8ixFlX=?0M`7_uHa3HLiCs<7xh8*@ce2DetmS254_yn`-RTH6q&d^sBtTj9n{;fu#(uM7fT-deUnU!A)g-buv73%r7X z@y=TR0L(O{__kTC!Tr;5&B}RsC}qwytMu&BE&%SN4|9PVCdke8R-)1dJdGaNEgC7mz^~(!R#&kKJLW zr;AX!*Gqjy`*5xSI41Cr7P{0gwS(O1w?;q{r*|YIer?x?C$jeQP>P5I*8qOXl+Zcm z?G`}L6Q#mO`KD?6+gddVdpH*5O4+?O)AUJ07+p> zbQ#(0z}eX`h_nuT91dT)0UIinBE?!F7bM+>w+WMWa-Zq39r$6Jas@7oa(4mZ;CKWW zN@PkrH<}Fq=$zrqsy=;yc(|R4s|bULkjMEM;y%7hERp4VMq#lYh&`u6%qHR;g~UsS z?+Yf6y1>T9hPFrO9e%5;!b}OVLzqw7dr$4x659NMv|0YGiOEA{O< zG1ea|Qek_K$<0D&>As`KTsNL|cmV2dR%}D&NO!%yIri`rtNrr5I`ls}D7kByEe9bIqHa%Bf zLtFm^rPEaou{5K)3DIYhFPg)^B5iR$B7Xr{wL>d5}6fxro-o=Weu8~ z^yx}**Re{w60pDO?^Dnk7ZeM#T-=bbD{#zbQK7GUh|1}H3U*f z2pev)hERC>`C6Z(C2v<7eD_V*aB-y5d>jE9sW9;dkyH?Kj&@2k{EIceEN;=G-pa&c zOsx%TGmxa{siTO|b46_4XyK*A28T=hTI)%l*y3g-xPz3gk?3qj3EA*D+-tlyDfs+e z6|8je5L|Y4g>*1xHZ1(>RLmQ@rqdaeS7ek)CjC^>xHB_O%khjRkBjvMIL=<*KthVa z2rN-}0=(2E)Ng^zv9WhS3GU3C+fzrBp`ydhdT?`l2ZK!}TU~1u?D zQs!Vyc@;%BywIG)ShCSlcbRJstVjgr0z!LDm4)1?oIue6;msKtMa4@deEaFL?}{B+ z?vLi9#YG{Go36->2u>aK4&_M81p=R|RvpKyt^r}&-#;MsF&|Cd$nJ*dDssr==A9No zx|grRJI#I{{!8%b?8<3NvUi0Ikx%gtbPB}m&t&b-30Crv{fKDZP=Fb=(0G69iB#>h;2$Pl3_AN=&kJXsv%)|GhFVk zIs?sO8P#TUuTr`qZm>(H)TfyBlF|IdU`d$8>A%~F97wQJp?Tb_r|-E4)_@@)AjumFg<%|x^u zcRH*O_In@E_?MU@1}A=_$qva>r^4xNP&&?2%^V{-!;|l7R}CIEs#tcm$lYdAp6%wZ zP@$FGX&LPehXbx{6XSMU4ZT&c&~~3?J6PuLsQzidw5C3dtUS4g2e;8$zeSpsYfwPx zO$CPN`Uf)U7{eaWJiAnf0^13n4b+%yEF;AmDoLXoxg10&<0Bh23_*C=VZ0xH1xY0u zQCYO%bdIWAJb#;-#71!Wd$uoiGo;Xh;p)0MjW+N8+96EZkSr*-IT1DHm|Ts99%XkgM$1-jh;reyC1T6E@ybspQFo-u2o%0pz8NETh$DaC0AihwQvU{Zm*5 zx34tUT_(3HXoVDaAooRggU6SWEY{Sv8beTt&u&w=*!n3N&~$aF;tmLkQAk=sjrp1i zX{9JZ)TU^xz-UufMtI6<>2IjtZqY#isY=TW4Aoej|O~|M`MG$~Qo1`1B3hYd$@TYiH=zWn#>NP{SSgqQ;)MDNOXrL7S2YV-` zZWa~}Zccb=mlk#lHoKtZ*3#<w$D*Hvme%cHtG z9fdCrlyz=9c!*LsIz3Gq(5{V~vljlg6PO*@um1o-WP#$x0PSnCN-qIM@c9W?mXnay z#bKfjFKHSSaDXzHfY9EC)FVYoCj4EtMnRgb0p8by%siCQoTP=U-&Q@mk7HVYNv9?O|nHr#;)H-X9P2OYdArwksc(>ds!c#U>Z z;P1ql7;eLho82Ks>uBP3><%@r%5ecR6$Fl^%+h>;T2_hA4Op2#X8WjdIEdMihhnD3 z31!OozbVkDh;tZNv4zZdk)(}4q`}waJ_lITd8`jg310E~bhP|K85^W7?trkksNMsC z@$7ujCy+ruZ4)gIei)C2;N;04AljEuT17cei6Qwbk{UDr0CJ7`B0w9a7MrCQadZ9C zX84(F**5v26UIiG3T9rVHwl`l>5OcBV@SVsh>u%EVW#D1DK#7#{;+Gf{%fNL#3`FD zm->U*Uu5wd94$A=1C-j(v=r^vMfi#wUj1s5*=eIHlxA-R%jlnS14fo6Hw(|=zDuL! zwzBl(QQbA8R5T;2sg=u{fODU0Q}`M(_*Eo91}An%$tWk8|V|usWtZ8l`#? zv5aW}+|_tM@=>??EL7xWt!~yB0>j^1uM5>W`6xOA zKLG5R`7Fc`u+j+|>bWTxnW52O3FTdA zR+cMu1`C_hS_Z*a2RS+D$c&a$a)){!B8tZ~<+^M+C>u4%^7hc%kysYFvI0(=T!!jL zI26e{723|NIk|xj0E5Y6x+RfJ*Fz3^b>usJmqubSGZzW)j*hnSD6myhmLV2m-e+ar zEE%~b!>yftQ?VL2hTSYgQAqEJ5Oic&_gEf{h6w?SZ!UVSmFdWEg|R$Xa8gSAKUU!4 zW8?wzQA*j`Tv%J>=Any8F3GypMJs4GVzCnBW6g^K)Ne0iPX@ASUn81ZTWX(&d~Bg7 zdvX)8FU;2Up#UF1r^VH{oyDdbP_Ur@}76!`t z^ir^~<)?t)#PAjYbnn~$ZAxP zHT#8@Msv&*^F6|ZP9FLvHN}nejry zu?rK2cx$B1e6lPrObB$CW!IkSd~{ER`6T6{!gPb16B=ulqjfeh&vjc`2aDB9fx=Ai zd~QBV6C{vNhl!F9$Nu^$CCtJJvOh|P5Yl^xy|p01*urc@(hw6FxEgt^P6j!8ut~}; z!e&Nl;s9>SIhy^r%NAgs&P6?xS6Rr~#bM;mN!X3}VP)2j0xb}_Hwf<;(R9DmZ?YYL zx;N_mmq_7rw=f!n)5NM(X|A;k>FWmCa$=QYye(LF_tqVbKqosXY6@1TJhDxeE>5!O z*P0EnSFfsuQyCy^0*-dSZPU%tJ{0ZLt;+JFHq``#umZ5#yWiv<$4LDn!VQlW?t62N z@|hn3DayO*9!nYG9?Aw>gWV0dPA!l2SXSs%vRtKM@c#gupRx?itG{Gr4d%M*PI_@q zJRIsp=g*0OxvgTuS`-b8y4=#`h6gUy>A(e-ZWZPeT0E9|cge*|KX`r`{gwhLBV&u? zE_vn1F1fcv>bAc`c0f`p7BrUfy~f&)H8*s4{gimAJHgI3>Y~LthbeLNX->zIa<#qf zG(M_!{3F(k-iS!n2AG?WH0lxQ1~4}_=G)aZ-S_fLFrmll$DC1G(anYn!N#H1G15npSaL1|{LYj5B?TVb zTg@I^2K)&?srOTIN5Gt%hmAya3lMb+0xkS;A5H$s5tW3L4ZM^IW?w%g;b|$vyHwMn z%!&0`!h8Kwo{Ww>N|y}x&$7edOm1n-w_qDtR>*9NLT>`8(Ke@t#BA+JjX6QDMIL7!_X326Ug=M5xYnHZ=BC5-&G?^U3hEfiGV=s) z{Zp`|uMQzeiFa8Oyj<_yVll2T>m4}$>Imj@sOg(;RB6WYml2??N;n7PCC9y~QIkQ1 zp~&D`Bcr8iQ`jCXvp_H01uRjxI5xKzU&%IRu)nxlM_Lr1!56Wv?&>z?nE{A(d5_rrG z#iVmXVQ9wNy4SGy?P4&NEOJ#%D4z0nqVStoX-nF$2jV8KnEH+OLx3Ct=>Gt$J-AH} zk)@?e8I9x=Q9y8WbfpuH$C8FZ$AX~49O2xEQ{blS9ZkJc@D4CAUZG*Ik71+cuw#4P z)?L)Ifu$&RMi6OYg=%>$M4e?&{{Zx%dDQbIJ;yUv1kq32s~J@(qp*EdfKy%GX;^K~ z%PXY5kwG)V#ibW4>8}f|@>-%?5pi|cQ;zC>!8tiISqg6@G10!t864LNDiduSC)JKv zr(}wj5N4DpBPGsrhq9FSUF?RzdzER#BKl5oC^zJrLq%w;)SBz!TdL}W*mY&#=dJC6Qd>6YtxeG=X@r)v6GuyScwUBWp#5-rV1m&sJ%Bs z5N8d_1HSvIdd&_-h4@(Ff5UA!?mbo_Cl36r4g*>UVPMDMfT9Ix;i7Xf-4q%K62?yd z0Q{^mysrI8;L$V)O`VbgSmCDY4U7{PhSthXl4eQ(=A-slCNbfzpDsSZCPvK|TvAi&~<0a4b}SilvC|@^SW2YS40#<(qU}-m~PeX23pa`<0%E3e&Zv zJ2JSa&9;|E6O&(=(k0D4gepzjiR+An4VP0V>p}+)&V+tzstr`BIZivN`vgsW7jSHiN$nF@-L9zm5+9KrXDOo%U%B!{tE0DDL`m4;{Ji>}#{gZ=S znV1uNWyNHbtjoHBY}<-hiBDH9Kr;?SbZh!TcmDv1j4(9Vu4;hg`=d)M{m}(75>8|M zkcb}d={bS-;pN5g-r6HtTAr<~P~n}|pUt_~%?v!69&4+;DK&wu015$gnSWT%O-h3h z*%;3h!KZoo}g53D;KA%*IlV`7g0f^&6IoTiGwox*|E z+D?mA)P)5x$Q9(CG*F&P6f{wjo!(wbc4iuH$wpjrTEX}jx3wtl`ylHGtV47KLb^G_ zBiqay`IAD~8%0fmdk)qUMx0soIE~Y|xN5N;6#oDUwIYMY>kIVT!Qo=0&mmnH z-Ck3+Dpy;I1s4zrQTB!3XmI4DV0G!qK_6BrJ*TX&Q?WGLtx$H2_2G`T#$G=tSZO8_ zi8C7CUTO*Dd3)R`M&Uu<%?cq*bqY*FW67JIh&USH9hv$ahO0YCAstp-2E1i$kOu1& z21e)K%@Q9DXw5is^9j8z7+`CjF6kHdFE}I2D6tZ__giDk`KDnlrO(#)PQaG6#ky;H zEDmy9;r{^8i*@k=qnJN1rA)f>K)((sYw5{PDVru{f&Eq3z z{_n(Rj*g8gMw%sqRNP3;W6MrHXmz#8VzbcKQ^+h#bIjJTI=1wED=qlv5rn^vR^us>xZ1IPWN5F)Gp0Mf(Z zayYo7cV3I7S%{7oJ~M9Sx)Tx|E1Gi(cnqY8F-8EK= z5H#HkG4DAT^(MI$8~*?$tT?LGI$9LE&|OKK)JkUADp5}EIWvqu zQ-vy|UtE`2=&wZi2vTC46jR$APbDnwkP9kJmKVnE4%jYh3G|qX#6LohkM6JysMkq9 zxCffF6vp17@Q;^Wf{m`PO|1xGC+WBLSh?L6PynKLPR+5uLKYsf?Wp566RpJOaM8cb z02+8l{+rfyj*z&#J=X=a&-pGBK5=vnQ}f($X|LsbPx- z;9F(KPV&P`R^vsxjdt`MfL#yb zcMg~Fv)ix`SP!h;&M16YJ@{V|vRg{SzQrC&C%L;6ADOlhaYVTmlF*oR358=kBi%xE z0Z$11)Yx}MPMUf7FUCEtYYRra>Xb|q#ioTv20)w5F*sQ(5I6KHK5L`oxaj^<{eEP= z603|S;-er5l4f$AK^-F?JP(CAPs`mi=}qjN$w{ihja-k!!{{Z1* z1~OTnE1;FF@@Vp3+3uEeyOK2bdHGuIzna+*Zr73_R|2K*JK1t~vcj>ZDQ`|+x}Flp zkeY(%jmit9{7m-j4jmu$o7u)6jQ;?2m?kq1kJ1Zg8PcW1BOidz>#?(`A5QiZI_T{mO~#>t8F|t3_X;hDS@S_fu9Q8X|jI?Jr}z0K%lj>Ea8l&%moswmUZCm|2Bd#9~2f*vHe{JHB?XlRdFit}lNy zF|%DnFZi|#2+4cxnc%pP;Y+T{*7tN9oshvtEV8|rr+iP!Hq+G!*_eD@thL(ug@Nf2 zJVC*vl+tb4s{EE|V9Jc`vZ{bMZ@ zLXG#rL8ht4E8C)JYl4-uUXwerMOJ=;-bD_*xp85udG$0Lc>OQHhX&Q}IHUL^GEWjTMjj_n~20JcO z;c_RsX<;CIZZGROTY`!lk*?17L9p!*u){43VTB_1}1+Baj++_2il_ z6zkA6sN-OFbUbD}&Xk}T%{QC_kDFNL^`vGAjXuB!$ zMh}cE@qVQfM=lR$V4m48x)vGs+NFrtCb|t>B(pTY@T%@VSfe@G|Cm!mM>ZRnF^k!U?yDTowSZ~klq}9&hh5AhPPIj&+n|WOx z%(35@T_E~s2%B31R;4g;36S3EyuNj1LQ6X!+EZdWr!z3_oh@T9O?;5d-#vXonZ3vR zEEC?yE%}X|0)dp@btDal+g(@5Lo=U!)W*B>aJ0u?rwUkzbFhn8NM6enq{B_tv};@M zqH|4A-3&z0${Jgk5`n%lvD}=A{{ZqM{{ZqPNIy|P*wck0u&PV0HSaaB$pgbe&-Xleb+fhd9_h&gcbb7116u!=^k; zTPxtgu#BdP=c!I;%){h~JEy<6?__YzlI^2UT^2aSKslF`?Y*p2ISG6&f1p@q!JZ!x zCsHp^Q)E45me4yO@J$Ey2L_yuMqNU3XNW8~-;0}NLmpR^HDygv5)G+!b^0tmrA*H0 zLq{l@b2uzJYd6i4!cpX$Tpi+3&6vAN^;mh{8$c&MW63i0wTaAXmQsLOdx_$d+>?Hc z{>W^l*GJR86`bX^qO(wPU2r@|qOx(vVHxgCTL{Ns$KpDK}PCLAn+TM@E=W6KAahsF1(Y*s|^bp=N9{|0zFf$ zuVYBpblenpY4b6oDHpFLhLw}waDK_X9RppNt;_A$Dt`l$MxkSHjFFFfTTTb};?>a} zGsC64OhbT8+$=keM(OAmuL&d2ce$Z)SiN~^vVVRj8`o>49ujP?uq#w!$q;i!t!*A_ zCt3k^ho9Lx0UZXjx_S8_u;G zN&`+#ZiPL$UW0YD2FKs#zhb4)3{%`sbvjKHbG?mksu<}MR$G2*e*;s~SL9Q2QtlA? z6MH83RJ#>~*+ulF;kiH-#L&7))f*e;Rt1@)3Rh)okD_~voSGAzZ#){K11SFhKwD~+ zD&aRqvpA80oIjdtx|cFC?-9@`16tBgAhGz)x@^O3mIe8si25nG3z#q6zG)B*h=2EWM+{z}uGE^8F7*Hj7D?1=SHM?-yW ze`q9gBV(-9<#iu5g2VMqqc)qI%3{Wvb8H=r?y!#2y4nek&Dbh`1C)Lsjw(pzkOmSn ze?^OwNc+i@^FVOuj~U_8{wV#H+(1!cvaz%^QDQ^n0C^_>MybrqGWqH~7gtU5ASP3L zwa(Tqe6mm^Udl1C&*I$rtWz5A3$_}mCeIrH+yncBHXI6RwMoljfz%YuOG=GMu}<%- zF2mSyG9I)KUJtzEy-GKNMJv%_JYhF=4&Q%~V}X^U^C2rwJ`dQb&gvh{?xJ<+N+V|U z9I~O5y028tf_cmUPa2fe@!eAm6r1}jD{d#IjTGG07*J3PWPy36njo&R&S1W4qz%Z? zZKW);JQbn%zf;?w#%Z4{2BDL z$C7PyXMxHs+?tODs^Cuv4vD)3)s4a(f~Jkzf|^b1XoGrMipR1o72!;aEtM0V2@f8{ zRjrixXyz35+UdsiSbpOP&8M>H{5BpqV`I0gr*4|iHV9V-%GUd-=FM+ru5TrV#dVAq zR;7`JjsfHMO-y?mcHlK#BN=4xzGl!tbUE*y9WmmMuoObt77sIK0+a5v3RvV7MA<30 zmw~AJqlgRub6C)GvBixJjFV?kUdkup426yj3?{)-NXX>NM_rGq99$6Mbxb^z4$AFz zQO?6dGIk;od}|hA2Un~l!$Ih&6%JQQ>)aJ9!&B$iWruro%7VoGPqJ?4VlvoI#ygN- zihBG@ywmZII~2@Y-J!MDyY(X@oy|4J^)9)^HP)~o5t#6H#bWeip2?2x05nncjdA@v ziY;jxG}?j^(s|k6nj3wQDZ`r4IQLYlL8`;Lp?c)83IW|%Uk}|sa)zZ5@ndh2#5*+4 z{gf=p8$#&^=6|wiSciU80;Is3;T^0lDe${RhUpmPu1B+dyRHRbV0#@ao^>ZrWr>hS z8=OYU9BgwpxbgfhP)1t|#!A%aqdKmN`fgEkO+^$qIW(SYC{y@KkHFr@MRHA8`^%!k zvCW7By3eQ{d?aucqNGqyh(ANCS509$$g{K(=J|OpjKv5mj@xV2zilwD}EG|dyakW!c0Q$`3bBUQ_e2M*cZ=AR`jU0aJ!C2IH|G!3i^OP&pEor9A< zhnmJ<%!f}T+%wwv&3mD+MKqRTe(Moh-pWi%SwJ+EgqUU>!WSip12|3`&^Cn~c`V}e zcM|Ho%pH@~6yx^d9%Xd02CG07X~iYg20*7C<4h+Q1pjmtphiqx#5O%$QInx6v;?4EWMgD$zd=rlRR zxE@=m@;5VDq>07*Z>=h>JsRqp?6I(QjV^Bd9l^p86Akd(KYhFe(hQP`jjZ|ZP1r8)94Gcm0Llf}dhKxJ^0PwnOeI-0SP7BrNR2M{j zMS9Zdo#X5^bZ>y7?)!97HT<1QMiX7-Q`tGHy%T1v!!Ep+T-=8^BiGp%I2O{T>uoBVAr#}&4hjgrDWvwU*YGF-2sg&o^1L7x;9#fx3Wt+SgFrB3) zX!eu}a8es3Vh*%9Bm6e7F&QRk3l*kM;R-RKL&B%llNeDNDI+C*8UBg!nBbWWg2Zg0 z9ntKdJ=XsK5)I8E3UUJ-`z#A-r_8AuTvW!%_u(O{k{?-MbZ`S8obwT-T<) z#nK19q}NWa$Ew6M_bTs_7`A?Mt9=w$z~kYsRcP*u&ozsP$q>r?vT`dAiF+6Xr!&05 zaqF5xKIJ$)`c2w{QB;dTv$ESo#@yKi+C z8%oW0wWhwd{8FqQpj6 z;?v0v4{fW+LFAy2f(@b?_JeET`ld+0c1=2`{YM~8@F}m#;8We1z^pm8E|MMAlwYE0 z^i5EX@&p-9s$E{>_8`D16Y8C-0s``;?ZNTodDUYXmS1$@S3yEcq;S(pSe(6EEb25& zDzs8*X{7nCK~7VN(SQEDh^f?iH|((cH~5qz;u53>LFcMuV1CL+WEqOwm2|g2A;FuD z-b7ldW#LOZloL6cg0T4JzkLul#Ev0I4wQ-__zgG#zXv9c%)FK$_X@)OHt;(p?ZmuV zwF7(W5}V-)AniSrnZt%t&0=H?BhM;uYns;P*6&{=7|?TMhLyRFyYi)w6MLW^-n#Tyc^qsO)gzZRh70pfW#6i4 z8+mZ)7v`V%TBD1)T+Q z(5Azt>#6fPrbS%PjjcD$Iw5yx#ty|gHj%n)Ear7q+N(n?fTHm5o5Y_BAGo#DGPYPu zPf`d9Y)y@jQchbz2}^^PVibhrVwi+MEko!(-8o7%37q|u9tQiB5Ia)p!1qC`r5~0h z8-kqoK=VLw93$}#*+Eb~iNKBcUje$Zu(;_N&eV9=+&82R?0!Q!%Hq&;X};EUdkh*mgO=!oJUo<+EkxyzX`xu0v`+k$hLF~1K-o9pjNHzpLx~R2!(Zy8 zgqM(<*B$+q3^}gMMwX(VF{I?_MQh}VyF-UG@kcOFOR{O}8nQddFc5W9H#3Q9i0%|Z znX18tKJ-R5--UQ~3Jc1y;Fby~w2R&Y^p z^GtBP)L%?{@SDVV7X;7(B{!PH>OzZWaCacBz@QSwcK#TM%wZVtZfecsonz}st&SN2-jGA zm{e1D1?}hLujJ@JWT3&u--?HkO zNI(76PXk$<-k;4fLgx--CuJvNx@)t{z|u5PSURrq#gB;1b_be>JhIDnJ9=?)BSg&& zD5NblY3|=u8|u_^hO~k=S+!F><7E|vl*aImBzdDVNZnwjw%3xx)>P&L8PO9T=~jQ5J8q{-R6e?oxcY@xg$Hj@su$KoMm4O zMW+qO!fud{V=I%)5cI9~r8z zC_8`)5y@gUP&T1MWaSRrU%2Cq+Wk{1fm9TuAiGfPpS58-Ny z>a`vef{W`+oWUr{;IQnbmhuHZ4#LvY&&@XjL`l{&DBL%in+`JPjo-S#${JecwMRRo zBVXAUUg`Ho$x9?Haqm{BVk4?LFxI^N*Ii6=T0N5*TF@@^;i75C??R~#X!ud#2+)+? zdhrj>hWo50p<`Grr_E(qRUsX!Ox-&|73zYE!is*lnU6fwnh#e4Lkn;FYcMq!}B>>Ek&rtwc&gzH$+;}of;#IQe`1AjFR;MGI?UF)kTbCocIf~ zrxC!S5NfRuQw@~NuoP^jHvG87&x`jQaYDm~qGPHSD4$@h(KL$Pbz0CU9ae7g#bDVX z&H0qDM(ZXqf5e0g{SE&B`>aMAKG{L{T^$Zq`wCLHFl?9}McU~GJ?-lHqeqxfVSf(` zT3F{h`Yx-TQoQi)p^1?Lnw@Emtp-~3Pj`8ntXqf;EoJ$pV4EZ^lP11M@Mhs*JRvZA zLBQ-&RoGGedA*lg{Q{WxbULPDPR}=6K5`y4lib3CDl#jS5r5tfv(G{4J)Z70jhWw6>6bvxN)9K#yl})s%=Is<;k0(Ez71xCWu3z~UM# zJc{*B!!`Zr(=l(0NgA0mAF<^Jk)gj_k6)ayyM>)GKK8gJZM$+0H2LAy3p+N|ZjcRp= z4<#AC9dOsZvcq(q8h1I3cB4uvM!mKLS0u@)#8Eo_$O8F%sZ78dzcq}Uut!P{pbC+g zTqAG9@|^1>-f5eKgYcl;Z-LmRsTgazX%DYAvU6-7V5L-;XoSf@JEyQ4*y^z`Iqm|M z8xH96A2jynZmIAHWPG1$P9^1!aR6*-M)E%{gHO6+Gmru;EhhLiN${l1vskrV)W|f~ zPgR>BEePMLhRcF;nj~l`ut(&b3quVG)nRs3@nYd9?myW@TA&-|p77fNGjOEcW%W=t zo(-$iryVUx5M+e4w0zV0%khu8ekvy3wvIFOwv-0kGr2Pp8+6P73-Qo1{m_p}VaMiA z>HIk4R9!h6ui=&b{RinNbo5oRSiY8YvAL~gTTny}Wjp)Jq2dzG-$TY%~9K=7io6j&X$h-tb2l87n^i%3nGuWx#aFamBj zsPQCd@%K$P^2*Fpc%As-h!l0-lEk~=u=&!$5Jan@f8AX!?)dZz887%&kat)Qpv_Qq zq2lah;!~YfORILh^GgstLww0n!G)FZ%H!T=HYdCczNVHl3!|LI0#+JH8I(I$J5|yc zw=lWG!OE5+5M^X`D32~`F7_3aroxad?$sUBc`O#la6HgfzulMFMq91<1o-aL;w>oB z*3%zamDX%gm=TpZgQEKDvju(!qiR9J?dvL`ejGwO_ip`wdzzq-IX;>LL{lfvxw zsz9k(oG2Jt-F8q5UW#_=gW6*^y2H3N`l$)KwH7qx0ZENDt4iqUwXZ)kb(SAw6z91A z0A$lkI8rz!9YTA%$Ujuq0CWkz)k|%@_MDeWPVnaCeua33rBhKf6Y;OE>vrDL@lSr5 z4`tN1PWpBnd4w6>I>-13KvuNQ*&@l{{Z@_V{q9UOd~MWH!0?&fIJX(Sz5-@nn2RcG$51bpk60C zxu6tJk`S;OI-1k$u(Jr}k2Pv`9Fqult*mT4Q_h+ofmgc2Y`LidEZ>6ag$2AfmAmHM8ae za01UasKJMyF|$i(FyZqJ_Ghq&d2Ojjw4{B#xd_L z<`4?F%^+_j8_59I1DmYdO5prc8df3h(alZ)jJF+6G#Xhx938b?C4$L_I%q&xm<&#( zhn3BQfILeFmZp~5*;0{6X*g14SS1JRXe(GbZ>!gB5g|(M>%EcSPhv9KOm&V)?HNUHdajtC zF>6ZeoYuCyliv59@lX?y!_gbfSII%qJ#fzVC?G|EbcQ%#bJ z!^Gib`>dnMSIw=^J7}nI3m7}4V*ZRv1K^clK8V$HmXqf4pj7eoki;&$mq!X?wC0)O zdS^8m4j!u!hR!>uE0h`X4Ew2Y?0s^j6jC*no4h%!JKvejc;}}VFgtLofF1LusoNC% z8Ff>J_MFRRRf@*ODiUmj?+k7uZI&uCDbJZpgf9azQ=aob@idpi>#EK{T7u;FgU0 zs2CXLk5y`Sv^49>iQsn$usO-FW%5zhTDGe4a9t~Jnbb6DlR*l8>7C#EL|fdYmG5*- zx@wkA`P7iG_=iUF=KlaR>_Z#?F}B^#(eZAskv6c~xkuv)OD|~lPaRxgqsd_7%G||t zi|n-xRHwd*YHu4`s0B42lsMY8))F{cC0fpzh#?tSC0cV2EkXnp)dhu&b&an-^flO- zgsfvvRqVPv9FH`xt;!whZFGb3;$7rG3U>xa7ob=NhcNr7-`#h*h}MVzJ1*V6{g*m{ zDjZ83NcCH$xMrnVD0(TqX?xqY!9FcVk}*ijov{KuNZVcg5LVFBb( zQ%%*64W>Lfq|%s*DdR_b1sJI%^(rP)+w4@_z0^lUW}UZbTIX-BXTXNtl*9^AGf6h9Qo7 z2n!7vWOP(wuibR4WJ{aPVjFm9^yIoP>AT%Q9;W=tiM46q?hrkWW3d#Ovw9+%6FSja zQM&a|;vMm`eo~;5Gn_yb=f@~3tIM(_37cejCgMhLotBg28wB6K?xcPGa-c3B?pi)4 zA4M+C_G)hD-9jiSzbcEDuvmYrJ@`LBhQz3gWB~r@#2l?)%ntUmX6^?4xhP{TJ}co= zp54ka*vuVg%gGr`r2DKE-*q8R-2^r%z=NV1=&%hS+lIkqknDZO5W;?0$0ng2LgV&E1V-pk%QyjoNfr2A;HfENg>f-*nA& zQ@*>rM(Ml`%07G|@Q&MYQnN>D6ERUc(HIWnRb7&Tx<_6P<7)V|?rLm}{R8Z<-ER5K zdauOmSyScy$Q9jRftc>9~WGOB3SB*ZZ*Ti%UR)n=B3p+ z9tVL}!1k>Ipl33=@OdKeoJW$ee8!$w%f-s&M&s%YRsk|w#QMFUGf)dW0e+q7N;?HXMt z(qmY4PsXvY4dK%h=Z)+VWN_cvbUda&(|UPuGO#*}wM_@SsXJ|xcl#jgD+)JKc-*Af z{{Ur%@y+~Pak+yu7O++v-FfhktKZo{D1Q8k#ZKlqtqta}CpK2rp6X}|ZNs{Ms(v8m zXv?S?+QB=zU3wFudnmlxnrm-~zUmX2$Hh%czYyQngpK_{HPk^*Znm9z+Q+vx72c~3 z*Rsi2myDWuszh-Ju7m#oaYp90Mw7C}mi0I4qQ>=NJLaUDtbM6XFseZm#2TIxb>iKJ z$h1Hy*k%Y`vjX!lJt<9QUwBnB=CnDBt&bXhaDUF*T}VM&_xx=b?myd!)m(*mKP1x%wKdB-!(g& z+rIen9F$JYiP)a+vOXq(?y0TU%T(E#LG)Ojlw^*|$t(>iMDXFNly?HaeOBtRN8&r( zbZ3qK0K%M3b%nismI?0b3wcmkGZznJ$b(5fXN-i=t5P1j(LXtYkC^^N{nd!_3;VAT&q;pB&HuOSV1j=^JH$w`50lkiVr?ytni&;y%cHfZ0^DfLf`gi-8QWJsx} z(K<2~inxSOMN#uX=mZ<8IxIdqMpu%9862GJvQJ=eDebU^9CJ39M=lM=x!9u^@Pk}r zGzyb6QZ%2{cj%eTOVx{YD5>C@Bi(g-5LPZ=*xlZ$-7^y#24f+rIt^A4&2!(>!tV2i zr;_{;YXQ)C^G$0s_<=(tAn36eJkKN*goCOk>uTLU0VTM%DuWFpFEg9=SZIqMn!>kR zh~`4;UE~*7?)yr#Aknnpbz-b(;4yHL4_*G^g$qWjmTX6(5W2qmz;{S0&bs zJF7pU>;C}aRAf2TNT(pNZPkuIp~5|6Z@(Efa{mBrzQJ_P4ryM(#@HL`fbIa;jn!Qy zVQ~bSB{v6%JA^P2>#~~%BOACg-!jKH&Y?t~pevGZ ziAM0pY8PG?T*FJP8lv?KlO_EZs8ud{1Hq{6Yu_$LjO%Nf-f zV>^oWT~+v9YbhI!1GdtwWWH#{NU>#3YRapKZ()*_^Q8|-a)0ia_Pkg&i%|su+r{A7 zFz;x5`K%;Gku|84Wy<$h*cCkTIyM$Zce;lMBf!o`_Dt@ISgwd<&9;)?K(LrDt+!`U zs7`iL!RDJDpx(+{Q)7~|Z>FmUCs}>qKqqC1d~M9!x}8cLQ2zjEAohRaYU_XC)G;6N z3$ONFd%V|L?==oncdF{68q&_dw<K97LSv%Ut)mDIADe-U1lmh2(QTgC$NP*} zj8ra{M~bdX@i6|hF|ZD0VKHnarJ$6{?>qiBp}x32mQV)zsSb+nCw~%%Xs~_P=A|?_ z+V`QwqTTF=VjmJ6yqqZk*fH94B~ctRtjHb(G@-%pwDMA62P9#8b|}n8iME(5|f(`Xd_1i+B)-K&KT{uJ;NV+}CJSSpBp9>5mQ;4-&7*IzZaB)&+|$ zwl_Epc8YU87c0C>=AnLOgXh7?x513cDM>HJ3_qExtGFB(E4-)fz1ei#2W+C7C^~P= zF!w@a%yxm-NE%iXT5pIk3{<^hZa)q*YCR$3)XY$jXmwL{pz2f@gR+vG!Cq=X-YLEl z?uvoD{K}2A2VvrZIHPXv@?BSVI2x9zqLu9y04i)8q~54^NwDNt*Y$p3LO;=P0iin(KK8-agCmIG{i+`wbUb z8#Hcn2sBy%fBi0$w_`tLiK;4);en1f%F!XFtTYfr+KdXNC>>BOcR%W&XLo%8Qc#va zIVX)5`)>Xv5Ya=6YdrECB&U9d&6{;L2clfxy0)f^n{{Z9*8-&j@gAS?q zSI42~ogQZ8tqA=~;|8#XGX1am(tG6m z*fzh_pnuwf;z-f>CpNcn%CU~TW3^bX2=zP<2Ck09Ihb44#FzFcxw#%aoD{DjAV=mZ z7h9a1JFES-{{RqCY!@^@wukCJp}$rd0H1aOW@&fsOsTePuZ z;AG72LEXB#Sez_Enp?5memX2T8|CNbuvpi;W_xP(U1jr3doG6@U)Pu4hGiV3yA;Q^ zUqYjcyqU04#7Wr(9HnF=r~s}HD$q_+Gc=C&3koz(jL}YT11g2ou^A;4Pwb$eDKI0l z9F{e&5?*3Gmw)xS0RI5gRX_E)cmDucQD)3L$AzGZJEm^BR%W*n{Mmre6Iy=gVc3Hp zIfiE+LuzbGV=X<+tmtiF-01;1E6Eu%%=au_?H-&!SXPYLoHPR0L}Cl)EPl=um~%!& zYTXLP_gN6FmJ4?$Y=dpC_e^eq1^Ku+01)iMx*fY#ty;{pE45vW$Q408HPs^;q!8?7 zRElf(7K6!kK1lV0)d#oPW&7}@U6#Cr2rDWq3Bt5aj>7yoKCAE~{!*QRkZjvuf|K+V z+yst38d3Cf02itqm$x(9=%au&&v%)=%_F~sO&#mDyR1uPaDG=-U)-oV$GT3r!0Y!= zbd+bRj;gm(jPe%&rpjzHJVi4l0vmpbkN*IHLE7!d67$!~?zQBzD_PVS!qP8Lvt}X9 za>lknDWYj%#E*hOt)R&>v}&-gb6ntdS7AAG;8g5(q;E?PHc?LBgwYMt!Q_K77E)`Q z)`Z@CGO1$D5sHd)Ee0;F0bCo{X6vTocV8omJD`qdZ)NzIb2YkGv#h6LWDRDdTeA6o zRAzfk29tiNk9@K)z6_>_9pyhn$%bxs5k+Fpf7ozqNmWZR+mh&bi0dTs6tI9awC|j2 z_FX3W%dX&3c<9saxz=f4%MXHr5;#iAS ztjhRgY2=-TuL(mp<_g$({_49-90RQB`|-6D-l$3Ft!5r;F!Nc5nl2t|GkpGA#qwC# zT-FmGF|V?IS)$6=`{T(0MypY}fZGDb;mpzH4y4A2TYI4;)~ThuaUWW5bPX=+w@zVh zyp^Ekhs8cKqK_TcR+^}>2VxZA+qFT6)|{G0Bv(E!ZG_AoXS;aQ>^P^;57k{gtciN4n`)8zl1wCgJ&JPr|U((XCN}GrIv%GY=cv-L1&o zbe=XDu<^C8vtrgKqN6V^>r;9vBmUxx2ZduEI>V~`4jH?-$~f>KjT}}jy-Y1@MFOxc zbD633`!1AoXg0N2E!>^qOm}s|)km=5`IFYefb7G~4&5xJS7z0#R;^zPR)JZSD&tEk z%BdD2#9K%d4*=^x`KLnHE}*w!iLKlFAOYB_-M8TIA@gXtL6UwxfB8;nasow4bD# zF#Qya5x?@L#u|gQt^};Z&1Y%+!448XBS}uhu^dAwI%vt&;X#NQt1uw~vml(D%8{Pv z@Wpt($aV^1=_e1xOZHlMlya0mg-9EkAmdxohBkhb9zQ@%l!KulA1xGYXyg>_4{6h7 z(U@$(^0;_*T_8#7+ebj6h_Q{o&~#He-DIpEh^K6tJCb{*9^*7bu4%pEPXWIHz@8B7 zQ+r{)sOW>0stYfwuGOno+P>W+uV%vM*(x#)UH!`rr3V#MPUn9z1E8HQ~a? z3*n72`iKk?7w_52Oag4FdqCv}E>Pa(ems7gK!pY*w;+uxbG$2-=vi|df zHcb8H8-X6_tvqM?(*FP#V(CR7IuN43vVjU{9MtC4skn(tfa?m52^+kh&0BfBI7Z&_ za&JgRTmViWg!9~Th1&g=5<>8JV{F7g=8sr3q#L3!H_2+vTemfY#D{lE4dV9d4;lPi z3I}clH+9lS{8WoGP;$Fc<#VG18=^w%vTJ_p@uT&pV^~j#ekqrE*W%;zSU>VDH^`LG zUo><|IH7ove3Q3WFB6d(DEtrpAe&m(p9fiW1RJ6#S_6sU9?8ACwB#IsSvc5K7F9)G zV%4C2O)6A~PHJ>MOHi8SXgON7Xcd=RKq9i0N|hqjGiWEPK5IBay8v*ad93xijI`CK z<8shrXec^J9ULhKHNwH;iMGu07+tR}N^Xj4*?r;9RW=?tXbE#3YYfqmnsQxbwvNg! zjfJnwMZ3*5yBLqHFY$I`(ZNOG2)6x{_&?I5jI^$>+ik@RUL0wZuD!W?qQb&4uGb(4 zv;dsLmC87Xzh!}8YDNZs>$lQvY6Mk*3DE>62W6s9v4_MCpdYm;bv3s z#BQrpQwr%gzr@OKb&ywyl%oxCq5Tt_)*8z1vM(KDN2fj3D2$Hv;CL{1sYVNMHF}1o z%GmJicji#K`p<3{G2U`^#WDW?4o`5R@O}6W4nwscg$~{DC^-VMty8p3IxAU%&J_ih zh*q<9>(vi+X{UuMMXAvQTU-HFtp}jxd?`}MsZyD`DYW7hEb91Lz8OY}S&NP3LPZ?( zDwH^)-L)R7IoSP*%Nrc*#~wdFrQxJxzuzPf*O}6%I1Tbmb~+WQ~cY^|cN@ zQppKB1%>G;T<{GjpP8WWpXs~VXS1PEjVyu?$45Y9Q=)0m_mduSv~mb*JBfJYDPqX#+wOSM=xiHg zbKLEM{9asWXD4?`=_s4{az`gD4!QpTg%yN7;-BFuqv1>L79YX)Kyb8B;5!WPgu|)% zE+`ZV4^DD>>?S=Ew;LgKh{(I8W%XKwT!Y7&wV7sD+sv+-%&?}xKb<2HRDv97TG3Lj6us7Ru(RcO=AOvkAqAt|O$I6~`Ftw{Bj$7e04`q< zPkByMp{|US%GTXOTyxo8&mT z0)p8%qJlcBSE{s1I;&Zanhz*H%>u*8Wb!JUvk|(?5OTF@_+Mi&Ryb0mT8j~4$bcbQ z1zHD&Vw^*T6^mz7>*eN~D_yZvdm8Wo9NtRYhGa8ZhXT+BYqio47+vUgDYB5T*!-Y_ z8F4C{@y^yK3}TeL8rtich<8T^-Dp%dlwV^P_2u{BYY!`OFe%Ma#eF9%)Yho*YlaZO-cY0JqiqM;Yp+qq6XM|$!=1yL(KU2~ zPvU3S^B^N()=hkrtdMuMwS$7NZamQGARu#JAF$?BIEoEv**Y0(I33?L8z6jaIko1o zQODeDZ`As%Yz}CGCmqhKqgZ2WwCDWRDlE~Ob&~7-mJR;^hn#2s0PUaQZ1=#$o>e{EhV8N78I2h@{Dw?VN{Ur54&POgTs@Tx5>i ztWGV`2DF=`*xXv;27z=#*bB)b`5}qw-IeYeT6Qu_?>Vm2eio(@HVRt36GOjJBh@xP z`4kpA>&frHC~*J*Y53Tm`IaVT77>{^cvcv9S?s51HR`cl5_34WPbB!>$5VwAA4_$a zcTY91lEd_rv9~LBU*31k$&v}^S^d<3v5?($T_uRl`fIjOVyj6uPiPRFy859d*P6;u zWAj#i1(u+fA@^C|XH*{jd&uS|UJPconl$_IX6vOg{x1__Vhx^2xmrC48M)fQ#}lQd z=H#0j19E|)>D)V5L1SDz^7BQrGy)l4@x9gqr6h+lU0`0$R}9YXk@nR-7O;wEEz0SK zRPgJtv~f{1G?0AgdZ2BA-l|r2!BepHEq&-*MJy+b`zLcuKL!5)#1?CcI`u>3m5Fv| z3RpOrK_oA-vahfLb5Y_PgOOa->Gwqx#CRS6qsE5@xY|0du!PxBb5nA=Vpdmqt9O#l zgO+8PUkg^8(0Qien$$Q(@({Z!HYDWI* zE|Z1(noV;~$ABDZVodCg9$Iq)s&tNdw;L!Z-Q5Y#AgDuJ-&K{WKr*PD zC?hDfjQa8)Uej>-gG!0HS~b-*_TUgb=X({3!m?ESA&ti{_TW{l%T7tE30(`bH3!c@O#7*4}AnV;j6yxBC-=!{xgSnnTN7WhF6!OO)BTJ==Yum|1E@lU1*Vj|J zZYj)oITRSPH3x1MKM&SO*WS%fW@pgV2LAwur8DZ3vWH>V-eJXI0kV$CpF&S?p?AY- z97-LRyJX1wyC^pK0Xv@>)FLZ@-Etfc0FMHKcVdvy1o6W3TWpyk>)mOxhbn5x4qxF)5fWa$QJ1Zku@rE5WuZX{$WDd`fH?(S{`7NkK!q)S*D zB$n>A3Z#?t!M| z9WpNED-?ZHF$pmKA&sWKY^A?wK1ya>S33rww%Vi&`zTITO%T7l^!Fm;MwMy+>whoip7ajuRPizDpC;I6^b1IQ^SKj1?wB&S3Ym@MM%!qBXKP^!ON{nNKRPwYzTljnt@r&8A<~uxou&bwpTj^bB z@XQ1EiOX%?lEs;cyT^m6MGAwK0|`8qQ$mP4MvsIMFgSoTkdnZvK{8Sgrtrz|7R%FL z-}t!swX~GL>oR+HR902%_?csk`wCeW`JeAuc?G46m(?>dGI1B+<}F2bPI}&Y&LNoc zq45ScADV=BDN5_V5@F$akv*ywzaR1mvA`=TDrzfW$Vd$eW>2 z!vPpSKq-`A;diuYFY^0`1fe3qOuR;V_h%^gP*a4NHh7K|rbByL{mff0+qQL(?S;*( z`)YAF|K2nJ8IL3a1D5>hhYBXzM50<8-9eDNz^9&~9yiQnf=xa8z7!hbp?HiDpE`!j zBf`X_kNP&xDQdcYeG4PDhVh@f#;dzjRzhlQ3{$NgiKo(i9^Wtg;(}4>7n!a;>2GVDb+Uus3X_6Bm!ZNM1B*;u*~Iez9~>2r$ny`#i-6D zV-mI;%ibyLYFNNnaR2dRJx&{)Vj z*T2hRDmddlWgtQvJ;wmjMWG({%}?4bcFFh@A2|Q85RaJR98Wg`fTsUl^=kQ8jrPov zwS>cpB>St7aSYDU+dp(53^QT}uw}egI(AmUhfe1@nX=w-+NeCYKU8mLX6#zzLFx?A zS&AKS;cCU0aMZp}5+oh24P*gzOYhvl_`jhq6@E6W;NbdO8oX8*ni5Jb4=7uLefF>zbPO=D~DuE=Agb#wZp*SV}aSpe5psIRJ+1OJz*{|!zOj!Ku z)RhzMEuf(*w&|Ngxs^CWv7Cq6e@KNBN|JLn`gJW1bJdCpy>Bu{{rd6>ZEVAHB{S(l zCjZc4tr2C^g!1g6%G8KMWgRf?Y@$)zpJr`?UGrMELs zSEkqDD8qgUveseuu^XkIjAN>?H327ueaVs=uuJ)bYeNn7hiIp;acMkIg|&1vVK=Fe z1Nc!I-~BTb7WM7Tcxt;{E_r~+jSS;RPj&6N;v1?5{qL~UL_Vbxm1F4kHyyCMo2b1s zM9vWPI7srG<-S^IE*8>#XUjl>$`j4&!l$o|d?PP^Y4gA;#&shbrS8w%^sZ?j zg`7MBc^SJ^Itsy7I3v%oM6KiF+Jzp;u~CMz;a^%tN9;*i=(&PYi}CeHTjY;(Om&y4 zz-Jlr-Oz7di5_?k6O4{L=Z2G?Tl^dwI0==v%s2=qL!Qc>qO_R~|sWyB7e~jI6)gy2T>;6Q7Rl_JBE=dmf#&(Z&L@0~^ zHdFGoNhyu$o9{U3ftYjRh}udIh}T18VcB9Cao9bNFIUq2@ik6CK+KPso6lZRBQaQ4WSMch zGlJOo75|W0AazqThc6@;#ruYU76;9IJP?ND!+ghCG$J9k8Yz8HfmHN&a3ulhm(#v4 zr-8QRSOFV?B$L3Ul50CtnrRqGEyqAXG~np7=9Asif@)wIE291vw92uivoeq}m9%GD zmsY{0F(ea{MGS3zclKH(W;jMfD=GO201l;6I4>RgKYj4+y(i1AEik$a(+gh*4wsBevb~ zX)*F>2wb&pvbI&)++*r4UomqI#V-{&-^aqD)s`O^r{v4pb~rU0W8;XNqkFtj7Vo$c z?ms=h*6}i-e%@po_0P?&Uz5)rEADE4CZ7Cemt7Yie)A2UmMc69b(7pe+Ip zv_qQF8k0J2rz42wQl8+Ef?o>X1bY7dU}6a7%e^0JYv5kC)eq1Nvls zEDweG^K1d5LIT#wsQ}Cq@$JW-drk#GL+5dPx~gzg8Z&+m z2lT{NK9d`h4-v10Lsxf8EMTADb|Zj>PAwxn)y94~P`yXDf|qj?;F1$77X_hP%W>#8 zagI)I_s=gxei}Y#Cu`gdZ7Td_BkHG6g+Z9Nd*J^?Fz`OK9()FoN$b zYEiLERYyyHGTHWIjjE)T`=$jqdayp|*9j{>dGk(udGoAO8+I-`Et+%#cxy? z!~0vOl#eFqCBC>Vv%2DZjE;OR3)ZyCJlY@z*G-=@G>+B z40B1twDnU5M!kN1e41V!Ya=2QdOc{2y9P>^_0V?mg>kblauzR?HGI=5{a$lse>Q^R zXIK;rLzaU837rMut8dQEk9@AR{8h1Mwy$p-vg%N3jIg#WhbFZ}HEV?7EMT+d9XdrL zS(&`iXun$LujlU*?oB{TK>{fru?u>!A>6*>s@*S{-z3DHTQzjsqQ}|s97j7J7Ikvp z$iGv&OJfSZ*8(b+vU%DbQdxfn=&oK>D)Bgxg7WmNcX|d>O9TXN+`HS2?Kiu)0(Jk4 zs3#&f_6Krr>5uF4v~mxrFLRE8Wj+ZQgbLJwHP{Wkflgamy>Fe3-zpnhG+#Zs4Ua!> z{j*mbw<}E35A|5s{28#8Y~{dR_bfjEeZmcvw$I8B=JF&BbYmY zG4`x$p0!?BFDxeXtnfUlo*vX8@|4O^V#<1aqli;upa?1b5~tB% zVsy~G3G0?)q?&coa6~LlR=nN*EW@A!ZVY>=S2>_SZJ91-fGxwJ-D8RR@m)M(4Y|<1 z`Pmqy#mKb__Y9qWAzWp&l(hnBCf00U551MyM?RAnD-1~bF%wrJ z`MH8`V9g^rO;&}biSEZd$3Zt7B7Gvd1StcaU-YYtW0=(AE7;pd#^W4O9n*BbOpPEY zT|(Wk&yVyy2Y2J)F?uWhj-i5P^}`Z`&xM#2wa@abYYe$*Qa=BfAS!>+PCY8ZwS?S)1N$gx z*EOS;R7cuG=i?hltCCuH`cNNxd$j_W{i6%ZOek3egWv)X>L7Pg0cU%96KXfDdTl~K z-DuI#Az%hmn|fJGvbI;i^K0doU?_$f=nW;FDrp4X950;^rg^&BG*8R;o8m_{47rte zQ}SWW)5FECZr4W6pkKu1!de@3_)K@fDMpqT!UYpe;S|ZrzVN-`c_Kvdrf>_yE9iNz zuu&b6SMJ@658q*L7kyZZ@Dm9aUZeQFd6649B~V2f{+rV|1Jqh%Od<+e;Slh&$3F*) zc@Jp%oB%Ytw}*t0P+a1U3%ep`w~W$0E1Rh|-)tEA$U6A|l^Ir_kXJhzL(IS&r&Ja? z755&!2&qt_CDmpYv0ZU_#zFm-Ojfnk7dAg7#(~hesb`FbqCS^j;iD3X!I?Pa0N`2U zmpb!>E9&0)M)7lA`-Tw|vUZ(H*&{v=V1dUlki*sV-wk|^Ag`ZLxaG#!8a9g!334%Z zO#jf-Mtb#*tzk-8@|M1`=_>W{-jsA?qUsdNm2D87U_++T;B=rgddU6DYYn)WM~7*M z`7YoE7SuO8rO*raC_TmGX8L;^!4Ir?H^+nY731|CGTMCkqE@84c5m{uyB2jgk7y$Cp~(6foCSUelzhe@LpwFz&ufO~poi2?L(O zG^M<^n?yiNSN#tjD@Evwaj|p$()s%BD^QCL zBC<%dRK$Y^qf@r#jHuXedCbJ{Z{&%Ec5mK`ydl=!gBAjN=(GJZLlZ|ML3fDC%cVe% zsQbEZfhjzsACUGJ^mPKjcQ=VCmWaABp}d@cablcT(ErI%8st7ycn7#_2ELwRc5|t( zP~LRzq-p{!fZ+O4u!8Xb67ESNvU!9slFCadyAx~Z*$_n%dl&Vf4}*7Cr($7R}d$ ztqDlH(P*qi7BIy#=A-3JpWZ}*E3Igen`EZx1Ci0*85F+?2GApZD&tN~p0mI7tMxvi zpH7UEs^HOZW8PQowvQ?5#J^GBkVwr$M}y076g&epH*k8&y(qxHo~Kmm8+jryTgttYwahq7l6a z`Fck!5g`0bvnc(RmE2nK6;Ii>+HNL6GNr!X>L+|NQC%?6%Ull+Vjcy}^f|3#)woeNx7Iv4&Asd$a@X`a!h z{E;4#0ZnJdT0*GU#ZJ~O2 zY+tqPH7(4#@y``QI{+I~t~lVyRo{r*&8nAmrpCX-4g`QG!gY9G|M7%%#A)>hXM6Dl z*;r$k>0Yc)HD*P|al`LhIj(O2@PrzKtx;o~AUjY)?JZnTlT`DRCF!<1v?Z`X>a!&^tg9tq`N z?mp}rlRar8A64@1*zy;%y_CYR_iLSZB#(yp@j{kgdNhe$bTDVZG$ zKq(aS9X#>U5&te3^~Vi3k4O_(BY>mCBXmZa6mS$q87)C$y0F(f-vMO(${Wxb$^UApf4;eJRp!mdioL!-D_hZHrlfgjl z3B$L{UE6!&MXP>!_aBXvzRBz&kw=ZfL!&@;`m)5{J2aKoch!S78gR#5XpBe7sw4e{ zA$GAKLOg8uj=qH90VN5wy?R!k|A2)1v2KwA99TH9VLaOJbh)mwH-hwg+C#%5X>m7h zED!#9eH9(|S@C^fX426B$QN0mz^f-rdSg>Sj$sm_(Z8RXWzc}N=oLdw@nM@(d0nl2 zBYSEl;@ZlqL?Q&rn;lSg#@ZEQu)q0~%4auALs~7d1qZxMKZA?hRUb`RFfPF`zJ33x z^=(46WvKEkU?teCds?F0kuOZ0l5e0Gm>vU{l+ve>GHQs}QZ5sC!ADo!J#Kz4Ma`SH z_AQd#xb0OsOlU6;qQ@yUwcmjUg0bw0!r!TGicz-RX#PX`Uc$ebc_gT~3X8Tt0inob==asc%c}9P#TD1e+3ys(EMH*Z4L9L|s%8gXU_j zLDIxoI(ylhu#dLi?e+)kvZgoR(fo`lnWm-&eI3JSr;==vJn?V4;BW;j;0ekXJKH*} z<5mS|XOfo8J;sh3XavR(fDPaCo?Gp2(tRF?*A&g(Df@#s8*t|gk%LFz za1=_8wFAE5tn`}>F;8`_C1)UFBSLf{w!yASABv^$PZbso;)hnv4P<2me52DKa9Km9 z=pAS^elStWy6)#@_-VNnui)=&j9EZ1_(_|q(OcmSNdeqK zN1_*qym%3a&C-1X*2zu)WF$_(M-azl7nj_TRc@Hw9EgD8X?{aU*T*$xNWxSZcE+3c zaqi3VnXz6vbt9xCNCMBG8>QrpZA#YOboch$A~9&D#FdiNonay1~Oh~*UNc~9JkU! z)(GT{sNz4r{+O#WS3drZeCx@aO4qc4%JCij^viQLIBV}+AVfrCs^SOJF2*syJ7EqK zc-jm+`-db!P5*3Rx+%$2N$OP3BB!;}J8}%(zhBCBkNs>|(0VR*O~~JteD? zTvJCskMl?F+-x4@##R4ATFKgQY5Y6*z-c-c8`#9q8zA=&sk~Hx@+mst@AgJll6We{ zUIPu@5hUX_$TFa+4G%Sd5MhwXo~D3*#`91OL#H2e1YxB-ABf3jlxpS=wPg+qcL$If ztGF;t8`AasYgtk@l%l^o=S6<{4O>Ps; zoLQ^VGH>c;^Q{Q<8rp&nipp~#!LdvqO68?+{bvd+)eZ^=C_cSKWJQ+^WA5hf`b{9W zBU*T0pgPoL66B~=2jy$C&M^?p7AaJqZ)lvB)$jdR#f{8muVwblTa-F$+nYlN9cUOb zHeFzWF;>?tbA>$kd=IsCv!%^G$&5C4qX$8cI{~DE6Rc+9q&My@reT7zGEiixS036B zchl!hFWEcQhoULofO>#+a%l>03%c{R4Cw40@Ln);#b&JByI}zMQ=|Lu6%7b4L>Myf zW4C^{bqsVjb?;1^xdjFRJBG;+;G(%bE8K1&(czz*Db3J}j}kZwt}Eg`P1a*S>b+b- z)SJpjo{Bw~Fi6l{gS#t%Hz{{g_Wp>A1`Z^OmPqgAaSKSs^8wig!;1VvwV1a#M1Jb; zkX9YG6zD^r;89`Ezz1SNqrzF4Ooq+%ZgjfsZnTSG=1bqlzFuS;-ZT~%Z_ZQ=7mElr zIqd-}#E)@Y>hO&=QAXeVtFdfxLW;1+J}jSU`?sqZZTdwJENUGux@F^uR-+tgV;(e_&=4Y1ga#NLGJ>eD%JXW zpGY3q9C>cQ{!|`DX_V|NJMl&$#N@5$EKztS!5pDpBLL)1^=D4u_zuuU``=oGjdP!+ zB)q7UV_b5qFgx4j1yM7BGD)?r^s{xtAjMBsWy7A`O?kkYx?;POUSjmy!p;%IZ*RAj zR3vbcajPr4*ax4m0z(U{!q|18WdGg8_xIX=zY?MH2<^g=W@t)Z%Gz%8L_Z@dzwrKrH zJ^&ASH=Gtvl7X=QAJR7#fwFU?Ox$BFTRi)}FdcWBg|Q&l3&Xx&byJjJtyWl?;t#VA zRXl-WQV{BrW>$JRw-WuzM_=SA4l#{^J&pNo8iiDR*X0JCx9f6ISh3 zEwAP7@PC+i2gC87F!Rt>(p$=bJlXb4)`rXz_ z(eh|s8(|beaHX}#ov^qX?Vp{KmSXBU=3hz`hH4*mI@WG5vv7+otUfF*+*cU=bo_xf z)zE@jdi1AwjmUo{8^!U&%H#{(>OfJOmIlcz&3*mz~@nFJ-4o31206b!G`&>NL-z5MwD?B`NZtf zGSTijvss{Nr!~|?4vcaa*xQ?ED@abh+P5@Y9a7R}!tYhY$njoM4YgIck!aR6$tm=x zBObnc-|ONr8yqe~r+7#H1p9t%xvhZ!YzZqYF&pt&Es*%k&s%pyw(l77rBQ>(FtF2v zxw^bY%pQo=LS2TOvw+!F-;;bq5fjL3ozhxK>NpOh0=-}ku#y(JFZJ$lUM!bS3H@eG z;aW>{=}i7GAn}K-yJ_lK8OQ%h2g1c5o|PUrD2hu5Z#gMs+#xm=p>7F{SfU}@I!(6x zfq^`5OejfxNXGR7suu{ zh8OSSVyi=TKvU({a(kh_PFPFFM{KcgmEic;+IgqP*NQ_VsCz9I5rcuSptV=gzMax$ zCOQJD-Ef7+82l@up%NjRs#;Fba)mwT>S;M<(e_9GnfrpWhfe;NOJ`G!1!y zuN}reokOurs3iMkA6ZX-dSk$#2eL;!ZjZfzKj^_TT6}Qx-(^dRTPD1LeX4!&>w2!m z1WT3lD=v*<_>SaPA4^sqPHO>BIovt4fPxS`#elG%W^-|nV$Ll0M(ieT#c*@Ok+&He z8_%w=#P~KP|D5bZsQSQFIL#pU=;Zk+Ll%FQuNxwc+TxP89g~Zp50+_F1?*2m^6V3h> zM2y~j6Xck>!bs_PHk6-stBavoAAr{@Z(&2&@LMby%I)U1wliHzh79%&3}x&u4rGWp zY+8=oxa%5~1a%!2i@mKD{H^5-^Zthv>eaSBJDE+0d5V=wS7kLG%$}A9Ttw63oK5z* z!lJVl^G;d_Aut_miM9ogwuJV-uoZMplX!Xd6tABh{)h|?#AXcL(nZ0<@>q)zSEA%b>9uA~D)Rhlueu3e}RX(g@1Bj9^CR#i&HXe^v%L`$YcF8-B*APmh4JTtQ^t_0-M>j?Xlr@ zsS6zp=d^FZ%ud2E!UU+>jG9$i9Laq1JVIjs@>NL**L!shpMIutE#uR|4C8=c^6*l= z4+BzXl8s{)z#&h>Vb`Y4^&!V$dxR4nXFaE4`$vmJlTM>V@e%XJXGY-Z?`n5dmI`UEY$E^Yg7aXJ%rqU)Q zinsySFhO&^*CiU9yGNEIACr$TGi|u;LN=Ws+31V zDG37&ru_VzMRu+zr^T9lC$(*`x%CfePsWBOa8JX!rtvHGJQwFtl?nM%julzR+w9xg zwghwQ4c70;6GZxq`zaZGwszg9Okf)5Kt0S#Jtc=hm-XH<+5_j!L4$ z2HHImJXC6xD~yqMqf}`3`vWub*gqga>ZX3uP2kdIOKAyh3atQ1H`bzkP<{-QSwY

8Le%>Wtv6pI7WVj7Yw9-;h@wHIC>elZQ#U$m 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%0DjunN_vRuU@4x>PZ0%vyh0Mm;0 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%0A->SriWCzL80xOHpdb0MrGRp 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 z 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�)pF? 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

x_6_QHQ7X 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 O0k~5-kPFAi`+or30Q#Q* literal 0 HcmV?d00001 diff --git a/assets/fonts/Manrope-Light.ttf b/assets/fonts/Manrope-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..17109800b11006d8028a1aeba5f82df03e43ff17 GIT binary patch literal 96312 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

-^nUvQN6Rshl&OUMi!Npb9o?6?% zy9;jqk+*nZ{ItZ)rzfBLbM&_GQyZ68Rc>;M8DMMcGv zv%1cIdDZ$_ztH2k*=19LcIFpOT{JH*w?IwE8Okeq&d$hQ+Mn4#A7R8a^#x)9ocsL5r5-LgU^EBecipteh8? zF1tEs_SK@I7v@T{kmbq1%SFy=f)!HxL5Za*tWVG}aiTJAXU^<{3x;{E{J!d$zk)9M z?#r3KbtvgFbj_SD$rJrX%+T0BTr$%|p%|34c2D9p(r)L|d*E)ac~_T2uU|Nv5F0zk znU#yc!XvMa0B@Y-tdpKCghZN@6M$94H-Oa&(}_oZT9hy_46{F92ls8oFxWBhcJ6atQ^J7_MV_D5VYfgVo=3K}<51Ws;Q}-L&+340hm(a#| zix~!aKGBmy76tey#T^go3;g+VcjoxiJpI=aLI|>sIKG}I#yKwq4_)Gsk`>MF?%=7jf$GPX)kJ$xa*-%5tv}` zH+pXRI}SzgeP_U_!OW1p=LWKZX~)WQSxp<}(ZF+CSn%pL(Q|W}x_->L_>EH?nD6Gf z<<&yi2HDHJw;66wG5ckgDgDOfMiTy|#-SuCZ(Q&s7wW4$>@_)jUPZD(08K^9{jKsJ zpsBd$&t{?n=22nt;W`m6ZhVNpLPjUT1vFT+0--RU|Go9kXRoj-FJ3jU5=K1G6ecjJ{mi)TsT{37!`NYo;&pA0G`()PDt63+r;eS=1rkBqY zUVnSQ+?Fhba!DxaJYPyS7SlYFQ#Z&gX zhy^Sx1xq@Z;t{u}8!TZ089M@|MwLbtKp{N?9_GC!U$A}RsrR02gpk?B5#o-5o{g2X zjIPG*&SmCw4F}n9)1tn?YR7a~8YN)WjnX`(>#WAQ%q%K4&c@#@BZHALY;2?*V1z1q zuO4-rSx@*>MJO9L(=s;hP-)yxsB3(G;E2$_6$;0+;99G-PRyYWW3+X_wTkJT{w@P9 zeOOxx{+_|bZ?qan`qhee%qY3uvWqNQQ2sWfp`VTdv9zmIz8uv6Dc4)$&xtg(?9_n_ z(Z_(E$`JWBG8vYFm7fUfwmoJFn61E*DJ+$WWnhdw_HyI^#@L1Cm)>2o=5A@}7pqr) zQJS_rC1rcs_>z>A5)b&0b{0R@K7@zPrj(4Q{^AqbyYLLN#V}!_lvQwQ1|nKzm_KZa zY!QAZot{(NJ@IBWghgPzvN@vg2AW_tFN+|}@^ST*NdwB%MC0w8P3W5Bi1-bu>6;VC zmDQhb-+ZUI&&)B}UtD=5siH$hts9=YIdRdMM%tC$#w_aDt zYa4D2iQ93Q*@oNqaPc9UaB-cZuJfPY-u^6zZherGuw6{i>u7@-aV_wHdIg>C18 z%RwJ&bI9Gd1%Gn;^4`6~wub+;(SbZA%&!stX8Zsd`NNy&0l*B?KfS=Hb%b>?f)_Wl z*t$%^7rng2{j9^3;$ahaq@?W}KYfelXb`W|j!W{_M4g(j`OeC%-+D|rHZOSOoB?S& z#!uLhk~AQS{$4Xidona;#Hvp>Z@RkyEgNdbOz^hZ=^=gXkbMtlUHzV{EV8bksw~^~ z^@a`KS1fyX#HL=`lc!gV*9>`W@#c?hfmiC|0go{_*zJM-HuBbLjBug7vxfX;S-2b*eBUQdL6$XK7pJn`y{#P-}DH32BI+CGoP?ehRB~Z{Y+nBpTtO?lr}w} z4GdST3&4o&SF>={TtUm7Ho^yt|Wn3K9Kg=qkVeqObb9_nd;ZcTF5 zTM7;Gd36(aq^6cnAH61cT6gFqII*9nW_euN=J@eD)8cb-;>XU

+K2sl*TTFd|}t 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

  • a|(p6`e2w&zoE&iO3@H>KdZEr#~_ZU0mv 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 Dv2lqY literal 0 HcmV?d00001 diff --git a/assets/fonts/Manrope-Regular.ttf b/assets/fonts/Manrope-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7d21e1befc3a388071afcfaf4dce5c269f4cf76c GIT binary patch literal 96412 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⪌I9zJu-tlySUy}-T&ICPPTFs5(oFC-e=(KohSo}Lovo$Z z_kFP>9bss`g+^S1MvWSTCS8;6an8zf7Mpn8y?Q^h)_b{c!Sjz)B(gbM^84?LSLv75 zGHw<3I^}Oo_hIge_cK>+nKa$N&8*%ng;{50wb;>jmdEO@@eSjJ9;}dzH|27m{=6#lM@RhgT+4>DlULWDo^Us3{$SAwtvnBYJOa)GMILtid0{^G#V59TR%EB7@P*Nty@ zxZu>FP5ri>Z4N8GsO{k_5MS}Fz?DlTZpeT9YTVL|s|S)1Zkpkn<}Encx1!hjCl;T6 z+t)!oDzN5BQZ97$tR{++jf7Sm5`TGO=&LuDzOv!v|I9B4o3$lweL?b|CD|?kokmR9}wldDAi_p1e>B;12iw4fvJZ{g%pv(Yq<+3di)TykDWy(EglY5A7bN+3RUIwb`|g5;@9nSssA$(~%~$)Vq43y0P~xIM^M!R2iAC7;bYSlX#E-xfqwpT@?!uUdn~^`_F5OHyA;lEjkX zyq%ydLn?Ok*oh9>_sO!Nk81b7w{XF`+m_eG$L}pF-aj#+j=bVn3qhg}JxFL>t=Mwn zK~cAFN8zjM)?Zn&?3Fd8uP$3C1kvT##$=GcQI1si!R`w0Xd0(Rm0dJ-MOoW}a#GQ^m^mQpArQaOPdwQ(nrVn?xoM}!78RoX;n?sEkpMJRUi6`Hl zL9{bH$=2WNANqYOrSX%tzq6)usa?&M#Ha6GIDTu(j!&O{_9IF^efs$igr+HEK_aWU zhs>#VsLrA09yR#v%)D|w&dhUNt9%gjkvQ~(LwDe(nq0&Bvsm9kUe6(AD5~t}$f7np=-QoJ{#i}~xxl`w#d8VQGT*!{m zcXY1_!#yj+#tVd2)QG=c9{Ry2*WZ8pn}u`3Di2Yo(o()Q*OhTx19|hx97zYkZrFr) z0*dH0TTmrMWDB$&HkUjk8zRDJO;x8$s1X~#BmC`-pV37ZINI?9hp!T3G99ort zO)Mndn;~aa`Wf{HYR!Auq(_8=iKa~NF|n4Y9FggIeQe2sH2_ikxdkXt*44! z=m^4=@V`CPQP6w|xLLVN0PM2(5 zoQhdiNvj$1AvRHOYDlt$oMd2aAi^Otse$gkC&-jEX4rx(UHoAgJTEyOJ5Iy!{UQGUR-%H16Vl$T1 ze|MK|A-%g#O6gtX7CkzwORs^Q)ug*my4M(|VDVX77>h%C_8HK>FfuU1zh~xxF!jKh zS>s&#CHuOCIQ#VWNOJWfCu~heFJUYS4^s@sY%E6M?W+s=vz2F9UG>d&cl*@zdLz&dQVC3|GHSwDmi^kM=gN1vfGe*GVYphU3%MWcR~v0bZ@-6`7*~bdiT|Hw z#r9J@u^ZXi#f0gy`W+`~-N1ydXX{7#)pOZof2|1uYD)!7MeRyQTv_4}Da--fDtz@FLu+uz+6 z-c+#@HF$xDEZq^&p~e%(L4AEtZ>EJ}!1XhNEAI;#>Ll#PKJV2dc3lzFK9%r!lNi0uxPC8bKm59{|&5#^!VU|UZs36qWmD-r0)Tc63)quI; zWSPD*WPMFdjY@U$}I-s7*nhW}l9`yn3R;%#1M2hFMPr^lnz zAEhT-UWL}~!J|>sXUlVA9Uvnmsg0{KM01|(jg}Uv%O&?ZpW~ugz5!-JnKhFMT{s+ol9u{G^nDf?j@Hf#(m0$HVI{+27Kq764Y z)dLXo+qhF+HI{rPUwQt#b0znUKq=GCl`7`ne8!&>TBOdE4ZL$DPIaYnR|O`{WQRpR zPmBF4F>yQBSr9?{uR-?a)`4_#J?X#HUXDex=i>0}j(BvV{^k>nFWP_vly=Ads z>{Kp>Lhn7+mds`3#Ej~VTZ^kjuU!e5${+6jcl%cLcPCGx59$x17aai(v1h&Ejo%X_ zNswP%BC);k`!7qZ4nAeNzz(_qJht4~(2H^>sU_E65!E#66WycVwL`ZZICphj$&fXDc_z0RhlVB%f#A6&MF71T(olK@v#Ht!{ zgY}$jeuHC)odJbH-A|bg32Rd6IwI(JL9TLdZR-aKsqWitd{2ZDOcH{tnK=Gyu)8B|+0DzuAy zGM7xT2-}#a+Ji4H|JzD=V!B1_+Nwoc=t+AG#3R z!VPR1$opK~)2fp4?g{KK6q#Ukw97v>`SY#K5i23bMf~9TS#bdLa zwe82HPF@jnR|=H`HjwhOp0K@Q3q?zb+II0xl=HN~Job_BwVbE5jr0&1=^<8fFQU#C z>TPqgHV~Kh)e==wb)7rEaSL3>s_Sfu9esfv(_dl<5q+tg4X`YGvQf#j7Te8ZdIj)o z>J@UgajGR?QtH(PD7{uO(qU5O)jHQuJFswsC1|pfkDYX@D$@Xu`TpL>OSG*%vq@Oe zHqAQ45-OHL1y%car7M5N$*n$$0l-Ut(q8U&X+w^LcX7sjgxu`1ySUC0Ldu_wTQN2T z+QLQBxan9EskbGgk_k3U@!I4EGmKbcOUqWr1gk)Hu*wEvk`87xlKNOOyqFF)!Of=d zVyl4ov`;Lqkr#HDVC~bZJ)SnBSGZLUH>VfdTd++rSd4TY>9YQm$gQ^7TTpeJd=|K$ zywg58EeON!9VV`<1Jijl>knHq26M0&(MEK9B32XUO75i7h)RjD!53tw2ecokh{+dra-fj_fP)427)Id4B=xdX}VB=e5p}H#xE9-Sv7ah0QuDjAbLH{EJ z-T4to9M)Ts9#f8$_Mt+Z;M-!i(cLwG?Hsu}Rcz_ieT2_|!exUZD@zsI zm%moi<$-RFg9ohGJX(iTCi;4?akz)mLzZ~Z(`+=do5}b#^D)_3W29KEjl2*eU*-`R z@_eaMMIuX(nhm~Cx}D=yv(fd52J7Q*)_uV#V9&fj^GuW(kj-)mEzAsxaZ14&BvvhY zLwE!0JdoFHX{D_?R#B%7hKk}jDYSmXue`ubE_$PVFaPOL*Q2qlbXU*=J8Dji%YS;! znwM7E*L6F#W_i`n9qactOt{hKM0L;Ui|1#Bj0*SfmsBum`p(ITyJq&DwUi1oCJ!7L z?iG->EbYJ}SSOAHUnlg1W11P7p`(~2VfjvX02>}>ztusM^f>VqM$1=ug<&i@h}Ipc z)GMX~h{?=AI*1ymC3^7{bK!L_R;p4vh$mIZC8`6GL*o~PgvAyHcK~Gzm8w@dh<+Q& zO7URFDf^cc1=e%`O)R;T=C}vi;szon4fcHR+9(6uaRkW~Sspz*fTEF%cIqevSr^3{ z$}nV`(KiTnmU0(G$gDODX+WOWGVh{@+@uCub}njKG&H+^|D++6k9^P=R~%PSG-X5Y zE}ai_?b>J2zUix;%Fj$6oIh>&kA1p0?Qw88uxopruw65vAhCGk*hxNVfz1RL<4pBQ zDi}KbT*pP6aZWV^+X1jxer4e1|`(4e) zB;S^mi5?b5hTX@=f~$I|I)LEz8&*Y2ZmEtiIM^d$*t1)VSx(oIR5@Ehft)oLpnsWT zWIZ*Sc;kG~ z?UyZ?+zrwly&xl`dg}gsU$@pMGy6lgn%;a@m!{}G&)UzndiP|zW2?6}=_~|ea}%@S zqjSA(*b6{+F>5e3LX-c)5*)6&-?0fyh9%c>1o0I#?S)|-?gXP|7xOH_H)>|l6x1O+ zr0NS6XXy2twP}++Qi5=$MaX&$CfJ0klqfA{tGK_$;&UlmWeqTWk{$R=vIJI6RefO- zC|h4-s~GplyZBPJ${IZKcjIbHz<8=E&nBq0oW$dLYmjJfgz<%zV9ALp+tk!UW0|V{ ztW#~9$lcj0Gg%1K`&mN7LS%l|t^+jqi07&NrT*roz5J|ELpd3tb!$h;&n%&XBvor$ z%BB#Th#)V(*mL zbE#Ibno`=;i&H7sJ=R@!zHxKAbh`5{Ztk+pxE-LCO-?pjyEm=!^?&&Kb(%?3-R6T< z$WGbjas3+3M5eJXd>!7U+=QRB=Cv7CdEN}keQgRjEJ}b0%Mq8h2Y_vhgPyX;F-W~F zV+NqbSA~rSEB4298sZ^qy9_tlWsD)Frzo39N93sox09^br9WnZ7>MvV$Qrir zl;qTulSO>=sVUn+qqosKJ0;m@_*&L!L?)xA_yd2Z^G&51I5;i*I=5NdFOrL2(L z8pWgr$2xRjMcX^c#ch_bu~?`>Ubl&!%uzkm(#hmdsXkc3(9+3d>qdZ1w9uKet0g?G zoiTpPCZ_OXxo4$%3w|u(c78KUthgVU6Xg7a_dsEz9-WVhC40#zGIF0-q8!#-E|f6e zj6bRRR5@Jg(djPte?<4K$CA5r$I8G`z~|W(U*tv^ zzOs*G(xKBB>m|HH=Qox{m%XAt+m3Bc3+QxWj5K`;#}&kpmIjqQ5(@}pjew=HGgi}H zVb-DZlsM;65=%xuD$XGfUl5-XpP)X}P0S`IbwBC;NiK+qc-tF!0v+D&gw=6&=N(wl zqA}ooLDU{5TSk+4b-L#f_C%ak?r07Z-a_gPokrO^d`<^+1>0&enzT@N zTusK3=LUKhdNit9M|rD3cfn)~=9T6e4`5Ckw#J6{$#u5CubGS>t?V7s8RzPLR(1aseJ6jep5g*n19-H!=AKScb;05#UnxcH~PF(8{`qZdl5E%nr zKi#IcCb`;(ys-gqe$?rP;Z;xo`);b9ywdM0MghfFG+(;G3Mv0H_`8;*vA;lH;&bVF zrJK?7-_aZR6t}YBTMV!7V;Kn#tQ@nG7S2ep(py?X0(Ha84om22*a3;=acvJxG>_w@ zfq;(egleNIPbp_7NB}(p=*aj{4;p~1lo!80h_y!uXD4th^al--`h((A_7lqjxwsL{ zv>9Wfht|gXDZ|GP9Pg0pQaEGcq8?o}GaP;94U3)JxfAh=U!wIIFo=5Oj2W5e;^^Ah ze?pu#sL!~RA>qBEyv4^$U7|)zjn(!X-Oa(?u}kLwFE51H5?-@;w#*$A;dsGPBFiM5 ziDm~!06uf|?&_6ms;bsZnKXHFV*F(4QD3(H$gy?nkIl(XO`A7AHGLlD4n9-9rK(32 zGTVvaxqIbWmEmSDb}xtFt|T@wUw?0Ojo^pBk!kYvt`Ju1dXWRTP;BXu)YKzOTQ3w_ zT2Qc5zD}%CoFOQ?t$B9Il4sX+6O@%orQ4ajxu@M!0x-aCfpRy;068aM!G3oH1}bP@ z+#&AmR3U89byL+#cY^RwH5;H!n0{sc8h?hWn3i;8PfERJrRSy5{7|`r`cRA(h6+!N zr>bdgQq?~vK8gn{+-(?*1ZfzKOpmw~;m9{#dsB z>>7EVm=`FGS~C6bnhp3Ju`cE#%}nZ#%&f4SNs#8p*TI#Z=4SFGHch%(x1Ij3Hngv< z6dfvccPbeLVZYShfP&E6%XxEPL*=lq6LFzsx@VrDxPw0E8Qn9q?0Ma>8eKj8H+@Ps zi$2J|*v0m5=pxt`Mq{@?&4UbvNvF%T5iCt5o&E<0`1po}=ovyj6NOU>?Djcyyuf!g z&8qqI0iSI>@=p}4IG#51Xzs*lmrk0fu`at$oZGSS!myIDw;Qq_-k2~ydC9s>zj#iq zOqnvaa7_HRtl5i#1cB}%L{nZ|T3$LoYt7-1*?aR=oDcLqwQb8Q3-!G64rU5o$i>`P z4+7Nnzk|!**`?>T>?U~h;Kr@+GH1V|@xik_885IWkz^y-=QGJz>2H%K`;Bfikp_|4 zq^pf?Gto;7yJx-=A|m5)VW|vb%|!%hG6ruDuIGZ|oGaqN1(N(7$7r1u4*JnpdvMIn zIkcjN?s;C9OFwy07eyWb!=n>PCOxfV>-C;)Fk^hISHG6;mHz=v*eqFrY6N<^cw?sC zI5p@X^oy7f&1yEqPePX&00;c&Nh4T+FwWO#=(?rRUrkj2bfXfm=t&Zt+CkiIt<02dxykfsk0qmN?Z`j0aCR zE{s*kv#(GmtLTF#H@?h|u@gL5Xj55_&qkicvFuD`+}epx0=o8z=~v9W7$Q>GFSTW$g35kO=+9MBGI zj<#W*dlu1tdr*DKY=8w{V4kW&s(N@dYZT1?8mTOhq^jk6yHNaHOV$Wa;}bP0_*u3+ znm>W129>@8CB4Hf4qFYI6so8Z!kXWr-&d1^F5$fkkEFpDZ$*S&SPA@yA{G5tX2AORGV9|9!`$63G(;iqjH@-k5*=aK|NKZ1{qbY* zv;9ip0P+3c7MT=Y*YEZ-hrd|enL6rjszOG^zO~})ok4p7&NX{pC21dgO;Vm0n}2aT zf0fem{~oQ(c_J-4ozfRi1ysMY2(X!6i_^o#&RPU7O@wa{;T`4;p@yfY4OfJQD7(A6 zQ6;@_xcOYbp24@zu6QeU^k9|lCUvqe`Qq?1clzxOCzEcyPkavw!angc&qeQ42b_A5 z()8@KCvqx}{!|`vXzrgk7=Co`)IzBik2Hx zx;pC zYg9eT%gc4sM}*OzUykhG(XNdVzlH zE&=M!P87ojW$u%7Xi=l~L@OCmE|v(pc7I+qabnfyyQ`#ss}>w72qPq{;Mjr!{?pI} z$G{w`ahaRv%6|~Y0|$x2KUS{%hxo_AqvCJxEUU~peQoX9uTIaJb^5EdYpj8Q zo)s534Z#(-oLz@FQQt0oZysk7trG6$&<){pX`X;9a1DY@KyHQddBBFH;ZhB1Fe)h6 zMQ(734Be4fEZ|gA1FF9;`m>#XkuHnBKDX*vQr4N()zA7m+A+e5xtlzHQgH-rC}}xmA~+32o;F{K1FG zQ1R`DA6ActFLtL%BYO(W+eJ5z*<3Q14Q%zOOzzK#L3WpUQ+KbBn+Gu7!~?Jnd>~L7 zwR7w~2uRpzP?{W?^tx~h8HApQ+i<3HIoHnI&t}Sq zDMIFWw~f-mOoO(a;hmX(htfFO_PTezy z4xj4O6_$^4s!#}ARUA*qM+N;>_lR;>Wpg^S{g_E1&u^H-apZ4yMMWR}q?E4Y&+A9K z1ukK;mf|>?T*C%L9ETw>W>kx#vIr0zS&j#B9B-Dvya_pqV;-PHE77Y3{P8B| zGyc1}2Y&yA390nCoHLWE84P>DOexuF&p|JP*g^5851jJPu~_8(RFG`^!&Zaz=3f*c#lW>uwGJ#Cw#wK z_vqT)G?^XI6(%-6g$(;;VGQE|{yeWo=-JluXI<)~5$GhN>I0IhAI_-aV1vbx4H-E^ zcSfU)M|?-T^`n4s#Wx#F-RZAjWI0S(fTHJ zLjm#aPfXSEom>F(^-rF&%Y zMtkqX$k{)WK4&qJ#swd|^iX8h0v~BblwV>VT`-yxGTS_gMufU^GdW34ZQ3R7ogwbU zf>a2_O;@R?qwGt54@ILqt1f%_EHd0#Lvw3tbjMICIgotZbd`J}vY3-sGBau86~e82 zU=&mC6tZh{Z*dlAY);2JauqS&LHr|+fj*Lu&=(=0M8PhRzXA*}My~!!*bBJnWDmX` zEiZ3Q!aH*I9%ICDDGIlZq-#k}k{~|OvqZf0+H2x}SM?NAX}FN+;9qdAwDerQU)QdF z^UtkadoJH!A5~)i12h=R=>|VbxCpxSVszs{B`Z>ecH>26&;$`cR`3o#ntkH!zMVC+ zR;h8R+>o?8q=r=Y?pOUl|LO6Lzy9i-)^BlPe_!gsJ232QiBrBHaf3-@8Q46lhKALA z{@in5p>(0KIZ28vA=g~9*>kQl#E3h0lfAo1?QT4rBs|K#^rNeO#pvBwT&a&I*}tJq zs_dr0@=KK*i2NQ0#A^H;xxN7$qc>ftO5Dcq5+A#HQ$nmss=s6U<{BV5Vf_@#1whcp zOBT#;5i;lm)YNYWOp=SdCGHV?}7OI$ah3ebWXG;cu5OdIDl9?*~% zw+c==PyVPpFFy-2)3RkZq=6y+p-!0H^Mj`OC9RdSK5!Z9~MyFx{@*kIrsCv9yr zI~@qfc1JPCmY>y;fa=Hgsf~4&$xOWkp39>C3y?f6UP+RY!)1GRT@$v=t2*l5S=p-Z zs+FBO1t-U3P48wWNY+Jl2l(+*0z3+0JY~G%z|F}FFJuwktTo3doX#}Cgi(j=Gr@xT z>aKwY4Dh)|<5lC3%)XLj!Y5&!a?x1>7Mh1*3>%Hqz?lcfj7G==(S-Wzt4ppQJ%gUZ z+7pW(Z0O2v4RknHFSi}uO%x4{QrqF#3*I_j_VDXc+hHmHt2Dr1K`{?EZV-^m@ta>z@0n0(0lS{&3mxw-(F}-dVp} zY-wz0QS8RN>Y<*|wFR2`JIqVa_ez0&)G&LY&xJdK+9Z?tO8zy5ZDFtu;$yi>2S)gv z>wZ`#*69Yn-@u6Q3lPiy6SHt*(gRurXno-fVDWg9YmUCL4=?<4_eblxepplULD%&k z?|SgN)urDZfAYfPk2gN~xM%6V_K87Qub>0}T3y|uIMpDERh7TI^y&{cuD|;yW1&Y<+`vw z1*&@HwHbO87`hW+&hXu!y3x{!2dt=0M#w50>z~t?H7U?nn$~RCu;usPqn=;R%O~Q| zqrlEi>QO)s>l+N|UPK?D4I9>p&DmMJaH9FonRA()?I-T%)ev^TKz~0WK|RDiGLnqi zE0&1+Nj{V)uZh6MDBgG&t7Q+0!NSCFwD^Gs)^&;zj(M5Pa~r`d%sZZ)>|kN+Tq?MQ z!8$DQ(89)KC&0$|q-mLr(S3`tin3(k9W_gN`Ci|@yo|nEKAtv;b5n+>vhia@OEu_AYBub5s?4n(IaIhqjoaRp1cXV4CI*ddGc~E8uqT=F|=y=nxl?&_A6gnv*zjiai?l_>ia)~b&<9X!rv#_>#3w7cBZ(MXgX??CuR+fkSckYU#I1g!V={sHxpW`0HfoLb`AcI>Xx~OFV%q| zuCP(7Js$NAhb>k#@tDJQ^&zORlf@HUDz4Gnkw^EF@_phJ@g?~1@cc`f z%jNgryMubixprmapce~PuSx$q>#l>}?@FFG#)Zd-=g-O1&Qd-OnN(qi)fXBOzKd^| z%4$uZP)qvOh@C7=v|N1uVcP}pY;A9-T>(w*^%EoT8xOEG@5Y_iFl^{D%5KPGHWg z${#r-Y1X8}*r=*Ng}XP~MTzZ;bPO$NC7Hj9m3fS>47ZD_dPoH8x6UFup4GK&9kHMD zf>ry-QflqkNZ=u7*MP?!&N1M`);a`yUV-0tb550FIrckt5Ab|8@Rq#cw>aJ`o^H(; z)(LOuo-w5NDl7E~KBjXFW5_%3c^EUF!#KflV4uIke}@hSMdW==Za=`aF@PeplNlwS zlRukmXGZswmFbe(&x``!dWfje9stMxIL9v@_;oz9iFsMszfIxuWb^(~#dv^wTii}E zisB3VwoMn5iOsIUc9nA_N-!!b=>wIOjG899zA|+&3RY;bftqVMwo5s-3`#kmbYbg- z%s;$S;)?5qE9hw5i$Zhrhcr<4k>IkOPNd^^RO;UK(Y?#znCt`t4*qM+h%-E3Ig&Zt z=tu-%qbHKCsPnjvd;b{B@^Rn5^*d4rAoMoKC;T3V8-6Wa< za~N)bhU=zpVC6=K9Qd?o*=L82e(c|S%a-2$Usf)|jWK(RiuO-R*vF1tKll(K`%c${ zkrY^o^r3qjwP*$=9Fi_ zS&R(Ty+;$RdyL>1*`tSSzXWnK&-#Wk5qLWSbL>N~c#64^?qRa)XdFrrcvAR`hd!<> z=3&)wV0SwC*tcued{@u=e;qr2?)J~J7};le*YKL7apg1u|-xZ-J{Gvm5y=vt-9J}huRbZ7{| zV}2u#@B&ses1?Hqjf81ylnlQ=ls8*u5rE#={dUGXC#;TOc|52BtI`< z{cZ^hM*;g&tY=&t-xrk*cr)quh7xp8%G;C7?RNL18X-aDJ$Y41)`^V?fn{s_SM5zh z4P(52QdVxk@TH}LGfu5?j2`bfX7)hGn^SXxy7Zc~XI1=x%Nqk$*QJ)P_D{{qoflqo zYFo^l`C37vaZKO46zjJWGGg%8`1)N}ehA$pz&9Bvo%CdNQ0?vIUJ}lU+74{wQf}iq zwvCH*s&BbT%it*?KaG7h69w%S9^tA+A#L55#lC%2HPppz%z%Nj`un9Ocj^=!6S*dp zUeKk-Woos4Dy7nHVoYkw#!L2omBTWMhi?+>oQfXIl-yu85|h_~z!bUQRAw?*DI7v4rXa$&6RCCD zS?e=tRr=(TqyaTsA}=kUvpg&Ri@sqx_23{HqXw7fxmtLU7)d%?EqJE|JsSzf1-Ts zlWJVD$J6U9LCbS7pklUO)3$0o9*`UBJAcg~5NFTR*{A}{~^!p47Rmgb39-mCj*OY!E-#o!~ZC3&U*Ya7E( zsaesLf!G)9+D2dUy}^H3QJPRfEnhM%tdctK!4K4XUc?F%o`xm8+rW|YvOimcgj}r% zNH1dNJb)7H*=p!@@fLKSbSmDN&k*LD&5-RX80lD<%jg2O@wv|uudzuseQcHAVDC5& z%d_+~nx$n(7kRz)gO)%^^K8Cu9T>QqL*p~;iW#cu^S!Vywku;AFDKl$7gaO9A*7|KDOZ> zb4=cB-$|AEVTb_(sm!ZG-W=@>RL*zAqmyuI->t(Ma*v8ve>C$otbmpu2D|Mf zRVu<>vr{TOmC8!OIC-4(u>+K`8=bxNCd|N@b9jS z>P#A)Rh^Mhouzv@vpR$8VhD_fs-B-XbW(-+V`F5y_&e#gSJ{0047!si#M4E00}cb$-uF7WOCocJ!S^uK^68mH&nt{omT$kddDAz$OFxV)3f@0$?$K%fquyD)?US;t z*S5_(l%0KWCQzGp&~x)QmE_i*8=Dv9&X_QD_OTh_YXj!2S^wF#tzT@~Jq-`x(L*z5 z9L(mH4JyAJv`{PH6Z1v-oOajE6^7}4Q#tM4efKx6E7@I_myx~fuRr|(-zB0|==i>d z*2IV5XOEoq#X+!?GbT+PZb+d*$T~ryqFW)amk)y1J5* zy?Z?uUD>?t{qPa}pDijmH*@B>lA@;vjtKi;+vY2aD);TG+Pk-E*FO4L>1zI8DWmCn z&~&n%rZFt=8GI5Ou?6Tep6>ahF7Se8<`YqXWQ* z)eCoA2Q1z8(OO8GBZPT zae5y-p{8E3?DuN;>2vw--ofnm-M~1W|L!x8{k|2yr>ZW2^L_8I-#^9k-SD}F`YE<^ z2=#bkIEUa5b3pON4ZLw#;_Q20g+(1(h09=Vu`5`ctwIJ^o3DZe)&|ZME&ry!33X}> zjZ`Rf-{LRGJ&|f*3;u$f9REumP=8+7kH3tR|B}@5A6mnoK^$gy<~{zGQTo5M{7f(L zzl@guQql4~{hPyz(T{_XbNMrHZ6xS;<_-Q#Ec*-R-0$g6LLF#^oPb4|u~UR{=*Ku0 zj0=WFh(Io8RHmd<%}Cf3l#p+&^*A(6k}xo8u>MO^r;S*k61#Y$3Bz zIDbpM|cuQK`9kDei;a!%2>-*pIr3?+debPno=xYL?9E zJ35Atf|S&PE}b*T=E+HZHIf|yJCuNOZh zUWGGeP>+)fX|b+Cr(1YZqJtg1g!h2KTW1C2M!7-18PK!pR6ozFDjZE(` zr#JalObK%B>%TZEb?fA`N@`a&$79TtWr^WgLqq%m$fpJU#FYbsha_%GOWl#eIe^l? z!2uE<8gYQZD!CdNLzA4|%Mu?>+GyZIZJEr6;K7vSWkr;x?#?E`;KPx_E%0G-QBgAE zL$*2|G#B%RB}$bn(Mb{~&ZAD^CGbhlg$tX1V77=-`UY_AjYyDr$=pNM+akDGh`cmd zSfgmVjU^)WSfKQDG9mszNy&kUlgQMmleT3f&dyCrnms3RTzdMru~Vl~I&N+1)NS5F zJ&PwS-@0}Agkq0S->p+q*N$75nUbE7k)D!CUK%I=$7C6J{bZn_B`fql$g=9O4#_eR z>tM}YR3||vMK10_7MtcOd(WAo%9z3^hrr`Ue5OV%3iIG)IkYKi-WWuZRFRV1A-?%j z!qNwm<%vw_CVNIh=v>I%yL%ZFgDmU5wJL)~m^5-sTzNI6jESj`7(go%#Mw+*K7q8% zoY^$k3|Oo1$fF~*q#1*>bEM*Ov;#f$hVK4dwxj0jZe%6FTTbn544N3$DeygyM0814UI)AZ@gGJmD0 zC);PhH<*7ZHOuu0( zpK5fP|GS{kqk{&H97*j*1_zI1UuX|=f>a8tgjuYzRn~#wJji6xO7)mUqem}{jm{r6 zDxXx2Trg(L!l|H7KZB$0jF7a%Uk;NOd@my3@VA0$)K#m5P`P)TAcNsYLe zeN~DtREmkLmkNz0F^oE3&fT0Z(P;`9``i1(4g1)(zS(E^h;$^O^U2X3os#IR9G`gM3YAd33nc4|P70q(Lg2^_y9v zb`^9v65+*Is8<_4dBm8`sZASawr1+yag>hRJGH2?7Bka{TPpOM7h{)c$+2U!l*TVk zUZ#Iv|MJtj^vCq?E<&k}L2Uh%*zm15M1?4UrES{ioEUq(sA5YZrNe70i_~cKn@2Cg zD17Lyr)d=RUzWUBe?-6L*fITD{d15z>Y|TlceQu4zXqP%&7 zf~nIv^YI&h6~|^2ENYWtWtGxqQNgq+J^J?y4ei;##}s}1qI|ZzQ~POceA`Ux*pV$O zShOPCw{iCHfy43NII{<)BLwg9%uh*el(I|39*K41>0*g6fANE4oSmJJB3Ep+?@cT7 z4fhQT!=Y>%PuSWT3G3rmg!f>Jl(^Xf-|!WS3L2|Ab`*)X@6=eCk8%<@TZy!=pCAHO zD6pK=5%MVsUbF=KY(?&!)G&P85?+qLV$jm>zN1t1@k?~;vAPPicNw*J z4z-z%RRg^IFQfd=@!I@H<$w9l%OA13=xf+r9W-h-9y=g->@~~}d*e|b|CbV~`P&jw z(_Sgk&J<~HMcPhCo0nMY(x~C30sf}5PnpG7Kb*m=oTq>`pwODDzkB%)qx zwuBo3X)Ig3rm*guY$ zb?NrA@kF+;O;7*hqSrt#DYog1$44ef`=s}YhVzssjC5(lQ5vD&P1DBeKc$`ZNy_Op z+GP@bjvkKIuhXxMZaPCO3lYmIV=U9UQ5s4malAg3cF|uOOVgxO#Pew?O`8-=OK5Sl zK0!a+c!r#!2iPVJlZTHlu@1yrgpfREi2n_}ENLVq3>p#^o4d=9_n#~Az25KN< zURWFS8{VHe@%MMpp55>=iND2m<}>4N40F%gZkU%=^g=$>fKQsstHQeI3x@RWl(i{y z=CtrxeX=%Xcl3*fJ`qYc^>YfXOz1l^{E_mc@?hsaZr$jiVMh+HPfP3VGw!j&&&BCS zc6)>#9Pq@N@q-4>o3OUFKagg*p`W};n=f=${)I^o%({et8?NDk_*XoI=E?Wcnoej6 zOGnB(4a|=!uQxh-(Bbpu&3hKqxRm+MIFdWNfGyuT>Et8&zI1!)@)2>5jL=8YjnUo4oAj~=sqyc+MOi%->@`UcxN=B%?lia{azn&tAF8V9V4 z;NMN<-^;s$y6rM8U>#R{`1(+E|DPgN_ zJ?6a1efAS0>(8o!WzLg%{%C|Js|Bq{GD-g zSvJi~w0KFzcaUOAjK3lQvECD(nHLi?_dxEBw=*W3SzEX{Ir;H|+>ObjH`1ea>+dg+ zcIr#$ueU==b{3cHDh@4qW5L`vN*4}UlAXIaa`3|Zyv0$ISt%QP51-GNHB0_ibu~&3 zt2E`;Fh9%fnxn^WwxMDCx&%xkw81!x%aoB3srUo^hg+zomUg+6elRYv&%z;lZ%mnT zWADo832}$+S4fZEpC&!(cAAd*=q4TUau1)`9v+l#(SQ5gi~8?3QEA9bA0K8_Q$r)s zZv**Y(?c^BJa~&WP@>M1g)^aT2grQ%;;akc@{M7jWFtwuI3oHK4!0ek>yy}{TT)E0 zb(vM)l!@hi`WFwgj;8*}fu1QTgRG}IjGi*9LOSE-(oy?}-z~n+| z90coH4}#HEL?u5JHY8zSAKA)`2KvSh?$q74TW7zSA;YSCT|4VG=mNS8Jl?oUwz>DC zY}5Ehhll}zHXU8NdwS%B56tW0-d(dvJJ7H1w(%*oVSOTd__S^B=I;~ug9r{#+i0(o^sPZ{Gs#ot&`61@H;WA5aZwFm>z-qV8*5qT@Pd z)(q{qF6rc+5pU~1Vo$+v)l(Rm-7=TW%w0;KI#u+#{^DCcj*JCtq&^!4ZlXRLQO*G< z>}sUpfmN#A`N}=i5)e=9PZ5RZfot`1C`eMQr(Yz^m>V&yj^kWJ~%Ij2KohBR^8RDknma~KQe(j1T!&Hzb$tP5XEVrF`Yzj+l+!I-yW+%&h542|qjVehj%yU5*5~WZ<+*zEZ#Pq)O#}Ji{%mEjJW2|Pql*=B*a^vT z?~P{ccYR-d$9;4@ox4xp3Dyy7^w(-?ZnAMwbYl*C;{HpGyM+FV zB3vcnddS=g)yd}aW-*H3IYvctoWyqisW3iAAJtEzI)1WLKea|bRm8^D@R1VdQHYRVaffC~W8{G%E}?Cr0AT)?8T4Q4zaEPLFh5YIvHGv!Wb*4Y>cp>ai-Z0)*Foua z>7?wBRYO}*1bqH-khF-;=+HrQJ4*U4{ZhUo9TVju(&v?a7aI#?>Autt1#p1#A|afw zd`GSn;V>GBz*M(JZ7lRs7TcVKj#fNGeUsSliMNeU{=?CNqF?h-hS1BEe16Mq8;sY_ zqcz*;WqLVXzgWMROE2bJ!OLjqVivs2uq%Q>T!TICN^bY-RW1_dQ~b@>KRc;0r>6BY z5&Q{r2L9zcJfnEZjk`2~CQhP>^YvJ4rSFZ5^EUegW`+40O~^9lE1GJQmlJEJpFp?O z&~5q&jW?x}^eCk@lI>qcQ()|a-iHD`-Gr9t6wC_4n#xPB_m{9{!wzoA}nj|_+Qe4SpD6C@Y$ZlT!X%5jVavjYk0h;IFAs|jG05?W(Eh(jEfrW?LC?;7fzJ$dVA8roVo?>q z9GtnQsPI63#Da+v7euTqoI9^Da&rIhqQQfU!uwB-ESxvD5F95GPdQEY!I?Af_b}qd zOQDvd1F^2jWU0!gSm{)3+*7+Su||eqGxjR_U7j9&CBOU&sgc?u>0A= z7Ma|wTQsZ!1EYz1b8`3*>z2r3{U*6PaJ?hSHI$Ee+F~q(athS(LXe=u) zu$U`Zcj?w6E7^Ie@v^HIztnG@q3xPu<-;NSJ`-5 z^HRfd;G4R(9HVp@_{P@_-<11fJmJQ75JhVt7Xz4c2$sEyE|$OB!V>o8_nnwT;;U_j zZn-&=(%CmR_sdR+_tbXj8hLT4!%lrdXlR=mH){_besRx%BhS0hg+FZF@xuZ}?Y+Xh z`c;OO%rc*4wrWYr>%Z;T{?o!oKYroZWyU^!;iXHE>**N7uR~4nUDTa1LX1RSgd~V} zBu#H0T1x_jB=g~z@$JL|_g!)|19SBsN$R9W`|Nc+# z;x~3=XYa@vkUzlqpQ{Pa`D0hsj@;~>**NCz$XaN;#lx`0e|igbjl7tD&>}CRNX~yL zKmVirYR{UMkV#hm^Mbfv`sZczk7t!Ii_~H^O7vx0G~0!&+w&PE9rj)=)*nqokN07s z{+Q|f(mgEA`M2kx(4OuZ%H=JXvEVaT7&t?P2&HUs4IP@O@1gfeq%j(Yd;Mrk67O!4 z^haBz;lc6QnR;lCn+B5KV4?b>3A|rUz$3~teBT=Hlf_)6P<<#9oj78ZGHUL3r7@x> z#}n+E`x}kVeTsRt#e%y(nOCbYnO74jH9zsE+*O!zhxeF<25GV;8ZFZtxFFQYZfzxr zuEd-29?#Jp`VYr`_ucn8wwvv4OlwS=&3Z7O#>*U0wi(6o`=cp3 zi>FqmFLCzkylmLGM~5dZPmNgCwc8{bofH!5EoswsU!A?->un<$ov`P|{FMEXy~ms^ zPso{&m^LB%V(FXI=Bd5Z`CQ42_x1Xvubdp6pcy(Sad~>?^7xSczVr1j#btyS$8Gw2 zb9`>yt+@+t?i%OYt<2w#bxs?fK0Z5j>;#_I9E{fucndv%j4+PXVZRS!aIuw!pYWbn z%&hSNizo6A_~agZp=>wUHq!D}qvC}y?~L&v6&HLq4ofn}O@B8!BuJvY{5!^W8GC&dfy(g zt{pot50BnYx<$wJU6mBSp>G#I`-FvArAK=@x9#cIG0~?-NLM!(54TA}`zQ8t@psja z?GWsG>C?nqkNx=@e4^UA*srv4>fqm&9ar)l(3=J4MntbHt~fBE{Mn5B!RDi`&qu+@f{Em`|`2Fm_;g z6haIs9#^m=Dq%%t`{Cofz2gG=M*2E;8d8}vaZw=pxNyv1TWU6=uZ!Z=tXs7bZsAnM ztRqAw7!qM3MBIyOCPpy|4B#SzVu6p2?-3IwSh*omHzsx7tpD+y%F1`B&E_rCnxE-^ zT03raNKiN0-9KdQgpkbMesOlQtb99mi0<4s)6>(nV<-2lehFb6y{v1TqPq6XA69*3 zS4PIJE7h~Fa`$R*1tNnzFq?NOD&B$3)W?xP1syyfYVfA`gbf2C2RV0eOY7IQQ(s4i zw!M4!P6_K@-ov+-mt&B-XP;zOH@D{y$86I$p}1g$;6PYUGZ+27KeubbwSLpN;nsb6 zH(?8jx17%1Iy;KNIDhNPrsP7ygT|Mer|N?f_vGg8nV8Ry{m(_DQr{k_sYz3+-F$m? ztY!lh-H>aL&>Zn(dETCU;}dx+>4hZEl(bbKAu$r>6 z#(9V_oP8%*K~J!4S{wOSn#|5WQB~M?f6>q4oe-fz!L`IS&_Mem>%?piBS-Xass7MS z`CBEv4(G@^*pPjN{j0I#eM^4i<6&s9CpFl`&CYUbP*~%*6)|>4FNq0D_7Y-l56#A& zufW%-M|>!mtFY>kCZ*}$r~YZmaa|e>(7%_a9GPEQO&a|e2PQQ(!qIobq4B(UTS$l* zUt{dW@c`rSw>80Vb*w-WZ1@sz_SOnj<#6!G;T_@rr_DUoOO36)x4AP}yyie3G^xRawtBWw=OFXT@C|_>5seH~_ zmwND^{zs7mclNWeZZGiI)NT#^(ZsH$sTq6lNwMOAy`nn@sfJ{5ByXjk1F`{OKxkSY zp4+cqZg~Hke*JR#_Z~Q~ch86jts~Bx{EH)c_8K&(S5Lk|=bAQNO4kL7_u9?lZvKW( z9d@(BfAUo~ZG6jbwn2bVKdad-owZUwn8BgHXjkJ^2ET*PCiTReBX8xv;7}(-&!^Nw z1C?)0(9$jgJ9zc#)XisPU|exvNaU0UzX8kR`CjkFQi1NgcT`IO7Ja#mXjQeL&phOd zXKtZm10xpK_@{Qwn&{KDcYCKq-=6%P@+El^drOf^60dhB619};rQKq`QVZ*4&X5Yp zZbM_ ziyI@zgr%LNO*)W3K5U7Anr&=cI%Z+`b({bv1L^bdA4 zU$(=Guak{Gv<&@>h+&lo@$Q39qTN!6(C64wWKG6GesN{;CyDDc*lgcI-lJwTg3hMr zm>Y{>GuU2sRq~J~OY5bhusq`|_mgMHFUx;ux@xjC8#I@+4%&R}UhOSiM_q<)yKbNE zHQh}!jad(~(Ps0^o-w;?9%4SgJi~mp`4i?B&40A;vB zIIGcCldTq5Jz-U6^}5v+YijLiJ=nU;dZYC@>svPVHtsfIHc>WtHq|zpZJx1t&*lf) zcD9kWvuuyp{$kh9Zi(Fo_MY|&>~FW}-KMn7vu$;4$Fx1@AUUKtoN)|stZ_WyWaZ@I z)Ws>oX_M1cXIJNJ=R?j0mn4_H?X>Nx+Ff!DcCB$;?YhtPE!PiRe{1j7KEC~u_Aj;n zu0#6{aUE84INQ;>V^YWU9lv#pbDQIK$nAJ1U8lC4ygS8qs_3-6)A>&K++E!R+()`k zbKl~A-2JMDoky(41dkezZ62?BI(Sa;yxMtq=U2M)?(%%sfnB$HnR`v~y4r1Qx2xXa z-W$Dt?w;5EwH~284*Pif?DhH5*TpxYLbiP2bD?diGn|?~Q)G9+inp&@?^9XIskP<>2L%z~JYV{XO#5!*gCI<_KqTkJcr-^6L+y2TBT ztB6|{_d?vAxZj7_4C^^8aai%N8N(J1TQltRu=DX9;s?ja#m|pl7XNts;rP?>zr`Dd z>xTOdA2od2@E3>wD}g0gB={sGC!{CjCKM&qBrHl;nXn<@V8SPf9*Nx(MB!@J{tAes4tVdCnqJZP2QLMQSxso_9;Or<5H%jtW4REvL~f3JM~cN3#oU;`iw0a zyKrpX*e}w;(N`}@JDB!D+KF*&T%U0f<5I?DjLREWJg#cofpOob_e~$1UX#8keP#NF z^e5Agrk_lIEB$t>oT@v?8w-k@m$9D=$=Ldt}U33U^G$_&ozpSd9OK<1ImkF!{oMOH>uUe@fa7qfoK z?vb6EJuiD{_S)HjZOJ>D_shfq z6O$%BHSw!__x$ep{`r0KBl2VON93pFXXo$FKa&4S{+ayu^RMLJ%)g!gQ~v#efdx|v z<`*0(_@+=-IH+)b;fBKcNnIxePMSXH=}Gq|>n6KR_L&?ydFbS^lP6Dpu}Cg*Eeb6f zU9_%fThX&cCyLG&cP#E&9A8{fys!91@sA~PiB(BpNxzaQB{NEvm24{6T5_=Dc*&`f zb0wEbu9p0(o!sRadI+Or=xXPYsaEp#t6!>qv--p8&#N11ENeQ{gw^EMEUVd6^K#9EFVB8n)1m7ZWVZPM+e?hvQi1#d6uGvV! zA4&spFOWEBR2Oe}mj5Z$wYt~(T76df9&ye?daY?J{O2MqxbzZM;tMjoN-r6%;(WbI zesKH2?|aaB&_3xYboL;52hs;gjaX@CLb3%()~-R^JpPB#)8OU5OI|!avsX#Dd=xzG zLb|w?zs0#JT_BP2LrAljER*+Q&0s6i%tk!_C6Zqx7P>^@(VFC!kuFB)e@X9(ff3!s~5@8^gEn~MA%M*cXq@^%Uwl)I=DhPL)P zi8aMK?JuHDMw()X5py)th<6jla4gA3JcyHHs%Xd8!7oU&0@r9`8f)C!OqS~$K_NJQ z3E|J7{y#AMr0qtQnaw8-X3_8iJ|NsEO$`ZGWX5onV;!C+Iv?Es7V;09a=g8YINwLw z&yh&ME5}2$bI~?el0>;T>TEmkQ6>2xcrj@+nkv-eFC10dbUH7hx2+n@y$*o_ToAE83H2SDc?W$#k4g z*S-!J1ut43+~?)O>)%-S{G9hwz&BCPs7ub5sArUAQyrszMW11;X9qmP@tW6zv5q$? zVPpdd)GQ%gwRyyi9U*SoLK2`kPX=ihkuZ)M0&962Ek*rszEQp?(MkbA;7&K%MQ!J&uvbLDr~`Wn?;JO4Nm>6nVB+;$R0LKjsEKzu!cN zgWs3I15cNinS2^@Vudi3!1|H!+X8n!=wtZb!S$oK_c3`yzCt$3SMV*rE95cII?!6s zD$qjEN1(0zT$%-3nTNV@C%KX((g}j=0h$W`H*g(+dsE3H|1=!kr{AE9C)0IXKu?n- zdXMa3Z82v#8ehfDA=l))WGky6cR9(<;2T8WK$*0sJEcNkfj`p2n@djO88sXaBPCO3 zDVdCshEf-4DBNCfd!hXQ%s&RtfUpW=y4FQG*LXuGG4T_;eGQ&eqAy|PI@&zHM!V#+ zP<|K7#owj#Bs;9i*^l^I`SbX77ZIioJR^@fTl5{PF@*qvpZGI(!?$(0EJGGFn0J>S zhmHYU*VqFWYH>age(T}#HuDtZus^~+OO|We;~?s0gW|H6NdQ}-)Rl7F zO4zGO#C@{SZ&b|iSaOnB-(yM|X2~qoolsytYB@}^6^=XJBJdefKF38cZ>P)?IS^TU z1=rij9E=@2F{9KQ_U>x%T}~hBk2kslXbg6z)zGzc8?9sQ*;w`_`&6ouYNVyoa%r`+ zP1-BfNpDN<$*yu|xvv~4PmtHh&&V&yU%M@Id(y4J-QL~7-PPUG-OJt2y{~(ed!~Dt z`waI--FLVja6jb!tosqnwY=i~s)v(@r^h;v=RKLH#?#ibji;lhtEZc%k7tZ$re|K) zvp1w0=J&WoK>{AR?UuffV<*~+2GKs4qKrZcfqVzl)PF#Bp;W*!aUHEZd<`)TXz@t4uZ!%Dvy=!bHL+XmB(XEJg#oy z(Y^(bx!{rB(A}d31LMXNz6GbP{vZP44~vknVA3$&fH`V?0cfax2#zuQW@7?qq7qIy z-n>po{kVEQ79{oE>KE5X)YJMNH_zes?9ID`-2C?Dt(!OCesc5On@4Z%#+mtz=Wgt~ zv7L|`kKWjPWA%-NH?nU;5pwM}9*1_Mki4xpeVIn#m2@&oW0`Cco6fK(k6mG(uxmUV zL%KMA4*E`<;mCgH!Xsg2u#_&X#XRB$X_NFgu8|1-Kc6FC)r$anLf zjI~&DxIBpau*EEa&1NZV6?=ib&Z=2D%K)cOu{c(MebS@ZFcy#Z>O0sjmV~z(e0@(l z!dC?c!9Gr3e5o;p#F2P10&hlA@m<>~q#QG%)np!djBFrVNG;ikJda^n>>w*~Xe|J;BbgH`oX43>}TqJirRkTCTIVG4I-+4PYO!BkVLA$v$J@bPQ%=hq57< zl^uay3JmK9obWEd5%cyP&;q+)ZM!d4_Y5Ed$skDk7?O>d-ZWB7GTAm#M3#{GWFc8Z zo*-qkD>+K`k~;DVd4ar4PQdQ(hvXc2ms}!u$d}|R@-=yr!ssw%R6=_(XWOxA%Afk8 z<@BaQXgeAMSv(Fj*au8_2`dU;!#c0i#0|E9+mlnogS-V)cpLl2uV4lE2UrvSF;;`W zLqf@CSbKOKSaFktksBnOd`|k|`yNBF_9U8oM~0B^Nd)m(X-NhdzQY2F|AoXf^P0AuXU2X*u?(rBZBuqvPm!I)P@>9GXk> zF!^6WE9q2PMW@l}bQWghXVSTJ5nW7I(>1`Yb#w#WNFS$LXe~ZC@)X@q570yOAbp0` zVbk3adYB%gC+Mqm6WvTt;wxiE>5KF@eTlwIpQkU-SAcs@(tY$S6Q@`+@!kiH;n?ikWB7 z10BH1$jd<4k4PZ-gmfeCk?!O?-iKVkD)WoPo4ik=$hTxL`G#as3z9>v$T%vK45}sL zsg6vbW+a_zuw=)E;Kc_ip!TGYwjmR#Em=(c$fGm>quC&`f`*WlG?c8O7&*~kvW><8 z)nmzaIt*Wvj%QVDDx1P8SS2fG)7U%gT{eoRID3h`jJL;I*&g;Z zTf~;Jf6)iT&uWPqWKcObBkpvFdTwrVZb>}pMAhHQ+}pgUSo0m*|qoMe#_gyCWNb&@!rg!3Hn zL;GOjbA?E=OLx zDUU>o`G})PJQakPg28JL5MmT?c{os^U#lm20;f%%X`PdncSj>E&p{#hD?vV*Q)v0z zgRvHp$s#X>;LRP}w9FSTS6&*%vdBa1mEgV@>E$A|EK$;hqU?rIrj&5oD>;& zSh_}Tve5r!AwFIw**J1Or{S9O;SN8ZZUp*EeqM8r3TY(gL=@-G} zvXl>rNW}B;|IssJz>86;(ea~&;?Gda_a8m@$Mq5Pk8g|qOr{#D1>U@g_nhX`0==9S z$p+3Jq&BcWVF!*6k=5w0ywJ-S&;!^5gSwHgq1`$__VcJCc?*4_Gy3;-)Rmk?AK!tT zqaCRm`g(UDUJvp+^`M@#Gx4Ea(9`;&=X)1e_y_eO@6&G7n|7x?NKfiRdQo4}oA%_r zDzpc*OX`PSHURz2MC9W34g(_gA+R({`{9#P{e?a;2pa5QvIfXo2fY0j z@*GSfxt2jffGwXx2N?=IJQlNqada4sr^C_ben1m|&;>M+dy)s z0UP?Fr^?`c5n5b0`G#ham(YKSeu?y_dE^UVR1~l|AN^M$okSml+e86*1GXX#;Ri8b^&jDqIUBhWB-zxpEj*<)%y`-9S&(jO^qS%gr^|$mR zdIjGm`Gj7j*XXD8I{l2^pf_nf{TKb5-lAX7FX>nGYkHf0L+{XU>38&ddRNs5Qv)N6!uFNKWZ03@V)c<3GiMgel36ipX2Wcm9kYiP)0R0vgK>g3 z&bet-pr5rvj7&zf>LIL zj5)>$oqjxY=uGJ0*(`_UvOG4C6t%Y0#}_u$gQY z#s}3Hvut6HusLilo5$v}1#BU-fW^?sA7x9S4J?Odz7k^yt}(2Irt1J5+X-4WA1$~- z!|lMmwjCpkofu>6hIX+Bdi*}<`v)*)IK-Y| zbp( zGR|OZ@fLfVNEn5j6S~oRWC2D2I`%$0Pj-{v*adcxUBYPOGR8LxG5WYdHn5MOO?(fX z<|y!e6}0&VkU{hh%7wd@m&jUFeP$u4%4Y=Sm;23qo`7{z=BT^V{Z`xg-S z7{*!V7=rIlGZIe8_O+Nhi?go0CEnpLTd z7FSAKgH_%l)wCkjxFc2GB4Kf`DIWC^m7T#6x@a}|XeD{|ex&8lW;VE=pMOAr#n7f` z>b)$B!v>0;G*W0iQdv6Y2Ixp|gxEg$jo4-C=9XXR8?=4s=b@&w<( z+62Wn!NfNxSc)#mS6GZva~Y*(B}&b0lv)E(#?nx0A~IT&SWsGCqCTxM8f|<^4Hc!9 zWwf7lVnJ0&epY!^aZy%Pr7ls)j&`KN)kqVrfu!NU(N>Y3otTbx0rWOc9;M%qIDeCQg{B0Zk|}tDI2TtEezP zOH^`@zi9k^LH;5ea1{gz@>j|t$WL|q7{duDK{!z;enEb!zn}4W(S&hdFauYB3|vuM z2(L(VkiP&MTnn(leNlXHjn~F-0zBa_s^2dtKus?|O)o&@H^9iR8a_bfGeG4tK;5r@V4hM@ zS)Nr`nKMJF5%izDeFsH{*$US`NVMd^Lr1FDA+4?>T3rt|UMukgswEbvmRO)#V%W!RqtD#`|gx1JxV`syPf)ODI?^i9j_U!D@*HswEI;yf%hYOC(S& zksvj_AT_-pmERyEziRj(mCqoR&mfhbAeFx$m9HQpU&i>=^n+CXf>geOjp2-Z8}n~W zN98wIjXzjTFIY_{SdAyh$e)^CaDaJLs~T2AM)y%_G%&zeW9oHatLs)05ZFor0z+Gc z4{LSZr{#5URLkqYRuUB0Bta@at-}v#`Fv0-{)1Za6V!^|pjP|^wc;-*vQ_-iEw2Op z#r3F>gEbLFWd&LC;JnH#&Csmk;w&N3fqjB>(Pb5dMWrQj8g5C^xSd>pGdUKzuVz?Q zSy>h|#NzDSEH=D~B~-E0LTF=!TxVuUh0@4^Qq8Es{NgMrIjc&SqC_Pn6%X%NVTKgNi8)VDxv$2rT&Qu13yZ|!ynHnf4{pSLTQ!jJT9YL* zn~i*E@_A-8xp_sES-Lzmt21#!;x{WrRttGnCyT5WiL5G24~}FdRcv~pu2jjdR9;Z3 z+=&d(RESJhBGXlBrpu7w91t!wrJPT59GFu)Z+0apM6TmcMl z1u(!Bz!KmWssNjxqV)Os4OW27Z?GC)s2X3W8egayU#J>is2X2rAB&t)$ab%stcpC_ zyy-cp-rUk@%C-HJs=SKI!qSo^pSERr<%OlWe82~7JXbtrQD=uwLply>^a}pw01x6qUtL8%l6J934l$0l^3~R!M0kvRtS_NN9BXrZSq4Gr^>Qnsg_>2tO7%QsFwpuYE-s%4|YWUPZ+O zA$SvnN0X`*;5T@PoLgFwFGp9EixvkTwZ@e$AJ?j+4OYudk(2V;=A0W*&bqAf^3rKlWfsB}rDHBmxtJ(tycBJq4VM>Y z@EE9wxnE#tutqdq zYa=FzE7!7eA(s>Kv08lsE|mCqp<{so!Ab+nJ7FpoGg>xyuSYSbLnr5zmtekIiW(B1 zOuFREC@&&iin1z8FlWv%o5L{UWrrvDQ!+gO}gB(j7`!@X!JM!Nk z{7yQabQ<)}e@J+o}LSTj=S(ZtkMR@ zzBmI<@JB45ogy~G0vF}Q`2@%OSR&#;Nbxjsq2vSZdrn_C7r=jr{%B-c$U*L0GfzgW*i?8F@AJ zYk6)s*YaAqQqp?Zoxk%F`B2M9sq>akG?%K9@0NG}?n;pzH4Pz0JPkuVf6f@Q;g%vT ze;$_-((u!RA^y6&{`zjq*o@q?^!?AT{%P8VOh{3kq0;afZ+-Y10H5RdacK=lDb?co zG=2yt?l&FyHNqh@_Y$$x88Y=>DFH+)%v8_eA|5WaLQY|6q0%U`d@nohacQnZTn~|a z9?}rTp9B}Uk5FNpS0#tyj9-a5<>?t3_!W;4F3*LECH$=U&onm=D|_`xU`g{|v!9x_ zl5=1bPeUA)^ps=W!{Tj@4bNmYUm0;iO#`y3o{2P+a4mRl<}69vRgTROs%NHYaIc5S zh0%|@Mm`>h=r25s&p#NXxde=16j${RZ+=24zvk=KXAhMO)U@fJDGEL;zGiNa&sNfG z8qb60D3vDpdhqW5)u)*+s^xEoP`uAGsokd7GR5<1k7)E2F0=r_(ZlW`fRQg_ zxhR}89Zj%VDG6hF7~K|WnOwAPA11e&PPr_hMwC`v+r){u=7CK6#J@|gDbiLaO00%E zs;k89)*R?z^4xqEJc!=j)CYb`cxx8OiF)Ro8Fm}F=OJ;AOWJ9Ji4-U?h_F`>x>mhb z!U>F1eI9s5^;e(ZSH`E6JO7*G!^*|94ouJgV-CC@`XnS4f3T(ntK;>DC!mDbFBgR0@nr}7VE=(MMxDb{vt$+cJ{E?|6M;*j+JLk z^TT}}3}Ko^>(DLkskPZUjB@?o?M?ntcGNm=&4Zu~XvrlXw?M-bh@$9x#-|mRqZdEp*k?emWBhw~+{U}yZJCbgo&U!9!^+UG zg2E6jcMSf zniwG3gh`KwP}5CAnw$^7nkN3&%!Pu*@cQ$-H>D&V{l6UkJdNg975P`?v#Blo9S{G! z+)Pq>DAG3H|M$-ROeX%lSXzf}me$sH`1N1keb^KKul#uZHDmW*wW0qKhm;jSJEN=; zY2gTor>p|<$NjlaC&QaKx&i$t8*RwMu?yC|Q+&}1HqqE4n7J8SJ+gQ3k|~5sbMnV zn~88?M8or-hCK~m&c|u2c&x#3i{UiQ27!BuywGaUT+j;8w}>?s6o+swG|F&=MjOu2 zA)uk47*H%I4m1oD4|*J7wt)8Hd>`ll&fi3OwxDJnn)qea@V^MUguG*Z97o1W0VIPo zAT3A-G6R`|EI^hZE08tF287s&9mpQk2Gkbh0CEI5ftHy?BQd*DBtZ!FuPAM)6aLZ5Ue#NSXD|0 zb`TPdvW_5FPs5s4LQ_HGL4_b_gcPlVUIk&SOz$FD4}|js2j1X-?_co-2j1Yo8yt9p z18;EP4Gz4)fj2nt1_$2Yz#ANRg9C4H;0+GE!GSk8@CFCo;J_Okc!L9PaNrFNyupDt zIPeAs-r&F+9C(8RZ^$^x0d5z=D_ECL(KZ-J0?8l^NDI<|%s}QK3y>wq3S<;JWTXxL4R^ zkdZpbNF8LP4l+^)8L5Me)Imn-@b!4q5?r7L+Qlrii&^0E7Mp~2ocO<#UJ`>Ah?YpI zfj~7tv`6610nG(H2F%+4+6dYN+6;Oev<2a6asLU>lc1+STS41E+d(@FnW9Y_TSm5_ zRX_)o!kC1@7TtKrTCEi~+=OK|-tXa%l$D>AlswVk(URksoD8_>51ixvhO5SjFM zAQHy{ca)+BY0tLcn)5e`oJ8(k1DyiB4#H@gya74`dK2^(=xxwh(0icwLFYjiKo>!m zK_7uW0bK=s3c3#Z40Ho@6Vw1qqaX&7Kr%=J(t>m#GmtsR0%QrY0$GD>K(-(|kUgjk zs4d6=-UGc4 zIuE)4x(K=q`Uvz1=qjiI^atX)ha6JK2LnkU8KePeK{}8b$Q)z=vIJRytU)#)TaX>d z9@GZZ7UTeO1UZ46K`5a=tr6azt;YQg2xpYzZ8+Z!znyTO2JHuN***sMRrn*nqNdQN zp{8mnBoMV#i`uG1ZPlW-YVqQi*H$fRs}{9Yi`uFcG7mmcW3{NUTGUuA>ws{h@dkil z?+q2bL=g5CIbk180x&WOzYf^HRf@d}Q}A=cZkf4aN5BreE#8AY2!YrS{W|vQrzQ-<=6|gU{g>4}} zVE4%rp#L^9UPHV46g}Q`&}X0mdG)_YKe)&{@zqgn0+_F6cd6zYjVOx&XQe;@bKLpvyS_5bj5Cp-+>KL7(9K zDyYFw4{53gveyII>w)a`K=yhddp(f79>`t~WUmLZ*8|z>f$a4__Ie($0yM7&nqL8$*F$RRf#CJfT<$<>?m%kpKx*zlYU+XL^+5D`^uJet==G48dLVi| z5WOD#Z#~ew9%x<G#OL`Dh8E+rhvGf*iuK#gpQaA9WfI+ zVkUINOz4Q2e~B$;5zl*|ztgn-*SPU#8WrBX(}AEtpa{@lP$UTDMNuBK6vTB|jFE*N zyAbDGe_e*_hiPNS;Qt!#8?`a6iM@;K3vfRJeF5S+?H#z^gMJ463gY>{2mkwUxwb|? z8tAour?IU>IOxCFg9i-=cv1^IsRf?Y0#9mzC$+$nTHr}7@T3-aQVTq(1)kIbPilcD zwZM~F;7Kj;q!xHm3p}X>p40+QYJn%Uz?0f0JgGrVZUOBvTmY_I0IpmBu3P}FTmY_I z0IpmBu3P}FTmY_I0IpmBu3P}FTmY_I0IpmBu3P}FTmY_I0IpmBu3P}FTmY_I0Ipns zG&KNM8h|Sez?BBzN&|4E0l3ltTxozbH9(pgfF%vUk_KQ&12Cik_|X8|XaH_BkZaI; z8Vn7y1F)k3*wFy&XaIIJ06Q9h9Sy*a24F`6u%iLk(E#jd0CqG0I~sr;4Zw~D zU`GS6qXF2_0PJW0b~FGx8lVv+QCL8uuu=yMsRf4AiaC%%xM)2O%!90g|7ybpNKFIq zqyc!+06b{`o-_bU8h|AiAT03)o79HH(Zxtuq8pU zzK~!v5ePRJRtW-NpQ%4=2*qF=5+=qW1F`?UgbadpiE>yw;x+-&$aL5q%D@QZF043k zTTGW>JLos;C2qht?x(#*$(qSXu z8CXX+44VLxFeZ5kwh>-|6@UtiM&5(<1HQX|0e1IaLVTC8tA8k9DA1vHRYGp2GMckG{@F1@v9)YpCUBLsSxj}YjGe0Mkf2<3};XN>9imjRtIi{^r#4R*J?VV0~DX8Sth z=MR5g`h1S955|1F^tsK3SXj7-gMFs9u*8snF&`fhc0o-PBi0i9WYk9)=IQw8kfCPE zG0Rs8D<}x-P8NZVlYg)oe&lzy_CVuv)`L{5mcNY7_wZQ9Zu*LBy_K>%O zZH>>dZ~qo#!c2@x-60ph;G9c_10HDdi|e zu1>To?Mm#a7g~=8taxA^Q&{rwfPJq3d|@PzhLQG=9F!95b3_s=*y4yHZNzxj8usv# zNH;O+?Jh>W5-dKAC0$|lDUH~O5wL|A0b4*KvxqFl!EGU%Ik?M5!)>{A!em1UEx}Wz zw3OIld|XB>Agxn~IpnGWcllV^lS?h0;`TIrA+>W5axR^VyYuKg@V1aH#N9=75qy@w zs*t@HTbslF(^B{^qs!nAn;J-Q73M%CSet@%K`!MehsR)7!x1($HXt583fDsFA4eW* z>67r`BXW00{|=n*qPuY1O?RUt`RLq|?tyI$M{ZApSi@4)0X%h(9z+}cTpC_Rd&V6lprq2;^+OG>ZOS80Qy1UPB3=hD8kel@=?A!eHV5$tkCA(gAX6^+o9!Mz&Y9;j`(UE()y5oh;z)oBflS0*gL>{ zz$Yl%tC$s#c*`Um(K0_n$=skf5b`FyiSmI-J={fGh5v1O8{xmf%z-&9a9|uJ<_|p4 zdcVgxpGA<+j(3{mzZyGhs_R&^n~3G8SjWROar@5TBap_u;5`vy2FNt1+j!34@=S;wmhte2WBR$ z5sxjiC2cT2VMknH*TVs^IWlMXyE0eA)1I}*T|Q%BC*~yFU^y>?bP_WYZm_m70q2>R zpKycKjVzq=Sqe8;-^jr^pQ~_#6^=Zd^Z5w}jzl=}`3Xx{(pU-pSFu&ZnWGZ11uAVM zU12$66W$c@*$WFXdtuJ83GI==5*-z&)J`ChE3k*5?Q>fh{Kx11LvaiPDs>a6q!Fm( zjoI2UKr!AYFcp0`;=oob5T~uc8e4%i)&gs6O|ZsJV2!m2);I%eILf>#Y-nℜj4r z1}>h(j|yvf7O?7b5$Bg+_tXEqd5Bu$8nHc6}5KauOKiWP(8!+@=q(m}8JeU{D8O&^DCScDfy9 zwF7vh5%Yu!Drp2Nc?nda0+oCPDp|pT9{-LM$0i406W-wfl@8;01bCzoc;o@wKF1KI z8I{_@#?J}d<=CVZ*wkKNlO^o^oPs}}d!z!P+6aVl6bR)Y<{>F?>MUyN9MDQ5(5iz# zD@&l&`|#mtWv`;uMfw3k!V(btKSB@QQ=pYB5K0yZ@lm})?b-)^qQ?9T!WDd-N z#Uc1`obnYoCBgQP4SYCSIS90pV28*aKCq~WH_t9jXw^fYl|9#kfFrOS1nh(LAmS-z zRy_rZxd;?%Cs53VaTIGOP|QW3SUZ7YE&|2c2^4b?DArD(SSNvEow!{fpw%+A3`dS= z9wvy^Rv?<2Krver6zc@d6^$0HeL}__$3B6s03wjzm z11Hk66;;_4^n3+2pwbU3x&JlveT4Ud*kbR_wAfbc&b%S1x`?!BceXQfWU@OuGb|#_ zoqaVtG2UIW7@0WSUGhziNOqSJU|_>tDifte&B~yWA}VQh=Rd)HGlW;;l_skGeAL13gG78=(F5?__Z?x^ zR(uZ{cleugD&DPA@phf}R@{fbiKnP@e&lcFsltVlC-h0&hrg+(&|&$J$IUHD@*{sM zPsO`?3ayr(^LO}Eys1~71Rv0G+lr^cJDQs88sV?GN!s(%*s&90-UXd zTZ0cMZr82H@da=-i_E26D84PJJA$5sTekxt)B&Q^9oEg$t<E-CeopXvTzf$H zxvJr?pBJ*f$TXY=BNAP?cDZRd&CYTcM*PZ+M*WW>fsln3uzJVJ@|QQGwvGwByae|p;vT@A{L4qd7h zqDaV~DCyLxATaC_(jfvVqCHIOe!Ce^D6i90^I|2$VJ^_bhLU6av{H(yXg2IN!QV?A@8$- z=89ezNsnvBSR8Xc{okl#D{*12J_cR-YZQvGEynPH8tk%pzr#jq#^7uG!V&EY52Nn8 z$+gq$6%mPuS<2Y7>)n=YG8spAxbC+x_HaJWo*dmz%#cRBr;r54Ilk&y^H`Rp&(bkxm&5hAnTWK~5ifosl1g*wYxhpdk3-H{y8KMBl6o%7&aT7b9wfGR zw#wzcz~ufAAC?#z5wr=s&}YQQChrI5L0t62`799H= zOO8dye#ZgFvZKlr?TTZMqii9v8bx?s$j;Ruu~Vg+g+|;D)c6yL&Io@A?Umz{)?%UWlR^pdc89(G_VS555IN5%G^ZF=E4@rl&3F>UAcuAST|Q3rn#+Bn%Q2 TuntMVm8wr;w~8@@o^Qh+)I1Du literal 0 HcmV?d00001 diff --git a/assets/fonts/Manrope-SemiBold.ttf b/assets/fonts/Manrope-SemiBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0c888b98ce57fabca4673a2cb5dd66c40cdfdae4 GIT binary patch literal 96528 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/Manrope.ttf b/assets/fonts/Manrope.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8c4a952c0db55f5f61f17005ba07c8d53f4a1dfa GIT binary patch literal 164936 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

    fiJ{`$&hmWAR=S>pkU4YYd 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 literal 0 HcmV?d00001 diff --git a/assets/riveAnimations/rive_animation.riv b/assets/riveAnimations/rive_animation.riv new file mode 100644 index 0000000000000000000000000000000000000000..fc8ceeaf50c301f32f5ec86674e42fbff7bca2f8 GIT binary patch literal 32306 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 R{9LIo?*DkR{eQgw{|&IPqP744 literal 0 HcmV?d00001 diff --git a/assets/svg/Fallback/homeLogo.svg b/assets/svg/Fallback/homeLogo.svg new file mode 100644 index 0000000..27de827 --- /dev/null +++ b/assets/svg/Fallback/homeLogo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/svg/Fallback/placeholder.svg b/assets/svg/Fallback/placeholder.svg new file mode 100644 index 0000000..57d9dd9 --- /dev/null +++ b/assets/svg/Fallback/placeholder.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/assets/svg/Fallback/splash.svg b/assets/svg/Fallback/splash.svg new file mode 100644 index 0000000..8b9760f --- /dev/null +++ b/assets/svg/Fallback/splash.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/svg/Logo/company_logo.svg b/assets/svg/Logo/company_logo.svg new file mode 100644 index 0000000..64858a4 --- /dev/null +++ b/assets/svg/Logo/company_logo.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/svg/MultiColorSvg/.DS_Store b/assets/svg/MultiColorSvg/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..66214b645616a3de9c73cec2a3dc7c8f92034dc6 GIT binary patch literal 6148 zcmeHK!Ab)$5S_FIOTAQ)QV?OkKoD#t8HQJO50Vu?a{CE2mA;BK=jRI z)ReYhFCt~8%)BJK^OC$JNkc@gQw&asnnYBGGu9diD~zABFIh!fc7RSe=5#{|jVZ&= z%oH#M{<{Lac3U*Sy3OF>`YmXN`jmQzIq(?u2O3^xc|Xna6nVU9ykY5|e~8IcTj0rQ z2rrQLwHN$~%e{i@Ea2Ls33w9f(?~{<(5>)JFy57;sl4z;6fhhq!$9(T;QC?MXl#`s zm>U7}p)!wwtlAXF`fbGOuuHnrfc1dx!IUF1*wrviPd(<_Ga>1dDiy;!mI=+nvR<-=*u zPH!kqdIx_buak>CS~LYrfkg$XzS`vT|6=|9e=*5wrhqB1RSLLT_o~~$l=N&}njD|C s5&Rm?#_yFLB?Uo`V=3@a+=h$cS;PfktXO(P3(Woqhzu4?fj?E?6MIOOyZ`_I literal 0 HcmV?d00001 diff --git a/assets/svg/MultiColorSvg/delete_illustrator.svg b/assets/svg/MultiColorSvg/delete_illustrator.svg new file mode 100644 index 0000000..a581373 --- /dev/null +++ b/assets/svg/MultiColorSvg/delete_illustrator.svg @@ -0,0 +1,346 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/svg/MultiColorSvg/logout_illustrator.svg b/assets/svg/MultiColorSvg/logout_illustrator.svg new file mode 100644 index 0000000..1cac4ad --- /dev/null +++ b/assets/svg/MultiColorSvg/logout_illustrator.svg @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/svg/MultiColorSvg/no_chat_found.svg b/assets/svg/MultiColorSvg/no_chat_found.svg new file mode 100644 index 0000000..896cd49 --- /dev/null +++ b/assets/svg/MultiColorSvg/no_chat_found.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/svg/MultiColorSvg/no_data_found_illustrator.svg b/assets/svg/MultiColorSvg/no_data_found_illustrator.svg new file mode 100644 index 0000000..5725fad --- /dev/null +++ b/assets/svg/MultiColorSvg/no_data_found_illustrator.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/svg/MultiColorSvg/no_internet_illustrator.svg b/assets/svg/MultiColorSvg/no_internet_illustrator.svg new file mode 100644 index 0000000..a7760a5 --- /dev/null +++ b/assets/svg/MultiColorSvg/no_internet_illustrator.svg @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/svg/MultiColorSvg/propertysubmited.svg b/assets/svg/MultiColorSvg/propertysubmited.svg new file mode 100644 index 0000000..7da882f --- /dev/null +++ b/assets/svg/MultiColorSvg/propertysubmited.svg @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/svg/MultiColorSvg/something_went_wrong.svg b/assets/svg/MultiColorSvg/something_went_wrong.svg new file mode 100644 index 0000000..0f573f0 --- /dev/null +++ b/assets/svg/MultiColorSvg/something_went_wrong.svg @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/svg/about_us.svg b/assets/svg/about_us.svg new file mode 100644 index 0000000..7e91a06 --- /dev/null +++ b/assets/svg/about_us.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/svg/area_convertor.svg b/assets/svg/area_convertor.svg new file mode 100644 index 0000000..4ae5424 --- /dev/null +++ b/assets/svg/area_convertor.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/svg/arrow_left.svg b/assets/svg/arrow_left.svg new file mode 100644 index 0000000..1583bb0 --- /dev/null +++ b/assets/svg/arrow_left.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/arrow_right.svg b/assets/svg/arrow_right.svg new file mode 100644 index 0000000..df6a829 --- /dev/null +++ b/assets/svg/arrow_right.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/article.svg b/assets/svg/article.svg new file mode 100644 index 0000000..2f4a9c1 --- /dev/null +++ b/assets/svg/article.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/svg/bin.svg b/assets/svg/bin.svg new file mode 100644 index 0000000..16dce90 --- /dev/null +++ b/assets/svg/bin.svg @@ -0,0 +1,87 @@ + + + + + + + + diff --git a/assets/svg/calender.svg b/assets/svg/calender.svg new file mode 100644 index 0000000..6960e9e --- /dev/null +++ b/assets/svg/calender.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/call.svg b/assets/svg/call.svg new file mode 100644 index 0000000..ba9e79a --- /dev/null +++ b/assets/svg/call.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/contact_us.svg b/assets/svg/contact_us.svg new file mode 100644 index 0000000..291ce66 --- /dev/null +++ b/assets/svg/contact_us.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/svg/dark_theme.svg b/assets/svg/dark_theme.svg new file mode 100644 index 0000000..092f755 --- /dev/null +++ b/assets/svg/dark_theme.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/assets/svg/defaultProfileIcon.svg b/assets/svg/defaultProfileIcon.svg new file mode 100644 index 0000000..e01132a --- /dev/null +++ b/assets/svg/defaultProfileIcon.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/delete_account.svg b/assets/svg/delete_account.svg new file mode 100644 index 0000000..9a371fa --- /dev/null +++ b/assets/svg/delete_account.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/svg/down_arrow.svg b/assets/svg/down_arrow.svg new file mode 100644 index 0000000..5d3e248 --- /dev/null +++ b/assets/svg/down_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/edit.svg b/assets/svg/edit.svg new file mode 100644 index 0000000..48b9263 --- /dev/null +++ b/assets/svg/edit.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/svg/filter.svg b/assets/svg/filter.svg new file mode 100644 index 0000000..282a876 --- /dev/null +++ b/assets/svg/filter.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/svg/for_rent.svg b/assets/svg/for_rent.svg new file mode 100644 index 0000000..a40da0e --- /dev/null +++ b/assets/svg/for_rent.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/svg/for_sale.svg b/assets/svg/for_sale.svg new file mode 100644 index 0000000..1a71d16 --- /dev/null +++ b/assets/svg/for_sale.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/svg/header_curve.svg b/assets/svg/header_curve.svg new file mode 100644 index 0000000..da961f0 --- /dev/null +++ b/assets/svg/header_curve.svg @@ -0,0 +1,10 @@ + + + + + + diff --git a/assets/svg/home.svg b/assets/svg/home.svg new file mode 100644 index 0000000..23816d0 --- /dev/null +++ b/assets/svg/home.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/icon_arrow_left.svg b/assets/svg/icon_arrow_left.svg new file mode 100644 index 0000000..d245779 --- /dev/null +++ b/assets/svg/icon_arrow_left.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/inactive_chat.svg b/assets/svg/inactive_chat.svg new file mode 100644 index 0000000..4b99581 --- /dev/null +++ b/assets/svg/inactive_chat.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/svg/interested.svg b/assets/svg/interested.svg new file mode 100644 index 0000000..cf888e8 --- /dev/null +++ b/assets/svg/interested.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/svg/language.svg b/assets/svg/language.svg new file mode 100644 index 0000000..25fe7ab --- /dev/null +++ b/assets/svg/language.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/svg/like.svg b/assets/svg/like.svg new file mode 100644 index 0000000..8b1b07f --- /dev/null +++ b/assets/svg/like.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/svg/like_fill.svg b/assets/svg/like_fill.svg new file mode 100644 index 0000000..9af98c6 --- /dev/null +++ b/assets/svg/like_fill.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/svg/location.svg b/assets/svg/location.svg new file mode 100644 index 0000000..7eadfe0 --- /dev/null +++ b/assets/svg/location.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/svg/logout.svg b/assets/svg/logout.svg new file mode 100644 index 0000000..35280b7 --- /dev/null +++ b/assets/svg/logout.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/svg/magic.svg b/assets/svg/magic.svg new file mode 100644 index 0000000..3ea2f04 --- /dev/null +++ b/assets/svg/magic.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/svg/message.svg b/assets/svg/message.svg new file mode 100644 index 0000000..69ff070 --- /dev/null +++ b/assets/svg/message.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/assets/svg/notification.svg b/assets/svg/notification.svg new file mode 100644 index 0000000..5c79b3a --- /dev/null +++ b/assets/svg/notification.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/svg/other.svg b/assets/svg/other.svg new file mode 100644 index 0000000..3e42863 --- /dev/null +++ b/assets/svg/other.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/svg/privacy.svg b/assets/svg/privacy.svg new file mode 100644 index 0000000..2015eb5 --- /dev/null +++ b/assets/svg/privacy.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/svg/privacypolicy.svg b/assets/svg/privacypolicy.svg new file mode 100644 index 0000000..2d4a648 --- /dev/null +++ b/assets/svg/privacypolicy.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/svg/profile.svg b/assets/svg/profile.svg new file mode 100644 index 0000000..4d67d56 --- /dev/null +++ b/assets/svg/profile.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/svg/promoted.svg b/assets/svg/promoted.svg new file mode 100644 index 0000000..3248dfc --- /dev/null +++ b/assets/svg/promoted.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/svg/properties.svg b/assets/svg/properties.svg new file mode 100644 index 0000000..e114c2b --- /dev/null +++ b/assets/svg/properties.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/svg/properties_icon.svg b/assets/svg/properties_icon.svg new file mode 100644 index 0000000..0d76eea --- /dev/null +++ b/assets/svg/properties_icon.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/svg/propertymap.svg b/assets/svg/propertymap.svg new file mode 100644 index 0000000..4af5587 --- /dev/null +++ b/assets/svg/propertymap.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/svg/rate_us.svg b/assets/svg/rate_us.svg new file mode 100644 index 0000000..e960cc7 --- /dev/null +++ b/assets/svg/rate_us.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/svg/report.svg b/assets/svg/report.svg new file mode 100644 index 0000000..94f8d7f --- /dev/null +++ b/assets/svg/report.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/svg/report_dark.svg b/assets/svg/report_dark.svg new file mode 100644 index 0000000..3d2e5ff --- /dev/null +++ b/assets/svg/report_dark.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/svg/search.svg b/assets/svg/search.svg new file mode 100644 index 0000000..4463fbb --- /dev/null +++ b/assets/svg/search.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/svg/share.svg b/assets/svg/share.svg new file mode 100644 index 0000000..71af49b --- /dev/null +++ b/assets/svg/share.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/svg/subscription.svg b/assets/svg/subscription.svg new file mode 100644 index 0000000..08f7318 --- /dev/null +++ b/assets/svg/subscription.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/svg/t_c.svg b/assets/svg/t_c.svg new file mode 100644 index 0000000..f933006 --- /dev/null +++ b/assets/svg/t_c.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/svg/transaction.svg b/assets/svg/transaction.svg new file mode 100644 index 0000000..ec56806 --- /dev/null +++ b/assets/svg/transaction.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/svg/upcoming_projects_icon.svg b/assets/svg/upcoming_projects_icon.svg new file mode 100644 index 0000000..76ba2fc --- /dev/null +++ b/assets/svg/upcoming_projects_icon.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/svg/update.svg b/assets/svg/update.svg new file mode 100644 index 0000000..27e903f --- /dev/null +++ b/assets/svg/update.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/svg/v360.svg b/assets/svg/v360.svg new file mode 100644 index 0000000..eaac874 --- /dev/null +++ b/assets/svg/v360.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/svg/warning.svg b/assets/svg/warning.svg new file mode 100644 index 0000000..1334fb3 --- /dev/null +++ b/assets/svg/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/svg/whatsapp.svg b/assets/svg/whatsapp.svg new file mode 100644 index 0000000..808b16d --- /dev/null +++ b/assets/svg/whatsapp.svg @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 0000000..5c27c3e --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,2 @@ +extensions: + - provider: true \ No newline at end of file diff --git a/flutter_launcher_icons.yaml b/flutter_launcher_icons.yaml new file mode 100644 index 0000000..c2c3b96 --- /dev/null +++ b/flutter_launcher_icons.yaml @@ -0,0 +1,4 @@ +flutter_launcher_icons: + android: true + ios: true + image_path: "assets/AppIcon/icon.png" \ No newline at end of file diff --git a/lib/.DS_Store b/lib/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..97c947579a4615bd6af337d0fc22fc17883d6e94 GIT binary patch literal 8196 zcmeHMO>7%Q6no{o?$s7;}E}YKM&FUOL8UQrBnAOLzI;Jo`yZTB@_ROFqm=Cm4c4!&z^uE}rBT^tz zAW|SwAW|Sw;Qyfj?%Awp1NMF4jp|5&NP(eLfUOT1yqGnlZ41kn4y^bQ0PP5N^MY;u z$3NN(>p*Kr+ZGmkun>`oR-_Vn#31tQKtwwF4H@4SR-^;rGvhdNW+G20L>@gzhKB<& zgpKM*fk=UV1!k}-4kk39vE+o#@AK$6_YW^TO-4DjxnhOZ8)B%vRyV&+7Z>IEUpv3? zAouzA_t_XSuTHCv@HTF%qkhZ=AAu_33c&2abq{?iuA{gRveCjv>KH1v`A@#PJ9~{| zJIYnj9p?|>J2A`fje!Nbs2c?jQTn0TA^EUBLdEd*;cvfAeZVpFjH4nM92LSNmdpgy zQ7;=@ILDPkRAJ@Fdx%L@ZVY_Pa4|ZMEOvXM|9W(EnD6{ooNs76mG6W13;Na1B;TH> z?t3vfD$JL^d`U!aq4ELeT*JEoykoTbGSg!ZufFpI zXC{4JKE1vWi}cqx9E?JfGjPBUBZ@DeSAAMaWVz)xwJ>D!Roku7R-QK9 zs?T$a!l5O!L`hHY?_aq1TrP9@;z2I6KX>WMrCjEPD;Ew9654e3{ELOs9jETncNsa{ zp5=B8NpXKvvv*NpWLI`1BXZbb^s}yaI3-SupG-b}N}rgVnn+DdPfwqIB0c%!Q%{%l zsj^wQQ}YsylG9{{ zoFzH(Jh@B^GEWL*gKQF$ye{%%oyYu)98VhJV?%k&p${tlry2IDpVjrPGk+h74MfRT z7sulxLZ8^lErvtM-zj>oLtVBYbP%(MAuVyiJI&7jFAe_ve@NAdXh#YRhXQ0|vACE= zu7lP@cGk||wS^ZeEUqmqPr-^G$I*FiHPFS2a1EGF}r2n)pj2nY>6 JI0Jvmz!yB>PkI0V literal 0 HcmV?d00001 diff --git a/lib/Ui/Theme/theme.dart b/lib/Ui/Theme/theme.dart new file mode 100644 index 0000000..8032d5b --- /dev/null +++ b/lib/Ui/Theme/theme.dart @@ -0,0 +1,140 @@ +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; + +import '../../app/app.dart'; +import '../../utils/ui_utils.dart'; + +///Light Theme Colors +///This color format is different, isn't it? .You can use hex colors here also but you have to remove '#' symbol and add 0xff instead. +const Color primaryColor_ = Color(0xFFFAFAFA); +const Color secondaryColor_ = Color(0xFFFFFFFF); +const Color tertiaryColor_ = Color(0xFF087C7C); +const Color textColor = Color(0xFF4D5454); +Color lightTextColor = const Color(0xFF4D5454).withOpacity(0.5); +Color widgetsBorderColorLight = const Color(0xffEEEEEE).withOpacity(0.6); +Color senderChatColor = const Color.fromARGB(255, 233, 233, 233).darken(22); + +///Dark Theme Colors +Color primaryColorDark = const Color(0xff0C0C0C); +Color secondaryColorDark = const Color(0xff1C1C1C); +const Color tertiaryColorDark = Color(0xff53ADAE); +const Color textColorDarkTheme = Color(0xffFDFDFD); +Color lightTextColorDarkTheme = const Color(0xffFDFDFD).withOpacity(0.3); +Color widgetsBorderColorDark = const Color(0x1aFDFDFD); +Color darkSenderChatColor = + const Color.fromARGB(255, 233, 233, 233).darken(100); + +///Messages Color +const Color errorMessageColor = Color.fromARGB(255, 166, 4, 4); +const Color successMessageColor = Color.fromARGB(255, 12, 161, 161); +const Color warningMessageColor = Color(0xFFC2AF6F); + +//Button text color +const Color buttonTextColor = Colors.white; + +///Advance +//Theme settings +extension ColorPrefs on ColorScheme { + Color get primaryColor => _getColor( + brightness, + lightColor: appSettings.lightPrimary, + darkColor: appSettings.darkPrimary, + ); + Color get secondaryColor => _getColor( + brightness, + lightColor: appSettings.lightSecondary, + darkColor: appSettings.darkSecondary, + ); + Color get tertiaryColor => _getColor( + brightness, + lightColor: appSettings.lightTertiary, + darkColor: appSettings.darkTertiary, + ); + + Color get backgroundColor => _getColor( + brightness, + lightColor: appSettings.lightPrimary, + darkColor: appSettings.darkPrimary, + ); + + Color get buttonColor => buttonTextColor; + + Color get textColorDark => _getColor( + brightness, + lightColor: textColor, + darkColor: textColorDarkTheme, + ); + + Color get textLightColor => _getColor( + brightness, + lightColor: lightTextColor, + darkColor: lightTextColorDarkTheme, + ); + + Color get borderColor => _getColor(brightness, + lightColor: widgetsBorderColorLight, darkColor: widgetsBorderColorDark); + + Color get chatSenderColor => _getColor(brightness, + lightColor: senderChatColor, darkColor: darkSenderChatColor); + + ///This will set text color white if background is dark if background is light it will be dark + Color textAutoAdapt(Color backgroundColor) => + UiUtils.getAdaptiveTextColor(backgroundColor); + + Color get blackColor => Colors.black; + + Color get shimmerBaseColor => brightness == Brightness.light + ? const Color.fromARGB(255, 225, 225, 225) + : const Color.fromARGB(255, 150, 150, 150); + Color get shimmerHighlightColor => brightness == Brightness.light + ? Colors.grey.shade100 + : Colors.grey.shade300; + Color get shimmerContentColor => brightness == Brightness.light + ? Colors.white.withOpacity(0.85) + : Colors.white.withOpacity(0.7); +} + +// 10pt: Smaller +// 12pt: Small +// 16pt: Large +// 18pt: Larger +// 24pt: Extra large +extension TextThemeForFont on TextTheme { + Font get font => Font(); +} + +/// i made this to access font easyly from theme like, Theme.of(context).textTheme.font.small +/// So what is diffrence here?? in Theme.of(context).textTheme.small and Theme.of(context).textTheme.font.small +/// We use saperate class because There will be an exention on BuildContext in [Utils/Extensions/lib] folder so further explaination is there. you can check +class Font { + ///10 + double get smaller => 10; + + ///12 + double get small => 12; + + ///14 + double get normal => 14; + + ///16 + double get large => 16; + + ///18 + double get larger => 18; + + ///24 + double get extraLarge => 24; + + ///28 + double get xxLarge => 28; +} + +//This one is for check current theme and return data accordingly +Color _getColor(Brightness brightness, + {required Color lightColor, required Color darkColor}) { + if (Brightness.light == brightness) { + return lightColor; + } else { + return darkColor; + } +} diff --git a/lib/Ui/screens/.DS_Store b/lib/Ui/screens/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..98ca4dd517fb9da8d85358291aca96f4cd56f7b6 GIT binary patch literal 6148 zcmeHK%}T>S5T0$LO(;SS3OxqA7L30rUP7%eU_=ipHL=A8W41J@Ig~=q`a(X5&*RMQ zRhMMXA@5*cCDdo)bqEcd(*QK?#M>ovP( z*X_GtAd4Um^KsS=M>lkJDPUJ+I{+9DCE2J2}}SfB$GYb?mL}ozsi%Q}Ue3S530OFH*^d!5O@v zv!t`R-e=j2%m6dM46GspW{0%vtJoa(#0)S4zhZ#)2N#vlH&|*^TL&670w7u#R)Rjw z5>(?F^bM98aRo)_Qbb)U%!na$ImTU+=Nl|F>T(cf_z>pF!b~VaJst1ws&o*(Mz+iV zGw_`On*C53bpD_JJpZdCHp~Dsu$l}As}pqE*qb?97rLag)L|us eI*Oa9N-*w{gXkM9HDUyXe*_c_Y?y&RW#ALR MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => CreateAdvertisementCubit(), + ), + BlocProvider( + create: (context) => GetSubsctiptionPackageLimitsCubit(), + ), + ], + child: CreateAdvertisementScreen( + property: arguments?['model'], + ), + ), + ); + } + + @override + State createState() => + _CreateAdvertisementScreenState(); +} + +class _CreateAdvertisementScreenState extends State { + Map? selectedAdvertismentOption; + final PickImage _pickImage = PickImage(); + AvertisementType advertisementType = AvertisementType.home; + Widget getPreview() { + if (selectedAdvertismentOption?['id'] == 0 || + selectedAdvertismentOption == null) { + return Transform.scale( + scale: 0.8, child: PropertyCardBig(property: widget.property)); + } else if (selectedAdvertismentOption?['id'] == 1) { + return LayoutBuilder(builder: (context, c) { + return Container( + width: context.screenWidth - 100, + height: 150, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular( + 11, + ), + ), + child: Stack( + fit: StackFit.expand, + children: [ + _pickImage.listenChangesInUI( + (context, image) { + if (image != null) { + return Image.file( + _pickImage.pickedFile!, + fit: BoxFit.cover, + ); + } + + if (widget.property.titleImage == "") { + return UiUtils.getImage(widget.property.titleImage!); + } + return Image.network( + widget.property.titleImage ?? "", + fit: BoxFit.cover, + ); + }, + ), + const Positioned( + left: 10, + top: 10, + child: PromotedCard(type: PromoteCardType.icon), + ) + ], + ), + ); + }); + } else { + return Text(UiUtils.translate(context, "previewNotAvail")); + } + } + + Future _createAdvertisment() async { + if (selectedAdvertismentOption?['id'] == 0) { + advertisementType = AvertisementType.home; + } else if (selectedAdvertismentOption?['id'] == 1) { + advertisementType = AvertisementType.slider; + } else if (selectedAdvertismentOption?['id'] == 2) { + advertisementType = AvertisementType.list; + } + + context.read().create( + type: advertisementType.value, + propertyId: widget.property.id.toString(), + image: _pickImage.pickedFile); + } + + @override + void dispose() { + _pickImage.dispose(); + super.dispose(); + } + + @override + void initState() { + super.initState(); + Future.delayed( + const Duration(milliseconds: 500), + () { + context + .read() + .getLimits(SubscriptionLimitType.advertisement); + }, + ); + } + + bool hasPackage = false; + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: UiUtils.buildAppBar( + context, + showBackButton: true, + title: UiUtils.translate(context, "createAdvertisment"), + ), + bottomNavigationBar: BlocConsumer( + listener: (context, state) { + if (state is GetSubsctiptionPackageLimitsInProgress) { + Widgets.showLoader(context); + } + + if (state is GetSubsctiptionPackageLimitsFailure) { + Widgets.hideLoder(context); + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "somethingWentWrng"), + type: MessageType.error); + Navigator.pop(context); + } + if (state is GetSubsctiptionPackageLimitsSuccess) { + Widgets.hideLoder(context); + } + }, + builder: (context, state) { + if ((state is GetSubsctiptionPackageLimitsSuccess)) { + hasPackage = state.packageLimit.hasPackage == true; + } + + return Padding( + padding: const EdgeInsetsDirectional.fromSTEB(20, 0, 20, 8), + child: UiUtils.buildButton(context, onPressed: () { + if (hasPackage) { + _createAdvertisment(); + } else { + Navigator.pushNamed( + context, Routes.subscriptionPackageListRoute); + } + }, + // disabled: !hasPackage, + prefixWidget: hasPackage + ? null + : Icon( + Icons.lock, + color: context.color.buttonColor, + ), + buttonTitle: hasPackage + ? UiUtils.translate(context, "promote") + : UiUtils.translate(context, "subscribeToPackage")), + ); + // return MaterialButton( + // disabledColor: Colors.grey, + // onPressed: (isAdvertisementCreationLimitReached + // ? null + // : _createAdvertisment), + // height: 45, + // color: Theme.of(context).colorScheme.teritoryColor, + // child: Row( + // mainAxisAlignment: MainAxisAlignment.center, + // children: [ + // if (isAdvertisementCreationLimitReached) ...[ + // const Icon(Icons.lock), + // ], + // Text(isAdvertisementCreationLimitReached + // ? "Subscribe to package" + // : "Promote") + // .color(const Color.fromARGB(255, 255, 255, 255)), + // ], + // ), + // ); + }, + ), + body: Padding( + padding: const EdgeInsets.all(16.0), + child: BlocConsumer( + listener: (context, state) { + if (state is CreateAdvertisementInProgress) { + Widgets.showLoader(context); + } + if (state is CreateAdvertisementFailure) { + Widgets.hideLoder(context); + HelperUtils.showSnackBarMessage( + context, + UiUtils.translate(context, "somethingWentWrng"), + type: MessageType.error, + ); + } + + if (state is CreateAdvertisementSuccess) { + Widgets.hideLoder(context); + // Constant.promotedProeprtiesIds.add(state.proeprtyId); + context.read().update(state.property); + HelperUtils.showSnackBarMessage( + context, + UiUtils.translate(context, "success"), + type: MessageType.success, + ); + Navigator.pop(context); + } + }, + builder: (context, state) { + return Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + UiUtils.translate(context, "preview"), + ) + .size( + 17, + ) + .color(context.color.textColorDark), + SizedBox( + height: 15.rh(context), + ), + Container( + height: 300, + width: MediaQuery.of(context).size.width, + color: const Color.fromARGB(255, 231, 231, 231), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + IgnorePointer(ignoring: true, child: getPreview()), + ], + ), + ), + OptionsRow( + initialValue: (initial) { + selectedAdvertismentOption = initial; + }, + selected: (selected) { + selectedAdvertismentOption = selected; + setState(() {}); + }, + ), + const SizedBox( + height: 10, + ), + if (selectedAdvertismentOption?['id'] == 1) + Padding( + padding: const EdgeInsets.all(20.0), + child: Container( + width: context.screenWidth, + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(10)), + height: 48, + child: Padding( + padding: const EdgeInsets.all(10.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text(UiUtils.translate( + context, "pickSliderImage")), + MaterialButton( + onPressed: () { + _pickImage.pick(); + }, + child: Text( + UiUtils.translate(context, "uploadBtnLbl")), + ) + ], + ), + ), + ), + ), + ], + ), + ); + }, + ), + ), + ); + } +} + +class OptionsRow extends StatefulWidget { + final Function(Map initial)? initialValue; + final Function(Map selected) selected; + const OptionsRow({super.key, required this.selected, this.initialValue}); + @override + State createState() => _OptionsRowState(); +} + +class _OptionsRowState extends State { + int selectedOption = 0; + + ///add options here + List options = ["Home", "Slider", "List"]; + + Widget buildOption(String name, int index) => Expanded( + child: Padding( + padding: const EdgeInsets.all(1.0), + child: UiUtils.buildButton( + context, + height: 34, + buttonTitle: name, + textColor: index == selectedOption + ? context.color.textAutoAdapt(context.color.textColorDark) + : Theme.of(context).colorScheme.textColorDark, + radius: 7, + fontSize: context.font.normal, + onPressed: () { + selectedOption = index; + widget.selected({"id": index, "value": name}); + setState(() {}); + }, + buttonColor: index == selectedOption + ? Theme.of(context).colorScheme.tertiaryColor.withAlpha(255) + : Theme.of(context).colorScheme.tertiaryColor.withAlpha(50), + ))); + + @override + void initState() { + widget.initialValue?.call({"id": 0, "value": options[0]}); + super.initState(); + } + + @override + Widget build(BuildContext context) { + ///We need index to select some value , So when we are storing it in list + /// so we don't have index in list we can use for loop but it will not be perfect as this, + /// here we are converting list to map so it will get index automaticly and then using .map(k,v) + /// method so we can get index in key and do work on this + /// .values will only use its String values and here .cast will convert List dynamic to List of widgets + List optionList = options + .asMap() + .map((key, value) => MapEntry(key, buildOption(value, key))) + .values + .toList() + .cast(); + + return Row( + children: optionList, + ); + } +} diff --git a/lib/Ui/screens/Advertisement/my_advertisment_screen.dart b/lib/Ui/screens/Advertisement/my_advertisment_screen.dart new file mode 100644 index 0000000..be19eb0 --- /dev/null +++ b/lib/Ui/screens/Advertisement/my_advertisment_screen.dart @@ -0,0 +1,298 @@ +import 'package:ebroker/data/cubits/Utility/proeprty_edit_global.dart'; +import 'package:ebroker/utils/api.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:google_mobile_ads/google_mobile_ads.dart'; + +import '../../../app/routes.dart'; +import '../../../data/Repositories/advertisement_repository.dart'; +import '../../../data/cubits/delete_advertisment_cubit.dart'; +import '../../../data/cubits/favorite/add_to_favorite_cubit.dart'; +import '../../../data/cubits/favorite/fetch_favorites_cubit.dart'; +import '../../../data/cubits/property/fetch_my_promoted_propertys_cubit.dart'; +import '../../../data/model/property_model.dart'; +import '../../../utils/AdMob/bannerAdLoadWidget.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../home/Widgets/property_horizontal_card.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/Erros/no_data_found.dart'; +import '../widgets/Erros/no_internet.dart'; +import '../widgets/Erros/something_went_wrong.dart'; +import '../widgets/blurred_dialoge_box.dart'; + +class MyAdvertismentScreen extends StatefulWidget { + const MyAdvertismentScreen({super.key}); + static Route route(RouteSettings settings) { + return BlurredRouter( + builder: (context) { + return BlocProvider( + create: (context) => FetchMyPromotedPropertysCubit(), + child: const MyAdvertismentScreen(), + ); + }, + ); + } + + @override + State createState() => _MyAdvertismentScreenState(); +} + +class _MyAdvertismentScreenState extends State { + final ScrollController _pageScrollController = ScrollController(); + Map? statusMap; + @override + void initState() { + context.read().fetchMyPromotedPropertys(); + + Future.delayed( + Duration.zero, + () { + statusMap = { + 0: UiUtils.translate(context, "approved"), + 1: UiUtils.translate(context, "pending"), + 2: UiUtils.translate(context, "rejected") + }; + }, + ); + + _pageScrollController.addListener(_pageScroll); + super.initState(); + } + + void _pageScroll() { + if (_pageScrollController.isEndReached()) { + if (context.read().hasMoreData()) { + context + .read() + .fetchMyPromotedPropertysMore(); + } + } + } + + @override + void didChangeDependencies() { + statusMap = { + 0: UiUtils.translate(context, "approved"), + 1: UiUtils.translate(context, "pending"), + 2: UiUtils.translate(context, "rejected") + }; + super.didChangeDependencies(); + } + + Color? statusColor(status) { + if (status == 0) { + return Colors.green; + } else if (status == 1) { + return Colors.purple; + } else if (status == 2) { + return Colors.red; + } + return null; + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: UiUtils.buildAppBar(context, + showBackButton: true, title: UiUtils.translate(context, "myAds")), + bottomNavigationBar: const BottomAppBar( + child: BannerAdWidget(bannerSize: AdSize.banner), + ), + body: BlocBuilder( + builder: (context, state) { + if (state is FetchMyPromotedPropertysInProgress) { + return Center(child: UiUtils.progress()); + } + if (state is FetchMyPromotedPropertysFailure) { + if (state.errorMessage is ApiException) { + if (state.errorMessage.errorMessage == "no-internet") { + return NoInternet( + onRetry: () { + context + .read() + .fetchMyPromotedPropertys(); + }, + ); + } + } + + return const SomethingWentWrong(); + } + if (state is FetchMyPromotedPropertysSuccess) { + if (state.propertymodel.isEmpty) { + return NoDataFound( + title: "noFeaturedAdsYes".translate(context), + description: "noFeaturedDescription".translate(context), + onTap: () { + context + .read() + .fetchMyPromotedPropertys(); + setState(() {}); + }, + ); + } + + return Column( + children: [ + Expanded( + child: ListView.builder( + controller: _pageScrollController, + itemCount: state.propertymodel.length, + padding: const EdgeInsets.symmetric(horizontal: 16), + itemBuilder: (context, index) { + PropertyModel property = state.propertymodel[index]; + + property = + context.watch().get(property); + return GestureDetector( + onTap: () { + Navigator.pushNamed( + context, + Routes.propertyDetails, + arguments: { + 'propertyData': property, + 'fromMyProperty': true + }, + ); + }, + child: BlocProvider( + create: (context) => DeleteAdvertismentCubit( + AdvertisementRepository()), + child: PropertyHorizontalCard( + property: property, + useRow: true, + onLikeChange: (type) { + if (type == FavoriteType.add) { + context + .read() + .add(state.propertymodel[index]); + } else { + context + .read() + .remove(state.propertymodel[index].id); + } + }, + additionalHeight: 50, + addBottom: [ + SizedBox( + width: 10.rw(context), + ), + Row(children: [ + Text(UiUtils.translate(context, "status")), + SizedBox( + width: 5.rw(context), + ), + SizedBox( + child: Chip( + label: Text( + statusMap![property.advertisment[0] + ['status']] + .toString() + .firstUpperCase(), + ) + .size(context.font.small) + .color(context.color.buttonColor), + backgroundColor: statusColor( + property.advertisment[0]['status'], + ), + visualDensity: + const VisualDensity(horizontal: 1), + padding: EdgeInsets.zero, + ), + ) + ]), + SizedBox( + width: 10.rw(context), + ), + Row( + children: [ + Text(UiUtils.translate(context, "type")), + SizedBox( + width: 5.rw(context), + ), + Chip( + label: Text(property.advertisment[0] + ['type'] + .toString())) + ], + ), + const Spacer(), + BlocConsumer( + listener: (context, state) { + if (state is DeleteAdvertismentSuccess) { + context + .read() + .delete(property.id); + } + }, + builder: (BuildContext context, + DeleteAdvertismentState state) { + ///it will only show delete button when status is pending it means 1. + + if (property.advertisment[0]['status'] != 1) { + return Container(); + } + + return IconButton( + onPressed: () { + UiUtils.showBlurredDialoge(context, + dialoge: BlurredDialogBox( + title: UiUtils.translate( + context, "deleteBtnLbl"), + onAccept: () async { + if (Constant.isDemoModeOn) { + HelperUtils.showSnackBarMessage( + context, + UiUtils.translate( + context, + "thisActionNotValidDemo")); + } else { + context + .read< + DeleteAdvertismentCubit>() + .delete(property + .advertisment[0] + ["id"]); + } + }, + content: Text(UiUtils.translate( + context, + "confirmDeleteAdvert")))); + }, + icon: (state + is DeleteAdvertismentInProgress) + ? UiUtils.progress() + : Icon( + Icons.delete, + color: + context.color.textColorDark, + )); + }, + ), + SizedBox( + width: 10.rw(context), + ), + ], + ), + ), + ); + }, + ), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ); + } + return Container(); + }, + ), + ); + } +} diff --git a/lib/Ui/screens/Articles/article_details.dart b/lib/Ui/screens/Articles/article_details.dart new file mode 100644 index 0000000..239c9c9 --- /dev/null +++ b/lib/Ui/screens/Articles/article_details.dart @@ -0,0 +1,89 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_html/flutter_html.dart'; + +import '../../../data/model/article_model.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; + +class ArticleDetails extends StatelessWidget { + final ArticleModel article; + + const ArticleDetails({super.key, required this.article}); + static Route route(RouteSettings settings) { + Map? arguments = settings.arguments as Map; + return BlurredRouter( + builder: (context) { + return ArticleDetails( + article: arguments['model'], + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.primaryColor, + appBar: UiUtils.buildAppBar( + context, + showBackButton: true, + ), + body: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Padding( + padding: const EdgeInsets.all( + 20.0, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ClipRRect( + clipBehavior: Clip.antiAlias, + borderRadius: BorderRadius.circular( + 10, + ), + child: SizedBox( + width: context.screenWidth, + height: 200.rh( + context, + ), + child: UiUtils.getImage( + article.image!, + fit: BoxFit.cover, + ), + ), + ), + SizedBox( + height: 15.rh(context), + ), + Text(article.date.toString().formatDate()) + .size(context.font.small) + .color(context.color.textLightColor), + const SizedBox( + height: 12, + ), + Text( + (article.title ?? "").firstUpperCase(), + ) + .size( + context.font.larger, + ) + .color( + context.color.textColorDark, + ) + .bold( + weight: FontWeight.w500, + ), + SizedBox( + height: 4.rh(context), + ), + Html(data: article.description ?? "") + ], + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/Articles/articles_screen.dart b/lib/Ui/screens/Articles/articles_screen.dart new file mode 100644 index 0000000..d115d6d --- /dev/null +++ b/lib/Ui/screens/Articles/articles_screen.dart @@ -0,0 +1,296 @@ +import 'package:ebroker/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart' + show BlurredRouter; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_html/flutter_html.dart' show Html; + +import '../../../app/routes.dart'; +import '../../../data/cubits/fetch_articles_cubit.dart'; +import '../../../data/model/article_model.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/api.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/Erros/no_data_found.dart'; +import '../widgets/Erros/no_internet.dart' show NoInternet; +import '../widgets/Erros/something_went_wrong.dart'; +import '../widgets/shimmerLoadingContainer.dart'; + +class ArticlesScreen extends StatefulWidget { + const ArticlesScreen({super.key}); + + static Route route(RouteSettings settings) { + return BlurredRouter( + builder: (context) { + return const ArticlesScreen(); + }, + ); + } + + @override + State createState() => _ArticlesScreenState(); +} + +class _ArticlesScreenState extends State { + final ScrollController _pageScrollController = ScrollController(); + + @override + void initState() { + context.read().fetchArticles(); + _pageScrollController.addListener(pageScrollListen); + super.initState(); + } + + void pageScrollListen() { + if (_pageScrollController.isEndReached()) { + if (context.read().hasMoreData()) { + context.read().fetchArticlesMore(); + } + } + } + + @override + void dispose() { + _pageScrollController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return RefreshIndicator( + color: context.color.tertiaryColor, + onRefresh: () async { + context.read().fetchArticles(); + }, + child: Scaffold( + backgroundColor: context.color.primaryColor, + appBar: UiUtils.buildAppBar( + context, + showBackButton: true, + title: UiUtils.translate( + context, + "articles", + ), + ), + body: BlocBuilder( + builder: (context, state) { + if (state is FetchArticlesInProgress) { + return buildArticlesShimmer(); + } + if (state is FetchArticlesFailure) { + if (state.errorMessage is ApiException) { + if (state.errorMessage.errorMessage == "no-internet") { + return NoInternet( + onRetry: () { + context.read().fetchArticles(); + }, + ); + } + } + return const SomethingWentWrong(); + } + if (state is FetchArticlesSuccess) { + if (state.articlemodel.isEmpty) { + return const NoDataFound(); + } + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Expanded( + child: ListView.builder( + controller: _pageScrollController, + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.all(16), + itemCount: state.articlemodel.length, + itemBuilder: (context, index) { + ArticleModel article = state.articlemodel[index]; + + return buildArticleCard(context, article); + + // return article(state, index); + }), + ), + if (state.isLoadingMore) const CircularProgressIndicator(), + if (state.loadingMoreError) + Text(UiUtils.translate(context, "somethingWentWrng")) + ], + ); + } + return Container(); + }, + ), + ), + ); + } + + Widget buildArticleCard(BuildContext context, ArticleModel article) { + return Padding( + padding: const EdgeInsets.all(7.0), + child: GestureDetector( + onTap: () { + Navigator.pushNamed( + context, + Routes.articleDetailsScreenRoute, + arguments: { + "model": article, + }, + ); + }, + child: ClipRRect( + clipBehavior: Clip.antiAlias, + borderRadius: BorderRadius.circular(18), + child: Container( + width: double.infinity, + // height: 290, + decoration: BoxDecoration( + color: context.color.secondaryColor, + border: Border.all( + width: 1.5, + color: context.color.borderColor, + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: + const EdgeInsetsDirectional.fromSTEB(12.0, 12, 12, 0), + child: ClipRRect( + borderRadius: BorderRadius.circular(10), + child: UiUtils.getImage( + article.image!, + fit: BoxFit.cover, + width: double.infinity, + height: 160, + ), + ), + ), + Padding( + padding: + const EdgeInsetsDirectional.fromSTEB(12.0, 12, 12, 6), + child: Text( + (article.title ?? "").firstUpperCase(), + ) + .color( + context.color.textColorDark, + ) + .size(context.font.normal) + .setMaxLines( + lines: 2, + ), + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 12, + ), + child: Text(stripHtmlTags(article.description ?? "").trim()) + .setMaxLines(lines: 3) + .size(context.font.small) + .color(context.color.textLightColor), + ), + Padding( + padding: const EdgeInsetsDirectional.fromSTEB(12.0, 4, 12, 6), + child: Text(article.date == null + ? "" + : article.date.toString().formatDate()) + .size(context.font.smaller) + .color(context.color.textLightColor), + ), + const SizedBox( + height: 5, + ), + ], + ), + ), + ), + ), + ); + } + + String stripHtmlTags(String htmlString) { + RegExp exp = RegExp(r"<[^>]*>", multiLine: true, caseSensitive: true); + String strippedString = htmlString.replaceAll(exp, ''); + return strippedString; + } + + Widget buildArticlesShimmer() { + return ListView.builder( + itemCount: 10, + shrinkWrap: true, + padding: const EdgeInsets.all(16), + itemBuilder: (context, index) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: ClipRRect( + clipBehavior: Clip.antiAlias, + borderRadius: BorderRadius.circular(18), + child: Container( + width: double.infinity, + height: 287.rh(context), + decoration: BoxDecoration( + color: context.color.secondaryColor, + border: Border.all( + width: 1.5, color: context.color.borderColor)), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + CustomShimmer( + width: double.infinity, + height: 160.rh(context), + ), + Padding( + padding: const EdgeInsets.all(10.0), + child: CustomShimmer( + width: 100.rw(context), + height: 10.rh(context), + ), + ), + Padding( + padding: const EdgeInsets.all(10.0), + child: CustomShimmer( + width: 160.rw(context), + height: 10.rh(context), + ), + ), + Padding( + padding: const EdgeInsets.all(10.0), + child: CustomShimmer( + width: 150.rw(context), + height: 10.rh(context), + ), + ), + ], + ), + ), + ), + ); + }); + } + + Container article(FetchArticlesSuccess state, int index) { + return Container( + constraints: const BoxConstraints( + minHeight: 50, + maxHeight: double.infinity, + ), + child: Card( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(state.articlemodel[index].title!).color(Colors.black), + const Divider(), + if (state.articlemodel[index].image != "") ...[ + Image.network(state.articlemodel[index].image!) + ], + const Divider(), + Html(data: state.articlemodel[index].description!) + ], + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/ChatNew/MessageTypes/audio_message.dart b/lib/Ui/screens/ChatNew/MessageTypes/audio_message.dart new file mode 100644 index 0000000..d756464 --- /dev/null +++ b/lib/Ui/screens/ChatNew/MessageTypes/audio_message.dart @@ -0,0 +1,400 @@ +import 'dart:math'; + +import 'package:audioplayers/audioplayers.dart'; +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/blueprint.dart'; +import 'package:ebroker/Ui/screens/widgets/custom_inkWell.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/convert.dart'; +import 'package:flutter/material.dart'; + +import '../../../../data/cubits/chatCubits/delete_message_cubit.dart'; +import '../../../../data/cubits/chatCubits/send_message.dart'; +import '../../../../exports/main_export.dart'; +import '../../../../utils/ui_utils.dart'; + +class AudioMessage extends Message { + @override + String type = "audio"; + late AudioPlayer audioPlayer; + ValueNotifier isPlaying = ValueNotifier(false); + int position = 0; + int durationChanged = 0; + ValueNotifier duration = ValueNotifier(Duration.zero); + ValueNotifier progressValue = ValueNotifier(0); + AudioMessage() { + id = DateTime.now().toString(); + } + @override + void init() async { + print("HELLO I AM INIT"); + audioPlayer = AudioPlayer(); + audioPlayer.onDurationChanged.listen((Duration event) { + durationChanged = event.inSeconds; + duration.value = event; + }); + + audioPlayer.onPlayerStateChanged.listen((PlayerState event) { + isPlaying.value = event == PlayerState.playing; + print("PLAYER STATE IS#${event} "); + }); + audioPlayer.onPositionChanged.listen((Duration event) { + position = event.inSeconds; + duration.value = event; + double progressIndicatorValue = ConvertNumber.inRange( + currentValue: event.inSeconds.toDouble(), + minValue: 0, + maxValue: durationChanged.toDouble(), + newMaxValue: 1, + newMinValue: 0); + progressValue.value = progressIndicatorValue; + }); + audioPlayer.setSourceUrl(message!.audio!); + + if (isSentNow && isSentByMe && isSent == false) { + try { + context!.read().send( + senderId: HiveUtils.getUserId().toString(), + recieverId: message!.receiverId!, + attachment: message?.file, + message: message!.message!, + proeprtyId: message!.propertyId!, + audio: message?.audio, + ); + } catch (e) { + print("i am issue!!! $e"); + } + } + + ///if this message is not sent now so it will set id from server + if (isSentNow == false) { + id = message!.id!; + } + // duration.value = await audioPlayer.getDuration(); + // print("DURATION IS ${duration}"); + super.init(); + } + + @override + void onRemove() { + context! + .read() + .delete(int.parse(id), receiverId: int.parse(message!.receiverId!)); + super.onRemove(); + } + + @override + void dispose() { + audioPlayer.dispose(); + super.dispose(); + } + + @override + Widget render(context) { + + return ValueListenableBuilder( + valueListenable: duration, + builder: (context, duration, child) { + return Align( + alignment: + isSentByMe ? Alignment.centerRight : Alignment.centerLeft, + child: Column( + crossAxisAlignment: isSentByMe + ? CrossAxisAlignment.end + : CrossAxisAlignment.start, + children: [ + Container( + height: 67, + margin: const EdgeInsets.symmetric(vertical: 5), + width: context.screenWidth * 0.74, + decoration: isSentByMe + ? getSentByMeDecoration(context) + : getOtherUserDecoration(context), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 6.5), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded( + child: Row( + children: [ + CustomInkWell( + onTap: () { + if (isPlaying.value == true) { + audioPlayer.pause(); + } else { + audioPlayer.resume(); + } + }, + color: isSentByMe + ? getSentByMeDecoration(context) + .color! + .darken(20) + : getOtherUserDecoration(context) + .color! + .darken(20), + shape: BoxShape.circle, + child: Container( + clipBehavior: Clip.antiAlias, + width: 50 / 1.4, + height: 50 / 1.4, + decoration: const BoxDecoration( + shape: BoxShape.circle, + ), + child: ValueListenableBuilder( + valueListenable: isPlaying, + builder: (context, isPlaying, child) { + return Icon( + isPlaying + ? Icons.pause + : Icons.play_arrow_outlined, + ); + }), + ), + ), + const SizedBox( + width: 5, + ), + Expanded( + child: ValueListenableBuilder( + valueListenable: progressValue, + builder: (context, progressValue, child) { + return GradientProgressIndicator( + key: Key(message!.id!), + onProgressDrag: (progress) { + double progressIndicatorValue = + ConvertNumber.inRange( + currentValue: progress, + minValue: 0, + maxValue: 1, + newMaxValue: + durationChanged.toDouble(), + newMinValue: 0); + + audioPlayer.seek(Duration( + seconds: progressIndicatorValue + .toInt())); + }, + value: progressValue, + ); + }, + ), + ), + const SizedBox( + width: 10, + ), + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 0), + child: Text( + "${duration!.inMinutes}:${duration.inSeconds}"), + ) + ], + ), + ), + BlocBuilder( + builder: (context, state) { + if (state is SendMessageInProgress) { + return Icon(Icons.watch_later_outlined); + } + return SizedBox.shrink(); + }, + ) + ], + ), + ), + ), + SizedBox( + width: 5, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 9), + child: Text((DateTime.parse(message!.date!)) + .toLocal() + .toIso8601String() + .toString() + .formatDate(format: "hh:mm aa")) + .size(context.font.smaller) + .color(context.color.textLightColor), + ), + ], + ), + ); + }); + } + + BoxDecoration getSentByMeDecoration(BuildContext context) { + return BoxDecoration( + color: const Color(0xffEEEEEE), + borderRadius: BorderRadius.circular(8), + border: Border.all(color: context.color.borderColor, width: 1.5)); + } + + BoxDecoration getOtherUserDecoration(BuildContext context) { + return BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(8), + border: Border.all(color: context.color.borderColor, width: 1.5), + ); + } +} + +Map> preserveHeightMap = {}; + +class GradientProgressIndicator extends ProgressIndicator { + GradientProgressIndicator({ + Key? key, + double? value, + Color? backgroundColor, + this.width, + Color? color, + Animation? valueColor, + String? semanticsLabel, + String? semanticsValue, + this.minHeight, + this.onProgressDrag, + this.borderRadius = BorderRadius.zero, + }) : super( + key: key, + value: value, + backgroundColor: backgroundColor, + color: color, + valueColor: valueColor, + semanticsLabel: semanticsLabel, + semanticsValue: semanticsValue, + ); + + @override + Color? get backgroundColor => super.backgroundColor; + final Function(double progress)? onProgressDrag; + final double? minHeight; + final BorderRadiusGeometry borderRadius; + final double? width; + + @override + State createState() => + _GradientLinearProgressIndicatorState(); +} + +class _GradientLinearProgressIndicatorState + extends State + with AutomaticKeepAliveClientMixin { + List heightMap = []; + ValueNotifier progress = ValueNotifier(0); + final GlobalKey _globalKey = GlobalKey(); + double maxDragOffset = 0; + int numberOfContainers = 0; + + @override + void initState() { + super.initState(); + if (!preserveHeightMap.containsKey(widget.key)) { + Future.delayed( + const Duration(milliseconds: 10), + () { + Map widgetInfo = + UiUtils.getWidgetInfo(context, _globalKey); + maxDragOffset = widgetInfo['width']!; + numberOfContainers = (maxDragOffset / 3).floor(); + heightMap = getRandomHeight(numberOfContainers); + + ///This is to solve pattern change issue ... this will store pattern. + preserveHeightMap[widget.key!] = heightMap; + setState(() {}); + }, + ); + + progress.value = widget.value ?? 0.0; + } else { + heightMap = preserveHeightMap[widget.key!]!; + setState(() {}); + } + } + + @override + void didUpdateWidget(covariant GradientProgressIndicator oldWidget) { + super.didUpdateWidget(oldWidget); + if (widget.value != oldWidget.value) { + progress.value = widget.value ?? 0.0; + } + Map widgetInfo = UiUtils.getWidgetInfo(context, _globalKey); + if (widgetInfo['width'] != maxDragOffset) { + Map widgetInfo = + UiUtils.getWidgetInfo(context, _globalKey); + maxDragOffset = widgetInfo['width']!; + numberOfContainers = (maxDragOffset / 3).floor(); + } + } + + @override + Widget build(BuildContext context) { + super.build(context); + return GestureDetector( + onTapDown: (details) { + double inRange = ConvertNumber.inRange( + currentValue: (details.localPosition).dx.clamp(0, maxDragOffset), + minValue: 0, + maxValue: maxDragOffset, + newMaxValue: 1, + newMinValue: 0); + widget.onProgressDrag?.call(inRange); + progress.value = inRange; + }, + onHorizontalDragUpdate: (DragUpdateDetails details) { + double inRange = ConvertNumber.inRange( + currentValue: (details.localPosition).dx.clamp(0, maxDragOffset), + minValue: 0, + maxValue: maxDragOffset, + newMaxValue: 1, + newMinValue: 0); + progress.value = inRange; + print("HEYYY $details"); + widget.onProgressDrag?.call(inRange); + }, + child: ValueListenableBuilder( + valueListenable: progress, + builder: (context, progressValue, child) { + return SizedBox( + child: Container( + key: _globalKey, + height: widget.minHeight, + child: Row( + children: [ + ...List.generate(heightMap.length, (index) { + double inRange = ConvertNumber.inRange( + currentValue: progressValue.toDouble(), + minValue: 0, + maxValue: 1, + newMaxValue: heightMap.length.toDouble(), + newMinValue: 0); + return Container( + height: heightMap[index], + width: 3, + decoration: BoxDecoration( + color: inRange < index + ? Colors.grey + : context.color.tertiaryColor, + borderRadius: BorderRadius.circular(2)), + ); + }), + ], + ), + ), + ); + }), + ); + } + + List getRandomHeight(int count) { + List _heightMap = []; + + for (int index = 0; index < count; index++) { + double height = Random().nextDouble() * (widget.minHeight ?? 30.0); + _heightMap.add(height); + } + return _heightMap; + } + + @override + // TODO: implement wantKeepAlive + bool get wantKeepAlive => true; +} diff --git a/lib/Ui/screens/ChatNew/MessageTypes/blueprint.dart b/lib/Ui/screens/ChatNew/MessageTypes/blueprint.dart new file mode 100644 index 0000000..cb00f7f --- /dev/null +++ b/lib/Ui/screens/ChatNew/MessageTypes/blueprint.dart @@ -0,0 +1,49 @@ +import 'package:ebroker/Ui/screens/ChatNew/model.dart'; +import 'package:flutter/material.dart'; + +enum MessageSendStatus { progress, success, fail } + +abstract class Message { + abstract String type; + String id = ""; + bool? isSent; + bool isSentByMe = false; + bool isSentNow = false; + ChatMessageModel? message; + BuildContext? context; + + Message(); + + @override + String toString() { + return 'Message{type: $type, id: $id}'; + } + + void init() {} + void dispose() {} + void onRemove() {} + + void setContext(BuildContext context) { + this.context = context; + } + + Widget render(BuildContext context); +} + +class MessageAction { + final String action; + final Message message; + + MessageAction({required this.action, required this.message}); +} + +class MessageId { + final String id; + MessageId(this.id); + factory MessageId.empty(String id) { + return MessageId(id); + } + factory MessageId.senderId(String id) { + return MessageId(id); + } +} diff --git a/lib/Ui/screens/ChatNew/MessageTypes/file_message.dart b/lib/Ui/screens/ChatNew/MessageTypes/file_message.dart new file mode 100644 index 0000000..1b3db90 --- /dev/null +++ b/lib/Ui/screens/ChatNew/MessageTypes/file_message.dart @@ -0,0 +1,163 @@ +// import 'dart:developer'; + +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/blueprint.dart'; +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/text_and_file.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; + +import '../../../../data/cubits/chatCubits/delete_message_cubit.dart'; +import '../../../../data/cubits/chatCubits/send_message.dart'; + +class FileMessage extends Message { + @override + String type = "file"; + List imageExtensions = ["png", "jpg", "jpeg", "webp", "bmp"]; + FileMessage() { + id = DateTime.now().toString(); + } + @override + void init() { + if (isSentNow && isSentByMe && isSent == false) { + context!.read().send( + senderId: HiveUtils.getUserId().toString(), + recieverId: message!.receiverId!, + attachment: message?.file, + message: message!.message!, + proeprtyId: message!.propertyId!, + audio: message?.audio, + ); + } + if (isSentNow == false) { + id = message!.id!; + } + super.init(); + } + + @override + Widget render(context) { + String extension = message!.file!.split(".").last.toString(); + + if (imageExtensions.contains(extension)) { + return ImageAttachmentWidget( + isSentByMe: isSentByMe, + message: message, + onFileSent: () { + isSent = true; + }, + onId: (id) { + this.id = id; + }, + ); + } + + return Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0), + child: fileWidget(context, extension), + ); + } + + @override + void onRemove() { + context! + .read() + .delete(int.parse(id), receiverId: int.parse(message!.receiverId!)); + super.onRemove(); + } + + Widget fileWidget(BuildContext context, String extension) { + return Align( + alignment: isSentByMe ? Alignment.centerRight : Alignment.centerLeft, + child: Column( + crossAxisAlignment: + isSentByMe ? CrossAxisAlignment.end : CrossAxisAlignment.start, + children: [ + Container( + width: context.screenWidth * 0.74, + // height: 65, + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: context.color.borderColor, + width: 1.5, + )), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 65, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 5), + child: Container( + height: 65, + child: Center( + child: Text(extension.toUpperCase()) + .color(context.color.textColorDark) + .size(context.font.small)), + ), + ), + Container( + width: 1.5, + height: 50, + color: context.color.borderColor.darken(10), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 7), + child: Text(message!.file!.split("/").last), + ), + ), + FileDownloadButton( + url: message!.file!, + ), + ], + ), + ), + BlocConsumer( + listener: (context, state) { + if (state is SendMessageSuccess) { + this.id = state.messageId.toString(); + // widget.onId.call(state.messageId.toString()); + // widget.onFileSent.call(); + isSent = true; + } + }, + builder: (context, state) { + if (state is SendMessageInProgress) { + return const Padding( + padding: EdgeInsets.all(2.0), + child: Icon( + Icons.watch_later_outlined, + size: 10, + ), + ); + } + return const SizedBox.shrink(); + }, + ) + ], + ), + ), + const SizedBox( + height: 5, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: Text((DateTime.parse(message!.date!)) + .toLocal() + .toIso8601String() + .toString() + .formatDate(format: "hh:mm aa")) + .size(context.font.smaller) + .color(context.color.textLightColor), + ) + ], + ), + ); + } +} diff --git a/lib/Ui/screens/ChatNew/MessageTypes/registerar.dart b/lib/Ui/screens/ChatNew/MessageTypes/registerar.dart new file mode 100644 index 0000000..ed5a211 --- /dev/null +++ b/lib/Ui/screens/ChatNew/MessageTypes/registerar.dart @@ -0,0 +1,223 @@ +import 'dart:async'; + +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/audio_message.dart'; +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/file_message.dart'; +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/text_and_file.dart'; +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/text_message.dart'; +import 'package:ebroker/Ui/screens/ChatNew/model.dart'; +import 'package:flutter/material.dart'; + +import '../../../../utils/context_menu.dart'; +import 'blueprint.dart'; + +class MessageType { + final List _messageTypes = [ + TextMessage(), + AudioMessage(), + FileMessage(), + FileAndText(), + ]; + + Message? get(String type) { + return _messageTypes.where((element) => element.type == type).first; + } +} + +Message filterMessageType(ChatMessageModel data) { + return MessageType().get(data.chatMessageType!)!; +} + +class ChatMessageHandler { + static final List sentMessageIds = []; + static final List _messages = []; + static BuildContext? messageContext; + static final StreamController _messageStream = + StreamController.broadcast(); + static final StreamController> _allMessageStream = + StreamController>.broadcast(); + + static Stream> listenMessages() { + return _allMessageStream.stream; + } + + static void add(ChatMessageModel data) async { + try { + Message message = filterMessageType(data); + + message.isSentByMe = data.isSentByMe ?? false; + message.isSentNow = data.isSentNow ?? false; + message.message = data; + message.isSent = + data.isSentByMe == true ? sentMessageIds.contains(message.id) : null; + + ///This is to determine which messages are sent..because in flutter reverse list view there is issue of calling initstate of another instance + if (!sentMessageIds.contains(message.id) && + message.isSentByMe && + message.isSentNow) { + sentMessageIds.add(message.id); + } + + ///this is to resolve flutter's strange issue of not calling init state + if (message.type == "audio") { + if (messageContext!.mounted) { + message.setContext(messageContext!); + } + + message.init(); + } + + _messageStream.sink.add(MessageAction(action: "add", message: message)); + } catch (e) {} + } + + static void remove(dynamic id) async { + try { + int messageIndex = _messages.indexWhere((element) { + return element.id == id; + }); + Message deleatableMessage = _messages[messageIndex]; + _messageStream.sink.add(MessageAction( + action: "remove", + message: deleatableMessage, + )); + } catch (e) {} + } + + static void flush() { + _messages.clear(); + } + + static void fillMessages(List messages) { + _messages.addAll(messages); + + ///this will call init state of the audio element when loading which we are not calling in render method so here we have to call it + messages.forEach((element) { + if (element.type == "audio") { + element.init(); + } + }); + _allMessageStream.sink.add(messages); + } + + static void syncMessages() { + _allMessageStream.sink.add(_messages); + } + + static void handle() { + _messageStream.stream.listen( + (MessageAction messageAction) { + if (messageAction.action == "add") { + _messages.insert(0, messageAction.message); + + syncMessages(); + } + if (messageAction.action == "remove") { + messageAction.message.onRemove(); + _messages.remove(messageAction.message); + syncMessages(); + } + }, + ); + } +} + +///This class is using for render changes and +class RenderMessage extends StatefulWidget { + final Message message; + + const RenderMessage({key, required this.message}) : super(key: key); + + @override + MessageRenderState createState() => _RenderMessageState(); +} + +class _RenderMessageState extends MessageRenderState + with AutomaticKeepAliveClientMixin { + Widget? render; + @override + void initState() { + // if (isRendered()) { + + if (context.mounted) { + ChatMessageHandler.messageContext = context; + } + + widget.message.setContext(context); + if (widget.message.type != "audio") { + widget.message.init(); + } + // } + super.initState(); + } + + @override + void didChangeDependencies() { + if (mounted) { + widget.message.setContext(context); + } + + super.didChangeDependencies(); + } + + @override + void dispose() { + widget.message.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + super.build(context); + + return ContextMenuRegion( + contextMenuBuilder: (context, offset) { + return AdaptiveTextSelectionToolbar.buttonItems( + anchors: TextSelectionToolbarAnchors( + primaryAnchor: offset, + ), + buttonItems: [ + if (widget.message.type == "text" || + widget.message.type == "file_and_text") + ContextMenuButtonItem( + type: ContextMenuButtonType.copy, + onPressed: () { + ContextMenuController.removeAny(); + }, + label: + 'Copy${widget.message.type == "file_and_text" ? " Text" : ""}', + ), + if (widget.message.isSentByMe) + ContextMenuButtonItem( + type: ContextMenuButtonType.delete, + onPressed: () { + ChatMessageHandler.remove(widget.message.id); + + ContextMenuController.removeAny(); + }, + label: 'Delete', + ), + ], + ); + }, + child: Builder(builder: (ctx) { + return widget.message.render(context); + }), + ); + } + + @override + // TODO: implement wantKeepAlive + bool get wantKeepAlive => true; +} + +abstract class MessageRenderState extends State { + static List renderedMessage = []; + bool isRendered() { + if (renderedMessage.contains(this.widget.key)) { + return true; + } else { + renderedMessage.add(this.widget.key); + return false; + } + } +} diff --git a/lib/Ui/screens/ChatNew/MessageTypes/text_and_file.dart b/lib/Ui/screens/ChatNew/MessageTypes/text_and_file.dart new file mode 100644 index 0000000..e473ac4 --- /dev/null +++ b/lib/Ui/screens/ChatNew/MessageTypes/text_and_file.dart @@ -0,0 +1,478 @@ +import 'dart:developer'; +import 'dart:io'; +import 'dart:ui'; + +import 'package:dio/dio.dart'; +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/blueprint.dart'; +import 'package:ebroker/Ui/screens/ChatNew/model.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:open_filex/open_filex.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:permission_handler/permission_handler.dart'; + +import '../../../../data/cubits/chatCubits/delete_message_cubit.dart'; +import '../../../../data/cubits/chatCubits/send_message.dart'; +import '../../../../utils/helper_utils.dart'; + +class FileAndText extends Message { + @override + String type = "file_and_text"; + + List imageExtensions = ["png", "jpg", "jpeg", "webp", "bmp"]; + + @override + void init() { + if (isSentNow && isSentByMe && isSent == false) { + context!.read().send( + senderId: HiveUtils.getUserId().toString(), + recieverId: message!.receiverId!, + attachment: message?.file, + message: message!.message!, + proeprtyId: message!.propertyId!, + audio: message?.audio, + ); + } + super.init(); + } + + @override + void onRemove() { + context! + .read() + .delete(int.parse(id), receiverId: int.parse(message!.receiverId!)); + super.onRemove(); + } + + @override + render(context) { + String extension = message!.file!.split(".").last.toString(); + + if (imageExtensions.contains(extension)) { + return ImageAttachmentWidget( + isSentByMe: isSentByMe, + message: message, + onFileSent: () { + isSent = true; + }, + onId: (id) { + this.id = id; + }, + ); + } + + return Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0), + child: Align( + alignment: isSentByMe ? Alignment.centerRight : Alignment.centerLeft, + child: Column( + crossAxisAlignment: + isSentByMe ? CrossAxisAlignment.end : CrossAxisAlignment.start, + children: [ + Container( + width: context.screenWidth * 0.74, + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: context.color.borderColor, + width: 1.5, + )), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 65, + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 5), + child: Container( + height: 65, + child: Center( + child: Text(extension.toUpperCase()) + .color(context.color.textColorDark) + .size(context.font.small)), + ), + ), + Container( + width: 1.5, + height: 50, + color: context.color.borderColor.darken(10), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 7), + child: Text(message!.file!.split("/").last), + ), + ), + FileDownloadButton( + url: message!.file!, + ), + ], + ), + ), + if (message?.message != null && + message!.message!.isNotEmpty) ...[ + const Divider(), + Padding( + padding: + const EdgeInsets.only(bottom: 8, right: 8, left: 8), + child: Text(message!.message!), + ) + ], + BlocConsumer( + listener: (context, state) { + if (state is SendMessageSuccess) { + this.id = state.messageId.toString(); + // widget.onId.call(state.messageId.toString()); + // widget.onFileSent.call(); + isSent = true; + } + }, + builder: (context, state) { + if (state is SendMessageInProgress) { + return const Padding( + padding: EdgeInsets.all(2.0), + child: Icon( + Icons.watch_later_outlined, + size: 10, + ), + ); + } + return const SizedBox.shrink(); + }, + ) + ], + ), + ), + const SizedBox( + height: 5, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: Text((DateTime.parse(message!.date!)) + .toLocal() + .toIso8601String() + .toString() + .formatDate(format: "hh:mm aa")) + .size(context.font.smaller) + .color(context.color.textLightColor), + ) + ], + ), + ), + ); + } +} + +class FileDownloadButton extends StatefulWidget { + final String url; + const FileDownloadButton({super.key, required this.url}); + + @override + State createState() => _FileDownloadButtonState(); +} + +class _FileDownloadButtonState extends State { + final ValueNotifier _progressNotifier = ValueNotifier(0); + @override + Widget build(BuildContext context) { + return ValueListenableBuilder( + valueListenable: _progressNotifier, + builder: (context, value, child) { + if (value != 0 && value != 1) { + return Padding( + padding: const EdgeInsets.all(10.0), + child: SizedBox( + width: 20, + height: 20, + child: CircularProgressIndicator( + value: value, + color: context.color.tertiaryColor, + ), + ), + ); + } + + return IconButton( + onPressed: () { + downloadFile(); + }, + icon: const Icon(Icons.download)); + }); + } + + String getExtentionOfFile() { + return widget.url.toString().split(".").last; + } + + String getFileName() { + return widget.url.toString().split("/").last; + } + + Future downloadFile() async { + try { + String? downloadPath = await getDownloadPath(); + await Dio().download( + widget.url, + "${downloadPath!}/${getFileName()}", + onReceiveProgress: (int count, int total) async { + _progressNotifier.value = (count) / total; + if (_progressNotifier.value == 1) { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "fileSavedIn"), + type: MessageType.success); + + await OpenFilex.open("$downloadPath/${getFileName()}"); + } + setState(() {}); + }, + ); + } catch (e) { + print("Download Error is: $e"); + + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "errorFileSave"), + type: MessageType.success); + } + } + + Future getDownloadPath() async { + Directory? directory; + try { + if (Platform.isIOS) { + directory = await getApplicationDocumentsDirectory(); + } else { + directory = Directory('/storage/emulated/0/Download'); + // Put file in global download folder, if for an unknown reason it didn't exist, we fallback + // ignore: avoid_slow_async_io + if (!await directory.exists()) { + directory = await getExternalStorageDirectory(); + } + } + } catch (err) { + if (kDebugMode) { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "fileNotSaved"), + type: MessageType.success); + } + } + return directory?.path; + } +} + +class ImageAttachmentWidget extends StatefulWidget { + final Function(String id) onId; + final Function() onFileSent; + const ImageAttachmentWidget({ + super.key, + required this.isSentByMe, + required this.message, + required this.onId, + required this.onFileSent, + }); + + final bool isSentByMe; + final ChatMessageModel? message; + + @override + State createState() => _ImageAttachmentWidgetState(); +} + +class _ImageAttachmentWidgetState extends State { + bool isFileDownloading = false; + double persontage = 0; + String getExtentionOfFile() { + return widget.message!.file.toString().split(".").last; + } + + String getFileName() { + return widget.message!.file.toString().split("/").last; + } + + Future downloadFile() async { + try { + if (!(await Permission.storage.isGranted)) { + await Permission.storage.request(); + HelperUtils.showSnackBarMessage( + context, "Please give storage permission"); + + return; + } + + String? downloadPath = await HelperUtils.getDownloadPath( + onError: (err) { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "fileNotSaved"), + type: MessageType.success); + }, + ); + await Dio().download( + widget.message!.file!, + "${downloadPath!}/${getFileName()}", + onReceiveProgress: (int count, int total) async { + persontage = (count) / total; + + if (persontage == 1) { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "fileSavedIn"), + type: MessageType.success); + + await OpenFilex.open("$downloadPath/${getFileName()}"); + } + setState(() {}); + }, + ); + } catch (e) { + print("Download Error is: $e"); + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "errorFileSave"), + type: MessageType.success); + } + } + + @override + Widget build(BuildContext context) { + bool isLocalFile = widget.message!.file!.startsWith("/data/user/0/"); + + return Align( + alignment: + widget.isSentByMe ? Alignment.centerRight : Alignment.centerLeft, + child: Column( + crossAxisAlignment: widget.isSentByMe + ? CrossAxisAlignment.end + : CrossAxisAlignment.start, + children: [ + Container( + margin: const EdgeInsets.symmetric(vertical: 10), + width: context.screenWidth * 0.74, + // height: context.screenHeight * 0.4, + constraints: BoxConstraints(minHeight: context.screenHeight * 0.4), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: context.color.secondaryColor, + border: Border.all(color: context.color.borderColor, width: 1.5), + ), + padding: const EdgeInsets.all(5), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: context.screenHeight * 0.4, + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: GestureDetector( + onTap: () { + FileImage fileImage = + FileImage(File(widget.message!.file!)); + NetworkImage networkImage = + NetworkImage(widget.message!.file!); + + late ImageProvider image; + if (isLocalFile) { + image = fileImage; + } else { + image = networkImage; + } + + UiUtils.showFullScreenImage( + context, + downloadOption: true, + provider: image, + ); + }, + child: isLocalFile + ? BlurredImage( + image: FileImage(File(widget.message!.file!)), + ) + : BlurredImage( + image: NetworkImage(widget.message!.file!), + ), + ), + ), + ), + if (widget.message!.message != "" && + widget.message!.message != "[File]") + Padding( + padding: + const EdgeInsets.symmetric(vertical: 5, horizontal: 2), + child: Text("${widget.message?.message ?? ""}"), + ), + BlocConsumer( + listener: (context, state) { + if (state is SendMessageSuccess) { + log("message senttt ${state.messageId}"); + // this.id = state.messageId.toString(); + widget.onId.call(state.messageId.toString()); + widget.onFileSent.call(); + } + }, + builder: (context, state) { + if (state is SendMessageInProgress) { + return const Padding( + padding: EdgeInsets.all(2.0), + child: Icon( + Icons.watch_later_outlined, + size: 10, + ), + ); + } + return const SizedBox.shrink(); + }, + ) + ], + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: Text((DateTime.parse(widget.message!.date!)) + .toLocal() + .toIso8601String() + .toString() + .formatDate(format: "hh:mm aa")) + .size(context.font.smaller) + .color(context.color.textLightColor), + ) + ], + ), + ); + } +} + +class BlurredImage extends StatelessWidget { + final ImageProvider image; + const BlurredImage({super.key, required this.image}); + + @override + Widget build(BuildContext context) { + return Container( + child: Stack( + fit: StackFit.expand, + children: [ + Image(image: image, fit: BoxFit.cover), + Container( + height: 220, + width: 150, + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 6, sigmaY: 5), + child: Container( + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + color: Colors.black.withOpacity(0.2), + ), + ), + ), + ), + Image( + image: image, + ) + ], + )); + } +} diff --git a/lib/Ui/screens/ChatNew/MessageTypes/text_message.dart b/lib/Ui/screens/ChatNew/MessageTypes/text_message.dart new file mode 100644 index 0000000..b369a00 --- /dev/null +++ b/lib/Ui/screens/ChatNew/MessageTypes/text_message.dart @@ -0,0 +1,139 @@ +import 'dart:developer'; + +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/blueprint.dart'; +import 'package:ebroker/data/cubits/chatCubits/delete_message_cubit.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; + +import '../../../../data/cubits/chatCubits/send_message.dart'; +import '../../../../exports/main_export.dart'; + +class TextMessage extends Message { + TextMessage() { + id = DateTime.now().toString(); + } + @override + void init() { + if (isSentNow && isSentByMe && isSent == false) { + context?.read().send( + senderId: HiveUtils.getUserId().toString(), + recieverId: message!.receiverId!, + attachment: message?.file, + message: message!.message!, + proeprtyId: message!.propertyId!, + audio: message?.audio, + ); + } + + ///if this message is not sent now so it will set id from server + if (isSentNow == false) { + id = message!.id!; + } + + super.init(); + } + + @override + void onRemove() async { + context! + .read() + .delete(int.parse(id), receiverId: int.parse(message!.receiverId!)); + + super.onRemove(); + } + + @override + Widget render(context) { + Color messageColor = context.color.textColorDark; + if (isSentByMe) { + messageColor = context.color.brightness == Brightness.light + ? context.color.textColorDark + : Colors.black; + } + + return Align( + alignment: isSentByMe ? Alignment.centerRight : Alignment.centerLeft, + child: Container( + margin: const EdgeInsets.symmetric(vertical: 10), + child: Column( + crossAxisAlignment: + isSentByMe ? CrossAxisAlignment.end : CrossAxisAlignment.start, + children: [ + Container( + constraints: BoxConstraints(maxWidth: context.screenWidth * 0.74), + decoration: isSentByMe + ? getSentByMeDecoration(context) + : getOtherUserDecoration(context), + // color: isSentByMe ? Color(0xffEEEEEE) : context.color.secondaryColor, + child: Row( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Padding( + padding: const EdgeInsets.all(12.0), + child: Text(message?.message ?? "") + .size(context.font.normal) + .color(messageColor), + ), + BlocConsumer( + listener: (context, state) { + if (state is SendMessageSuccess) { + log("message senttt ${state.messageId}"); + this.id = state.messageId.toString(); + isSent = true; + } + }, + builder: (context, state) { + if (state is SendMessageInProgress) { + return const Padding( + padding: EdgeInsets.all(2.0), + child: Icon( + Icons.watch_later_outlined, + size: 10, + ), + ); + } + return const SizedBox.shrink(); + }, + ) + ], + ), + ), + const SizedBox( + height: 5, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: Text((DateTime.parse(message!.date!)) + .toLocal() + .toIso8601String() + .toString() + .formatDate(format: "hh:mm aa")) + .size(context.font.smaller) + .color(context.color.textLightColor), + ) + ], + ), + ), + ); + } + + BoxDecoration getSentByMeDecoration(BuildContext context) { + return BoxDecoration( + color: const Color(0xffEEEEEE), + borderRadius: BorderRadius.circular(8), + border: Border.all(color: context.color.borderColor, width: 1.5)); + } + + BoxDecoration getOtherUserDecoration(BuildContext context) { + return BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(8), + border: Border.all(color: context.color.borderColor, width: 1.5), + ); + } + + @override + String type = "text"; +} diff --git a/lib/Ui/screens/ChatNew/model.dart b/lib/Ui/screens/ChatNew/model.dart new file mode 100644 index 0000000..4a5042f --- /dev/null +++ b/lib/Ui/screens/ChatNew/model.dart @@ -0,0 +1,119 @@ +import 'dart:math'; + +class ChatMessageModel { + String? id; + bool? isSentByMe; + bool? isSentNow; + + String? date; + + String? propertyTitleImage; + String? timeAgo; + String? receiverId; + String? sound; + String? userProfile; + String? body; + String? title; + String? clickAction; + String? message; + String? senderId; + String? propertyId; + String? file; + String? chatMessageType; + String? audio; + String? username; + + ChatMessageModel( + {this.date, + this.id, + this.isSentByMe, + this.isSentNow, + this.propertyTitleImage, + this.timeAgo, + this.receiverId, + this.sound, + this.userProfile, + this.body, + this.title, + this.clickAction, + this.message, + this.senderId, + this.propertyId, + this.file, + this.chatMessageType, + this.audio, + this.username}); + + ChatMessageModel.fromJson(Map json) { + id = json['id'].toString(); + isSentByMe = json['isSentByMe'] ?? false; + isSentNow = json['isSentNow'] ?? false; + date = json['date']; + propertyTitleImage = json['property_title_image']; + timeAgo = json['time_ago']; + receiverId = json['receiver_id'].toString(); + sound = json['sound']; + + userProfile = json['user_profile']; + body = json['body']; + title = json['title']; + clickAction = json['click_action']; + message = json['message']; + senderId = json['sender_id'].toString(); + + propertyId = json['property_id'].toString(); + file = json['file']; + chatMessageType = json['type']; + audio = json['audio']; + username = json['username']; + } + + Map toJson() { + final Map data = {}; + + data['date'] = date; + + data['id'] = id; + + data['isSentNow'] = isSentNow; + data['isSentByMe'] = isSentByMe; + data['property_title_image'] = propertyTitleImage; + data['time_ago'] = timeAgo; + data['receiver_id'] = receiverId; + data['sound'] = sound; + data['user_profile'] = userProfile; + data['body'] = body; + data['title'] = title; + data['click_action'] = clickAction; + data['message'] = message; + data['sender_id'] = senderId; + data['property_id'] = propertyId; + data['file'] = file; + data['chat_message_type'] = chatMessageType; + data['audio'] = audio; + data['username'] = username; + return data; + } + + void setId(String id) { + this.id = id; + } + + void setIsSentByMe(bool value) { + isSentByMe = value; + } + + void setIsSentNow(bool value) { + isSentNow = value; + } + + @override + String toString() { + return 'ChatMessageModel{date: $date,sentByMe:$isSentByMe, sentNow:$isSentNow id:$id, propertyTitleImage: $propertyTitleImage, timeAgo: $timeAgo, receiverId: $receiverId, sound: $sound, userProfile: $userProfile, body: $body,title: $title, clickAction: $clickAction, message: $message, senderId: $senderId, propertyId: $propertyId, file: $file, chatMessageType: $chatMessageType, audio: $audio, username: $username}'; + } +} + +String generateUniqueId() { + // Implement a logic to generate a unique identifier (timestamp + random value) + return "${DateTime.now().millisecondsSinceEpoch}-${Random().nextInt(1000)}"; +} diff --git a/lib/Ui/screens/Converter/area_converter.dart b/lib/Ui/screens/Converter/area_converter.dart new file mode 100644 index 0000000..4440a36 --- /dev/null +++ b/lib/Ui/screens/Converter/area_converter.dart @@ -0,0 +1,231 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/area_converter.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/custom_text_form_field.dart'; + +class AreaCalculator extends StatefulWidget { + const AreaCalculator({super.key}); + static Route route(RouteSettings settings) { + return BlurredRouter( + builder: (context) { + return const AreaCalculator(); + }, + ); + } + + @override + State createState() => _AreaCalculatorState(); +} + +class _AreaCalculatorState extends State { + List values = UnitTypes.values.map((e) => e.name).toList(); + + late final ValueNotifier _from = ValueNotifier(values[0]); + late final ValueNotifier _to = ValueNotifier(values[1]); + + final TextEditingController _fromTextController = TextEditingController(); + final TextEditingController _toTextController = TextEditingController(); + final TextEditingController _resultController = + TextEditingController(text: "00"); + + @override + void dispose() { + _from.dispose(); + _to.dispose(); + _fromTextController.dispose(); + _resultController.dispose(); + _toTextController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.primaryColor, + appBar: UiUtils.buildAppBar(context, + showBackButton: true, + title: UiUtils.translate(context, "areaConvertor")), + body: Padding( + padding: const EdgeInsets.all(010.0), + child: Container( + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(10)), + width: context.screenWidth, + child: Padding( + padding: const EdgeInsets.all(15.0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 15.rh(context), + ), + Text("${UiUtils.translate(context, "convert")} ${_placeSpaceBeforeCapital(_from.value)} to ${_placeSpaceBeforeCapital(_to.value)}") + .size(context.font.large) + .color(context.color.textColorDark), + SizedBox( + height: 3.rh(context), + ), + const Text("Enter the value and select desired unit") + .size(context.font.small) + .color(context.color.textLightColor), + SizedBox( + height: 15.rh(context), + ), + ValueListenableBuilder( + valueListenable: _from, + builder: (context, value, child) { + return buildField( + context, + controller: _fromTextController, + value: value, + hint: "from", + valueListanable: _from, + ); + }), + SizedBox( + height: 15.rh(context), + ), + ValueListenableBuilder( + valueListenable: _to, + builder: (context, value, child) { + return buildField( + context, + controller: _toTextController, + isReadOnly: true, + value: value, + hint: "to", + valueListanable: _to, + ); + }), + SizedBox( + height: 20.rh(context), + ), + CustomTextFormField( + isReadOnly: true, + controller: _resultController, + fillColor: context.color.textColorDark.withOpacity(0.03), + ), + SizedBox( + height: 20.rh(context), + ), + UiUtils.buildButton(context, onPressed: () { + if (_fromTextController.text.isEmpty) { + return; + } + + var convert = AreaConverter().convert( + num.parse(_fromTextController.text), + from: getEnum(_from.value), + to: getEnum(_to.value)); + + _toTextController.text = convert.toString(); + + _resultController.text = + "${_fromTextController.text} ${_placeSpaceBeforeCapital(_from.value)} = $convert ${_placeSpaceBeforeCapital(_to.value)}"; + }, buttonTitle: UiUtils.translate(context, "convert")) + ], + ), + ), + ), + ), + ); + } + + Widget buildField( + BuildContext context, { + required dynamic value, + required ValueNotifier valueListanable, + bool? isReadOnly, + String? hint, + required TextEditingController controller, + }) { + return Container( + decoration: BoxDecoration( + color: context.color.textColorDark.withOpacity(0.03), + border: Border.all(width: 1.5, color: context.color.borderColor), + borderRadius: BorderRadius.circular(10), + ), + height: 55.rh(context), + width: context.screenWidth, + child: buildConvertTextFieldWithDropdown(context, + hint: hint, + controller: controller, + isReadOnly: isReadOnly, onChange: (value) { + valueListanable.value = value; + }, value: value), + ); + } + + Widget buildConvertTextFieldWithDropdown(BuildContext context, + {required Function(dynamic value) onChange, + String? hint, + bool? isReadOnly, + required TextEditingController controller, + dynamic value}) { + return Row( + children: [ + const SizedBox( + width: 15, + ), + Expanded( + child: TextField( + controller: controller, + readOnly: isReadOnly ?? false, + keyboardType: TextInputType.number, + inputFormatters: [ + FilteringTextInputFormatter.allow(RegExp(r'^\d+\.?\d*')) + ], + decoration: InputDecoration( + border: InputBorder.none, + hintText: UiUtils.translate(context, hint ?? "")), + )), + VerticalDivider( + color: context.color.textColorDark, + endIndent: 5, + indent: 5, + ), + Expanded( + child: DropdownButton( + value: value, + isExpanded: true, + underline: const SizedBox.shrink(), + items: List.generate(values.length, (index) { + return DropdownMenuItem( + value: values[index], + child: Text(_placeSpaceBeforeCapital(values[index])), + ); + }), + onChanged: (value) { + onChange.call(value); + setState(() {}); + }, + ), + ) + ], + ); + } + + String _placeSpaceBeforeCapital(String value) { +// if(value=="Square feet") + + if (value == "squareMeter") { + return "Sq. m"; + } + if (value == "squareFeet") { + return "Sq. ft"; + } + return value.toString().replaceAllMapped( + RegExp(r'[A-Z]'), + (match) { + return " ${value[match.start]}"; + }, + ).firstUpperCase(); + } +} diff --git a/lib/Ui/screens/Dashboard/Cubits/property_list_cubit_dashboard.dart b/lib/Ui/screens/Dashboard/Cubits/property_list_cubit_dashboard.dart new file mode 100644 index 0000000..3b178a1 --- /dev/null +++ b/lib/Ui/screens/Dashboard/Cubits/property_list_cubit_dashboard.dart @@ -0,0 +1,54 @@ +import 'package:ebroker/data/model/data_output.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../Models/dashboard_property.dart' as p; +import '../Repository/dashboard_repository.dart'; + +abstract class DashboardPropertyListState {} + +class DashboardPropertyListInitial extends DashboardPropertyListState {} + +class DashboardPropertyListInProgress extends DashboardPropertyListState {} + +class DashboardPropertyListSuccess extends DashboardPropertyListState { + final List list; + final int total; + final int offset; + final bool isLoadingMore; + final bool hasError; + + DashboardPropertyListSuccess({ + required this.list, + required this.total, + required this.offset, + required this.isLoadingMore, + required this.hasError, + }); +} + +class DashboardPropertyListFailiur extends DashboardPropertyListState { + final dynamic error; + DashboardPropertyListFailiur(this.error); +} + +class DashboardPropertyListCubit extends Cubit { + DashboardPropertyListCubit() : super(DashboardPropertyListInitial()); + final DashboardRepositoryIMPL _repositoryIMPL = DashboardRepositoryIMPL(); + void fetch(DashboardPropertyParameters parameters) async { + try { + emit(DashboardPropertyListInProgress()); + + DataOutput dataOutput = + await _repositoryIMPL.fetch(parameters, Parameter(0)); + + emit(DashboardPropertyListSuccess( + hasError: false, + isLoadingMore: false, + list: dataOutput.modelList, + total: dataOutput.total, + offset: 0)); + } catch (e) { + emit(DashboardPropertyListFailiur(e)); + } + } +} diff --git a/lib/Ui/screens/Dashboard/Models/dashboard_property.dart b/lib/Ui/screens/Dashboard/Models/dashboard_property.dart new file mode 100644 index 0000000..a2a063a --- /dev/null +++ b/lib/Ui/screens/Dashboard/Models/dashboard_property.dart @@ -0,0 +1,568 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first, unused_import +// To parse this JSON data, do +// +// final DashboardPropertyModal = DashboardPropertyModalFromMap(jsonString); +import 'dart:convert'; +import 'dart:developer'; + +import 'package:ebroker/utils/Extensions/lib/adaptive_type.dart'; +import 'package:ebroker/utils/Extensions/lib/string.dart'; + +class DashboardPropertyModal { + DashboardPropertyModal( + {this.id, + this.title, + this.customerName, + this.customerEmail, + this.customerNumber, + this.customerProfile, + this.price, + this.category, + this.builtUpArea, + this.plotArea, + this.hectaArea, + this.acre, + this.houseType, + this.furnished, + this.unitType, + this.description, + this.address, + this.clientAddress, + this.properyType, + this.titleImage, + this.postCreated, + this.gallery, + this.totalView, + this.status, + this.state, + this.city, + this.country, + this.addedBy, + this.inquiry, + this.promoted, + this.isFavourite, + this.rentduration, + this.isInterested, + this.favouriteUsers, + this.interestedUsers, + this.totalInterestedUsers, + this.totalFavouriteUsers, + this.parameters, + this.latitude, + this.longitude, + this.threeDImage, + this.advertisment, + this.video, + this.assignedOutdoorFacility, + this.titleimagehash}); + + final int? id; + final String? title; + final String? price; + final String? customerName; + final String? customerEmail; + final String? customerProfile; + final String? customerNumber; + final String? rentduration; + final Categorys? category; + final dynamic builtUpArea; + final dynamic plotArea; + final dynamic hectaArea; + final dynamic acre; + final dynamic houseType; + final dynamic furnished; + final UnitType? unitType; + final String? description; + final String? address; + final String? clientAddress; + String? properyType; + final String? titleImage; + final String? titleimagehash; + final String? postCreated; + final List? gallery; + final int? totalView; + final int? status; + final String? state; + final String? city; + final String? country; + final int? addedBy; + final bool? inquiry; + final bool? promoted; + final int? isFavourite; + final int? isInterested; + final List? favouriteUsers; + final List? interestedUsers; + final int? totalInterestedUsers; + final int? totalFavouriteUsers; + final List? parameters; + final List? assignedOutdoorFacility; + final String? latitude; + final String? longitude; + final String? threeDImage; + final String? video; + final dynamic advertisment; + DashboardPropertyModal copyWith( + {int? id, + String? title, + String? price, + Categorys? category, + dynamic builtUpArea, + dynamic plotArea, + dynamic hectaArea, + dynamic acre, + dynamic houseType, + dynamic furnished, + UnitType? unitType, + String? description, + String? address, + String? clientAddress, + String? properyType, + String? titleImage, + String? postCreated, + List? gallery, + int? totalView, + int? status, + String? state, + String? city, + String? country, + int? addedBy, + bool? inquiry, + bool? promoted, + int? isFavourite, + int? isInterested, + List? favouriteUsers, + List? interestedUsers, + int? totalInterestedUsers, + int? totalFavouriteUsers, + List? parameters, + List? assignedOutdoorFacility, + String? latitude, + String? longitude, + String? threeDimage, + String? video, + dynamic advertisment, + String? rentduration, + String? titleImageHash}) => + DashboardPropertyModal( + id: id ?? this.id, + rentduration: rentduration ?? this.rentduration, + advertisment: advertisment ?? this.advertisment, + latitude: latitude ?? this.latitude, + longitude: longitude ?? this.longitude, + title: title ?? this.title, + price: price ?? this.price, + category: category ?? this.category, + builtUpArea: builtUpArea ?? this.builtUpArea, + plotArea: plotArea ?? this.plotArea, + hectaArea: hectaArea ?? this.hectaArea, + acre: acre ?? this.acre, + houseType: houseType ?? this.houseType, + furnished: furnished ?? this.furnished, + unitType: unitType ?? this.unitType, + description: description ?? this.description, + address: address ?? this.address, + clientAddress: clientAddress ?? this.clientAddress, + properyType: properyType ?? this.properyType, + titleImage: titleImage ?? this.titleImage, + postCreated: postCreated ?? this.postCreated, + gallery: gallery ?? this.gallery, + totalView: totalView ?? this.totalView, + status: status ?? this.status, + state: state ?? this.state, + city: city ?? this.city, + country: country ?? this.country, + addedBy: addedBy ?? this.addedBy, + inquiry: inquiry ?? this.inquiry, + promoted: promoted ?? this.promoted, + isFavourite: isFavourite ?? this.isFavourite, + isInterested: isInterested ?? this.isInterested, + favouriteUsers: favouriteUsers ?? this.favouriteUsers, + interestedUsers: interestedUsers ?? this.interestedUsers, + totalInterestedUsers: + totalInterestedUsers ?? this.totalInterestedUsers, + totalFavouriteUsers: totalFavouriteUsers ?? this.totalFavouriteUsers, + parameters: parameters ?? this.parameters, + threeDImage: threeDimage ?? threeDImage, + video: video ?? this.video, + assignedOutdoorFacility: + assignedOutdoorFacility ?? this.assignedOutdoorFacility, + titleimagehash: titleImageHash ?? titleimagehash); + + factory DashboardPropertyModal.fromMap(Map json) { + "PROPERTY DATA:$json".log; + + return DashboardPropertyModal( + id: json["id"], + rentduration: json['rentduration'], + customerEmail: json['email'], + customerProfile: json['profile'], + customerNumber: json['mobile'], + customerName: json['customer_name'], + video: json['video_link'], + threeDImage: json['threeD_image'], + latitude: json['latitude'].toString(), + longitude: json["longitude"].toString(), + title: json["title"].toString(), + price: json["price"].toString(), + category: json["category"] == null + ? null + : Categorys.fromMap(json["category"]), + builtUpArea: json["built_up_area"], + plotArea: json["plot_area"], + hectaArea: json["hecta_area"], + acre: json["acre"], + houseType: json["house_type"], + furnished: json["furnished"], + advertisment: json['advertisement'], + unitType: json["unit_type"] == null + ? null + : UnitType.fromMap(json["unit_type"]), + description: json["description"], + address: json["address"], + clientAddress: json["client_address"], + properyType: json["property_type"].toString(), + titleImage: json["title_image"], + postCreated: json["post_created"], + gallery: List.from( + (json["gallery"] as List).map((x) => Gallery.fromMap(x))), + totalView: Adapter.forceInt((json["total_view"] as dynamic)), + status: Adapter.forceInt(json["status"]), + state: json["state"], + city: json["city"], + country: json["country"], + addedBy: Adapter.forceInt((json["added_by"] as dynamic)), + inquiry: json["inquiry"], + promoted: json["promoted"], + isFavourite: Adapter.forceInt(json["is_favourite"]), + isInterested: Adapter.forceInt(json["is_interested"]), + favouriteUsers: json["favourite_users"] == null + ? null + : List.from(json["favourite_users"].map((x) => x)), + interestedUsers: json["interested_users"] == null + ? null + : List.from(json["interested_users"].map((x) => x)), + totalInterestedUsers: Adapter.forceInt(json["total_interested_users"]), + totalFavouriteUsers: Adapter.forceInt(json["total_favourite_users"]), + parameters: json["parameters"] == null + ? [] + : List.from((json["parameters"] as List).map((x) { + return Parameter.fromMap(x); + })), + assignedOutdoorFacility: json["assign_facilities"] == null + ? [] + : List.from( + (json["assign_facilities"] as List).map((x) { + return AssignedOutdoorFacility.fromJson(x); + })), + titleimagehash: json['title_image_hash']); + } + + Map toMap() => { + "id": id, + "rentduration": rentduration, + "mobile": customerNumber, + "email": customerEmail, + "customer_name": customerName, + "profile": customerProfile, + "threeD_image": threeDImage, + "title": title, + "latitude": latitude, + "longitude": longitude, + "advertisment": advertisment, + 'video_link': video, + "price": price, + "category": category?.toMap() ?? {}, + "built_up_area": builtUpArea, + "plot_area": plotArea, + "hecta_area": hectaArea, + "acre": acre, + "house_type": houseType, + "furnished": furnished, + "unit_type": unitType?.toMap() ?? {}, + "description": description, + "address": address, + "client_address": clientAddress, + "property_type": properyType, + "title_image": titleImage, + "post_created": postCreated, + "gallery": List.from(gallery?.map((x) => x) ?? []), + "total_view": totalView, + "status": status, + "state": state, + "city": city, + "country": country, + "added_by": addedBy, + "inquiry": inquiry, + "promoted": promoted, + "is_favourite": isFavourite, + "is_interested": isInterested, + "favourite_users": favouriteUsers == null + ? null + : List.from(favouriteUsers?.map((x) => x) ?? []), + "interested_users": interestedUsers == null + ? null + : List.from(interestedUsers?.map((x) => x) ?? []), + "total_interested_users": totalInterestedUsers, + "total_favourite_users": totalFavouriteUsers, + "assign_facilities": assignedOutdoorFacility == null + ? null + : List.from( + assignedOutdoorFacility?.map((e) => e.toJson()) ?? []), + "parameters": parameters == null + ? null + : List.from(parameters?.map((x) => x.toMap()) ?? []), + "title_image_hash": titleimagehash + }; + + @override + String toString() { + return 'DashboardPropertyModal(id: $id,rentduration:$rentduration , title: $title,assigned_facilities:[$assignedOutdoorFacility] advertisment:$advertisment, price: $price, category: $category,, builtUpArea: $builtUpArea, plotArea: $plotArea, hectaArea: $hectaArea, acre: $acre, houseType: $houseType, furnished: $furnished, unitType: $unitType, description: $description, address: $address, clientAddress: $clientAddress, properyType: $properyType, titleImage: $titleImage, title_image_hash: $titleimagehash, postCreated: $postCreated, gallery: $gallery, totalView: $totalView, status: $status, state: $state, city: $city, country: $country, addedBy: $addedBy, inquiry: $inquiry, promoted: $promoted, isFavourite: $isFavourite, isInterested: $isInterested, favouriteUsers: $favouriteUsers, interestedUsers: $interestedUsers, totalInterestedUsers: $totalInterestedUsers, totalFavouriteUsers: $totalFavouriteUsers, parameters: $parameters, latitude: $latitude, longitude: $longitude, threeD_image: $threeDImage, video: $video)'; + } +} + +class Categorys { + Categorys({ + this.id, + this.category, + this.image, + }); + + final int? id; + final String? category; + final String? image; + + Categorys copyWith({ + int? id, + String? category, + String? image, + }) => + Categorys( + id: id ?? this.id, + category: category ?? this.category, + image: image ?? this.image, + ); + + factory Categorys.fromJson(String str) => Categorys.fromMap(json.decode(str)); + + String toJson() => json.encode(toMap()); + + factory Categorys.fromMap(Map json) => Categorys( + id: json["id"], + category: json["category"], + image: json["image"], + ); + + Map toMap() => { + "id": id, + "category": category, + "image": image, + }; +} + +class Parameter { + Parameter({ + this.id, + this.name, + this.typeOfParameter, + this.typeValues, + this.image, + this.value, + }); + + final int? id; + final String? name; + final String? typeOfParameter; + final dynamic typeValues; + final String? image; + final dynamic value; + + Parameter copyWith({ + int? id, + String? name, + String? typeOfParameter, + dynamic typeValues, + String? image, + dynamic value, + }) => + Parameter( + id: id ?? this.id, + name: name ?? this.name, + typeOfParameter: typeOfParameter ?? this.typeOfParameter, + typeValues: typeValues ?? this.typeValues, + image: image ?? this.image, + value: value ?? this.value, + ); + + static dynamic ifListConvertToString(dynamic value) { + if (value is List) { + return value.join(","); + } + return value; + } + + factory Parameter.fromMap(Map json) { + return Parameter( + id: json["id"], + name: json["name"], + typeOfParameter: json["type_of_parameter"], + typeValues: json["type_values"], + image: json["image"], + value: ifListConvertToString(json['value']), + ); + } + + Map toMap() => { + "id": id, + "name": name, + "type_of_parameter": typeOfParameter, + "type_values": typeValues, + "image": image, + "value": value, + }; + + @override + String toString() { + return 'Parameter(id: $id, name: $name, typeOfParameter: $typeOfParameter, typeValues: $typeValues, image: $image, value: $value)'; + } +} + +class UnitType { + UnitType({ + this.id, + this.measurement, + }); + + final int? id; + final String? measurement; + + UnitType copyWith({ + int? id, + String? measurement, + }) => + UnitType( + id: id ?? this.id, + measurement: measurement ?? this.measurement, + ); + + factory UnitType.fromJson(String str) => UnitType.fromMap(json.decode(str)); + + String toJson() => json.encode(toMap()); + + factory UnitType.fromMap(Map json) => UnitType( + id: json["id"], + measurement: json["measurement"], + ); + + Map toMap() => { + "id": id, + "measurement": measurement, + }; +} + +class Gallery { + final int id; + final String image; + final String imageUrl; + final bool? isVideo; + Gallery( + {required this.id, + required this.image, + required this.imageUrl, + this.isVideo}); + + Gallery copyWith({ + int? id, + String? image, + String? imageUrl, + }) { + return Gallery( + id: id ?? this.id, + image: image ?? this.image, + imageUrl: imageUrl ?? this.imageUrl, + ); + } + + Map toMap() { + return { + 'id': id, + 'image': image, + 'image_url': imageUrl, + }; + } + + factory Gallery.fromMap(Map map) { + return Gallery( + id: map['id'] as int, + image: map['image'] as String, + imageUrl: map['image_url'] ?? "", + ); + } + + String toJson() => json.encode(toMap()); + + factory Gallery.fromJson(String source) => + Gallery.fromMap(json.decode(source) as Map); + + @override + String toString() => 'Gallery(id: $id, image: $image, imageUrl: $imageUrl)'; + + @override + bool operator ==(covariant Gallery other) { + if (identical(this, other)) return true; + + return other.id == id && other.image == image && other.imageUrl == imageUrl; + } + + @override + int get hashCode => id.hashCode ^ image.hashCode ^ imageUrl.hashCode; +} + +class AssignedOutdoorFacility { + int? id; + int? propertyId; + int? facilityId; + int? distance; + String? image; + String? name; + String? createdAt; + String? updatedAt; + + AssignedOutdoorFacility( + {this.id, + this.propertyId, + this.facilityId, + this.distance, + this.createdAt, + this.name, + this.image, + this.updatedAt}); + + AssignedOutdoorFacility.fromJson(Map json) { + id = json['id']; + propertyId = json['property_id']; + facilityId = json['facility_id']; + distance = json['distance']; + createdAt = json['created_at']; + image = json['image']; + name = json['name']; + updatedAt = json['updated_at']; + } + + Map toJson() { + final Map data = Map(); + data['id'] = this.id; + data['property_id'] = this.propertyId; + data['facility_id'] = this.facilityId; + data['distance'] = this.distance; + data['created_at'] = this.createdAt; + data['updated_at'] = this.updatedAt; + data['image'] = image; + data['name'] = name; + return data; + } + + @override + String toString() { + return 'AssignedOutdoorFacility{id: $id, propertyId: $propertyId, facilityId: $facilityId, distance: $distance, image: $image, name: $name, createdAt: $createdAt, updatedAt: $updatedAt}'; + } +} diff --git a/lib/Ui/screens/Dashboard/Repository/dashboard_repository.dart b/lib/Ui/screens/Dashboard/Repository/dashboard_repository.dart new file mode 100644 index 0000000..2bfb8ea --- /dev/null +++ b/lib/Ui/screens/Dashboard/Repository/dashboard_repository.dart @@ -0,0 +1,70 @@ +import 'package:ebroker/Ui/screens/Dashboard/Models/dashboard_property.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/utils/api.dart'; +import 'package:ebroker/utils/constant.dart'; + +mixin DashboardPropertyParameters { + abstract Map parameters; +} + +class Parameter { + final int offset; + + Parameter(this.offset); +} + +class All with DashboardPropertyParameters { + @override + Map parameters = {}; +} + +class Sell with DashboardPropertyParameters { + @override + Map parameters = {"property_type": "0"}; +} + +class Rent with DashboardPropertyParameters { + @override + Map parameters = {"property_type": "1"}; +} + +class Sold with DashboardPropertyParameters { + @override + Map parameters = {"property_type": "2"}; +} + +class Rented with DashboardPropertyParameters { + @override + Map parameters = {"property_type": "3"}; +} + +abstract class DashboardRepository { + Future> fetch( + DashboardPropertyParameters p, Parameter parameter); +} + +class DashboardRepositoryIMPL extends DashboardRepository { + @override + Future> fetch( + DashboardPropertyParameters p, Parameter parameter) async { + Map parameters = {}; + parameters.addAll({ + "offset": parameter.offset, + "limit": Constant.loadLimit, + }); + + parameters.addAll(p.parameters); + + Map result = + await Api.post(url: Api.apiGetProprty, parameter: parameters); + + List list = (result['data'] as List).map((e) { + return DashboardPropertyModal.fromMap(e); + }).toList(); + + return DataOutput( + total: result['total'] ?? 0, + modelList: list, + ); + } +} diff --git a/lib/Ui/screens/Dashboard/dashbord.dart b/lib/Ui/screens/Dashboard/dashbord.dart new file mode 100644 index 0000000..ab93cc0 --- /dev/null +++ b/lib/Ui/screens/Dashboard/dashbord.dart @@ -0,0 +1,242 @@ +import 'package:ebroker/Ui/screens/Dashboard/Cubits/property_list_cubit_dashboard.dart'; +import 'package:ebroker/Ui/screens/Dashboard/Repository/dashboard_repository.dart'; +import 'package:ebroker/Ui/screens/Dashboard/property_list.dart'; +import 'package:ebroker/Ui/screens/Dashboard/widgets/mTabbar.dart'; +import 'package:ebroker/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +import '../../../utils/AppIcon.dart'; + +class DashboardScreen extends StatefulWidget { + const DashboardScreen({Key? key}) : super(key: key); + static Route route(RouteSettings settings) { + return BlurredRouter( + builder: (context) { + return BlocProvider( + create: (context) { + return DashboardPropertyListCubit(); + } + ,child: const DashboardScreen() + ); + }, + ); + } + + @override + State createState() => _DashboardScreenState(); +} + +class _DashboardScreenState extends State + with SingleTickerProviderStateMixin { + final PageController _pageController = PageController(); + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return SafeArea( + child: Scaffold( + backgroundColor: context.color.secondaryColor, + body: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Material( + elevation: 3, + child: Container( + color: context.color.primaryColor, + child: Padding( + padding: const EdgeInsets.all(15.0), + child: Column( + children: [ + SizedBox( + height: 150, + child: Row( + children: [ + Expanded( + child: CountsCard( + number: "120", + title: "Total Property", + icon: AppIcons.properties, + onTap: () {}, + ), + ), + const SizedBox( + width: 5, + ), + Expanded( + child: CountsCard( + number: "120", + title: "Total Views", + icon: AppIcons.properties, + materialIcon: Icons.remove_red_eye, + onTap: () {}, + ), + ) + ], + ), + ), + const SizedBox( + height: 5, + ), + SizedBox( + height: 150, + width: context.screenWidth, + child: CountsCard( + number: "120", + icon: AppIcons.favorites, + // materialIcon: Icons.favorite, + title: "Total Favorites", + onTap: () {}, + ), + ), + ], + ), + ), + ), + ), + const SizedBox( + height: 5, + ), + SizedBox( + height: 40, + child: MTabBar( + onChange: (page) { + DashboardRepositoryIMPL().fetch(All(), Parameter(0)); + }, + controller: _pageController, + padding: const EdgeInsets.symmetric(horizontal: 15), + activeTabDecoration: RoundedMTabDecoration( + buttonColor: context.color.tertiaryColor, + borderColor: widgetsBorderColorLight, + tColor: context.color.buttonColor, + radius: 10), + deactiveTabDecoration: RoundedMTabDecoration( + borderColor: Colors.transparent, + radius: 10, + ), + tabs: [ + MTab(title: "All"), + MTab(title: "Sell"), + MTab(title: "Rent"), + MTab(title: "Sold"), + MTab(title: "Rented"), + MTab(title: "Featured"), + // MTab(title: "Featured"), + ]), + ), + const SizedBox( + height: 12, + ), + Expanded( + child: MTabView(controller: _pageController, pages: [ + BlocProvider( + create: (context) => DashboardPropertyListCubit(), + child: PropertyListDashboard(parameters: All())), + BlocProvider( + create: (context) => DashboardPropertyListCubit(), + child: PropertyListDashboard(parameters: Sell())), + BlocProvider( + create: (context) => DashboardPropertyListCubit(), + child: PropertyListDashboard(parameters: Rent())), + BlocProvider( + create: (context) => DashboardPropertyListCubit(), + child: PropertyListDashboard(parameters: Sold())), + BlocProvider( + create: (context) => DashboardPropertyListCubit(), + child: PropertyListDashboard(parameters: Rented())), + ]), + ) + ], + )), + ); + } +} + +class CountsCard extends StatelessWidget { + final String title; + final String number; + final String icon; + final IconData? materialIcon; + + final void Function() onTap; + + const CountsCard({ + super.key, + required this.title, + required this.number, + required this.onTap, + required this.icon, + this.materialIcon, + }); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + onTap.call(); + }, + child: Container( + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: context.color.secondaryColor, + ), + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: () {}, + child: Container( + decoration: BoxDecoration( + border: + Border.all(color: context.color.borderColor, width: 1.5), + borderRadius: BorderRadius.circular(10)), + child: Padding( + padding: const EdgeInsets.all(15.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Row( + children: [ + if (materialIcon != null) ...[ + Icon(materialIcon!, + size: context.font.xxLarge, + color: context.color.tertiaryColor) + ] else ...[ + SvgPicture.asset( + icon, + height: context.font.xxLarge, + width: context.font.xxLarge, + color: context.color.tertiaryColor, + ), + ], + const SizedBox( + width: 5, + ), + Text(number).size(context.font.xxLarge), + ], + ), + Text(title).size(context.font.large), + const Divider(), + const Row( + children: [ + Text("VIEW"), + Spacer(), + Icon(Icons.chevron_right) + ], + ), + ], + ), + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/Dashboard/property_list.dart b/lib/Ui/screens/Dashboard/property_list.dart new file mode 100644 index 0000000..ffef3fc --- /dev/null +++ b/lib/Ui/screens/Dashboard/property_list.dart @@ -0,0 +1,265 @@ +import 'package:ebroker/Ui/screens/Dashboard/Cubits/property_list_cubit_dashboard.dart'; +import 'package:ebroker/Ui/screens/Dashboard/Models/dashboard_property.dart'; +import 'package:ebroker/Ui/screens/Dashboard/Repository/dashboard_repository.dart'; +import 'package:ebroker/Ui/screens/widgets/Erros/no_data_found.dart'; +import 'package:ebroker/Ui/screens/widgets/shimmerLoadingContainer.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/string_extenstion.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +import '../../../app/routes.dart'; +import '../../../data/cubits/outdoorfacility/fetch_outdoor_facility_list.dart'; +import '../../../data/cubits/property/delete_property_cubit.dart'; +import '../../../data/model/category.dart'; +import '../../../utils/AppIcon.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/helper_utils.dart'; +import '../widgets/blurred_dialoge_box.dart'; + +class PropertyListDashboard extends StatefulWidget { + final DashboardPropertyParameters parameters; + const PropertyListDashboard({Key? key, required this.parameters}) + : super(key: key); + + @override + State createState() => _PropertyListDashboardState(); +} + +class _PropertyListDashboardState extends State + with AutomaticKeepAliveClientMixin { + @override + void initState() { + context.read().fetch(widget.parameters); + super.initState(); + } + + @override + Widget build(BuildContext context) { + super.build(context); + + return BlocBuilder( + builder: (context, state) { + if (state is DashboardPropertyListInProgress) { + return ListView.builder( + itemCount: 5, + padding: const EdgeInsets.all(15), + itemBuilder: (context, index) { + return const Padding( + padding: EdgeInsets.symmetric(vertical: 3), + child: CustomShimmer( + height: 100, + ), + ); + }, + ); + } + if (state is DashboardPropertyListSuccess) { + if (state.list.isEmpty) { + return const SizedBox( + width: 100, + height: 100, + child: NoDataFound( + height: 100, + ), + ); + } + return ListView.builder( + itemCount: state.list.length, + itemBuilder: (context, index) { + DashboardPropertyModal model = state.list[index]; + return Padding( + padding: + const EdgeInsets.symmetric(horizontal: 15, vertical: 5), + child: Container( + height: 65, + child: Row( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Image.network( + model.titleImage ?? "", + width: 65, + height: 65, + fit: BoxFit.cover, + ), + ), + const SizedBox( + width: 8, + ), + Expanded( + flex: 5, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Text((model.title?.toString().firstUpperCase()) ?? "") + .setMaxLines(lines: 1), + Text((model.description?.toString().firstUpperCase()) ?? "") + .size(context.font.small) + .setMaxLines(lines: 1), + Row( + children: [ + Icon( + Icons.remove_red_eye, + color: context.color.textLightColor, + size: (context.font.small), + ), + const SizedBox( + width: 5, + ), + Text(model.totalView.toString().priceFormate()) + .size(context.font.small), + const SizedBox( + width: 5, + ), + Icon( + Icons.favorite, + color: context.color.textLightColor, + size: (context.font.small), + ), + const SizedBox( + width: 5, + ), + Text(model.totalFavouriteUsers + .toString() + .priceFormate()) + .size(context.font.small) + ], + ), + ], + ), + ), + Expanded( + flex: 5, + child: Container( + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + IconButton( + constraints: BoxConstraints(), + onPressed: () { + context + .read() + .fetch(); + Constant.addProperty.addAll({ + "category": Category( + category: model.category!.category, + id: model.category?.id!.toString(), + image: model.category?.image, + parameterTypes: { + "parameters": model.parameters + ?.map((e) => e.toMap()) + .toList() + }, + ) + }); + // log("GOING THROW IT ${property?.parameters}"); + Navigator.pushNamed(context, + Routes.addPropertyDetailsScreen, + arguments: { + "details": { + "id": model.id, + "catId": model.category?.id, + "propType": model.properyType, + "name": model.title, + "desc": model.description, + "city": model.city, + "state": model.state, + "country": model.country, + "latitude": model.latitude, + "longitude": model.longitude, + "address": model.address, + "client": model.clientAddress, + "price": model.price, + 'parms': model.parameters, + "images": model.gallery + ?.map((e) => e.imageUrl) + .toList(), + "rentduration": + model.rentduration, + "assign_facilities": + model.assignedOutdoorFacility, + "titleImage": model.titleImage + } + }); + }, + icon: Icon( + Icons.edit, + // size: 16, + color: context.color.textLightColor, + )), + IconButton( + constraints: BoxConstraints(), + // padding: EdgeInsets.zero, + onPressed: () {}, + // splashRadius: 15, + icon: SvgPicture.asset( + AppIcons.promoted, + // width: 16, + // height: 16, + color: context.color.textLightColor, + )), + IconButton( + constraints: BoxConstraints(), + // padding: EdgeInsets.zero, + autofocus: false, + onPressed: () async { + var delete = + await UiUtils.showBlurredDialoge( + context, + dialoge: BlurredDialogBox( + title: UiUtils.translate( + context, + "deleteBtnLbl", + ), + content: Text( + UiUtils.translate(context, + "deletepropertywarning"), + ), + ), + ); + if (delete == true) { + Future.delayed( + Duration.zero, + () { + if (Constant.isDemoModeOn) { + HelperUtils.showSnackBarMessage( + context, + UiUtils.translate(context, + "thisActionNotValidDemo")); + } else { + context + .read() + .delete(model.id!); + } + }, + ); + } + }, + // splashRadius: 15, + icon: SvgPicture.asset( + AppIcons.delete, + // width: 16, + // height: 16, + color: context.color.textLightColor, + )), + ], + ), + )) + ], + ), + ), + ); + }); + } + return Container(); + }); + } + + @override + // TODO: implement wantKeepAlive + bool get wantKeepAlive => true; +} diff --git a/lib/Ui/screens/Dashboard/widgets/mTabbar.dart b/lib/Ui/screens/Dashboard/widgets/mTabbar.dart new file mode 100644 index 0000000..f9564a7 --- /dev/null +++ b/lib/Ui/screens/Dashboard/widgets/mTabbar.dart @@ -0,0 +1,220 @@ +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; + +class MTabBar extends StatefulWidget { + final List tabs; + final MTabDecoration? activeTabDecoration; + final MTabDecoration? deactiveTabDecoration; + final EdgeInsetsGeometry? padding; + final PageController controller; + final Function(int page) onChange; + MTabBar( + {Key? key, + required this.tabs, + this.activeTabDecoration, + this.deactiveTabDecoration, + this.padding, + required this.controller, + required this.onChange}) + : super(key: key) {} + + @override + State createState() => _MTabBarState(); +} + +class _MTabBarState extends State { + int _activeTabindex = 0; + Map? selectedTab; + + ScrollController _scrollController = ScrollController(); + GlobalKey? selectedKey; + + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + List<_IndexedMTab> indexxedList = + List.generate(widget.tabs.length, (index) { + return _IndexedMTab(index, widget.tabs[index]); + }).toList(); + return ListView( + shrinkWrap: true, + controller: _scrollController, + padding: widget.padding, + scrollDirection: Axis.horizontal, + children: [ + ...indexxedList.map((_IndexedMTab e) { + MTabDecoration? decoration = _activeTabindex == e.index + ? widget.activeTabDecoration + : widget.deactiveTabDecoration; + GlobalKey _key = GlobalKey(); + if (decoration == null) { + return MaterialButton( + key: _key, + onPressed: () { + setState(() { + Map info = + UiUtils.getWidgetInfo(context, _key); + selectedTab = info; + + selectedKey = _key; + _activeTabindex = e.index; + widget.controller.jumpToPage(e.index); + widget.onChange(e.index); + + setState(() {}); + }); + }, + child: Text(e.tab.title), + ); + } + return decoration._buildButton( + _key, + context, + child: Text(e.tab.title), + onPressed: (info) { + selectedTab = info; + widget.controller.jumpToPage(e.index); + _activeTabindex = e.index; + widget.onChange(e.index); + setState(() {}); + }, + ); + }).toList() + ], + ); + } +} + +class MTab { + final String title; + final MTabDecoration? activeDecoration; + final MTabDecoration? deactiveDecoration; + MTab({required this.title, this.activeDecoration, this.deactiveDecoration}); +} + +class _IndexedMTab { + final int index; + final MTab tab; + + _IndexedMTab(this.index, this.tab); +} + +class MTabDecoration { + final Color? color; + final Color? textColor; + final double? elevation; + final EdgeInsetsGeometry? padding; + final BorderRadius? borderRadius; + final MaterialStateProperty? overlayColor; + final BorderSide? side; + final MaterialTapTargetSize? tapTargetSize; + final Duration? animationDuration; + final Clip? clipBehavior; + final FocusNode? focusNode; + final bool? autofocus; + + MTabDecoration({ + this.color, + this.textColor, + this.elevation, + this.padding, + this.borderRadius, + this.overlayColor, + this.side, + this.tapTargetSize, + this.animationDuration, + this.clipBehavior, + this.focusNode, + this.autofocus, + }); + + // Helper method to create the MaterialButton + MaterialButton _buildButton(GlobalKey key, BuildContext context, + {required Widget child, Function(Map info)? onPressed}) { + return MaterialButton( + key: key, + onPressed: () { + Map info = UiUtils.getWidgetInfo(context, key); + + onPressed?.call(info); + }, + child: child, + color: color, + textColor: textColor, + elevation: elevation, + padding: padding, + shape: RoundedRectangleBorder( + borderRadius: borderRadius ?? BorderRadius.circular(8.0), + side: side ?? BorderSide.none, + ), + materialTapTargetSize: tapTargetSize, + animationDuration: animationDuration, + clipBehavior: clipBehavior ?? Clip.antiAlias, + focusNode: focusNode, + onHighlightChanged: (isHighlighted) { + // You can add any additional logic here when the button is highlighted. + }, + onLongPress: () { + // You can add any additional logic here when the button is long-pressed. + }, + mouseCursor: SystemMouseCursors.click, + enableFeedback: true, + visualDensity: VisualDensity.adaptivePlatformDensity, + focusColor: Colors.transparent, + hoverColor: Colors.transparent, + highlightColor: Colors.transparent, + splashColor: Colors.transparent, + disabledColor: Colors.transparent, + focusElevation: 0.0, + hoverElevation: 0.0, + highlightElevation: 0.0, + ); + } +} + +class RoundedMTabDecoration extends MTabDecoration { + final Color borderColor; + final double radius; + final Color? tColor; + final Color? buttonColor; + + RoundedMTabDecoration({ + required this.radius, + required this.borderColor, + this.tColor, + this.buttonColor, + }); + @override + BorderRadius? get borderRadius => BorderRadius.circular(radius); + @override + Color? get textColor => tColor ?? super.textColor; + @override + Color? get color => buttonColor ?? super.color; + + @override + BorderSide? get side => BorderSide(width: 1.5, color: borderColor); +} + +class MTabView extends StatefulWidget { + final PageController controller; + final List pages; + const MTabView({Key? key, required this.controller, required this.pages}) + : super(key: key); + + @override + State createState() => _MTabViewState(); +} + +class _MTabViewState extends State { + @override + Widget build(BuildContext context) { + return PageView( + controller: widget.controller, + children: widget.pages, + ); + } +} diff --git a/lib/Ui/screens/Personalized/.DS_Store b/lib/Ui/screens/Personalized/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..62bc80cf1e6f4da8e8b7682586dd048af19afb2e GIT binary patch literal 6148 zcmeHK%}N6?5T4j-Q;N`oLXQEj1zQzSyezf8fGc`Xsa?9%#qFkaxAss9d)627Nqin> zlB`hLgC`L?1Iag;pJeBQ%?|*G&UDZQr~`n+Mkq*GBV=Cd+H%2!!pspu0vV*iEFG_z z=r5Y++a;tB!VpH-e}8`v>i~Tp!8nf6tkwDyTcz^$PDNH^O+Nb1dgf>SY?^lZlY1K7 zXdMTI-Vbi0aMr8uUFsz3M@cv_3DF?LkcYb{8R%I@Pm@7va((NNRax!T8}s>D>!hhp z+vkg>nx7xFn(E~Ebg`(){e#1c>)uN|O7xp0Qy}j~b{!V*j><}1ul^*7buvU>kypes zG6T#2Gr$aN4g>BCkhRSznJZ-mn1LTMK>LHjM(8=rEt;(ZJGwrTzf4GiI=v+bl|#>A zZV^2w!lokHRNGr$b|GX_Mt>vua?lsj8j%A>PZVSBs1QLkM@wz%MZH1z;#mIRF3v literal 0 HcmV?d00001 diff --git a/lib/Ui/screens/Personalized/personalized_property_screen.dart b/lib/Ui/screens/Personalized/personalized_property_screen.dart new file mode 100644 index 0000000..72d7652 --- /dev/null +++ b/lib/Ui/screens/Personalized/personalized_property_screen.dart @@ -0,0 +1,253 @@ +// import 'dart:developer'; + +import 'package:ebroker/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import 'package:ebroker/data/Repositories/location_repository.dart'; +import 'package:ebroker/data/model/category.dart'; +import 'package:ebroker/data/model/outdoor_facility.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/Extensions/lib/list.dart'; +import 'package:ebroker/utils/string_extenstion.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_typeahead/flutter_typeahead.dart'; + +import '../../../data/Repositories/personalized_feed_repository.dart'; +import '../../../data/cubits/Personalized/add_update_personalized_interest.dart'; +import '../../../data/cubits/Personalized/fetch_personalized_properties.dart'; +import '../../../data/helper/widgets.dart'; +import '../../../data/model/google_place_model.dart'; +import '../../../utils/helper_utils.dart'; + +part 'segments/choose_category.dart'; +part 'segments/choose_nearby.dart'; +part 'segments/other_interest.dart'; + +enum PersonalizedVisitType { FirstTime, Normal } + +class PersonalizedPropertyScreen extends StatefulWidget { + final PersonalizedVisitType type; + + const PersonalizedPropertyScreen({Key? key, required this.type}) + : super(key: key); + + static Route route(RouteSettings settings) { + final args = settings.arguments as Map?; + return BlurredRouter( + builder: (context) => PersonalizedPropertyScreen( + type: args?['type'], + ), + ); + } + + @override + State createState() => + _PersonalizedPropertyScreenState(); +} + +class _PersonalizedPropertyScreenState + extends State { + List selectedCategoryId = personalizedInterestSettings.categoryIds; + List selectedNearbyPlacesId = []; + int selectedPage = 0; + RangeValues? _selectedPriceRange; + String selectedLocation = ""; + List selectedPropertyType = []; + + @override + void initState() { + context.read().fetchIfFailed(); + super.initState(); + } + + final PageController _pageController = PageController(); + + @override + void dispose() { + _pageController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.backgroundColor, + bottomNavigationBar: _buildBottomNavigationBar(), + body: BlocConsumer(listener: (context, state) { + if (state is AddUpdatePersonalizedInterestInProgress) { + Widgets.showLoader(context); + } + if (state is AddUpdatePersonalizedInterestFail) { + Widgets.hideLoder(context); + HelperUtils.showSnackBarMessage( + context, "unableToSave".translate(context)); + } + if (state is AddUpdatePersonalizedInterestSuccess) { + Widgets.hideLoder(context); + context.read().fetch( + forceRefresh: true, + ); + if (widget.type == PersonalizedVisitType.FirstTime) { + Future.delayed( + Duration.zero, + () { + HelperUtils.showSnackBarMessage( + context, + "successfullyAdded".translate(context), + type: MessageType.success, + ); + HelperUtils.killPreviousPages( + context, + Routes.main, + {"from": "login"}, + ); + }, + ); + } else { + HelperUtils.showSnackBarMessage( + context, + "successfullySaved".translate(context), + type: MessageType.success, + ); + Navigator.pop(context); + } + } + }, builder: (context, state) { + return SafeArea( + child: SizedBox( + width: context.screenWidth, + child: PageView( + controller: _pageController, + physics: const NeverScrollableScrollPhysics(), + onPageChanged: _onPageChanged, + children: [ + CategoryInterestChoose( + controller: _pageController, + type: widget.type, + onInteraction: _onCategoryInteraction, + ), + NearbyInterest( + controller: _pageController, + type: widget.type, + onInteraction: _onNearbyInteraction, + ), + OtherInterests( + type: widget.type, + onInteraction: _onOtherInterestsInteraction, + ), + ], + ), + ), + ); + }), + ); + } + + Widget _buildBottomNavigationBar() { + return BottomAppBar( + color: context.color.primaryColor, + child: Row( + children: [ + if (selectedPage > 0) + Expanded( + child: Padding( + padding: const EdgeInsetsDirectional.fromSTEB(15, 5, 5, 5), + child: _buildNavigationButton( + onPressed: selectedCategoryId.isEmpty + ? null + : () { + _pageController.animateToPage( + --selectedPage, + duration: const Duration(milliseconds: 500), + curve: Curves.linear, + ); + }, + buttonTextColor: (selectedCategoryId.isEmpty + ? context.color.textColorDark + : null), + label: "previouslbl".translate(context), + color: context.color.tertiaryColor.withOpacity(0.5), + ), + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsetsDirectional.fromSTEB(5, 5, 15, 5), + child: _buildNavigationButton( + onPressed: selectedCategoryId.isEmpty + ? null + : () { + if (selectedPage < 2) { + _pageController.animateToPage( + ++selectedPage, + duration: const Duration(milliseconds: 500), + curve: Curves.easeIn, + ); + } else { + _updatePersonalizedFeed(); + } + }, + label: "next".translate(context), + buttonTextColor: selectedCategoryId.isEmpty + ? context.color.textColorDark + : null, + color: context.color.tertiaryColor, + ), + ), + ), + ], + ), + ); + } + + Widget _buildNavigationButton( + {VoidCallback? onPressed, + required String label, + required Color color, + Color? buttonTextColor}) { + return MaterialButton( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + onPressed: onPressed, + height: 48, + color: color, + child: Text(label).color(buttonTextColor ?? context.color.buttonColor), + ); + } + + void _updatePersonalizedFeed() async { + context.read().addOrUpdate( + action: PersonalizedFeedAction.add, + categoryIds: selectedCategoryId, + outdoorFacilityList: selectedNearbyPlacesId, + priceRange: _selectedPriceRange, + city: selectedLocation, + selectedPropertyType: selectedPropertyType); + } + + void _onPageChanged(int value) { + selectedPage = value; + setState(() {}); + } + + void _onCategoryInteraction(List id) { + selectedCategoryId = id; + setState(() {}); + } + + void _onNearbyInteraction(List idlist) { + selectedNearbyPlacesId = idlist; + setState(() {}); + } + + void _onOtherInterestsInteraction( + RangeValues priceRange, String location, List propertyTypes) { + _selectedPriceRange = priceRange; + selectedLocation = location; + selectedPropertyType = propertyTypes; + + setState(() {}); + } +} diff --git a/lib/Ui/screens/Personalized/segments/choose_category.dart b/lib/Ui/screens/Personalized/segments/choose_category.dart new file mode 100644 index 0000000..8d5ee4d --- /dev/null +++ b/lib/Ui/screens/Personalized/segments/choose_category.dart @@ -0,0 +1,101 @@ +part of '../personalized_property_screen.dart'; + +class CategoryInterestChoose extends StatefulWidget { + final PageController controller; + final PersonalizedVisitType type; + final Function(List selectedCategoryId) onInteraction; + const CategoryInterestChoose( + {super.key, + required this.controller, + required this.onInteraction, + required this.type}); + + @override + State createState() => _CategoryInterestChooseState(); +} + +class _CategoryInterestChooseState extends State + with AutomaticKeepAliveClientMixin { + List selectedCategoryId = personalizedInterestSettings.categoryIds; + + @override + Widget build(BuildContext context) { + bool isFirstTime = widget.type == PersonalizedVisitType.FirstTime; + super.build(context); + return Column( + children: [ + const SizedBox( + height: 25, + ), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Spacer( + flex: 2, + ), + Text("chooseYourInterest".translate(context)) + .color(context.color.textColorDark) + .size(context.font.xxLarge) + .centerAlign(), + Spacer( + flex: isFirstTime ? 1 : 2, + ), + if (isFirstTime) + GestureDetector( + onTap: () { + HelperUtils.killPreviousPages( + context, Routes.main, {"from": "login"}); + }, + child: Chip( + label: Text("skip".translate(context)) + .color(context.color.buttonColor))), + const SizedBox( + width: 14, + ), + ], + ), + const SizedBox( + height: 25, + ), + Wrap( + children: List.generate( + (context.watch().getCategories().length), + (index) { + Category categorie = + context.watch().getCategories()[index]; + bool isSelected = + selectedCategoryId.contains(int.parse(categorie.id!)); + return Padding( + padding: const EdgeInsets.all(3.0), + child: GestureDetector( + onTap: () { + selectedCategoryId.addOrRemove(int.parse(categorie.id!)); + widget.onInteraction.call(selectedCategoryId); + setState(() {}); + }, + child: Chip( + shape: StadiumBorder( + side: BorderSide(color: context.color.borderColor)), + backgroundColor: isSelected + ? context.color.tertiaryColor + : context.color.secondaryColor, + padding: const EdgeInsets.all(5), + label: Padding( + padding: const EdgeInsets.all(8.0), + child: Text(categorie.category.toString()).color( + isSelected + ? context.color.buttonColor + : context.color.textColorDark), + )), + ), + ); + }), + ) + ], + ); + } + + @override + bool get wantKeepAlive => true; +} diff --git a/lib/Ui/screens/Personalized/segments/choose_nearby.dart b/lib/Ui/screens/Personalized/segments/choose_nearby.dart new file mode 100644 index 0000000..359fe78 --- /dev/null +++ b/lib/Ui/screens/Personalized/segments/choose_nearby.dart @@ -0,0 +1,128 @@ +part of '../personalized_property_screen.dart'; + +class NearbyInterest extends StatefulWidget { + final PageController controller; + final PersonalizedVisitType type; + final Function(List selectedNearbyPlacesIds) onInteraction; + const NearbyInterest({ + super.key, + required this.controller, + required this.onInteraction, + required this.type, + }); + + @override + State createState() => _NearbyInterestState(); +} + +class _NearbyInterestState extends State + with AutomaticKeepAliveClientMixin { + List selectedIds = personalizedInterestSettings.outdoorFacilityIds; + @override + void initState() { + context.read().fetchIfFailed(); + Future.delayed( + Duration(seconds: 1), + () { + setState(() {}); + }, + ); + super.initState(); + } + + @override + Widget build(BuildContext context) { + super.build(context); + bool isFirstTime = widget.type == PersonalizedVisitType.FirstTime; + var facilityList = context.watch().getList(); + int facilityLength = facilityList.length; + FetchOutdoorFacilityListState state = + context.watch().state; + return SingleChildScrollView( + child: Column( + children: [ + const SizedBox( + height: 25, + ), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Spacer( + flex: 2, + ), + Text("chooseNearbyPlaces".translate(context)) + .color(context.color.textColorDark) + .size(context.font.xxLarge) + .centerAlign(), + Spacer( + flex: isFirstTime ? 1 : 2, + ), + if (isFirstTime) + GestureDetector( + onTap: () { + HelperUtils.killPreviousPages( + context, + Routes.main, + {"from": "login"}, + ); + }, + child: Chip( + label: Text("skip".translate(context)) + .color(context.color.buttonColor))), + // const Chip(label: Text("Skip")), + const SizedBox( + width: 14, + ), + ], + ), + const SizedBox( + height: 10, + ), + Text("getRecommandation".translate(context)) + .color(context.color.textColorDark.withOpacity(0.6)) + .centerAlign() + .size(context.font.small), + const SizedBox( + height: 15, + ), + if (state is FetchOutdoorFacilityListInProgress) ...{ + UiUtils.progress() + }, + Wrap( + children: List.generate((facilityLength), (index) { + OutdoorFacility facility = facilityList[index]; + return Padding( + padding: const EdgeInsets.all(3.0), + child: GestureDetector( + onTap: () { + selectedIds.addOrRemove(facility.id!); + widget.onInteraction.call(selectedIds); + setState(() {}); + }, + child: Chip( + shape: StadiumBorder( + side: BorderSide(color: context.color.borderColor)), + backgroundColor: selectedIds.contains(facility.id!) + ? context.color.tertiaryColor + : context.color.secondaryColor, + padding: const EdgeInsets.all(5), + label: Padding( + padding: const EdgeInsets.all(8.0), + child: Text(facility.name.toString()).color( + selectedIds.contains(facility.id!) + ? context.color.buttonColor + : context.color.textColorDark), + )), + ), + ); + }), + ) + ], + ), + ); + } + + @override + bool get wantKeepAlive => true; +} diff --git a/lib/Ui/screens/Personalized/segments/other_interest.dart b/lib/Ui/screens/Personalized/segments/other_interest.dart new file mode 100644 index 0000000..9f50807 --- /dev/null +++ b/lib/Ui/screens/Personalized/segments/other_interest.dart @@ -0,0 +1,352 @@ +part of '../personalized_property_screen.dart'; + +class OtherInterests extends StatefulWidget { + final PersonalizedVisitType type; + final Function( + RangeValues priceRange, String location, List propertyType) + onInteraction; + const OtherInterests( + {super.key, required this.onInteraction, required this.type}); + + @override + State createState() => _OtherInterestsState(); +} + +class _OtherInterestsState extends State { + String selectedLocation = ""; + final TextEditingController _controller = TextEditingController(); + late final min = personalizedInterestSettings.priceRange.first; + late final max = personalizedInterestSettings.priceRange.last; + RangeValues _priceRangeValues = const RangeValues(0, 100); + RangeValues _selectedRangeValues = const RangeValues(0, 50); + + GooglePlaceRepository googlePlaceRepository = GooglePlaceRepository(); + List selectedPropertyType = [1, 2]; + @override + void initState() { + Future.delayed( + Duration.zero, + () { + selectedPropertyType = personalizedInterestSettings.propertyType; + + if (personalizedInterestSettings.city.isNotEmpty) { + _controller.text = personalizedInterestSettings.city.firstUpperCase(); + selectedLocation = personalizedInterestSettings.city; + } + + widget.onInteraction + .call(_selectedRangeValues, selectedLocation, selectedPropertyType); + setState(() {}); + FetchSystemSettingsState state = + context.read().state; + if (state is FetchSystemSettingsSuccess) { + var settingsData = state.settings['data']; + var minPrice = double.parse(settingsData['min_price']); + var maxPrice = double.parse(settingsData['max_price']); + _priceRangeValues = RangeValues(minPrice, maxPrice); + if (min != 0.0 && max != 0.0) { + _selectedRangeValues = RangeValues(min, max); + } else { + _selectedRangeValues = RangeValues(minPrice, maxPrice / 4); + } + } + }, + ); + + super.initState(); + } + + @override + Widget build(BuildContext context) { + bool isFirstTime = widget.type == PersonalizedVisitType.FirstTime; + + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.fromLTRB(20.0, 0, 20, 20), + child: Column( + children: [ + const SizedBox( + height: 25, + ), + Row( + children: [ + const Spacer( + flex: 2, + ), + Text("selectCityYouWantToSee".translate(context)) + .color(context.color.textColorDark) + .size(context.font.extraLarge) + .centerAlign(), + Spacer( + flex: isFirstTime ? 1 : 2, + ), + if (isFirstTime) + GestureDetector( + onTap: () { + HelperUtils.killPreviousPages( + context, Routes.main, {"from": "login"}); + }, + child: Chip( + label: Text("skip".translate(context)) + .color(context.color.buttonColor))), + ], + ), + const SizedBox( + height: 25, + ), + buildCitySearchTextField(context), + const SizedBox( + height: 10, + ), + Align( + alignment: Alignment.centerLeft, + child: Row( + children: [ + Text("selectedLocation".translate(context)) + .color(context.color.textColorDark.withOpacity(0.6)), + Expanded(child: Text(selectedLocation)) + ], + )), + const SizedBox( + height: 20, + ), + Text("choosePropertyType".translate(context)) + .color(context.color.textColorDark) + .size(context.font.extraLarge) + .centerAlign(), + const SizedBox( + height: 10, + ), + PropertyTypeSelector( + onInteraction: (List values) { + selectedPropertyType = values; + + widget.onInteraction + .call(_selectedRangeValues, selectedLocation, values); + + setState(() {}); + }, + ), + const SizedBox( + height: 25, + ), + Text("chooseTheBudeget".translate(context)) + .color(context.color.textColorDark) + .size(context.font.extraLarge) + .centerAlign(), + const SizedBox( + height: 25, + ), + Row( + children: [ + Expanded( + flex: 1, + child: Column( + children: [ + Text("minLbl".translate(context)), + Text(_selectedRangeValues.start + .toInt() + .toString() + .priceFormate()), + ], + ), + ), + Expanded( + flex: 6, + child: RangeSlider( + // labels: RangeLabels(_priceRangeValues.start.toString(), _priceRangeValues.end.toString()), + activeColor: context.color.tertiaryColor, + values: _selectedRangeValues, + onChanged: (RangeValues value) { + _selectedRangeValues = value; + widget.onInteraction.call(_selectedRangeValues, + selectedLocation, selectedPropertyType); + setState(() {}); + }, + min: _priceRangeValues.start, + max: _priceRangeValues.end, + ), + ), + Expanded( + flex: 1, + child: Column( + children: [ + Text("maxLbl".translate(context)), + Text(_selectedRangeValues.end + .toInt() + .toString() + .priceFormate()), + ], + ), + ), + ], + ), + ], + ), + ), + ); + } + + Widget buildCitySearchTextField(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(0.0), + child: TypeAheadField( + debounceDuration: const Duration(milliseconds: 500), + loadingBuilder: (context) { + return Center(child: UiUtils.progress()); + }, + minCharsForSuggestions: 2, + textFieldConfiguration: TextFieldConfiguration( + controller: _controller, + decoration: InputDecoration( + hintText: "searchCity".translate(context), + suffixIcon: GestureDetector( + onTap: () { + _controller.text = ""; + }, + child: Icon( + Icons.close, + color: context.color.tertiaryColor, + )), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(10), + borderSide: BorderSide(color: context.color.tertiaryColor), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(10), + borderSide: BorderSide(color: context.color.tertiaryColor), + ), + )), + suggestionsBoxDecoration: SuggestionsBoxDecoration( + color: context.color.secondaryColor.withOpacity(1), + ), + itemBuilder: (context, GooglePlaceModel itemData) { + List address = [ + itemData.city, + // itemData.state, + // itemData.country + ]; + + return ListTile( + title: Text(address.join(",").toString()), + ); + }, + onSuggestionSelected: (GooglePlaceModel suggestion) { + List addressList = [ + suggestion.city, + // suggestion.state, + // suggestion.country + ]; + String address = addressList.join(","); + _controller.text = address; + selectedLocation = address; + widget.onInteraction.call( + _selectedRangeValues, selectedLocation, selectedPropertyType); + + setState(() {}); + }, + suggestionsCallback: (pattern) async { + return await googlePlaceRepository.serchCities(pattern); + }, + ), + ); + } +} + +class PropertyTypeSelector extends StatefulWidget { + final Function(List values) onInteraction; + const PropertyTypeSelector({ + super.key, + required this.onInteraction, + }); + + @override + State createState() => _PropertyTypeSelectorState(); +} + +class _PropertyTypeSelectorState extends State { + List selectedPropertyType = [1, 2]; + @override + void initState() { + Future.delayed( + Duration.zero, + () { + if (personalizedInterestSettings.propertyType.isNotEmpty) { + selectedPropertyType = personalizedInterestSettings.propertyType; + } + + widget.onInteraction.call(selectedPropertyType); + }, + ); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Row( + children: [ + GestureDetector( + onTap: () { + selectedPropertyType.clearAndAddAll([1, 2]); + widget.onInteraction.call(selectedPropertyType); + + setState(() {}); + }, + child: Chip( + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12), + label: Text("all".translate(context)) + .size(context.font.large) + .color(selectedPropertyType.containesAll([1, 2]) + ? context.color.buttonColor + : context.color.textColorDark), + backgroundColor: selectedPropertyType.containesAll([1, 2]) + ? context.color.tertiaryColor + : context.color.secondaryColor, + ), + ), + const SizedBox( + width: 5, + ), + GestureDetector( + onTap: () { + selectedPropertyType.clearAndAdd(0); + widget.onInteraction.call(selectedPropertyType); + + setState(() {}); + }, + child: Chip( + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12), + label: Text("sell".translate(context)) + .size(context.font.large) + .color(selectedPropertyType.isSingleElementAndIs(0) + ? context.color.buttonColor + : context.color.textColorDark), + backgroundColor: selectedPropertyType.isSingleElementAndIs(0) + ? context.color.tertiaryColor + : context.color.secondaryColor, + ), + ), + const SizedBox( + width: 5, + ), + GestureDetector( + onTap: () { + selectedPropertyType.clearAndAdd(1); + widget.onInteraction.call(selectedPropertyType); + setState(() {}); + }, + child: Chip( + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12), + label: Text("rent".translate(context)) + .size(context.font.large) + .color(selectedPropertyType.isSingleElementAndIs(1) + ? context.color.buttonColor + : context.color.textColorDark), + backgroundColor: selectedPropertyType.isSingleElementAndIs(1) + ? context.color.tertiaryColor + : context.color.secondaryColor, + )), + ], + ); + } +} diff --git a/lib/Ui/screens/Report/report_property_screen.dart b/lib/Ui/screens/Report/report_property_screen.dart new file mode 100644 index 0000000..3ec2507 --- /dev/null +++ b/lib/Ui/screens/Report/report_property_screen.dart @@ -0,0 +1,196 @@ +import 'package:ebroker/data/cubits/Report/property_report_cubit.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/helper_utils.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../data/cubits/Report/fetch_property_report_reason_list.dart'; +import '../../../data/model/ReportProperty/reason_model.dart'; + +class ReportPropertyScreen extends StatefulWidget { + final int propertyId; + const ReportPropertyScreen({Key? key, required this.propertyId}) + : super(key: key); + + @override + State createState() => _ReportPropertyScreenState(); +} + +class _ReportPropertyScreenState extends State { + List? reasons = []; + late int selectedId; + TextEditingController _reportmessageController = TextEditingController(); + @override + void initState() { + reasons = + context.read().getList() ?? []; + + if (reasons?.isEmpty ?? true) { + selectedId = -10; + } else { + selectedId = reasons!.first.id; + } + + super.initState(); + } + + @override + Widget build(BuildContext context) { + double bottomPadding = (MediaQuery.of(context).viewInsets.bottom - 50); + bool isBottomPaddingNagative = bottomPadding.isNegative; + return SizedBox( + width: MediaQuery.of(context).size.width, + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Report property").size(context.font.larger), + SizedBox( + height: 15, + ), + ListView.separated( + shrinkWrap: true, + itemCount: reasons?.length ?? 0, + physics: const BouncingScrollPhysics(), + separatorBuilder: (context, index) { + return const SizedBox(height: 10); + }, + itemBuilder: (context, index) { + return InkWell( + borderRadius: BorderRadius.circular(10), + onTap: () { + if (selectedId == reasons![index].id) { + // selectedId = -10; + } else { + selectedId = reasons![index].id; + } + setState(() {}); + }, + child: Container( + decoration: BoxDecoration( + color: context.color.primaryColor, + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: selectedId == reasons?[index].id + ? context.color.tertiaryColor + : context.color.borderColor, + width: 1.5), + ), + child: Padding( + padding: const EdgeInsets.all(14.0), + child: Text(reasons?[index].reason.firstUpperCase() ?? "") + .color(selectedId == reasons?[index].id + ? context.color.tertiaryColor + : context.color.textColorDark), + ), + ), + ); + + return RadioListTile( + value: reasons![index].id, + groupValue: selectedId, + fillColor: + MaterialStatePropertyAll(context.color.tertiaryColor), + onChanged: (dynamic value) { + if (selectedId == value) { + selectedId = -10; + } else { + selectedId = value; + } + setState(() {}); + }, + title: Text(reasons![index].reason.firstUpperCase()), + ); + }, + ), + if (selectedId.isNegative) + Padding( + padding: EdgeInsets.only( + bottom: isBottomPaddingNagative ? 0 : bottomPadding, + left: 0, + right: 0), + child: TextField( + maxLines: null, + controller: _reportmessageController, + cursorColor: context.color.tertiaryColor, + decoration: InputDecoration( + hintText: "writeReasonHere".translate(context), + focusColor: context.color.tertiaryColor, + focusedBorder: UnderlineInputBorder( + borderSide: + BorderSide(color: context.color.tertiaryColor))), + ), + ), + SizedBox( + height: 14, + ), + BlocConsumer( + listener: (context, state) { + if (state is PropertyReportInSuccess) { + HelperUtils.showSnackBarMessage(context, state.responseMessage); + + Navigator.pop(context); + } + }, builder: (context, state) { + return Align( + alignment: Alignment.centerRight, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + MaterialButton( + height: 40, + minWidth: 104.rw(context), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(30), + side: BorderSide( + color: context.color.borderColor, + width: 1.5, + )), + onPressed: () { + Navigator.pop(context); + }, + child: Text("cancelLbl".translate(context)) + .color(context.color.tertiaryColor), + ), + const SizedBox( + width: 10, + ), + MaterialButton( + height: 40, + minWidth: 104.rw(context), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular( + 30, + ), + ), + color: context.color.tertiaryColor, + onPressed: () async { + if (selectedId.isNegative) { + context.read().report( + property_id: widget.propertyId, + reason_id: selectedId, + message: _reportmessageController.text); + } else { + context.read().report( + property_id: widget.propertyId, + reason_id: selectedId); + } + }, + child: (state is PropertyReportInProgress) + ? UiUtils.progress(width: 24, height: 24) + : Text("report".translate(context)) + .color(context.color.buttonColor), + ), + ], + ), + ); + }) + ], + ), + ), + ); + } +} diff --git a/lib/Ui/screens/analytics/analytics_screen.dart b/lib/Ui/screens/analytics/analytics_screen.dart new file mode 100644 index 0000000..1faee69 --- /dev/null +++ b/lib/Ui/screens/analytics/analytics_screen.dart @@ -0,0 +1,61 @@ +import 'package:flutter/material.dart'; + +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/ui_utils.dart'; + +class AnalyticsScreen extends StatelessWidget { + final String interestUserCount; + const AnalyticsScreen({super.key, required this.interestUserCount}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.black.withOpacity(0.05), + appBar: AppBar( + elevation: 0, + backgroundColor: Colors.transparent, + automaticallyImplyLeading: true, + iconTheme: IconThemeData(color: context.color.tertiaryColor), + ), + body: Column( + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: Container( + width: context.screenWidth, + height: 100, + decoration: BoxDecoration( + color: context.color.primaryColor, + borderRadius: BorderRadius.circular( + 10, + ), + border: Border.all( + color: context.color.borderColor, + width: 1.5, + ), + ), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(UiUtils.translate(context, "interestedUserCount")) + .color(context.color.textColorDark) + .size(context.font.larger) + .bold(), + Center( + child: Text(interestUserCount) + .color(context.color.textColorDark) + .size(context.font.extraLarge) + .italic(), + ) + ], + ), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/Ui/screens/auth/login_screen.dart b/lib/Ui/screens/auth/login_screen.dart new file mode 100644 index 0000000..53462fe --- /dev/null +++ b/lib/Ui/screens/auth/login_screen.dart @@ -0,0 +1,973 @@ +import 'dart:async'; +import 'dart:developer'; +import 'dart:io'; + +import 'package:country_picker/country_picker.dart'; +import 'package:ebroker/settings.dart'; +import 'package:firebase_analytics/firebase_analytics.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_sim_country_code/flutter_sim_country_code.dart'; +import 'package:sms_autofill/sms_autofill.dart'; + +import '../../../app/default_app_setting.dart'; +import '../../../app/routes.dart'; +import '../../../data/cubits/auth/auth_cubit.dart'; +import '../../../data/cubits/auth/login_cubit.dart'; +import '../../../data/cubits/auth/send_otp_cubit.dart'; +import '../../../data/cubits/auth/verify_otp_cubit.dart'; +import '../../../data/cubits/system/delete_account_cubit.dart'; +import '../../../data/cubits/system/fetch_system_settings_cubit.dart'; +import '../../../data/cubits/system/user_details.dart'; +import '../../../data/helper/designs.dart'; +import '../../../data/helper/widgets.dart'; +import '../../../data/model/system_settings_model.dart'; +import '../../../utils/AppIcon.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/Network/apiCallTrigger.dart'; +import '../../../utils/api.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/guestChecker.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/hive_utils.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../../../utils/validator.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; + +class LoginScreen extends StatefulWidget { + final bool? isDeleteAccount; + final bool? popToCurrent; + const LoginScreen({Key? key, this.isDeleteAccount, this.popToCurrent}) + : super(key: key); + + @override + State createState() => LoginScreenState(); + static route(RouteSettings routeSettings) { + Map? args = routeSettings.arguments as Map?; + return BlurredRouter( + builder: (_) => MultiBlocProvider( + providers: [ + BlocProvider(create: (context) => SendOtpCubit()), + BlocProvider(create: (context) => VerifyOtpCubit()), + ], + child: LoginScreen( + isDeleteAccount: args?['isDeleteAccount'], + popToCurrent: args?['popToCurrent'], + ), + ), + ); + } +} + +class LoginScreenState extends State { + final TextEditingController mobileNumController = TextEditingController( + text: Constant.isDemoModeOn ? Constant.demoMobileNumber : ""); + //final TextEditingController otpController = TextEditingController(); + final List _controllers = []; + final List _focusNodes = []; + List list = []; + String otpVerificationId = ""; + final _formKey = GlobalKey(); + bool isOtpSent = false; //to swap between login & OTP screen + bool isChecked = false; //Privacy policy checkbox value check + // bool enableResend = false; + String? phone, otp, countryCode, countryName, flagEmoji; + int otpLength = 6; + Timer? timer; + int backPressedTimes = 0; + int focusIndex = 0; + late Size size; + bool isOTPautofilled = false; + ValueNotifier otpResendTime = ValueNotifier( + Constant.otpResendSecond + 1, + ); + TextEditingController otpController = TextEditingController(); + CountryService countryCodeService = CountryService(); + bool isLoginButtonDisabled = true; + String otpIs = ""; + @override + void initState() { + super.initState(); + context.read().fetchSettings( + isAnonymouse: true, + forceRefresh: true, + ); + mobileNumController.addListener( + () { + if (mobileNumController.text.isEmpty) { + isLoginButtonDisabled = true; + setState(() {}); + } else { + isLoginButtonDisabled = false; + setState(() {}); + } + }, + ); + + if (widget.isDeleteAccount ?? false) { + sendVerificationCode(number: HiveUtils.getUserDetails().mobile); + isOtpSent = true; + } + getSimCountry().then((value) { + countryCode = value.phoneCode; + flagEmoji = value.flagEmoji; + setState(() {}); + }); + + for (int i = 0; i < otpLength; i++) { + final TextEditingController controller = TextEditingController(); + final FocusNode focusNode = FocusNode(); + _controllers.add(controller); + _focusNodes.add(focusNode); + } + + Future.delayed(Duration.zero, () { + listenotp(); + }); + + _controllers[otpLength - 1].addListener(() { + if (isOTPautofilled) { + _loginOnOTPFilled(); + } + }); + } + + /// it will return user's sim cards country code + Future getSimCountry() async { + List countryList = countryCodeService.getAll(); + String? simCountryCode; + + try { + simCountryCode = await FlutterSimCountryCode.simCountryCode; + } catch (e) { + log("--don't--remove"); + } + + Country simCountry = countryList.firstWhere( + (element) { + return element.phoneCode == simCountryCode; + }, + orElse: () { + return countryList + .where( + (element) => element.phoneCode == Constant.defaultCountryCode, + ) + .first; + }, + ); + + if (Constant.isDemoModeOn) { + simCountry = countryList + .where((element) => element.phoneCode == Constant.demoCountryCode) + .first; + } + + return simCountry; + } + + void listenotp() { + final SmsAutoFill autoFill = SmsAutoFill(); + + autoFill.code.listen((event) { + if (isOtpSent) { + Future.delayed(Duration.zero, () { + for (int i = 0; i < _controllers.length; i++) { + _controllers[i].text = event[i]; + } + + _focusNodes[focusIndex].unfocus(); + + bool allFilled = true; + for (int i = 0; i < _controllers.length; i++) { + if (_controllers[i].text.isEmpty) { + allFilled = false; + break; + } + } + + // Call the API if all OTP fields are filled + if (allFilled) { + _loginOnOTPFilled(); + } + + if (mounted) setState(() {}); + }); + } + }); + } + + void _loginOnOTPFilled() { + onTapLogin(); + } + + @override + void dispose() { + for (final controller in _controllers) { + controller.dispose(); + } + if (timer != null) { + timer!.cancel(); + } + for (final FocusNode fNode in _focusNodes) { + fNode.dispose(); + } + otpResendTime.dispose(); + mobileNumController.dispose(); + if (isOtpSent) { + SmsAutoFill().unregisterListener(); + } + super.dispose(); + } + + void resendOTP() { + if (isOtpSent) { + context + .read() + .sendOTP(phoneNumber: "+${countryCode!}${mobileNumController.text}"); + } + } + + void startTimer() async { + timer?.cancel(); + timer = Timer.periodic( + const Duration(seconds: 1), + (Timer timer) { + if (otpResendTime.value == 0) { + timer.cancel(); + otpResendTime.value = Constant.otpResendSecond + 1; + setState(() {}); + } else { + otpResendTime.value--; + } + }, + ); + setState(() {}); + } + + @override + Widget build(BuildContext context) { + size = MediaQuery.of(context).size; + + if (context.watch().state + is FetchSystemSettingsSuccess) { + Constant.isDemoModeOn = context + .watch() + .getSetting(SystemSetting.demoMode); + } + + return SafeArea( + child: AnnotatedRegion( + value: SystemUiOverlayStyle( + statusBarColor: context.color.tertiaryColor, + statusBarIconBrightness: Brightness.light, + statusBarBrightness: Brightness.light, + ), + child: GestureDetector( + onTap: () => FocusScope.of(context).unfocus(), + child: WillPopScope( + onWillPop: onBackPress, + child: Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: AppBar( + backgroundColor: Colors.transparent, + elevation: 0, + automaticallyImplyLeading: false, + leadingWidth: 100 + 14, + leading: Builder(builder: (context) { + if (widget.popToCurrent == true) { + return const SizedBox.shrink(); + } + return FittedBox( + fit: BoxFit.none, + child: MaterialButton( + color: context.color.secondaryColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(15), + side: BorderSide( + color: context.color.borderColor, width: 1.5), + ), + elevation: 0, + onPressed: () { + GuestChecker.set(isGuest: true); + HiveUtils.setIsGuest(); + APICallTrigger.trigger(); + HiveUtils.setUserIsNotNew(); + Navigator.pushReplacementNamed( + context, + Routes.main, + arguments: { + "from": "login", + "isSkipped": true, + }, + ); + }, + child: const Text("Skip"), + ), + ); + }), + actions: [ + if (!AppSettings.disableCountrySelection) + Visibility( + visible: !isOtpSent, + child: FittedBox( + fit: BoxFit.none, + child: GestureDetector( + onTap: () { + showCountryCode(); + }, + child: Row( + children: [ + CircleAvatar( + radius: 20, + backgroundColor: context.color.tertiaryColor + .withOpacity(0.1), + child: Text(flagEmoji ?? ""), + ), + UiUtils.getSvg( + AppIcons.downArrow, + color: context.color.textLightColor, + ), + ], + ), + ), + ), + ) + ], + ), + body: buildLoginFields(context), + ), + ), + ), + ), + ); + } + + Future onBackPress() { + if (widget.isDeleteAccount ?? false) { + Navigator.pop(context); + } else { + if (isOtpSent == true) { + setState(() { + isOtpSent = false; + }); + } else { + return Future.value(true); + } + } + return Future.value(false); + } + + Widget buildLoginFields(BuildContext context) { + return BlocConsumer( + listener: (context, state) { + if (state is AccountDeleted) { + context.read().clear(); + Future.delayed(const Duration(milliseconds: 500), () { + Navigator.pushReplacementNamed(context, Routes.login); + }); + } + }, + builder: (context, state) { + return ScrollConfiguration( + behavior: RemoveGlow(), + child: SingleChildScrollView( + padding: EdgeInsetsDirectional.only( + top: MediaQuery.of(context).padding.top + 40, + ), + child: BlocListener( + listener: (context, state) async { + if (state is LoginInProgress) { + Widgets.showLoader(context); + } else { + if (widget.isDeleteAccount ?? false) { + } else { + Widgets.hideLoder(context); + } + } + if (state is LoginFailure) { + HelperUtils.showSnackBarMessage(context, state.errorMessage, + type: MessageType.error); + } + if (state is LoginSuccess) { + FirebaseAnalytics analytics = FirebaseAnalytics.instance; + GuestChecker.set(isGuest: false); + HiveUtils.setIsNotGuest(); + await LoadAppSettings().load(); + context + .read() + .fill(HiveUtils.getUserDetails()); + + APICallTrigger.trigger(); + analytics.setUserId( + id: HiveUtils.getUserDetails().id.toString(), + ); + analytics.setUserProperty( + name: "id", + value: HiveUtils.getUserDetails().id.toString()); + context + .read() + .fetchSettings(isAnonymouse: false, forceRefresh: true); + var settings = context.read(); + + if (!const bool.fromEnvironment("force-disable-demo-mode", + defaultValue: false)) { + Constant.isDemoModeOn = + settings.getSetting(SystemSetting.demoMode) ?? false; + } + if (state.isProfileCompleted) { + HiveUtils.setUserIsAuthenticated(); + HiveUtils.setUserIsNotNew(); + context.read().updateFCM(context); + if (widget.popToCurrent == true) { + Navigator.pop(context); + } else { + Navigator.pushReplacementNamed( + context, + Routes.main, + arguments: {"from": "login"}, + ); + } + } else { + HiveUtils.setUserIsNotNew(); + context.read().updateFCM(context); + + if (widget.popToCurrent == true) { + //Navigate to Edit profile field + Navigator.pushNamed( + context, + Routes.completeProfile, + arguments: { + "from": "login", + "popToCurrent": widget.popToCurrent + }, + ); + } else { + //Navigate to Edit profile field + Navigator.pushReplacementNamed( + context, + Routes.completeProfile, + arguments: { + "from": "login", + "popToCurrent": widget.popToCurrent + }, + ); + } + } + } + }, + child: BlocListener( + listener: (context, state) { + if (state is DeleteAccountProgress) { + Widgets.hideLoder(context); + Widgets.showLoader(context); + } + if (state is AccountDeleted) { + Widgets.hideLoder(context); + } + }, + child: BlocListener( + listener: (context, state) { + if (state is VerifyOtpInProgress) { + Widgets.showLoader(context); + } else { + if (widget.isDeleteAccount ?? false) { + } else { + Widgets.hideLoder(context); + } + } + if (state is VerifyOtpFailure) { + HelperUtils.showSnackBarMessage( + context, + state.errorMessage, + type: MessageType.error, + ); + } + + if (state is VerifyOtpSuccess) { + if (widget.isDeleteAccount ?? false) { + context + .read() + .deleteUserAccount(context); + } else { + context.read().login( + phoneNumber: state.credential.user!.phoneNumber?? AppSettings.appNumber, + fireabseUserId: state.credential.user!.uid, + countryCode: countryCode); + } + } + }, + child: BlocListener( + listener: (context, state) { + print("HERE STATE: $state"); + if (state is SendOtpInProgress) { + Widgets.showLoader(context); + } else { + if (widget.isDeleteAccount ?? false) { + } else { + Widgets.hideLoder(context); + } + } + + if (state is SendOtpSuccess) { + startTimer(); + isOtpSent = true; + if (isOtpSent) { + HelperUtils.showSnackBarMessage( + context, + UiUtils.translate( + context, "optsentsuccessflly"), + type: MessageType.success); + } + otpVerificationId = state.verificationId; + setState(() {}); + + // context.read().setToInitial(); + } + if (state is SendOtpFailure) { + HelperUtils.showSnackBarMessage( + context, state.errorMessage, + type: MessageType.error); + } + }, + child: Form( + key: _formKey, + child: isOtpSent + ? buildOtpVerificationScreen() + : buildLoginScreen(), + ), + ), + ), + ), + )), + ); + }, + ); + } + + Widget buildOtpVerificationScreen() { + String demoOTP() { + if (Constant.isDemoModeOn && + Constant.demoMobileNumber == mobileNumController.text) { + return Constant.demoModeOTP; // If true, return the demo mode OTP. + } else { + return ""; // If false, return an empty string. + } + } + + return Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(UiUtils.translate(context, "enterCodeSend")) + .size(context.font.xxLarge) + .bold(weight: FontWeight.w700) + .color(context.color.textColorDark), + SizedBox( + height: 15.rh(context), + ), + if (widget.isDeleteAccount ?? false) ...[ + Text("${UiUtils.translate(context, "weSentCodeOnNumber")} +${HiveUtils.getUserDetails().mobile}") + .size(context.font.large) + .color(context.color.textColorDark.withOpacity(0.8)), + ] else ...[ + Text("${UiUtils.translate(context, "weSentCodeOnNumber")} +$countryCode${mobileNumController.text}") + .size(context.font.large) + .color(context.color.textColorDark.withOpacity(0.8)), + ], + SizedBox( + height: 20.rh(context), + ), + PinFieldAutoFill( + autoFocus: true, + controller: otpController, + textInputAction: TextInputAction.done, + // cursor: Cursor( + // + // color: context.color.teritoryColor, + // width: 2, + // enabled: true, + // height: context.font.extraLarge, + // ), + decoration: UnderlineDecoration( + lineHeight: 1.5, + colorBuilder: PinListenColorBuilder( + context.color.tertiaryColor, + Colors.grey, + ), + ), + currentCode: demoOTP(), + inputFormatters: [ + FilteringTextInputFormatter.digitsOnly, + ], + keyboardType: Platform.isIOS + ? const TextInputType.numberWithOptions(signed: true) + : const TextInputType.numberWithOptions(), + onCodeSubmitted: (code) { + if (widget.isDeleteAccount ?? false) { + context + .read() + .verifyOTP(verificationId: verificationID, otp: code); + } else { + context + .read() + .verifyOTP(verificationId: otpVerificationId, otp: code); + } + }, + onCodeChanged: (code) { + if (code?.length == 6) { + otpIs = code!; + // setState(() {}); + } + }, + ), + + // loginButton(context), + if (!(timer?.isActive ?? false)) ...[ + SizedBox( + height: 70, + child: Align( + alignment: Alignment.centerLeft, + child: IgnorePointer( + ignoring: timer?.isActive ?? false, + child: setTextbutton( + UiUtils.translate(context, "resendCodeBtnLbl"), + (timer?.isActive ?? false) + ? Theme.of(context).colorScheme.textLightColor + : Theme.of(context).colorScheme.tertiaryColor, + FontWeight.bold, + resendOTP, + context, + ), + ), + ), + ), + ], + + Align( + alignment: Alignment.centerLeft, + child: SizedBox(child: resendOtpTimerWidget()), + ), + + loginButton(context) + ]), + ); + } + + Widget buildLoginScreen() { + return Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(UiUtils.translate(context, "enterYourNumber")) + .size(context.font.xxLarge) + .bold(weight: FontWeight.w700) + .color(context.color.textColorDark), + SizedBox( + height: 15.rh(context), + ), + Text(UiUtils.translate(context, "weSendYouCode")) + .size(context.font.large) + .color(context.color.textColorDark.withOpacity(0.8)), + SizedBox( + height: 41.rh(context), + ), + buildMobileNumberField(), + SizedBox( + height: size.height * 0.05, + ), + buildNextButton(context), + SizedBox( + height: 20.rh(context), + ), + buildTermsAndPrivacyWidget() + ]), + ); + } + + Widget resendOtpTimerWidget() { + return ValueListenableBuilder( + valueListenable: otpResendTime, + builder: (context, value, child) { + if (!(timer?.isActive ?? false)) { + return const SizedBox.shrink(); + } + String formatSecondsToMinutes(int seconds) { + int minutes = seconds ~/ 60; + int remainingSeconds = seconds % 60; + return '$minutes:${remainingSeconds.toString().padLeft(2, '0')}'; + } + + return SizedBox( + height: 70, + child: Align( + alignment: Alignment.centerLeft, + child: RichText( + text: TextSpan( + text: "${UiUtils.translate(context, "resendMessage")} ", + style: TextStyle( + color: Theme.of(context).colorScheme.textColorDark, + letterSpacing: 0.5), + children: [ + TextSpan( + text: formatSecondsToMinutes(int.parse(value.toString())), + style: TextStyle( + color: Theme.of(context).colorScheme.tertiaryColor, + fontWeight: FontWeight.w400, + letterSpacing: 0.5), + ), + TextSpan( + text: UiUtils.translate( + context, + "resendMessageDuration", + ), + style: TextStyle( + color: Theme.of(context).colorScheme.tertiaryColor, + fontWeight: FontWeight.w400, + letterSpacing: 0.5), + ), + ])), + ), + ); + }); + } + + Widget buildMobileNumberField() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 0), + child: TextFormField( + maxLength: 16, + autofocus: true, + buildCounter: (context, + {required currentLength, required isFocused, maxLength}) { + return const SizedBox.shrink(); + }, + decoration: InputDecoration( + border: InputBorder.none, + hintText: "0000000000", + hintStyle: TextStyle( + fontSize: context.font.xxLarge, + color: context.color.textLightColor), + prefixIcon: FittedBox( + fit: BoxFit.scaleDown, + child: Text("+" "$countryCode ").size(context.font.xxLarge), + ), + ), + validator: ((value) { + return Validator.validatePhoneNumber(value); + }), + onChanged: (String value) { + setState(() { + phone = "${countryCode!} $value"; + }); + }, + textAlignVertical: TextAlignVertical.center, + style: TextStyle(fontSize: context.font.xxLarge), + cursorColor: context.color.tertiaryColor, + keyboardType: TextInputType.phone, + controller: mobileNumController, + inputFormatters: [FilteringTextInputFormatter.digitsOnly], + ), + ); + } + + void showCountryCode() { + showCountryPicker( + context: context, + showWorldWide: false, + showPhoneCode: true, + countryListTheme: CountryListThemeData( + borderRadius: BorderRadius.circular(11), + backgroundColor: context.color.backgroundColor, + inputDecoration: InputDecoration( + prefixIcon: Icon(Icons.search), + iconColor: context.color.tertiaryColor, + prefixIconColor: context.color.tertiaryColor, + focusedBorder: OutlineInputBorder( + borderSide: BorderSide(color: context.color.tertiaryColor)), + floatingLabelStyle: TextStyle(color: context.color.tertiaryColor), + labelText: "Search", + border: OutlineInputBorder())), + onSelect: (Country value) { + flagEmoji = value.flagEmoji; + countryCode = value.phoneCode; + setState(() {}); + }, + ); + } + + Future sendVerificationCode({String? number}) async { + if (widget.isDeleteAccount ?? false) { + context.read().sendOTP(phoneNumber: "+$number"); + } + final form = _formKey.currentState; + + if (form == null) return; + form.save(); + // //checkbox value should be 1 before Login/SignUp + if (form.validate()) { + if (widget.isDeleteAccount ?? false) { + } else { + print("see"); + context.read().sendOTP( + phoneNumber: "+${countryCode!}${mobileNumController.text}"); + } + + // // firebaseLoginProcess(); + } + // // showSnackBar( UiUtils.getTranslatedLabel(context, "acceptPolicy"), context); + } + + Future onTapLogin() async { + if (otpIs.length < otpLength) { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "lblEnterOtp"), + messageDuration: 2); + return; + } + + if (widget.isDeleteAccount ?? false) { + context + .read() + .verifyOTP(verificationId: verificationID, otp: otpIs); + } else { + context + .read() + .verifyOTP(verificationId: otpVerificationId, otp: otpIs); + } + } + + Widget buildNextButton(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 0), + child: buildButton( + context, + buttonTitle: UiUtils.translate(context, "next"), + disabled: isLoginButtonDisabled, + onPressed: () { + sendVerificationCode(); + }, + ), + ); + } + + Widget buildLoginButton(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 0), + child: buildButton( + context, + buttonTitle: UiUtils.translate(context, "next"), + onPressed: () { + sendVerificationCode(); + }, + )); + } + + Widget buildButton(BuildContext context, + {double? height, + double? width, + required VoidCallback onPressed, + bool? disabled, + required String buttonTitle}) { + return MaterialButton( + minWidth: width ?? double.infinity, + height: height ?? 56.rh(context), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), + elevation: 0.5, + color: context.color.tertiaryColor, + disabledColor: context.color.textLightColor, + onPressed: (disabled != true) + ? () { + HelperUtils.unfocus(); + onPressed.call(); + } + : null, + child: Text(buttonTitle) + .color(context.color.buttonColor) + .size(context.font.larger), + ); + } + + Widget loginButton(BuildContext context) { + return buildButton( + context, + onPressed: onTapLogin, + buttonTitle: UiUtils.translate( + context, + "comfirmBtnLbl", + ), + ); + } + +//otp + Widget buildTermsAndPrivacyWidget() { + return Align( + alignment: Alignment.bottomCenter, + child: Container( + padding: const EdgeInsetsDirectional.only(top: 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + RichText( + textAlign: TextAlign.center, + text: TextSpan(children: [ + TextSpan( + text: + "${UiUtils.translate(context, "policyAggreementStatement")}\n", + style: Theme.of(context).textTheme.bodyLarge?.copyWith( + color: Theme.of(context).colorScheme.textColorDark, + ), + ), + TextSpan( + text: UiUtils.translate(context, "termsConditions"), + style: Theme.of(context).textTheme.bodyLarge?.copyWith( + color: Theme.of(context).colorScheme.tertiaryColor, + decoration: TextDecoration.underline, + fontWeight: FontWeight.w600), + recognizer: TapGestureRecognizer() + ..onTap = (() { + HelperUtils.goToNextPage( + Routes.profileSettings, + context, + false, + args: { + 'title': + UiUtils.translate(context, "termsConditions"), + 'param': Api.termsAndConditions + }, + ); + }), + ), + TextSpan( + text: " ${UiUtils.translate(context, "and")} ", + style: Theme.of(context).textTheme.bodyLarge?.copyWith( + color: Theme.of(context).colorScheme.textColorDark, + ), + ), + TextSpan( + text: UiUtils.translate(context, "privacyPolicy"), + style: Theme.of(context).textTheme.bodyLarge?.copyWith( + color: Theme.of(context).colorScheme.tertiaryColor, + decoration: TextDecoration.underline, + fontWeight: FontWeight.w600), + recognizer: TapGestureRecognizer() + ..onTap = (() { + HelperUtils.goToNextPage( + Routes.profileSettings, context, false, args: { + 'title': UiUtils.translate(context, "privacyPolicy"), + 'param': Api.privacyPolicy + }); + }), + ), + ]), + ), + ], + ), + ), + ); + } +} diff --git a/lib/Ui/screens/chat/chatAudio/audio_state.dart b/lib/Ui/screens/chat/chatAudio/audio_state.dart new file mode 100644 index 0000000..e420d61 --- /dev/null +++ b/lib/Ui/screens/chat/chatAudio/audio_state.dart @@ -0,0 +1,6 @@ +/// Choosing this method because using proper state management would be an +/// overkill for the scope of this project. +class AudioState { + AudioState._(); + static List files = []; +} diff --git a/lib/Ui/screens/chat/chatAudio/globals.dart b/lib/Ui/screens/chat/chatAudio/globals.dart new file mode 100644 index 0000000..d30a095 --- /dev/null +++ b/lib/Ui/screens/chat/chatAudio/globals.dart @@ -0,0 +1,16 @@ +import 'package:flutter/cupertino.dart'; +import 'package:path_provider/path_provider.dart'; + +class ChatGlobals { + ChatGlobals._(); + + static void init() async { + documentPath = "${(await getApplicationDocumentsDirectory()).path}/"; + } + + static const double borderRadius = 27; + static const double defaultPadding = 8; + static String documentPath = ''; + static GlobalKey audioListKey = + GlobalKey(); +} diff --git a/lib/Ui/screens/chat/chatAudio/widgets/audio_bubble.dart b/lib/Ui/screens/chat/chatAudio/widgets/audio_bubble.dart new file mode 100644 index 0000000..e19bc00 --- /dev/null +++ b/lib/Ui/screens/chat/chatAudio/widgets/audio_bubble.dart @@ -0,0 +1,489 @@ +// import 'package:flutter/material.dart'; +// import 'package:just_audio/just_audio.dart'; +// import 'package:rxdart/rxdart.dart'; + +// import '../../chatScreen.dart'; +// import '../../common.dart'; +// import '../globals.dart'; + +// class AudioBubble extends StatefulWidget { +// const AudioBubble({Key? key, required this.currIndex}) : super(key: key); + +// final int currIndex; + +// @override +// State createState() => _AudioBubbleState(); +// } + +// class _AudioBubbleState extends State { +// //AudioPlayer player = AudioPlayer(); +// //Duration? duration, totalduration; +// String msgid = ""; +// @override +// void initState() { +// super.initState(); +// msgid = chatMessageList[widget.currIndex].messageId!; +// print("key===${widget.key}"); + +// // setAudio(); +// /* player.setFilePath(widget.filepath).then((value) { +// setState(() { +// duration = value; +// }); +// }); */ +// } + +// @override +// Widget build(BuildContext context) { +// return audioWidget(chatMessageList[widget.currIndex].messageId!, +// chatMessageList[widget.currIndex].audioPlayer!); +// /* +// return Container( +// height: 45, +// width: MediaQuery.of(context).size.width / 1.5, +// padding: const EdgeInsets.only(left: 12, right: 18), +// decoration: BoxDecoration( +// borderRadius: BorderRadius.circular(Globals.borderRadius - 10), +// color: Colors.grey.withOpacity(0.2), +// //color: Colors.black, +// ), +// child: Row( +// crossAxisAlignment: CrossAxisAlignment.center, +// children: [ +// StreamBuilder( +// stream: player.playerStateStream, +// builder: (context, snapshot) { +// final playerState = snapshot.data; +// final processingState = playerState?.processingState; +// final playing = playerState?.playing; + + +// if (processingState == ProcessingState.loading || +// processingState == ProcessingState.buffering) { +// return GestureDetector( +// child: const Icon(Icons.play_arrow), +// onTap: () { + +// player.play(); +// }, +// ); +// } else if (playing != true) { +// return GestureDetector( +// child: const Icon(Icons.play_arrow), +// onTap: player.play, +// ); +// } else if (processingState != ProcessingState.completed) { +// return GestureDetector( +// child: const Icon(Icons.pause), +// onTap: player.pause, +// ); +// } else { +// return GestureDetector( +// child: const Icon(Icons.replay), +// onTap: () { +// player.seek(Duration.zero); +// }, +// ); +// } +// }, +// ), +// const SizedBox(width: 8), +// Expanded( +// child: StreamBuilder( +// stream: player.positionStream, +// builder: (context, snapshot) { +// if (snapshot.hasData) { +// return Column( +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// const SizedBox(height: 4), +// LinearProgressIndicator( +// value: snapshot.data!.inMilliseconds / +// (duration?.inMilliseconds ?? 1), +// backgroundColor: Colors.grey, +// color: ColorsRes.appcolor, +// ), +// const SizedBox(height: 6), +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceBetween, +// children: [ +// Text( +// prettyDuration(snapshot.data! == Duration.zero +// ? duration ?? Duration.zero +// : snapshot.data!), +// style: const TextStyle( +// fontSize: 10, +// color: Colors.grey, +// ), +// ), +// Text( +// prettyDuration(totalduration ?? Duration.zero), +// style: const TextStyle( +// fontSize: 10, +// color: Colors.grey, +// ), +// ), +// /*const Text( +// "M4A", +// style: TextStyle( +// fontSize: 10, +// color: Colors.grey, +// ), +// ),*/ +// ], +// ), + +// ], +// ); +// } else { +// return const LinearProgressIndicator(); +// } +// }, +// ), +// ), +// ], +// ), +// ); +// */ +// } +// /* +// @override +// Widget build(BuildContext context) { +// return Padding( +// padding: const EdgeInsets.symmetric(vertical: 4), +// child: Row( +// mainAxisAlignment: MainAxisAlignment.end, +// children: [ +// SizedBox(width: MediaQuery.of(context).size.width * 0.4), +// Expanded( +// child: Container( +// height: 45, +// padding: const EdgeInsets.only(left: 12, right: 18), +// decoration: BoxDecoration( +// borderRadius: BorderRadius.circular(Globals.borderRadius - 10), +// color: Colors.white, +// //color: Colors.black, +// ), +// child: Column( +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// // const SizedBox(height: 4), +// Row( +// children: [ +// StreamBuilder( +// stream: player.playerStateStream, +// builder: (context, snapshot) { +// final playerState = snapshot.data; +// final processingState = playerState?.processingState; +// final playing = playerState?.playing; +// if (processingState == ProcessingState.loading || +// processingState == ProcessingState.buffering) { +// return GestureDetector( +// child: const Icon(Icons.play_arrow), +// onTap: player.play, +// ); +// } else if (playing != true) { +// return GestureDetector( +// child: const Icon(Icons.play_arrow), +// onTap: player.play, +// ); +// } else if (processingState != +// ProcessingState.completed) { +// return GestureDetector( +// child: const Icon(Icons.pause), +// onTap: player.pause, +// ); +// } else { +// return GestureDetector( +// child: const Icon(Icons.replay), +// onTap: () { +// player.seek(Duration.zero); +// }, +// ); +// } +// }, +// ), +// const SizedBox(width: 8), +// Expanded( +// child: StreamBuilder( +// stream: player.positionStream, +// builder: (context, snapshot) { +// if (snapshot.hasData) { +// return Column( +// children: [ +// const SizedBox(height: 4), +// LinearProgressIndicator( +// value: snapshot.data!.inMilliseconds / +// (duration?.inMilliseconds ?? 1), +// ), +// const SizedBox(height: 6), +// Row( +// mainAxisAlignment: +// MainAxisAlignment.spaceBetween, +// children: [ +// Text( +// prettyDuration( +// snapshot.data! == Duration.zero +// ? duration ?? Duration.zero +// : snapshot.data!), +// style: const TextStyle( +// fontSize: 10, +// color: Colors.grey, +// ), +// ), +// const Text( +// "M4A", +// style: TextStyle( +// fontSize: 10, +// color: Colors.grey, +// ), +// ), +// ], +// ), +// ], +// ); +// } else { +// return const LinearProgressIndicator(); +// } +// }, +// ), +// ), +// ], +// ), +// ], +// ), +// ), +// ), +// ], +// ), +// ); +// } */ + +// String prettyDuration(Duration d) { +// var min = d.inMinutes < 10 ? "0${d.inMinutes}" : d.inMinutes.toString(); +// var sec = d.inSeconds < 10 ? "0${d.inSeconds}" : d.inSeconds.toString(); +// return "$min:$sec"; +// } + +// audioWidget(String msgid, AudioPlayer? player) { +// // print("map-$msgid-$audioplaysermap"); +// Map? map = audioplaysermap[msgid]; +// //AudioPlayer player = map!["player"]; +// if (player == null) return const SizedBox.shrink(); +// return Container( +// //height: 50, +// width: MediaQuery.of(context).size.width / 1.5, +// padding: const EdgeInsets.only(left: 8, right: 18), +// decoration: BoxDecoration( +// borderRadius: BorderRadius.circular(Globals.borderRadius - 10), +// color: Colors.grey.withOpacity(0.2), +// //color: Colors.black, +// ), +// child: Row(crossAxisAlignment: CrossAxisAlignment.center, children: [ +// StreamBuilder( +// stream: player.playerStateStream, +// builder: (context, snapshot) { +// final playerState = snapshot.data; +// final processingState = playerState?.processingState; +// bool playing = playerState?.playing ?? false; +// print("state---$playing==$processingState"); + +// if (processingState == ProcessingState.completed && +// player.position != Duration.zero) { +// player.seek(Duration.zero); +// player.pause(); +// } + +// if (processingState == ProcessingState.loading || +// processingState == ProcessingState.buffering) { +// return IconButton( +// icon: const Icon(Icons.play_arrow), +// iconSize: 30.0, +// onPressed: () {}, +// ); +// } else if (!playing || +// processingState == ProcessingState.completed) { +// return IconButton( +// icon: const Icon(Icons.play_arrow), +// iconSize: 30.0, +// onPressed: () { +// /* if (currPlayingAudioId != msgid && +// currAudioplayer != null && +// currAudioplayer!.playing) { +// currAudioplayer!.stop(); +// } */ +// if (currPlayingAudioId != msgid && +// audioplaysermap.containsKey(currPlayingAudioId) && +// audioplaysermap[currPlayingAudioId]!["player"] != null && +// audioplaysermap[currPlayingAudioId]!["player"].playing) { +// audioplaysermap[currPlayingAudioId]!["player"].pause(); +// } +// print("click===${player.duration}"); +// if (processingState == ProcessingState.completed && +// player.position != Duration.zero) { +// player.seek(Duration.zero); +// } +// player.play(); +// print("click===**${player.playing}"); +// currPlayingAudioId = msgid; +// currAudioplayer = player; +// }, +// ); +// } else if (processingState != ProcessingState.completed) { +// return IconButton( +// icon: const Icon(Icons.pause), +// iconSize: 30.0, +// onPressed: player.pause, +// ); +// } else { +// return IconButton( +// icon: const Icon(Icons.replay), +// iconSize: 64.0, +// onPressed: () => player.seek(Duration.zero), +// ); +// } +// }, +// ), +// Expanded( +// child: StreamBuilder( +// //stream: _positionDataStream, +// stream: getPositionStream(player), +// builder: (context, snapshot) { +// final positionData = snapshot.data; +// return SeekBar( +// duration: positionData?.duration ?? Duration.zero, +// position: positionData?.position ?? Duration.zero, +// bufferedPosition: +// positionData?.bufferedPosition ?? Duration.zero, +// onChangeEnd: player.seek, +// ); +// }, +// ), +// ) +// ]), +// ); +// } + +// Stream getPositionStream(AudioPlayer player) { +// Stream data = +// Rx.combineLatest3( +// player.positionStream, +// player.bufferedPositionStream, +// player.durationStream, +// (position, bufferedPosition, duration) => PositionData( +// position, bufferedPosition, duration ?? Duration.zero)); +// return data; +// } +// } +// /* + +// audioWidget(String msgid, AudioPlayer? player) { +// print("map-$msgid-$audioplaysermap"); +// Map? map = audioplaysermap[msgid]; +// //AudioPlayer player = map!["player"]; +// if (player == null) return const SizedBox.shrink(); +// return Row(mainAxisSize: MainAxisSize.min, children: [ +// CircleAvatar( +// radius: 30, +// child: Column(mainAxisSize: MainAxisSize.min, children: [ +// const Icon(Icons.headphones), +// Text( +// Constant.getDurationFormat(player.duration!), +// style: +// Theme.of(context).textTheme.caption!.apply(color: Colors.white), +// ) +// ]), +// ), +// StreamBuilder( +// stream: player.playerStateStream, +// builder: (context, snapshot) { +// final playerState = snapshot.data; +// final processingState = playerState?.processingState; +// bool playing = playerState?.playing ?? false; +// print("state---$playing==$processingState"); + +// if (processingState == ProcessingState.completed && +// player.position != Duration.zero) { +// player.seek(Duration.zero); +// player.pause(); +// } + +// if (processingState == ProcessingState.loading || +// processingState == ProcessingState.buffering) { +// return Container( +// margin: const EdgeInsets.all(8.0), +// width: 30.0, +// height: 30.0, +// child: const CircularProgressIndicator(), +// ); +// } else if (!playing || processingState == ProcessingState.completed) { +// return IconButton( +// icon: const Icon(Icons.play_arrow), +// iconSize: 30.0, +// onPressed: () { +// /* if (currPlayingAudioId != msgid && +// currAudioplayer != null && +// currAudioplayer!.playing) { +// currAudioplayer!.stop(); +// } */ +// if (currPlayingAudioId != msgid && +// audioplaysermap.containsKey(currPlayingAudioId) && +// audioplaysermap[currPlayingAudioId]!["player"] != null && +// audioplaysermap[currPlayingAudioId]!["player"].playing) { +// audioplaysermap[currPlayingAudioId]!["player"].pause(); +// } +// print("click===${player.duration}"); +// if (processingState == ProcessingState.completed && +// player.position != Duration.zero) { +// player.seek(Duration.zero); +// } +// player.play(); +// print("click===**${player.playing}"); +// currPlayingAudioId = msgid; +// currAudioplayer = player; +// }, +// ); +// } else if (processingState != ProcessingState.completed) { +// return IconButton( +// icon: const Icon(Icons.pause), +// iconSize: 30.0, +// onPressed: player.pause, +// ); +// } else { +// return IconButton( +// icon: const Icon(Icons.replay), +// iconSize: 64.0, +// onPressed: () => player.seek(Duration.zero), +// ); +// } +// }, +// ), +// Expanded( +// child: StreamBuilder( +// //stream: _positionDataStream, +// stream: getPositionStream(player), +// builder: (context, snapshot) { +// final positionData = snapshot.data; +// return SeekBar( +// duration: positionData?.duration ?? Duration.zero, +// position: positionData?.position ?? Duration.zero, +// bufferedPosition: positionData?.bufferedPosition ?? Duration.zero, +// onChangeEnd: player.seek, +// ); +// }, +// ), +// ) +// ]); +// } + +// Stream getPositionStream(AudioPlayer player) { +// Stream data = +// Rx.combineLatest3( +// player.positionStream, +// player.bufferedPositionStream, +// player.durationStream, +// (position, bufferedPosition, duration) => PositionData( +// position, bufferedPosition, duration ?? Duration.zero)); +// return data; +// } +// */ \ No newline at end of file diff --git a/lib/Ui/screens/chat/chatAudio/widgets/chat_widget.dart b/lib/Ui/screens/chat/chatAudio/widgets/chat_widget.dart new file mode 100644 index 0000000..3ab6033 --- /dev/null +++ b/lib/Ui/screens/chat/chatAudio/widgets/chat_widget.dart @@ -0,0 +1,446 @@ +// ignore_for_file: invalid_use_of_protected_member, invalid_use_of_visible_for_testing_member + +import 'dart:io'; + +import 'package:any_link_preview/any_link_preview.dart'; +import 'package:audioplayers/audioplayers.dart'; +import 'package:dio/dio.dart'; +import 'package:ebroker/Ui/screens/chat/chat_screen.dart'; +import 'package:ebroker/app/app_theme.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:open_filex/open_filex.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../../../../data/cubits/chatCubits/send_message.dart'; +import '../../../../../data/cubits/system/app_theme_cubit.dart'; +import '../../../../../utils/Extensions/extensions.dart'; +import '../../../../../utils/Notification/chat_message_handler.dart'; +import '../../../../../utils/helper_utils.dart'; +import '../../../../../utils/hive_utils.dart'; +import '../../../../../utils/ui_utils.dart'; + +part "parts/attachment.part.dart"; +part "parts/linkpreview.part.dart"; +part "parts/recordmsg.part.dart"; + +////Please don't make chaneges without sufficent knowledege in this file. otherwise you will be responsable for it +/// +//This will store and ensure that msg is already sent so we don't have to send it again +Set sentMessages = {}; + +class ChatMessage extends StatefulWidget { + final String message; + final String senderId; + final bool isSentByMe; + final bool? isSentNow; + final String propertyId; + final String reciverId; + final bool isChatAudio; + final bool hasAttachment; + final dynamic audioFile; + final String time; + final dynamic attachment; + final Function(int id)? onHold; + + const ChatMessage( + {super.key, + this.isSentNow, + required this.message, + required this.isSentByMe, + required this.isChatAudio, + this.audioFile, + this.attachment, + required this.senderId, + required this.time, + required this.hasAttachment, + required this.propertyId, + required this.reciverId, + this.onHold}); + + @override + State createState() => ChatMessageState(); + + Map toMap() { + Map data = {}; + data['key'] = key; + data['message'] = message; + data['isSentNow'] = isSentNow; + data['isSentByMe'] = isSentByMe; + data['isChatAudio'] = isChatAudio; + data['senderId'] = senderId; + data['propertyId'] = propertyId; + data['reciverId'] = reciverId; + data['hasAttachment'] = hasAttachment; + data['audioFile'] = audioFile; + data['time'] = time; + data['attachment'] = attachment; + return data; + } + + factory ChatMessage.fromMap(Map json) { + var chat = ChatMessage( + key: json['key'], + message: json['message'], + isSentByMe: json['isSentByMe'], + isChatAudio: json['isChatAudio'], + senderId: json['senderId'], + audioFile: json['audioFile'], + attachment: json['attachment'], + time: json['time'], + hasAttachment: json['hasAttachment'], + propertyId: json['propertyId'], + reciverId: json['reciverId']); + return chat; + } +} + +class ChatMessageState extends State + with AutomaticKeepAliveClientMixin { + bool isChatSent = false; + bool selectedMessage = false; + static bool isMounted = false; + String? link; + final ValueNotifier _linkAddNotifier = ValueNotifier(""); + @override + void initState() { + ///isSentNow is for check if we are not appending messages multiple time + if (widget.isSentByMe && + (widget.isSentNow == true) && + isChatSent == false) { + if (!sentMessages.contains(widget.key)) { + context.read().send( + senderId: HiveUtils.getUserId().toString(), + recieverId: widget.reciverId, + attachment: widget.attachment, + message: widget.message, + proeprtyId: widget.propertyId, + audio: widget.audioFile, + ); + } + sentMessages.add(widget.key); + + isMounted = true; + } + + super.initState(); + } + + String _emptyTextIfAttachmentHasNoText() { + if (widget.hasAttachment) { + if (widget.message == "[File]") { + return ""; + } else { + return widget.message; + } + } else { + return widget.message; + } + } + + bool _isLink(String input) { + ///This will check if text contains link + final matcher = RegExp( + r"(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)"); + return matcher.hasMatch(input); + } + + List _replaceLink() { + //This function will make part of text where link starts. we put invisible charector so we can split it with it + final linkPattern = RegExp( + r"(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)"); + + ///This is invisible charector [You can replace it with any special chareactor which generally nobody use] + const String substringIdentifier = "‎"; + + ///This will find and add invisible charector in prefix and suffix + String splitMapJoin = _emptyTextIfAttachmentHasNoText().splitMapJoin( + linkPattern, + onMatch: (match) { + return substringIdentifier + match.group(0)! + substringIdentifier; + }, + onNonMatch: (match) { + return match; + }, + ); + //finally we split it with invisible charector so it will become list + return splitMapJoin.split(substringIdentifier); + } + + List _matchAstric(String data) { + var pattern = RegExp(r"\*(.*?)\*"); + + String mapJoin = data.splitMapJoin( + pattern, + onMatch: (p0) { + return "‎${p0.group(0)!}‎"; + }, + onNonMatch: (p0) { + return p0; + }, + ); + + return mapJoin.split("‎"); + } + + @override + Widget build(BuildContext context) { + super.build(context); + + bool isDark = + context.watch().state.appTheme == AppTheme.dark; + + return GestureDetector( + onLongPress: () { + selectedMessageid.value = (widget.key as ValueKey).value; + selectedRecieverId.value = int.parse(widget.reciverId); + showDeletebutton.value = true; + }, + onTap: () { + selectedMessage = false; + }, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 7), + child: Container( + alignment: + widget.isSentByMe ? Alignment.centerRight : Alignment.centerLeft, + width: MediaQuery.of(context).size.width, + margin: EdgeInsets.only( + // top: MediaQuery.of(context).size.height * 0.007, + right: widget.isSentByMe ? 20 : 0, + left: widget.isSentByMe ? 0 : 20, + ), + child: Column( + crossAxisAlignment: widget.isSentByMe + ? CrossAxisAlignment.end + : CrossAxisAlignment.start, + children: [ + Container( + constraints: + BoxConstraints(maxWidth: context.screenWidth * 0.74), + decoration: BoxDecoration( + color: selectedMessage == true + ? (widget.isSentByMe == true + ? context.color.tertiaryColor.darken(45) + : context.color.secondaryColor.darken(45)) + : (widget.isSentByMe + ? const Color(0xffEEEEEE) + : context.color.secondaryColor), + borderRadius: BorderRadius.circular(8) + + // BorderRadius.only( + // topRight: widget.isSentByMe + // ? Radius.zero + // : const Radius.circular(10), + // topLeft: widget.isSentByMe + // ? const Radius.circular(10) + // : Radius.zero, + // bottomLeft: const Radius.circular(10), + // bottomRight: const Radius.circular(10), + // ), + ), + child: Wrap( + runAlignment: WrapAlignment.end, + alignment: WrapAlignment.end, + crossAxisAlignment: WrapCrossAlignment.end, + children: [ + Padding( + padding: const EdgeInsets.all(12), + child: Container( + child: widget.isChatAudio + ? RecordMessage( + url: widget.audioFile ?? "", + isSentByMe: widget.isSentByMe, + ) + : Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (widget.hasAttachment) + AttachmentMessage( + url: widget.attachment, + isSentByMe: widget.isSentByMe), + + //This is preview builder for image + ValueListenableBuilder( + valueListenable: _linkAddNotifier, + builder: (context, dynamic value, c) { + if (value == null) { + return const SizedBox.shrink(); + } + + return FutureBuilder( + future: AnyLinkPreview.getMetadata( + link: value), + builder: (context, + AsyncSnapshot snapshot) { + if (snapshot.connectionState == + ConnectionState.done) { + if (snapshot.data == null) { + return const SizedBox.shrink(); + } + return LinkPreviw( + snapshot: snapshot, + link: value, + ); + } + return const SizedBox.shrink(); + }, + ); + }), + SelectableText.rich( + TextSpan( + style: TextStyle( + color: (isDark && !widget.isSentByMe) + ? context.color.buttonColor + : Colors.black), + children: _replaceLink().map((data) { + //This will add link to msg + if (_isLink(data)) { + //This will notify priview object that it has link + _linkAddNotifier.value = data; + _linkAddNotifier.notifyListeners(); + + return TextSpan( + text: data, + recognizer: TapGestureRecognizer() + ..onTap = () async { + await launchUrl( + Uri.parse(data)); + }, + style: TextStyle( + decoration: + TextDecoration.underline, + color: Colors.blue[800])); + } + //This will make text bold + return TextSpan( + text: "", + children: + _matchAstric(data).map((text) { + if (text + .toString() + .startsWith("*") && + text.toString().endsWith("*")) { + return TextSpan( + text: + text.replaceAll("*", ""), + style: TextStyle( + color: (isDark && + !widget + .isSentByMe) + ? context + .color.buttonColor + : Colors.black, + fontWeight: + FontWeight.w800)); + } + + return TextSpan( + text: text, + style: TextStyle( + color: (isDark && + !widget.isSentByMe) + ? context + .color.buttonColor + : Colors.black)); + }).toList(), + style: TextStyle( + color: widget.isSentByMe + ? context.color.secondaryColor + : context + .color.textColorDark), + ); + }).toList(), + ), + style: TextStyle( + color: (isDark && !widget.isSentByMe) + ? context.color.buttonColor + : Colors.black), + ), + ], + ), + ), + ), + if (widget.isSentByMe && widget.isSentNow == true) ...[ + BlocConsumer( + listener: (context, state) { + if (state is SendMessageSuccess) { + isChatSent = true; + + ///Value which we added locally + ValueKey? uniqueIdentifier = widget.key as ValueKey; + + ////We were added local id so whenit completed we will replace it with server message id + + ChatMessageHandlerOLD.updateMessageId( + uniqueIdentifier.value, state.messageId); + + WidgetsBinding.instance + .addPostFrameCallback((timeStamp) { + if (mounted) setState(() {}); + }); + } + }, + builder: (context, state) { + if (state is SendMessageInProgress) { + return Padding( + padding: + const EdgeInsets.only(right: 5.0, bottom: 2), + child: Icon( + Icons.watch_later_outlined, + size: context.font.smaller, + color: Colors.black, + ), + ); + } + + if (state is SendMessageFailed) { + return Padding( + padding: + const EdgeInsets.only(right: 5.0, bottom: 2), + child: Icon( + Icons.error, + size: context.font.smaller, + color: Colors.black, + ), + ); + } + return const SizedBox.shrink(); + }, + ) + ] + ], + ), + ), + const SizedBox( + height: 5, + ), + Padding( + padding: const EdgeInsets.only(right: 3.0), + child: Text( + (DateTime.parse(widget.time)) + .toLocal() + .toIso8601String() + .toString() + .formatDate(format: "hh:mm aa"), // + style: TextStyle( + color: widget.isSentByMe + ? context.color.textLightColor + : context.color.textLightColor), + ).size(context.font.smaller), + ), + ], + ), + ), + ), + ); + } + + @override + bool get wantKeepAlive => true; +} diff --git a/lib/Ui/screens/chat/chatAudio/widgets/flow_shader.dart b/lib/Ui/screens/chat/chatAudio/widgets/flow_shader.dart new file mode 100644 index 0000000..051fce0 --- /dev/null +++ b/lib/Ui/screens/chat/chatAudio/widgets/flow_shader.dart @@ -0,0 +1,101 @@ +import 'package:flutter/material.dart'; + +class FlowShader extends StatefulWidget { + const FlowShader({ + Key? key, + required this.child, + this.duration = const Duration(seconds: 2), + this.direction = Axis.horizontal, + this.flowColors = const [Colors.white, Colors.black], + }) : assert(flowColors.length == 2), + super(key: key); + + final Widget child; + final Axis direction; + final Duration duration; + final List flowColors; + + @override + FlowShaderState createState() => FlowShaderState(); +} + +class FlowShaderState extends State + with SingleTickerProviderStateMixin { + late AnimationController controller; + late Animation animation1; + late Animation animation2; + late Animation animation3; + + @override + void dispose() { + controller.dispose(); + super.dispose(); + } + + @override + void initState() { + super.initState(); + controller = AnimationController( + vsync: this, + duration: widget.duration, + ); + final TweenSequenceItem seqbw = TweenSequenceItem( + tween: ColorTween( + begin: widget.flowColors.last, + end: widget.flowColors.first, + ), + weight: 1, + ); + final TweenSequenceItem seqwb = TweenSequenceItem( + tween: ColorTween( + begin: widget.flowColors.first, + end: widget.flowColors.last, + ), + weight: 1, + ); + animation1 = TweenSequence([seqbw, seqwb]).animate( + CurvedAnimation( + parent: controller, + curve: const Interval(0.0, 0.45, curve: Curves.linear), + ), + ); + animation2 = TweenSequence([seqbw, seqwb]).animate( + CurvedAnimation( + parent: controller, + curve: const Interval(0.15, 0.75, curve: Curves.linear), + ), + ); + animation3 = TweenSequence([seqbw, seqwb]).animate( + CurvedAnimation( + parent: controller, + curve: const Interval(0.45, 1, curve: Curves.linear), + ), + ); + controller.repeat(); + controller.addListener(() { + setState(() {}); + }); + } + + @override + Widget build(BuildContext context) { + return ShaderMask( + shaderCallback: (rect) { + return LinearGradient( + colors: [ + animation3.value, + animation2.value, + animation1.value, + ], + begin: widget.direction == Axis.horizontal + ? Alignment.centerLeft + : Alignment.topCenter, + end: widget.direction == Axis.horizontal + ? Alignment.centerRight + : Alignment.bottomCenter, + ).createShader(rect); + }, + child: widget.child, + ); + } +} diff --git a/lib/Ui/screens/chat/chatAudio/widgets/lottie_animation.dart b/lib/Ui/screens/chat/chatAudio/widgets/lottie_animation.dart new file mode 100644 index 0000000..51c2aff --- /dev/null +++ b/lib/Ui/screens/chat/chatAudio/widgets/lottie_animation.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:lottie/lottie.dart'; + +class LottieAnimation extends StatefulWidget { + const LottieAnimation({Key? key}) : super(key: key); + + @override + State createState() => _LottieAnimationState(); +} + +class _LottieAnimationState extends State + with SingleTickerProviderStateMixin { + late AnimationController controller; + + @override + void initState() { + super.initState(); + controller = AnimationController(vsync: this); + } + + @override + void dispose() { + controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Container( + child: Lottie.asset( + 'assets/animation/dustbin_grey.json', + controller: controller, + onLoaded: (composition) { + controller + ..duration = composition.duration + ..forward(); + debugPrint("Lottie Duration: ${composition.duration}"); + }, + height: 40, + width: 40, + ), + ); + } +} diff --git a/lib/Ui/screens/chat/chatAudio/widgets/parts/attachment.part.dart b/lib/Ui/screens/chat/chatAudio/widgets/parts/attachment.part.dart new file mode 100644 index 0000000..7669a24 --- /dev/null +++ b/lib/Ui/screens/chat/chatAudio/widgets/parts/attachment.part.dart @@ -0,0 +1,158 @@ +part of "../chat_widget.dart"; + +class AttachmentMessage extends StatefulWidget { + final String url; + final bool isSentByMe; + const AttachmentMessage( + {super.key, required this.url, required this.isSentByMe}); + + @override + State createState() => _AttachmentMessageState(); +} + +class _AttachmentMessageState extends State { + bool isFileDownloading = false; + double persontage = 0; + String getExtentionOfFile() { + return widget.url.toString().split(".").last; + } + + String getFileName() { + return widget.url.toString().split("/").last; + } + + Future downloadFile() async { + await Permission.storage.request(); + try { + if (!(await Permission.storage.isGranted)) { + HelperUtils.showSnackBarMessage( + context, "Please give storage permission"); + + return; + } + + String? downloadPath = await getDownloadPath(); + await Dio().download( + widget.url, + "${downloadPath!}/${getFileName()}", + onReceiveProgress: (int count, int total) async { + persontage = (count) / total; + + if (persontage == 1) { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "fileSavedIn"), + type: MessageType.success); + + await OpenFilex.open("$downloadPath/${getFileName()}"); + } + setState(() {}); + }, + ); + } catch (e) { + print("Download Error is: $e"); + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "errorFileSave"), + type: MessageType.success); + } + } + + Future getDownloadPath() async { + Directory? directory; + try { + if (Platform.isIOS) { + directory = await getApplicationDocumentsDirectory(); + } else { + directory = Directory('/storage/emulated/0/Download'); + // Put file in global download folder, if for an unknown reason it didn't exist, we fallback + // ignore: avoid_slow_async_io + if (!await directory.exists()) { + directory = await getExternalStorageDirectory(); + } + } + } catch (err) { + if (kDebugMode) { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "fileNotSaved"), + type: MessageType.success); + } + } + return directory?.path; + } + + @override + Widget build(BuildContext context) { + // if (tempIssue != null) { + // return GestureDetector( + // onTap: () async { + // await Clipboard.setData(ClipboardData(text: tempIssue.toString())); + // }, + // child: Text(tempIssue.toString())); + // } + return Row( + children: [ + InkWell( + onTap: () async { + await downloadFile(); + }, + child: Container( + height: 50, + width: 50, + alignment: Alignment.center, + decoration: BoxDecoration( + color: context.color.secondaryColor.withOpacity(0.064), + borderRadius: BorderRadius.circular(10), + border: + Border.all(color: context.color.borderColor, width: 1.5)), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (persontage != 0 && persontage != 1) ...[ + Stack( + alignment: Alignment.center, + children: [ + CircularProgressIndicator( + strokeWidth: 1.7, + color: context.color.tertiaryColor, + value: persontage, + ), + const Icon(Icons.close) + ], + ), + ] else ...[ + Text(getExtentionOfFile().toString().toUpperCase()).color( + widget.isSentByMe + ? Colors.black + : context.color.textColorDark), + Icon( + Icons.download, + size: 14, + color: context.color.tertiaryColor, + ) + ] + ], + ), + ), + ), + const SizedBox( + width: 5, + ), + Expanded( + child: Container( + height: 50, + alignment: Alignment.centerLeft, + child: Padding( + padding: const EdgeInsets.all(4.0), + child: Text(getFileName().toString()) + .setMaxLines( + lines: 1, + ) + .color(widget.isSentByMe + ? Colors.black + : context.color.textColorDark), + ), + ), + ), + ], + ); + } +} diff --git a/lib/Ui/screens/chat/chatAudio/widgets/parts/linkpreview.part.dart b/lib/Ui/screens/chat/chatAudio/widgets/parts/linkpreview.part.dart new file mode 100644 index 0000000..e415eb5 --- /dev/null +++ b/lib/Ui/screens/chat/chatAudio/widgets/parts/linkpreview.part.dart @@ -0,0 +1,77 @@ +part of "../chat_widget.dart"; + +class LinkPreviw extends StatefulWidget { + final String link; + final AsyncSnapshot snapshot; + const LinkPreviw({ + super.key, + required this.snapshot, + required this.link, + }); + + @override + State createState() => _LinkPreviwState(); +} + +class _LinkPreviwState extends State { + final ValueNotifier _errorChecker = ValueNotifier(false); + + @override + void dispose() { + _errorChecker.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () async { + await launchUrl(Uri.parse(widget.link), + mode: LaunchMode.externalApplication); + }, + child: Container( + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(4), + color: context.color.tertiaryColor), + child: Padding( + padding: const EdgeInsets.all(3.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ValueListenableBuilder( + valueListenable: _errorChecker, + builder: (context, value, child) { + if (value == true) { + return const SizedBox.shrink(); + } + + return AspectRatio( + aspectRatio: 1 / 0.5, + child: Image.network( + (widget.snapshot.data as Metadata).image!, + fit: BoxFit.cover, + errorBuilder: (context, error, stackTrace) { + WidgetsBinding.instance + .addPostFrameCallback((timeStamp) { + _errorChecker.value = true; + }); + return const SizedBox.shrink(); + }, + ), + ); + }), + Text((widget.snapshot.data as Metadata).title ?? "") + .color(context.color.primaryColor.withOpacity(0.9)) + .size(context.font.small), + Text((widget.snapshot.data as Metadata).desc ?? "") + .setMaxLines(lines: 1) + .color(context.color.primaryColor.withOpacity(0.8)) + .size(context.font.smaller) + ], + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/chat/chatAudio/widgets/parts/recordmsg.part.dart b/lib/Ui/screens/chat/chatAudio/widgets/parts/recordmsg.part.dart new file mode 100644 index 0000000..7f38616 --- /dev/null +++ b/lib/Ui/screens/chat/chatAudio/widgets/parts/recordmsg.part.dart @@ -0,0 +1,98 @@ +part of "../chat_widget.dart"; + +class RecordMessage extends StatefulWidget { + final String url; + final bool isSentByMe; + const RecordMessage({super.key, required this.url, required this.isSentByMe}); + + @override + State createState() => _RecordMessageState(); +} + +class _RecordMessageState extends State { + AudioPlayer audioPlayer = AudioPlayer(); + bool isPlaying = false; + int position = 0; + int durationChanged = 0; + + @override + void initState() { + audioPlayer.onDurationChanged.listen((Duration event) { + durationChanged = event.inSeconds; + setState(() {}); + }); + + audioPlayer.onPlayerStateChanged.listen((PlayerState event) { + isPlaying = event == PlayerState.playing; + + setState(() {}); + }); + audioPlayer.onPositionChanged.listen((Duration event) { + position = event.inSeconds; + setState(() {}); + }); + // audioPlayer.seek(const Duration(seconds: 1)); + + super.initState(); + } + + @override + void dispose() { + audioPlayer.dispose(); + super.dispose(); + } + + @override + void setState(VoidCallback fn) { + if (mounted) { + super.setState(fn); + } + } + + @override + Widget build(BuildContext context) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + GestureDetector( + onTap: () { + if (!isPlaying) { + if (widget.url.startsWith(("http")) || + widget.url.startsWith("https")) { + audioPlayer.play(UrlSource(widget.url)); + } else { + audioPlayer.play(DeviceFileSource(widget.url)); + } + } else { + audioPlayer.stop(); + } + }, + child: Icon( + isPlaying ? Icons.pause : Icons.play_arrow, + color: widget.isSentByMe + ? context.color.primaryColor + : context.color.tertiaryColor, + )), + Slider( + activeColor: widget.isSentByMe + ? context.color.primaryColor + : context.color.tertiaryColor, + inactiveColor: widget.isSentByMe + ? context.color.primaryColor.withOpacity(0.3) + : context.color.tertiaryColor.withOpacity(0.3), + value: position.toDouble(), + onChanged: (v) { + audioPlayer.seek(Duration(seconds: v.toInt())); + setState(() {}); + }, + min: 0, + max: durationChanged.toDouble(), + ), + if ((durationChanged - position) != 0) + Text((durationChanged - position).toString()).color(widget.isSentByMe + ? context.color.primaryColor + : context.color.textColorDark) + ], + ); + } +} diff --git a/lib/Ui/screens/chat/chatAudio/widgets/record_button.dart b/lib/Ui/screens/chat/chatAudio/widgets/record_button.dart new file mode 100644 index 0000000..d87e0be --- /dev/null +++ b/lib/Ui/screens/chat/chatAudio/widgets/record_button.dart @@ -0,0 +1,386 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:flutter_vibrate/flutter_vibrate.dart'; +import 'package:record/record.dart'; + +import '../../../../../utils/Extensions/extensions.dart'; +import '../../../../../utils/ui_utils.dart'; +import '../audio_state.dart'; +import '../globals.dart'; +import 'flow_shader.dart'; +import 'lottie_animation.dart'; + +class RecordButton extends StatefulWidget { + const RecordButton( + {Key? key, + required this.controller, + required this.callback, + required this.isSending}) + : super(key: key); + + final AnimationController controller; + final Function(dynamic path)? callback; + final bool isSending; + + @override + State createState() => _RecordButtonState(); +} + +class _RecordButtonState extends State { + static const double size = 43; + + final double lockerHeight = 200; + double timerWidth = 0; + + late Animation buttonScaleAnimation; + late Animation timerAnimation; + late Animation lockerAnimation; + + DateTime? startTime; + Timer? timer; + String recordDuration = "00:00"; + Record? record; + + bool isLocked = false; + bool showLottie = false; + + @override + void initState() { + super.initState(); + buttonScaleAnimation = Tween(begin: 1, end: 2).animate( + CurvedAnimation( + parent: widget.controller, + curve: const Interval(0.0, 0.6, curve: Curves.elasticInOut), + ), + ); + widget.controller.addListener(() { + setState(() {}); + }); + } + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + timerWidth = + MediaQuery.of(context).size.width - 2 * ChatGlobals.defaultPadding - 4; + timerAnimation = + Tween(begin: timerWidth + ChatGlobals.defaultPadding, end: 0) + .animate(CurvedAnimation( + parent: widget.controller, + curve: const Interval(0.2, 1, curve: Curves.easeIn), + )); + lockerAnimation = + Tween(begin: lockerHeight + ChatGlobals.defaultPadding, end: 0) + .animate(CurvedAnimation( + parent: widget.controller, + curve: const Interval(0.2, 1, curve: Curves.easeIn), + )); + } + + @override + void dispose() { + if (record != null) record!.dispose(); + timer?.cancel(); + timer = null; + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Stack( + clipBehavior: Clip.none, + children: [ + (timer?.isActive ?? false) ? lockSlider() : const SizedBox.shrink(), + (timer?.isActive ?? false) ? cancelSlider() : const SizedBox.shrink(), + audioButton(), + if (isLocked) timerLocked(), + ], + ); + } + + Widget lockSlider() { + return Positioned( + bottom: -lockerAnimation.value, + child: Container( + height: lockerHeight, + width: size, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(ChatGlobals.borderRadius), + color: context.color.secondaryColor, + //color: Colors.black, + ), + padding: const EdgeInsets.symmetric(vertical: 15), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + //const FaIcon(FontAwesomeIcons.lock, size: 20), + const Icon(Icons.lock, size: 20), + const SizedBox(height: 8), + FlowShader( + direction: Axis.vertical, + child: Column( + children: const [ + Icon(Icons.keyboard_arrow_up), + Icon(Icons.keyboard_arrow_up), + Icon(Icons.keyboard_arrow_up), + ], + ), + ), + ], + ), + ), + ); + } + + Widget cancelSlider() { + return Positioned( + right: -timerAnimation.value, + child: Container( + height: size, + width: timerWidth, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(ChatGlobals.borderRadius), + color: context.color.primaryColor, + //color: Colors.black, + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 15), + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.min, + children: [ + showLottie ? const LottieAnimation() : Text(recordDuration), + FlowShader( + duration: const Duration(seconds: 3), + flowColors: [ + context.color.tertiaryColor, + const Color(0xFF9E9E9E) + ], + child: Row( + children: [ + const Icon(Icons.keyboard_arrow_left), + Text(UiUtils.translate(context, "slidetocancel")), + const SizedBox( + width: 10, + ), + ], + ), + //flowColors: const [Colors.white, Colors.grey], + ), + const SizedBox(width: size), + ], + ), + ), + ), + ); + } + + Widget timerLocked() { + return Positioned( + right: 0, + child: Container( + height: size, + width: timerWidth, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(ChatGlobals.borderRadius), + color: context.color.secondaryColor, + //color: Colors.black, + ), + child: Padding( + padding: const EdgeInsets.only(left: 15, right: 25), + child: GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () async { + /*Vibrate.feedback(FeedbackType.success); + timer?.cancel(); + timer = null; + startTime = null; + recordDuration = "00:00"; + + var filePath = await Record().stop(); + AudioState.files.add(filePath!); + Globals.audioListKey.currentState! + .insertItem(AudioState.files.length - 1); + debugPrint(filePath);*/ + saveFile(); + setState(() { + isLocked = false; + }); + }, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text(recordDuration), + const SizedBox( + width: 5, + ), + FlowShader( + duration: const Duration(seconds: 3), + flowColors: [context.color.tertiaryColor, Colors.grey], + child: Text(UiUtils.translate(context, "taploacktostop")), + //flowColors: const [Colors.white, Colors.grey], + ), + const Center( + child: Icon( + Icons.lock, + size: 18, + color: Colors.green, + ), + /* child: FaIcon( + FontAwesomeIcons.lock, + size: 18, + color: Colors.green, + ), */ + ), + ], + ), + ), + ), + ), + ); + } + + Widget audioButton() { + return GestureDetector( + child: Transform.scale( + scale: buttonScaleAnimation.value, + //child: Widgets.chatSendBtnWidget(widget.isSending, isaudio: true), + child: Container( + height: size, + width: size, + clipBehavior: Clip.hardEdge, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: context.color.tertiaryColor, + //color: Theme.of(context).primaryColor, + ), + child: widget.isSending + ? const CircularProgressIndicator() + : const Icon( + Icons.mic, + color: Colors.white, + ), + ), + ), + onLongPressDown: (_) { + if (widget.isSending) return; + debugPrint("onLongPressDown"); + widget.controller.forward(); + }, + onLongPressEnd: (details) async { + if (widget.isSending) return; + debugPrint("onLongPressEnd"); + + if (isCancelled(details.localPosition, context)) { + if (await Vibrate.canVibrate) Vibrate.feedback(FeedbackType.heavy); + + timer?.cancel(); + timer = null; + startTime = null; + recordDuration = "00:00"; + + setState(() { + showLottie = true; + }); + + Timer(const Duration(milliseconds: 1440), () async { + widget.controller.reverse(); + debugPrint("Cancelled recording"); + var filePath = await record!.stop(); + debugPrint(filePath); + File(filePath!).delete(); + debugPrint("Deleted $filePath"); + showLottie = false; + }); + } else if (checkIsLocked(details.localPosition)) { + widget.controller.reverse(); + + if (await Vibrate.canVibrate) Vibrate.feedback(FeedbackType.heavy); + debugPrint("Locked recording"); + debugPrint(details.localPosition.dy.toString()); + setState(() { + isLocked = true; + }); + } else { + widget.controller.reverse(); + saveFile(); + /*Vibrate.feedback(FeedbackType.success); + + timer?.cancel(); + timer = null; + startTime = null; + recordDuration = "00:00"; + + var filePath = await Record().stop(); + AudioState.files.add(filePath!); + Globals.audioListKey.currentState! + .insertItem(AudioState.files.length - 1); + debugPrint(filePath);*/ + } + }, + onLongPressCancel: () { + if (widget.isSending) return; + debugPrint("onLongPressCancel"); + widget.controller.reverse(); + }, + onLongPress: () async { + if (widget.isSending) return; + debugPrint("onLongPress"); + if (await Vibrate.canVibrate) Vibrate.feedback(FeedbackType.success); + if (await Record().hasPermission()) { + record = Record(); + await record!.start( + path: + "${ChatGlobals.documentPath}audio_${DateTime.now().millisecondsSinceEpoch}.m4a", + encoder: AudioEncoder.aacLc, + //encoder: AudioEncoder.AAC, + bitRate: 128000, + samplingRate: 44100, + ); + startTime = DateTime.now(); + // print("duration==$recordDuration"); + timer = Timer.periodic(const Duration(seconds: 1), (_) { + final minDur = DateTime.now().difference(startTime!).inMinutes; + final secDur = DateTime.now().difference(startTime!).inSeconds % 60; + String min = minDur < 10 ? "0$minDur" : minDur.toString(); + String sec = secDur < 10 ? "0$secDur" : secDur.toString(); + // print("duration==$min:$sec"); + setState(() { + recordDuration = "$min:$sec"; + }); + }); + } + }, + ); + } + + Future saveFile() async { + if (await Vibrate.canVibrate) Vibrate.feedback(FeedbackType.success); + timer?.cancel(); + timer = null; + startTime = null; + recordDuration = "00:00"; + + var filePath = await Record().stop(); + AudioState.files.add(filePath!); + if (ChatGlobals.audioListKey.currentState != null) { + ChatGlobals.audioListKey.currentState! + .insertItem(AudioState.files.length - 1); + } + debugPrint(filePath); + if (widget.callback != null) { + widget.callback!(filePath); + } + } + + bool checkIsLocked(Offset offset) { + return (offset.dy < -35); + } + + bool isCancelled(Offset offset, BuildContext context) { + return (offset.dx < -(MediaQuery.of(context).size.width * 0.2)); + } +} diff --git a/lib/Ui/screens/chat/chat_list_screen.dart b/lib/Ui/screens/chat/chat_list_screen.dart new file mode 100644 index 0000000..d6da7d9 --- /dev/null +++ b/lib/Ui/screens/chat/chat_list_screen.dart @@ -0,0 +1,405 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:ebroker/Ui/screens/main_activity.dart'; +import 'package:ebroker/app/app.dart'; +import 'package:ebroker/app/default_app_setting.dart'; +import 'package:ebroker/data/cubits/chatCubits/delete_message_cubit.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:shimmer/shimmer.dart'; + +import '../../../app/app_theme.dart'; +import '../../../data/cubits/chatCubits/get_chat_users.dart'; +import '../../../data/cubits/chatCubits/load_chat_messages.dart'; +import '../../../data/cubits/system/app_theme_cubit.dart'; +import '../../../data/model/chat/chated_user_model.dart'; +import '../../../utils/AppIcon.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/Notification/notification_service.dart'; +import '../../../utils/api.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/Erros/no_internet.dart'; +import '../widgets/Erros/something_went_wrong.dart'; +import '../widgets/shimmerLoadingContainer.dart'; +import 'chat_screen.dart'; + +class ChatListScreen extends StatefulWidget { + const ChatListScreen({super.key}); + static Route route(RouteSettings settings) { + return BlurredRouter( + builder: (context) { + return const ChatListScreen(); + }, + ); + } + + @override + State createState() => _ChatListScreenState(); +} + +class _ChatListScreenState extends State + with AutomaticKeepAliveClientMixin { + @override + void initState() { + chatScreenController.addListener(() { + if (chatScreenController.isEndReached()) { + if (context.read().hasMoreData()) { + context.read().loadMore(); + } + } + }); + + context.read().fetch(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + super.build(context); + return AnnotatedRegion( + value: SystemUiOverlayStyle( + systemNavigationBarDividerColor: Colors.transparent, + systemNavigationBarIconBrightness: + context.watch().state.appTheme == AppTheme.dark + ? Brightness.light + : Brightness.dark, + // + statusBarColor: Theme.of(context).colorScheme.secondaryColor, + statusBarBrightness: + context.watch().state.appTheme == AppTheme.dark + ? Brightness.dark + : Brightness.light, + statusBarIconBrightness: + context.watch().state.appTheme == AppTheme.dark + ? Brightness.light + : Brightness.dark), + child: Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: UiUtils.buildAppBar( + context, + title: UiUtils.translate(context, "message"), + ), + body: BlocBuilder( + builder: (context, state) { + if (state is GetChatListFailed) { + if (state.error is ApiException) { + if (state.error.errorMessage == "no-internet") { + return NoInternet(onRetry: () { + context.read().fetch(); + }); + } + } + + return const SomethingWentWrong(); + } + + if (state is GetChatListInProgress) { + return buildChatListLoadingShimmer(); + } + if (state is GetChatListSuccess) { + if (state.chatedUserList.isEmpty) { + return Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + SvgPicture.asset(AppIcons.no_chat_found), + const SizedBox( + height: 20, + ), + Text(UiUtils.translate(context, "noChats")) + .color(context.color.tertiaryColor) + .size(context.font.extraLarge) + .bold(weight: FontWeight.w600), + const SizedBox( + height: 14, + ), + Text("startConversation".translate(context)) + .size(context.font.larger) + .centerAlign(), + ], + ), + ); + } + return Column( + children: [ + Expanded( + child: ListView.builder( + controller: chatScreenController, + shrinkWrap: true, + itemCount: state.chatedUserList.length, + padding: const EdgeInsetsDirectional.all(16), + itemBuilder: ( + context, + index, + ) { + ChatedUser chatedUser = state.chatedUserList[index]; + + return Padding( + padding: const EdgeInsets.only(top: 9.0), + child: ChatTile( + id: chatedUser.userId.toString(), + propertyId: chatedUser.propertyId.toString(), + profilePicture: chatedUser.profile ?? "", + userName: chatedUser.name ?? "", + propertyPicture: chatedUser.titleImage ?? "", + propertyName: chatedUser.title ?? "", + pendingMessageCount: "5", + ), + ); + }), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ); + } + + return Container(); + }, + ), + ), + ); + } + + Widget buildChatListLoadingShimmer() { + return ListView.builder( + itemCount: 10, + physics: BouncingScrollPhysics(), + padding: const EdgeInsetsDirectional.all(16), + itemBuilder: (context, index) { + return Padding( + padding: const EdgeInsets.only(top: 9.0), + child: Container( + height: 74, + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Row( + children: [ + Shimmer.fromColors( + baseColor: Theme.of(context).colorScheme.shimmerBaseColor, + highlightColor: + Theme.of(context).colorScheme.shimmerHighlightColor, + child: Stack( + children: [ + const SizedBox( + width: 58, + height: 58, + ), + GestureDetector( + onTap: () {}, + child: Container( + width: 42, + height: 42, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + color: Colors.grey, + border: Border.all( + width: 1.5, color: Colors.white), + borderRadius: BorderRadius.circular(10)), + ), + ), + PositionedDirectional( + end: 0, + bottom: 0, + child: GestureDetector( + onTap: () {}, + child: Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: Colors.white, width: 2)), + child: CircleAvatar( + radius: 15, + backgroundColor: context.color.tertiaryColor, + // backgroundImage: NetworkImage(profilePicture), + ), + ), + ), + ) + ], + ), + ), + const SizedBox( + width: 10, + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + CustomShimmer( + height: 10, + borderRadius: 5, + width: context.screenWidth * 0.53, + ), + CustomShimmer( + height: 10, + borderRadius: 5, + width: context.screenWidth * 0.3, + ) + ], + ) + ], + ), + ), + ), + ); + }); + } + + @override + bool get wantKeepAlive => false; +} + +class ChatTile extends StatelessWidget { + final String profilePicture; + final String userName; + final String propertyPicture; + final String propertyName; + final String propertyId; + final String pendingMessageCount; + final String id; + const ChatTile({ + super.key, + required this.profilePicture, + required this.userName, + required this.propertyPicture, + required this.propertyName, + required this.pendingMessageCount, + required this.id, + required this.propertyId, + }); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + Navigator.push(context, BlurredRouter( + builder: (context) { + currentlyChatingWith = id; + currentlyChatPropertyId = propertyId; + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => LoadChatMessagesCubit(), + ), + BlocProvider( + create: (context) => DeleteMessageCubit(), + ), + ], + child: Builder(builder: (context) { + return ChatScreen( + profilePicture: profilePicture, + proeprtyTitle: propertyName, + userId: id, + propertyImage: propertyPicture, + userName: userName, + propertyId: propertyId, + ); + }), + ); + }, + )); + }, + child: AbsorbPointer( + absorbing: true, + child: Container( + height: 74, + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: context.color.borderColor, + width: 1.5, + ), + ), + width: MediaQuery.of(context).size.width, + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Row( + children: [ + Stack( + children: [ + const SizedBox( + width: 58, + height: 58, + ), + GestureDetector( + onTap: () { + UiUtils.showFullScreenImage(context, + provider: + CachedNetworkImageProvider(propertyPicture)); + }, + child: Container( + width: 42, + height: 42, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10)), + child: CachedNetworkImage( + imageUrl: propertyPicture, + fit: BoxFit.cover, + ), + ), + ), + PositionedDirectional( + end: 0, + bottom: 0, + child: GestureDetector( + onTap: () { + UiUtils.showFullScreenImage(context, + provider: + CachedNetworkImageProvider(profilePicture)); + }, + child: Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + border: + Border.all(color: Colors.white, width: 2)), + child: profilePicture == "" + ? CircleAvatar( + radius: 15, + backgroundColor: context.color.tertiaryColor, + child: LoadAppSettings().svg( + appSettings.placeholderLogo!, + color: context.color.buttonColor, + ), + ) + : CircleAvatar( + radius: 15, + backgroundColor: context.color.tertiaryColor, + backgroundImage: NetworkImage(profilePicture), + ), + ), + ), + ) + ], + ), + const SizedBox( + width: 10, + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + userName, + ).bold().color(context.color.textColorDark), + Expanded( + child: Text( + propertyName, + ) + .color(context.color.textColorDark) + .setMaxLines(lines: 1), + ), + ], + ), + ) + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/chat/chat_screen.dart b/lib/Ui/screens/chat/chat_screen.dart new file mode 100644 index 0000000..ad4f268 --- /dev/null +++ b/lib/Ui/screens/chat/chat_screen.dart @@ -0,0 +1,1000 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/blueprint.dart'; +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/registerar.dart'; +import 'package:ebroker/Ui/screens/ChatNew/model.dart'; +import 'package:ebroker/Ui/screens/widgets/blurred_dialoge_box.dart'; +import 'package:ebroker/app/app.dart'; +import 'package:ebroker/data/cubits/chatCubits/delete_message_cubit.dart'; +import 'package:ebroker/utils/customHeroAnimation.dart'; +import 'package:file_picker/file_picker.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:permission_handler/permission_handler.dart'; + +import '../../../app/default_app_setting.dart'; +import '../../../app/routes.dart'; +import '../../../data/Repositories/property_repository.dart'; +import '../../../data/cubits/chatCubits/load_chat_messages.dart'; +import '../../../data/cubits/chatCubits/send_message.dart'; +import '../../../data/helper/widgets.dart'; +import '../../../data/model/data_output.dart'; +import '../../../data/model/property_model.dart'; +import '../../../utils/AppIcon.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/Notification/chat_message_handler.dart'; +import '../../../utils/Notification/notification_service.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/hive_utils.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/transparant_route.dart'; +import 'chatAudio/widgets/chat_widget.dart'; +import 'chatAudio/widgets/record_button.dart'; + +int totalMessageCount = 0; + +ValueNotifier showDeletebutton = ValueNotifier(false); + +ValueNotifier selectedMessageid = ValueNotifier(-5); +ValueNotifier selectedRecieverId = ValueNotifier(-5); + +class ChatScreen extends StatefulWidget { + final String? from; + final String profilePicture; + final String userName; + final String propertyImage; + final String proeprtyTitle; + final String userId; //for which we are messageing + final String propertyId; + const ChatScreen( + {super.key, + required this.profilePicture, + required this.userName, + required this.propertyImage, + required this.proeprtyTitle, + required this.userId, + required this.propertyId, + this.from}); + @override + State createState() => _ChatScreenState(); +} + +class _ChatScreenState extends State + with SingleTickerProviderStateMixin { + late final AnimationController _recordButtonAnimation = AnimationController( + vsync: this, + duration: const Duration( + milliseconds: 500, + ), + ); + TextEditingController controller = TextEditingController(); + PlatformFile? messageAttachment; + bool isFetchedFirstTime = false; + double scrollPositionWhenLoadMore = 0; + late Stream notificationStream = notificationPermission(); + late StreamSubscription notificationStreamSubsctription; + bool isNotificationPermissionGranted = true; + ValueNotifier showRecordButton = ValueNotifier(true); + late final ScrollController _pageScrollController = ScrollController() + ..addListener( + () { + ContextMenuController.removeAny(); + if (_pageScrollController.offset >= + _pageScrollController.position.maxScrollExtent) { + if (context.read().hasMoreChat()) { + // setState(() {}); + context.read().loadMore(); + } + } + }, + ); + @override + void initState() { + Permission.storage.request(); + + context.read().load( + userId: int.parse( + widget.userId, + ), + propertyId: int.parse( + widget.propertyId, + ), + ); + + currentlyChatPropertyId = widget.propertyId; + currentlyChatingWith = widget.userId; + notificationStreamSubsctription = + notificationStream.listen((PermissionStatus permissionStatus) { + isNotificationPermissionGranted = permissionStatus.isGranted; + if (mounted) { + // setState(() {}); + } + }); + controller.addListener(() { + if (controller.text.isNotEmpty) { + showRecordButton.value = false; + } else { + showRecordButton.value = true; + } + }); + super.initState(); + } + + Stream notificationPermission() async* { + while (true) { + await Future.delayed(const Duration(seconds: 5)); + yield* Permission.notification.request().asStream(); + } + } + + @override + void dispose() { + showRecordButton.dispose(); + _recordButtonAnimation.dispose(); + + notificationStreamSubsctription.cancel(); + super.dispose(); + } + + List supportedImageTypes = [ + 'jpeg', + 'jpg', + 'png', + 'gif', + 'webp', + 'animated_webp', + ]; + + String getSendMessageType( + String? audio, dynamic attachment, String? message) { + if (audio != null) { + return "audio"; + } else { + if (attachment != null && (message != null)) { + return "file_and_text"; + } else if (attachment != null && message == null) { + return "file"; + } else { + return "text"; + } + } + } + + @override + Widget build(BuildContext context) { + var chatBackground = "assets/chat_background/light.svg"; + var attachmentMIME = ""; + if (messageAttachment != null) { + attachmentMIME = + (messageAttachment?.path?.split(".").last.toLowerCase()) ?? ""; + } + // return Container(); + + return WillPopScope( + onWillPop: () async { + currentlyChatingWith = ""; + showDeletebutton.value = false; + ChatMessageHandler.flush(); + currentlyChatPropertyId = ""; + notificationStreamSubsctription.cancel(); + ChatMessageHandlerOLD.flushMessages(); + return true; + }, + child: SafeArea( + child: Scaffold( + backgroundColor: context.color.backgroundColor, + bottomNavigationBar: Padding( + padding: EdgeInsets.only( + bottom: MediaQuery.of(context).viewInsets.bottom, + ), + child: GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () {}, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (messageAttachment != null) ...[ + if (supportedImageTypes.contains(attachmentMIME)) ...[ + Container( + decoration: BoxDecoration( + color: context.color.secondaryColor, + border: Border.all( + color: context.color.borderColor, width: 1.5)), + child: Row( + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: SizedBox( + height: 100, + width: 100, + child: GestureDetector( + onTap: () { + UiUtils.showFullScreenImage(context, + provider: FileImage(File( + messageAttachment?.path ?? "", + ))); + }, + child: Image.file( + File( + messageAttachment?.path ?? "", + ), + fit: BoxFit.cover, + ), + )), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(messageAttachment?.name ?? ""), + Text(HelperUtils.getFileSizeString( + bytes: messageAttachment!.size, + ).toString()), + ], + ) + ], + ), + ) + ] else ...[ + Container( + color: context.color.secondaryColor, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: AttachmentMessage( + url: messageAttachment!.path!, isSentByMe: true), + ), + ), + ], + const SizedBox( + height: 10, + ), + ], + BottomAppBar( + padding: const EdgeInsetsDirectional.all(10), + elevation: 5, + color: context.color.secondaryColor, + child: Directionality( + textDirection: TextDirection.ltr, + child: Row( + children: [ + Expanded( + child: TextField( + controller: controller, + cursorColor: context.color.tertiaryColor, + onTap: () { + showDeletebutton.value = false; + }, + textInputAction: TextInputAction.newline, + minLines: 1, + maxLines: null, + decoration: InputDecoration( + suffixIconColor: context.color.textLightColor, + suffixIcon: IconButton( + onPressed: () async { + if (messageAttachment == null) { + FilePickerResult? pickedAttachment = + await FilePicker.platform.pickFiles( + allowMultiple: false, + ); + + messageAttachment = + pickedAttachment?.files.first; + showRecordButton.value = false; + setState(() {}); + } else { + messageAttachment = null; + showRecordButton.value = true; + setState(() {}); + } + }, + icon: messageAttachment != null + ? const Icon(Icons.close) + : Transform.rotate( + angle: -3.14 / 5.0, + child: const Icon( + Icons.attachment, + ), + ), + ), + contentPadding: const EdgeInsets.symmetric( + vertical: 6, horizontal: 8), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(20), + borderSide: BorderSide( + color: context.color.tertiaryColor)), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(20), + borderSide: BorderSide( + color: context.color.tertiaryColor)), + hintText: UiUtils.translate( + context, + "writeHere", + ), + ), + ), + ), + SizedBox( + width: 9.5, + ), + ValueListenableBuilder( + valueListenable: showRecordButton, + builder: (context, bool show, Widget? child) { + if (show == true) { + return RecordButton( + controller: _recordButtonAnimation, + callback: (path) { + if (Constant.isDemoModeOn) { + HelperUtils.showSnackBarMessage( + context, + UiUtils.translate(context, + "thisActionNotValidDemo")); + return; + } + ChatMessageModel chatMessageModel = + ChatMessageModel( + message: controller.text, + isSentByMe: true, + audio: path, + senderId: HiveUtils.getUserId() + .toString(), + id: DateTime.now().toString(), + propertyId: widget.propertyId, + receiverId: widget.userId, + chatMessageType: + getSendMessageType( + path, + messageAttachment, + controller.text), + date: DateTime.now().toString(), + isSentNow: true); + ChatMessageHandler.add( + chatMessageModel, + ); + _pageScrollController.jumpTo( + _pageScrollController.offset - 10); + //This is adding Chat widget in stream with BlocProvider , because we will need to do api process to store chat message to server, when it will be added to list it's initState method will be called + // ChatMessageHandlerOLD.add(BlocProvider( + // create: (context) => SendMessageCubit(), + // child: ChatMessage( + // key: ValueKey( + // DateTime.now().toString().toString()), + // message: "[AUDIO]", + // senderId: HiveUtils.getUserId().toString(), + // propertyId: widget.propertyId, + // reciverId: widget.userId, + // time: DateTime.now().toString(), + // hasAttachment: false, + // isSentByMe: true, + // isChatAudio: true, + // isSentNow: true, + // audioFile: path, + // ), + // )); + totalMessageCount++; + + setState(() {}); + }, + isSending: false, + ); + } + return GestureDetector( + onTap: () { + showDeletebutton.value = false; + + //if file is selected then user can send message without text + if (controller.text.trim().isEmpty && + messageAttachment == null) return; + //This is adding Chat widget in stream with BlocProvider , because we will need to do api process to store chat message to server, when it will be added to list it's initState method will be called + if (Constant.isDemoModeOn) { + HelperUtils.showSnackBarMessage( + context, + UiUtils.translate(context, + "thisActionNotValidDemo")); + return; + } + ChatMessageModel chatMessageModel = + ChatMessageModel( + message: controller.text, + isSentByMe: true, + file: messageAttachment?.path, + senderId: HiveUtils.getUserId() + .toString(), + id: DateTime.now().toString(), + propertyId: widget.propertyId, + receiverId: widget.userId, + chatMessageType: getSendMessageType( + null, + messageAttachment, + controller.text.isEmpty + ? null + : controller.text), + date: DateTime.now().toString(), + isSentNow: true); + ChatMessageHandler.add(chatMessageModel); + controller.text = ""; + messageAttachment = null; + + // ChatMessageHandlerOLD.add( + // BlocProvider( + // key: ValueKey( + // DateTime.now().toString().toString()), + // create: (context) => SendMessageCubit(), + // child: ChatMessage( + // key: ValueKey( + // DateTime.now().toString().toString()), + // message: controller.text, + // hasAttachment: messageAttachment != null, + // senderId: + // HiveUtils.getUserId().toString(), + // propertyId: widget.propertyId, + // reciverId: widget.userId, + // time: DateTime.now().toString(), + // isSentByMe: true, + // isChatAudio: false, + // isSentNow: true, + // attachment: messageAttachment?.path, + // ), + // ), + // ); + totalMessageCount++; + messageAttachment = null; + if (mounted) setState(() {}); + }, + child: CircleAvatar( + radius: 20, + backgroundColor: + context.color.tertiaryColor, + child: Icon( + Icons.send, + color: context.color.buttonColor, + ), + ), + ); + }), + ], + ), + ), + ), + ], + ), + ), + ), + appBar: AppBar( + centerTitle: false, + automaticallyImplyLeading: false, + leading: FittedBox( + fit: BoxFit.none, + child: GestureDetector( + onTap: () { + Navigator.pop(context); + }, + child: Padding( + padding: const EdgeInsets.only(left: 20.0), + child: SvgPicture.asset( + AppIcons.arrowLeft, + color: context.color.tertiaryColor, + height: 24, + ), + ), + ), + ), + leadingWidth: 24, + backgroundColor: context.color.secondaryColor, + elevation: 0, + iconTheme: IconThemeData(color: context.color.tertiaryColor), + bottom: isNotificationPermissionGranted + ? null + : PreferredSize( + preferredSize: const Size.fromHeight(25), + child: FittedBox( + fit: BoxFit.cover, + child: Container( + width: context.screenWidth, + color: const Color.fromARGB(255, 151, 151, 151), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text("turnOnNotification".translate(context)), + ), + ), + ), + ), + actions: [ + ValueListenableBuilder( + valueListenable: showDeletebutton, + builder: (context, value, child) { + if (value == false) return const SizedBox.shrink(); + return IconButton( + onPressed: () { + UiUtils.showBlurredDialoge( + context, + dialoge: BlurredDialogBox( + onAccept: () async { + context.read().delete( + (selectedMessageid.value), + receiverId: selectedRecieverId.value); + showDeletebutton.value = false; + }, + title: "areYouSure".translate(context), + content: Text( + "msgWillNotRecover".translate(context), + ), + ), + ); + }, + icon: SvgPicture.asset( + AppIcons.delete, + color: context.color.tertiaryColor, + )); + }, + ), + if (widget.from != "property") + FittedBox( + fit: BoxFit.none, + child: GestureDetector( + onTap: () async { + try { + Widgets.showLoader(context); + PropertyRepository fetch = PropertyRepository(); + DataOutput dataOutput = await fetch + .fetchPropertyFromPropertyId(widget.propertyId); + Future.delayed( + Duration.zero, + () { + Widgets.hideLoder(context); + + HelperUtils.goToNextPage( + Routes.propertyDetails, context, false, + args: { + 'propertyData': dataOutput.modelList[0], + 'propertiesList': dataOutput.modelList, + 'fromMyProperty': false, + }); + }, + ); + } catch (e) { + Widgets.hideLoder(context); + } + }, + child: ClipRRect( + borderRadius: BorderRadius.circular(8), + child: SizedBox( + width: 40, + height: 40, + child: Image.network( + widget.propertyImage, + fit: BoxFit.cover, + ), + ), + ), + ), + ), + const SizedBox( + width: 18, + ), + ], + title: FittedBox( + fit: BoxFit.none, + child: Row( + children: [ + widget.profilePicture == "" + ? CircleAvatar( + backgroundColor: context.color.tertiaryColor, + child: LoadAppSettings().svg( + appSettings.placeholderLogo!, + color: context.color.buttonColor, + ), + ) + : GestureDetector( + onTap: () { + Navigator.push( + context, + TransparantRoute( + barrierDismiss: true, + builder: (context) { + return GestureDetector( + onTap: () { + Navigator.pop(context); + }, + child: Container( + color: const Color.fromARGB(69, 0, 0, 0), + ), + ); + }, + ), + ); + }, + child: CustomImageHeroAnimation( + type: CImageType.Network, + image: widget.profilePicture, + child: CircleAvatar( + backgroundImage: CachedNetworkImageProvider( + widget.profilePicture, + ), + ), + ), + ), + const SizedBox( + width: 10, + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + width: context.screenWidth * 0.35, + child: Text(widget.userName) + .color(context.color.textColorDark) + .size(context.font.normal), + ), + SizedBox( + width: context.screenWidth * 0.35, + child: Text(widget.proeprtyTitle) + .size(context.font.small) + .color(context.color.textColorDark), + ), + ], + ) + ], + ), + ), + ), + body: Stack( + children: [ + SvgPicture.asset( + chatBackground, + height: MediaQuery.of(context).size.height, + fit: BoxFit.cover, + width: MediaQuery.of(context).size.width, + ), + BlocListener( + listener: (context, state) { + if (state is DeleteMessageSuccess) { + ChatMessageHandlerOLD.removeMessage(state.id); + showDeletebutton.value = false; + } + }, + child: GestureDetector( + onTap: () { + showDeletebutton.value = false; + }, + child: BlocConsumer( + listener: (context, state) { + if (state is LoadChatMessagesSuccess) { + ChatMessageHandler.fillMessages(state.messages); + + // ChatMessageHandlerOLD.loadMessages( + // state.messages, context); + totalMessageCount = state.messages.length; + isFetchedFirstTime = true; + setState(() {}); + } + + if (state is LoadChatMessagesFailed) {} + }, + builder: (context, state) { + return Stack( + children: [ + Column( + children: [ + if (state is LoadChatMessagesSuccess) ...{ + if (state.isLoadingMore) ...{ + Center( + child: SizedBox( + width: 20, + height: 20, + child: UiUtils.progress()), + ), + } + }, + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 18), + child: StreamBuilder( + stream: ChatMessageHandler.listenMessages(), + builder: (context, snapshot) { + if (snapshot.connectionState == + ConnectionState.active) { + return SizedBox( + height: context.screenHeight, + child: ListView.builder( + reverse: true, + shrinkWrap: true, + addAutomaticKeepAlives: true, + controller: _pageScrollController, + physics: + const BouncingScrollPhysics(), + itemBuilder: (context, index) { + List messageList = + snapshot.data!; + messageList = + messageList.toList(); + DateTime? currentDate = + messageList[index] + .message + ?.date + ?.parseAsDate(); + + DateTime? nextDate; + + if (messageList.length > + index + 1) { + nextDate = + messageList[index + 1] + .message + ?.date + ?.parseAsDate(); + } + + Widget dateChip = getDateChip( + currentDate!, nextDate); + + if (index == + messageList.length - 1) { + dateChip = Padding( + padding: const EdgeInsets.all( + 10.0), + child: Text(currentDate + .toString() + .formatDate()), + ); + } + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => + SendMessageCubit(), + ), + BlocProvider( + create: (context) => + DeleteMessageCubit(), + ), + ], + child: Column( + children: [ + dateChip, + RenderMessage( + key: Key( + messageList[index] + .id), + message: + messageList[index]), + ], + ), + ); + }, + // separatorBuilder: (context, index) { + // List messageList = + // snapshot.data!; + // messageList = messageList.toList(); + // + // String? currentMessageDate = + // messageList[index].message!.date; + // + // String? nextMessageDate = + // messageList[index + 1].message!.date; + // + // DateTime current = + // DateTime.parse(currentMessageDate!); + // DateTime next = + // DateTime.parse(nextMessageDate!); + // if (index == 4) { + // next = DateTime.parse(nextMessageDate!) + // .add(Duration(days: 2)); + // } + // bool sameDate = isSameDate(current, next); + // + // if (sameDate == true) { + // return Center( + // child: Text(messageList[index] + // .message! + // .date! + + // "($sameDate)")); + // } + // return SizedBox.shrink(); + // }, + itemCount: snapshot.data!.length, + ), + ); + } + return Container(); + }, + ), + ), + ), + ], + ), + // StreamBuilder( + // stream: ChatMessageHandler.getChatStream(), + // builder: (context, AsyncSnapshot snapshot) { + // Widget? loadingMoreWidget; + // if (state is LoadChatMessagesSuccess) { + // if (state.isLoadingMore) { + // loadingMoreWidget = Text( + // UiUtils.getTranslatedLabel( + // context, "loading")); + // } + // } + // + // if (snapshot.connectionState == + // ConnectionState.active || + // snapshot.connectionState == + // ConnectionState.done) { + // return Column( + // children: [ + // loadingMoreWidget ?? + // const SizedBox.shrink(), + // Expanded( + // child: ListView.builder( + // reverse: true, + // shrinkWrap: true, + // physics: + // const BouncingScrollPhysics(), + // addAutomaticKeepAlives: true, + // controller: _pageScrollController, + // itemCount: snapshot.data.length, + // padding: + // const EdgeInsets.only(bottom: 10), + // itemBuilder: (context, index) { + // dynamic chat = + // (snapshot.data as List) + // .elementAt(index); + // + // return chat; + // }, + // ), + // ), + // ], + // ); + // } + // + // return Container(); + // }), + if ((state is LoadChatMessagesInProgress)) + Center( + child: UiUtils.progress(), + ) + ], + ); + }, + ), + ), + ), + ], + ), + ), + ), + ); + } +} + +Widget getDateChip(DateTime currentDate, DateTime? nextDate) { + if (nextDate == null) { + return const SizedBox.shrink(); + } + + bool sameDate = currentDate.isSameDate(nextDate); + + if (sameDate == false) { + return Padding( + padding: const EdgeInsets.all(10.0), + child: Text(currentDate.toString().formatDate()).size(15), + ); + } + + return const SizedBox.shrink(); +} + +class ChatInfoWidget extends StatelessWidget { + final String propertyTitleImage; + final String propertyTitle; + final String propertyId; + const ChatInfoWidget( + {super.key, + required this.propertyTitleImage, + required this.propertyTitle, + required this.propertyId}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + backgroundColor: Colors.transparent, + elevation: 0, + iconTheme: IconThemeData(color: context.color.tertiaryColor), + ), + backgroundColor: Colors.transparent, + body: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + height: context.screenHeight * 0.46, + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(10)), + width: context.screenWidth, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(10), + child: GestureDetector( + onTap: () { + UiUtils.showFullScreenImage(context, + provider: + CachedNetworkImageProvider(propertyTitleImage)); + }, + child: CachedNetworkImage( + imageUrl: propertyTitleImage, + width: context.screenWidth, + fit: BoxFit.cover, + height: context.screenHeight * 0.3, + ), + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Align( + alignment: Alignment.centerLeft, + child: Text(propertyTitle) + .setMaxLines( + lines: 2, + ) + .size( + context.font.larger.rf( + context, + ), + ), + ), + ), + const Spacer(), + Padding( + padding: const EdgeInsets.all(8.0), + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.buildButton(context, onPressed: () async { + try { + Widgets.showLoader(context); + PropertyRepository fetch = PropertyRepository(); + DataOutput dataOutput = await fetch + .fetchPropertyFromPropertyId(propertyId); + Future.delayed( + Duration.zero, + () { + Widgets.hideLoder(context); + + HelperUtils.goToNextPage( + Routes.propertyDetails, context, false, + args: { + 'propertyData': dataOutput.modelList[0], + 'propertiesList': dataOutput.modelList, + 'fromMyProperty': false, + }); + }, + ); + } catch (e) { + Widgets.hideLoder(context); + } + }, + buttonTitle: + UiUtils.translate(context, "viewProperty"), + width: context.screenWidth * 0.5, + fontSize: context.font.normal, + height: 40), + ), + ) + ], + ), + ) + ], + ), + ), + ); + } +} diff --git a/lib/Ui/screens/favorites_screen.dart b/lib/Ui/screens/favorites_screen.dart new file mode 100644 index 0000000..12ced13 --- /dev/null +++ b/lib/Ui/screens/favorites_screen.dart @@ -0,0 +1,245 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../app/routes.dart'; +import '../../data/cubits/Utility/like_properties.dart'; +import '../../data/cubits/favorite/add_to_favorite_cubit.dart'; +import '../../data/cubits/favorite/fetch_favorites_cubit.dart'; +import '../../data/helper/designs.dart'; +import '../../data/model/property_model.dart'; +import '../../utils/Extensions/extensions.dart'; +import '../../utils/api.dart'; +import '../../utils/responsiveSize.dart'; +import '../../utils/ui_utils.dart'; +import 'home/Widgets/property_horizontal_card.dart'; +import 'widgets/AnimatedRoutes/blur_page_route.dart'; +import 'widgets/Erros/no_data_found.dart'; +import 'widgets/Erros/no_internet.dart'; +import 'widgets/Erros/something_went_wrong.dart'; +import 'widgets/shimmerLoadingContainer.dart'; + +class FavoritesScreen extends StatefulWidget { + const FavoritesScreen({ + super.key, + }); + + static Route route(RouteSettings settings) { + return BlurredRouter( + builder: (context) => BlocProvider( + create: (context) => FetchFavoritesCubit(), + child: const FavoritesScreen(), + ), + ); + } + + @override + State createState() => _FavoritesScreenState(); +} + +class _FavoritesScreenState extends State { + final ScrollController _pageScrollController = ScrollController(); + @override + void initState() { + _pageScrollController.addListener(_pageScrollListen); + context.read().fetchFavorites(); + super.initState(); + } + + void _pageScrollListen() { + if (_pageScrollController.isEndReached()) { + if (context.read().hasMoreData()) { + context.read().fetchFavoritesMore(); + } + } + } + + @override + void dispose() { + _pageScrollController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return RefreshIndicator( + onRefresh: () async {}, + color: context.color.tertiaryColor, + child: Scaffold( + backgroundColor: Theme.of(context).colorScheme.primaryColor, + appBar: UiUtils.buildAppBar( + context, + showBackButton: true, + title: UiUtils.translate( + context, + "favorites", + ), + ), + body: BlocBuilder( + builder: (context, state) { + if (state is FetchFavoritesInProgress) { + return shimmerEffect(); + } + if (state is FetchFavoritesFailure) { + if (state.errorMessage is ApiException) { + if ((state.errorMessage as ApiException).errorMessage == + "no-internet") { + return NoInternet( + onRetry: () { + context.read().fetchFavorites(); + }, + ); + } + } + return const SomethingWentWrong(); + } + if (state is FetchFavoritesSuccess) { + if (state.propertymodel.isEmpty) { + return SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: SizedBox( + height: context.screenHeight - 100.rh(context), + child: Center( + child: NoDataFound( + onTap: () { + context.read().fetchFavorites(); + }, + ), + ), + ), + ); + } + + return Column( + children: [ + Expanded( + child: ListView.builder( + controller: _pageScrollController, + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.all(16.0), + itemCount: state.propertymodel.length, + shrinkWrap: true, + itemBuilder: (context, index) { + PropertyModel property = state.propertymodel[index]; + context.read().add(property.id); + return BlocProvider( + create: (context) => AddToFavoriteCubitCubit(), + child: GestureDetector( + onTap: () { + Navigator.pushNamed( + context, + Routes.propertyDetails, + arguments: { + 'propertyData': property, + 'fromMyProperty': true, + }, + ); + }, + child: PropertyHorizontalCard( + property: property, + onLikeChange: (type) { + if (type == FavoriteType.add) { + context + .read() + .add(state.propertymodel[index]); + } else { + context + .read() + .remove(state.propertymodel[index].id); + } + }, + ), + ), + ); + }, + ), + ), + if (state.isLoadingMore) + UiUtils.progress( + normalProgressColor: context.color.tertiaryColor, + ) + ], + ); + } + + return Container(); + }, + ), + ), + ); + } + + ListView shimmerEffect() { + return ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: const EdgeInsets.symmetric( + vertical: 10 + defaultPadding, horizontal: defaultPadding), + itemCount: 5, + separatorBuilder: (context, index) { + return const SizedBox( + height: 12, + ); + }, + itemBuilder: (context, index) { + return Container( + width: double.maxFinite, + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(15), + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const ClipRRect( + clipBehavior: Clip.antiAliasWithSaveLayer, + borderRadius: BorderRadius.all(Radius.circular(15)), + child: CustomShimmer(height: 90, width: 90), + ), + const SizedBox( + width: 10, + ), + Expanded( + child: LayoutBuilder(builder: (context, c) { + return Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox( + height: 10, + ), + CustomShimmer( + height: 10, + width: c.maxWidth - 50, + ), + const SizedBox( + height: 10, + ), + const CustomShimmer( + height: 10, + ), + const SizedBox( + height: 10, + ), + CustomShimmer( + height: 10, + width: c.maxWidth / 1.2, + ), + const SizedBox( + height: 10, + ), + Align( + alignment: Alignment.bottomLeft, + child: CustomShimmer( + width: c.maxWidth / 4, + ), + ), + ], + ); + }), + ) + ]), + ); + }, + ); + } +} diff --git a/lib/Ui/screens/filter_screen.dart b/lib/Ui/screens/filter_screen.dart new file mode 100644 index 0000000..6cb7c99 --- /dev/null +++ b/lib/Ui/screens/filter_screen.dart @@ -0,0 +1,773 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:ebroker/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import 'package:ebroker/Ui/screens/widgets/BottomSheets/choose_location_bottomsheet.dart'; +import 'package:ebroker/app/routes.dart'; +import 'package:ebroker/data/cubits/category/fetch_category_cubit.dart'; +import 'package:ebroker/data/model/category.dart'; +import 'package:ebroker/data/model/propery_filter_model.dart'; +import 'package:ebroker/utils/AdMob/bannerAdLoadWidget.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:google_mobile_ads/google_mobile_ads.dart'; + +import '../../data/model/google_place_model.dart'; +import '../../utils/api.dart'; +import '../../utils/constant.dart'; +import '../../utils/ui_utils.dart'; +import 'main_activity.dart'; + +dynamic city = ""; +dynamic _state = ""; +dynamic country = ""; + +class FilterScreen extends StatefulWidget { + final bool? showPropertyType; + const FilterScreen({ + Key? key, + this.showPropertyType, + }) : super(key: key); + + @override + FilterScreenState createState() => FilterScreenState(); + + static Route route(RouteSettings routeSettings) { + Map? arguments = routeSettings.arguments as Map?; + return BlurredRouter( + builder: (_) => FilterScreen( + showPropertyType: arguments?['showPropertyType'], + ), + ); + } +} + +class FilterScreenState extends State { + TextEditingController minController = + TextEditingController(text: Constant.propertyFilter?.minPrice); + TextEditingController maxController = + TextEditingController(text: Constant.propertyFilter?.maxPrice); + + //String properyType = Constant.valSellBuy; + String properyType = Constant.propertyFilter?.propertyType ?? ""; + String postedOn = Constant.propertyFilter?.postedSince ?? + Constant.filterAll; // = 2; // 0: last_week 1: yesterday + dynamic defaultCategoryID = currentVisitingCategoryId; + dynamic defaultCategory = currentVisitingCategory; + + @override + void dispose() { + minController.dispose(); + maxController.dispose(); + super.dispose(); + } + + @override + void initState() { + super.initState(); + + setDefaultVal(isrefresh: false); + } + + void setDefaultVal({bool isrefresh = true}) { + if (isrefresh) { + postedOn = Constant.filterAll; + Constant.propertyFilter = null; + searchbody[Api.postedSince] = Constant.filterAll; + properyType = ""; + selectedcategoryId = "0"; + city = ""; + _state = ""; + country = ""; + selectedcategoryName = ""; + selectedCategory = defaultCategory; + + minController.clear(); + maxController.clear(); + checkFilterValSet(); + } + } + + bool checkFilterValSet() { + if (postedOn != Constant.filterAll || + properyType.isNotEmpty || + minController.text.trim().isNotEmpty || + maxController.text.trim().isNotEmpty || + selectedCategory != defaultCategory) { + return true; + } + + return false; + } + + void _onTapChooseLocation() async { + FocusManager.instance.primaryFocus?.unfocus(); + var result = await showModalBottomSheet( + isScrollControlled: true, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(20), topRight: Radius.circular(20))), + context: context, + builder: (context) { + return const ChooseLocatonBottomSheet(); + }, + ); + if (result != null) { + GooglePlaceModel place = (result as GooglePlaceModel); + + city = place.city; + country = place.country; + _state = place.state; + } + } + + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () async { + checkFilterValSet(); + return true; + }, + child: Scaffold( + backgroundColor: Theme.of(context).colorScheme.primaryColor, + appBar: UiUtils.buildAppBar( + context, + onbackpress: () { + checkFilterValSet(); + }, + showBackButton: true, + title: UiUtils.translate(context, "filterTitle"), + actions: [ + if ((checkFilterValSet() == true)) ...[ + FittedBox( + fit: BoxFit.none, + child: UiUtils.buildButton( + context, + onPressed: () { + setDefaultVal(isrefresh: true); + setState(() {}); + }, + width: 100, + height: 50, + fontSize: context.font.normal, + buttonColor: context.color.secondaryColor, + showElevation: false, + textColor: context.color.textColorDark, + buttonTitle: UiUtils.translate( + context, + "clearfilter", + ), + ), + ) + ] + ], + ), + bottomNavigationBar: BottomAppBar( + child: UiUtils.buildButton(context, + outerPadding: + const EdgeInsets.symmetric(horizontal: 13, vertical: 5), + height: 50.rh(context), onPressed: () { + //this will set name of previous screen app bar + + if (widget.showPropertyType ?? false) { + if (selectedCategory == null) { + selectedcategoryName = ""; + } else { + selectedcategoryName = + (selectedCategory as Category).category ?? ""; + } + } + + Constant.propertyFilter = PropertyFilterModel( + propertyType: properyType, + maxPrice: maxController.text, + minPrice: minController.text, + categoryId: ((selectedCategory is String) + ? selectedCategory + : selectedCategory?.id) ?? + "", + postedSince: postedOn, + city: city, + state: _state, + country: country, + ); + + Navigator.pop(context, true); + }, buttonTitle: UiUtils.translate(context, "applyFilter")), + ), + body: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag, + child: Padding( + padding: const EdgeInsets.all( + 20.0, + ), + child: SizedBox( + height: context.screenHeight, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + //mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + const SizedBox(height: 10), + buyORsellOption(), + const SizedBox(height: 15), + if (widget.showPropertyType ?? true) ...[ + Text(UiUtils.translate(context, "proeprtyType")) + .size(context.font.large), + const SizedBox(height: 15), + BlocBuilder( + builder: (context, state) { + if (state is FetchCategorySuccess) { + List categoriesList = + List.from(state.categories); + categoriesList.insert(0, Category(id: "")); + return SizedBox( + height: 50, + child: ListView( + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.horizontal, + shrinkWrap: true, + children: List.generate( + categoriesList.length.clamp(0, 8), + (int index) { + if (index == 0) { + return allCategoriesFilterButton(context); + } + + if (index == 7) { + return Padding( + padding: const EdgeInsetsDirectional.only( + start: 5.0), + child: moreCategoriesButton(context), + ); + } + return GestureDetector( + onTap: () { + selectedCategory = categoriesList[index]; + setState(() {}); + }, + child: Padding( + padding: const EdgeInsets.all(1.0), + child: Container( + alignment: Alignment.center, + decoration: BoxDecoration( + color: selectedCategory == + categoriesList[index] + ? context.color.tertiaryColor + : context.color.secondaryColor, + borderRadius: + BorderRadius.circular(10), + border: Border.all( + width: 1.5, + color: context.color.borderColor, + ), + ), + height: 30, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, vertical: 8), + child: Row( + mainAxisAlignment: + MainAxisAlignment.spaceEvenly, + children: [ + UiUtils.imageType( + categoriesList[index].image!, + height: 20.rh(context), + width: 20.rw(context), + color: selectedCategory == + categoriesList[index] + ? context + .color.secondaryColor + : context + .color.tertiaryColor, + ), + SizedBox( + width: 10.rw(context), + ), + Text( + categoriesList[index] + .category + .toString(), + ).color(selectedCategory == + categoriesList[index] + ? context.color.textAutoAdapt( + context + .color.tertiaryColor) + : context + .color.textColorDark), + ], + ), + ), + ), + ), + ); + }, + ), + ), + ); + } + return Container(); + }, + ), + const SizedBox( + height: 15, + ), + ], + Text(UiUtils.translate(context, 'budgetLbl')), + const SizedBox(height: 10), + budgetOption(), + const SizedBox(height: 10), + const SizedBox(height: 5), + postedSinceOption(), + const SizedBox(height: 15), + Text(UiUtils.translate(context, 'locationLbl')), + const SizedBox(height: 5), + locationWidget(context), + const SizedBox( + height: 15, + ), + const BannerAdWidget( + bannerSize: AdSize.banner, + ) + ], + ), + ), + ), + ), + ), + ); + } + + Widget locationWidget(BuildContext context) { + return Padding( + padding: const EdgeInsets.only(top: 10.0), + child: Row( + children: [ + Expanded( + child: Container( + height: 55, + decoration: BoxDecoration( + color: context.color.textLightColor.withOpacity(00.01), + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: context.color.borderColor, + width: 1.5, + )), + child: Row( + children: [ + Padding( + padding: const EdgeInsetsDirectional.only(start: 10.0), + child: Align( + alignment: Alignment.centerLeft, + child: (city != "" && city != null) + ? Text("$city,$_state,$country") + : Text(UiUtils.translate( + context, "selectLocationOptional"))), + ), + const Spacer(), + if (city != "" && city != null) + Padding( + padding: const EdgeInsetsDirectional.only(end: 10.0), + child: GestureDetector( + onTap: _onTapChooseLocation, + child: Icon( + Icons.close, + color: context.color.textColorDark, + ), + ), + ) + ], + ), + ), + ), + const SizedBox( + width: 10, + ), + GestureDetector( + onTap: _onTapChooseLocation, + child: Container( + height: 55, + width: 55, + decoration: BoxDecoration( + color: context.color.textLightColor.withOpacity(00.01), + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: context.color.borderColor, + width: 1.5, + )), + child: Icon( + Icons.location_searching_sharp, + color: context.color.tertiaryColor, + ), + ), + ), + ], + ), + ); + } + + Widget allCategoriesFilterButton(BuildContext context) { + return GestureDetector( + onTap: () { + selectedCategory = null; + setState(() {}); + }, + child: Container( + width: 50, + margin: const EdgeInsetsDirectional.only(end: 5), + alignment: Alignment.center, + decoration: BoxDecoration( + color: selectedCategory == null + ? context.color.tertiaryColor + : context.color.secondaryColor, + borderRadius: BorderRadius.circular(10), + border: Border.all(width: 1.5, color: context.color.borderColor), + ), + height: 25, + child: Text(UiUtils.translate(context, "lblall")).color( + selectedCategory == null + ? context.color.textAutoAdapt(context.color.tertiaryColor) + : context.color.textColorDark), + ), + ); + } + + GestureDetector moreCategoriesButton(BuildContext context) { + return GestureDetector( + onTap: () { + Navigator.pushNamed(context, Routes.categories, + arguments: {"from": Routes.filterScreen}).then( + (dynamic value) { + if (value != null) { + selectedCategory = value; + setState(() {}); + } + }, + ); + }, + child: Container( + height: 25, + width: 100, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + color: context.color.secondaryColor, + border: Border.all( + color: context.color.borderColor, + width: 1.5, + )), + alignment: Alignment.center, + child: Text(UiUtils.translate(context, "more")), + ), + ); + } + + Widget saveFilter() { + //save prefs & validate fields & call API + return IconButton( + onPressed: () { + Constant.propertyFilter = PropertyFilterModel( + propertyType: properyType, + maxPrice: maxController.text, + city: city, + state: _state, + country: country, + minPrice: minController.text, + categoryId: selectedCategory?.id ?? "", + postedSince: postedOn, + ); + + Navigator.pop(context, true); + }, + icon: const Icon(Icons.check)); + } + + Widget buyORsellOption() { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.2), + borderRadius: BorderRadius.circular(15)), + child: SizedBox( + width: MediaQuery.of(context).size.width - 40.rw(context), + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + //buttonSale + Expanded( + child: SizedBox( + height: 46.rh(context), + child: UiUtils.buildButton(context, onPressed: () { + if (properyType == Constant.valSellBuy) { + searchbody[Api.propertyType] = ""; + properyType = ""; + setState(() {}); + } else { + setPropertyType(Constant.valSellBuy); + } + }, + showElevation: false, + textColor: properyType == Constant.valSellBuy + ? context.color.buttonColor + : context.color.textColorDark, + buttonColor: properyType == Constant.valSellBuy + ? Theme.of(context).colorScheme.tertiaryColor + : Theme.of(context) + .colorScheme + .tertiaryColor + .withOpacity(0.0), + fontSize: context.font.large, + buttonTitle: UiUtils.translate( + context, UiUtils.translate(context, "forSaleLbl"))), + ), + ), + //buttonRent + Expanded( + child: SizedBox( + height: 46.rh(context), + child: UiUtils.buildButton(context, onPressed: () { + if (properyType == Constant.valRent) { + searchbody[Api.propertyType] = ""; + properyType = ""; + setState(() {}); + } else { + setPropertyType(Constant.valRent); + } + }, + showElevation: false, + textColor: properyType == Constant.valRent + ? context.color.buttonColor + : context.color.textColorDark, + buttonColor: properyType == Constant.valRent + ? Theme.of(context).colorScheme.tertiaryColor + : Theme.of(context) + .colorScheme + .tertiaryColor + .withOpacity(0.0), + fontSize: context.font.large, + buttonTitle: UiUtils.translate(context, + UiUtils.translate(context, "forRentLbl")))), + ) + ], + ), + ), + ), + ], + ); + } + + void setPropertyType(String val) { + searchbody[Api.propertyType] = val; + + setState(() { + properyType = val; + }); + } + + Widget budgetOption() { + return Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + minMaxTFF( + UiUtils.translate(context, "minLbl"), + ) + ], + ), + ), + const SizedBox(height: 10), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + minMaxTFF(UiUtils.translate(context, "maxLbl")), + ], + ), + ), + ], + ); + } + + Widget minMaxTFF(String minMax) { + return Container( + padding: EdgeInsetsDirectional.only( + end: minMax == UiUtils.translate(context, "minLbl") ? 5 : 0), + alignment: Alignment.center, + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(10)), + color: Theme.of(context).colorScheme.backgroundColor), + child: TextFormField( + controller: (minMax == UiUtils.translate(context, "minLbl")) + ? minController + : maxController, + onChanged: ((value) { + bool isEmpty = value.trim().isEmpty; + if (minMax == UiUtils.translate(context, "minLbl")) { + if (isEmpty && searchbody.containsKey(Api.minPrice)) { + searchbody.remove(Api.minPrice); + } else { + searchbody[Api.minPrice] = value; + } + } else { + if (isEmpty && searchbody.containsKey(Api.maxPrice)) { + searchbody.remove(Api.maxPrice); + } else { + searchbody[Api.maxPrice] = value; + } + } + }), + textInputAction: TextInputAction.done, + decoration: InputDecoration( + isDense: true, + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(10), + borderSide: BorderSide(color: context.color.tertiaryColor)), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(10), + borderSide: BorderSide(color: context.color.tertiaryColor)), + labelStyle: TextStyle(color: context.color.tertiaryColor), + hintText: "00", + label: Text( + minMax, + ), + prefixText: '${Constant.currencySymbol} ', + prefixStyle: TextStyle( + color: Theme.of(context).colorScheme.tertiaryColor), + fillColor: Theme.of(context).colorScheme.secondaryColor, + border: const OutlineInputBorder()), + keyboardType: TextInputType.number, + style: + TextStyle(color: Theme.of(context).colorScheme.tertiaryColor), + /* onSubmitted: () */ + inputFormatters: [FilteringTextInputFormatter.digitsOnly])); + } + + Widget postedSinceOption() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // // Text( + // setMessageText( + // titleTxt: UiUtils.getTranslatedLabel(context, "postedSinceLbl"), + // txtColor: Theme.of(context).colorScheme.blackColor, + // txtStyle: Theme.of(context).textTheme.titleMedium, + // fontWeight: FontWeight.w500, + // context: context), + // Container( + // color: Theme.of(context).colorScheme.blackColor.withOpacity(0.5), + // height: 1, + // width: MediaQuery.of(context).size.width * 0.45, + // ), + // ], + // ), + Text(UiUtils.translate(context, "postedSinceLbl")) + .size(context.font.large), + SizedBox( + height: 10.rh(context), + ), + + SizedBox( + height: 45, + child: ListView( + shrinkWrap: true, + scrollDirection: Axis.horizontal, + children: [ + UiUtils.buildButton( + context, + fontSize: context.font.small, + showElevation: false, + autoWidth: true, + border: + BorderSide(color: context.color.borderColor, width: 1.5), + buttonColor: searchbody[Api.postedSince] == Constant.filterAll + ? context.color.tertiaryColor + : context.color.tertiaryColor.withOpacity(0.05), + textColor: searchbody[Api.postedSince] == Constant.filterAll + ? context.color.secondaryColor + : context.color.textColorDark, + buttonTitle: UiUtils.translate(context, "anytimeLbl"), + onPressed: () { + onClickPosted( + Constant.filterAll, + ); + setState(() {}); + }, + ), + SizedBox( + width: 5.rw(context), + ), + UiUtils.buildButton( + fontSize: context.font.small, + context, + autoWidth: true, + border: + BorderSide(color: context.color.borderColor, width: 1.5), + textColor: + searchbody[Api.postedSince] == Constant.filterLastWeek + ? context.color.secondaryColor + : context.color.textColorDark, + showElevation: false, + buttonColor: + searchbody[Api.postedSince] == Constant.filterLastWeek + ? context.color.tertiaryColor + : context.color.tertiaryColor.withOpacity(0.05), + buttonTitle: UiUtils.translate(context, "lastWeekLbl"), + onPressed: () { + onClickPosted( + Constant.filterLastWeek, + ); + }, + ), + SizedBox( + width: 5.rw(context), + ), + UiUtils.buildButton( + fontSize: context.font.small, + context, + autoWidth: true, + border: + BorderSide(color: context.color.borderColor, width: 1.5), + showElevation: false, + textColor: + searchbody[Api.postedSince] == Constant.filterYesterday + ? context.color.secondaryColor + : context.color.textColorDark, + buttonColor: + searchbody[Api.postedSince] == Constant.filterYesterday + ? context.color.tertiaryColor + : context.color.tertiaryColor.withOpacity(0.05), + buttonTitle: UiUtils.translate(context, "yesterdayLbl"), + onPressed: () { + onClickPosted( + Constant.filterYesterday, + ); + }, + ), + ], + ), + ) + ], + ); + } + + void onClickPosted(String val) { + if (val == Constant.filterAll && searchbody.containsKey(Api.postedSince)) { + searchbody[Api.postedSince] = ""; + } else { + searchbody[Api.postedSince] = val; + } + + postedOn = val; + setState(() {}); + } +} diff --git a/lib/Ui/screens/home/HomeSegments/sections.dart b/lib/Ui/screens/home/HomeSegments/sections.dart new file mode 100644 index 0000000..e69de29 diff --git a/lib/Ui/screens/home/Widgets/category_card.dart b/lib/Ui/screens/home/Widgets/category_card.dart new file mode 100644 index 0000000..b48a13d --- /dev/null +++ b/lib/Ui/screens/home/Widgets/category_card.dart @@ -0,0 +1,73 @@ +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:flutter/material.dart'; + +import '../../../../data/helper/design_configs.dart'; +import '../../../../data/model/category.dart'; +import '../../../../utils/constant.dart'; +import '../../../../utils/ui_utils.dart'; + +class CategoryCard extends StatelessWidget { + final bool? frontSpacing; + final Function(Category category) onTapCategory; + final Category category; + const CategoryCard( + {super.key, + required this.frontSpacing, + required this.onTapCategory, + required this.category}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsetsDirectional.only( + start: frontSpacing == true ? 5.0 : 0, + end: .0, + ), + child: GestureDetector( + onTap: () { + onTapCategory.call(category); + }, + child: Row( + children: [ + Container( + constraints: BoxConstraints( + minWidth: 100.rw(context), + ), + height: 44.rh(context), + alignment: Alignment.center, + decoration: DesignConfig.boxDecorationBorder( + color: context.color.secondaryColor, + radius: 10, + borderWidth: 1.5, + borderColor: context.color.borderColor, + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + UiUtils.imageType(category.image!, + width: 20, + height: 20, + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null), + SizedBox(width: 12.rw(context)), + SizedBox( + child: Text(category.category!, + textAlign: TextAlign.center, + maxLines: 2, + overflow: TextOverflow.ellipsis) + .size(context.font.small), + ), + ], + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/Ui/screens/home/Widgets/city_card.dart b/lib/Ui/screens/home/Widgets/city_card.dart new file mode 100644 index 0000000..770e697 --- /dev/null +++ b/lib/Ui/screens/home/Widgets/city_card.dart @@ -0,0 +1,15 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; + +class CityCard extends StatelessWidget { + const CityCard({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + color: Color.fromRGBO(Random().nextInt(255), Random().nextInt(255), + Random().nextInt(255), 1), + ); + } +} diff --git a/lib/Ui/screens/home/Widgets/city_heading_card.dart b/lib/Ui/screens/home/Widgets/city_heading_card.dart new file mode 100644 index 0000000..e272c15 --- /dev/null +++ b/lib/Ui/screens/home/Widgets/city_heading_card.dart @@ -0,0 +1,62 @@ +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; + +class CityHeadingCard extends StatelessWidget { + const CityHeadingCard({super.key}); + + @override + Widget build(BuildContext context) { + return Container( + height: 211, + width: MediaQuery.of(context).size.width, + decoration: const BoxDecoration(), + child: Stack( + fit: StackFit.expand, + children: [ + Image.asset("assets/city.jpg", fit: BoxFit.cover), + Directionality( + textDirection: Directionality.of(context), + child: Container( + decoration: BoxDecoration( + gradient: RadialGradient( + center: Alignment.centerLeft, + radius: 3, + focalRadius: 1, + colors: [ + Colors.black.withOpacity(0.97), + Colors.black.withOpacity(0), + ], + ), + ), + ), + ), + PositionedDirectional( + top: 50, + start: 11, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + width: 5, + height: 34, + color: Colors.white, + ), + const SizedBox( + width: 5, + ), + const Text("Popular cities").color(Colors.white).size(32), + ], + ), + Text("${context.watch().getCount() ?? 0}+ Properties") + .color(Colors.white) + ], + ), + ) + ], + ), + ); + } +} diff --git a/lib/Ui/screens/home/Widgets/header_card.dart b/lib/Ui/screens/home/Widgets/header_card.dart new file mode 100644 index 0000000..8fd06a1 --- /dev/null +++ b/lib/Ui/screens/home/Widgets/header_card.dart @@ -0,0 +1,43 @@ +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; + +import '../../../../utils/ui_utils.dart'; +import '../home_screen.dart'; + +class TitleHeader extends StatelessWidget { + final String title; + final VoidCallback? onSeeAll; + bool? enableShowAll; + TitleHeader( + {super.key, required this.title, this.onSeeAll, this.enableShowAll}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsetsDirectional.only( + top: 20.0, bottom: 16, start: sidePadding, end: sidePadding), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Text(title) + .bold(weight: FontWeight.w700) + .color(context.color.textColorDark) + .size(context.font.large) + .setMaxLines(lines: 1), + ), + if (enableShowAll ?? true) + GestureDetector( + onTap: () { + onSeeAll?.call(); + }, + child: Text(UiUtils.translate(context, "seeAll")) + .size(context.font.small) + .color(context.color.textLightColor) + .bold(weight: FontWeight.w700), + ) + ], + ), + ); + } +} diff --git a/lib/Ui/screens/home/Widgets/homeListener.dart b/lib/Ui/screens/home/Widgets/homeListener.dart new file mode 100644 index 0000000..0fef559 --- /dev/null +++ b/lib/Ui/screens/home/Widgets/homeListener.dart @@ -0,0 +1,198 @@ +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../../data/cubits/category/fetch_category_cubit.dart'; +import '../../../../data/cubits/property/fetch_most_liked_properties.dart'; +import '../../../../data/cubits/property/fetch_most_viewed_properties_cubit.dart'; +import '../../../../data/cubits/property/fetch_nearby_property_cubit.dart'; +import '../../../../data/cubits/property/fetch_promoted_properties_cubit.dart'; +import '../../../../data/cubits/slider_cubit.dart'; + +class HomePageStateListener { + Connectivity connectivity = Connectivity(); + bool isNetworkAvailable = true; + bool isPromotedPropertyEmpty = false; + bool isCategoryEmpty = false; + bool isSliderEmpty = false; + bool isMostViewdPropertyEmpty = false; + bool isNearbyPropertiesEmpty = false; + bool isMostLikedPropertiesEmpty = false; + void init(setState, {required VoidCallback onNetAvailable}) { + connectivity.onConnectivityChanged.listen((event) { + if (event == ConnectivityResult.none) { + isNetworkAvailable = false; + setState(() {}); + } else { + onNetAvailable.call(); + isNetworkAvailable = true; + setState(() {}); + } + }); + } + + void setNetworkState(setState, isAvailable) { + isNetworkAvailable = isAvailable; + setState(() {}); + } + + HomeScreenDataBinding listen(BuildContext context) { + bool hasPromotedPropertyError = false; + bool hasMostViewdPropertyError = false; + bool hasCategoryError = false; + + bool hasNearbyPropertyError = false; + bool hasMostLikedPropertyError = false; + + bool categorySuccess = false, + promotedSuccess = false, + mostVSuccess = false, + sliderSuccess = false; + var fetchPromotedPropertiesWatch = + context.watch().state; + var fetchMostViewedPropertiesWatch = + context.watch().state; + var mostLikedPropertiesWatch = + context.watch().state; + var nearbyPropertiesWatch = + context.watch().state; + + ///Watching if data is available or not + if ((fetchPromotedPropertiesWatch is FetchPromotedPropertiesSuccess)) { + promotedSuccess = true; + isPromotedPropertyEmpty = + (fetchPromotedPropertiesWatch).properties.isEmpty; + } + if ((fetchMostViewedPropertiesWatch is FetchMostViewedPropertiesSuccess)) { + mostVSuccess = true; + isMostViewdPropertyEmpty = + (fetchMostViewedPropertiesWatch).properties.isEmpty; + } + + if ((mostLikedPropertiesWatch is FetchMostLikedPropertiesSuccess)) { + isMostLikedPropertiesEmpty = + (mostLikedPropertiesWatch).properties.isEmpty; + } + + if ((nearbyPropertiesWatch is FetchNearbyPropertiesSuccess)) { + isNearbyPropertiesEmpty = (nearbyPropertiesWatch).properties.isEmpty; + } + + ///End: Listning to data availability + + ///Listning to realtime state change + if ((context.watch().state is FetchCategorySuccess)) { + categorySuccess = true; + } + if ((context.watch().state is SliderFetchSuccess)) { + sliderSuccess = true; + } + + ///End: Listning to realtime state change + + ///Listning to Error + if ((fetchPromotedPropertiesWatch is FetchPromotedPropertiesFailure)) { + hasPromotedPropertyError = true; + } + if ((fetchMostViewedPropertiesWatch is FetchMostViewedPropertiesFailure)) { + hasMostViewdPropertyError = true; + } + if ((context.watch().state is FetchCategoryFailure)) { + hasCategoryError = true; + } + + if (nearbyPropertiesWatch is FetchNearbyPropertiesFailure) { + hasNearbyPropertyError = true; + } + if ((mostLikedPropertiesWatch is FetchMostLikedPropertiesFailure)) { + hasMostLikedPropertyError = true; + } + + var dataAvailability = DataAvailibility( + isPromotedPropertyEmpty: isPromotedPropertyEmpty, + isCategoryEmpty: isCategoryEmpty, + isSliderEmpty: isSliderEmpty, + isMostViewdPropertyEmpty: isMostViewdPropertyEmpty, + isNearbyPropertiesEmpty: isNearbyPropertiesEmpty, + isMostLikedPropertiesEmpty: isMostLikedPropertiesEmpty, + ); + + if ((hasCategoryError || + hasMostViewdPropertyError || + hasPromotedPropertyError || + hasMostLikedPropertyError || + hasNearbyPropertyError) && + isNetworkAvailable) { + var x = { + "hasCategoryError": hasCategoryError, + "hasMostViewdPropertyError": hasMostViewdPropertyError, + "hasPromotedPropertyError": hasPromotedPropertyError, + "hasMostLikedPropertyError": hasMostLikedPropertyError, + "hasNearbyPropertyError": hasNearbyPropertyError + }..mlog("HomeScreenState"); + + return HomeScreenDataBinding( + state: HomeScreenDataState.fail, dataAvailability: dataAvailability); + } else if (sliderSuccess && + categorySuccess && + promotedSuccess && + mostVSuccess) { + return HomeScreenDataBinding( + state: HomeScreenDataState.success, + dataAvailability: dataAvailability); + } else if (isCategoryEmpty == true && + isMostViewdPropertyEmpty == true && + isSliderEmpty == true && + isPromotedPropertyEmpty == true) { + return HomeScreenDataBinding( + state: HomeScreenDataState.nodata, + dataAvailability: dataAvailability); + } else if (isNetworkAvailable == false) { + return HomeScreenDataBinding( + state: HomeScreenDataState.nointernet, + dataAvailability: dataAvailability); + } else { + return HomeScreenDataBinding( + state: HomeScreenDataState.normal, + dataAvailability: dataAvailability); + } + } +} + +enum HomeScreenDataState { normal, success, nodata, nointernet, fail } + +class DataAvailibility { + final bool isPromotedPropertyEmpty; + final bool isCategoryEmpty; + final bool isSliderEmpty; + final bool isMostViewdPropertyEmpty; + final bool isNearbyPropertiesEmpty; + final bool isMostLikedPropertiesEmpty; + DataAvailibility({ + required this.isPromotedPropertyEmpty, + required this.isCategoryEmpty, + required this.isSliderEmpty, + required this.isMostViewdPropertyEmpty, + required this.isNearbyPropertiesEmpty, + required this.isMostLikedPropertiesEmpty, + }); + + @override + String toString() { + return 'DataAvailibility(isPromotedPropertyEmpty: $isPromotedPropertyEmpty, isCategoryEmpty: $isCategoryEmpty, isSliderEmpty: $isSliderEmpty, isMostViewdPropertyEmpty: $isMostViewdPropertyEmpty, isNearbyPropertiesEmpty: $isNearbyPropertiesEmpty, isMostLikedPropertiesEmpty: $isMostLikedPropertiesEmpty)'; + } +} + +class HomeScreenDataBinding { + final HomeScreenDataState state; + final DataAvailibility dataAvailability; + HomeScreenDataBinding({ + required this.state, + required this.dataAvailability, + }); + + @override + String toString() => + 'HomeScreenDataBinding(state: $state, dataAvailability: $dataAvailability)'; +} diff --git a/lib/Ui/screens/home/Widgets/home_profile_image_card.dart b/lib/Ui/screens/home/Widgets/home_profile_image_card.dart new file mode 100644 index 0000000..2d1b270 --- /dev/null +++ b/lib/Ui/screens/home/Widgets/home_profile_image_card.dart @@ -0,0 +1,102 @@ +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../../data/cubits/system/user_details.dart'; +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/ui_utils.dart'; + +class CircularProfileImageWidget extends StatelessWidget { + const CircularProfileImageWidget({super.key}); + Widget buildDefaultPersonSVG(BuildContext context) { + return Container( + width: 90, + height: 90, + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.1), + shape: BoxShape.circle), + child: Center( + child: UiUtils.getSvg( + AppIcons.defaultPersonLogo, + color: context.color.tertiaryColor, + width: 40, + height: 40, + ), + ), + ); + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + UiUtils.showFullScreenImage( + context, + provider: NetworkImage( + context.read().state.user?.profile ?? "", + ), + ); + }, + child: Container( + decoration: const BoxDecoration(shape: BoxShape.circle), + margin: const EdgeInsetsDirectional.only(end: 10), + padding: const EdgeInsets.only(bottom: 5), + child: FittedBox( + fit: BoxFit.cover, + child: GestureDetector( + onTap: () { + if (context.read().state.user?.profile != + null) { + UiUtils.showFullScreenImage(context, + provider: NetworkImage( + context.read().state.user?.profile ?? + "")); + } + + // MainActivityState.pageCntrlr.jumpToPage(4); + }, + child: (context.watch().state.user?.profile ?? "") + .trim() + .isEmpty + ? FittedBox( + fit: BoxFit.none, + child: buildDefaultPersonSVG( + context, + ), + ) + : Container( + decoration: const BoxDecoration( + shape: BoxShape.circle, + ), + width: 50, + height: 50, + clipBehavior: Clip.antiAlias, + child: Image.network( + context.watch().state.user?.profile ?? + "", + fit: BoxFit.cover, + width: 50, + height: 50, + errorBuilder: (BuildContext context, Object exception, + StackTrace? stackTrace) { + return FittedBox( + fit: BoxFit.none, + child: buildDefaultPersonSVG(context), + ); + }, + loadingBuilder: (BuildContext context, Widget? child, + ImageChunkEvent? loadingProgress) { + if (loadingProgress == null) return child!; + return FittedBox( + fit: BoxFit.none, + child: buildDefaultPersonSVG(context), + ); + }, + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/home/Widgets/home_search.dart b/lib/Ui/screens/home/Widgets/home_search.dart new file mode 100644 index 0000000..794f971 --- /dev/null +++ b/lib/Ui/screens/home/Widgets/home_search.dart @@ -0,0 +1,93 @@ +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:flutter/material.dart'; + +import '../../../../app/routes.dart'; +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/ui_utils.dart'; +import '../home_screen.dart'; + +class HomeSearchField extends StatelessWidget { + const HomeSearchField({super.key}); + + @override + Widget build(BuildContext context) { + Widget buildSearchIcon() { + return Padding( + padding: const EdgeInsets.all(8.0), + child: UiUtils.getSvg(AppIcons.search, + color: context.color.tertiaryColor)); + } + + return Padding( + padding: + const EdgeInsets.symmetric(horizontal: sidePadding, vertical: 15), + child: Row( + children: [ + GestureDetector( + behavior: HitTestBehavior.translucent, + onTap: () { + Navigator.pushNamed(context, Routes.searchScreenRoute, + arguments: {"autoFocus": true, "openFilterScreen": false}); + }, + child: AbsorbPointer( + absorbing: true, + child: Container( + width: 285.rw( + context, + ), + height: 50.rh( + context, + ), + alignment: Alignment.center, + decoration: BoxDecoration( + border: Border.all( + width: 1.5, color: context.color.borderColor), + borderRadius: const BorderRadius.all(Radius.circular(10)), + color: context.color.secondaryColor), + child: TextFormField( + readOnly: true, + decoration: InputDecoration( + border: InputBorder.none, //OutlineInputBorder() + fillColor: Theme.of(context).colorScheme.secondaryColor, + hintText: UiUtils.translate(context, "searchHintLbl"), + prefixIcon: buildSearchIcon(), + prefixIconConstraints: + const BoxConstraints(minHeight: 5, minWidth: 5), + ), + enableSuggestions: true, + onEditingComplete: () { + FocusScope.of(context).unfocus(); + }, + onTap: () { + //change prefix icon color to primary + })), + ), + ), + const Spacer(), + GestureDetector( + onTap: () { + Navigator.pushNamed(context, Routes.propertyMapScreen); + }, + child: Container( + width: 50.rw(context), + height: 50.rh(context), + decoration: BoxDecoration( + border: + Border.all(width: 1.5, color: context.color.borderColor), + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(10), + ), + child: Center( + child: UiUtils.getSvg( + AppIcons.propertyMap, + color: context.color.tertiaryColor, + ), + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/Ui/screens/home/Widgets/home_shimmers.dart b/lib/Ui/screens/home/Widgets/home_shimmers.dart new file mode 100644 index 0000000..de8ba2d --- /dev/null +++ b/lib/Ui/screens/home/Widgets/home_shimmers.dart @@ -0,0 +1,163 @@ +import 'package:ebroker/Ui/screens/home/home_screen.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:flutter/material.dart'; + +import '../../widgets/shimmerLoadingContainer.dart'; + +class SliderShimmer extends StatelessWidget { + const SliderShimmer({super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: sidePadding, + ), + child: Column( + children: [ + const SizedBox( + height: 10, + ), + CustomShimmer( + height: 130.rh(context), + width: context.screenWidth, + ), + const SizedBox( + height: 10, + ), + ], + ), + ); + } +} + +class PromotedPropertiesShimmer extends StatelessWidget { + const PromotedPropertiesShimmer({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return SizedBox( + height: 261, + child: ListView.builder( + itemCount: 5, + shrinkWrap: true, + padding: const EdgeInsets.symmetric( + horizontal: sidePadding, + ), + scrollDirection: Axis.horizontal, + physics: const BouncingScrollPhysics(), + itemBuilder: (context, index) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: index == 0 ? 0 : 8), + child: CustomShimmer( + height: 272.rh(context), + width: 250.rw(context), + ), + ); + })); + } +} + +class MostLikedPropertiesShimmer extends StatelessWidget { + const MostLikedPropertiesShimmer({super.key}); + + @override + Widget build(BuildContext context) { + return GridView.builder( + shrinkWrap: true, + padding: const EdgeInsets.symmetric( + horizontal: sidePadding, + ), + physics: const NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + childAspectRatio: 162.rw(context) / 274.rh(context), + mainAxisSpacing: 8, + crossAxisSpacing: 8, + crossAxisCount: 2), + itemCount: 5, + itemBuilder: (context, index) { + return const Padding( + padding: EdgeInsets.symmetric(horizontal: 0), + child: CustomShimmer(), + ); + }, + ); + } +} + +class NearbyPropertiesShimmer extends StatelessWidget { + const NearbyPropertiesShimmer({super.key}); + + @override + Widget build(BuildContext context) { + return SizedBox( + height: 200, + child: ListView.builder( + itemCount: 5, + shrinkWrap: true, + padding: const EdgeInsets.symmetric( + horizontal: sidePadding, + ), + scrollDirection: Axis.horizontal, + physics: const BouncingScrollPhysics(), + itemBuilder: (context, index) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: index == 0 ? 0 : 8), + child: const CustomShimmer( + height: 200, + width: 300, + ), + ); + })); + } +} + +class MostViewdPropertiesShimmer extends StatelessWidget { + const MostViewdPropertiesShimmer({super.key}); + + @override + Widget build(BuildContext context) { + return GridView.builder( + shrinkWrap: true, + padding: const EdgeInsets.symmetric( + horizontal: sidePadding, + ), + physics: const NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + childAspectRatio: 162.rw(context) / 274.rh(context), + mainAxisSpacing: 15, + crossAxisCount: 2), + itemCount: 5, + itemBuilder: (context, index) { + return const Padding( + padding: EdgeInsets.all(8.0), + child: CustomShimmer(), + ); + }); + } +} + +class CategoryShimmer extends StatelessWidget { + const CategoryShimmer({super.key}); + + @override + Widget build(BuildContext context) { + return ListView.builder( + shrinkWrap: true, + scrollDirection: Axis.horizontal, + itemCount: 4, + padding: const EdgeInsets.symmetric( + horizontal: sidePadding, + ), + itemBuilder: (context, index) { + return CustomShimmer( + width: 100.rw(context), + height: 44.rh(context), + margin: const EdgeInsetsDirectional.only(end: 10, bottom: 5), + ); + }); + } +} diff --git a/lib/Ui/screens/home/Widgets/location_widget.dart b/lib/Ui/screens/home/Widgets/location_widget.dart new file mode 100644 index 0000000..0edc6c3 --- /dev/null +++ b/lib/Ui/screens/home/Widgets/location_widget.dart @@ -0,0 +1,153 @@ +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/hive_keys.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:hive_flutter/hive_flutter.dart'; + +import '../../../../data/cubits/auth/auth_cubit.dart'; +import '../../../../data/cubits/property/fetch_nearby_property_cubit.dart'; +import '../../../../data/model/google_place_model.dart'; +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/hive_utils.dart'; +import '../../../../utils/ui_utils.dart'; +import '../../widgets/BottomSheets/choose_location_bottomsheet.dart'; + +class LocationWidget extends StatefulWidget { + const LocationWidget({super.key}); + + @override + State createState() => _LocationWidgetState(); +} + +class _LocationWidgetState extends State { + String city = "", state = "", country = ""; + @override + void initState() { + Hive.box(HiveKeys.userDetailsBox) + .listenable(keys: ["city", "state", "country"]).addListener(() { + city = HiveUtils.getCityName().toString().trim(); + state = HiveUtils.getStateName().toString().trim(); + country = HiveUtils.getCountryName().toString().trim(); + setState(() {}); + }); + super.initState(); + } + + @override + Widget build(BuildContext context) { + city = HiveUtils.getCityName().toString().trim(); + state = HiveUtils.getStateName().toString().trim(); + country = HiveUtils.getCountryName().toString().trim(); + + List locationList = [city, state, country]; + locationList.removeWhere((element) => element.isEmpty); + + String joinedLocation = locationList.join(','); + return FittedBox( + fit: BoxFit.none, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + width: 16.rw(context), + ), + GestureDetector( + onTap: () async { + var result = await showModalBottomSheet( + isScrollControlled: true, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(20), + topRight: Radius.circular(20))), + context: context, + builder: (context) { + return const ChooseLocatonBottomSheet(); + }, + ); + if (result != null) { + GooglePlaceModel place = (result as GooglePlaceModel); + HiveUtils.setLocation( + city: place.city, + state: place.state, + latitude: double.parse(place.latitude), + longitude: double.parse(place.longitude), + country: place.country, + placeId: place.placeId); + context.read().updateUserData(context, + city: place.city, + state: place.state, + country: place.country, + latitude: double.parse(place.latitude), + longitude: double.parse(place.longitude)); + Future.delayed( + Duration.zero, + () { + // context + // .read() + // .fetch(); + // context + // .read() + // .fetch(); + // context.read().fetchSlider(context); + context + .read() + .fetch(forceRefresh: true); + }, + ); + + // city = place.city; + // country = place.country; + // _state = place.state; + } + + // const ChooseLocatonBottomSheet(); + }, + child: Container( + width: 40.rw(context), + height: 40.rh(context), + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(10)), + child: UiUtils.getSvg( + AppIcons.location, + fit: BoxFit.none, + color: context.color.tertiaryColor, + ), + ), + ), + SizedBox( + width: 10.rw(context), + ), + ValueListenableBuilder( + valueListenable: Hive.box(HiveKeys.userDetailsBox).listenable(), + builder: (context, value, child) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(UiUtils.translate(context, "locationLbl")) + .color(context.color.textColorDark) + .size( + context.font.small, + ), + SizedBox( + width: 150, + child: Text( + joinedLocation, + maxLines: 1, + softWrap: true, + overflow: TextOverflow.ellipsis, + ) + .color(context.color.textColorDark) + .size(context.font.small) + .bold(weight: FontWeight.w600), + ), + ], + ); + }), + ], + ), + ); + } +} diff --git a/lib/Ui/screens/home/Widgets/project_card_horizontal.dart b/lib/Ui/screens/home/Widgets/project_card_horizontal.dart new file mode 100644 index 0000000..309e0bc --- /dev/null +++ b/lib/Ui/screens/home/Widgets/project_card_horizontal.dart @@ -0,0 +1,184 @@ +import 'package:ebroker/data/model/project_model.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:flutter/material.dart'; + +import '../../../../exports/main_export.dart'; +import '../../../../utils/ui_utils.dart'; + +class ProjectHorizontalCard extends StatelessWidget { + final ProjectModel project; + final List? addBottom; + final double? additionalHeight; + final bool? useRow; + final double? additionalImageWidth; + const ProjectHorizontalCard( + {super.key, + required this.project, + this.useRow, + this.addBottom, + this.additionalHeight, + this.additionalImageWidth}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 4.5), + child: GestureDetector( + onTap: () { + Navigator.pushNamed(context, Routes.projectDetailsScreen, + arguments: {"project": project}); + }, + child: Container( + height: addBottom == null ? 115 : (115 + (additionalHeight ?? 0)), + decoration: BoxDecoration( + border: Border.all(width: 1.5, color: context.color.borderColor), + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(18)), + child: Stack( + fit: StackFit.expand, + children: [ + Column( + mainAxisSize: MainAxisSize.min, + children: [ + Expanded( + child: Row( + children: [ + Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(15), + child: Stack( + children: [ + UiUtils.getImage( + project.image ?? "", + height: 111, + width: 100 + (additionalImageWidth ?? 0), + fit: BoxFit.cover, + ), + // Text(property.promoted.toString()), + ], + ), + ), + ], + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + top: 5, + left: 12, + bottom: 5, + right: 12, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Row( + children: [ + UiUtils.imageType( + project.category!.image ?? "", + width: 18, + height: 18, + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null), + const SizedBox( + width: 5, + ), + Expanded( + flex: 3, + child: const Text('project.category!.category!') + .setMaxLines(lines: 1) + .size( + context.font.small.rf(context), + ) + .bold( + weight: FontWeight.w400, + ) + .color( + context.color.textLightColor, + ), + ), + Spacer(), + Container( + height: 19, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + color: context.color.buttonColor + .withOpacity(0.5), + borderRadius: + BorderRadius.circular(4)), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8.0), + child: Center( + child: Text( + project.type!.translate(context), + ) + .color( + context.color.textColorDark, + ) + .bold() + .size(context.font.smaller), + ), + ), + ) + ], + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + project.title!.firstUpperCase(), + ) + .setMaxLines(lines: 1) + .size(context.font.large) + .color(context.color.textColorDark), + Text( + project.description!.firstUpperCase(), + ) + .setMaxLines(lines: 1) + .size(context.font.small) + .color(context.color.textColorDark + .withOpacity(0.80)), + ], + ), + if (project.city != "") + Row( + children: [ + Icon( + Icons.location_on, + size: 16, + color: context.color.textLightColor, + ), + Expanded( + child: Text(project.city?.trim() ?? "") + .setMaxLines(lines: 1) + .color( + context.color.textLightColor), + ) + ], + ) + ], + ), + ), + ), + ], + ), + ), + + if (useRow == false || useRow == null) ...addBottom ?? [], + + if (useRow == true) ...{Row(children: addBottom ?? [])} + + // ...addBottom ?? [] + ], + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/home/Widgets/property_card_big.dart b/lib/Ui/screens/home/Widgets/property_card_big.dart new file mode 100644 index 0000000..b1a8f6f --- /dev/null +++ b/lib/Ui/screens/home/Widgets/property_card_big.dart @@ -0,0 +1,275 @@ +import 'dart:ui'; + +import 'package:flutter/material.dart'; + +import '../../../../data/cubits/favorite/add_to_favorite_cubit.dart'; +import '../../../../data/model/property_model.dart'; +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/Extensions/extensions.dart'; +import '../../../../utils/constant.dart'; +import '../../../../utils/helper_utils.dart'; +import '../../../../utils/string_extenstion.dart'; +import '../../../../utils/ui_utils.dart'; +import '../../proprties/property_details.dart'; +import '../../widgets/like_button_widget.dart'; +import '../../widgets/promoted_widget.dart'; + +class PropertyCardBig extends StatelessWidget { + final PropertyModel property; + final bool? isFirst; + final bool? showEndPadding; + final Function(FavoriteType type)? onLikeChange; + const PropertyCardBig( + {super.key, + this.onLikeChange, + required this.property, + this.isFirst, + this.showEndPadding}); + + @override + Widget build(BuildContext context) { + String rentPrice = (property.price! + .priceFormate( + disabled: false, + isCurrency: true + ) + .toString() + .formatAmount(prefix: true)); + if (property.rentduration != "" && property.rentduration != null) { + rentPrice = + ("$rentPrice / ") + (rentDurationMap[property.rentduration] ?? ""); + } + + return Padding( + padding: EdgeInsetsDirectional.only( + start: (isFirst ?? false) ? 0 : 5.0, + end: (showEndPadding ?? true) ? 5.0 : 0, + ), + child: GestureDetector( + onLongPress: () { + HelperUtils.share(context, property.id!, property?.slugId ?? ""); + }, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(15), + color: context.color.secondaryColor, + border: Border.all( + width: 1.5, + color: context.color.borderColor, + ), + ), + height: 272, + width: 250, + child: Stack( + children: [ + Column( + children: [ + SizedBox( + height: 147, + child: Stack( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(15), + child: UiUtils.getImage( + property.titleImage!, + height: 147, + width: double.infinity, + fit: BoxFit.cover, + blurHash: property.titleimagehash, + ), + ), + PositionedDirectional( + start: 10, + bottom: 10, + child: Container( + height: 24, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + color: context.color.secondaryColor.withOpacity( + 0.7, + ), + borderRadius: BorderRadius.circular( + 4, + ), + ), + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 2, sigmaY: 3), + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 8.0), + child: Center( + child: Text( + property.properyType == 'Rent' + ? 'Sewa' + : 'Jual', + ) + .color( + context.color.textColorDark, + ) + .bold() + .size(context.font.smaller), + ), + ), + ), + ), + ) + ], + ), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + top: 5, bottom: 5, left: 12, right: 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + UiUtils.imageType(property.category!.image!, + width: 18, + height: 18, + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null), + const SizedBox( + width: 5, + ), + Text(property.category?.category ?? "") + .size( + context.font.small, + ) + .bold( + weight: FontWeight.w400, + ) + .color( + context.color.textLightColor, + ) + ], + ), + const SizedBox( + height: 7, + ), + if (property.properyType.toString().toLowerCase() == + "rent") ...[ + Text(rentPrice) + .size( + context.font.large, + ) + .color( + context.color.tertiaryColor, + ) + .bold( + weight: FontWeight.w700, + ), + ] else ...[ + Text(property.price! + .priceFormate( + disabled: false, + isCurrency: true + ) + .toString() + .formatAmount(prefix: true)) + .size(context.font.large) + .color(context.color.tertiaryColor) + .bold( + weight: FontWeight.w700, + ), + ], + const SizedBox( + height: 5, + ), + Text( + property.title ?? "", + ) + .setMaxLines(lines: 1) + .size(context.font.large) + .color(context.color.textColorDark), + if (property.city != "") ...[ + const Spacer(), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + UiUtils.getSvg(AppIcons.location, + color: context.color.textLightColor), + const SizedBox( + width: 5, + ), + Expanded( + child: Text(property.city!) + .color(context.color.textLightColor) + .setMaxLines(lines: 1), + ) + ], + ) + ] + ], + ), + ), + ) + ], + ), + PositionedDirectional( + end: 25, + top: 128, + child: Container( + width: 32, + height: 32, + decoration: BoxDecoration( + color: context.color.secondaryColor, + shape: BoxShape.circle, + boxShadow: const [ + BoxShadow( + color: Color.fromARGB(33, 0, 0, 0), + offset: Offset(0, 2), + blurRadius: 15, + spreadRadius: 0) + ], + ), + child: LikeButtonWidget( + property: property, + onLikeChanged: (type) { + onLikeChange?.call(type); + }, + ), + ), + ), + PositionedDirectional( + start: 10, + top: 10, + child: Row( + children: [ + Visibility( + visible: property.promoted ?? false, + child: const PromotedCard(type: PromoteCardType.text)), + // const SizedBox( + // width: 2, + // ), + // Container( + // height: 24, + // decoration: BoxDecoration( + // color: context.color.secondaryColor.withOpacity(0.9), + // borderRadius: BorderRadius.circular(4)), + // child: Padding( + // padding: const EdgeInsets.symmetric(horizontal: 8.0), + // child: Center( + // child: Text( + // UiUtils.getTranslatedLabel(context, "sell"), + // ) + // .color( + // context.color.textColorDark, + // ) + // .bold() + // .size(context.font.smaller), + // ), + // ), + // ) + ], + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/home/Widgets/property_gradient_card.dart b/lib/Ui/screens/home/Widgets/property_gradient_card.dart new file mode 100644 index 0000000..531a8b8 --- /dev/null +++ b/lib/Ui/screens/home/Widgets/property_gradient_card.dart @@ -0,0 +1,275 @@ +import 'package:ebroker/Ui/screens/widgets/promoted_widget.dart'; +import 'package:ebroker/app/routes.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/string_extenstion.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; + +import '../../../../data/model/property_model.dart'; +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/constant.dart'; +import '../../../../utils/ui_utils.dart'; + +class PropertyGradiendCard extends StatefulWidget { + final PropertyModel model; + final bool? isFirst; + final bool? showEndPadding; + const PropertyGradiendCard( + {super.key, required this.model, this.isFirst, this.showEndPadding}); + + @override + State createState() => _PropertyGradiendCardState(); +} + +class _PropertyGradiendCardState extends State { + List paramterList(PropertyModel propertie) { + List? parameters = propertie.parameters; + + List? icons = parameters?.map((e) { + return Padding( + padding: const EdgeInsets.all(2.0), + child: SizedBox( + width: 15, + height: 15, + child: SvgPicture.network( + e.image!, + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null, + ), + ), + ); + }).toList(); + + Iterable? filterd = icons?.take(4); + + return filterd?.toList() ?? []; + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + Navigator.pushNamed(context, Routes.propertyDetails, arguments: { + 'propertyData': widget.model, + 'propertiesList': [], + 'fromMyProperty': false, + }); + }, + child: Padding( + padding: EdgeInsetsDirectional.only( + start: (widget.isFirst ?? false) ? 0 : 5.0, + end: (widget.showEndPadding ?? true) ? 5.0 : 0, + ), + child: Container( + height: 200, + width: 300, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + ), + child: LayoutBuilder(builder: (context, c) { + PropertyModel propertie = widget.model; + return Stack( + children: [ + UiUtils.getImage( + propertie.titleImage ?? "", + fit: BoxFit.cover, + width: double.infinity, + height: double.infinity, + ), + Container( + width: c.maxWidth, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.bottomCenter, + end: Alignment.topCenter, + colors: [ + Colors.black.withOpacity(0.72), + Colors.black.withOpacity(0.3), + Colors.transparent, + ], + stops: const [ + 0.2, + 0.4, + 0.7 + ]), + ), + ), + + Padding( + padding: const EdgeInsets.all(10.0), + child: SizedBox( + height: c.maxHeight, + width: c.maxWidth, + child: Stack( + children: [ + PositionedDirectional( + top: 0, + start: 0, + child: Row( + children: [ + Container( + height: 19, + decoration: BoxDecoration( + color: secondaryColorDark.withOpacity(0.9), + borderRadius: BorderRadius.circular(4)), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8.0), + child: Center( + child: Text( + propertie.properyType!.translate(context), + ) + .color( + context.color.buttonColor, + ) + .bold() + .size(context.font.smaller), + ), + ), + ), + const SizedBox( + width: 2, + ), + if (propertie.promoted ?? false) + Container( + height: 19, + decoration: BoxDecoration( + color: context.color.tertiaryColor, + borderRadius: BorderRadius.circular(4)), + child: const Padding( + padding: + EdgeInsets.symmetric(horizontal: 8.0), + child: Center( + child: PromotedCard( + color: Colors.transparent, + type: PromoteCardType.icon), + ), + ), + ) + ], + ), + ), + PositionedDirectional( + bottom: 0, + start: 0, + child: SizedBox( + height: c.maxHeight * 0.35, + width: c.maxWidth - 20, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + flex: 4, + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + const Spacer(), + Row( + crossAxisAlignment: + CrossAxisAlignment.center, + children: [ + UiUtils.imageType( + propertie.category?.image ?? "", + color: + Constant.adaptThemeColorSvg + ? context + .color.tertiaryColor + : null, + width: 20, + height: 20), + const SizedBox( + width: 3, + ), + Expanded( + child: Text((propertie.category! + .category) ?? + "") + .setMaxLines(lines: 1) + .color(context + .color.buttonColor), + ), + ], + ), + const Spacer(), + Text(((propertie.title) ?? "")) + .setMaxLines(lines: 1) + .size(context.font.large) + .color(context.color.buttonColor), + const Spacer(), + Row( + children: [ + SvgPicture.asset( + AppIcons.location, + color: context.color.buttonColor + .withOpacity(0.8), + width: 12, + height: 12, + ), + Expanded( + child: SizedBox( + child: Text(propertie.address! + .toString()) + .setMaxLines(lines: 1) + .size(context.font.small) + .color(context + .color.buttonColor), + ), + ), + ], + ) + ], + ), + ), + Expanded( + flex: 2, + child: Column( + crossAxisAlignment: + CrossAxisAlignment.end, + mainAxisAlignment: + MainAxisAlignment.spaceEvenly, + children: [ + const Spacer(), + FittedBox( + fit: BoxFit.fitWidth, + child: Text(propertie.price! + .priceFormate( + disabled: Constant + .isNumberWithSuffix == + false) + .toString() + .formatAmount( + prefix: true, + )) + .bold() + .setMaxLines(lines: 1) + .size(context.font.extraLarge) + .color(context.color.buttonColor), + ), + Row( + mainAxisSize: MainAxisSize.min, + children: paramterList(propertie), + ) + ], + ), + ) + ], + ), + )) + ], + ), + ), + ), + + // const PositionedDirectional( + // child: PromotedCard(type: PromoteCardType.icon)) + ], + ); + }), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/home/Widgets/property_horizontal_card.dart b/lib/Ui/screens/home/Widgets/property_horizontal_card.dart new file mode 100644 index 0000000..6767dc2 --- /dev/null +++ b/lib/Ui/screens/home/Widgets/property_horizontal_card.dart @@ -0,0 +1,363 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:ui'; + +import 'package:ebroker/Ui/screens/widgets/like_button_widget.dart'; +import 'package:ebroker/Ui/screens/widgets/promoted_widget.dart'; +import 'package:ebroker/data/cubits/favorite/add_to_favorite_cubit.dart'; +import 'package:ebroker/utils/AppIcon.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:ebroker/utils/string_extenstion.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_svg/svg.dart'; + +import '../../../../data/model/property_model.dart'; +import '../../../../utils/constant.dart'; +import '../../../../utils/helper_utils.dart'; +import '../../../../utils/ui_utils.dart'; +import '../../proprties/property_details.dart'; + +class PropertyHorizontalCard extends StatelessWidget { + final PropertyModel property; + final List? addBottom; + final double? additionalHeight; + final StatusButton? statusButton; + final Function(FavoriteType type)? onLikeChange; + final bool? useRow; + final bool? showDeleteButton; + final VoidCallback? onDeleteTap; + final double? additionalImageWidth; + final bool? showLikeButton; + const PropertyHorizontalCard( + {super.key, + required this.property, + this.useRow, + this.addBottom, + this.additionalHeight, + this.onLikeChange, + this.statusButton, + this.showDeleteButton, + this.onDeleteTap, + this.showLikeButton, + this.additionalImageWidth}); + + @override + Widget build(BuildContext context) { + String rentPrice = (property.price! + .priceFormate( + disabled: false + ) + .toString() + .formatAmount(prefix: true)); + + if (property.rentduration != "" && property.rentduration != null) { + rentPrice = + ("$rentPrice / ") + (rentDurationMap[property.rentduration] ?? ""); + } + + return BlocProvider( + create: (context) => AddToFavoriteCubitCubit(), + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 4.5), + child: GestureDetector( + onLongPress: () { + HelperUtils.share(context, property.id!, property?.slugId ?? ""); + }, + child: Container( + height: addBottom == null ? 124 : (124 + (additionalHeight ?? 0)), + decoration: BoxDecoration( + border: + Border.all(width: 1.5, color: context.color.borderColor), + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(18)), + child: Stack( + fit: StackFit.expand, + children: [ + Column( + mainAxisSize: MainAxisSize.min, + children: [ + Expanded( + child: Row( + children: [ + Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(15), + child: Stack( + children: [ + UiUtils.getImage( + property.titleImage ?? "", + height: statusButton != null ? 90 : 120, + width: 100 + (additionalImageWidth ?? 0), + fit: BoxFit.cover, + ), + // Text(property.promoted.toString()), + if (property.promoted ?? false) + const PositionedDirectional( + start: 5, + top: 5, + child: PromotedCard( + type: PromoteCardType.icon)), + // if (false) + // Container( + // width: 24, + // height: 24, + // decoration: BoxDecoration( + // color: context.color.tertiaryColor, + // borderRadius: + // BorderRadius.circular(4)), + // child: FittedBox( + // fit: BoxFit.none, + // child: Container( + // width: 14, + // height: 14, + // child: SvgPicture.asset( + // AppIcons.promoted, + // color: context.color.buttonColor, + // width: 10, + // height: 10, + // fit: BoxFit.fitWidth, + // ), + // ), + // ), + // ), + + PositionedDirectional( + bottom: 6, + start: 6, + child: Container( + height: 19, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + color: context.color.secondaryColor + .withOpacity(0.7), + borderRadius: + BorderRadius.circular(4)), + child: BackdropFilter( + filter: ImageFilter.blur( + sigmaX: 2, sigmaY: 3), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8.0), + child: Center( + child: Text( + property.properyType == 'Rent' ? 'Sewa' : 'Jual', + ) + .color( + context.color.textColorDark, + ) + .bold() + .size(context.font.smaller), + ), + ), + ), + ), + ), + ], + ), + ), + if (statusButton != null) + Padding( + padding: const EdgeInsets.symmetric( + vertical: 3.0, horizontal: 3.0), + child: Container( + decoration: BoxDecoration( + color: statusButton!.color, + borderRadius: BorderRadius.circular(4)), + width: 80, + height: 120 - 90 - 8, + child: Center( + child: Text(statusButton!.lable) + .size(context.font.small) + .bold() + .color(statusButton?.textColor ?? + Colors.black)), + ), + ) + ], + ), + Expanded( + child: Padding( + padding: const EdgeInsets.only( + top: 5, + left: 12, + bottom: 5, + right: 12, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: + MainAxisAlignment.spaceEvenly, + children: [ + Row( + children: [ + UiUtils.imageType( + property.category!.image ?? "", + width: 18, + height: 18, + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null), + const SizedBox( + width: 5, + ), + Expanded( + child: + Text(property.category!.category!) + .setMaxLines(lines: 1) + .size( + context.font.small + .rf(context), + ) + .bold( + weight: FontWeight.w400, + ) + .color( + context.color.textLightColor, + ), + ), + if (showLikeButton ?? true) + Container( + width: 32, + height: 32, + decoration: BoxDecoration( + color: context.color.secondaryColor, + shape: BoxShape.circle, + boxShadow: const [ + BoxShadow( + color: + Color.fromARGB(12, 0, 0, 0), + offset: Offset(0, 2), + blurRadius: 15, + spreadRadius: 0, + ) + ], + ), + child: LikeButtonWidget( + property: property, + onLikeChanged: onLikeChange, + ), + ), + ], + ), + if (property.properyType + .toString() + .toLowerCase() == + "rent") ...[ + Text( + rentPrice, + ) + .size(context.font.large) + .color(context.color.tertiaryColor) + .bold(weight: FontWeight.w700), + ] else ...[ + Text( + property.price! + .priceFormate( + disabled: false) + .toString() + .formatAmount( + prefix: true, + ), + ) + .size(context.font.large) + .color(context.color.tertiaryColor) + .bold(weight: FontWeight.w700), + ], + Text( + property.title!.firstUpperCase(), + ) + .setMaxLines(lines: 1) + .size(context.font.large) + .color(context.color.textColorDark), + if (property.city != "") + Row( + children: [ + Icon( + Icons.location_on, + size: 16, + color: context.color.textLightColor, + ), + Expanded( + child: Text( + property.city?.trim() ?? "" + ) + .setMaxLines(lines: 1) + .color( + context.color.textLightColor), + ) + ], + ) + ], + ), + ), + ), + ], + ), + ), + + if (useRow == false || useRow == null) ...addBottom ?? [], + + if (useRow == true) ...{Row(children: addBottom ?? [])} + + // ...addBottom ?? [] + ], + ), + if (showDeleteButton ?? false) + PositionedDirectional( + top: 32 * 2, + end: 12, + child: InkWell( + onTap: () { + onDeleteTap?.call(); + }, + child: Container( + width: 32, + height: 32, + decoration: BoxDecoration( + color: context.color.secondaryColor, + shape: BoxShape.circle, + boxShadow: const [ + BoxShadow( + color: Color.fromARGB(33, 0, 0, 0), + offset: Offset(0, 2), + blurRadius: 15, + spreadRadius: 0) + ], + ), + child: SizedBox( + height: 24, + width: 24, + child: FittedBox( + fit: BoxFit.none, + child: SvgPicture.asset( + AppIcons.bin, + color: context.color.tertiaryColor, + width: 18, + height: 18, + ), + ), + ), + ), + ), + ), + ], + ), + ), + ), + ), + ); + } +} + +class StatusButton { + final String lable; + final Color color; + final Color? textColor; + StatusButton({ + required this.lable, + required this.color, + this.textColor, + }); +} diff --git a/lib/Ui/screens/home/category_list.dart b/lib/Ui/screens/home/category_list.dart new file mode 100644 index 0000000..f1ef2a1 --- /dev/null +++ b/lib/Ui/screens/home/category_list.dart @@ -0,0 +1,162 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:google_mobile_ads/google_mobile_ads.dart'; + +import '../../../app/routes.dart'; +import '../../../data/cubits/category/fetch_category_cubit.dart'; +import '../../../data/model/category.dart'; +import '../../../utils/AdMob/bannerAdLoadWidget.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; + +class CategoryList extends StatefulWidget { + final String? from; + const CategoryList({Key? key, this.from}) : super(key: key); + + @override + State createState() => _CategoryListState(); + + static Route route(RouteSettings routeSettings) { + Map? args = routeSettings.arguments as Map?; + return BlurredRouter( + builder: (_) => CategoryList(from: args?['from']), + ); + } +} + +class _CategoryListState extends State + with TickerProviderStateMixin { + final ScrollController _pageScrollController = ScrollController(); + + @override + void initState() { + _pageScrollController.addListener(() { + if (_pageScrollController.isEndReached()) { + if (context.read().hasMoreData()) { + context.read().fetchCategoriesMore(); + } + } + }); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: UiUtils.buildAppBar( + context, + showBackButton: true, + title: UiUtils.translate(context, "categoriesLbl"), + ), + bottomNavigationBar: const BottomAppBar( + child: BannerAdWidget(bannerSize: AdSize.banner), + ), + body: BlocConsumer( + listener: ((context, state) { + // if (state is FetchCategorySuccess) {} + }), + builder: (context, state) { + if (state is FetchCategoryInProgress) { + return UiUtils.progress(); + } + if (state is FetchCategorySuccess) { + return Column( + children: [ + Expanded( + child: GridView.builder( + controller: _pageScrollController, + padding: const EdgeInsets.symmetric( + horizontal: 15, + vertical: 15, + ), + itemCount: state.categories.length, + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + childAspectRatio: MediaQuery.of(context).size.width / + (MediaQuery.of(context).size.height / 3.5)), + itemBuilder: (context, index) { + Category category = state.categories[index]; + return Padding( + padding: const EdgeInsets.all(1.5), + child: InkWell( + onTap: () { + if (widget.from == Routes.filterScreen) { + Navigator.pop(context, category); + } else { + Constant.propertyFilter = null; + HelperUtils.goToNextPage( + Routes.propertiesList, + context, + false, + args: { + 'catID': category.id, + 'catName': category.category + }, + ); //pass current index category id & name here + } + }, + child: Container( + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(10), + border: Border.all( + width: 1.5, + color: context.color.borderColor)), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 50, + height: 50, + alignment: Alignment.center, + child: UiUtils.imageType(category.image!, + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null)), + const SizedBox(height: 5), + Text(category.category!, + textAlign: TextAlign.center, + maxLines: 1, + overflow: TextOverflow.ellipsis) + ]), + ), + ), + ); + }, + ), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ); + } + + return Container(); + }, + ), + ); + // body: + // BlocBuilder(builder: (context, state) { + // if (state is CategoryFetchProgress) { + // return const Center( + // child: CircularProgressIndicator(), + // ); + // } else if (state is CategoryFetchSuccess) { + // initCategoryAnimations(state.categorylist); + // categorieslist.clear(); + // categorieslist.addAll(state.categorylist); + + // return gridWidget(); + // } else if (state is ChangeSelectedCategory) { + // return gridWidget(); + // } else { + // return const SizedBox.shrink(); + // } + // }), + // ); + } +} diff --git a/lib/Ui/screens/home/change_language_screen.dart b/lib/Ui/screens/home/change_language_screen.dart new file mode 100644 index 0000000..1f55eef --- /dev/null +++ b/lib/Ui/screens/home/change_language_screen.dart @@ -0,0 +1,98 @@ +import 'package:ebroker/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import 'package:ebroker/data/cubits/system/fetch_language_cubit.dart'; +import 'package:ebroker/data/cubits/system/fetch_system_settings_cubit.dart'; +import 'package:ebroker/data/cubits/system/language_cubit.dart'; +import 'package:ebroker/data/helper/widgets.dart'; +import 'package:ebroker/data/model/system_settings_model.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/hive_utils.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +// import 'package:bloc/src/bloc_base.dart'; + +class LanguagesListScreen extends StatelessWidget { + const LanguagesListScreen({super.key}); + static Route route(RouteSettings settings) { + return BlurredRouter( + builder: (context) => const LanguagesListScreen(), + ); + } + + @override + Widget build(BuildContext context) { + if (context + .watch() + .getSetting(SystemSetting.language) == + null) { + return Scaffold( + backgroundColor: context.color.primaryColor, + appBar: UiUtils.buildAppBar(context, + showBackButton: true, + title: UiUtils.translate(context, "chooseLanguage")), + body: Center(child: UiUtils.progress()), + ); + } + + List setting = context + .watch() + .getSetting(SystemSetting.language) as List; + + var language = context.watch().state; + return Scaffold( + backgroundColor: context.color.primaryColor, + appBar: UiUtils.buildAppBar(context, + showBackButton: true, + title: UiUtils.translate(context, "chooseLanguage")), + body: BlocListener( + listener: (context, state) { + if (state is FetchLanguageInProgress) { + Widgets.showLoader(context); + } + if (state is FetchLanguageSuccess) { + Widgets.hideLoder(context); + Map map = state.toMap(); + var data = map['file_name']; + map['data'] = data; + map.remove("file_name"); + + HiveUtils.storeLanguage(map); + context.read().emit(LanguageLoader(state.code)); + } + }, + child: ListView.builder( + physics: const BouncingScrollPhysics(), + itemCount: setting.length, + padding: const EdgeInsets.symmetric(horizontal: 20), + itemBuilder: (context, index) { + Color color = (language as LanguageLoader).languageCode == + setting[index]['code'] + ? context.color.tertiaryColor + : context.color.textLightColor.withOpacity(0.03); + + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Container( + decoration: BoxDecoration( + color: color, + borderRadius: BorderRadius.circular(10), + ), + child: ListTile( + onTap: () { + context + .read() + .getLanguage(setting[index]['code']); + }, + title: Text(setting[index]['name']) + .color( + (language).languageCode == setting[index]['code'] + ? context.color.buttonColor + : context.color.textColorDark) + .bold()), + ), + ); + }), + ), + ); + } +} diff --git a/lib/Ui/screens/home/city_properties_screen.dart b/lib/Ui/screens/home/city_properties_screen.dart new file mode 100644 index 0000000..6723e1b --- /dev/null +++ b/lib/Ui/screens/home/city_properties_screen.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; + +class CityPropertiesScreen extends StatefulWidget { + final String cityName; + + const CityPropertiesScreen({super.key, required this.cityName}); + + @override + State createState() => _CityPropertiesScreenState(); +} + +class _CityPropertiesScreenState extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Container(), + ); + } +} diff --git a/lib/Ui/screens/home/home_screen.dart b/lib/Ui/screens/home/home_screen.dart new file mode 100644 index 0000000..ca5f902 --- /dev/null +++ b/lib/Ui/screens/home/home_screen.dart @@ -0,0 +1,1441 @@ +// import 'dart:developer' as developer; +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:ebroker/Ui/screens/home/Widgets/category_card.dart'; +import 'package:ebroker/Ui/screens/home/Widgets/property_gradient_card.dart'; +import 'package:ebroker/Ui/screens/home/Widgets/property_horizontal_card.dart'; +import 'package:ebroker/Ui/screens/project/view/project_list_screen.dart'; +import 'package:ebroker/Ui/screens/proprties/viewAll.dart'; +import 'package:ebroker/app/default_app_setting.dart'; +import 'package:ebroker/data/cubits/Personalized/fetch_personalized_properties.dart'; +import 'package:ebroker/data/cubits/Utility/proeprty_edit_global.dart'; +import 'package:ebroker/data/cubits/category/fetch_cities_category.dart'; +import 'package:ebroker/data/cubits/project/fetch_projects.dart'; +import 'package:ebroker/data/cubits/property/fetch_city_property_list.dart'; +import 'package:ebroker/data/cubits/property/fetch_nearby_property_cubit.dart'; +import 'package:ebroker/data/cubits/property/fetch_recent_properties.dart'; +import 'package:ebroker/data/model/category.dart'; +import 'package:ebroker/data/model/project_model.dart'; +import 'package:ebroker/utils/AdMob/bannerAdLoadWidget.dart'; +import 'package:ebroker/utils/guestChecker.dart'; +import 'package:firebase_analytics/firebase_analytics.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:uni_links/uni_links.dart'; + +import '../../../app/app.dart'; +import '../../../app/routes.dart'; +import '../../../data/cubits/category/fetch_category_cubit.dart'; +import '../../../data/cubits/favorite/add_to_favorite_cubit.dart'; +import '../../../data/cubits/favorite/fetch_favorites_cubit.dart'; +import '../../../data/cubits/property/fetch_home_properties_cubit.dart'; +import '../../../data/cubits/property/fetch_most_liked_properties.dart'; +import '../../../data/cubits/property/fetch_most_viewed_properties_cubit.dart'; +import '../../../data/cubits/property/fetch_promoted_properties_cubit.dart'; +import '../../../data/cubits/slider_cubit.dart'; +import '../../../data/cubits/system/fetch_system_settings_cubit.dart'; +import '../../../data/cubits/system/get_api_keys_cubit.dart'; +import '../../../data/helper/design_configs.dart'; +import '../../../data/model/property_model.dart'; +import '../../../data/model/system_settings_model.dart'; +import '../../../settings.dart'; +import '../../../utils/AppIcon.dart'; +import '../../../utils/DeepLink/nativeDeepLinkManager.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/api.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/deeplinkManager.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/hive_utils.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/sliver_grid_delegate_with_fixed_cross_axis_count_and_fixed_height.dart'; +import '../../../utils/ui_utils.dart'; +import '../main_activity.dart'; +import '../widgets/Erros/no_data_found.dart'; +import '../widgets/Erros/no_internet.dart'; +import '../widgets/Erros/something_went_wrong.dart'; +import '../widgets/blurred_dialoge_box.dart'; +import '../widgets/shimmerLoadingContainer.dart'; +import 'Widgets/city_heading_card.dart'; +import 'Widgets/header_card.dart'; +import 'Widgets/homeListener.dart'; +import 'Widgets/home_profile_image_card.dart'; +import 'Widgets/home_search.dart'; +import 'Widgets/home_shimmers.dart'; +import 'Widgets/location_widget.dart'; +import 'Widgets/property_card_big.dart'; +import 'slider_widget.dart'; + +const double sidePadding = 18; + +class HomeScreen extends StatefulWidget { + final String? from; + const HomeScreen({Key? key, this.from}) : super(key: key); + @override + HomeScreenState createState() => HomeScreenState(); +} + +class HomeScreenState extends State + with TickerProviderStateMixin, AutomaticKeepAliveClientMixin { + @override + bool get wantKeepAlive => true; + List propertyLocalList = []; + bool isCategoryEmpty = false; + HomePageStateListener homeStateListener = HomePageStateListener(); + + @override + void initState() { + DeepLinkManager.initDeepLinks(context); + + getInitialLink().then((value) { + print("GOT THE LINK IN BACKGROUND $value"); + if (value == null) return; + + Navigator.push( + Constant.navigatorKey.currentContext!, + NativeLinkWidget.render( + RouteSettings(name: value), + ), + ); + }); + linkStream.listen((event) { + print("GOT THE LINK IN Forground $event"); + + Navigator.push( + Constant.navigatorKey.currentContext!, + NativeLinkWidget.render( + RouteSettings(name: event), + ), + ); + }); + + initializeSettings(); + addPageScrollListener(); + notificationPermissionChecker(); + fetchApiKeys(); + loadInitialData(context); + initializeHomeStateListener(); + + super.initState(); + } + + void initializeSettings() { + final settingsCubit = context.read(); + if (!const bool.fromEnvironment("force-disable-demo-mode", + defaultValue: false)) { + Constant.isDemoModeOn = + settingsCubit.getSetting(SystemSetting.demoMode) ?? false; + } + } + + void addPageScrollListener() { + homeScreenController.addListener(pageScrollListener); + } + + void initializeHomeStateListener() { + homeStateListener.init( + setState, + onNetAvailable: () { + loadInitialData(context); + }, + ); + } + + void fetchApiKeys() { + context.read().fetch(); + } + + void pageScrollListener() { + ///This will load data on page end + if (homeScreenController.isEndReached()) { + if (mounted) { + if (context.read().hasMoreData()) { + context.read().fetchMoreProperty(); + } + } + } + } + + void _onTapPromotedSeeAll() { + // Navigator.pushNamed(context, Routes.promotedPropertiesScreen); + StateMap stateMap = StateMap< + FetchPromotedPropertiesInitial, + FetchPromotedPropertiesInProgress, + FetchPromotedPropertiesSuccess, + FetchPromotedPropertiesFailure>(); + + ViewAllScreen( + title: "promotedProperties".translate( + context, + ), + map: stateMap, + ).open(context); + } + + void _onTapNearByPropertiesAll() { + StateMap stateMap = StateMap< + FetchNearbyPropertiesInitial, + FetchNearbyPropertiesInProgress, + FetchNearbyPropertiesSuccess, + FetchNearbyPropertiesFailure>(); + + ViewAllScreen( + title: "nearByProperties".translate(context), + map: stateMap, + ).open(context); + } + + void _onTapMostLikedAll() { + ///Navigator.pushNamed(context, Routes.mostLikedPropertiesScreen); + StateMap stateMap = StateMap< + FetchMostLikedPropertiesInitial, + FetchMostLikedPropertiesInProgress, + FetchMostLikedPropertiesSuccess, + FetchMostLikedPropertiesFailure>(); + + ViewAllScreen( + title: "mostLikedProperties".translate(context), + map: stateMap, + ).open(context); + } + + void _onTapMostViewedSeelAll() { + StateMap stateMap = StateMap< + FetchMostViewedPropertiesInitial, + FetchMostViewedPropertiesInProgress, + FetchMostViewedPropertiesSuccess, + FetchMostViewedPropertiesFailure>(); + + ViewAllScreen( + title: "mostViewed".translate(context), + map: stateMap, + ).open(context); + } + + void _onRefresh() { + context.read().fetch(forceRefresh: true); + context.read().fetchSlider(context, forceRefresh: true); + context.read().fetchCategories(forceRefresh: true); + context.read().fetch(forceRefresh: true); + context.read().fetch(forceRefresh: true); + context.read().fetch(forceRefresh: true); + context.read().fetch(forceRefresh: true); + context.read().fetchProjects(); + + context + .read() + .fetchCityCategory(forceRefresh: true); + context.read().fetch(forceRefresh: true); + } + + @override + Widget build(BuildContext context) { + super.build(context); + + HomeScreenDataBinding homeScreenState = homeStateListener.listen(context); + + // FirebaseMessaging.instance + // .getToken() + // .then((value) => log(value!, name: "FCM")); + // + HiveUtils.getJWT()?.log("JWT"); + // HiveUtils.getUserId()?.log("USER ID"); + return SafeArea( + child: RefreshIndicator( + color: context.color.tertiaryColor, + triggerMode: RefreshIndicatorTriggerMode.onEdge, + onRefresh: () async { + _onRefresh(); + }, + child: Scaffold( + appBar: AppBar( + elevation: 0, + leadingWidth: (HiveUtils.getCityName() != null && + HiveUtils.getCityName().toString().isNotEmpty) + ? 200.rw(context) + : 130, + leading: Padding( + padding: EdgeInsetsDirectional.only( + start: sidePadding.rw(context), + ), + child: (HiveUtils.getCityName() != null && + HiveUtils.getCityName().toString().isNotEmpty) + ? const LocationWidget() + : SizedBox( + child: LoadAppSettings().svg(appSettings.appHomeScreen!), + ), + ), + backgroundColor: const Color.fromARGB(0, 0, 0, 0), + actions: [ + GuestChecker.updateUI( + onChangeStatus: (bool? isGuest) { + Widget buildDefaultPersonSVG(BuildContext context) { + return Container( + width: 90, + height: 90, + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.1), + shape: BoxShape.circle), + child: Center( + child: UiUtils.getSvg( + AppIcons.defaultPersonLogo, + color: context.color.tertiaryColor, + // fit: BoxFit.none, + width: 30, + height: 30, + ), + ), + ); + } + + if (isGuest == null) { + return buildDefaultPersonSVG(context); + } else if (isGuest == true) { + return SizedBox( + width: 90, + ); + } else { + return const CircularProfileImageWidget(); + } + }, + ) + ], + ), + backgroundColor: context.color.primaryColor, + body: Builder(builder: (context) { + if (homeScreenState.state == HomeScreenDataState.fail) { + return const SomethingWentWrong(); + } + + return BlocConsumer( + listener: (context, state) { + if (state is FetchCategoryInProgress) { + homeStateListener.setNetworkState(setState, true); + setState(() {}); + } + if (state is FetchSystemSettingsSuccess) { + homeStateListener.setNetworkState(setState, true); + + setState(() {}); + // var setting = context + // .read() + // .getSetting(SystemSetting.subscription); + // if (setting.length != 0) { + // String packageId = setting[0]['package_id'].toString(); + // Constant.subscriptionPackageId = packageId; + // } + } + }, + builder: (context, state) { + if (homeScreenState.state == HomeScreenDataState.success) { + } else if (homeScreenState.state == + HomeScreenDataState.nointernet) { + return NoInternet( + onRetry: () { + context.read().fetchSlider(context); + context.read().fetchCategories(); + context.read().fetch(); + context.read().fetch(); + context.read().fetchProperty(); + }, + ); + } + + if (homeScreenState.state == HomeScreenDataState.nodata) { + return Center( + child: NoDataFound( + onTap: () { + context.read().fetchSlider(context); + context.read().fetchCategories(); + + context.read().fetch(); + context.read().fetch(); + context + .read() + .fetchProperty(); + }, + ), + ); + } + + return SingleChildScrollView( + controller: homeScreenController, + physics: const BouncingScrollPhysics(), + padding: EdgeInsets.symmetric( + vertical: MediaQuery.of(context).padding.top, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ///Looping through sections so arrange it + ...List.generate( + AppSettings.sections.length, + (index) { + HomeScreenSections section = + AppSettings.sections[index]; + if (section == HomeScreenSections.Search) { + return const HomeSearchField(); + } else if (section == HomeScreenSections.Slider) { + return sliderWidget(); + } else if (section == HomeScreenSections.Category) { + return categoryWidget(); + } else if (section == + HomeScreenSections.NearbyProperties) { + return buildNearByProperties(); + } else if (section == + HomeScreenSections.FeaturedProperties) { + return featuredProperties(homeScreenState, context); + } else if (section == + HomeScreenSections.PersonalizedFeed) { + return const PersonalizedPropertyWidget(); + } else if (section == + HomeScreenSections.RecentlyAdded) { + return const RecentPropertiesSectionWidget(); + } else if (section == + HomeScreenSections.MostLikedProperties) { + return mostLikedProperties( + homeScreenState, context); + } else if (section == HomeScreenSections.MostViewed) { + return mostViewedProperties( + homeScreenState, context); + } else if (section == + HomeScreenSections.PopularCities) { + return Padding( + padding: const EdgeInsets.symmetric( + vertical: 10, + ), + child: Column( + children: [ + const BannerAdWidget(), + const SizedBox( + height: 10, + ), + popularCityProperties(), + ], + ), + ); + } else if (section == HomeScreenSections.project) { + return buildProjects(); + } else { + return const SizedBox.shrink(); + } + }, + ), + const SizedBox( + height: 30, + ), + ], + ), + ); + }, + ); + }), + ), + ), + ); + } + + bool cityEmpty() { + if (context.watch().state + is FetchCityCategorySuccess) { + return (context.watch().state + as FetchCityCategorySuccess) + .cities + .isEmpty; + } + return true; + } + + Widget buildProjects() { + return Column( + children: [ + if (!context.watch().isProjectEmpty()) + TitleHeader( + title: "Project section".translate(context), + onSeeAll: () { + Navigator.pushNamed(context, Routes.allProjectsScreen); + }, + ), + BlocBuilder( + builder: (context, state) { + if (state is FetchProjectsInProgress) { + return SizedBox( + height: 220, + child: ListView.separated( + itemCount: 4, + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.symmetric(horizontal: 14), + scrollDirection: Axis.horizontal, + shrinkWrap: true, + itemBuilder: (context, index) { + return CustomShimmer( + height: 220, + width: context.screenWidth * 0.9, + ); + }, + separatorBuilder: (context, index) { + return const SizedBox( + width: 8, + ); + }, + ), + ); + } + if (state is FetchProjectsSuccess) { + if (state.projects.isEmpty) return const SizedBox.shrink(); + return SizedBox( + height: 220, + child: ListView.separated( + itemCount: state.projects.length, + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.symmetric(horizontal: 14), + scrollDirection: Axis.horizontal, + shrinkWrap: true, + separatorBuilder: (context, index) { + return const SizedBox( + width: 8, + ); + }, + itemBuilder: (context, index) { + ProjectModel project = state.projects[index]; + return GestureDetector( + onTap: () { + GuestChecker.check( + onNotGuest: () { + if (context + .read() + .getRawSettings()['is_premium'] ?? + false) { + Navigator.pushNamed( + context, Routes.projectDetailsScreen, + arguments: { + "project": project, + }); + } else { + UiUtils.showBlurredDialoge(context, + dialoge: BlurredDialogBox( + title: "Subscription needed", + isAcceptContainesPush: true, + onAccept: () async { + Navigator.popAndPushNamed(context, + Routes.subscriptionPackageListRoute, + arguments: {"from": "home"}); + }, + content: const Text( + "Subscribe to package if you want to use this feature"))); + } + }, + ); + }, + child: ProjectCard( + title: project.title ?? "", + categoryIcon: project.category?.image ?? "", + url: project.image ?? "", + categoryName: project.category?.category ?? "", + description: project.description ?? "", + status: project.type ?? "", + ), + ); + }, + ), + ); + } + + return Container(); + }, + ), + ], + ); + } + + Widget popularCityProperties() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (!cityEmpty()) const CityHeadingCard(), + const SizedBox( + height: 8, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: BlocBuilder( + builder: (context, FetchCityCategoryState state) { + if (state is FetchCityCategorySuccess) { + return StaggeredGrid.count( + crossAxisCount: 2, + mainAxisSpacing: 4, + crossAxisSpacing: 4, + children: [ + ...List.generate(state.cities.length, (index) { + if ((index % 4 == 0 || index % 5 == 0)) { + return StaggeredGridTile.count( + crossAxisCellCount: 1, + mainAxisCellCount: 2, + child: buildCityCard(state, index), + ); + } else { + return StaggeredGridTile.count( + crossAxisCellCount: 1, + mainAxisCellCount: 1, + child: buildCityCard(state, index), + ); + } + }), + ], + ); + } + return Container(); + }, + ), + ), + ], + ); + } + + Widget mostViewedProperties( + HomeScreenDataBinding homeScreenState, BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (!homeScreenState.dataAvailability.isMostViewdPropertyEmpty) + TitleHeader( + onSeeAll: _onTapMostViewedSeelAll, + title: UiUtils.translate(context, "mostViewed")), + if (!homeScreenState.dataAvailability.isMostViewdPropertyEmpty) + buildMostViewedProperties(), + ], + ); + } + + Widget mostLikedProperties( + HomeScreenDataBinding homeScreenState, BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (!homeScreenState.dataAvailability.isMostLikedPropertiesEmpty) ...[ + TitleHeader( + onSeeAll: _onTapMostLikedAll, + title: UiUtils.translate( + context, + "mostLikedProperties", + ), + ), + buildMostLikedProperties(), + const SizedBox( + height: 15, + ), + ], + ], + ); + } + + Widget featuredProperties( + HomeScreenDataBinding homeScreenState, BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (!homeScreenState.dataAvailability.isPromotedPropertyEmpty) + TitleHeader( + onSeeAll: _onTapPromotedSeeAll, + title: UiUtils.translate( + context, + "promotedProperties", + ), + ), + if (!homeScreenState.dataAvailability.isPromotedPropertyEmpty) + buildPromotedProperites(), + ], + ); + } + + Widget sliderWidget() { + return BlocConsumer( + listener: (context, state) { + if (state is SliderFetchSuccess) { + homeStateListener.setNetworkState(setState, true); + setState(() {}); + } + }, + builder: (context, state) { + if (state is SliderFetchInProgress) { + return const SliderShimmer(); + } + if (state is SliderFetchFailure) { + return Container(); + } + if (state is SliderFetchSuccess) { + if (state.sliderlist.isNotEmpty) { + return const SliderWidget(); + } + } + return Container(); + }, + ); + } + + Widget buildCityCard(FetchCityCategorySuccess state, int index) { + return GestureDetector( + onTap: () { + context.read().fetch( + cityName: state.cities[index].name.toString(), + forceRefresh: true, + ); + + var stateMap = StateMap< + FetchCityPropertyInitial, + FetchCityPropertyInProgress, + FetchCityPropertySuccess, + FetchCityPropertyFail>(); + + ViewAllScreen( + title: state.cities[index].name.firstUpperCase(), + map: stateMap, + ).open(context); + }, + child: Container( + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10)), + child: ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Stack( + fit: StackFit.expand, + children: [ + CachedNetworkImage( + imageUrl: state.cities[index].image, + filterQuality: FilterQuality.high, + fit: BoxFit.cover, + ), + Container( + width: double.infinity, + height: double.infinity, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.bottomCenter, + end: Alignment.topCenter, + colors: [ + Colors.black.withOpacity(0.76), + Colors.black.withOpacity(0.68), + Colors.black.withOpacity(0) + ], + ), + ), + ), + PositionedDirectional( + bottom: 8, + start: 8, + child: Text( + "${state.cities[index].name.toString().firstUpperCase()} (${state.cities[index].count})") + .color(context.color.buttonColor), + ), + ], + ), + ), + ), + ); + } + + Widget buildPromotedProperites() { + return BlocBuilder( + builder: (context, state) { + if (state is FetchPromotedPropertiesInProgress) { + return const PromotedPropertiesShimmer(); + } + if (state is FetchPromotedPropertiesFailure) { + return Text(state.error); + } + + if (state is FetchPromotedPropertiesSuccess) { + return SizedBox( + height: 261, + child: ListView.builder( + itemCount: state.properties.length.clamp(0, 6), + shrinkWrap: true, + padding: const EdgeInsets.symmetric( + horizontal: sidePadding, + ), + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + GlobalKey thisITemkye = GlobalKey(); + + ///Model + PropertyModel propertymodel = state.properties[index]; + propertymodel = + context.watch().get(propertymodel); + return GestureDetector( + onTap: () { + FirebaseAnalytics.instance + .logEvent(name: "preview_property", parameters: { + "user_ids": HiveUtils.getUserId(), + "from_section": "featured", + "property_id": propertymodel.id, + "category_id": propertymodel.category!.id + }); + + HelperUtils.goToNextPage( + Routes.propertyDetails, + context, + false, + args: { + 'propertyData': propertymodel, + 'propertiesList': state.properties, + 'fromMyProperty': false, + }, + ); + }, + child: BlocProvider( + create: (context) { + return AddToFavoriteCubitCubit(); + }, + child: PropertyCardBig( + key: thisITemkye, + isFirst: index == 0, + property: propertymodel, + onLikeChange: (type) { + if (type == FavoriteType.add) { + context + .read() + .add(propertymodel); + } else { + context + .read() + .remove(state.properties[index].id); + } + }, + ), + )); + }, + ), + ); + } + + return Container(); + }, + ); + } + + Widget buildMostLikedProperties() { + return BlocConsumer( + listener: (context, state) { + if (state is FetchMostLikedPropertiesFailure) { + if (state.error is ApiException) { + homeStateListener.setNetworkState( + setState, !(state.error.errorMessage == "no-internet")); + } + setState(() {}); + } + if (state is FetchMostLikedPropertiesSuccess) { + homeStateListener.setNetworkState(setState, true); + setState(() {}); + } + }, + builder: (context, state) { + if (state is FetchMostLikedPropertiesInProgress) { + return const MostLikedPropertiesShimmer(); + } + + if (state is FetchMostLikedPropertiesFailure) { + return Text(state.error.error.toString()); + } + if (state is FetchMostLikedPropertiesSuccess) { + return GridView.builder( + shrinkWrap: true, + padding: const EdgeInsets.symmetric( + horizontal: sidePadding, + ), + physics: const NeverScrollableScrollPhysics(), + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCountAndFixedHeight( + mainAxisSpacing: 15, crossAxisCount: 2, height: 260), + itemCount: state.properties.length.clamp(0, 4), + itemBuilder: (context, index) { + PropertyModel property = state.properties[index]; + + property = context.watch().get(property); + + return GestureDetector( + onTap: () { + HelperUtils.goToNextPage( + Routes.propertyDetails, context, false, + args: { + 'propertyData': property, + 'propertiesList': state.properties, + 'fromMyProperty': false, + }); + }, + child: BlocProvider( + create: (context) => AddToFavoriteCubitCubit(), + child: PropertyCardBig( + showEndPadding: false, + isFirst: index == 0, + onLikeChange: (type) { + if (type == FavoriteType.add) { + context.read().add(property); + } else { + context.read().remove(property.id); + } + }, + property: property, + ), + ), + ); + }, + ); + } + + return Container(); + }, + ); + } + + Widget buildNearByProperties() { + return BlocConsumer( + listener: (context, state) { + if (state is FetchNearbyPropertiesFailure) { + if (state.error is ApiException) { + homeStateListener.setNetworkState( + setState, !(state.error.error == "no-internet")); + } + + setState(() {}); + } + if (state is FetchNearbyPropertiesSuccess) { + setState(() {}); + } + }, + builder: (context, state) { + if (state is FetchNearbyPropertiesInProgress) { + return Column( + children: [ + TitleHeader( + onSeeAll: _onTapNearByPropertiesAll, + title: "${UiUtils.translate( + context, + "nearByProperties", + )}(${HiveUtils.getCityName()})", + ), + const NearbyPropertiesShimmer(), + ], + ); + } + + if (state is FetchNearbyPropertiesFailure) { + return Text(state.error.error.toString()); + } + if (state is FetchNearbyPropertiesSuccess) { + if (state.properties.isEmpty) { + return Container(); + } + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TitleHeader( + onSeeAll: _onTapNearByPropertiesAll, + title: "${UiUtils.translate( + context, + "nearByProperties", + )}(${HiveUtils.getCityName()})", + ), + SizedBox( + height: 200, + child: ListView.builder( + shrinkWrap: true, + padding: const EdgeInsets.symmetric( + horizontal: sidePadding, + ), + physics: const BouncingScrollPhysics(), + itemCount: state.properties.length.clamp(0, 6), + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + PropertyModel model = state.properties[index]; + model = context.watch().get(model); + return PropertyGradiendCard( + model: model, + isFirst: index == 0, + showEndPadding: false, + ); + }), + ), + ], + ); + } + + return Container(); + }, + ); + } + + Widget buildMostViewedProperties() { + return BlocConsumer( + listener: (context, state) { + if (state is FetchMostViewedPropertiesFailure) { + if (state.error is ApiException) { + homeStateListener.setNetworkState( + setState, !(state.error.error == "no-internet")); + } + setState(() {}); + } + if (state is FetchMostViewedPropertiesSuccess) { + homeStateListener.setNetworkState(setState, true); + setState(() {}); + } + }, + builder: (context, state) { + if (state is FetchMostViewedPropertiesInProgress) { + return const MostViewdPropertiesShimmer(); + } + + if (state is FetchMostViewedPropertiesFailure) { + return Text(state.error.error.toString()); + } + if (state is FetchMostViewedPropertiesSuccess) { + return GridView.builder( + shrinkWrap: true, + padding: const EdgeInsets.symmetric( + horizontal: sidePadding, + ), + physics: const NeverScrollableScrollPhysics(), + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCountAndFixedHeight( + mainAxisSpacing: 15, crossAxisCount: 2, height: 260), + itemCount: state.properties.length.clamp(0, 4), + itemBuilder: (context, index) { + PropertyModel property = state.properties[index]; + property = context.watch().get(property); + return GestureDetector( + onTap: () { + HelperUtils.goToNextPage( + Routes.propertyDetails, context, false, + args: { + 'propertyData': property, + 'propertiesList': state.properties, + 'fromMyProperty': false, + }); + }, + child: BlocProvider( + create: (context) => AddToFavoriteCubitCubit(), + child: PropertyCardBig( + showEndPadding: false, + isFirst: index == 0, + onLikeChange: (type) { + if (type == FavoriteType.add) { + context.read().add(property); + } else { + context.read().remove(property.id); + } + }, + property: property, + ), + ), + ); + }, + ); + } + + return Container(); + }, + ); + } + + Widget categoryWidget() { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + height: 44.rh(context), + child: BlocConsumer( + listener: (context, state) { + if (state is FetchCategoryFailure) { + if (state.errorMessage == "auth-expired") { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "authExpired")); + + HiveUtils.logoutUser( + context, + onLogout: () {}, + ); + } + } + + if (state is FetchCategorySuccess) { + isCategoryEmpty = state.categories.isEmpty; + setState(() {}); + } + }, + builder: (context, state) { + if (state is FetchCategoryInProgress) { + return const CategoryShimmer(); + } + if (state is FetchCategoryFailure) { + return Center( + child: Text(state.errorMessage.toString()), + ); + } + if (state is FetchCategorySuccess) { + return ListView.builder( + padding: const EdgeInsets.symmetric( + horizontal: sidePadding, + ), + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.horizontal, + itemCount: state.categories.length + .clamp(0, Constant.maxCategoryLength), + itemBuilder: (context, index) { + Category category = state.categories[index]; + Constant.propertyFilter = null; + if (index == (Constant.maxCategoryLength - 1)) { + return Padding( + padding: const EdgeInsetsDirectional.only(start: 5.0), + child: GestureDetector( + onTap: () { + Navigator.pushNamed(context, Routes.categories); + }, + child: Container( + constraints: BoxConstraints( + minWidth: 100.rw(context), + ), + height: 44.rh(context), + alignment: Alignment.center, + decoration: DesignConfig.boxDecorationBorder( + color: context.color.secondaryColor, + radius: 10, + borderWidth: 1.5, + borderColor: context.color.borderColor, + ), + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 10), + child: Text(UiUtils.translate(context, "more")), + ), + ), + ), + ); + } + + return buildCategoryCard(context, category, index != 0); + }, + ); + } + return Container(); + }, + ), + ), + ], + ); + } + + Widget buildCategoryCard( + BuildContext context, Category category, bool? frontSpacing) { + return CategoryCard( + frontSpacing: frontSpacing, + onTapCategory: (category) { + currentVisitingCategoryId = category.id; + currentVisitingCategory = category; + Navigator.of(context).pushNamed(Routes.propertiesList, + arguments: {'catID': category.id, 'catName': category.category}); + }, + category: category); + } +} + +class RecentPropertiesSectionWidget extends StatefulWidget { + const RecentPropertiesSectionWidget({Key? key}) : super(key: key); + + @override + State createState() => + _RecentPropertiesSectionWidgetState(); +} + +class _RecentPropertiesSectionWidgetState + extends State { + void _onRecentlyAddedSeeAll() { + dynamic statemap = StateMap< + FetchRecentProepertiesInitial, + FetchRecentPropertiesInProgress, + FetchRecentPropertiesSuccess, + FetchRecentPropertiesFailur>(); + ViewAllScreen( + title: "recentlyAdded".translate(context), + map: statemap, + ).open(context); + } + + @override + Widget build(BuildContext context) { + bool isRecentEmpty() { + if (context.watch().state + is FetchRecentPropertiesSuccess) { + return (context.watch().state + as FetchRecentPropertiesSuccess) + .properties + .isEmpty; + } + + return true; + } + + return Column( + children: [ + if (!isRecentEmpty()) + TitleHeader( + enableShowAll: false, + title: "Baru Ditambahkan", + onSeeAll: () { + _onRecentlyAddedSeeAll(); + }, + ), + LayoutBuilder(builder: (context, c) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: sidePadding), + child: BlocBuilder(builder: (context, state) { + if (state is FetchRecentPropertiesInProgress) { + return ListView.builder( + itemBuilder: (context, index) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: Row( + children: [ + const ClipRRect( + clipBehavior: Clip.antiAliasWithSaveLayer, + borderRadius: BorderRadius.all(Radius.circular(15)), + child: CustomShimmer(height: 90, width: 90), + ), + const SizedBox( + width: 10, + ), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox( + height: 10, + ), + const SizedBox( + height: 10, + ), + const CustomShimmer( + height: 10, + ), + const SizedBox( + height: 10, + ), + CustomShimmer( + height: 10, + width: c.maxWidth / 1.2, + ), + const SizedBox( + height: 10, + ), + CustomShimmer( + height: 10, + width: c.maxWidth / 4, + ), + ], + ), + ), + ], + ), + ); + }, + shrinkWrap: true, + itemCount: 5, + ); + } + + if (state is FetchRecentPropertiesSuccess) { + return ListView.builder( + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (context, index) { + PropertyModel modal = state.properties[index]; + modal = context.watch().get(modal); + // developer.log("API RESULT IS $modal"); + return GestureDetector( + onTap: () { + HelperUtils.goToNextPage( + Routes.propertyDetails, + context, + false, + args: { + 'propertyData': modal, + 'propertiesList': state.properties, + 'fromMyProperty': false, + }, + ); + }, + child: PropertyHorizontalCard( + property: modal, + additionalImageWidth: 10, + )); + }, + itemCount: state.properties.length.clamp(0, 4), + shrinkWrap: true, + ); + } + if (state is FetchRecentPropertiesFailur) { + return Container(); + } + + return Container(); + }), + ); + }), + ], + ); + } +} + +class PersonalizedPropertyWidget extends StatelessWidget { + const PersonalizedPropertyWidget({super.key}); + + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (context, state) { + if (state is FetchPersonalizedPropertyInProgress) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TitleHeader( + onSeeAll: () {}, + title: "personalizedFeed".translate(context), + ), + const PromotedPropertiesShimmer(), + ], + ); + } + + if (state is FetchPersonalizedPropertySuccess) { + if (state.properties.isEmpty) return const SizedBox.shrink(); + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TitleHeader( + onSeeAll: () { + StateMap stateMap = StateMap< + FetchPersonalizedPropertyInitial, + FetchPersonalizedPropertyInProgress, + FetchPersonalizedPropertySuccess, + FetchPersonalizedPropertyFail>(); + + ViewAllScreen( + title: "personalizedFeed".translate(context), + map: stateMap, + ).open(context); + }, + title: "personalizedFeed".translate(context), + ), + SizedBox( + height: 261, + child: ListView.builder( + itemCount: state.properties.length.clamp(0, 6), + shrinkWrap: true, + padding: const EdgeInsets.symmetric( + horizontal: sidePadding, + ), + physics: const BouncingScrollPhysics(), + scrollDirection: Axis.horizontal, + itemBuilder: (context, index) { + GlobalKey thisITemkye = GlobalKey(); + + PropertyModel propertymodel = state.properties[index]; + propertymodel = + context.watch().get(propertymodel); + return GestureDetector( + onTap: () { + FirebaseAnalytics.instance + .logEvent(name: "preview_property", parameters: { + "user_ids": HiveUtils.getUserId(), + "from_section": "featured", + "property_id": propertymodel.id, + "category_id": propertymodel.category!.id + }); + + HelperUtils.goToNextPage( + Routes.propertyDetails, + context, + false, + args: { + 'propertyData': propertymodel, + 'propertiesList': state.properties, + 'fromMyProperty': false, + }, + ); + }, + child: BlocProvider( + create: (context) { + return AddToFavoriteCubitCubit(); + }, + child: PropertyCardBig( + key: thisITemkye, + isFirst: index == 0, + property: propertymodel, + onLikeChange: (type) { + if (type == FavoriteType.add) { + context + .read() + .add(propertymodel); + } else { + context + .read() + .remove(state.properties[index].id); + } + }, + ), + )); + }, + ), + ), + ], + ); + } + + return Container(); + }, + ); + } +} + +Future notificationPermissionChecker() async { + if (!(await Permission.notification.isGranted)) { + await Permission.notification.request(); + } +} + +extension mMap on Map { + Map get(String key) { + var m = this[key]; + if (m is Map) { + return m; + } else { + throw "Child is not map"; + } + } + + Map where(String query) { + final parts = query.split('='); + if (parts.length == 2) { + final key = parts[0].trim(); + final value = parts[1].replaceAll(RegExp(r"^\s*'|\s*'$"), '').trim(); + + return Map.fromEntries(entries.where((entry) { + final entryKey = entry.key.toString(); + final entryValue = entry.value.toString(); + + return entryKey == key && entryValue == value; + })); + } else { + throw "Invalid query format"; + } + } +} diff --git a/lib/Ui/screens/home/projects.dart b/lib/Ui/screens/home/projects.dart new file mode 100644 index 0000000..a6c12ab --- /dev/null +++ b/lib/Ui/screens/home/projects.dart @@ -0,0 +1,10 @@ +import 'package:flutter/material.dart'; + +class ProjectsWidget extends StatelessWidget { + const ProjectsWidget({super.key}); + + @override + Widget build(BuildContext context) { + return const Placeholder(); + } +} diff --git a/lib/Ui/screens/home/search_screen.dart b/lib/Ui/screens/home/search_screen.dart new file mode 100644 index 0000000..22e3692 --- /dev/null +++ b/lib/Ui/screens/home/search_screen.dart @@ -0,0 +1,379 @@ +import 'dart:async'; + +import 'package:ebroker/Ui/screens/widgets/Erros/no_internet.dart'; +import 'package:ebroker/utils/AdMob/bannerAdLoadWidget.dart'; +import 'package:ebroker/utils/api.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:google_mobile_ads/google_mobile_ads.dart'; + +import '../../../app/routes.dart'; +import '../../../data/cubits/property/search_property_cubit.dart'; +import '../../../data/model/property_model.dart'; +import '../../../utils/AppIcon.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/Erros/something_went_wrong.dart'; +import 'Widgets/property_horizontal_card.dart'; + +class SearchScreen extends StatefulWidget { + final bool autoFocus; + final bool openFilterScreen; + const SearchScreen( + {Key? key, required this.autoFocus, required this.openFilterScreen}) + : super(key: key); + static Route route(RouteSettings settings) { + Map? arguments = settings.arguments as Map?; + return BlurredRouter( + builder: (context) { + return SearchScreen( + autoFocus: arguments?['autoFocus'], + openFilterScreen: arguments?['openFilterScreen'], + ); + }, + ); + } + + @override + SearchScreenState createState() => SearchScreenState(); +} + +class SearchScreenState extends State + with TickerProviderStateMixin, AutomaticKeepAliveClientMixin { + @override + bool get wantKeepAlive => true; + bool isFocused = false; + String previouseSearchQuery = ""; + static TextEditingController searchController = TextEditingController(); + int offset = 0; + late ScrollController controller; + List propertylist = []; + List idlist = []; + Timer? _searchDelay; + bool showContent = true; + @override + void initState() { + super.initState(); + if (widget.openFilterScreen) { + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + Navigator.pushNamed(context, Routes.filterScreen); + }); + } + // context.read().fetchProperty(context, {}); + context.read().searchProperty("", offset: 0); + searchController = TextEditingController(); + searchController.addListener(searchPropertyListener); + controller = ScrollController()..addListener(pageScrollListen); + } + + void pageScrollListen() { + if (controller.isEndReached()) { + if (context.read().hasMoreData()) { + context.read().fetchMoreSearchData(); + } + } + } + +//this will listen and manage search + void searchPropertyListener() { + _searchDelay?.cancel(); + searchCallAfterDelay(); + } + +//This will create delay so we don't face rapid api call + void searchCallAfterDelay() { + _searchDelay = Timer(const Duration(milliseconds: 500), propertySearch); + } + + ///This will call api after some delay + void propertySearch() { + // if (searchController.text.isNotEmpty) { + if (previouseSearchQuery != searchController.text) { + context + .read() + .searchProperty(searchController.text, offset: 0); + previouseSearchQuery = searchController.text; + } + // } else { + // context.read().clearSearch(); + // } + } + + Widget filterOptionsBtn() { + return IconButton( + onPressed: () { + Navigator.pushNamed(context, Routes.filterScreen).then((value) { + if (value == true && searchController.text != "") { + context + .read() + .searchProperty(searchController.text, offset: 0); + } + }); + }, + icon: Icon( + Icons.filter_list_rounded, + color: Theme.of(context).colorScheme.blackColor, + )); + } + + @override + Widget build(BuildContext context) { + super.build(context); + return Scaffold( + backgroundColor: context.color.primaryColor, + appBar: AppBar( + automaticallyImplyLeading: false, + leading: BackButton( + color: context.color.tertiaryColor, + ), + elevation: 0, + backgroundColor: context.color.primaryColor, + title: searchTextField(), + ), + bottomNavigationBar: const BottomAppBar( + child: BannerAdWidget(bannerSize: AdSize.banner), + ), + body: Column( + children: [ + // BlocBuilder( + // builder: (context, state) { + // log("state isss $state"); + // if (state is PropertyFetchSuccess) { + // return SingleChildScrollView( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // const Padding( + // padding: EdgeInsets.symmetric(horizontal: 16.0), + // child: Text("Latest properties"), + // ), + // ListView.builder( + // shrinkWrap: true, + // physics: const NeverScrollableScrollPhysics(), + // padding: const EdgeInsets.symmetric(horizontal: 16), + // itemCount: state.propertylist.length, + // itemBuilder: (context, index) { + // return PropertyHorizontalCard( + // property: state.propertylist[index]); + // }, + // ), + // ], + // ), + // ); + // } + // if (state is PropertyFetchFailure) { + // log(state.errmsg); + // return Container( + // child: Text(state.errmsg.toString()), + // ); + // } + // return Container(); + // }, + // ), + const SizedBox(height: 10), + Expanded( + child: BlocBuilder( + builder: (context, state) { + return listWidget(state); + }, + ), + ), + ], + ), + ); + } + + Widget listWidget(SearchPropertyState state) { + if (state is SearchPropertyFetchProgress) { + return Center( + child: + UiUtils.progress(normalProgressColor: context.color.tertiaryColor), + ); + } + if (state is SearchPropertyFailure) { + if (state.errorMessage is ApiException) { + return NoInternet( + onRetry: () { + context.read().searchProperty("", offset: 0); + }, + ); + } + return const SomethingWentWrong(); + } + + if (state is SearchPropertySuccess) { + if (state.searchedroperties.isEmpty) { + return Center( + child: Text( + UiUtils.translate(context, "nodatafound"), + ), + ); + } + // if (searchController.text == "") { + // return Center( + // child: Text( + // UiUtils.getTranslatedLabel(context, "nodatafound"), + // ), + // ); + // } + return SingleChildScrollView( + controller: controller, + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.symmetric( + vertical: 10, + ), + child: SizedBox( + width: MediaQuery.of(context).size.width, + child: Column( + children: [ + Wrap( + direction: Axis.horizontal, + children: + List.generate(state.searchedroperties.length, (index) { + PropertyModel property = state.searchedroperties[index]; + List propertiesList = state.searchedroperties; + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + vertical: 0, + ), + child: GestureDetector( + onTap: () { + FocusScope.of(context).unfocus(); + HelperUtils.goToNextPage( + Routes.propertyDetails, context, false, args: { + 'propertyData': property, + 'propertiesList': propertiesList + }); + }, + child: PropertyHorizontalCard(property: property), + ), + ); + }), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ), + ), + ); + } + return Container(); + } + + Widget setSearchIcon() { + return Padding( + padding: const EdgeInsets.all(8.0), + child: UiUtils.getSvg(AppIcons.search, + color: context.color.tertiaryColor)); + } + + Widget setSuffixIcon() { + return GestureDetector( + onTap: () { + searchController.clear(); + isFocused = false; //set icon color to black back + FocusScope.of(context).unfocus(); //dismiss keyboard + setState(() {}); + }, + child: Icon( + Icons.close_rounded, + color: Theme.of(context).colorScheme.blackColor, + size: 30, + ), + ); + } + + Widget searchTextField() { + return LayoutBuilder(builder: (context, c) { + return SizedBox( + width: c.maxWidth, + child: FittedBox( + fit: BoxFit.none, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 270.rw(context), + height: 50.rh(context), + alignment: Alignment.center, + decoration: BoxDecoration( + border: Border.all( + width: 1.5, color: context.color.borderColor), + borderRadius: const BorderRadius.all(Radius.circular(10)), + color: context.color.secondaryColor), + child: TextFormField( + autofocus: widget.autoFocus, + controller: searchController, + decoration: InputDecoration( + border: InputBorder.none, //OutlineInputBorder() + fillColor: Theme.of(context).colorScheme.secondaryColor, + hintText: UiUtils.translate(context, "searchHintLbl"), + prefixIcon: setSearchIcon(), + prefixIconConstraints: + const BoxConstraints(minHeight: 5, minWidth: 5), + ), + enableSuggestions: true, + onEditingComplete: () { + setState( + () { + isFocused = false; + }, + ); + FocusScope.of(context).unfocus(); + }, + onTap: () { + //change prefix icon color to primary + setState(() { + isFocused = true; + }); + })), + SizedBox( + width: 5, + ), + GestureDetector( + onTap: () { + Navigator.pushNamed( + context, + Routes.filterScreen, + ).then((value) { + if (value == true) { + context + .read() + .searchProperty(searchController.text, offset: 0); + } + }); + }, + child: Container( + width: 50.rw(context), + height: 50.rh(context), + decoration: BoxDecoration( + border: Border.all( + width: 1.5, color: context.color.borderColor), + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(10), + ), + child: Center( + child: UiUtils.getSvg(AppIcons.filter, + color: context.color.tertiaryColor), + ), + ), + ), + SizedBox( + width: c.maxWidth * 0.06, + ) + ], + ), + ), + ); + }); + } + + @override + void dispose() { + searchController.dispose(); + super.dispose(); + } +} diff --git a/lib/Ui/screens/home/slider_widget.dart b/lib/Ui/screens/home/slider_widget.dart new file mode 100644 index 0000000..2aed2cb --- /dev/null +++ b/lib/Ui/screens/home/slider_widget.dart @@ -0,0 +1,203 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../app/routes.dart'; +import '../../../data/Repositories/property_repository.dart'; +import '../../../data/cubits/slider_cubit.dart'; +import '../../../data/helper/widgets.dart'; +import '../../../data/model/data_output.dart'; +import '../../../data/model/home_slider.dart'; +import '../../../data/model/property_model.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/promoted_widget.dart'; +import 'home_screen.dart'; + +class SliderWidget extends StatefulWidget { + const SliderWidget({Key? key}) : super(key: key); + + @override + State createState() => _SliderWidgetState(); +} + +class _SliderWidgetState extends State + with AutomaticKeepAliveClientMixin { + final ValueNotifier _bannerIndex = ValueNotifier(0); + int bannersLength = 0; + late Timer _timer; + final PageController _pageController = PageController( + initialPage: 0, + ); + + @override + bool get wantKeepAlive => true; + + @override + void initState() { + super.initState(); + _timer = Timer.periodic(const Duration(seconds: 5), (Timer timer) { + if (_bannerIndex.value < bannersLength - 1) { + _bannerIndex.value++; + } else { + _bannerIndex.value = 0; + } + if (_pageController.hasClients) { + _pageController.animateToPage( + _bannerIndex.value, + duration: const Duration(milliseconds: 1000), + curve: Curves.easeIn, + ); + } + }); + } + + @override + void dispose() { + super.dispose(); + _bannerIndex.dispose(); + _timer.cancel(); + } + + @override + Widget build(BuildContext context) { + super.build(context); + return BlocConsumer( + listener: (context, state) { + if ((state is SliderFetchFailure && !state.isUserDeactivated) || + state is SliderFetchSuccess) { + // context.read().fetchSlider(context); + } + }, + builder: (context, SliderState state) { + if (state is SliderFetchSuccess) { + bannersLength = state.sliderlist.length; + + return Column( + children: [ + SizedBox( + height: 15.rh(context), + ), + SizedBox( + height: 130.rh(context), + child: PageView.builder( + controller: _pageController, + clipBehavior: Clip.antiAlias, + physics: const BouncingScrollPhysics( + decelerationRate: ScrollDecelerationRate.fast, + ), + itemCount: state.sliderlist.length, + onPageChanged: (index) { + _bannerIndex.value = index; + }, + itemBuilder: (context, index) => _buildBanner( + state.sliderlist[index], + ), + ), + ), + const SizedBox( + height: 10, + ), + ], + ); + /* } else if (state is SliderFetchFailure && + state.isUserDeactivated == true) { + isUserDeactivated = true; */ + } + return const SizedBox.shrink(); + }, + ); + } + + Widget _buildBanner(HomeSlider banner) { + return GestureDetector( + onTap: () async { + try { + PropertyRepository fetch = PropertyRepository(); + + Widgets.showLoader(context); + + DataOutput dataOutput = + await fetch.fetchPropertyFromPropertyId(banner.propertysId); + + Future.delayed( + Duration.zero, + () { + Widgets.hideLoder(context); + HelperUtils.goToNextPage( + Routes.propertyDetails, + context, + false, + args: { + 'propertyData': dataOutput.modelList[0], + 'propertiesList': dataOutput.modelList, + 'fromMyProperty': false, + }, + ); + }, + ); + } catch (e) { + Widgets.hideLoder(context); + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "somethingWentWrng")); + } + }, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: sidePadding), + child: Stack( + clipBehavior: Clip.antiAlias, + children: [ + Container( + clipBehavior: Clip.antiAlias, + width: context.screenWidth, + height: context.screenHeight * 0.3, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(11), + border: Border.all( + color: Colors.transparent, + ), + ), + child: ClipRRect( + clipBehavior: Clip.antiAlias, + borderRadius: BorderRadius.circular(11), + child: UiUtils.getImage( + banner.image.toString(), + width: context.screenWidth, + fit: BoxFit.cover, + ), + ), + ), + PositionedDirectional( + top: 10, + start: 10, + child: Visibility( + visible: banner.promoted ?? false, + child: const PromotedCard(type: PromoteCardType.icon))) + ], + ), + ), + ); + } + + Row pageindicator({required int index, required int length}) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: List.generate(length, (indexDots) { + return AnimatedContainer( + duration: const Duration(microseconds: 300), + margin: const EdgeInsets.symmetric(horizontal: 5), + width: index == indexDots ? 8 : 6, + height: index == indexDots ? 8 : 6, + decoration: BoxDecoration( + color: index == indexDots + ? Theme.of(context).primaryColor + : Colors.transparent, + borderRadius: const BorderRadius.all(Radius.circular(40)), + border: Border.all( + color: Theme.of(context).primaryColor, width: 1))); + })); + } +} diff --git a/lib/Ui/screens/home/view_most_liked_properties.dart b/lib/Ui/screens/home/view_most_liked_properties.dart new file mode 100644 index 0000000..f37ffe5 --- /dev/null +++ b/lib/Ui/screens/home/view_most_liked_properties.dart @@ -0,0 +1,123 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../app/routes.dart'; +import '../../../data/cubits/property/fetch_most_liked_properties.dart'; +import '../../../data/model/property_model.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/Erros/no_data_found.dart'; +import '../widgets/Erros/something_went_wrong.dart'; +import 'Widgets/property_horizontal_card.dart'; + +class MostLikedPropertiesScreen extends StatefulWidget { + const MostLikedPropertiesScreen({super.key}); + + static Route route(RouteSettings routeSettings) { + return BlurredRouter( + builder: (context) { + return const MostLikedPropertiesScreen(); + }, + ); + } + + @override + State createState() => + _MostLikedPropertiesScreenState(); +} + +class _MostLikedPropertiesScreenState extends State { + ///This Scroll controller for listen page end + final ScrollController _pageScollController = ScrollController(); + @override + void initState() { + _pageScollController.addListener(onPageEnd); + super.initState(); + } + + ///This method will listen page scroll changes + void onPageEnd() { + ///This is exetension which will check if we reached end or not + if (_pageScollController.isEndReached()) { + if (context.read().hasMoreData()) { + context.read().fetchMore(); + } + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.primaryColor, + appBar: AppBar( + backgroundColor: context.color.secondaryColor, + elevation: 0, + iconTheme: IconThemeData(color: context.color.tertiaryColor), + title: Text( + UiUtils.translate(context, "mostLiked"), + ).color(context.color.tertiaryColor).size( + context.font.large, + ), + ), + body: BlocBuilder( + builder: (context, state) { + if (state is FetchMostLikedPropertiesInProgress) { + return Center( + child: UiUtils.progress( + normalProgressColor: context.color.tertiaryColor), + ); + } + if (state is FetchMostLikedPropertiesFailure) { + return const SomethingWentWrong(); + } + if (state is FetchMostLikedPropertiesSuccess) { + if (state.properties.isEmpty) { + return Center( + child: NoDataFound( + onTap: () { + context.read().fetch(); + }, + ), + ); + } + return Column( + children: [ + Expanded( + child: ScrollConfiguration( + behavior: RemoveGlow(), + child: ListView.builder( + controller: _pageScollController, + padding: const EdgeInsets.all(16), + itemCount: state.properties.length, + itemBuilder: (context, index) { + PropertyModel property = state.properties[index]; + return GestureDetector( + onTap: () { + HelperUtils.goToNextPage( + Routes.propertyDetails, context, false, + args: { + 'propertyData': property, + 'propertiesList': state.properties, + 'fromMyProperty': false, + }); + }, + child: PropertyHorizontalCard( + property: property, + )); + }, + ), + ), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ); + } + return Container(); + }, + ), + ); + } +} diff --git a/lib/Ui/screens/home/view_most_viewed_properties.dart b/lib/Ui/screens/home/view_most_viewed_properties.dart new file mode 100644 index 0000000..f7f4c97 --- /dev/null +++ b/lib/Ui/screens/home/view_most_viewed_properties.dart @@ -0,0 +1,122 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../app/routes.dart'; +import '../../../data/cubits/property/fetch_most_viewed_properties_cubit.dart'; +import '../../../data/model/property_model.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/Erros/no_data_found.dart'; +import '../widgets/Erros/something_went_wrong.dart'; +import 'Widgets/property_horizontal_card.dart'; + +class MostViewedPropertiesScreen extends StatefulWidget { + const MostViewedPropertiesScreen({super.key}); + + static Route route(RouteSettings routeSettings) { + return BlurredRouter( + builder: (context) { + return const MostViewedPropertiesScreen(); + }, + ); + } + + @override + State createState() => + _MostViewedPropertiesScreenState(); +} + +class _MostViewedPropertiesScreenState + extends State { + ///This Scroll controller for listen page end + final ScrollController _pageScollController = ScrollController(); + @override + void initState() { + _pageScollController.addListener(onPageEnd); + super.initState(); + } + + ///This method will listen page scroll changes + void onPageEnd() { + ///This is exetension which will check if we reached end or not + if (_pageScollController.isEndReached()) { + if (context.read().hasMoreData()) { + context.read().fetchMore(); + } + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.primaryColor, + appBar: AppBar( + backgroundColor: context.color.secondaryColor, + elevation: 0, + iconTheme: IconThemeData(color: context.color.tertiaryColor), + title: Text(UiUtils.translate(context, "mostViewed")) + .color(context.color.tertiaryColor) + .size(context.font.large), + ), + body: BlocBuilder( + builder: (context, state) { + if (state is FetchMostViewedPropertiesInProgress) { + return Center( + child: UiUtils.progress( + normalProgressColor: context.color.tertiaryColor), + ); + } + if (state is FetchMostViewedPropertiesFailure) { + return const SomethingWentWrong(); + } + if (state is FetchMostViewedPropertiesSuccess) { + if (state.properties.isEmpty) { + return Center( + child: NoDataFound( + onTap: () { + context.read().fetch(); + }, + ), + ); + } + return Column( + children: [ + Expanded( + child: ScrollConfiguration( + behavior: RemoveGlow(), + child: ListView.builder( + controller: _pageScollController, + padding: const EdgeInsets.all(16), + itemCount: state.properties.length, + itemBuilder: (context, index) { + PropertyModel property = state.properties[index]; + return GestureDetector( + onTap: () { + HelperUtils.goToNextPage( + Routes.propertyDetails, context, false, + args: { + 'propertyData': property, + 'propertiesList': state.properties, + 'fromMyProperty': false, + }); + }, + child: PropertyHorizontalCard( + property: property, + )); + }, + ), + ), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ); + } + return Container(); + }, + ), + ); + } +} diff --git a/lib/Ui/screens/home/view_nearby_properties.dart b/lib/Ui/screens/home/view_nearby_properties.dart new file mode 100644 index 0000000..178165d --- /dev/null +++ b/lib/Ui/screens/home/view_nearby_properties.dart @@ -0,0 +1,113 @@ +import 'package:ebroker/Ui/screens/home/Widgets/property_gradient_card.dart'; +import 'package:ebroker/data/cubits/property/fetch_nearby_property_cubit.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../data/model/property_model.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/hive_utils.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/Erros/no_data_found.dart'; +import '../widgets/Erros/something_went_wrong.dart'; + +class NearbyAllPropertiesScreen extends StatefulWidget { + const NearbyAllPropertiesScreen({super.key}); + + static Route route(RouteSettings routeSettings) { + return BlurredRouter( + builder: (context) { + return const NearbyAllPropertiesScreen(); + }, + ); + } + + @override + State createState() => + _NearbyAllPropertiesScreenState(); +} + +class _NearbyAllPropertiesScreenState extends State { + ///This Scroll controller for listen page end + final ScrollController _pageScollController = ScrollController(); + @override + void initState() { + _pageScollController.addListener(onPageEnd); + super.initState(); + } + + ///This method will listen page scroll changes + void onPageEnd() { + ///This is exetension which will check if we reached end or not + if (_pageScollController.isEndReached()) { + if (context.read().hasMoreData()) { + context.read().fetchMore(); + } + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.primaryColor, + appBar: AppBar( + backgroundColor: context.color.secondaryColor, + elevation: 0, + iconTheme: IconThemeData(color: context.color.tertiaryColor), + title: Text( + "${UiUtils.translate(context, "NearbyProperties")}(${HiveUtils.getCityName()})") + .color(context.color.tertiaryColor) + .size(context.font.large), + ), + body: BlocBuilder( + builder: (context, state) { + if (state is FetchNearbyPropertiesInProgress) { + return Center( + child: UiUtils.progress( + normalProgressColor: context.color.tertiaryColor), + ); + } + if (state is FetchNearbyPropertiesFailure) { + return const SomethingWentWrong(); + } + if (state is FetchNearbyPropertiesSuccess) { + if (state.properties.isEmpty) { + return Center( + child: NoDataFound( + onTap: () { + context.read().fetch(); + }, + ), + ); + } + return Column( + children: [ + Expanded( + child: ScrollConfiguration( + behavior: RemoveGlow(), + child: ListView.builder( + controller: _pageScollController, + padding: const EdgeInsets.all(16), + itemCount: state.properties.length, + itemBuilder: (context, index) { + PropertyModel property = state.properties[index]; + return Padding( + padding: const EdgeInsets.symmetric(vertical: 5.0), + child: PropertyGradiendCard( + model: property, + ), + ); + }, + ), + ), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ); + } + return Container(); + }, + ), + ); + } +} diff --git a/lib/Ui/screens/home/view_promoted_properties.dart b/lib/Ui/screens/home/view_promoted_properties.dart new file mode 100644 index 0000000..acd23a3 --- /dev/null +++ b/lib/Ui/screens/home/view_promoted_properties.dart @@ -0,0 +1,126 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../app/routes.dart'; +import '../../../data/cubits/property/fetch_promoted_properties_cubit.dart'; +import '../../../data/model/property_model.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/Erros/no_data_found.dart'; +import '../widgets/Erros/something_went_wrong.dart'; +import 'Widgets/property_horizontal_card.dart'; + +class PromotedPropertiesScreen extends StatefulWidget { + const PromotedPropertiesScreen({super.key}); + + static Route route(RouteSettings routeSettings) { + return BlurredRouter( + builder: (context) { + return const PromotedPropertiesScreen(); + }, + ); + } + + @override + State createState() => + _PromotedPropertiesScreenState(); +} + +class _PromotedPropertiesScreenState extends State { + ///This Scroll controller for listen page end + final ScrollController _pageScrollController = ScrollController(); + @override + void initState() { + _pageScrollController.addListener(onPageEnd); + super.initState(); + } + + ///This method will listen page scroll changes + void onPageEnd() { + // / / /This is extensions which will check if we reached end or not + if (_pageScrollController.isEndReached()) { + if (context.read().hasMoreData()) { + context.read().fetchMore(); + } + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.primaryColor, + appBar: AppBar( + backgroundColor: context.color.secondaryColor, + elevation: 0, + iconTheme: IconThemeData(color: context.color.tertiaryColor), + title: Text( + UiUtils.translate(context, "promotedProperties"), + ).color(context.color.tertiaryColor).size(context.font.large), + ), + body: BlocBuilder( + builder: (context, state) { + if (state is FetchPromotedPropertiesInProgress) { + return Center( + child: UiUtils.progress( + normalProgressColor: context.color.tertiaryColor, + ), + ); + } + if (state is FetchPromotedPropertiesFailure) { + return const SomethingWentWrong(); + } + if (state is FetchPromotedPropertiesSuccess) { + if (state.properties.isEmpty) { + return Center( + child: NoDataFound( + onTap: () { + context.read().fetch(); + }, + ), + ); + } + return Column( + children: [ + Expanded( + child: ScrollConfiguration( + behavior: RemoveGlow(), + child: ListView.builder( + controller: _pageScrollController, + padding: const EdgeInsets.all(20), + itemCount: state.properties.length, + itemBuilder: (context, index) { + PropertyModel property = state.properties[index]; + return GestureDetector( + onTap: () { + HelperUtils.goToNextPage( + Routes.propertyDetails, + context, + false, + args: { + 'propertyData': property, + 'propertiesList': state.properties, + 'fromMyProperty': false, + }, + ); + }, + child: PropertyHorizontalCard( + property: property, + ), + ); + }, + ), + ), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ); + } + return Container(); + }, + ), + ); + } +} diff --git a/lib/Ui/screens/main_activity.dart b/lib/Ui/screens/main_activity.dart new file mode 100644 index 0000000..a673ff9 --- /dev/null +++ b/lib/Ui/screens/main_activity.dart @@ -0,0 +1,867 @@ +// ignore_for_file: invalid_use_of_protected_member + +import 'dart:convert'; +import 'dart:io'; + +import 'package:ebroker/Ui/screens/proprties/AddProperyScreens/select_type_of_property.dart'; +import 'package:ebroker/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import 'package:ebroker/data/cubits/outdoorfacility/fetch_outdoor_facility_list.dart'; +import 'package:firebase_analytics/firebase_analytics.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:rive/components.dart'; +import 'package:rive/rive.dart'; +import 'package:rive/src/rive_core/component.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../app/analytics_routes.dart'; +import '../../app/app.dart'; +import '../../app/routes.dart'; +import '../../data/cubits/company_cubit.dart'; +import '../../data/cubits/property/search_property_cubit.dart'; +import '../../data/cubits/system/fetch_system_settings_cubit.dart'; +import '../../data/model/property_model.dart'; +import '../../data/model/system_settings_model.dart'; +import '../../settings.dart'; +import '../../utils/AppIcon.dart'; +import '../../utils/Extensions/extensions.dart'; +import '../../utils/api.dart'; +import '../../utils/constant.dart'; +import '../../utils/errorFilter.dart'; +import '../../utils/guestChecker.dart'; +import '../../utils/helper_utils.dart'; +import '../../utils/hive_utils.dart'; +import '../../utils/responsiveSize.dart'; +import '../../utils/ui_utils.dart'; +import 'chat/chat_list_screen.dart'; +import 'home/home_screen.dart'; +import 'home/search_screen.dart'; +import 'proprties/my_properties_screen.dart'; +import 'userprofile/profile_screen.dart'; +import 'widgets/blurred_dialoge_box.dart'; + +List myPropertylist = []; +Map searchbody = {}; +String selectedcategoryId = "0"; +String selectedcategoryName = ""; +dynamic selectedCategory; + +//this will set when i will visit in any category +dynamic currentVisitingCategoryId = ""; +dynamic currentVisitingCategory = ""; + +List navigationStack = [0]; + +ScrollController homeScreenController = ScrollController(); +ScrollController chatScreenController = ScrollController(); +ScrollController sellScreenController = ScrollController(); +ScrollController rentScreenController = ScrollController(); +ScrollController profileScreenController = ScrollController(); + +List controllerList = [ + homeScreenController, + chatScreenController, + if (propertyScreenCurrentPage == 0) ...[ + sellScreenController + ] else ...[ + rentScreenController + ], + profileScreenController +]; + +// +class MainActivity extends StatefulWidget { + final String from; + const MainActivity({Key? key, required this.from}) : super(key: key); + + @override + State createState() => MainActivityState(); + + static Route route(RouteSettings routeSettings) { + Map arguments = routeSettings.arguments as Map; + return BlurredRouter( + builder: (_) => MainActivity(from: arguments['from'] as String)); + } +} + +class MainActivityState extends State + with TickerProviderStateMixin { + int currtab = 0; + static final FirebaseMessaging firebaseMessaging = FirebaseMessaging.instance; + final List _pageHistory = []; + late PageController pageController; + DateTime? currentBackPressTime; + //This is rive file artboards and setting you can check rive package's documentation at [pub.dev] + Artboard? artboard; + SMIBool? isReverse; + StateMachineController? _controller; + bool isAddMenuOpen = false; + int rotateAnimationDurationMs = 2000; + bool showSellRentButton = false; + + ///Animation for sell and rent button + late final AnimationController _forSellAnimationController = + AnimationController( + vsync: this, + duration: const Duration( + milliseconds: 400, + ), + reverseDuration: const Duration( + milliseconds: 400, + ), + ); + late final AnimationController _forRentController = AnimationController( + vsync: this, + duration: const Duration(milliseconds: 300), + reverseDuration: const Duration(milliseconds: 300), + ); + + ///END: Animation for sell and rent button + late final Animation _sellTween = Tween(begin: -50, end: 80) + .animate(CurvedAnimation( + parent: _forSellAnimationController, curve: Curves.easeIn)); + late final Animation _rentTween = Tween(begin: -50, end: 30) + .animate( + CurvedAnimation(parent: _forRentController, curve: Curves.easeIn)); + + Map riveConfig = AppSettings.riveAnimationConfigurations; + late var addButtonConfig = riveConfig['add_button']; + late var artboardName = addButtonConfig['artboard_name']; + late var stateMachine = addButtonConfig['state_machine']; + late var booleanName = addButtonConfig['boolean_name']; + late var booleanInitialValue = addButtonConfig['boolean_initial_value']; + late var addButtonShapeName = addButtonConfig['add_button_shape_name']; + + bool isChecked = false; + + @override + void initState() { + super.initState(); + if (appSettings.isUserActive == false) { + Future.delayed( + Duration.zero, + () { + HiveUtils.logoutUser(context, onLogout: () {}); + }, + ); + } + + GuestChecker.setContext(context); + GuestChecker.set(isGuest: HiveUtils.isGuest()); + FetchSystemSettingsCubit settings = + context.read(); + if (!const bool.fromEnvironment("force-disable-demo-mode", + defaultValue: false)) { + Constant.isDemoModeOn = + settings.getSetting(SystemSetting.demoMode) ?? false; + } + var numberWithSuffix = settings.getSetting(SystemSetting.numberWithSuffix); + Constant.isNumberWithSuffix = numberWithSuffix == "1" ? true : false; + + if (Constant.isDemoModeOn) { + HiveUtils.setLocation( + city: "Bhuj", + state: "Gujrat", + country: "India", + longitude: 69.666931, + latitude: 23.242001, + placeId: "ChIJF28LAAniUDkRpnQHr1jzd3A", + ); + } + + ///this will check if your profile is complete or not if it is incomplete it will redirect you to the edit profile page + // completeProfileCheck(); + + ///This will check for update + versionCheck(settings); + + ///This will check if location is set or not , If it is not set it will show popup dialoge so you can set for better result + if (GuestChecker.value == false) { + locationSetCheck(); + } + +//Initializing rive animations + initRiveAddButtonAnimation(); + +//This will init page controller + initPageController(); + context.read().fetch(); + context.read().fetchCompany( + context, + ); //getCompanyData @ Start [specially for contact number] + } + + void addHistory(int index) { + List stack = navigationStack; + // if (stack.length > 5) { + // stack.removeAt(0); + // } else { + if (stack.last != index) { + stack.add(index); + navigationStack = stack; + } + + setState(() {}); + } + + void initPageController() { + pageController = PageController(initialPage: 0) + ..addListener(() { + _pageHistory.insert(0, pageController.page); + }); + } + + void initRiveAddButtonAnimation() { + ///Open file + rootBundle + .load("assets/riveAnimations/${Constant.riveAnimation}") + .then((value) { + ///Import that data to this method below + RiveFile riveFile = RiveFile.import(value); + + ///Artboard by name you can check https://rive.app and learn it for more information + /// Here Add is artboard name from that workspace + artboard = riveFile.artboardByName(artboardName); + artboard?.forEachComponent((child) { + if (child.name == "plus") { + for (Component element in (child as Node).children) { + if (element.name == "Path_49") { + if (element is Shape) { + final Shape shape = element; + + shape.fills.first.paint.color = Colors.white; + } + } + } + } + if (child is Shape && child.name == addButtonShapeName) { + final Shape shape = child; + shape.fills.first.paint.color = context.color.tertiaryColor; + } + }); + + ///in rive there is state machine to control states of animation, like. walking,running, and more + ///click is state machine name + _controller = + StateMachineController.fromArtboard(artboard!, stateMachine); + // _controller. + if (_controller != null) { + artboard?.addController(_controller!); + + //this SMI means State machine input, we can create conditions in rive , so isReverse is boolean value name from there + isReverse = _controller?.findSMI(booleanName); + + ///this is optional it depends on your conditions you can change this whole conditions and values, + ///for this animation isReverse =true means it will play its idle animation + isReverse?.value = booleanInitialValue; + + ///here we can change color of any shape, here 'shape' is name in rive.app file + } + setState(() {}); + }); + } + + void completeProfileCheck() { + if (HiveUtils.getUserDetails().name == "" || + HiveUtils.getUserDetails().email == "") { + Future.delayed( + const Duration(milliseconds: 100), + () { + Navigator.pushReplacementNamed(context, Routes.completeProfile, + arguments: {"from": "login"}); + }, + ); + } + } + + void versionCheck(settings) async { + var remoteVersion = settings.getSetting(Platform.isIOS + ? SystemSetting.iosVersion + : SystemSetting.androidVersion); + var remote = remoteVersion; + + var forceUpdate = settings.getSetting(SystemSetting.forceUpdate); + + PackageInfo packageInfo = await PackageInfo.fromPlatform(); + + var current = packageInfo.version; + + int currentVersion = HelperUtils.comparableVersion(packageInfo.version); + if (remoteVersion == null) { + return; + } + remoteVersion = HelperUtils.comparableVersion( + remoteVersion, + ); + + if (remoteVersion > currentVersion) { + Constant.isUpdateAvailable = true; + Constant.newVersionNumber = settings.getSetting( + Platform.isIOS + ? SystemSetting.iosVersion + : SystemSetting.androidVersion, + ); + + Future.delayed( + Duration.zero, + () { + if (forceUpdate == "1") { + ///This is force update + UiUtils.showBlurredDialoge(context, + dialoge: BlurredDialogBox( + onAccept: () async { + if (Platform.isAndroid) { + await launchUrl( + Uri.parse( + Constant.playstoreURLAndroid, + ), + mode: LaunchMode.externalApplication); + } else { + await launchUrl( + Uri.parse( + Constant.appstoreURLios, + ), + mode: LaunchMode.externalApplication); + } + }, + backAllowedButton: false, + svgImagePath: AppIcons.update, + isAcceptContainesPush: true, + svgImageColor: context.color.tertiaryColor, + showCancleButton: false, + title: "updateAvailable".translate(context), + acceptTextColor: context.color.buttonColor, + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text("$current>$remote"), + Text("newVersionAvailableForce".translate(context), + textAlign: TextAlign.center), + ], + ))); + } else { + UiUtils.showBlurredDialoge( + context, + dialoge: BlurredDialogBox( + onAccept: () async { + if (Platform.isAndroid) { + await launchUrl( + Uri.parse( + Constant.playstoreURLAndroid, + ), + mode: LaunchMode.externalApplication); + } else { + await launchUrl( + Uri.parse( + Constant.appstoreURLios, + ), + mode: LaunchMode.externalApplication); + } + }, + svgImagePath: AppIcons.update, + svgImageColor: context.color.tertiaryColor, + showCancleButton: true, + title: "updateAvailable".translate(context), + content: Text( + "newVersionAvailable".translate(context), + ), + ), + ); + } + }, + ); + } + } + + void locationSetCheck() { + if (HiveUtils.isShowChooseLocationDialoge() && + !HiveUtils.isLocationFilled()) { + Future.delayed( + Duration.zero, + () { + UiUtils.showBlurredDialoge( + context, + dialoge: BlurredDialogBox( + title: UiUtils.translate(context, "setLocation"), + content: StatefulBuilder(builder: (context, update) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + UiUtils.translate( + context, + "setLocationforBetter", + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Checkbox( + fillColor: MaterialStateProperty.resolveWith( + (Set states) { + if (states.contains(MaterialState.selected)) { + return context.color.tertiaryColor; + } else { + return context.color.primaryColor; + } + }, + // context.color.primaryColor, + ), + value: isChecked, + onChanged: (value) { + isChecked = value ?? false; + update(() {}); + }, + ), + const SizedBox( + width: 5, + ), + Text(UiUtils.translate(context, "dontshowagain")) + ], + ), + ], + ); + }), + isAcceptContainesPush: true, + onCancel: () { + if (isChecked == true) { + HiveUtils.dontShowChooseLocationDialoge(); + } + }, + onAccept: () async { + if (isChecked == true) { + HiveUtils.dontShowChooseLocationDialoge(); + } + Navigator.pop(context); + + Navigator.pushNamed(context, Routes.completeProfile, + arguments: { + "from": "chooseLocation", + "navigateToHome": true + }); + }, + ), + ); + }, + ); + } + } + + @override + void didChangeDependencies() { + ErrorFilter.setContext(context); + + artboard?.forEachComponent((child) { + if (child.name == "plus") { + for (Component element in (child as Node).children) { + if (element.name == "Path_49") { + if (element is Shape) { + final Shape shape = element; + + shape.fills.first.paint.color = Colors.white; + } + } + } + } + if (child is Shape && child.name == addButtonShapeName) { + final Shape shape = child; + + shape.fills.first.paint.color = context.color.tertiaryColor; + } + }); + super.didChangeDependencies(); + } + + @override + void dispose() { + pageController.dispose(); + super.dispose(); + } + + Future checkForMaintenanceMode() async { + Map body = { + Api.type: Api.maintenanceMode, + }; + + var response = await HelperUtils.sendApiRequest( + Api.apiGetSystemSettings, + body, + true, + context, + ); + var getdata = json.decode(response); + print("Setiing : $getdata"); + if (getdata != null) { + if (!getdata[Api.error]) { + Constant.maintenanceMode = getdata['data'].toString(); + if (Constant.maintenanceMode == "1") { + setState(() {}); + } + } + } + } + + late List pages = [ + HomeScreen(from: widget.from), + const ChatListScreen(), + const Text(""), + const PropertiesScreen(), + const ProfileScreen(), + ]; + + @override + Widget build(BuildContext context) { + return AnnotatedRegion( + value: UiUtils.getSystemUiOverlayStyle(context: context), + child: WillPopScope( + onWillPop: () async { + ///Navigation history + int length = navigationStack.length; + if (length == 1 && navigationStack[0] == 0) { + DateTime now = DateTime.now(); + if (currentBackPressTime == null || + now.difference(currentBackPressTime!) > + const Duration(seconds: 2)) { + currentBackPressTime = now; + Fluttertoast.showToast( + msg: "pressAgainToExit".translate(context), + ); + return Future.value(false); + } + } else { + //This will put our page on previous page. + int secondLast = navigationStack[length - 2]; + navigationStack.removeLast(); + pageController.jumpToPage(secondLast); + setState(() {}); + return false; + } + + return Future.value(true); + }, + child: Scaffold( + backgroundColor: context.color.primaryColor, + bottomNavigationBar: + Constant.maintenanceMode == "1" ? null : bottomBar(), + body: Stack( + children: [ + PageView( + physics: const NeverScrollableScrollPhysics(), + controller: pageController, + onPageChanged: onItemSwipe, + children: pages, + ), + if (Constant.maintenanceMode == "1") + Container( + color: Theme.of(context).colorScheme.primaryColor, + ), + SizedBox( + width: double.infinity, + height: context.screenHeight, + child: Stack( + children: [ + AnimatedBuilder( + animation: _forRentController, + builder: (context, c) { + return Positioned( + bottom: _rentTween.value, + left: (context.screenWidth / 2) - (181 / 2), + child: GestureDetector( + onTap: () { + GuestChecker.check(onNotGuest: () { + Navigator.pushNamed( + context, Routes.selectPropertyTypeScreen, + arguments: { + "type": PropertyAddType.property + }); + }); + }, + child: Container( + width: 181, + height: 44, + decoration: BoxDecoration( + border: Border.all( + color: context.color.borderColor, + width: 1.5, + ), + boxShadow: [ + BoxShadow( + color: context.color.tertiaryColor + .withOpacity(0.4), + offset: const Offset(0, 3), + blurRadius: 10, + spreadRadius: 0, + ) + ], + color: context.color.tertiaryColor, + borderRadius: BorderRadius.circular(22)), + alignment: Alignment.center, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + UiUtils.getSvg(AppIcons.propertiesIcon, + color: context.color.buttonColor, + width: 16, + height: 16), + SizedBox( + width: 7.rw(context), + ), + const Text("Properti") + .color(context.color.buttonColor), + ], + )), + ), + ); + }), + AnimatedBuilder( + animation: _forSellAnimationController, + builder: (context, c) { + return Positioned( + bottom: _sellTween.value, + left: (context.screenWidth / 2) - 128 / 2, + child: GestureDetector( + onTap: () { + GuestChecker.check(onNotGuest: () { + // Constant.addProperty.addAll( + // { + // "propertyType": PropertyType.sell, + // }, + // ); + + Navigator.pushNamed( + context, Routes.selectPropertyTypeScreen, + arguments: { + "type": PropertyAddType.project + }); + + }); + }, + child: Container( + width: 128, + height: 44, + decoration: BoxDecoration( + border: Border.all( + color: context.color.borderColor, + width: 1.5, + ), + boxShadow: [ + BoxShadow( + color: context.color.tertiaryColor + .withOpacity(0.4), + offset: const Offset(0, 3), + blurRadius: 10, + spreadRadius: 0, + ) + ], + color: context.color.tertiaryColor, + borderRadius: BorderRadius.circular(22)), + alignment: Alignment.center, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + UiUtils.getSvg(AppIcons.upcomingProject, + color: context.color.buttonColor, + width: 16, + height: 16), + SizedBox( + width: 7.rw(context), + ), + const Text( "Project ") + .color(context.color.buttonColor), + ], + ), + ), + ), + ); + }), + ], + ), + ) + + // + ], + ), + ), + ), + ); + } + + void onItemTapped(int index) { + addHistory(index); + + if (index == currtab) { + var xIndex = index; + + if (xIndex == 3) { + xIndex = 2; + } else if (xIndex == 4) { + xIndex = 3; + } + if (controllerList[xIndex].hasClients) { + controllerList[xIndex].animateTo(0, + duration: const Duration(milliseconds: 200), + curve: Curves.bounceOut); + } + } + FocusManager.instance.primaryFocus?.unfocus(); + isReverse?.value = true; + _forSellAnimationController.reverse(); + _forRentController.reverse(); + + if (index != 1) { + context.read().clearSearch(); + + if (SearchScreenState.searchController.hasListeners) { + SearchScreenState.searchController.text = ""; + } + } + searchbody = {}; + if (index == 1 || index == 3) { + GuestChecker.check( + onNotGuest: () { + currtab = index; + pageController.jumpToPage(currtab); + setState( + () {}, + ); + }, + ); + } else { + currtab = index; + pageController.jumpToPage(currtab); + + setState(() {}); + } + } + + void onItemSwipe(int index) { + addHistory(index); + + if (index == 0) { + FirebaseAnalytics.instance + .setCurrentScreen(screenName: AnalyticsRoutes.home); + } else if (index == 1) { + FirebaseAnalytics.instance + .setCurrentScreen(screenName: AnalyticsRoutes.chatList); + } else if (index == 3) { + FirebaseAnalytics.instance + .setCurrentScreen(screenName: AnalyticsRoutes.properties); + } else if (index == 4) {} + FocusManager.instance.primaryFocus?.unfocus(); + isReverse?.value = true; + _forSellAnimationController.reverse(); + _forRentController.reverse(); + + if (index != 1) { + context.read().clearSearch(); + + if (SearchScreenState.searchController.hasListeners) { + SearchScreenState.searchController.text = ""; + } + } + searchbody = {}; + setState(() { + currtab = index; + }); + pageController.jumpToPage(currtab); + } + + BottomAppBar bottomBar() { + return BottomAppBar( + // notchMargin: 10.0, + + color: context.color.primaryColor, + shape: const CircularNotchedRectangle(), + child: Container( + color: context.color.primaryColor, + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + buildBottomNavigationbarItem( + 0, AppIcons.home, UiUtils.translate(context, "homeTab")), + buildBottomNavigationbarItem( + 1, AppIcons.chat, UiUtils.translate(context, "chat")), + // const SizedBox( + // width: 100, + // height: 100, + // child: RiveAnimation.asset( + // "", + // artboard: "Add", + // ), + // ), + + Transform( + transform: Matrix4.identity()..translate(0.toDouble(), -20), + child: GestureDetector( + onTap: () async { + if (isReverse?.value == true) { + isReverse?.value = false; + showSellRentButton = true; + _forRentController.forward(); + _forSellAnimationController.forward(); + } else { + showSellRentButton = false; + isReverse?.value = true; + _forRentController.reverse(); + _forSellAnimationController.reverse(); + } + // setState(() {}); + }, + child: SizedBox( + width: 60.rw(context), + height: 66, + child: artboard == null + ? Container() + : Rive(artboard: artboard!)), + ), + ), + + buildBottomNavigationbarItem(3, AppIcons.properties, + UiUtils.translate(context, "properties")), + buildBottomNavigationbarItem( + 4, AppIcons.profile, UiUtils.translate(context, "profileTab")) + ]), + ), + ); + } + + Widget buildBottomNavigationbarItem( + int index, + String svgImage, + String title, + ) { + return Expanded( + child: Material( + type: MaterialType.transparency, + child: InkWell( + highlightColor: Colors.transparent, + splashColor: Colors.transparent, + onTap: () => onItemTapped(index), + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (currtab == index) ...{ + UiUtils.getSvg(svgImage, color: context.color.tertiaryColor), + } else ...{ + UiUtils.getSvg(svgImage, color: context.color.textLightColor), + }, + Text( + title, + textAlign: TextAlign.center, + ).color(currtab == index + ? context.color.tertiaryColor + : context.color.textLightColor), + ], + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/map/choose_location_map.dart b/lib/Ui/screens/map/choose_location_map.dart new file mode 100644 index 0000000..870cde7 --- /dev/null +++ b/lib/Ui/screens/map/choose_location_map.dart @@ -0,0 +1,598 @@ +import 'dart:async'; + +import 'package:dio/dio.dart'; +import 'package:ebroker/data/Repositories/property_repository.dart'; +import 'package:ebroker/data/helper/widgets.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/helper_utils.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:geocoding/geocoding.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +import '../../../data/Repositories/location_repository.dart'; +import '../../../data/model/google_place_model.dart'; +import '../../../utils/AppIcon.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; + +class ChooseLocationMap extends StatefulWidget { + final num? latitude; + final num? longitude; + const ChooseLocationMap({super.key, this.latitude, this.longitude}); + static Route route(RouteSettings settings) { + Map? arguments = settings.arguments as Map?; + return BlurredRouter( + builder: (context) { + return ChooseLocationMap( + latitude: arguments?['latitude'], + longitude: arguments?['longitude'], + ); + }, + ); + } + + @override + State createState() => _ChooseLocationMapState(); +} + +class _ChooseLocationMapState extends State { + final TextEditingController _searchController = TextEditingController(); + String previouseSearchQuery = ""; + LatLng? citylatLong; + Timer? _timer; + Marker? marker; + Map map = {}; + GoogleMapController? _googleMapController; + Completer completer = Completer(); + final FocusNode _searchFocus = FocusNode(); + List? cities; + int selectedMarker = 999999999999999; + int? propertyId; + ValueNotifier isLoadingProperty = ValueNotifier(false); + PropertyModel? activePropertyModal; + ValueNotifier loadintCitiesInProgress = ValueNotifier(false); + bool showSellRentLables = false; + bool showGoogleMap = false; + Future searchDelayTimer() async { + if (_timer?.isActive ?? false) { + _timer?.cancel(); + } + print("open map"); + _timer = Timer( + const Duration(milliseconds: 500), + () async { + if (_searchController.text.isNotEmpty) { + if (previouseSearchQuery != _searchController.text) { + try { + loadintCitiesInProgress.value = true; + cities = await GooglePlaceRepository().serchCities( + _searchController.text, + ); + loadintCitiesInProgress.value = false; + } catch (e) { + loadintCitiesInProgress.value = false; + } + + setState(() {}); + previouseSearchQuery = _searchController.text; + } + } else { + cities = null; + } + }, + ); + setState(() {}); + } + + late var assigned = LatLng( + widget.latitude?.toDouble() ?? 42.42345651793833, + widget.longitude?.toDouble() ?? 23.906250000000004, + ); + late LatLng cameraPosition = assigned; + @override + void initState() { + _searchController.addListener(() { + searchDelayTimer(); + }); + if (widget.latitude != null && widget.longitude != null) { + marker = Marker(markerId: MarkerId("9999999"), position: assigned); + setState(() {}); + } + Future.delayed( + const Duration(milliseconds: 500), + () { + showGoogleMap = true; + setState(() {}); + }, + ); + + super.initState(); + } + + Future onTapCity(int index) async { + Widgets.showLoader(context); + // List pointList = + // await GMap.getNearByProperty(cities?.elementAt(0).city ?? ""); + + // if (pointList.isEmpty) { + // marker = {}; + // setState(() {}); + // } + + LatLng? latLng = await getCityLatLong(index); + //Animate camera to location + (await completer.future).animateCamera( + CameraUpdate.newCameraPosition( + CameraPosition(target: latLng!, zoom: 7), + ), + ); + // loopMarker(pointList); + + marker = (Marker( + markerId: MarkerId( + index.toString(), + ), + position: latLng)); + + _searchFocus.unfocus(); + HelperUtils.unfocus(); + Future.delayed( + Duration.zero, + () { + Widgets.hideLoder(context); + }, + ); + + cities = null; + setState(() {}); + } + + // loopMarker(List pointList) { + // for (var i = 0; i < pointList.length; i++) { + // var element = pointList[i]; + // //Add markers inside marker list + // marker + // .addLabelMarker(LabelMarker( + // label: r"$" + (element.price).toString().priceFormate(), + // markerId: MarkerId("$i"), + // onTap: () async { + // selectedMarker = i; + // propertyId = element.propertyId; + // marker.clear(); + // loopMarker(pointList); + // setState(() {}); + // fetchProperty(element.propertyId); + // }, + // position: LatLng( + // double.parse(element.latitude), double.parse(element.longitude)), + // backgroundColor: selectedMarker == i + // ? Colors.red + // : (element.propertyType.toLowerCase() == "sell" + // ? Colors.green + // : Colors.orange), + // )) + // .then( + // (value) { + // setState(() {}); + // }, + // ); + // } + // } + + Future fetchProperty(int id) async { + try { + isLoadingProperty.value = true; + DataOutput result = + await PropertyRepository().fetchPropertyFromPropertyId(id); + activePropertyModal = result.modelList.first; + setState(() {}); + isLoadingProperty.value = false; + } catch (e) { + isLoadingProperty.value = false; + + HelperUtils.showSnackBarMessage(context, "error".translate(context)); + } + } + + Future? getCityLatLong(index) async { + var rawCityLatLong = await GooglePlaceRepository() + .getPlaceDetailsFromPlaceId(cities?.elementAt(index).placeId ?? ""); + + var citylatLong = LatLng(rawCityLatLong['lat'], rawCityLatLong['lng']); + return citylatLong; + } + + @override + void dispose() async { + _googleMapController?.dispose(); + _searchController.dispose(); + super.dispose(); + } + + // Future _delayedPop(BuildContext context) async { + // unawaited( + // Navigator.of(context, rootNavigator: true).push( + // PageRouteBuilder( + // pageBuilder: (_, __, ___) => WillPopScope( + // onWillPop: () async => false, + // child: const Scaffold( + // backgroundColor: Colors.transparent, + // body: Center( + // child: CircularProgressIndicator.adaptive(), + // ), + // ), + // ), + // transitionDuration: Duration.zero, + // barrierDismissible: false, + // barrierColor: Colors.black45, + // opaque: false, + // ), + // ), + // ); + // await Future.delayed(const Duration(seconds: 1)); + + // Future.delayed( + // Duration.zero, + // () { + // Navigator.of(context) + // ..pop() + // ..pop(); + // }, + // ); + // } + + String? getComponent(List data, dynamic dm) { + // log("CALLED"); + try { + return data.where((element) { + return (element['types'] as List).contains(dm); + }).first['long_name']; + } catch (e) { + return null; + } + } + + @override + Widget build(BuildContext context) { + Widget buildSearchIcon() { + return Padding( + padding: const EdgeInsets.all(8.0), + child: UiUtils.getSvg(AppIcons.search, + color: context.color.tertiaryColor)); + } + + return WillPopScope( + onWillPop: () async { + _googleMapController?.dispose(); + (await completer.future).dispose(); + showGoogleMap = false; + setState(() {}); + + return true; + }, + child: SafeArea( + child: Scaffold( + bottomNavigationBar: SizedBox( + child: MaterialButton( + height: 50, + color: context.color.tertiaryColor, + onPressed: marker == null + ? null + : () async { + try { + String? state = ""; + String? city = ""; + String? country = ""; + String? sublocality = ""; + String? pointofinterest = ""; + Response response = await Dio().get( + "https://maps.googleapis.com/maps/api/geocode/json?key=${Constant.googlePlaceAPIkey}&latlng=${marker?.position.latitude},${marker?.position.longitude}"); + + if ((response.data as Map) + .containsKey("error_message")) { + throw response.data; + } + List component = List.from( + response.data['results'][0]['address_components']); + + city = getComponent( + component, + "locality", + ); + state = getComponent( + component, "administrative_area_level_1"); + country = getComponent(component, "country"); + sublocality = getComponent(component, "sublocality"); + + pointofinterest = + getComponent(component, "point_of_interest"); + + bool? startsWith = pointofinterest?.contains(","); + if (startsWith ?? false) { + pointofinterest = + pointofinterest?.replaceFirst(",", ""); + } + + Placemark place = Placemark( + locality: city, + administrativeArea: state, + country: country, + subLocality: sublocality, + street: pointofinterest); + + showGoogleMap = false; + setState(() {}); + + Future.delayed( + const Duration(milliseconds: 0), + () { + Navigator.pop(context, { + "latlng": LatLng(marker!.position.latitude, + marker!.position.longitude), + "place": place + }); + }, + ); + } catch (e) { + if (e is Map) { + if (e.containsKey("error_message")) { + HelperUtils.showSnackBarMessage( + context, e['error_message'], + messageDuration: 5); + } + } + + if (e.toString().contains("IO_ERROR")) { + ScaffoldMessenger.of(context).showSnackBar(SnackBar( + content: Text("pleaseChangeNetwork" + .translate(context) + .toString()))); + } + } + }, + child: Text("proceed".translate(context)).color(marker == null + ? context.color.textColorDark + : context.color.buttonColor), + ), + ), + backgroundColor: context.color.backgroundColor, + appBar: AppBar( + backgroundColor: Colors.transparent, + elevation: 0, + automaticallyImplyLeading: false, + centerTitle: true, + titleSpacing: 0, + actions: [ + FittedBox( + fit: BoxFit.none, + child: SizedBox( + width: 24, + height: 24, + child: ValueListenableBuilder( + valueListenable: loadintCitiesInProgress, + builder: (context, va, c) { + if (va == false) { + return const SizedBox.shrink(); + } + return CircularProgressIndicator( + color: context.color.tertiaryColor, + strokeWidth: 1.5, + ); + }), + )) + ], + leading: cities != null + ? IconButton( + onPressed: () { + cities = null; + _searchController.text = ""; + setState(() {}); + }, + icon: Icon( + Icons.close, + color: context.color.tertiaryColor, + )) + : Material( + clipBehavior: Clip.antiAlias, + color: Colors.transparent, + type: MaterialType.circle, + child: InkWell( + onTap: () { + Navigator.pop(context); + }, + child: Padding( + padding: const EdgeInsets.all(18.0), + child: UiUtils.getSvg(AppIcons.arrowLeft, + fit: BoxFit.none, + color: context.color.tertiaryColor), + ), + ), + ), + title: Container( + width: 270.rw(context), + height: 50.rh(context), + alignment: Alignment.center, + decoration: BoxDecoration( + border: Border.all( + width: 1.5, color: context.color.borderColor), + borderRadius: const BorderRadius.all(Radius.circular(10)), + color: context.color.secondaryColor), + child: TextFormField( + focusNode: _searchFocus, + controller: _searchController, + decoration: InputDecoration( + border: InputBorder.none, //OutlineInputBorder() + fillColor: Theme.of(context).colorScheme.secondaryColor, + hintText: UiUtils.translate(context, "searhCity"), + prefixIcon: buildSearchIcon(), + prefixIconConstraints: + const BoxConstraints(minHeight: 5, minWidth: 5), + ), + enableSuggestions: true, + onEditingComplete: () { + FocusScope.of(context).unfocus(); + }, + onTap: () { + //change prefix icon color to primary + })), + ), + body: Stack( + children: [ + SizedBox( + height: context.screenHeight, + width: context.screenWidth, + child: showGoogleMap == true + ? GoogleMap( + markers: marker == null ? {} : {marker!}, + onMapCreated: (controller) { + completer.complete(controller); + showSellRentLables = true; + setState(() {}); + }, + onTap: (argument) { + activePropertyModal = null; + selectedMarker = 99999999999999; + + marker = Marker( + markerId: const MarkerId("0"), + position: LatLng( + argument.latitude, argument.longitude)); + setState(() {}); + }, + mapType: AppSettings.googleMapType, + compassEnabled: false, + scrollGesturesEnabled: true, + mapToolbarEnabled: false, + trafficEnabled: true, + myLocationButtonEnabled: true, + zoomControlsEnabled: false, + myLocationEnabled: true, + initialCameraPosition: + CameraPosition(target: cameraPosition, zoom: 7), + key: const Key("G-map"), + ) + : const SizedBox.shrink(), + ), + if (cities != null) + Container( + color: context.color.backgroundColor, + child: ListView.builder( + itemCount: cities?.length ?? 0, + itemBuilder: (context, index) { + return ListTile( + onTap: () async { + activePropertyModal = null; + setState(() {}); + onTapCity(index); + }, + leading: SvgPicture.asset( + AppIcons.location, + color: context.color.textColorDark, + ), + title: Text(cities?.elementAt(index).city ?? ""), + subtitle: Text( + "${cities?.elementAt(index).state ?? ""},${cities?.elementAt(index).country ?? ""}"), + ); + }, + ), + ), + // PositionedDirectional( + // bottom: 0, + // child: ValueListenableBuilder( + // valueListenable: isLoadingProperty, + // builder: (context, val, child) { + // if (cities != null) { + // return const SizedBox.shrink(); + // } + // if (val == true) { + // return SizedBox( + // width: MediaQuery.of(context).size.width, + // child: Padding( + // padding: const EdgeInsets.all(20.0), + // child: Row( + // children: const [ + // CustomShimmer( + // width: 100, + // height: 110, + // ), + // SizedBox( + // width: 5, + // ), + // Expanded( + // child: CustomShimmer( + // height: 110, + // ), + // ), + // ], + // ), + // ), + // ); + // } else { + // if (activePropertyModal != null) { + // return SizedBox( + // width: MediaQuery.of(context).size.width, + // child: Padding( + // padding: const EdgeInsets.all(20), + // child: GestureDetector( + // onTap: () { + // Navigator.pushNamed( + // context, Routes.propertyDetails, + // arguments: { + // 'propertyData': activePropertyModal, + // 'fromMyProperty': true, + // }); + // }, + // child: PropertyHorizontalCard( + // showLikeButton: false, + // property: activePropertyModal!), + // ), + // ), + // ); + // } else { + // return Container(); + // } + // } + // })) + ], + ), + ), + ), + ); + } + + Padding sellRentLable(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + Container( + width: 20, + height: 20, + color: Colors.green, + ), + const SizedBox( + width: 3, + ), + const Text("Sell").color(context.color.buttonColor), + const SizedBox( + width: 10, + ), + Container( + width: 20, + height: 20, + color: Colors.orange, + ), + const SizedBox( + width: 3, + ), + const Text("Rent").color(context.color.buttonColor), + ], + ), + ); + } +} diff --git a/lib/Ui/screens/map/property_map_screen.dart b/lib/Ui/screens/map/property_map_screen.dart new file mode 100644 index 0000000..fd87ad0 --- /dev/null +++ b/lib/Ui/screens/map/property_map_screen.dart @@ -0,0 +1,508 @@ +import 'dart:async'; + +import 'package:ebroker/Ui/screens/home/Widgets/property_horizontal_card.dart'; +import 'package:ebroker/Ui/screens/widgets/shimmerLoadingContainer.dart'; +import 'package:ebroker/data/Repositories/map.dart'; +import 'package:ebroker/data/Repositories/property_repository.dart'; +import 'package:ebroker/data/helper/widgets.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/constant.dart'; +import 'package:ebroker/utils/helper_utils.dart'; +import 'package:ebroker/utils/hive_utils.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:ebroker/utils/string_extenstion.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:label_marker/label_marker.dart'; + +import '../../../app/routes.dart'; +import '../../../data/Repositories/location_repository.dart'; +import '../../../data/model/google_place_model.dart'; +import '../../../settings.dart'; +import '../../../utils/AppIcon.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; + +class PropertyMapScreen extends StatefulWidget { + const PropertyMapScreen({super.key}); + static Route route(RouteSettings settings) { + // Map? arguments = settings.arguments as Map?; + return BlurredRouter(builder: (context) { + return const PropertyMapScreen(); + }); + } + + @override + State createState() => _PropertyMapScreenState(); +} + +class _PropertyMapScreenState extends State { + final TextEditingController _searchController = TextEditingController(); + String previouseSearchQuery = ""; + LatLng? citylatLong; + Timer? _timer; + Set marker = {}; + Map map = {}; + GoogleMapController? _googleMapController; + Completer completer = Completer(); + final FocusNode _searchFocus = FocusNode(); + List? cities; + int selectedMarker = 999999999999999; + int? propertyId; + ValueNotifier isLoadingProperty = ValueNotifier(false); + PropertyModel? activePropertyModal; + ValueNotifier loadintCitiesInProgress = ValueNotifier(false); + bool showSellRentLables = false; + bool showGoogleMap = true; + + Future searchDelayTimer() async { + if (_timer?.isActive ?? false) { + _timer?.cancel(); + } + _timer = Timer( + const Duration(milliseconds: 500), + () async { + if (_searchController.text.isNotEmpty) { + if (previouseSearchQuery != _searchController.text) { + try { + loadintCitiesInProgress.value = true; + cities = await GooglePlaceRepository().serchCities( + _searchController.text, + ); + loadintCitiesInProgress.value = false; + } catch (e) { + loadintCitiesInProgress.value = false; + } + + setState(() {}); + previouseSearchQuery = _searchController.text; + } + } else { + cities = null; + } + }, + ); + setState(() {}); + } + + @override + void initState() { + loadDefaultCity(); + Fluttertoast.showToast( + msg: "Please search city", + toastLength: Toast.LENGTH_LONG, + gravity: ToastGravity.TOP, + timeInSecForIosWeb: 1, + backgroundColor: Colors.red, + textColor: Colors.white, + fontSize: 16.0); + + _searchController.addListener(() { + searchDelayTimer(); + }); + super.initState(); + } + + LatLng cameraPosition = const LatLng( + 42.42345651793833, + 23.906250000000004, + ); + + Future loadDefaultCity() async { + if (HiveUtils.getCityName() == null) return; + List pointList = await GMap.getNearByProperty( + HiveUtils.getCityName() ?? "", HiveUtils.getStateName() ?? ""); + + if (pointList.isEmpty) { + marker = {}; + setState(() {}); + } + + LatLng? latLng = await getCityLatLong(HiveUtils.getCityPlaceId()); + //Animate camera to location + (await completer.future).animateCamera(CameraUpdate.newCameraPosition( + CameraPosition(target: latLng, zoom: 7))); + loopMarker(pointList); + } + + Future onTapCity(int index) async { + Widgets.showLoader(context); + List pointList = await GMap.getNearByProperty( + cities?.elementAt(index).city ?? "", + cities?.elementAt(index).state ?? ""); + + if (pointList.isEmpty) { + marker = {}; + setState(() {}); + } + + LatLng? latLng = await getCityLatLongByIndex(index); + //Animate camera to location + (await completer.future).animateCamera( + CameraUpdate.newCameraPosition( + CameraPosition(target: latLng!, zoom: 7), + ), + ); + loopMarker(pointList); + // for (var i = 0; i < pointList.length; i++) { + // var element = pointList[i]; + + // //Add markers inside marker list + // marker + // .addLabelMarker(LabelMarker( + // label: r"$" + (element.price).toString().priceFormate(), + // markerId: MarkerId("$i"), + // onTap: () async { + // selectedMarker = i; + // setState(() {}); + // }, + // position: LatLng( + // double.parse(element.latitude), double.parse(element.longitude)), + // backgroundColor: selectedMarker == i + // ? Colors.red + // : (element.propertyType == "sell" ? Colors.green : Colors.orange), + // )) + // .then( + // (value) { + // setState(() {}); + // }, + // ); + // } + + _searchFocus.unfocus(); + HelperUtils.unfocus(); + Future.delayed( + Duration.zero, + () { + Widgets.hideLoder(context); + }, + ); + + cities = null; + setState(() {}); + } + + void loopMarker(List pointList) { + for (var i = 0; i < pointList.length; i++) { + var element = pointList[i]; + print("element.propertyType ${element.propertyType}"); + marker + .addLabelMarker(LabelMarker( + label: + Constant.currencySymbol + (element.price).toString().priceFormate(), + markerId: MarkerId("$i"), + onTap: () async { + selectedMarker = i; + propertyId = element.propertyId; + marker.clear(); + loopMarker(pointList); + setState(() {}); + fetchProperty(element.propertyId); + }, + position: LatLng( + double.parse(element.latitude), double.parse(element.longitude)), + backgroundColor: selectedMarker == i + ? Colors.red + : (element.propertyType.toLowerCase() == "sell" + ? Colors.green + : Colors.orange), + )) + .then( + (value) { + setState(() {}); + }, + ); + } + } + + Future fetchProperty(int id) async { + try { + isLoadingProperty.value = true; + DataOutput result = + await PropertyRepository().fetchPropertyFromPropertyId(id); + + if (result.modelList.isNotEmpty) { + activePropertyModal = result.modelList.first; + } + setState(() {}); + isLoadingProperty.value = false; + } catch (e) { + isLoadingProperty.value = false; + + HelperUtils.showSnackBarMessage(context, "$e".translate(context)); + } + } + + Future? getCityLatLongByIndex(index) async { + // var rawCityLatLong = await GooglePlaceRepository() + // .getPlaceDetailsFromPlaceId(cities?.elementAt(index).placeId ?? ""); + + LatLng latLng = + await getCityLatLong(cities?.elementAt(index).placeId ?? ""); + return latLng; + } + + Future getCityLatLong(String placeId) async { + var rawCityLatLong = + await GooglePlaceRepository().getPlaceDetailsFromPlaceId(placeId); + + var citylatLong = LatLng(rawCityLatLong['lat'], rawCityLatLong['lng']); + return citylatLong; + } + + @override + void dispose() async { + _googleMapController?.dispose(); + _searchController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + Widget buildSearchIcon() { + return Padding( + padding: const EdgeInsets.all(8.0), + child: UiUtils.getSvg(AppIcons.search, + color: context.color.tertiaryColor)); + } + + return WillPopScope( + onWillPop: () async { + _googleMapController?.dispose(); + (await completer.future).dispose(); + showGoogleMap = false; + setState(() {}); + return true; + }, + child: SafeArea( + child: Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: AppBar( + backgroundColor: Colors.transparent, + elevation: 0, + automaticallyImplyLeading: false, + centerTitle: true, + titleSpacing: 0, + actions: [ + FittedBox( + fit: BoxFit.none, + child: SizedBox( + width: 24, + height: 24, + child: ValueListenableBuilder( + valueListenable: loadintCitiesInProgress, + builder: (context, va, c) { + if (va == false) { + return const SizedBox.shrink(); + } + return CircularProgressIndicator( + color: context.color.tertiaryColor, + strokeWidth: 1.5, + ); + }), + )) + ], + leading: cities != null + ? IconButton( + onPressed: () { + cities = null; + _searchController.text = ""; + setState(() {}); + }, + icon: Icon( + Icons.close, + color: context.color.tertiaryColor, + )) + : Material( + clipBehavior: Clip.antiAlias, + color: Colors.transparent, + type: MaterialType.circle, + child: InkWell( + onTap: () { + Navigator.pop(context); + }, + child: Padding( + padding: const EdgeInsets.all(18.0), + child: UiUtils.getSvg(AppIcons.arrowLeft, + fit: BoxFit.none, + color: context.color.tertiaryColor), + ), + ), + ), + title: Container( + width: 270.rw(context), + height: 50.rh(context), + alignment: Alignment.center, + decoration: BoxDecoration( + border: Border.all( + width: 1.5, color: context.color.borderColor), + borderRadius: const BorderRadius.all(Radius.circular(10)), + color: context.color.secondaryColor), + child: TextFormField( + focusNode: _searchFocus, + controller: _searchController, + decoration: InputDecoration( + border: InputBorder.none, //OutlineInputBorder() + fillColor: Theme.of(context).colorScheme.secondaryColor, + hintText: UiUtils.translate(context, "searchHintLbl"), + prefixIcon: buildSearchIcon(), + prefixIconConstraints: + const BoxConstraints(minHeight: 5, minWidth: 5), + ), + enableSuggestions: true, + onEditingComplete: () { + FocusScope.of(context).unfocus(); + }, + onTap: () { + //change prefix icon color to primary + })), + ), + body: Stack( + children: [ + if (showGoogleMap) + GoogleMap( + markers: marker, + onMapCreated: (controller) { + completer.complete(controller); + showSellRentLables = true; + setState(() {}); + }, + onTap: (argument) { + activePropertyModal = null; + selectedMarker = 99999999999999; + setState(() {}); + }, + mapType: AppSettings.googleMapType, + compassEnabled: false, + mapToolbarEnabled: false, + trafficEnabled: true, + myLocationButtonEnabled: false, + zoomControlsEnabled: false, + myLocationEnabled: true, + initialCameraPosition: CameraPosition( + target: cameraPosition, + ), + ), + sellRentLable(context), + if (cities != null) + Container( + color: context.color.backgroundColor, + child: ListView.builder( + itemCount: cities?.length ?? 0, + itemBuilder: (context, index) { + return ListTile( + onTap: () async { + activePropertyModal = null; + setState(() {}); + onTapCity(index); + }, + leading: SvgPicture.asset( + AppIcons.location, + color: context.color.textColorDark, + ), + title: Text(cities?.elementAt(index).city ?? ""), + subtitle: Text( + "${cities?.elementAt(index).state ?? ""},${cities?.elementAt(index).country ?? ""}"), + ); + }, + ), + ), + PositionedDirectional( + bottom: 0, + child: ValueListenableBuilder( + valueListenable: isLoadingProperty, + builder: (context, val, child) { + if (cities != null) { + return const SizedBox.shrink(); + } + if (val == true) { + return SizedBox( + width: MediaQuery.of(context).size.width, + child: const Padding( + padding: EdgeInsets.all(20.0), + child: Row( + children: [ + CustomShimmer( + width: 100, + height: 110, + ), + SizedBox( + width: 5, + ), + Expanded( + child: CustomShimmer( + height: 110, + ), + ), + ], + ), + ), + ); + } else { + if (activePropertyModal != null) { + return SizedBox( + width: MediaQuery.of(context).size.width, + child: Padding( + padding: const EdgeInsets.all(20), + child: GestureDetector( + onTap: () { + Navigator.pushNamed( + context, Routes.propertyDetails, + arguments: { + 'propertyData': activePropertyModal, + 'fromMyProperty': true, + }); + }, + child: PropertyHorizontalCard( + showLikeButton: false, + property: activePropertyModal!), + ), + ), + ); + } else { + return Container(); + } + } + })) + ], + ), + ), + ), + ); + } + + Padding sellRentLable(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + children: [ + Container( + width: 20, + height: 20, + color: Colors.green, + ), + const SizedBox( + width: 3, + ), + const Text("Sell").color(context.color.buttonColor), + const SizedBox( + width: 10, + ), + Container( + width: 20, + height: 20, + color: Colors.orange, + ), + const SizedBox( + width: 3, + ), + const Text("Rent").color(context.color.buttonColor), + ], + ), + ); + } +} diff --git a/lib/Ui/screens/onboarding/onboarding_screen.dart b/lib/Ui/screens/onboarding/onboarding_screen.dart new file mode 100644 index 0000000..88e1908 --- /dev/null +++ b/lib/Ui/screens/onboarding/onboarding_screen.dart @@ -0,0 +1,302 @@ +import 'package:ebroker/utils/Lottie/lottieEditor.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:hive/hive.dart'; +import 'package:lottie/lottie.dart'; + +import '../../../app/routes.dart'; +import '../../../data/cubits/system/fetch_system_settings_cubit.dart'; +import '../../../data/model/system_settings_model.dart'; +import '../../../utils/AppIcon.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/hive_keys.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; + +class OnboardingScreen extends StatefulWidget { + const OnboardingScreen({Key? key}) : super(key: key); + + @override + State createState() => _OnboardingScreenState(); +} + +class _OnboardingScreenState extends State { + int currentPageIndex = 0; + int previousePageIndex = 0; + double changedOnPageScroll = 0.5; + double currentSwipe = 0; + late int totalPages; + + final LottieEditor _onBoardingOne = LottieEditor(); + final LottieEditor _onBoardingTwo = LottieEditor(); + final LottieEditor _onBoardingThree = LottieEditor(); + + dynamic onBoardingOneData; + dynamic onBoardingTwoData; + dynamic onBoardingThreeData; + + @override + void initState() { + _onBoardingOne.openAndLoad("assets/lottie/onbo_a.json"); + _onBoardingTwo.openAndLoad("assets/lottie/onbo_b.json"); + _onBoardingThree.openAndLoad("assets/lottie/onbo_c.json"); + + Future.delayed( + Duration.zero, + () { + _onBoardingOne.changeWholeLottieFileColor(context.color.tertiaryColor); + _onBoardingTwo.changeWholeLottieFileColor(context.color.tertiaryColor); + _onBoardingThree + .changeWholeLottieFileColor(context.color.tertiaryColor); + + onBoardingOneData = _onBoardingOne.convertToUint8List(); + onBoardingTwoData = _onBoardingTwo.convertToUint8List(); + onBoardingThreeData = _onBoardingThree.convertToUint8List(); + setState(() {}); + }, + ); + + Future.delayed( + Duration.zero, + () { + setState(() {}); + }, + ); + super.initState(); + } + + @override + Widget build(BuildContext context) { + List slidersList = [ + { + 'lottie': onBoardingOneData, + 'title': UiUtils.translate(context, "onboarding_1_title"), + 'description': UiUtils.translate(context, "onboarding_1_description"), + 'button': 'next_button.svg' + }, + { + 'lottie': onBoardingTwoData, + 'title': UiUtils.translate(context, "onboarding_2_title"), + 'description': UiUtils.translate(context, "onboarding_2_description"), + }, + { + 'lottie': onBoardingThreeData, + 'title': UiUtils.translate(context, "onboarding_3_title"), + 'description': UiUtils.translate(context, "onboarding_3_description"), + }, + ]; + + totalPages = slidersList.length; + return AnnotatedRegion( + value: const SystemUiOverlayStyle( + systemNavigationBarColor: Colors.transparent, + statusBarColor: Colors.transparent, + ), + child: Scaffold( + backgroundColor: context.color.backgroundColor, + body: Stack( + children: [ + Container( + color: context.color.tertiaryColor.withOpacity(0.25), + ), + Align( + alignment: Alignment.center.add(const Alignment(0, -.3)), + child: SizedBox( + height: 300, + child: (slidersList[currentPageIndex]['lottie'] != null) + ? Lottie.memory( + slidersList[currentPageIndex]['lottie'], + delegates: LottieDelegates( + values: [], + ), + ) + : Container(), + )), + PositionedDirectional( + top: kPagingTouchSlop, + start: 5, + child: TextButton( + onPressed: () async { + context + .read() + .fetchSettings(isAnonymouse: true); + Navigator.pushNamed( + context, Routes.languageListScreenRoute); + }, + child: StreamBuilder( + stream: Hive.box(HiveKeys.languageBox) + .watch(key: HiveKeys.currentLanguageKey), + builder: (context, AsyncSnapshot value) { + if (value.data?.value == null) { + if (context + .watch() + .getSetting(SystemSetting.defaultLanguage) + .toString() == + "null") { + return const Text(""); + } + return Text(context + .watch() + .getSetting(SystemSetting.defaultLanguage) + .toString() + .firstUpperCase()) + .color(context.color.textColorDark); + } else { + return Text(value.data!.value!['code'] + .toString() + .toString() + .firstUpperCase()) + .color(context.color.textColorDark); + } + }))), + PositionedDirectional( + top: kPagingTouchSlop, + end: 5, + child: GestureDetector( + onTap: () { + Navigator.pushReplacementNamed(context, Routes.login); + }, + child: Padding( + padding: const EdgeInsets.all(14.0), + child: Icon( + Icons.close, + color: context.color.tertiaryColor, + ), + ), + )), + Positioned( + bottom: 0, + child: GestureDetector( + onHorizontalDragUpdate: (DragUpdateDetails details) { + currentSwipe = details.localPosition.direction; + setState(() {}); + }, + onHorizontalDragEnd: (details) { + if (currentSwipe < 0.5) { + if (changedOnPageScroll == 1 || + changedOnPageScroll == 0.5) { + if (currentPageIndex > 0) { + currentPageIndex--; + changedOnPageScroll = 0; + } + } + setState(() {}); + } else { + if (currentPageIndex < totalPages) { + if (changedOnPageScroll == 0 || + changedOnPageScroll == 0.5) { + if (currentPageIndex < slidersList.length - 1) { + currentPageIndex++; + } else { + Navigator.of(context).pushNamedAndRemoveUntil( + Routes.login, (route) => false); + } + setState(() {}); + } + } + } + + changedOnPageScroll = 0.5; + setState(() {}); + }, + child: Container( + height: 304.rh(context), + width: context.screenWidth, + decoration: BoxDecoration( + color: context.color.primaryColor, + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(40), + topRight: Radius.circular(40)), + ), + child: Padding( + padding: const EdgeInsets.only( + right: 20, left: 20, bottom: 20, top: 10), + child: Column( + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: const EdgeInsets.all(15.0), + child: Text(slidersList[currentPageIndex]['title'], + key: const Key("onboarding_title")) + .size(context.font.extraLarge.rf(context)) + .color(context.color.tertiaryColor) + .bold(weight: FontWeight.w600), + ), + Text( + slidersList[currentPageIndex]['description'], + textAlign: TextAlign.center, + ) + .setMaxLines(lines: 3) + .size(context.font.larger.rf(context)) + .color(context.color.textColorDark), + const Spacer(), + Row( + children: [ + Row(children: [ + for (var i = 0; i < slidersList.length; i++) ...[ + buildIndicator(context, + selected: i == currentPageIndex) + ], + ]), + const Spacer(), + GestureDetector( + key: const ValueKey("next_screen"), + onTap: () { + if (currentPageIndex < slidersList.length - 1) { + currentPageIndex++; + } else { + Navigator.of(context).pushNamedAndRemoveUntil( + Routes.login, (route) => false); + } + setState(() {}); + }, + child: CircleAvatar( + radius: 35, + backgroundColor: context.color.tertiaryColor, + child: UiUtils.getSvg(AppIcons.iconArrowLeft), + ), + ) + ], + ) + ], + ), + ), + ), + ), + ) + ], + ), + ), + ); + } + + Widget buildIndicator(BuildContext context, {required bool selected}) { + if (selected) { + return Padding( + padding: const EdgeInsets.all(1.0), + child: Container( + width: 36, + height: 12, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(7), + color: context.color.tertiaryColor, + ), + ), + ); + } else { + return Padding( + padding: const EdgeInsets.all(1.0), + child: Container( + width: 12, + height: 12, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: + Border.all(color: context.color.textLightColor, width: 1.9)), + ), + ); + } + } +} diff --git a/lib/Ui/screens/openmap/mymaps.dart b/lib/Ui/screens/openmap/mymaps.dart new file mode 100644 index 0000000..5d397e9 --- /dev/null +++ b/lib/Ui/screens/openmap/mymaps.dart @@ -0,0 +1,5 @@ +import 'dart:async'; +import 'dart:io'; + + +class \ No newline at end of file diff --git a/lib/Ui/screens/project/create/add_project_details.dart b/lib/Ui/screens/project/create/add_project_details.dart new file mode 100644 index 0000000..6c37928 --- /dev/null +++ b/lib/Ui/screens/project/create/add_project_details.dart @@ -0,0 +1,650 @@ +import 'dart:developer'; +import 'dart:io'; + +import 'package:dio/dio.dart'; +import 'package:dotted_border/dotted_border.dart'; +import 'package:ebroker/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import 'package:ebroker/data/cubits/project/manage_project_cubit.dart'; +import 'package:ebroker/data/model/project_model.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/CloudState/cloud_state.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:ebroker/utils/string_extenstion.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:file_picker/file_picker.dart'; +import 'package:flutter/material.dart'; +import 'package:geocoding/geocoding.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:hive/hive.dart'; + +import '../../../../data/Repositories/location_repository.dart'; +import '../../../../data/model/google_place_model.dart'; +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/hive_keys.dart'; +import '../../proprties/AddProperyScreens/add_property_details.dart'; +import '../../widgets/adaptive_image_picker.dart'; +import '../../widgets/custom_text_form_field.dart'; + +class AddProjectDetails extends StatefulWidget { + final Map? editData; + const AddProjectDetails({super.key, this.editData}); + static route(RouteSettings settings) { + return BlurredRouter(builder: (context) { + return BlocProvider( + create: (context) => ManageProjectCubit(), + child: AddProjectDetails( + editData: settings.arguments as Map?, + )); + }); + } + + @override + CloudState createState() => _AddProjectDetailsState(); +} + +class _AddProjectDetailsState extends CloudState { + late bool isEdit = widget.editData != null; + + late ProjectModel? project = getEditProjectData(widget.editData?['project']); + + late final TextEditingController _titleController = + TextEditingController(text: project?.title); + late final TextEditingController _descriptionController = + TextEditingController(text: project?.description); + late final TextEditingController _videoLinkController = + TextEditingController(text: project?.videoLink); + String selectedLocation = ""; + GooglePlaceModel? suggestion; + final GlobalKey _formKey = GlobalKey(); + + List documentFiles = []; + List removedDocumentId = []; + List removedGalleryImageId = []; + + GooglePlaceRepository googlePlaceRepository = GooglePlaceRepository(); + + late final TextEditingController _cityNameController = + TextEditingController(text: project?.city); + + late final TextEditingController _stateNameController = + TextEditingController(text: project?.state); + + late final TextEditingController _countryNameController = + TextEditingController(text: project?.country); + + late final TextEditingController _addressController = + TextEditingController(text: project?.location); + // final TextEditingController _main=TextEditingController(); + double? latitude; + double? longitude; + Map? floorPlans = {}; + List floorPlansRawData = []; + ImagePickerValue? titleImage; + ImagePickerValue? galleryImages; + String projectType = "upcoming"; + List removedPlansId = []; + ProjectModel? getEditProjectData(Map? data) { + if (data == null) { + return null; + } + return ProjectModel.fromMap(data); + } + + @override + void initState() { + //add documents in edit mode + List? list = project?.documents?.map((document) { + return UrlDocument(document.name!, document.id!); + }).toList(); + + if (list != null) { + documentFiles = List.from(list as List); + } + projectType = project?.type ?? "upcoming"; + if (project != null && project?.image != "") { + titleImage = UrlValue(project!.image!); + } + + if (project != null && project!.gallaryImages!.isNotEmpty) { + galleryImages = MultiValue( + project!.gallaryImages!.map((e) => UrlValue(e.name!)).toList()); + } + + ///add plans in edit mode + project?.plans?.forEach((plan) { + floorPlansRawData.add({ + "title": plan.title, + "id": plan.id, + "image": plan.document, + }); + }); + + setState(() {}); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: UiUtils.buildAppBar( + context, + title: "projectDetails".translate(context), + showBackButton: true, + ), + bottomNavigationBar: BottomAppBar( + color: context.color.backgroundColor, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 14.0, vertical: 5), + child: MaterialButton( + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), + color: context.color.tertiaryColor, + onPressed: () { + if (_formKey.currentState!.validate()) { + Map documents = {}; + try { + documents = documentFiles.fold({}, (pr, el) { + if (el is FileDocument) { + pr.addAll({ + "documents[${pr.length}]": + MultipartFile.fromFileSync(el.value.path) + }); + } + return pr; + }); + } catch (e) { + log("issue is $e"); + } + addCloudData( + 'add_project_details', + { + "title": _titleController.text, + "description": _descriptionController.text, + "latitude": latitude, + "longitude": longitude, + "city": _cityNameController.text, + "state": _stateNameController.text, + "country": _countryNameController.text, + "location": _addressController.text, + "video_link": _videoLinkController.text, + if (titleImage != null && + titleImage is! UrlValue && + titleImage?.value != "") + "image": titleImage, + "gallery_images": galleryImages, + + ...documents, + "is_edit": isEdit, + "project": project, + "type": projectType, + "remove_gallery_images": removedGalleryImageId.join(","), + "remove_documents": removedDocumentId.join(","), + "remove_plans": removedPlansId.join(","), + + ////if there is data it will add into it + ...widget.editData ?? {} + }, + ); + + //this will create Map from List + + floorPlansRawData + .removeWhere((element) => element['image'] is String); + Map fold = floorPlansRawData.fold({}, (previousValue, element) { + previousValue.addAll({ + "plans[${previousValue.length ~/ 2}][id]": + (element['id'] is ValueKey) + ? (element['id'] as ValueKey).value + : "", + "plans[${previousValue.length ~/ 2}][document]": + element['image'], + "plans[${previousValue.length ~/ 2}][title]": + element['title'], + }); + return previousValue; + }); + + addCloudData("floor_plans", fold); + + Navigator.pushNamed(context, Routes.projectMetaDataScreens); + } + }, + height: 50, + child: Text("continue".translate(context)) + .color(context.color.secondaryColor), + ), + ), + ), + body: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Form( + key: _formKey, + child: Padding( + padding: const EdgeInsets.all(14.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("projectName".translate(context)), + height(), + CustomTextFormField( + controller: _titleController, + validator: CustomTextFieldValidator.nullCheck, + action: TextInputAction.next, + hintText: "projectName".translate(context), + ), + height(), + Text("Description".translate(context)), + height(), + CustomTextFormField( + action: TextInputAction.next, + controller: _descriptionController, + validator: CustomTextFieldValidator.nullCheck, + hintText: UiUtils.translate(context, "writeSomething"), + maxLine: 100, + minLine: 6, + ), + height(), + projectTypeField(context), + height(), + buildLocationChooseHeader(), + height(), + buildProjectLocationTextFields(), + height(), + Text("uploadMainPicture".translate(context)), + height(), + AdaptiveImagePickerWidget( + isRequired: true, + multiImage: false, + value: isEdit ? UrlValue(project!.image!) : null, + title: UiUtils.translate(context, "addMainPicture"), + onSelect: (ImagePickerValue? selected) { + titleImage = selected; + setState(() {}); + }, + ), + height(), + Text("uploadOtherImages".translate(context)), + height(), + AdaptiveImagePickerWidget( + title: UiUtils.translate(context, "addOtherImage"), + onRemove: (value) { + if (value is UrlValue) { + removedGalleryImageId.add(value.metaData['id']); + } + }, + multiImage: true, + value: MultiValue([ + ...project?.gallaryImages?.map((e) => UrlValue(e.name!, { + "id": e.id!, + })) ?? + [] + ]), + onSelect: (ImagePickerValue? selected) { + if (selected is MultiValue) { + galleryImages = selected; + setState(() {}); + } + }, + ), + height(), + Text("videoLink".translate(context)), + height(), + CustomTextFormField( + action: TextInputAction.next, + controller: _videoLinkController, + validator: CustomTextFieldValidator.link, + hintText: "http://example.com/video.mp4", + ), + height(), + Text("projectDocuments".translate(context)), + height(), + buildDocumentPicker(context), + ...documentsList(), + height(), + Row( + children: [ + Column( + children: [ + Text( + "floorPlans".translate(context), + ), + Text("${floorPlansRawData.length}").bold() + ], + ), + Spacer(), + MaterialButton( + elevation: 0, + color: context.color.tertiaryColor.withOpacity(0.1), + onPressed: () async { + Map? data = await Navigator.pushNamed( + context, Routes.manageFloorPlansScreen, + arguments: {"floorPlan": floorPlansRawData}) + as Map?; + if (data != null) { + floorPlansRawData = data['floorPlans'] ?? []; + + removedPlansId = data['removed']; + } + setState(() {}); + }, + child: const Text("Manage"), + ) + ], + ), + height(30) + ], + ), + ), + ), + ), + ); + } + + Widget projectTypeField(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("projectStatus".translate(context)), + height(), + InputDecorator( + decoration: InputDecoration( + hintStyle: TextStyle( + color: context.color.textColorDark.withOpacity(0.7), + fontSize: context.font.large), + filled: true, + fillColor: context.color.secondaryColor, + focusedBorder: OutlineInputBorder( + borderSide: BorderSide( + width: 1.5, color: context.color.tertiaryColor), + borderRadius: BorderRadius.circular(10)), + enabledBorder: OutlineInputBorder( + borderSide: + BorderSide(width: 1.5, color: context.color.borderColor), + borderRadius: BorderRadius.circular(10)), + border: OutlineInputBorder( + borderSide: + BorderSide(width: 1.5, color: context.color.borderColor), + borderRadius: BorderRadius.circular(10))), + child: DropdownButton( + isExpanded: true, + value: projectType, + isDense: true, + borderRadius: BorderRadius.zero, + padding: EdgeInsets.zero, + underline: const SizedBox.shrink(), + items: [ + DropdownMenuItem( + child: Text("Upcoming".translate(context)), + value: "upcoming", + ), + DropdownMenuItem( + child: Text("Under Construction".translate(context)), + value: "under_construction", + ), + ], + onChanged: (value) { + projectType = value!; + setState(() {}); + }, + ), + ), + ], + ); + } + + buildProjectLocationTextFields() { + return Column( + children: [ + CustomTextFormField( + action: TextInputAction.next, + controller: _cityNameController, + isReadOnly: false, + validator: CustomTextFieldValidator.nullCheck, + hintText: UiUtils.translate(context, "city"), + ), + SizedBox( + height: 10.rh(context), + ), + CustomTextFormField( + action: TextInputAction.next, + controller: _stateNameController, + isReadOnly: false, + validator: CustomTextFieldValidator.nullCheck, + hintText: UiUtils.translate(context, "state"), + ), + SizedBox( + height: 10.rh(context), + ), + CustomTextFormField( + action: TextInputAction.next, + controller: _countryNameController, + isReadOnly: false, + validator: CustomTextFieldValidator.nullCheck, + hintText: UiUtils.translate(context, "country"), + ), + SizedBox( + height: 10.rh(context), + ), + CustomTextFormField( + action: TextInputAction.next, + controller: _addressController, + hintText: UiUtils.translate(context, "addressLbl"), + maxLine: 100, + validator: CustomTextFieldValidator.nullCheck, + minLine: 4, + ) + ], + ); + } + + buildLocationChooseHeader() { + return SizedBox( + height: 35.rh(context), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded(flex: 3, child: Text("projectLocation".translate(context))), + // const Spacer(), + Expanded( + flex: 3, + child: ChooseLocationFormField( + initialValue: false, + validator: (bool? value) { + if (project != null) { + } + + if (value == true) { + return null; + } else { + return "Select location"; + } + }, + build: (state) { + return Container( + decoration: BoxDecoration( + // color: context.color.teritoryColor, + border: Border.all( + width: 1.5, + color: + state.hasError ? Colors.red : Colors.transparent), + borderRadius: BorderRadius.circular(9)), + child: MaterialButton( + height: 30, + onPressed: () { + _onTapChooseLocation.call(state); + }, + child: FittedBox( + fit: BoxFit.fitWidth, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + UiUtils.getSvg(AppIcons.location, + color: context.color.textLightColor), + const SizedBox( + width: 3, + ), + Text( + UiUtils.translate(context, "chooseLocation"), + ) + .size(context.font.normal) + .color(context.color.tertiaryColor) + .underline(), + ], + ), + )), + ); + }, + ), + ) + ], + ), + ); + } + + void _onTapChooseLocation(FormFieldState state) async { + try { + FocusManager.instance.primaryFocus?.unfocus(); + Map? placeMark = await Navigator.pushNamed( + context, Routes.chooseLocaitonMap, + arguments: { + "latitude": project != null + ? double.parse(project!.latitude!) + : Hive.box(HiveKeys.userDetailsBox) + .get("latitude") + .toString() + .toDouble(), + "longitude": project != null + ? double.parse(project!.longitude!) + : Hive.box(HiveKeys.userDetailsBox) + .get("longitude") + .toString() + .toDouble() + }) as Map?; + LatLng? latlng = placeMark?['latlng'] as LatLng?; + Placemark? place = placeMark?['place'] as Placemark?; + + if (latlng != null && place != null) { + latitude = latlng.latitude; + longitude = latlng.longitude; + // _latitudeController.text = latlng.latitude.toString(); + // _longitudeController.text = latlng.longitude.toString(); + _cityNameController.text = place.locality ?? ""; + _countryNameController.text = place.country ?? ""; + _stateNameController.text = place.administrativeArea ?? ""; + _addressController.text = + [place.locality, place.administrativeArea, place.country].join(","); + // _addressController.text = getAddress(place); + + state.didChange(true); + } else { + print('no action'); + // state.didChange(false); + } + } catch (e) { + log("THE ISSUE IS $e"); + } + } + + Widget height([double? h]) { + return SizedBox( + height: (h)?.rh(context) ?? 15.rh(context), + ); + } + + List documentsList() { + return documentFiles.map((document) { + String fileName = ""; + if (document is FileDocument) { + fileName = document.value.path.split("/").last; + } else { + fileName = document.value.toString().split("/").last; + } + + return ListTile( + title: Text(fileName).setMaxLines(lines: 2), + dense: true, + trailing: IconButton( + icon: const Icon(Icons.close), + onPressed: () { + if (document is UrlDocument) { + removedDocumentId.add(document.id); + } + documentFiles.remove(document); + setState(() {}); + }, + ), + ); + }).toList(); + } + + Widget buildDocumentPicker(BuildContext context) { + return Container( + child: Row( + children: [ + DottedBorder( + borderType: BorderType.RRect, + color: context.color.textLightColor, + radius: const Radius.circular(20), + child: Container( + width: 60, + height: 60, + child: Center( + child: IconButton( + onPressed: () async { + FilePickerResult? filePickerResult = + await FilePicker.platform.pickFiles( + allowMultiple: true, + ); + if (filePickerResult != null) { + List list = + List.from(filePickerResult.files.map((e) { + return FileDocument(File(e.path!)); + }).toList()); + documentFiles.addAll(list); + } + + setState(() {}); + }, + icon: const Icon(Icons.upload), + )), + ), + ), + const SizedBox( + width: 15, + ), + Column( + mainAxisSize: MainAxisSize.max, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text("UploadDocs".translate(context)), + const SizedBox( + height: 4, + ), + Text(documentFiles.length.toString()) + ], + ), + ], + ), + ); + } +} + +abstract class Document { + abstract final T value; +} + +class FileDocument extends Document { + final File value; + FileDocument(this.value); +} + +class UrlDocument extends Document { + @override + final String value; + final int id; + UrlDocument(this.value, this.id); +} diff --git a/lib/Ui/screens/project/create/add_project_meta_details.dart b/lib/Ui/screens/project/create/add_project_meta_details.dart new file mode 100644 index 0000000..2d14094 --- /dev/null +++ b/lib/Ui/screens/project/create/add_project_meta_details.dart @@ -0,0 +1,177 @@ +import 'package:ebroker/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import 'package:ebroker/data/cubits/project/fetchMyProjectsListCubit.dart'; +import 'package:ebroker/data/cubits/project/manage_project_cubit.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/CloudState/cloud_state.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:flutter/material.dart'; + +import '../../../../data/helper/widgets.dart'; +import '../../../../data/model/category.dart' as c; +import '../../../../data/model/project_model.dart'; +import '../../../../utils/ui_utils.dart'; +import '../../widgets/adaptive_image_picker.dart'; +import '../../widgets/custom_text_form_field.dart'; + +class ProjectMetaDetails extends StatefulWidget { + static route(RouteSettings settings) { + return BlurredRouter( + builder: (context) { + return BlocProvider( + create: (context) => ManageProjectCubit(), + child: const ProjectMetaDetails()); + }, + ); + } + + const ProjectMetaDetails({super.key}); + + @override + CloudState createState() => _ProjectMetaDetailsState(); +} + +class _ProjectMetaDetailsState extends CloudState { + late Map projectDetails = + Map.from(getCloudData("add_project_details")); + late ProjectModel? project = projectDetails['project'] == null + ? null + : ProjectModel.fromMap(projectDetails['project']); + final GlobalKey _formKey = GlobalKey(); + late final TextEditingController _metaTitleController = + TextEditingController(text: project?.metaTitle); + late final TextEditingController _metaDescriptionController = + TextEditingController(text: project?.metaDescription); + late final TextEditingController _metaKeywordsController = + TextEditingController(text: project?.metaKeywords); + ImagePickerValue? metaImage; + + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: UiUtils.buildAppBar(context, + title: "addProjectMeta".translate(context), showBackButton: true), + bottomNavigationBar: BottomAppBar( + color: context.color.backgroundColor, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 14.0, vertical: 5), + child: MaterialButton( + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), + color: context.color.tertiaryColor, + onPressed: () { + if (_formKey.currentState!.validate()) { + Map data = {}; + + Map metaDetails = { + "meta_title": _metaTitleController.text, + "meta_description": _metaDescriptionController.text, + "meta_keywords": _metaKeywordsController.text, + "meta_image": metaImage + }; + data + ..addAll(projectDetails) + ..addAll(metaDetails) + ..addAll( + Map.from( + getCloudData('floor_plans'), + ), + ); + + if (!projectDetails.containsKey('category_id')) { + data.addAll({ + "category_id": + (Constant.addProperty['category'] as c.Category).id! + }); + } + data.remove("project"); + + context + .read() + .manage(type: ManageProjectType.create, data: data); + } + // Navigator.pushNamed(context, Routes.projectMetaDataScreens); + }, + height: 50, + child: Text("continue".translate(context)) + .color(context.color.secondaryColor), + ), + ), + ), + body: BlocListener( + listener: (context, state) { + if (state is ManageProjectInProgress) { + Widgets.showLoader(context); + } + + if (state is ManageProjectInSuccess) { + context.read().update(state.project); + Widgets.hideLoder(context); + Navigator.of(context) + ..pop() + ..pop() + ..pop(); + } + if (state is ManageProjectInFail) { + throw state.error; + } + }, + child: Padding( + padding: const EdgeInsets.all(14.0), + child: Form( + key: _formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("metaDetails".translate(context)), + height(), + CustomTextFormField( + controller: _metaTitleController, + hintText: "metaTitle".translate(context), + ), + height(10), + CustomTextFormField( + controller: _metaKeywordsController, + hintText: "metaKeywords".translate(context), + ), + height(10), + CustomTextFormField( + controller: _metaDescriptionController, + hintText: "metaDescription".translate(context), + minLine: 5, + maxLine: 100, + ), + height(10), + AdaptiveImagePickerWidget( + isRequired: true, + title: UiUtils.translate(context, "addMetaImage"), + multiImage: false, + value: project != null ? UrlValue(project!.metaImage!) : null, + allowedSizeBytes: 307200, + onSelect: (ImagePickerValue? selected) { + if (selected is FileValue || selected == null) { + metaImage = selected; + setState(() {}); + } + }, + ), + ], + ), + ), + ), + ), + ); + } + + Widget height([double? h]) { + return SizedBox( + height: (h)?.rh(context) ?? 15.rh(context), + ); + } +} diff --git a/lib/Ui/screens/project/create/manage_floor_plans.dart b/lib/Ui/screens/project/create/manage_floor_plans.dart new file mode 100644 index 0000000..5bc5cc3 --- /dev/null +++ b/lib/Ui/screens/project/create/manage_floor_plans.dart @@ -0,0 +1,272 @@ +import 'package:ebroker/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import 'package:ebroker/Ui/screens/widgets/custom_text_form_field.dart'; +import 'package:ebroker/utils/CloudState/cloud_state.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; + +import '../../widgets/adaptive_image_picker.dart'; + +class ManageFloorPlansScreen extends StatefulWidget { + final List? floorPlans; + + static route(RouteSettings settings) { + Map? arguments = settings.arguments as Map?; + return BlurredRouter( + builder: (context) { + return ManageFloorPlansScreen( + floorPlans: arguments?['floorPlan'], + ); + }, + ); + } + + const ManageFloorPlansScreen({super.key, required this.floorPlans}); + + @override + CloudState createState() => + _ManageFloorPlansScreenState(); +} + +class _ManageFloorPlansScreenState extends CloudState { + List floorPlans = []; + List removePlanId = []; + + final GlobalKey _formKey = GlobalKey(); + @override + void initState() { + if (widget.floorPlans != null) { + widget.floorPlans?.forEach((value) { + FloorPlan floorPlan = FloorPlan( + planKey: value['id'] is int ? ValueKey(value['id']) : value['id'], + key: UniqueKey(), + title: value['title'], + imagePickerValue: value['image'] is String + ? UrlValue(value['image']) + : value['image'], + onClose: (e) { + removeFromListWhere( + listKey: 'floorsList', + whereKey: 'id', + equals: e, + ); + if (e is ValueKey) { + removePlanId.add(e.value); + } + floorPlans.removeWhere((element) => element.planKey == e); + setState(() {}); + }, + ); + floorPlans.add(floorPlan); + }); + setState(() {}); + } else { + FloorPlan floorPlan = FloorPlan( + planKey: GlobalKey(), + key: UniqueKey(), + onClose: (key) { + removeFromGroup('floors', key); + if (key is ValueKey) { + removePlanId.add(key.value); + } + floorPlans.removeWhere((element) => element.planKey == key); + setState(() {}); + }, + ); + floorPlans.add(floorPlan); + } + + super.initState(); + } + + @override + Widget build(BuildContext context) { + return PopScope( + onPopInvoked: (didPop) { + clearGroup('floors'); + }, + child: Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: UiUtils.buildAppBar(context, + showBackButton: true, title: "FloorPlans".translate(context)), + bottomNavigationBar: BottomAppBar( + color: context.color.backgroundColor, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 14.0, vertical: 5), + child: MaterialButton( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10)), + color: context.color.tertiaryColor, + onPressed: () { + List? floors = getCloudData("floorsList") as List?; + + Navigator.pop(context, { + "floorPlans": floors, + "removed": removePlanId, + }); + }, + height: 50, + child: Text("continue".translate(context)) + .color(context.color.secondaryColor), + ), + ), + ), + body: Form( + key: _formKey, + child: SingleChildScrollView( + child: Container( + width: context.screenWidth, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + ...floorPlans, + MaterialButton( + color: context.color.tertiaryColor, + onPressed: () { + if (_formKey.currentState!.validate()) { + FloorPlan floorPlan = FloorPlan( + planKey: GlobalKey(), + key: UniqueKey(), + onClose: (e) { + removeFromListWhere( + listKey: 'floorsList', + whereKey: 'id', + equals: e); + if (e is ValueKey) { + removePlanId.add(e.value); + } + floorPlans + .removeWhere((element) => element.planKey == e); + setState(() {}); + }, + ); + floorPlans.add(floorPlan); + setState(() {}); + } + }, + elevation: 0, + minWidth: context.screenWidth * 0.45, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10)), + child: Text("Add".translate(context)) + .color(context.color.buttonColor), + ) + ], + ), + ), + ), + ), + ), + ); + } +} + +class FloorPlan extends StatefulWidget { + final planKey; + final String? title; + final ImagePickerValue? imagePickerValue; + final Function(Key e) onClose; + + const FloorPlan({ + super.key, + this.title, + required this.planKey, + required this.onClose, + this.imagePickerValue, + }); + + @override + CloudState createState() { + return FloorPlanState(); + } +} + +class FloorPlanState extends CloudState { + ImagePickerValue? imagePickerValue; + + late final TextEditingController floorTitle = + TextEditingController(text: widget.title); + + @override + void initState() { + imagePickerValue = widget.imagePickerValue; + super.initState(); + } + + @override + void dispose() { + floorTitle.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Text("Floor Title".translate(context)), + const Spacer(), + IconButton( + onPressed: () { + widget.onClose.call(widget.planKey); + }, + icon: const Icon(Icons.close)), + ], + ), + const SizedBox( + height: 10, + ), + CustomTextFormField( + controller: floorTitle, + autovalidate: AutovalidateMode.onUserInteraction, + validator: CustomTextFieldValidator.nullCheck, + onChange: (value) { + appendToListWhere( + listKey: "floorsList", + whereKey: "id", + equals: widget.planKey, + add: { + "title": value, + "id": widget.planKey, + "image": imagePickerValue + }); + }, + hintText: "title".translate(context), + ), + const SizedBox(height: 10), + AdaptiveImagePickerWidget( + multiImage: false, + isRequired: true, + value: imagePickerValue, + title: "pickFloorMap".translate(context), + onSelect: (ImagePickerValue? selected) { + if (selected is FileValue) { + imagePickerValue = selected; + } + + // appendToList("floorsList", { + // "title": floorTitle.text, + // "key": widget.key, + // "image": imagePickerValue + // }); + appendToListWhere( + listKey: "floorsList", + whereKey: "id", + equals: widget.planKey, + add: { + "title": floorTitle.text, + "id": widget.planKey, + "image": imagePickerValue + }); + setState(() {}); + }, + ) + ], + ), + ); + } +} diff --git a/lib/Ui/screens/project/view/project_details_screen.dart b/lib/Ui/screens/project/view/project_details_screen.dart new file mode 100644 index 0000000..0aeab57 --- /dev/null +++ b/lib/Ui/screens/project/view/project_details_screen.dart @@ -0,0 +1,853 @@ +import 'dart:async'; +import 'dart:ui'; + +import 'package:dio/dio.dart'; +import 'package:ebroker/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import 'package:ebroker/Ui/screens/widgets/blurred_dialoge_box.dart'; +import 'package:ebroker/data/cubits/project/delete_project_cubit.dart'; +import 'package:ebroker/data/cubits/project/fetchMyProjectsListCubit.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/CloudState/cloud_state.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/helper_utils.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:open_filex/open_filex.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../../../data/helper/widgets.dart'; +import '../../../../data/model/project_model.dart'; +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/VideoPlayer/video_player_widget.dart'; +import '../../../../utils/typedefs.dart'; +import '../../../../utils/ui_utils.dart'; +import '../../proprties/property_details.dart'; +import '../../widgets/gallery_view.dart'; + +class ProjectDetailsScreen extends StatefulWidget { + final ProjectModel project; + static route(RouteSettings settings) { + Map? arguement = settings.arguments as Map?; + return BlurredRouter( + builder: (context) { + return BlocProvider( + create: (context) => DeleteProjectCubit(), + child: ProjectDetailsScreen( + project: arguement?['project'], + ), + ); + }, + ); + } + + const ProjectDetailsScreen({ + super.key, + required this.project, + }); + + @override + CloudState createState() => + _ProjectDetailsScreenState(); +} + +class _ProjectDetailsScreenState extends CloudState { + final Completer _controller = + Completer(); + bool isMyProject = false; + late ProjectModel project; + + late final CameraPosition _kInitialPlace = CameraPosition( + target: LatLng( + double.parse(project.latitude!), + double.parse(project.longitude!), + ), + zoom: 14.4746, + ); + + @override + void initState() { + project = widget.project; + isMyProject = checkIsProjectMine(); + + super.initState(); + } + + bool checkIsProjectMine() { + return project.addedBy.toString() == HiveUtils.getUserId(); + } + + bool hasFloors() { + return project.plans!.isNotEmpty; + } + + bool hasDocuments() { + return project.documents!.isNotEmpty; + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.backgroundColor, + bottomNavigationBar: BottomAppBar( + color: context.color.secondaryColor, + child: bottomNavigation(context), + ), + body: Builder(builder: (context) { + return Padding( + padding: EdgeInsets.zero, + child: BlocListener( + listener: (context, state) { + if (state is DeleteProjectInProgress) { + Widgets.showLoader(context); + } + + if (state is DeleteProjectSuccess) { + Widgets.hideLoder(context); + context.read().delete(state.id); + + Navigator.pop( + context, + ); + } + }, + child: CustomScrollView( + physics: const BouncingScrollPhysics(), + slivers: [ + SliverAppBar( + backgroundColor: context.color.secondaryColor, + leading: Material( + clipBehavior: Clip.antiAlias, + color: Colors.transparent, + type: MaterialType.circle, + child: InkWell( + onTap: () { + Navigator.pop(context); + }, + child: Padding( + padding: const EdgeInsets.all(18.0), + child: UiUtils.getSvg(AppIcons.arrowLeft, + fit: BoxFit.none, + color: context.color.tertiaryColor), + ), + ), + ), + systemOverlayStyle: const SystemUiOverlayStyle( + statusBarColor: Colors.transparent), + expandedHeight: context.screenHeight * 0.45, + // toolbarHeight: 0, + primary: true, + automaticallyImplyLeading: true, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(20), + ), + // forceMaterialTransparency: true, + floating: false, + pinned: true, + + // title: Text("I am title"), + centerTitle: true, + flexibleSpace: FlexibleSpaceBar( + collapseMode: CollapseMode.parallax, + titlePadding: EdgeInsets.zero, + background: ProjectImageCareusel( + images: [ + ...{project.image!}, + ...project.gallaryImages!.map((e) => e.name!) + ], + ), + )), + SliverToBoxAdapter( + child: Padding( + padding: const EdgeInsets.all(14.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + categoryCard(context, project), + const Spacer(), + Text(project.type!.translate(context)) + .bold() + .size(context.font.small), + ], + ), + const SizedBox( + height: 15, + ), + Text(project.title!) + .size(context.font.larger) + .bold(weight: FontWeight.w400), + const SizedBox( + height: 15, + ), + Text(project.description!.trim()).color( + context.color.textColorDark.withOpacity(0.89)), + const SizedBox( + height: 18, + ), + + ContactDetailsWidget( + url: project.customer?.profile ?? "", + number: project.customer!.mobile!, + name: project.customer!.name!, + email: project.customer!.email!), + const SizedBox( + height: 14, + ), + if (project.videoLink != null && + project.videoLink!.isNotEmpty) + VideoPlayerWideget( + padding: const EdgeInsets.symmetric(vertical: 18), + url: project.videoLink!, + ), + if (hasDocuments()) ...[ + Text("Documents".translate(context)) + .size(context.font.large) + .bold(), + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (context, index) { + Document? document = project.documents?[index]; + + return DownloadableDocument( + url: document!.name!, + ); + // return ListTile( + // dense: true, + // title: Text(name).size(context.font.large).color( + // context.color.textColorDark.withOpacity(0.9)), + // trailing: IconButton( + // icon: const Icon(Icons.download), + // onPressed: () {}, + // ), + // ); + }, + itemCount: project.documents?.length ?? 0, + ), + ], + const SizedBox( + height: 15, + ), + if (hasFloors()) ...[ + Text("Floor Plans".translate(context)) + .size(context.font.large) + .bold(), + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: project.plans?.length ?? 0, + itemBuilder: (context, index) { + Plan floor = project.plans![index]; + return CustomExpansionTile( + title: floor.title!, + children: [Image.network(floor.document!)], + ); + }, + ), + const SizedBox( + height: 18, + ), + ], + + // Container( + // width: context.screenWidth, + // height: 210, + // child: YoutubeExplode, + // decoration: BoxDecoration( + // color: context.color.tertiaryColor, + // borderRadius: BorderRadius.circular(10)), + // ), + + Text("projectLocation".translate(context)) + .size(context.font.large) + .bold(), + + const SizedBox( + height: 15, + ), + + Padding( + padding: const EdgeInsets.symmetric(horizontal: 0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Text("locationLbl".translate(context)).bold(), + Text(project.location!) + ], + ), + const SizedBox( + height: 5, + ), + Row( + children: [ + Text("cityProj".translate(context)).bold(), + Text(project.city!) + ], + ), + const SizedBox( + height: 5, + ), + Row( + children: [ + Text("stateProj".translate(context)).bold(), + Text(project.state!) + ], + ), + const SizedBox( + height: 5, + ), + Row( + children: [ + Text("countryProj".translate(context)).bold(), + Text(project.country!) + ], + ), + ], + ), + ), + const SizedBox( + height: 15, + ), + + SizedBox( + height: 175, + child: ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Stack( + fit: StackFit.expand, + children: [ + Image.asset( + "assets/map.png", + fit: BoxFit.cover, + ), + BackdropFilter( + filter: ImageFilter.blur( + sigmaX: 4.0, + sigmaY: 4.0, + ), + child: Center( + child: MaterialButton( + onPressed: () { + Navigator.push(context, BlurredRouter( + builder: (context) { + return Scaffold( + extendBodyBehindAppBar: true, + appBar: AppBar( + elevation: 0, + iconTheme: IconThemeData( + color: context + .color.tertiaryColor), + backgroundColor: + Colors.transparent, + ), + body: GoogleMapScreen( + latitude: double.parse( + project.latitude!), + longitude: double.parse( + project.longitude!), + kInitialPlace: _kInitialPlace, + controller: _controller, + ), + ); + }, + )); + }, + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(5)), + color: context.color.tertiaryColor, + elevation: 0, + child: + Text(("viewMap".translate(context))) + .color( + context.color.buttonColor, + ), + ), + ), + ), + ], + ), + ), + ), + const SizedBox( + height: 40, + ) + ], + ), + ), + ) + ], + ), + ), + ); + }), + ); + } + + Widget bottomNavigation(BuildContext context) { + if (isMyProject) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: SizedBox( + height: 65.rh(context), + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 0), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Expanded( + child: UiUtils.buildButton(context, + // padding: const EdgeInsets.symmetric(horizontal: 1), + outerPadding: const EdgeInsets.all(1), onPressed: () { + Navigator.pushNamed(context, Routes.addProjectDetails, + arguments: { + "id": project.id, + "category_id": project.category!.id!, + "project": project.toMap(), + }); + }, + fontSize: context.font.normal, + width: context.screenWidth / 3, + prefixWidget: Padding( + padding: const EdgeInsets.only(right: 6.0), + child: SvgPicture.asset(AppIcons.edit), + ), + buttonTitle: UiUtils.translate(context, "edit")), + ), + const SizedBox( + width: 8, + ), + Expanded( + child: UiUtils.buildButton(context, + padding: const EdgeInsets.symmetric(horizontal: 1), + outerPadding: const EdgeInsets.all(1), + prefixWidget: Padding( + padding: const EdgeInsets.only(right: 6.0), + child: SvgPicture.asset( + AppIcons.delete, + color: context.color.buttonColor, + width: 14, + height: 14, + ), + ), onPressed: () async { + UiUtils.showBlurredDialoge(context, + dialoge: BlurredDialogBox( + title: "areYouSure".translate(context), + onAccept: () async { + context + .read() + .delete(project.id!); + }, + content: Text( + "projectWillNotRecover".translate(context)))); + }, + fontSize: context.font.normal, + width: context.screenWidth / 3.2, + buttonTitle: UiUtils.translate(context, "deleteBtnLbl")), + ), + ], + ), + ), + ), + ); + } + return const SizedBox.shrink(); + } +} + +Widget categoryCard(BuildContext context, ProjectModel project) { + return Container( + decoration: BoxDecoration( + // color: context.color.tertiaryColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(5)), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + decoration: BoxDecoration(borderRadius: BorderRadius.circular(5)), + height: 35, + child: SvgPicture.network(project.category!.image!), + ), + const SizedBox( + width: 3, + ), + Text(project.category!.category!).size(context.font.large) + ], + ), + ); +} + +class ProjectImageCareusel extends StatefulWidget { + final List images; + const ProjectImageCareusel({ + super.key, + required this.images, + }); + + @override + State createState() => _ProjectImageCareuselState(); +} + +class _ProjectImageCareuselState extends State + with AutomaticKeepAliveClientMixin { + final ValueNotifier _sliderIndex = ValueNotifier(0); + final PageController _pageController = PageController( + initialPage: 0, + ); + late Timer _timer; + @override + void initState() { + _timer = Timer.periodic(const Duration(seconds: 5), (timer) { + if (_sliderIndex.value < widget.images.length - 1) { + _sliderIndex.value++; + } else { + _sliderIndex.value = 0; + } + if (_pageController.hasClients) { + _pageController.animateToPage( + _sliderIndex.value, + duration: const Duration(milliseconds: 1000), + curve: Curves.easeIn, + ); + } + }); + super.initState(); + } + + @override + void dispose() { + _sliderIndex.dispose(); + _timer.cancel(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + super.build(context); + return Stack( + children: [ + PageView.builder( + itemCount: widget.images.length, + controller: _pageController, + clipBehavior: Clip.antiAlias, + physics: const BouncingScrollPhysics( + decelerationRate: ScrollDecelerationRate.fast, + ), + onPageChanged: (index) { + _sliderIndex.value = index; + }, + itemBuilder: (context, index) { + List images = widget.images; + return GestureDetector( + onTap: () { + Navigator.push( + context, + BlurredRouter( + builder: (context) => GalleryViewWidget( + images: images, + initalIndex: index, + ), + )); + }, + child: ProjectCateuseItem( + url: widget.images[index], + ), + ); + }), + Align( + alignment: Alignment.bottomCenter.add(const Alignment(0, -0.05)), + child: ValueListenableBuilder( + valueListenable: _sliderIndex, + builder: (context, val, ch) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ...List.generate( + widget.images.length, + (index) => Container( + width: 7, + margin: const EdgeInsets.symmetric(horizontal: 1), + height: 7, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: index == val + ? context.color.tertiaryColor + : Colors.white, + ), + )), + ], + ); + }), + ), + ], + ); + } + + @override + bool get wantKeepAlive => true; +} + +class ProjectCateuseItem extends StatelessWidget { + final String url; + + const ProjectCateuseItem({ + super.key, + required this.url, + }); + + @override + Widget build(BuildContext context) { + return Stack( + fit: StackFit.expand, + children: [ + Image.network( + url, + fit: BoxFit.cover, + ), + BackdropFilter( + filter: ImageFilter.blur(sigmaY: 8, sigmaX: 8), + child: Container( + color: Colors.black.withOpacity(0.2), + ), + ), + Image.network( + url, + fit: BoxFit.cover, + ), + ], + ); + } +} + +class CustomExpansionTile extends StatefulWidget { + final String title; + final Widgetss children; + const CustomExpansionTile({ + super.key, + required this.title, + required this.children, + }); + + @override + State createState() => _CustomExpansionTileState(); +} + +class _CustomExpansionTileState extends State { + bool isExpanded = false; + @override + Widget build(BuildContext context) { + return ExpansionTile( + title: Text(widget.title) + .size(context.font.large) + .color(context.color.textColorDark.withOpacity(0.9)), + // dense: true, + collapsedTextColor: context.color.textColorDark, + textColor: context.color.textColorDark, + iconColor: context.color.tertiaryColor, + collapsedIconColor: context.color.tertiaryColor, + trailing: AnimatedCrossFade( + firstChild: const Icon(Icons.add), + secondChild: const Icon(Icons.remove), + duration: const Duration(milliseconds: 250), + crossFadeState: + isExpanded ? CrossFadeState.showSecond : CrossFadeState.showFirst, + ), + onExpansionChanged: (value) { + isExpanded = value; + setState(() {}); + }, + controlAffinity: ListTileControlAffinity.trailing, + children: widget.children, + ); + } +} + +class ContactDetailsWidget extends StatelessWidget { + final String url; + final String name; + final String email; + final String number; + + const ContactDetailsWidget( + {super.key, + required this.url, + required this.name, + required this.email, + required this.number}); + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("contactUS".translate(context)).size(context.font.large).bold(), + SizedBox( + height: 15, + ), + Row( + children: [ + GestureDetector( + onTap: () { + UiUtils.showFullScreenImage(context, + provider: NetworkImage(url)); + }, + child: Container( + width: 70, + height: 70, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + color: Colors.grey.shade200, + borderRadius: BorderRadius.circular(10)), + child: UiUtils.getImage(url, fit: BoxFit.cover) + + // CachedNetworkImage( + // imageUrl: widget.propertyData?.customerProfile ?? "", + // fit: BoxFit.cover, + // ), + + ), + ), + const SizedBox( + width: 10, + ), + Expanded( + flex: 5, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(name) + .size(context.font.large) + .bold() + .setMaxLines(lines: 1), + Text(email).setMaxLines(lines: 1), + ], + ), + ), + Expanded( + flex: 3, + child: Container( + // color: Colors.red, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + IconButton( + onPressed: () async { + await launchUrl(Uri.parse("tel:+$number")); + }, + icon: Icon( + Icons.call, + color: context.color.tertiaryColor, + )), + IconButton( + onPressed: () async { + await launchUrl(Uri.parse("mailto:$email")); + }, + icon: Icon( + Icons.email, + color: context.color.tertiaryColor, + )), + ], + ), + ), + ), + ], + ), + ], + ); + } +} + +class DownloadableDocument extends StatefulWidget { + final String url; + const DownloadableDocument({super.key, required this.url}); + + @override + State createState() => _DownloadableDocumentState(); +} + +class _DownloadableDocumentState extends State { + bool downloaded = false; + Dio dio = Dio(); + ValueNotifier percentage = ValueNotifier(0); + + @override + void initState() { + super.initState(); + } + + Future? path() async { + String? downloadPath = await HelperUtils.getDownloadPath(); + return downloadPath; + } + + @override + Widget build(BuildContext context) { + String name = widget.url.split("/").last; + return ListTile( + dense: true, + title: Text(name) + .size(context.font.large) + .color(context.color.textColorDark.withOpacity(0.9)), + trailing: ValueListenableBuilder( + valueListenable: percentage, + builder: (context, value, child) { + if (value != 0.0 && value != 1.0) { + return SizedBox( + height: 24, + width: 24, + child: CircularProgressIndicator( + value: value, + color: context.color.tertiaryColor, + ), + ); + } + if (downloaded) { + return IconButton( + padding: EdgeInsets.zero, + alignment: Alignment.centerRight, + splashRadius: 1, + icon: const Icon(Icons.file_open), + onPressed: () async { + String? downloadPath = await path(); + + await OpenFilex.open("$downloadPath/$name"); + }); + } + return IconButton( + padding: EdgeInsets.zero, + alignment: Alignment.centerRight, + splashRadius: 1, + icon: const Icon(Icons.download), + onPressed: () async { + String? downloadPath = await path(); + bool storagePermission = + await HelperUtils.hasStoragePermissionGiven(); + if (storagePermission) { + await dio.download( + widget.url, + "$downloadPath/$name", + onReceiveProgress: (count, total) async { + percentage.value = count / total; + if (percentage.value == 1.0) { + downloaded = true; + setState(() {}); + await OpenFilex.open("$downloadPath/$name"); + } + }, + ); + } else { + HelperUtils.showSnackBarMessage( + context, "Storage Permission denied!"); + } + }, + ); + }), + ); + } +} diff --git a/lib/Ui/screens/project/view/project_list_screen.dart b/lib/Ui/screens/project/view/project_list_screen.dart new file mode 100644 index 0000000..b4d12db --- /dev/null +++ b/lib/Ui/screens/project/view/project_list_screen.dart @@ -0,0 +1,221 @@ +import 'dart:developer'; + +import 'package:ebroker/Ui/screens/widgets/Erros/no_data_found.dart'; +import 'package:ebroker/Ui/screens/widgets/Erros/something_went_wrong.dart'; +import 'package:ebroker/data/cubits/project/fetchMyProjectsListCubit.dart'; +import 'package:ebroker/data/model/project_model.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +import '../../../../utils/ui_utils.dart'; +import '../../home/Widgets/project_card_horizontal.dart'; +import '../../widgets/AnimatedRoutes/blur_page_route.dart'; + +class ProjectListScreen extends StatefulWidget { + const ProjectListScreen({super.key}); + + static Route route(RouteSettings settings) { + return BlurredRouter( + builder: (context) { + return const ProjectListScreen(); + }, + ); + } + + @override + State createState() => _ProjectListScreenState(); +} + +class _ProjectListScreenState extends State { + final ScrollController _scrollController = ScrollController(); + + @override + void initState() { + context.read().fetch(); + + _scrollController.addListener(() { + if (_scrollController.isEndReached()) { + if (context.read().hasMore()) { + context.read().fetchMore(); + } + } + }); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: UiUtils.buildAppBar(context, + showBackButton: true, + title: UiUtils.translate(context, "myProjects")), + body: BlocBuilder( + builder: (context, state) { + if (state is FetchMyProjectsListInProgress) { + return Center(child: UiUtils.progress()); + } + if (state is FetchMyProjectsListFail) { + log(state.error.toString(), name: "project fetch errori s"); + return const SomethingWentWrong(); + } + if (state is FetchMyProjectsListSuccess) { + if (state.projects.isEmpty) { + return const NoDataFound(); + } + return Column( + mainAxisSize: MainAxisSize.max, + children: [ + ListView.builder( + shrinkWrap: true, + controller: _scrollController, + itemCount: state.projects.length, + padding: const EdgeInsets.all(14), + itemBuilder: (context, index) { + ProjectModel project = state.projects[index]; + + return ProjectHorizontalCard( + project: project, + ); + }, + ), + if (state.isLoadingMore) UiUtils.progress(), + ], + ); + // return ProjectCard(title: "Hello",categoryIcon: ,); + } + if (state is FetchMyProjectsListFail) { + return Center( + child: Text(state.error.toString()), + ); + } + + return Container(); + }, + ), + ); + } +} + +class ProjectCard extends StatelessWidget { + final String url; + final String title; + final String description; + final String categoryIcon; + final String categoryName; + + final String status; + const ProjectCard({ + super.key, + required this.categoryName, + required this.url, + required this.title, + required this.description, + required this.categoryIcon, + required this.status, + }); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 0), + child: SizedBox( + width: context.screenWidth * 0.9, + height: 220, + child: LayoutBuilder(builder: (context, c) { + return Stack(children: [ + Positioned( + top: 0, + left: 0, + child: Container( + width: c.maxWidth, + height: c.maxHeight, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(18), + image: DecorationImage( + image: NetworkImage(url), fit: BoxFit.fitWidth), + ))), + Positioned( + top: 0, + left: 0, + child: Container( + width: c.maxWidth, + height: c.maxHeight, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(18), + gradient: LinearGradient( + begin: Alignment.bottomLeft, + end: Alignment.topRight, + colors: [ + Colors.black.withOpacity(0.8), + Colors.black.withOpacity(0.1) + ]), + ))), + PositionedDirectional( + bottom: 10, + start: 14, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + textAlign: TextAlign.left, + ) + .size(context.font.larger + 2) + .color(context.color.buttonColor) + .setMaxLines(lines: 1), + Text( + description, + textAlign: TextAlign.left, + ) + .size(context.font.small + 1) + .color(context.color.buttonColor) + .setMaxLines(lines: 1), + ], + ), + ), + Positioned( + top: 9, + left: 14, + child: Row( + children: [ + SvgPicture.network( + categoryIcon, + color: context.color.tertiaryColor.brighten(20), + width: 18, + height: 18, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: Text( + categoryName, + textAlign: TextAlign.left, + ).size(13).color(context.color.buttonColor), + ), + ], + )), + Positioned( + top: 12, + right: 14, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(6), + color: context.color.buttonColor.withOpacity(0.8), + ), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 4, horizontal: 7), + child: Text( + status, + textAlign: TextAlign.left, + ) + .size(context.font.smaller) + .color(context.color.blackColor), + ), + )), + ]); + })), + ); + } +} diff --git a/lib/Ui/screens/proprties/AddProperyScreens/add_property_details.dart b/lib/Ui/screens/proprties/AddProperyScreens/add_property_details.dart new file mode 100644 index 0000000..5e3e215 --- /dev/null +++ b/lib/Ui/screens/proprties/AddProperyScreens/add_property_details.dart @@ -0,0 +1,1409 @@ +import 'dart:io'; + +import 'package:dotted_border/dotted_border.dart'; +import 'package:ebroker/Ui/screens/widgets/adaptive_image_picker.dart'; +import 'package:ebroker/utils/hive_keys.dart'; +import 'package:ebroker/utils/string_extenstion.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:geocoding/geocoding.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:hive/hive.dart'; + +import '../../../../app/routes.dart'; +import '../../../../data/model/category.dart'; +import '../../../../data/model/property_model.dart'; +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/Extensions/extensions.dart'; +import '../../../../utils/constant.dart'; +import '../../../../utils/helper_utils.dart'; +import '../../../../utils/hive_utils.dart'; +import '../../../../utils/imagePicker.dart'; +import '../../../../utils/responsiveSize.dart'; +import '../../../../utils/ui_utils.dart'; +import '../../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../../widgets/blurred_dialoge_box.dart'; +import '../../widgets/custom_text_form_field.dart'; +import '../../widgets/panaroma_image_view.dart'; + +class AddPropertyDetails extends StatefulWidget { + final Map? propertyDetails; + + const AddPropertyDetails({super.key, this.propertyDetails}); + + static Route route(RouteSettings routeSettings) { + Map? arguments = routeSettings.arguments as Map?; + return BlurredRouter( + builder: (context) { + return AddPropertyDetails( + propertyDetails: arguments?['details'], + ); + }, + ); + } + + @override + State createState() => _AddPropertyDetailsState(); +} + +class _AddPropertyDetailsState extends State { + final GlobalKey _formKey = GlobalKey(); + + late final TextEditingController _propertyNameController = + TextEditingController(text: widget.propertyDetails?['name']); + late final TextEditingController _descriptionController = + TextEditingController(text: widget.propertyDetails?['desc']); + late final TextEditingController _cityNameController = + TextEditingController(text: widget.propertyDetails?['city']); + late final TextEditingController _stateNameController = + TextEditingController(text: widget.propertyDetails?['state']); + late final TextEditingController _countryNameController = + TextEditingController(text: widget.propertyDetails?['country']); + late final TextEditingController _latitudeController = + TextEditingController(text: widget.propertyDetails?['latitude']); + late final TextEditingController _longitudeController = + TextEditingController(text: widget.propertyDetails?['longitude']); + late final TextEditingController _addressController = + TextEditingController(text: widget.propertyDetails?['address']); + late final TextEditingController _priceController = + TextEditingController(text: widget.propertyDetails?['price']); + late final TextEditingController _clientAddressController = + TextEditingController(text: widget.propertyDetails?['client']); + + late final TextEditingController _videoLinkController = + TextEditingController(); + + bool isPrivateProperty = false; + + ///META DETAILS + late final TextEditingController metaTitleController = + TextEditingController(); + late final TextEditingController metaDescriptionController = + TextEditingController(); + late final TextEditingController metaKeywordController = + TextEditingController(); + + /// + Map propertyData = {}; + final PickImage _pickTitleImage = PickImage(); + final PickImage _propertiesImagePicker = PickImage(); + final PickImage _pick360deg = PickImage(); + final PickImage _pickMetaTitle = PickImage(); + List editPropertyImageList = []; + String titleImageURL = ""; + String metaImageUrl = ""; + String selectedRentType = "Monthly"; + List removedImageId = []; + int propertyType = 0; + + List mixedPropertyImageList = []; + + @override + void initState() { + titleImageURL = widget.propertyDetails?['titleImage'] ?? ""; + metaImageUrl = widget.propertyDetails?['allPropData']['meta_image'] ?? ""; + mixedPropertyImageList = + List.from(widget.propertyDetails?['images'] ?? []); + if ((widget.propertyDetails != null)) { + selectedRentType = widget.propertyDetails?['rentduration'] ?? "Monthly"; + isPrivateProperty = + widget.propertyDetails?['allPropData']?['is_premium'] ?? false; + } + + metaTitleController.text = + widget.propertyDetails?['allPropData']['meta_title'] ?? ""; + metaDescriptionController.text = + widget.propertyDetails?['allPropData']['meta_description'] ?? ""; + metaKeywordController.text = + widget.propertyDetails?['allPropData']['meta_keywords'] ?? ""; + _propertiesImagePicker.listener((images) { + try { + mixedPropertyImageList.addAll(List.from(images)); + } catch (e) {} + + setState(() {}); + }); + + _pickMetaTitle.listener((p0) { + metaImageUrl = ""; + if (mounted) setState(() {}); + }); + _pickTitleImage.listener((p0) { + titleImageURL = ""; + if (mounted) setState(() {}); + }); + super.initState(); + } + + void _onTapChooseLocation(FormFieldState state) async { + FocusManager.instance.primaryFocus?.unfocus(); + print("object ${widget.propertyDetails?['latitude']}"); + // return; + Map? placeMark = await Navigator.pushNamed( + context, Routes.chooseLocaitonMap, + arguments: { + "latitude": widget.propertyDetails?['latitude'] != null + ? double.parse(widget.propertyDetails?['latitude']) + : Hive.box(HiveKeys.userDetailsBox) + .get("latitude") + .toString() + .toDouble(), + "longitude": widget.propertyDetails?['longitude'] != null + ? double.parse(widget.propertyDetails?['longitude']) + : Hive.box(HiveKeys.userDetailsBox) + .get("longitude") + .toString() + .toDouble() + }) as Map?; + var latlng = placeMark?['latlng'] as LatLng?; + Placemark? place = placeMark?['place'] as Placemark?; + if (latlng != null && place != null) { + _latitudeController.text = latlng.latitude.toString(); + _longitudeController.text = latlng.longitude.toString(); + _cityNameController.text = place.locality ?? ""; + _countryNameController.text = place.country ?? ""; + _stateNameController.text = place.administrativeArea ?? ""; + _addressController.text = ""; + _addressController.text = getAddress(place); + + state.didChange(true); + } else { + // state.didChange(false); + } + } + + String getAddress(Placemark place) { + try { + String address = ""; + if (place.street == null && place.subLocality != null) { + address = place.subLocality!; + } else if (place.street == null && place.subLocality == null) { + address = ""; + } else { + address = "${place.street ?? ""},${place.subLocality ?? ""}"; + } + + return address; + } catch (e, st) { + throw Exception("$st"); + } + } + + void _onTapContinue() async { + File? titleImage; + File? v360Image; + File? metaTitle; + + if (_pickTitleImage.pickedFile != null) { + // final mimeType = lookupMimeType(_pickTitleImage.pickedFile!.path); + // var extension = mimeType!.split("/"); + + titleImage = _pickTitleImage.pickedFile; + } + + if (_pick360deg.pickedFile != null) { + // final mimeType = lookupMimeType(_pick360deg.pickedFile!.path); + // var extension = mimeType!.split("/"); + + v360Image = _pick360deg.pickedFile; + } + + if (_pickMetaTitle.pickedFile != null) { + metaTitle = _pickMetaTitle.pickedFile; + } + + var kb = formatFileSize(metaTitle?.lengthSync() ?? 0).kb; + + if (_formKey.currentState!.validate()) { + _formKey.currentState?.save(); + bool check = _checkIfLocationIsChosen(); + if (check == false) { + Future.delayed(Duration.zero, () { + UiUtils.showBlurredDialoge( + context, + sigmaX: 5, + sigmaY: 5, + dialoge: BlurredDialogBox( + svgImagePath: AppIcons.warning, + title: UiUtils.translate(context, "incomplete"), + showCancleButton: false, + onAccept: () async {}, + acceptTextColor: context.color.buttonColor, + content: Text( + UiUtils.translate(context, "addressError"), + ), + ), + ); + }); + + return; + } else if (titleImage == null && titleImageURL == "") { + Future.delayed(Duration.zero, () { + UiUtils.showBlurredDialoge(context, + sigmaX: 5, + sigmaY: 5, + dialoge: BlurredDialogBox( + svgImagePath: AppIcons.warning, + title: UiUtils.translate(context, "incomplete"), + showCancleButton: false, + acceptTextColor: context.color.buttonColor, + onAccept: () async { + // Navigator.pop(context); + }, + content: Text( + UiUtils.translate(context, "uploadImgMsgLbl"), + ), + )); + }); + return; + } else if (metaTitle == null && metaImageUrl == "") { + Future.delayed(Duration.zero, () { + UiUtils.showBlurredDialoge(context, + sigmaX: 5, + sigmaY: 5, + dialoge: BlurredDialogBox( + svgImagePath: AppIcons.warning, + title: UiUtils.translate(context, "incomplete"), + showCancleButton: false, + acceptTextColor: context.color.buttonColor, + onAccept: () async { + // Navigator.pop(context); + }, + content: Text( + "uploadMetaTitleImage".translate(context), + ), + )); + }); + return; + } + if (metaImageUrl == "" && kb > 300) { + HelperUtils.showSnackBarMessage( + context, "Meta image must be lower than 300KB in size"); + + return; + } + + var list = mixedPropertyImageList.map((e) { + if (e is File) { + return e; + } + }).toList() + ..removeWhere((element) => element == null); + + // return; + + propertyData.addAll({ + "title": _propertyNameController.text, + "description": _descriptionController.text, + "city": _cityNameController.text, + "state": _stateNameController.text, + "country": _countryNameController.text, + "latitude": _latitudeController.text, + "longitude": _longitudeController.text, + "address": _addressController.text, + "client_address": _clientAddressController.text, + "price": _priceController.text, + "title_image": titleImage, + "gallery_images": list, + "remove_gallery_images": removedImageId, + // "category_id": 1, + "category_id": widget.propertyDetails == null + ? (Constant.addProperty['category'] as Category).id + : widget.propertyDetails?['catId'], + // "property_type": 1, + "property_type": widget.propertyDetails == null + ? propertyType + : widget.propertyDetails?['propType'], + "threeD_image": v360Image, + "video_link": _videoLinkController.text, + "meta_image": metaTitle, + if ((widget.propertyDetails == null + ? propertyType + : widget.propertyDetails?['propType']) == + 1) + "rentduration": selectedRentType, + "meta_title": metaTitleController.text, + "meta_description": metaDescriptionController.text, + "meta_keywords": metaKeywordController.text, + "is_premium": isPrivateProperty + }); + + if (widget.propertyDetails?.containsKey("assign_facilities") ?? false) { + propertyData["assign_facilities"] = + widget.propertyDetails!['assign_facilities']; + } + if (widget.propertyDetails != null) { + propertyData['id'] = widget.propertyDetails?['id']; + propertyData['action_type'] = "0"; + } + + Future.delayed( + Duration.zero, + () { + _pickTitleImage.pauseSubscription(); + _pickMetaTitle.pauseSubscription(); + Navigator.pushNamed( + context, + Routes.setPropertyParametersScreen, + arguments: { + "details": propertyData, + "isUpdate": (widget.propertyDetails != null) + }, + ).then((value) { + _pickMetaTitle.resumeSubscription(); + _pickTitleImage.resumeSubscription(); + }); + }, + ); + } + } + + bool _checkIfLocationIsChosen() { + if (_cityNameController.text == "" || + _stateNameController.text == "" || + _countryNameController.text == "" || + _latitudeController.text == "" || + _longitudeController.text == "") { + return false; + } + return true; + } + + @override + void dispose() { + _pickMetaTitle.dispose(); + _propertyNameController.dispose(); + _descriptionController.dispose(); + _cityNameController.dispose(); + _stateNameController.dispose(); + _countryNameController.dispose(); + _latitudeController.dispose(); + _longitudeController.dispose(); + _addressController.dispose(); + _priceController.dispose(); + _clientAddressController.dispose(); + _videoLinkController.dispose(); + _pick360deg.dispose(); + _pickTitleImage.dispose(); + _propertiesImagePicker.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.primaryColor, + bottomNavigationBar: Container( + color: Colors.transparent, + child: Padding( + padding: const EdgeInsets.fromLTRB(20, 0, 20, 20), + child: UiUtils.buildButton(context, + onPressed: _onTapContinue, + height: 48.rh(context), + fontSize: context.font.large, + buttonTitle: UiUtils.translate(context, "next")), + ), + ), + appBar: UiUtils.buildAppBar( + context, + title: widget.propertyDetails == null + ? UiUtils.translate(context, "ddPropertyLbl") + : UiUtils.translate(context, "updateProperty"), + actions: const [ + Text("2/4"), + SizedBox( + width: 14, + ), + ], + showBackButton: true, + ), + body: Form( + key: _formKey, + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag, + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("propertyType".translate(context)), + SizedBox( + height: 15.rh(context), + ), + buildPropertyTypeSelector(context), + SizedBox( + height: 15.rh(context), + ), + Text(UiUtils.translate(context, "propertyNameLbl")), + SizedBox( + height: 15.rh(context), + ), + CustomTextFormField( + controller: _propertyNameController, + validator: CustomTextFieldValidator.nullCheck, + action: TextInputAction.next, + hintText: UiUtils.translate(context, "propertyNameLbl"), + ), + SizedBox( + height: 15.rh(context), + ), + Text(UiUtils.translate(context, "descriptionLbl")), + SizedBox( + height: 15.rh(context), + ), + CustomTextFormField( + action: TextInputAction.next, + controller: _descriptionController, + validator: CustomTextFieldValidator.nullCheck, + hintText: UiUtils.translate(context, "writeSomething"), + maxLine: 100, + minLine: 6, + ), + SizedBox( + height: 15.rh(context), + ), + Row( + children: [ + const Text("Is Private Property?"), + const Spacer(), + CupertinoSwitch( + value: isPrivateProperty, + activeColor: context.color.tertiaryColor, + onChanged: (bool value) { + isPrivateProperty = value; + setState(() {}); + }, + ), + ], + ), + SizedBox( + height: 15.rh(context), + ), + SizedBox( + height: 35.rh(context), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + flex: 3, + child: + Text(UiUtils.translate(context, "addressLbl"))), + // const Spacer(), + Expanded( + flex: 3, + child: ChooseLocationFormField( + initialValue: false, + validator: (bool? value) { + //Check if it has already data so we will not validate it. + if ((widget.propertyDetails != null)) { + return null; + } + + if (value == true) { + return null; + } else { + return "Select location"; + } + }, + build: (state) { + return Container( + decoration: BoxDecoration( + // color: context.color.teritoryColor, + border: Border.all( + width: 1.5, + color: state.hasError + ? Colors.red + : Colors.transparent), + borderRadius: BorderRadius.circular(9)), + child: MaterialButton( + height: 30, + onPressed: () { + _onTapChooseLocation.call(state); + }, + child: FittedBox( + fit: BoxFit.fitWidth, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + UiUtils.getSvg(AppIcons.location, + color: + context.color.textLightColor), + const SizedBox( + width: 3, + ), + Text( + UiUtils.translate( + context, "chooseLocation"), + ) + .size(context.font.normal) + .color(context.color.tertiaryColor) + .underline(), + ], + ), + )), + ); + }, + ), + ) + ], + ), + ), + SizedBox( + height: 15.rh(context), + ), + CustomTextFormField( + action: TextInputAction.next, + controller: _cityNameController, + isReadOnly: false, + validator: CustomTextFieldValidator.nullCheck, + hintText: UiUtils.translate(context, "city"), + ), + SizedBox( + height: 10.rh(context), + ), + CustomTextFormField( + action: TextInputAction.next, + controller: _stateNameController, + isReadOnly: false, + validator: CustomTextFieldValidator.nullCheck, + hintText: UiUtils.translate(context, "state"), + ), + SizedBox( + height: 10.rh(context), + ), + CustomTextFormField( + action: TextInputAction.next, + controller: _countryNameController, + isReadOnly: false, + validator: CustomTextFieldValidator.nullCheck, + hintText: UiUtils.translate(context, "country"), + ), + SizedBox( + height: 10.rh(context), + ), + CustomTextFormField( + action: TextInputAction.next, + controller: _addressController, + hintText: UiUtils.translate(context, "addressLbl"), + maxLine: 100, + validator: CustomTextFieldValidator.nullCheck, + minLine: 4, + ), + SizedBox( + height: 10.rh(context), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + _clientAddressController.clear(); + _clientAddressController.text = + HiveUtils.getUserDetails().address ?? ""; + }, + style: ButtonStyle( + overlayColor: MaterialStatePropertyAll( + context.color.tertiaryColor.withOpacity(0.3))), + child: Text("useYourLocation".translate(context)) + .underline() + .color(context.color.tertiaryColor)), + CustomTextFormField( + action: TextInputAction.next, + controller: _clientAddressController, + validator: CustomTextFieldValidator.nullCheck, + hintText: UiUtils.translate(context, "clientaddressLbl"), + maxLine: 100, + minLine: 4, + ), + ], + ), + SizedBox( + height: 10.rh(context), + ), + if ((widget.propertyDetails == null + ? propertyType + : widget.propertyDetails?['propType']) == + 1) ...[ + Text(UiUtils.translate(context, "rentPrice")), + ] else ...[ + Text(UiUtils.translate(context, "price")), + ], + SizedBox( + height: 10.rh(context), + ), + Row( + children: [ + Expanded( + child: CustomTextFormField( + action: TextInputAction.next, + prefix: Text("${Constant.currencySymbol} "), + controller: _priceController, + formaters: [ + FilteringTextInputFormatter.allow( + RegExp(r'^\d+\.?\d*')), + ], + isReadOnly: false, + keyboard: TextInputType.number, + validator: CustomTextFieldValidator.nullCheck, + hintText: "00", + ), + ), + if ((widget.propertyDetails == null + ? propertyType + : widget.propertyDetails?['propType']) == + 1) ...[ + const SizedBox( + width: 5, + ), + Container( + decoration: BoxDecoration( + color: context.color.secondaryColor, + border: Border.all( + color: context.color.borderColor, width: 1.5), + borderRadius: BorderRadius.circular(10)), + child: Padding( + padding: const EdgeInsets.all(7.0), + child: DropdownButton( + value: selectedRentType, + dropdownColor: context.color.primaryColor, + underline: const SizedBox.shrink(), + items: [ + DropdownMenuItem( + value: "Daily", + child: Text( + "Daily".translate(context), + ), + ), + DropdownMenuItem( + value: "Monthly", + child: Text("Monthly".translate(context)), + ), + DropdownMenuItem( + value: "Quarterly", + child: Text("Quarterly".translate(context)), + ), + DropdownMenuItem( + value: "Yearly", + child: Text("Yearly".translate(context)), + ), + ], + onChanged: (value) { + selectedRentType = value ?? ""; + setState(() {}); + }, + ), + ), + ), + ] + ], + ), + SizedBox( + height: 10.rh(context), + ), + Row( + children: [ + Text(UiUtils.translate(context, "uploadPictures")), + const SizedBox( + width: 3, + ), + Text("maxSize".translate(context)) + .italic() + .size(context.font.small), + ], + ), + SizedBox( + height: 10.rh(context), + ), + Wrap( + children: [ + if (_pickTitleImage.pickedFile != null) ...[] else ...[], + titleImageListener(), + ], + ), + SizedBox( + height: 10.rh(context), + ), + Text(UiUtils.translate(context, "otherPictures")), + SizedBox( + height: 10.rh(context), + ), + SizedBox( + height: 10.rh(context), + ), + propertyImagesListener(), + SizedBox( + height: 10.rh(context), + ), + Text(UiUtils.translate(context, "additionals")), + SizedBox( + height: 10.rh(context), + ), + CustomTextFormField( + // prefix: Text("${Constant.currencySymbol} "), + controller: _videoLinkController, + // isReadOnly: widget.properyDetails != null, + hintText: "http://example.com/video.mp4", + ), + SizedBox( + height: 10.rh(context), + ), + DottedBorder( + color: context.color.textLightColor, + borderType: BorderType.RRect, + radius: const Radius.circular(12), + child: GestureDetector( + onTap: () { + _pick360deg.pick(pickMultiple: false); + }, + child: Container( + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10)), + alignment: Alignment.center, + height: 48.rh(context), + child: + Text(UiUtils.translate(context, "add360degPicture")), + ), + ), + ), + _pick360deg.listenChangesInUI((context, image) { + if (image != null) { + return Stack( + children: [ + Container( + width: 100, + height: 100, + margin: const EdgeInsets.all(5), + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10)), + child: Image.file( + image, + fit: BoxFit.cover, + )), + Positioned.fill( + child: GestureDetector( + onTap: () { + Navigator.push(context, BlurredRouter( + builder: (context) { + return PanaromaImageScreen( + imageUrl: image.path, + isFileImage: true, + ); + }, + )); + }, + child: Container( + width: 100, + margin: const EdgeInsets.all(5), + height: 100, + decoration: BoxDecoration( + color: + context.color.tertiaryColor.withOpacity( + 0.68, + ), + borderRadius: BorderRadius.circular(10)), + child: FittedBox( + fit: BoxFit.none, + child: Container( + decoration: BoxDecoration( + shape: BoxShape.circle, + color: context.color.secondaryColor, + ), + width: 60.rw(context), + height: 60.rh(context), + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + height: 30.rh(context), + width: 40.rw(context), + child: UiUtils.getSvg( + AppIcons.v360Degree, + color: context + .color.textColorDark)), + Text(UiUtils.translate(context, "view")) + .color(context.color.textColorDark) + .size(context.font.small) + .bold() + ], + ), + ), + ), + ), + ), + ), + ), + ], + ); + } + + return Container(); + }), + SizedBox( + height: 15.rh(context), + ), + Text("Meta Details".translate(context)), + SizedBox( + height: 15.rh(context), + ), + CustomTextFormField( + controller: metaTitleController, + validator: CustomTextFieldValidator.nullCheck, + hintText: "Title".translate(context), + ), + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + child: Text("metaTitleLength".translate(context)) + .size(context.font.small - 1.5) + .color(context.color.textLightColor), + ), + SizedBox( + height: 10.rh(context), + ), + CustomTextFormField( + controller: metaDescriptionController, + validator: CustomTextFieldValidator.nullCheck, + hintText: "Description".translate(context), + ), + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + child: Text("metaDescriptionLength".translate(context)) + .size(context.font.small - 1.5) + .color(context.color.textLightColor), + ), + SizedBox( + height: 10.rh(context), + ), + CustomTextFormField( + controller: metaKeywordController, + hintText: "Keywords".translate(context), + validator: CustomTextFieldValidator.nullCheck, + ), + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + child: Text("metaKeywordsLength".translate(context)) + .size(context.font.small - 1.5) + .color(context.color.textLightColor), + ), + SizedBox( + height: 10.rh(context), + ), + DottedBorder( + color: context.color.textLightColor, + borderType: BorderType.RRect, + radius: const Radius.circular(12), + child: GestureDetector( + onTap: () { + _pickMetaTitle.pick(pickMultiple: false); + }, + child: Container( + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10)), + alignment: Alignment.center, + height: 48.rh(context), + child: Text("Meta Image".translate(context)), + ), + ), + ), + Builder(builder: (context) { + Widget currentWidget = Container(); + if (metaImageUrl != "") { + currentWidget = GestureDetector( + onTap: () { + UiUtils.showFullScreenImage(context, + provider: NetworkImage(metaImageUrl)); + }, + child: Container( + width: 100, + height: 100, + margin: const EdgeInsets.all(5), + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10)), + child: Image.network( + metaImageUrl, + fit: BoxFit.cover, + ), + ), + ); + } + if (_pickMetaTitle.pickedFile != null) { + currentWidget = Container( + width: 100, + height: 100, + margin: const EdgeInsets.all(5), + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10)), + child: Image.file( + _pickMetaTitle.pickedFile!, + fit: BoxFit.cover, + )); + } + + return currentWidget; + }), + const SizedBox( + height: 30, + ), + ], + ), + ), + ), + ), + ); + } + + InputDecorator buildPropertyTypeSelector(BuildContext context) { + return InputDecorator( + decoration: InputDecoration( + hintStyle: TextStyle( + color: context.color.textColorDark.withOpacity(0.7), + fontSize: context.font.large), + filled: true, + fillColor: context.color.secondaryColor, + focusedBorder: OutlineInputBorder( + borderSide: + BorderSide(width: 1.5, color: context.color.tertiaryColor), + borderRadius: BorderRadius.circular(10)), + enabledBorder: OutlineInputBorder( + borderSide: + BorderSide(width: 1.5, color: context.color.borderColor), + borderRadius: BorderRadius.circular(10)), + border: OutlineInputBorder( + borderSide: + BorderSide(width: 1.5, color: context.color.borderColor), + borderRadius: BorderRadius.circular(10))), + child: DropdownButton( + value: propertyType, + isExpanded: true, + isDense: true, + borderRadius: BorderRadius.zero, + padding: EdgeInsets.zero, + underline: const SizedBox.shrink(), + items: const [ + DropdownMenuItem( + value: 0, + child: Text("Sell"), + ), + DropdownMenuItem( + value: 1, + child: Text("Rent"), + ) + ], + onTap: () {}, + onChanged: (int? value) { + propertyType = value!; + setState(() {}); + }, + ), + ); + } + + Widget propertyImagesListener() { + return _propertiesImagePicker.listenChangesInUI((context, file) { + Widget current = Container(); + + current = Wrap( + children: mixedPropertyImageList + .map((image) { + return Stack( + children: [ + GestureDetector( + onTap: () { + HelperUtils.unfocus(); + if (image is String) { + UiUtils.showFullScreenImage(context, + provider: NetworkImage(image)); + } else { + UiUtils.showFullScreenImage(context, + provider: FileImage(image)); + } + }, + child: Container( + width: 100, + height: 100, + margin: const EdgeInsets.all(5), + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + ), + child: ImageAdapter( + image: image, + )), + ), + + // Positioned( + // right: 5, + // top: 5, + // child: Container( + // width: 100, + // height: 100, + // margin: const EdgeInsets.all(5), + // clipBehavior: Clip.antiAlias, + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(10)), + // child: Icon(Icons.close)), + // ), + closeButton(context, () { + mixedPropertyImageList.remove(image); + + if (image is String) { + List properyDetail = + widget.propertyDetails?['gallary_with_id'] + as List; + var id = properyDetail + .where((element) => element.imageUrl == image) + .first + .id; + + removedImageId.add(id); + } + setState(() {}); + }), + + // child: GestureDetector( + // onTap: () { + // mixedPropertyImageList.remove(image); + // // removedImageId.add(); + // + // setState(() {}); + // }, + // child: Icon( + // Icons.close, + // color: context.color.secondaryColor, + // ), + // ), + // ) + ], + ); + }) + .toList() + .cast()); + + // if (propertyImageList.isEmpty && editPropertyImageList.isNotEmpty) { + // current = Wrap( + // children: editPropertyImageList + // .map((image) { + // log(image.runtimeType.toString()); + // return Stack( + // children: [ + // GestureDetector( + // onTap: () { + // HelperUtils.unfocus(); + // UiUtils.showFullScreenImage(context, + // provider: FileImage(image)); + // }, + // child: Container( + // width: 100, + // height: 100, + // margin: const EHEHEHEHEdgeInsets.all(5), + // clipBehavior: Clip.antiAlias, + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(10)), + // child: Image.network( + // image, + // fit: BoxFit.cover, + // )), + // ), + // Positioned( + // right: 5, + // top: 5, + // child: GestureDetector( + // onTap: () { + // editPropertyImageList.remove(image); + // // removedImageId.add(); + // + // setState(() {}); + // }, + // child: Icon( + // Icons.close, + // color: context.color.secondaryColor, + // ), + // ), + // ) + // ], + // ); + // }) + // .toList() + // .cast()); + // } + // + // if (file is List) { + // current = Wrap( + // children: propertyImageList + // .map((image) { + // return Stack( + // children: [ + // GestureDetector( + // onTap: () { + // HelperUtils.unfocus(); + // UiUtils.showFullScreenImage(context, + // provider: FileImage(image)); + // }, + // child: Container( + // width: 100, + // height: 100, + // margin: const EdgeInsets.all(5), + // clipBehavior: Clip.antiAlias, + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(10)), + // child: Image.file( + // image, + // fit: BoxFit.cover, + // )), + // ), + // closeButton(context, () { + // propertyImageList.remove(image); + // setState(() {}); + // }) + // ], + // ); + // }) + // .toList() + // .cast()); + // } + + return Wrap( + runAlignment: WrapAlignment.start, + children: [ + if (file == null && mixedPropertyImageList.isEmpty) + DottedBorder( + color: context.color.textLightColor, + borderType: BorderType.RRect, + radius: const Radius.circular(12), + child: GestureDetector( + onTap: () { + _propertiesImagePicker.pick(pickMultiple: true); + }, + child: Container( + clipBehavior: Clip.antiAlias, + decoration: + BoxDecoration(borderRadius: BorderRadius.circular(10)), + alignment: Alignment.center, + height: 48.rh(context), + child: Text(UiUtils.translate(context, "addOtherPicture")), + ), + ), + ), + current, + if (file != null || titleImageURL != "") + uploadPhotoCard(context, onTap: () { + _propertiesImagePicker.pick(pickMultiple: true); + }) + ], + ); + }); + } + + Widget titleImageListener() { + return Builder(builder: (context) { + Widget currentWidget = Container(); + if (titleImageURL != "") { + currentWidget = GestureDetector( + onTap: () { + UiUtils.showFullScreenImage(context, + provider: NetworkImage(titleImageURL)); + }, + child: Container( + width: 100, + height: 100, + margin: const EdgeInsets.all(5), + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10)), + child: Image.network( + titleImageURL, + fit: BoxFit.cover, + ), + ), + ); + } + if (_pickTitleImage.pickedFile is File) { + currentWidget = GestureDetector( + onTap: () { + UiUtils.showFullScreenImage(context, + provider: FileImage(_pickTitleImage.pickedFile!)); + }, + child: Column( + children: [ + Container( + width: 100, + height: 100, + margin: const EdgeInsets.all(5), + clipBehavior: Clip.antiAlias, + decoration: + BoxDecoration(borderRadius: BorderRadius.circular(10)), + child: Image.file( + _pickTitleImage.pickedFile!, + fit: BoxFit.cover, + )), + ], + ), + ); + } + + return Wrap( + children: [ + if (_pickTitleImage.pickedFile == null && titleImageURL == "") + DottedBorder( + color: context.color.textLightColor, + borderType: BorderType.RRect, + radius: const Radius.circular(12), + child: GestureDetector( + onTap: () { + _pickTitleImage.pick(pickMultiple: false); + titleImageURL = ""; + setState(() {}); + }, + child: Container( + clipBehavior: Clip.antiAlias, + decoration: + BoxDecoration(borderRadius: BorderRadius.circular(10)), + alignment: Alignment.center, + height: 48.rh(context), + child: Text(UiUtils.translate(context, "addMainPicture")), + ), + ), + ), + Stack( + children: [ + currentWidget, + closeButton(context, () { + _pickTitleImage.clearImage(); + titleImageURL = ""; + setState(() {}); + }) + ], + ), + if (_pickTitleImage.pickedFile != null || titleImageURL != "") + uploadPhotoCard(context, onTap: () { + _pickTitleImage.resumeSubscription(); + _pickTitleImage.pick(pickMultiple: false); + _pickTitleImage.pauseSubscription(); + titleImageURL = ""; + setState(() {}); + }) + // GestureDetector( + // onTap: () { + // _pickTitleImage.resumeSubscription(); + // _pickTitleImage.pick(pickMultiple: false); + // _pickTitleImage.pauseSubscription(); + // titleImageURL = ""; + // setState(() {}); + // }, + // child: Container( + // width: 100, + // height: 100, + // margin: const EdgeInsets.all(5), + // clipBehavior: Clip.antiAlias, + // decoration: + // BoxDecoration(borderRadius: BorderRadius.circular(10)), + // child: DottedBorder( + // borderType: BorderType.RRect, + // radius: Radius.circular(10), + // child: Container( + // alignment: Alignment.center, + // child: Text("Upload \n Photo"), + // )), + // ), + // ), + ], + ); + }); + } +} + +Widget uploadPhotoCard(BuildContext context, {required Function onTap}) { + return GestureDetector( + onTap: () { + onTap.call(); + }, + child: Container( + width: 100, + height: 100, + margin: const EdgeInsets.all(5), + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration(borderRadius: BorderRadius.circular(10)), + child: DottedBorder( + color: context.color.textColorDark.withOpacity(0.5), + borderType: BorderType.RRect, + radius: const Radius.circular(10), + child: Container( + alignment: Alignment.center, + child: Text("uploadPhoto".translate(context)), + )), + ), + ); +} + +PositionedDirectional closeButton(BuildContext context, Function onTap) { + return PositionedDirectional( + top: 6, + end: 6, + child: GestureDetector( + onTap: () { + onTap.call(); + }, + child: Container( + decoration: BoxDecoration( + color: context.color.primaryColor.withOpacity(0.7), + borderRadius: BorderRadius.circular(10)), + child: const Padding( + padding: EdgeInsets.all(4.0), + child: Icon( + Icons.close, + size: 24, + color: Colors.black, + ), + ), + ), + ), + ); +} + +class ChooseLocationFormField extends FormField { + ChooseLocationFormField( + {super.key, + FormFieldSetter? onSaved, + FormFieldValidator? validator, + bool? initialValue, + required Widget Function(FormFieldState state) build, + bool autovalidateMode = false}) + : super( + onSaved: onSaved, + validator: validator, + initialValue: initialValue, + builder: (FormFieldState state) { + return build(state); + }); +} + +class ImageAdapter extends StatelessWidget { + final dynamic image; + ImageAdapter({super.key, this.image}); + + @override + Widget build(BuildContext context) { + if (image is String) { + return Image.network( + image, + fit: BoxFit.cover, + ); + } else if (image is File) { + return Image.file( + image, + fit: BoxFit.cover, + ); + } + return Container(); + } +} diff --git a/lib/Ui/screens/proprties/AddProperyScreens/property_success.dart b/lib/Ui/screens/proprties/AddProperyScreens/property_success.dart new file mode 100644 index 0000000..0b7abea --- /dev/null +++ b/lib/Ui/screens/proprties/AddProperyScreens/property_success.dart @@ -0,0 +1,84 @@ +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +import '../../../../app/routes.dart'; +import '../../../../data/model/property_model.dart'; +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/helper_utils.dart'; + +class PropertyAddSuccess extends StatelessWidget { + final PropertyModel model; + const PropertyAddSuccess({super.key, required this.model}); + + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () async { + Navigator.popUntil(context, (Route route) => route.isFirst); + return false; + }, + child: Scaffold( + backgroundColor: context.color.backgroundColor, + body: SizedBox( + width: context.screenWidth, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SvgPicture.asset(AppIcons.propertySubmittedc), + const SizedBox( + height: 32, + ), + Text("congratulations".translate(context)) + .size(context.font.extraLarge) + .bold() + .color(context.color.tertiaryColor), + const SizedBox( + height: 18, + ), + Text("submittedSuccess".translate(context)) + .centerAlign() + .size(context.font.larger), + const SizedBox( + height: 68, + ), + MaterialButton( + onPressed: () { + HelperUtils.goToNextPage( + Routes.propertyDetails, + context, + false, + args: { + 'propertyData': model, + 'propertiesList': [], + 'fromMyProperty': false, + "fromSuccess": true + }, + ); + }, + height: 48, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + side: BorderSide(color: context.color.tertiaryColor)), + color: context.color.backgroundColor, + child: Text( + "previewProperty".translate(context), + ) + .size(context.font.larger) + .color(context.color.tertiaryColor), + ), + const SizedBox( + height: 15, + ), + GestureDetector( + onTap: () { + Navigator.popUntil(context, (route) => route.isFirst); + }, + child: Text("backToHome".translate(context)).underline()) + ], + ), + ), + )); + } +} diff --git a/lib/Ui/screens/proprties/AddProperyScreens/select_outdoor_facility.dart b/lib/Ui/screens/proprties/AddProperyScreens/select_outdoor_facility.dart new file mode 100644 index 0000000..adfbb98 --- /dev/null +++ b/lib/Ui/screens/proprties/AddProperyScreens/select_outdoor_facility.dart @@ -0,0 +1,597 @@ +// ignore_for_file: invalid_use_of_visible_for_testing_member + +// ignore_for_file: invalid_use_of_visible_for_testing_member + +import 'package:ebroker/Ui/screens/widgets/custom_text_form_field.dart'; +import 'package:ebroker/data/cubits/outdoorfacility/fetch_outdoor_facility_list.dart'; +import 'package:ebroker/data/model/outdoor_facility.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../../data/cubits/property/create_property_cubit.dart'; +import '../../../../utils/constant.dart'; +import '../../../../utils/sliver_grid_delegate_with_fixed_cross_axis_count_and_fixed_height.dart'; +import '../../widgets/AnimatedRoutes/blur_page_route.dart'; + +class SelectOutdoorFacility extends StatefulWidget { + final Map? apiParameters; + + const SelectOutdoorFacility({super.key, required this.apiParameters}); + + static Route route(RouteSettings settings) { + Map _apiParameters = + settings.arguments as Map; + return BlurredRouter( + builder: (context) { + return SelectOutdoorFacility( + apiParameters: _apiParameters, + ); + }, + ); + } + + @override + State createState() => _SelectOutdoorFacilityState(); +} + +class _SelectOutdoorFacilityState extends State { + final ValueNotifier> _selectedIdsList = ValueNotifier([]); + List facilityList = []; + Map distanceFieldList = {}; + final GlobalKey _formKey = GlobalKey(); + var _oldSize; + @override + void initState() { + List facilities = []; + facilities = widget.apiParameters?['assign_facilities'] ?? []; + + // context.read().fetchIfFailed(); + facilityList = context.read().getList(); + + setState(() {}); + _selectedIdsList.addListener(() { + _selectedIdsList.value.forEach((element) { + if (!distanceFieldList.keys.contains(element)) { + if (widget.apiParameters?['isUpdate'] ?? false) { + List match = + facilities.where((x) => x.facilityId == element).toList(); + + if (match.isNotEmpty) { + distanceFieldList[element] = + TextEditingController(text: match.first.distance.toString()); + } else { + distanceFieldList[element] = TextEditingController(); + } + } else { + distanceFieldList[element] = TextEditingController(); + } + } + }); + setState(() {}); + }); + + if (widget.apiParameters?['isUpdate'] ?? false) { + facilities.forEach((element) { + if (!_selectedIdsList.value.contains(element)) { + _selectedIdsList.value.add(element.facilityId!); + _selectedIdsList.notifyListeners(); + } + }); + } + super.initState(); + } + + Map assembleOutdoorFacility() { + Map facilitymap = {}; + for (var i = 0; i < distanceFieldList.entries.length; i++) { + MapEntry element = distanceFieldList.entries.elementAt(i); + + facilitymap.addAll({ + "facilities[$i][facility_id]": element.key, + "facilities[$i][distance]": element.value.text + }); + } + + return facilitymap; + } + + OutdoorFacility getSelectedFacility(int id) { + try { + return facilityList + .where((OutdoorFacility element) => element.id == id) + .first; + } catch (e) { + throw "$e"; + } + } + + @override + Widget build(BuildContext context) { + // log(facilityList.toString()); + bool fetchInProgress = (context.watch().state + is FetchOutdoorFacilityListInProgress); + bool fetchFails = (context.watch().state + is FetchOutdoorFacilityListInProgress); + + return BlocListener( + listener: (context, state) { + if (state is FetchOutdoorFacilityListSucess) { + facilityList = + context.read().getList(); + setState(() {}); + } + }, + child: Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: UiUtils.buildAppBar(context, + showBackButton: true, + actions: const [ + Text("4/4"), + SizedBox( + width: 14, + ), + ], + title: "selectNearestPlaces".translate(context)), + bottomNavigationBar: BottomAppBar( + child: GestureDetector( + onTap: () { + distanceFieldList.forEach((element, v) {}); + }, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: UiUtils.buildButton( + context, + onPressed: () { + Map? parameters = widget.apiParameters; + + ///adding facility data to api payload + parameters!.addAll(assembleOutdoorFacility()); + parameters + ..remove("assign_facilities") + ..remove("isUpdate"); + if (_formKey.currentState!.validate()) { + context + .read() + .create(parameters: parameters); + } + }, + buttonTitle: widget.apiParameters?['action_type'] == "0" + ? UiUtils.translate(context, "update") + : UiUtils.translate(context, "submitProperty"), + ), + ), + ), + ), + body: Builder(builder: (context) { + if (fetchInProgress) { + return Center( + child: UiUtils.progress(), + ); + } + + if (fetchFails) { + return Center( + child: Text("Something Went wrong"), + ); + } + return SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: + const EdgeInsetsDirectional.fromSTEB(15.0, 10, 15, 0), + child: Text("selectPlaces".translate(context)), + ), + SizedBox( + height: 12, + ), + BlocBuilder( + builder: (context, state) { + if (state is FetchOutdoorFacilityListFailure) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 15.0), + child: Text(state.error.toString()), + ); + } + if (state is FetchOutdoorFacilityListSucess) { + return ValueListenableBuilder>( + valueListenable: _selectedIdsList, + builder: (context, List value, child) { + return OutdoorFacilityTable( + length: state.outdoorFacilityList.length, + child: (index) { + OutdoorFacility outdoorFacilityList = + state.outdoorFacilityList[index]; + + return buildTypeCard( + index, context, outdoorFacilityList, + onSelect: (id) { + if (_selectedIdsList.value.contains(id)) { + _selectedIdsList.value.remove(id); + + ///Dispose and remove from object + distanceFieldList[id]?.dispose(); + distanceFieldList.remove(id); + _selectedIdsList.notifyListeners(); + } else { + _selectedIdsList.value.add(id); + _selectedIdsList.notifyListeners(); + } + }, + isSelected: + value.contains(outdoorFacilityList.id)); + }, + ); + + return GridView.builder( + physics: const NeverScrollableScrollPhysics(), + padding: const EdgeInsets.all(15), + shrinkWrap: true, + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount( + mainAxisSpacing: 5, + crossAxisSpacing: 5, + crossAxisCount: 4), + itemCount: state.outdoorFacilityList.length, + itemBuilder: (context, index) { + OutdoorFacility outdoorFacilityList = + state.outdoorFacilityList[index]; + + return buildTypeCard( + index, context, outdoorFacilityList, + onSelect: (id) { + if (_selectedIdsList.value.contains(id)) { + _selectedIdsList.value.remove(id); + + ///Dispose and remove from object + distanceFieldList[id]?.dispose(); + distanceFieldList.remove(id); + _selectedIdsList.notifyListeners(); + } else { + _selectedIdsList.value.add(id); + _selectedIdsList.notifyListeners(); + } + }, + isSelected: + value.contains(outdoorFacilityList.id)); + }, + ); + }); + } + + return Container(); + }, + ), + ValueListenableBuilder( + valueListenable: _selectedIdsList, + builder: (context, value, child) { + return Padding( + padding: const EdgeInsets.all(15.0), + child: Form( + key: _formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _selectedIdsList.value.isEmpty + ? const SizedBox.shrink() + : Text("selectedItems".translate(context)), + const SizedBox( + height: 10, + ), + ...List.generate(_selectedIdsList.value.length, + (index) { + if (fetchInProgress) { + return const SizedBox.shrink(); + } + + OutdoorFacility facility = getSelectedFacility( + _selectedIdsList.value[index]); + return Padding( + padding: + const EdgeInsets.symmetric(vertical: 3.0), + child: OutdoorFacilityDistanceField( + facility: facility, + controller: distanceFieldList[facility.id]!, + ), + ); + }) + ], + ), + ), + ); + }, + ), + ], + ), + ); + }), + ), + ); + } + + Widget buildTypeCard( + int index, BuildContext context, OutdoorFacility facility, + {required bool isSelected, required Function(int id) onSelect}) { + return GestureDetector( + onTap: () { + onSelect.call(facility.id!); + }, + child: Container( + decoration: BoxDecoration( + color: isSelected + ? context.color.tertiaryColor + : context.color.secondaryColor, + borderRadius: BorderRadius.circular(10), + boxShadow: isSelected + ? [ + BoxShadow( + offset: const Offset(1, 3), + blurRadius: 6, + color: context.color.tertiaryColor.withOpacity(0.2), + ) + ] + : null, + border: isSelected + ? null + : Border.all(color: context.color.borderColor, width: 1.5)), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + height: 20.rh(context), + width: 20.rw(context), + child: UiUtils.imageType(facility.image!, + color: isSelected + ? context.color.secondaryColor + : (Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null)), + ), + Padding( + padding: const EdgeInsets.all(2.0), + child: Text( + facility.name!, + textAlign: TextAlign.center, + ).color(isSelected + ? context.color.secondaryColor + : context.color.tertiaryColor), + ) + ], + ), + ), + ); + } +} + +class OutdoorFacilityDistanceField extends StatelessWidget { + final TextEditingController controller; + + const OutdoorFacilityDistanceField({ + super.key, + required this.facility, + required this.controller, + }); + + final OutdoorFacility facility; + + @override + Widget build(BuildContext context) { + return Row( + children: [ + Container( + width: 48.rw(context), + height: 48.rh(context), + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: FittedBox( + fit: BoxFit.none, + child: SizedBox( + height: 24, + width: 24, + child: UiUtils.imageType(facility.image ?? "", + color: context.color.tertiaryColor, fit: BoxFit.cover))), + ), + const SizedBox( + width: 10, + ), + Expanded(child: Text(facility.name ?? "")), + Expanded( + child: CustomTextFormField( + keyboard: TextInputType.number, + validator: CustomTextFieldValidator.nullCheck, + hintText: "00", + formaters: [ + FilteringTextInputFormatter.allow(RegExp(r'^\d+\.?\d*')), + ], + controller: controller, + dense: true, + suffix: SizedBox( + width: 5, + child: Center( + child: const Text("KM").color(context.color.textLightColor)), + ), + ), + ), + const SizedBox( + width: 10, + ), + ], + ); + } +} + +class OutdoorFacilityWithController { + final OutdoorFacility facility; + final TextEditingController controller; + + const OutdoorFacilityWithController({ + required this.facility, + required this.controller, + }); + + @override + String toString() { + return 'OutdoorFacilityWithController{' + + ' facility: $facility,' + + ' controller: $controller,' + + '}'; + } + + OutdoorFacilityWithController copyWith({ + OutdoorFacility? facility, + TextEditingController? controller, + }) { + return OutdoorFacilityWithController( + facility: facility ?? this.facility, + controller: controller ?? this.controller, + ); + } + + Map toMap() { + return { + 'facility': this.facility, + 'controller': this.controller, + }; + } + + factory OutdoorFacilityWithController.fromMap(Map map) { + return OutdoorFacilityWithController( + facility: map['facility'] as OutdoorFacility, + controller: map['controller'] as TextEditingController, + ); + } +} + +class OutdoorFacilityTable extends StatefulWidget { + final int length; + const OutdoorFacilityTable( + {super.key, required this.child, required this.length}); + final Widget Function(int index) child; + @override + State createState() => _OutdoorFacilityTableState(); +} + +class _OutdoorFacilityTableState extends State { + Size? _oldSize; + PageController _pageController = PageController(); + int rowCount = 3; + Map? sizeMap = {}; + int colCount = 3; + late int totalData = widget.length; + int itemsPerPage = 9; + int selectedPage = 0; + @override + Widget build(BuildContext context) { + return Column( + children: [ + Container( + height: (sizeMap?.isEmpty ?? true) + ? 290 + : (sizeMap?[Key(selectedPage.toString())]?.height ?? 290), + child: PageView.builder( + controller: _pageController, + pageSnapping: true, + onPageChanged: (value) { + selectedPage = value; + setState(() {}); + }, + physics: const BouncingScrollPhysics(), + itemCount: (totalData / itemsPerPage).ceil(), + itemBuilder: (context, pageIndex) { + final startIndex = pageIndex * itemsPerPage; + final endIndex = (startIndex + itemsPerPage) > totalData + ? totalData + : (startIndex + itemsPerPage); + + final gridData = List.generate( + endIndex - startIndex, + (index) { + return 'Data ${(startIndex + index + 1)}'; + }, + ); + + Key pageKey = Key(pageIndex.toString()); + return GridView.builder( + shrinkWrap: true, + key: pageKey, + physics: BouncingScrollPhysics(), + padding: EdgeInsets.symmetric(horizontal: 14), + gridDelegate: + SliverGridDelegateWithFixedCrossAxisCountAndFixedHeight( + crossAxisCount: colCount, + crossAxisSpacing: 13, + mainAxisSpacing: 13, + height: 83, + ), + itemCount: gridData.length, + itemBuilder: (BuildContext c, int index) { + getGridSize(c, pageIndex, pageKey); + final dataIndex = startIndex + index; + return widget.child.call(dataIndex); + }, + ); + }, + ), + ), + SizedBox( + height: 10, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ...List.generate((totalData / itemsPerPage).ceil(), (index) { + bool isSelected = selectedPage == index; + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 3), + child: Container( + width: isSelected ? 24 : 8, + height: 8, + decoration: BoxDecoration( + border: isSelected + ? Border() + : Border.all(color: context.color.textColorDark), + color: isSelected + ? context.color.tertiaryColor + : Colors.transparent, + borderRadius: BorderRadius.circular(10), + ), + ), + ); + }) + ], + ) + ], + ); + } + + getGridSize(BuildContext context, int pageIndex, Key pageKey) { + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + if (!context.mounted) { + return; + } + Size size = ((context as SliverMultiBoxAdaptorElement).renderObject + as RenderSliverGrid) + .getAbsoluteSize(); + + if (_oldSize != size) { + if (Key(pageIndex.toString()) == pageKey) { + sizeMap?[pageKey] = size; + _oldSize = size; + setState(() {}); + } + } + }); + } +} diff --git a/lib/Ui/screens/proprties/AddProperyScreens/select_type_of_property.dart b/lib/Ui/screens/proprties/AddProperyScreens/select_type_of_property.dart new file mode 100644 index 0000000..04a8836 --- /dev/null +++ b/lib/Ui/screens/proprties/AddProperyScreens/select_type_of_property.dart @@ -0,0 +1,308 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../../app/routes.dart'; +import '../../../../data/Repositories/subscription_repository.dart'; +import '../../../../data/cubits/category/fetch_category_cubit.dart'; +import '../../../../data/cubits/outdoorfacility/fetch_outdoor_facility_list.dart'; +import '../../../../data/cubits/subscription/get_subsctiption_package_limits_cubit.dart'; +import '../../../../data/helper/widgets.dart'; +import '../../../../data/model/category.dart'; +import '../../../../utils/Extensions/extensions.dart'; +import '../../../../utils/constant.dart'; +import '../../../../utils/helper_utils.dart'; +import '../../../../utils/responsiveSize.dart'; +import '../../../../utils/ui_utils.dart'; +import '../../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../../widgets/blurred_dialoge_box.dart'; + +enum PropertyAddType { project, property } + +class SelectPropertyType extends StatefulWidget { + final PropertyAddType type; + const SelectPropertyType({super.key, required this.type}); + + static Route route(RouteSettings settings) { + Map? arguments = settings.arguments as Map?; + return BlurredRouter( + builder: (context) { + return SelectPropertyType( + type: arguments?['type'], + ); + }, + ); + } + + @override + State createState() => _SelectPropertyTypeState(); +} + +class _SelectPropertyTypeState extends State { + int? selectedIndex; + Category? selectedCategory; + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + Widgets.showLoader(context); + }); + // penyebab error tidak bisa add property + + Future.delayed( + Duration(seconds: 2), + () { + context + .read() + .getLimits(SubscriptionLimitType.property); + }, + ); + context.read().fetch(); + } + + void _openSubscriptionScreen() { + Navigator.pop(context); + Navigator.pushNamed( + context, + Routes.subscriptionPackageListRoute, + ).then((value) { + // Navigator.pop(context); + context + .read() + .getLimits(SubscriptionLimitType.property); + + // Navigator.pop(context); + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.primaryColor, + appBar: UiUtils.buildAppBar( + context, + title: widget.type == PropertyAddType.property + ? "ddPropertyLbl".translate(context) + : "projectType".translate(context), + actions: const [ + Text("1/4"), + SizedBox( + width: 14, + ), + ], + showBackButton: true, + ), + bottomNavigationBar: Container( + color: Colors.transparent, + child: Padding( + padding: const EdgeInsets.fromLTRB(20, 0, 20, 20), + child: UiUtils.buildButton(context, + disabledColor: Colors.grey, + onTapDisabledButton: () { + HelperUtils.showSnackBarMessage( + context, "pleaseSelectCategory".translate(context), + isFloating: true); + }, + disabled: selectedCategory == null, + onPressed: () { + var state = + context.read().state; + if (state is! GetSubsctiptionPackageLimitsInProgress) { + Constant.addProperty.addAll({"category": selectedCategory}); + + if (selectedCategory != null) { + // Navigator.push(context, MaterialPageRoute(builder: (context) { + // return SelectOutdoorFacility(); + // },)); + //TODO: + + if (widget.type == PropertyAddType.property) { + Navigator.pushNamed( + context, Routes.addPropertyDetailsScreen); + } else { + Navigator.pushNamed(context, Routes.addProjectDetails); + } + } + } + }, + height: 48.rh(context), + fontSize: context.font.large, + buttonTitle: UiUtils.translate(context, "continue")), + ), + ), + body: BlocListener( + bloc: context.read(), + listener: (context, state) { + if (state is GetSubsctiptionPackageLimitsInProgress) { + Widgets.showLoader(context); + } + if (state is GetSubsctiptionPackageLimitsFailure) { + Widgets.hideLoder(context); + HelperUtils.showSnackBarMessage( + context, + state.errorMessage.firstUpperCase(), + onClose: () { + Navigator.pop(context); + }, + ); + } + if (state is GetSubsctiptionPackageLimitsSuccess) { + if (state.packageLimit.hasPackage == false) { + Widgets.hideLoder(context); + + UiUtils.showBlurredDialoge(context, + sigmaX: 3, + sigmaY: 3, + dialoge: BlurredDialogBox( + isAcceptContainesPush: true, + acceptButtonName: UiUtils.translate(context, "subscribe"), + backAllowedButton: false, + title: UiUtils.translate(context, "packageNotValid"), + content: Text( + UiUtils.translate(context, "packageNotForProperty"), + ), + onCancel: () { + Navigator.pop(context); + }, + onAccept: () async { + _openSubscriptionScreen(); + }, + )); + } else { + Widgets.hideLoder(context); + } + //we are making sure that total number is not in string, if it will be Unlimited so we dont have to show nay dialoge + + // if (state.packageLimit.totalLimitOfProperty.runtimeType == int) { + // if (state.packageLimit.usedLimitOfProperty >= + // state.packageLimit.totalLimitOfProperty) { + // UiUtils.showBlurredDialoge(context, + // sigmaX: 3, + // sigmaY: 3, + // dialoge: BlurredDialogBox( + // isAcceptContainesPush: true, + // acceptButtonName: + // UiUtils.getTranslatedLabel(context, "subscribe"), + // backAllowedButton: false, + // title: UiUtils.getTranslatedLabel( + // context, "yourPackageReachedLimit"), + // content: Text( + // UiUtils.getTranslatedLabel( + // context, "yourPackageReachedLimitDescription"), + // ), + // onCancel: () { + // Navigator.pop(context); + // }, + // onAccept: () async { + // _openSubscriptionScreen(); + // }, + // )); + // } + // } + } + }, + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsetsDirectional.only( + start: 20.0, end: 20, top: 20), + child: Text(UiUtils.translate(context, "typeOfProperty")) + .color(context.color.textColorDark), + ), + BlocBuilder( + builder: (context, state) { + if (state is FetchCategoryInProgress) {} + if (state is FetchCategoryFailure) { + return Center( + child: Text(state.errorMessage), + ); + } + if (state is FetchCategorySuccess) { + return GridView.builder( + itemCount: state.categories.length, + shrinkWrap: true, + padding: const EdgeInsets.all(20.0), + physics: const NeverScrollableScrollPhysics(), + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount( + mainAxisSpacing: 10, + crossAxisSpacing: 10, + crossAxisCount: 3), + itemBuilder: (context, index) { + return buildTypeCard( + index, context, state.categories[index]); + }, + ); + } + return Container(); + }, + ) + ], + ), + ), + ), + ); + } + + Widget buildTypeCard(int index, BuildContext context, Category category) { + return GestureDetector( + onTap: () { + selectedCategory = category; + selectedIndex = index; + setState(() {}); + }, + child: Container( + decoration: BoxDecoration( + color: (selectedIndex == index) + ? context.color.tertiaryColor + : context.color.secondaryColor, + borderRadius: BorderRadius.circular(10), + boxShadow: (selectedIndex == index) + ? [ + BoxShadow( + offset: const Offset(1, 2), + blurRadius: 5, + color: context.color.tertiaryColor) + ] + : null, + border: (selectedIndex == index) + ? null + : Border.all(color: context.color.borderColor, width: 1.5)), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // Icon( + // Icons.house, + // color: selectedIndex == index + // ? context.color.secondaryColor + // : context.color.teritoryColor, + // ), + SizedBox( + height: 25.rh(context), + width: 25.rw(context), + child: UiUtils.imageType(category.image!, + color: selectedIndex == index + ? context.color.secondaryColor + : (Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null)), + ), + + Padding( + padding: const EdgeInsets.all(2.0), + child: Text( + category.category!, + textAlign: TextAlign.center, + ).color(selectedIndex == index + ? context.color.secondaryColor + : context.color.tertiaryColor), + ) + ], + ), + ), + ); + } +} diff --git a/lib/Ui/screens/proprties/AddProperyScreens/set_property_parameters.dart b/lib/Ui/screens/proprties/AddProperyScreens/set_property_parameters.dart new file mode 100644 index 0000000..1c1692e --- /dev/null +++ b/lib/Ui/screens/proprties/AddProperyScreens/set_property_parameters.dart @@ -0,0 +1,363 @@ +// ignore_for_file: depend_on_referenced_packages + +import 'dart:collection'; +import 'dart:io'; + +import 'package:collection/collection.dart'; +import 'package:dio/dio.dart'; +import 'package:ebroker/Ui/screens/proprties/AddProperyScreens/property_success.dart'; +import 'package:ebroker/app/routes.dart'; +import 'package:ebroker/data/cubits/Utility/proeprty_edit_global.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:http_parser/http_parser.dart' as h; +import 'package:mime/mime.dart'; + +import '../../../../data/cubits/property/create_property_cubit.dart'; +import '../../../../data/cubits/property/fetch_my_properties_cubit.dart'; +import '../../../../data/helper/widgets.dart'; +import '../../../../data/model/property_model.dart'; +import '../../../../utils/Extensions/extensions.dart'; +import '../../../../utils/constant.dart'; +import '../../../../utils/helper_utils.dart'; +import '../../../../utils/responsiveSize.dart'; +import '../../../../utils/ui_utils.dart'; +import '../../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../../widgets/AnimatedRoutes/scale_up_route.dart'; +import '../../widgets/DynamicField/dynamic_field.dart'; +import '../Property tab/sell_rent_screen.dart'; + +class SetProeprtyParametersScreen extends StatefulWidget { + final Map propertyDetails; + final bool isUpdate; + const SetProeprtyParametersScreen( + {super.key, required this.propertyDetails, required this.isUpdate}); + static Route route(RouteSettings settings) { + Map? argument = settings.arguments as Map?; + + return BlurredRouter( + builder: (context) { + return SetProeprtyParametersScreen( + propertyDetails: argument?['details'], + isUpdate: argument?['isUpdate'], + ); + }, + ); + } + + @override + State createState() => + _SetProeprtyParametersScreenState(); +} + +class _SetProeprtyParametersScreenState + extends State + with AutomaticKeepAliveClientMixin { + List disposableFields = []; + final GlobalKey _formKey = GlobalKey(); + List galleryImage = []; + File? titleImage; + File? t360degImage; + File? meta_image; + Map? apiParameters; + var paramaeterUI = []; + @override + void initState() { + apiParameters = Map.from(widget.propertyDetails); + galleryImage = apiParameters!['gallery_images']; + titleImage = apiParameters!['title_image']; + t360degImage = apiParameters!['threeD_image']; + meta_image = apiParameters!['meta_image']; + Future.delayed( + Duration.zero, + () { + paramaeterUI = (Constant + .addProperty['category']?.parameterTypes!['parameters'] as List) + .mapIndexed((index, parameter) { + var parm = parameter; + if (parameter is! Map) { + parm = (parameter as Parameter).toMap(); + } + return Padding( + padding: EdgeInsets.only(top: index == 0 ? 0 : 10, bottom: 10), + child: buildDynamicField(parm, index), + ); + }) + .toList() + .cast(); + setState(() {}); + }, + ); + super.initState(); + } + + Widget buildDynamicField(Map parameter, int index) { + ///Initital Container to assign + Widget dynamicField = Container(); + + ///This is factory class it will check type and it will return field class accordingly + AbstractField field = + FieldFactory.getField(context, parameter['type_of_parameter']); + // if (widget.isUpdate) { + // AbstractField.fieldsData.addAll( + // { + // "parameters[$index][parameter_id]": parameter['id'], + // "parameters[$index][value]": parameter['value'] + // }, + // ); + // } + + ///Same like Bloc State management we check if field is AbstractDropdown, So we can apply additional configuration or add data to it + if (field is AbstractDropdown) { + var selected = parameter['value']; + if (selected == "") { + selected = (parameter['type_values'] as List).first; + } + dynamicField = field + .setItems(parameter['type_values']) + .setSelectedItem(selected) + .createField( + parameter, + ); + } else if (field is AbstractTextField) { + dynamicField = field.createField(parameter); + } else if (field is AbstractNumberField) { + dynamicField = field.createField(parameter); + } else if (field is AbstractRadioButton) { + dynamicField = + field.setValues(parameter['type_values']).createField(parameter); + } else if (field is AbstractTextAreaField) { + dynamicField = field.createField(parameter); + } else if (field is AbstractCheckBoxButton) { + dynamicField = field + .setCheckBoxValues(parameter['type_values']) + .createField(parameter); + // disposableFields.add(field.checked); + } else if (field is AbstractPickFileButton) { + dynamicField = field.createField(parameter); + // field.filePicked.value + } + + ///Returning field + return dynamicField; + } + + ///This will convert {0:Demo} to it's required format here we have assigned Parameter id : value, before. + Map assembleDynamicFieldsParameters() { + Map parameters = {}; + + Map fieldsData = AbstractField.fieldsData; + for (var i = 0; i < fieldsData.entries.length; i++) { + MapEntry element = fieldsData.entries.elementAt(i); + var value = element.value; + if (value is LinkedHashMap) { + value = (value).toString(); + } + if (value == null) { + continue; + } + parameters.addAll({ + "parameters[$i][parameter_id]": element.key, + "parameters[$i][value]": value + }); + } + return parameters; + } + + List buildFields() { + if (Constant.addProperty['category'] == null) { + return [Container()]; + } + + ///Loop parameters + return paramaeterUI.cast(); + } + + void disposeDynamicFieldsValueControllers() { + for (var element in disposableFields) { + element.dispose(); + } + } + + @override + void dispose() { + disposeDynamicFieldsValueControllers(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + super.build(context); + return Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: UiUtils.buildAppBar( + context, + showBackButton: true, + actions: const [ + Text("3/4"), + SizedBox( + width: 14, + ), + ], + title: widget.isUpdate + ? UiUtils.translate(context, "updateProperty") + : UiUtils.translate(context, "ddPropertyLbl"), + ), + bottomNavigationBar: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20.0, vertical: 7), + child: UiUtils.buildButton( + context, + height: 48.rh(context), + onPressed: () async { + // if (_formKey.currentState!.validate() == false) return; + + //TODO: TODO + apiParameters!.addAll(assembleDynamicFieldsParameters()); + + /// Multipartimage of gallery images + List gallery = []; + await Future.forEach( + galleryImage, + (dynamic item) async { + var multipartFile = await MultipartFile.fromFile(item.path); + if (!multipartFile.isFinalized) { + gallery.add(multipartFile); + } + }, + ); + apiParameters!['gallery_images'] = gallery; + + if (titleImage != null) { + ///Multipart image of title image + final mimeType = lookupMimeType((titleImage as File).path); + var extension = mimeType!.split("/"); + apiParameters!['title_image'] = await MultipartFile.fromFile( + (titleImage as File).path, + contentType: h.MediaType('image', extension[1]), + filename: (titleImage as File).path.split("/").last); + } + + //set 360 deg image + + if (t360degImage != null) { + final mimeType = lookupMimeType(t360degImage!.path); + var extension = mimeType!.split("/"); + + apiParameters!['threeD_image'] = await MultipartFile.fromFile( + t360degImage?.path ?? "", + contentType: h.MediaType('image', extension[1]), + filename: t360degImage?.path.split("/").last); + } + + if (meta_image != null) { + final mimeType = lookupMimeType(meta_image!.path); + List extension = mimeType!.split("/"); + apiParameters!['meta_image'] = await MultipartFile.fromFile( + meta_image?.path ?? "", + contentType: h.MediaType('image', extension[1]), + filename: meta_image?.path.split("/").last); + } + + Future.delayed( + Duration.zero, + () { + // / if (Constant.isDemoModeOn) { + // / HelperUtils.showSnackBarMessage( + // / context, + // UiUtils.getTranslatedLabel( + // context, "thisActionNotValidDemo")); + // return; + // } + + // Navigator.push(context, MaterialPageRoute(builder: (context) { + // return SelectOutdoorFacility(); + // },)); + apiParameters?['isUpdate'] = widget.isUpdate; + Navigator.pushNamed(context, Routes.selectOutdoorFacility, + arguments: apiParameters); + + // context + // .read() + // .create(parameters: apiParameters!); + }, + ); + }, + buttonTitle: UiUtils.translate(context, "next"), + ), + ), + body: Form( + key: _formKey, + child: BlocListener( + listener: (context, state) { + if (state is CreatePropertyInProgress) { + Widgets.showLoader(context); + } + + if (state is CreatePropertyFailure) { + Widgets.hideLoder(context); + HelperUtils.showSnackBarMessage(context, state.errorMessage); + } + if (state is CreatePropertySuccess) { + Widgets.hideLoder(context); + if (widget.isUpdate == false) { + ref[propertyType ?? "sell"] + ?.fetchMyProperties(type: propertyType ?? "sell"); + Future.delayed( + const Duration(milliseconds: 260), + () { + Navigator.pushReplacement( + context, + ScaleUpRouter( + builder: (context) { + return PropertyAddSuccess( + model: state.propertyModel!, + ); + }, + current: widget, + )); + }, + ); + } else { + context.read().add(state.propertyModel!); + context + .read() + .update(state.propertyModel!); + cubitReference?.update(state.propertyModel!); + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "propertyUpdated"), + type: MessageType.success, onClose: () { + Navigator.of(context) + ..pop() + ..pop() + ..pop() + ..pop(); + }); + } + } + }, + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag, + child: Padding( + padding: const EdgeInsets.all(18.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(UiUtils.translate(context, "addvalues")), + SizedBox( + height: 18, + ), + ...buildFields(), + ], + ), + ), + ), + ), + ), + ); + } + + @override + // TODO: implement wantKeepAlive + bool get wantKeepAlive => true; +} diff --git a/lib/Ui/screens/proprties/Property tab/favorites_property_tab.dart b/lib/Ui/screens/proprties/Property tab/favorites_property_tab.dart new file mode 100644 index 0000000..8971887 --- /dev/null +++ b/lib/Ui/screens/proprties/Property tab/favorites_property_tab.dart @@ -0,0 +1,220 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../../app/routes.dart'; +import '../../../../data/cubits/Utility/like_properties.dart'; +import '../../../../data/cubits/favorite/add_to_favorite_cubit.dart'; +import '../../../../data/cubits/favorite/fetch_favorites_cubit.dart'; +import '../../../../data/helper/designs.dart'; +import '../../../../data/model/property_model.dart'; +import '../../../../utils/Extensions/extensions.dart'; +import '../../../../utils/ui_utils.dart'; +import '../../home/Widgets/property_horizontal_card.dart'; +import '../../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../../widgets/Erros/no_data_found.dart'; +import '../../widgets/shimmerLoadingContainer.dart'; + +class FavoritesScreen extends StatefulWidget { + const FavoritesScreen({super.key}); + + static Route route(RouteSettings settings) { + return BlurredRouter( + builder: (context) => BlocProvider( + create: (context) => FetchFavoritesCubit(), + child: const FavoritesScreen(), + ), + ); + } + + @override + State createState() => _FavoritesScreenState(); +} + +class _FavoritesScreenState extends State + with AutomaticKeepAliveClientMixin { + final ScrollController _pageScrollController = ScrollController(); + @override + void initState() { + _pageScrollController.addListener(pageScrollListen); + context.read().fetchFavorites(); + super.initState(); + } + + void pageScrollListen() { + if (_pageScrollController.isEndReached()) { + if (context.read().hasMoreData()) { + context.read().fetchFavoritesMore(); + } + } + } + + @override + void dispose() { + _pageScrollController.dispose(); + super.dispose(); + } + + Widget buildFavoritePropertyShimmer() { + return ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: const EdgeInsets.symmetric( + vertical: 10 + defaultPadding, horizontal: defaultPadding), + itemCount: 5, + separatorBuilder: (context, index) { + return const SizedBox( + height: 12, + ); + }, + itemBuilder: (context, index) { + return Container( + width: double.maxFinite, + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(15), + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const ClipRRect( + clipBehavior: Clip.antiAliasWithSaveLayer, + borderRadius: BorderRadius.all(Radius.circular(15)), + child: CustomShimmer(height: 90, width: 90), + ), + const SizedBox( + width: 10, + ), + Expanded( + child: LayoutBuilder(builder: (context, c) { + return Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox( + height: 10, + ), + CustomShimmer( + height: 10, + width: c.maxWidth - 50, + ), + const SizedBox( + height: 10, + ), + const CustomShimmer( + height: 10, + ), + const SizedBox( + height: 10, + ), + CustomShimmer( + height: 10, + width: c.maxWidth / 1.2, + ), + const SizedBox( + height: 10, + ), + CustomShimmer( + height: 10, + width: c.maxWidth / 4, + ), + ], + ); + }), + ) + ]), + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + super.build(context); + return RefreshIndicator( + color: context.color.tertiaryColor, + onRefresh: () async { + context.read().fetchFavorites(); + }, + child: Scaffold( + backgroundColor: Theme.of(context).colorScheme.backgroundColor, + body: BlocBuilder( + builder: (context, state) { + if (state is FetchFavoritesInProgress) { + return buildFavoritePropertyShimmer(); + } + if (state is FetchFavoritesFailure) { + return Center( + child: Text(state.errorMessage.toString()), + ); + } + if (state is FetchFavoritesSuccess) { + if (state.propertymodel.isEmpty) { + return NoDataFound( + onTap: () { + context.read().fetchFavorites(); + }, + ); + } + + return RefreshIndicator( + color: context.color.tertiaryColor, + onRefresh: () async { + context.read().fetchFavorites(); + }, + child: Column( + children: [ + Expanded( + child: ListView.builder( + controller: _pageScrollController, + padding: const EdgeInsets.symmetric(horizontal: 8.0), + itemCount: state.propertymodel.length, + shrinkWrap: true, + physics: const BouncingScrollPhysics(), + itemBuilder: (context, index) { + PropertyModel property = state.propertymodel[index]; + context.read().add(property.id); + + return Padding( + padding: + const EdgeInsets.symmetric(horizontal: 8), + child: GestureDetector( + onTap: () { + // return; + Navigator.pushNamed( + context, Routes.propertyDetails, + arguments: { + 'propertyData': property, + 'fromMyProperty': true + }).then((value) {}); + }, + child: BlocProvider( + create: (context) => + AddToFavoriteCubitCubit(), + child: PropertyHorizontalCard( + property: property, + onLikeChange: (type) { + context + .read() + .remove(property.id); + }, + ), + ))); + }, + ), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ), + ); + } + + return Container(); + }, + ), + ), + ); + } + + @override + bool get wantKeepAlive => true; +} diff --git a/lib/Ui/screens/proprties/Property tab/sell_rent_screen.dart b/lib/Ui/screens/proprties/Property tab/sell_rent_screen.dart new file mode 100644 index 0000000..680be26 --- /dev/null +++ b/lib/Ui/screens/proprties/Property tab/sell_rent_screen.dart @@ -0,0 +1,267 @@ +import 'package:ebroker/utils/api.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../../app/routes.dart'; +import '../../../../data/cubits/favorite/add_to_favorite_cubit.dart'; +import '../../../../data/cubits/property/fetch_my_properties_cubit.dart'; +import '../../../../data/helper/designs.dart'; +import '../../../../data/model/property_model.dart'; +import '../../../../utils/Extensions/extensions.dart'; +import '../../../../utils/responsiveSize.dart'; +import '../../../../utils/ui_utils.dart'; +import '../../home/Widgets/property_horizontal_card.dart'; +import '../../widgets/Erros/no_data_found.dart'; +import '../../widgets/Erros/no_internet.dart'; +import '../../widgets/Erros/something_went_wrong.dart'; +import '../../widgets/shimmerLoadingContainer.dart'; + +FetchMyPropertiesCubit? cubitReference; +dynamic propertyType; +Map ref = {}; + +class SellRentScreen extends StatefulWidget { + final String type; + final ScrollController controller; + const SellRentScreen( + {super.key, required this.type, required this.controller}); + + @override + State createState() => _SellRentScreenState(); +} + +class _SellRentScreenState extends State + with AutomaticKeepAliveClientMixin { + late ScrollController controller; + + bool isNetworkAvailable = true; + @override + void initState() { + super.initState(); + controller = widget.controller..addListener(pageScrollListener); + context.read().fetchMyProperties(type: widget.type); + } + + void pageScrollListener() { + if (controller.isEndReached()) { + if (context.read().hasMoreData()) { + context + .read() + .fetchMoreProperties(type: widget.type); + } + } + } + + String statusText(String text) { + if (text == "1") { + return UiUtils.translate(context, "active"); + } else if (text == "0") { + return UiUtils.translate(context, "deactive"); + } + return ""; + } + + Color statusColor(String text) { + if (text == "1") { + return const Color.fromRGBO(64, 171, 60, 1); + } else { + return const Color.fromRGBO(238, 150, 43, 1); + } + } + + @override + Widget build(BuildContext context) { + super.build(context); + + if (widget.type == "sell") { + ref['sell'] = context.read(); + } else { + ref['rent'] = context.read(); + } + + return RefreshIndicator( + color: context.color.tertiaryColor, + onRefresh: () async { + context + .read() + .fetchMyProperties(type: widget.type); + }, + child: Scaffold( + backgroundColor: context.color.backgroundColor, + body: BlocBuilder( + builder: (context, state) { + if (state is FetchMyPropertiesInProgress) { + return buildMyPropertyShimmer(); + } + if (state is FetchMyPropertiesFailure) { + if (state.errorMessage is ApiException) { + if (state.errorMessage.errorMessage == "no-internet") { + return NoInternet( + onRetry: () { + context + .read() + .fetchMyProperties(type: widget.type); + }, + ); + } + } + + return const SomethingWentWrong(); + } + + if (state is FetchMyPropertiesSuccess) { + if (state.myProperty.isEmpty) { + return SizedBox( + height: context.screenHeight - 150.rh(context), + child: NoDataFound( + height: 200, + title: "noPropertyAdded".translate(context), + description: "noPropertyDescription".translate(context), + onTap: () { + context + .read() + .fetchMyProperties(type: widget.type); + }, + ), + ); + } + + return ListView.separated( + physics: const AlwaysScrollableScrollPhysics(), + controller: controller, + padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 16), + itemCount: + state.myProperty.length + (state.isLoadingMore ? 1 : 0), + separatorBuilder: (context, index) { + return const SizedBox( + height: 2, + ); + }, + itemBuilder: ((context, index) { + if (state.myProperty.length == index) { + return const Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [CircularProgressIndicator()], + ); + } + + PropertyModel property = state.myProperty[index]; + + return GestureDetector( + onTap: () { + cubitReference = context.read(); + Navigator.pushNamed( + context, + Routes.propertyDetails, + arguments: { + 'propertyData': property, + 'fromMyProperty': true + }, + ).then((value) { + if (value == true) { + context + .read() + .fetchMyProperties(type: widget.type); + } + }); + }, + child: BlocProvider( + create: (context) => AddToFavoriteCubitCubit(), + child: PropertyHorizontalCard( + property: property, + + statusButton: StatusButton( + lable: statusText(property.status.toString()), + color: statusColor(property.status.toString()), + textColor: context.color.buttonColor, + ), + // useRow: true, + ), + ), + ); + }), + ); + } + + return Container(); + }), + ), + ); + } + + Widget buildMyPropertyShimmer() { + return ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: const EdgeInsets.symmetric( + vertical: 10 + defaultPadding, horizontal: defaultPadding), + itemCount: 5, + separatorBuilder: (context, index) { + return const SizedBox( + height: 12, + ); + }, + itemBuilder: (context, index) { + return Container( + width: double.maxFinite, + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(15), + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const ClipRRect( + clipBehavior: Clip.antiAliasWithSaveLayer, + borderRadius: BorderRadius.all(Radius.circular(15)), + child: CustomShimmer(height: 90, width: 90), + ), + const SizedBox( + width: 10, + ), + Expanded( + child: LayoutBuilder(builder: (context, c) { + return Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox( + height: 10, + ), + CustomShimmer( + height: 10, + width: c.maxWidth - 50, + ), + const SizedBox( + height: 10, + ), + const CustomShimmer( + height: 10, + ), + const SizedBox( + height: 10, + ), + CustomShimmer( + height: 10, + width: c.maxWidth / 1.2, + ), + const SizedBox( + height: 10, + ), + CustomShimmer( + height: 10, + width: c.maxWidth / 4, + ), + ], + ); + }), + ) + ]), + ); + }, + ); + } + + @override + bool get wantKeepAlive => true; +} diff --git a/lib/Ui/screens/proprties/my_properties_screen.dart b/lib/Ui/screens/proprties/my_properties_screen.dart new file mode 100644 index 0000000..f71884e --- /dev/null +++ b/lib/Ui/screens/proprties/my_properties_screen.dart @@ -0,0 +1,245 @@ +import 'package:ebroker/Ui/screens/main_activity.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../app/app_theme.dart'; +import '../../../data/cubits/property/fetch_my_properties_cubit.dart'; +import '../../../data/cubits/system/app_theme_cubit.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/ui_utils.dart'; +import 'Property%20tab/sell_rent_screen.dart'; + +int propertyScreenCurrentPage = 0; +ValueNotifier emptyCheckNotifier = + ValueNotifier({"isSellEmpty": false, "isRentEmpty": false}); + +class PropertiesScreen extends StatefulWidget { + const PropertiesScreen({Key? key}) : super(key: key); + + State createState() => MyPropertyState(); +} + +class MyPropertyState extends State + with TickerProviderStateMixin { + int offset = 0, total = 0; + int selectTab = 0; + final PageController _pageController = PageController(); + bool isSellEmpty = false; + bool isRentEmpty = false; + + @override + void initState() { + // if (ref.containsKey('sell')) { + // (ref['sell'] as FetchMyPropertiesCubit).stream.listen((event) { + // if (event is FetchMyPropertiesSuccess) { + // isSellEmpty = event.myProperty.isEmpty; + // setState(() {}); + // } + // }); + // } + // if (ref.containsKey("rent")) { + // (ref['rent'] as FetchMyPropertiesCubit).stream.listen((event) { + // if (event is FetchMyPropertiesSuccess) { + // isRentEmpty = event.myProperty.isEmpty; + // setState(() {}); + // } + // }); + // } + + super.initState(); + } + + @override + Widget build(BuildContext context) { + return AnnotatedRegion( + value: SystemUiOverlayStyle( + systemNavigationBarDividerColor: Colors.transparent, + // systemNavigationBarColor: Theme.of(context).colorScheme.secondaryColor, + systemNavigationBarIconBrightness: + context.watch().state.appTheme == AppTheme.dark + ? Brightness.light + : Brightness.dark, + // + statusBarColor: Theme.of(context).colorScheme.secondaryColor, + statusBarBrightness: + context.watch().state.appTheme == AppTheme.dark + ? Brightness.dark + : Brightness.light, + statusBarIconBrightness: + context.watch().state.appTheme == AppTheme.dark + ? Brightness.light + : Brightness.dark), + child: Scaffold( + backgroundColor: context.color.primaryColor, + appBar: UiUtils.buildAppBar( + context, + title: "myProperty".translate(context), + // bottomHeight: 49, + bottomHeight: 49, + + bottom: [ + Padding( + padding: const EdgeInsetsDirectional.fromSTEB(15, 8, 15, 0), + child: Row( + children: [ + customTab( + context, + isSelected: (selectTab == 0), + onTap: () { + selectTab = 0; + propertyScreenCurrentPage = 0; + setState(() {}); + _pageController.jumpToPage(0); + cubitReference = context.read(); + propertyType = "sell"; + }, + name: UiUtils.translate(context, "sell"), + onDoubleTap: () {}, + ), + const SizedBox( + width: 5, + ), + customTab( + context, + isSelected: selectTab == 1, + onTap: () { + _pageController.jumpToPage(1); + selectTab = 1; + propertyScreenCurrentPage = 1; + + cubitReference = context.read(); + propertyType = "rent"; + + setState(() {}); + }, + onDoubleTap: () {}, + name: UiUtils.translate(context, "rent"), + ), + ], + ), + ) + ], + ) + + // appBar: AppBar( + // elevation: 0, + // centerTitle: false, + // backgroundColor: context.color.primaryColor, + // title: Text(UiUtils.getTranslatedLabel(context, "myProperty")) + // .color(context.color.textColorDark), + // bottom: PreferredSize( + // preferredSize: const Size.fromHeight(40), + // child: Padding( + // padding: + // const EdgeInsets.symmetric(horizontal: 16.0, vertical: 5), + // child: Row( + // children: [ + // customTab( + // context, + // isSelected: (selectTab == 0), + // onTap: () { + // selectTab = 0; + // propertyScreenCurrentPage = 0; + // setState(() {}); + // _pageController.jumpToPage(0); + // cubitReference = context.read(); + // propertyType = "sell"; + // }, + // name: UiUtils.getTranslatedLabel(context, "sell"), + // onDoubleTap: () {}, + // ), + // const SizedBox( + // width: 5, + // ), + // customTab( + // context, + // isSelected: selectTab == 1, + // onTap: () { + // _pageController.jumpToPage(1); + // selectTab = 1; + // propertyScreenCurrentPage = 1; + + // cubitReference = context.read(); + // propertyType = "rent"; + + // setState(() {}); + // }, + // onDoubleTap: () {}, + // name: UiUtils.getTranslatedLabel(context, "rent"), + // ), + // ], + // ), + // )), + // ), + + , + body: ScrollConfiguration( + behavior: RemoveGlow(), + child: PageView( + onPageChanged: (value) { + propertyScreenCurrentPage = value; + selectTab = value; + setState(() {}); + }, + controller: _pageController, + children: [ + BlocProvider( + create: (context) => FetchMyPropertiesCubit(), + child: SellRentScreen( + type: "sell", + key: const Key("0"), + controller: sellScreenController, + ), + ), + BlocProvider( + create: (context) => FetchMyPropertiesCubit(), + child: SellRentScreen( + type: "rent", + key: const Key("1"), + controller: rentScreenController, + ), + ), + ], + ), + ), + ), + ); + } + + Widget customTab( + BuildContext context, { + required bool isSelected, + required String name, + required Function() onTap, + required Function() onDoubleTap, + }) { + return GestureDetector( + onTap: onTap, + onDoubleTap: onDoubleTap, + child: Container( + constraints: const BoxConstraints( + minWidth: 110, + ), + height: 40, + decoration: BoxDecoration( + color: (isSelected + ? (context.color.tertiaryColor) + : context.color.textColorDark) + .withOpacity(0.04), + border: Border.all( + color: isSelected + ? context.color.tertiaryColor + : context.color.textLightColor, + ), + borderRadius: BorderRadius.circular(11)), + child: Center( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Text(name).size(context.font.large), + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/proprties/properties_list.dart b/lib/Ui/screens/proprties/properties_list.dart new file mode 100644 index 0000000..a617aac --- /dev/null +++ b/lib/Ui/screens/proprties/properties_list.dart @@ -0,0 +1,320 @@ +import 'dart:developer'; + +import 'package:ebroker/Ui/screens/widgets/Erros/no_internet.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:google_mobile_ads/google_mobile_ads.dart'; + +import '../../../app/routes.dart'; +import '../../../data/cubits/property/fetch_property_from_category_cubit.dart'; +import '../../../data/model/property_model.dart'; +import '../../../utils/AdMob/bannerAdLoadWidget.dart'; +import '../../../utils/AdMob/interstitialAdManager.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/api.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../home/Widgets/property_horizontal_card.dart'; +import '../main_activity.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/Erros/no_data_found.dart'; +import '../widgets/shimmerLoadingContainer.dart'; + +class PropertiesList extends StatefulWidget { + final String? categoryId, categoryName; + + const PropertiesList({Key? key, this.categoryId, this.categoryName}) + : super(key: key); + + @override + PropertiesListState createState() => PropertiesListState(); + static Route route(RouteSettings routeSettings) { + Map? arguments = routeSettings.arguments as Map?; + return BlurredRouter( + builder: (_) => PropertiesList( + categoryId: arguments?['catID'] as String, + categoryName: arguments?['catName'] ?? "", + ), + ); + } +} + +class PropertiesListState extends State { + int offset = 0, total = 0; + + late ScrollController controller; + List propertylist = []; + int adPosition = 9; + InterstitialAdManager interstitialAdManager = InterstitialAdManager(); + @override + void initState() { + super.initState(); + searchbody = {}; + loadAd(); + interstitialAdManager.load(); + Constant.propertyFilter = null; + controller = ScrollController()..addListener(_loadMore); + context.read().fetchPropertyFromCategory( + int.parse( + widget.categoryId!, + ), + showPropertyType: false); + + Future.delayed(Duration.zero, () { + selectedcategoryId = widget.categoryId!; + selectedcategoryName = widget.categoryName!; + searchbody[Api.categoryId] = widget.categoryId; + setState(() {}); + }); + } + + BannerAd? _bannerAd; + bool _isLoaded = false; + void loadAd() { + _bannerAd = BannerAd( + adUnitId: Constant.admobBannerAndroid, + request: const AdRequest(), + size: AdSize.largeBanner, + listener: BannerAdListener( + // Called when an ad is successfully received. + onAdLoaded: (ad) { + debugPrint('$ad loaded.'); + setState(() { + _isLoaded = true; + }); + }, + // Called when an ad request failed. + onAdFailedToLoad: (ad, err) { + // Dispose the ad here to free resources. + ad.dispose(); + }, + ), + )..load(); + } + + @override + void dispose() { + controller.removeListener(_loadMore); + controller.dispose(); + super.dispose(); + } + + void _loadMore() async { + if (controller.isEndReached()) { + if (context.read().hasMoreData()) { + context + .read() + .fetchPropertyFromCategoryMore(); + } + } + } + + Widget? noInternetCheck(error) { + if (error is ApiException) { + if ((error).errorMessage == 'no-internet') { + return NoInternet( + onRetry: () { + context + .read() + .fetchPropertyFromCategory( + int.parse( + widget.categoryId!, + ), + showPropertyType: false); + }, + ); + } + } + return null; + } + + int itemIndex = 0; + @override + Widget build(BuildContext context) { + return bodyWidget(); + } + + Widget bodyWidget() { + return WillPopScope( + onWillPop: () async { + await interstitialAdManager.show(); + Constant.propertyFilter = null; + return true; + }, + child: Scaffold( + backgroundColor: Theme.of(context).colorScheme.primaryColor, + appBar: UiUtils.buildAppBar(context, + showBackButton: true, + title: selectedcategoryName == "" + ? widget.categoryName + : selectedcategoryName, + actions: [ + filterOptionsBtn(), + ]), + bottomNavigationBar: const BottomAppBar( + child: BannerAdWidget(bannerSize: AdSize.banner), + ), + body: BlocBuilder(builder: (context, state) { + if (state is FetchPropertyFromCategoryInProgress) { + return ListView.builder( + padding: + const EdgeInsets.symmetric(horizontal: 15, vertical: 15), + itemCount: 10, + itemBuilder: (context, index) { + return buildPropertiesShimmer(context); + }, + ); + } + + if (state is FetchPropertyFromCategoryFailure) { + var error = noInternetCheck(state.errorMessage); + if (error != null) { + return error; + } + return Center( + child: Text(state.errorMessage), + ); + } + if (state is FetchPropertyFromCategorySuccess) { + if (state.propertymodel.isEmpty) { + return Center( + child: NoDataFound( + onTap: () { + context + .read() + .fetchPropertyFromCategory( + int.parse( + widget.categoryId!, + ), + showPropertyType: false); + }, + ), + ); + } + + return Column( + children: [ + Expanded( + child: ListView.separated( + shrinkWrap: true, + controller: controller, + padding: const EdgeInsets.symmetric( + horizontal: 15, vertical: 3), + itemCount: state.propertymodel.length, + physics: const BouncingScrollPhysics(), + separatorBuilder: (context, index) { + if ((index + 1) % adPosition == 0) { + return (_bannerAd == null) + ? Container() + : Builder(builder: (context) { + return BannerAdWidget(); + }); + } + + return const SizedBox.shrink(); + }, + itemBuilder: (context, index) { + PropertyModel property = state.propertymodel[index]; + return GestureDetector( + onTap: () { + Navigator.pushNamed( + context, + Routes.propertyDetails, + arguments: { + 'propertyData': property, + 'propertiesList': state.propertymodel, + 'fromMyProperty': false, + }, + ); + }, + child: PropertyHorizontalCard( + property: property, + ), + ); + }, + ), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ); + } + return Container(); + })), + ); + } + + Widget buildPropertiesShimmer(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + height: 120.rh(context), + decoration: BoxDecoration( + border: Border.all(width: 1.5, color: context.color.borderColor), + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(18)), + child: Row( + children: [ + CustomShimmer( + height: 120.rh(context), + width: 100.rw(context), + ), + SizedBox( + width: 10.rw(context), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + CustomShimmer( + width: 100.rw(context), + height: 10, + borderRadius: 7, + ), + CustomShimmer( + width: 150.rw(context), + height: 10, + borderRadius: 7, + ), + CustomShimmer( + width: 120.rw(context), + height: 10, + borderRadius: 7, + ), + CustomShimmer( + width: 80.rw(context), + height: 10, + borderRadius: 7, + ) + ], + ) + ], + ), + ), + ); + } + + Widget filterOptionsBtn() { + return IconButton( + onPressed: () { + // show filter screen + + // Constant.propertyFilter = null; + Navigator.pushNamed(context, Routes.filterScreen, + arguments: {"showPropertyType": false}).then((value) { + if (value == true) { + context + .read() + .fetchPropertyFromCategory(int.parse(widget.categoryId!), + showPropertyType: false); + } + setState(() {}); + }); + }, + icon: Icon( + Icons.filter_list_rounded, + color: context.color.textColorDark, + )); + } +} diff --git a/lib/Ui/screens/proprties/property_details.dart b/lib/Ui/screens/proprties/property_details.dart new file mode 100644 index 0000000..23a3797 --- /dev/null +++ b/lib/Ui/screens/proprties/property_details.dart @@ -0,0 +1,2585 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first, use_build_context_synchronously +import 'dart:async'; +import 'dart:convert'; +import 'dart:ui'; + +import 'package:ebroker/Ui/screens/chat/chat_screen.dart'; +import 'package:ebroker/Ui/screens/proprties/Property%20tab/sell_rent_screen.dart'; +import 'package:ebroker/Ui/screens/proprties/widgets/report_property_widget.dart'; +import 'package:ebroker/Ui/screens/widgets/blurred_dialoge_box.dart'; +import 'package:ebroker/Ui/screens/widgets/like_button_widget.dart'; +import 'package:ebroker/Ui/screens/widgets/panaroma_image_view.dart'; +import 'package:ebroker/Ui/screens/widgets/read_more_text.dart'; +import 'package:ebroker/app/routes.dart'; +import 'package:ebroker/data/Repositories/interest_repository.dart'; +import 'package:ebroker/data/Repositories/subscription_repository.dart'; +import 'package:ebroker/data/cubits/Report/property_report_cubit.dart'; +import 'package:ebroker/data/cubits/category/fetch_category_cubit.dart'; +import 'package:ebroker/data/cubits/chatCubits/delete_message_cubit.dart'; +import 'package:ebroker/data/cubits/chatCubits/load_chat_messages.dart'; +import 'package:ebroker/data/cubits/enquiry/store_enqury_id.dart'; +import 'package:ebroker/data/cubits/favorite/add_to_favorite_cubit.dart'; +import 'package:ebroker/data/cubits/property/Interest/change_interest_in_property_cubit.dart'; +import 'package:ebroker/data/cubits/property/delete_property_cubit.dart'; +import 'package:ebroker/data/cubits/property/fetch_my_properties_cubit.dart'; +import 'package:ebroker/data/cubits/property/set_property_view_cubit.dart'; +import 'package:ebroker/data/cubits/property/update_property_status.dart'; +import 'package:ebroker/data/cubits/subscription/get_subsctiption_package_limits_cubit.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/interested_user_model.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:ebroker/utils/AppIcon.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/api.dart'; +import 'package:ebroker/utils/constant.dart'; +import 'package:ebroker/utils/hive_utils.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:ebroker/utils/string_extenstion.dart'; +import 'package:flick_video_player/flick_video_player.dart'; +import 'package:flutter/foundation.dart' as f; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:google_mobile_ads/google_mobile_ads.dart'; +import 'package:url_launcher/url_launcher.dart' as urllauncher; +import 'package:url_launcher/url_launcher.dart'; +import 'package:video_player/video_player.dart'; +import 'package:youtube_player_flutter/youtube_player_flutter.dart'; + +import '../../../data/cubits/Interested/get_interested_user_cubit.dart'; +import '../../../data/cubits/chatCubits/send_message.dart'; +import '../../../data/cubits/outdoorfacility/fetch_outdoor_facility_list.dart'; +import '../../../data/cubits/system/fetch_system_settings_cubit.dart'; +import '../../../data/helper/widgets.dart'; +import '../../../data/model/category.dart'; +import '../../../settings.dart'; +import '../../../utils/AdMob/interstitialAdManager.dart'; +import '../../../utils/guestChecker.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/ui_utils.dart'; +import '../analytics/analytics_screen.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/all_gallary_image.dart'; +import '../widgets/video_view_screen.dart'; +import '../widgets/my_maps.dart'; + +Map rentDurationMap = { + "Quarterly": "Quarter", + "Monthly": "Month", + "Yearly": "Year", + "Daily": "Daily", + "Day": "Day" +}; + +class PropertyDetails extends StatefulWidget { + final PropertyModel? property; + final bool? fromMyProperty; + final bool? fromCompleteEnquiry; + final bool fromSlider; + final bool? fromPropertyAddSuccess; + const PropertyDetails( + {Key? key, + this.fromPropertyAddSuccess, + required this.property, + this.fromSlider = false, + this.fromMyProperty, + this.fromCompleteEnquiry}) + : super(key: key); + + @override + PropertyDetailsState createState() => PropertyDetailsState(); + + static Route route(RouteSettings routeSettings) { + try { + Map? arguments = routeSettings.arguments as Map?; + return BlurredRouter( + builder: (_) => MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => ChangeInterestInPropertyCubit(), + ), + BlocProvider( + create: (context) => UpdatePropertyStatusCubit(), + ), + BlocProvider( + create: (context) => DeletePropertyCubit(), + ), + BlocProvider( + create: (context) => PropertyReportCubit(), + ), + BlocProvider( + create: (context) => GetInterestedUserCubit(), + ), + ], + child: PropertyDetails( + property: arguments?['propertyData'], + fromMyProperty: arguments?['fromMyProperty'] ?? false, + fromSlider: arguments?['fromSlider'] ?? false, + fromCompleteEnquiry: arguments?['fromCompleteEnquiry'] ?? false, + fromPropertyAddSuccess: arguments?['fromSuccess'] ?? false, + ), + ), + ); + } catch (e) { + rethrow; + } + } +} + +class PropertyDetailsState extends State + with TickerProviderStateMixin, AutomaticKeepAliveClientMixin { + FlickManager? flickManager; + ValueNotifier shouldShowSubscriptionOverlay = ValueNotifier(false); + // late Property propertyData; + bool favoriteInProgress = false; + bool isPlayingYoutubeVideo = false; + bool fromMyProperty = false; //get its value from Widget + bool fromCompleteEnquiry = false; //get its value from Widget + List promotedProeprtiesIds = []; + bool toggleEnqButton = false; + PropertyModel? property; + bool isPromoted = false; + bool showGoogleMap = false; + bool isEnquiryFromChat = false; + BannerAd? _bannerAd; + @override + bool get wantKeepAlive => true; + GlobalKey appBarKey = GlobalKey(); + + final Completer _controller = + Completer(); + List? gallary; + String youtubeVideoThumbnail = ""; + bool? _isLoaded; + InterstitialAdManager interstitialAdManager = InterstitialAdManager(); + bool isPremiumProperty = true; + bool isPremiumUser = false; + bool isReported = false; + + bool shouldRestrictPropertyAccess() { + if (isPremiumProperty && !isPremiumUser) { + return true; + } + return false; + } + + @override + void initState() { + super.initState(); + context + .read() + .getLimits(SubscriptionLimitType.property); + isPremiumProperty = widget.property?.allPropData['is_premium'] ?? false; + + isPremiumUser = context + .read() + .getRawSettings()['is_premium'] ?? + false; + isReported = widget.property?.allPropData?['is_reported'] ?? false; + + loadAd(); + // Future.delayed( + // Duration(milliseconds: 50), + // () { + // Map widgetInfo = + // UiUtils.getWidgetInfo(context, appBarKey); + // bottomAppBarHeight = widgetInfo['height'] ?? 0; + // setState(() {}); + // }, + // ); + interstitialAdManager.load(); + // customListenerForConstant(); + //add title image along with gallery images + context.read().fetch(); + context.read().fetch("${widget.property?.id}"); + Future.delayed( + const Duration(seconds: 3), + () { + showGoogleMap = true; + if (mounted) setState(() {}); + }, + ); + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + gallary = List.from(widget.property!.gallery!); + if (widget.property?.video != "") { + injectVideoInGallery(); + setState(() {}); + } + }); + + if (widget.fromSlider) { + getProperty(); + } else { + property = widget.property; + setData(); + } + + setViewdProperty(); + if (widget.property?.video != "" && + widget.property?.video != null && + !HelperUtils.isYoutubeVideo(widget.property?.video ?? "")) { + flickManager = FlickManager( + videoPlayerController: VideoPlayerController.network( + property!.video!, + ), + ); + flickManager?.onVideoEnd = () {}; + } + + if (widget.property?.video != "" && + widget.property?.video != null && + HelperUtils.isYoutubeVideo(widget.property?.video ?? "")) { + String? videoId = YoutubePlayer.convertUrlToId(property!.video!); + String thumbnail = YoutubePlayer.getThumbnail(videoId: videoId!); + youtubeVideoThumbnail = thumbnail; + setState(() {}); + } + } + + void loadAd() { + _bannerAd = BannerAd( + adUnitId: Constant.admobBannerAndroid, + request: const AdRequest(), + size: AdSize.largeBanner, + listener: BannerAdListener( + // Called when an ad is successfully received. + onAdLoaded: (ad) { + debugPrint('$ad loaded.'); + setState(() { + _isLoaded = true; + }); + }, + // Called when an ad request failed. + onAdFailedToLoad: (ad, err) { + // Dispose the ad here to free resources. + ad.dispose(); + }, + ), + )..load(); + } + + Future getProperty() async { + var response = await HelperUtils.sendApiRequest( + Api.apiGetProprty, + { + Api.id: widget.property!.id, + }, + true, + context, + passUserid: false); + if (response != null) { + var getdata = json.decode(response); + if (!getdata[Api.error]) { + getdata['data']; + setData(); + setState(() {}); + } + } + } + + void setData() { + fromMyProperty = widget.fromMyProperty!; + fromCompleteEnquiry = widget.fromCompleteEnquiry!; + } + + void setViewdProperty() { + if (property!.addedBy.toString() != HiveUtils.getUserId()) { + context.read().set(property!.id!.toString()); + } + } + + late final CameraPosition _kInitialPlace = CameraPosition( + target: LatLng( + double.parse( + (property?.latitude ?? "0"), + ), + double.parse( + (property?.longitude ?? "0"), + ), + ), + zoom: 14.4746, + ); + + @override + void dispose() { + flickManager?.dispose(); + + super.dispose(); + } + + void injectVideoInGallery() { + ///This will inject video in image list just like another platforms + if ((gallary?.length ?? 0) < 2) { + if (widget.property?.video != null) { + gallary?.add(Gallery( + id: 99999999999, + image: property!.video ?? "", + imageUrl: "", + isVideo: true)); + } + } else { + gallary?.insert( + 0, + Gallery( + id: 99999999999, + image: property!.video!, + imageUrl: "", + isVideo: true)); + } + + setState(() {}); + } + + String? _statusFilter(String value) { + if (value == "Sell" || value == "sell") { + return "sold".translate(context); + } + if (value == "Rent" || value == "rent") { + return "Rented".translate(context); + } + + return null; + } + + int? _getStatus(type) { + int? value; + if (type == "Sell" || type == "sell") { + value = 2; + } else if (type == "Rent" || type == "rent") { + value = 3; + } else if (type == "Rented" || type == "rented") { + value = 1; + } + return value; + } + +//main build + @override + Widget build(BuildContext context) { + super.build(context); + + print("ISRENTED ${isPremiumProperty} nd ${isPremiumUser}"); + + String rentPrice = (property!.price! + .priceFormate( + disabled: false, + ) + .toString() + .formatAmount(prefix: true)); + + if (property?.rentduration != "" && property?.rentduration != null) { + rentPrice = + ("$rentPrice / ") + (rentDurationMap[property!.rentduration] ?? ""); + } + + String Lat = property!.latitude.toString(); + String Long = property!.longitude.toString(); + + return SafeArea( + child: WillPopScope( + onWillPop: () async { + await interstitialAdManager.show(); + if (widget.fromPropertyAddSuccess ?? false) { + Navigator.popUntil(context, (route) => route.isFirst); + return false; + } + + showGoogleMap = false; + setState(() {}); + + return true; + }, + child: AnnotatedRegion( + value: UiUtils.getSystemUiOverlayStyle( + context: context, + ), + child: SafeArea( + child: BlocListener( + listener: (context, state) { + if (state is GetSubsctiptionPackageLimitsSuccess) { + isPremiumUser = state.packageLimit.isPremium; + setState(() {}); + } + }, + child: Stack( + children: [ + Scaffold( + appBar: UiUtils.buildAppBar(context, + hideTopBorder: true, + showBackButton: true, + actions: [ + if (!HiveUtils.isGuest()) ...[ + if (int.parse(HiveUtils.getUserId() ?? "0") == + property?.addedBy) + IconButton( + onPressed: () async { + DataOutput interestUser = + await InterestRepository() + .getInterestUser( + property!.id!.toString(), + offset: 0); + + GetInterestedUserCubit + interestedUserCubitReference = + context.read(); + + showModalBottomSheet( + context: context, + isScrollControlled: true, + enableDrag: true, + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(20)), + backgroundColor: context + .color.secondaryColor + .withOpacity(0.86), + constraints: BoxConstraints( + minWidth: double.infinity, + maxHeight: context.screenHeight * 0.7, + minHeight: context.screenHeight * 0.3), + builder: (context) { + return InterestedUserListWidget( + totalCount: + "${widget.property?.totalInterestedUsers}", + interestedUserCubitReference: + interestedUserCubitReference); + }, + ); + + return; + Navigator.push(context, BlurredRouter( + builder: (context) { + return AnalyticsScreen( + interestUserCount: widget + .property!.totalInterestedUsers + .toString(), + ); + }, + )); + }, + icon: Icon( + Icons.analytics, + color: context.color.tertiaryColor, + )), + ], + IconButton( + onPressed: () { + HelperUtils.share( + context, property!.id!, property?.slugId ?? ""); + }, + icon: Icon( + Icons.share, + color: context.color.tertiaryColor, + ), + ), + if (property?.addedBy.toString() == + HiveUtils.getUserId() && + property!.properyType != "Sold" && + property?.status == 1) + PopupMenuButton( + onSelected: (value) async { + var action = await UiUtils.showBlurredDialoge( + context, + dialoge: BlurredDialogBuilderBox( + title: "changePropertyStatus" + .translate(context), + acceptButtonName: + "change".translate(context), + contentBuilder: (context, s) { + return FittedBox( + fit: BoxFit.none, + child: Row( + mainAxisAlignment: + MainAxisAlignment.start, + children: [ + Container( + decoration: BoxDecoration( + color: context + .color.tertiaryColor, + borderRadius: + BorderRadius.circular( + 10)), + width: s.maxWidth / 4, + height: 50, + child: Center( + child: Text(property! + .properyType! + .translate(context)) + .color(context + .color.buttonColor)), + ), + Text( + "toArrow".translate(context), + ), + Container( + width: s.maxWidth / 4, + decoration: BoxDecoration( + color: context + .color.tertiaryColor + .withOpacity(0.4), + borderRadius: + BorderRadius.circular( + 10)), + height: 50, + child: Center( + child: Text(_statusFilter( + property! + .properyType!) ?? + "") + .color(context + .color.buttonColor)), + ), + ], + ), + ); + }), + ); + if (action == true) { + Future.delayed(Duration.zero, () { + context + .read() + .update( + propertyId: property!.id, + status: + _getStatus(property!.properyType), + ); + }); + } + }, + color: context.color.secondaryColor, + itemBuilder: (BuildContext context) { + return { + 'changeStatus'.translate(context), + }.map((String choice) { + return PopupMenuItem( + value: choice, + textStyle: TextStyle( + color: context.color.textColorDark), + child: Text(choice), + ); + }).toList(); + }, + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 4.0), + child: Icon( + Icons.more_vert_rounded, + color: context.color.tertiaryColor, + ), + ), + ), + const SizedBox( + width: 10, + ) + ]), + backgroundColor: context.color.backgroundColor, + floatingActionButton: (property == null || + property!.addedBy.toString() == HiveUtils.getUserId()) + ? const SizedBox.shrink() + : Container(), + bottomNavigationBar: isPlayingYoutubeVideo == false + ? BottomAppBar( + key: appBarKey, + padding: const EdgeInsets.symmetric(horizontal: 0), + color: context.color.secondaryColor, + child: bottomNavBar()) + : null, + floatingActionButtonLocation: + FloatingActionButtonLocation.centerFloat, + body: BlocListener( + listener: (context, state) { + if (state is DeletePropertyInProgress) { + Widgets.showLoader(context); + } + + if (state is DeletePropertySuccess) { + Widgets.hideLoder(context); + Future.delayed( + const Duration(milliseconds: 1000), + () { + Navigator.pop(context, true); + }, + ); + } + if (state is DeletePropertyFailure) { + Widgets.showLoader(context); + } + }, + child: SafeArea( + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: BlocListener( + listener: (context, state) { + if (state is UpdatePropertyStatusInProgress) { + Widgets.showLoader(context); + } + + if (state is UpdatePropertyStatusSuccess) { + Widgets.hideLoder(context); + Fluttertoast.showToast( + msg: "statusUpdated".translate(context), + backgroundColor: successMessageColor, + gravity: ToastGravity.TOP, + toastLength: Toast.LENGTH_LONG); + + (cubitReference as FetchMyPropertiesCubit) + .updateStatus( + property!.id!, property!.properyType!); + setState(() {}); + } + if (state is UpdatePropertyStatusFail) { + Widgets.hideLoder(context); + } + }, + child: Padding( + padding: EdgeInsets.symmetric( + horizontal: + isPlayingYoutubeVideo == false ? 20.0 : 0, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox( + height: 10, + ), + + if (!isPlayingYoutubeVideo) + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(20), + child: SizedBox( + height: 227.rh(context), + child: Stack( + children: [ + GestureDetector( + onTap: () { + // google map doesn't allow blur so we hide it:) + showGoogleMap = false; + setState(() {}); + UiUtils.showFullScreenImage( + context, + provider: NetworkImage( + property!.titleImage!, + ), + then: () { + showGoogleMap = true; + setState(() {}); + }, + ); + }, + child: UiUtils.getImage( + property!.titleImage!, + fit: BoxFit.cover, + width: double.infinity, + height: 227.rh(context), + showFullScreenImage: true, + ), + ), + PositionedDirectional( + top: 20, + end: 20, + child: LikeButtonWidget( + onStateChange: + (AddToFavoriteCubitState + state) { + if (state + is AddToFavoriteCubitInProgress) { + favoriteInProgress = true; + setState( + () {}, + ); + } else { + favoriteInProgress = + false; + setState( + () {}, + ); + } + }, + property: property!, + ), + ), + PositionedDirectional( + bottom: 5, + end: 18, + child: Visibility( + visible: + property?.threeDImage != + "", + child: GestureDetector( + onTap: () { + Navigator.push( + context, + BlurredRouter( + builder: (context) => + PanaromaImageScreen( + imageUrl: property! + .threeDImage!, + ), + ), + ); + }, + child: Container( + decoration: BoxDecoration( + color: context.color + .secondaryColor, + shape: BoxShape.circle, + ), + height: 40.rh(context), + width: 40.rw(context), + child: Padding( + padding: + const EdgeInsets + .all(5.0), + child: UiUtils.getSvg( + AppIcons.v360Degree, + color: context.color + .tertiaryColor), + ), + ), + ), + ), + ), + advertismentLable() + ], + ), + ), + ), + const SizedBox( + height: 15, + ), + Row(children: [ + UiUtils.imageType( + property?.category!.image ?? "", + width: 18, + height: 18, + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null), + const SizedBox( + width: 10, + ), + SizedBox( + width: 158.rw(context), + child: Text( + property!.category!.category!) + .setMaxLines(lines: 1) + .size( + context.font.normal, + ) + .bold( + weight: FontWeight.w400, + ) + .color(UiUtils.makeColorLight( + context.color.textColorDark)), + ), + const Spacer(), + Container( + width: 50, + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(3.5), + color: + context.color.tertiaryColor), + child: Padding( + padding: const EdgeInsets.all(3.0), + child: Center( + child: Text( + property!.properyType + .toString() + .toLowerCase() + .translate(context), + ).size(context.font.small).color( + context.color.buttonColor)), + ), + ) + ]), + const SizedBox( + height: 15, + ), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Text(property!.title! + .firstUpperCase()) + .color( + context.color.textColorDark) + .size(18) + .bold(weight: FontWeight.w600), + ), + Text(property?.postCreated ?? "") + .color(context.color.textColorDark + .withOpacity(0.6)), + ], + ), + const SizedBox(height: 13), + Row( + children: [ + if (property!.properyType + .toString() + .toLowerCase() == + "rent") ...[ + Text(rentPrice) + .color( + context.color.tertiaryColor) + .size(18) + .bold(weight: FontWeight.w700), + ] else ...[ + Text(property!.price! + .priceFormate( + disabled: false) + .formatAmount(prefix: true)) + .color( + context.color.tertiaryColor) + .size(18) + .bold(weight: FontWeight.w700), + ], + if (Constant.isNumberWithSuffix) ...[ + if (property!.properyType + .toString() + .toLowerCase() != + "rent") ...[ + const SizedBox( + width: 5, + ), + Text("(${property!.price!})") + .color(context + .color.tertiaryColor) + .size(18) + .bold( + weight: FontWeight.w500), + ] + ] + ], + ), + const SizedBox( + height: 20, + ), + Wrap( + direction: Axis.horizontal, + crossAxisAlignment: + WrapCrossAlignment.start, + runAlignment: WrapAlignment.start, + alignment: WrapAlignment.start, + children: List.generate( + property?.parameters?.length ?? 0, + (index) { + Parameter? parameter = + property?.parameters![index]; + bool isParameterValueEmpty = + (parameter?.value == "" || + parameter?.value == "0" || + parameter?.value == null || + parameter?.value == "null"); + + ///If it has no value + if (isParameterValueEmpty) { + return const SizedBox.shrink(); + } + + return ConstrainedBox( + constraints: BoxConstraints( + minWidth: + (context.screenWidth / 2) - + 40), + child: Padding( + padding: + const EdgeInsets.fromLTRB( + 0, 8, 8, 8), + child: SizedBox( + // height: 37, + child: Row( + crossAxisAlignment: + CrossAxisAlignment + .start, + mainAxisSize: + MainAxisSize.min, + children: [ + Container( + width: 36.rw(context), + height: 36.rh(context), + alignment: + Alignment.center, + decoration: BoxDecoration( + color: context.color + .tertiaryColor + .withOpacity( + 0.2), + borderRadius: + BorderRadius + .circular( + 10)), + child: SizedBox( + height: + 20.rh(context), + width: 20.rw(context), + child: FittedBox( + child: UiUtils + .imageType( + parameter + ?.image ?? + "", + fit: BoxFit.cover, + color: Constant + .adaptThemeColorSvg + ? context + .color + .tertiaryColor + : null, + ), + ), + ), + ), + SizedBox( + width: 10.rw(context), + ), + Column( + crossAxisAlignment: + CrossAxisAlignment + .start, + mainAxisSize: + MainAxisSize.min, + children: [ + Text(parameter + ?.name ?? + "") + .size(12) + .color(context + .color + .textColorDark + .withOpacity( + 0.8)), + if (parameter + ?.typeOfParameter == + "file") ...{ + InkWell( + onTap: () async { + await urllauncher.launchUrl( + Uri.parse( + parameter! + .value), + mode: LaunchMode + .externalApplication); + }, + child: Text( + UiUtils.translate( + context, + "viewFile"), + ) + .underline() + .color(context + .color + .tertiaryColor), + ), + } else if (parameter + ?.value + is List) ...{ + Text((parameter + ?.value + as List) + .join(",")) + } else ...[ + if (parameter + ?.typeOfParameter == + "textarea") ...[ + SizedBox( + width: MediaQuery.of( + context) + .size + .width * + 0.7, + child: Text( + "${parameter?.value}") + .size(14) + .bold( + weight: FontWeight + .w600, + ), + ) + ] else ...[ + Text("${parameter?.value}") + .size(14) + .bold( + weight: + FontWeight + .w600, + ) + ] + ] + ], + ) + ]), + ), + ), + ); + }), + ), + const SizedBox( + height: 14, + ), + UiUtils.getDivider(), + const SizedBox( + height: 14, + ), + Text(UiUtils.translate( + context, "aboutThisPropLbl")) + .color(context.color.textColorDark) + .size(16) + .bold(weight: FontWeight.w600), + const SizedBox( + height: 15, + ), + ReadMoreText( + text: property?.description ?? "", + style: TextStyle( + color: context.color.textColorDark + .withOpacity(0.7)), + readMoreButtonStyle: TextStyle( + color: + context.color.tertiaryColor)), + const SizedBox( + height: 20, + ), + + //TODO: + if (_bannerAd != null && + Constant.isAdmobAdsEnabled) + SizedBox( + width: _bannerAd?.size.width + .toDouble(), + height: _bannerAd?.size.height + .toDouble(), + child: AdWidget(ad: _bannerAd!)), + + const SizedBox( + height: 20, + ), + if (widget + .property + ?.assignedOutdoorFacility + ?.isNotEmpty ?? + false) ...[ + Text(UiUtils.translate( + context, "outdoorFacilities")) + .color(context.color.textColorDark) + .size(16) + .bold(weight: FontWeight.w600), + const SizedBox(height: 10), + ], + OutdoorFacilityListWidget( + outdoorFacilityList: widget.property + ?.assignedOutdoorFacility ?? + []), + + Text(UiUtils.translate( + context, "listedBy")) + .color(context.color.textColorDark) + .size(16) + .bold(weight: FontWeight.w600), + const SizedBox( + height: 14, + ), + GestureDetector( + onTap: () {}, + child: AgentProfileWidget( + hideDetails: + shouldRestrictPropertyAccess(), + widget: widget, + ), + ), + const SizedBox( + height: 10, + ), + if (gallary?.isNotEmpty ?? false) ...[ + Text(UiUtils.translate( + context, "gallery")) + .color(context.color.textColorDark) + .size(16) + .bold(weight: FontWeight.w600), + SizedBox( + height: 10.rh(context), + ), + ], + if (gallary?.isNotEmpty ?? false) ...[ + Row( + children: List.generate( + (gallary?.length.clamp(0, 4)) ?? 0, + (index) { + return Padding( + padding: + const EdgeInsets.symmetric( + horizontal: 3), + child: ClipRRect( + borderRadius: + BorderRadius.circular(18), + child: Stack( + children: [ + GestureDetector( + onTap: () { + if (gallary?[index] + .isVideo == + true) return; + + //google map doesn't allow blur so we hide it:) + showGoogleMap = false; + setState(() {}); + + var images = gallary + ?.map((e) => + e.imageUrl) + .toList(); + + UiUtils + .imageGallaryView( + context, + images: images!, + initalIndex: index, + then: () { + showGoogleMap = + true; + setState(() {}); + }, + ); + }, + child: SizedBox( + width: 76.rw(context), + height: 76.rh(context), + child: gallary?[index] + .isVideo == + true + ? Container( + child: UiUtils.getImage( + youtubeVideoThumbnail, + fit: BoxFit + .cover), + ) + : UiUtils.getImage( + gallary?[index] + .imageUrl ?? + "", + fit: BoxFit + .cover), + ), + ), + if (gallary?[index] + .isVideo == + true) + Positioned.fill( + child: + GestureDetector( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return VideoViewScreen( + videoUrl: gallary?[ + index] + .image ?? + "", + flickManager: + flickManager, + ); + }, + )); + }, + child: Container( + color: Colors.black + .withOpacity(0.3), + child: FittedBox( + fit: BoxFit.none, + child: Container( + decoration: BoxDecoration( + shape: BoxShape + .circle, + color: context + .color + .tertiaryColor + .withOpacity( + 0.8)), + width: 30, + height: 30, + child: const Icon( + Icons + .play_arrow, + color: Colors + .white, + ), + ), + ), + ), + )), + if (index == 3) + Positioned.fill( + child: + GestureDetector( + onTap: () { + Navigator.push( + context, + BlurredRouter( + builder: (context) { + return AllGallaryImages( + youtubeThumbnail: + youtubeVideoThumbnail, + images: property + ?.gallery ?? + []); + }, + )); + }, + child: Container( + alignment: + Alignment.center, + color: Colors.black + .withOpacity(0.3), + child: Text( + "+${(property?.gallery?.length ?? 0) - 3}") + .color( + Colors.white, + ) + .size(context + .font.large) + .bold(), + ), + )) + ], + ), + ), + ); + }, + )) + ], + const SizedBox( + height: 15, + ), + Text(UiUtils.translate( + context, "locationLbl")) + .color(context.color.textColorDark) + .size(context.font.large) + .bold(weight: FontWeight.w600), + SizedBox( + height: 10.rh(context), + ), + Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Text("${UiUtils.translate(context, "addressLbl")} :") + .size(context.font.normal) + .color( + context.color.textColorDark), + // .bold(weight: FontWeight.w600), + SizedBox( + height: 5.rh(context), + ), + Row( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + UiUtils.getSvg(AppIcons.location, + color: context + .color.tertiaryColor), + SizedBox( + width: 5.rw(context), + ), + Expanded( + child: HideDetailsBlur( + hide: + shouldRestrictPropertyAccess(), + child: Text( + "${property?.address!}"), + ), + ) + ], + ), + ], + ), + SizedBox( + height: 10.rh(context), + ), + SizedBox( + height: 175, + child: ClipRRect( + borderRadius: + BorderRadius.circular(10), + child: Stack( + fit: StackFit.expand, + children: [ + Image.asset( + "assets/map.png", + fit: BoxFit.cover, + ), + BackdropFilter( + filter: ImageFilter.blur( + sigmaX: 4.0, + sigmaY: 4.0, + ), + child: Center( + child: MaterialButton( + onPressed: () { + if (shouldRestrictPropertyAccess()) { + GuestChecker.check( + onNotGuest: () { + shouldShowSubscriptionOverlay + .value = true; + return; + }, + ); + return; + } + + Navigator.push(context, + BlurredRouter( + builder: (context) { + return Scaffold( + extendBodyBehindAppBar: + true, + appBar: AppBar( + elevation: 0, + iconTheme: IconThemeData( + color: context + .color + .tertiaryColor), + backgroundColor: + Colors + .transparent, + ), + body: MyMaps( + latitudeString: Lat, + longitudeString: Long, + ), + ); + }, + )); + }, + shape: + RoundedRectangleBorder( + borderRadius: + BorderRadius + .circular( + 5)), + color: context + .color.tertiaryColor, + elevation: 0, + child: + shouldRestrictPropertyAccess() + ? Icon( + Icons + .lock_open_outlined, + color: context + .color + .secondaryColor + .withOpacity( + 0.8), + ) + : Text(("viewMap" + .translate( + context))) + .color( + context.color + .buttonColor, + ), + ), + ), + ), + ], + ), + ), + ), + const SizedBox( + height: 18, + ), + if (!HiveUtils.isGuest()) ...[ + if (int.parse( + HiveUtils.getUserId() ?? "0") != + property?.addedBy) + Row( + children: [ + // sendEnquiryButtonWithState(), + setInterest(), + ], + ), + ], + const SizedBox( + height: 18, + ), + if (!reportedProperties + .contains(widget.property!.id) && + widget.property!.addedBy.toString() != + HiveUtils.getUserId() && + !isReported) + ReportPropertyButton( + propertyId: property!.id!, + onSuccess: () { + setState( + () {}, + ); + }, + ) + ], + ), + + //here + SizedBox( + height: 20.rh(context), + ), + ], + ), + ), + ), + ), + ), + ), + ), + ValueListenableBuilder( + valueListenable: shouldShowSubscriptionOverlay, + builder: (context, value, child) { + return SizedBox( + height: context.screenHeight, + child: AnimatedOpacity( + duration: const Duration(milliseconds: 300), + opacity: value == true ? 1 : 0, + child: IgnorePointer( + ignoring: !value, + child: GestureDetector( + onTap: () { + shouldShowSubscriptionOverlay.value = false; + }, + child: Padding( + padding: EdgeInsets.only( + bottom: + getBottomNavigationBarHeight(context)), + child: Container( + // height: context.screenHeight - .rh(context), + + child: ClipRRect( + child: BackdropFilter( + filter: ImageFilter.blur( + sigmaY: 5, sigmaX: 4), + child: Container( + color: Colors.black.withOpacity(0.5), + width: double.infinity, + child: Stack( + fit: StackFit.expand, + children: [ + Align( + alignment: + Alignment.bottomCenter, + child: Column( + mainAxisSize: + MainAxisSize.min, + children: [ + Material( + color: Colors.transparent, + child: Text( + "toAccessSubscribe" + .translate(context), + style: const TextStyle( + shadows: [ + Shadow( + offset: Offset( + 1.0, 1.0), + blurRadius: 3.0, + color: Color + .fromARGB( + 255, + 0, + 0, + 0), + ), + ]), + ) + .size(context + .font.larger) + .bold() + .centerAlign() + .color(context.color + .secondaryColor), + ), + const SizedBox( + height: 15, + ), + MaterialButton( + height: 48, + minWidth: + context.screenWidth * + 0.5, + onPressed: () { + Navigator.pushNamed( + context, + Routes + .subscriptionPackageListRoute, + arguments: { + "from": Routes + .propertyDetails + }).then((value) { + context + .read< + GetSubsctiptionPackageLimitsCubit>() + .getLimits( + SubscriptionLimitType + .property); + shouldShowSubscriptionOverlay + .value = false; + }); + }, + shape: + RoundedRectangleBorder( + borderRadius: + BorderRadius + .circular( + 15)), + color: context + .color.secondaryColor, + elevation: 0, + child: Text("Subscribe") + .color(context.color + .tertiaryColor), + ), + SizedBox( + height: 15, + ), + // bottomNavBar() + ], + ), + ), + ], + )), + ), + ), + ), + ), + ), + ), + ), + ); + // return SizedBox.shrink(); + }) + ], + ), + )), + ), + ), + ); + } + + Widget advertismentLable() { + // if (property?.promoted == false || property?.promoted == null) { + // return const SizedBox.shrink(); + // } + + return PositionedDirectional( + start: 20, + top: 20, + child: SizedBox( + height: 32, + child: Row( + children: [ + if ((property?.promoted == true && + property?.promoted != null)) ...[ + Container( + width: 83, + height: 32, + alignment: Alignment.center, + decoration: BoxDecoration( + color: context.color.tertiaryColor, + borderRadius: BorderRadius.circular(4)), + child: Text(UiUtils.translate(context, 'featured')) + .color(context.color.buttonColor) + .size(context.font.small), + ), + const SizedBox( + width: 4, + ) + ], + if (property != null && + property?.allPropData['is_premium'] == true) ...[ + Container( + height: 32, + width: 32, + // margin: EdgeInsets.symmetric(horizontal: 0), + decoration: BoxDecoration( + color: context.color.tertiaryColor, + borderRadius: BorderRadius.circular(6)), + child: FittedBox( + fit: BoxFit.none, + child: SvgPicture.asset(AppIcons.promoted)), + ), + ] + ], + ), + )); + } + + double getBottomNavigationBarHeight(BuildContext context) { + try { + final RenderBox? renderBox = + appBarKey.currentContext?.findRenderObject() as RenderBox?; + return renderBox?.size.height ?? 0.0; + } catch (e) { + return 0; + } + } + + Widget bottomNavBar() { + /// IF property is added by current user then it will show promote button + if (!HiveUtils.isGuest()) { + if (int.parse(HiveUtils.getUserId() ?? "0") == property?.addedBy) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: SizedBox( + height: 65.rh(context), + child: Padding( + padding: + const EdgeInsets.symmetric(vertical: 10.0, horizontal: 0), + child: + BlocBuilder( + builder: (context, state) { + PropertyModel? model; + + if (state is FetchMyPropertiesSuccess) { + model = state.myProperty + .where((element) => element.id == property?.id) + .first; + } + + model ??= widget.property; + + var isPromoted = (model?.promoted); + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (!HiveUtils.isGuest()) ...[ + if (isPromoted == false && + (property?.status.toString() != "0")) ...[ + Expanded( + child: UiUtils.buildButton( + context, + disabled: (property?.status.toString() == "0"), + // padding: const EdgeInsets.symmetric(horizontal: 1), + outerPadding: const EdgeInsets.all( + 1, + ), + onPressed: () { + Navigator.pushNamed( + context, + Routes.createAdvertismentScreenRoute, + arguments: { + "model": property, + }, + ).then( + (value) { + setState(() {}); + }, + ); + }, + prefixWidget: Padding( + padding: const EdgeInsets.only(right: 6), + child: SvgPicture.asset( + AppIcons.promoted, + width: 14, + height: 14, + ), + ), + + fontSize: context.font.normal, + width: context.screenWidth / 3, + buttonTitle: UiUtils.translate(context, "feature"), + )), + const SizedBox( + width: 8, + ), + ], + ], + Expanded( + child: UiUtils.buildButton(context, + // padding: const EdgeInsets.symmetric(horizontal: 1), + outerPadding: const EdgeInsets.all(1), + onPressed: () async { + Category category = await context + .read() + .get(property!.category!.id!); + +// Extract parameter IDs from category + List? parameterIds = + category.parameterTypes?['parameters']; + +// Map parameters + List? mappedParameters = + parameterIds?.map((dynamic id) { + // Find index of parameter in property parameters list + int index = property?.parameters?.indexWhere( + (element) => element.id == id['id']) ?? + -1; + + // If parameter found, return it; otherwise, return the original value + return index != -1 + ? property!.parameters![index] + : id; + }).toList(); + Constant.addProperty.addAll({ + "category": Category( + category: property?.category!.category, + id: property?.category?.id!.toString(), + image: property?.category?.image, + parameterTypes: {"parameters": mappedParameters}, + ) + }); + + // log(" oiasdjalwd j$map"); + Navigator.pushNamed( + context, Routes.addPropertyDetailsScreen, + arguments: { + "details": { + "id": property?.id, + "catId": property?.category?.id, + "propType": property?.properyType, + "name": property?.title, + "desc": property?.description, + "city": property?.city, + "state": property?.state, + "country": property?.country, + "latitude": property?.latitude, + "longitude": property?.longitude, + "address": property?.address, + "client": property?.clientAddress, + "price": property?.price, + 'parms': property?.parameters, + "allPropData": property?.allPropData, + "images": property?.gallery + ?.map((e) => e.imageUrl) + .toList(), + "gallary_with_id": property?.gallery, + "rentduration": property?.rentduration, + "assign_facilities": + property?.assignedOutdoorFacility, + "titleImage": property?.titleImage + } + }); + }, + fontSize: context.font.normal, + width: context.screenWidth / 3, + prefixWidget: Padding( + padding: const EdgeInsets.only(right: 6.0), + child: SvgPicture.asset(AppIcons.edit), + ), + buttonTitle: UiUtils.translate(context, "edit")), + ), + const SizedBox( + width: 8, + ), + Expanded( + child: UiUtils.buildButton(context, + padding: const EdgeInsets.symmetric(horizontal: 1), + outerPadding: const EdgeInsets.all(1), + prefixWidget: Padding( + padding: const EdgeInsets.only(right: 6.0), + child: SvgPicture.asset( + AppIcons.delete, + color: context.color.buttonColor, + width: 14, + height: 14, + ), + ), onPressed: () async { + // //THIS IS FOR DEMO MODE + bool isPropertyActive = + property?.status.toString() == "1"; + + bool isDemoNumber = HiveUtils.getUserDetails() + .mobile == + "${Constant.demoCountryCode}${Constant.demoMobileNumber}"; + + if (Constant.isDemoModeOn && + isPropertyActive && + isDemoNumber) { + HelperUtils.showSnackBarMessage(context, + "Active property cannot be deleted in demo app."); + + return; + } + + var delete = await UiUtils.showBlurredDialoge( + context, + dialoge: BlurredDialogBox( + title: UiUtils.translate( + context, + "deleteBtnLbl", + ), + content: Text( + UiUtils.translate( + context, "deletepropertywarning"), + ), + ), + ); + if (delete == true) { + Future.delayed( + Duration.zero, + () { + // if (Constant.isDemoModeOn) { + // HelperUtils.showSnackBarMessage( + // context, + // UiUtils.getTranslatedLabel( + // context, "thisActionNotValidDemo")); + // } else { + context + .read() + .delete(property!.id!); + // } + }, + ); + } + }, + fontSize: context.font.normal, + width: context.screenWidth / 3.2, + buttonTitle: + UiUtils.translate(context, "deleteBtnLbl")), + ), + ], + ); + }, + ), + ), + ), + ); + } + } + + return SizedBox( + height: 65.rh(context), + child: Stack( + children: [ + Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 20), + child: Row( + children: [ + Expanded(child: callButton()), + const SizedBox( + width: 8, + ), + Expanded(child: messageButton()), + const SizedBox( + width: 8, + ), + Expanded(child: chatButton()), + ], + ), + ), + + // ClipRRect( + // child: BackdropFilter( + // filter: ImageFilter.blur(sigmaY: 3, sigmaX: 3), + // child: Container( + // color: Colors.black.withOpacity(0.2), + // child: MaterialButton( + // minWidth: double.infinity, + // height: double.infinity, + // onPressed: () {}, + // child: Row( + // mainAxisAlignment: MainAxisAlignment.center, + // children: [ + // Icon( + // Icons.lock, + // color: context.color.secondaryColor, + // ), + // Text("Subscribe") + // .bold(weight: FontWeight.w700) + // .size(context.font.larger) + // .color(Colors.white), + // ], + // ), + // ), + // ), + // ), + // ) + ], + ), + ); + } + + String statusText(String text) { + if (text == "1") { + return UiUtils.translate(context, "active"); + } else if (text == "0") { + return UiUtils.translate(context, "deactive"); + } + return ""; + } + + Widget setInterest() { + // check if list has this id or not + bool interestedProperty = + Constant.interestedPropertyIds.contains(widget.property?.id); + + /// default icon + dynamic icon = AppIcons.interested; + + /// first priority is Constant list . + if (interestedProperty == true || widget.property?.isInterested == 1) { + /// If list has id or our property is interested so we are gonna show icon of No Interest + icon = Icons.not_interested_outlined; + } + + return BlocConsumer( + listener: (context, state) {}, + builder: (context, state) { + if (state is ChangeInterestInPropertySuccess) { + if (state.interest == PropertyInterest.interested) { + //If interested show no interested icon + icon = Icons.not_interested_outlined; + } else { + icon = AppIcons.interested; + } + } + + return Expanded( + flex: 1, + child: UiUtils.buildButton( + context, + height: 48, + outerPadding: const EdgeInsets.all(1), + isInProgress: state is ChangeInterestInPropertyInProgress, + onPressed: () { + PropertyInterest interest; + + bool contains = + Constant.interestedPropertyIds.contains(widget.property!.id!); + + if (contains == true || widget.property!.isInterested == 1) { + //change to not interested + interest = PropertyInterest.notInterested; + } else { + //change to not unterested + interest = PropertyInterest.interested; + } + context.read().changeInterest( + propertyId: widget.property!.id!.toString(), + interest: interest); + }, + buttonTitle: (icon == Icons.not_interested_outlined + ? UiUtils.translate(context, "interested") + : UiUtils.translate(context, "interest")), + fontSize: context.font.large, + prefixWidget: Padding( + padding: const EdgeInsetsDirectional.only(end: 14), + child: (icon is String) + ? SvgPicture.asset( + icon, + width: 22, + height: 22, + ) + : Icon( + icon, + color: Theme.of(context).colorScheme.buttonColor, + size: 22, + ), + ), + ), + ); + }, + ); + } + + bool isDisabledEnquireButton(state, id) { + if (state is EnquiryIdsLocalState) { + if (state.ids?.contains(id.toString()) ?? false) { + return true; + } else { + return false; + } + } + return false; + } + + bool showIcon(state, id) { + if (state is EnquiryIdsLocalState) { + if (state.ids?.contains(id.toString()) ?? false) { + return false; + } else { + return true; + } + } + return true; + } + + String setLable(state, id) { + if (state is EnquiryIdsLocalState) { + if (state.ids?.contains(id.toString()) ?? false) { + return UiUtils.translate( + context, + "sent", + ); + } else { + return UiUtils.translate( + context, + "sendEnqBtnLbl", + ); + } + } + return ""; + } + + Widget callButton() { + return UiUtils.buildButton(context, + fontSize: context.font.large, + outerPadding: const EdgeInsets.all(1), + buttonTitle: UiUtils.translate(context, "call"), + width: 35, + onPressed: _onTapCall, + prefixWidget: Padding( + padding: const EdgeInsets.only(right: 3.0), + child: SizedBox( + width: 16, + height: 16, + child: UiUtils.getSvg(AppIcons.call, color: Colors.white)), + )); + } + + Widget messageButton() { + return UiUtils.buildButton(context, + fontSize: context.font.large, + outerPadding: const EdgeInsets.all(1), + buttonTitle: UiUtils.translate(context, "sms"), + width: 35, + onPressed: _onTapMessage, + prefixWidget: SizedBox( + width: 16, + height: 16, + child: Padding( + padding: const EdgeInsets.only(right: 3.0), + child: UiUtils.getSvg(AppIcons.whatsapp, + color: context.color.buttonColor), + ), + )); + } + + Widget chatButton() { + return UiUtils.buildButton(context, + fontSize: context.font.large, + outerPadding: const EdgeInsets.all(1), + buttonTitle: UiUtils.translate(context, "chat"), + width: 35, + onPressed: _onTapChat, + prefixWidget: SizedBox( + width: 16, + height: 16, + child: Padding( + padding: const EdgeInsets.only(right: 3.0), + child: + UiUtils.getSvg(AppIcons.chat, color: context.color.buttonColor), + ), + )); + } + + _onTapCall() async { + print("AAA $isPremiumUser"); + if (isPremiumProperty && !isPremiumUser) { + GuestChecker.check(onNotGuest: () { + shouldShowSubscriptionOverlay.value = true; + + return; + }); + return; + } + + var contactNumber = widget.property?.customerNumber; + + var url = Uri.parse("tel: $contactNumber"); //{contactNumber.data} + if (await canLaunchUrl(url)) { + await launchUrl(url); + } else { + throw 'Could not launch $url'; + } + } + + _onTapMessage() async { + if (isPremiumProperty && !isPremiumUser) { + GuestChecker.check( + onNotGuest: () { + shouldShowSubscriptionOverlay.value = true; + + return; + }, + ); + return; + } + + var contactNumber = widget.property?.customerNumber; + + var url = Uri.parse("sms:$contactNumber"); //{contactNumber.data} + if (await canLaunchUrl(url)) { + await launchUrl(url); + } else { + throw 'Could not launch $url'; + } + } + + _onTapChat() { + GuestChecker.check(onNotGuest: () { + if (isPremiumProperty && !isPremiumUser) { + shouldShowSubscriptionOverlay.value = true; + return; + } + Navigator.push(context, BlurredRouter( + builder: (context) { + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => SendMessageCubit(), + ), + BlocProvider( + create: (context) => LoadChatMessagesCubit(), + ), + BlocProvider( + create: (context) => DeleteMessageCubit(), + ), + ], + child: ChatScreen( + profilePicture: property?.customerProfile ?? "", + userName: property?.customerName ?? "", + propertyImage: property?.titleImage ?? "", + proeprtyTitle: property?.title ?? "", + userId: (property?.addedBy).toString(), + from: "property", + propertyId: (property?.id).toString(), + ), + ); + }, + )); + }); + } +} + +class InterestedUserListWidget extends StatefulWidget { + const InterestedUserListWidget({ + super.key, + required this.totalCount, + required this.interestedUserCubitReference, + }); + final String totalCount; + final GetInterestedUserCubit interestedUserCubitReference; + + @override + State createState() => + _InterestedUserListWidgetState(); +} + +class _InterestedUserListWidgetState extends State { + final ScrollController _bottomSheetScrollController = ScrollController(); + @override + void initState() { + _bottomSheetScrollController.addListener(() { + if (_bottomSheetScrollController.isEndReached()) { + if (widget.interestedUserCubitReference.hasMoreData()) { + widget.interestedUserCubitReference.fetchMore(); + } + } + }); + + super.initState(); + } + + @override + Widget build(BuildContext context) { + return ClipRRect( + clipBehavior: Clip.antiAlias, + borderRadius: BorderRadius.circular(10), + child: BackdropFilter( + filter: ImageFilter.blur( + sigmaX: 3, + sigmaY: 10, + ), + child: ScrollConfiguration( + behavior: RemoveGlow(), + child: SingleChildScrollView( + controller: _bottomSheetScrollController, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.all(14.0), + child: const Text("Interested Users") + .size(context.font.larger) + .bold(), + ), + // SizedBox( + // height: 10, + // ), + // SizedBox( + // child: Container( + // width: context.screenWidth, + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.center, + // children: [ + // Text("Interested User Count") + // .size(context.font.large) + // .bold(), + // Text("${widget.totalCount}") + // ]), + // // color: Colors.red, + // ), + // ), + // const SizedBox( + // height: 10, + // ), + BlocBuilder( + bloc: widget.interestedUserCubitReference, + builder: (context, state) { + if (state is GetInterestedUserInProgress) { + return Center(child: UiUtils.progress()); + } + + if (state is GetInterestedUserSuccess) { + if (state.list.isEmpty) { + return const Center( + child: Text("No data found"), + ); + } + + return ListView.builder( + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (context, index) { + InterestedUserModel interestedUser = + state.list[index]; + + return InterestedUserCard( + interestedUser: interestedUser); + }, + itemCount: state.list.length, + shrinkWrap: true, + ); + } + return Container(); + }, + ), + ], + ), + ), + ), + ), + ); + } +} + +class InterestedUserCard extends StatelessWidget { + const InterestedUserCard({ + super.key, + required this.interestedUser, + }); + + final InterestedUserModel interestedUser; + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(14.0), + child: Container( + child: Row( + children: [ + // CircleAvatar(radius: 25, backgroundImage: SvgPro), + Container( + width: 50, + height: 50, + clipBehavior: Clip.antiAlias, + decoration: const BoxDecoration( + shape: BoxShape.circle, + // color: Colors.red, + ), + child: UiUtils.getImage(interestedUser.image ?? ""), + ), + const SizedBox( + width: 10, + ), + Expanded( + flex: 3, + child: Text(interestedUser.name ?? "").setMaxLines(lines: 1), + ), + const SizedBox( + width: 10, + ), + const Spacer(), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + onPressed: () async { + await launchUrl( + Uri.parse("mailto:${interestedUser.email}"), + mode: LaunchMode.externalApplication); + }, + icon: Icon( + Icons.email, + color: context.color.tertiaryColor, + )), + IconButton( + onPressed: () async { + await launchUrl(Uri.parse("tel:${interestedUser.mobile}"), + mode: LaunchMode.externalApplication); + }, + color: context.color.tertiaryColor, + icon: const Icon(Icons.call)), + ], + ) + ], + ), + ), + ); + } +} + +class GoogleMapScreen extends StatefulWidget { + final double latitude; + final double longitude; + const GoogleMapScreen({ + super.key, + required this.latitude, + required this.longitude, + required CameraPosition kInitialPlace, + required Completer controller, + }) : _kInitialPlace = kInitialPlace, + _controller = controller; + + final CameraPosition _kInitialPlace; + final Completer _controller; + + @override + State createState() => _GoogleMapScreenState(); +} + +class _GoogleMapScreenState extends State { + bool isGoogleMapVisible = false; + + @override + void initState() { + Future.delayed(const Duration(milliseconds: 500), () { + isGoogleMapVisible = true; + setState(() {}); + }); + + super.initState(); + } + + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () async { + isGoogleMapVisible = false; + setState(() {}); + await Future.delayed(const Duration(milliseconds: 500)); + Future.delayed( + Duration.zero, + () { + Navigator.pop(context); + }, + ); + return false; + }, + child: Builder(builder: (context) { + if (!isGoogleMapVisible) { + return Center(child: UiUtils.progress()); + } + return GoogleMap( + myLocationButtonEnabled: false, + gestureRecognizers: >{ + f.Factory( + () => EagerGestureRecognizer(), + ), + }, + markers: { + Marker( + markerId: const MarkerId("1"), + position: LatLng(widget.latitude, widget.longitude)) + }, + mapType: AppSettings.googleMapType, + initialCameraPosition: widget._kInitialPlace, + onMapCreated: (GoogleMapController controller) { + if (!widget._controller.isCompleted) { + widget._controller.complete(controller); + } + }, + ); + }), + ); + } +} + +class AgentProfileWidget extends StatelessWidget { + final bool hideDetails; + const AgentProfileWidget({ + super.key, + required this.hideDetails, + required this.widget, + }); + + final PropertyDetails widget; + + @override + Widget build(BuildContext context) { + return HideDetailsBlur( + hide: hideDetails, + sigmaX: 4, + sigmaY: 4, + child: Row( + children: [ + GestureDetector( + onTap: () { + if (hideDetails) return; + + UiUtils.showFullScreenImage(context, + provider: + NetworkImage(widget.property?.customerProfile ?? "")); + }, + child: Container( + width: 70, + height: 70, + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + color: Colors.grey.shade200, + borderRadius: BorderRadius.circular(10)), + child: UiUtils.getImage(widget.property?.customerProfile ?? "", + fit: BoxFit.cover) + + // CachedNetworkImage( + // imageUrl: widget.propertyData?.customerProfile ?? "", + // fit: BoxFit.cover, + // ), + + ), + ), + const SizedBox( + width: 10, + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(widget.property?.customerName ?? "") + .size(context.font.large) + .bold(), + Text(widget.property?.customerEmail ?? ""), + ], + ), + ) + ], + ), + ); + } +} + +class OutdoorFacilityListWidget extends StatelessWidget { + final List outdoorFacilityList; + const OutdoorFacilityListWidget({Key? key, required this.outdoorFacilityList}) + : super(key: key); + + @override + Widget build(BuildContext context) { + CrossAxisAlignment getCrossAxisAlignment(int columnIndex) { + if (columnIndex == 1) { + return CrossAxisAlignment.center; + } else if (columnIndex == 2) { + return CrossAxisAlignment.end; + } else { + return CrossAxisAlignment.start; + } + } + + return GridView.builder( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3), + itemCount: outdoorFacilityList.length, + itemBuilder: (context, index) { + AssignedOutdoorFacility facility = outdoorFacilityList[index]; + + return Column( + //crossAxisAlignment: getCrossAxisAlignment(columnIndex), + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + // width: 60, + // height: 60, + decoration: BoxDecoration( + // shape: BoxShape.circle, + borderRadius: BorderRadius.circular(15), + color: context.color.tertiaryColor.withOpacity(0.2)), + child: Padding( + padding: const EdgeInsets.all(10.0), + child: SizedBox( + width: 36, + height: 36, + child: UiUtils.imageType( + facility.image ?? "", + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null, + // fit: BoxFit.cover, + width: 20, + height: 20, + ), + ), + ), + ), + const SizedBox(height: 8), + Text(facility.name ?? "") + .centerAlign() + .size(context.font.normal) + .color(context.color.textColorDark) + .setMaxLines(lines: 2), + const SizedBox(height: 2), + Text("${facility.distance} KM") + .centerAlign() + .size(context.font.small) + .color(context.color.textLightColor) + .setMaxLines(lines: 1) + ], + ), + ], + ); + }, + ); + } +} + +class HideDetailsBlur extends StatelessWidget { + final Widget child; + final bool hide; + final double? sigmaX; + final double? sigmaY; + const HideDetailsBlur( + {super.key, + required this.child, + required this.hide, + this.sigmaX, + this.sigmaY}); + + @override + Widget build(BuildContext context) { + return ClipRRect( + child: Stack( + // fit: StackFit.expand, + children: [ + child, + if (hide) + BackdropFilter( + filter: ImageFilter.blur(sigmaY: sigmaY ?? 3, sigmaX: sigmaX ?? 4), + child: Container(), + ) + ], + )); + } +} diff --git a/lib/Ui/screens/proprties/viewAll.dart b/lib/Ui/screens/proprties/viewAll.dart new file mode 100644 index 0000000..6b71ff4 --- /dev/null +++ b/lib/Ui/screens/proprties/viewAll.dart @@ -0,0 +1,164 @@ +import 'package:ebroker/Ui/screens/home/Widgets/property_horizontal_card.dart'; +import 'package:ebroker/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import 'package:ebroker/Ui/screens/widgets/Erros/something_went_wrong.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/helper_utils.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../app/routes.dart'; +import '../../../data/model/property_model.dart'; + +///In this file https://dart.dev/language/generics generic types are used For more info you can see this + +///This [PropertySuccessStateWireframe] this will force class to have properties list + +abstract class PropertySuccessStateWireframe { + abstract List properties; + abstract bool isLoadingMore; +} + +///this will force class to have error field +abstract class PropertyErrorStateWireframe { + dynamic error; +} + +///This implementation is for cubit this will force property cubit to implement this methods. +abstract class PropertyCubitWireframe { + void fetch(); + bool hasMoreData(); + void fetchMore(); +} + +class ViewAllScreen, C> extends StatefulWidget { + final String title; + final StateMap map; + ViewAllScreen({ + Key? key, + required this.title, + required this.map, + }) : super(key: key) { + assert(T is! PropertyErrorStateWireframe, + "Please Extend PropertyErrorStateWireframe in cubit"); + } + + void open(BuildContext context) { + Navigator.push(context, BlurredRouter( + builder: (context) { + return ViewAllScreen(title: title, map: map); + }, + )); + } + + @override + _ViewAllScreenState createState() => _ViewAllScreenState(); +} + +class _ViewAllScreenState, C> + extends State { + final ScrollController _pageScrollListener = ScrollController(); + + @override + void initState() { + _pageScrollListener.addListener(onPageEnd); + + super.initState(); + } + + @override + void dispose() { + _pageScrollListener.dispose(); + super.dispose(); + } + + bool isSubtype() => [] is List; + void onPageEnd() { + ///This is extension which will check if we reached end or not + if (_pageScrollListener.isEndReached()) { + if (isSubtype()) { + if (read().hasMoreData()) { + read().fetchMore(); + } + } + } + } + + dynamic read() { + return context.read(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.primaryColor, + // appBar: AppBar( + // backgroundColor: context.color.secondaryColor, + // elevation: 0, + // iconTheme: IconThemeData(color: context.color.teritoryColor), + // title: Text( + // widget.title, + // ).color(context.color.teritoryColor).size(context.font.large), + // ), + appBar: UiUtils.buildAppBar(context, + title: widget.title, showBackButton: true), +// body: Container(), + body: BlocBuilder(builder: (context, state) { + return widget.map._buildState(state, _pageScrollListener); + }), + ); + } +} + +///From generic type we are getting state so we can return ui according to that state +class StateMap { + Widget _buildState(dynamic state, ScrollController controller) { + if (state is INITIAL) { + return Container(); + } + if (state is PROGRESS) { + return Center(child: UiUtils.progress()); + } + if (state is FAIL) { + return const SomethingWentWrong(); + } + + if (state is SUCCESS) { + return Column( + children: [ + Expanded( + child: ScrollConfiguration( + behavior: RemoveGlow(), + child: ListView.builder( + controller: controller, + padding: const EdgeInsets.all(20), + itemBuilder: (context, index) { + PropertyModel model = state.properties[index]; + return GestureDetector( + onTap: () { + HelperUtils.goToNextPage( + Routes.propertyDetails, + context, + false, + args: { + 'propertyData': model, + 'propertiesList': state.properties, + 'fromMyProperty': false, + }, + ); + }, + child: PropertyHorizontalCard(property: model)); + }, + itemCount: state.properties.length, + ), + ), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ); + } + + return Container(); + } +} diff --git a/lib/Ui/screens/proprties/widgets/report_property_widget.dart b/lib/Ui/screens/proprties/widgets/report_property_widget.dart new file mode 100644 index 0000000..03f060c --- /dev/null +++ b/lib/Ui/screens/proprties/widgets/report_property_widget.dart @@ -0,0 +1,125 @@ +import 'package:ebroker/Ui/screens/widgets/blurred_dialoge_box.dart'; +import 'package:ebroker/data/cubits/Report/property_report_cubit.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_svg/svg.dart'; + +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/guestChecker.dart'; +import '../../Report/report_property_screen.dart'; + +class ReportPropertyButton extends StatefulWidget { + final int propertyId; + final Function() onSuccess; + const ReportPropertyButton( + {Key? key, required this.propertyId, required this.onSuccess}) + : super(key: key); + + @override + State createState() => _ReportPropertyButtonState(); +} + +class _ReportPropertyButtonState extends State { + bool shouldReport = true; + void _onTapYes(int propertyId) { + _bottomSheet(propertyId); + } + + _onTapNo() { + shouldReport = false; + setState(() {}); + } + + void _bottomSheet(int propertyId) { + PropertyReportCubit cubit = BlocProvider.of(context); + UiUtils.showBlurredDialoge(context, + dialoge: EmptyDialogBox( + child: AlertDialog( + backgroundColor: context.color.secondaryColor, + shape: + RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)), + content: BlocProvider.value( + value: cubit, + child: ReportPropertyScreen(propertyId: propertyId), + ), + ))).then((value) { + widget.onSuccess.call(); + }); + } + + @override + Widget build(BuildContext context) { + bool isDark = Theme.of(context).brightness == Brightness.dark; + if (shouldReport == false) { + return SizedBox.shrink(); + } + return Container( + height: 135, + width: MediaQuery.of(context).size.width, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: isDark + ? widgetsBorderColorLight.withOpacity(0.1) + : widgetsBorderColorLight, + width: 1.5)), + child: Padding( + padding: const EdgeInsets.all(15.0), + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("didYoufindProblem".translate(context)) + .setMaxLines(lines: 2) + .bold(weight: FontWeight.w100) + .size(context.font.larger), + const Spacer(), + Row( + children: [ + MaterialButton( + onPressed: () { + GuestChecker.check(onNotGuest: () { + _onTapYes.call(widget.propertyId); + }); + }, + textColor: context.color.tertiaryColor, + shape: RoundedRectangleBorder( + side: BorderSide( + color: isDark + ? widgetsBorderColorLight.withOpacity(0.1) + : widgetsBorderColorLight), + borderRadius: BorderRadius.circular(20)), + child: Text("yes".translate(context))), + const SizedBox( + width: 10, + ), + MaterialButton( + onPressed: _onTapNo, + textColor: context.color.tertiaryColor, + shape: RoundedRectangleBorder( + side: BorderSide( + color: isDark + ? widgetsBorderColorLight.withOpacity(0.1) + : widgetsBorderColorLight), + borderRadius: BorderRadius.circular(20)), + child: Text("notReally".translate(context))) + ], + ), + ], + ), + ), + SvgPicture.asset( + Theme.of(context).brightness == Brightness.dark + ? AppIcons.reportDark + : AppIcons.report, + ) + ], + ), + ), + ); + } +} diff --git a/lib/Ui/screens/settings/contact_us.dart b/lib/Ui/screens/settings/contact_us.dart new file mode 100644 index 0000000..a1ae22a --- /dev/null +++ b/lib/Ui/screens/settings/contact_us.dart @@ -0,0 +1,337 @@ +import 'dart:ui' as ui; + +import 'package:ebroker/Ui/screens/widgets/blurred_dialoge_box.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../../data/cubits/company_cubit.dart'; +import '../../../utils/AppIcon.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/custom_text_form_field.dart'; + +class ContactUs extends StatefulWidget { + const ContactUs({Key? key}) : super(key: key); + + @override + ContactUsState createState() => ContactUsState(); + + static Route route(RouteSettings routeSettings) { + return BlurredRouter(builder: (_) => const ContactUs()); + } +} + +class ContactUsState extends State { + @override + void initState() { + super.initState(); + Future.delayed(Duration.zero, (() { + if (context.read().state is CompanyInitial || + context.read().state is CompanyFetchFailure) { + context.read().fetchCompany(context); + } else { + // print("companyData Fetched already !! "); + } + })); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: UiUtils.buildAppBar(context, + title: UiUtils.translate(context, "contactUs"), showBackButton: true), + body: BlocBuilder(builder: (context, state) { + if (state is CompanyFetchProgress) { + return const Center( + child: CircularProgressIndicator(), + ); + } else if (state is CompanyFetchSuccess) { + return Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(UiUtils.translate(context, "howCanWeHelp")) + .color(context.color.textColorDark) + .size(context.font.larger) + .bold(weight: FontWeight.w700), + SizedBox( + height: 10.rh(context), + ), + Text(UiUtils.translate(context, "itLooksLikeYouHasError")) + .size(context.font.small) + .color(context.color.textLightColor), + SizedBox( + height: 15.rh(context), + ), + customTile(context, + title: UiUtils.translate(context, "callBtnLbl"), + onTap: () async { + var number1 = state.companyData.companyTel1; + var number2 = state.companyData.companyTel2; + + UiUtils.showBlurredDialoge(context, + dialoge: BlurredDialogBox( + title: "chooseNumber".translate(context), + showCancleButton: false, + barrierDismissable: true, + acceptTextColor: context.color.buttonColor, + content: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + ListTile( + title: Text(number1.toString()).centerAlign(), + onTap: () async { + await launchUrl(Uri.parse("tel:${number1}")); + }, + ), + ListTile( + title: Text(number2.toString()).centerAlign(), + onTap: () async { + await launchUrl(Uri.parse("tel:${number2}")); + }, + ), + ], + ), + )); + }, svgImagePath: AppIcons.call), + SizedBox( + height: 15.rh(context), + ), + customTile(context, + title: UiUtils.translate(context, "companyEmailLbl"), + onTap: () { + var email = state.companyData.companyEmail; + showEmailDialoge(email); + }, svgImagePath: AppIcons.message) + ], + ), + ); + } else if (state is CompanyFetchFailure) { + return Center( + child: Text(state.errmsg), + ); + } else { + return const SizedBox.shrink(); + } + }), + ); + } + + showEmailDialoge(email) { + Navigator.push( + context, + BlurredRouter( + builder: (context) => EmailSendWidget(email: email), + )); + } + + Widget customTile(BuildContext context, + {required String title, + required String svgImagePath, + bool? isSwitchBox, + Function(dynamic value)? onTapSwitch, + dynamic switchValue, + required VoidCallback onTap}) { + return GestureDetector( + onTap: onTap, + child: Row( + children: [ + Container( + width: 40, + height: 40, + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity( + 0.10000000149011612, + ), + borderRadius: BorderRadius.circular(10), + ), + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.getSvg(svgImagePath, + color: context.color.tertiaryColor)), + ), + SizedBox( + width: 25.rw(context), + ), + Text(title) + .bold(weight: FontWeight.w700) + .color(context.color.textColorDark), + const Spacer(), + if (isSwitchBox != true) + Container( + width: 32, + height: 32, + decoration: BoxDecoration( + border: + Border.all(color: context.color.borderColor, width: 1.5), + color: context.color.secondaryColor + .withOpacity(0.10000000149011612), + borderRadius: BorderRadius.circular(10), + ), + child: FittedBox( + fit: BoxFit.none, + child: SizedBox( + width: 8, + height: 15, + child: UiUtils.getSvg( + AppIcons.arrowRight, + color: context.color.textColorDark, + ), + ), + ), + ), + if (isSwitchBox ?? false) + Switch( + value: switchValue ?? false, + onChanged: (value) { + onTapSwitch?.call(value); + }, + ) + ], + ), + ); + } + + launchPathURL(bool isTel, String value) async { + late Uri redirecturi; + if (isTel) { + redirecturi = Uri.parse("tel: $value"); + } else { + redirecturi = Uri( + scheme: 'mailto', + path: value, + query: + 'subject=${Constant.appName}&body=${UiUtils.translate(context, "mailMsgLbl")}'); + } + + if (await canLaunchUrl(redirecturi)) { + await launchUrl(redirecturi); + } else { + throw 'Could not launch $redirecturi'; + } + } +} + +class EmailSendWidget extends StatefulWidget { + final String email; + const EmailSendWidget({ + Key? key, + required this.email, + }) : super(key: key); + + @override + State createState() => _EmailSendWidgetState(); +} + +class _EmailSendWidgetState extends State { + final TextEditingController _subject = TextEditingController(); + late final TextEditingController _email = + TextEditingController(text: widget.email); + final TextEditingController _text = TextEditingController(); + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.white.withOpacity(0.0), + body: Center( + child: Container( + clipBehavior: Clip.antiAlias, + width: MediaQuery.of(context).size.width - 40, + decoration: BoxDecoration( + boxShadow: const [ + BoxShadow( + blurRadius: 3, color: ui.Color.fromARGB(255, 201, 201, 201)) + ], + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular( + 10, + ), + ), + child: Padding( + padding: const EdgeInsets.all( + 20, + ), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + GestureDetector( + onTap: () { + Navigator.pop( + context, + ); + }, + child: Container( + decoration: BoxDecoration( + color: + context.color.tertiaryColor.withOpacity(0.0), + shape: BoxShape.circle, + ), + width: 40, + height: 40, + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.getSvg(AppIcons.arrowLeft, + color: context.color.tertiaryColor))), + ) + ], + ), + SizedBox( + height: 20.rh(context), + ), + Text(UiUtils.translate(context, "sendEmail")), + SizedBox( + height: 15.rh(context), + ), + CustomTextFormField( + controller: _subject, + hintText: UiUtils.translate(context, "subject"), + ), + SizedBox( + height: 15.rh(context), + ), + CustomTextFormField( + controller: _email, + isReadOnly: true, + hintText: UiUtils.translate(context, "companyEmailLbl"), + ), + SizedBox( + height: 15.rh(context), + ), + CustomTextFormField( + controller: _text, + maxLine: 100, + hintText: UiUtils.translate(context, "writeSomething"), + minLine: 5, + ), + SizedBox( + height: 15.rh(context), + ), + UiUtils.buildButton(context, onPressed: () async { + Uri redirecturi = Uri( + scheme: 'mailto', + path: _email.text, + query: 'subject=${_subject.text}&body=${_text.text}'); + await launchUrl(redirecturi); + }, + height: 50.rh(context), + buttonTitle: UiUtils.translate(context, "sendEmail")) + ], + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/settings/notification_detail.dart b/lib/Ui/screens/settings/notification_detail.dart new file mode 100644 index 0000000..7a516b9 --- /dev/null +++ b/lib/Ui/screens/settings/notification_detail.dart @@ -0,0 +1,70 @@ +import 'package:flutter/material.dart'; + +import '../../../app/routes.dart'; +import '../../../data/helper/designs.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import 'notifications.dart'; + +class NotificationDetail extends StatefulWidget { + const NotificationDetail({Key? key}) : super(key: key); + + @override + State createState() => _NotificationDetailState(); + + static Route route(RouteSettings routeSettings) { + return BlurredRouter( + builder: (_) => const NotificationDetail(), + ); + } +} + +class _NotificationDetailState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.primaryColor, + appBar: UiUtils.buildAppBar(context, + title: UiUtils.translate(context, "notifications"), + showBackButton: true), + body: ListView(children: [ + if (selectedNotification.image!.isNotEmpty) + setNetworkImg(selectedNotification.image!, + width: double.maxFinite, + height: 200.rh(context), + boxFit: BoxFit.cover), + const SizedBox(height: 10), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + child: detailWidget()) + ]), + ); + } + + @override + void dispose() { + Routes.currentRoute = Routes.previousCustomerRoute; + super.dispose(); + } + + detailWidget() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + selectedNotification.title!, + style: Theme.of(context) + .textTheme + .titleMedium! + .merge(const TextStyle(fontWeight: FontWeight.w500)), + ), + const SizedBox(height: 5), + Text( + selectedNotification.message!, + style: Theme.of(context).textTheme.bodySmall!, + ), + ]); + } +} diff --git a/lib/Ui/screens/settings/notifications.dart b/lib/Ui/screens/settings/notifications.dart new file mode 100644 index 0000000..b6a3ff1 --- /dev/null +++ b/lib/Ui/screens/settings/notifications.dart @@ -0,0 +1,258 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../app/routes.dart'; +import '../../../data/cubits/fetch_notifications_cubit.dart'; +import '../../../data/helper/custom_exception.dart'; +import '../../../data/helper/design_configs.dart'; +import '../../../data/model/notification_data.dart'; +import '../../../data/model/property_model.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/api.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/Erros/no_data_found.dart'; +import '../widgets/Erros/no_internet.dart'; +import '../widgets/Erros/something_went_wrong.dart'; +import '../widgets/shimmerLoadingContainer.dart'; + +late NotificationData selectedNotification; + +class Notifications extends StatefulWidget { + const Notifications({Key? key}) : super(key: key); + + @override + NotificationsState createState() => NotificationsState(); + + static Route route(RouteSettings routeSettings) { + return BlurredRouter( + builder: (_) => const Notifications(), + ); + } +} + +class NotificationsState extends State { + late final ScrollController _pageScrollController = ScrollController() + ..addListener(() { + if (_pageScrollController.isEndReached()) { + if (context.read().hasMoreData()) { + context.read().fetchNotificationsMore(); + } + } + }); + List propertyData = []; + @override + void initState() { + super.initState(); + context.read().fetchNotifications(); + } + + @override + void dispose() { + Routes.currentRoute = Routes.previousCustomerRoute; + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Theme.of(context).colorScheme.primaryColor, + appBar: UiUtils.buildAppBar( + context, + title: UiUtils.translate(context, "notifications"), + showBackButton: true, + ), + body: BlocBuilder( + builder: (context, state) { + if (state is FetchNotificationsInProgress) { + return buildNotificationShimmer(); + } + if (state is FetchNotificationsFailure) { + if (state.errorMessage is ApiException) { + if (state.errorMessage.errorMessage == "no-internet") { + return NoInternet( + onRetry: () { + context.read().fetchNotifications(); + }, + ); + } + } + + return const SomethingWentWrong(); + } + + if (state is FetchNotificationsSuccess) { + if (state.notificationdata.isEmpty) { + return NoDataFound( + onTap: () { + context.read().fetchNotifications(); + }, + ); + } + + return buildNotificationlistWidget(state); + } + + return const SizedBox.square(); + }), + ); + } + + Widget buildNotificationShimmer() { + return ListView.separated( + padding: const EdgeInsets.all(10), + separatorBuilder: (context, index) => const SizedBox( + height: 10, + ), + itemCount: 20, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (context, index) { + return SizedBox( + height: 55, + child: Row( + children: [ + const CustomShimmer( + width: 50, + height: 50, + borderRadius: 11, + ), + const SizedBox( + width: 5, + ), + Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + CustomShimmer( + height: 7, + width: 200.rw(context), + ), + const SizedBox(height: 5), + CustomShimmer( + height: 7, + width: 100.rw(context), + ), + const SizedBox(height: 5), + CustomShimmer( + height: 7, + width: 150.rw(context), + ) + ], + ) + ], + ), + ); + }); + } + + buildNotificationlistWidget(FetchNotificationsSuccess state) { + return Column( + children: [ + Expanded( + child: ListView.separated( + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.all(10), + separatorBuilder: (context, index) => const SizedBox( + height: 2, + ), + itemCount: state.notificationdata.length, + itemBuilder: (context, index) { + NotificationData notificationData = + state.notificationdata[index]; + return GestureDetector( + onTap: () { + selectedNotification = notificationData; + if (notificationData.type == Constant.enquiryNotification) { + } else { + HelperUtils.goToNextPage( + Routes.notificationDetailPage, context, false); + } + }, + child: Container( + decoration: DesignConfig.boxDecorationBorder( + color: Theme.of(context).colorScheme.secondaryColor, + borderWidth: 1.5, + borderColor: context.color.borderColor, + radius: 10), + padding: + const EdgeInsets.symmetric(horizontal: 8, vertical: 8), + child: Row(children: [ + ClipRRect( + clipBehavior: Clip.antiAliasWithSaveLayer, + borderRadius: + const BorderRadius.all(Radius.circular(15)), + child: UiUtils.getImage(notificationData.image!, + height: 53.rh(context), + width: 53.rw(context), + fit: BoxFit.fill), + ), + const SizedBox(width: 8), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + notificationData.title!.firstUpperCase(), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: Theme.of(context) + .textTheme + .titleMedium! + .merge(const TextStyle( + fontWeight: FontWeight.w500)), + ), + Text( + notificationData.message!.firstUpperCase(), + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: Theme.of(context).textTheme.bodySmall!, + ), + Text(notificationData.createdAt! + .formatDate() + .toString()) + .size(context.font.smaller) + .color(context.color.textLightColor) + ])), + ]), + ), + ); + }), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ); + } + + Future> getPropertyById() async { + Map body = { + // ApiParams.id: propertysId,//String propertysId + }; + + var response = await HelperUtils.sendApiRequest( + Api.apiGetProprty, body, true, context, + passUserid: true); + var getdata = json.decode(response); + if (getdata != null) { + if (!getdata[Api.error]) { + List list = getdata['data']; + propertyData = + list.map((model) => PropertyModel.fromMap(model)).toList(); + } else { + throw CustomException(getdata[Api.message]); + } + } else { + Future.delayed( + Duration.zero, + () { + throw CustomException(UiUtils.translate(context, "nodatafound")); + }, + ); + } + return propertyData; + } +} diff --git a/lib/Ui/screens/settings/profile_setting.dart b/lib/Ui/screens/settings/profile_setting.dart new file mode 100644 index 0000000..910f751 --- /dev/null +++ b/lib/Ui/screens/settings/profile_setting.dart @@ -0,0 +1,108 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_html/flutter_html.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../../data/cubits/profile_setting_cubit.dart'; +import '../../../data/helper/widgets.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; + +class ProfileSettings extends StatefulWidget { + final String? title; + final String? param; + const ProfileSettings({Key? key, this.title, this.param}) : super(key: key); + + @override + ProfileSettingsState createState() => ProfileSettingsState(); + + static Route route(RouteSettings routeSettings) { + Map? arguments = routeSettings.arguments as Map?; + return BlurredRouter( + builder: (_) => ProfileSettings( + title: arguments?['title'] as String, + param: arguments?['param'] as String, + ), + ); + } +} + +class ProfileSettingsState extends State { + @override + void initState() { + super.initState(); + Future.delayed(Duration.zero, () { + context + .read() + .fetchProfileSetting(context, widget.param!, forceRefresh: true); + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Theme.of(context).colorScheme.primaryColor, + appBar: UiUtils.buildAppBar(context, + title: widget.title!, showBackButton: true), + // appBar: Widgets.setAppbar(widget.title!, context, []), + body: BlocBuilder( + builder: (context, state) { + if (state is ProfileSettingFetchProgress) { + return Center( + child: UiUtils.progress( + normalProgressColor: context.color.tertiaryColor), + ); + } else if (state is ProfileSettingFetchSuccess) { + return contentWidget(state, context); + } else if (state is ProfileSettingFetchFailure) { + // log("HELLo"); + // return Center(child: Text(state.errmsg)); + return Widgets.noDataFound(state.errmsg); + } else { + return const SizedBox.shrink(); + } + }), + ); + } +} + +Widget contentWidget(ProfileSettingFetchSuccess state, BuildContext context) { + return SingleChildScrollView( + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Html( + data: state.data.toString(), + onAnchorTap: ( + url, + context, + attributes, + ) { + launchUrl(Uri.parse(url!), mode: LaunchMode.externalApplication); + }, + style: { + "table": Style( + backgroundColor: Colors.grey[50], + ), + "p": Style(color: context.color.textColorDark), + "p strong": Style( + color: context.color.tertiaryColor, fontSize: FontSize.larger), + "tr": Style( + // border: Border(bottom: BorderSide(color: Colors.grey)), + ), + "th": Style( + backgroundColor: Colors.grey, + border: const Border(bottom: BorderSide(color: Colors.black)), + ), + "td": Style(border: Border.all(color: Colors.grey, width: 0.5)), + 'h5': Style(maxLines: 2, textOverflow: TextOverflow.ellipsis), + }, + ), + /* child: WebView( + backgroundColor: ColorPrefs.lightBtnBGColor, + javascriptMode: JavascriptMode.unrestricted, + initialUrl: Uri.dataFromString(profileSettingData!, mimeType: 'text/html') + .toString(), //state.profileSettingData! + ),*/ + ); +} diff --git a/lib/Ui/screens/splash_screen.dart b/lib/Ui/screens/splash_screen.dart new file mode 100644 index 0000000..7f737a7 --- /dev/null +++ b/lib/Ui/screens/splash_screen.dart @@ -0,0 +1,331 @@ +// import 'dart:async'; + +import 'dart:async'; +import 'dart:developer'; + +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:ebroker/Ui/screens/widgets/Erros/no_internet.dart'; +import 'package:ebroker/app/default_app_setting.dart'; +import 'package:ebroker/app/routes.dart'; +// import 'package:flutter/services.dart'; +// import 'package:flutter_svg/flutter_svg.dart'; + +// import '../app/routes.dart'; +import 'package:ebroker/data/cubits/profile_setting_cubit.dart'; +import 'package:ebroker/data/cubits/system/fetch_language_cubit.dart'; +import 'package:ebroker/data/cubits/system/fetch_system_settings_cubit.dart'; +import 'package:ebroker/data/model/system_settings_model.dart'; +import 'package:ebroker/utils/AppIcon.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/api.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +// import 'package:ebroker/main.dart'; +// import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:hive_flutter/adapters.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; +import 'package:permission_handler/permission_handler.dart'; + +import '../../app/app.dart'; +import '../../app/app_theme.dart'; +import '../../data/Repositories/system_repository.dart'; +import '../../data/cubits/auth/auth_state_cubit.dart'; +import '../../data/cubits/category/fetch_category_cubit.dart'; +import '../../data/cubits/outdoorfacility/fetch_outdoor_facility_list.dart'; +import '../../data/cubits/system/app_theme_cubit.dart'; +import '../../utils/constant.dart'; +import '../../utils/hive_keys.dart'; +import '../../utils/hive_utils.dart'; + +class SplashScreen extends StatefulWidget { + const SplashScreen({Key? key}) : super(key: key); + + @override + SplashScreenState createState() => SplashScreenState(); +} + +class SplashScreenState extends State + with TickerProviderStateMixin { + late AuthenticationState authenticationState; + + bool isTimerCompleted = false; + bool isSettingsLoaded = false; + bool isLanguageLoaded = false; + + @override + void initState() { + context.read().fetchCategories(); + context.read().fetch(); + locationPermission(); + + super.initState(); + getLanguage().then((value) { + isLanguageLoaded = true; + setState(() {}); + }); + + // languageSettingReceivePort.listen((message) { + // + // }); + // getDefaultLanguage( + // () { + // isLanguageLoaded = true; + // setState(() {}); + // }, + // ); + + checkIsUserAuthenticated(); + bool isDataAvailable = checkPersistedDataAvailibility(); + Connectivity().checkConnectivity().then((value) { + if (value == ConnectivityResult.none && !isDataAvailable) { + Navigator.pushReplacement(context, MaterialPageRoute( + builder: (context) { + return NoInternet( + onRetry: () async { + try { + await LoadAppSettings().load(); + if (context.color.brightness == Brightness.light) { + context.read().changeTheme(AppTheme.light); + } else { + context.read().changeTheme(AppTheme.dark); + } + } catch (e) { + print("no internet"); + } + Future.delayed( + Duration.zero, + () { + Navigator.pushReplacementNamed( + context, + Routes.splash, + ); + }, + ); + }, + ); + }, + )); + } + }); + startTimer(); + //get Currency Symbol from Admin Panel + Future.delayed(Duration.zero, () { + context.read().fetchProfileSetting( + context, + Api.currencySymbol, + ); + }); + } + + Future locationPermission() async { + if ((await Permission.location.status) == PermissionStatus.denied) { + await Permission.location.request(); + } + } + + @override + void dispose() { + SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark); + super.dispose(); + } + + void checkIsUserAuthenticated() async { + authenticationState = context.read().state; + if (authenticationState == AuthenticationState.authenticated) { + ///Only load sensitive details if user is authenticated + ///This call will load sensitive details with settings + context.read().fetchSettings( + isAnonymouse: false, + forceRefresh: true, + ); + completeProfileCheck(); + } else { + //This call will hide sensitive details. + context.read().fetchSettings( + isAnonymouse: true, + forceRefresh: true, + ); + } + } + + Future startTimer() async { + Timer(const Duration(seconds: 1), () { + isTimerCompleted = true; + if (mounted) setState(() {}); + }); + } + + void navigateCheck() { + ({ + "timer": isTimerCompleted, + "setting": isSettingsLoaded, + "language": isLanguageLoaded + }).logg; + + if (isTimerCompleted && isSettingsLoaded && isLanguageLoaded) { + navigateToScreen(); + } + } + + void completeProfileCheck() { + if (HiveUtils.getUserDetails().name == "" || + HiveUtils.getUserDetails().email == "") { + Future.delayed( + const Duration(milliseconds: 100), + () { + Navigator.pushReplacementNamed( + context, + Routes.completeProfile, + arguments: { + "from": "login", + }, + ); + }, + ); + } + } + + void navigateToScreen() { + if (context + .read() + .getSetting(SystemSetting.maintenanceMode) == + "1") { + Future.delayed(Duration.zero, () { + Navigator.of(context).pushReplacementNamed( + Routes.maintenanceMode, + ); + }); + } else if (authenticationState == AuthenticationState.authenticated) { + Future.delayed(Duration.zero, () { + Navigator.of(context) + .pushReplacementNamed(Routes.main, arguments: {'from': "main"}); + }); + } else if (authenticationState == AuthenticationState.unAuthenticated) { + if (Hive.box(HiveKeys.userDetailsBox).get("isGuest") == true) { + Future.delayed(Duration.zero, () { + Navigator.of(context) + .pushReplacementNamed(Routes.main, arguments: {"from": "splash"}); + }); + } else { + Future.delayed(Duration.zero, () { + Navigator.of(context).pushReplacementNamed(Routes.login); + }); + } + } else if (authenticationState == AuthenticationState.firstTime) { + Future.delayed(Duration.zero, () { + Navigator.of(context).pushReplacementNamed(Routes.onboarding); + }); + } + } + + @override + Widget build(BuildContext context) { + SystemChrome.setEnabledSystemUIMode( + SystemUiMode.manual, + overlays: SystemUiOverlay.values, + ); + + navigateCheck(); + + return BlocListener( + listener: (context, state) {}, + child: BlocListener( + listener: (context, state) { + if (state is FetchSystemSettingsFailure) {} + if (state is FetchSystemSettingsSuccess) { + var setting = []; + if ((setting as List).isNotEmpty) { + if ((setting[0] as Map).containsKey("package_id")) { + Constant.subscriptionPackageId = ""; + } + } + + if (state.settings['data'].containsKey("demo_mode")) { + Constant.isDemoModeOn = state.settings['data']['demo_mode']; + } + isSettingsLoaded = true; + setState(() {}); + } + }, + child: AnnotatedRegion( + value: SystemUiOverlayStyle( + statusBarColor: context.color.tertiaryColor, + ), + child: Scaffold( + backgroundColor: context.color.tertiaryColor, + body: Stack( + children: [ + Align( + alignment: Alignment.center, + child: SizedBox( + width: 150, + height: 150, + child: LoadAppSettings().svg( + appSettings.splashLogo!, + // color: context.color.secondaryColor, + )), + ) + ], + ), + ), + ), + ), + ); + } +} + +Future getDefaultLanguage(VoidCallback onSuccess) async { + try { + // await Hive.initFlutter();v + + await Hive.openBox(HiveKeys.languageBox); + await Hive.openBox(HiveKeys.userDetailsBox); + await Hive.openBox(HiveKeys.authBox); + + if (HiveUtils.getLanguage() == null || + HiveUtils.getLanguage()?['data'] == null) { + Map result = await SystemRepository().fetchSystemSettings( + isAnonymouse: true, + ); + + var code = (result['data']['default_language']); + + await Api.get( + url: Api.getLanguagae, + queryParameters: { + Api.languageCode: code, + }, + useAuthToken: false, + ).then((value) { + HiveUtils.storeLanguage({ + "code": value['data']['code'], + "data": value['data']['file_name'], + "name": value['data']['name'] + }); + onSuccess.call(); + }); + } else { + onSuccess.call(); + } + } catch (e, st) { + log("Error while load default language $st"); + throw st; + } +} + +bool checkPersistedDataAvailibility() { + int dataAvailibile = 0; + for (Type cubit in Constant.hydratedCubits) { + if (HydratedBloc.storage.read('$cubit') == null) { + } else { + dataAvailibile++; + } + } + if (dataAvailibile == Constant.hydratedCubits.length) { + return true; + } else { + return false; + } +} diff --git a/lib/Ui/screens/subscription/packages_list.dart b/lib/Ui/screens/subscription/packages_list.dart new file mode 100644 index 0000000..8db0d40 --- /dev/null +++ b/lib/Ui/screens/subscription/packages_list.dart @@ -0,0 +1,898 @@ +import 'dart:io'; + +import 'package:ebroker/Ui/screens/subscription/widget/current_package_card.dart'; +import 'package:ebroker/Ui/screens/subscription/widget/package_tile.dart'; +import 'package:ebroker/Ui/screens/subscription/widget/subscripton_feature_line.dart'; +import 'package:ebroker/data/cubits/subscription/assign_free_package.dart'; +import 'package:ebroker/data/cubits/subscription/assign_package.dart'; +import 'package:ebroker/data/helper/widgets.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/api.dart'; +import 'package:ebroker/utils/helper_utils.dart'; +import 'package:ebroker/utils/payment/InAppPurchase/inAppPurchaseManager.dart'; +import 'package:ebroker/utils/payment/lib/payment.dart'; +import 'package:ebroker/utils/payment/lib/payment_service.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:google_mobile_ads/google_mobile_ads.dart'; + +import '../../../data/model/subscription_pacakage_model.dart'; +import '../../../utils/AdMob/bannerAdLoadWidget.dart'; +import '../../../utils/AdMob/interstitialAdManager.dart'; +import '../../../utils/AppIcon.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/LiquidIndicator/src/liquid_circular_progress_indicator.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/Erros/no_data_found.dart'; +import '../widgets/Erros/no_internet.dart'; +import '../widgets/Erros/something_went_wrong.dart'; +import '../widgets/shimmerLoadingContainer.dart'; +import 'payment_gatways.dart'; + +class SubscriptionPackageListScreen extends StatefulWidget { + final String? from; + const SubscriptionPackageListScreen({super.key, this.from}); + static Route route(RouteSettings settings) { + Map? arguments = settings.arguments as Map?; + return BlurredRouter( + builder: (context) { + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => GetSubsctiptionPackageLimitsCubit(), + ), + BlocProvider( + create: (context) => AssignFreePackageCubit(), + ), + BlocProvider( + create: (context) => AssignInAppPackageCubit(), + ), + ], + child: SubscriptionPackageListScreen( + from: arguments?['from'], + ), + ); + + // return BlocProvider( + // create: (context) => GetSubsctiptionPackageLimitsCubit(), + // child: const SubscriptionPackageListScreen(), + // ); + }, + ); + } + + @override + State createState() => + _SubscriptionPackageListScreenState(); +} + +class _SubscriptionPackageListScreenState + extends State { + InterstitialAdManager interstitialAdManager = InterstitialAdManager(); + InAppPurchaseManager inAppPurchase = InAppPurchaseManager(); + final ScrollController _scrollController = ScrollController(); + @override + void initState() { + // logServerInit(); + _scrollController.addListener(() { + if (_scrollController.isEndReached()) { + if (context.read().hasMore()) { + context.read().fetchMorePackages(); + } + } + }); + + context.read().fetchPackages(); + interstitialAdManager.load(); + InAppPurchaseManager.getPendings(); + inAppPurchase.listenIAP(context); + PaymentGatways.initPaystack(); + + super.initState(); + } + + dynamic ifServiceUnlimited(dynamic text, {dynamic remining}) { + if (text == "unlimited") { + return UiUtils.translate(context, "unlimited"); + } + if (text == "not_available") { + return ""; + } + if (remining != null) { + return ""; + } + + return text; + } + + bool isUnlimited(int text, {dynamic remining}) { + if (text == 0) { + return true; + } + if (remining != null) { + return false; + } + + return false; + } + + int selectedPage = 0; + Future _onTapSubscribe(subscriptionPackage) async { + if (subscriptionPackage.price?.toInt() == 0) { + context.read().assign(subscriptionPackage.id!); + return; + } + if (Platform.isIOS) { + inAppPurchase.buy(subscriptionPackage!.iosProductId!, + subscriptionPackage.id!.toString()); + return; + } + if (!isPaymentGatewayOpen) { + PaymentService paymentService = PaymentService(); + paymentService.targetGatwayKey = AppSettings.enabledPaymentGatway; + paymentService.attachedGatways(gatways); + paymentService.setContext(context); + paymentService.setPackage(subscriptionPackage); + paymentService.pay(); + } + } + + @override + Widget build(BuildContext context) { + return RefreshIndicator( + backgroundColor: context.color.primaryColor, + color: context.color.tertiaryColor, + onRefresh: () async { + context.read().fetchPackages(); + + /// + /// + // mySubscriptions = context + // .read() + // .getSetting(SystemSetting.subscription); + + // if (mySubscriptions.isNotEmpty) { + // isLifeTimeSubscription = mySubscriptions[0]['end_date'] == null; + // } + // hasAlreadyPackage = mySubscriptions.isNotEmpty; + }, + child: Scaffold( + backgroundColor: context.color.primaryColor, + appBar: UiUtils.buildAppBar( + context, + showBackButton: true, + title: "Rencana Langganan", + ), + bottomNavigationBar: const BottomAppBar( + child: BannerAdWidget(bannerSize: AdSize.banner), + ), + body: WillPopScope( + onWillPop: () async { + await interstitialAdManager.show(); + return true; + }, + child: MultiBlocListener( + listeners: [ + BlocListener( + listener: (context, state) { + if (state is AssignInAppPackageSuccess) { + // Widgets.hideLoder(context); + context + .read() + .fetchSettings(isAnonymouse: false, forceRefresh: true); + HelperUtils.showSnackBarMessage( + context, "Package Assigned"); + } + }, + ), + ], + child: Builder(builder: (context) { + return BlocListener( + listener: (context, state) { + if (state is AssignFreePackageInProgress) { + Widgets.showLoader(context); + } + + if (state is AssignFreePackageSuccess) { + Widgets.hideLoder(context); + context + .read() + .fetchPackages(); + + HelperUtils.showSnackBarMessage( + context, "Free package is assigned"); + } + + if (state is AssignFreePackageFail) { + Widgets.hideLoder(context); + + HelperUtils.showSnackBarMessage( + context, "Failed to assign free package"); + } + }, + child: BlocConsumer( + listener: (context, FetchSubscriptionPackagesState state) {}, + builder: (context, state) { + if (state is FetchSubscriptionPackagesInProgress) { + return ListView.builder( + itemCount: 10, + shrinkWrap: true, + padding: const EdgeInsets.all(16), + itemBuilder: (context, index) { + return const Padding( + padding: EdgeInsets.symmetric( + vertical: 8.0, + ), + child: CustomShimmer( + height: 160, + ), + ); + }, + ); + } + if (state is FetchSubscriptionPackagesFailure) { + if (state.errorMessage is ApiException) { + if (state.errorMessage.errorMessage == "no-internet") { + return NoInternet( + onRetry: () { + context + .read() + .fetchPackages(); + }, + ); + } + } + print("THe error is ${state.errorMessage}"); + return const SomethingWentWrong(); + } + if (state is FetchSubscriptionPackagesSuccess) { + if (state.subscriptionPacakges.isEmpty) { + return NoDataFound( + onTap: () { + context + .read() + .fetchPackages(); + + setState(() {}); + }, + ); + } + + // return Column( + // mainAxisAlignment: MainAxisAlignment.center, + // children: [ + // CarouselSlider.builder( + // itemCount: state.subscriptionPacakges.length, + // itemBuilder: (BuildContext context, int itemIndex, + // int pageViewIndex) { + // SubscriptionPackageModel subscriptionPacakge = + // state.subscriptionPacakges[itemIndex]; + // return Container( + // width: context.screenWidth * 0.98, + // decoration: BoxDecoration( + // color: context.color.secondaryColor, + // borderRadius: BorderRadius.circular(18), + // border: Border.all( + // color: context.color.borderColor, + // width: 1.5)), + // child: Column( + // children: [ + // const SizedBox( + // height: 24, + // ), + // Text(subscriptionPacakge.name.toString()) + // .size(context.font.extraLarge) + // .color(context.color.tertiaryColor) + // .bold(weight: FontWeight.w600), + // const SizedBox( + // height: 14, + // ), + // Container( + // width: 186, + // height: 186, + // decoration: BoxDecoration( + // color: context.color.tertiaryColor + // .withOpacity(0.1), + // shape: BoxShape.circle, + // ), + // child: SvgPicture.asset( + // AppIcons.placeHolder), + // ), + // const SizedBox( + // height: 10, + // ), + // Padding( + // padding: const EdgeInsets.fromLTRB( + // 20.0, 10, 20, 10), + // child: Container( + // height: 75, + // decoration: BoxDecoration( + // borderRadius: + // BorderRadius.circular(14), + // border: Border.all( + // color: context + // .color.tertiaryColor, + // width: 1.5)), + // child: Padding( + // padding: const EdgeInsets.symmetric( + // horizontal: 18.0, vertical: 14), + // child: Row( + // mainAxisAlignment: + // MainAxisAlignment + // .spaceBetween, + // crossAxisAlignment: + // CrossAxisAlignment.center, + // children: [ + // Column( + // crossAxisAlignment: + // CrossAxisAlignment.start, + // children: [ + // Text("30 Days") + // .size( + // context.font.larger) + // .bold( + // weight: FontWeight + // .w600), + // Text("50% Off").color( + // context.color + // .textLightColor) + // ], + // ), + // Column( + // crossAxisAlignment: + // CrossAxisAlignment.end, + // children: [ + // Text(r"$549") + // .size( + // context.font.larger) + // .bold( + // weight: FontWeight + // .w600), + // Text(r"800").color(context + // .color.textLightColor) + // ], + // ) + // ], + // ), + // ), + // ), + // ), + // Padding( + // padding: const EdgeInsets.all(19.0), + // child: Column( + // children: [ + // PlanFacilityRow( + // count: subscriptionPacakge + // .advertisementLimit + // .toString(), + // facilityTitle: + // "Advertisement limit is", + // icon: AppIcons.ads), + // const SizedBox( + // height: 12, + // ), + // PlanFacilityRow( + // count: subscriptionPacakge + // .propertyLimit + // .toString(), + // facilityTitle: + // "Property limit is", + // icon: AppIcons.propertyLimites), + // const SizedBox( + // height: 12, + // ), + // PlanFacilityRow( + // count: + // "${subscriptionPacakge.duration}", + // facilityTitle: "Validity ", + // icon: AppIcons.days), + // ], + // ), + // ), + // ], + // ), + // ); + // }, + // options: CarouselOptions( + // autoPlay: false, + // enlargeCenterPage: true, + // onPageChanged: (index, reason) { + // selectedPage = index; + // setState(() {}); + // }, + // viewportFraction: 0.8, + // initialPage: 0, + // height: 420 + 72 + 15, + // // clipBehavior: Clip.antiAlias, + // disableCenter: true, + // enableInfiniteScroll: false), + // ), + // const SizedBox( + // height: 38, + // ), + // Indicator(state, context), + // const SizedBox( + // height: 38, + // ), + // MaterialButton( + // onPressed: () {}, + // height: 50, + // minWidth: context.screenWidth * 0.8, + // shape: RoundedRectangleBorder( + // borderRadius: BorderRadius.circular(12), + // ), + // color: context.color.tertiaryColor, + // child: const Text("Subscribe Now") + // .color(context.color.buttonColor) + // .size(context.font.larger), + // ), + // ], + // ); + + return SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: Column( + children: [ + ListView.builder( + controller: _scrollController, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: state.subscriptionPacakges.length, + padding: const EdgeInsets.fromLTRB(16, 0, 16, 16), + itemBuilder: (context, index) { + SubscriptionPackageModel subscriptionPacakge = + state.subscriptionPacakges[index]; + + if (subscriptionPacakge.isActive == 1) { + return CurrentPackageTileCard( + package: subscriptionPacakge, + ); + } + + return Padding( + padding: + const EdgeInsets.symmetric(vertical: 8.0), + child: SubscriptionPackageTile( + package: subscriptionPacakge, + onTap: () { + _onTapSubscribe.call(subscriptionPacakge); + }, + ), + // child: buildPackageTile( + // context, + // subscriptionPacakge, + // ), + ); + }, + ), + if (state.isLoadingMore) UiUtils.progress(), + if (state.hasError) + const Text("Something went wrong") + ], + ), + ); + } + + return Container(); + }, + ), + ); + }), + ), + ), + ), + ); + } + + Row Indicator(FetchSubscriptionPackagesSuccess state, BuildContext context) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ...List.generate((state.subscriptionPacakges.length), (index) { + bool isSelected = selectedPage == index; + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 3), + child: Container( + width: isSelected ? 24 : 8, + height: 8, + decoration: BoxDecoration( + border: isSelected + ? Border() + : Border.all(color: context.color.textColorDark), + color: isSelected + ? context.color.tertiaryColor + : Colors.transparent, + borderRadius: BorderRadius.circular(10), + ), + ), + ); + }) + ], + ); + } + + Widget PlanFacilityRow( + {required String icon, + required String facilityTitle, + required String count}) { + return Row( + children: [ + SvgPicture.asset( + icon, + width: 24, + height: 24, + color: context.color.tertiaryColor, + ), + const SizedBox( + width: 11, + ), + Text(facilityTitle + " " + count) + .size(context.font.large) + .color(context.color.textColorDark.withOpacity(0.8)) + ], + ); + } + + Widget currentPackageTile( + {required String name, + dynamic advertismentLimit, + dynamic propertyLimit, + dynamic duration, + dynamic startDate, + dynamic endDate, + dynamic advertismentRemining, + dynamic propertyRemining, + required String price}) { + /// + if (endDate != null) { + endDate = endDate.toString().formatDate(); + } + + return Container( + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(18), + ), + child: Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Stack( + children: [ + SizedBox( + width: context.screenWidth, + child: UiUtils.getSvg( + AppIcons.headerCurve, + color: context.color.tertiaryColor, + fit: BoxFit.fitWidth, + ), + ), + PositionedDirectional( + start: 10.rw(context), + top: 8.rh(context), + child: Text(UiUtils.translate(context, "currentPackage")) + .size(context.font.larger) + .color(context.color.secondaryColor) + .bold(weight: FontWeight.w600), + ) + ], + ), + const SizedBox( + height: 5, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Text(name) + .size(context.font.larger) + .color(context.color.textColorDark) + .bold(weight: FontWeight.w600), + ), + const SizedBox( + height: 20, + ), + Row( + children: [ + SubscriptionFeatureLine( + title: UiUtils.translate(context, "adLimitIs"), + limit: PackageLimit(advertismentLimit), + isTime: false, + ), + // bulletPoint(context, + // "${UiUtils.getTranslatedLabel(context, "adLimitIs")} ${advertismentLimit == '' ? UiUtils.getTranslatedLabel(context, "lifetime") : ifServiceUnlimited(advertismentLimit, remining: advertismentRemining)}"), + const Spacer(), + if (!isUnlimited(advertismentLimit, + remining: advertismentRemining) && + advertismentLimit != "") + SizedBox( + height: 60, + width: 60, + child: LiquidCircularProgressIndicator( + value: double.parse(advertismentRemining) / + advertismentLimit, // Defaults to 0.5. + valueColor: AlwaysStoppedAnimation( + context.color.tertiaryColor.withOpacity(0.3), + ), // Defaults to the current Theme's accentColor. + backgroundColor: Colors + .white, // Defaults to the current Theme's backgroundColor. + borderColor: context.color.tertiaryColor, + borderWidth: 3.0, + direction: Axis.vertical, + + // The direction the liquid moves (Axis.vertical = bottom to top, Axis.horizontal = left to right). Defaults to Axis.vertical. + center: Text("$advertismentRemining/$advertismentLimit"), + ), + ), + ], + ), + SizedBox( + height: 5.rh(context), + ), + Row( + children: [ + Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + // if (propertyLimit != null) SubscriptionFeatureLine(), + + SubscriptionFeatureLine( + title: UiUtils.translate(context, "propertyLimit"), + limit: PackageLimit(propertyLimit), + isTime: false, + ), + + // bulletPoint(context, + // "${UiUtils.getTranslatedLabel(context, "propertyLimit")} ${propertyLimit == '' ? UiUtils.getTranslatedLabel(context, "lifetime") : ifServiceUnlimited(propertyLimit, remining: propertyRemining)}"), + SizedBox( + height: 5.rh(context), + ), + // if (isLifeTimeSubscription) + // Row( + // children: [ + // SubscriptionFeatureLine(), + // SubscriptionFeatureLine( + // title: UiUtils.getTranslatedLabel( + // context, "propertyLimit"), + // limit: PackageLimit(endDate), + // isTime: true, + // ), + // // bulletPoint(context, + // // "${UiUtils.getTranslatedLabel(context, "validity")} ${endDate ?? UiUtils.getTranslatedLabel(context, "lifetime")} "), + // ], + // ), + SubscriptionFeatureLine( + title: UiUtils.translate(context, "validity"), + limit: null, + isTime: true, + timeLimit: UiUtils.translate(context, "packageStartedOn") + + startDate + + UiUtils.translate(context, "andPackageWillEndOn") + + endDate.toString(), + ), + ]), + const Spacer(), + if (!isUnlimited(propertyLimit, remining: propertyRemining) && + propertyLimit != "") + SizedBox( + height: 60, + width: 60, + child: LiquidCircularProgressIndicator( + value: double.parse(advertismentRemining) / + advertismentLimit, // Defaults to 0.5. + valueColor: AlwaysStoppedAnimation( + context.color.tertiaryColor.withOpacity(0.3), + ), // Defaults to the current Theme's accentColor. + backgroundColor: Colors + .white, // Defaults to the current Theme's backgroundColor. + borderColor: context.color.tertiaryColor, + borderWidth: 3.0, + direction: Axis.vertical, + + // The direction the liquid moves (Axis.vertical = bottom to top, Axis.horizontal = left to right). Defaults to Axis.vertical. + center: Text("$advertismentRemining/$advertismentLimit"), + ), + ), + ], + ), + ], + ), + ), + ); + } + + Widget buildPackageTile( + BuildContext context, + SubscriptionPackageModel subscriptionPacakge, + ) { + return Container( + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(18)), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Stack( + children: [ + SizedBox( + width: context.screenWidth, + child: UiUtils.getSvg(AppIcons.headerCurve, + color: context.color.tertiaryColor, fit: BoxFit.fitWidth), + ), + PositionedDirectional( + start: 10.rw(context), + top: 8.rh(context), + child: Text(subscriptionPacakge.name ?? "") + .size(context.font.larger) + .color(context.color.secondaryColor) + .bold(weight: FontWeight.w600), + ) + ], + ), + const SizedBox( + height: 20, + ), + // if (subscriptionPacakge.advertisementLimit != "not_available") + SubscriptionFeatureLine( + limit: PackageLimit(subscriptionPacakge.advertisementLimit), + isTime: false, + title: UiUtils.translate(context, "adLimitIs"), + ), + // bulletPoint(context, + // "${UiUtils.getTranslatedLabel(context, "adLimitIs")} ${subscriptionPacakge.advertisementLimit == '' ? UiUtils.getTranslatedLabel(context, "lifetime") : ifServiceUnlimited(subscriptionPacakge.advertisementLimit)}"), + SizedBox( + height: 5.rh(context), + ), + Row( + children: [ + Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + // if (subscriptionPacakge.propertyLimit != "not_available") + // SubscriptionFeatureLine(), + + SubscriptionFeatureLine( + limit: PackageLimit(subscriptionPacakge.propertyLimit), + isTime: false, + title: UiUtils.translate(context, "propertyLimit"), + ), + // bulletPoint(context, + // "${UiUtils.getTranslatedLabel(context, "propertyLimit")} ${subscriptionPacakge.propertyLimit == '' ? UiUtils.getTranslatedLabel(context, "lifetime") : ifServiceUnlimited(subscriptionPacakge.propertyLimit)}"), + SizedBox( + height: 5.rh(context), + ), + + SubscriptionFeatureLine( + limit: null, + isTime: true, + timeLimit: + "${subscriptionPacakge.duration} ${UiUtils.translate(context, "days")}", + title: UiUtils.translate(context, "validity"), + ), + // SubscriptionFeatureLine(), + ]), + // const Spacer(), + Expanded( + child: Padding( + padding: const EdgeInsetsDirectional.only(end: 15.0), + child: Container( + alignment: Alignment.center, + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(8)), + height: 39.rh(context), + constraints: BoxConstraints( + minWidth: 80.rw(context), + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 4.0), + child: Text( + ("${subscriptionPacakge.price}") + .toString() + .formatAmount(prefix: true), + style: const TextStyle(fontFamily: "ROBOTO"), + ) + .color(context.color.tertiaryColor) + .bold() + .size(context.font.large), + )), + ), + ) + ], + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: UiUtils.buildButton(context, onPressed: () async { + if (subscriptionPacakge.price?.toInt() == 0) { + context + .read() + .assign(subscriptionPacakge.id!); + return; + } + if (Platform.isIOS) { + inAppPurchase.buy( + // "android.test.purchased" ?? + subscriptionPacakge.iosProductId!, + subscriptionPacakge.id!.toString()); + return; + } + + PaymentService paymentService = PaymentService(); + paymentService.targetGatwayKey = AppSettings.enabledPaymentGatway; + paymentService.attachedGatways(gatways); + paymentService.setContext(context); + paymentService.setPackage(subscriptionPacakge); + paymentService.pay(); + // } else { + // var proceed = await UiUtils.showBlurredDialoge( + // context, + // sigmaX: 3, + // sigmaY: 3, + // dialoge: BlurredDialogBox( + // title: UiUtils.getTranslatedLabel(context, "warning"), + // cancelTextColor: context.color.textColorDark, + // acceptButtonName: + // UiUtils.getTranslatedLabel(context, "proceed"), + // content: Text( + // UiUtils.getTranslatedLabel( + // context, "currentPacakgeActiveWarning"), + // ), + // ), + // ); + // + // if (proceed == true) { + // Future.delayed( + // Duration.zero, + // () { + // ///This is to assign free package + // if (subscriptionPacakge.price?.toInt() == 0) { + // context + // .read() + // .assign(subscriptionPacakge.id!); + // return; + // } + // + // ///if the platform is IOS always open in app purchase + // if (Platform.isIOS) { + // inAppPurchase.buy( + // // "android.test.purchased" ?? + // subscriptionPacakge.iosProductId!, + // subscriptionPacakge.id!.toString(), + // ); + // return; + // } + // + // ///This is to pay via payment gateway + // PaymentService paymentService = PaymentService(); + // paymentService.targetGatwayKey = + // AppSettings.enabledPaymentGatway; + // paymentService.attachedGatways(gatways); + // paymentService.setContext(context); + // paymentService.setPackage(subscriptionPacakge); + // paymentService.pay(); + // // PaymentGatways.openEnabled(context, + // // subscriptionPacakge.price, subscriptionPacakge); + // }, + // ); + // } + // } + }, + radius: 9, + height: 33.rh(context), + buttonTitle: UiUtils.translate(context, "subscribe")), + ), + ], + ), + ); + } +} + +// logServerInit() async { +// socket = await WebSocket.connect( +// 'ws://192.168.0.103:5566/', +// ); +// } +// +// logS(String value, {String? name}) async { +// socket?.add(json.encode({"name": name, "log": value})); +// } diff --git a/lib/Ui/screens/subscription/payment_gatways.dart b/lib/Ui/screens/subscription/payment_gatways.dart new file mode 100644 index 0000000..615a2dc --- /dev/null +++ b/lib/Ui/screens/subscription/payment_gatways.dart @@ -0,0 +1,266 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:io'; + +import 'package:ebroker/app/app.dart'; +import 'package:ebroker/app/default_app_setting.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_paystack/flutter_paystack.dart'; +import 'package:razorpay_flutter/razorpay_flutter.dart'; + +import '../../../data/cubits/subscription/fetch_subscription_packages_cubit.dart'; +import '../../../data/cubits/system/fetch_system_settings_cubit.dart'; +import '../../../settings.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/hive_utils.dart'; +import '../../../utils/payment/gatways/paypal.dart'; +import '../../../utils/payment/gatways/stripe_service.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/blurred_dialoge_box.dart'; + +class PaymentGatways { + static PaystackPlugin paystackPlugin = PaystackPlugin(); + + static openEnabled(BuildContext context, dynamic price, dynamic package) { + if (AppSettings.enabledPaymentGatway == "paystack") { + paystack(context, price, package.id); + } else if (AppSettings.enabledPaymentGatway == "paypal") { + paypal(context, package); + } else if (AppSettings.enabledPaymentGatway == "razorpay") { + razorpay(context, price: price, package: package); + } else if (AppSettings.enabledPaymentGatway == "stripe") { + stripe(context, + packageId: package, price: double.parse(price.toString())); + } + } + + static String generateReference(String email) { + late String platform; + if (Platform.isIOS) { + platform = 'I'; + } else if (Platform.isAndroid) { + platform = 'A'; + } + String reference = + '${platform}_${email.split("@").first}_${DateTime.now().millisecondsSinceEpoch}'; + return reference; + } + + static void initPaystack() { + if (AppSettings.enabledPaymentGatway == "paystack") { + if (!paystackPlugin.sdkInitialized) { + paystackPlugin.initialize(publicKey: Constant.paystackKey); + } + } + } + + static void stripe(BuildContext context, + {required double price, required dynamic packageId}) { + openStripePaymentGateway( + amount: price, + onError: (message) {}, + onSuccess: () { + _purchase(context); + }, + metadata: {"packageId": packageId.id, "userId": HiveUtils.getUserId()}); + } + + static Future paystack( + BuildContext context, dynamic price, dynamic packageId) async { + Charge paystackCharge = Charge() + ..amount = (price! * 100).toInt() + ..email = HiveUtils.getUserDetails().email + ..currency = Constant.paystackCurrency + ..reference = generateReference(HiveUtils.getUserDetails().email!) + ..putMetaData("username", HiveUtils.getUserDetails().name) + ..putMetaData("package_id", packageId) + ..putMetaData("user_id", HiveUtils.getUserId()); + + CheckoutResponse checkoutResponse = await paystackPlugin.checkout(context, + logo: SizedBox( + height: 50, + width: 50, + child: LoadAppSettings().svg( + appSettings.splashLogo!, + )), + charge: paystackCharge, + method: CheckoutMethod.card); + + if (checkoutResponse.status) { + if (checkoutResponse.verify) { + Future.delayed( + Duration.zero, + () async { + await _purchase(context); + }, + ); + } + } else { + Future.delayed( + Duration.zero, + () { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "purchaseFailed")); + }, + ); + } + } + + static void paypal(BuildContext context, dynamic package) { + Navigator.push(context, BlurredRouter( + builder: (context) { + return PaypalWidget( + pacakge: package, + onSuccess: (msg) { + Navigator.pop(context, {"msg": msg, "type": "success"}); + }, + onFail: (msg) { + Navigator.pop(context, {"msg": msg, "type": "fail"}); + }, + ); + }, + )).then((dynamic value) { + //push and show dialog box about paypal success or failed, after that we call purchase method it will refresh API and check if package is purchased or not + if (value != null) { + Future.delayed( + const Duration(milliseconds: 1000), + () { + UiUtils.showBlurredDialoge(context, + dialoge: BlurredDialogBox( + title: UiUtils.translate(context, + value['type'] == 'success' ? "success" : "Failed"), + onAccept: () async { + if (value['type'] == 'success') { + _purchase(context); + } + }, + onCancel: () { + if (value['type'] == 'success') { + _purchase(context); + } + }, + isAcceptContainesPush: true, + content: Text(value['msg']))); + }, + ); + } + }); + } + + static void razorpay( + BuildContext context, { + required price, + required package, + }) { + final Razorpay razorpay = Razorpay(); + + var options = { + 'key': Constant.razorpayKey, + 'amount': price! * 100, + 'name': package.name, + 'description': '', + 'prefill': { + 'contact': HiveUtils.getUserDetails().mobile, + 'email': HiveUtils.getUserDetails().email + }, + "notes": {"package_id": package.id, "user_id": HiveUtils.getUserId()}, + }; + + if (Constant.razorpayKey != "") { + razorpay.open(options); + razorpay.on( + Razorpay.EVENT_PAYMENT_SUCCESS, + ( + PaymentSuccessResponse response, + ) async { + await _purchase(context); + }, + ); + razorpay.on( + Razorpay.EVENT_PAYMENT_ERROR, + (PaymentFailureResponse response) { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "purchaseFailed")); + }, + ); + razorpay.on( + Razorpay.EVENT_EXTERNAL_WALLET, + (e) {}, + ); + } else { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "setAPIkey")); + } + } + + static Future _purchase(BuildContext context) async { + try { + Future.delayed( + Duration.zero, + () { + context + .read() + .fetchSettings(isAnonymouse: false); + context.read().fetchPackages(); + + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "success"), + type: MessageType.success, messageDuration: 5); + + Navigator.of(context).popUntil((route) => route.isFirst); + }, + ); + } catch (e) { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "purchaseFailed"), + type: MessageType.error); + } + } +} + +// class PaymentService { +// BuildContext? _context; +// SubscriptionPackageModel? _modal; +// String? _targetGatwayKey; +// Gatway? _currentGatway; +// set targetGatwayKey(String key) { +// _targetGatwayKey = key; +// } + +// PaymentService setPackage(SubscriptionPackageModel modal) { +// _modal = modal; +// return this; +// } + +// PaymentService setContext(BuildContext context) { +// _context = context; +// return this; +// } + +// PaymentService attachedGatways(List paymentGatways) { +// if (_targetGatwayKey == null) { +// throw "Please set target gatway key"; +// } +// for (Gatway gatway in paymentGatways) { +// if (gatway.key == _targetGatwayKey) { +// _currentGatway = gatway; +// } +// } +// return this; +// } + +// void pay() async { +// if (_context == null) { +// throw "Please call setContext before use this"; +// } +// if (_modal == null) { +// throw "Please call setPackage"; +// } +// if (_currentGatway == null) { +// throw "please attach gatways"; +// } +// _currentGatway!.instance.setPackage(_modal!).pay(_context!); +// } +// } diff --git a/lib/Ui/screens/subscription/subscribe_screen.dart b/lib/Ui/screens/subscription/subscribe_screen.dart new file mode 100644 index 0000000..b0e52be --- /dev/null +++ b/lib/Ui/screens/subscription/subscribe_screen.dart @@ -0,0 +1,382 @@ +// ignore_for_file: must_be_immutable, depend_on_referenced_packages + +import 'dart:io'; + +import 'package:ebroker/app/app.dart'; +import 'package:ebroker/app/default_app_setting.dart'; +import 'package:ebroker/data/model/subscription_pacakage_model.dart'; +import 'package:ebroker/utils/AppIcon.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/api.dart'; +import 'package:ebroker/utils/hive_utils.dart'; +import 'package:ebroker/utils/payment/gatways/paypal.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_paystack/flutter_paystack.dart'; +import 'package:razorpay_flutter/razorpay_flutter.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + +import '../../../data/cubits/subscription/fetch_subscription_packages_cubit.dart'; +import '../../../data/cubits/system/fetch_system_settings_cubit.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/helper_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/blurred_dialoge_box.dart'; + +/////THIS SCREEN IS NOT IN USE NOW + +class SubscriptionScreen extends StatefulWidget { + SubscriptionPackageModel pacakge; + final bool isPackageAlready; + SubscriptionScreen( + {super.key, required this.pacakge, required this.isPackageAlready}); + static Route route(RouteSettings settings) { + Map arguments = settings.arguments as Map; + return BlurredRouter( + builder: (context) { + return SubscriptionScreen( + pacakge: arguments['package'], + isPackageAlready: arguments['isPackageAlready'], + ); + }, + ); + } + + @override + State createState() => _SubscriptionScreenState(); +} + +class _SubscriptionScreenState extends State { + PaystackPlugin paystackPlugin = PaystackPlugin(); + final Razorpay _razorpay = Razorpay(); + int selectedPaymentMethod = 1; + late WebViewController controllerGlobal; + late Map paymentMethodIndex = { + 1: _paystack, + 2: _openPaypal, + 3: _openRazorPay + }; + + _openPaypal() { + Navigator.push(context, BlurredRouter( + builder: (context) { + return PaypalWidget( + pacakge: widget.pacakge, + onSuccess: (msg) { + Navigator.pop( + context, + { + "msg": msg, + "type": "success", + }, + ); + }, + onFail: (msg) { + Navigator.pop( + context, + { + "msg": msg, + "type": "fail", + }, + ); + }, + ); + }, + )).then((dynamic value) { + //push and show dialog box about paypal success or failed, after that we call purchase method it will refresh API and check if package is purchased or not + if (value != null) { + Future.delayed( + const Duration(milliseconds: 1000), + () { + UiUtils.showBlurredDialoge(context, + dialoge: BlurredDialogBox( + title: UiUtils.translate(context, + value['type'] == 'success' ? "success" : "Failed"), + onAccept: () async { + if (value['type'] == 'success') { + _purchase(); + } + }, + onCancel: () { + if (value['type'] == 'success') { + _purchase(); + } + }, + isAcceptContainesPush: true, + content: Text(value['msg']))); + }, + ); + } + }); + } + + _purchase() async { + try { + Future.delayed( + Duration.zero, + () { + context + .read() + .fetchSettings(isAnonymouse: false); + context.read().fetchPackages(); + + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "success"), + type: MessageType.success, messageDuration: 5); + + Navigator.of(context).popUntil((route) => route.isFirst); + }, + ); + } catch (e) { + HelperUtils.showSnackBarMessage(context, "purchaseFailed", + type: MessageType.error); + } + } + + getPaypalURL() async { + await Api.get(url: Api.paypal, queryParameters: { + Api.packageId: widget.pacakge.id, + "amount": widget.pacakge.price.toString() + }); + } + + _openRazorPay() async { + var options = { + 'key': Constant.razorpayKey, + 'amount': widget.pacakge.price! * 100, + 'name': widget.pacakge.name, + 'description': '', + 'prefill': { + 'contact': HiveUtils.getUserDetails().mobile, + 'email': HiveUtils.getUserDetails().email + }, + "notes": { + "package_id": widget.pacakge.id, + "user_id": HiveUtils.getUserId() + }, + }; + + if (Constant.razorpayKey != "") { + _razorpay.open(options); + _razorpay.on( + Razorpay.EVENT_PAYMENT_SUCCESS, + _razorpayHandlePaymentSuccess, + ); + _razorpay.on( + Razorpay.EVENT_PAYMENT_ERROR, + _razorpayHandlePaymentError, + ); + _razorpay.on( + Razorpay.EVENT_EXTERNAL_WALLET, + _razorpayHandleExternalWallet, + ); + } else { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "setAPIkey")); + } + } + + _paystack() async { + Charge paystackCharge = Charge() + ..amount = (widget.pacakge.price! * 100).toInt() + ..email = HiveUtils.getUserDetails().email + ..currency = Constant.paystackCurrency + ..reference = generateReference(HiveUtils.getUserDetails().email!) + ..putMetaData("username", HiveUtils.getUserDetails().name) + ..putMetaData("package_id", widget.pacakge.id) + ..putMetaData("user_id", HiveUtils.getUserId()); + + CheckoutResponse checkoutResponse = await paystackPlugin.checkout(context, + logo: SizedBox( + height: 50, + width: 50, + child: LoadAppSettings().svg(appSettings.placeholderLogo!, + color: context.color.tertiaryColor)), + charge: paystackCharge, + method: CheckoutMethod.card); + + if (checkoutResponse.status) { + if (checkoutResponse.verify) { + await _purchase(); + } + } else { + Future.delayed( + Duration.zero, + () { + HelperUtils.showSnackBarMessage(context, "purchaseFailed"); + }, + ); + } + } + + String generateReference(String email) { + late String platform; + if (Platform.isIOS) { + platform = 'I'; + } else if (Platform.isAndroid) { + platform = 'A'; + } + String reference = + '${platform}_${email.split("@").first}_${DateTime.now().millisecondsSinceEpoch}'; + return reference; + } + + _onTapSubscribe() async { + paymentMethodIndex[selectedPaymentMethod]?.call(); + } + + @override + void initState() { + paystackPlugin.initialize(publicKey: Constant.paystackKey); + super.initState(); + } + + void _razorpayHandlePaymentSuccess(PaymentSuccessResponse response) async { + await _purchase(); + } + + void _razorpayHandlePaymentError(PaymentFailureResponse response) { + HelperUtils.showSnackBarMessage(context, "purchaseFailed"); + } + +//not in use + void _razorpayHandleExternalWallet(ExternalWalletResponse response) {} + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.primaryColor, + appBar: UiUtils.buildAppBar(context, + showBackButton: true, + title: UiUtils.translate(context, "selectPaymentMethod")), + body: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ScrollConfiguration( + behavior: RemoveGlow(), + child: ListView( + padding: const EdgeInsets.symmetric(horizontal: 16), + shrinkWrap: true, + children: [ + RadioListTile( + title: Text( + UiUtils.translate( + context, + "paystack", + ), + ), + activeColor: context.color.tertiaryColor, + secondary: paymentIcon(context, AppIcons.paystack), + controlAffinity: ListTileControlAffinity.trailing, + value: 1, + groupValue: selectedPaymentMethod, + onChanged: (dynamic v) { + selectedPaymentMethod = v; + setState( + () {}, + ); + }, + ), + const SizedBox( + height: 5, + ), + RadioListTile( + title: Text( + UiUtils.translate(context, "paypal"), + ), + activeColor: context.color.tertiaryColor, + secondary: paymentIcon( + context, + AppIcons.paypal, + ), + controlAffinity: ListTileControlAffinity.trailing, + value: 2, + groupValue: selectedPaymentMethod, + onChanged: (dynamic v) { + selectedPaymentMethod = v; + setState(() {}); + }), + const SizedBox( + height: 5, + ), + RadioListTile( + title: Text( + UiUtils.translate(context, "razorpay"), + ), + activeColor: context.color.tertiaryColor, + secondary: paymentIcon(context, AppIcons.razorpay), + controlAffinity: ListTileControlAffinity.trailing, + value: 3, + groupValue: selectedPaymentMethod, + onChanged: (dynamic v) { + selectedPaymentMethod = v; + setState(() {}); + }), + ], + ), + ), + const Spacer(), + Padding( + padding: const EdgeInsets.all(16.0), + child: UiUtils.buildButton(context, + onPressed: _onTapSubscribe, + radius: 12, + height: 48.rh(context), + buttonTitle: UiUtils.translate(context, "subscribe")), + ) + ], + ), + ); + } + + Widget paymentIcon(BuildContext context, String icon) { + return Container( + width: 60.rw(context), + height: 41.rh(context), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(5), + color: const Color(0xff072654), + ), + child: UiUtils.getSvg(icon, fit: BoxFit.none), + ); + } + + Widget buildPackageTile( + BuildContext context, SubscriptionPackageModel subscriptionPacakge) { + return Container( + color: Theme.of(context).colorScheme.tertiaryColor, + width: context.screenWidth, + height: 160, + child: Padding( + padding: const EdgeInsets.all(25.0), + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Text(subscriptionPacakge.name.toString()) + .bold(weight: FontWeight.w600) + .size(24) + .color( + Theme.of(context).colorScheme.backgroundColor, + ), + Text("Validity:${subscriptionPacakge.duration.toString()}") + .bold(weight: FontWeight.w600) + .color( + Theme.of(context).colorScheme.backgroundColor, + ), + ], + ), + ), + Text("${Constant.currencySymbol}${subscriptionPacakge.price}") + .size(35) + .color(Theme.of(context).colorScheme.backgroundColor) + ], + ), + ), + ); + } +} diff --git a/lib/Ui/screens/subscription/subscription_status.dart b/lib/Ui/screens/subscription/subscription_status.dart new file mode 100644 index 0000000..bd86cc1 --- /dev/null +++ b/lib/Ui/screens/subscription/subscription_status.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; + +enum SubscriptionStaus { success, failed } + +class SubscriptionStatusScreen extends StatelessWidget { + final SubscriptionStaus status; + const SubscriptionStatusScreen({super.key, required this.status}); + + @override + Widget build(BuildContext context) => const Scaffold( + body: Center( + child: Text("Success"), + ), + ); +} diff --git a/lib/Ui/screens/subscription/transaction_history_screen.dart b/lib/Ui/screens/subscription/transaction_history_screen.dart new file mode 100644 index 0000000..936078d --- /dev/null +++ b/lib/Ui/screens/subscription/transaction_history_screen.dart @@ -0,0 +1,291 @@ +import 'package:ebroker/Ui/screens/widgets/Erros/no_internet.dart'; +import 'package:ebroker/utils/api.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../data/cubits/Utility/fetch_transactions_cubit.dart'; +import '../../../data/model/transaction_model.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/Erros/no_data_found.dart'; +import '../widgets/Erros/something_went_wrong.dart'; + +class TransactionHistory extends StatefulWidget { + const TransactionHistory({super.key}); + static Route route(RouteSettings settings) { + return BlurredRouter( + builder: (context) { + return BlocProvider( + create: (context) { + return FetchTransactionsCubit(); + }, + child: const TransactionHistory(), + ); + }, + ); + } + + @override + State createState() => _TransactionHistoryState(); +} + +class _TransactionHistoryState extends State { + late final ScrollController _pageScrollController = ScrollController() + ..addListener(_pageScrollListener); + + late Map statusMap; + @override + void initState() { + context.read().fetchTransactions(); + super.initState(); + } + + _pageScrollListener() { + if (_pageScrollController.isEndReached()) { + if (context.read().hasMoreData()) { + context.read().fetchTransactionsMore(); + } + } + } + + @override + void didChangeDependencies() { + statusMap = { + 1: UiUtils.translate(context, "statusSuccess"), + 2: UiUtils.translate(context, "statusFail") + }; + super.didChangeDependencies(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: UiUtils.buildAppBar(context, + showBackButton: true, + title: UiUtils.translate(context, "transactionHistory")), + body: BlocBuilder( + builder: (context, state) { + if (state is FetchTransactionsInProgress) { + return Center( + child: UiUtils.progress(), + ); + } + if (state is FetchTransactionsFailure) { + ; + if (state.errorMessage is ApiException) { + if ((state.errorMessage as dynamic).errorMessage == + "no-internet") { + return NoInternet( + onRetry: () { + context.read().fetchTransactions(); + }, + ); + } + } + + return const SomethingWentWrong(); + } + if (state is FetchTransactionsSuccess) { + if (state.transactionmodel.isEmpty) { + return NoDataFound( + onTap: () { + context.read().fetchTransactions(); + }, + ); + } + return Column( + children: [ + Expanded( + child: ListView.builder( + controller: _pageScrollController, + itemCount: state.transactionmodel.length, + itemBuilder: (context, index) { + TransactionModel transaction = + state.transactionmodel[index]; + + return Padding( + padding: const EdgeInsets.symmetric( + vertical: 4.0, horizontal: 16), + child: Container( + // height: 100, + decoration: BoxDecoration( + color: context.color.secondaryColor, + border: Border.all( + color: context.color.borderColor, + width: 1.5), + borderRadius: BorderRadius.circular(10)), + child: customTransactionItem(context, transaction) + + // ListTile( + // contentPadding: + // const EdgeInsetsDirectional.fromSTEB( + // 16, 5, 16, 5), + // style: ListTileStyle.list, + // subtitle: Row( + // children: [ + // Expanded( + // child: Text( + // transaction.createdAt + // .toString() + // .formatDate(), + // ).size(context.font.small), + // ), + // ], + // ), + // trailing: Column( + // mainAxisAlignment: MainAxisAlignment.center, + // children: [ + // Text( + // "${Constant.currencySymbol}${transaction.amount}"), + // Text(statusMap[int.parse(transaction.status)] + // .toString()) + // ], + // ), + // title: Row( + // children: [ + // Expanded( + // child: Text(transaction.transactionId + // .toString())), + // const SizedBox( + // width: 5, + // ), + // GestureDetector( + // onTap: () async { + // await HapticFeedback.vibrate(); + // var clipboardData = ClipboardData( + // text: transaction.transactionId ?? + // ""); + // + // Clipboard.setData(clipboardData) + // .then((_) { + // ScaffoldMessenger.of(context) + // .showSnackBar(SnackBar( + // content: Text(UiUtils + // .getTranslatedLabel( + // context, "copied")))); + // }); + // }, + // child: Icon( + // Icons.copy, + // size: context.font.larger, + // )) + // ], + // )), + // + + ), + ); + }, + ), + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ); + } + + return Container(); + }, + ), + ); + } + + Widget customTransactionItem( + BuildContext context, TransactionModel transaction) { + return Builder(builder: (context) { + return Padding( + padding: const EdgeInsetsDirectional.fromSTEB(0, 12, 16, 12), + child: Row( + children: [ + Container( + width: 4, + height: 41, + decoration: BoxDecoration( + color: context.color.tertiaryColor, + borderRadius: const BorderRadiusDirectional.only( + topEnd: Radius.circular(4), + bottomEnd: Radius.circular(4), + ), + ), + // padding: const EdgeInsets.symmetric(vertical: 2.0), + // margin: EdgeInsets.all(4), + // height:, + ), + const SizedBox( + width: 16, + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Expanded( + child: Text( + transaction.transactionId.toString(), + ), + ), + const SizedBox(width: 5), + ], + ), + const SizedBox(height: 4), + Text( + transaction.createdAt.toString().formatDate(), + ).size(context.font.small), + ], + ), + ), + GestureDetector( + onTap: () async { + await HapticFeedback.vibrate(); + var clipboardData = + ClipboardData(text: transaction.transactionId ?? ""); + Clipboard.setData(clipboardData).then((_) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(UiUtils.translate(context, "copied")), + ), + ); + }); + }, + child: Container( + height: 30, + width: 30, + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: context.color.borderColor, width: 1.5)), + child: Padding( + padding: const EdgeInsets.all(5.0), + child: Icon( + Icons.copy, + size: context.font.larger, + ), + ), + ), + ), + const SizedBox( + width: 15, + ), + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text("${Constant.currencySymbol}${transaction.amount}") + .bold(weight: FontWeight.w700) + .color(context.color.tertiaryColor), + SizedBox( + height: 6, + ), + Text(statusMap[int.parse(transaction.status)].toString()), + ], + ), + ], + ), + ); + }); + } +} diff --git a/lib/Ui/screens/subscription/widget/current_package_card.dart b/lib/Ui/screens/subscription/widget/current_package_card.dart new file mode 100644 index 0000000..b7a38e6 --- /dev/null +++ b/lib/Ui/screens/subscription/widget/current_package_card.dart @@ -0,0 +1,358 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_firstutils/Extensions/extensions.dart'; +import 'package:ebroker/Ui/screens/subscription/widget/package_tile.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/constant.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; + +import '../../../../data/model/subscription_pacakage_model.dart'; +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/LiquidIndicator/src/liquid_circular_progress_indicator.dart'; +import '../../../../utils/ui_utils.dart'; + +class CurrentPackageTileCard extends StatefulWidget { + final SubscriptionPackageModel package; + const CurrentPackageTileCard({ + super.key, + required this.package, + }); + + @override + State createState() => _CurrentPackageTileCardState(); +} + +class _CurrentPackageTileCardState extends State { + String endDate = ""; + bool isLifeTimeValidity = false; + String endDay = ""; + + // int? getDaysRemining() { + // if (widget.endDate != null) { + // DateTime currentDate = DateTime.now(); + // Duration remainingDuration = + // DateTime.parse(widget.endDate).difference(currentDate); + // int daysLeft = remainingDuration.inDays; + // return daysLeft; + // } + // return null; + // } + + @override + Widget build(BuildContext context) { + // if (widget.package / endDate != null) { + // endDate = widget.endDate.toString().formatDate(format: "d MMM yyyy"); + // endDay = widget.endDate.toString().formatDate(format: "EEEE"); + // } + // isLifeTimeValidity = widget.endDate == null; + return Container( + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(18)), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + buildCurvePatternWidget(context), + const SizedBox( + height: 5, + ), + buildPriceAndTitleWidget(context), + buildValidityWidget(context), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: widget.package.type == "premium_user" + ? CrossAxisAlignment.end + : CrossAxisAlignment.center, + children: [ + if (widget.package.type == "premium_user") + Expanded(child: ViewOnlyPackageCard()), + + if (widget.package.type != "premium_user") + LiquidProgressContainer( + title: "property".translate(context), + countUsed: widget.package.usedLimitForProperty ?? 0, + countLimit: widget.package.propertyLimit), + // LiquidProgressContainer( + // title: "property".translate(context), + // countRemining: widget.propertyRemining, + // countLimit: widget.propertyLimit, + // ), + if (widget.package.type != "premium_user") + LiquidProgressContainer( + title: "advertisement".translate(context), + countUsed: widget.package.usedLimitForAdvertisement ?? 0, + countLimit: widget.package.advertisementLimit), + // LiquidProgressContainer( + // title: "advertisement".translate(context), + // countRemining: widget.advertismentRemining, + // countLimit: widget.advertismentLimit, + // ), + LiquidProgressContainer( + title: "daysRemining".translate(context), + countUsed: widget.package.remainingDays!, + isValidity: true, + countLimit: widget.package.duration!), + // LiquidProgressContainer( + // title: "daysRemining".translate(context), + // countRemining: (getDaysRemining() ?? 0).toString(), + // countLimit: widget.duration, + // isValidity: true, + // validityCount: widget.duration.toString(), + // ), + ], + ), + ), + if (isLifeTimeValidity) + const SizedBox( + height: 6, + ), + if (!isLifeTimeValidity) + Padding( + padding: const EdgeInsetsDirectional.fromSTEB(16.0, 5, 16, 16), + child: Row( + children: [ + Expanded( + child: DateCard( + title: "startedOn".translate(context), + day: widget.package.startDate!.formatDate(format: "EEEE"), + date: widget.package.startDate ?? "", + )), + const SizedBox( + width: 16, + ), + Expanded( + child: DateCard( + day: widget.package.endDate!.formatDate(format: "EEEE"), + title: "willEndOn".translate(context), + date: widget.package.endDate ?? "", + ), + ), + ], + ), + ) + ], + ), + ); + } + + Stack buildCurvePatternWidget(BuildContext context) { + return Stack( + children: [ + SizedBox( + width: context.screenWidth, + child: UiUtils.getSvg(AppIcons.headerCurve, + color: context.color.tertiaryColor, fit: BoxFit.fitWidth), + ), + PositionedDirectional( + start: 10.rw(context), + top: 8.rh(context), + child: Text(UiUtils.translate(context, "currentPackage")) + .size(context.font.larger) + .color(context.color.secondaryColor) + .bold(weight: FontWeight.w600), + ) + ], + ); + } + + Padding buildPriceAndTitleWidget(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 5), + child: Row( + children: [ + Expanded( + flex: 2, + child: SizedBox( + child: Text(widget.package.name!) + .size(context.font.larger) + .color(context.color.textColorDark) + .bold(weight: FontWeight.w600), + ), + ), + const SizedBox( + width: 5, + ), + Expanded( + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Text( + "price".translate(context), + style: const TextStyle( + textBaseline: TextBaseline.alphabetic), + ).size(context.font.small).bold(weight: FontWeight.w300), + const SizedBox( + height: 5, + ), + buildPriceWidget(context) + ], + ), + ], + ), + ) + ], + ), + ); + } + + Widget buildPriceWidget(BuildContext context) { + return Row( + children: [ + if (widget.package.price != 0) + Text( + Constant.currencySymbol, + style: const TextStyle( + height: 0.6, + ), + ).color(context.color.tertiaryColor).size(context.font.larger), + Text( + (widget.package.price == 0 ? "Free" : widget.package.price) + .toString(), + style: const TextStyle( + height: 0.6, + ), + ).size(context.font.larger).bold(weight: FontWeight.w500) + ], + ); + } + + Widget buildValidityWidget(BuildContext context) { + return Padding( + padding: EdgeInsetsDirectional.fromSTEB( + 16, 0, 16, widget.package.type == "premium_user" ? 0 : 10), + child: Text( + "${"packageValidity".translate(context)} ${widget.package.duration} ${"Days".translate(context)}") + .size(context.font.large), + ); + } +} + +class DateCard extends StatelessWidget { + final String title; + final String date; + final String day; + const DateCard( + {super.key, required this.title, required this.date, required this.day}); + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(title), + Container( + height: 53, + decoration: BoxDecoration( + color: context.color.tertiaryColor, + borderRadius: BorderRadius.circular(4), + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SvgPicture.asset( + AppIcons.calender, + width: 26, + height: 26, + color: context.color.buttonColor, + ), + const SizedBox( + width: 10, + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text(day).color(context.color.buttonColor), + Text( + date, + style: const TextStyle( + fontWeight: FontWeight.w200, + ), + ).color(context.color.buttonColor) + ], + ), + ) + ], + ), + ), + ), + ], + ); + } +} + +class LiquidProgressContainer extends StatelessWidget { + final String title; + final int countUsed; + final dynamic countLimit; + final bool? isValidity; + final String? validityCount; + const LiquidProgressContainer( + {super.key, + required this.title, + required this.countUsed, + required this.countLimit, + this.isValidity, + this.validityCount}); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Text(title).size(context.font.normal), + const SizedBox( + height: 7, + ), + getLiquidProgress( + context, + ) + ], + ); + } + + Widget getLiquidProgress(BuildContext context) { + double persontage = 0; + String value = ""; + if (countLimit == "not_available" || countLimit == null) { + value = "X"; + } else if (countLimit == "unlimited") { + value = "unlimited".translate(context); + } else { + value = "$countUsed/$countLimit"; + persontage = (countUsed / countLimit); + } + if (isValidity == true) { + value = "$countUsed ${"Days".translate(context)}"; + } + + return SizedBox( + width: 60, + height: 60, + child: LiquidCircularProgressIndicator( + value: persontage, + valueColor: AlwaysStoppedAnimation( + context.color.tertiaryColor.withOpacity(0.3), + ), + backgroundColor: context.color.secondaryColor, + borderColor: context.color.tertiaryColor, + borderWidth: 3.0, + direction: Axis.vertical, + center: Padding( + padding: const EdgeInsets.all(5.0), + child: FittedBox( + fit: BoxFit.fitWidth, + child: Text(value).size(context.font.small)), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/subscription/widget/package_tile.dart b/lib/Ui/screens/subscription/widget/package_tile.dart new file mode 100644 index 0000000..0b821ec --- /dev/null +++ b/lib/Ui/screens/subscription/widget/package_tile.dart @@ -0,0 +1,216 @@ +import 'package:ebroker/Ui/screens/subscription/widget/subscripton_feature_line.dart'; +import 'package:ebroker/data/model/subscription_pacakage_model.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:flutter/material.dart'; + +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/ui_utils.dart'; + +abstract class Limit { + abstract final T value; +} + +class StringLimit extends Limit { + @override + final String value; + + StringLimit(this.value); +} + +class IntLimit extends Limit { + @override + final int value; + + IntLimit(this.value); +} + +class NotAvailable extends Limit { + @override + void value; + + NotAvailable(); +} + +class PackageLimit { + final dynamic limit; + + PackageLimit(this.limit); + + Limit get(context) { + if (limit is int) { + return IntLimit(limit); + } else { + if (isAvailable(context, limit)) { + if (isUnLimited(context, limit)) { + return StringLimit("unlimited".translate(context)); + } else { + //Will not execute but added + return StringLimit(limit); + } + } else { + return NotAvailable(); + } + } + } + + bool isUnLimited(BuildContext context, String value) { + if (value == "unlimited") { + return true; + } + return false; + } + + bool isAvailable(BuildContext context, String? value) { + if (value == "not_available" || value == null) { + return false; + } + return true; + } +} + +class SubscriptionPackageTile extends StatelessWidget { + final SubscriptionPackageModel package; + final VoidCallback onTap; + const SubscriptionPackageTile( + {super.key, required this.onTap, required this.package}); + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(18)), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Stack( + children: [ + SizedBox( + width: context.screenWidth, + child: UiUtils.getSvg(AppIcons.headerCurve, + color: context.color.tertiaryColor, fit: BoxFit.fitWidth), + ), + PositionedDirectional( + start: 10.rw(context), + top: 8.rh(context), + child: Text(package.name ?? "") + .size(context.font.larger) + .color(context.color.secondaryColor) + .bold(weight: FontWeight.w600), + ) + ], + ), + const SizedBox( + height: 20, + ), + SubscriptionFeatureLine( + limit: PackageLimit(package.advertisementLimit), + isTime: false, + title: UiUtils.translate(context, "adLimitIs"), + ), + SizedBox( + height: 5.rh(context), + ), + Row( + children: [ + Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + SubscriptionFeatureLine( + limit: PackageLimit(package.propertyLimit), + isTime: false, + title: UiUtils.translate(context, "propertyLimit"), + ), + SizedBox( + height: 5.rh(context), + ), + SubscriptionFeatureLine( + limit: null, + isTime: true, + timeLimit: + "${package.duration} ${UiUtils.translate(context, "days")}", + title: UiUtils.translate(context, "validity"), + ), + // SubscriptionFeatureLine(), + ]), + Expanded( + child: Padding( + padding: const EdgeInsetsDirectional.only(end: 15.0), + child: Container( + alignment: Alignment.center, + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(8)), + height: 39.rh(context), + constraints: BoxConstraints( + minWidth: 80.rw(context), + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 4.0), + child: Text( + package.price == 0 + ? "Free".translate(context) + : ("${package.price}") + .toString() + .formatAmount(prefix: true), + style: const TextStyle(fontFamily: "ROBOTO"), + ) + .color(context.color.tertiaryColor) + .bold() + .size(context.font.large), + )), + ), + ) + ], + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: UiUtils.buildButton(context, + onPressed: onTap, + radius: 9, + height: 33.rh(context), + buttonTitle: UiUtils.translate(context, "subscribe")), + ), + ], + ), + ); + } +} + +class ViewOnlyPackageCard extends StatelessWidget { + const ViewOnlyPackageCard({super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.zero, + child: SizedBox( + height: 60, + child: Center( + child: Container( + height: 50, + decoration: BoxDecoration( + border: Border.all( + color: context.color.tertiaryColor, + width: 2.5, + ), + borderRadius: BorderRadius.circular(12)), + child: Row( + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Icon( + Icons.remove_red_eye_outlined, + color: context.color.tertiaryColor, + ), + ), + Text("Unlocked Private Properties".translate(context)) + .bold(weight: FontWeight.w500) + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/subscription/widget/subscripton_feature_line.dart b/lib/Ui/screens/subscription/widget/subscripton_feature_line.dart new file mode 100644 index 0000000..c92f9ff --- /dev/null +++ b/lib/Ui/screens/subscription/widget/subscripton_feature_line.dart @@ -0,0 +1,65 @@ +import 'package:ebroker/Ui/screens/subscription/widget/package_tile.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:flutter/material.dart'; + +class SubscriptionFeatureLine extends StatelessWidget { + final String title; + final PackageLimit? limit; + final bool? isTime; + final String? timeLimit; + const SubscriptionFeatureLine( + {super.key, + required this.title, + required this.limit, + this.isTime, + this.timeLimit}); + + @override + Widget build(BuildContext context) { + if (limit?.get(context) is NotAvailable) { + return const SizedBox.shrink(); + } + + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 20, + ), + child: SizedBox( + width: context.screenWidth * 0.57, + child: Row( + children: [ + bulletPoint(context), + SizedBox( + width: 5.rw(context), + ), + if (isTime == true) ...{ + Text("$title "), + Text("$timeLimit "), + } else ...{ + Text("$title "), + Text((limit?.get(context).value ?? "").toString()) + } + ], + )), + ); + } + + Widget bulletPoint(BuildContext context) { + return SizedBox( + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + width: 4, + height: 4, + decoration: BoxDecoration( + color: context.color.textColorDark, + shape: BoxShape.circle, + ), + ), + ], + ), + ); + } +} diff --git a/lib/Ui/screens/userprofile/edit_profile.dart b/lib/Ui/screens/userprofile/edit_profile.dart new file mode 100644 index 0000000..2c48ab3 --- /dev/null +++ b/lib/Ui/screens/userprofile/edit_profile.dart @@ -0,0 +1,686 @@ +import 'dart:io'; + +import 'package:ebroker/Ui/screens/Personalized/personalized_property_screen.dart'; +import 'package:ebroker/Ui/screens/widgets/custom_text_form_field.dart'; +import 'package:ebroker/Ui/screens/widgets/image_cropper.dart'; +import 'package:ebroker/data/cubits/auth/auth_cubit.dart'; +import 'package:ebroker/data/cubits/property/fetch_most_viewed_properties_cubit.dart'; +import 'package:ebroker/data/cubits/property/fetch_nearby_property_cubit.dart'; +import 'package:ebroker/data/cubits/property/fetch_promoted_properties_cubit.dart'; +import 'package:ebroker/data/cubits/slider_cubit.dart'; +import 'package:ebroker/data/cubits/system/user_details.dart'; +import 'package:ebroker/data/helper/custom_exception.dart'; +import 'package:ebroker/data/helper/designs.dart'; +import 'package:ebroker/data/model/user_model.dart'; +import 'package:ebroker/utils/AppIcon.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/constant.dart'; +import 'package:ebroker/utils/hive_utils.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:hive/hive.dart'; +import 'package:image_cropper/image_cropper.dart'; +import 'package:image_picker/image_picker.dart'; + +import '../../../app/routes.dart'; +import '../../../data/helper/widgets.dart'; +import '../../../data/model/google_place_model.dart'; +import '../../../utils/guestChecker.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/hive_keys.dart'; +import '../widgets/AnimatedRoutes/blur_page_route.dart'; +import '../widgets/BottomSheets/choose_location_bottomsheet.dart'; + +class UserProfileScreen extends StatefulWidget { + final String from; + final bool? navigateToHome; + final bool? popToCurrent; + const UserProfileScreen({ + Key? key, + required this.from, + this.navigateToHome, + this.popToCurrent, + }) : super(key: key); + + @override + State createState() => UserProfileScreenState(); + + static Route route(RouteSettings routeSettings) { + Map arguments = routeSettings.arguments as Map; + return BlurredRouter( + builder: (_) => UserProfileScreen( + from: arguments['from'] as String, + popToCurrent: arguments['popToCurrent'] as bool?, + navigateToHome: arguments['navigateToHome'] as bool?, + ), + ); + } +} + +class UserProfileScreenState extends State { + final GlobalKey _formKey = GlobalKey(); + final TextEditingController phoneController = TextEditingController(); + final TextEditingController nameController = TextEditingController(); + final TextEditingController emailController = TextEditingController(); + final TextEditingController addressController = TextEditingController(); + dynamic size; + dynamic city, _state, country, placeid; + String? name, email, address; + File? fileUserimg; + bool isNotificationsEnabled = true; + double? latitude, longitude; + @override + void initState() { + super.initState(); + if (widget.from == "login") { + GuestChecker.set(isGuest: false); + } + city = HiveUtils.getCityName(); + _state = HiveUtils.getStateName(); + country = HiveUtils.getCountryName(); + placeid = HiveUtils.getCityPlaceId() ?? ""; + phoneController.text = _saperateNumber(); + nameController.text = (HiveUtils.getUserDetails().name) ?? ""; + emailController.text = HiveUtils.getUserDetails().email ?? ""; + addressController.text = HiveUtils.getUserDetails().address ?? ""; + isNotificationsEnabled = + HiveUtils.getUserDetails().notification == 1 ? true : false; + //} + + _saperateNumber(); + } + + String _saperateNumber() { + // FirebaseAuth.instance.currentUser.sendEmailVerification(); + String? mobile = HiveUtils.getUserDetails().mobile; + + String? countryCode = HiveUtils.getCountryCode(); + + int countryCodeLength = (countryCode?.length ?? 0); + + String mobileNumber = mobile!.substring(countryCodeLength, mobile.length); + + mobileNumber = "+${countryCode!} $mobileNumber"; + return mobileNumber; + } + + @override + void dispose() { + super.dispose(); + phoneController.dispose(); + nameController.dispose(); + emailController.dispose(); + addressController.dispose(); + } + + void _onTapChooseLocation() async { + FocusManager.instance.primaryFocus?.unfocus(); + + if (!const bool.fromEnvironment("force-disable-demo-mode", + defaultValue: false)) { + if (Constant.isDemoModeOn) { + HelperUtils.showSnackBarMessage(context, "Not valid in demo mode"); + + return; + } + } + + var result = await showModalBottomSheet( + isScrollControlled: true, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(20), topRight: Radius.circular(20))), + context: context, + builder: (context) { + return const ChooseLocatonBottomSheet(); + }, + ); + if (result != null) { + GooglePlaceModel place = (result as GooglePlaceModel); + print("LATTTT is ${place.longitude}"); + latitude = double.parse(place.latitude); + longitude = double.parse(place.longitude); + city = place.city; + country = place.country; + _state = place.state; + placeid = place.placeId; + } + } + + @override + Widget build(BuildContext context) { + size = MediaQuery.of(context).size; + return GestureDetector( + onTap: () => FocusScope.of(context).unfocus(), + child: safeAreaCondition( + child: Scaffold( + backgroundColor: context.color.primaryColor, + appBar: widget.from == "login" + ? null + : UiUtils.buildAppBar(context, showBackButton: true), + body: ScrollConfiguration( + behavior: RemoveGlow(), + child: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + keyboardDismissBehavior: + ScrollViewKeyboardDismissBehavior.onDrag, + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Form( + key: _formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Align( + alignment: Alignment.center, + child: buildProfilePicture(), + ), + buildTextField( + context, + title: "fullName", + controller: nameController, + validator: CustomTextFieldValidator.nullCheck, + ), + buildTextField( + context, + title: "companyEmailLbl", + controller: emailController, + validator: CustomTextFieldValidator.email, + ), + buildTextField( + context, + title: "phoneNumber", + controller: phoneController, + validator: CustomTextFieldValidator.nullCheck, + readOnly: true, + ), + buildAddressTextField( + context, + title: "addressLbl", + controller: addressController, + validator: CustomTextFieldValidator.nullCheck, + ), + const SizedBox( + height: 10, + ), + Text("enablesNewSection".translate(context)) + .size(context.font.small) + .bold(weight: FontWeight.w300) + .color( + context.color.textColorDark.withOpacity(0.8), + ), + SizedBox( + height: 20.rh(context), + ), + Text( + UiUtils.translate(context, "notification"), + ), + SizedBox( + height: 10.rh(context), + ), + buildNotificationEnableDisableSwitch(context), + SizedBox( + height: 25.rh(context), + ), + UiUtils.buildButton( + context, + onPressed: () { + if (city != null && city != "") { + HiveUtils.setLocation( + city: city, + state: _state, + latitude: latitude, + longitude: longitude, + country: country, + placeId: placeid); + Hive.box(HiveKeys.userDetailsBox) + .put(HiveKeys.cityTeemp, city); + context + .read() + .fetch(forceRefresh: true); + + context + .read() + .fetch(); + context + .read() + .fetch(); + context + .read() + .fetchSlider(context); + } else { + HiveUtils.clearLocation(); + context + .read() + .fetch(); + context + .read() + .fetch(forceRefresh: true); + + context + .read() + .fetch(); + context + .read() + .fetchSlider(context); + } + validateData(); + }, + height: 48.rh(context), + buttonTitle: + UiUtils.translate(context, "updateProfile"), + ) + ])), + )), + ), + ), + ), + ); + } + + Widget locationWidget(BuildContext context) { + return Padding( + padding: const EdgeInsets.only( + top: 10.0, + ), + child: Row( + children: [ + Expanded( + child: Container( + height: 55, + decoration: BoxDecoration( + color: context.color.textLightColor.withOpacity(00.01), + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: context.color.borderColor, + width: 1.5, + )), + child: Row( + children: [ + Padding( + padding: const EdgeInsetsDirectional.only(start: 10.0), + child: Align( + alignment: Alignment.centerLeft, + child: (city != "" && city != null) + ? Text("$city,$_state,$country") + : Text(UiUtils.translate( + context, "selectLocationOptional"))), + ), + const Spacer(), + if (city != "" && city != null) + Padding( + padding: const EdgeInsetsDirectional.only(end: 10.0), + child: GestureDetector( + onTap: () { + city = ""; + _state = ""; + country = ""; + HiveUtils.clearLocation(); + setState(() {}); + }, + child: Icon( + Icons.close, + color: context.color.textColorDark, + ), + ), + ) + ], + ), + ), + ), + const SizedBox( + width: 10, + ), + GestureDetector( + onTap: _onTapChooseLocation, + child: Container( + height: 55, + width: 55, + decoration: BoxDecoration( + color: context.color.textLightColor.withOpacity(00.01), + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: context.color.borderColor, + width: 1.5, + )), + child: Icon( + Icons.location_searching_sharp, + color: context.color.tertiaryColor, + ), + ), + ), + ], + ), + ); + } + + Widget safeAreaCondition({required Widget child}) { + if (widget.from == "login") { + return SafeArea(child: child); + } + return child; + } + + Widget buildNotificationEnableDisableSwitch(BuildContext context) { + return Container( + decoration: BoxDecoration( + border: Border.all( + color: context.color.borderColor, + ), + borderRadius: BorderRadius.circular(10), + color: context.color.textLightColor.withOpacity(00.01)), + height: 55.rh(context), + width: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Text(UiUtils.translate( + context, isNotificationsEnabled ? "enabled" : "disabled")) + .size(context.font.large), + ), + CupertinoSwitch( + activeColor: context.color.tertiaryColor, + value: isNotificationsEnabled, + onChanged: (value) { + isNotificationsEnabled = value; + setState(() {}); + }, + ) + ], + ), + ); + } + + Widget buildTextField(BuildContext context, + {required String title, + required TextEditingController controller, + CustomTextFieldValidator? validator, + bool? readOnly}) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 10.rh(context), + ), + Text(UiUtils.translate(context, title)), + SizedBox( + height: 10.rh(context), + ), + CustomTextFormField( + controller: controller, + isReadOnly: readOnly, + validator: validator, + // formaters: [FilteringTextInputFormatter.deny(RegExp(","))], + fillColor: context.color.textLightColor.withOpacity(00.01), + ), + ], + ); + } + + Widget buildAddressTextField(BuildContext context, + {required String title, + required TextEditingController controller, + CustomTextFieldValidator? validator, + bool? readOnly}) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: 10.rh(context), + ), + Text(UiUtils.translate(context, title)), + SizedBox( + height: 10.rh(context), + ), + CustomTextFormField( + controller: controller, + maxLine: 5, + action: TextInputAction.newline, + isReadOnly: readOnly, + validator: validator, + fillColor: context.color.textLightColor.withOpacity(00.01), + ), + const SizedBox( + width: 10, + ), + locationWidget(context), + ], + ); + } + + Widget getProfileImage() { + if (fileUserimg != null) { + return Image.file( + fileUserimg!, + fit: BoxFit.cover, + ); + } else { + if (widget.from == "login") { + if (HiveUtils.getUserDetails().profile != "" && + HiveUtils.getUserDetails().profile != null) { + return UiUtils.getImage( + HiveUtils.getUserDetails().profile!, + fit: BoxFit.cover, + ); + } + + return UiUtils.getSvg( + AppIcons.defaultPersonLogo, + color: context.color.tertiaryColor, + fit: BoxFit.none, + ); + } else { + if ((HiveUtils.getUserDetails().profile ?? "").isEmpty) { + return UiUtils.getSvg( + AppIcons.defaultPersonLogo, + color: context.color.tertiaryColor, + fit: BoxFit.none, + ); + } else { + return UiUtils.getImage( + HiveUtils.getUserDetails().profile!, + fit: BoxFit.cover, + ); + } + } + } + } + + Widget buildProfilePicture() { + return Stack( + children: [ + Container( + height: 124.rh(context), + width: 124.rw(context), + alignment: Alignment.center, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all(color: context.color.tertiaryColor, width: 2)), + child: Container( + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.2), + shape: BoxShape.circle, + ), + width: 106.rw(context), + height: 106.rh(context), + child: getProfileImage(), + ), + ), + PositionedDirectional( + bottom: 0, + end: 0, + child: InkWell( + onTap: showPicker, + child: Container( + height: 37.rh(context), + width: 37.rw(context), + alignment: Alignment.center, + decoration: BoxDecoration( + border: Border.all( + color: context.color.buttonColor, width: 1.5), + shape: BoxShape.circle, + color: context.color.tertiaryColor), + child: SizedBox( + width: 15.rw(context), + height: 15.rh(context), + child: UiUtils.getSvg(AppIcons.edit))), + ), + ) + ], + ); + } + + Future validateData() async { + if (_formKey.currentState!.validate()) { + bool checkinternet = await HelperUtils.checkInternet(); + if (!checkinternet) { + Future.delayed( + Duration.zero, + () { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "lblchecknetwork")); + }, + ); + + return; + } + process(); + } + } + + process() async { + if (Constant.isDemoModeOn) { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "thisActionNotValidDemo")); + return; + } + Widgets.showLoader(context); + try { + var response = await context.read().updateUserData(context, + name: nameController.text.trim(), + email: emailController.text.trim(), + fileUserimg: fileUserimg, + latitude: latitude, + longitude: longitude, + city: city, + state: _state, + country: country, + address: addressController.text, + notification: isNotificationsEnabled == true ? "1" : "0"); + + Future.delayed(Duration.zero, () { + context + .read() + .copy(UserModel.fromJson(response['data'])); + }); + + Future.delayed( + Duration.zero, + () { + Widgets.hideLoder(context); + HelperUtils.showSnackBarMessage( + context, + UiUtils.translate(context, "profileupdated"), + onClose: () { + if (mounted) Navigator.pop(context); + }, + ); + if (widget.navigateToHome ?? false) { + Navigator.pop(context); + } + }, + ); + + if (widget.from == "login" && widget.popToCurrent != true) { + Future.delayed( + Duration.zero, + () { + HelperUtils.killPreviousPages( + context, Routes.personalizedPropertyScreen, { + "type": PersonalizedVisitType.FirstTime, + }); + + // HelperUtils.killPreviousPages( + // context, Routes.main, {"from": widget.from}); + }, + ); + } else if (widget.from == "login" && widget.popToCurrent == true) { + Future.delayed(Duration.zero, () { + Navigator.of(context) + ..pop() + ..pop(); + }); + } + } on CustomException catch (e) { + Future.delayed(Duration.zero, () { + Widgets.hideLoder(context); + HelperUtils.showSnackBarMessage(context, e.toString()); + }); + } + } + + void showPicker() { + showModalBottomSheet( + context: context, + shape: setRoundedBorder(10), + builder: (BuildContext bc) { + return SafeArea( + child: Wrap( + children: [ + ListTile( + leading: const Icon(Icons.photo_library), + title: Text(UiUtils.translate(context, "gallery")), + onTap: () { + _imgFromGallery(ImageSource.gallery); + Navigator.of(context).pop(); + }), + ListTile( + leading: const Icon(Icons.photo_camera), + title: Text(UiUtils.translate(context, "camera")), + onTap: () { + _imgFromGallery(ImageSource.camera); + Navigator.of(context).pop(); + }, + ), + if (fileUserimg != null && widget.from == 'login') + ListTile( + leading: const Icon(Icons.clear_rounded), + title: Text(UiUtils.translate(context, "lblremove")), + onTap: () { + fileUserimg = null; + + Navigator.of(context).pop(); + setState(() {}); + }, + ), + ], + ), + ); + }); + } + + _imgFromGallery(ImageSource imageSource) async { + CropImage.init(context); + + final pickedFile = await ImagePicker().pickImage(source: imageSource); + + if (pickedFile != null) { + CroppedFile? croppedFile; + croppedFile = await CropImage.crop(filePath: pickedFile.path); + if (croppedFile == null) { + fileUserimg = null; + } else { + fileUserimg = File(croppedFile.path); + } + } else { + fileUserimg = null; + } + setState(() {}); + } +} diff --git a/lib/Ui/screens/userprofile/profile_screen.dart b/lib/Ui/screens/userprofile/profile_screen.dart new file mode 100644 index 0000000..5be1858 --- /dev/null +++ b/lib/Ui/screens/userprofile/profile_screen.dart @@ -0,0 +1,909 @@ +import 'dart:io'; + +import 'package:ebroker/Ui/screens/Personalized/personalized_property_screen.dart'; +import 'package:ebroker/Ui/screens/main_activity.dart'; +import 'package:ebroker/data/model/user_model.dart'; +import 'package:ebroker/utils/guestChecker.dart'; +import 'package:ebroker/utils/hive_keys.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:hive/hive.dart'; +import 'package:launch_review/launch_review.dart'; +import 'package:share_plus/share_plus.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../../../app/app_theme.dart'; +import '../../../app/routes.dart'; +import '../../../data/cubits/Utility/like_properties.dart'; +import '../../../data/cubits/system/app_theme_cubit.dart'; +import '../../../data/cubits/system/fetch_system_settings_cubit.dart'; +import '../../../data/cubits/system/user_details.dart'; +import '../../../data/model/system_settings_model.dart'; +import '../../../utils/AppIcon.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/Network/apiCallTrigger.dart'; +import '../../../utils/api.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/hive_utils.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import '../widgets/blurred_dialoge_box.dart'; + +class ProfileScreen extends StatefulWidget { + const ProfileScreen({Key? key}) : super(key: key); + + @override + State createState() => _ProfileScreenState(); +} + +class _ProfileScreenState extends State + with AutomaticKeepAliveClientMixin { + ValueNotifier isDarkTheme = ValueNotifier(false); + // with SingleTickerProviderStateMixin { + bool isGuest = false; + @override + void initState() { + var settings = context.read(); + isGuest = GuestChecker.value; + GuestChecker.listen().addListener(() { + isGuest = GuestChecker.value; + if (mounted) setState(() {}); + }); + if (!const bool.fromEnvironment("force-disable-demo-mode", + defaultValue: false)) { + Constant.isDemoModeOn = + settings.getSetting(SystemSetting.demoMode) ?? false; + } + super.initState(); + } + + @override + void didChangeDependencies() { + isDarkTheme.value = context.read().isDarkMode(); + super.didChangeDependencies(); + } + + @override + void dispose() { + isDarkTheme.dispose(); + super.dispose(); + } + + @override + bool get wantKeepAlive => true; + int? a; + @override + Widget build(BuildContext context) { + super.build(context); + print(Hive.box(HiveKeys.userDetailsBox).toMap().toString()); + + // log(a!.toString()); + var settings = context.watch(); + + if (!const bool.fromEnvironment("force-disable-demo-mode", + defaultValue: false)) { + Constant.isDemoModeOn = + settings.getSetting(SystemSetting.demoMode) ?? false; + } + + var username = "Anonymous"; + var email = "Not logged in"; + if (!isGuest) { + UserModel? user = context.watch().state.user; + username = user?.name!.firstUpperCase() ?? "Anonymous"; + email = (user?.email) ?? "Login first"; + } + return AnnotatedRegion( + value: SystemUiOverlayStyle( + systemNavigationBarDividerColor: Colors.transparent, + // systemNavigationBarColor: Theme.of(context).colorScheme.secondaryColor, + systemNavigationBarIconBrightness: + context.watch().state.appTheme == AppTheme.dark + ? Brightness.light + : Brightness.dark, + // + statusBarColor: Theme.of(context).colorScheme.secondaryColor, + statusBarBrightness: + context.watch().state.appTheme == AppTheme.dark + ? Brightness.dark + : Brightness.light, + statusBarIconBrightness: + context.watch().state.appTheme == AppTheme.dark + ? Brightness.light + : Brightness.dark), + child: Scaffold( + backgroundColor: context.color.primaryColor, + appBar: UiUtils.buildAppBar( + context, + title: UiUtils.translate(context, "myProfile"), + ), + body: ScrollConfiguration( + behavior: RemoveGlow(), + child: SingleChildScrollView( + controller: profileScreenController, + physics: const BouncingScrollPhysics(), + child: Padding( + padding: const EdgeInsets.all(18.0), + child: Column(children: [ + Container( + height: 91, + decoration: BoxDecoration( + border: Border.all( + width: 1.5, + color: context.color.borderColor, + ), + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(18), + ), + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Row( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(18), + child: profileImgWidget(), + ), + SizedBox( + width: context.screenWidth * 0.015, + ), + SizedBox( + // height: 77, + child: Column( + // crossAxisAlignment: CrossAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + width: context.screenWidth * 0.35, + child: Text(username) + .color(context.color.textColorDark) + .size(context.font.large) + .bold(weight: FontWeight.w700) + .setMaxLines(lines: 1), + ), + SizedBox( + width: context.screenWidth * 0.35, + child: Text(email) + .color(context.color.textColorDark) + .size(context.font.small) + .setMaxLines(lines: 1), + ), + ], + ), + ), + const Spacer(), + GuestChecker.updateUI( + onChangeStatus: (bool? isGuest) { + if (isGuest == true) { + return MaterialButton( + shape: RoundedRectangleBorder( + side: BorderSide( + color: context.color.borderColor, + width: 1.5, + ), + borderRadius: BorderRadius.circular(10), + ), + onPressed: () { + Navigator.pushNamed( + context, + Routes.login, + arguments: {"popToCurrent": true}, + ); + }, + child: const Text("Login"), + ); + } + + return InkWell( + onTap: () { + HelperUtils.goToNextPage( + Routes.completeProfile, context, false, + args: {"from": "profile"}); + }, + child: Container( + width: 40.rw(context), + height: 40.rh(context), + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(10), + border: Border.all( + color: context.color.borderColor, + width: 1.5, + ), + ), + child: FittedBox( + fit: BoxFit.none, + child: SizedBox( + width: 12.rw(context), + height: 22.rh(context), + child: UiUtils.getSvg( + AppIcons.arrowRight, + color: context.color.textColorDark, + ), + ), + ), + ), + ); + }, + ) + ], + ), + ), + ), + const SizedBox( + height: 20, + ), + Container( + decoration: BoxDecoration( + border: Border.all( + width: 1.5, + color: context.color.borderColor, + ), + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(18), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + const SizedBox( + height: 20, + ), + // customTile( + // context, + // title: "ONLY FOR DEVELOPMENT", + // svgImagePath: AppIcons.enquiry, + // onTap: () async { + // var s = await FirebaseMessaging.instance.getToken(); + // Navigator.push(context, MaterialPageRoute( + // builder: (context) { + // return Scaffold( + // body: Padding( + // padding: const EdgeInsets.all(20.0), + // child: Center( + // child: SelectableText(s.toString()), + // ), + // ), + // ); + // }, + // )); + // }, + // ), + // dividerWithSpacing(), + // customTile( + // context, + // title: UiUtils.getTranslatedLabel(context, "myEnquiry"), + // svgImagePath: AppIcons.enquiry, + // onTap: () { + // Navigator.pushNamed(context, Routes.myEnquiry); + // }, + // ), + // dividerWithSpacing(), + //THIS IS EXPERIMENTAL + // if (false) ...[ + // customTile( + // context, + // title: UiUtils.translate(context, "Dashboard"), + // svgImagePath: AppIcons.promoted, + // onTap: () { + // Navigator.pushNamed(context, Routes.dashboard); + // }, + // ), + // dividerWithSpacing(), + // ], + + customTile( + context, + title: UiUtils.translate(context, "myProjects"), + svgImagePath: AppIcons.upcomingProject, + onTap: () async { + // APICallTrigger.trigger(); + GuestChecker.check( + onNotGuest: () async { + Navigator.pushNamed( + context, Routes.projectListScreen); + }, + ); + }, + ), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "myAds"), + svgImagePath: AppIcons.promoted, + onTap: () async { + APICallTrigger.trigger(); + GuestChecker.check( + onNotGuest: () async { + Navigator.pushNamed( + context, Routes.myAdvertisment); + }, + ); + }, + ), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "subscription"), + svgImagePath: AppIcons.subscription, + onTap: () async { + GuestChecker.check(onNotGuest: () { + Navigator.pushNamed( + context, Routes.subscriptionPackageListRoute); + }); + }, + ), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "transactionHistory"), + svgImagePath: AppIcons.transaction, + onTap: () { + GuestChecker.check(onNotGuest: () { + Navigator.pushNamed( + context, Routes.transactionHistory); + }); + }, + ), + dividerWithSpacing(), + + customTile( + context, + title: UiUtils.translate( + context, + "personalized", + ), + svgImagePath: AppIcons.magic, + onTap: () { + GuestChecker.check(onNotGuest: () { + Navigator.pushNamed( + context, Routes.personalizedPropertyScreen, + arguments: { + "type": PersonalizedVisitType.Normal + }); + }); + }, + ), + dividerWithSpacing(), + + customTile( + context, + title: UiUtils.translate(context, "language"), + svgImagePath: AppIcons.language, + onTap: () { + Navigator.pushNamed( + context, Routes.languageListScreenRoute); + }, + ), + dividerWithSpacing(), + ValueListenableBuilder( + valueListenable: isDarkTheme, + builder: (context, v, c) { + return customTile( + context, + title: UiUtils.translate(context, "darkTheme"), + svgImagePath: AppIcons.darkTheme, + isSwitchBox: true, + onTapSwitch: (value) { + context.read().changeTheme( + value == true + ? AppTheme.dark + : AppTheme.light); + setState(() { + isDarkTheme.value = value; + }); + }, + switchValue: v, + onTap: () {}, + ); + }), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "notifications"), + svgImagePath: AppIcons.notification, + onTap: () { + GuestChecker.check(onNotGuest: () { + Navigator.pushNamed( + context, Routes.notificationPage); + }); + }, + ), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "articles"), + svgImagePath: AppIcons.articles, + onTap: () { + Navigator.pushNamed( + context, + Routes.articlesScreenRoute, + ); + }, + ), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "favorites"), + svgImagePath: AppIcons.favorites, + onTap: () { + GuestChecker.check(onNotGuest: () { + Navigator.pushNamed( + context, Routes.favoritesScreen); + }); + }, + ), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "areaConvertor"), + svgImagePath: AppIcons.areaConvertor, + onTap: () { + Navigator.pushNamed( + context, Routes.areaConvertorScreen); + }, + ), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "shareApp"), + svgImagePath: AppIcons.shareApp, + onTap: shareApp, + ), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "rateUs"), + svgImagePath: AppIcons.rateUs, + onTap: rateUs, + ), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "contactUs"), + svgImagePath: AppIcons.contactUs, + onTap: () { + Navigator.pushNamed( + context, + Routes.contactUs, + ); + // Navigator.pushNamed(context, Routes.ab); + }, + ), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "aboutUs"), + svgImagePath: AppIcons.aboutUs, + onTap: () { + Navigator.pushNamed(context, Routes.profileSettings, + arguments: { + 'title': UiUtils.translate(context, "aboutUs"), + 'param': Api.aboutApp + }); + // Navigator.pushNamed(context, Routes.ab); + }, + ), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate( + context, + "termsConditions", + ), + svgImagePath: AppIcons.terms, + onTap: () { + Navigator.pushNamed(context, Routes.profileSettings, + arguments: { + 'title': UiUtils.translate( + context, "termsConditions"), + 'param': Api.termsAndConditions + }); + }, + ), + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "privacyPolicy"), + svgImagePath: AppIcons.privacy, + onTap: () { + Navigator.pushNamed( + context, + Routes.profileSettings, + arguments: { + 'title': + UiUtils.translate(context, "privacyPolicy"), + 'param': Api.privacyPolicy + }, + ); + }, + ), + if (Constant.isUpdateAvailable == true) ...[ + dividerWithSpacing(), + updateTile( + context, + isUpdateAvailable: Constant.isUpdateAvailable, + title: UiUtils.translate(context, "update"), + newVersion: Constant.newVersionNumber, + svgImagePath: AppIcons.update, + onTap: () async { + if (Platform.isIOS) { + await launchUrl( + Uri.parse(Constant.appstoreURLios)); + } else if (Platform.isAndroid) { + await launchUrl( + Uri.parse(Constant.playstoreURLAndroid)); + } + }, + ), + ], + + if (isGuest == false) ...[ + dividerWithSpacing(), + customTile( + context, + title: UiUtils.translate(context, "deleteAccount"), + svgImagePath: AppIcons.delete, + onTap: () { + if (Constant.isDemoModeOn) { + HelperUtils.showSnackBarMessage( + context, + UiUtils.translate( + context, "thisActionNotValidDemo")); + return; + } + + deleteConfirmWidget( + UiUtils.translate( + context, "deleteProfileMessageTitle"), + UiUtils.translate( + context, "deleteProfileMessageContent"), + true); + }, + ), + ], + const SizedBox( + height: 20, + ) + ], + ), + ), + const SizedBox( + height: 25, + ), + if (isGuest == false) ...[ + UiUtils.buildButton(context, onPressed: () { + logOutConfirmWidget(); + }, + height: 52.rh(context), + prefixWidget: Padding( + padding: const EdgeInsetsDirectional.only(end: 16.0), + child: Container( + width: 32, + height: 32, + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular(10)), + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.getSvg(AppIcons.logout, + color: context.color.tertiaryColor)), + ), + ), + buttonTitle: UiUtils.translate(context, "logout")) + ], + // profileInfo(), + // Expanded( + // child: profileMenus(), + // ) + ]), + ), + ), + ), + ), + ); + } + + Padding dividerWithSpacing() { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 10.0), + child: UiUtils.getDivider(), + ); + } + + Widget updateTile(BuildContext context, + {required String title, + required String newVersion, + required bool isUpdateAvailable, + required String svgImagePath, + Function(dynamic value)? onTapSwitch, + dynamic switchValue, + required VoidCallback onTap}) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 25.0), + child: GestureDetector( + onTap: () { + if (isUpdateAvailable) { + onTap.call(); + } + }, + child: Row( + children: [ + Container( + width: 40, + height: 40, + decoration: BoxDecoration( + color: context.color.tertiaryColor + .withOpacity(0.10000000149011612), + borderRadius: BorderRadius.circular(10), + ), + child: FittedBox( + fit: BoxFit.none, + child: isUpdateAvailable == false + ? const Icon(Icons.done) + : UiUtils.getSvg(svgImagePath, + color: context.color.tertiaryColor)), + ), + SizedBox( + width: 25.rw(context), + ), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(isUpdateAvailable == false + ? "uptoDate".translate(context) + : title) + .bold(weight: FontWeight.w700) + .color(context.color.textColorDark), + if (isUpdateAvailable) + Text("v$newVersion") + .bold(weight: FontWeight.w300) + .color(context.color.textColorDark) + .size(context.font.small) + .italic() + ], + ), + if (isUpdateAvailable) ...[ + const Spacer(), + Container( + width: 32, + height: 32, + decoration: BoxDecoration( + border: + Border.all(color: context.color.borderColor, width: 1.5), + color: context.color.secondaryColor + .withOpacity(0.10000000149011612), + borderRadius: BorderRadius.circular(10), + ), + child: FittedBox( + fit: BoxFit.none, + child: SizedBox( + width: 8, + height: 15, + child: UiUtils.getSvg( + AppIcons.arrowRight, + color: context.color.textColorDark, + ), + ), + ), + ), + ] + ], + ), + ), + ); + } + + Widget customTile(BuildContext context, + {required String title, + required String svgImagePath, + bool? isSwitchBox, + Function(dynamic value)? onTapSwitch, + dynamic switchValue, + required VoidCallback onTap}) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 25.0), + child: GestureDetector( + onTap: onTap, + child: AbsorbPointer( + absorbing: !(isSwitchBox ?? false), + child: Row( + children: [ + Container( + width: 40, + height: 40, + decoration: BoxDecoration( + color: context.color.tertiaryColor + .withOpacity(0.10000000149011612), + borderRadius: BorderRadius.circular(10), + ), + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.getSvg( + svgImagePath, + height: 24, + width: 24, + color: context.color.tertiaryColor, + ), + ), + ), + SizedBox( + width: 25.rw(context), + ), + Expanded( + flex: 3, + child: Text(title) + .bold(weight: FontWeight.w700) + .color(context.color.textColorDark), + ), + const Spacer(), + if (isSwitchBox != true) + Container( + width: 32, + height: 32, + decoration: BoxDecoration( + border: Border.all( + color: context.color.borderColor, width: 1.5), + color: context.color.secondaryColor + .withOpacity(0.10000000149011612), + borderRadius: BorderRadius.circular(10), + ), + child: FittedBox( + fit: BoxFit.none, + child: SizedBox( + width: 8, + height: 15, + child: UiUtils.getSvg( + AppIcons.arrowRight, + color: context.color.textColorDark, + ), + ), + ), + ), + if (isSwitchBox ?? false) + // CupertinoSwitch(value: value, onChanged: onChanged) + SizedBox( + height: 40, + width: 30, + child: CupertinoSwitch( + activeColor: context.color.tertiaryColor, + value: switchValue ?? false, + onChanged: (value) { + onTapSwitch?.call(value); + }, + ), + ) + ], + ), + ), + ), + ); + } + + deleteConfirmWidget(String title, String desc, bool callDel) { + UiUtils.showBlurredDialoge( + context, + dialoge: BlurredDialogBox( + title: title, + content: Text(desc, textAlign: TextAlign.center), + acceptButtonName: "deleteBtnLbl".translate(context), + cancelTextColor: context.color.textColorDark, + svgImagePath: AppIcons.deleteIcon, + isAcceptContainesPush: true, + onAccept: () async { + Navigator.of(context).pop(); + if (callDel) { + Future.delayed( + const Duration(microseconds: 100), + () { + Navigator.pushNamed(context, Routes.login, + arguments: {"isDeleteAccount": true}); + }, + ); + } else { + HiveUtils.logoutUser( + context, + onLogout: () {}, + ); + } + }, + ), + ); + } + + Widget profileImgWidget() { + return GestureDetector( + onTap: () { + if (HiveUtils.getUserDetails().profile != "" && + HiveUtils.getUserDetails().profile != null) { + UiUtils.showFullScreenImage( + context, + provider: NetworkImage( + context.read().state.user?.profile ?? ""), + ); + } + }, + child: (context.watch().state.user?.profile ?? "") + .trim() + .isEmpty + ? buildDefaultPersonSVG(context) + : Image.network( + context.watch().state.user?.profile ?? "", + fit: BoxFit.cover, + width: 49, + height: 49, + errorBuilder: (BuildContext context, Object exception, + StackTrace? stackTrace) { + return buildDefaultPersonSVG(context); + }, + loadingBuilder: (BuildContext context, Widget? child, + ImageChunkEvent? loadingProgress) { + if (loadingProgress == null) return child!; + return buildDefaultPersonSVG(context); + }, + ), + ); + } + + Widget buildDefaultPersonSVG(BuildContext context) { + return Container( + width: 49, + height: 49, + color: context.color.tertiaryColor.withOpacity(0.1), + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.getSvg(AppIcons.defaultPersonLogo, + color: context.color.tertiaryColor, width: 30, height: 30), + ), + ); + } + + void shareApp() { + try { + if (Platform.isAndroid) { + Share.share( + '${Constant.appName}\n${Constant.playstoreURLAndroid}\n${Constant.shareappText}', + subject: Constant.appName); + } else { + Share.share( + '${Constant.appName}\n${Constant.appstoreURLios}\n${Constant.shareappText}', + subject: Constant.appName); + } + } catch (e) { + HelperUtils.showSnackBarMessage(context, e.toString()); + } + } + + Future rateUs() async { + LaunchReview.launch( + androidAppId: Constant.androidPackageName, + iOSAppId: Constant.iOSAppId, + ); + } + + void logOutConfirmWidget() { + UiUtils.showBlurredDialoge(context, + dialoge: BlurredDialogBox( + title: UiUtils.translate(context, "confirmLogoutTitle"), + onAccept: () async { + Future.delayed( + Duration.zero, + () { + HiveUtils.clear(); + Constant.favoritePropertyList.clear(); + context.read().clear(); + context.read().state.liked.clear(); + + context.read().clear(); + HiveUtils.logoutUser(context, onLogout: () {}); + }, + ); + }, + cancelTextColor: context.color.textColorDark, + svgImagePath: AppIcons.logoutIcon, + content: Text(UiUtils.translate(context, "confirmLogOutMsg")))); + } +} diff --git a/lib/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart b/lib/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart new file mode 100644 index 0000000..dd62a26 --- /dev/null +++ b/lib/Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart @@ -0,0 +1,74 @@ +import 'dart:io'; +import 'dart:ui'; + +import 'package:flutter/material.dart'; + +///This router will be show blurred transations +///this will provide fade transiton also. +///this is also being use to show background blur dialoge boxes +class BlurredRouter extends PageRoute { + final double? sigmaX; + final double? sigmaY; + final bool? barrierDismiss; + BlurredRouter( + {required this.builder, + this.barrierDismiss, + RouteSettings? settings, + this.sigmaX, + this.sigmaY}) + : super(settings: settings, fullscreenDialog: false); + + final WidgetBuilder builder; + + @override + bool get opaque => false; + @override + Color get barrierColor => Colors.transparent; + @override + bool get barrierDismissible => barrierDismiss ?? super.barrierDismissible; + + @override + String get barrierLabel => "blurred"; + + @override + bool get maintainState => true; + + @override + Duration get transitionDuration => const Duration(milliseconds: 350); + + @override + Widget buildPage(BuildContext context, Animation animation, + Animation secondaryAnimation) { + final result = builder(context); +// Tween tween = Tween(begin: 0,end: 0); + + ///We have to show swipe gesture in ios wo we are making condition here + if (Platform.isIOS) { + var theme = Theme.of(context).pageTransitionsTheme; + + return theme.buildTransitions( + this, + context, + animation, + Animation.fromValueListenable(ValueNotifier(0)), + BackdropFilter( + filter: ImageFilter.blur( + sigmaX: sigmaX ?? 5, + sigmaY: sigmaY ?? 10, + ), + child: result, + ), + ); + } + return FadeTransition( + opacity: Tween(begin: 0, end: 1).animate(animation), + child: BackdropFilter( + filter: ImageFilter.blur( + sigmaX: sigmaX ?? 5, + sigmaY: sigmaY ?? 10, + ), + child: result, + ), + ); + } +} diff --git a/lib/Ui/screens/widgets/AnimatedRoutes/scale_up_route.dart b/lib/Ui/screens/widgets/AnimatedRoutes/scale_up_route.dart new file mode 100644 index 0000000..1acab5d --- /dev/null +++ b/lib/Ui/screens/widgets/AnimatedRoutes/scale_up_route.dart @@ -0,0 +1,61 @@ +import 'package:flutter/material.dart'; + +class ScaleUpRouter extends PageRoute { + final WidgetBuilder builder; + final Widget current; + ScaleUpRouter({ + required this.builder, + required this.current, + }); + + @override + Color? get barrierColor => Colors.transparent; + + @override + String? get barrierLabel => null; + + @override + bool get maintainState => true; + + @override + Duration get transitionDuration => const Duration(milliseconds: 400); + + @override + Widget buildPage(BuildContext context, Animation animation, + Animation secondaryAnimation) { + return builder(context); + } + + @override + Widget buildTransitions(BuildContext context, Animation animation, + Animation secondaryAnimation, Widget child) { + return Stack( + children: [ + ScaleTransition( + scale: Tween( + begin: 1, + end: 5, + ).animate( + CurvedAnimation( + parent: animation, + curve: Curves.linear, + ), + ), + child: current, + ), + ScaleTransition( + scale: Tween( + begin: 0, + end: 1, + ).animate( + CurvedAnimation( + parent: animation, + curve: Curves.linear, + ), + ), + child: child, + ) + ], + ); + } +} diff --git a/lib/Ui/screens/widgets/AnimatedRoutes/transparant_route.dart b/lib/Ui/screens/widgets/AnimatedRoutes/transparant_route.dart new file mode 100644 index 0000000..901af43 --- /dev/null +++ b/lib/Ui/screens/widgets/AnimatedRoutes/transparant_route.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; + +///This router will be show blurred transations +///this will provide fade transiton also. +///this is also being use to show background blur dialoge boxes +class TransparantRoute extends PageRoute { + final double? sigmaX; + final double? sigmaY; + final bool? barrierDismiss; + TransparantRoute( + {required this.builder, + this.barrierDismiss, + RouteSettings? settings, + this.sigmaX, + this.sigmaY}) + : super(settings: settings, fullscreenDialog: false); + + final WidgetBuilder builder; + + @override + bool get opaque => false; + @override + Color get barrierColor => Colors.transparent; + @override + bool get barrierDismissible => true; + + @override + String get barrierLabel => "blurred"; + + @override + bool get maintainState => true; + + @override + Duration get transitionDuration => const Duration(milliseconds: 350); + + @override + Widget buildPage(BuildContext context, Animation animation, + Animation secondaryAnimation) { + final result = builder(context); + + return result; + } +} diff --git a/lib/Ui/screens/widgets/BottomSheets/choose_location_bottomsheet.dart b/lib/Ui/screens/widgets/BottomSheets/choose_location_bottomsheet.dart new file mode 100644 index 0000000..0f23818 --- /dev/null +++ b/lib/Ui/screens/widgets/BottomSheets/choose_location_bottomsheet.dart @@ -0,0 +1,186 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../../data/Repositories/location_repository.dart'; +import '../../../../data/cubits/Utility/google_place_autocomplate_cubit.dart'; +import '../../../../data/model/google_place_model.dart'; +import '../../../../utils/Extensions/extensions.dart'; +import '../../../../utils/ui_utils.dart'; + +///This will show when you will need to fill your location, +/// +class ChooseLocatonBottomSheet extends StatefulWidget { + const ChooseLocatonBottomSheet({Key? key}) : super(key: key); + + @override + State createState() => + ChooseLocatonBottomSheetState(); +} + +class ChooseLocatonBottomSheetState extends State { + final TextEditingController _searchLocation = TextEditingController(); + Timer? delayTimer; + dynamic cubitReferance; + int previouseLength = 0; + + @override + void initState() { + super.initState(); + + ///This will create listener which will listen to out text change in text field + _searchLocation.addListener(() { + ///If there is no text in text field so we don't need to call an API. + ///Therefor we are cancel this timer + /// + if (_searchLocation.text.isEmpty) { + delayTimer?.cancel(); + } + + ///If our timer is already active so we will cancel it, + /*For eg, API will call after 500 miliseconds when we write text in TextField and + we wait, If we try to write in that field again so timer is already active and it is + on 300 miliseconds , Now we have not completed our writing and API will call on 500 miliseconds + , To prevent this we cancel timer when we write again in that field + */ + if (delayTimer?.isActive ?? false) delayTimer?.cancel(); + + ///Create new timer after cancel previous one + delayTimer = Timer(const Duration(milliseconds: 500), () { + ///Search only if text field is not empty otherwise it will call when we tap on search field, + if (_searchLocation.text.isNotEmpty) { + ///Only call when our text doesn't match with our previous text, + ///When we search `Hello` then it will call API and search city named hello, when we write again hello so it will call again, So why do we need to call it when we have it's data already available? + if (_searchLocation.text.length != previouseLength) { + context + .read() + .getLocationFromText(text: _searchLocation.text); + + ///set previous text length + previouseLength = _searchLocation.text.length; + } + } + }); + }); + } + + @override + void dispose() { + _searchLocation.dispose(); + delayTimer?.cancel(); + cubitReferance.clearCubit(); + super.dispose(); + } + + @override + void didChangeDependencies() { + cubitReferance = context.read(); + super.didChangeDependencies(); + } + + @override + Widget build(BuildContext context) { + return SizedBox( + height: MediaQuery.of(context).size.height * 0.7, + child: Padding( + padding: const EdgeInsets.all(15.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + UiUtils.translate( + context, + "selectLocation", + ), + style: TextStyle(fontSize: context.font.larger), + ), + const SizedBox(height: 20), + TextField( + controller: _searchLocation, + onChanged: (e) {}, + cursorColor: context.color.tertiaryColor, + decoration: InputDecoration( + focusedBorder: OutlineInputBorder( + borderSide: + BorderSide(color: context.color.tertiaryColor)), + fillColor: context.color.tertiaryColor.withOpacity(0.01), + filled: true, + prefixIcon: Icon( + Icons.search, + color: context.color.tertiaryColor, + ), + hintText: UiUtils.translate(context, "enterLocation"), + border: const OutlineInputBorder( + borderRadius: BorderRadius.all(Radius.circular(11))))), + BlocBuilder( + builder: + (context, GooglePlaceAutocompleteState googlePlaceState) { + if (googlePlaceState is GooglePlaceAutocompleteSuccess) { + if (googlePlaceState.autocompleteResult.isNotEmpty) { + return ListView.builder( + itemCount: googlePlaceState.autocompleteResult.length, + shrinkWrap: true, + itemBuilder: (context, int i) { + return ListTile( + onTap: () async { + ///This will fetch place details from given PlaceId + var cordinates = await GooglePlaceRepository() + .getPlaceDetailsFromPlaceId(googlePlaceState + .autocompleteResult[i].placeId); + + GooglePlaceModel placeModel = + googlePlaceState.autocompleteResult[i]; + + ///Now we have place Model + placeModel = placeModel.copyWith( + latitude: cordinates['lat'].toString(), + longitude: cordinates['lng'].toString()); + + Future.delayed( + Duration.zero, + () { + WidgetsBinding.instance + .addPostFrameCallback((timeStamp) { + Navigator.pop( + context, + placeModel, + ); + }); + }, + ); + }, + leading: const Icon(Icons.location_city), + title: Text(googlePlaceState + .autocompleteResult[i].description + .toString()), + ); + }); + } + return Padding( + padding: const EdgeInsetsDirectional.only(top: 8.0), + child: Center( + child: Text(UiUtils.translate(context, 'nodatafound'))), + ); + } + + ///Show progress when loading + if (googlePlaceState is GooglePlaceAutocompleteInProgress) { + return Padding( + padding: const EdgeInsetsDirectional.only(top: 8.0), + child: Center( + child: UiUtils.progress( + normalProgressColor: context.color.tertiaryColor), + ), + ); + } + return Container(); + }, + ) + ], + ), + ), + ); + } +} diff --git a/lib/Ui/screens/widgets/DynamicField/dynamic_field.dart b/lib/Ui/screens/widgets/DynamicField/dynamic_field.dart new file mode 100644 index 0000000..33ace0e --- /dev/null +++ b/lib/Ui/screens/widgets/DynamicField/dynamic_field.dart @@ -0,0 +1,1329 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +// ignore_for_file: invalid_use_of_visible_for_testing_member + +import 'dart:convert'; +import 'dart:io'; + +import 'package:dio/dio.dart'; +import 'package:dotted_border/dotted_border.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/helper_utils.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:ebroker/utils/ui_utils.dart'; +import 'package:file_icon/src/data.dart' as d; +import 'package:file_picker/file_picker.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +import '../../../../utils/AppIcon.dart'; +import '../custom_text_form_field.dart'; + +/// Note: Here i have used abstract factory pattern and builder pattern +/// You can learn design patterns from internet +/// so don't be confuse +List kDoNotReBuildThese = []; +List kDoNotReBuildDropdown = []; + +abstract class AbstractField { + final BuildContext context; + static Map fieldsData = {}; + AbstractField(this.context); + Widget createField(Map parameters); +} + +class AbstractTextField extends AbstractField { + AbstractTextField(BuildContext context) + : super( + context, + ); + // TextEditingController? _controller; + + ///Here Builder pattern to set values, + /// because when if we get it from constructor it will be messed in Factory class so it + + ///You can uncomment it if you want to use controller out side of the class + + // AbstractTextField setController(TextEditingController controller) { + // _controller = controller; + // return this; + // } + + @override + Widget createField(parameters) { + return Column( + children: [ + Row( + children: [ + Container( + width: 48.rw(context), + height: 48.rh(context), + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Container( + height: 24, + width: 24, + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.imageType(parameters['image'], + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null, + width: 24, + height: 24, + fit: BoxFit.cover), + ), + ), + ), + SizedBox( + width: 10.rw(context), + ), + Text(parameters['name']) + .size(context.font.large) + .bold(weight: FontWeight.w500) + .color(context.color.textColorDark) + ], + ), + SizedBox( + height: 14.rh(context), + ), + CustomTextFieldDynamic( + action: TextInputAction.next, + initController: parameters['value'] != null ? true : false, + value: parameters['value'].toString(), + hintText: "writeSomething".translate(context), + id: parameters['id'], + ) + ], + ); + } +} + +class AbstractTextAreaField extends AbstractField { + AbstractTextAreaField(BuildContext context) + : super( + context, + ); + // TextEditingController? _controller; + + /// Here Builder pattern to set values, + /// because when if we get it from constructor it will be messed in Factory class so it + /// You can uncomment it if you want to use controller out side of class + //AbstractTextAreaField setController(TextEditingController controller) { + // // _controller = controller; + // return this; + //} + + @override + Widget createField(parameters) { + return Padding( + padding: const EdgeInsets.symmetric( + vertical: .0, + ), + child: Column( + children: [ + Row( + children: [ + Container( + width: 48.rw(context), + height: 48.rh(context), + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Container( + height: 24, + width: 24, + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.imageType(parameters['image'], + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null, + width: 24, + height: 24, + fit: BoxFit.cover), + ), + ), + ), + SizedBox( + width: 10.rw(context), + ), + Text(parameters['name']) + .size(context.font.large) + .color( + context.color.textColorDark, + ) + .bold(weight: FontWeight.w500) + ], + ), + SizedBox( + height: 14.rh(context), + ), + CustomTextFormField( + hintText: "Write something...", + minLine: 4, + maxLine: 100, + validator: CustomTextFieldValidator.maxFifty, + controller: parameters['value'] != null + ? TextEditingController(text: parameters['value'].toString()) + : null, + onChange: (value) { + AbstractField.fieldsData.addAll({parameters['id']: value}); + }, + ) + ], + ), + ); + + // return TextFormField( + // maxLines: null, + // minLines: 5, + // onChanged: (value) { + // AbstractField.fieldsData.addAll({parameters['id']: value}); + // }, + // decoration: InputDecoration(hintText: parameters['name']), + // ); + } +} + +class AbstractNumberField extends AbstractField { + AbstractNumberField(BuildContext context) + : super( + context, + ); + // TextEditingController? _controller; + + ///Here, Builder pattern to set values, + /// because when if we get it from constructor it will be messed in Factory class so it + + ///You can uncomment it if you want to use controller out side of class + // AbstractNumberField setController(TextEditingController controller) { + // _controller = controller; + // return this; + // } + + @override + Widget createField(parameters) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 0.0), + child: Column( + children: [ + Row( + children: [ + Container( + width: 48.rw(context), + height: 48.rh(context), + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: SizedBox( + height: 24, + width: 24, + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.imageType(parameters['image'], + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null, + width: 24, + height: 24, + fit: BoxFit.cover), + ), + ), + ), + SizedBox( + width: 10.rw(context), + ), + Text(parameters['name']) + .size(context.font.large) + .bold(weight: FontWeight.w500) + .color(context.color.textColorDark) + ], + ), + SizedBox( + height: 14.rh(context), + ), + CustomTextFieldDynamic( + initController: parameters['value'] != null ? true : false, + value: parameters['value'].toString(), + hintText: "addNumerical".translate(context), + formaters: [ + FilteringTextInputFormatter.allow( + RegExp("[0-9]"), + ), + ], + action: TextInputAction.next, + keyboardType: TextInputType.number, + id: parameters['id'], + ), + ], + )); + } +} + +class AbstractDropdown extends AbstractField { + Function(dynamic onData)? _onChange; + List kDropdownSelected = []; + UniqueKey _key = UniqueKey(); + List? _items; + dynamic selectedItem; + AbstractDropdown( + BuildContext context, + ) : super(context); + + ///We can say it method chaining + ///Here this is builder pattern used here it will return it self after assign value so new class has already assigned value + AbstractDropdown setOnChange(Function(dynamic onChange) onChange) { + _onChange = onChange; + return this; + } + + AbstractDropdown setItems(List items) { + _items = items; + return this; + } + + AbstractDropdown setSelectedItem(dynamic item) { + if (item != null) { + if (!kDoNotReBuildDropdown.contains(_key)) { + kDoNotReBuildDropdown.add(_key); + dropDownItemChange.value = item; + } + } + + return this; + } + + late ValueNotifier dropDownItemChange = + ValueNotifier(_items?.first); + + @override + Widget createField(parameters) { + return CustomDropdownState( + key: _key, + dropDownItemChange: dropDownItemChange, + parameters: parameters, + items: _items ?? [], + ); + + return ValueListenableBuilder( + valueListenable: dropDownItemChange, + builder: (context, value, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + width: 48.rw(context), + height: 48.rh(context), + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity( + 0.1, + ), + borderRadius: BorderRadius.circular( + 10, + ), + ), + child: UiUtils.imageType(parameters['image'], + fit: BoxFit.none), + ), + SizedBox( + width: 10.rw( + context, + ), + ), + Text( + parameters['name'], + ) + .size( + context.font.large, + ) + .color( + context.color.textColorDark, + ) + ], + ), + SizedBox( + height: 10.rh(context), + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 3, + ), + child: Container( + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular( + 10, + ), + border: Border.all( + width: 1.5, + color: context.color.borderColor, + )), + child: Padding( + padding: const EdgeInsets.all( + 8.0, + ), + child: SizedBox( + width: double.infinity, + child: DropdownButton( + value: value, + isExpanded: true, + padding: EdgeInsets.symmetric(vertical: 5), + icon: SvgPicture.asset(AppIcons.downArrow), + isDense: true, + borderRadius: BorderRadius.circular( + 10, + ), + underline: const SizedBox.shrink(), + items: _items + ?.map((e) => DropdownMenuItem( + value: e, + child: Text( + e, + ), + )) + .toList(), + onChanged: (dynamic v) { + dropDownItemChange.value = v; + AbstractField.fieldsData.addAll( + { + parameters['id']: v, + }, + ); + + _onChange?.call(v); + }, + ), + ), + ), + ), + ), + SizedBox( + height: 10.rh( + context, + ), + ) + ], + ); + }); + } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is AbstractDropdown && + runtimeType == other.runtimeType && + _onChange == other._onChange && + kDropdownSelected == other.kDropdownSelected && + _key == other._key && + _items == other._items && + selectedItem == other.selectedItem && + dropDownItemChange == other.dropDownItemChange; + + @override + int get hashCode => + _onChange.hashCode ^ + kDropdownSelected.hashCode ^ + _key.hashCode ^ + _items.hashCode ^ + selectedItem.hashCode ^ + dropDownItemChange.hashCode; +} + +class AbstractRadioButton extends AbstractField { + AbstractRadioButton(BuildContext context) : super(context); + List? _radioValues; + // late ValueNotifier selectedRadio; + + AbstractRadioButton setValues( + List values, + ) { + _radioValues = values; + // selectedRadio = ValueNotifier(_radioValues?.first); + return this; + } + + @override + Widget createField(parameters) { + return CustomRadioButtonWidget( + parameters: parameters, + radioValues: _radioValues, + ); + // return ValueListenableBuilder( + // valueListenable: selectedRadio, + // builder: (context, value, child) { + // return Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Row( + // children: [ + // Container( + // width: 48.rw(context), + // height: 48.rh(context), + // decoration: BoxDecoration( + // color: context.color.teritoryColor.withOpacity(0.1), + // borderRadius: BorderRadius.circular(10), + // ), + // child: UiUtils.imageType(parameters['image'], + // fit: BoxFit.none), + // ), + // SizedBox( + // width: 10.rw(context), + // ), + // Text(parameters['name']) + // .size(context.font.large) + // .color(context.color.textColorDark) + // ], + // ), + // SizedBox( + // height: 10.rh(context), + // ), + // Wrap( + // alignment: WrapAlignment.start, + // runAlignment: WrapAlignment.start, + // crossAxisAlignment: WrapCrossAlignment.start, + // children: List.generate( + // _radioValues?.length ?? 0, + // (index) => Row( + // mainAxisSize: MainAxisSize.min, + // children: [ + // Radio( + // value: _radioValues?[index], + // groupValue: value, + // fillColor: MaterialStatePropertyAll( + // context.color.teritoryColor), + // onChanged: (dynamic e) { + // selectedRadio.value = e; + // AbstractField.fieldsData + // .addAll({parameters['id']: e}); + // }, + // ), + // Text(_radioValues?[index]) + // ], + // ))) + // ], + // ); + + // // return Column( + // // crossAxisAlignment: CrossAxisAlignment.start, + // // children: [ + // // Text(parameters['name']), + // // Wrap( + // // children: _radioValues + // // ?.map((item) { + // // return Row( + // // mainAxisSize: MainAxisSize.min, + // // children: [ + // // Text(item), + // // Radio( + // // value: item, + // // groupValue: value, + // // onChanged: (dynamic e) { + // // selectedRadio.value = e; + // // AbstractField.fieldsData + // // .addAll({parameters['id']: e}); + // // }), + // // ], + // // ); + // // }) + // // .toList() + // // .cast() ?? + // // [], + // // ), + // // ], + // // ); + // }); + } +} + +class AbstractCheckBoxButton extends AbstractField { + AbstractCheckBoxButton(BuildContext context) : super(context); + + List? _checkValues; + + bool initComplete = false; + AbstractCheckBoxButton setCheckBoxValues(List values) { + _checkValues = values; + return this; + } + + @override + Widget createField(parameters) { + return CustomCheckBox( + parameters: parameters, + checkValues: _checkValues, + index: 0, + initComplete: true, + ); + } + + void dispose() { + // checked.dispose(); + } +} + +class AbstractPickFileButton extends AbstractField { + AbstractPickFileButton(BuildContext context) : super(context); + ValueNotifier filePicked = ValueNotifier(false); + ValueNotifier picked = ValueNotifier(null); + Future pickFile() async { + FilePickerResult? picker = await FilePicker.platform.pickFiles(); + if (picker != null) { + filePicked.value = true; + File file = File( + picker.files.single.path!, + ); + picked.value = file.path; + return file; + } + filePicked.value = false; + picked.value = null; + return null; + } + + @override + Widget createField(parameters) { + picked.value = parameters['value']; + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + width: 48.rw(context), + height: 48.rh(context), + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Container( + height: 24, + width: 24, + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.imageType(parameters['image'], + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null, + width: 24, + height: 24, + fit: BoxFit.cover), + ), + ), + ), + SizedBox( + width: 10.rw(context), + ), + Text(parameters['name']) + .size(context.font.large) + .bold(weight: FontWeight.w500) + .color(context.color.textColorDark), + ], + ), + SizedBox( + height: 14.rh(context), + ), + GestureDetector( + onTap: () async { + File? file = await pickFile(); + if (file != null) { + MultipartFile multipartFile = + await MultipartFile.fromFile(file.path); + + /// Add data to static Map + AbstractField.fieldsData + .addAll({parameters['id']: multipartFile}); + } + }, + child: DottedBorder( + borderType: BorderType.RRect, + radius: const Radius.circular(10), + color: context.color.textLightColor, + strokeCap: StrokeCap.round, + padding: const EdgeInsets.all(5), + dashPattern: const [3, 3], + child: Container( + width: double.infinity, + height: 43, + decoration: + BoxDecoration(borderRadius: BorderRadius.circular(10)), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.add), + const SizedBox( + width: 5, + ), + const Text("Add File") + .color(context.color.textLightColor) + .size(context.font.large) + ], + ), + )), + ), + ValueListenableBuilder( + valueListenable: picked, + builder: (context, String? pickedFilePath, c) { + if (pickedFilePath == null) { + return const SizedBox.shrink(); + } + return Container( + child: Row( + children: [ + Icon( + IconData( + d.iconSetMap[".${pickedFilePath.split(".").last}"]! + .codePoint, + fontFamily: 'Seti', + fontPackage: 'file_icon', + ), + color: context.color.tertiaryColor, + size: 35, + ), + const SizedBox( + width: 5, + ), + Expanded( + flex: 2, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(pickedFilePath.split("/").last) + .setMaxLines(lines: 1) + .bold(weight: FontWeight.w500), + if (!(pickedFilePath.startsWith("http") || + pickedFilePath.startsWith("https"))) + Text(HelperUtils.getFileSizeString( + bytes: File(pickedFilePath).lengthSync(), + ).toUpperCase()) + .size(context.font.smaller) + ], + )), + const Spacer(flex: 1), + IconButton( + onPressed: () { + AbstractField.fieldsData.remove(parameters['id']); + + picked.value = null; + }, + icon: Icon(Icons.close)) + ], + ), + ); + }) + ], + ); + + // return MaterialButton( + // onPressed: () async { + // File? file = await pickFile(); + // if (file != null) { + // MultipartFile multipartFile = await MultipartFile.fromFile(file.path); + + // /// Add data to static Map + // AbstractField.fieldsData.addAll({parameters['id']: multipartFile}); + // } + // }, + // color: Colors.grey.shade200, + // child: const Text("Pick"), + // ); + } +} + +///Factory class which will return class according to type +class FieldFactory { + static AbstractField getField(BuildContext context, String fieldType) { + if (fieldType == 'textbox') { + return AbstractTextField(context); + } else if (fieldType == 'dropdown') { + return AbstractDropdown(context); + } else if (fieldType == 'radiobutton') { + return AbstractRadioButton(context); + } else if (fieldType == 'number') { + return AbstractNumberField( + context, + ); + } else if (fieldType == "checkbox") { + return AbstractCheckBoxButton(context); + } else if (fieldType == "textarea") { + return AbstractTextAreaField(context); + } else if (fieldType == "file") { + return AbstractPickFileButton(context); + } + throw Exception('Invalid field type: $fieldType'); + } +} + +class CustomRadioButtonWidget extends StatefulWidget { + final dynamic parameters; + final dynamic radioValues; + const CustomRadioButtonWidget({super.key, this.parameters, this.radioValues}); + + @override + State createState() => + _CustomRadioButtonWidgetState(); +} + +class _CustomRadioButtonWidgetState extends State { + late ValueNotifier selectedRadio; + bool isInitialized = false; + @override + void initState() { + selectedRadio = ValueNotifier(widget.radioValues?.first); + + if (widget.parameters['value'] != null && isInitialized == false) { + selectedRadio.value = widget.parameters['value']; + isInitialized = true; + } + super.initState(); + } + + @override + Widget build(BuildContext context) { + return ValueListenableBuilder( + valueListenable: selectedRadio, + builder: (context, value, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + width: 48.rw(context), + height: 48.rh(context), + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Container( + height: 24, + width: 24, + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.imageType(widget.parameters['image'], + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null, + width: 24, + height: 24, + fit: BoxFit.cover), + ), + ), + ), + SizedBox( + width: 10.rw(context), + ), + Text(widget.parameters['name']) + .size(context.font.large) + .bold(weight: FontWeight.w500) + .color(context.color.textColorDark) + ], + ), + SizedBox( + height: 14.rh(context), + ), + Wrap( + alignment: WrapAlignment.start, + runAlignment: WrapAlignment.start, + crossAxisAlignment: WrapCrossAlignment.start, + children: + List.generate(widget.radioValues?.length ?? 0, (index) { + return Padding( + padding: EdgeInsetsDirectional.only( + start: index == 0 ? 0 : 4, + end: 4, + bottom: 4, + top: 4, + ), + child: InkWell( + borderRadius: BorderRadius.circular(10), + onTap: () { + selectedRadio.value = widget.radioValues?[index]; + AbstractField.fieldsData.addAll({ + widget.parameters['id']: widget.radioValues?[index] + }); + }, + child: Container( + decoration: BoxDecoration( + border: Border.all( + color: context.color.borderColor, width: 1.5), + color: selectedRadio.value == + widget.radioValues?[index] + ? context.color.tertiaryColor.withOpacity(0.1) + : context.color.secondaryColor, + borderRadius: BorderRadius.circular(10)), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 10, horizontal: 15), + child: Text(widget.radioValues?[index]).color( + selectedRadio.value == + widget.radioValues?[index] + ? context.color.tertiaryColor + : context.color.textLightColor)), + ), + ), + ); + + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + Radio( + value: widget.radioValues?[index], + groupValue: value, + fillColor: MaterialStatePropertyAll( + context.color.tertiaryColor), + onChanged: (dynamic e) { + selectedRadio.value = e; + AbstractField.fieldsData + .addAll({widget.parameters['id']: e}); + }, + ), + Text(widget.radioValues?[index]) + ], + ); + })) + ], + ); + + // return Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Text(parameters['name']), + // Wrap( + // children: _radioValues + // ?.map((item) { + // return Row( + // mainAxisSize: MainAxisSize.min, + // children: [ + // Text(item), + // Radio( + // value: item, + // groupValue: value, + // onChanged: (dynamic e) { + // selectedRadio.value = e; + // AbstractField.fieldsData + // .addAll({parameters['id']: e}); + // }), + // ], + // ); + // }) + // .toList() + // .cast() ?? + // [], + // ), + // ], + // ); + }); + } +} + +class CustomCheckBox extends StatefulWidget { + final dynamic parameters; + final dynamic checkValues; + final dynamic initComplete; + final dynamic index; + const CustomCheckBox( + {super.key, + this.parameters, + this.checkValues, + this.initComplete, + this.index}); + + @override + State createState() => _CustomCheckBoxState(); +} + +class _CustomCheckBoxState extends State { + final ValueNotifier checked = ValueNotifier([]); + @override + void initState() { + // log("VA ${widget.parameters}"); + if (widget.parameters.containsKey("value")) { + List valueList = widget.parameters['value'].toString().split(","); + if (valueList.isNotEmpty) { + checked.value.addAll(valueList); + // checked.value.add(widget.checkValues?[widget.index]); + var entries = checked.value.asMap().entries; + Map data = Map.fromEntries(entries); + Map stringedData = data.map((key, value) { + return MapEntry(key.toString(), value); + }); + + AbstractField.fieldsData + .addAll({widget.parameters['id']: json.encode(stringedData)}); + } + } + + super.initState(); + } + + @override + Widget build(BuildContext context) { + return ValueListenableBuilder( + valueListenable: checked, + builder: (context, List value, Widget? c) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + width: 48.rw(context), + height: 48.rh(context), + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity(0.1), + borderRadius: BorderRadius.circular(10), + ), + child: Container( + height: 24, + width: 24, + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.imageType(widget.parameters['image'], + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null, + width: 24, + height: 24, + fit: BoxFit.cover), + ), + ), + ), + SizedBox( + width: 10.rw(context), + ), + Text(widget.parameters['name']) + .size(context.font.large) + .bold(weight: FontWeight.w500) + .color(context.color.textColorDark) + ], + ), + SizedBox( + height: 14.rh(context), + ), + Wrap( + alignment: WrapAlignment.start, + runAlignment: WrapAlignment.start, + crossAxisAlignment: WrapCrossAlignment.start, + children: List.generate( + widget.checkValues?.length ?? 0, + (index) { + //this variable will prevent adding when state change + ///this will work like init state text + if (widget.initComplete == false && + (!kDoNotReBuildThese.contains(widget.parameters['id']))) { + kDoNotReBuildThese.add(widget.parameters['id']); + + // widget.initComplete = true; + } + + return Padding( + padding: EdgeInsetsDirectional.only( + start: index == 0 ? 0 : 4, bottom: 4, top: 4, end: 4), + child: InkWell( + borderRadius: BorderRadius.circular(10), + onTap: () { + if (checked.value + .contains(widget.checkValues?[index])) { + checked.value.remove(widget.checkValues?[index]); + // ignore: invalid_use_of_protected_member + checked.notifyListeners(); + } else { + checked.value.add(widget.checkValues?[index]); + // ignore: invalid_use_of_protected_member + checked.notifyListeners(); + } + + var entries = checked.value.asMap().entries; + Map data = Map.fromEntries(entries); + Map temp = {}; + data.forEach((key, value) { + temp[key.toString()] = value; + }); + + AbstractField.fieldsData.addAll( + {widget.parameters['id']: json.encode(temp)}); + }, + child: Container( + decoration: BoxDecoration( + border: Border.all( + color: context.color.borderColor, width: 1.5), + color: value.contains(widget.checkValues?[index]) + ? context.color.tertiaryColor.withOpacity(0.1) + : context.color.secondaryColor, + borderRadius: BorderRadius.circular(10)), + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 8.0, horizontal: 14), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + value.contains(widget.checkValues?[index]) + ? Icons.done + : Icons.add, + color: + value.contains(widget.checkValues?[index]) + ? context.color.tertiaryColor + : context.color.textColorDark, + ), + const SizedBox( + width: 5, + ), + Text(widget.checkValues?[index]).color( + value.contains(widget.checkValues?[index]) + ? context.color.tertiaryColor + : context.color.textLightColor) + ], + ), + ), + ), + ), + ); + + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + Checkbox( + fillColor: MaterialStatePropertyAll( + context.color.tertiaryColor), + value: value.contains(widget.checkValues?[index]), + onChanged: (v) { + if (checked.value + .contains(widget.checkValues?[index])) { + checked.value.remove(widget.checkValues?[index]); + // ignore: invalid_use_of_protected_member + checked.notifyListeners(); + } else { + checked.value.add(widget.checkValues?[index]); + // ignore: invalid_use_of_protected_member + checked.notifyListeners(); + } + + var entries = checked.value.asMap().entries; + Map data = Map.fromEntries(entries); + Map temp = {}; + data.forEach((key, value) { + temp[key.toString()] = value; + }); + + AbstractField.fieldsData.addAll( + {widget.parameters['id']: json.encode(temp)}); + }, + ), + Text(widget.checkValues?[index]) + ], + ); + }, + ), + ) + ], + ); + }, + ); + } +} + +class CustomTextFieldDynamic extends StatefulWidget { + final String? value; + final bool initController; + final dynamic id; + final String hintText; + final TextInputType? keyboardType; + final TextInputAction? action; + final List? formaters; + const CustomTextFieldDynamic({ + Key? key, + required this.initController, + required this.value, + this.id, + required this.hintText, + this.keyboardType, + this.action, + this.formaters, + }) : super(key: key); + + @override + State createState() => CustomTextFieldDynamicState(); +} + +class CustomTextFieldDynamicState extends State { + TextEditingController? _controller; + + @override + void initState() { + if (widget.initController) { + _controller = TextEditingController(text: widget.value); + } + super.initState(); + } + + @override + Widget build(BuildContext context) { + return CustomTextFormField( + hintText: widget.hintText, + action: widget.action, + formaters: widget.formaters, + validator: CustomTextFieldValidator.nullCheck, + keyboard: widget.keyboardType, + controller: _controller, + onChange: (value) { + AbstractField.fieldsData.addAll({widget.id: value}); + }, + ); + } +} + +class CustomDropdownState extends StatefulWidget { + final ValueNotifier dropDownItemChange; + final Map parameters; + final List items; + CustomDropdownState( + {Key? key, + required this.dropDownItemChange, + required this.parameters, + required this.items}) + : super(key: key); + + @override + State createState() => _CustomDropdownStateState(); +} + +class _CustomDropdownStateState extends State + with AutomaticKeepAliveClientMixin { + List>? wid = []; + @override + void initState() { + wid = widget.items + .map((e) => DropdownMenuItem( + value: e, + child: Text( + e, + ), + )) + .toList(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + super.build(context); + + return ValueListenableBuilder( + valueListenable: widget.dropDownItemChange, + builder: (context, value, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + width: 48.rw(context), + height: 48.rh(context), + decoration: BoxDecoration( + color: context.color.tertiaryColor.withOpacity( + 0.1, + ), + borderRadius: BorderRadius.circular( + 10, + ), + ), + child: Container( + height: 24, + width: 24, + child: FittedBox( + fit: BoxFit.none, + child: UiUtils.imageType(widget.parameters['image'], + color: Constant.adaptThemeColorSvg + ? context.color.tertiaryColor + : null, + width: 24, + height: 24, + fit: BoxFit.cover), + ), + ), + ), + SizedBox( + width: 10.rw( + context, + ), + ), + Text( + widget.parameters['name'], + ) + .size( + context.font.large, + ) + .bold(weight: FontWeight.w500) + .color( + context.color.textColorDark, + ) + ], + ), + SizedBox( + height: 14.rh(context), + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 0, + ), + child: Container( + decoration: BoxDecoration( + color: context.color.secondaryColor, + borderRadius: BorderRadius.circular( + 10, + ), + border: Border.all( + width: 1.5, + color: context.color.borderColor, + )), + child: Padding( + padding: const EdgeInsets.all( + 8.0, + ), + child: SizedBox( + width: double.infinity, + child: DropdownButton( + value: value, + dropdownColor: context.color.secondaryColor, + isExpanded: true, + padding: const EdgeInsets.symmetric(vertical: 5), + icon: SvgPicture.asset(AppIcons.downArrow), + isDense: true, + borderRadius: BorderRadius.circular( + 10, + ), + style: TextStyle( + color: context.color.textLightColor, + fontSize: context.font.large), + underline: const SizedBox.shrink(), + items: wid, + onChanged: (dynamic v) { + widget.dropDownItemChange.value = v; + AbstractField.fieldsData.addAll( + { + widget.parameters['id']: v, + }, + ); + }, + ), + ), + ), + ), + ), + ], + ); + }); + } + + @override + bool get wantKeepAlive => true; +} diff --git a/lib/Ui/screens/widgets/Erros/no_data_found.dart b/lib/Ui/screens/widgets/Erros/no_data_found.dart new file mode 100644 index 0000000..93c38a5 --- /dev/null +++ b/lib/Ui/screens/widgets/Erros/no_data_found.dart @@ -0,0 +1,49 @@ +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +import '../../../../utils/AppIcon.dart'; + +class NoDataFound extends StatelessWidget { + final double? height; + final VoidCallback? onTap; + final String? title; + final String? description; + const NoDataFound( + {super.key, this.onTap, this.height, this.title, this.description}); + + @override + Widget build(BuildContext context) { + return Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + // height: height ?? 200, + child: SvgPicture.asset(AppIcons.no_data_found), + ), + SizedBox( + height: 20, + ), + Text(title ?? "nodatafound".translate(context)) + .size(context.font.extraLarge) + .color(context.color.tertiaryColor) + .bold(weight: FontWeight.w600), + const SizedBox( + height: 14, + ), + Text(description??"sorryLookingFor".translate(context)) + .size(context.font.larger) + .centerAlign(), + // Text(UiUtils.getTranslatedLabel(context, "nodatafound")), + // TextButton( + // onPressed: onTap, + // style: ButtonStyle( + // overlayColor: MaterialStateProperty.all( + // context.color.teritoryColor.withOpacity(0.2))), + // child: const Text("Retry").color(context.color.teritoryColor)) + ], + ), + ); + } +} diff --git a/lib/Ui/screens/widgets/Erros/no_internet.dart b/lib/Ui/screens/widgets/Erros/no_internet.dart new file mode 100644 index 0000000..612e637 --- /dev/null +++ b/lib/Ui/screens/widgets/Erros/no_internet.dart @@ -0,0 +1,60 @@ +import 'package:flutter/material.dart'; + +import '../../../../utils/AppIcon.dart'; +import '../../../../utils/Extensions/extensions.dart'; +import '../../../../utils/ui_utils.dart'; + +class NoInternet extends StatelessWidget { + final VoidCallback? onRetry; + const NoInternet({super.key, this.onRetry}); + + @override + Widget build(BuildContext context) { + return AnnotatedRegion( + value: UiUtils.getSystemUiOverlayStyle(context: context), + child: Scaffold( + backgroundColor: context.color.backgroundColor, + body: SizedBox( + height: context.screenHeight, + width: context.screenWidth, + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SizedBox( + // width: 100, + // height: 150, + child: UiUtils.getSvg(AppIcons.no_internet)), + SizedBox( + height: 20, + ), + Text("noInternet".translate(context)) + .size(context.font.extraLarge) + .color(context.color.tertiaryColor) + .bold(weight: FontWeight.w600), + const SizedBox( + height: 10, + ), + SizedBox( + width: context.screenWidth * 0.8, + child: Text( + UiUtils.translate(context, "noInternetErrorMsg"), + textAlign: TextAlign.center, + )), + const SizedBox( + height: 5, + ), + TextButton( + onPressed: onRetry, + style: ButtonStyle( + overlayColor: MaterialStateProperty.all( + context.color.tertiaryColor.withOpacity(0.2))), + child: Text(UiUtils.translate(context, "retry")) + .color(context.color.tertiaryColor)) + ], + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/widgets/Erros/something_went_wrong.dart b/lib/Ui/screens/widgets/Erros/something_went_wrong.dart new file mode 100644 index 0000000..473a807 --- /dev/null +++ b/lib/Ui/screens/widgets/Erros/something_went_wrong.dart @@ -0,0 +1,95 @@ +import 'package:ebroker/utils/AppIcon.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +class SomethingWentWrong extends StatelessWidget { + final FlutterErrorDetails? error; + const SomethingWentWrong({super.key, this.error}); + + static void asGlobalErrorBuilder() { + if (kReleaseMode) { + ErrorWidget.builder = + (FlutterErrorDetails flutterErrorDetails) => SomethingWentWrong( + error: flutterErrorDetails, + ); + } + } + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Center(child: SvgPicture.asset(AppIcons.somethingwentwrong)), + SizedBox( + height: 10, + ), + const Text("Something went wrong!").size(context.font.larger).bold(), + ], + ); + } +} + +class ErrorScreen extends StatelessWidget { + final StackTrace stack; + + const ErrorScreen({super.key, required this.stack}); + void _generateError(context) { + final filteredStackLines = stack.toString().split('\n').where((line) { + return !line.contains('package:flutter'); + }).map((line) { + final parts = line.split(' '); + return parts.length > 1 ? parts[1] : line; + }).toList(); + + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => ErrorDetailScreen(stackLines: filteredStackLines), + ), + ); + } + + @override + Widget build(BuildContext context) { + return ElevatedButton( + onPressed: () { + _generateError(context); + }, + child: const Text('Generate Error'), + ); + } +} + +class ErrorDetailScreen extends StatelessWidget { + final List stackLines; + + const ErrorDetailScreen({super.key, required this.stackLines}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('Filtered and Prettified Error Stack Trace'), + ), + body: ListView.builder( + itemCount: stackLines.length, + itemBuilder: (context, index) { + return ListTile( + title: Text(_formatStackTraceLine(stackLines[index])), + ); + }, + ), + ); + } +} + +String _formatStackTraceLine(String line) { + // Example format: "at Class.method (file.dart:42:23)" + final startIndex = line.indexOf('at ') + 3; + final endIndex = line.lastIndexOf('('); + return line.substring(startIndex, endIndex); +} diff --git a/lib/Ui/screens/widgets/adaptive_image_picker.dart b/lib/Ui/screens/widgets/adaptive_image_picker.dart new file mode 100644 index 0000000..464a553 --- /dev/null +++ b/lib/Ui/screens/widgets/adaptive_image_picker.dart @@ -0,0 +1,395 @@ +import 'dart:io'; + +import 'package:dotted_border/dotted_border.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/custom_validator.dart'; +import 'package:ebroker/utils/responsiveSize.dart'; +import 'package:flutter/material.dart'; +import 'package:image_picker/image_picker.dart'; + +import '../../../utils/ui_utils.dart'; +import '../proprties/AddProperyScreens/add_property_details.dart'; + +abstract class ImagePickerValue { + abstract final T value; +} + +class UrlValue extends ImagePickerValue { + @override + final String value; + final dynamic metaData; + UrlValue(this.value, [this.metaData]); +} + +class FileValue extends ImagePickerValue { + @override + final File value; + final FileSize? fileSize; + FileValue(this.value, this.fileSize); +} + +class IdentifyValue extends ImagePickerValue { + @override + dynamic value; + IdentifyValue(this.value) { + if (value is File) { + var file = value; + int fileSizeInBytes = file.lengthSync(); + + value = FileValue(file, formatFileSize(fileSizeInBytes)); + // value = FileValue( + // value, + // ); + } + if (value is String) { + value = UrlValue(value); + } + } +} + +class MultiValue extends ImagePickerValue { + List value; + MultiValue(this.value); +} + +class FileSize { + final double kb; + final double mb; + final double gb; + final int bytes; + + const FileSize({ + required this.bytes, + required this.kb, + required this.mb, + required this.gb, + }); + + @override + String toString() { + return 'FileSize{kb: $kb, mb: $mb, gb: $gb, bytes: $bytes}'; + } +} + +class ImageCount { + final int min; + final int max; + ImageCount(this.min, this.max); +} + +class AdaptiveImagePickerWidget extends StatefulWidget { + final String title; + final ImageCount? count; + final int? allowedSizeBytes; + final bool? isRequired; + final bool? multiImage; + final ImagePickerValue? value; + final void Function(dynamic value)? onRemove; + final void Function(ImagePickerValue? selected) onSelect; + + const AdaptiveImagePickerWidget( + {super.key, + this.value, + required this.onSelect, + required this.title, + this.multiImage, + this.onRemove, + this.isRequired, + this.count, + this.allowedSizeBytes}); + + @override + State createState() => + _AdaptiveImagePickerWidgetState(); +} + +class _AdaptiveImagePickerWidgetState extends State { + ImagePicker imagePicker = ImagePicker(); + + Widget currentWidget = Container(); + ImagePickerValue? imagePickedValue; + dynamic get(ImagePickerValue imagePickerValue) { + if (imagePickerValue is UrlValue) { + return Image.network( + imagePickerValue.value, + fit: BoxFit.cover, + ); + } + if (imagePickerValue is FileValue) { + return Image.file( + imagePickerValue.value, + fit: BoxFit.cover, + ); + } + if (imagePickedValue is IdentifyValue) { + return get(imagePickerValue); + } + } + + @override + void initState() { + if (widget.value != null) { + imagePickedValue = widget.value; + } + super.initState(); + } + + dynamic getProvider(imagePickedValue) { + if (imagePickedValue is FileValue) { + return FileImage(imagePickedValue.value); + } + if (imagePickedValue is UrlValue) { + return NetworkImage(imagePickedValue.value); + } + if (imagePickedValue is IdentifyValue) { + return getProvider(imagePickedValue); + } + } + + _onPick(FormFieldState state) async { + // _pickTitleImage.pick(pickMultiple: false); + // titleImageURL = ""; + + if (widget.multiImage == true) { + List list = await imagePicker.pickMultiImage(); + + List multiImages = list.map((e) { + var file = File(e.path); + int fileSizeInBytes = file.lengthSync(); + FileValue fv = FileValue(file, formatFileSize(fileSizeInBytes)); + return fv; + }).toList(); + + if (imagePickedValue == null) { + imagePickedValue = MultiValue(multiImages); + } else { + (imagePickedValue as MultiValue?)?.value.addAll(multiImages); + } + + state.didChange(imagePickedValue); + + widget.onSelect(imagePickedValue! as MultiValue); + setState(() {}); + return; + } + XFile? xFile = await imagePicker.pickImage(source: ImageSource.gallery); + + if (xFile != null) { + var file = File(xFile.path); + int fileSizeInBytes = file.lengthSync(); + imagePickedValue = FileValue(file, formatFileSize(fileSizeInBytes)); + state.didChange(imagePickedValue); + widget.onSelect(imagePickedValue! as FileValue); + } + + setState(() {}); + } + + _onRemove(dynamic value, FormFieldState state) { + if (widget.multiImage == true) { + if (imagePickedValue is MultiValue) { + (imagePickedValue as MultiValue).value.remove(value); + widget.onRemove?.call(value); + } + + widget.onSelect(imagePickedValue); + } else { + imagePickedValue = null; + state.didChange(null); + widget.onRemove?.call(null); + + widget.onSelect(null); + } + setState(() {}); + } + + @override + Widget build(BuildContext context) { + if (imagePickedValue is MultiValue) {} + if (imagePickedValue != null) { + currentWidget = GestureDetector( + onTap: () { + UiUtils.showFullScreenImage(context, + provider: getProvider(imagePickedValue)); + }, + child: Column( + children: [ + Container( + width: 100, + height: 100, + margin: const EdgeInsets.all(5), + clipBehavior: Clip.antiAlias, + decoration: + BoxDecoration(borderRadius: BorderRadius.circular(10)), + child: get(imagePickedValue!)), + ], + ), + ); + } else { + currentWidget = Container(); + } + return CustomValidator( + initialValue: widget.value, + validator: (value) { + if (widget.isRequired == true) { + if (value == null) { + return "Please pick image"; + } + if (value is MultiValue) { + if (value.value.isEmpty) { + return "Please pick image"; + } + } + + if (value is FileValue) { + if (widget.allowedSizeBytes != null && + value.fileSize!.bytes > widget.allowedSizeBytes!) { + var size = formatFileSize(widget.allowedSizeBytes!); + return "Max ${size.kb ~/ 1}KB your file size: ${value.fileSize!.kb ~/ 1}KB"; + } + } + if (widget.count != null && + widget.multiImage == true && + widget.isRequired == true) { + if (imagePickedValue is MultiValue) { + int images = (imagePickedValue as MultiValue).value.length; + if (widget.count?.min != null && images < widget.count!.min) { + return "Minimum ${widget.count!.min} images required"; + } + + if (widget.count?.max != null && images > widget.count!.max) { + return "Maximum ${widget.count!.max} images are allowed"; + } + } + } + } + + return null; + }, + builder: (state) { + return Wrap( + children: [ + if (imagePickedValue == null) + DottedBorder( + color: state.hasError + ? context.color.error + : context.color.textLightColor, + borderType: BorderType.RRect, + radius: const Radius.circular(12), + child: GestureDetector( + onTap: () { + _onPick(state); + }, + child: Container( + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10)), + alignment: Alignment.center, + height: 48.rh(context), + child: Text(widget.title), + ), + ), + ), + // if (state.hasError) + // Padding( + // padding: const EdgeInsets.symmetric(horizontal: 4), + // child: Text(state.errorText!) + // .color(context.color.error) + // .size(context.font.small), + // ), + if (imagePickedValue is! MultiValue) + Stack( + children: [ + currentWidget, + closeButton(context, () { + _onRemove(null, state); + }) + ], + ), + if (imagePickedValue is MultiValue) ...{ + ...(imagePickedValue! as MultiValue) + .value + .map((ImagePickerValue impvalue) { + return Stack( + children: [ + GestureDetector( + onTap: () { + UiUtils.showFullScreenImage(context, + provider: getProvider(impvalue)); + }, + child: Column( + children: [ + Container( + width: 100, + height: 100, + margin: const EdgeInsets.all(5), + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10)), + child: get(impvalue!)), + ], + ), + ), + closeButton(context, () { + _onRemove(impvalue, state); + }) + ], + ); + }) + }, + if (imagePickedValue != null) + uploadPhotoCard(context, onTap: () { + _onPick(state); + }) + // GestureDetector( + // onTap: () { + // _pickTitleImage.resumeSubscription(); + // _pickTitleImage.pick(pickMultiple: false); + // _pickTitleImage.pauseSubscription(); + // titleImageURL = ""; + // setState(() {}); + // }, + // child: Container( + // width: 100, + // height: 100, + // margin: const EdgeInsets.all(5), + // clipBehavior: Clip.antiAlias, + // decoration: + // BoxDecoration(borderRadius: BorderRadius.circular(10)), + // child: DottedBorder( + // borderType: BorderType.RRect, + // radius: Radius.circular(10), + // child: Container( + // alignment: Alignment.center, + // child: Text("Upload \n Photo"), + // )), + // ), + // ), + , + Row( + children: [ + if (state.hasError) + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4), + child: Text(state.errorText!) + .color(context.color.error) + .size(context.font.small), + ), + ], + ) + ], + ); + }); + } +} + +FileSize formatFileSize(int fileSizeInBytes) { + const int KB = 1024; + const int MB = 1024 * KB; + const int GB = 1024 * MB; + return FileSize( + bytes: fileSizeInBytes, + mb: fileSizeInBytes / MB, + gb: fileSizeInBytes / GB, + kb: fileSizeInBytes / KB); +} diff --git a/lib/Ui/screens/widgets/all_gallary_image.dart b/lib/Ui/screens/widgets/all_gallary_image.dart new file mode 100644 index 0000000..8f1b040 --- /dev/null +++ b/lib/Ui/screens/widgets/all_gallary_image.dart @@ -0,0 +1,71 @@ +import 'package:flutter/material.dart'; + +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; +import 'video_view_screen.dart'; + +class AllGallaryImages extends StatelessWidget { + final List images; + final String? youtubeThumbnail; + const AllGallaryImages( + {super.key, required this.images, this.youtubeThumbnail}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.backgroundColor, + appBar: UiUtils.buildAppBar( + context, + showBackButton: true, + ), + body: GridView.builder( + itemCount: images.length, + padding: const EdgeInsets.all(16), + gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, crossAxisSpacing: 5, mainAxisSpacing: 5), + itemBuilder: (context, index) { + return ClipRRect( + borderRadius: BorderRadius.circular(18), + child: GestureDetector( + onTap: () { + if (images[index].isVideo == true) { + Navigator.push(context, MaterialPageRoute( + builder: (context) { + return VideoViewScreen(videoUrl: images[index].image); + }, + )); + } else { + var stringImages = images.map((e) => e.imageUrl).toList(); + UiUtils.imageGallaryView( + context, + images: stringImages, + initalIndex: index, + then: () {}, + ); + } + }, + child: SizedBox( + width: 76.rw(context), + height: 76.rh(context), + child: images[index].isVideo == true + ? Stack( + fit: StackFit.expand, + children: [ + UiUtils.getImage(youtubeThumbnail!, + fit: BoxFit.cover), + const Icon( + Icons.play_arrow, + size: 28, + ) + ], + ) + : UiUtils.getImage(images[index].imageUrl ?? "", + fit: BoxFit.cover), + ), + )); + }, + ), + ); + } +} diff --git a/lib/Ui/screens/widgets/blurred_dialoge_box.dart b/lib/Ui/screens/widgets/blurred_dialoge_box.dart new file mode 100644 index 0000000..79cb01b --- /dev/null +++ b/lib/Ui/screens/widgets/blurred_dialoge_box.dart @@ -0,0 +1,449 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/responsiveSize.dart'; +import '../../../utils/ui_utils.dart'; + +mixin BlurDialoge {} + +///This dialoge box will blur background of screen +///This is normaly a screen which blurs its background we don't show builtin dialog box here instead we push to new route and show container in middle of screen +class BlurredDialogBox extends StatelessWidget implements BlurDialoge { + final String? cancelButtonName; + final String? acceptButtonName; + final VoidCallback? onCancel; + final String? svgImagePath; + final Color? svgImageColor; + final Future Function()? onAccept; + final String title; + final Widget content; + final Color? cancelButtonColor; + final Color? cancelTextColor; + final Color? acceptButtonColor; + final Color? acceptTextColor; + final bool? backAllowedButton; + final bool? showCancleButton; + final bool? barrierDismissable; + final bool? isAcceptContainesPush; + const BlurredDialogBox({ + super.key, + this.cancelButtonName, + this.acceptButtonName, + this.onCancel, + this.onAccept, + required this.title, + required this.content, + this.cancelButtonColor, + this.cancelTextColor, + this.acceptButtonColor, + this.acceptTextColor, + this.backAllowedButton, + this.showCancleButton, + this.svgImagePath, + this.svgImageColor, + this.barrierDismissable, + this.isAcceptContainesPush, + }); + + @override + Widget build(BuildContext context) { + ///This backAllowedButton will help us to prevent back presses from sensitive dialoges + return AnnotatedRegion( + value: SystemUiOverlayStyle( + systemNavigationBarDividerColor: Colors.transparent, + statusBarColor: Colors.black.withOpacity(0)), + child: Stack( + children: [ + //Make dialoge box's background lighter black + GestureDetector( + onTap: () { + if (barrierDismissable ?? false) { + Navigator.pop(context); + } + }, + child: Container( + color: Colors.black.withOpacity(0.14), + ), + ), + WillPopScope( + onWillPop: () async { + if (backAllowedButton == false) { + return false; + } + return true; + }, + child: LayoutBuilder(builder: (context, constraints) { + return AlertDialog( + backgroundColor: context.color.secondaryColor ?? + makeColorDark( + context.color.primaryColor, + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(15)), + title: Column( + children: [ + if (svgImagePath != null) ...[ + CircleAvatar( + radius: 186 / 2, + backgroundColor: + context.color.tertiaryColor.withOpacity(0.1), + child: SizedBox( + // width: 87 / 2, + // height: 87 / 2, + child: UiUtils.getSvg( + svgImagePath!, + color: svgImageColor, + )), + ), + const SizedBox( + height: 20, + ), + ], + Text(title.firstUpperCase(), textAlign: TextAlign.center), + ], + ), + content: content, + actionsOverflowAlignment: OverflowBarAlignment.center, + actionsAlignment: MainAxisAlignment.center, + actions: [ + if (showCancleButton ?? true) ...[ + button( + context, + constraints: constraints, + buttonColor: + cancelButtonColor ?? context.color.primaryColor, + buttonName: cancelButtonName ?? + UiUtils.translate(context, "cancelBtnLbl"), + textColor: cancelTextColor ?? context.color.textColorDark, + onTap: () { + onCancel?.call(); + Navigator.pop(context, false); + }, + ), + + // const Spacer(), + ], + Builder(builder: (context) { + if (showCancleButton == false) { + return Center( + child: SizedBox( + width: context.screenWidth / 2, + child: button( + context, + constraints: constraints, + buttonColor: acceptButtonColor ?? + context.color.tertiaryColor, + buttonName: acceptButtonName ?? + UiUtils.translate(context, "ok"), + textColor: + acceptTextColor ?? context.color.textColorDark, + onTap: () async { + await onAccept?.call(); + + if (isAcceptContainesPush == false || + isAcceptContainesPush == null) { + Future.delayed( + Duration.zero, + () { + Navigator.pop(context, true); + }, + ); + } + }, + ), + ), + ); + } + return button( + context, + constraints: constraints, + buttonColor: + acceptButtonColor ?? context.color.tertiaryColor, + buttonName: + acceptButtonName ?? UiUtils.translate(context, "ok"), + textColor: acceptTextColor ?? + const Color.fromARGB(255, 255, 255, 255), + onTap: () async { + await onAccept?.call(); + if (isAcceptContainesPush == false || + isAcceptContainesPush == null) { + Future.delayed( + Duration.zero, + () { + Navigator.pop(context, true); + }, + ); + } + }, + ); + }), + ], + ); + }), + ), + ], + ), + ); + } + + Color makeColorDark(Color color) { + Color color0 = color; + + int red = color0.red - 10; + int green = color0.green - 10; + int blue = color0.blue - 10; + + return Color.fromARGB(color0.alpha, red.clamp(0, 255), green.clamp(0, 255), + blue.clamp(0, 255)); + } + + Widget button(BuildContext context, + {required BoxConstraints constraints, + required Color buttonColor, + required String buttonName, + required Color textColor, + required VoidCallback onTap}) { + return SizedBox( + width: (constraints.maxWidth / 3), + child: MaterialButton( + elevation: 0, + + height: 39.rh(context), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(15), + side: BorderSide(color: context.color.borderColor)), + color: buttonColor, + // minWidth: (constraints.maxWidth / 2) - 10, + + onPressed: onTap, + child: Text(buttonName).color(textColor), + ), + ); + } +} + +///This dialoge box will blur background of screen +///This is normaly a screen which blurs its background we don't show builtin dialog box here instead we push to new route and show container in middle of screen +class BlurredDialogBuilderBox extends StatelessWidget implements BlurDialoge { + final String? cancelButtonName; + final String? acceptButtonName; + final VoidCallback? onCancel; + final String? svgImagePath; + final Color? svgImageColor; + final Future Function()? onAccept; + final String title; + final Widget? Function(BuildContext context, BoxConstraints constrains) + contentBuilder; + final Color? cancelButtonColor; + final Color? cancelTextColor; + final Color? acceptButtonColor; + final Color? acceptTextColor; + final bool? backAllowedButton; + final bool? showCancleButton; + final bool? isAcceptContainesPush; + const BlurredDialogBuilderBox({ + super.key, + this.cancelButtonName, + this.acceptButtonName, + this.onCancel, + this.onAccept, + required this.title, + required this.contentBuilder, + this.cancelButtonColor, + this.cancelTextColor, + this.acceptButtonColor, + this.acceptTextColor, + this.backAllowedButton, + this.showCancleButton, + this.svgImagePath, + this.svgImageColor, + this.isAcceptContainesPush, + }); + + @override + Widget build(BuildContext context) { + ///This backAllowedButton will help us to prevent back presses from sensitive dialoges + return AnnotatedRegion( + value: SystemUiOverlayStyle( + systemNavigationBarDividerColor: Colors.transparent, + statusBarColor: Colors.black.withOpacity(0)), + child: Stack( + children: [ + //Make dialoge box's background lighter black + Container( + color: Colors.black.withOpacity(0.14), + ), + WillPopScope( + onWillPop: () async { + if (backAllowedButton == false) { + return false; + } + return true; + }, + child: LayoutBuilder(builder: (context, constraints) { + return AlertDialog( + backgroundColor: makeColorDark(context.color.primaryColor), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(15)), + title: Column( + children: [ + if (svgImagePath != null) ...[ + CircleAvatar( + radius: 98 / 2, + backgroundColor: + context.color.tertiaryColor.withOpacity(0.1), + child: SizedBox( + width: 87 / 2, + height: 87 / 2, + child: UiUtils.getSvg(svgImagePath!, + color: svgImageColor)), + ), + const SizedBox( + height: 20, + ), + ], + Text(title.firstUpperCase(), textAlign: TextAlign.center), + ], + ), + content: contentBuilder.call(context, constraints), + actionsOverflowAlignment: OverflowBarAlignment.center, + actionsAlignment: MainAxisAlignment.center, + actions: [ + if (showCancleButton ?? true) ...[ + button( + context, + constraints: constraints, + buttonColor: cancelButtonColor ?? + context.color.tertiaryColor.withOpacity(.10), + buttonName: cancelButtonName ?? + UiUtils.translate(context, "cancelBtnLbl"), + textColor: cancelTextColor ?? context.color.textColorDark, + onTap: () { + onCancel?.call(); + Navigator.pop(context, false); + }, + ), + + // const Spacer(), + ], + Builder(builder: (context) { + if (showCancleButton == false) { + return Center( + child: SizedBox( + width: context.screenWidth / 2, + child: button( + context, + constraints: constraints, + buttonColor: acceptButtonColor ?? + context.color.tertiaryColor, + buttonName: acceptButtonName ?? + UiUtils.translate(context, "ok"), + textColor: + acceptTextColor ?? context.color.textColorDark, + onTap: () async { + await onAccept?.call(); + + if (isAcceptContainesPush == false || + isAcceptContainesPush == null) { + Future.delayed( + Duration.zero, + () { + Navigator.pop(context, true); + }, + ); + } + }, + ), + ), + ); + } + return button( + context, + constraints: constraints, + buttonColor: + acceptButtonColor ?? context.color.tertiaryColor, + buttonName: + acceptButtonName ?? UiUtils.translate(context, "ok"), + textColor: acceptTextColor ?? + const Color.fromARGB(255, 255, 255, 255), + onTap: () async { + await onAccept?.call(); + if (isAcceptContainesPush == false || + isAcceptContainesPush == null) { + Future.delayed( + Duration.zero, + () { + Navigator.pop(context, true); + }, + ); + } + }, + ); + }), + ], + ); + }), + ), + ], + ), + ); + } + + Color makeColorDark(Color color) { + Color color0 = color; + + int red = color0.red - 10; + int green = color0.green - 10; + int blue = color0.blue - 10; + + return Color.fromARGB(color0.alpha, red.clamp(0, 255), green.clamp(0, 255), + blue.clamp(0, 255)); + } + + Widget button(BuildContext context, + {required BoxConstraints constraints, + required Color buttonColor, + required String buttonName, + required Color textColor, + required VoidCallback onTap}) { + return SizedBox( + width: (constraints.maxWidth / 3), + child: MaterialButton( + elevation: 0, + height: 39.rh(context), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)), + color: buttonColor, + // minWidth: (constraints.maxWidth / 2) - 10, + + onPressed: onTap, + child: Text(buttonName).color(textColor), + ), + ); + } +} + +class EmptyDialogBox extends StatelessWidget with BlurDialoge { + final Widget child; + final bool? barrierDismisable; + const EmptyDialogBox({Key? key, required this.child, this.barrierDismisable}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return SafeArea( + child: Stack( + children: [ + GestureDetector( + onTap: () { + if (barrierDismisable ?? true) Navigator.pop(context); + }, + child: Container( + color: Colors.black.withOpacity(0.3), + ), + ), + Center(child: child), + ], + )); + } +} diff --git a/lib/Ui/screens/widgets/custom_inkWell.dart b/lib/Ui/screens/widgets/custom_inkWell.dart new file mode 100644 index 0000000..a804be9 --- /dev/null +++ b/lib/Ui/screens/widgets/custom_inkWell.dart @@ -0,0 +1,38 @@ +import 'package:flutter/material.dart'; + +class CustomInkWell extends StatelessWidget { + final Color? color; + final Widget child; + final BorderRadius? borderRadius; + final BoxShape? shape; + final void Function() onTap; + const CustomInkWell( + {super.key, + this.color, + required this.child, + required this.onTap, + this.borderRadius, + this.shape}); + + @override + Widget build(BuildContext context) { + return Center( + child: Container( + clipBehavior: Clip.antiAlias, + // color: color, + decoration: BoxDecoration( + color: color, + borderRadius: borderRadius, + shape: shape ?? BoxShape.rectangle), + child: Material( + clipBehavior: Clip.antiAlias, + color: Colors.transparent, + child: InkWell( + onTap: onTap, + child: child, + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/widgets/custom_text_form_field.dart b/lib/Ui/screens/widgets/custom_text_form_field.dart new file mode 100644 index 0000000..e6ec89b --- /dev/null +++ b/lib/Ui/screens/widgets/custom_text_form_field.dart @@ -0,0 +1,118 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/validator.dart'; + +enum CustomTextFieldValidator { + nullCheck, + phoneNumber, + email, + password, + maxFifty, + link +} + +class CustomTextFormField extends StatelessWidget { + final String? hintText; + final TextEditingController? controller; + final int? minLine; + final int? maxLine; + final AutovalidateMode? autovalidate; + final bool? isReadOnly; + final List? formaters; + final CustomTextFieldValidator? validator; + final Color? fillColor; + final Function(dynamic value)? onChange; + final Widget? prefix; + final TextInputAction? action; + final TextInputType? keyboard; + final Widget? suffix; + final bool? dense; + const CustomTextFormField({ + Key? key, + this.hintText, + this.controller, + this.minLine, + this.maxLine, + this.formaters, + this.isReadOnly, + this.validator, + this.fillColor, + this.onChange, + this.prefix, + this.keyboard, + this.action, + this.suffix, + this.dense, + this.autovalidate, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return TextFormField( + controller: controller, + autovalidateMode: autovalidate, + inputFormatters: formaters, + textInputAction: action, + keyboardAppearance: Brightness.light, + readOnly: isReadOnly ?? false, + style: TextStyle(fontSize: context.font.large), + minLines: minLine ?? 1, + maxLines: maxLine ?? 1, + onChanged: onChange, + validator: (String? value) { + if (validator == CustomTextFieldValidator.nullCheck) { + return Validator.nullCheckValidator(value); + } + if (validator == CustomTextFieldValidator.link) { + if (value?.isNotEmpty ?? false) { + return Validator.validateUrl(value!); + } else { + return null; + } + } + if (validator == CustomTextFieldValidator.maxFifty) { + if ((value ??= "").length > 50) { + return "You can enter 50 letters max"; + } else { + return null; + } + } + if (validator == CustomTextFieldValidator.email) { + return Validator.validateEmail(value); + } + if (validator == CustomTextFieldValidator.phoneNumber) { + return Validator.validatePhoneNumber(value); + } + if (validator == CustomTextFieldValidator.password) { + return Validator.validatePassword(value); + } + return null; + }, + keyboardType: keyboard, + decoration: InputDecoration( + prefix: prefix, + isDense: dense, + suffixIcon: suffix, + hintText: hintText, + hintStyle: TextStyle( + color: context.color.textColorDark.withOpacity(0.7), + fontSize: context.font.large), + filled: true, + fillColor: fillColor ?? context.color.secondaryColor, + focusedBorder: OutlineInputBorder( + borderSide: + BorderSide(width: 1.5, color: context.color.tertiaryColor), + borderRadius: BorderRadius.circular(10)), + enabledBorder: OutlineInputBorder( + borderSide: + BorderSide(width: 1.5, color: context.color.borderColor), + borderRadius: BorderRadius.circular(10)), + border: OutlineInputBorder( + borderSide: + BorderSide(width: 1.5, color: context.color.borderColor), + borderRadius: BorderRadius.circular(10))), + ); + } +} diff --git a/lib/Ui/screens/widgets/full_screen_image_view.dart b/lib/Ui/screens/widgets/full_screen_image_view.dart new file mode 100644 index 0000000..7174e1f --- /dev/null +++ b/lib/Ui/screens/widgets/full_screen_image_view.dart @@ -0,0 +1,197 @@ +import 'dart:io'; + +import 'package:dio/dio.dart'; +import 'package:ebroker/app/app.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:open_filex/open_filex.dart'; +import 'package:path_provider/path_provider.dart'; + +import '../../../app/default_app_setting.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/ui_utils.dart'; + +class FullScreenImageView extends StatefulWidget { + final ImageProvider provider; + final bool? showDownloadButton; + final VoidCallback? onTapDownload; + const FullScreenImageView({ + super.key, + required this.provider, + this.showDownloadButton, + this.onTapDownload, + }); + + @override + State createState() => _FullScreenImageViewState(); +} + +class _FullScreenImageViewState extends State { + String getExtentionOfFile() { + if (widget.provider is NetworkImage) { + return (widget.provider as NetworkImage) + .getURL() + .toString() + .split(".") + .last; + } + return ""; + } + + String getFileName() { + if (widget.provider is NetworkImage) { + return (widget.provider as NetworkImage) + .getURL() + .toString() + .split(".") + .last; + } + return (widget.provider as NetworkImage) + .getURL() + .toString() + .split("/") + .last; + + return ""; + } + + Future downloadFile() async { + try { + // if (!(await Permission.storage.isGranted)) { + // log("PERMISSION ISS ${await Permission.storage.status}"); + // HelperUtils.showSnackBarMessage( + // context, "Please give storage permission"); + // + // return; + // } + + String? downloadPath = await getDownloadPath(); + if (widget.provider is! NetworkImage) { + return; + } + + await Dio().download( + (widget.provider as NetworkImage).getURL().toString(), + "${downloadPath!}/${getFileName()}", + onReceiveProgress: (int count, int total) async { + var persontage = (count) / total; + + if (persontage == 1) { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "fileSavedIn"), + type: MessageType.success); + + await OpenFilex.open("$downloadPath/${getFileName()}"); + } + setState(() {}); + }, + ); + } catch (e) { + print("Download Error is: $e"); + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "errorFileSave"), + type: MessageType.success); + } + } + + Future getDownloadPath() async { + Directory? directory; + try { + if (Platform.isIOS) { + directory = await getApplicationDocumentsDirectory(); + } else { + directory = Directory('/storage/emulated/0/Download'); + // Put file in global download folder, if for an unknown reason it didn't exist, we fallback + // ignore: avoid_slow_async_io + if (!await directory.exists()) { + directory = await getExternalStorageDirectory(); + } + } + } catch (err) { + if (kDebugMode) { + HelperUtils.showSnackBarMessage( + context, UiUtils.translate(context, "fileNotSaved"), + type: MessageType.success); + } + } + return directory?.path; + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark); + + Navigator.pop(context); + }, + child: SafeArea( + child: Scaffold( + extendBodyBehindAppBar: true, + appBar: AppBar( + elevation: 0, + actions: [ + if (widget.showDownloadButton == true && + widget.provider is NetworkImage) + IconButton( + onPressed: () { + downloadFile(); + widget.onTapDownload?.call(); + }, + icon: Icon(Icons.download)), + const SizedBox( + width: 10, + ) + ], + backgroundColor: Colors.transparent, + iconTheme: IconThemeData(color: context.color.tertiaryColor), + ), + backgroundColor: const Color.fromARGB(17, 0, 0, 0), + body: InteractiveViewer( + maxScale: 4, + child: Center( + child: AspectRatio( + aspectRatio: 1 / 1, + child: GestureDetector( + onTap: () {}, + child: Image( + image: widget.provider, + errorBuilder: (context, error, stackTrace) { + return Container( + width: 100, + height: 100, + decoration: BoxDecoration( + color: + context.color.tertiaryColor.withOpacity(0.2), + borderRadius: BorderRadius.circular(10)), + child: LoadAppSettings().svg( + appSettings.placeholderLogo!, + color: context.color.tertiaryColor)); + }, + loadingBuilder: (context, child, loadingProgress) { + if (loadingProgress == null) return child; + + return FittedBox( + fit: BoxFit.none, + child: SizedBox( + width: 50, height: 50, child: UiUtils.progress()), + ); + }, + ), + ), + ), + ), + ), + ), + ), + ); + } +} + +extension S on NetworkImage { + String getURL() { + return this.url; + } +} diff --git a/lib/Ui/screens/widgets/gallery_view.dart b/lib/Ui/screens/widgets/gallery_view.dart new file mode 100644 index 0000000..0c277d5 --- /dev/null +++ b/lib/Ui/screens/widgets/gallery_view.dart @@ -0,0 +1,80 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; + +import '../../../utils/AdMob/interstitialAdManager.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/ui_utils.dart'; + +class GalleryViewWidget extends StatefulWidget { + final List images; + final int initalIndex; + const GalleryViewWidget({ + super.key, + required this.images, + required this.initalIndex, + }); + + @override + State createState() => _GalleryViewWidgetState(); +} + +class _GalleryViewWidgetState extends State { + List images = []; + late PageController controller = + PageController(initialPage: widget.initalIndex); + late int page = widget.initalIndex; + InterstitialAdManager admanager = InterstitialAdManager(); + + @override + void initState() { + images = List.from(widget.images); + admanager.load(); + super.initState(); + } + + @override + void dispose() { + controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return SafeArea( + child: Scaffold( + extendBodyBehindAppBar: true, + appBar: AppBar( + elevation: 0, + backgroundColor: Colors.transparent, + iconTheme: IconThemeData(color: context.color.tertiaryColor), + ), + backgroundColor: const Color.fromARGB(17, 0, 0, 0), + body: ScrollConfiguration( + behavior: RemoveGlow(), + child: PageView.builder( + controller: controller, + onPageChanged: (value) async { + page = value; + if (page % 2 == 0) { + await admanager.show(); + } + setState(() {}); + }, + itemBuilder: (context, index) { + return InteractiveViewer( + // panEnabled: true, + scaleEnabled: true, + maxScale: 5, + child: CachedNetworkImage( + imageUrl: images[index], + ), + ); + }, + itemCount: + (images..removeWhere((element) => (element == ""))).length, + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/widgets/gradient_image_shadow.dart b/lib/Ui/screens/widgets/gradient_image_shadow.dart new file mode 100644 index 0000000..e80510e --- /dev/null +++ b/lib/Ui/screens/widgets/gradient_image_shadow.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; +import 'package:palette_generator/palette_generator.dart'; + +class GradientedShadowImage extends StatefulWidget { + final String imageUrl; + + GradientedShadowImage({required this.imageUrl}); + + @override + _GradientedShadowImageState createState() => _GradientedShadowImageState(); +} + +class _GradientedShadowImageState extends State { + PaletteGenerator? _paletteGenerator; + + @override + void initState() { + super.initState(); + _loadPalette(); + } + + Future _loadPalette() async { + final imageProvider = NetworkImage(widget.imageUrl); + _paletteGenerator = await PaletteGenerator.fromImageProvider(imageProvider); + setState(() {}); + } + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: _paletteGenerator?.dominantColor?.color.withOpacity(0.4) ?? + Colors.transparent, + blurRadius: 8.0, + spreadRadius: 6.0, + ), + ], + gradient: LinearGradient( + colors: [ + _paletteGenerator?.dominantColor?.color ?? Colors.transparent, + Colors.transparent, + ], + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + ), + ), + child: Image.network(widget.imageUrl,width: 200,height: 200,), + ); + } +} diff --git a/lib/Ui/screens/widgets/image_cropper.dart b/lib/Ui/screens/widgets/image_cropper.dart new file mode 100644 index 0000000..33d6c1e --- /dev/null +++ b/lib/Ui/screens/widgets/image_cropper.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; +import 'package:image_cropper/image_cropper.dart'; + +import '../../../utils/Extensions/extensions.dart'; + +//This will open image crop SDK +class CropImage { + static BuildContext? _context; + + static void init(BuildContext context) { + _context = context; + } + + static Future? crop({required String filePath}) async { + if (_context == null) { + return null; + } + + CroppedFile? croppedFile = await ImageCropper().cropImage( + sourcePath: filePath, + aspectRatioPresets: [ + CropAspectRatioPreset.square, + ], + uiSettings: [ + AndroidUiSettings( + toolbarTitle: 'Cropper', + toolbarColor: _context!.color.tertiaryColor, + toolbarWidgetColor: Colors.white, + hideBottomControls: false, + activeControlsWidgetColor: _context!.color.tertiaryColor, + lockAspectRatio: true), + IOSUiSettings( + title: 'Cropper', + ), + WebUiSettings( + context: _context!, + ), + ], + ); + + return croppedFile; + } +} diff --git a/lib/Ui/screens/widgets/like_button_widget.dart b/lib/Ui/screens/widgets/like_button_widget.dart new file mode 100644 index 0000000..d69f9c2 --- /dev/null +++ b/lib/Ui/screens/widgets/like_button_widget.dart @@ -0,0 +1,128 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../data/cubits/Utility/like_properties.dart'; +import '../../../data/cubits/favorite/add_to_favorite_cubit.dart'; +import '../../../data/model/property_model.dart'; +import '../../../utils/AppIcon.dart'; +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/guestChecker.dart'; +import '../../../utils/ui_utils.dart'; + +//This like button is used in app for favorite feature, it is used in all propery so it is very important +class LikeButtonWidget extends StatefulWidget { + final PropertyModel property; + final Function(FavoriteType type)? onLikeChanged; + final Function(AddToFavoriteCubitState state)? onStateChange; + const LikeButtonWidget({ + super.key, + required this.property, + this.onStateChange, + this.onLikeChanged, + }); + + @override + State createState() => _LikeButtonWidgetState(); +} + +class _LikeButtonWidgetState extends State { + @override + void initState() { + //checking is property is already favorite , it will come in api + if (GuestChecker.value != true) { + if (widget.property.isFavourite == 1 && + context + .read() + .state + .liked + .contains(widget.property.id) == + false) { + if (!context + .read() + .getRemovedLikes()! + .contains(widget.property.id)) { + context.read().add(widget.property.id); + } + } + } + + super.initState(); + } + +//this is main like button method + Widget setFavorite(PropertyModel property, BuildContext context) { + return BlocConsumer( + listener: (BuildContext context, AddToFavoriteCubitState state) { + widget.onStateChange?.call(state); + if (state is AddToFavoriteCubitFailure) {} + if (state is AddToFavoriteCubitSuccess) { + //callback + widget.onLikeChanged?.call(state.favorite); + + /// if it is already added then we'll add remove , other wise we'll add it into local list + context.read().changeLike(state.id); + } + }, + builder: (BuildContext context, AddToFavoriteCubitState addState) { + return GestureDetector( + onTap: () { + GuestChecker.check(onNotGuest: () { + ///checking if added then remove or else add it + FavoriteType favoriteType; + + bool contains = context + .read() + .state + .liked + .contains(property.id!); + + if (contains == true || property.isFavourite == 1) { + favoriteType = FavoriteType.remove; + } else { + favoriteType = FavoriteType.add; + } + context.read().setFavroite( + propertyId: property.id!, + type: favoriteType, + ); + }); + }, + child: Container( + width: 32, + height: 32, + decoration: BoxDecoration( + color: context.color.primaryColor, + shape: BoxShape.circle, + boxShadow: const [ + BoxShadow( + color: Color.fromARGB(33, 0, 0, 0), + offset: Offset(0, 2), + blurRadius: 15, + spreadRadius: 0) + ], + ), + child: BlocBuilder( + builder: (context, state) { + return Center( + child: (addState is AddToFavoriteCubitInProgress) + ? UiUtils.progress(width: 20, height: 20) + : state.liked.contains(widget.property.id) + ? UiUtils.getSvg( + AppIcons.like_fill, + color: context.color.tertiaryColor, + ) + : UiUtils.getSvg(AppIcons.like, + color: context.color.tertiaryColor)); + }, + ), + ), + ); + }, + ); + } + + @override + Widget build(BuildContext context) { + return setFavorite(widget.property, context); + } +} diff --git a/lib/Ui/screens/widgets/maintenance_mode.dart b/lib/Ui/screens/widgets/maintenance_mode.dart new file mode 100644 index 0000000..4f1f992 --- /dev/null +++ b/lib/Ui/screens/widgets/maintenance_mode.dart @@ -0,0 +1,39 @@ +import 'package:flutter/material.dart'; +import 'package:lottie/lottie.dart'; + +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/constant.dart'; +import '../../../utils/ui_utils.dart'; +import 'AnimatedRoutes/blur_page_route.dart'; + +class MaintenanceMode extends StatelessWidget { + const MaintenanceMode({super.key}); + static Route route(RouteSettings settings) { + return BlurredRouter( + builder: (context) { + return const MaintenanceMode(); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: context.color.primaryColor, + body: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Lottie.asset( + "assets/lottie/${Constant.maintenanceModeLottieFile}", + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Text(UiUtils.translate(context, "maintenanceModeMessage"), + textAlign: TextAlign.center) + .color(context.color.textColorDark), + ) + ], + ), + ); + } +} diff --git a/lib/Ui/screens/widgets/my_maps.dart b/lib/Ui/screens/widgets/my_maps.dart new file mode 100644 index 0000000..d114392 --- /dev/null +++ b/lib/Ui/screens/widgets/my_maps.dart @@ -0,0 +1,55 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_map/flutter_map.dart'; +import 'package:latlong2/latlong.dart'; + +class MyMaps extends StatelessWidget { + final String latitudeString; + final String longitudeString; + const MyMaps({ + Key? key, + required this.latitudeString, + required this.longitudeString, + }) : super(key: key); + @override + Widget build(BuildContext context) { + final LatLng location = LatLng( + double.parse(latitudeString), + double.parse(longitudeString) + ); + return SafeArea( + child: Scaffold( + body: FlutterMap( + options: MapOptions( + center: location, + zoom: 17.0 + ), + children: [ + TileLayer( + urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', + userAgentPackageName: 'com.rumahjo.vds', + ), + MarkerLayer( + markers: [ + Marker( + width: 45.0, + height: 45.0, + point: location, + builder: (ctx) => + Container( + child: const Icon( + Icons.location_on, + size: 30.0, + color: Colors.red, + ), + ), + ) + ] + ) + ] + ) + ) + ); + } +} + + diff --git a/lib/Ui/screens/widgets/panaroma_image_view.dart b/lib/Ui/screens/widgets/panaroma_image_view.dart new file mode 100644 index 0000000..bf87008 --- /dev/null +++ b/lib/Ui/screens/widgets/panaroma_image_view.dart @@ -0,0 +1,38 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:panorama/panorama.dart'; + +import '../../../utils/Extensions/extensions.dart'; + +class PanaromaImageScreen extends StatelessWidget { + final String imageUrl; + final bool? isFileImage; + const PanaromaImageScreen( + {super.key, required this.imageUrl, this.isFileImage}); + + @override + Widget build(BuildContext context) { + return Scaffold( + extendBodyBehindAppBar: true, + appBar: AppBar( + elevation: 0, + backgroundColor: Colors.transparent, + iconTheme: IconThemeData(color: context.color.tertiaryColor), + ), + backgroundColor: Colors.transparent, + body: SafeArea( + child: Panorama( + sensitivity: 2, + sensorControl: SensorControl.None, + latitude: 4, + child: (isFileImage ?? false) + ? Image.file(File(imageUrl)) + : Image.network( + imageUrl, + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/widgets/promoted_widget.dart b/lib/Ui/screens/widgets/promoted_widget.dart new file mode 100644 index 0000000..5b09b56 --- /dev/null +++ b/lib/Ui/screens/widgets/promoted_widget.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; + +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/ui_utils.dart'; + +enum PromoteCardType { text, icon } + +class PromotedCard extends StatelessWidget { + final PromoteCardType type; + final Color? color; + const PromotedCard({super.key, required this.type, this.color}); + + @override + Widget build(BuildContext context) { + if (type == PromoteCardType.icon) { + return Container( + // width: 64, + // height: 24, + decoration: BoxDecoration( + color: color ?? context.color.tertiaryColor, + borderRadius: BorderRadius.circular(4)), + child: Padding( + padding: const EdgeInsets.all(3.0), + child: Center( + child: Text(UiUtils.translate(context, "featured")) + .color( + context.color.primaryColor, + ) + .bold() + .size(context.font.smaller), + ), + ), + ); + } + + return Container( + width: 64, + height: 24, + decoration: BoxDecoration( + color: context.color.tertiaryColor, + borderRadius: BorderRadius.circular(4)), + child: Center( + child: Text(UiUtils.translate(context, "featured")) + .color( + context.color.primaryColor, + ) + .bold() + .size(context.font.smaller), + ), + ); + } +} diff --git a/lib/Ui/screens/widgets/read_more_text.dart b/lib/Ui/screens/widgets/read_more_text.dart new file mode 100644 index 0000000..9e6b0df --- /dev/null +++ b/lib/Ui/screens/widgets/read_more_text.dart @@ -0,0 +1,85 @@ +import 'package:flutter/material.dart'; + +import '../../../utils/ui_utils.dart'; + +class ReadMoreText extends StatefulWidget { + final String text; + final int? maxVisibleCharectors; + final TextStyle? style; + final TextStyle? readMoreButtonStyle; + const ReadMoreText( + {super.key, + required this.text, + this.maxVisibleCharectors, + this.style, + this.readMoreButtonStyle}); + + @override + State createState() => _ReadMoreTextState(); +} + +class _ReadMoreTextState extends State { + bool showingFullText = false; + + buildReadMore(String text) { + final textPainter = TextPainter( + text: TextSpan(text: text, style: DefaultTextStyle.of(context).style), + maxLines: null, + textDirection: TextDirection.ltr, + )..layout(maxWidth: MediaQuery.of(context).size.width); + + final numLines = textPainter.computeLineMetrics().length; + + if (numLines > 5) { + return Wrap( + children: [ + Text( + showingFullText ? text : _truncateText(text), + style: widget.style, + ), + TextButton( + style: const ButtonStyle( + padding: MaterialStatePropertyAll(EdgeInsets.zero), + ), + onPressed: () { + setState(() { + showingFullText = !showingFullText; + }); + }, + child: Text( + showingFullText + ? UiUtils.translate(context, "readLessLbl") + : UiUtils.translate(context, "readMoreLbl"), + style: widget.readMoreButtonStyle, + ), + ), + ], + ); + } + + return Text(text); + } + + String _truncateText(String text) { + final textPainter = TextPainter( + text: TextSpan(text: text, style: DefaultTextStyle.of(context).style), + maxLines: 4, + textDirection: TextDirection.ltr, + )..layout(maxWidth: MediaQuery.of(context).size.width); + + final endIndex = textPainter + .getPositionForOffset( + Offset(MediaQuery.of(context).size.width, double.infinity)) + .offset; + + final truncatedText = text.substring(0, endIndex).trim(); + return truncatedText.length < text.length + ? "$truncatedText..." + : truncatedText; + } + + @override + Widget build(BuildContext context) { + return buildReadMore(widget.text); + } +} diff --git a/lib/Ui/screens/widgets/shimmerLoadingContainer.dart b/lib/Ui/screens/widgets/shimmerLoadingContainer.dart new file mode 100644 index 0000000..98f80f9 --- /dev/null +++ b/lib/Ui/screens/widgets/shimmerLoadingContainer.dart @@ -0,0 +1,32 @@ +// ignore_for_file: file_names + +import 'package:flutter/material.dart'; +import 'package:shimmer/shimmer.dart'; + +import '../../Theme/theme.dart'; + +class CustomShimmer extends StatelessWidget { + final double? height; + final double? width; + final double? borderRadius; + final EdgeInsetsGeometry? margin; + const CustomShimmer( + {Key? key, this.height, this.width, this.borderRadius, this.margin}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return Shimmer.fromColors( + baseColor: Theme.of(context).colorScheme.shimmerBaseColor, + highlightColor: Theme.of(context).colorScheme.shimmerHighlightColor, + child: Container( + width: width, + margin: margin, + height: height ?? 10, + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.shimmerContentColor, + borderRadius: BorderRadius.circular(borderRadius ?? 10)), + ), + ); + } +} diff --git a/lib/Ui/screens/widgets/sizedBoxes.dart b/lib/Ui/screens/widgets/sizedBoxes.dart new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lib/Ui/screens/widgets/sizedBoxes.dart @@ -0,0 +1 @@ + diff --git a/lib/Ui/screens/widgets/video_view_screen.dart b/lib/Ui/screens/widgets/video_view_screen.dart new file mode 100644 index 0000000..2ad3679 --- /dev/null +++ b/lib/Ui/screens/widgets/video_view_screen.dart @@ -0,0 +1,50 @@ +import 'package:flick_video_player/flick_video_player.dart'; +import 'package:flutter/material.dart'; + +import '../../../utils/Extensions/extensions.dart'; +import '../../../utils/helper_utils.dart'; +import 'youtube_player_widget.dart'; + +class VideoViewScreen extends StatelessWidget { + final String videoUrl; + final FlickManager? flickManager; + const VideoViewScreen({ + Key? key, + required this.videoUrl, + this.flickManager, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return SafeArea( + child: Scaffold( + extendBodyBehindAppBar: true, + appBar: AppBar( + backgroundColor: Colors.transparent, + elevation: 0, + automaticallyImplyLeading: true, + iconTheme: IconThemeData(color: context.color.tertiaryColor), + ), + backgroundColor: context.color.backgroundColor, + body: Center( + child: HelperUtils.checkVideoType( + videoUrl, + onYoutubeVideo: () { + return YoutubePlayerWidget( + videoUrl: videoUrl, + onLandscape: () {}, + onPortrate: () {}, + ); + }, + onOtherVideo: () { + if (flickManager != null) { + return FlickVideoPlayer(flickManager: flickManager!); + } + return Container(); + }, + ), + ), + ), + ); + } +} diff --git a/lib/Ui/screens/widgets/youtube_player_widget.dart b/lib/Ui/screens/widgets/youtube_player_widget.dart new file mode 100644 index 0000000..af67ecf --- /dev/null +++ b/lib/Ui/screens/widgets/youtube_player_widget.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; +import 'package:youtube_player_flutter/youtube_player_flutter.dart'; + +class YoutubePlayerWidget extends StatefulWidget { + final VoidCallback onLandscape; + final VoidCallback onPortrate; + + final String videoUrl; + const YoutubePlayerWidget( + {super.key, + required this.videoUrl, + required this.onLandscape, + required this.onPortrate}); + + @override + State createState() => _YoutubePlayerWidgetState(); +} + +class _YoutubePlayerWidgetState extends State { + late YoutubePlayerController controller; + + getVideoId() { + return YoutubePlayer.convertUrlToId(widget.videoUrl)!; + } + + @override + void initState() { + controller = YoutubePlayerController( + initialVideoId: getVideoId(), + flags: const YoutubePlayerFlags( + showLiveFullscreenButton: true, + autoPlay: false, + ), + ); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return SizedBox( + child: YoutubePlayerBuilder( + onEnterFullScreen: () { + widget.onLandscape.call(); + }, + onExitFullScreen: () { + widget.onPortrate.call(); + }, + player: YoutubePlayer( + controller: controller, + ), + builder: (context, child) { + return child; + }, + )); + } +} diff --git a/lib/app/analytics_routes.dart b/lib/app/analytics_routes.dart new file mode 100644 index 0000000..bcf5d42 --- /dev/null +++ b/lib/app/analytics_routes.dart @@ -0,0 +1,18 @@ +//// This routes are not used for navigation in the app . instead these are used for track navigation in better naming. +//// Do not change these name , because this can couse analytics data corrupt +class AnalyticsRoutes { + static const String home = "Home Screen"; + static const String chatList = "Chat List Screen"; + static const String message = "Message Screen"; + static const String properties = "Properties Screen"; + static const String propertyDetailsScreen = "Property Details Screen"; + static const String searchScreen = "Search Screen"; + static const String propertyMapScreen = "Property Map Screen"; + static const String categoryPropertyList = "Category Property List"; + static const String editProfileScreen = "Edit Profile Screen"; + static const String articlesScreen = "Articles Screen"; + static const String favoriteScreen = "Favorite Screen"; + static const String subscriptionScreen = "Subscription Pacakge Screen"; + static const String myAdvertismentScreen = "My Advertisment Screen"; + static const String areaConverterScreen = "Area Converter Screen"; +} diff --git a/lib/app/app.dart b/lib/app/app.dart new file mode 100644 index 0000000..ce65665 --- /dev/null +++ b/lib/app/app.dart @@ -0,0 +1,224 @@ +import 'package:ebroker/Ui/screens/widgets/Erros/something_went_wrong.dart'; +import 'package:ebroker/data/cubits/project/fetch_projects.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:firebase_core/firebase_core.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:google_mobile_ads/google_mobile_ads.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; +import 'package:path_provider/path_provider.dart'; + +import '../Ui/screens/splash_screen.dart'; +import '../data/Repositories/personalized_feed_repository.dart'; +import '../data/cubits/Personalized/fetch_personalized_properties.dart'; +import '../data/model/Personalized/personalized_settings.dart'; +import '../data/model/app_settings_datamodel.dart'; +import '../firebase_options.dart'; +import '../main.dart'; +import '../utils/Network/apiCallTrigger.dart'; +import '../utils/api.dart'; +import '../utils/guestChecker.dart'; +import '../utils/ui_utils.dart'; +import 'default_app_setting.dart'; + +PersonalizedInterestSettings personalizedInterestSettings = + PersonalizedInterestSettings.empty(); +AppSettingsDataModel appSettings = fallbackSettingAppSettings; + +/// + +getAppSettings() async { + await LoadAppSettings().load(); +} + +Future getLanguage() async { + await getDefaultLanguage( + () {}, + ); +} + +void initApp() async { + ///Note: this file's code is very necessary and sensitive if you change it, this might affect whole app , So change it carefully. + ///This must be used do not remove this line + WidgetsFlutterBinding.ensureInitialized(); + MobileAds.instance.initialize(); + await HiveUtils.initBoxes(); + // await Isolate.spawn(getLanguage, languageSettingReceivePort.sendPort); + + Api.initInterceptors(); + + ///This is the widget to show uncaught runtime error in this custom widget so that user can know in that screen something is wrong instead of grey screen + SomethingWentWrong.asGlobalErrorBuilder(); + + if (Firebase.apps.isNotEmpty) { + await Firebase.initializeApp( + options: DefaultFirebaseOptions.currentPlatform, + ); + } else { + await Firebase.initializeApp(); + } + + FirebaseMessaging.onBackgroundMessage( + NotificationService.onBackgroundMessageHandler); + HydratedBloc.storage = await HydratedStorage.build( + storageDirectory: await getApplicationDocumentsDirectory(), + ); + + SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]) + .then((_) async { + SystemChrome.setSystemUIOverlayStyle( + const SystemUiOverlayStyle(statusBarColor: Colors.transparent)); + + runApp(const EntryPoint()); + }); +} + +class App extends StatefulWidget { + const App({super.key}); + @override + State createState() => _AppState(); +} + +class _AppState extends State { + @override + void initState() { + ///Here Fetching property report reasons + context.read().fetch(); + context.read().loadCurrentLanguage(); + AppTheme currentTheme = HiveUtils.getCurrentTheme(); + + ///Initialized notification services + LocalAwsomeNotification().init(context); + /////////////////////////////////////// + NotificationService.init(context); + + /// Initialized dynamic links for share properties feature + context.read().changeTheme(currentTheme); + + APICallTrigger.onTrigger( + () { + //THIS WILL be CALLED WHEN USER WILL LOGIN FROM ANONYMOUS USER. + context.read().emptyCubit(); + context.read().fetch(); + + loadInitialData(context, loadWithoutDelay: true); + }, + ); + + UiUtils.setContext(context); + super.initState(); + } + + @override + Widget build(BuildContext context) { + //Continuously watching theme change + AppTheme currentTheme = context.watch().state.appTheme; + return BlocListener( + listener: (context, state) { + context.read().setAPIKeys(); + }, + child: BlocBuilder( + builder: (context, languageState) { + return MaterialApp( + initialRoute: Routes + .splash, // App will start from here splash screen is first screen, + navigatorKey: Constant + .navigatorKey, //This navigator key is used for Navigate users through notification + title: Constant.appName, + debugShowCheckedModeBanner: false, + onGenerateRoute: Routes.onGenerateRouted, + theme: appThemeData[currentTheme], + builder: (context, child) { + TextDirection direction; + //here we are languages direction locally + if (languageState is LanguageLoader) { + if (Constant.totalRtlLanguages + .contains((languageState).languageCode)) { + direction = TextDirection.rtl; + } else { + direction = TextDirection.ltr; + } + } else { + direction = TextDirection.ltr; + } + return MediaQuery( + data: MediaQuery.of(context).copyWith( + textScaler: const TextScaler.linear(1.0), + // textScaleFactor: + // 1.0, //set text scale factor to 1 so that this will not resize app's text while user change their system settings text scale + ), + child: Directionality( + textDirection: + direction, //This will convert app direction according to language + child: child!, + ), + ); + }, + localizationsDelegates: const [ + AppLocalization.delegate, + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ], + locale: loadLocalLanguageIfFail(languageState), + ); + }, + ), + ); + } + + dynamic loadLocalLanguageIfFail(LanguageState state) { + if ((state is LanguageLoader)) { + return Locale(state.languageCode); + } else if (state is LanguageLoadFail) { + return const Locale("en"); + } + } +} + +void loadInitialData(BuildContext context, + {bool? loadWithoutDelay, bool? forceRefresh}) { + context.read().fetchProjects(); + context.read().fetchSlider(context, + loadWithoutDelay: loadWithoutDelay, forceRefresh: forceRefresh); + context.read().fetchCategories( + loadWithoutDelay: loadWithoutDelay, forceRefresh: forceRefresh); + context + .read() + .fetch(loadWithoutDelay: loadWithoutDelay, forceRefresh: forceRefresh); + context + .read() + .fetch(loadWithoutDelay: loadWithoutDelay, forceRefresh: forceRefresh); + + context + .read() + .fetch(loadWithoutDelay: loadWithoutDelay, forceRefresh: forceRefresh); + context + .read() + .fetch(loadWithoutDelay: loadWithoutDelay, forceRefresh: forceRefresh); + context.read().fetchCityCategory( + loadWithoutDelay: loadWithoutDelay, forceRefresh: forceRefresh); + context + .read() + .fetch(loadWithoutDelay: loadWithoutDelay, forceRefresh: forceRefresh); + context + .read() + .fetch(loadWithoutDelay: loadWithoutDelay, forceRefresh: forceRefresh); + context.read().setContext(context); + context.read().fetch(); + + // if (widget.from != "login") { + PersonalizedFeedRepository().getUserPersonalizedSettings().then((value) { + personalizedInterestSettings = value; + }); + GuestChecker.listen().addListener(() { + if (GuestChecker.value == false) { + PersonalizedFeedRepository().getUserPersonalizedSettings().then((value) { + personalizedInterestSettings = value; + }); + } + }); + +// // } +} diff --git a/lib/app/app_localization.dart b/lib/app/app_localization.dart new file mode 100644 index 0000000..7e43760 --- /dev/null +++ b/lib/app/app_localization.dart @@ -0,0 +1,75 @@ +//For localization of app + +import 'dart:convert'; + +import 'package:ebroker/utils/hive_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class AppLocalization { + final Locale locale; + + //it will hold key of text and it's values in given language + late Map _localizedValues; + + AppLocalization(this.locale); + + //to access app-localization instance any where in app using context + static AppLocalization? of(BuildContext context) { + return Localizations.of(context, AppLocalization); + } + + //to load json(language) from assets + Future loadJson() async { + // String languageJsonName = locale.countryCode == null + // ? locale.languageCode + // : "${locale.languageCode}-${locale.countryCode}"; + String jsonStringValues = + await rootBundle.loadString('assets/languages/template.json'); + // value from root-bundle will be encoded string + Map mappedJson = {}; + + if (HiveUtils.getLanguage() == null || + HiveUtils.getLanguage()['data'] == null) { + mappedJson = json.decode(jsonStringValues); + } else { + mappedJson = Map.from(HiveUtils.getLanguage()['data']); + } + _localizedValues = + mappedJson.map((key, value) => MapEntry(key, value.toString())); + } + + //to get translated value of given title/key + String? getTranslatedValues(String? key) { + return _localizedValues[key!]; + } + + //need to declare custom delegate + static const LocalizationsDelegate delegate = + _AppLocalizationDelegate(); +} + +//Custom app delegate +class _AppLocalizationDelegate extends LocalizationsDelegate { + const _AppLocalizationDelegate(); + + //providing all supported languages + @override + bool isSupported(Locale locale) { + // + return true; + } + + //load languageCode.json files + @override + Future load(Locale locale) async { + AppLocalization localization = AppLocalization(locale); + await localization.loadJson(); + return localization; + } + + @override + bool shouldReload(LocalizationsDelegate old) { + return true; + } +} diff --git a/lib/app/app_theme.dart b/lib/app/app_theme.dart new file mode 100644 index 0000000..8f2e5c8 --- /dev/null +++ b/lib/app/app_theme.dart @@ -0,0 +1,49 @@ +// ignore_for_file: deprecated_member_use + +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; + +enum AppTheme { dark, light } + +final appThemeData = { + AppTheme.light: ThemeData( + useMaterial3: false, + // scaffoldBackgroundColor: pageBackgroundColor, + brightness: Brightness.light, + //textTheme + fontFamily: "Manrope", + textSelectionTheme: const TextSelectionThemeData( + selectionColor: Colors.green, + cursorColor: Colors.green, + selectionHandleColor: Colors.green, + ), + errorColor: errorMessageColor, + // textSelectionTheme: + // const TextSelectionThemeData(selectionHandleColor: teritoryColor_), + switchTheme: SwitchThemeData( + thumbColor: const MaterialStatePropertyAll(tertiaryColor_), + trackColor: MaterialStateProperty.resolveWith((states) { + if (states.contains(MaterialState.selected)) { + return tertiaryColor_.withOpacity(0.3); + } + return primaryColorDark; + }), + ), + ), + AppTheme.dark: ThemeData( + brightness: Brightness.dark, + useMaterial3: false, + fontFamily: "Manrope", + errorColor: errorMessageColor.withOpacity(0.7), + textSelectionTheme: + const TextSelectionThemeData(selectionHandleColor: tertiaryColorDark), + switchTheme: SwitchThemeData( + thumbColor: const MaterialStatePropertyAll(tertiaryColor_), + trackColor: MaterialStateProperty.resolveWith((states) { + if (states.contains(MaterialState.selected)) { + return tertiaryColor_.withOpacity(0.3); + } + return primaryColor_.withOpacity(0.2); + })), + ) +}; diff --git a/lib/app/default_app_setting.dart b/lib/app/default_app_setting.dart new file mode 100644 index 0000000..6c0e28d --- /dev/null +++ b/lib/app/default_app_setting.dart @@ -0,0 +1,102 @@ +import 'dart:ui'; + +import 'package:ebroker/data/model/app_settings_datamodel.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/AppIcon.dart'; +import 'package:ebroker/utils/hive_keys.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hive/hive.dart'; + +import '../Ui/Theme/theme.dart'; +import '../utils/api.dart'; +import '../utils/network_to_localsvg.dart'; + +AppSettingsDataModel fallbackSettingAppSettings = AppSettingsDataModel( + appHomeScreen: AppIcons.fallbackHomeLogo, + splashLogo: AppIcons.fallbackSplashLogo, + placeholderLogo: AppIcons.fallbackPlaceholderLogo, + lightPrimary: primaryColor_, + lightSecondary: secondaryColor_, + lightTertiary: tertiaryColor_, + darkPrimary: primaryColorDark, + darkSecondary: secondaryColorDark, + darkTertiary: tertiaryColorDark, +); + +///DO not touch this +class LoadAppSettings { + Future load() async { + try { + try { + await HiveUtils.initBoxes(); + Map response = + await Api.get(url: Api.getAppSettings, queryParameters: { + if (HiveUtils.getUserId() != null) "user_id": HiveUtils.getUserId() + }); + + appSettings = AppSettingsDataModel.fromJson(response['data']); + HiveUtils.setAppThemeSetting(response['data']); + + ///Set other icons from here which will come from server + /// + appSettings.splashLogo = + await loadIconIfChange(appSettings.splashLogo!); + appSettings.appHomeScreen = + await loadIconIfChange(appSettings.appHomeScreen!); + appSettings.placeholderLogo = + await loadIconIfChange(appSettings.placeholderLogo!); + } catch (e) { + appSettings = + AppSettingsDataModel.fromJson(HiveUtils.getAppThemeSettings()); + appSettings.splashLogo = + await loadIconIfChange(appSettings.splashLogo!); + appSettings.appHomeScreen = + await loadIconIfChange(appSettings.appHomeScreen!); + appSettings.placeholderLogo = + await loadIconIfChange(appSettings.placeholderLogo!); + } + } catch (ee) { + print("Issue in load default setting $ee"); + } + } + + Future loadIconIfChange(String svgURL) async { + try { + Box box = Hive.box(HiveKeys.svgBox); + bool isAvailable = box.containsKey(svgURL); + if (isAvailable) { + return box.get(svgURL) as String; + } else { + String? localSVG = await NetworkToLocalSvg().convert(svgURL); + await box.put(svgURL, localSVG); + + return await Future.value(localSVG); + } + } catch (e) { + rethrow; + } + } + + SvgPicture svg( + String svg, { + Color? color, + double? width, + double? height, + }) { + if (svg.startsWith("assets/svg/")) { + return SvgPicture.asset( + svg, + color: color, + width: width, + height: height, + ); + } else { + return SvgPicture.string( + svg, + color: color, + width: width, + height: height, + ); + } + } +} diff --git a/lib/app/register_cubits.dart b/lib/app/register_cubits.dart new file mode 100644 index 0000000..462fac2 --- /dev/null +++ b/lib/app/register_cubits.dart @@ -0,0 +1,66 @@ +import 'package:ebroker/data/cubits/Personalized/add_update_personalized_interest.dart'; +import 'package:ebroker/data/cubits/Personalized/fetch_personalized_properties.dart'; +import 'package:ebroker/data/cubits/project/fetchMyProjectsListCubit.dart'; +import 'package:ebroker/data/cubits/project/fetch_projects.dart'; +import 'package:ebroker/data/cubits/property/fetch_city_property_list.dart'; +import 'package:nested/nested.dart'; + +import '../exports/main_export.dart'; + +class RegisterCubits { + List register() { + return [ + BlocProvider(create: (context) => AuthCubit()), + BlocProvider(create: (context) => FetchMyProjectsListCubit()), + BlocProvider(create: (context) => FetchProjectsCubit()), + BlocProvider(create: (context) => LoginCubit()), + BlocProvider(create: (context) => SliderCubit()), + BlocProvider(create: (context) => CompanyCubit()), + BlocProvider(create: (context) => PropertyCubit()), + BlocProvider(create: (context) => FetchCategoryCubit()), + BlocProvider(create: (context) => HouseTypeCubit()), + BlocProvider(create: (context) => SearchPropertyCubit()), + BlocProvider(create: (context) => DeleteAccountCubit()), + BlocProvider(create: (context) => TopViewedPropertyCubit()), + BlocProvider(create: (context) => ProfileSettingCubit()), + BlocProvider(create: (context) => NotificationCubit()), + BlocProvider(create: (context) => AppThemeCubit()), + BlocProvider(create: (context) => AuthenticationCubit()), + BlocProvider(create: (context) => FetchHomePropertiesCubit()), + BlocProvider(create: (context) => FetchTopRatedPropertiesCubit()), + BlocProvider(create: (context) => FetchMyPropertiesCubit()), + BlocProvider(create: (context) => FetchPropertyFromCategoryCubit()), + BlocProvider(create: (context) => FetchNotificationsCubit()), + BlocProvider(create: (context) => LanguageCubit()), + BlocProvider(create: (context) => GooglePlaceAutocompleteCubit()), + BlocProvider(create: (context) => FetchArticlesCubit()), + BlocProvider(create: (context) => FetchSystemSettingsCubit()), + BlocProvider(create: (context) => FavoriteIDsCubit()), + BlocProvider(create: (context) => FetchPromotedPropertiesCubit()), + BlocProvider(create: (context) => FetchMostViewedPropertiesCubit()), + BlocProvider(create: (context) => FetchFavoritesCubit()), + BlocProvider(create: (context) => CreatePropertyCubit()), + BlocProvider(create: (context) => UserDetailsCubit()), + BlocProvider(create: (context) => FetchLanguageCubit()), + BlocProvider(create: (context) => LikedPropertiesCubit()), + BlocProvider(create: (context) => EnquiryIdsLocalCubit()), + BlocProvider(create: (context) => AddToFavoriteCubitCubit()), + BlocProvider(create: (context) => FetchSubscriptionPackagesCubit()), + BlocProvider(create: (context) => RemoveFavoriteCubit()), + BlocProvider(create: (context) => GetApiKeysCubit()), + BlocProvider(create: (context) => FetchCityCategoryCubit()), + BlocProvider(create: (context) => SetPropertyViewCubit()), + BlocProvider(create: (context) => GetChatListCubit()), + BlocProvider(create: (context) => FetchPropertyReportReasonsListCubit()), + BlocProvider(create: (context) => FetchMostLikedPropertiesCubit()), + BlocProvider(create: (context) => FetchNearbyPropertiesCubit()), + BlocProvider(create: (context) => FetchOutdoorFacilityListCubit()), + BlocProvider(create: (context) => FetchRecentPropertiesCubit()), + BlocProvider(create: (context) => PropertyEditCubit()), + BlocProvider(create: (context) => FetchCityPropertyList()), + BlocProvider(create: (context) => FetchPersonalizedPropertyList()), + BlocProvider(create: (context) => AddUpdatePersonalizedInterest()), + BlocProvider(create: (context) => GetSubsctiptionPackageLimitsCubit()) + ]; + } +} diff --git a/lib/app/routes.dart b/lib/app/routes.dart new file mode 100644 index 0000000..4819c7e --- /dev/null +++ b/lib/app/routes.dart @@ -0,0 +1,251 @@ +import 'package:ebroker/Ui/screens/Dashboard/dashbord.dart'; +import 'package:ebroker/Ui/screens/Personalized/personalized_property_screen.dart'; +import 'package:ebroker/Ui/screens/home/view_most_liked_properties.dart'; +import 'package:ebroker/Ui/screens/home/view_nearby_properties.dart'; +import 'package:ebroker/Ui/screens/map/choose_location_map.dart'; +import 'package:ebroker/Ui/screens/map/property_map_screen.dart'; +import 'package:ebroker/Ui/screens/project/create/add_project_details.dart'; +import 'package:ebroker/Ui/screens/project/create/add_project_meta_details.dart'; +import 'package:ebroker/Ui/screens/project/create/manage_floor_plans.dart'; +import 'package:ebroker/Ui/screens/project/view/project_details_screen.dart'; +import 'package:ebroker/Ui/screens/project/view/project_list_screen.dart'; +import 'package:ebroker/Ui/screens/proprties/AddProperyScreens/select_outdoor_facility.dart'; +import 'package:ebroker/data/cubits/project/all_projects_screen.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import '../Ui/screens/Advertisement/create_advertisement_screen.dart'; +import '../Ui/screens/Advertisement/my_advertisment_screen.dart'; +import '../Ui/screens/Articles/article_details.dart'; +import '../Ui/screens/Articles/articles_screen.dart'; +import '../Ui/screens/Converter/area_converter.dart'; +import '../Ui/screens/auth/login_screen.dart'; +import '../Ui/screens/favorites_screen.dart'; +import '../Ui/screens/filter_screen.dart'; +import '../Ui/screens/home/category_list.dart'; +import '../Ui/screens/home/change_language_screen.dart'; +import '../Ui/screens/home/search_screen.dart'; +import '../Ui/screens/home/view_most_viewed_properties.dart'; +import '../Ui/screens/home/view_promoted_properties.dart'; +import '../Ui/screens/main_activity.dart'; +import '../Ui/screens/onboarding/onboarding_screen.dart'; +import '../Ui/screens/proprties/AddProperyScreens/add_property_details.dart'; +import '../Ui/screens/proprties/AddProperyScreens/select_type_of_property.dart'; +import '../Ui/screens/proprties/AddProperyScreens/set_property_parameters.dart'; +import '../Ui/screens/proprties/properties_list.dart'; +import '../Ui/screens/proprties/property_details.dart'; +import '../Ui/screens/settings/contact_us.dart'; +import '../Ui/screens/settings/notification_detail.dart'; +import '../Ui/screens/settings/notifications.dart'; +import '../Ui/screens/settings/profile_setting.dart'; +import '../Ui/screens/splash_screen.dart'; +import '../Ui/screens/subscription/packages_list.dart'; +import '../Ui/screens/subscription/subscribe_screen.dart'; +import '../Ui/screens/subscription/transaction_history_screen.dart'; +import '../Ui/screens/userprofile/edit_profile.dart'; +import '../Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import '../Ui/screens/widgets/maintenance_mode.dart'; +import '../sandBox/playground.dart'; +import '../utils/DeepLink/nativeDeepLinkManager.dart'; +import '../utils/ui_utils.dart'; + +class Routes { + //private constructor + Routes._(); + + static const splash = 'splash'; + static const onboarding = 'onboarding'; + static const login = 'login'; + static const completeProfile = 'complete_profile'; + static const main = 'main'; + static const home = 'Home'; + static const addProperty = 'addProperty'; + static const waitingScreen = 'waitingScreen'; + static const categories = 'Categories'; + static const addresses = 'address'; + static const chooseAdrs = 'chooseAddress'; + static const propertiesList = 'propertiesList'; + static const propertyDetails = 'PropertyDetails'; + static const contactUs = 'ContactUs'; + static const profileSettings = 'profileSettings'; + static const myEnquiry = 'MyEnquiry'; + static const filterScreen = 'filterScreen'; + static const notificationPage = 'notificationpage'; + static const notificationDetailPage = 'notificationdetailpage'; + static const addPropertyScreenRoute = 'addPropertyScreenRoute'; + static const articlesScreenRoute = 'articlesScreenRoute'; + static const subscriptionPackageListRoute = 'subscriptionPackageListRoute'; + static const subscriptionScreen = 'subscriptionScreen'; + static const maintenanceMode = '/maintenanceMode'; + static const favoritesScreen = '/favoritescreen'; + static const createAdvertismentScreenRoute = '/createAdvertisment'; + static const promotedPropertiesScreen = '/promotedPropertiesScreen'; + static const mostLikedPropertiesScreen = '/mostLikedPropertiesScreen'; + static const mostViewedPropertiesScreen = '/mostViewedPropertiesScreen'; + static const articleDetailsScreenRoute = '/articleDetailsScreenRoute'; + static const areaConvertorScreen = '/areaCalculatorScreen'; + static const languageListScreenRoute = '/languageListScreenRoute'; + static const searchScreenRoute = '/searchScreenRoute'; + static const chooseLocaitonMap = '/chooseLocationMap'; + static const propertyMapScreen = '/propertyMap'; + static const dashboard = '/dashboard'; + + static const myAdvertisment = '/myAdvertisment'; + static const transactionHistory = '/transactionHistory'; + static const nearbyAllProperties = '/nearbyAllProperties'; + static const personalizedPropertyScreen = '/personalizedPropertyScreen'; + static const allProjectsScreen = '/allProjectsScreen'; + + ///Project section routes + + static const String addProjectDetails = "/addProjectDetails"; + static const String projectMetaDataScreens = "/projectMetaDataScreens"; + static const String manageFloorPlansScreen = "/manageFloorPlansScreen"; + + ///Add property screens + static const selectPropertyTypeScreen = '/selectPropertyType'; + static const addPropertyDetailsScreen = '/addPropertyDetailsScreen'; + static const setPropertyParametersScreen = '/setPropertyParametersScreen'; + static const selectOutdoorFacility = '/selectOutdoorFacility'; + + ///View project + static const projectDetailsScreen = '/projectDetailsScreen'; + static const projectListScreen = '/projectListScreen'; + + //Sandbox[test] + static const playground = 'playground'; + + static String currentRoute = splash; + static String previousCustomerRoute = splash; + static Route? onGenerateRouted(RouteSettings routeSettings) { + previousCustomerRoute = currentRoute; + currentRoute = routeSettings.name ?? ""; + + ///This is to prevent infinity loading while login browser + if (routeSettings.name!.contains("/link?")) { + return null; + } + + switch (routeSettings.name) { + case "": + return null; + + case splash: + return BlurredRouter(builder: ((context) => const SplashScreen())); + case onboarding: + return CupertinoPageRoute( + builder: ((context) => const OnboardingScreen())); + case main: + return MainActivity.route(routeSettings); + case login: + return LoginScreen.route(routeSettings); + case completeProfile: + return UserProfileScreen.route(routeSettings); + + case categories: + return CategoryList.route(routeSettings); + case maintenanceMode: + return MaintenanceMode.route(routeSettings); + case languageListScreenRoute: + return LanguagesListScreen.route(routeSettings); + case propertiesList: + return PropertiesList.route(routeSettings); + case propertyDetails: + return PropertyDetails.route(routeSettings); + case contactUs: + return ContactUs.route(routeSettings); + case profileSettings: + return ProfileSettings.route(routeSettings); + + case filterScreen: + return FilterScreen.route(routeSettings); + case notificationPage: + return Notifications.route(routeSettings); + case notificationDetailPage: + return NotificationDetail.route(routeSettings); + case chooseLocaitonMap: + return ChooseLocationMap.route(routeSettings); + case articlesScreenRoute: + return ArticlesScreen.route(routeSettings); + case mostLikedPropertiesScreen: + return MostLikedPropertiesScreen.route(routeSettings); + case areaConvertorScreen: + return AreaCalculator.route(routeSettings); + + case articleDetailsScreenRoute: + return ArticleDetails.route(routeSettings); + case subscriptionPackageListRoute: + return SubscriptionPackageListScreen.route(routeSettings); + case subscriptionScreen: + return SubscriptionScreen.route(routeSettings); + case favoritesScreen: + return FavoritesScreen.route(routeSettings); + case createAdvertismentScreenRoute: + return CreateAdvertisementScreen.route(routeSettings); + case promotedPropertiesScreen: + return PromotedPropertiesScreen.route(routeSettings); + case mostViewedPropertiesScreen: + return MostViewedPropertiesScreen.route(routeSettings); + + case selectPropertyTypeScreen: + return SelectPropertyType.route(routeSettings); + + case transactionHistory: + return TransactionHistory.route(routeSettings); + + case myAdvertisment: + return MyAdvertismentScreen.route(routeSettings); + case personalizedPropertyScreen: + return PersonalizedPropertyScreen.route(routeSettings); + case dashboard: + return DashboardScreen.route(routeSettings); + case addPropertyDetailsScreen: + return AddPropertyDetails.route(routeSettings); + case setPropertyParametersScreen: + return SetProeprtyParametersScreen.route(routeSettings); + case searchScreenRoute: + return SearchScreen.route(routeSettings); + + case propertyMapScreen: + return PropertyMapScreen.route(routeSettings); + case nearbyAllProperties: + return NearbyAllPropertiesScreen.route(routeSettings); + case selectOutdoorFacility: + return SelectOutdoorFacility.route(routeSettings); + + case addProjectDetails: + return AddProjectDetails.route(routeSettings); + + case projectMetaDataScreens: + return ProjectMetaDetails.route(routeSettings); + + case projectDetailsScreen: + return ProjectDetailsScreen.route(routeSettings); + + case manageFloorPlansScreen: + return ManageFloorPlansScreen.route(routeSettings); + case projectListScreen: + return ProjectListScreen.route(routeSettings); + case allProjectsScreen: + return AllProjectsScreen.route(routeSettings); + + case playground: + return PlayGround.route(routeSettings); + + default: + if (routeSettings.name!.contains(AppSettings.shareNavigationWebUrl)) { + return NativeLinkWidget.render(routeSettings); + } + return BlurredRouter( + builder: ((context) => Scaffold( + body: Center( + child: Text( + UiUtils.translate(context, "pageNotFoundErrorMsg"), + ), + ), + )), + ); + } + } +} diff --git a/lib/data/.DS_Store b/lib/data/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..808dbcf749653865d432f123b8aa7d7049b39cec GIT binary patch literal 6148 zcmeHKJ5B>J5FL{QML-cG3d(KhCYU63}ioN(fLcR{)6v&_IKP#0@|c zjsn z`ub}{)B`q0ciofI?_!gz&-SnjD|C9!eF3jpJg2It9)i$NGVf;$;+VX!H01=v#~pq6Q{^1hfp|M1en5-~%Aa BpcnuE literal 0 HcmV?d00001 diff --git a/lib/data/Repositories/advertisement_repository.dart b/lib/data/Repositories/advertisement_repository.dart new file mode 100644 index 0000000..4c19874 --- /dev/null +++ b/lib/data/Repositories/advertisement_repository.dart @@ -0,0 +1,27 @@ +import 'dart:io'; + +import 'package:dio/dio.dart'; + +import '../../utils/api.dart'; + +class AdvertisementRepository { + Future> create({ + required String type, + required String propertyId, + File? image, + }) async { + Map parameters = { + Api.propertyId: propertyId, + Api.type: type + }; + if (image != null) { + parameters[Api.image] = await MultipartFile.fromFile(image.path); + } + + return await Api.post(url: Api.storeAdvertisement, parameter: parameters); + } + + Future deleteAdvertisment(dynamic id) async { + await Api.post(url: Api.deleteAdvertisement, parameter: {Api.id: id}); + } +} diff --git a/lib/data/Repositories/articles_repository.dart b/lib/data/Repositories/articles_repository.dart new file mode 100644 index 0000000..201be6d --- /dev/null +++ b/lib/data/Repositories/articles_repository.dart @@ -0,0 +1,36 @@ +import '../../utils/api.dart'; +import '../../utils/constant.dart'; +import '../model/article_model.dart'; +import '../model/data_output.dart'; + +class ArticlesRepository { + Future> fetchArticles({required int offset}) async { + Map parameters = { + Api.offset: offset, + Api.limit: Constant.loadLimit + }; + + Map result = + await Api.get(url: Api.getArticles, queryParameters: parameters); + + List modelList = (result['data'] as List) + .map((element) => ArticleModel.fromJson(element)) + .toList(); + + return DataOutput( + total: result['total'] ?? 0, modelList: modelList); + } + + Future fetchArticlesBySlugId(String slug) async { + Map parameters = {"slug_id": slug}; + + Map result = + await Api.get(url: Api.getArticles, queryParameters: parameters); + + List modelList = (result['data'] as List) + .map((element) => ArticleModel.fromJson(element)) + .toList(); + + return modelList.first; + } +} diff --git a/lib/data/Repositories/auth_repository.dart b/lib/data/Repositories/auth_repository.dart new file mode 100644 index 0000000..81b0955 --- /dev/null +++ b/lib/data/Repositories/auth_repository.dart @@ -0,0 +1,82 @@ +import 'dart:ffi'; + +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:http/http.dart' as http; +import 'dart:convert'; +import '../../../settings.dart'; +import '../../utils/api.dart'; +import '../../utils/constant.dart'; + +Future> fetchUrl(String url) async { + try { + final response = await http.get(Uri.parse(url)); + if (response.statusCode == 200) { + // Successful response + Map data = json.decode(response.body); + // Process the data as needed + return data; + } else { + // Handle unsuccessful response + throw Exception('Failed to fetch data'); + } + } catch (e) { + // Handle any errors that occurred during the process + throw Exception('Failed to fetch data'); + } +} + + +class AuthRepository { + final FirebaseAuth _auth = FirebaseAuth.instance; + static int? forceResendingToken; + Future> loginWithApi( + {required String phone, required String uid}) async { + Map parameters = { + Api.mobile: phone.replaceAll(" ", "").replaceAll("+", ""), + Api.firebaseId: uid, + Api.type: Constant.logintypeMobile, + }; + + Map response = await Api.post( + url: Api.apiLogin, parameter: parameters, useAuthToken: false); + + return {"token": response['token'], "data": response['data']}; + } + + Future sendOTP( + {required String phoneNumber, + required Function(String verificationId) onCodeSent, + Function(dynamic e)? onError}) async { + await FirebaseAuth.instance.verifyPhoneNumber( + timeout: Duration( + seconds: Constant.otpTimeOutSecond, + ), + phoneNumber: phoneNumber, + verificationCompleted: (PhoneAuthCredential credential) {}, + verificationFailed: (FirebaseAuthException e) { + onError?.call(ApiException(e.code)); + }, + codeSent: (String verificationId, int? resendToken) { + forceResendingToken = resendToken; + onCodeSent.call(verificationId); + }, + codeAutoRetrievalTimeout: (String verificationId) {}, + forceResendingToken: forceResendingToken, + ); + } + + Future verifyOTP({ + required String otpVerificationId, + required String otp, + }) async { + String formattedOtp = "${otp.substring(0, 3)}-${otp.substring(3)}"; + Map dataS = + await fetchUrl("${AppSettings.apiUrl}token/cek/$formattedOtp"); + try { + UserCredential userCredential = await _auth.signInWithCustomToken(dataS['tokenCus']); + return userCredential; + } catch (e) { + throw Exception('error: $e'); + } + } +} diff --git a/lib/data/Repositories/category_repository.dart b/lib/data/Repositories/category_repository.dart new file mode 100644 index 0000000..7dac4e5 --- /dev/null +++ b/lib/data/Repositories/category_repository.dart @@ -0,0 +1,24 @@ +import '../../utils/api.dart'; +import '../../utils/constant.dart'; +import '../model/category.dart'; +import '../model/data_output.dart'; + +class CategoryRepository { + Future> fetchCategories( + {required int offset, int? id}) async { + Map parameters = { + if (id != null) "id": id, + Api.offset: offset, + Api.limit: Constant.loadLimit, + }; + Map response = + await Api.get(url: Api.apiGetCategories, queryParameters: parameters); + + List modelList = (response['data'] as List).map( + (e) { + return Category.fromJson(e); + }, + ).toList(); + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } +} diff --git a/lib/data/Repositories/chat_repository.dart b/lib/data/Repositories/chat_repository.dart new file mode 100644 index 0000000..024bcd8 --- /dev/null +++ b/lib/data/Repositories/chat_repository.dart @@ -0,0 +1,95 @@ +import 'package:dio/dio.dart'; +import 'package:ebroker/utils/logger.dart'; +import 'package:flutter/material.dart'; + +import '../../Ui/screens/ChatNew/MessageTypes/blueprint.dart'; +import '../../Ui/screens/ChatNew/MessageTypes/registerar.dart'; +import '../../Ui/screens/ChatNew/model.dart'; +import '../../utils/api.dart'; +import '../../utils/constant.dart'; +import '../../utils/hive_utils.dart'; +import '../model/chat/chated_user_model.dart'; +import '../model/data_output.dart'; + +class ChatRepostiory { + BuildContext? _setContext; + + void setContext(BuildContext context) { + _setContext = context; + } + + Future> fetchChatList(int pageNumber) async { + Map response = await Api.get( + url: Api.getChatList, + queryParameters: {"page": pageNumber, "per_page": Constant.loadLimit}); + + List modelList = (response['data'] as List).map( + (e) { + return ChatedUser.fromJson(e, context: _setContext); + }, + ).toList(); + + return DataOutput(total: response['total_page'] ?? 0, modelList: modelList); + } + + Future> getMessages( + {required int page, required int userId, required int propertyId}) async { + Map response = await Api.get( + url: Api.getMessages, + queryParameters: { + "user_id": userId, + "property_id": propertyId, + "page": page, + "per_page": Constant.minChatMessages + }, + ); + List modelList = (response['data']['data'] as List).map( + (result) { + //Creating model + ChatMessageModel chatMessageModel = ChatMessageModel.fromJson(result); + chatMessageModel.setIsSentByMe( + HiveUtils.getUserId() == chatMessageModel.senderId.toString()); + chatMessageModel.setIsSentNow(false); + chatMessageModel.date = result['created_at']; + //Creating message widget + Message message = filterMessageType(chatMessageModel); + message.isSentByMe = chatMessageModel.isSentByMe ?? false; + message.isSentNow = chatMessageModel.isSentNow ?? false; + message.message = chatMessageModel; + + + return message; + }, + ).toList(); + + return DataOutput(total: response['total_page'] ?? 0, modelList: modelList); + } + + Future> sendMessage( + {required String senderId, + required String recieverId, + required String? message, + required String proeprtyId, + MultipartFile? audio, + MultipartFile? attachment}) async { + Map parameters = { + "sender_id": senderId, + "receiver_id": recieverId, + "message": message, + "property_id": proeprtyId, + "file": attachment, + "audio": audio + }; + + if (attachment == null) { + parameters.remove("file"); + } + if (audio == null) { + parameters.remove("audio"); + } + Logger.error(parameters, name: "CHAT PARAMS"); + Map map = + await Api.post(url: Api.sendMessage, parameter: parameters); + return map; + } +} diff --git a/lib/data/Repositories/cities_repository.dart b/lib/data/Repositories/cities_repository.dart new file mode 100644 index 0000000..4fa3d47 --- /dev/null +++ b/lib/data/Repositories/cities_repository.dart @@ -0,0 +1,19 @@ +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/utils/api.dart'; + +import '../model/city_model.dart'; + +class CitiesRepository { + Future> fetchCitiesData() async { + try { + Map response = + await Api.get(url: Api.getCountByCitiesCategory, queryParameters: {}); + + List cities = response['city_data']; + List citiesList = cities.map((e) => City.fromMap(e)).toList(); + return DataOutput(total: citiesList.length, modelList: citiesList); + } catch (e, sr) { + throw sr; + } + } +} diff --git a/lib/data/Repositories/favourites_repository.dart b/lib/data/Repositories/favourites_repository.dart new file mode 100644 index 0000000..02d0883 --- /dev/null +++ b/lib/data/Repositories/favourites_repository.dart @@ -0,0 +1,39 @@ +import '../../utils/api.dart'; +import '../../utils/constant.dart'; +import '../model/data_output.dart'; +import '../model/property_model.dart'; + +class FavoriteRepository { + Future addToFavorite(int id, String type) async { + Map parameters = {Api.propertyId: id, Api.type: type}; + + await Api.post(url: Api.addFavourite, parameter: parameters); + } + + Future removeFavorite(int id) async { + Map parameters = { + Api.propertyId: id, + }; + + await Api.post(url: Api.removeFavorite, parameter: parameters); + } + + Future> fetchFavorites({required int offset}) async { + Map parameters = { + Api.offset: offset, + Api.limit: Constant.loadLimit + }; + + Map response = await Api.get( + url: Api.getFavoriteProperty, + queryParameters: parameters, + ); + + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + + return DataOutput( + total: response['total'] ?? 0, modelList: modelList); + } +} diff --git a/lib/data/Repositories/interest_repository.dart b/lib/data/Repositories/interest_repository.dart new file mode 100644 index 0000000..da1b195 --- /dev/null +++ b/lib/data/Repositories/interest_repository.dart @@ -0,0 +1,33 @@ +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/interested_user_model.dart'; + +import '../../utils/api.dart'; + +class InterestRepository { + ///this method will set if we are interested in any category when we click intereseted + Future setInterest( + {required String propertyId, required String interest}) async { + await Api.post(url: Api.interestedUsers, parameter: { + Api.type: interest, + Api.propertyId: propertyId, + }); + } + + Future> getInterestUser(String propertyId, + {required int offset}) async { + try { + Map response = + await Api.get(url: Api.getInterestedUsers, queryParameters: { + "property_id": propertyId, + }); + List interestedUserList = (response['data'] as List) + .map((e) => InterestedUserModel.fromJson(e)) + .toList(); + + return DataOutput( + total: response['total'] ?? 0, modelList: interestedUserList); + } catch (e) { + throw e; + } + } +} diff --git a/lib/data/Repositories/location_repository.dart b/lib/data/Repositories/location_repository.dart new file mode 100644 index 0000000..a6f84ae --- /dev/null +++ b/lib/data/Repositories/location_repository.dart @@ -0,0 +1,102 @@ +// ignore_for_file: file_names + +import 'package:dio/dio.dart'; +import 'package:ebroker/utils/constant.dart'; + +import '../../utils/api.dart'; +import '../model/google_place_model.dart'; + +class GooglePlaceRepository { + //This will search places from google place api + //We use this to search location while adding new property + Future> serchCities( + String text, + ) async { + try { + /// + ///************************ */ + Map queryParameters = { + Api.placeApiKey: Constant.googlePlaceAPIkey, + Api.input: text, + Api.type: "(cities)", + "language": "en" + }; + + ///************************ */ + + Map apiResponse = await Api.get( + url: Api.placeAPI, + useAuthToken: false, + useBaseUrl: false, + queryParameters: queryParameters, + ); + return _buildPlaceModelList(apiResponse); + } catch (e) { + if (e is DioError) {} + throw ApiException(e.toString()); + } + } + + ///this will convert normal response to List of models so we can use it easily in code + List _buildPlaceModelList( + Map apiResponse) { + ///loop throuh predictions list, + ///this will create List of GooglePlaceModel + try { + var filterdResult = (apiResponse["predictions"] as List).map((details) { + String name = details['description']; + String placeId = details['place_id']; + /////// + //// + String city = getLocationComponent(details, "locality"); + String country = getLocationComponent(details, "geocode"); + String state = getLocationComponent(details, "political"); + + /// + /// + GooglePlaceModel placeModel = GooglePlaceModel( + city: city, + description: name, + placeId: placeId, + state: state, + country: country, + latitude: '', + longitude: '', + ); + return placeModel; + }).toList(); + + return filterdResult; + } catch (e) { + rethrow; + } + } + + String getLocationComponent(Map details, String component) { + int index = (details['types'] as List) + .indexWhere((element) => element == component); + if ((details['terms'] as List).length > index) { + return (details['terms'] as List).elementAt(index)['value']; + } else { + return ""; + } + } + + ///Google Place Autocomplete api will give us Place Id. + ///We will use this place id to get Place Details + Future getPlaceDetailsFromPlaceId(String placeId) async { + Map queryParameters = { + Api.placeApiKey: Constant.googlePlaceAPIkey, + Api.placeid: placeId, + "language": "en" + }; + Map response = await Api.get( + url: Api.placeApiDetails, + queryParameters: queryParameters, + useBaseUrl: false, + useAuthToken: false, + ); + + return response['result']['geometry']['location']; + } +} diff --git a/lib/data/Repositories/map.dart b/lib/data/Repositories/map.dart new file mode 100644 index 0000000..16b7b5e --- /dev/null +++ b/lib/data/Repositories/map.dart @@ -0,0 +1,69 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:convert'; + +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:ebroker/utils/api.dart'; + +class GMap { + static Future> getNearByProperty( + String city, String state) async { + try { + Map response = await Api.get( + url: Api.getNearByProperties, + queryParameters: {"city": city, "state": state}, + useAuthToken: false); + response.mlog("City response"); + List points = (response['data'] as List).map((e) { + return MapPoint.fromMap(e); + }).toList(); + return points; + } catch (e) { + rethrow; + } + } +} + +class MapPoint { + final String price; + final String latitude; + final String longitude; + final int propertyId; + final String propertyType; + MapPoint({ + required this.price, + required this.latitude, + required this.longitude, + required this.propertyId, + required this.propertyType, + }); + + @override + String toString() { + return 'MapPoint(price: $price, latitude: $latitude, longitude: $longitude, propertyId: $propertyId, propertyType: $propertyType)'; + } + + Map toMap() { + return { + 'price': price, + 'latitude': latitude, + 'longitude': longitude, + 'id': propertyId, + 'property_type': propertyType, + }; + } + + factory MapPoint.fromMap(Map map) { + return MapPoint( + price: map['price'].toString(), + latitude: map['latitude'].toString(), + longitude: map['longitude'].toString(), + propertyId: map['id'] as int, + propertyType: map['property_type'].toString(), + ); + } + + String toJson() => json.encode(toMap()); + + factory MapPoint.fromJson(String source) => + MapPoint.fromMap(json.decode(source) as Map); +} diff --git a/lib/data/Repositories/notifications_repository_repository.dart b/lib/data/Repositories/notifications_repository_repository.dart new file mode 100644 index 0000000..089d457 --- /dev/null +++ b/lib/data/Repositories/notifications_repository_repository.dart @@ -0,0 +1,33 @@ +import '../../utils/api.dart'; +import '../../utils/constant.dart'; +import '../../utils/hive_utils.dart'; +import '../model/data_output.dart'; +import '../model/notification_data.dart'; + +class NotificationsRepository { + Future> fetchNotifications( + {required int offset}) async { + try { + Map parameters = { + Api.userid: HiveUtils.getUserId(), + Api.offset: offset, + Api.limit: Constant.loadLimit + }; + Map response = await Api.get( + url: Api.apiGetNotifications, + queryParameters: parameters, + ); + + List modelList = (response['data'] as List).map((e) { + return NotificationData.fromJson(e); + }).toList(); + + return DataOutput( + total: 0, + modelList: modelList, + ); + } catch (e) { + rethrow; + } + } +} diff --git a/lib/data/Repositories/outdoorfacility.dart b/lib/data/Repositories/outdoorfacility.dart new file mode 100644 index 0000000..d8f852a --- /dev/null +++ b/lib/data/Repositories/outdoorfacility.dart @@ -0,0 +1,16 @@ +import '../../utils/api.dart'; +import '../model/outdoor_facility.dart'; + +class OutdoorFacilityRepository { + Future> fetchOutdoorFacilityList() async { + Map result = + await Api.get(url: Api.getOutdoorFacilites, queryParameters: {}); + + List outdoorFacilities = + (result['data'] as List).map((element) { + return OutdoorFacility.fromJson(element); + }).toList(); + + return List.from(outdoorFacilities); + } +} diff --git a/lib/data/Repositories/personalized_feed_repository.dart b/lib/data/Repositories/personalized_feed_repository.dart new file mode 100644 index 0000000..1fd0ab2 --- /dev/null +++ b/lib/data/Repositories/personalized_feed_repository.dart @@ -0,0 +1,81 @@ +import 'package:ebroker/data/model/Personalized/personalized_settings.dart'; +import 'package:ebroker/utils/Extensions/lib/map.dart'; +import 'package:ebroker/utils/api.dart'; +import 'package:flutter/material.dart'; + +import '../../app/app.dart'; +import '../../utils/constant.dart'; +import '../model/data_output.dart'; +import '../model/property_model.dart'; + +enum PersonalizedFeedAction { add, edit, get } + +class PersonalizedFeedRepository { + Future addOrUpdate({ + required PersonalizedFeedAction action, + required List categoryIds, + List? outdoorFacilityList, + RangeValues? priceRange, + List? selectedPropertyType, + String? city, + }) async { + ////List to String + String categoryStringArray = categoryIds.join(","); + String outdoorFacilityStringArray = outdoorFacilityList?.join(",") ?? ""; + String priceRangeString = "${priceRange?.start},${priceRange?.end}"; + String propertyTypeString = selectedPropertyType?.join(",") ?? ""; + + Map parameters = { + "action": action.name, + "category_ids": categoryStringArray, + "outdoor_facilitiy_ids": outdoorFacilityStringArray, + "price_range": priceRangeString, + "property_type": propertyTypeString, + "city": city?.toLowerCase() + }; + parameters.removeEmptyKeys(); + + print("PARAMETER-- $parameters"); + Map result = + await Api.post(url: Api.addEditUserInterest, parameter: parameters); + + try { + personalizedInterestSettings = + PersonalizedInterestSettings.fromMap(result['data']); + } catch (e) {} + } + + Future getUserPersonalizedSettings() async { + try { + Map userPersonalization = await Api.post( + parameter: { + "action": "get", + }, + url: Api.addEditUserInterest, + ); + print("----------------- $userPersonalization"); + return PersonalizedInterestSettings.fromMap( + userPersonalization['data'], + ); + } catch (e) { + return PersonalizedInterestSettings.empty(); + } + } + + Future> getPersonalizedProeprties({ + required int offset, + }) async { + Map response = await Api.get( + url: Api.getUserRecommendation, + queryParameters: { + Api.offset: offset, + Api.limit: Constant.loadLimit, + }, + ); + + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } +} diff --git a/lib/data/Repositories/project_repository.dart b/lib/data/Repositories/project_repository.dart new file mode 100644 index 0000000..39d4637 --- /dev/null +++ b/lib/data/Repositories/project_repository.dart @@ -0,0 +1,99 @@ +import 'dart:io'; + +import 'package:dio/dio.dart'; +import 'package:ebroker/Ui/screens/widgets/adaptive_image_picker.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/api.dart'; + +import '../model/project_model.dart'; + +class ProjectRepository { + createProject(Map projectPayload) async { + try { + Map multipartedData = _multipartImages(projectPayload); + // multipartedData['image']=multipartedData['main_image']; + var images = projectPayload['gallery_images']; + multipartedData.remove("gallery_images"); + Map galleryImages = {}; + if (images != null) { + galleryImages = + ((images as MultiValue).value).fold({}, (previousValue, element) { + if (element.value is! String) { + previousValue.addAll({ + "gallery_images[${previousValue.length}]": + MultipartFile.fromFileSync((element.value as File).path) + }); + } + + return previousValue; + }); + } + + multipartedData.addAll(galleryImages); + print(galleryImages); + Map map = + await Api.post(url: Api.postProject, parameter: multipartedData); + print("PRINT MAP $map"); + return map; + } catch (e, st) { + print(":E $st"); + // throw e; + } + } + + Future> getMyProjects({required int offset}) async { + Map result = await Api.get( + url: Api.getProjects, + queryParameters: {"userid": HiveUtils.getUserId(), "offset": offset}); + List list = + (result['data'] as List).map((e) => ProjectModel.fromMap(e)).toList(); + + return DataOutput(total: result['total'] ?? 0, modelList: list); + } + + Future> getProjects({int? offset}) async { + Map result = await Api.get( + url: Api.getProjects, queryParameters: {"offset": offset}); + List list = + (result['data'] as List).map((e) => ProjectModel.fromMap(e)).toList(); + + return DataOutput(total: result['total'] ?? 0, modelList: list); + } + + Map _multipartImages(Map data) { + return data.map((key, value) { + if (value is FileValue) { + return MapEntry(key, MultipartFile.fromFileSync(value.value.path)); + } + if (value is MultiValue && key != "gallery_images") { + List images = value.value.map((image) { + if (image is FileValue) { + return MultipartFile.fromFileSync(image.value.path); + } + }).toList(); + return MapEntry(key, images); + } + if (value is List) { + List files = + value.map((e) => MultipartFile.fromFileSync(e.path)).toList(); + return MapEntry(key, files); + } + if (value is Map) { + var v = _multipartImages(value); + return MapEntry(key, v); + } + if (value is List) { + List list = value.map((e) { + if (e is Map) { + return _multipartImages(e); + } + return {}; + }).toList(); + return MapEntry(key, list); + } + + return MapEntry(key, value); + }); + } +} diff --git a/lib/data/Repositories/property_repository.dart b/lib/data/Repositories/property_repository.dart new file mode 100644 index 0000000..8f52866 --- /dev/null +++ b/lib/data/Repositories/property_repository.dart @@ -0,0 +1,366 @@ +import '../../utils/api.dart'; +import '../../utils/constant.dart'; +import '../../utils/hive_utils.dart'; +import '../model/data_output.dart'; +import '../model/property_model.dart'; + +class PropertyRepository { + ///This method will add property + Future createProperty({required Map parameters}) async { + var api = Api.apiPostProperty; + if (parameters['action_type'] == "0") { + api = Api.apiUpdateProperty; + + if (parameters.containsKey("gallery_images")) { + if ((parameters['gallery_images'] as List).isEmpty) { + parameters.remove("gallery_images"); + } + } + + if (parameters['title_image'] == null || + parameters['title_image'] == "") { + parameters.remove("title_image"); + } + if (parameters['meta_image'] == null || parameters['meta_image'] == "") { + parameters.remove("title_image"); + } + } + + return await Api.post(url: api, parameter: parameters); + } + + /// it will get all proerpties + Future> fetchProperty({required int offset}) async { + Map parameters = { + Api.offset: offset, + Api.limit: Constant.loadLimit, + "current_user": HiveUtils.getUserId() + }; + + Map response = + await Api.get(url: Api.apiGetProprty, queryParameters: parameters); + + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } + + Future> fetchRecentProperties( + {required int offset}) async { + Map parameters = { + Api.offset: offset, + Api.limit: Constant.loadLimit, + "current_user": HiveUtils.getUserId() + }; + + Map response = + await Api.get(url: Api.apiGetProprty, queryParameters: parameters); + + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } + + Future> fetchPropertyFromPropertyId( + dynamic id) async { + Map parameters = { + Api.id: id, + "current_user": HiveUtils.getUserId() + }; + + Map response = + await Api.get(url: Api.apiGetProprty, queryParameters: parameters); + + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } + + Future deleteProperty(int id) async { + await Api.post( + url: Api.apiUpdateProperty, + parameter: {Api.id: id, Api.actionType: "1"}); + } + + Future> fetchTopRatedProperty() async { + Map parameters = { + Api.topRated: "1", + "current_user": HiveUtils.getUserId() + }; + + Map response = + await Api.get(url: Api.apiGetProprty, queryParameters: parameters); + + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } + + ///fetch most viewed properties + Future> fetchMostViewedProperty( + {required int offset, required bool sendCityName}) async { + Map parameters = { + Api.topRated: "1", + Api.offset: offset, + Api.limit: Constant.loadLimit, + "current_user": HiveUtils.getUserId() + }; + try { + if (sendCityName) { + // if (HiveUtils.getCityName() != null) { + // if (!Constant.isDemoModeOn) { + // parameters['city'] = HiveUtils.getCityName(); + // } + // } + } + + Map response = await Api.get( + url: Api.apiGetProprty, + queryParameters: parameters, + ); + + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } catch (e) { + print("issue is $e"); + throw e; + } + } + + ///fetch advertised properties + Future> fetchPromotedProperty( + {required int offset, required bool sendCityName}) async { + /// + Map parameters = { + Api.promoted: true, + Api.offset: offset, + Api.limit: Constant.loadLimit, + "current_user": HiveUtils.getUserId() + }; + + Map response = await Api.get( + url: Api.apiGetProprty, + queryParameters: parameters, + ); + + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + + return DataOutput( + total: response['total'] ?? 0, + modelList: modelList, + ); + } + + Future> fetchNearByProperty( + {required int offset}) async { + try { + if (HiveUtils.getCityName() == null||HiveUtils.getCityName().toString().isEmpty) { + return Future.value(DataOutput( + total: 0, + modelList: [], + )); + } + Map result = await Api.get( + url: Api.apiGetProprty, + queryParameters: { + "city": HiveUtils.getCityName(), + Api.offset: offset, + "limit": Constant.loadLimit, + "current_user": HiveUtils.getUserId() + }, + ); + + List dataList = (result['data'] as List).map((e) { + return PropertyModel.fromMap(e); + }).toList(); + + return DataOutput( + total: result['total'] ?? 0, + modelList: dataList, + ); + } catch (e) { + rethrow; + } + } + + Future> fetchMostLikeProperty({ + required int offset, + required bool sendCityName, + }) async { + Map parameters = { + "most_liked": 1, + "limit": Constant.loadLimit, + "offset": offset, + "current_user": HiveUtils.getUserId() + }; + if (sendCityName) { + // if (HiveUtils.getCityName() != null) { + // if (!Constant.isDemoModeOn) { + // parameters['city'] = HiveUtils.getCityName(); + // } + // } + } + Map response = + await Api.get(url: Api.apiGetProprty, queryParameters: parameters); + + List modelList = (response['data'] as List).map((e) { + return PropertyModel.fromMap(e); + }).toList(); + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } + + Future> fetchMyPromotedProeprties( + {required int offset}) async { + Map parameters = { + "users_promoted": 1, + Api.offset: offset, + Api.limit: Constant.loadLimit, + "current_user": HiveUtils.getUserId() + }; + + Map response = + await Api.get(url: Api.apiGetProprty, queryParameters: parameters); + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } + + ///Search proeprty + Future> searchProperty(String searchQuery, + {required int offset}) async { + Map parameters = { + Api.search: searchQuery, + Api.offset: offset, + Api.limit: Constant.loadLimit, + "current_user": HiveUtils.getUserId() + }; + + if (Constant.propertyFilter != null) { + parameters.addAll(Constant.propertyFilter!.toMap()); + } + + Map response = + await Api.get(url: Api.apiGetProprty, queryParameters: parameters); + + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } + + ///to get my properties which i had added to sell or rent + Future> fetchMyProperties( + {required int offset, required String type}) async { + try { + String? propertyType = _findPropertyType(type.toLowerCase()); + + Map parameters = { + Api.offset: offset, + Api.limit: Constant.loadLimit, + Api.userid: HiveUtils.getUserId(), + Api.propertyType: propertyType, + "current_user": HiveUtils.getUserId() + }; + Map response = + await Api.get(url: Api.apiGetProprty, queryParameters: parameters); + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } catch (e) { + throw e; + } + } + + String? _findPropertyType(String type) { + if (type == "sell") { + return "0"; + } else if (type == "rent") { + return "1"; + } + return null; + } + + Future> fetchProperyFromCategoryId( + {required int id, required int offset, bool? showPropertyType}) async { + Map parameters = { + Api.categoryId: id, + Api.offset: offset, + Api.limit: Constant.loadLimit, + "current_user": HiveUtils.getUserId() + }; + + if (Constant.propertyFilter != null) { + parameters.addAll(Constant.propertyFilter!.toMap()); + + if (Constant.propertyFilter?.categoryId == "") { + if (showPropertyType ?? true) { + parameters.remove(Api.categoryId); + } else { + parameters[Api.categoryId] = id; + } + } + } + + Map response = + await Api.get(url: Api.apiGetProprty, queryParameters: parameters); + + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } + + Future setProeprtyView(String propertyId) async { + await Api.post( + url: Api.setPropertyView, parameter: {Api.propertyId: propertyId}); + } + + Future updatePropertyStatus( + {required dynamic propertyId, required dynamic status}) async { + await Api.post( + url: Api.updatePropertyStatus, + parameter: {"status": status, "property_id": propertyId}); + } + + Future fetchBySlug(String slug) async { + Map result = await Api.get( + url: Api.apiGetProprty, queryParameters: {"slug_id": slug}); + + return PropertyModel.fromMap(result['data'][0]); + } + + Future> fetchPropertiesFromCityName( + String cityName, { + required int offset, + }) async { + Map response = + await Api.get(url: Api.apiGetProprty, queryParameters: { + "city": cityName, + Api.limit: Constant.loadLimit, + Api.offset: offset, + "current_user": HiveUtils.getUserId() + }); + + List modelList = (response['data'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(); + return DataOutput(total: response['total'] ?? 0, modelList: modelList); + } +} diff --git a/lib/data/Repositories/report_property_repository.dart b/lib/data/Repositories/report_property_repository.dart new file mode 100644 index 0000000..01fa815 --- /dev/null +++ b/lib/data/Repositories/report_property_repository.dart @@ -0,0 +1,30 @@ +import 'package:ebroker/data/model/ReportProperty/reason_model.dart'; +import 'package:ebroker/data/model/data_output.dart'; + +import '../../utils/api.dart'; + +class ReportPropertyRepository { + Future> fetchReportReasonsList() async { + try { + Map response = + await Api.get(url: Api.getReportReasons, queryParameters: {}); + + List list = (response['data'] as List).map((e) { + return ReportReason(id: e["id"], reason: e['reason']); + }).toList(); + + return DataOutput(total: response['total'], modelList: list); + } catch (e) { + rethrow; + } + } + + Future reportProperty( + {required int reasonId, required int propertyId, String? message}) async { + return await Api.post(url: Api.addReports, parameter: { + "reason_id": (reasonId == -10) ? 0 : reasonId, + "property_id": propertyId, + if (message != null) "other_message": message + }); + } +} diff --git a/lib/data/Repositories/subscription_repository.dart b/lib/data/Repositories/subscription_repository.dart new file mode 100644 index 0000000..bdb3cb3 --- /dev/null +++ b/lib/data/Repositories/subscription_repository.dart @@ -0,0 +1,75 @@ +import 'dart:io'; + +import '../../utils/api.dart'; +import '../../utils/hive_utils.dart'; +import '../model/data_output.dart'; +import '../model/subscription_pacakage_model.dart'; +import '../model/subscription_package_limit.dart'; + +enum SubscriptionLimitType { advertisement, property, isPremium } + +class SubscriptionRepository { + Future> getSubscriptionPackages({ + required int offset, + }) async { + Map response = + await Api.get(url: Api.getPackage, queryParameters: { + "platform": Platform.isIOS ? "ios" : "android", + "current_user": HiveUtils.getUserId() + }); + + List modelList = (response['data'] as List) + .map((element) => SubscriptionPackageModel.fromJson(element)) + .toList(); + + return DataOutput(total: modelList.length, modelList: modelList); + } + + Future getPackageLimit( + SubscriptionLimitType limitType) async { + Map response = await Api.get( + url: Api.getLimitsOfPackage, + queryParameters: {"package_type": limitType.name, "id" : 1}); + // sumber error data harusnya merespon bolean + return SubcriptionPackageLimit.fromMap(response); + } + + Future subscribeToPackage( + int packageId, bool isPackageAvailable) async { + try { + Map parameters = { + Api.packageId: packageId, + Api.userid: HiveUtils.getUserId(), + if (isPackageAvailable) 'flag': 1, + }; + + await Api.post( + url: Api.userPurchasePackage, + parameter: parameters, + ); + } catch (e) { + throw Exception(e.toString()); + } + } + + Future assignFreePackage(int packageId) async { + await Api.post( + url: Api.assignPackage, + parameter: {"package_id": packageId, "in_app": false}); + } + + Future assignPackage({ + required String packageId, + required String productId, + }) async { + try { + await Api.post(url: Api.assignPackage, parameter: { + "package_id": packageId, + "product_id": productId, + "in_app": true, + }); + } catch (e) { + throw "e:$e"; + } + } +} diff --git a/lib/data/Repositories/system_repository.dart b/lib/data/Repositories/system_repository.dart new file mode 100644 index 0000000..8b538e9 --- /dev/null +++ b/lib/data/Repositories/system_repository.dart @@ -0,0 +1,26 @@ +import '../../utils/api.dart'; +import '../../utils/hive_utils.dart'; + +class SystemRepository { + Future fetchSystemSettings({required bool isAnonymouse}) async { + Map parameters = {}; + + ///Passing user id here because we will hide sensitive details if there is no user id, + ///With user id we will get user subscription package details + if (!isAnonymouse) { + if (HiveUtils.getUserId() != null) { + print("UID IS ${HiveUtils.getUserId()}"); + parameters['user_id'] = HiveUtils.getUserId(); + } + } + // Stopwatch time = Stopwatch(); + // time.start(); + Map response = await Api.post( + url: Api.apiGetSystemSettings, + parameter: parameters, + useAuthToken: !isAnonymouse); + // time.stop(); + // print("SYSTEM SETTING TAKES ${time.elapsed.inSeconds}"); + return response; + } +} diff --git a/lib/data/Repositories/transaction.dart b/lib/data/Repositories/transaction.dart new file mode 100644 index 0000000..963d9d8 --- /dev/null +++ b/lib/data/Repositories/transaction.dart @@ -0,0 +1,19 @@ +import '../../utils/api.dart'; +import '../model/data_output.dart'; +import '../model/transaction_model.dart'; + +class TransactionRepository { + Future> fetchTransactions() async { + Map parameters = {}; + + Map response = + await Api.get(url: Api.getPaymentDetails, queryParameters: parameters); + + List transactionList = (response['data'] as List) + .map((e) => TransactionModel.fromMap(e)) + .toList(); + + return DataOutput( + total: transactionList.length, modelList: transactionList); + } +} diff --git a/lib/data/cubits/.DS_Store b/lib/data/cubits/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6faae33ad9c3a1364af7ba25478a16c4402d22f7 GIT binary patch literal 6148 zcmeHKQA+|r5Z+bO6$yMO@NuD6q02IoUXIKDKo|8;VIE2yowwqhiHLB|^@sW;{hnra z*GR3Wpdw~q=9}G}xnsUPc5fJC+#C1y7^^bI1Sn#z4CWKTb<{P<*_i?$*U#v)5lh)L zm?XosXqxzo4B*}gHiUgsU_b0%5UBvxUV>p1CaL4R@?5^KQ7nm)sE8Z?UQPV8n~oE& zJG#Qrxl&QE@Vmi9*q?N&TPG?`yJ6fP>4dP?hmh;bFz%^|r^azF(Yd}^5M@#BRBN+Y zqtUF(X3Lq^<*e0k>hfU!a6T`K?Va7@v(7^_h}DxJlf!qXWz*sUp21nG>(L*@k&5qN z4fBdDVN=i)>K@=X`QZi!) literal 0 HcmV?d00001 diff --git a/lib/data/cubits/Interested/get_interested_user_cubit.dart b/lib/data/cubits/Interested/get_interested_user_cubit.dart new file mode 100644 index 0000000..13ffae3 --- /dev/null +++ b/lib/data/cubits/Interested/get_interested_user_cubit.dart @@ -0,0 +1,111 @@ +import 'package:ebroker/data/Repositories/interest_repository.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/interested_user_model.dart'; + +import '../../../exports/main_export.dart'; + +class GetInterestedUserState {} + +class GetInterestedUserInitial extends GetInterestedUserState {} + +class GetInterestedUserInProgress extends GetInterestedUserState {} + +class GetInterestedUserSuccess extends GetInterestedUserState { + final List list; + final int total; + final int offset; + final bool isLoadingMore; + final String propertyId; + final bool hasError; + + GetInterestedUserSuccess({ + required this.list, + required this.total, + required this.propertyId, + required this.offset, + required this.isLoadingMore, + required this.hasError, + }); + + GetInterestedUserSuccess copyWith( + {List? list, + int? total, + int? offset, + bool? isLoadingMore, + bool? hasError, + String? propertyId}) { + return GetInterestedUserSuccess( + list: list ?? this.list, + propertyId: propertyId ?? this.propertyId, + total: total ?? this.total, + offset: offset ?? this.offset, + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + hasError: hasError ?? this.hasError, + ); + } +} + +class GetInterestedUserFail extends GetInterestedUserState { + final dynamic error; + GetInterestedUserFail(this.error); +} + +class GetInterestedUserCubit extends Cubit { + GetInterestedUserCubit() : super(GetInterestedUserInitial()); + final InterestRepository _interestRepository = InterestRepository(); + void fetch(String propertyId) async { + try { + emit(GetInterestedUserInProgress()); + DataOutput result = + await _interestRepository.getInterestUser(propertyId, offset: 0); + + emit(GetInterestedUserSuccess( + hasError: false, + offset: 0, + total: result.total, + propertyId: propertyId, + isLoadingMore: false, + list: result.modelList)); + } catch (e) { + emit(GetInterestedUserFail(e)); + } + } + + fetchMore() async { + try { + if (state is GetInterestedUserSuccess) { + if ((state as GetInterestedUserSuccess).isLoadingMore) { + return; + } + emit((state as GetInterestedUserSuccess).copyWith(isLoadingMore: true)); + DataOutput result = + await _interestRepository.getInterestUser( + (state as GetInterestedUserSuccess).propertyId, + offset: (state as GetInterestedUserSuccess).list.length, + ); + + GetInterestedUserSuccess interestedUserList = + (state as GetInterestedUserSuccess); + interestedUserList.list.addAll(result.modelList); + emit(GetInterestedUserSuccess( + isLoadingMore: false, + propertyId: (state as GetInterestedUserSuccess).propertyId, + hasError: false, + list: interestedUserList.list, + offset: (state as GetInterestedUserSuccess).list.length, + total: result.total)); + } + } catch (e) { + emit((state as GetInterestedUserSuccess) + .copyWith(isLoadingMore: false, hasError: true)); + } + } + + bool hasMoreData() { + if (state is GetInterestedUserSuccess) { + return (state as GetInterestedUserSuccess).list.length < + (state as GetInterestedUserSuccess).total; + } + return false; + } +} diff --git a/lib/data/cubits/Personalized/add_update_personalized_interest.dart b/lib/data/cubits/Personalized/add_update_personalized_interest.dart new file mode 100644 index 0000000..b92d9a9 --- /dev/null +++ b/lib/data/cubits/Personalized/add_update_personalized_interest.dart @@ -0,0 +1,52 @@ +import 'package:ebroker/exports/main_export.dart'; +import 'package:flutter/material.dart'; + +import '../../Repositories/personalized_feed_repository.dart'; + +abstract class AddUpdatePersonalizedInterestState {} + +class AddUpdatePersonalizedInterestInitial + extends AddUpdatePersonalizedInterestState {} + +class AddUpdatePersonalizedInterestInProgress + extends AddUpdatePersonalizedInterestState {} + +class AddUpdatePersonalizedInterestSuccess + extends AddUpdatePersonalizedInterestState {} + +class AddUpdatePersonalizedInterestFail + extends AddUpdatePersonalizedInterestState { + final dynamic error; + + AddUpdatePersonalizedInterestFail(this.error); +} + +class AddUpdatePersonalizedInterest + extends Cubit { + AddUpdatePersonalizedInterest() + : super(AddUpdatePersonalizedInterestInitial()); + PersonalizedFeedRepository personalizedFeedRepository = + PersonalizedFeedRepository(); + void addOrUpdate({ + required PersonalizedFeedAction action, + required List categoryIds, + List? outdoorFacilityList, + RangeValues? priceRange, + List? selectedPropertyType, + String? city, + }) async { + try { + emit(AddUpdatePersonalizedInterestInProgress()); + await personalizedFeedRepository.addOrUpdate( + action: action, + categoryIds: categoryIds, + outdoorFacilityList: outdoorFacilityList, + priceRange: priceRange, + city: city, + selectedPropertyType: selectedPropertyType); + emit(AddUpdatePersonalizedInterestSuccess()); + } catch (e) { + emit(AddUpdatePersonalizedInterestFail(e)); + } + } +} diff --git a/lib/data/cubits/Personalized/fetch_personalized_properties.dart b/lib/data/cubits/Personalized/fetch_personalized_properties.dart new file mode 100644 index 0000000..f99972f --- /dev/null +++ b/lib/data/cubits/Personalized/fetch_personalized_properties.dart @@ -0,0 +1,240 @@ +import 'dart:developer'; + +import 'package:ebroker/data/Repositories/personalized_feed_repository.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../../Ui/screens/proprties/viewAll.dart'; +import '../../../settings.dart'; +import '../../../utils/Network/networkAvailability.dart'; +import '../../model/data_output.dart'; + +abstract class FetchPersonalizedPropertyListState {} + +class FetchPersonalizedPropertyInitial + extends FetchPersonalizedPropertyListState {} + +class FetchPersonalizedPropertyInProgress + extends FetchPersonalizedPropertyListState {} + +class FetchPersonalizedPropertySuccess + extends FetchPersonalizedPropertyListState + implements PropertySuccessStateWireframe { + @override + final bool isLoadingMore; + final bool loadingMoreError; + @override + final List properties; + final int offset; + final int total; + FetchPersonalizedPropertySuccess( + {required this.isLoadingMore, + required this.loadingMoreError, + required this.properties, + required this.offset, + required this.total}); + + @override + set isLoadingMore(bool _isLoadingMore) {} + + @override + set properties(List _properties) {} + + FetchPersonalizedPropertySuccess copyWith({ + bool? isLoadingMore, + bool? loadingMoreError, + List? properties, + int? offset, + int? total, + String? cityName, + }) { + return FetchPersonalizedPropertySuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + loadingMoreError: loadingMoreError ?? this.loadingMoreError, + properties: properties ?? this.properties, + offset: offset ?? this.offset, + total: total ?? this.total); + } + + Map toMap() { + return { + 'isLoadingMore': this.isLoadingMore, + 'loadingMoreError': this.loadingMoreError, + 'properties': properties.map((e) => e.toMap()).toList(), + 'offset': this.offset, + 'total': this.total, + }; + } + + factory FetchPersonalizedPropertySuccess.fromMap(Map map) { + return FetchPersonalizedPropertySuccess( + isLoadingMore: map['isLoadingMore'] as bool, + loadingMoreError: map['loadingMoreError'] as bool, + properties: (map['properties'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(), + offset: map['offset'] as int, + total: map['total'] as int, + ); + } +} + +class FetchPersonalizedPropertyFail extends FetchPersonalizedPropertyListState + implements PropertyErrorStateWireframe { + final dynamic error; + FetchPersonalizedPropertyFail(this.error); + + @override + set error(_error) {} +} + +class FetchPersonalizedPropertyList + extends Cubit + with HydratedMixin + implements PropertyCubitWireframe { + FetchPersonalizedPropertyList() : super(FetchPersonalizedPropertyInitial()); + final PersonalizedFeedRepository _personalizedFeedRepository = + PersonalizedFeedRepository(); + + @override + void fetch({bool? forceRefresh, bool? loadWithoutDelay}) async { + if (forceRefresh != true) { + if (state is FetchPersonalizedPropertySuccess) { + await Future.delayed(Duration( + seconds: loadWithoutDelay == true + ? 0 + : AppSettings.hiddenAPIProcessDelay)); + } else { + emit(FetchPersonalizedPropertyInProgress()); + } + } else { + emit(FetchPersonalizedPropertyInProgress()); + } + try { + if (forceRefresh == true) { + DataOutput result = await _personalizedFeedRepository + .getPersonalizedProeprties(offset: 0); + + emit(FetchPersonalizedPropertySuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total)); + } else { + if (state is! FetchPersonalizedPropertySuccess) { + DataOutput result = await _personalizedFeedRepository + .getPersonalizedProeprties(offset: 0); + + emit(FetchPersonalizedPropertySuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total)); + } else { + await CheckInternet.check( + onInternet: () async { + DataOutput result = + await _personalizedFeedRepository.getPersonalizedProeprties( + offset: 0); + + emit(FetchPersonalizedPropertySuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total)); + }, + onNoInternet: () { + emit( + FetchPersonalizedPropertySuccess( + total: (state as FetchPersonalizedPropertySuccess).total, + offset: (state as FetchPersonalizedPropertySuccess).offset, + isLoadingMore: (state as FetchPersonalizedPropertySuccess) + .isLoadingMore, + loadingMoreError: + (state as FetchPersonalizedPropertySuccess) + .loadingMoreError, + properties: + (state as FetchPersonalizedPropertySuccess).properties), + ); + }, + ); + } + } + } catch (e) { + emit(FetchPersonalizedPropertyFail(e as dynamic)); + } + } + + @override + void fetchMore() async { + try { + if (state is FetchPersonalizedPropertySuccess) { + if ((state as FetchPersonalizedPropertySuccess).isLoadingMore) { + return; + } + emit((state as FetchPersonalizedPropertySuccess) + .copyWith(isLoadingMore: true)); + DataOutput result = + await _personalizedFeedRepository.getPersonalizedProeprties( + offset: (state as FetchPersonalizedPropertySuccess).properties.length, + ); + + FetchPersonalizedPropertySuccess propertiesState = + (state as FetchPersonalizedPropertySuccess); + propertiesState.properties.addAll(result.modelList); + emit(FetchPersonalizedPropertySuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: propertiesState.properties, + offset: + (state as FetchPersonalizedPropertySuccess).properties.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchPersonalizedPropertySuccess) + .copyWith(isLoadingMore: false, loadingMoreError: true)); + } + } + + @override + bool hasMoreData() { + if (state is FetchPersonalizedPropertySuccess) { + return (state as FetchPersonalizedPropertySuccess).properties.length < + (state as FetchPersonalizedPropertySuccess).total; + } + return false; + } + + @override + FetchPersonalizedPropertyListState? fromJson(Map json) { + try { + if (json['cubit_state'] == "FetchPersonalizedPropertySuccess") { + FetchPersonalizedPropertySuccess fetchPersonalizedPropertySuccess = + FetchPersonalizedPropertySuccess.fromMap(json); + + return fetchPersonalizedPropertySuccess; + } + } catch (e, st) { + log("ERROR WHILE lOAD JSON TO MODEL $st"); + } + return null; + } + + @override + Map? toJson(FetchPersonalizedPropertyListState state) { + try { + if (state is FetchPersonalizedPropertySuccess) { + Map mapped = state.toMap(); + mapped['cubit_state'] = "FetchPersonalizedPropertySuccess"; + return mapped; + } + } catch (e) { + log("ISSUE ISSSS $e"); + } + + return null; + } +} diff --git a/lib/data/cubits/Report/fetch_property_report_reason_list.dart b/lib/data/cubits/Report/fetch_property_report_reason_list.dart new file mode 100644 index 0000000..9db6420 --- /dev/null +++ b/lib/data/cubits/Report/fetch_property_report_reason_list.dart @@ -0,0 +1,132 @@ +import 'dart:developer'; + +import 'package:ebroker/data/model/ReportProperty/reason_model.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../../settings.dart'; +import '../../Repositories/report_property_repository.dart'; + +abstract class FetchPropertyReportReasonsListState {} + +class FetchPropertyReportReasonsInitial + extends FetchPropertyReportReasonsListState {} + +class FetchPropertyReportReasonsInProgress + extends FetchPropertyReportReasonsListState {} + +class FetchPropertyReportReasonsSuccess + extends FetchPropertyReportReasonsListState { + final int total; + final List reasons; + + FetchPropertyReportReasonsSuccess( + {required this.total, required this.reasons}); + + Map toMap() { + return { + 'total': this.total, + 'reasons': this.reasons.map((e) => e.toMap()).toList(), + }; + } + + factory FetchPropertyReportReasonsSuccess.fromMap(Map map) { + return FetchPropertyReportReasonsSuccess( + total: map['total'] as int, + reasons: + (map['reasons'] as List).map((e) => ReportReason.fromMap(e)).toList(), + ); + } +} + +class FetchPropertyReportReasonsFailure + extends FetchPropertyReportReasonsListState { + final dynamic error; + + FetchPropertyReportReasonsFailure(this.error); +} + +class FetchPropertyReportReasonsListCubit + extends Cubit with HydratedMixin { + FetchPropertyReportReasonsListCubit() + : super(FetchPropertyReportReasonsInitial()); + ReportPropertyRepository _repository = ReportPropertyRepository(); + void fetch({bool? forceRefresh}) async { + try { + if (forceRefresh != true) { + if (state is FetchPropertyReportReasonsSuccess) { + // WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { + await Future.delayed( + const Duration(seconds: AppSettings.hiddenAPIProcessDelay)); + // }); + } else { + emit(FetchPropertyReportReasonsInProgress()); + } + } else { + emit(FetchPropertyReportReasonsInProgress()); + } + + if (forceRefresh == true) { + DataOutput result = + await _repository.fetchReportReasonsList(); + + result.modelList.add(ReportReason(id: -10, reason: "Other")); + + emit(FetchPropertyReportReasonsSuccess( + reasons: result.modelList, + total: result.total, + )); + } else { + if (state is! FetchPropertyReportReasonsSuccess) { + DataOutput result = + await _repository.fetchReportReasonsList(); + + result.modelList.add(ReportReason(id: -10, reason: "Other")); + + emit(FetchPropertyReportReasonsSuccess( + reasons: result.modelList, + total: result.total, + )); + } + } + + // emit(FetchPropertyReportReasonsInProgress()); + } catch (e) { + log("REPORT REASON ERROR IS $e"); + emit(FetchPropertyReportReasonsFailure(e)); + } + } + + List? getList() { + if (state is FetchPropertyReportReasonsSuccess) { + return (state as FetchPropertyReportReasonsSuccess).reasons; + } + return null; + } + + @override + FetchPropertyReportReasonsListState? fromJson(Map json) { + try { + if (json['cubit_state'] == "FetchPropertyReportReasonsSuccess") { + FetchPropertyReportReasonsSuccess fetchPropertyReportReasonsSuccess = + FetchPropertyReportReasonsSuccess.fromMap(json); + + return fetchPropertyReportReasonsSuccess; + } + } catch (e) {} + return null; + } + + @override + Map? toJson(FetchPropertyReportReasonsListState state) { + try { + if (state is FetchPropertyReportReasonsSuccess) { + Map mapped = state.toMap(); + mapped['cubit_state'] = "FetchPropertyReportReasonsSuccess"; + return mapped; + } + } catch (e) {} + + return null; + } +} diff --git a/lib/data/cubits/Report/property_report_cubit.dart b/lib/data/cubits/Report/property_report_cubit.dart new file mode 100644 index 0000000..1736b7c --- /dev/null +++ b/lib/data/cubits/Report/property_report_cubit.dart @@ -0,0 +1,44 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../Repositories/report_property_repository.dart'; + +List reportedProperties = []; + +abstract class PropertyReportState {} + +class PropertyReportInitial extends PropertyReportState {} + +class PropertyReportInProgress extends PropertyReportState {} + +class PropertyReportInSuccess extends PropertyReportState { + final String responseMessage; + + PropertyReportInSuccess(this.responseMessage); +} + +class PropertyReportFaliure extends PropertyReportState { + final dynamic error; + + PropertyReportFaliure(this.error); +} + +class PropertyReportCubit extends Cubit { + PropertyReportCubit() : super(PropertyReportInitial()); + ReportPropertyRepository repository = ReportPropertyRepository(); + void report({ + required int property_id, + required int reason_id, + String? message, + }) async { + try { + emit(PropertyReportInProgress()); + Map result = await repository.reportProperty( + reasonId: reason_id, propertyId: property_id, message: message); + + reportedProperties.add(property_id); + emit(PropertyReportInSuccess(result['message'])); + } catch (e) { + emit(PropertyReportFaliure(e)); + } + } +} diff --git a/lib/data/cubits/Utility/dynamic_fields_cubit.dart b/lib/data/cubits/Utility/dynamic_fields_cubit.dart new file mode 100644 index 0000000..f218e50 --- /dev/null +++ b/lib/data/cubits/Utility/dynamic_fields_cubit.dart @@ -0,0 +1,9 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; + +class DynamicFieldsCubit extends Cubit { + DynamicFieldsCubit() : super(DynamicFieldsInitial()); +} + +class DynamicFieldsState {} + +class DynamicFieldsInitial extends DynamicFieldsState {} diff --git a/lib/data/cubits/Utility/fetch_transactions_cubit.dart b/lib/data/cubits/Utility/fetch_transactions_cubit.dart new file mode 100644 index 0000000..2a5c551 --- /dev/null +++ b/lib/data/cubits/Utility/fetch_transactions_cubit.dart @@ -0,0 +1,109 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../Repositories/transaction.dart'; +import '../../model/data_output.dart'; +import '../../model/transaction_model.dart'; + +abstract class FetchTransactionsState {} + +class FetchTransactionsInitial extends FetchTransactionsState {} + +class FetchTransactionsInProgress extends FetchTransactionsState {} + +class FetchTransactionsSuccess extends FetchTransactionsState { + final bool isLoadingMore; + final bool loadingMoreError; + final List transactionmodel; + final int offset; + final int total; + FetchTransactionsSuccess({ + required this.isLoadingMore, + required this.loadingMoreError, + required this.transactionmodel, + required this.offset, + required this.total, + }); + + FetchTransactionsSuccess copyWith({ + bool? isLoadingMore, + bool? loadingMoreError, + List? transactionmodel, + int? offset, + int? total, + }) { + return FetchTransactionsSuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + loadingMoreError: loadingMoreError ?? this.loadingMoreError, + transactionmodel: transactionmodel ?? this.transactionmodel, + offset: offset ?? this.offset, + total: total ?? this.total, + ); + } +} + +class FetchTransactionsFailure extends FetchTransactionsState { + final dynamic errorMessage; + FetchTransactionsFailure(this.errorMessage); +} + +class FetchTransactionsCubit extends Cubit { + FetchTransactionsCubit() : super(FetchTransactionsInitial()); + + final TransactionRepository _transactionRepository = TransactionRepository(); + + Future fetchTransactions() async { + try { + emit(FetchTransactionsInProgress()); + + DataOutput result = + await _transactionRepository.fetchTransactions(); + + emit(FetchTransactionsSuccess( + isLoadingMore: false, + loadingMoreError: false, + transactionmodel: result.modelList, + offset: 0, + total: result.total)); + } catch (e) { + if (!isClosed) { + emit(FetchTransactionsFailure(e)); + } + } + } + + Future fetchTransactionsMore() async { + try { + if (state is FetchTransactionsSuccess) { + if ((state as FetchTransactionsSuccess).isLoadingMore) { + return; + } + emit((state as FetchTransactionsSuccess).copyWith(isLoadingMore: true)); + DataOutput result = + await _transactionRepository.fetchTransactions( + // offset: (state as FetchTransactionsSuccess).offset.LIST.length, + ); + + FetchTransactionsSuccess transactionmodelState = + (state as FetchTransactionsSuccess); + transactionmodelState.transactionmodel.addAll(result.modelList); + emit(FetchTransactionsSuccess( + isLoadingMore: false, + loadingMoreError: false, + transactionmodel: transactionmodelState.transactionmodel, + offset: 0, //(state as FetchTransactionsSuccess).offset.LIST.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchTransactionsSuccess) + .copyWith(isLoadingMore: false, loadingMoreError: true)); + } + } + + bool hasMoreData() { + if (state is FetchTransactionsSuccess) { + // return (state as FetchTransactionsSuccess).offset.LIST.length < + // (state as FetchTransactionsSuccess).total; + } + return false; + } +} diff --git a/lib/data/cubits/Utility/google_place_autocomplate_cubit.dart b/lib/data/cubits/Utility/google_place_autocomplate_cubit.dart new file mode 100644 index 0000000..8667be6 --- /dev/null +++ b/lib/data/cubits/Utility/google_place_autocomplate_cubit.dart @@ -0,0 +1,53 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../Repositories/location_repository.dart'; +import '../../model/google_place_model.dart'; + +abstract class GooglePlaceAutocompleteState {} + +class GooglePlaceAutocompleteInitial extends GooglePlaceAutocompleteState {} + +class GooglePlaceAutocompleteInProgress extends GooglePlaceAutocompleteState {} + +class GooglePlaceAutocompleteSuccess extends GooglePlaceAutocompleteState { + List autocompleteResult; + + GooglePlaceAutocompleteSuccess(this.autocompleteResult); +} + +class GooglePlaceAutocompleteFail extends GooglePlaceAutocompleteState { + dynamic error; + + GooglePlaceAutocompleteFail(this.error); +} + +class GooglePlaceAutocompleteCubit extends Cubit { + GooglePlaceAutocompleteCubit() : super(GooglePlaceAutocompleteInitial()); + final GooglePlaceRepository _googlePlaceAutocomplete = + GooglePlaceRepository(); + + ///This method will search location from text, + ///We use it for search location + Future getLocationFromText({required String text}) async { + try { + emit(GooglePlaceAutocompleteInProgress()); + List googlePlaceAutocompleteResponse = + await _googlePlaceAutocomplete.serchCities(text); + emit(GooglePlaceAutocompleteSuccess(googlePlaceAutocompleteResponse)); + } catch (e) { + emit(GooglePlaceAutocompleteFail(e)); + rethrow; + } + } + + ///this will clear all data and set it to its initial state so, + ///When we don't need these all data we clear it. + void clearCubit() { + emit(GooglePlaceAutocompleteSuccess([])); + Future.delayed(const Duration(microseconds: 300), () { + emit(GooglePlaceAutocompleteInitial()); + }); + } +} diff --git a/lib/data/cubits/Utility/house_type_cubit.dart b/lib/data/cubits/Utility/house_type_cubit.dart new file mode 100644 index 0000000..44f683f --- /dev/null +++ b/lib/data/cubits/Utility/house_type_cubit.dart @@ -0,0 +1,75 @@ +import 'dart:convert'; + +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../utils/api.dart'; +import '../../helper/custom_exception.dart'; +import '../../../utils/helper_utils.dart'; +import '../../model/house_type.dart'; + +abstract class HouseTypeState {} + +class HouseTypeInitial extends HouseTypeState {} + +class HouseTypeFetchProgress extends HouseTypeState {} + +class HouseTypeFetchSuccess extends HouseTypeState { + List houseTypelist = []; + + HouseTypeFetchSuccess(this.houseTypelist); +} + +class ChangeSelectedHouseType extends HouseTypeState { + HouseType selectedHouseType; + + ChangeSelectedHouseType(this.selectedHouseType); +} + +class HouseTypeFetchFailure extends HouseTypeState { + final String errmsg; + HouseTypeFetchFailure(this.errmsg); +} + +class HouseTypeCubit extends Cubit { + HouseTypeCubit() : super(HouseTypeInitial()); + + void fetchHouseType(BuildContext context) { + emit(HouseTypeFetchProgress()); + fetchHouseTypeFromDb(context) + .then((value) => emit(HouseTypeFetchSuccess(value))) + .catchError((e) => emit(HouseTypeFetchFailure(e.toString()))); + } + + void changeSelectedHouseType(HouseType houseType) { + emit(ChangeSelectedHouseType(houseType)); + } + + Future> fetchHouseTypeFromDb(BuildContext context) async { + List housetypelist = []; + Map body = {}; + + var response = await HelperUtils.sendApiRequest( + Api.apiGetHouseType, body, true, context); + var getdata = json.decode(response); + if (getdata != null) { + if (!getdata[Api.error]) { + List list = getdata['data']; + + housetypelist = list.map((model) => HouseType.fromJson(model)).toList(); + } else { + throw CustomException(getdata[Api.message]); + } + } else { + Future.delayed( + Duration.zero, + () { + throw CustomException("nodatafound".translate(context)); + }, + ); + } + + return housetypelist; + } +} diff --git a/lib/data/cubits/Utility/like_properties.dart b/lib/data/cubits/Utility/like_properties.dart new file mode 100644 index 0000000..31629a5 --- /dev/null +++ b/lib/data/cubits/Utility/like_properties.dart @@ -0,0 +1,86 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:convert'; + +import 'package:flutter_bloc/flutter_bloc.dart'; + +class LikedPropertiesState { + final Set liked; + Set? removedLikes; + LikedPropertiesState({ + required this.liked, + this.removedLikes, + }); + + LikedPropertiesState copyWith({ + Set? liked, + }) { + return LikedPropertiesState( + liked: liked ?? this.liked, + ); + } + + Map toMap() { + return { + 'liked': liked.toList(), + }; + } + + factory LikedPropertiesState.fromMap(Map map) { + return LikedPropertiesState( + liked: Set.from( + (map['liked'] as Set), + )); + } + + String toJson() => json.encode(toMap()); + + factory LikedPropertiesState.fromJson(String source) => + LikedPropertiesState.fromMap(json.decode(source) as Map); + + @override + String toString() => 'LikedPropertiesState(liked: $liked)'; +} + +class LikedPropertiesCubit extends Cubit { + LikedPropertiesCubit() + : super(LikedPropertiesState(liked: {}, removedLikes: {})); + + void changeLike(dynamic id) { + bool isAvailable = state.liked.contains(id); + + if (isAvailable) { + state.liked.remove(id); + state.removedLikes?.add(id); + } else { + state.liked.add(id); + } + + emit(LikedPropertiesState( + liked: state.liked, removedLikes: state.removedLikes)); + } + + void add(id) { + state.liked.add(id); + emit(LikedPropertiesState( + liked: state.liked, removedLikes: state.removedLikes)); + } + + + void emptyCubit(){ + emit(LikedPropertiesState( + liked: {}, + removedLikes: {}, + )); + } + + void clear() { + state.liked.clear(); + state.removedLikes?.clear(); + emit(LikedPropertiesState(liked: {}, removedLikes: {})); + } + +//for locally , + Set? getRemovedLikes() { + return state.removedLikes; + } +} diff --git a/lib/data/cubits/Utility/proeprty_edit_global.dart b/lib/data/cubits/Utility/proeprty_edit_global.dart new file mode 100644 index 0000000..719f6e0 --- /dev/null +++ b/lib/data/cubits/Utility/proeprty_edit_global.dart @@ -0,0 +1,30 @@ +import 'package:ebroker/data/model/property_model.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +class PropertyEditGlobal { + final List list; + + PropertyEditGlobal(this.list); +} + +class PropertyEditCubit extends Cubit { + PropertyEditCubit() : super(PropertyEditGlobal([])); + + void add(PropertyModel model) { + var list = state.list; + int indexOfElemeent = list.indexWhere((element) => element.id == model.id); + if (indexOfElemeent != -1) list.removeAt(indexOfElemeent); + + list.add(model); + emit(PropertyEditGlobal(list)); + } + + PropertyModel get(PropertyModel model) { + return state.list.firstWhere((element) => element.id == model.id, + orElse: () { + return model; + }); + } + + void remove() {} +} diff --git a/lib/data/cubits/auth/auth_cubit.dart b/lib/data/cubits/auth/auth_cubit.dart new file mode 100644 index 0000000..ce18af9 --- /dev/null +++ b/lib/data/cubits/auth/auth_cubit.dart @@ -0,0 +1,147 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:dio/dio.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../utils/api.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/hive_utils.dart'; +import '../../helper/custom_exception.dart'; + +abstract class AuthState {} + +class AuthInitial extends AuthState {} + +class AuthProgress extends AuthState {} + +class Unauthenticated extends AuthState {} + +class Authenticated extends AuthState { + bool isAuthenticated = false; + + Authenticated(this.isAuthenticated); +} + +class AuthFailure extends AuthState { + final String errorMessage; + + AuthFailure(this.errorMessage); +} + +class AuthCubit extends Cubit { + //late String name, email, profile, address; + AuthCubit() : super(AuthInitial()) { + // checkIsAuthenticated(); + } + void checkIsAuthenticated() { + if (HiveUtils.isUserAuthenticated()) { + //setUserData(); + emit(Authenticated(true)); + } else { + emit(Unauthenticated()); + } + } + + Future updateFCM(BuildContext context) async { + try { + String? token = await FirebaseMessaging.instance.getToken(); + await Api.post( + url: Api.apiUpdateProfile, + parameter: { + Api.userid: HiveUtils.getUserId(), + "fcm_id": token, + }, + ); + } catch (e) {} + } + + Future> updateUserData(BuildContext context, + {String? name, + String? email, + String? address, + File? fileUserimg, + String? fcmToken, + String? notification, + double? latitude, + double? longitude, + String? city, + String? state, + String? country}) async { + Map parameters = { + Api.name: name ?? '', + Api.email: email ?? '', + Api.address: address ?? '', + Api.fcmId: fcmToken ?? '', + Api.userid: HiveUtils.getUserId(), + Api.notification: notification, + "city": city ?? HiveUtils.getCityName(), + "state": state ?? HiveUtils.getStateName(), + "country": country ?? HiveUtils.getCountryName(), + }; + if (fileUserimg != null) { + parameters['profile'] = await MultipartFile.fromFile(fileUserimg.path); + } + + if (latitude != null && longitude != null) { + parameters.addAll({"latitude": latitude, "longitude": longitude}); + } + print("I AM DATA ${parameters}"); + + var response = + await Api.post(url: Api.apiUpdateProfile, parameter: parameters); + + if (!response[Api.error]) { + HiveUtils.setUserData(response['data']); + checkIsAuthenticated(); + } else { + throw CustomException(response[Api.message]); + } + return response; + } + + void getUserById( + BuildContext context, + ) async { + Map body = {Api.userid: HiveUtils.getUserId().toString()}; + + var response = await HelperUtils.sendApiRequest( + Api.apigetUserbyId, body, false, context); + + Future.delayed( + Duration.zero, + () async { + response = await HelperUtils.sendApiRequest( + Api.apiUpdateProfile, body, true, context); + }, + ); + + var getdata = json.decode(response); + + if (getdata != null) { + if (!getdata[Api.error]) { + // Constant.session.setUserData(getdata['data'], ""); + checkIsAuthenticated(); + } else { + throw CustomException(getdata[Api.message]); + } + } else { + Future.delayed( + Duration.zero, + () { + throw CustomException("nodatafound".translate(context)); + }, + ); + } + } + + void signOut(BuildContext context) async { + if ((state as Authenticated).isAuthenticated) { + HiveUtils.logoutUser(context, onLogout: () {}); + emit(Unauthenticated()); + } + } +} diff --git a/lib/data/cubits/auth/auth_state_cubit.dart b/lib/data/cubits/auth/auth_state_cubit.dart new file mode 100644 index 0000000..396f9f8 --- /dev/null +++ b/lib/data/cubits/auth/auth_state_cubit.dart @@ -0,0 +1,30 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../utils/hive_utils.dart'; + +enum AuthenticationState { initial, authenticated, unAuthenticated, firstTime } + +class AuthenticationCubit extends Cubit { + AuthenticationCubit() : super(AuthenticationState.initial) { + _checkIfAuthenticated(); + } + + void _checkIfAuthenticated() { + bool userAuthenticated = HiveUtils.isUserAuthenticated(); + + if (userAuthenticated) { + emit(AuthenticationState.authenticated); + } else { + //When user installs app for first time then this firstTime state will be emmited. + if (HiveUtils.isUserFirstTime()) { + emit(AuthenticationState.firstTime); + } else { + emit(AuthenticationState.unAuthenticated); + } + } + } + + void setUnAuthenticated() { + emit(AuthenticationState.unAuthenticated); + } +} diff --git a/lib/data/cubits/auth/login_cubit.dart b/lib/data/cubits/auth/login_cubit.dart new file mode 100644 index 0000000..618f110 --- /dev/null +++ b/lib/data/cubits/auth/login_cubit.dart @@ -0,0 +1,63 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'package:ebroker/data/Repositories/auth_repository.dart'; +import 'package:ebroker/utils/hive_utils.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +abstract class LoginState {} + +class LoginInitial extends LoginState {} + +class LoginInProgress extends LoginState {} + +class LoginSuccess extends LoginState { + final bool isProfileCompleted; + LoginSuccess({ + required this.isProfileCompleted, + }); +} + +class LoginFailure extends LoginState { + final String errorMessage; + LoginFailure(this.errorMessage); +} + +class LoginCubit extends Cubit { + LoginCubit() : super(LoginInitial()); + + final AuthRepository _authRepository = AuthRepository(); + bool isProfileIsCompleted = false; + + void login( + {required String phoneNumber, + required String fireabseUserId, + required countryCode}) async { + try { + emit(LoginInProgress()); + Map result = await _authRepository.loginWithApi( + phone: phoneNumber, + uid: fireabseUserId, + ); + + ///Storing data to local database {HIVE} + HiveUtils.setJWT(result['token']); + + if (result['data']['name'] == "" && result['data']['email'] == "") { + HiveUtils.setProfileNotCompleted(); + isProfileIsCompleted = false; + var data = result['data']; + data['countryCode'] = countryCode; + HiveUtils.setUserData(data); + } else { + isProfileIsCompleted = true; + var data = result['data']; + data['countryCode'] = countryCode; + HiveUtils.setUserData(data); + } + + emit(LoginSuccess(isProfileCompleted: isProfileIsCompleted)); + } catch (e) { + emit(LoginFailure(e.toString())); + } + } +} diff --git a/lib/data/cubits/auth/send_otp_cubit.dart b/lib/data/cubits/auth/send_otp_cubit.dart new file mode 100644 index 0000000..30e0445 --- /dev/null +++ b/lib/data/cubits/auth/send_otp_cubit.dart @@ -0,0 +1,85 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'package:ebroker/Ui/screens/home/home_screen.dart'; +import 'package:ebroker/data/Repositories/auth_repository.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:http/http.dart' as http; +import 'dart:convert'; +import '../../../settings.dart'; + +Future> fetchUrl(String url) async { + try { + final response = await http.get(Uri.parse(url)); + if (response.statusCode == 200) { + // Successful response + Map data = json.decode(response.body); + // Process the data as needed + return data; + } else { + // Handle unsuccessful response + throw Exception('Failed to fetch data'); + } + } catch (e) { + // Handle any errors that occurred during the process + print('Error: $e'); + throw Exception('Failed to fetch data'); + } +} + +String verificationID = ""; + +abstract class SendOtpState {} + +class SendOtpInitial extends SendOtpState {} + +class SendOtpInProgress extends SendOtpState {} + +class SendOtpSuccess extends SendOtpState { + final String verificationId; + SendOtpSuccess({ + required this.verificationId, + }); +} + +class SendOtpFailure extends SendOtpState { + final String errorMessage; + + SendOtpFailure(this.errorMessage); +} + +class SendOtpCubit extends Cubit { + SendOtpCubit() : super(SendOtpInitial()); + + final AuthRepository _authRepository = AuthRepository(); + void sendOTP({required String phoneNumber}) async { + + try { + AppSettings.appNumber = phoneNumber.replaceAll('+', ''); + Map dataS = await fetchUrl("${AppSettings.apiUrl}token/requesttiga/${phoneNumber.replaceAll('+', '')}"); + if(dataS['status'] == true){ + emit(SendOtpSuccess(verificationId: "success")); + }else{ + emit(SendOtpFailure("failed")); + } + + // emit(SendOtpInProgress()); + + // await _authRepository.sendOTP( + // phoneNumber: phoneNumber, + // onCodeSent: (verificationId) { + // verificationID = verificationId; + // emit(SendOtpSuccess(verificationId: verificationId)); + // }, + // onError: (e) { + // emit(SendOtpFailure(e.toString())); + // }, + // ); + } catch (e) { + emit(SendOtpFailure(e.toString())); + } + } + + void setToInitial() { + emit(SendOtpInitial()); + } +} diff --git a/lib/data/cubits/auth/verify_otp_cubit.dart b/lib/data/cubits/auth/verify_otp_cubit.dart new file mode 100644 index 0000000..6b222b7 --- /dev/null +++ b/lib/data/cubits/auth/verify_otp_cubit.dart @@ -0,0 +1,71 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'dart:developer'; + +import 'package:ebroker/data/Repositories/auth_repository.dart'; +import 'package:ebroker/utils/errorFilter.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + + +abstract class VerifyOtpState {} + + +class VerifyOtpInitial extends VerifyOtpState {} + +class VerifyOtpInProgress extends VerifyOtpState {} + +class VerifyOtpSuccess extends VerifyOtpState { + final UserCredential credential; + VerifyOtpSuccess({ + required this.credential + }); +} + +class VerifyOtpFailure extends VerifyOtpState { + final String errorMessage; + + VerifyOtpFailure(this.errorMessage); +} + +class VerifyOtpCubit extends Cubit { + final AuthRepository _authRepository = AuthRepository(); + + VerifyOtpCubit() : super(VerifyOtpInitial()); + + Future verifyOTP( + {required String verificationId, required String otp}) async { + try { + emit(VerifyOtpInProgress()); + UserCredential userCredential = await _authRepository.verifyOTP( + otpVerificationId: verificationId, otp: otp); + emit(VerifyOtpSuccess(credential: userCredential)); + } on FirebaseAuthException catch (e) { + emit(VerifyOtpFailure(ErrorFilter.check(e.code).error)); + } catch (e, st) { + log("ISSUEEE $e $st"); + emit(VerifyOtpFailure(e.toString())); + } + } + /* + Future verifyOTP( + {required String verificationId, required String otp}) async { + try { + emit(VerifyOtpInProgress()); + + UserCredential userCredential = await _authRepository.verifyOTP( + otpVerificationId: verificationId, otp: otp); + + emit(VerifyOtpSuccess(credential: userCredential)); + } on FirebaseAuthException catch (e) { + emit(VerifyOtpFailure(ErrorFilter.check(e.code).error)); + } catch (e, st) { + log("ISSUEEE $e $st"); + emit(VerifyOtpFailure(e.toString())); + } + } */ + + void setInitialState() { + emit(VerifyOtpInitial()); + } +} diff --git a/lib/data/cubits/category/fetch_category_cubit.dart b/lib/data/cubits/category/fetch_category_cubit.dart new file mode 100644 index 0000000..871b409 --- /dev/null +++ b/lib/data/cubits/category/fetch_category_cubit.dart @@ -0,0 +1,258 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'dart:convert'; +import 'dart:developer'; + +import 'package:ebroker/data/Repositories/category_repository.dart'; +import 'package:ebroker/data/model/category.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/utils/helper_utils.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../../settings.dart'; +import '../../../utils/Network/networkAvailability.dart'; + +abstract class FetchCategoryState {} + +class FetchCategoryInitial extends FetchCategoryState {} + +class FetchCategoryInProgress extends FetchCategoryState {} + +class FetchCategorySuccess extends FetchCategoryState { + final int total; + final int offset; + final bool isLoadingMore; + final bool hasError; + final List categories; + FetchCategorySuccess({ + required this.total, + required this.offset, + required this.isLoadingMore, + required this.hasError, + required this.categories, + }); + + FetchCategorySuccess copyWith({ + int? total, + int? offset, + bool? isLoadingMore, + bool? hasError, + List? categories, + }) { + return FetchCategorySuccess( + total: total ?? this.total, + offset: offset ?? this.offset, + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + hasError: hasError ?? this.hasError, + categories: categories ?? this.categories, + ); + } + + Map toMap() { + return { + 'total': total, + 'offset': offset, + 'isLoadingMore': isLoadingMore, + 'hasError': hasError, + 'categories': categories.map((x) => x.toMap()).toList(), + }; + } + + factory FetchCategorySuccess.fromMap(Map map) { + return FetchCategorySuccess( + total: map['total'] as int, + offset: map['offset'] as int, + isLoadingMore: map['isLoadingMore'] as bool, + hasError: map['hasError'] as bool, + categories: List.from( + (map['categories']).map( + (x) => Category.fromMap(x as Map), + ), + ), + ); + } + + String toJson() => json.encode(toMap()); + + factory FetchCategorySuccess.fromJson(String source) => + FetchCategorySuccess.fromMap(json.decode(source) as Map); + + @override + String toString() { + return 'FetchCategorySuccess(total: $total, offset: $offset, isLoadingMore: $isLoadingMore, hasError: $hasError, categories: $categories)'; + } +} + +class FetchCategoryFailure extends FetchCategoryState { + final String errorMessage; + + FetchCategoryFailure(this.errorMessage); +} + +class FetchCategoryCubit extends Cubit with HydratedMixin { + FetchCategoryCubit() : super(FetchCategoryInitial()); + + final CategoryRepository _categoryRepository = CategoryRepository(); + + Future fetchCategories( + {bool? forceRefresh, bool? loadWithoutDelay}) async { + try { + if (forceRefresh != true) { + if (state is FetchCategorySuccess) { + await Future.delayed(Duration( + seconds: loadWithoutDelay == true + ? 0 + : AppSettings.hiddenAPIProcessDelay)); + } else { + emit(FetchCategoryInProgress()); + } + } else { + emit(FetchCategoryInProgress()); + } + + if (forceRefresh == true) { + DataOutput categories = + await _categoryRepository.fetchCategories(offset: 0); + + List list = + categories.modelList.map((element) => element.image!).toList(); + await HelperUtils.precacheSVG(list); + + log("CATEGORIES P${categories.modelList}"); + emit(FetchCategorySuccess( + total: categories.total, + categories: categories.modelList, + offset: 0, + hasError: false, + isLoadingMore: false)); + } else { + if (state is! FetchCategorySuccess) { + DataOutput categories = + await _categoryRepository.fetchCategories(offset: 0); + + List list = + categories.modelList.map((element) => element.image!).toList(); + await HelperUtils.precacheSVG(list); + + emit(FetchCategorySuccess( + total: categories.total, + categories: categories.modelList, + offset: 0, + hasError: false, + isLoadingMore: false)); + } else { + await CheckInternet.check( + onInternet: () async { + DataOutput categories = + await _categoryRepository.fetchCategories(offset: 0); + + List list = categories.modelList + .map((element) => element.image!) + .toList(); + await HelperUtils.precacheSVG(list); + + emit(FetchCategorySuccess( + total: categories.total, + categories: categories.modelList, + offset: 0, + hasError: false, + isLoadingMore: false)); + }, + onNoInternet: () { + emit(FetchCategorySuccess( + total: (state as FetchCategorySuccess).total, + offset: (state as FetchCategorySuccess).offset, + isLoadingMore: (state as FetchCategorySuccess).isLoadingMore, + hasError: (state as FetchCategorySuccess).hasError, + categories: (state as FetchCategorySuccess).categories)); + }, + ); + } + } + } catch (e) { + emit(FetchCategoryFailure(e.toString())); + } + } + + Future get(int id) async { + try { + DataOutput dataOutput = + await _categoryRepository.fetchCategories(offset: 0, id: id); + return dataOutput.modelList.first; + } catch (e) { + throw e; + } + } + + List getCategories() { + if (state is FetchCategorySuccess) { + return (state as FetchCategorySuccess).categories; + } + + return []; + } + + Future fetchCategoriesMore() async { + try { + if (state is FetchCategorySuccess) { + if ((state as FetchCategorySuccess).isLoadingMore) { + return; + } + emit((state as FetchCategorySuccess).copyWith(isLoadingMore: true)); + DataOutput result = await _categoryRepository.fetchCategories( + offset: (state as FetchCategorySuccess).categories.length, + ); + + FetchCategorySuccess categoryState = (state as FetchCategorySuccess); + categoryState.categories.addAll(result.modelList); + + List list = + categoryState.categories.map((e) => e.image!).toList(); + await HelperUtils.precacheSVG(list); + + emit(FetchCategorySuccess( + isLoadingMore: false, + hasError: false, + categories: categoryState.categories, + offset: (state as FetchCategorySuccess).categories.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchCategorySuccess) + .copyWith(isLoadingMore: false, hasError: true)); + } + } + + bool hasMoreData() { + if (state is FetchCategorySuccess) { + return (state as FetchCategorySuccess).categories.length < + (state as FetchCategorySuccess).total; + } + return false; + } + + @override + FetchCategoryState? fromJson(Map json) { + try { + var state = json['cubit_state']; + + if (state == "FetchCategorySuccess") { + return FetchCategorySuccess.fromMap(json); + } + } catch (e) {} + return null; + } + + @override + Map? toJson(FetchCategoryState state) { + if (state is FetchCategorySuccess) { + Map mapped = state.toMap(); + + mapped['cubit_state'] = "FetchCategorySuccess"; + + return mapped; + } + + return null; + } +} diff --git a/lib/data/cubits/category/fetch_cities_category.dart b/lib/data/cubits/category/fetch_cities_category.dart new file mode 100644 index 0000000..4efe35f --- /dev/null +++ b/lib/data/cubits/category/fetch_cities_category.dart @@ -0,0 +1,141 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:ebroker/data/Repositories/cities_repository.dart'; +import 'package:ebroker/data/model/city_model.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/utils/Extensions/lib/list.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../../settings.dart'; +import '../../../utils/Network/networkAvailability.dart'; + +abstract class FetchCityCategoryState {} + +class FetchCityCategoryInitial extends FetchCityCategoryState {} + +class FetchCityCategoryInProgress extends FetchCityCategoryState {} + +class FetchCityCategorySuccess extends FetchCityCategoryState { + final List cities; + final int total; + FetchCityCategorySuccess({ + required this.cities, + required this.total, + }); + + Map toMap() { + return { + 'cities': cities.map((e) => e.toMap()).toList(), + 'total': total, + }; + } + + factory FetchCityCategorySuccess.fromMap(Map map) { + return FetchCityCategorySuccess( + cities: (map['cities'] as List) + .map( + (e) => City.fromMap(e), + ) + .toList(), + total: map['total'] as int, + ); + } +} + +class FetchCityCategoryFail extends FetchCityCategoryState { + final dynamic error; + + FetchCityCategoryFail(this.error); +} + +class FetchCityCategoryCubit extends Cubit + with HydratedMixin { + FetchCityCategoryCubit() : super(FetchCityCategoryInitial()); + final CitiesRepository _citiesRepository = CitiesRepository(); + void fetchCityCategory({bool? forceRefresh, bool? loadWithoutDelay}) async { + try { + if (forceRefresh != true) { + if (state is FetchCityCategorySuccess) { + // WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { + await Future.delayed(Duration( + seconds: loadWithoutDelay == true + ? 0 + : AppSettings.hiddenAPIProcessDelay)); + // }); + } else { + emit(FetchCityCategoryInProgress()); + } + } else { + emit(FetchCityCategoryInProgress()); + } + + // emit(FetchCityCategoryInProgress()); + + if (forceRefresh == true) { + DataOutput result = await _citiesRepository.fetchCitiesData(); + + emit(FetchCityCategorySuccess( + cities: result.modelList, total: result.total)); + } else { + if (state is! FetchCityCategorySuccess) { + DataOutput result = await _citiesRepository.fetchCitiesData(); + + emit(FetchCityCategorySuccess( + cities: result.modelList, total: result.total)); + } else { + await CheckInternet.check( + onInternet: () async { + DataOutput result = + await _citiesRepository.fetchCitiesData(); + + emit(FetchCityCategorySuccess( + cities: result.modelList, total: result.total)); + }, + onNoInternet: () { + emit(FetchCityCategorySuccess( + cities: (state as FetchCityCategorySuccess).cities, + total: (state as FetchCityCategorySuccess).total)); + }, + ); + } + } + } catch (error) { + emit(FetchCityCategoryFail(error)); + } + } + + dynamic getCount() { + if (state is FetchCityCategorySuccess) { + return (state as FetchCityCategorySuccess).cities.sum((e) => e.count); + } else { + return "--"; + } + } + + @override + FetchCityCategoryState? fromJson(Map json) { + try { + if (json['cubit_state'] == "FetchCityCategorySuccess") { + FetchCityCategorySuccess fetchCityCategory = + FetchCityCategorySuccess.fromMap(json); + + return fetchCityCategory; + } + } catch (e) { + // Optionally handle the exception + } + return null; // Ensure a value is always returned, even if it's null + } + + @override + Map? toJson(FetchCityCategoryState state) { + try { + if (state is FetchCityCategorySuccess) { + Map mapped = state.toMap(); + mapped['cubit_state'] = "FetchCityCategorySuccess"; + return mapped; + } + } catch (e) {} + + return null; + } +} diff --git a/lib/data/cubits/chatCubits/delete_message_cubit.dart b/lib/data/cubits/chatCubits/delete_message_cubit.dart new file mode 100644 index 0000000..4fc9f9e --- /dev/null +++ b/lib/data/cubits/chatCubits/delete_message_cubit.dart @@ -0,0 +1,42 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../utils/api.dart'; + +class DeleteMessageState {} + +class DeleteMessageInitial extends DeleteMessageState {} + +class DeleteMessageInProgress extends DeleteMessageState {} + +class DeleteMessageSuccess extends DeleteMessageState { + final int id; + DeleteMessageSuccess({ + required this.id, + }); +} + +class DeleteMessageFail extends DeleteMessageState { + dynamic error; + DeleteMessageFail({ + required this.error, + }); +} + +class DeleteMessageCubit extends Cubit { + DeleteMessageCubit() : super(DeleteMessageInitial()); + + void delete(int id, {required int receiverId}) async { + try { + emit(DeleteMessageInProgress()); + await Api.post(url: Api.deleteChatMessage, parameter: { + "message_id": id, + "receiver_id": receiverId, + }); + + emit(DeleteMessageSuccess(id: id)); + } catch (e) { + emit(DeleteMessageFail(error: e.toString())); + } + } +} diff --git a/lib/data/cubits/chatCubits/get_chat_users.dart b/lib/data/cubits/chatCubits/get_chat_users.dart new file mode 100644 index 0000000..f185ac0 --- /dev/null +++ b/lib/data/cubits/chatCubits/get_chat_users.dart @@ -0,0 +1,172 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'package:ebroker/data/Repositories/chat_repository.dart'; +import 'package:ebroker/data/model/chat/chated_user_model.dart'; +import 'package:flutter/material.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../model/data_output.dart'; + +abstract class GetChatListState {} + +class GetChatListInitial extends GetChatListState {} + +class GetChatListInProgress extends GetChatListState {} + +class GetChatListInternalProcess extends GetChatListState {} + +class GetChatListSuccess extends GetChatListState { + final int total; + final int currentPage; + final bool isLoadingMore; + final bool hasError; + final List chatedUserList; + GetChatListSuccess({ + required this.total, + required this.currentPage, + required this.isLoadingMore, + required this.hasError, + required this.chatedUserList, + }); + + GetChatListSuccess copyWith({ + int? total, + int? currentPage, + bool? isLoadingMore, + bool? hasError, + List? chatedUserList, + }) { + return GetChatListSuccess( + total: total ?? this.total, + currentPage: currentPage ?? this.currentPage, + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + hasError: hasError ?? this.hasError, + chatedUserList: chatedUserList ?? this.chatedUserList, + ); + } + + Map toMap() { + return { + 'total': total, + 'currentPage': currentPage, + 'isLoadingMore': isLoadingMore, + 'hasError': hasError, + 'chatedUserList': chatedUserList.map((x) => x.toJson()).toList(), + }; + } + + factory GetChatListSuccess.fromMap(Map map) { + return GetChatListSuccess( + total: map['total'] as int, + currentPage: map['currentPage'] as int, + isLoadingMore: map['isLoadingMore'] as bool, + hasError: map['hasError'] as bool, + chatedUserList: List.from( + (map['chatedUserList'] as List).map( + (x) => ChatedUser.fromJson(x as Map), + ), + ), + ); + } +} + +class GetChatListFailed extends GetChatListState { + final dynamic error; + + GetChatListFailed(this.error); +} + +class GetChatListCubit extends Cubit with HydratedMixin { + GetChatListCubit() : super(GetChatListInitial()); + final ChatRepostiory _chatRepostiory = ChatRepostiory(); + + ///Setting build context for later use + void setContext(BuildContext context) { + _chatRepostiory.setContext(context); + } + + void fetch() async { + try { + emit(GetChatListInProgress()); + + DataOutput result = await _chatRepostiory.fetchChatList(1); + + emit( + GetChatListSuccess( + isLoadingMore: false, + hasError: false, + chatedUserList: result.modelList, + currentPage: 1, + total: result.total, + ), + ); + } catch (e) { + emit(GetChatListFailed(e)); + } + } + + void addNewChat(ChatedUser user) { + //this will create new chat in chat list if there is no already + if (state is GetChatListSuccess) { + List chatedUserList = + (state as GetChatListSuccess).chatedUserList; + bool contains = chatedUserList.any( + (element) => element.userId == user.userId, + ); + if (contains == false) { + chatedUserList.insert(0, user); + emit((state as GetChatListSuccess) + .copyWith(chatedUserList: chatedUserList)); + } + } + } + + Future loadMore() async { + try { + if (state is GetChatListSuccess) { + if ((state as GetChatListSuccess).isLoadingMore) { + return; + } + emit((state as GetChatListSuccess).copyWith(isLoadingMore: true)); + + DataOutput result = await _chatRepostiory.fetchChatList( + (state as GetChatListSuccess).currentPage + 1, + ); + + GetChatListSuccess messagesSuccessState = (state as GetChatListSuccess); + + // messagesSuccessState.await.insertAll(0, result.modelList); + messagesSuccessState.chatedUserList.addAll(result.modelList); + emit(GetChatListSuccess( + chatedUserList: messagesSuccessState.chatedUserList, + currentPage: (state as GetChatListSuccess).currentPage + 1, + hasError: false, + isLoadingMore: false, + total: result.total, + )); + } + } catch (e) { + emit((state as GetChatListSuccess) + .copyWith(isLoadingMore: false, hasError: true)); + } + } + + bool hasMoreData() { + if (state is GetChatListSuccess) { + return (state as GetChatListSuccess).currentPage < + (state as GetChatListSuccess).total; + } + + return false; + } + + @override + GetChatListState? fromJson(Map json) { + return null; + } + + @override + Map? toJson(GetChatListState state) { + return null; + } +} diff --git a/lib/data/cubits/chatCubits/load_chat_messages.dart b/lib/data/cubits/chatCubits/load_chat_messages.dart new file mode 100644 index 0000000..b3534d1 --- /dev/null +++ b/lib/data/cubits/chatCubits/load_chat_messages.dart @@ -0,0 +1,125 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/blueprint.dart'; +import 'package:ebroker/data/Repositories/chat_repository.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +class LoadChatMessagesState {} + +class LoadChatMessagesInitial extends LoadChatMessagesState {} + +class LoadChatMessagesInProgress extends LoadChatMessagesState {} + +class LoadChatMessagesSuccess extends LoadChatMessagesState { + List messages; + int currentPage; + int userId; + int propertyId; + int totalPage; + bool isLoadingMore; + LoadChatMessagesSuccess({ + required this.messages, + required this.currentPage, + required this.userId, + required this.propertyId, + required this.totalPage, + required this.isLoadingMore, + }); + + LoadChatMessagesSuccess copyWith({ + List? messages, + int? currentPage, + int? userId, + int? propertyId, + int? totalPage, + bool? isLoadingMore, + }) { + return LoadChatMessagesSuccess( + messages: messages ?? this.messages, + currentPage: currentPage ?? this.currentPage, + userId: userId ?? this.userId, + propertyId: propertyId ?? this.propertyId, + totalPage: totalPage ?? this.totalPage, + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + ); + } + + @override + String toString() { + return 'LoadChatMessagesSuccess(messages: $messages, currentPage: $currentPage, userId: $userId, propertyId: $propertyId, totalPage: $totalPage, isLoadingMore: $isLoadingMore)'; + } +} + +class LoadChatMessagesFailed extends LoadChatMessagesState { + final dynamic error; + LoadChatMessagesFailed({ + required this.error, + }); +} + +class LoadChatMessagesCubit extends Cubit { + LoadChatMessagesCubit() : super(LoadChatMessagesInitial()); + final ChatRepostiory _chatRepostiory = ChatRepostiory(); + + Future load({required int userId, required int propertyId}) async { + try { + emit(LoadChatMessagesInProgress()); + DataOutput result = await _chatRepostiory.getMessages( + page: 1, + userId: userId, + propertyId: propertyId, + ); + emit( + LoadChatMessagesSuccess( + messages: result.modelList, + currentPage: 1, + propertyId: propertyId, + isLoadingMore: false, + totalPage: result.total, + userId: userId), + ); + } catch (e) { + emit(LoadChatMessagesFailed(error: e.toString())); + } + } + + Future loadMore() async { + try { + if (state is LoadChatMessagesSuccess) { + if ((state as LoadChatMessagesSuccess).isLoadingMore) { + return; + } + emit((state as LoadChatMessagesSuccess).copyWith(isLoadingMore: true)); + + DataOutput result = await _chatRepostiory.getMessages( + page: (state as LoadChatMessagesSuccess).currentPage + 1, + userId: (state as LoadChatMessagesSuccess).userId, + propertyId: (state as LoadChatMessagesSuccess).propertyId); + + LoadChatMessagesSuccess messagesSuccessState = + (state as LoadChatMessagesSuccess); + + messagesSuccessState.messages.addAll(result.modelList); + + emit(LoadChatMessagesSuccess( + messages: messagesSuccessState.messages, + currentPage: (state as LoadChatMessagesSuccess).currentPage + 1, + propertyId: (state as LoadChatMessagesSuccess).propertyId, + isLoadingMore: false, + totalPage: result.total, + userId: (state as LoadChatMessagesSuccess).userId)); + } + } catch (e) { + emit((state as LoadChatMessagesSuccess).copyWith(isLoadingMore: false)); + } + } + + bool hasMoreChat() { + if (state is LoadChatMessagesSuccess) { + return (state as LoadChatMessagesSuccess).currentPage < + (state as LoadChatMessagesSuccess).totalPage; + } + return false; + } +} diff --git a/lib/data/cubits/chatCubits/send_message.dart b/lib/data/cubits/chatCubits/send_message.dart new file mode 100644 index 0000000..92fd678 --- /dev/null +++ b/lib/data/cubits/chatCubits/send_message.dart @@ -0,0 +1,81 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +// import 'dart:developer'; + +import 'package:dio/dio.dart'; +import 'package:ebroker/data/Repositories/chat_repository.dart'; +import 'package:ebroker/utils/logger.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +class SendMessageState {} + +class SendMessageInitial extends SendMessageState {} + +class SendMessageInProgress extends SendMessageState {} + +class SendMessageSuccess extends SendMessageState { + final int messageId; + SendMessageSuccess({ + required this.messageId, + }); +} + +class SendMessageFailed extends SendMessageState { + final dynamic error; + SendMessageFailed( + this.error, + ); +} + +class SendMessageCubit extends Cubit { + SendMessageCubit() : super(SendMessageInitial()); + final ChatRepostiory _chatRepostiory = ChatRepostiory(); + void send( + {required String senderId, + required String recieverId, + required String message, + required String proeprtyId, + dynamic audio, + dynamic attachment}) async { + try { + emit(SendMessageInProgress()); + MultipartFile? audioFile; + MultipartFile? attachmentFile; + + if (audio != null) { + audioFile = await MultipartFile.fromFile(audio); + } + if (attachment != null) { + attachmentFile = await MultipartFile.fromFile(attachment); + } + + ///If use is not uploading any text so we will upload [File]. + var message0 = message; + if (attachment != null && message == "") { + message0 = ""; + } + + var result = await _chatRepostiory.sendMessage( + senderId: senderId, + recieverId: recieverId, + message: message0, + proeprtyId: proeprtyId, + attachment: attachmentFile, + audio: audioFile); + + emit(SendMessageSuccess(messageId: result['id'])); + } catch (e) { + Logger.error(e.toString()); + emit(SendMessageFailed(e.toString())); + } + } + +//This will check if given file like audio recording or attachment is local or it is coming from remote server + bool isRemoteFile(dynamic file) { + if (file is String) { + return true; + } else { + return false; + } + } +} diff --git a/lib/data/cubits/company_cubit.dart b/lib/data/cubits/company_cubit.dart new file mode 100644 index 0000000..34eebb5 --- /dev/null +++ b/lib/data/cubits/company_cubit.dart @@ -0,0 +1,70 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../utils/api.dart'; +import '../helper/custom_exception.dart'; +import '../model/company.dart'; + +abstract class CompanyState {} + +class CompanyInitial extends CompanyState {} + +class CompanyFetchProgress extends CompanyState {} + +class CompanyFetchSuccess extends CompanyState { + Company companyData; + + CompanyFetchSuccess(this.companyData); +} + +class CompanyFetchFailure extends CompanyState { + final String errmsg; + CompanyFetchFailure(this.errmsg); +} + +class CompanyCubit extends Cubit { + CompanyCubit() : super(CompanyInitial()); + + void fetchCompany(BuildContext context) { + emit(CompanyFetchProgress()); + fetchCompanyFromDb(context) + .then((value) => emit(CompanyFetchSuccess(value))) + .catchError((e) => emit(CompanyFetchFailure(e.toString()))); + } + + Future fetchCompanyFromDb(BuildContext context) async { + try { + Company companyData = Company(); + + Map body = { + Api.type: Api.company, + }; + + // var response = await HelperUtils.sendApiRequest( + // Api.apiGetSystemSettings, body, true, context, + // passUserid: false); + + var response = + await Api.post(url: Api.apiGetSystemSettings, parameter: body); + + // var getdata = json.decode(response); + + if (!response[Api.error]) { + Map list = response['data']; + // companyData = list.map((model) => Company.fromJson(model)).toList(); + + companyData = Company.fromJson(Map.from(list)); + + //set company mobile/contact number for Call @ Property details + // Constant.session + // .setData(Session.keyCompMobNo, contactNumber.data.toString()); + } else { + throw CustomException(response[Api.message]); + } + + return companyData; + } catch (e) { + throw e; + } + } +} diff --git a/lib/data/cubits/delete_advertisment_cubit.dart b/lib/data/cubits/delete_advertisment_cubit.dart new file mode 100644 index 0000000..79da32b --- /dev/null +++ b/lib/data/cubits/delete_advertisment_cubit.dart @@ -0,0 +1,34 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../Repositories/advertisement_repository.dart'; + +abstract class DeleteAdvertismentState {} + +class DeleteAdvertismentInitial extends DeleteAdvertismentState {} + +class DeleteAdvertismentInProgress extends DeleteAdvertismentState {} + +class DeleteAdvertismentSuccess extends DeleteAdvertismentState {} + +class DeleteAdvertismentFailure extends DeleteAdvertismentState { + final String errorMessage; + + DeleteAdvertismentFailure(this.errorMessage); +} + +class DeleteAdvertismentCubit extends Cubit { + final AdvertisementRepository _advertisementRepository; + + DeleteAdvertismentCubit(this._advertisementRepository) + : super(DeleteAdvertismentInitial()); + + void delete(dynamic id) async { + try { + emit(DeleteAdvertismentInProgress()); + await _advertisementRepository.deleteAdvertisment(id); + emit(DeleteAdvertismentSuccess()); + } catch (e) { + emit(DeleteAdvertismentFailure(e.toString())); + } + } +} diff --git a/lib/data/cubits/enquiry/enquiry_cubit.dart b/lib/data/cubits/enquiry/enquiry_cubit.dart new file mode 100644 index 0000000..9ac48e0 --- /dev/null +++ b/lib/data/cubits/enquiry/enquiry_cubit.dart @@ -0,0 +1,73 @@ +import 'dart:convert'; + +import 'package:ebroker/utils/Extensions/extensions.dart'; + +import '../../helper/custom_exception.dart'; +import '../../../utils/helper_utils.dart'; +import '../../../utils/hive_utils.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../utils/api.dart'; + +abstract class EnquiryState {} + +class EnquiryInitial extends EnquiryState {} + +class EnquirySetProgress extends EnquiryState {} + +class EnquirySetSuccess extends EnquiryState { + String msg = ''; + EnquirySetSuccess(this.msg); +} + +class EnquirySetFailure extends EnquiryState { + final String errmsg; + EnquirySetFailure(this.errmsg); +} + +class EnquiryCubit extends Cubit { + EnquiryCubit() : super(EnquiryInitial()); + +void setEnquiry(BuildContext context, + {String? actionType, String? propertyId, String? status}) { + emit(EnquirySetProgress()); + setEnquiryFromDb(context, actionType!, propertyId!, status!) + .then((value) => emit(EnquirySetSuccess(value))) + .catchError((e) => emit(EnquirySetFailure(e.toString()))); + } + + Future setEnquiryFromDb( + BuildContext context, + String actionType, + String propertyId, + String status, + ) async { + if (actionType == '0') { + } else { + // ApiParams.id: '', + // ApiParams.enqStatus: '' + } + Map body = { + //Add + Api.actionType: actionType, + Api.propertyId: propertyId, + Api.customerId: HiveUtils.getUserId().toString(), + }; + + var response = await HelperUtils.sendApiRequest( + Api.apiSetPropertyEnquiry, body, true, context, + passUserid: false); + var getdata = json.decode(response); + if (getdata != null) { + } else { + Future.delayed( + Duration.zero, + () { + throw CustomException("nodatafound".translate(context)); + }, + ); + } + return getdata[Api.message]; + } +} diff --git a/lib/data/cubits/enquiry/store_enqury_id.dart b/lib/data/cubits/enquiry/store_enqury_id.dart new file mode 100644 index 0000000..d07d727 --- /dev/null +++ b/lib/data/cubits/enquiry/store_enqury_id.dart @@ -0,0 +1,34 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:flutter_bloc/flutter_bloc.dart'; + +class EnquiryIdsLocalCubit extends Cubit { + EnquiryIdsLocalCubit() : super(EnquiryIdsLocalState(ids: [])); + + void add(id) { + List? ids = state.ids; + ids?.add( + id, + ); + emit( + EnquiryIdsLocalState(ids: ids), + ); + } +} + +class EnquiryIdsLocalState { + List? ids; + EnquiryIdsLocalState({ + this.ids, + }); + + EnquiryIdsLocalState copyWith({ + List? ids, + }) { + return EnquiryIdsLocalState( + ids: ids ?? this.ids, + ); + } + + @override + String toString() => 'EnquiryIdsLocalState(ids: $ids)'; +} diff --git a/lib/data/cubits/favorite/add_to_favorite_cubit.dart b/lib/data/cubits/favorite/add_to_favorite_cubit.dart new file mode 100644 index 0000000..cd7e308 --- /dev/null +++ b/lib/data/cubits/favorite/add_to_favorite_cubit.dart @@ -0,0 +1,60 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:flutter_bloc/flutter_bloc.dart'; + +import 'package:ebroker/data/Repositories/favourites_repository.dart'; + +import '../../../utils/constant.dart'; + +enum FavoriteType { + add("1"), + remove("0"); + + final String value; + + const FavoriteType(this.value); +} + +abstract class AddToFavoriteCubitState {} + +class AddToFavoriteCubitInitial extends AddToFavoriteCubitState {} + +class AddToFavoriteCubitInProgress extends AddToFavoriteCubitState {} + +class AddToFavoriteCubitSuccess extends AddToFavoriteCubitState { + final int id; + final FavoriteType favorite; + AddToFavoriteCubitSuccess({ + required this.favorite, + required this.id, + }); +} + +class AddToFavoriteCubitFailure extends AddToFavoriteCubitState { + final String errorMessage; + + AddToFavoriteCubitFailure(this.errorMessage); +} + +class AddToFavoriteCubitCubit extends Cubit { + AddToFavoriteCubitCubit() : super(AddToFavoriteCubitInitial()); + + final FavoriteRepository _favouriteRepository = FavoriteRepository(); + + Future setFavroite({ + required int propertyId, + required FavoriteType type, + }) async { + try { + emit(AddToFavoriteCubitInProgress()); + await _favouriteRepository.addToFavorite(propertyId, type.value); + if (type == FavoriteType.add) { + Constant.favoritePropertyList.add((propertyId)); + } else { + Constant.favoritePropertyList.remove((propertyId)); + } + emit(AddToFavoriteCubitSuccess(id: propertyId, favorite: type)); + } catch (e) { + emit(AddToFavoriteCubitFailure(e.toString())); + } + } +} diff --git a/lib/data/cubits/favorite/fetch_favorites_cubit.dart b/lib/data/cubits/favorite/fetch_favorites_cubit.dart new file mode 100644 index 0000000..6deb0dd --- /dev/null +++ b/lib/data/cubits/favorite/fetch_favorites_cubit.dart @@ -0,0 +1,132 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../Repositories/favourites_repository.dart'; +import '../../model/data_output.dart'; +import '../../model/property_model.dart'; + +abstract class FetchFavoritesState {} + +class FetchFavoritesInitial extends FetchFavoritesState {} + +class FetchFavoritesInProgress extends FetchFavoritesState {} + +class FetchFavoritesSuccess extends FetchFavoritesState { + final bool isLoadingMore; + final bool loadingMoreError; + final List propertymodel; + final int offset; + final int total; + FetchFavoritesSuccess({ + required this.isLoadingMore, + required this.loadingMoreError, + required this.propertymodel, + required this.offset, + required this.total, + }); + + FetchFavoritesSuccess copyWith({ + bool? isLoadingMore, + bool? loadingMoreError, + List? propertymodel, + int? offset, + int? total, + }) { + return FetchFavoritesSuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + loadingMoreError: loadingMoreError ?? this.loadingMoreError, + propertymodel: propertymodel ?? this.propertymodel, + offset: offset ?? this.offset, + total: total ?? this.total, + ); + } +} + +class FetchFavoritesFailure extends FetchFavoritesState { + final dynamic errorMessage; + FetchFavoritesFailure(this.errorMessage); +} + +class FetchFavoritesCubit extends Cubit { + FetchFavoritesCubit() : super(FetchFavoritesInitial()); + + final FavoriteRepository _favoritesRepository = FavoriteRepository(); + + Future fetchFavorites() async { + try { + emit(FetchFavoritesInProgress()); + + DataOutput result = + await _favoritesRepository.fetchFavorites(offset: 0); + + emit(FetchFavoritesSuccess( + isLoadingMore: false, + loadingMoreError: false, + propertymodel: result.modelList, + offset: 0, + total: result.total)); + } catch (error) { + emit(FetchFavoritesFailure(error)); + } + } + + void remove(id) { + if (state is FetchFavoritesSuccess) { + List propertymodel = + (state as FetchFavoritesSuccess).propertymodel; + + propertymodel.removeWhere((element) => element.id == id); + + emit((state as FetchFavoritesSuccess) + .copyWith(propertymodel: propertymodel)); + } + } + + void add(PropertyModel model) { + if (state is FetchFavoritesSuccess) { + List propertymodel = + (state as FetchFavoritesSuccess).propertymodel; + + propertymodel.insert(0, model); + // propertymodel.removeWhere((element) => element.id == id); + + emit((state as FetchFavoritesSuccess) + .copyWith(propertymodel: propertymodel)); + } + } + + Future fetchFavoritesMore() async { + try { + if (state is FetchFavoritesSuccess) { + if ((state as FetchFavoritesSuccess).isLoadingMore) { + return; + } + emit((state as FetchFavoritesSuccess).copyWith(isLoadingMore: true)); + DataOutput result = + await _favoritesRepository.fetchFavorites( + offset: (state as FetchFavoritesSuccess).propertymodel.length, + ); + + FetchFavoritesSuccess propertymodelState = + (state as FetchFavoritesSuccess); + propertymodelState.propertymodel.addAll(result.modelList); + emit(FetchFavoritesSuccess( + isLoadingMore: false, + loadingMoreError: false, + propertymodel: propertymodelState.propertymodel, + offset: (state as FetchFavoritesSuccess).propertymodel.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchFavoritesSuccess) + .copyWith(isLoadingMore: false, loadingMoreError: true)); + } + } + + bool hasMoreData() { + if (state is FetchFavoritesSuccess) { + return (state as FetchFavoritesSuccess).propertymodel.length < + (state as FetchFavoritesSuccess).total; + } + return false; + } +} diff --git a/lib/data/cubits/favorite/remove_favoriteubit.dart b/lib/data/cubits/favorite/remove_favoriteubit.dart new file mode 100644 index 0000000..339ba34 --- /dev/null +++ b/lib/data/cubits/favorite/remove_favoriteubit.dart @@ -0,0 +1,39 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../Repositories/favourites_repository.dart'; + +abstract class RemoveFavoriteState {} + +class RemoveFavoriteInitial extends RemoveFavoriteState {} + +class RemoveFavoriteInProgress extends RemoveFavoriteState {} + +class RemoveFavoriteSuccess extends RemoveFavoriteState { + final int id; + RemoveFavoriteSuccess({ + required this.id, + }); +} + +class RemoveFavoriteFailure extends RemoveFavoriteState { + final String errorMessage; + + RemoveFavoriteFailure(this.errorMessage); +} + +class RemoveFavoriteCubit extends Cubit { + final FavoriteRepository _favoriteRepository = FavoriteRepository(); + + RemoveFavoriteCubit() : super(RemoveFavoriteInitial()); + + void remove(int propertyID) async { + try { + emit(RemoveFavoriteInProgress()); + await _favoriteRepository.removeFavorite(propertyID); + emit(RemoveFavoriteSuccess(id: propertyID)); + } catch (e) { + emit(RemoveFavoriteFailure(e.toString())); + } + } +} diff --git a/lib/data/cubits/fetch_articles_cubit.dart b/lib/data/cubits/fetch_articles_cubit.dart new file mode 100644 index 0000000..8d76f7d --- /dev/null +++ b/lib/data/cubits/fetch_articles_cubit.dart @@ -0,0 +1,111 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../Repositories/articles_repository.dart'; +import '../model/article_model.dart'; +import '../model/data_output.dart'; + +abstract class FetchArticlesState {} + +class FetchArticlesInitial extends FetchArticlesState {} + +class FetchArticlesInProgress extends FetchArticlesState {} + +class FetchArticlesSuccess extends FetchArticlesState { + final bool isLoadingMore; + final bool loadingMoreError; + final List articlemodel; + final int offset; + final int total; + FetchArticlesSuccess({ + required this.isLoadingMore, + required this.loadingMoreError, + required this.articlemodel, + required this.offset, + required this.total, + }); + + FetchArticlesSuccess copyWith({ + bool? isLoadingMore, + bool? loadingMoreError, + List? articlemodel, + int? offset, + int? total, + }) { + return FetchArticlesSuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + loadingMoreError: loadingMoreError ?? this.loadingMoreError, + articlemodel: articlemodel ?? this.articlemodel, + offset: offset ?? this.offset, + total: total ?? this.total, + ); + } +} + +class FetchArticlesFailure extends FetchArticlesState { + final dynamic errorMessage; + FetchArticlesFailure(this.errorMessage); +} + +class FetchArticlesCubit extends Cubit { + FetchArticlesCubit() : super(FetchArticlesInitial()); + + final ArticlesRepository _articleRepository = ArticlesRepository(); + + Future fetchArticles() async { + try { + emit(FetchArticlesInProgress()); + + DataOutput result = + await _articleRepository.fetchArticles(offset: 0); + + emit( + FetchArticlesSuccess( + isLoadingMore: false, + loadingMoreError: false, + articlemodel: result.modelList, + offset: 0, + total: result.total), + ); + } catch (e) { + emit(FetchArticlesFailure(e)); + } + } + + Future fetchArticlesMore() async { + try { + if (state is FetchArticlesSuccess) { + if ((state as FetchArticlesSuccess).isLoadingMore) { + return; + } + + emit((state as FetchArticlesSuccess).copyWith(isLoadingMore: true)); + + DataOutput result = + await _articleRepository.fetchArticles( + offset: (state as FetchArticlesSuccess).articlemodel.length, + ); + + FetchArticlesSuccess articlemodelState = + (state as FetchArticlesSuccess); + articlemodelState.articlemodel.addAll(result.modelList); + emit(FetchArticlesSuccess( + isLoadingMore: false, + loadingMoreError: false, + articlemodel: articlemodelState.articlemodel, + offset: (state as FetchArticlesSuccess).articlemodel.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchArticlesSuccess) + .copyWith(isLoadingMore: false, loadingMoreError: true)); + } + } + + bool hasMoreData() { + if (state is FetchArticlesSuccess) { + return (state as FetchArticlesSuccess).articlemodel.length < + (state as FetchArticlesSuccess).total; + } + return false; + } +} diff --git a/lib/data/cubits/fetch_notifications_cubit.dart b/lib/data/cubits/fetch_notifications_cubit.dart new file mode 100644 index 0000000..718b9bc --- /dev/null +++ b/lib/data/cubits/fetch_notifications_cubit.dart @@ -0,0 +1,110 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../Repositories/notifications_repository_repository.dart'; +import '../model/data_output.dart'; +import '../model/notification_data.dart'; + +abstract class FetchNotificationsState {} + +class FetchNotificationsInitial extends FetchNotificationsState {} + +class FetchNotificationsInProgress extends FetchNotificationsState {} + +class FetchNotificationsSuccess extends FetchNotificationsState { + final bool isLoadingMore; + final bool loadingMoreError; + final List notificationdata; + final int offset; + final int total; + FetchNotificationsSuccess({ + required this.isLoadingMore, + required this.loadingMoreError, + required this.notificationdata, + required this.offset, + required this.total, + }); + + FetchNotificationsSuccess copyWith({ + bool? isLoadingMore, + bool? loadingMoreError, + List? notificationdata, + int? offset, + int? total, + }) { + return FetchNotificationsSuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + loadingMoreError: loadingMoreError ?? this.loadingMoreError, + notificationdata: notificationdata ?? this.notificationdata, + offset: offset ?? this.offset, + total: total ?? this.total, + ); + } +} + +class FetchNotificationsFailure extends FetchNotificationsState { + final dynamic errorMessage; + FetchNotificationsFailure(this.errorMessage); +} + +class FetchNotificationsCubit extends Cubit { + FetchNotificationsCubit() : super(FetchNotificationsInitial()); + + final NotificationsRepository _notificationsRepository = + NotificationsRepository(); + + Future fetchNotifications() async { + try { + emit(FetchNotificationsInProgress()); + + DataOutput result = + await _notificationsRepository.fetchNotifications(offset: 0); + + emit(FetchNotificationsSuccess( + isLoadingMore: false, + loadingMoreError: false, + notificationdata: result.modelList, + offset: 0, + total: result.total)); + } catch (e) { + emit(FetchNotificationsFailure(e)); + } + } + + Future fetchNotificationsMore() async { + try { + if (state is FetchNotificationsSuccess) { + if ((state as FetchNotificationsSuccess).isLoadingMore) { + return; + } + emit( + (state as FetchNotificationsSuccess).copyWith(isLoadingMore: true)); + DataOutput result = + await _notificationsRepository.fetchNotifications( + offset: (state as FetchNotificationsSuccess).notificationdata.length, + ); + + FetchNotificationsSuccess notificationdataState = + (state as FetchNotificationsSuccess); + notificationdataState.notificationdata.addAll(result.modelList); + emit(FetchNotificationsSuccess( + isLoadingMore: false, + loadingMoreError: false, + notificationdata: notificationdataState.notificationdata, + offset: + (state as FetchNotificationsSuccess).notificationdata.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchNotificationsSuccess) + .copyWith(isLoadingMore: false, loadingMoreError: true)); + } + } + + bool hasMoreData() { + if (state is FetchNotificationsSuccess) { + return (state as FetchNotificationsSuccess).notificationdata.length < + (state as FetchNotificationsSuccess).total; + } + return false; + } +} diff --git a/lib/data/cubits/outdoorfacility/fetch_outdoor_facility_list.dart b/lib/data/cubits/outdoorfacility/fetch_outdoor_facility_list.dart new file mode 100644 index 0000000..bc7931f --- /dev/null +++ b/lib/data/cubits/outdoorfacility/fetch_outdoor_facility_list.dart @@ -0,0 +1,85 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'package:ebroker/data/Repositories/outdoorfacility.dart'; +import 'package:ebroker/data/model/outdoor_facility.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../model/property_model.dart'; + +class FetchOutdoorFacilityListState {} + +class FetchOutdoorFacilityListInitial extends FetchOutdoorFacilityListState {} + +class FetchOutdoorFacilityListInProgress + extends FetchOutdoorFacilityListState {} + +class FetchOutdoorFacilityListSucess extends FetchOutdoorFacilityListState { + final List outdoorFacilityList; + FetchOutdoorFacilityListSucess({ + required this.outdoorFacilityList, + }); + + FetchOutdoorFacilityListSucess copyWith({ + List? outdoorFacilityList, + }) { + return FetchOutdoorFacilityListSucess( + outdoorFacilityList: outdoorFacilityList ?? this.outdoorFacilityList, + ); + } +} + +class FetchOutdoorFacilityListFailure extends FetchOutdoorFacilityListState { + final dynamic error; + FetchOutdoorFacilityListFailure({ + required this.error, + }); +} + +class FetchOutdoorFacilityListCubit + extends Cubit { + FetchOutdoorFacilityListCubit() : super(FetchOutdoorFacilityListInitial()); + final OutdoorFacilityRepository _facilityRepository = + OutdoorFacilityRepository(); + void fetch() async { + try { + emit(FetchOutdoorFacilityListInProgress()); + + List facilityList = + await _facilityRepository.fetchOutdoorFacilityList(); + emit(FetchOutdoorFacilityListSucess(outdoorFacilityList: facilityList)); + } catch (error) { + emit(FetchOutdoorFacilityListFailure(error: error)); + } + } + + List getList() { + if (state is FetchOutdoorFacilityListSucess) { + return (state as FetchOutdoorFacilityListSucess).outdoorFacilityList; + } + return []; + } + + void fetchIfFailed() { + if (state is FetchOutdoorFacilityListFailure || + state is FetchOutdoorFacilityListInitial) { + fetch(); + } + } + + void fillData(List facilities) { + if (state is FetchOutdoorFacilityListSucess) { + List newFacility = []; + + for (var i = 0; i < facilities.length; i++) { + newFacility.add(OutdoorFacility( + name: facilities[i].name, + id: facilities[i].id, + distance: facilities[i].distance.toString(), + image: facilities[i].image)); + } + + emit((state as FetchOutdoorFacilityListSucess) + .copyWith(outdoorFacilityList: newFacility)); + } + } +} diff --git a/lib/data/cubits/profile_setting_cubit.dart b/lib/data/cubits/profile_setting_cubit.dart new file mode 100644 index 0000000..11c42c7 --- /dev/null +++ b/lib/data/cubits/profile_setting_cubit.dart @@ -0,0 +1,150 @@ +import 'package:flutter/material.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../settings.dart'; +import '../../utils/api.dart'; +import '../../utils/constant.dart'; +import '../helper/custom_exception.dart'; + +abstract class ProfileSettingState {} + +//String? profileSettingData = ''; + +class ProfileSettingInitial extends ProfileSettingState {} + +class ProfileSettingFetchProgress extends ProfileSettingState {} + +class ProfileSettingFetchSuccess extends ProfileSettingState { + String data; + ProfileSettingFetchSuccess({required this.data}); + + Map toMap() { + return { + 'data': data, + }; + } + + factory ProfileSettingFetchSuccess.fromMap(Map map) { + return ProfileSettingFetchSuccess( + data: map['data'] as String, + ); + } +} + +class ProfileSettingFetchFailure extends ProfileSettingState { + final String errmsg; + ProfileSettingFetchFailure(this.errmsg); +} + +class ProfileSettingCubit extends Cubit + with HydratedMixin { + ProfileSettingCubit() : super(ProfileSettingInitial()); + + void fetchProfileSetting(BuildContext context, String title, + {bool? forceRefresh}) async { + if (forceRefresh != true) { + if (state is ProfileSettingFetchSuccess) { + await Future.delayed( + const Duration(seconds: AppSettings.hiddenAPIProcessDelay)); + } else { + emit(ProfileSettingFetchProgress()); + } + } else { + emit(ProfileSettingFetchProgress()); + } + + if (forceRefresh == true) { + fetchProfileSettingFromDb(context, title).then((value) { + emit(ProfileSettingFetchSuccess(data: value ?? "")); + }).catchError((e, stack) { + emit(ProfileSettingFetchFailure(stack.toString())); + }); + } else { + if (state is! ProfileSettingFetchSuccess) { + fetchProfileSettingFromDb(context, title).then((value) { + emit(ProfileSettingFetchSuccess(data: value ?? "")); + }).catchError((e, stack) { + emit(ProfileSettingFetchFailure(stack.toString())); + }); + } else { + emit( + ProfileSettingFetchSuccess( + data: (state as ProfileSettingFetchSuccess).data), + ); + } + } + } + + Future fetchProfileSettingFromDb( + BuildContext context, String title) async { + try { + String? profileSettingData; + Map body = { + Api.type: title, + }; + + var response = await Api.post( + url: Api.apiGetSystemSettings, parameter: body, useAuthToken: false); + + if (!response[Api.error]) { + if (title == Api.currencySymbol) { + // Constant.currencySymbol = getdata['data'].toString(); + } else if (title == Api.maintenanceMode) { + Constant.maintenanceMode = response['data'].toString(); + } else { + Map data = (response['data']); + + if (title == Api.termsAndConditions) { + profileSettingData = data['terms_conditions']; + // .where((element) => element['type'] == "terms_conditions") + // .first['data']; + } + + if (title == Api.privacyPolicy) { + profileSettingData = data['privacy_policy']; + // .where((element) => element['type'] == "privacy_policy") + // .first['data']; + } + + if (title == Api.aboutApp) { + profileSettingData = data['about_us']; + // .where((element) => element['type'] == "about_us") + // .first['data']; + } + } + } else { + throw CustomException(response[Api.message]); + } + + return profileSettingData; + } catch (e) { + rethrow; + } + } + + @override + ProfileSettingState? fromJson(Map json) { + try { + if (json['cubit_state'] == "ProfileSettingFetchSuccess") { + ProfileSettingFetchSuccess profileSettingFetchSuccess = + ProfileSettingFetchSuccess.fromMap(json); + + return profileSettingFetchSuccess; + } + } catch (e) {} + return null; + } + + @override + Map? toJson(ProfileSettingState state) { + try { + if (state is ProfileSettingFetchSuccess) { + Map mapped = state.toMap(); + mapped['cubit_state'] = "ProfileSettingFetchSuccess"; + return mapped; + } + } catch (e) {} + + return null; + } +} diff --git a/lib/data/cubits/project/all_projects_screen.dart b/lib/data/cubits/project/all_projects_screen.dart new file mode 100644 index 0000000..b78585d --- /dev/null +++ b/lib/data/cubits/project/all_projects_screen.dart @@ -0,0 +1,115 @@ +import 'package:ebroker/Ui/screens/project/view/project_list_screen.dart'; +import 'package:ebroker/data/cubits/project/fetch_projects.dart'; +import 'package:ebroker/data/model/project_model.dart'; +import 'package:ebroker/utils/guestChecker.dart'; +import 'package:flutter/material.dart'; + +import '../../../Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import '../../../Ui/screens/widgets/blurred_dialoge_box.dart'; +import '../../../exports/main_export.dart'; +import '../../../utils/ui_utils.dart'; + +class AllProjectsScreen extends StatefulWidget { + const AllProjectsScreen({super.key}); + + static Route route(RouteSettings settings) { + return BlurredRouter( + builder: (context) { + return const AllProjectsScreen(); + }, + ); + } + + @override + State createState() => _AllProjectsScreenState(); +} + +class _AllProjectsScreenState extends State { + final ScrollController _controller = ScrollController(); + @override + void initState() { + _controller.addListener(() { + if (_controller.isEndReached()) { + if (context.read().hasMore()) { + context.read().fetchMoreProjects(); + } + } + }); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: UiUtils.buildAppBar(context, + showBackButton: true, title: UiUtils.translate(context, "projects")), + body: SingleChildScrollView( + physics: const BouncingScrollPhysics(), + child: BlocBuilder( + builder: (context, state) { + if (state is FetchProjectsSuccess) { + return Column( + mainAxisSize: MainAxisSize.max, + children: [ + ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: const EdgeInsets.all(14), + itemCount: state.projects.length, + itemBuilder: (context, index) { + ProjectModel project = state.projects[index]; + + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: GestureDetector( + onTap: () { + GuestChecker.check( + onNotGuest: () { + if (context + .read() + .getRawSettings()['is_premium'] ?? + false) { + Navigator.pushNamed( + context, Routes.projectDetailsScreen, + arguments: {"project": project}); + } else { + UiUtils.showBlurredDialoge(context, + dialoge: BlurredDialogBox( + title: "Subscription needed", + isAcceptContainesPush: true, + onAccept: () async { + Navigator.popAndPushNamed( + context, + Routes + .subscriptionPackageListRoute, + arguments: {"from": "home"}); + }, + content: const Text( + "Subscribe to package if you want to use this feature"))); + } + }, + ); + }, + child: ProjectCard( + categoryName: project.category?.category ?? "", + url: project.image ?? "", + title: project.title ?? "", + description: project.description ?? "", + categoryIcon: project.category?.image ?? "", + status: project.type ?? ""), + ), + ); + }, + ), + if (state.isLoadingMore) UiUtils.progress() + ], + ); + // return ProjectCard(categoryName: categoryName, url: url, title: title, description: description, categoryIcon: categoryIcon, status: status); + } + return Container(); + }, + ), + ), + ); + } +} diff --git a/lib/data/cubits/project/delete_project_cubit.dart b/lib/data/cubits/project/delete_project_cubit.dart new file mode 100644 index 0000000..6aa909a --- /dev/null +++ b/lib/data/cubits/project/delete_project_cubit.dart @@ -0,0 +1,32 @@ +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/api.dart'; + +abstract class DeleteProjectState {} + +class DeleteProjectInitial extends DeleteProjectState {} + +class DeleteProjectInProgress extends DeleteProjectState {} + +class DeleteProjectSuccess extends DeleteProjectState { + final int id; + DeleteProjectSuccess(this.id); +} + +class DeleteProjectFail extends DeleteProjectState { + final dynamic error; + DeleteProjectFail(this.error); +} + +class DeleteProjectCubit extends Cubit { + DeleteProjectCubit() : super(DeleteProjectInitial()); + + delete(int id) async { + try { + emit(DeleteProjectInProgress()); + await Api.post(url: Api.deleteProject, parameter: {"id": id}); + emit(DeleteProjectSuccess(id)); + } catch (e) { + emit(DeleteProjectFail(e)); + } + } +} diff --git a/lib/data/cubits/project/fetchMyProjectsListCubit.dart b/lib/data/cubits/project/fetchMyProjectsListCubit.dart new file mode 100644 index 0000000..888d888 --- /dev/null +++ b/lib/data/cubits/project/fetchMyProjectsListCubit.dart @@ -0,0 +1,133 @@ +import 'package:ebroker/data/Repositories/project_repository.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/project_model.dart'; +import 'package:ebroker/exports/main_export.dart'; + +abstract class FetchMyProjectsListState {} + +class FetchMyProjectsListInitial extends FetchMyProjectsListState {} + +class FetchMyProjectsListInProgress extends FetchMyProjectsListState {} + +class FetchMyProjectsListSuccess extends FetchMyProjectsListState { + final bool isLoadingMore; + final bool hasError; + final int total; + final List projects; + final int offset; + + FetchMyProjectsListSuccess({ + required this.isLoadingMore, + required this.hasError, + required this.total, + required this.projects, + required this.offset, + }); + + FetchMyProjectsListSuccess copyWith({ + bool? isLoadingMore, + bool? hasError, + int? total, + List? projects, + int? offset, + }) { + return FetchMyProjectsListSuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + hasError: hasError ?? this.hasError, + total: total ?? this.total, + projects: projects ?? this.projects, + offset: offset ?? this.offset, + ); + } +} + +class FetchMyProjectsListFail extends FetchMyProjectsListState { + final dynamic error; + FetchMyProjectsListFail(this.error); +} + +class FetchMyProjectsListCubit extends Cubit { + FetchMyProjectsListCubit() : super(FetchMyProjectsListInitial()); + final ProjectRepository _projectRepository = ProjectRepository(); + + void fetch() async { + try { + emit(FetchMyProjectsListInProgress()); + DataOutput dataOutput = + await _projectRepository.getMyProjects(offset: 0); + + emit(FetchMyProjectsListSuccess( + hasError: false, + isLoadingMore: false, + offset: 0, + total: dataOutput.total, + projects: dataOutput.modelList)); + } catch (e) { + emit(FetchMyProjectsListFail(e)); + } + } + + delete(int id) { + if (state is FetchMyProjectsListSuccess) { + int indexWhere = (state as FetchMyProjectsListSuccess) + .projects + .indexWhere((element) => element.id == id); + (state as FetchMyProjectsListSuccess).projects.removeAt(indexWhere); + emit((state as FetchMyProjectsListSuccess) + .copyWith(projects: (state as FetchMyProjectsListSuccess).projects)); + } + } + + bool hasMore() { + if (state is FetchMyProjectsListSuccess) { + return (state as FetchMyProjectsListSuccess).projects.length < + (state as FetchMyProjectsListSuccess).total; + } + return false; + } + + void update(ProjectModel model) { + if (state is FetchMyProjectsListSuccess) { + int indexWhere = (state as FetchMyProjectsListSuccess) + .projects + .indexWhere((element) => element.id == model.id); + if (indexWhere.isNegative) { + (state as FetchMyProjectsListSuccess).projects.add(model); + } else { + (state as FetchMyProjectsListSuccess).projects[indexWhere] = model; + } + emit((state as FetchMyProjectsListSuccess) + .copyWith(projects: (state as FetchMyProjectsListSuccess).projects)); + } + } + + void fetchMore() async { + if (state is FetchMyProjectsListInProgress) { + return; + } + try { + if (state is FetchMyProjectsListSuccess) { + emit((state as FetchMyProjectsListSuccess) + .copyWith(isLoadingMore: true)); + DataOutput result = + await _projectRepository.getMyProjects( + offset: (state as FetchMyProjectsListSuccess).projects.length, + ); + + List projects = + (state as FetchMyProjectsListSuccess).projects; + projects.addAll(result.modelList); + + emit(FetchMyProjectsListSuccess( + projects: projects, + isLoadingMore: false, + hasError: false, + offset: projects.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchMyProjectsListSuccess) + .copyWith(isLoadingMore: false, hasError: true)); + } + } +} diff --git a/lib/data/cubits/project/fetch_projects.dart b/lib/data/cubits/project/fetch_projects.dart new file mode 100644 index 0000000..f0fab44 --- /dev/null +++ b/lib/data/cubits/project/fetch_projects.dart @@ -0,0 +1,111 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:ebroker/data/Repositories/project_repository.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/project_model.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +abstract class FetchProjectsState {} + +class FetchProjectsInitial extends FetchProjectsState {} + +class FetchProjectsInProgress extends FetchProjectsState {} + +class FetchProjectsSuccess extends FetchProjectsState { + final List projects; + final bool isLoadingMore; + final bool hasError; + final int offset; + final int total; + + FetchProjectsSuccess({ + required this.projects, + required this.isLoadingMore, + required this.hasError, + required this.offset, + required this.total, + }); + + FetchProjectsSuccess copyWith({ + List? projects, + bool? isLoadingMore, + bool? hasError, + int? offset, + int? total, + }) { + return FetchProjectsSuccess( + projects: projects ?? this.projects, + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + hasError: hasError ?? this.hasError, + offset: offset ?? this.offset, + total: total ?? this.total, + ); + } +} + +class FetchProjectsFailure extends FetchProjectsState { + final dynamic errorMessage; + + FetchProjectsFailure(this.errorMessage); +} + +class FetchProjectsCubit extends Cubit { + FetchProjectsCubit() : super(FetchProjectsInitial()); + final ProjectRepository _projectRepository = ProjectRepository(); + Future fetchProjects() async { + try { + emit(FetchProjectsInProgress()); + DataOutput result = + await _projectRepository.getProjects(offset: 0); + emit(FetchProjectsSuccess( + projects: result.modelList, + offset: 0, + isLoadingMore: false, + total: result.total, + hasError: false)); + } catch (e) { + emit(FetchProjectsFailure(e)); + } + } + + bool hasMore() { + if (state is FetchProjectsSuccess) { + return (state as FetchProjectsSuccess).projects.length < + (state as FetchProjectsSuccess).total; + } + return false; + } + + isProjectEmpty() { + if (state is FetchProjectsSuccess) { + return (state as FetchProjectsSuccess).projects.isEmpty; + } + return true; + } + + fetchMoreProjects() async { + if (state is FetchProjectsInProgress) { + return; + } + try { + if (state is FetchProjectsSuccess) { + emit((state as FetchProjectsSuccess).copyWith(isLoadingMore: true)); + DataOutput result = await _projectRepository.getProjects( + offset: (state as FetchProjectsSuccess).projects.length, + ); + + List projects = (state as FetchProjectsSuccess).projects; + projects.addAll(result.modelList); + + emit(FetchProjectsSuccess( + projects: projects, + isLoadingMore: false, + hasError: false, + offset: projects.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchProjectsSuccess) + .copyWith(isLoadingMore: false, hasError: true)); + } + } +} diff --git a/lib/data/cubits/project/manage_project_cubit.dart b/lib/data/cubits/project/manage_project_cubit.dart new file mode 100644 index 0000000..8b170a1 --- /dev/null +++ b/lib/data/cubits/project/manage_project_cubit.dart @@ -0,0 +1,41 @@ +import 'package:ebroker/data/Repositories/project_repository.dart'; +import 'package:ebroker/data/model/project_model.dart'; + +import '../../../exports/main_export.dart'; + +abstract class ManageProjectState {} + +class ManageProjectIntial extends ManageProjectState {} + +class ManageProjectInProgress extends ManageProjectState {} + +class ManageProjectInSuccess extends ManageProjectState { + final ProjectModel project; + ManageProjectInSuccess(this.project); +} + +class ManageProjectInFail extends ManageProjectState { + final dynamic error; + ManageProjectInFail(this.error); +} + +enum ManageProjectType { create, update } + +class ManageProjectCubit extends Cubit { + ManageProjectCubit() : super(ManageProjectIntial()); + final ProjectRepository _projectRepository = ProjectRepository(); + void manage( + {required ManageProjectType type, + required Map data}) async { + try { + emit(ManageProjectInProgress()); + var reposnse = await _projectRepository.createProject(data); + print("RESP DTA ${reposnse}"); + emit(ManageProjectInSuccess(ProjectModel.fromMap(reposnse['data'][0]))); + } catch (e, st) { + emit(ManageProjectInFail( + st, + )); + } + } +} diff --git a/lib/data/cubits/property/Interest/change_interest_in_property_cubit.dart b/lib/data/cubits/property/Interest/change_interest_in_property_cubit.dart new file mode 100644 index 0000000..a911c52 --- /dev/null +++ b/lib/data/cubits/property/Interest/change_interest_in_property_cubit.dart @@ -0,0 +1,61 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:ebroker/data/Repositories/interest_repository.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import 'package:ebroker/utils/constant.dart'; + +// import '../../../Repositories/property_repository.dart'; + +enum PropertyInterest { + interested("1"), + notInterested("0"); + + final String value; + const PropertyInterest(this.value); +} + +abstract class ChangeInterestInPropertyState {} + +class ChangeInterestInPropertyInitial extends ChangeInterestInPropertyState {} + +class ChangeInterestInPropertyInProgress + extends ChangeInterestInPropertyState {} + +class ChangeInterestInPropertySuccess extends ChangeInterestInPropertyState { + PropertyInterest interest; + ChangeInterestInPropertySuccess({ + required this.interest, + }); +} + +class ChangeInterestInPropertyFailure extends ChangeInterestInPropertyState { + final String errorMessage; + + ChangeInterestInPropertyFailure(this.errorMessage); +} + +class ChangeInterestInPropertyCubit + extends Cubit { + InterestRepository _interestRepository=InterestRepository(); + ChangeInterestInPropertyCubit() : super(ChangeInterestInPropertyInitial()); + + Future changeInterest({ + required String propertyId, + required PropertyInterest interest, + }) async { + try { + emit(ChangeInterestInPropertyInProgress()); + await _interestRepository.setInterest( + interest: interest.value, propertyId: propertyId); + if (interest == PropertyInterest.interested) { + Constant.interestedPropertyIds.add(int.parse(propertyId)); + } else { + Constant.interestedPropertyIds.remove(int.parse(propertyId)); + } + + emit(ChangeInterestInPropertySuccess(interest: interest)); + } catch (e) { + emit(ChangeInterestInPropertyFailure(e.toString())); + } + } +} diff --git a/lib/data/cubits/property/create_advertisement_cubit.dart b/lib/data/cubits/property/create_advertisement_cubit.dart new file mode 100644 index 0000000..859b9db --- /dev/null +++ b/lib/data/cubits/property/create_advertisement_cubit.dart @@ -0,0 +1,59 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:io'; + +import 'package:ebroker/data/model/property_model.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../Repositories/advertisement_repository.dart'; + +abstract class CreateAdvertisementState {} + +class CreateAdvertisementInitial extends CreateAdvertisementState {} + +class CreateAdvertisementInProgress extends CreateAdvertisementState {} + +class CreateAdvertisementSuccess extends CreateAdvertisementState { + final dynamic proeprtyId; + final PropertyModel property; + CreateAdvertisementSuccess({ + required this.property, + required this.proeprtyId, + }); +} + +class CreateAdvertisementFailure extends CreateAdvertisementState { + final String errorMessage; + CreateAdvertisementFailure( + this.errorMessage, + ); +} + +class CreateAdvertisementCubit extends Cubit { + final AdvertisementRepository _advertisementRepository = + AdvertisementRepository(); + + CreateAdvertisementCubit() + : super( + CreateAdvertisementInitial(), + ); + + Future create({ + required String type, + required String propertyId, + File? image, + }) async { + try { + emit(CreateAdvertisementInProgress()); + Map result = await _advertisementRepository.create( + propertyId: propertyId, + type: type, + image: image, + ); + emit(CreateAdvertisementSuccess( + proeprtyId: propertyId, + property: PropertyModel.fromMap(result['data'][0]))); + } catch (e) { + emit(CreateAdvertisementFailure(e.toString())); + } + } +} diff --git a/lib/data/cubits/property/create_property_cubit.dart b/lib/data/cubits/property/create_property_cubit.dart new file mode 100644 index 0000000..4751e31 --- /dev/null +++ b/lib/data/cubits/property/create_property_cubit.dart @@ -0,0 +1,52 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'package:ebroker/data/model/property_model.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../Repositories/property_repository.dart'; + +abstract class CreatePropertyState {} + +class CreatePropertyInitial extends CreatePropertyState {} + +class CreatePropertyInProgress extends CreatePropertyState {} + +class CreatePropertySuccess extends CreatePropertyState { + final PropertyModel? propertyModel; + CreatePropertySuccess({ + this.propertyModel, + }); +} + +class CreatePropertyFailure extends CreatePropertyState { + final String errorMessage; + + CreatePropertyFailure(this.errorMessage); +} + +class CreatePropertyCubit extends Cubit { + final PropertyRepository _propertyRepository = PropertyRepository(); + + CreatePropertyCubit() : super(CreatePropertyInitial()); + + Future create({required Map parameters}) async { + try { + emit(CreatePropertyInProgress()); + var result = + await _propertyRepository.createProperty(parameters: parameters); + + if (result['data'] != null) { + emit(CreatePropertySuccess( + propertyModel: PropertyModel.fromMap(result['data'][0]))); + } else { + if (result is Map) { + emit(CreatePropertyFailure(result['message'].toString())); + } else { + emit(CreatePropertyFailure("Something went wrong".toString())); + } + } + } catch (e) { + emit(CreatePropertyFailure(e.toString())); + } + } +} diff --git a/lib/data/cubits/property/delete_property_cubit.dart b/lib/data/cubits/property/delete_property_cubit.dart new file mode 100644 index 0000000..a1be088 --- /dev/null +++ b/lib/data/cubits/property/delete_property_cubit.dart @@ -0,0 +1,32 @@ +import '../../Repositories/property_repository.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +abstract class DeletePropertyState {} + +class DeletePropertyInitial extends DeletePropertyState {} + +class DeletePropertyInProgress extends DeletePropertyState {} + +class DeletePropertySuccess extends DeletePropertyState {} + +class DeletePropertyFailure extends DeletePropertyState { + final String errorMessage; + + DeletePropertyFailure(this.errorMessage); +} + +class DeletePropertyCubit extends Cubit { + final PropertyRepository _propertyRepository = PropertyRepository(); + DeletePropertyCubit() : super(DeletePropertyInitial()); + + Future delete(int id) async { + try { + emit(DeletePropertyInProgress()); + + await _propertyRepository.deleteProperty(id); + emit(DeletePropertySuccess()); + } catch (e) { + emit(DeletePropertyFailure(e.toString())); + } + } +} diff --git a/lib/data/cubits/property/favorite_id_properties.dart b/lib/data/cubits/property/favorite_id_properties.dart new file mode 100644 index 0000000..9e4d515 --- /dev/null +++ b/lib/data/cubits/property/favorite_id_properties.dart @@ -0,0 +1,28 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:flutter_bloc/flutter_bloc.dart'; + +class FavoriteIDsCubit extends Cubit { + FavoriteIDsCubit() : super(FavoriteIDsState(list: {})); + + void addToFavoriteLocal(int id) { + state.list.add(id); + emit(FavoriteIDsState(list: state.list)); + } + + void removeFromFavourite(int id) { + state.list.remove(id); + emit(FavoriteIDsState(list: state.list)); + } + + bool isFavourite(int id) { + return state.list.contains(id); + } +} + +class FavoriteIDsState { + Set list; + + FavoriteIDsState({ + required this.list, + }); +} diff --git a/lib/data/cubits/property/fetch_city_property_list.dart b/lib/data/cubits/property/fetch_city_property_list.dart new file mode 100644 index 0000000..93a5b78 --- /dev/null +++ b/lib/data/cubits/property/fetch_city_property_list.dart @@ -0,0 +1,145 @@ +import 'package:ebroker/data/model/property_model.dart'; + +import '../../../Ui/screens/proprties/viewAll.dart'; +import '../../../exports/main_export.dart'; +import '../../Repositories/property_repository.dart'; +import '../../model/data_output.dart'; + +abstract class FetchCityPropertyListState {} + +class FetchCityPropertyInitial extends FetchCityPropertyListState {} + +class FetchCityPropertyInProgress extends FetchCityPropertyListState {} + +class FetchCityPropertySuccess extends FetchCityPropertyListState + implements PropertySuccessStateWireframe { + @override + final bool isLoadingMore; + final bool loadingMoreError; + @override + final List properties; + final int offset; + final int total; + final String cityName; + FetchCityPropertySuccess( + {required this.isLoadingMore, + required this.loadingMoreError, + required this.properties, + required this.cityName, + required this.offset, + required this.total}); + + @override + set isLoadingMore(bool _isLoadingMore) { + // TODO: implement isLoadingMore + } + + @override + set properties(List _properties) { + // TODO: implement properties + } + + FetchCityPropertySuccess copyWith( + {bool? isLoadingMore, + bool? loadingMoreError, + List? properties, + int? offset, + int? total, + String? cityName}) { + return FetchCityPropertySuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + loadingMoreError: loadingMoreError ?? this.loadingMoreError, + properties: properties ?? this.properties, + offset: offset ?? this.offset, + total: total ?? this.total, + cityName: cityName ?? this.cityName, + ); + } +} + +class FetchCityPropertyFail extends FetchCityPropertyListState + implements PropertyErrorStateWireframe { + final dynamic error; + FetchCityPropertyFail(this.error); + + @override + set error(_error) { + // TODO: implement error + } +} + +class FetchCityPropertyList extends Cubit + implements PropertyCubitWireframe { + FetchCityPropertyList() : super(FetchCityPropertyInitial()); + final PropertyRepository _propertyRepository = PropertyRepository(); + + @override + void fetch({bool? forceRefresh, String? cityName}) async { + if (forceRefresh != true) { + if (state is FetchCityPropertySuccess) { + // WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { + await Future.delayed( + const Duration(seconds: AppSettings.hiddenAPIProcessDelay)); + // }); + } else { + emit(FetchCityPropertyInProgress()); + } + } else { + emit(FetchCityPropertyInProgress()); + } + try { + DataOutput result = await _propertyRepository + .fetchPropertiesFromCityName(cityName!, offset: 0); + // log("###THESE ARE ${result.modelList}"); + emit(FetchCityPropertySuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + cityName: cityName, + total: result.total)); + } catch (e) { + emit(FetchCityPropertyFail(e as dynamic)); + } + } + + @override + void fetchMore() async { + try { + if (state is FetchCityPropertySuccess) { + if ((state as FetchCityPropertySuccess).isLoadingMore) { + return; + } + emit((state as FetchCityPropertySuccess).copyWith(isLoadingMore: true)); + DataOutput result = + await _propertyRepository.fetchPropertiesFromCityName( + (state as FetchCityPropertySuccess).cityName, + offset: (state as FetchCityPropertySuccess).properties.length, + ); + + FetchCityPropertySuccess propertiesState = + (state as FetchCityPropertySuccess); + propertiesState.properties.addAll(result.modelList); + emit(FetchCityPropertySuccess( + cityName: (state as FetchCityPropertySuccess).cityName, + isLoadingMore: false, + loadingMoreError: false, + properties: propertiesState.properties, + offset: (state as FetchCityPropertySuccess).properties.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchCityPropertySuccess) + .copyWith(isLoadingMore: false, loadingMoreError: true)); + } + } + + @override + bool hasMoreData() { + if (state is FetchCityPropertySuccess) { + return (state as FetchCityPropertySuccess).properties.length < + (state as FetchCityPropertySuccess).total; + } + return false; + } +} diff --git a/lib/data/cubits/property/fetch_home_properties_cubit.dart b/lib/data/cubits/property/fetch_home_properties_cubit.dart new file mode 100644 index 0000000..cb5b23e --- /dev/null +++ b/lib/data/cubits/property/fetch_home_properties_cubit.dart @@ -0,0 +1,117 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'package:ebroker/data/Repositories/property_repository.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +abstract class FetchHomePropertiesState {} + +class FetchHomePropertiesInitial extends FetchHomePropertiesState {} + +class FetchHomePropertiesInProgress extends FetchHomePropertiesState {} + +class FetchHomePropertiesSuccess extends FetchHomePropertiesState { + final int total; + final int offset; + final bool isLoadingMore; + final bool hasError; + final List property; + + FetchHomePropertiesSuccess({ + required this.total, + required this.offset, + required this.isLoadingMore, + required this.hasError, + required this.property, + }); + + FetchHomePropertiesSuccess copyWith({ + int? total, + int? offset, + bool? isLoadingMore, + bool? hasMoreData, + List? property, + }) { + return FetchHomePropertiesSuccess( + total: total ?? this.total, + offset: offset ?? this.offset, + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + hasError: hasMoreData ?? hasError, + property: property ?? this.property, + ); + } +} + +class FetchHomePropertiesFailure extends FetchHomePropertiesState { + final String errorMessage; + + FetchHomePropertiesFailure(this.errorMessage); +} + +class FetchHomePropertiesCubit extends Cubit { + final PropertyRepository _propertyRepository = PropertyRepository(); + FetchHomePropertiesCubit() : super(FetchHomePropertiesInitial()); + + void fetchProperty() async { + try { + emit(FetchHomePropertiesInProgress()); + DataOutput result = + await _propertyRepository.fetchProperty(offset: 0); + emit(FetchHomePropertiesSuccess( + hasError: false, + isLoadingMore: false, + offset: 0, + property: result.modelList, + total: result.total, + )); + } catch (e) { + emit(FetchHomePropertiesFailure(e.toString())); + } + } + + Future fetchMoreProperty() async { + try { + if (state is FetchHomePropertiesSuccess) { + if ((state as FetchHomePropertiesSuccess).isLoadingMore) { + return; + } + emit((state as FetchHomePropertiesSuccess) + .copyWith(isLoadingMore: true)); + + DataOutput result = + await _propertyRepository.fetchProperty( + offset: (state as FetchHomePropertiesSuccess).property.length, + ); + + FetchHomePropertiesSuccess bookingsState = + (state as FetchHomePropertiesSuccess); + bookingsState.property.addAll(result.modelList); + emit( + FetchHomePropertiesSuccess( + isLoadingMore: false, + hasError: false, + property: bookingsState.property, + offset: (state as FetchHomePropertiesSuccess).property.length, + total: result.total, + ), + ); + } + } catch (e) { + emit( + (state as FetchHomePropertiesSuccess).copyWith( + isLoadingMore: false, + hasMoreData: true, + ), + ); + } + } + + bool hasMoreData() { + if (state is FetchHomePropertiesSuccess) { + return (state as FetchHomePropertiesSuccess).property.length < + (state as FetchHomePropertiesSuccess).total; + } + return false; + } +} diff --git a/lib/data/cubits/property/fetch_most_liked_properties.dart b/lib/data/cubits/property/fetch_most_liked_properties.dart new file mode 100644 index 0000000..bc9a5e0 --- /dev/null +++ b/lib/data/cubits/property/fetch_most_liked_properties.dart @@ -0,0 +1,273 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:convert'; + +import 'package:ebroker/Ui/screens/proprties/viewAll.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../../settings.dart'; +import '../../../utils/Network/networkAvailability.dart'; +import '../../Repositories/property_repository.dart'; +import '../../model/data_output.dart'; +import '../../model/property_model.dart'; + +abstract class FetchMostLikedPropertiesState {} + +class FetchMostLikedPropertiesInitial extends FetchMostLikedPropertiesState {} + +class FetchMostLikedPropertiesInProgress + extends FetchMostLikedPropertiesState {} + +class FetchMostLikedPropertiesSuccess extends FetchMostLikedPropertiesState + implements PropertySuccessStateWireframe { + @override + final bool isLoadingMore; + final bool loadingMoreError; + @override + final List properties; + final int offset; + final int total; + FetchMostLikedPropertiesSuccess({ + required this.isLoadingMore, + required this.loadingMoreError, + required this.properties, + required this.offset, + required this.total, + }); + + FetchMostLikedPropertiesSuccess copyWith({ + bool? isLoadingMore, + bool? loadingMoreError, + List? properties, + int? offset, + int? total, + }) { + return FetchMostLikedPropertiesSuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + loadingMoreError: loadingMoreError ?? this.loadingMoreError, + properties: properties ?? this.properties, + offset: offset ?? this.offset, + total: total ?? this.total, + ); + } + + Map toMap() { + return { + 'isLoadingMore': isLoadingMore, + 'loadingMoreError': loadingMoreError, + 'properties': properties.map((x) => x.toMap()).toList(), + 'offset': offset, + 'total': total, + }; + } + + factory FetchMostLikedPropertiesSuccess.fromMap(Map map) { + return FetchMostLikedPropertiesSuccess( + isLoadingMore: map['isLoadingMore'] as bool, + loadingMoreError: map['loadingMoreError'] as bool, + properties: List.from( + (map['properties']).map( + (x) => PropertyModel.fromMap(x as Map), + ), + ), + offset: map['offset'] as int, + total: map['total'] as int, + ); + } + + String toJson() => json.encode(toMap()); + + factory FetchMostLikedPropertiesSuccess.fromJson(String source) => + FetchMostLikedPropertiesSuccess.fromMap( + json.decode(source) as Map); + + @override + set isLoadingMore(bool _isLoadingMore) {} + + @override + set properties(List _properties) {} +} + +class FetchMostLikedPropertiesFailure extends FetchMostLikedPropertiesState + implements PropertyErrorStateWireframe { + final dynamic error; + FetchMostLikedPropertiesFailure(this.error); + + @override + set error(_error) { + // TODO: implement error + } +} + +class FetchMostLikedPropertiesCubit extends Cubit + with HydratedMixin + implements PropertyCubitWireframe { + FetchMostLikedPropertiesCubit() : super(FetchMostLikedPropertiesInitial()); + + final PropertyRepository _propertyRepository = PropertyRepository(); + + @override + Future fetch({bool? forceRefresh, bool? loadWithoutDelay}) async { + // if (state is FetchMostLikedPropertiesSuccess) { + // return; + // } + if (forceRefresh != true) { + if (state is FetchMostLikedPropertiesSuccess) { + // WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { + await Future.delayed(Duration( + seconds: loadWithoutDelay == true + ? 0 + : AppSettings.hiddenAPIProcessDelay)); + // }); + } else { + emit(FetchMostLikedPropertiesInProgress()); + } + } else { + emit(FetchMostLikedPropertiesInProgress()); + } + try { + if (forceRefresh == true) { + DataOutput result = await _propertyRepository + .fetchMostLikeProperty(offset: 0, sendCityName: true); + + emit(FetchMostLikedPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total)); + } else { + if (state is! FetchMostLikedPropertiesSuccess) { + DataOutput result = + await _propertyRepository.fetchMostLikeProperty( + offset: 0, + sendCityName: true, + ); + + emit( + FetchMostLikedPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total), + ); + } else { + await CheckInternet.check( + onInternet: () async { + DataOutput result = + await _propertyRepository.fetchMostLikeProperty( + offset: 0, + sendCityName: true, + ); + + emit( + FetchMostLikedPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total), + ); + }, + onNoInternet: () { + emit( + FetchMostLikedPropertiesSuccess( + total: (state as FetchMostLikedPropertiesSuccess).total, + offset: (state as FetchMostLikedPropertiesSuccess).offset, + isLoadingMore: (state as FetchMostLikedPropertiesSuccess) + .isLoadingMore, + loadingMoreError: (state as FetchMostLikedPropertiesSuccess) + .loadingMoreError, + properties: + (state as FetchMostLikedPropertiesSuccess).properties), + ); + }, + ); + } + } + } catch (e) { + emit(FetchMostLikedPropertiesFailure(e as dynamic)); + } + } + + void update(PropertyModel model) { + if (state is FetchMostLikedPropertiesSuccess) { + List properties = + (state as FetchMostLikedPropertiesSuccess).properties; + + var index = properties.indexWhere((element) => element.id == model.id); + + if (index != -1) { + properties[index] = model; + } + + emit((state as FetchMostLikedPropertiesSuccess) + .copyWith(properties: properties)); + } + } + + @override + Future fetchMore() async { + try { + if (state is FetchMostLikedPropertiesSuccess) { + if ((state as FetchMostLikedPropertiesSuccess).isLoadingMore) { + return; + } + emit((state as FetchMostLikedPropertiesSuccess) + .copyWith(isLoadingMore: true)); + DataOutput result = + await _propertyRepository.fetchMostLikeProperty( + offset: (state as FetchMostLikedPropertiesSuccess) + .properties + .length, + sendCityName: true); + + FetchMostLikedPropertiesSuccess propertiesState = + (state as FetchMostLikedPropertiesSuccess); + propertiesState.properties.addAll(result.modelList); + emit(FetchMostLikedPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: propertiesState.properties, + offset: + (state as FetchMostLikedPropertiesSuccess).properties.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchMostLikedPropertiesSuccess) + .copyWith(isLoadingMore: false, loadingMoreError: true)); + } + } + + @override + bool hasMoreData() { + if (state is FetchMostLikedPropertiesSuccess) { + return (state as FetchMostLikedPropertiesSuccess).properties.length < + (state as FetchMostLikedPropertiesSuccess).total; + } + return false; + } + + @override + FetchMostLikedPropertiesState? fromJson(Map json) { + try { + var state = json['cubit_state']; + + if (state == "FetchMostLikedPropertiesSuccess") { + return FetchMostLikedPropertiesSuccess.fromMap(json); + } + } catch (e) {} + + return null; + } + + @override + Map? toJson(FetchMostLikedPropertiesState state) { + if (state is FetchMostLikedPropertiesSuccess) { + Map map = state.toMap(); + map['cubit_state'] = "FetchMostLikedPropertiesSuccess"; + return map; + } + return null; + } +} diff --git a/lib/data/cubits/property/fetch_most_viewed_properties_cubit.dart b/lib/data/cubits/property/fetch_most_viewed_properties_cubit.dart new file mode 100644 index 0000000..c1a7d43 --- /dev/null +++ b/lib/data/cubits/property/fetch_most_viewed_properties_cubit.dart @@ -0,0 +1,267 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:convert'; + +import 'package:ebroker/Ui/screens/proprties/viewAll.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../../settings.dart'; +import '../../../utils/Network/networkAvailability.dart'; +import '../../Repositories/property_repository.dart'; +import '../../model/data_output.dart'; +import '../../model/property_model.dart'; + +abstract class FetchMostViewedPropertiesState {} + +class FetchMostViewedPropertiesInitial extends FetchMostViewedPropertiesState {} + +class FetchMostViewedPropertiesInProgress + extends FetchMostViewedPropertiesState {} + +class FetchMostViewedPropertiesSuccess extends FetchMostViewedPropertiesState + implements PropertySuccessStateWireframe { + @override + final bool isLoadingMore; + final bool loadingMoreError; + @override + final List properties; + final int offset; + final int total; + FetchMostViewedPropertiesSuccess({ + required this.isLoadingMore, + required this.loadingMoreError, + required this.properties, + required this.offset, + required this.total, + }); + + FetchMostViewedPropertiesSuccess copyWith({ + bool? isLoadingMore, + bool? loadingMoreError, + List? properties, + int? offset, + int? total, + }) { + return FetchMostViewedPropertiesSuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + loadingMoreError: loadingMoreError ?? this.loadingMoreError, + properties: properties ?? this.properties, + offset: offset ?? this.offset, + total: total ?? this.total, + ); + } + + Map toMap() { + return { + 'isLoadingMore': isLoadingMore, + 'loadingMoreError': loadingMoreError, + 'properties': properties.map((x) => x.toMap()).toList(), + 'offset': offset, + 'total': total, + }; + } + + factory FetchMostViewedPropertiesSuccess.fromMap(Map map) { + return FetchMostViewedPropertiesSuccess( + isLoadingMore: map['isLoadingMore'] as bool, + loadingMoreError: map['loadingMoreError'] as bool, + properties: List.from( + (map['properties']).map( + (x) => PropertyModel.fromMap(x as Map), + ), + ), + offset: map['offset'] as int, + total: map['total'] as int, + ); + } + + String toJson() => json.encode(toMap()); + + factory FetchMostViewedPropertiesSuccess.fromJson(String source) => + FetchMostViewedPropertiesSuccess.fromMap( + json.decode(source) as Map); + + @override + set properties(List _properties) { + // TODO: implement properties + } + + @override + set isLoadingMore(bool _isLoadingMore) { + // TODO: implement isLoadingMore + } +} + +class FetchMostViewedPropertiesFailure extends FetchMostViewedPropertiesState + implements PropertyErrorStateWireframe { + final dynamic error; + FetchMostViewedPropertiesFailure(this.error); + + @override + set error(_error) { + // TODO: implement error + } +} + +class FetchMostViewedPropertiesCubit + extends Cubit + with HydratedMixin + implements PropertyCubitWireframe { + FetchMostViewedPropertiesCubit() : super(FetchMostViewedPropertiesInitial()); + + final PropertyRepository _propertyRepository = PropertyRepository(); + + fetch({bool? forceRefresh, bool? loadWithoutDelay}) async { + // if (state is FetchMostViewedPropertiesSuccess) { + // return; + // } + if (forceRefresh != true) { + if (state is FetchMostViewedPropertiesSuccess) { + // WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { + await Future.delayed(Duration( + seconds: loadWithoutDelay == true + ? 0 + : AppSettings.hiddenAPIProcessDelay)); + // }); + } else { + emit(FetchMostViewedPropertiesInProgress()); + } + } else { + emit(FetchMostViewedPropertiesInProgress()); + } + try { + if (forceRefresh == true) { + DataOutput result = await _propertyRepository + .fetchMostViewedProperty(offset: 0, sendCityName: true); + + emit(FetchMostViewedPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total)); + } else { + if (state is! FetchMostViewedPropertiesSuccess) { + DataOutput result = await _propertyRepository + .fetchMostViewedProperty(offset: 0, sendCityName: true); + + emit(FetchMostViewedPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total)); + } else { + await CheckInternet.check( + onInternet: () async { + DataOutput result = await _propertyRepository + .fetchMostViewedProperty(offset: 0, sendCityName: true); + + emit(FetchMostViewedPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total)); + }, + onNoInternet: () { + emit( + FetchMostViewedPropertiesSuccess( + total: (state as FetchMostViewedPropertiesSuccess).total, + offset: (state as FetchMostViewedPropertiesSuccess).offset, + isLoadingMore: (state as FetchMostViewedPropertiesSuccess) + .isLoadingMore, + loadingMoreError: + (state as FetchMostViewedPropertiesSuccess) + .loadingMoreError, + properties: + (state as FetchMostViewedPropertiesSuccess).properties), + ); + }, + ); + } + } + } catch (e, st) { + print(st); + emit(FetchMostViewedPropertiesFailure(e as dynamic)); + } + } + + void update(PropertyModel model) { + if (state is FetchMostViewedPropertiesSuccess) { + List properties = + (state as FetchMostViewedPropertiesSuccess).properties; + + var index = properties.indexWhere((element) => element.id == model.id); + + if (index != -1) { + properties[index] = model; + } + + emit((state as FetchMostViewedPropertiesSuccess) + .copyWith(properties: properties)); + } + } + + Future fetchMore() async { + try { + if (state is FetchMostViewedPropertiesSuccess) { + if ((state as FetchMostViewedPropertiesSuccess).isLoadingMore) { + return; + } + emit((state as FetchMostViewedPropertiesSuccess) + .copyWith(isLoadingMore: true)); + DataOutput result = + await _propertyRepository.fetchMostViewedProperty( + offset: (state as FetchMostViewedPropertiesSuccess) + .properties + .length, + sendCityName: true); + + FetchMostViewedPropertiesSuccess propertiesState = + (state as FetchMostViewedPropertiesSuccess); + propertiesState.properties.addAll(result.modelList); + emit(FetchMostViewedPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: propertiesState.properties, + offset: + (state as FetchMostViewedPropertiesSuccess).properties.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchMostViewedPropertiesSuccess) + .copyWith(isLoadingMore: false, loadingMoreError: true)); + } + } + + bool hasMoreData() { + if (state is FetchMostViewedPropertiesSuccess) { + return (state as FetchMostViewedPropertiesSuccess).properties.length < + (state as FetchMostViewedPropertiesSuccess).total; + } + return false; + } + + @override + FetchMostViewedPropertiesState? fromJson(Map json) { + try { + var state = json['cubit_state']; + + if (state == "FetchMostViewedPropertiesSuccess") { + return FetchMostViewedPropertiesSuccess.fromMap(json); + } + } catch (e) {} + + return null; + } + + @override + Map? toJson(FetchMostViewedPropertiesState state) { + if (state is FetchMostViewedPropertiesSuccess) { + Map map = state.toMap(); + map['cubit_state'] = "FetchMostViewedPropertiesSuccess"; + return map; + } + return null; + } +} diff --git a/lib/data/cubits/property/fetch_my_promoted_propertys_cubit.dart b/lib/data/cubits/property/fetch_my_promoted_propertys_cubit.dart new file mode 100644 index 0000000..e1c651b --- /dev/null +++ b/lib/data/cubits/property/fetch_my_promoted_propertys_cubit.dart @@ -0,0 +1,140 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../Repositories/property_repository.dart'; +import '../../model/data_output.dart'; +import '../../model/property_model.dart'; + +abstract class FetchMyPromotedPropertysState {} + +class FetchMyPromotedPropertysInitial extends FetchMyPromotedPropertysState {} + +class FetchMyPromotedPropertysInProgress + extends FetchMyPromotedPropertysState {} + +class FetchMyPromotedPropertysSuccess extends FetchMyPromotedPropertysState { + final bool isLoadingMore; + final bool loadingMoreError; + final List propertymodel; + final int offset; + final int total; + FetchMyPromotedPropertysSuccess({ + required this.isLoadingMore, + required this.loadingMoreError, + required this.propertymodel, + required this.offset, + required this.total, + }); + + FetchMyPromotedPropertysSuccess copyWith({ + bool? isLoadingMore, + bool? loadingMoreError, + List? propertymodel, + int? offset, + int? total, + }) { + return FetchMyPromotedPropertysSuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + loadingMoreError: loadingMoreError ?? this.loadingMoreError, + propertymodel: propertymodel ?? this.propertymodel, + offset: offset ?? this.offset, + total: total ?? this.total, + ); + } +} + +class FetchMyPromotedPropertysFailure extends FetchMyPromotedPropertysState { + final dynamic errorMessage; + FetchMyPromotedPropertysFailure(this.errorMessage); +} + +class FetchMyPromotedPropertysCubit + extends Cubit { + FetchMyPromotedPropertysCubit() : super(FetchMyPromotedPropertysInitial()); + + final PropertyRepository _propertyRepository = PropertyRepository(); + + Future fetchMyPromotedPropertys() async { + try { + emit(FetchMyPromotedPropertysInProgress()); + + DataOutput result = + await _propertyRepository.fetchMyPromotedProeprties(offset: 0); + + emit( + FetchMyPromotedPropertysSuccess( + isLoadingMore: false, + loadingMoreError: false, + propertymodel: result.modelList, + offset: 0, + total: result.total, + ), + ); + } catch (e) { + emit(FetchMyPromotedPropertysFailure(e)); + } + } + + void delete(dynamic id) { + if (state is FetchMyPromotedPropertysSuccess) { + List propertymodel = + (state as FetchMyPromotedPropertysSuccess).propertymodel; + propertymodel.removeWhere((element) => element.id == id); + + emit((state as FetchMyPromotedPropertysSuccess) + .copyWith(propertymodel: propertymodel)); + } + } + + Future fetchMyPromotedPropertysMore() async { + try { + if (state is FetchMyPromotedPropertysSuccess) { + if ((state as FetchMyPromotedPropertysSuccess).isLoadingMore) { + return; + } + emit((state as FetchMyPromotedPropertysSuccess) + .copyWith(isLoadingMore: true)); + DataOutput result = + await _propertyRepository.fetchMyPromotedProeprties( + offset: + (state as FetchMyPromotedPropertysSuccess).propertymodel.length, + ); + + FetchMyPromotedPropertysSuccess propertymodelState = + (state as FetchMyPromotedPropertysSuccess); + propertymodelState.propertymodel.addAll(result.modelList); + emit(FetchMyPromotedPropertysSuccess( + isLoadingMore: false, + loadingMoreError: false, + propertymodel: propertymodelState.propertymodel, + offset: + (state as FetchMyPromotedPropertysSuccess).propertymodel.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchMyPromotedPropertysSuccess) + .copyWith(isLoadingMore: false, loadingMoreError: true)); + } + } + + bool hasMoreData() { + if (state is FetchMyPromotedPropertysSuccess) { + return (state as FetchMyPromotedPropertysSuccess).propertymodel.length < + (state as FetchMyPromotedPropertysSuccess).total; + } + return false; + } + void update(PropertyModel model) { + if (state is FetchMyPromotedPropertysSuccess) { + List properties = + (state as FetchMyPromotedPropertysSuccess).propertymodel; + + var index = properties.indexWhere((element) => element.id == model.id); + if (index != -1) { + properties[index] = model; + } + + emit((state as FetchMyPromotedPropertysSuccess) + .copyWith(propertymodel: properties)); + } + } +} diff --git a/lib/data/cubits/property/fetch_my_properties_cubit.dart b/lib/data/cubits/property/fetch_my_properties_cubit.dart new file mode 100644 index 0000000..c1c096a --- /dev/null +++ b/lib/data/cubits/property/fetch_my_properties_cubit.dart @@ -0,0 +1,182 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'package:ebroker/data/Repositories/property_repository.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +abstract class FetchMyPropertiesState {} + +class FetchMyPropertiesInitial extends FetchMyPropertiesState {} + +class FetchMyPropertiesInProgress extends FetchMyPropertiesState {} + +class FetchMyPropertiesSuccess extends FetchMyPropertiesState { + final int total; + final int offset; + final bool isLoadingMore; + final bool hasError; + final List myProperty; + FetchMyPropertiesSuccess({ + required this.total, + required this.offset, + required this.isLoadingMore, + required this.hasError, + required this.myProperty, + }); + + FetchMyPropertiesSuccess copyWith({ + int? total, + int? offset, + bool? isLoadingMore, + bool? hasMoreData, + List? myProperty, + }) { + return FetchMyPropertiesSuccess( + total: total ?? this.total, + offset: offset ?? this.offset, + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + hasError: hasMoreData ?? hasError, + myProperty: myProperty ?? this.myProperty, + ); + } +} + +class FetchMyPropertiesFailure extends FetchMyPropertiesState { + final dynamic errorMessage; + + FetchMyPropertiesFailure(this.errorMessage); +} + +class FetchMyPropertiesCubit extends Cubit { + FetchMyPropertiesCubit() : super(FetchMyPropertiesInitial()); + + final PropertyRepository _propertyRepository = PropertyRepository(); + Future fetchMyProperties({ + required String type, + }) async { + try { + emit(FetchMyPropertiesInProgress()); + DataOutput result = + await _propertyRepository.fetchMyProperties(offset: 0, type: type); + emit(FetchMyPropertiesSuccess( + hasError: false, + isLoadingMore: false, + myProperty: result.modelList, + total: result.total, + offset: 0)); + } catch (e) { + emit(FetchMyPropertiesFailure(e)); + } + } + + void updateStatus(int propertyId, String currentType) { + try { + if (state is FetchMyPropertiesSuccess) { + List propertyList = + (state as FetchMyPropertiesSuccess).myProperty; + int index = propertyList.indexWhere((element) { + return element.id == propertyId; + }); + if (currentType == "Sell") { + propertyList[index].properyType = "Sold"; + } + if (currentType == "Rent") { + propertyList[index].properyType = "Rented"; + } + + if (currentType == "Rented") { + propertyList[index].properyType = "Rent"; + } + if (kDebugMode) { + if (currentType == "Sold") { + propertyList[index].properyType = "Sell"; + } + } + + emit((state as FetchMyPropertiesSuccess) + .copyWith(myProperty: propertyList)); + } + } catch (e) {} + } + + void update(PropertyModel model) { + if (state is FetchMyPropertiesSuccess) { + List properties = + (state as FetchMyPropertiesSuccess).myProperty; + + var index = properties.indexWhere((element) => element.id == model.id); + + if (index != -1) { + properties[index] = model; + } + + emit( + (state as FetchMyPropertiesSuccess).copyWith(myProperty: properties)); + } + } + + Future fetchMoreProperties({required String type}) async { + try { + if (state is FetchMyPropertiesSuccess) { + if ((state as FetchMyPropertiesSuccess).isLoadingMore) { + return; + } + emit((state as FetchMyPropertiesSuccess).copyWith(isLoadingMore: true)); + + DataOutput result = + await _propertyRepository.fetchMyProperties( + offset: (state as FetchMyPropertiesSuccess).myProperty.length, + type: type); + + FetchMyPropertiesSuccess bookingsState = + (state as FetchMyPropertiesSuccess); + bookingsState.myProperty.addAll(result.modelList); + emit( + FetchMyPropertiesSuccess( + isLoadingMore: false, + hasError: false, + myProperty: bookingsState.myProperty, + offset: (state as FetchMyPropertiesSuccess).myProperty.length, + total: result.total, + ), + ); + } + } catch (e) { + emit( + (state as FetchMyPropertiesSuccess).copyWith( + isLoadingMore: false, + hasMoreData: true, + ), + ); + } + } + + void addLocal(PropertyModel model) { + try { + if (state is FetchMyPropertiesSuccess) { + List myProperty = + (state as FetchMyPropertiesSuccess).myProperty; + if (myProperty.isNotEmpty) { + myProperty.insert(0, model); + } else { + myProperty.add(model); + } + + emit((state as FetchMyPropertiesSuccess) + .copyWith(myProperty: myProperty)); + } + } catch (e, st) { + throw st; + } + } + + bool hasMoreData() { + if (state is FetchMyPropertiesSuccess) { + return (state as FetchMyPropertiesSuccess).myProperty.length < + (state as FetchMyPropertiesSuccess).total; + } + return false; + } +} diff --git a/lib/data/cubits/property/fetch_nearby_property_cubit.dart b/lib/data/cubits/property/fetch_nearby_property_cubit.dart new file mode 100644 index 0000000..2793f35 --- /dev/null +++ b/lib/data/cubits/property/fetch_nearby_property_cubit.dart @@ -0,0 +1,266 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:convert'; + +import 'package:ebroker/Ui/screens/proprties/viewAll.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../../settings.dart'; +import '../../../utils/Network/networkAvailability.dart'; +import '../../Repositories/property_repository.dart'; +import '../../model/data_output.dart'; +import '../../model/property_model.dart'; + +abstract class FetchNearbyPropertiesState {} + +class FetchNearbyPropertiesInitial extends FetchNearbyPropertiesState {} + +class FetchNearbyPropertiesInProgress extends FetchNearbyPropertiesState {} + +class FetchNearbyPropertiesSuccess extends FetchNearbyPropertiesState + implements PropertySuccessStateWireframe { + @override + final bool isLoadingMore; + final bool loadingMoreError; + @override + final List properties; + final int offset; + final int total; + FetchNearbyPropertiesSuccess({ + required this.isLoadingMore, + required this.loadingMoreError, + required this.properties, + required this.offset, + required this.total, + }); + + FetchNearbyPropertiesSuccess copyWith({ + bool? isLoadingMore, + bool? loadingMoreError, + List? properties, + int? offset, + int? total, + }) { + return FetchNearbyPropertiesSuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + loadingMoreError: loadingMoreError ?? this.loadingMoreError, + properties: properties ?? this.properties, + offset: offset ?? this.offset, + total: total ?? this.total, + ); + } + + Map toMap() { + return { + 'isLoadingMore': isLoadingMore, + 'loadingMoreError': loadingMoreError, + 'properties': properties.map((x) => x.toMap()).toList(), + 'offset': offset, + 'total': total, + }; + } + + factory FetchNearbyPropertiesSuccess.fromMap(Map map) { + return FetchNearbyPropertiesSuccess( + isLoadingMore: map['isLoadingMore'] as bool, + loadingMoreError: map['loadingMoreError'] as bool, + properties: List.from( + (map['properties']).map( + (x) => PropertyModel.fromMap(x as Map), + ), + ), + offset: map['offset'] as int, + total: map['total'] as int, + ); + } + + String toJson() => json.encode(toMap()); + + factory FetchNearbyPropertiesSuccess.fromJson(String source) => + FetchNearbyPropertiesSuccess.fromMap( + json.decode(source) as Map); + + @override + set isLoadingMore(bool _isLoadingMore) { + // TODO: implement isLoadingMore + } + + @override + set properties(List _properties) { + // TODO: implement properties + } +} + +class FetchNearbyPropertiesFailure extends FetchNearbyPropertiesState + implements PropertyErrorStateWireframe { + final dynamic error; + FetchNearbyPropertiesFailure(this.error); + + @override + set error(_error) { + // TODO: implement error + } +} + +class FetchNearbyPropertiesCubit extends Cubit + with HydratedMixin + implements PropertyCubitWireframe { + FetchNearbyPropertiesCubit() : super(FetchNearbyPropertiesInitial()); + + final PropertyRepository _propertyRepository = PropertyRepository(); + + @override + Future fetch({bool? forceRefresh, bool? loadWithoutDelay}) async { + // if (state is FetchNearbyPropertiesSuccess) { + // return; + // } + if (forceRefresh != true) { + if (state is FetchNearbyPropertiesSuccess) { + await Future.delayed(Duration( + seconds: loadWithoutDelay == true + ? 0 + : AppSettings.hiddenAPIProcessDelay)); + } else { + emit(FetchNearbyPropertiesInProgress()); + } + } else { + emit(FetchNearbyPropertiesInProgress()); + } + + try { + if (forceRefresh == true) { + DataOutput result = + await _propertyRepository.fetchNearByProperty( + offset: 0, + ); + emit(FetchNearbyPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total)); + } else { + if (state is! FetchNearbyPropertiesSuccess) { + DataOutput result = + await _propertyRepository.fetchNearByProperty( + offset: 0, + ); + emit(FetchNearbyPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total)); + } else { + await CheckInternet.check( + onInternet: () async { + DataOutput result = + await _propertyRepository.fetchNearByProperty( + offset: 0, + ); + emit(FetchNearbyPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total)); + }, + onNoInternet: () { + emit( + FetchNearbyPropertiesSuccess( + total: (state as FetchNearbyPropertiesSuccess).total, + offset: (state as FetchNearbyPropertiesSuccess).offset, + isLoadingMore: + (state as FetchNearbyPropertiesSuccess).isLoadingMore, + loadingMoreError: (state as FetchNearbyPropertiesSuccess) + .loadingMoreError, + properties: + (state as FetchNearbyPropertiesSuccess).properties), + ); + }, + ); + } + } + } catch (e) { + emit(FetchNearbyPropertiesFailure(e as dynamic)); + } + } + + void update(PropertyModel model) { + if (state is FetchNearbyPropertiesSuccess) { + List properties = + (state as FetchNearbyPropertiesSuccess).properties; + + var index = properties.indexWhere((element) => element.id == model.id); + + if (index != -1) { + properties[index] = model; + } + + emit((state as FetchNearbyPropertiesSuccess) + .copyWith(properties: properties)); + } + } + + @override + Future fetchMore() async { + try { + if (state is FetchNearbyPropertiesSuccess) { + if ((state as FetchNearbyPropertiesSuccess).isLoadingMore) { + return; + } + emit((state as FetchNearbyPropertiesSuccess) + .copyWith(isLoadingMore: true)); + DataOutput result = + await _propertyRepository.fetchNearByProperty( + offset: (state as FetchNearbyPropertiesSuccess).properties.length, + // sendCityName: true + ); + + FetchNearbyPropertiesSuccess propertiesState = + (state as FetchNearbyPropertiesSuccess); + propertiesState.properties.addAll(result.modelList); + emit(FetchNearbyPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: propertiesState.properties, + offset: (state as FetchNearbyPropertiesSuccess).properties.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchNearbyPropertiesSuccess) + .copyWith(isLoadingMore: false, loadingMoreError: true)); + } + } + + @override + bool hasMoreData() { + if (state is FetchNearbyPropertiesSuccess) { + return (state as FetchNearbyPropertiesSuccess).properties.length < + (state as FetchNearbyPropertiesSuccess).total; + } + return false; + } + + @override + FetchNearbyPropertiesState? fromJson(Map json) { + try { + var state = json['cubit_state']; + + if (state == "FetchNearbyPropertiesSuccess") { + return FetchNearbyPropertiesSuccess.fromMap(json); + } + } catch (e) {} + + return null; + } + + @override + Map? toJson(FetchNearbyPropertiesState state) { + if (state is FetchNearbyPropertiesSuccess) { + Map map = state.toMap(); + map['cubit_state'] = "FetchNearbyPropertiesSuccess"; + return map; + } + return null; + } +} diff --git a/lib/data/cubits/property/fetch_promoted_properties_cubit.dart b/lib/data/cubits/property/fetch_promoted_properties_cubit.dart new file mode 100644 index 0000000..74577cc --- /dev/null +++ b/lib/data/cubits/property/fetch_promoted_properties_cubit.dart @@ -0,0 +1,274 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:convert'; + +import 'package:ebroker/Ui/screens/proprties/viewAll.dart'; +import 'package:ebroker/utils/Network/networkAvailability.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../../settings.dart'; +import '../../Repositories/property_repository.dart'; +import '../../model/data_output.dart'; +import '../../model/property_model.dart'; + +abstract class FetchPromotedPropertiesState {} + +class FetchPromotedPropertiesInitial extends FetchPromotedPropertiesState {} + +class FetchPromotedPropertiesInProgress extends FetchPromotedPropertiesState {} + +class FetchPromotedPropertiesSuccess extends FetchPromotedPropertiesState + implements PropertySuccessStateWireframe { + @override + final bool isLoadingMore; + final bool loadingMoreError; + @override + final List properties; + final int offset; + final int total; + FetchPromotedPropertiesSuccess({ + required this.isLoadingMore, + required this.loadingMoreError, + required this.properties, + required this.offset, + required this.total, + }); + + FetchPromotedPropertiesSuccess copyWith({ + bool? isLoadingMore, + bool? loadingMoreError, + List? propertymodel, + int? offset, + int? total, + }) { + return FetchPromotedPropertiesSuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + loadingMoreError: loadingMoreError ?? this.loadingMoreError, + properties: propertymodel ?? this.properties, + offset: offset ?? this.offset, + total: total ?? this.total, + ); + } + + Map toMap() { + return { + 'isLoadingMore': isLoadingMore, + 'loadingMoreError': loadingMoreError, + 'propertymodel': properties.map((x) => x.toMap()).toList(), + 'offset': offset, + 'total': total, + }; + } + + factory FetchPromotedPropertiesSuccess.fromMap(Map map) { + return FetchPromotedPropertiesSuccess( + isLoadingMore: map['isLoadingMore'] as bool, + loadingMoreError: map['loadingMoreError'] as bool, + properties: List.from( + (map['propertymodel'] as List).map( + (x) => PropertyModel.fromMap(x as Map), + ), + ), + offset: map['offset'] as int, + total: map['total'] as int, + ); + } + + String toJson() => json.encode(toMap()); + + factory FetchPromotedPropertiesSuccess.fromJson(String source) => + FetchPromotedPropertiesSuccess.fromMap( + json.decode(source) as Map); + + @override + set isLoadingMore(bool _isLoadingMore) {} + + @override + set properties(List _properties) {} +} + +class FetchPromotedPropertiesFailure extends FetchPromotedPropertiesState + implements PropertyErrorStateWireframe { + final String error; + FetchPromotedPropertiesFailure(this.error); + + @override + set error(_error) {} +} + +class FetchPromotedPropertiesCubit extends Cubit + with HydratedMixin + implements PropertyCubitWireframe { + FetchPromotedPropertiesCubit() : super(FetchPromotedPropertiesInitial()); + + final PropertyRepository _propertyRepository = PropertyRepository(); + + @override + Future fetch({bool? forceRefresh, bool? loadWithoutDelay}) async { + ///if it is not force refresh + if (forceRefresh != true) { + ///This will check if state is success so it will delay 5 seconds to load data in background + if (state is FetchPromotedPropertiesSuccess) { + await Future.delayed(Duration( + seconds: loadWithoutDelay == true + ? 0 + : AppSettings.hiddenAPIProcessDelay)); + } else { + //if state is not success it will show shimmer + emit(FetchPromotedPropertiesInProgress()); + } + } else { + emit(FetchPromotedPropertiesInProgress()); + } + + try { + ///This will call api instantly when its force refresh + if (forceRefresh == true) { + DataOutput result = + await _propertyRepository.fetchPromotedProperty( + offset: 0, + sendCityName: true, + ); + emit( + FetchPromotedPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total, + ), + ); + } else { + ///And if it is not force refresh and state is not success, like its failed before so it will call API + if (state is! FetchPromotedPropertiesSuccess) { + DataOutput result = + await _propertyRepository.fetchPromotedProperty( + offset: 0, + sendCityName: true, + ); + emit( + FetchPromotedPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total, + ), + ); + } else { + await CheckInternet.check( + onInternet: () async { + ////If it is success state and internet is available it will call API to load new data + DataOutput result = + await _propertyRepository.fetchPromotedProperty( + offset: 0, + sendCityName: true, + ); + emit( + FetchPromotedPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: result.modelList, + offset: 0, + total: result.total, + ), + ); + }, + onNoInternet: () { + ///if there is no internet so it will load cached data + emit( + FetchPromotedPropertiesSuccess( + total: (state as FetchPromotedPropertiesSuccess).total, + offset: (state as FetchPromotedPropertiesSuccess).offset, + isLoadingMore: + (state as FetchPromotedPropertiesSuccess).isLoadingMore, + loadingMoreError: (state as FetchPromotedPropertiesSuccess) + .loadingMoreError, + properties: + (state as FetchPromotedPropertiesSuccess).properties), + ); + }, + ); + } + } + } catch (e) { + emit(FetchPromotedPropertiesFailure(e.toString())); + } + } + + void update(PropertyModel model) { + if (state is FetchPromotedPropertiesSuccess) { + List properties = + (state as FetchPromotedPropertiesSuccess).properties; + + var index = properties.indexWhere((element) => element.id == model.id); + if (index != -1) { + properties[index] = model; + } + + emit((state as FetchPromotedPropertiesSuccess) + .copyWith(propertymodel: properties)); + } + } + + @override + Future fetchMore() async { + try { + if (state is FetchPromotedPropertiesSuccess) { + if ((state as FetchPromotedPropertiesSuccess).isLoadingMore) { + return; + } + emit((state as FetchPromotedPropertiesSuccess) + .copyWith(isLoadingMore: true)); + DataOutput result = + await _propertyRepository.fetchPromotedProperty( + offset: + (state as FetchPromotedPropertiesSuccess).properties.length, + sendCityName: true); + + FetchPromotedPropertiesSuccess propertymodelState = + (state as FetchPromotedPropertiesSuccess); + propertymodelState.properties.addAll(result.modelList); + emit(FetchPromotedPropertiesSuccess( + isLoadingMore: false, + loadingMoreError: false, + properties: propertymodelState.properties, + offset: (state as FetchPromotedPropertiesSuccess).properties.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchPromotedPropertiesSuccess) + .copyWith(isLoadingMore: false, loadingMoreError: true)); + } + } + + bool hasMoreData() { + if (state is FetchPromotedPropertiesSuccess) { + return (state as FetchPromotedPropertiesSuccess).properties.length < + (state as FetchPromotedPropertiesSuccess).total; + } + return false; + } + + @override + FetchPromotedPropertiesState? fromJson(Map json) { + try { + FetchPromotedPropertiesSuccess fetchPromotedPropertiesSuccess = + FetchPromotedPropertiesSuccess.fromMap(json); + return fetchPromotedPropertiesSuccess; + } catch (e) { + // Log the error or handle it as needed + return null; // Ensure a value is returned even when an exception occurs + } + } + + @override + Map? toJson(FetchPromotedPropertiesState state) { + if (state is FetchPromotedPropertiesSuccess) { + Map mapped = state.toMap(); + mapped['cubit_state'] = "FetchPromotedPropertiesSuccess"; + return mapped; + } + + return null; + } +} diff --git a/lib/data/cubits/property/fetch_property_cubit.dart b/lib/data/cubits/property/fetch_property_cubit.dart new file mode 100644 index 0000000..1d93abe --- /dev/null +++ b/lib/data/cubits/property/fetch_property_cubit.dart @@ -0,0 +1,20 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; + +abstract class FetchPropertyState {} + +class FetchPropertyInitial extends FetchPropertyState {} + +class FetchPropertyInProgress extends FetchPropertyState {} + +class FetchPropertySuccess extends FetchPropertyState {} + +class FetchPropertyFailure extends FetchPropertyState { + final String errorMessage; + + FetchPropertyFailure(this.errorMessage); +} + +class FetchPropertyCubit extends Cubit { + // final PropertyRepository _propertyRepository = PropertyRepository(); + FetchPropertyCubit() : super(FetchPropertyInitial()); +} diff --git a/lib/data/cubits/property/fetch_property_from_category_cubit.dart b/lib/data/cubits/property/fetch_property_from_category_cubit.dart new file mode 100644 index 0000000..ae8947c --- /dev/null +++ b/lib/data/cubits/property/fetch_property_from_category_cubit.dart @@ -0,0 +1,138 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../Repositories/property_repository.dart'; +import '../../model/data_output.dart'; +import '../../model/property_model.dart'; + +abstract class FetchPropertyFromCategoryState {} + +class FetchPropertyFromCategoryInitial extends FetchPropertyFromCategoryState {} + +class FetchPropertyFromCategoryInProgress + extends FetchPropertyFromCategoryState {} + +class FetchPropertyFromCategorySuccess extends FetchPropertyFromCategoryState { + final bool isLoadingMore; + final bool loadingMoreError; + final List propertymodel; + final int offset; + final int total; + final int? categoryId; + FetchPropertyFromCategorySuccess( + {required this.isLoadingMore, + required this.loadingMoreError, + required this.propertymodel, + required this.offset, + required this.total, + this.categoryId}); + + FetchPropertyFromCategorySuccess copyWith( + {bool? isLoadingMore, + bool? loadingMoreError, + List? propertymodel, + int? offset, + int? total, + int? categoryId}) { + return FetchPropertyFromCategorySuccess( + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + loadingMoreError: loadingMoreError ?? this.loadingMoreError, + propertymodel: propertymodel ?? this.propertymodel, + offset: offset ?? this.offset, + total: total ?? this.total, + categoryId: categoryId ?? this.categoryId); + } +} + +class FetchPropertyFromCategoryFailure extends FetchPropertyFromCategoryState { + final dynamic errorMessage; + FetchPropertyFromCategoryFailure(this.errorMessage); +} + +class FetchPropertyFromCategoryCubit + extends Cubit { + FetchPropertyFromCategoryCubit() : super(FetchPropertyFromCategoryInitial()); + + final PropertyRepository _propertyRepository = PropertyRepository(); + + Future fetchPropertyFromCategory(int categoryId, + {bool? showPropertyType}) async { + try { + emit(FetchPropertyFromCategoryInProgress()); + + DataOutput result = + await _propertyRepository.fetchProperyFromCategoryId( + id: categoryId, + offset: 0, + showPropertyType: showPropertyType, + ); + emit( + FetchPropertyFromCategorySuccess( + isLoadingMore: false, + loadingMoreError: false, + propertymodel: result.modelList, + offset: 0, + total: result.total, + categoryId: categoryId, + ), + ); + } catch (e) { + emit( + FetchPropertyFromCategoryFailure( + e, + ), + ); + } + } + + Future fetchPropertyFromCategoryMore({bool? showPropertyType}) async { + try { + if (state is FetchPropertyFromCategorySuccess) { + if ((state as FetchPropertyFromCategorySuccess).isLoadingMore) { + return; + } + emit((state as FetchPropertyFromCategorySuccess) + .copyWith(isLoadingMore: true)); + + DataOutput result = + await _propertyRepository.fetchProperyFromCategoryId( + id: (state as FetchPropertyFromCategorySuccess).categoryId!, + showPropertyType: showPropertyType, + offset: (state as FetchPropertyFromCategorySuccess) + .propertymodel + .length); + + FetchPropertyFromCategorySuccess property = + (state as FetchPropertyFromCategorySuccess); + + property.propertymodel.addAll(result.modelList); + + emit( + FetchPropertyFromCategorySuccess( + isLoadingMore: false, + loadingMoreError: false, + propertymodel: property.propertymodel, + offset: (state as FetchPropertyFromCategorySuccess) + .propertymodel + .length, + total: result.total, + ), + ); + } + } catch (e) { + emit( + (state as FetchPropertyFromCategorySuccess).copyWith( + isLoadingMore: false, + loadingMoreError: true, + ), + ); + } + } + + bool hasMoreData() { + if (state is FetchPropertyFromCategorySuccess) { + return (state as FetchPropertyFromCategorySuccess).propertymodel.length < + (state as FetchPropertyFromCategorySuccess).total; + } + return false; + } +} diff --git a/lib/data/cubits/property/fetch_recent_properties.dart b/lib/data/cubits/property/fetch_recent_properties.dart new file mode 100644 index 0000000..967d2d1 --- /dev/null +++ b/lib/data/cubits/property/fetch_recent_properties.dart @@ -0,0 +1,251 @@ +// import 'dart:developer' as developer; +import 'package:ebroker/Ui/screens/proprties/viewAll.dart'; +import 'package:ebroker/data/Repositories/property_repository.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../../settings.dart'; +import '../../../utils/Network/networkAvailability.dart'; + +abstract class FetchRecentPropertiesState {} + +class FetchRecentProepertiesInitial extends FetchRecentPropertiesState {} + +class FetchRecentPropertiesInProgress extends FetchRecentPropertiesState {} + +class FetchRecentPropertiesSuccess extends FetchRecentPropertiesState + implements PropertySuccessStateWireframe { + final int total; + final int offset; + @override + final bool isLoadingMore; + final bool hasError; + @override + final List properties; + + FetchRecentPropertiesSuccess({ + required this.total, + required this.offset, + required this.isLoadingMore, + required this.hasError, + required this.properties, + }); + + FetchRecentPropertiesSuccess copyWith({ + int? total, + int? offset, + bool? isLoadingMore, + bool? hasError, + List? properties, + }) { + return FetchRecentPropertiesSuccess( + total: total ?? this.total, + offset: offset ?? this.offset, + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + hasError: hasError ?? this.hasError, + properties: properties ?? this.properties, + ); + } + + @override + set properties(List _properties) { + // TODO: implement properties + } + + @override + set isLoadingMore(bool _isLoadingMore) { + // TODO: implement isLoadingMore + } + + Map toMap() { + return { + 'total': this.total, + 'offset': this.offset, + 'isLoadingMore': this.isLoadingMore, + 'hasError': this.hasError, + 'properties': properties.map((e) => e.toMap()).toList(), + }; + } + + factory FetchRecentPropertiesSuccess.fromMap(Map map) { + return FetchRecentPropertiesSuccess( + total: map['total'] as int, + offset: map['offset'] as int, + isLoadingMore: map['isLoadingMore'] as bool, + hasError: map['hasError'] as bool, + properties: (map['properties'] as List) + .map((e) => PropertyModel.fromMap(e)) + .toList(), + ); + } +} + +class FetchRecentPropertiesFailur extends FetchRecentPropertiesState + implements PropertyErrorStateWireframe { + final dynamic error; + + FetchRecentPropertiesFailur(this.error); + + @override + set error(_error) {} +} + +class FetchRecentPropertiesCubit extends Cubit + with HydratedMixin + implements PropertyCubitWireframe { + FetchRecentPropertiesCubit() : super(FetchRecentProepertiesInitial()); + + final PropertyRepository _propertyRepository = PropertyRepository(); + @override + void fetch({bool? forceRefresh, bool? loadWithoutDelay}) async { + try { + if (forceRefresh != true) { + + if (state is FetchRecentPropertiesSuccess) { + // WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { + await Future.delayed(Duration( + seconds: loadWithoutDelay == true + ? 0 + : AppSettings.hiddenAPIProcessDelay)); + // }); + } else { + emit(FetchRecentPropertiesInProgress()); + } + } else { + emit(FetchRecentPropertiesInProgress()); + } + + // if(forceRefresh==true){ + // + // + // }else{ + // if(state is! FetchRecentPropertiesSuccess){ + // + // }else{ + // + // } + // } + if (forceRefresh == true) { + DataOutput result = + await _propertyRepository.fetchRecentProperties(offset: 0); + // developer.log("API RESULT IS $result"); + // cek + emit( + FetchRecentPropertiesSuccess( + total: result.total, + offset: 0, + isLoadingMore: false, + hasError: false, + properties: result.modelList), + ); + } else { + if (state is! FetchRecentPropertiesSuccess) { + DataOutput result = + await _propertyRepository.fetchRecentProperties(offset: 0); + // developer.log("API RESULT IS $result"); + emit( + FetchRecentPropertiesSuccess( + total: result.total, + offset: 0, + isLoadingMore: false, + hasError: false, + properties: result.modelList), + ); + } else { + await CheckInternet.check( + onInternet: () async { + DataOutput result = + await _propertyRepository.fetchRecentProperties(offset: 0); + // developer.log("API RESULT IS $result"); + emit( + FetchRecentPropertiesSuccess( + total: result.total, + offset: 0, + isLoadingMore: false, + hasError: false, + properties: result.modelList), + ); + }, + onNoInternet: () { + emit( + FetchRecentPropertiesSuccess( + total: (state as FetchRecentPropertiesSuccess).total, + offset: (state as FetchRecentPropertiesSuccess).offset, + isLoadingMore: + (state as FetchRecentPropertiesSuccess).isLoadingMore, + hasError: (state as FetchRecentPropertiesSuccess).hasError, + properties: + (state as FetchRecentPropertiesSuccess).properties), + ); + }, + ); + } + } + } catch (e) { + emit(FetchRecentPropertiesFailur(e.toString())); + } + } + + @override + void fetchMore() async { + if (state is FetchRecentPropertiesSuccess) { + FetchRecentPropertiesSuccess mystate = + (state as FetchRecentPropertiesSuccess); + if (mystate.isLoadingMore) { + return; + } + emit((state as FetchRecentPropertiesSuccess) + .copyWith(isLoadingMore: true)); + DataOutput result = + await _propertyRepository.fetchRecentProperties( + offset: (state as FetchRecentPropertiesSuccess).properties.length, + ); + // developer.log("API RESULT IS $result"); + FetchRecentPropertiesSuccess propertymodelState = + (state as FetchRecentPropertiesSuccess); + propertymodelState.properties.addAll(result.modelList); + emit(FetchRecentPropertiesSuccess( + isLoadingMore: false, + hasError: false, + properties: propertymodelState.properties, + offset: (state as FetchRecentPropertiesSuccess).properties.length, + total: result.total)); + } + } + + @override + bool hasMoreData() { + if (state is FetchRecentPropertiesSuccess) { + return (state as FetchRecentPropertiesSuccess).properties.length < + (state as FetchRecentPropertiesSuccess).total; + } + return false; + } + + @override + FetchRecentPropertiesState? fromJson(Map json) { + try { + if (json['cubit_state'] == "FetchRecentPropertiesSuccess") { + FetchRecentPropertiesSuccess fetchRecentPropertiesSuccess = + FetchRecentPropertiesSuccess.fromMap(json); + + return fetchRecentPropertiesSuccess; + } + } catch (e) {} + return null; + } + + @override + Map? toJson(FetchRecentPropertiesState state) { + try { + if (state is FetchRecentPropertiesSuccess) { + Map mapped = state.toMap(); + mapped['cubit_state'] = "FetchRecentPropertiesSuccess"; + return mapped; + } + } catch (e) {} + + return null; + } +} diff --git a/lib/data/cubits/property/fetch_top_rated_properties_cubit.dart b/lib/data/cubits/property/fetch_top_rated_properties_cubit.dart new file mode 100644 index 0000000..01969d6 --- /dev/null +++ b/lib/data/cubits/property/fetch_top_rated_properties_cubit.dart @@ -0,0 +1,73 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:ebroker/data/Repositories/property_repository.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +abstract class FetchTopRatedPropertiesState {} + +class FetchTopRatedPropertiesInitial extends FetchTopRatedPropertiesState {} + +class FetchTopRatedPropertiesInProgress extends FetchTopRatedPropertiesState {} + +class FetchTopRatedPropertiesSuccess extends FetchTopRatedPropertiesState { + final int total; + final int offset; + final bool isLoadingMore; + final bool hasError; + final List properties; + + FetchTopRatedPropertiesSuccess({ + required this.total, + required this.offset, + required this.isLoadingMore, + required this.hasError, + required this.properties, + }); + + FetchTopRatedPropertiesSuccess copyWith({ + int? total, + int? offset, + bool? isLoadingMore, + bool? hasMoreData, + List? properties, + }) => + FetchTopRatedPropertiesSuccess( + total: total ?? this.total, + offset: offset ?? this.offset, + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + hasError: hasMoreData ?? hasError, + properties: properties ?? this.properties, + ); +} + +class FetchTopRatedPropertiesFailure extends FetchTopRatedPropertiesState { + final String errorMessage; + + FetchTopRatedPropertiesFailure(this.errorMessage); +} + +class FetchTopRatedPropertiesCubit extends Cubit { + FetchTopRatedPropertiesCubit() : super(FetchTopRatedPropertiesInitial()); + + final PropertyRepository _propertyRepository = PropertyRepository(); + Future fetchTopRatedProperty() async { + try { + emit(FetchTopRatedPropertiesInProgress()); + DataOutput result = + await _propertyRepository.fetchTopRatedProperty(); + + emit( + FetchTopRatedPropertiesSuccess( + total: result.total, + hasError: false, + isLoadingMore: false, + offset: 0, + properties: result.modelList, + ), + ); + } catch (e) { + emit(FetchTopRatedPropertiesFailure(e.toString())); + } + } +} diff --git a/lib/data/cubits/property/home_property_cubit.dart b/lib/data/cubits/property/home_property_cubit.dart new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lib/data/cubits/property/home_property_cubit.dart @@ -0,0 +1 @@ + diff --git a/lib/data/cubits/property/myPropHydrated.dart b/lib/data/cubits/property/myPropHydrated.dart new file mode 100644 index 0000000..83db44f --- /dev/null +++ b/lib/data/cubits/property/myPropHydrated.dart @@ -0,0 +1,268 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'package:ebroker/data/Repositories/property_repository.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:flutter/foundation.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../../settings.dart'; + +abstract class FetchMyPropertiesState {} + +class FetchMyPropertiesInitial extends FetchMyPropertiesState {} + +class FetchMyPropertiesInProgress extends FetchMyPropertiesState {} + +class FetchMyPropertiesSuccess extends FetchMyPropertiesState { + final int total; + final int offset; + final bool isLoadingMore; + final bool hasError; + final List myProperty; + FetchMyPropertiesSuccess({ + required this.total, + required this.offset, + required this.isLoadingMore, + required this.hasError, + required this.myProperty, + }); + + FetchMyPropertiesSuccess copyWith({ + int? total, + int? offset, + bool? isLoadingMore, + bool? hasMoreData, + List? myProperty, + }) { + return FetchMyPropertiesSuccess( + total: total ?? this.total, + offset: offset ?? this.offset, + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + hasError: hasMoreData ?? hasError, + myProperty: myProperty ?? this.myProperty, + ); + } + + Map toMap() { + return { + 'isLoadingMore': isLoadingMore, + 'loadingMoreError': hasError, + 'properties': myProperty.map((x) => x.toMap()).toList(), + 'offset': offset, + 'total': total, + }; + } + + factory FetchMyPropertiesSuccess.fromMap(Map map) { + return FetchMyPropertiesSuccess( + isLoadingMore: map['isLoadingMore'] as bool, + hasError: map['loadingMoreError'] as bool, + myProperty: List.from( + (map['properties']).map( + (x) => PropertyModel.fromMap(x as Map), + ), + ), + offset: map['offset'] as int, + total: map['total'] as int, + ); + } +} + +class FetchMyPropertiesFailure extends FetchMyPropertiesState { + final dynamic errorMessage; + + FetchMyPropertiesFailure(this.errorMessage); +} + +class FetchMyPropertiesCubit extends Cubit + with HydratedMixin { + FetchMyPropertiesCubit() : super(FetchMyPropertiesInitial()); + + final PropertyRepository _propertyRepository = PropertyRepository(); + Future fetchMyProperties({ + bool? forceRefresh, + required String type, + }) async { + try { + if (forceRefresh != true) { + if (state is FetchMyPropertiesSuccess) { + await Future.delayed( + Duration(seconds: AppSettings.hiddenAPIProcessDelay)); + } else { + emit(FetchMyPropertiesInProgress()); + } + } else { + emit(FetchMyPropertiesInProgress()); + } + if (forceRefresh == true) { + DataOutput result = + await _propertyRepository.fetchMyProperties( + offset: 0, + type: type, + ); + emit(FetchMyPropertiesSuccess( + hasError: false, + isLoadingMore: false, + myProperty: result.modelList, + total: result.total, + offset: 0)); + } else { + if (state is! FetchMyPropertiesSuccess) { + DataOutput result = + await _propertyRepository.fetchMyProperties( + offset: 0, + type: type, + ); + emit(FetchMyPropertiesSuccess( + hasError: false, + isLoadingMore: false, + myProperty: result.modelList, + total: result.total, + offset: 0)); + } else { + emit(FetchMyPropertiesSuccess( + total: (state as FetchMyPropertiesSuccess).total, + offset: (state as FetchMyPropertiesSuccess).offset, + isLoadingMore: (state as FetchMyPropertiesSuccess).isLoadingMore, + hasError: (state as FetchMyPropertiesSuccess).hasError, + myProperty: (state as FetchMyPropertiesSuccess).myProperty)); + } + } + } catch (e) { + emit(FetchMyPropertiesFailure(e)); + } + } + + void updateStatus(int propertyId, String currentType) { + try { + if (state is FetchMyPropertiesSuccess) { + List propertyList = + (state as FetchMyPropertiesSuccess).myProperty; + int index = propertyList.indexWhere((element) { + return element.id == propertyId; + }); + + if (currentType == "Sell") { + propertyList[index].properyType = "Sold"; + } + if (currentType == "Rent") { + propertyList[index].properyType = "Rented"; + } + + if (currentType == "Rented") { + propertyList[index].properyType = "Rent"; + } + if (kDebugMode) { + if (currentType == "Sold") { + propertyList[index].properyType = "Sell"; + } + } + + emit((state as FetchMyPropertiesSuccess) + .copyWith(myProperty: propertyList)); + } + } catch (e) {} + } + + void update(PropertyModel model) { + if (state is FetchMyPropertiesSuccess) { + List properties = + (state as FetchMyPropertiesSuccess).myProperty; + + var index = properties.indexWhere((element) => element.id == model.id); + + if (index != -1) { + properties[index] = model; + } + + emit( + (state as FetchMyPropertiesSuccess).copyWith(myProperty: properties)); + } + } + + Future fetchMoreProperties({required String type}) async { + try { + if (state is FetchMyPropertiesSuccess) { + if ((state as FetchMyPropertiesSuccess).isLoadingMore) { + return; + } + emit((state as FetchMyPropertiesSuccess).copyWith(isLoadingMore: true)); + + DataOutput result = + await _propertyRepository.fetchMyProperties( + offset: (state as FetchMyPropertiesSuccess).myProperty.length, + type: type); + + FetchMyPropertiesSuccess bookingsState = + (state as FetchMyPropertiesSuccess); + bookingsState.myProperty.addAll(result.modelList); + emit( + FetchMyPropertiesSuccess( + isLoadingMore: false, + hasError: false, + myProperty: bookingsState.myProperty, + offset: (state as FetchMyPropertiesSuccess).myProperty.length, + total: result.total, + ), + ); + } + } catch (e) { + emit( + (state as FetchMyPropertiesSuccess).copyWith( + isLoadingMore: false, + hasMoreData: true, + ), + ); + } + } + + void addLocal(PropertyModel model) { + try { + if (state is FetchMyPropertiesSuccess) { + List myProperty = + (state as FetchMyPropertiesSuccess).myProperty; + if (myProperty.isNotEmpty) { + myProperty.insert(0, model); + } else { + myProperty.add(model); + } + + emit((state as FetchMyPropertiesSuccess) + .copyWith(myProperty: myProperty)); + } + } catch (e, st) { + throw st; + } + } + + bool hasMoreData() { + if (state is FetchMyPropertiesSuccess) { + return (state as FetchMyPropertiesSuccess).myProperty.length < + (state as FetchMyPropertiesSuccess).total; + } + return false; + } + + @override + FetchMyPropertiesState? fromJson(Map json) { + try { + var state = json['cubit_state']; + + if (state == "FetchMyPropertiesSuccess") { + return FetchMyPropertiesSuccess.fromMap(json); + } + } catch (e) {} + return null; + } + + @override + Map? toJson(FetchMyPropertiesState state) { + if (state is FetchMyPropertiesSuccess) { + Map map = state.toMap(); + map['cubit_state'] = "FetchMyPropertiesSuccess"; + return map; + } + return null; + } +} diff --git a/lib/data/cubits/property/property_cubit.dart b/lib/data/cubits/property/property_cubit.dart new file mode 100644 index 0000000..16f0a8b --- /dev/null +++ b/lib/data/cubits/property/property_cubit.dart @@ -0,0 +1,67 @@ +// ignore_for_file: invalid_return_type_for_catch_error + +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +// import 'package:google_maps_webservice/directions.dart'; + +import '../../../utils/api.dart'; +import '../../model/property_model.dart'; + +abstract class PropertyState {} + +class PropertyInitial extends PropertyState {} + +class PropertyFetchProgress extends PropertyState {} + +class PropertyFetchSuccess extends PropertyState { + List propertylist = []; + int total = 0; + PropertyFetchSuccess(this.propertylist, this.total); +} + +class PropertyFetchFailure extends PropertyState { + final String errmsg; + PropertyFetchFailure(this.errmsg); +} + +class PropertyCubit extends Cubit { + PropertyCubit() : super(PropertyInitial()); + + void fetchProperty(BuildContext context, Map mbodyparam, + {bool fromUserlist = false}) { + emit(PropertyFetchProgress()); + fetchPropertyFromDb(context, mbodyparam, fromUserlist: fromUserlist) + .then((value) { + emit(PropertyFetchSuccess(value['list'], value['total'])); + }).catchError((e, st) => emit(PropertyFetchFailure(st.toString()))); + } + + Future fetchPropertyFromDb( + BuildContext context, + Map bodyparam, { + bool fromUserlist = false, + }) async { + //String? propertyId, + Map result = {}; + List propertylist = []; + int mtotal = 0; + var response = await Api.post(url: Api.apiGetProprty, parameter: {}); + // log("server data $map"); + // var response = await HelperUtils.sendApiRequest( + // Api.apiGetProprty, + // bodyparam, + // true, + // context, + // passUserid: fromUserlist, + // ); + // var getdata = json.decode(response); + List list = response['data']; + mtotal = response["total"]; + result['total'] = mtotal; + propertylist = list.map((model) => PropertyModel.fromMap(model)).toList(); + + result['list'] = propertylist; + return result; + } +} diff --git a/lib/data/cubits/property/search_property_cubit.dart b/lib/data/cubits/property/search_property_cubit.dart new file mode 100644 index 0000000..b3ff9b3 --- /dev/null +++ b/lib/data/cubits/property/search_property_cubit.dart @@ -0,0 +1,130 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'package:ebroker/data/Repositories/property_repository.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +abstract class SearchPropertyState {} + +class SearchPropertyInitial extends SearchPropertyState {} + +class SearchPropertyFetchProgress extends SearchPropertyState {} + +class SearchPropertyProgress extends SearchPropertyState {} + +class SearchPropertySuccess extends SearchPropertyState { + final int total; + final int offset; + final String searchQuery; + final bool isLoadingMore; + final bool hasError; + final List searchedroperties; + + SearchPropertySuccess({ + required this.searchQuery, + required this.total, + required this.offset, + required this.isLoadingMore, + required this.hasError, + required this.searchedroperties, + }); + + SearchPropertySuccess copyWith({ + int? total, + int? offset, + String? searchQuery, + bool? isLoadingMore, + bool? hasError, + List? searchedroperties, + }) { + return SearchPropertySuccess( + total: total ?? this.total, + offset: offset ?? this.offset, + searchQuery: searchQuery ?? this.searchQuery, + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + hasError: hasError ?? this.hasError, + searchedroperties: searchedroperties ?? this.searchedroperties, + ); + } +} + +class SearchPropertyFailure extends SearchPropertyState { + final dynamic errorMessage; + SearchPropertyFailure(this.errorMessage); +} + +class SearchPropertyCubit extends Cubit { + SearchPropertyCubit() : super(SearchPropertyInitial()); + + final PropertyRepository _propertyRepository = PropertyRepository(); + Future searchProperty(String query, + {required int offset, bool? useOffset}) async { + try { + emit(SearchPropertyFetchProgress()); + DataOutput result = + await _propertyRepository.searchProperty(query, offset: 0); + + emit(SearchPropertySuccess( + searchQuery: query, + total: result.total, + hasError: false, + isLoadingMore: false, + offset: 0, + searchedroperties: result.modelList)); + } catch (e) { + emit(SearchPropertyFailure(e)); + } + } + + void clearSearch() { + if (state is SearchPropertySuccess) { + emit(SearchPropertyInitial()); + } + } + + Future fetchMoreSearchData() async { + try { + if (state is SearchPropertySuccess) { + if ((state as SearchPropertySuccess).isLoadingMore) { + return; + } + emit((state as SearchPropertySuccess).copyWith(isLoadingMore: true)); + + DataOutput result = + await _propertyRepository.searchProperty( + (state as SearchPropertySuccess).searchQuery, + offset: (state as SearchPropertySuccess).searchedroperties.length, + ); + + SearchPropertySuccess bookingsState = (state as SearchPropertySuccess); + bookingsState.searchedroperties.addAll(result.modelList); + emit( + SearchPropertySuccess( + searchQuery: (state as SearchPropertySuccess).searchQuery, + isLoadingMore: false, + hasError: false, + searchedroperties: bookingsState.searchedroperties, + offset: (state as SearchPropertySuccess).searchedroperties.length, + total: result.total, + ), + ); + } + } catch (e) { + emit( + (state as SearchPropertySuccess).copyWith( + isLoadingMore: false, + hasError: true, + ), + ); + } + } + + bool hasMoreData() { + if (state is SearchPropertySuccess) { + return (state as SearchPropertySuccess).searchedroperties.length < + (state as SearchPropertySuccess).total; + } + return false; + } +} diff --git a/lib/data/cubits/property/set_property_view_cubit.dart b/lib/data/cubits/property/set_property_view_cubit.dart new file mode 100644 index 0000000..c6416b6 --- /dev/null +++ b/lib/data/cubits/property/set_property_view_cubit.dart @@ -0,0 +1,33 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../Repositories/property_repository.dart'; + +abstract class SetPropertyViewState {} + +class SetPropertyViewInitial extends SetPropertyViewState {} + +class SetPropertyViewInProgress extends SetPropertyViewState {} + +class SetPropertyViewSuccess extends SetPropertyViewState {} + +class SetPropertyViewFailure extends SetPropertyViewState { + final String errorMessage; + + SetPropertyViewFailure(this.errorMessage); +} + +class SetPropertyViewCubit extends Cubit { + final PropertyRepository _propertyRepository = PropertyRepository(); + + SetPropertyViewCubit() : super(SetPropertyViewInitial()); + + Future set(String propertyId) async { + try { + emit(SetPropertyViewInProgress()); + await _propertyRepository.setProeprtyView(propertyId); + emit(SetPropertyViewSuccess()); + } catch (e) { + emit(SetPropertyViewFailure(e.toString())); + } + } +} diff --git a/lib/data/cubits/property/top_viewed_property_cubit.dart b/lib/data/cubits/property/top_viewed_property_cubit.dart new file mode 100644 index 0000000..6f01def --- /dev/null +++ b/lib/data/cubits/property/top_viewed_property_cubit.dart @@ -0,0 +1,67 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../utils/api.dart'; +import '../../helper/custom_exception.dart'; +import '../../../utils/helper_utils.dart'; +import '../../model/property_model.dart'; + +abstract class TopPropertyState {} + +class TopPropertyInitial extends TopPropertyState {} + +class TopPropertyFetchProgress extends TopPropertyState {} + +class TopPropertyFetchSuccess extends TopPropertyState { + List propertylist = []; + TopPropertyFetchSuccess(this.propertylist); +} + +class TopPropertyFetchFailure extends TopPropertyState { + final String errmsg; + TopPropertyFetchFailure(this.errmsg); +} + +class TopViewedPropertyCubit extends Cubit { + TopViewedPropertyCubit() : super(TopPropertyInitial()); + + void fetchTopProperty(BuildContext context, + {String? categoryId, bool fromUserlist = false}) { + emit(TopPropertyFetchProgress()); + fetchTopPropertyFromDb(context) + .then((value) => emit(TopPropertyFetchSuccess(value))) + .catchError((e) => emit(TopPropertyFetchFailure(e.toString()))); + } + + Future> fetchTopPropertyFromDb( + BuildContext context, + ) async { + //String? propertyId, + List propertylist = []; + Map body = { + Api.topRated: "1", + Api.offset: "0", + Api.limit: "10", + }; + + var response = await HelperUtils.sendApiRequest( + Api.apiGetProprty, body, true, context, + passUserid: false); + var getdata = json.decode(response); + if (getdata != null) { + if (!getdata[Api.error]) { + getdata['data']; + // propertylist = + // list.map((model) => PropertyModel.fromJson(model)).toList(); + } else { + throw CustomException(getdata[Api.message]); + } + } else { + throw CustomException("nodatafound"); + } + + return propertylist; + } +} diff --git a/lib/data/cubits/property/update_property_status.dart b/lib/data/cubits/property/update_property_status.dart new file mode 100644 index 0000000..1ea06d0 --- /dev/null +++ b/lib/data/cubits/property/update_property_status.dart @@ -0,0 +1,36 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'package:ebroker/data/Repositories/property_repository.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +abstract class UpdatePropertyStatusState {} + +class UpdatePropertyStatusInitial extends UpdatePropertyStatusState {} + +class UpdatePropertyStatusInProgress extends UpdatePropertyStatusState {} + +class UpdatePropertyStatusSuccess extends UpdatePropertyStatusState {} + +class UpdatePropertyStatusFail extends UpdatePropertyStatusState { + final dynamic error; + UpdatePropertyStatusFail({ + required this.error, + }); +} + +class UpdatePropertyStatusCubit extends Cubit { + UpdatePropertyStatusCubit() : super(UpdatePropertyStatusInitial()); + + final PropertyRepository _propertyRepository = PropertyRepository(); + + void update({required dynamic propertyId, required dynamic status}) async { + try { + emit(UpdatePropertyStatusInProgress()); + await _propertyRepository.updatePropertyStatus( + propertyId: propertyId, status: status); + emit(UpdatePropertyStatusSuccess()); + } catch (e) { + emit(UpdatePropertyStatusFail(error: e.toString())); + } + } +} diff --git a/lib/data/cubits/slider_cubit.dart b/lib/data/cubits/slider_cubit.dart new file mode 100644 index 0000000..7774c8c --- /dev/null +++ b/lib/data/cubits/slider_cubit.dart @@ -0,0 +1,181 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:convert'; + +import 'package:ebroker/utils/api.dart'; +import 'package:flutter/material.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../settings.dart'; +import '../../utils/Network/networkAvailability.dart'; +import '../helper/custom_exception.dart'; +import '../model/home_slider.dart'; + +abstract class SliderState {} + +class SliderInitial extends SliderState {} + +class SliderFetchInProgress extends SliderState {} + +class SliderFetchInInternalProgress extends SliderState {} + +class SliderFetchSuccess extends SliderState { + List sliderlist = []; + + SliderFetchSuccess(this.sliderlist); + + Map toMap() { + return { + 'sliderlist': sliderlist.map((x) => x.toMap()).toList(), + }; + } + + factory SliderFetchSuccess.fromMap(Map map) { + return SliderFetchSuccess( + List.from( + (map['sliderlist']).map( + (x) => HomeSlider.fromMap(x as Map), + ), + ), + ); + } + + String toJson() => json.encode(toMap()); + + factory SliderFetchSuccess.fromJson(String source) => + SliderFetchSuccess.fromMap(json.decode(source) as Map); +} + +class SliderFetchFailure extends SliderState { + final String errorMessage; + final bool isUserDeactivated; + SliderFetchFailure( + this.errorMessage, this.isUserDeactivated); //, this.isUserDeactivated +} + +class SliderCubit extends Cubit with HydratedMixin { + SliderCubit() : super(SliderInitial()); + + void fetchSlider(BuildContext context, + {bool? forceRefresh, bool? loadWithoutDelay}) async { + if (forceRefresh != true) { + if (state is SliderFetchSuccess) { + await Future.delayed(Duration( + seconds: loadWithoutDelay == true + ? 0 + : AppSettings.hiddenAPIProcessDelay)); + } else { + emit(SliderFetchInProgress()); + } + } else { + emit(SliderFetchInProgress()); + } + + if (forceRefresh == true) { + fetchSliderFromDb(context, sendCityName: true) + .then((value) => emit(SliderFetchSuccess(value))) + .catchError((e) { + if (isClosed) return; + bool isUserActive = true; + if (e.toString() == + "your account has been deactivate! please contact admin") { + //message from API + isUserActive = false; + } else { + isUserActive = true; + } + emit(SliderFetchFailure(e.toString(), isUserActive)); //, isUserActive + }); + } else { + if (state is! SliderFetchSuccess) { + fetchSliderFromDb(context, sendCityName: true) + .then((value) => emit(SliderFetchSuccess(value))) + .catchError((e) { + if (isClosed) return; + bool isUserActive = true; + if (e.toString() == + "your account has been deactivate! please contact admin") { + //message from API + isUserActive = false; + } else { + isUserActive = true; + } + emit(SliderFetchFailure(e.toString(), isUserActive)); //, isUserActive + }); + } else { + await CheckInternet.check( + onInternet: () async { + fetchSliderFromDb(context, sendCityName: true) + .then((value) => emit(SliderFetchSuccess(value))) + .catchError((e) { + if (isClosed) return; + bool isUserActive = true; + if (e.toString() == + "your account has been deactivate! please contact admin") { + //message from API + isUserActive = false; + } else { + isUserActive = true; + } + emit(SliderFetchFailure( + e.toString(), isUserActive)); //, isUserActive + }); + }, + onNoInternet: () { + emit(SliderFetchSuccess((state as SliderFetchSuccess).sliderlist)); + }, + ); + } + } + + Future.delayed( + Duration.zero, + () {}, + ); + } + + Future> fetchSliderFromDb(BuildContext context, + {required bool sendCityName}) async { + List sliderlist = []; + Map body = {}; + + if (sendCityName) { + // if (HiveUtils.getCityName() != null) { + // body['city'] = HiveUtils.getCityName(); + // } + } + + var response = await Api.get(url: Api.apiGetSlider, queryParameters: body); + + if (!response[Api.error]) { + List list = response['data']; + sliderlist = list.map((model) => HomeSlider.fromJson(model)).toList(); + } else { + throw CustomException(response[Api.message]); + } + + return sliderlist; + } + + @override + SliderState? fromJson(Map json) { + try { + var state = json['cubit_state']; + + if (state == "SliderFetchSuccess") { + return SliderFetchSuccess.fromMap(json); + } + } catch (e) {} + + return null; + } + + @override + Map? toJson(SliderState state) { + if (state is SliderFetchSuccess) { + Map map = state.toMap(); + map['cubit_state'] = "SliderFetchSuccess"; + return map; + } + return null; + } +} diff --git a/lib/data/cubits/subscription/assign_free_package.dart b/lib/data/cubits/subscription/assign_free_package.dart new file mode 100644 index 0000000..40586c5 --- /dev/null +++ b/lib/data/cubits/subscription/assign_free_package.dart @@ -0,0 +1,32 @@ +import 'package:ebroker/data/Repositories/subscription_repository.dart'; +import 'package:ebroker/exports/main_export.dart'; + +abstract class AssignFreePackageState {} + +class AssignFreePackageInitial extends AssignFreePackageState {} + +class AssignFreePackageInProgress extends AssignFreePackageState {} + +class AssignFreePackageSuccess extends AssignFreePackageState {} + +class AssignFreePackageFail extends AssignFreePackageState { + final dynamic error; + AssignFreePackageFail(this.error); +} + +class AssignFreePackageCubit extends Cubit { + AssignFreePackageCubit() : super(AssignFreePackageInitial()); + + final SubscriptionRepository _subscriptionRepository = + SubscriptionRepository(); + + void assign(int packageId) async { + try { + emit(AssignFreePackageInProgress()); + await _subscriptionRepository.assignFreePackage(packageId); + emit(AssignFreePackageSuccess()); + } catch (e) { + emit(AssignFreePackageFail(e.toString())); + } + } +} diff --git a/lib/data/cubits/subscription/assign_package.dart b/lib/data/cubits/subscription/assign_package.dart new file mode 100644 index 0000000..9bea9e6 --- /dev/null +++ b/lib/data/cubits/subscription/assign_package.dart @@ -0,0 +1,36 @@ +import 'package:ebroker/data/Repositories/subscription_repository.dart'; +import 'package:ebroker/exports/main_export.dart'; + +abstract class AssignInAppPackageState {} + +class AssignInAppPackageInitial extends AssignInAppPackageState {} + +class AssignInAppPackageInProgress extends AssignInAppPackageState {} + +class AssignInAppPackageSuccess extends AssignInAppPackageState {} + +class AssignInAppPackageFail extends AssignInAppPackageState { + final dynamic error; + AssignInAppPackageFail(this.error); +} + +class AssignInAppPackageCubit extends Cubit { + AssignInAppPackageCubit() : super(AssignInAppPackageInitial()); + final SubscriptionRepository _subscriptionRepository = + SubscriptionRepository(); + + /// + ///This will assign in app product + void assign({required String packageId, required String productId}) async { + try { + emit(AssignInAppPackageInProgress()); + await _subscriptionRepository.assignPackage( + packageId: packageId, + productId: productId, + ); + emit(AssignInAppPackageSuccess()); + } catch (e) { + emit(AssignInAppPackageFail(e)); + } + } +} diff --git a/lib/data/cubits/subscription/fetch_subscription_packages_cubit.dart b/lib/data/cubits/subscription/fetch_subscription_packages_cubit.dart new file mode 100644 index 0000000..cb9da04 --- /dev/null +++ b/lib/data/cubits/subscription/fetch_subscription_packages_cubit.dart @@ -0,0 +1,114 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:ebroker/data/Repositories/subscription_repository.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/subscription_pacakage_model.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +abstract class FetchSubscriptionPackagesState {} + +class FetchSubscriptionPackagesInitial extends FetchSubscriptionPackagesState {} + +class FetchSubscriptionPackagesInProgress + extends FetchSubscriptionPackagesState {} + +class FetchSubscriptionPackagesSuccess extends FetchSubscriptionPackagesState { + final List subscriptionPacakges; + final bool isLoadingMore; + final bool hasError; + final int offset; + final int total; + + FetchSubscriptionPackagesSuccess({ + required this.subscriptionPacakges, + required this.isLoadingMore, + required this.hasError, + required this.offset, + required this.total, + }); + + FetchSubscriptionPackagesSuccess copyWith({ + List? subscriptionPacakges, + bool? isLoadingMore, + bool? hasError, + int? offset, + int? total, + }) { + return FetchSubscriptionPackagesSuccess( + subscriptionPacakges: subscriptionPacakges ?? this.subscriptionPacakges, + isLoadingMore: isLoadingMore ?? this.isLoadingMore, + hasError: hasError ?? this.hasError, + offset: offset ?? this.offset, + total: total ?? this.total, + ); + } +} + +class FetchSubscriptionPackagesFailure extends FetchSubscriptionPackagesState { + final dynamic errorMessage; + + FetchSubscriptionPackagesFailure(this.errorMessage); +} + +class FetchSubscriptionPackagesCubit + extends Cubit { + FetchSubscriptionPackagesCubit() : super(FetchSubscriptionPackagesInitial()); + final SubscriptionRepository _subscriptionRepository = + SubscriptionRepository(); + Future fetchPackages() async { + try { + emit(FetchSubscriptionPackagesInProgress()); + DataOutput result = + await _subscriptionRepository.getSubscriptionPackages(offset: 0); + emit(FetchSubscriptionPackagesSuccess( + subscriptionPacakges: result.modelList, + offset: 0, + isLoadingMore: false, + total: result.total, + hasError: false)); + } catch (e) { + emit(FetchSubscriptionPackagesFailure(e)); + } + } + + bool hasMore() { + if (state is FetchSubscriptionPackagesSuccess) { + return (state as FetchSubscriptionPackagesSuccess) + .subscriptionPacakges + .length < + (state as FetchSubscriptionPackagesSuccess).total; + } + return false; + } + + fetchMorePackages() async { + if (state is FetchSubscriptionPackagesInProgress) { + return; + } + try { + if (state is FetchSubscriptionPackagesSuccess) { + emit((state as FetchSubscriptionPackagesSuccess) + .copyWith(isLoadingMore: true)); + DataOutput result = + await _subscriptionRepository.getSubscriptionPackages( + offset: (state as FetchSubscriptionPackagesSuccess) + .subscriptionPacakges + .length, + ); + + List subscriptionPacakges = + (state as FetchSubscriptionPackagesSuccess).subscriptionPacakges; + subscriptionPacakges.addAll(result.modelList); + + emit(FetchSubscriptionPackagesSuccess( + subscriptionPacakges: subscriptionPacakges, + isLoadingMore: false, + hasError: false, + offset: subscriptionPacakges.length, + total: result.total)); + } + } catch (e) { + emit((state as FetchSubscriptionPackagesSuccess) + .copyWith(isLoadingMore: false, hasError: true)); + } + } +} diff --git a/lib/data/cubits/subscription/get_subsctiption_package_limits_cubit.dart b/lib/data/cubits/subscription/get_subsctiption_package_limits_cubit.dart new file mode 100644 index 0000000..201be6c --- /dev/null +++ b/lib/data/cubits/subscription/get_subsctiption_package_limits_cubit.dart @@ -0,0 +1,46 @@ +import 'package:ebroker/data/Repositories/subscription_repository.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../model/subscription_package_limit.dart'; + +abstract class GetSubsctiptionPackageLimitsState {} + +class GetSubsctiptionPackageLimitsInitial + extends GetSubsctiptionPackageLimitsState {} + +class GetSubsctiptionPackageLimitsInProgress + extends GetSubsctiptionPackageLimitsState {} + +class GetSubsctiptionPackageLimitsSuccess + extends GetSubsctiptionPackageLimitsState { + final SubcriptionPackageLimit packageLimit; + + GetSubsctiptionPackageLimitsSuccess(this.packageLimit); +} + +class GetSubsctiptionPackageLimitsFailure + extends GetSubsctiptionPackageLimitsState { + final String errorMessage; + GetSubsctiptionPackageLimitsFailure(this.errorMessage); +} + +class GetSubsctiptionPackageLimitsCubit + extends Cubit { + final SubscriptionRepository _subscriptionRepository = + SubscriptionRepository(); + + GetSubsctiptionPackageLimitsCubit() + : super(GetSubsctiptionPackageLimitsInitial()); + + Future getLimits(SubscriptionLimitType type) async { + try { + emit(GetSubsctiptionPackageLimitsInProgress()); + SubcriptionPackageLimit subscriptionPackageLimit = + await _subscriptionRepository.getPackageLimit(type); + emit(GetSubsctiptionPackageLimitsSuccess(subscriptionPackageLimit)); + } catch (error) { + print("errro di tampilkan $error"); + emit(GetSubsctiptionPackageLimitsFailure(error.toString())); + } + } +} diff --git a/lib/data/cubits/system/app_theme_cubit.dart b/lib/data/cubits/system/app_theme_cubit.dart new file mode 100644 index 0000000..e6d0e4d --- /dev/null +++ b/lib/data/cubits/system/app_theme_cubit.dart @@ -0,0 +1,38 @@ +// ignore_for_file: depend_on_referenced_packages + +import 'package:bloc/bloc.dart'; + +import '../../../app/app_theme.dart'; +import '../../../utils/hive_utils.dart'; + +class AppThemeCubit extends Cubit { + AppThemeCubit() : super(ThemeState(AppTheme.light)); +// HiveUtils.getCurrentTheme() + void changeTheme(AppTheme appTheme) { + HiveUtils.setCurrentTheme(appTheme); + emit(ThemeState(appTheme)); + } + + //dev! + void toggleTheme() { + if (state.appTheme == AppTheme.dark) { + HiveUtils.setCurrentTheme(AppTheme.light); + + emit(ThemeState(AppTheme.light)); + } else { + HiveUtils.setCurrentTheme(AppTheme.dark); + + emit(ThemeState(AppTheme.dark)); + } + } + + bool isDarkMode() { + return state.appTheme == AppTheme.dark; + } +} + +class ThemeState { + final AppTheme appTheme; + + ThemeState(this.appTheme); +} diff --git a/lib/data/cubits/system/delete_account_cubit.dart b/lib/data/cubits/system/delete_account_cubit.dart new file mode 100644 index 0000000..d8df986 --- /dev/null +++ b/lib/data/cubits/system/delete_account_cubit.dart @@ -0,0 +1,67 @@ +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../utils/api.dart'; +import '../../../utils/hive_utils.dart'; +import '../../helper/custom_exception.dart'; + +abstract class DeleteAccountState {} + +class DeleteAccountInitial extends DeleteAccountState {} + +class DeleteAccountProgress extends DeleteAccountState {} + +class DeleteAccountFailure extends DeleteAccountState { + final String errorMessage; + DeleteAccountFailure(this.errorMessage); +} + +class AccountDeleted extends DeleteAccountState { + final String successMessage; + AccountDeleted({required this.successMessage}); +} + +class DeleteAccountCubit extends Cubit { + DeleteAccountCubit() : super(DeleteAccountInitial()); + void deleteUserAccount(BuildContext context) { + emit(DeleteAccountProgress()); + deleteAccount(context) + .then((value) => emit(AccountDeleted(successMessage: value))) + .catchError((e) => emit(DeleteAccountFailure(e.toString()))); + } + + Future deleteAccount(BuildContext context) async { + String message = ''; + try { + /* User? currentUser = await FirebaseAuth.instance.currentUser; + if (currentUser != null) { + await currentUser.reload(); + }*/ + await FirebaseAuth.instance.currentUser!.delete().then((value) async { + Map parameter = {Api.userid: HiveUtils.getUserId()!}; + + var response = + await Api.post(url: Api.apiDeleteUser, parameter: parameter); + User? user = FirebaseAuth.instance.currentUser; + await user?.delete(); + if (response["error"]) { + throw CustomException(response["message"]); + } else { + Future.delayed( + Duration.zero, + () { + HiveUtils.logoutUser(context, onLogout: () {}, isRedirect: false); + }, + ); + message = response['message']; + } + }); + } on FirebaseAuthException catch (e) { + if (e.code == 'requires-recent-login') { + // throw CustomException(Strings.userDeleteErrorMessage); + } + } + return message; + } +} diff --git a/lib/data/cubits/system/fetch_language_cubit.dart b/lib/data/cubits/system/fetch_language_cubit.dart new file mode 100644 index 0000000..4c7fa01 --- /dev/null +++ b/lib/data/cubits/system/fetch_language_cubit.dart @@ -0,0 +1,68 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'dart:developer'; + +import 'package:ebroker/utils/api.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +abstract class FetchLanguageState {} + +class FetchLanguageInitial extends FetchLanguageState {} + +class FetchLanguageInProgress extends FetchLanguageState {} + +class FetchLanguageSuccess extends FetchLanguageState { + final String code; + final String name; + final Map data; + FetchLanguageSuccess({ + required this.code, + required this.name, + required this.data, + }); + + Map toMap() { + return { + 'code': code, + 'name': name, + 'file_name': data, + }; + } + + factory FetchLanguageSuccess.fromMap(Map map) { + return FetchLanguageSuccess( + code: map['code'] as String, + name: map['name'] as String, + data: map['file_name'] as Map, + ); + } +} + +class FetchLanguageFailure extends FetchLanguageState { + final String errorMessage; + + FetchLanguageFailure(this.errorMessage); +} + +class FetchLanguageCubit extends Cubit { + FetchLanguageCubit() : super(FetchLanguageInitial()); + + Future getLanguage(String languageCode) async { + try { + emit(FetchLanguageInProgress()); + + Map response = await Api.get( + url: Api.getLanguagae, + queryParameters: {Api.languageCode: languageCode}, + useAuthToken: false); + log("LANG_RESP ${(response['data']['file_name'] as Map).keys.toList()}"); + + emit(FetchLanguageSuccess( + code: response['data']['code'], + data: response['data']['file_name'], + name: response['data']['name'])); + } catch (e) { + emit(FetchLanguageFailure(e.toString())); + } + } +} diff --git a/lib/data/cubits/system/fetch_system_settings_cubit.dart b/lib/data/cubits/system/fetch_system_settings_cubit.dart new file mode 100644 index 0000000..321f7e6 --- /dev/null +++ b/lib/data/cubits/system/fetch_system_settings_cubit.dart @@ -0,0 +1,200 @@ +import 'package:ebroker/exports/main_export.dart'; +import 'package:ebroker/utils/Encryption/rsa.dart'; +import 'package:hydrated_bloc/hydrated_bloc.dart'; + +import '../../Repositories/system_repository.dart'; +import '../../model/system_settings_model.dart'; + +abstract class FetchSystemSettingsState {} + +class FetchSystemSettingsInitial extends FetchSystemSettingsState {} + +class FetchSystemSettingsInProgress extends FetchSystemSettingsState {} + +class FetchSystemSettingsSuccess extends FetchSystemSettingsState { + final Map settings; + FetchSystemSettingsSuccess({ + required this.settings, + }); + + Map toMap() { + return { + 'settings': settings, + }; + } + + factory FetchSystemSettingsSuccess.fromMap(Map map) { + return FetchSystemSettingsSuccess( + settings: map['settings'] as Map, + ); + } +} + +class FetchSystemSettingsFailure extends FetchSystemSettingsState { + final String errorMessage; + + FetchSystemSettingsFailure(this.errorMessage); +} + +class FetchSystemSettingsCubit extends Cubit + with HydratedMixin { + FetchSystemSettingsCubit() : super(FetchSystemSettingsInitial()); + final SystemRepository _systemRepository = SystemRepository(); + Future fetchSettings( + {required bool isAnonymouse, bool? forceRefresh}) async { + try { + if (forceRefresh != true) { + if (state is FetchSystemSettingsSuccess) { + await Future.delayed( + const Duration(seconds: AppSettings.hiddenAPIProcessDelay)); + } else { + emit(FetchSystemSettingsInProgress()); + } + } else { + emit(FetchSystemSettingsInProgress()); + } + + if (forceRefresh == true) { + Map settings = await _systemRepository.fetchSystemSettings( + isAnonymouse: isAnonymouse); + + Constant.currencySymbol = + _getSetting(settings, SystemSetting.currencySymball); + Constant.googlePlaceAPIkey = RSAEncryption().decrypt( + privateKey: Constant.keysDecryptionPasswordRSA, + encryptedData: settings['data']['place_api_key']); + Constant.isAdmobAdsEnabled = + (settings['data']['show_admob_ads'] == "1"); + Constant.adaptThemeColorSvg = (settings['data']['svg_clr'] == "1"); + Constant.admobBannerAndroid = + settings['data']?['android_banner_ad_id'] ?? ""; + Constant.admobBannerIos = settings['data']?['ios_banner_ad_id'] ?? ""; + + Constant.admobInterstitialAndroid = + settings['data']?['android_interstitial_ad_id'] ?? ""; + Constant.admobInterstitialIos = + settings['data']?['ios_interstitial_ad_id'] ?? ""; + emit(FetchSystemSettingsSuccess(settings: settings)); + } else { + if (state is! FetchSystemSettingsSuccess) { + Map settings = await _systemRepository.fetchSystemSettings( + isAnonymouse: isAnonymouse); + Constant.currencySymbol = + _getSetting(settings, SystemSetting.currencySymball); + Constant.googlePlaceAPIkey = RSAEncryption().decrypt( + privateKey: Constant.keysDecryptionPasswordRSA, + encryptedData: settings['data']['place_api_key']); + Constant.isAdmobAdsEnabled = + (settings['data']['show_admob_ads'] == "1"); + Constant.adaptThemeColorSvg = (settings['data']['svg_clr'] == "1"); + Constant.admobBannerAndroid = + settings['data']['android_banner_ad_id'] ?? ""; + Constant.admobBannerIos = settings['data']['ios_banner_ad_id'] ?? ""; + + Constant.admobInterstitialAndroid = + settings['data']['android_interstitial_ad_id'] ?? ""; + Constant.admobInterstitialIos = + settings['data']['ios_interstitial_ad_id'] ?? ""; + + emit(FetchSystemSettingsSuccess(settings: settings)); + } else { + Constant.googlePlaceAPIkey = RSAEncryption().decrypt( + privateKey: Constant.keysDecryptionPasswordRSA, + encryptedData: (state as FetchSystemSettingsSuccess) + .settings['data']['place_api_key']); + Constant.currencySymbol = (state as FetchSystemSettingsSuccess) + .settings['data']['currency_symbol'] ?? + ""; + Constant.isAdmobAdsEnabled = ((state as FetchSystemSettingsSuccess) + .settings['data']['show_admob_ads'] == + "1"); + Constant.admobBannerAndroid = (state as FetchSystemSettingsSuccess) + .settings['data']['android_banner_ad_id'] ?? + ""; + Constant.admobBannerIos = (state as FetchSystemSettingsSuccess) + .settings['data']['ios_banner_ad_id'] ?? + ""; + Constant.adaptThemeColorSvg = ((state as FetchSystemSettingsSuccess) + .settings['data']['svg_clr'] == + "1"); + Constant.admobInterstitialAndroid = + (state as FetchSystemSettingsSuccess).settings['data'] + ['android_interstitial_ad_id'] ?? + ""; + Constant.admobInterstitialIos = (state as FetchSystemSettingsSuccess) + .settings['data']['ios_interstitial_ad_id'] ?? + ""; + + emit(FetchSystemSettingsSuccess( + settings: (state as FetchSystemSettingsSuccess).settings)); + } + } + } catch (e) { + emit(FetchSystemSettingsFailure(e.toString())); + } + } + + dynamic getSetting(SystemSetting selected) { + if (state is FetchSystemSettingsSuccess) { + Map settings = (state as FetchSystemSettingsSuccess).settings['data']; + + if (selected == SystemSetting.language) { + return settings['languages']; + } + + if (selected == SystemSetting.demoMode) { + if (settings.containsKey("demo_mode")) { + return settings['demo_mode']; + } else { + return false; + } + } + + /// where selected is equals to type + var selectedSettingData = + (settings[Constant.systemSettingKeys[selected]]); + + return selectedSettingData; + } + } + + Map getRawSettings() { + if (state is FetchSystemSettingsSuccess) { + return (state as FetchSystemSettingsSuccess).settings['data']; + } + return {}; + } + + dynamic _getSetting(Map settings, SystemSetting selected) { + var selectedSettingData = + settings['data'][Constant.systemSettingKeys[selected]]; + + return selectedSettingData; + } + + @override + FetchSystemSettingsState? fromJson(Map json) { + try { + if (json['cubit_state'] == "FetchSystemSettingsSuccess") { + FetchSystemSettingsSuccess fetchSystemSettingsSuccess = + FetchSystemSettingsSuccess.fromMap(json); + + return fetchSystemSettingsSuccess; + } + } catch (e) {} + return null; + } + + @override + Map? toJson(FetchSystemSettingsState state) { + try { + if (state is FetchSystemSettingsSuccess) { + Map mapped = state.toMap(); + mapped['cubit_state'] = "FetchSystemSettingsSuccess"; + return mapped; + } + } catch (e) {} + + return null; + } +} diff --git a/lib/data/cubits/system/get_api_keys_cubit.dart b/lib/data/cubits/system/get_api_keys_cubit.dart new file mode 100644 index 0000000..9e5058d --- /dev/null +++ b/lib/data/cubits/system/get_api_keys_cubit.dart @@ -0,0 +1,129 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +import 'dart:developer'; + +import 'package:ebroker/utils/api.dart'; + +import '../../../exports/main_export.dart'; +import '../../../utils/Encryption/rsa.dart'; + +class GetApiKeysCubit extends Cubit { + GetApiKeysCubit() : super(GetApiKeysInitial()); + + Future fetch() async { + try { + emit(GetApiKeysInProgress()); + + Map result = await Api.get( + url: Api.getPaymentApiKeys, + queryParameters: {}, + ); + + List data = (result['data'] as List); + var razorpayKey = _getDataFromKey(data, "razor_key"); + var razorPaySecret = _getDataFromKey(data, "razor_secret"); + var paystackPublicKey = _getDataFromKey(data, "paystack_public_key"); + var paystackSecretKey = _getDataFromKey(data, "paystack_secret_key"); + var paystackCurrency = _getDataFromKey(data, "paystack_currency"); + var stripeCurrency = _getDataFromKey(data, "stripe_currency"); + var stripePublishableKey = + _getDataFromKey(data, "stripe_publishable_key"); + var stripeSecretKey = _getDataFromKey(data, "stripe_secret_key"); + String enabledGatway = ""; + + if (_getDataFromKey(data, "paypal_gateway") == "1") { + enabledGatway = "paypal"; + } else if (_getDataFromKey(data, "razorpay_gateway") == "1") { + enabledGatway = "razorpay"; + } else if (_getDataFromKey(data, "paystack_gateway") == "1") { + enabledGatway = "paystack"; + } else if (_getDataFromKey(data, "stripe_gateway") == "1") { + enabledGatway = "stripe"; + } + + emit(GetApiKeysSuccess( + razorPayKey: razorpayKey ?? "", + enabledPaymentGatway: enabledGatway, + razorPaySecret: razorPaySecret ?? "", + paystackPublicKey: paystackPublicKey ?? "", + paystackCurrency: paystackCurrency ?? "", + paystackSecret: paystackSecretKey ?? "", + stripeCurrency: stripeCurrency ?? "", + stripePublishableKey: stripePublishableKey ?? "", + stripeSecretKey: stripeSecretKey ?? "")); + } catch (e) { + emit(GetApiKeysFail(e.toString())); + } + } + + void setAPIKeys() { + //setKeys + if (state is GetApiKeysSuccess) { + GetApiKeysSuccess _state = (state as GetApiKeysSuccess); + + AppSettings.paystackKey = _state.paystackPublicKey; + AppSettings.razorpayKey = _state.razorPayKey; + AppSettings.enabledPaymentGatway = _state.enabledPaymentGatway; + AppSettings.paystackCurrency = _state.paystackCurrency; + AppSettings.stripeCurrency = _state.stripeCurrency; + AppSettings.stripePublishableKey = _state.stripePublishableKey; + AppSettings.stripeSecrateKey = RSAEncryption().decrypt( + privateKey: Constant.keysDecryptionPasswordRSA, + encryptedData: _state.stripeSecretKey, + ); + paystack.init(AppSettings.paystackKey); + } + if (state is GetApiKeysFail) { + log((state as GetApiKeysFail).error.toString(), name: "API KEY FAIL"); + } + } + + dynamic _getDataFromKey(List data, String key) { + try { + return data.where((element) => element['type'] == key).first['data']; + } catch (e) { + if (e.toString().contains("Bad state")) { + throw "The key>>> $key is not comming from API"; + } + } + } +} + +abstract class GetApiKeysState {} + +class GetApiKeysInitial extends GetApiKeysState {} + +class GetApiKeysInProgress extends GetApiKeysState {} + +class GetApiKeysSuccess extends GetApiKeysState { + final String razorPayKey; + final String razorPaySecret; + final String paystackPublicKey; + final String paystackSecret; + final String paystackCurrency; + final String enabledPaymentGatway; + final String stripeCurrency; + final String stripePublishableKey; + final String stripeSecretKey; + GetApiKeysSuccess({ + required this.razorPayKey, + required this.razorPaySecret, + required this.paystackPublicKey, + required this.paystackSecret, + required this.paystackCurrency, + required this.enabledPaymentGatway, + required this.stripeCurrency, + required this.stripePublishableKey, + required this.stripeSecretKey, + }); + + @override + String toString() { + return 'GetApiKeysSuccess(razorPayKey: $razorPayKey, razorPaySecret: $razorPaySecret, paystackPublicKey: $paystackPublicKey, paystackSecret: $paystackSecret, paystackCurrency: $paystackCurrency, enabledPaymentGatway: $enabledPaymentGatway, stripeCurrency: $stripeCurrency, stripePublishableKey: $stripePublishableKey, stripeSecretKey: $stripeSecretKey)'; + } +} + +class GetApiKeysFail extends GetApiKeysState { + final dynamic error; + GetApiKeysFail(this.error); +} diff --git a/lib/data/cubits/system/language_cubit.dart b/lib/data/cubits/system/language_cubit.dart new file mode 100644 index 0000000..9110b2d --- /dev/null +++ b/lib/data/cubits/system/language_cubit.dart @@ -0,0 +1,39 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:hive/hive.dart'; + +import '../../../utils/hive_keys.dart'; + +class LanguageState {} + +class LanguageInitial extends LanguageState {} + +class LanguageLoader extends LanguageState { + final dynamic languageCode; + + LanguageLoader(this.languageCode); +} + +class LanguageLoadFail extends LanguageState { + final dynamic error; + LanguageLoadFail({required this.error}); +} + +class LanguageCubit extends Cubit { + LanguageCubit() : super(LanguageInitial()); + + void loadCurrentLanguage() { + var language = + Hive.box(HiveKeys.languageBox).get(HiveKeys.currentLanguageKey); + if (language != null) { + emit(LanguageLoader(language['code'])); + } else { + emit(LanguageLoader("en")); + } + } + + dynamic currentLanguageCode() { + return Hive.box(HiveKeys.languageBox) + .get(HiveKeys.currentLanguageKey)['code']; + } +} diff --git a/lib/data/cubits/system/notification_cubit.dart b/lib/data/cubits/system/notification_cubit.dart new file mode 100644 index 0000000..2363ca0 --- /dev/null +++ b/lib/data/cubits/system/notification_cubit.dart @@ -0,0 +1,72 @@ +import 'dart:convert'; + +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../../utils/api.dart'; +import '../../../utils/helper_utils.dart'; +import '../../helper/custom_exception.dart'; +import '../../model/notification_data.dart'; + +abstract class NotificationState {} + +class NotificationInitial extends NotificationState {} + +class NotificationSetProgress extends NotificationState {} + +class NotificationSetSuccess extends NotificationState { + List notificationlist = []; + NotificationSetSuccess(this.notificationlist); +} + +class NotificationSetFailure extends NotificationState { + final String errmsg; + NotificationSetFailure(this.errmsg); +} + +class NotificationCubit extends Cubit { + NotificationCubit() : super(NotificationInitial()); + + void getNotification( + BuildContext context, + ) { + emit(NotificationSetProgress()); + getNotificationFromDb( + context, + ) + .then((value) => emit(NotificationSetSuccess(value))) + .catchError((e) => emit(NotificationSetFailure(e.toString()))); + } + + Future> getNotificationFromDb( + BuildContext context, + ) async { + Map body = {}; + List notificationList = []; + var response = await HelperUtils.sendApiRequest( + Api.apiGetNotificationList, + body, + false, + context, + ); + var getdata = json.decode(response); + if (getdata != null) { + if (!getdata[Api.error]) { + List list = getdata['data']; + notificationList = + list.map((model) => NotificationData.fromJson(model)).toList(); + } else { + throw CustomException(getdata[Api.message]); + } + } else { + Future.delayed( + Duration.zero, + () { + throw CustomException("nodatafound".translate(context)); + }, + ); + } + return notificationList; + } +} diff --git a/lib/data/cubits/system/user_details.dart b/lib/data/cubits/system/user_details.dart new file mode 100644 index 0000000..1c55d88 --- /dev/null +++ b/lib/data/cubits/system/user_details.dart @@ -0,0 +1,37 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:ebroker/data/model/user_model.dart'; +import 'package:ebroker/utils/hive_utils.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +class UserDetailsCubit extends Cubit { + UserDetailsCubit() + : super(UserDetailsState( + user: HiveUtils.isGuest() ? null : HiveUtils.getUserDetails())); + + void fill(UserModel model) { + emit(UserDetailsState(user: model)); + } + + void copy(UserModel model) { + emit(state.copyWith(user: model)); + } + + void clear() { + emit(UserDetailsState(user: null)); + } +} + +class UserDetailsState { + final UserModel? user; + UserDetailsState({ + required this.user, + }); + + UserDetailsState copyWith({ + UserModel? user, + }) { + return UserDetailsState( + user: user ?? this.user, + ); + } +} diff --git a/lib/data/helper/custom_exception.dart b/lib/data/helper/custom_exception.dart new file mode 100644 index 0000000..86dcbb2 --- /dev/null +++ b/lib/data/helper/custom_exception.dart @@ -0,0 +1,34 @@ +class CustomException implements Exception { + final dynamic _message; + // ignore: unused_field + final dynamic _prefix; + + CustomException([this._message, this._prefix]); + + @override + String toString() { + return "$_message"; + } +} + +class FetchDataException extends CustomException { + FetchDataException([message]) + : super(message, "Error During Communication: "); +} + +class BadRequestException extends CustomException { + BadRequestException([message]) : super(message, "Invalid Request: "); +} + +class UnauthorisedException extends CustomException { + UnauthorisedException([message]) : super(message, "Unauthorised: "); +} + +class VerificationException extends CustomException { + VerificationException([message]) + : super(message, "Please verify email first "); +} + +class InvalidInputException extends CustomException { + InvalidInputException([message]) : super(message, "Invalid Input: "); +} diff --git a/lib/data/helper/design_configs.dart b/lib/data/helper/design_configs.dart new file mode 100644 index 0000000..89f1df1 --- /dev/null +++ b/lib/data/helper/design_configs.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; + +class DesignConfig { + static RoundedRectangleBorder setRoundedBorder(double bradius, bool isboarder, + {Color bordercolor = Colors.transparent}) { + return RoundedRectangleBorder( + side: BorderSide(color: bordercolor, width: isboarder ? 1.0 : 0), + borderRadius: BorderRadius.circular(bradius)); + } + + static BoxDecoration boxDecorationBorder( + {required Color color, + required double radius, + Color? borderColor, + double? borderWidth}) { + return BoxDecoration( + color: color, + borderRadius: BorderRadius.circular(radius), + border: borderColor == null + ? null + : Border.all(color: borderColor, width: borderWidth ?? 1), + ); + } +} diff --git a/lib/data/helper/designs.dart b/lib/data/helper/designs.dart new file mode 100644 index 0000000..8398247 --- /dev/null +++ b/lib/data/helper/designs.dart @@ -0,0 +1,244 @@ +import 'dart:ui'; + +import '../../Ui/Theme/theme.dart'; +import '../../utils/constant.dart'; +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; + +const double defaultPadding = 20; + +Widget setTextbutton(String titleTxt, Color txtColor, FontWeight? fontWeight, + VoidCallback onPressed, BuildContext context) { + return TextButton( + onPressed: onPressed, + child: Text(titleTxt, + style: Theme.of(context).textTheme.titleSmall?.copyWith( + color: txtColor, + fontWeight: fontWeight, + letterSpacing: 0.5, + )), + ); +} + +Widget setTitleText(String titleTxt, BuildContext context) { + return Text( + titleTxt, + style: Theme.of(context).textTheme.headlineSmall?.copyWith( + color: Theme.of(context).colorScheme.textColorDark, + fontWeight: FontWeight.bold, + letterSpacing: 0.5), + textAlign: TextAlign.center, + ); +} + +Widget setMessageText( + {required String titleTxt, + required Color txtColor, + required TextStyle? txtStyle, + required BuildContext context, + FontWeight fontWeight = FontWeight.w400, + TextAlign txtAlign = TextAlign.center, + double? textheight, + int? txtmaxline, + TextOverflow? txtoverflow}) { + return Text( + titleTxt, //Theme.of(context).textTheme.titleMedium? + style: txtStyle?.copyWith( + color: txtColor, + fontWeight: fontWeight, + letterSpacing: 0.5, + height: textheight), + maxLines: txtmaxline, overflow: txtoverflow, + textAlign: txtAlign, + ); +} + +Widget setNetworkImg(String? murl, + {double? height, + double? width, + Color? imgColor, + BoxFit boxFit = BoxFit.contain, + BoxFit? placeboxfit}) { + String url = murl ??= ""; + return CachedNetworkImage( + imageUrl: url, + width: width, + height: height, + fit: boxFit, + errorWidget: (context, url, error) { + return setSVGImage("placeholder", + height: height, width: width, boxFit: placeboxfit ??= boxFit); + }, + placeholder: (context, url) { + return Center( + child: setSVGImage("placeholder", + height: height, width: width, boxFit: placeboxfit ??= boxFit)); + }, + ); +} + +Widget setSVGImage(String imageName, + {double? height, + double? width, + Color? imgColor, + BoxFit boxFit = BoxFit.contain}) { + String path = "$svgPath$imageName.svg"; + return SvgPicture.asset( + path, + height: height, + width: width, + color: imgColor, + fit: boxFit, + ); +} + +/* showSnackBar(String msg, BuildContext context) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + msg, + textAlign: TextAlign.center, + style: const TextStyle(color: Theme.of(context).colorScheme.textColor), ), + duration: const Duration(milliseconds: 1000), //bydefault 4000 ms + backgroundColor: Theme.of(context).colorScheme.bgColor, elevation: 1.0, + ), + ); +} */ + +///textStyles +TextStyle setTextStyle( + {required Color color, + // required double? fontSize, + required FontWeight fontW, + required double? letterSpace, + required BuildContext context}) { + return TextStyle( + //Theme.of(context).textTheme.headlineSmall?.copyWith(), + color: + color, //Theme.of(context).colorScheme.blackColor, // fontSize: fontSize, //20, + fontWeight: fontW, //FontWeight.w700, + letterSpacing: letterSpace, + ); +} + +///border +RoundedRectangleBorder setRoundedBorder(double bradius, + {bool isboarder = false, Color bordercolor = Colors.transparent}) { + return RoundedRectangleBorder( + side: BorderSide(color: bordercolor, width: isboarder ? 1.0 : 0), + borderRadius: BorderRadius.circular(bradius)); +} + +///appbar with or without back & action button +AppBar appBarWidget(BuildContext context, String titleText, + {IconData backButtonIcon = Icons.arrow_back}) { + return AppBar( + iconTheme: const IconThemeData( + color: Colors.black, + ), + title: setMessageText( + context: context, + titleTxt: titleText, + txtColor: Theme.of(context).colorScheme.blackColor, + txtStyle: Theme.of(context).textTheme.titleMedium, + fontWeight: FontWeight.w700), + leading: addBackButton(context, backButtonIcon), + ); +} + +IconButton addBackButton(BuildContext context, IconData backButtonIcon) { + return IconButton( + onPressed: () { + Navigator.of(context).pop(); + }, + icon: Icon( + backButtonIcon, + color: Theme.of(context).colorScheme.backgroundColor, + ), //Icons.arrow_back + ); +} + +AppBar appBarWithActionWidget( + BuildContext context, String titleText, Widget actionWidget, + {IconData backButtonIcon = Icons.arrow_back}) { + return AppBar( + iconTheme: const IconThemeData( + color: Colors.black, + ), + title: setMessageText( + context: context, + titleTxt: titleText, + txtColor: Theme.of(context).colorScheme.blackColor, + txtStyle: Theme.of(context).textTheme.titleMedium, + fontWeight: FontWeight.w700), + leading: addBackButton(context, backButtonIcon), + actions: [actionWidget], + ); +} + +///gradient Container +Container setGradientContainer( + {required Color gradientColor1, + required Color gradientColor2, + required BoxShape shape, + Radius? radius, + required Widget child}) { + return Container( + //MediaQuery.of(context).size.width + // height: 20, + // width: 20, + alignment: Alignment.center, + decoration: ShapeDecoration( + shape: const CircleBorder(), + gradient: LinearGradient( + begin: Alignment.centerLeft, + end: Alignment.centerRight, + colors: [gradientColor1, gradientColor2]), + ), + /* BoxDecoration( + // borderRadius: BorderRadius.all(radius), + shape: shape, + /* ShapeDecoration( + shape: CircleBorder(),*/ + gradient: LinearGradient( + begin: Alignment.centerLeft, + end: Alignment.centerRight, + colors: [gradientColor1, gradientColor2]), + ), */ + child: child); +} + +///blurred background for buttons & text +ClipRRect setBlurBg( + {required BuildContext context, required Widget childWidget}) { + return ClipRRect( + borderRadius: BorderRadius.circular(8.0), //circular(25.0), + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10), + child: childWidget)); + /*, + VoidCallback? callBack + GestureDetector( + onTap: callBack, + child: */ +} + +///url to file converter for images @ AddProperty -- not working as expected +/* Future urlToFile(String imageUrl) async { +// generate random number. + var rng = Random(); +// get temporary directory of device. + Directory tempDir = await getTemporaryDirectory(); +// get temporary path from temporary directory. + String tempPath = tempDir.path; +// create a new file in temporary path with random file name. + File file = File('$tempPath${rng.nextInt(100)}.png'); +// call http.get method and pass imageUrl into it to get response. + Response response = await get(Uri.parse(imageUrl)); +// write bodyBytes received in response to file. + await file.writeAsBytes(response.bodyBytes); +// now return the file which is created with random name in +// temporary directory and image bytes from response is written to // that file. + return file; +} */ diff --git a/lib/data/helper/slide_animation.dart b/lib/data/helper/slide_animation.dart new file mode 100644 index 0000000..28a90f7 --- /dev/null +++ b/lib/data/helper/slide_animation.dart @@ -0,0 +1,108 @@ +import 'package:flutter/material.dart'; + +class AnimationFromRightSide extends StatefulWidget { + final Widget child; + final int delay; + + const AnimationFromRightSide( + {super.key, required this.child, required this.delay}); + + @override + AnimationFromRightSideState createState() => AnimationFromRightSideState(); +} + +class AnimationFromRightSideState extends State + with TickerProviderStateMixin { + late AnimationController _animController; + late Animation _animOffset; + + @override + void initState() { + super.initState(); + + _animController = AnimationController( + vsync: this, duration: const Duration(milliseconds: 500)); + final curve = + CurvedAnimation(curve: Curves.decelerate, parent: _animController); + _animOffset = + Tween(begin: const Offset(0.35, 0.00), end: Offset.zero) + .animate(curve); + + // if (widget.delay == null) { + if (mounted) _animController.forward(); + // } else { + // Timer(Duration(milliseconds: widget.delay), () { + // if (mounted) _animController.forward(); + // }); + // } + } + + @override + void dispose() { + _animController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return FadeTransition( + opacity: _animController, + child: SlideTransition( + position: _animOffset, + child: widget.child, + ), + ); + } +} + +class AnimationFromBottomSide extends StatefulWidget { + final Widget child; + final int delay; + + const AnimationFromBottomSide( + {super.key, required this.child, required this.delay}); + + @override + AnimationFromBottomSideState createState() => AnimationFromBottomSideState(); +} + +class AnimationFromBottomSideState extends State + with TickerProviderStateMixin { + late AnimationController _animController; + late Animation _animOffset; + + @override + void initState() { + super.initState(); + + _animController = AnimationController( + vsync: this, duration: const Duration(milliseconds: 500)); + final curve = + CurvedAnimation(curve: Curves.decelerate, parent: _animController); + _animOffset = + Tween(begin: const Offset(0.0, -1.0), end: Offset.zero) + .animate(curve); + + _animController.forward(); + // Timer(Duration(milliseconds: widget.delay), () { + // _animController.forward(); + // }); + } + + @override + void dispose() { + super.dispose(); + _animController.dispose(); + } + + @override + Widget build(BuildContext context) { + return FadeTransition( + opacity: _animController, + child: SlideTransition( + position: _animOffset, + child: widget.child, + ), + ); + } +} diff --git a/lib/data/helper/widgets.dart b/lib/data/helper/widgets.dart new file mode 100644 index 0000000..1b84c87 --- /dev/null +++ b/lib/data/helper/widgets.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import '../../utils/Extensions/extensions.dart'; +import '../../utils/ui_utils.dart'; + +class Widgets { + static bool isLoaderShowing = false; + static void showLoader(BuildContext context) async { + if (isLoaderShowing == true) return; + + isLoaderShowing=true; + showDialog( + context: context, + barrierDismissible: false, + useSafeArea: true, + builder: (BuildContext context) { + return AnnotatedRegion( + value: SystemUiOverlayStyle( + statusBarColor: Colors.black.withOpacity(0), + ), + child: SafeArea( + child: WillPopScope( + child: Center( + child: UiUtils.progress( + normalProgressColor: context.color.tertiaryColor, + ), + ), + onWillPop: () { + return Future( + () => false, + ); + }, + ), + ), + ); + }); + } + + static void hideLoder(BuildContext context) { + if (!isLoaderShowing) return; + isLoaderShowing=false; + Navigator.of(context).pop(); + } + + static Center noDataFound(String errorMsg) { + return Center(child: Text(errorMsg)); + } +} + +//string Extension -- for ₹ +extension FormatAmount on String { + //working with static strings and not textFormField +} diff --git a/lib/data/model/Personalized/personalized_settings.dart b/lib/data/model/Personalized/personalized_settings.dart new file mode 100644 index 0000000..605d5d5 --- /dev/null +++ b/lib/data/model/Personalized/personalized_settings.dart @@ -0,0 +1,54 @@ +import 'package:ebroker/utils/Extensions/lib/list.dart'; + +class PersonalizedInterestSettings { + final int userId; + final List categoryIds; + final List priceRange; + final List propertyType; + final List outdoorFacilityIds; + final String city; + + PersonalizedInterestSettings({ + required this.userId, + required this.categoryIds, + required this.priceRange, + required this.propertyType, + required this.outdoorFacilityIds, + required this.city, + }); + + factory PersonalizedInterestSettings.fromMap(Map map) { + return PersonalizedInterestSettings( + userId: map['user_id'] ?? 0, + categoryIds: (map['category_ids'] is String) + ? [] + : ((map['category_ids']) as List).forceInt(), + priceRange: (map['price_range'] is String) + ? [0, 50] + : (map['price_range'] as List).forceDouble(), + propertyType: (map['property_type'] is String) + ? [] + : (map['property_type'] as List).forceInt(), + outdoorFacilityIds: (map['outdoor_facilitiy_ids'] is String) + ? [] + : ((map['outdoor_facilitiy_ids'] ?? []) as List).forceInt(), + city: map['city'] ?? '', + ); + } + + factory PersonalizedInterestSettings.empty() { + return PersonalizedInterestSettings( + userId: 0, + categoryIds: [], + priceRange: [0, 1], + propertyType: [], + outdoorFacilityIds: [], + city: '', + ); + } + + @override + String toString() { + return 'PersonalizedInterestSettings{userId: $userId, categoryIds: $categoryIds, priceRange: $priceRange, propertyType: $propertyType, outdoorFacilityIds: $outdoorFacilityIds, city: $city}'; + } +} diff --git a/lib/data/model/ReportProperty/reason_model.dart b/lib/data/model/ReportProperty/reason_model.dart new file mode 100644 index 0000000..82031f0 --- /dev/null +++ b/lib/data/model/ReportProperty/reason_model.dart @@ -0,0 +1,20 @@ +class ReportReason { + final int id; + final String reason; + + ReportReason({required this.id, required this.reason}); + + Map toMap() { + return { + 'id': this.id, + 'reason': this.reason, + }; + } + + factory ReportReason.fromMap(Map map) { + return ReportReason( + id: map['id'] as int, + reason: map['reason'] as String, + ); + } +} diff --git a/lib/data/model/app_language.dart b/lib/data/model/app_language.dart new file mode 100644 index 0000000..e03a155 --- /dev/null +++ b/lib/data/model/app_language.dart @@ -0,0 +1,10 @@ +class AppLanguage { + final String languageName; + final String languageCode; + final String imageURL; + + const AppLanguage( + {required this.languageCode, + required this.languageName, + required this.imageURL}); +} diff --git a/lib/data/model/app_settings_datamodel.dart b/lib/data/model/app_settings_datamodel.dart new file mode 100644 index 0000000..fc3e195 --- /dev/null +++ b/lib/data/model/app_settings_datamodel.dart @@ -0,0 +1,66 @@ +import 'dart:ui'; + +class AppSettingsDataModel { + Color lightTertiary; + String? placeholderLogo; + Color lightSecondary; + Color lightPrimary; + Color darkTertiary; + Color darkSecondary; + Color darkPrimary; + String? splashLogo; + String? appHomeScreen; + bool? isUserActive; + + AppSettingsDataModel( + {required this.lightTertiary, + required this.lightSecondary, + required this.lightPrimary, + required this.darkTertiary, + required this.darkSecondary, + required this.darkPrimary, + this.splashLogo, + this.placeholderLogo, + this.appHomeScreen, + this.isUserActive}); + + AppSettingsDataModel.fromJson(Map json) + : lightTertiary = _colorFromHex(json['light_tertiary']), + placeholderLogo = json['placeholder_logo'], + lightSecondary = _colorFromHex(json['light_secondary']), + lightPrimary = _colorFromHex(json['light_primary']), + darkTertiary = _colorFromHex(json['dark_tertiary']), + darkSecondary = _colorFromHex(json['dark_secondary']), + darkPrimary = _colorFromHex(json['dark_primary']), + splashLogo = json['splash_logo'], + isUserActive = json['is_active'] ?? true, + appHomeScreen = json['app_home_screen']; + + Map toJson() { + final Map data = {}; + data['light_tertiary'] = _colorToHex(lightTertiary); + data['placeholder_logo'] = placeholderLogo; + data['light_secondary'] = _colorToHex(lightSecondary); + data['light_primary'] = _colorToHex(lightPrimary); + data['dark_tertiary'] = _colorToHex(darkTertiary); + data['dark_secondary'] = _colorToHex(darkSecondary); + data['dark_primary'] = _colorToHex(darkPrimary); + data['splash_logo'] = splashLogo; + data['app_home_screen'] = appHomeScreen; + data['isUserActive']=isUserActive; + return data; + } + + // Helper function to convert color from hex string to Color + static Color _colorFromHex(String hexColor) { + final buffer = StringBuffer(); + if (hexColor.length == 6 || hexColor.length == 7) buffer.write('ff'); + buffer.write(hexColor.replaceFirst('#', '')); + return Color(int.parse(buffer.toString(), radix: 16)); + } + + // Helper function to convert Color to hex string + static String _colorToHex(Color color) { + return '#${color.value.toRadixString(16).substring(2)}'; + } +} diff --git a/lib/data/model/article_model.dart b/lib/data/model/article_model.dart new file mode 100644 index 0000000..3d87298 --- /dev/null +++ b/lib/data/model/article_model.dart @@ -0,0 +1,29 @@ +import '../../utils/Extensions/lib/adaptive_type.dart'; + +class ArticleModel { + int? id; + String? image; + String? title; + String? description; + String? date; + + ArticleModel({this.id, this.image, this.title, this.description, this.date}); + + ArticleModel.fromJson(Map json) { + id = Adapter.forceInt(json['id']); + image = json['image']; + title = json['title']; + description = json['description']; + date = json['created_at']; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['image'] = image; + data['title'] = title; + data['description'] = description; + data['created_at'] = date; + return data; + } +} diff --git a/lib/data/model/category.dart b/lib/data/model/category.dart new file mode 100644 index 0000000..950c72b --- /dev/null +++ b/lib/data/model/category.dart @@ -0,0 +1,64 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:convert'; + +import 'package:ebroker/utils/api.dart'; + +class Category { + String? id; + String? category; + String? image; + //String? typeids; + //List? type; + Map? parameterTypes; + //List fields = []; + Category({this.id, this.category, this.image, this.parameterTypes}); + + Category.fromJson(Map json) { + id = json[Api.id].toString(); + category = json[Api.category]; + image = json[Api.image] ?? ""; + parameterTypes = json[Api.parameterTypes] ?? {}; + } + + Category.fromProperty(Map json) { + id = json[Api.id].toString(); + category = json[Api.category]; + } + + Map toMap() { + return { + 'id': id, + 'category': category, + 'image': image, + 'parameterTypes': parameterTypes, + }; + } + + factory Category.fromMap(Map map) { + return Category( + id: map['id'] != null ? map['id'] as String : null, + category: map['category'] != null ? map['category'] as String : null, + image: map['image'] != null ? map['image'] as String : null, + parameterTypes: map['parameterTypes'], + ); + } + + String toJson() => json.encode(toMap()); + + @override + String toString() { + return 'Category(id: $id, category: $category, image: $image, parameterTypes: $parameterTypes)'; + } +} + +class Type { + String? id; + String? type; + + Type({this.id, this.type}); + + Type.fromJson(Map json) { + id = json[Api.id].toString(); + type = json[Api.type]; + } +} diff --git a/lib/data/model/chat/chat_message_modal.dart b/lib/data/model/chat/chat_message_modal.dart new file mode 100644 index 0000000..bb38ab9 --- /dev/null +++ b/lib/data/model/chat/chat_message_modal.dart @@ -0,0 +1,48 @@ +class ChatMessageModal { + int? id; + int? senderId; + int? receiverId; + int? propertyId; + String? message; + String? file; + String? audio; + String? createdAt; + String? updatedAt; + + ChatMessageModal( + {this.id, + this.senderId, + this.receiverId, + this.propertyId, + this.message, + this.file, + this.audio, + this.createdAt, + this.updatedAt}); + + ChatMessageModal.fromJson(Map json) { + id = json['id']; + senderId = json['sender_id']; + receiverId = json['receiver_id']; + propertyId = json['property_id']; + message = json['message']; + file = json['file']; + audio = json['audio']; + createdAt = json['created_at']; + updatedAt = json['updated_at']; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['sender_id'] = senderId; + data['receiver_id'] = receiverId; + data['property_id'] = propertyId; + data['message'] = message; + data['file'] = file; + data['audio'] = audio; + data['created_at'] = createdAt; + data['updated_at'] = updatedAt; + return data; + } +} diff --git a/lib/data/model/chat/chated_user_model.dart b/lib/data/model/chat/chated_user_model.dart new file mode 100644 index 0000000..4e4c6f0 --- /dev/null +++ b/lib/data/model/chat/chated_user_model.dart @@ -0,0 +1,52 @@ +// import 'dart:developer'; + +import 'package:flutter/material.dart'; + +class ChatedUser { + int? propertyId; + String? title; + String? titleImage; + int? userId; + String? name; + String? profile; + String? firebaseId; + String? fcmId; + + ChatedUser( + {this.propertyId, + this.title, + this.titleImage, + this.userId, + this.name, + this.profile, + this.firebaseId, + this.fcmId}); + + ChatedUser.fromJson(Map json, {BuildContext? context}) { + if (context != null) { + precacheImage(NetworkImage(json['profile']), context); + precacheImage(NetworkImage(json['title_image']), context); + } + propertyId = json['property_id']; + title = json['title']; + titleImage = json['title_image']; + userId = json['user_id']; + name = json['name']; + profile = json['profile']; + firebaseId = json['firebase_id']; + fcmId = json['fcm_id']; + } + + Map toJson() { + final Map data = {}; + data['property_id'] = propertyId; + data['title'] = title; + data['title_image'] = titleImage; + data['user_id'] = userId; + data['name'] = name; + data['profile'] = profile; + data['firebase_id'] = firebaseId; + data['fcm_id'] = fcmId; + return data; + } +} diff --git a/lib/data/model/city_model.dart b/lib/data/model/city_model.dart new file mode 100644 index 0000000..c1ea002 --- /dev/null +++ b/lib/data/model/city_model.dart @@ -0,0 +1,39 @@ +import 'dart:convert'; + +// ignore_for_file: public_member_api_docs, sort_constructors_first +class City { + final String name; + final int count; + final String image; + City({ + required this.name, + required this.count, + required this.image, + }); + + @override + String toString() => 'City(name: $name, count: $count, image: $image)'; + + City copyWith({String? name, int? count, String? image}) { + return City( + name: name ?? this.name, + count: count ?? this.count, + image: image ?? this.image); + } + + Map toMap() { + return {'City': name, 'Count': count, "image": image}; + } + + factory City.fromMap(Map map) { + return City( + name: map['City'] as String, + count: map['Count'] as int, + image: map['image']); + } + + String toJson() => json.encode(toMap()); + + factory City.fromJson(String source) => + City.fromMap(json.decode(source) as Map); +} diff --git a/lib/data/model/company.dart b/lib/data/model/company.dart new file mode 100644 index 0000000..403e6e6 --- /dev/null +++ b/lib/data/model/company.dart @@ -0,0 +1,36 @@ +class Company { + String? companyName; + String? companyWebsite; + String? companyEmail; + String? companyAddress; + String? companyTel1; + String? companyTel2; + + Company( + {this.companyName, + this.companyWebsite, + this.companyEmail, + this.companyAddress, + this.companyTel1, + this.companyTel2}); + + Company.fromJson(Map json) { + companyName = json['company_name']; + companyWebsite = json['company_website']; + companyEmail = json['company_email']; + companyAddress = json['company_address']; + companyTel1 = json['company_tel1']; + companyTel2 = json['company_tel2']; + } + + Map toJson() { + final Map data = new Map(); + data['company_name'] = this.companyName; + data['company_website'] = this.companyWebsite; + data['company_email'] = this.companyEmail; + data['company_address'] = this.companyAddress; + data['company_tel1'] = this.companyTel1; + data['company_tel2'] = this.companyTel2; + return data; + } +} diff --git a/lib/data/model/data_output.dart b/lib/data/model/data_output.dart new file mode 100644 index 0000000..5865249 --- /dev/null +++ b/lib/data/model/data_output.dart @@ -0,0 +1,33 @@ +import 'package:flutter/material.dart'; + +/*when we need to parse API data. this class will helpfull it will give you easy + access of data without using Map and if you see in this class it will be any type, +its like dynamic, instead of creating new model for data output we use T, or any english Capital +alphabets you can use any like */ +class DataOutput { + final int total; + final List modelList; + final ExtraData? extraData; + DataOutput({required this.total, required this.modelList, this.extraData}); + + DataOutput copyWith({ + int? total, + int? offset, + List? modelList, + ExtraData? extraData, + }) { + return DataOutput( + total: total ?? this.total, + modelList: modelList ?? this.modelList, + extraData: extraData ?? this.extraData, + ); + } +} + +@protected +class ExtraData { + final T data; + ExtraData({ + required this.data, + }); +} diff --git a/lib/data/model/enquiry_status.dart b/lib/data/model/enquiry_status.dart new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lib/data/model/enquiry_status.dart @@ -0,0 +1 @@ + diff --git a/lib/data/model/gallery.dart b/lib/data/model/gallery.dart new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/lib/data/model/gallery.dart @@ -0,0 +1 @@ + diff --git a/lib/data/model/google_place_model.dart b/lib/data/model/google_place_model.dart new file mode 100644 index 0000000..df4a76a --- /dev/null +++ b/lib/data/model/google_place_model.dart @@ -0,0 +1,95 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:convert'; + +class GooglePlaceModel { + final String city; + final String description; + final String placeId; + final String latitude; + final String longitude; + final String state; + final String country; + + GooglePlaceModel({ + required this.state, + required this.country, + required this.city, + required this.description, + required this.placeId, + required this.latitude, + required this.longitude, + }); + + GooglePlaceModel copyWith( + {String? name, + String? cityName, + String? placeId, + String? latitude, + String? longitude, + String? state, + String? country}) { + return GooglePlaceModel( + city: name ?? city, + state: state ?? this.state, + country: country ?? this.country, + description: cityName ?? description, + placeId: placeId ?? this.placeId, + latitude: latitude ?? this.latitude, + longitude: longitude ?? this.longitude, + ); + } + + Map toMap() { + return { + 'name': city, + 'desctiption': description, + 'placeId': placeId, + 'latitude': latitude, + 'longitude': longitude, + 'state': state, + 'country': country + }; + } + + factory GooglePlaceModel.fromMap(Map map) { + return GooglePlaceModel( + country: map['country'] as String, + state: map['state'] as String, + city: map['name'] as String, + description: map['cityName'] as String, + placeId: map['placeId'] as String, + latitude: map['latitude'] as String, + longitude: map['longitude'] as String, + ); + } + + String toJson() => json.encode(toMap()); + + factory GooglePlaceModel.fromJson(String source) => + GooglePlaceModel.fromMap(json.decode(source) as Map); + + @override + String toString() { + return 'GooglePlaceModel(city: $city, description: $description, placeId: $placeId, latitude: $latitude, longitude: $longitude, state: $state, country: $country)'; + } + + @override + bool operator ==(covariant GooglePlaceModel other) { + if (identical(this, other)) return true; + + return other.city == city && + other.description == description && + other.placeId == placeId && + other.latitude == latitude && + other.longitude == longitude; + } + + @override + int get hashCode { + return city.hashCode ^ + description.hashCode ^ + placeId.hashCode ^ + latitude.hashCode ^ + longitude.hashCode; + } +} diff --git a/lib/data/model/google_place_predictions_model.dart b/lib/data/model/google_place_predictions_model.dart new file mode 100644 index 0000000..7968efe --- /dev/null +++ b/lib/data/model/google_place_predictions_model.dart @@ -0,0 +1,54 @@ +class GooglePlaceResponseModel { + List? predictions; + String? status; + + GooglePlaceResponseModel({this.predictions, this.status}); + + GooglePlaceResponseModel.fromJson(Map json) { + if (json['predictions'] != null) { + predictions = []; + json['predictions'].forEach((v) { + predictions!.add(Predictions.fromJson(v)); + }); + } + status = json['status']; + } + + Map toJson() { + final Map data = {}; + if (predictions != null) { + data['predictions'] = predictions!.map((v) => v.toJson()).toList(); + } + data['status'] = status; + return data; + } +} + +class Predictions { + String? description; + String? placeId; + String? reference; + + Predictions({ + this.description, + this.placeId, + this.reference, + }); + + Predictions.fromJson(Map json) { + description = json['description']; + + placeId = json['place_id']; + reference = json['reference']; + } + + Map toJson() { + final Map data = {}; + data['description'] = description; + + data['place_id'] = placeId; + data['reference'] = reference; + + return data; + } +} diff --git a/lib/data/model/home_slider.dart b/lib/data/model/home_slider.dart new file mode 100644 index 0000000..ae16599 --- /dev/null +++ b/lib/data/model/home_slider.dart @@ -0,0 +1,52 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:convert'; + +import 'package:ebroker/utils/api.dart'; + +class HomeSlider { + String? id; + String? image; + String? categoryId; + String? propertysId; + bool? promoted; + + HomeSlider( + {this.id, this.image, this.categoryId, this.propertysId, this.promoted}); + + HomeSlider.fromJson(Map json) { + id = json[Api.id].toString(); + categoryId = json[Api.categoryId].toString(); + image = json[Api.image]; + propertysId = json[Api.propertysId].toString(); + promoted = json[Api.promoted]; + } + + @override + String toString() { + return 'HomeSlider(id: $id, image: $image, categoryId: $categoryId, propertysId: $propertysId, promoted: $promoted)'; + } + + Map toMap() { + return { + 'id': id, + 'image': image, + 'categoryId': categoryId, + 'propertysId': propertysId, + 'promoted': promoted, + }; + } + + factory HomeSlider.fromMap(Map map) { + return HomeSlider( + id: map['id'] != null ? map['id'] as String : null, + image: map['image'] != null ? map['image'] as String : null, + categoryId: + map['categoryId'] != null ? map['categoryId'] as String : null, + propertysId: + map['propertysId'] != null ? map['propertysId'] as String : null, + promoted: map['promoted'] != null ? map['promoted'] as bool : null, + ); + } + + String toJson() => json.encode(toMap()); +} diff --git a/lib/data/model/house_type.dart b/lib/data/model/house_type.dart new file mode 100644 index 0000000..4dd699b --- /dev/null +++ b/lib/data/model/house_type.dart @@ -0,0 +1,13 @@ +import '../../utils/api.dart'; + +class HouseType { + String? id; + String? type; + + HouseType({this.id, this.type}); + + HouseType.fromJson(Map json) { + id = json[Api.id].toString(); + type = json[Api.type]; + } +} diff --git a/lib/data/model/interested_user_model.dart b/lib/data/model/interested_user_model.dart new file mode 100644 index 0000000..c468fd2 --- /dev/null +++ b/lib/data/model/interested_user_model.dart @@ -0,0 +1,49 @@ +import 'package:ebroker/utils/Extensions/lib/adaptive_type.dart'; + +class InterestedUserModel { + int? id; + String? name; + String? image; + String? email; + String? mobile; + int? customertotalpost; + String? runtimeTypeLog; + + InterestedUserModel( + {this.id, + this.name, + this.image, + this.email, + this.mobile, + this.customertotalpost, + this.runtimeTypeLog}); + + InterestedUserModel.fromJson(Map json) { + try { + id = Adapter.forceInt(json['id']); + name = json['name']; + image = json['profile'] ?? ""; + email = json['email']; + mobile = json['mobile']; + customertotalpost = json['customertotalpost']; + runtimeTypeLog = + json.map((key, value) => MapEntry(key, value.runtimeType)).toString(); + } catch (e) { + runtimeTypeLog = + json.map((key, value) => MapEntry(key, value.runtimeType)).toString(); + print( + "Issue while create Interested Model ${e} : ${json.map((key, value) => MapEntry(key, value.runtimeType)).toString()}"); + } + } + + Map toJson() { + final Map data = new Map(); + data['id'] = id; + data['name'] = name; + data['profile'] = image; + data['email'] = email; + data['mobile'] = mobile; + data['customertotalpost'] = customertotalpost; + return data; + } +} diff --git a/lib/data/model/notification_data.dart b/lib/data/model/notification_data.dart new file mode 100644 index 0000000..f8ad7a3 --- /dev/null +++ b/lib/data/model/notification_data.dart @@ -0,0 +1,39 @@ +import 'package:ebroker/utils/Extensions/lib/adaptive_type.dart'; + +class NotificationData { + String? id; + String? title; + String? message; + String? image; + String? type; + int? sendType; + String? customersId; + String? propertysId; + String? createdAt; + String? created; + + NotificationData( + {this.id, + this.title, + this.message, + this.image, + this.type, + this.sendType, + this.customersId, + this.propertysId, + this.createdAt, + this.created}); + + NotificationData.fromJson(Map json) { + id = json['id'].toString(); + title = json['title']; + message = json['message']; + image = json['image']; + type = json['type'].toString(); + sendType = Adapter.forceInt(json['send_type']); + customersId = json['customers_id']; + propertysId = json['propertys_id'].toString(); + createdAt = json['created_at']; + created = json['created']; + } +} diff --git a/lib/data/model/outdoor_facility.dart b/lib/data/model/outdoor_facility.dart new file mode 100644 index 0000000..8a6d03d --- /dev/null +++ b/lib/data/model/outdoor_facility.dart @@ -0,0 +1,36 @@ +class OutdoorFacility { + int? id; + String? name; + String? image; + String? distance; + String? createdAt; + String? updatedAt; + + OutdoorFacility( + {this.id, this.name, this.image, this.createdAt, this.updatedAt,this.distance}); + + OutdoorFacility.fromJson(Map json) { + id = json['id']; + name = json['name']; + image = json['image']; + createdAt = json['created_at']; + updatedAt = json['updated_at']; + distance=json['distance']; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['name'] = name; + data['image'] = image; + data['created_at'] = createdAt; + data['updated_at'] = updatedAt; + data['distance']=distance; + return data; + } + + @override + String toString() { + return 'OutdoorFacility{id: $id, name: $name, image: $image, distance: $distance, createdAt: $createdAt, updatedAt: $updatedAt}'; + } +} diff --git a/lib/data/model/project_model.dart b/lib/data/model/project_model.dart new file mode 100644 index 0000000..d4fd4fc --- /dev/null +++ b/lib/data/model/project_model.dart @@ -0,0 +1,279 @@ +class ProjectModel { + int? id; + String? slugId; + int? categoryId; + String? title; + String? description; + String? metaTitle; + String? metaDescription; + String? metaKeywords; + String? metaImage; + String? image; + String? videoLink; + String? location; + String? latitude; + String? longitude; + String? city; + String? state; + String? country; + String? type; + int? status; + String? createdAt; + String? updatedAt; + int? addedBy; + Customer? customer; + List? gallaryImages; + List? documents; + List? plans; + ProjectCategory? category; + + ProjectModel({ + this.id, + this.slugId, + this.categoryId, + this.title, + this.description, + this.metaTitle, + this.metaDescription, + this.metaKeywords, + this.metaImage, + this.image, + this.videoLink, + this.location, + this.latitude, + this.longitude, + this.city, + this.state, + this.country, + this.type, + this.status, + this.createdAt, + this.updatedAt, + this.addedBy, + this.customer, + this.gallaryImages, + this.documents, + this.plans, + this.category, + }); + + factory ProjectModel.fromMap(Map map) { + print("PROJECT RESPONSE IS $map"); + return ProjectModel( + id: map['id'], + slugId: map['slug_id'], + categoryId: map['category_id'], + title: map['title'], + description: map['description'], + metaTitle: map['meta_title'], + metaDescription: map['meta_description'], + metaKeywords: map['meta_keywords'], + metaImage: map['meta_image'], + image: map['image'], + videoLink: map['video_link'], + location: map['location'], + latitude: map['latitude'], + longitude: map['longitude'], + city: map['city'], + state: map['state'], + country: map['country'], + type: map['type'], + status: map['status'], + createdAt: map['created_at'], + updatedAt: map['updated_at'], + addedBy: map['added_by'], + customer: Customer.fromMap(map['customer']), + gallaryImages: List.from( + map['gallary_images'].map((x) => Document.fromMap(x))), + documents: + List.from(map['documents'].map((x) => Document.fromMap(x))), + plans: List.from(map['plans'].map((x) => Plan.fromMap(x))), + category: ProjectCategory.fromMap(map['category']), + ); + } + + Map toMap() { + return { + 'id': id, + 'slug_id': slugId, + 'category_id': categoryId, + 'title': title, + 'description': description, + 'meta_title': metaTitle, + 'meta_description': metaDescription, + 'meta_keywords': metaKeywords, + 'meta_image': metaImage, + 'image': image, + 'video_link': videoLink, + 'location': location, + 'latitude': latitude, + 'longitude': longitude, + 'city': city, + 'state': state, + 'country': country, + 'type': type, + 'status': status, + 'created_at': createdAt, + 'updated_at': updatedAt, + 'added_by': addedBy, + 'customer': customer?.toMap(), + 'gallary_images': gallaryImages?.map((e) => e.toMap()).toList(), + 'documents': documents?.map((x) => x.toMap()).toList(), + 'plans': plans?.map((x) => x.toMap()).toList(), + 'category': category?.toMap(), + }; + } + + @override + String toString() { + return 'ProjectModel(id: $id, slugId: $slugId, categoryId: $categoryId, title: $title, description: $description, metaTitle: $metaTitle, metaDescription: $metaDescription, metaKeywords: $metaKeywords, metaImage: $metaImage, image: $image, videoLink: $videoLink, location: $location, latitude: $latitude, longitude: $longitude, city: $city, state: $state, country: $country, type: $type, status: $status, createdAt: $createdAt, updatedAt: $updatedAt, addedBy: $addedBy, customer: $customer, gallaryImages: $gallaryImages, documents: $documents, plans: $plans, category: $category)'; + } +} + +class Customer { + int? id; + String? name; + String? profile; + String? email; + String? mobile; + int? customertotalpost; + + Customer({ + this.id, + this.name, + this.profile, + this.email, + this.mobile, + this.customertotalpost, + }); + + factory Customer.fromMap(Map map) { + return Customer( + id: map['id'], + name: map['name'], + profile: map['profile'], + email: map['email'], + mobile: map['mobile'], + customertotalpost: map['customertotalpost'], + ); + } + + Map toMap() { + return { + 'id': id, + 'name': name, + 'profile': profile, + 'email': email, + 'mobile': mobile, + 'customertotalpost': customertotalpost, + }; + } +} + +class Document { + int? id; + String? name; + String? type; + String? createdAt; + String? updatedAt; + int? projectId; + + Document({ + this.id, + this.name, + this.type, + this.createdAt, + this.updatedAt, + this.projectId, + }); + + factory Document.fromMap(Map map) { + return Document( + id: map['id'], + name: map['name'], + type: map['type'], + createdAt: map['created_at'], + updatedAt: map['updated_at'], + projectId: map['project_id'], + ); + } + + Map toMap() { + return { + 'id': id, + 'name': name, + 'type': type, + 'created_at': createdAt, + 'updated_at': updatedAt, + 'project_id': projectId, + }; + } +} + +class Plan { + int? id; + String? title; + String? document; + String? createdAt; + String? updatedAt; + int? projectId; + + Plan({ + this.id, + this.title, + this.document, + this.createdAt, + this.updatedAt, + this.projectId, + }); + + factory Plan.fromMap(Map map) { + return Plan( + id: map['id'], + title: map['title'], + document: map['document'], + createdAt: map['created_at'], + updatedAt: map['updated_at'], + projectId: map['project_id'], + ); + } + + Map toMap() { + return { + 'id': id, + 'title': title, + 'document': document, + 'created_at': createdAt, + 'updated_at': updatedAt, + 'project_id': projectId, + }; + } +} + +class ProjectCategory { + final int? id; + final String? category; + final String? image; + + ProjectCategory({ + this.id, + this.category, + this.image, + }); + + factory ProjectCategory.fromMap(Map map) { + return ProjectCategory( + id: map['id'], + category: map['category'], + image: map['image'], + ); + } + + Map toMap() { + return { + 'id': id, + 'category': category, + 'image': image, + }; + } +} diff --git a/lib/data/model/property_model.dart b/lib/data/model/property_model.dart new file mode 100644 index 0000000..643edd0 --- /dev/null +++ b/lib/data/model/property_model.dart @@ -0,0 +1,582 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first, unused_import +// To parse this JSON data, do +// +// final propertyModel = propertyModelFromMap(jsonString); +import 'dart:convert'; +import 'dart:developer'; + +import 'package:ebroker/utils/Extensions/lib/adaptive_type.dart'; + +import '../../utils/helper_utils.dart'; + +class PropertyModel { + PropertyModel( + {this.id, + this.title, + this.customerName, + this.customerEmail, + this.customerNumber, + this.customerProfile, + this.price, + this.category, + this.builtUpArea, + this.plotArea, + this.hectaArea, + this.acre, + this.houseType, + this.furnished, + this.unitType, + this.description, + this.address, + this.clientAddress, + this.properyType, + this.titleImage, + this.postCreated, + this.gallery, + this.totalView, + this.status, + this.state, + this.city, + this.country, + this.addedBy, + this.inquiry, + this.promoted, + this.isFavourite, + this.rentduration, + this.isInterested, + this.favouriteUsers, + this.interestedUsers, + this.totalInterestedUsers, + this.totalFavouriteUsers, + this.parameters, + this.latitude, + this.longitude, + this.threeDImage, + this.advertisment, + this.video, + this.assignedOutdoorFacility, + this.slugId, + this.allPropData, + this.titleimagehash}); + + final int? id; + final String? title; + final String? price; + final String? customerName; + final String? customerEmail; + final String? customerProfile; + final String? customerNumber; + final String? rentduration; + final Categorys? category; + final dynamic builtUpArea; + final dynamic plotArea; + final dynamic hectaArea; + final dynamic acre; + final dynamic houseType; + final dynamic furnished; + final UnitType? unitType; + final String? description; + final String? address; + final String? clientAddress; + String? properyType; + final String? titleImage; + final String? titleimagehash; + final String? postCreated; + final List? gallery; + final int? totalView; + final int? status; + final String? state; + final String? city; + final String? country; + final int? addedBy; + final bool? inquiry; + final bool? promoted; + final int? isFavourite; + final int? isInterested; + final List? favouriteUsers; + final List? interestedUsers; + final int? totalInterestedUsers; + final int? totalFavouriteUsers; + final List? parameters; + final List? assignedOutdoorFacility; + final String? latitude; + final String? longitude; + final String? threeDImage; + final String? video; + final dynamic advertisment; + final String? slugId; + final dynamic allPropData; + PropertyModel copyWith( + {int? id, + String? title, + String? price, + Categorys? category, + dynamic builtUpArea, + dynamic plotArea, + dynamic hectaArea, + dynamic acre, + dynamic houseType, + dynamic furnished, + UnitType? unitType, + String? description, + String? address, + String? clientAddress, + String? properyType, + String? titleImage, + String? postCreated, + List? gallery, + int? totalView, + int? status, + String? state, + String? city, + String? country, + int? addedBy, + bool? inquiry, + bool? promoted, + int? isFavourite, + int? isInterested, + List? favouriteUsers, + List? interestedUsers, + int? totalInterestedUsers, + int? totalFavouriteUsers, + List? parameters, + List? assignedOutdoorFacility, + String? latitude, + String? longitude, + String? threeDimage, + String? video, + dynamic advertisment, + String? rentduration, + String? titleImageHash}) => + PropertyModel( + id: id ?? this.id, + rentduration: rentduration ?? this.rentduration, + advertisment: advertisment ?? this.advertisment, + latitude: latitude ?? this.latitude, + longitude: longitude ?? this.longitude, + title: title ?? this.title, + price: price ?? this.price, + category: category ?? this.category, + builtUpArea: builtUpArea ?? this.builtUpArea, + plotArea: plotArea ?? this.plotArea, + hectaArea: hectaArea ?? this.hectaArea, + acre: acre ?? this.acre, + houseType: houseType ?? this.houseType, + furnished: furnished ?? this.furnished, + unitType: unitType ?? this.unitType, + description: description ?? this.description, + address: address ?? this.address, + clientAddress: clientAddress ?? this.clientAddress, + properyType: properyType ?? this.properyType, + titleImage: titleImage ?? this.titleImage, + postCreated: postCreated ?? this.postCreated, + gallery: gallery ?? this.gallery, + totalView: totalView ?? this.totalView, + status: status ?? this.status, + state: state ?? this.state, + city: city ?? this.city, + country: country ?? this.country, + addedBy: addedBy ?? this.addedBy, + inquiry: inquiry ?? this.inquiry, + promoted: promoted ?? this.promoted, + isFavourite: isFavourite ?? this.isFavourite, + isInterested: isInterested ?? this.isInterested, + favouriteUsers: favouriteUsers ?? this.favouriteUsers, + interestedUsers: interestedUsers ?? this.interestedUsers, + totalInterestedUsers: + totalInterestedUsers ?? this.totalInterestedUsers, + totalFavouriteUsers: totalFavouriteUsers ?? this.totalFavouriteUsers, + parameters: parameters ?? this.parameters, + threeDImage: threeDimage ?? threeDImage, + video: video ?? this.video, + assignedOutdoorFacility: + assignedOutdoorFacility ?? this.assignedOutdoorFacility, + titleimagehash: titleImageHash ?? titleimagehash); + + factory PropertyModel.fromMap(Map rawjson) { + try { + List list = + (rawjson['parameters'] as List).map((e) => e['image']).toList(); + HelperUtils.precacheSVG(List.from(list)); + } catch (e) {} + print(rawjson); + return PropertyModel( + id: rawjson["id"], + allPropData: rawjson, + slugId: rawjson['slug_id'], + rentduration: rawjson['rentduration'], + customerEmail: rawjson['email'], + customerProfile: rawjson['profile'], + customerNumber: rawjson['mobile'], + customerName: rawjson['customer_name'], + video: rawjson['video_link'], + threeDImage: rawjson['threeD_image'], + latitude: rawjson['latitude'].toString(), + longitude: rawjson["longitude"].toString(), + title: rawjson["title"].toString(), + price: rawjson["price"].toString(), + category: rawjson["category"] == null + ? null + : Categorys.fromMap(rawjson["category"]), + builtUpArea: rawjson["built_up_area"], + plotArea: rawjson["plot_area"], + hectaArea: rawjson["hecta_area"], + acre: rawjson["acre"], + houseType: rawjson["house_type"], + furnished: rawjson["furnished"], + advertisment: rawjson['advertisement'], + unitType: rawjson["unit_type"] == null + ? null + : UnitType.fromMap(rawjson["unit_type"]), + description: rawjson["description"], + address: rawjson["address"], + clientAddress: rawjson["client_address"], + properyType: rawjson["propery_type"].toString(), + titleImage: rawjson["title_image"], + postCreated: rawjson["post_created"], + gallery: List.from((rawjson["gallery"] as List) + .map((x) => Gallery.fromMap(x is String ? json.decode(x) : x))), + totalView: Adapter.forceInt((rawjson["total_view"] as dynamic)), + status: Adapter.forceInt(rawjson["status"]), + state: rawjson["state"], + city: rawjson["city"], + country: rawjson["country"], + addedBy: Adapter.forceInt((rawjson["added_by"] as dynamic)), + inquiry: rawjson["inquiry"], + promoted: rawjson["promoted"], + isFavourite: Adapter.forceInt(rawjson["is_favourite"]), + isInterested: Adapter.forceInt(rawjson["is_interested"]), + favouriteUsers: rawjson["favourite_users"] == null + ? null + : List.from(rawjson["favourite_users"].map((x) => x)), + interestedUsers: rawjson["interested_users"] == null + ? null + : List.from(rawjson["interested_users"].map((x) => x)), + totalInterestedUsers: + Adapter.forceInt(rawjson["total_interested_users"]), + totalFavouriteUsers: Adapter.forceInt(rawjson["total_favourite_users"]), + parameters: rawjson["parameters"] == null + ? [] + : List.from((rawjson["parameters"] as List).map((x) { + return Parameter.fromMap(x); + })), + assignedOutdoorFacility: rawjson["assign_facilities"] == null + ? [] + : List.from( + (rawjson["assign_facilities"] as List).map((x) { + return AssignedOutdoorFacility.fromJson(x); + })), + titleimagehash: rawjson['title_image_hash']); + } + + Map toMap() => { + "id": id, + 'allPropData': allPropData, + "rentduration": rentduration, + "mobile": customerNumber, + "email": customerEmail, + "customer_name": customerName, + "profile": customerProfile, + "threeD_image": threeDImage, + "title": title, + "latitude": latitude, + "longitude": longitude, + "advertisment": advertisment, + 'video_link': video, + "price": price, + "category": category?.toMap() ?? {}, + "built_up_area": builtUpArea, + "plot_area": plotArea, + "hecta_area": hectaArea, + "acre": acre, + "house_type": houseType, + "furnished": furnished, + "unit_type": unitType?.toMap() ?? {}, + "description": description, + "address": address, + "client_address": clientAddress, + "property_type": properyType, + "title_image": titleImage, + "post_created": postCreated, + "gallery": List.from(gallery?.map((x) => x) ?? []), + "total_view": totalView, + "status": status, + "state": state, + "city": city, + "country": country, + "added_by": addedBy, + "inquiry": inquiry, + "promoted": promoted, + "is_favourite": isFavourite, + "is_interested": isInterested, + "favourite_users": favouriteUsers == null + ? null + : List.from(favouriteUsers?.map((x) => x) ?? []), + "interested_users": interestedUsers == null + ? null + : List.from(interestedUsers?.map((x) => x) ?? []), + "total_interested_users": totalInterestedUsers, + "total_favourite_users": totalFavouriteUsers, + "assign_facilities": assignedOutdoorFacility == null + ? null + : List.from( + assignedOutdoorFacility?.map((e) => e.toJson()) ?? []), + "parameters": parameters == null + ? null + : List.from(parameters?.map((x) => x.toMap()) ?? []), + "title_image_hash": titleimagehash + }; + + @override + String toString() { + return 'PropertyModel(id: $id,rentduration:$rentduration , title: $title,assigned_facilities:[$assignedOutdoorFacility] advertisment:$advertisment, price: $price, category: $category,, builtUpArea: $builtUpArea, plotArea: $plotArea, hectaArea: $hectaArea, acre: $acre, houseType: $houseType, furnished: $furnished, unitType: $unitType, description: $description, address: $address, clientAddress: $clientAddress, properyType: $properyType, titleImage: $titleImage, title_image_hash: $titleimagehash, postCreated: $postCreated, gallery: $gallery, totalView: $totalView, status: $status, state: $state, city: $city, country: $country, addedBy: $addedBy, inquiry: $inquiry, promoted: $promoted, isFavourite: $isFavourite, isInterested: $isInterested, favouriteUsers: $favouriteUsers, interestedUsers: $interestedUsers, totalInterestedUsers: $totalInterestedUsers, totalFavouriteUsers: $totalFavouriteUsers, parameters: $parameters, latitude: $latitude, longitude: $longitude, threeD_image: $threeDImage, video: $video)'; + } +} + +class Categorys { + Categorys({ + this.id, + this.category, + this.image, + }); + + final int? id; + final String? category; + final String? image; + + Categorys copyWith({ + int? id, + String? category, + String? image, + }) => + Categorys( + id: id ?? this.id, + category: category ?? this.category, + image: image ?? this.image, + ); + + factory Categorys.fromJson(String str) => Categorys.fromMap(json.decode(str)); + + String toJson() => json.encode(toMap()); + + factory Categorys.fromMap(Map json) => Categorys( + id: json["id"], + category: json["category"], + image: json["image"], + ); + + Map toMap() => { + "id": id, + "category": category, + "image": image, + }; +} + +class Parameter { + Parameter({ + this.id, + this.name, + this.typeOfParameter, + this.typeValues, + this.image, + this.value, + }); + + final int? id; + final String? name; + final String? typeOfParameter; + final dynamic typeValues; + final String? image; + final dynamic value; + + Parameter copyWith({ + int? id, + String? name, + String? typeOfParameter, + dynamic typeValues, + String? image, + dynamic value, + }) => + Parameter( + id: id ?? this.id, + name: name ?? this.name, + typeOfParameter: typeOfParameter ?? this.typeOfParameter, + typeValues: typeValues ?? this.typeValues, + image: image ?? this.image, + value: value ?? this.value, + ); + + static dynamic ifListConvertToString(dynamic value) { + if (value is List) { + return value.join(","); + } + + return value; + } + + factory Parameter.fromMap(Map json) { + return Parameter( + id: json["id"], + name: json["name"], + typeOfParameter: json["type_of_parameter"], + typeValues: json["type_values"], + image: json["image"], + value: ifListConvertToString(json['value']), + ); + } + + Map toMap() => { + "id": id, + "name": name, + "type_of_parameter": typeOfParameter, + "type_values": typeValues, + "image": image, + "value": value, + }; + + @override + String toString() { + return 'Parameter(id: $id, name: $name, typeOfParameter: $typeOfParameter, typeValues: $typeValues, image: $image, value: $value)'; + } +} + +class UnitType { + UnitType({ + this.id, + this.measurement, + }); + + final int? id; + final String? measurement; + + UnitType copyWith({ + int? id, + String? measurement, + }) => + UnitType( + id: id ?? this.id, + measurement: measurement ?? this.measurement, + ); + + factory UnitType.fromJson(String str) => UnitType.fromMap(json.decode(str)); + + String toJson() => json.encode(toMap()); + + factory UnitType.fromMap(Map json) => UnitType( + id: json["id"], + measurement: json["measurement"], + ); + + Map toMap() => { + "id": id, + "measurement": measurement, + }; +} + +class Gallery { + final int id; + final String image; + final String imageUrl; + final bool? isVideo; + Gallery( + {required this.id, + required this.image, + required this.imageUrl, + this.isVideo}); + + Gallery copyWith({ + int? id, + String? image, + String? imageUrl, + }) { + return Gallery( + id: id ?? this.id, + image: image ?? this.image, + imageUrl: imageUrl ?? this.imageUrl, + ); + } + + Map toMap() { + return { + 'id': id, + 'image': image, + 'image_url': imageUrl, + }; + } + + factory Gallery.fromMap(Map map) { + return Gallery( + id: map['id'] as int, + image: map['image'] as String, + imageUrl: map['image_url'] ?? "", + ); + } + + String toJson() => json.encode(toMap()); + + factory Gallery.fromJson(String source) => + Gallery.fromMap(json.decode(source) as Map); + + @override + String toString() => 'Gallery(id: $id, image: $image, imageUrl: $imageUrl)'; + + @override + bool operator ==(covariant Gallery other) { + if (identical(this, other)) return true; + + return other.id == id && other.image == image && other.imageUrl == imageUrl; + } + + @override + int get hashCode => id.hashCode ^ image.hashCode ^ imageUrl.hashCode; +} + +class AssignedOutdoorFacility { + int? id; + int? propertyId; + int? facilityId; + int? distance; + String? image; + String? name; + String? createdAt; + String? updatedAt; + + AssignedOutdoorFacility( + {this.id, + this.propertyId, + this.facilityId, + this.distance, + this.createdAt, + this.name, + this.image, + this.updatedAt}); + + AssignedOutdoorFacility.fromJson(Map json) { + id = json['id']; + propertyId = Adapter.forceInt(json['property_id']); + facilityId = Adapter.forceInt(json['facility_id']); + distance = Adapter.forceInt(json['distance']); + createdAt = json['created_at']; + image = json['image']; + name = json['name']; + updatedAt = json['updated_at']; + } + + Map toJson() { + final Map data = Map(); + data['id'] = this.id; + data['property_id'] = this.propertyId; + data['facility_id'] = this.facilityId; + data['distance'] = this.distance; + data['created_at'] = this.createdAt; + data['updated_at'] = this.updatedAt; + data['image'] = image; + data['name'] = name; + return data; + } + + @override + String toString() { + return 'AssignedOutdoorFacility{id: $id, propertyId: $propertyId, facilityId: $facilityId, distance: $distance, image: $image, name: $name, createdAt: $createdAt, updatedAt: $updatedAt}'; + } +} diff --git a/lib/data/model/propery_filter_model.dart b/lib/data/model/propery_filter_model.dart new file mode 100644 index 0000000..ee1292f --- /dev/null +++ b/lib/data/model/propery_filter_model.dart @@ -0,0 +1,109 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'dart:convert'; + +class PropertyFilterModel { + final String propertyType; + final String maxPrice; + final String minPrice; + final String categoryId; + final String postedSince; + final String city; + final String state; + final String country; + PropertyFilterModel( + {required this.propertyType, + required this.maxPrice, + required this.minPrice, + required this.categoryId, + required this.postedSince, + required this.city, + required this.state, + required this.country}); + + PropertyFilterModel copyWith( + {String? propertyType, + String? maxPrice, + String? minPrice, + String? categoryId, + String? postedSince, + String? city, + String? state, + String? country}) { + return PropertyFilterModel( + propertyType: propertyType ?? this.propertyType, + maxPrice: maxPrice ?? this.maxPrice, + minPrice: minPrice ?? this.minPrice, + categoryId: categoryId ?? this.categoryId, + postedSince: postedSince ?? this.postedSince, + city: city ?? this.city, + state: state ?? this.state, + country: country ?? this.country); + } + + Map toMap() { + return { + 'property_type': propertyType, + 'max_price': maxPrice, + 'min_price': minPrice, + 'category_id': categoryId, + 'posted_since': postedSince, + "city": city, + "state": state, + "country": country + }; + } + + @override + String toString() { + return 'PropertyFilterModel(propertyType: $propertyType, maxPrice: $maxPrice, minPrice: $minPrice, categoryId: $categoryId, postedSince: $postedSince)'; + } + + factory PropertyFilterModel.createEmpty() { + return PropertyFilterModel( + propertyType: "", + maxPrice: "", + minPrice: "", + categoryId: "", + postedSince: "", + city: '', + country: '', + state: ''); + } + factory PropertyFilterModel.fromMap(Map map) { + return PropertyFilterModel( + city: map['city'].toString(), + state: map['state'].toString(), + country: map['country'].toString(), + propertyType: map['property_type'].toString(), + maxPrice: map['max_price'].toString(), + minPrice: map['min_price'].toString(), + categoryId: map['category_id'].toString(), + postedSince: map['posted_since'].toString(), + ); + } + + String toJson() => json.encode(toMap()); + + factory PropertyFilterModel.fromJson(String source) => + PropertyFilterModel.fromMap(json.decode(source) as Map); + + @override + bool operator ==(covariant PropertyFilterModel other) { + if (identical(this, other)) return true; + + return other.propertyType == propertyType && + other.maxPrice == maxPrice && + other.minPrice == minPrice && + other.categoryId == categoryId && + other.postedSince == postedSince; + } + + @override + int get hashCode { + return propertyType.hashCode ^ + maxPrice.hashCode ^ + minPrice.hashCode ^ + categoryId.hashCode ^ + postedSince.hashCode; + } +} diff --git a/lib/data/model/subscription_pacakage_model.dart b/lib/data/model/subscription_pacakage_model.dart new file mode 100644 index 0000000..7778b92 --- /dev/null +++ b/lib/data/model/subscription_pacakage_model.dart @@ -0,0 +1,91 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first + +// import 'package:ebroker/utils/helper_utils.dart'; + +class SubscriptionPackageModel { + int? id; + String? iosProductId; + String? name; + int? duration; + num? price; + int? status; + dynamic propertyLimit; + dynamic advertisementLimit; + String? createdAt; + String? updatedAt; + int? isActive; + int? usedLimitForProperty; + int? usedLimitForAdvertisement; + int? propertyStatus; + int? advertisementStatus; + String? startDate; + String? endDate; + int? remainingDays; + String? type; + SubscriptionPackageModel( + {this.id, + this.iosProductId, + this.name, + this.duration, + this.price, + this.status, + this.propertyLimit, + this.advertisementLimit, + this.createdAt, + this.updatedAt, + this.isActive, + this.usedLimitForProperty, + this.usedLimitForAdvertisement, + this.propertyStatus, + this.advertisementStatus, + this.startDate, + this.type, + this.endDate, + this.remainingDays}); + + SubscriptionPackageModel.fromJson(Map json) { + id = json['id']; + type = json['type']; + iosProductId = json['ios_product_id']; + name = json['name']; + duration = json['duration']; + price = json['price']; + status = json['status']; + propertyLimit = json['property_limit']; + advertisementLimit = json['advertisement_limit']; + createdAt = json['created_at']; + updatedAt = json['updated_at']; + isActive = json['is_active']; + usedLimitForProperty = json['used_limit_for_property']; + usedLimitForAdvertisement = json['used_limit_for_advertisement']; + propertyStatus = json['property_status']; + advertisementStatus = json['advertisement_status']; + startDate = json['start_date']; + endDate = json['end_date']; + remainingDays = json['remaining_days']; + } + + Map toJson() { + final Map data = new Map(); + data['id'] = id; + data['type'] = type; + data['ios_product_id'] = iosProductId; + data['name'] = name; + data['duration'] = duration; + data['price'] = price; + data['status'] = status; + data['property_limit'] = propertyLimit; + data['advertisement_limit'] = advertisementLimit; + data['created_at'] = createdAt; + data['updated_at'] = updatedAt; + data['is_active'] = isActive; + data['used_limit_for_property'] = usedLimitForProperty; + data['used_limit_for_advertisement'] = usedLimitForAdvertisement; + data['property_status'] = propertyStatus; + data['advertisement_status'] = advertisementStatus; + data['start_date'] = startDate; + data['end_date'] = endDate; + data['remaining_days'] = remainingDays; + return data; + } +} diff --git a/lib/data/model/subscription_package_limit.dart b/lib/data/model/subscription_package_limit.dart new file mode 100644 index 0000000..22a24cc --- /dev/null +++ b/lib/data/model/subscription_package_limit.dart @@ -0,0 +1,42 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +// To parse this JSON data, do +// +// final subcriptionPackageLimit = subcriptionPackageLimitFromMap(jsonString); + +class SubcriptionPackageLimit { + final bool error; + final String message; + final bool hasPackage; + final bool isPremium; + + const SubcriptionPackageLimit({ + required this.error, + required this.isPremium, + required this.message, + required this.hasPackage, + }); + + Map toMap() { + return { + 'error': error, + 'message': message, + 'package': hasPackage, + 'isPremium': isPremium + }; + } + + factory SubcriptionPackageLimit.fromMap(Map map) { + return SubcriptionPackageLimit( + error: map['error'] as bool, + message: map['message'] as String, + hasPackage: map['package'] as bool, + isPremium: map['is_premium'] as bool, + ); + } +} + +//*{ +// "error": false, +// "message": "User able to upload", +// "package": true +// } diff --git a/lib/data/model/system_settings_model.dart b/lib/data/model/system_settings_model.dart new file mode 100644 index 0000000..6c057e1 --- /dev/null +++ b/lib/data/model/system_settings_model.dart @@ -0,0 +1,49 @@ +enum SystemSetting { + maintenanceMode, + currencySymball, + subscription, + privacyPolicy, + termsConditions, + contactUs, + language, + defaultLanguage, + forceUpdate, + androidVersion, + numberWithSuffix, + iosVersion, + demoMode +} + + + + + + + + + + + + + + + + + + + + + /// we made this method because from our api all data comes in {'type':"",'data':"demo data"} this formate so we have list of these data and instead of create different methods and parse in it we have made enum and checking where condition in list + // T getSetting(SystemSetting setting) { + // if (setting == SystemSetting.subscription) { + // if (subscription == true) { + // return package as T; + // } else { + // return null as T; + // } + // } + // return data! + // .where((Data element) => + // element.type == Constant.systemSettingKey[setting]) + // .toList()[0] as T; + // } \ No newline at end of file diff --git a/lib/data/model/transaction_model.dart b/lib/data/model/transaction_model.dart new file mode 100644 index 0000000..7e250e4 --- /dev/null +++ b/lib/data/model/transaction_model.dart @@ -0,0 +1,50 @@ +import 'package:ebroker/utils/Extensions/lib/adaptive_type.dart'; + +class TransactionModel { + int? id; + String? transactionId; + dynamic amount; + String? paymentGateway; + int? packageId; + int? customerId; + dynamic status; + String? createdAt; + String? updatedAt; + + TransactionModel( + {this.id, + this.transactionId, + this.amount, + this.paymentGateway, + this.packageId, + this.customerId, + this.status, + this.createdAt, + this.updatedAt}); + + TransactionModel.fromMap(Map json) { + id = json['id']; + transactionId = json['transaction_id']; + amount = (json['amount']); + paymentGateway = json['payment_gateway']; + packageId = Adapter.forceInt(json['package_id']); + customerId = Adapter.forceInt(json['customer_id']); + status = json['status']; + createdAt = json['created_at']; + updatedAt = json['updated_at']; + } + + Map toMap() { + final Map data = {}; + data['id'] = id; + data['transaction_id'] = transactionId; + data['amount'] = amount; + data['payment_gateway'] = paymentGateway; + data['package_id'] = packageId; + data['customer_id'] = customerId; + data['status'] = status; + data['created_at'] = createdAt; + data['updated_at'] = updatedAt; + return data; + } +} diff --git a/lib/data/model/user_model.dart b/lib/data/model/user_model.dart new file mode 100644 index 0000000..fdeecaf --- /dev/null +++ b/lib/data/model/user_model.dart @@ -0,0 +1,86 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:ebroker/utils/Extensions/lib/adaptive_type.dart'; + +class UserModel { + String? address; + String? createdAt; + int? customertotalpost; + String? email; + String? fcmId; + String? firebaseId; + int? id; + int? isActive; + bool? isProfileCompleted; + String? logintype; + String? mobile; + String? name; + int? notification; + String? profile; + String? token; + String? updatedAt; + + UserModel( + {this.address, + this.createdAt, + this.customertotalpost, + this.email, + this.fcmId, + this.firebaseId, + this.id, + this.isActive, + this.isProfileCompleted, + this.logintype, + this.mobile, + this.name, + this.notification, + this.profile, + this.token, + this.updatedAt}); + + UserModel.fromJson(Map json) { + address = json['address']; + createdAt = json['created_at']; + customertotalpost = Adapter.forceInt(json['customertotalpost']); + email = json['email']; + fcmId = json['fcm_id']; + firebaseId = json['firebase_id']; + id = json['id']; + isActive = Adapter.forceInt(json['isActive']); + isProfileCompleted = json['isProfileCompleted']; + logintype = json['logintype']; + mobile = json['mobile']; + name = json['name']; + notification = (json['notification'] is int) + ? json['notification'] + : int.parse((json['notification'] ?? "0")); + profile = json['profile']; + token = json['token']; + updatedAt = json['updated_at']; + } + + Map toJson() { + final Map data = {}; + data['address'] = address; + data['created_at'] = createdAt; + data['customertotalpost'] = customertotalpost; + data['email'] = email; + data['fcm_id'] = fcmId; + data['firebase_id'] = firebaseId; + data['id'] = id; + data['isActive'] = isActive; + data['isProfileCompleted'] = isProfileCompleted; + data['logintype'] = logintype; + data['mobile'] = mobile; + data['name'] = name; + data['notification'] = notification; + data['profile'] = profile; + data['token'] = token; + data['updated_at'] = updatedAt; + return data; + } + + @override + String toString() { + return 'UserModel(address: $address, createdAt: $createdAt, customertotalpost: $customertotalpost, email: $email, fcmId: $fcmId, firebaseId: $firebaseId, id: $id, isActive: $isActive, isProfileCompleted: $isProfileCompleted, logintype: $logintype, mobile: $mobile, name: $name, notification: $notification, profile: $profile, token: $token, updatedAt: $updatedAt)'; + } +} diff --git a/lib/exports/main_export.dart b/lib/exports/main_export.dart new file mode 100644 index 0000000..5c17c33 --- /dev/null +++ b/lib/exports/main_export.dart @@ -0,0 +1,64 @@ +export 'package:device_preview/device_preview.dart'; +export 'package:ebroker/utils/payment/lib/list_gatways.dart'; +export 'package:flutter_bloc/flutter_bloc.dart'; +export 'package:flutter_localizations/flutter_localizations.dart'; + +export '../Ui/screens/chat/chatAudio/globals.dart'; +export '../app/app.dart'; +export '../app/app_localization.dart'; +export '../app/app_theme.dart'; +export '../app/routes.dart'; +export '../data/cubits/Report/fetch_property_report_reason_list.dart'; +export '../data/cubits/Utility/google_place_autocomplate_cubit.dart'; +export '../data/cubits/Utility/house_type_cubit.dart'; +export '../data/cubits/Utility/like_properties.dart'; +export '../data/cubits/Utility/proeprty_edit_global.dart'; +export '../data/cubits/auth/auth_cubit.dart'; +export '../data/cubits/auth/auth_state_cubit.dart'; +export '../data/cubits/auth/login_cubit.dart'; +export '../data/cubits/auth/send_otp_cubit.dart'; +export '../data/cubits/auth/verify_otp_cubit.dart'; +export '../data/cubits/category/fetch_category_cubit.dart'; +export '../data/cubits/category/fetch_cities_category.dart'; +export '../data/cubits/chatCubits/get_chat_users.dart'; +export '../data/cubits/company_cubit.dart'; +export '../data/cubits/enquiry/store_enqury_id.dart'; +export '../data/cubits/favorite/add_to_favorite_cubit.dart'; +export '../data/cubits/favorite/fetch_favorites_cubit.dart'; +export '../data/cubits/favorite/remove_favoriteubit.dart'; +export '../data/cubits/fetch_articles_cubit.dart'; +export '../data/cubits/fetch_notifications_cubit.dart'; +export '../data/cubits/outdoorfacility/fetch_outdoor_facility_list.dart'; +export '../data/cubits/profile_setting_cubit.dart'; +export '../data/cubits/property/create_property_cubit.dart'; +export '../data/cubits/property/favorite_id_properties.dart'; +export '../data/cubits/property/fetch_home_properties_cubit.dart'; +export '../data/cubits/property/fetch_most_liked_properties.dart'; +export '../data/cubits/property/fetch_most_viewed_properties_cubit.dart'; +export '../data/cubits/property/fetch_my_properties_cubit.dart'; +export '../data/cubits/property/fetch_nearby_property_cubit.dart'; +export '../data/cubits/property/fetch_promoted_properties_cubit.dart'; +export '../data/cubits/property/fetch_property_from_category_cubit.dart'; +export '../data/cubits/property/fetch_recent_properties.dart'; +export '../data/cubits/property/fetch_top_rated_properties_cubit.dart'; +export '../data/cubits/property/property_cubit.dart'; +export '../data/cubits/property/search_property_cubit.dart'; +export '../data/cubits/property/set_property_view_cubit.dart'; +export '../data/cubits/property/top_viewed_property_cubit.dart'; +export '../data/cubits/slider_cubit.dart'; +export '../data/cubits/subscription/fetch_subscription_packages_cubit.dart'; +export '../data/cubits/subscription/get_subsctiption_package_limits_cubit.dart'; +export '../data/cubits/system/app_theme_cubit.dart'; +export '../data/cubits/system/delete_account_cubit.dart'; +export '../data/cubits/system/fetch_language_cubit.dart'; +export '../data/cubits/system/fetch_system_settings_cubit.dart'; +export '../data/cubits/system/get_api_keys_cubit.dart'; +export '../data/cubits/system/language_cubit.dart'; +export '../data/cubits/system/notification_cubit.dart'; +export '../data/cubits/system/user_details.dart'; +export '../settings.dart'; +export '../utils/Notification/awsomeNotification.dart'; +export '../utils/Notification/notification_service.dart'; +export '../utils/constant.dart'; +export '../utils/deeplinkManager.dart'; +export '../utils/hive_utils.dart'; diff --git a/lib/firebase_options.dart b/lib/firebase_options.dart new file mode 100644 index 0000000..bca2fc4 --- /dev/null +++ b/lib/firebase_options.dart @@ -0,0 +1,78 @@ +// File generated by FlutterFire CLI. +// ignore_for_file: lines_longer_than_80_chars, avoid_classes_with_only_static_members +import 'package:firebase_core/firebase_core.dart' show FirebaseOptions; +import 'package:flutter/foundation.dart' + show defaultTargetPlatform, kIsWeb, TargetPlatform; + +/// Default [FirebaseOptions] for use with your Firebase apps. +/// +/// Example: +/// ```dart +/// import 'firebase_options.dart'; +/// // ... +/// await Firebase.initializeApp( +/// options: DefaultFirebaseOptions.currentPlatform, +/// ); +/// ``` +class DefaultFirebaseOptions { + static FirebaseOptions get currentPlatform { + if (kIsWeb) { + return web; + } + switch (defaultTargetPlatform) { + case TargetPlatform.android: + return android; + case TargetPlatform.iOS: + return ios; + case TargetPlatform.macOS: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for macos - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.windows: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for windows - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.linux: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for linux - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + default: + throw UnsupportedError( + 'DefaultFirebaseOptions are not supported for this platform.', + ); + } + } + + static const FirebaseOptions web = FirebaseOptions( + apiKey: 'AIzaSyAP4lTOZVNyMOo18MYObKOq9W9Ewj-M-6A', + appId: '1:981964114588:web:a618051aeb014542abfb59', + messagingSenderId: '981964114588', + projectId: 'rumahjo123-28a54', + authDomain: 'rumahjo123-28a54.firebaseapp.com', + storageBucket: 'rumahjo123-28a54.appspot.com', + measurementId: 'G-BB0WSX6E1D', + ); + + static const FirebaseOptions android = FirebaseOptions( + apiKey: 'AIzaSyBVM2DvCSmwfkwydzfxVgr5IIQyKdSiGx0', + appId: '1:981964114588:android:bb609c3b3d377c07abfb59', + messagingSenderId: '981964114588', + projectId: 'rumahjo123-28a54', + storageBucket: 'rumahjo123-28a54.appspot.com', + ); + + static const FirebaseOptions ios = FirebaseOptions( + apiKey: 'AIzaSyAc9oMfPDPriUh37lbTdVc2xXV_TLFWgSY', + appId: '1:981964114588:ios:6bbab471426bea35abfb59', + messagingSenderId: '981964114588', + projectId: 'rumahjo123-28a54', + storageBucket: 'rumahjo123-28a54.appspot.com', + androidClientId: '981964114588-uh3jjk48ug414f130uq44860qsdd5p0s.apps.googleusercontent.com', + iosClientId: '981964114588-lgetp58i4h4q640vk9jh563ss69vcf0j.apps.googleusercontent.com', + iosBundleId: 'com.ebroker.wrteam', + ); + +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..d603224 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,44 @@ +import 'package:ebroker/app/register_cubits.dart'; +import 'package:flutter/material.dart'; + +import 'Ui/screens/ChatNew/MessageTypes/registerar.dart'; +import 'exports/main_export.dart'; + +///////////////// +////V-1.1.3///// +/////////////// + +/// + +void main() async { + await getAppSettings(); + initApp(); +} + +class EntryPoint extends StatefulWidget { + const EntryPoint({ + Key? key, + }) : super(key: key); + @override + EntryPointState createState() => EntryPointState(); +} + +class EntryPointState extends State { + @override + void initState() { + super.initState(); + ChatMessageHandler.handle(); + ChatGlobals.init(); + } + + @override + Widget build(BuildContext context) { + return MultiBlocProvider( + providers: [ + ...RegisterCubits().register(), + ], + child: Builder(builder: (BuildContext context) { + return const App(); + })); + } +} diff --git a/lib/sandBox/language.dart b/lib/sandBox/language.dart new file mode 100644 index 0000000..a23ad81 --- /dev/null +++ b/lib/sandBox/language.dart @@ -0,0 +1,360 @@ +// // ignore_for_file: public_member_api_docs, sort_constructors_first +// import 'package:flutter/material.dart'; +// import 'package:flutter/rendering.dart'; + +// import 'package:ebroker/utils/uiUtils.dart'; +// import 'package:shimmer/shimmer.dart'; + +// class MyLang { +// static BuildContext? context; + +// static demoText() { +// return UiUtils.getTranslatedLabel(context!, "getCodeBtnLbl"); +// } +// } + +// class DottedShimmerPainter extends CustomPainter { +// final Gradient gradient; +// final double spacing; + +// DottedShimmerPainter({required this.gradient, required this.spacing}); + +// @override +// void paint(Canvas canvas, Size size) { +// final paint = Paint() +// ..style = PaintingStyle.fill +// ..style = PaintingStyle.fill +// ..strokeWidth = 2; + +// final dots = List.generate( +// (size.width / spacing).floor() + 1, +// (int index) => Offset(index * spacing, size.height / 2), +// ); +// } + +// @override +// bool shouldRepaint(CustomPainter oldDelegate) => true; +// } + +// class DemoRendererr extends RenderProxyBox { +// Gradient _gradient; +// double _percent; +// @override +// bool get alwaysNeedsCompositing => child != null; + +// set percent(double newValue) { +// if (newValue == _percent) { +// return; +// } +// _percent = newValue; +// markNeedsPaint(); +// } + +// set gradient(Gradient newValue) { +// if (newValue == _gradient) { +// return; +// } +// _gradient = newValue; +// markNeedsPaint(); +// } + +// DemoRendererr( +// this._gradient, +// this._percent, +// ); + +// @override +// ShaderMaskLayer? get layer => super.layer as ShaderMaskLayer?; + +// @override +// void paint(PaintingContext context, Offset offset) { +// // final painter = DottedShimmerPainter( + +// // spacing: 3, +// // ); +// // painter.paint(context.canvas, size); +// } +// } + +// // class DottedShimmer extends StatelessWidget { +// // final Color color; +// // final double spacing; + +// // DottedShimmer({this.color = Colors.white, this.spacing = 10}); + +// // @override +// // Widget build(BuildContext context) { +// // // return RenderProxyBox( + +// // // child: Container(), +// // // onPaint: (context, offset) { +// // // final painter = DottedShimmerPainter( +// // // color: color, +// // // spacing: spacing, +// // // ); +// // // final painterSize = painter.paint(context, offset); +// // // return +// // // }, +// // // ); +// // } +// // } + +// class MyShimmer extends SingleChildRenderObjectWidget { +// final double percent; +// final Gradient gradient; + +// const MyShimmer({ +// Widget? child, +// required this.percent, +// required this.gradient, +// }) : super(child: child); + +// @override +// DemoRendererr createRenderObject(BuildContext context) { +// return DemoRendererr(gradient, percent); +// } + +// @override +// updateRenderObject(context, DemoRendererr obj) {} +// } + +// /// +// /// * author: hunghd +// /// * email: hunghd.yb@gmail.com +// /// +// /// A package provides an easy way to add shimmer effect to Flutter application +// /// + +// @immutable +// class Shimmer extends StatefulWidget { +// final Widget child; +// final Duration period; +// final ShimmerDirection direction; +// final Gradient gradient; +// final int loop; +// final bool enabled; + +// const Shimmer({ +// Key? key, +// required this.child, +// required this.gradient, +// this.direction = ShimmerDirection.ltr, +// this.period = const Duration(milliseconds: 1500), +// this.loop = 0, +// this.enabled = true, +// }) : super(key: key); + +// /// +// /// A convenient constructor provides an easy and convenient way to create a +// /// [Shimmer] which [gradient] is [LinearGradient] made up of `baseColor` and +// /// `highlightColor`. +// /// +// Shimmer.fromColors({ +// Key? key, +// required this.child, +// required Color baseColor, +// required Color highlightColor, +// this.period = const Duration(milliseconds: 1500), +// this.direction = ShimmerDirection.ltr, +// this.loop = 0, +// this.enabled = true, +// }) : gradient = LinearGradient( +// begin: Alignment.topLeft, +// end: Alignment.centerRight, +// colors: [ +// baseColor, +// baseColor, +// highlightColor, +// baseColor, +// baseColor +// ], +// stops: const [ +// 0.0, +// 0.35, +// 0.5, +// 0.65, +// 1.0 +// ]), +// super(key: key); + +// @override +// _ShimmerState createState() => _ShimmerState(); + +// @override +// void debugFillProperties(DiagnosticPropertiesBuilder properties) { +// super.debugFillProperties(properties); +// properties.add(DiagnosticsProperty('gradient', gradient, +// defaultValue: null)); +// properties.add(EnumProperty('direction', direction)); +// properties.add( +// DiagnosticsProperty('period', period, defaultValue: null)); +// properties +// .add(DiagnosticsProperty('enabled', enabled, defaultValue: null)); +// properties.add(DiagnosticsProperty('loop', loop, defaultValue: 0)); +// } +// } + +// class _ShimmerState extends State with SingleTickerProviderStateMixin { +// late AnimationController _controller; +// int _count = 0; + +// @override +// void initState() { +// super.initState(); +// _controller = AnimationController(vsync: this, duration: widget.period) +// ..addStatusListener((AnimationStatus status) { +// if (status != AnimationStatus.completed) { +// return; +// } +// _count++; +// if (widget.loop <= 0) { +// _controller.repeat(); +// } else if (_count < widget.loop) { +// _controller.forward(from: 0.0); +// } +// }); +// if (widget.enabled) { +// _controller.forward(); +// } +// } + +// @override +// void didUpdateWidget(Shimmer oldWidget) { +// if (widget.enabled) { +// _controller.forward(); +// } else { +// _controller.stop(); +// } +// super.didUpdateWidget(oldWidget); +// } + +// @override +// Widget build(BuildContext context) { +// return AnimatedBuilder( +// animation: _controller, +// child: widget.child, +// builder: (BuildContext context, Widget? child) => _Shimmer( +// direction: widget.direction, +// gradient: widget.gradient, +// percent: _controller.value, +// child: child, +// ), +// ); +// } + +// @override +// void dispose() { +// _controller.dispose(); +// super.dispose(); +// } +// } + +// @immutable +// class _Shimmer extends SingleChildRenderObjectWidget { +// final double percent; +// final ShimmerDirection direction; +// final Gradient gradient; + +// const _Shimmer({ +// Widget? child, +// required this.percent, +// required this.direction, +// required this.gradient, +// }) : super(child: child); + +// @override +// _ShimmerFilter createRenderObject(BuildContext context) { +// return _ShimmerFilter(percent, direction, gradient); +// } + +// @override +// void updateRenderObject(BuildContext context, _ShimmerFilter shimmer) { +// shimmer.percent = percent; +// shimmer.gradient = gradient; +// shimmer.direction = direction; +// } +// } + +// class _ShimmerFilter extends RenderProxyBox { +// ShimmerDirection _direction; +// Gradient _gradient; +// double _percent; + +// _ShimmerFilter(this._percent, this._direction, this._gradient); + +// @override +// ShaderMaskLayer? get layer => super.layer as ShaderMaskLayer?; + +// @override +// bool get alwaysNeedsCompositing => child != null; + +// set percent(double newValue) { +// if (newValue == _percent) { +// return; +// } +// _percent = newValue; +// markNeedsPaint(); +// } + +// set gradient(Gradient newValue) { +// if (newValue == _gradient) { +// return; +// } +// _gradient = newValue; +// markNeedsPaint(); +// } + +// set direction(ShimmerDirection newDirection) { +// if (newDirection == _direction) { +// return; +// } +// _direction = newDirection; +// markNeedsLayout(); +// } + +// @override +// void paint(PaintingContext context, Offset offset) { +// if (child != null) { +// assert(needsCompositing); + +// final double width = child!.size.width; +// final double height = child!.size.height; +// Rect rect; +// double dx, dy; +// if (_direction == ShimmerDirection.rtl) { +// dx = _offset(width, -width, _percent); +// dy = 0.0; +// rect = Rect.fromLTWH(dx - width, dy, 3 * width, height); +// } else if (_direction == ShimmerDirection.ttb) { +// dx = 0.0; +// dy = _offset(-height, height, _percent); +// rect = Rect.fromLTWH(dx, dy - height, width, 3 * height); +// } else if (_direction == ShimmerDirection.btt) { +// dx = 0.0; +// dy = _offset(height, -height, _percent); +// rect = Rect.fromLTWH(dx, dy - height, width, 3 * height); +// } else { +// dx = _offset(-width, width, _percent); +// dy = 0.0; +// rect = Rect.fromLTWH(dx - width, dy, 3 * width, height); +// } + +// var dottedShimmerPainter = +// DottedShimmerPainter(gradient: _gradient, spacing: 4); +// dottedShimmerPainter.paint(context.canvas, size); +// // layer ??= ShaderMaskLayer(); +// // layer! +// // ..shader = _gradient.createShader(rect) +// // ..maskRect = offset & size +// // ..blendMode = BlendMode.srcIn; + +// // context.pushLayer(layer!, super.paint, offset); +// } else { +// layer = null; +// } +// } + +// double _offset(double start, double end, double percent) { +// return start + (end - start) * percent; +// } +// } diff --git a/lib/sandBox/language_overlay_changer.dart b/lib/sandBox/language_overlay_changer.dart new file mode 100644 index 0000000..5da8019 --- /dev/null +++ b/lib/sandBox/language_overlay_changer.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/scheduler.dart'; + +class LanguageOverlay { + Future addTool(context) async { + OverlayState? overlayState = Overlay.of(context); + OverlayEntry overlayEntry; + overlayEntry = OverlayEntry(builder: (context) { + return const LanguageOverlayChanger(); + }); + SchedulerBinding.instance.addPostFrameCallback((timeStamp) { + overlayState.insert(overlayEntry); + }); + // await Future.delayed(duration ?? const Duration(seconds: 3)); + + // overlayEntry.remove(); + // onMessageClosed?.call(); + } +} + +class LanguageOverlayChanger extends StatefulWidget { + const LanguageOverlayChanger({super.key}); + + @override + State createState() => LanguageOverlayChangerState(); +} + +class LanguageOverlayChangerState extends State { + double x = 50; + double y = 50; + + @override + Widget build(BuildContext context) { + return Positioned( + top: y, + left: x, + child: Material( + textStyle: const TextStyle(decoration: TextDecoration.none), + child: Draggable( + onDragUpdate: (d) { + x = d.globalPosition.dx; + y = d.globalPosition.dy; + setState(() {}); + }, + feedbackOffset: const Offset(-1, 0), + feedback: Container(), + child: InkWell( + onTap: () { + // if (context.read().currentLanguageCode() == "en") { + // context.read().changeLanguage("ar"); + // } else { + // context.read().changeLanguage("en"); + // } + }, + child: Container( + height: 50, + color: const Color.fromARGB(255, 85, 40, 65), + child: const Center( + child: Padding( + padding: EdgeInsets.all(8.0), + child: Text( + "Change language", + style: TextStyle(color: Colors.white), + ), + )), + ), + ), + ), + ), + ); + } +} diff --git a/lib/sandBox/playground.dart b/lib/sandBox/playground.dart new file mode 100644 index 0000000..d812cc0 --- /dev/null +++ b/lib/sandBox/playground.dart @@ -0,0 +1,77 @@ +// ignore_for_file: public_member_api_docs, sort_constructors_first +import 'package:flutter/material.dart'; + +import '../Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; + +class PlayGround extends StatefulWidget { + const PlayGround({super.key}); + + static Route route(RouteSettings routeSettings) { + return BlurredRouter( + builder: (_) => const PlayGround(), + ); + } + + @override + State createState() => _PlayGroundState(); +} + +class _PlayGroundState extends State { + // Completer completer = Completer(); + @override + Widget build(BuildContext context) { + return SafeArea( + child: Scaffold( + body: Center( + child: STFLW(), + ), + ), + ); + } +} + +class STFLW extends StatefulWidget { + const STFLW({super.key}); + + @override + State createState() => _STFLWState(); +} + +class _STFLWState extends State { + @override + Widget build(BuildContext context) { + return ClipPath( + clipper: Hexagon(), + child: Container( + width: 200, + height: 200, + color: Colors.blue, + ), + ); + } +} + +class Hexagon extends CustomClipper { + @override + Path getClip(Size size) { + Path path = Path(); + double spaceFactor = size.width * 00.15; + path.moveTo(spaceFactor, 0); + + // Timer.periodic(Duration(seconds: 2), (timer) { + // print("HEHE"); + // path.lineTo(size.width / (size.width / Random().nextInt(50)), + // size.height / (size.height / Random().nextInt(50))); + // }); + + path.close(); + // path.lineTo(, y); + + return path; + } + + @override + bool shouldReclip(covariant CustomClipper oldClipper) { + return true; + } +} diff --git a/lib/sandBox/section.dart b/lib/sandBox/section.dart new file mode 100644 index 0000000..6fb23e9 --- /dev/null +++ b/lib/sandBox/section.dart @@ -0,0 +1,54 @@ +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; + +import '../Ui/screens/proprties/viewAll.dart'; + +enum SectionStyle { BigCard, HorizontalCard, GradientCard, Grid } + +abstract class Section { + late BuildContext context; + abstract T s; + abstract bool seeAll; + String get sectionTitle; + abstract StateMap stateMap; + abstract SectionStyle style; + + Widget render(); +} + +class FeaturedSection extends Section { + @override + Widget render() { + return Container(); + } + + @override + String get sectionTitle => "h".translate(context); + + @override + bool seeAll = true; + + @override + StateMap stateMap = StateMap(); + + @override + SectionStyle style = SectionStyle.BigCard; + + @override + int s = 4; +} + +class RenderSection extends StatefulWidget { + final Section section; + const RenderSection({super.key, required this.section}); + + @override + State createState() => _RenderSectionState(); +} + +class _RenderSectionState extends State { + @override + Widget build(BuildContext context) { + return const Placeholder(); + } +} diff --git a/lib/sandBox/theme_overlay_toggler.dart b/lib/sandBox/theme_overlay_toggler.dart new file mode 100644 index 0000000..7a0867c --- /dev/null +++ b/lib/sandBox/theme_overlay_toggler.dart @@ -0,0 +1,67 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/scheduler.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../data/cubits/system/app_theme_cubit.dart'; + +class ThemeToggler { + void addTool(context) async { + OverlayState? overlayState = Overlay.of(context); + OverlayEntry overlayEntry; + overlayEntry = OverlayEntry(builder: (context) { + return const ThemeOverlayToggler(); + }); + SchedulerBinding.instance.addPostFrameCallback((timeStamp) { + overlayState.insert(overlayEntry); + }); + } +} + +class ThemeOverlayToggler extends StatefulWidget { + const ThemeOverlayToggler({super.key}); + + @override + State createState() => ThemeOverlayTogglerState(); +} + +class ThemeOverlayTogglerState extends State { + double x = 50; + double y = 50; + + @override + Widget build(BuildContext context) { + return Positioned( + top: y, + left: x, + child: Material( + textStyle: const TextStyle(decoration: TextDecoration.none), + child: Draggable( + onDragUpdate: (d) { + x = d.globalPosition.dx; + y = d.globalPosition.dy; + setState(() {}); + }, + feedbackOffset: const Offset(-1, 0), + feedback: Container(), + child: InkWell( + onTap: () { + context.read().toggleTheme(); + }, + child: Container( + height: 50, + color: const Color.fromARGB(255, 85, 40, 65), + child: const Center( + child: Padding( + padding: EdgeInsets.all(8.0), + child: Text( + "Change Theme", + style: TextStyle(color: Colors.white), + ), + )), + ), + ), + ), + ), + ); + } +} diff --git a/lib/settings.dart b/lib/settings.dart new file mode 100644 index 0000000..63ceb5e --- /dev/null +++ b/lib/settings.dart @@ -0,0 +1,138 @@ +import 'package:ebroker/utils/helper_utils.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; + +///eBroker configuration file +/// Configure your app from here +/// Most of basic configuration will be from here +/// For theme colors go to [lib/Ui/Theme/theme.dart] +class AppSettings { + ///Basic Settings + static const String applicationName = 'Rumahjo'; + static const String androidPackageName = 'com.rumahjo.vds'; + static const String iOSAppId = '12345678'; + static const String playstoreURLAndroid = + "https://play.google.com/store/apps/details?id=$androidPackageName"; + static const String appstoreURLios = "https://apps.apple.com/app/$iOSAppId"; + static const String shareAppText = "Share this App"; + + ///API Setting + static const String hostUrl = "https://backoffice.rumahjo.com/"; + static const String apiUrl = "https://app.rumahjo.com/"; + + static const int apiDataLoadLimit = 20; + static const int maxCategoryShowLengthInHomeScreen = 5; + static String appNumber = ''; + + static final String baseUrl = + "${HelperUtils.checkHost(hostUrl)}api/"; //Don't change this + + static const int hiddenAPIProcessDelay = + 1; /* this is for load data when open app if old data is already available so +it will call API in background without showing the process and when data available it will replace it with new data */ + + ///Set type here + static const DeepLinkType deepLinkingType = DeepLinkType.native; + + ///Native deep link + static const String shareNavigationWebUrl = "YOUR WEB VERSION URL"; + + /// + + //TODO: Deprecated [We do not recommend using this as this will stop running in few time] + /// You will find this prefix from firebase console in dynamic link section + static const String deepLinkPrefix = + "https://rumahjo.page.link"; //demo.page.link + ///set anything you want + static const String deepLinkName = "rumahjo"; //deeplink demo.com + ///!TODO: End deprecated + + static const MapType googleMapType = + MapType.normal; //none , normal , satellite , terrain , hybrid + + ///Firebase authentication OTP timer. + static const int otpResendSecond = 60 * 2; + static const int otpTimeOutSecond = 60 * 2; + + ///This code will show on login screen [Note: don't add + symbol] + static const String defaultCountryCode = "62"; + static const bool disableCountrySelection = + false; /* Default [False], this will hide + Country number choose option in login screen. if your App is for only one country this might be helpful*/ + + static List sections = [ + HomeScreenSections.Search, + HomeScreenSections.Slider, + HomeScreenSections.Category, + HomeScreenSections.NearbyProperties, + HomeScreenSections.FeaturedProperties, + HomeScreenSections.PersonalizedFeed, + HomeScreenSections.project, + HomeScreenSections.RecentlyAdded, + HomeScreenSections.MostLikedProperties, + HomeScreenSections.MostViewed, + HomeScreenSections.PopularCities + ]; //[Note: We Recommend default setting you can make arrangement by your choice or you can hide any section if you do not want] + + ///Lottie animation + ///Put your loading json file in [lib/assets/lottie/] folder + static const String progressLottieFile = "loading.json"; + static const String progressLottieFileWhite = + "loading_white.json"; //When there is dark background and you want to show progress so it will be used + + static const String maintenanceModeLottieFile = "maintenancemode.json"; + + static const bool useLottieProgress = + true; //if you don't want to use lottie progress then set it to false' + + ///Other settings + static const String notificationChannel = "basic_channel"; // + static int uploadImageQuality = 50; //0 to 100th + static const Set additionalRTLlanguages = + {}; //Add language code in bracket {"ab","bc"} + +//Advance settings +//This file is located in assets/riveAnimations + static const String riveAnimationFile = "rive_animation.riv"; + + static const Map riveAnimationConfigurations = { + "add_button": { + "artboard_name": "Add", + "state_machine": "click", + "boolean_name": "isReverse", + "boolean_initial_value": true, + "add_button_shape_name": "shape", + }, + }; + + //// Don't change these + //// Payment gatway API keys + ///Here is for only reference you have to change it from panel + static String enabledPaymentGatway = ""; + static String razorpayKey = ""; + static String paystackKey = ""; // public key + static String paystackCurrency = ""; + static String paypalClientId = ""; + static String paypalServerKey = ""; //secrete + static bool isSandBoxMode = true; //testing mode + static String paypalCancelURL = ""; + static String paypalReturnURL = ""; + static String stripeCurrency = ""; + static String stripePublishableKey = ""; + static String stripeSecrateKey = ""; +} + +enum HomeScreenSections { + Search, + Slider, + PersonalizedFeed, + NearbyProperties, + FeaturedProperties, + RecentlyAdded, + MostLikedProperties, + PopularCities, + MostViewed, + Category, + project +} + +enum DeepLinkType { firebase, native } diff --git a/lib/utils/.DS_Store b/lib/utils/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0ebceed8bee5afac0926192f8eb8d541266afd22 GIT binary patch literal 12292 zcmeHN-D@0G6u*@|qTdbh6*{^QaY-ZNo*`zU6 z;){j)Reew&ilF`hO;NXh9Y6x8aP5!{C(plOiXwqI9(2q*Dba1sXKawgcs-|L`G1+F2;#KaRV8!=+su zL|9QCEkN6fHz0zYBhQ}@pzh%Q;p%~mc_$($D#)MZ!*T@2q1;Q3Mh$`*cyO0}+SJ&9g ztfiG#+~0n^eLDUbuej^bXEs*o&CnO;LVekUJ%dxi#V&y@$|8?-KT37Kp!FhpJ+!`G zfcu&}s-A=I>F8t~-#Bvi>Yrb*jx}X2I92@`(W<(wk)gZ9H1u*r8fON&*&?TE*7h!_ zHg-a4bEtZWowccCtzmc1XueKPfYKD(6Y+j_{c-DKX*mY5-*$%5pi6L~x1EKNEU zJ5y%fxc9*9GP@Fe_pGe!9Uk6o?b$zmdbhPQGIn4e{*3KAeY(rM`+-LudoD3wSg@V9 zp%MjAm^h;uYX6=kRn44H98tqLk=?Ca-Vf! zq2q9<_s8HuE{Bt>3Vqg8cAO44&IYXn^lxrC&<9pl#zsbg?ePNy^zl&weF*1gp(_q8 z&dCoHoz&5@wgsQdqxay6-gA@Z7{iJTdGvHN>gWwqClwh1GH=(Tng{;-_{U66Ky~0|BsH&c*r&2YuNV5S1SgH32+Aj3)LN^6nn#302 zX`1le@g-!)`o&-kLSbH<+z8v800rzqe6pWv`EECoN5}T;w)T&4#NI~{d;Gv?AYwOz zWUYQG0-kyjcG1$xSa|5e!9PA(V=UC6ucD$EdKDkD=!(8CAulKbEz3wHDCrF(Of3|- zWt4OxRg$Px8)PWv1}J3Bm#<_#7~JK1fg(rtZatN%=x3p|$+z#_2grRc^^1s3?G4n0(gkG1Ru)bN=Xc*L|Ht^qGmlwTEY_-iCcpG+Ac0zHWnLm-~kV9`dr%f`z=7?4Xl%Js>Nl z$kHag=6ry!2R&Hkq?zn<5>j+6QtxH_^l*CEM51ld>sNVaG1(P`fDGbG5a8w>PXV=gRGwf&IIw~ZT+#}^L0D&> zlI>-RDagnIrL-cqgQ;!np}@$7=>Hq3+vv@vZXvx?l*BC9Aw(l%;%djdx%~oTq6S?R z0rlwA@unujZ3a@Zt(#?%u4L}YhB3`UW0}&K^Xc8s7dHX(f zrcsVzGOlP>l03M?lfREjHNNxiXhWXcjjz3<<5<}49l6OxZcTfr7<>3$jCV~s8D|%} zuU&cJb;g;7wu-ezv createState() => _BannerAdWidgetState(); +} + +class _BannerAdWidgetState extends State { + BannerAd? _bannerAd; + late String adUnitId; + + /// Loads a banner ad. + void loadAd() { + if (Constant.isAdmobAdsEnabled == false) { + return; + } + _bannerAd = BannerAd( + adUnitId: adUnitId, + request: const AdRequest(), + size: widget.bannerSize, + listener: BannerAdListener( + onAdLoaded: (ad) { + debugPrint('$ad loaded.'); + setState(() {}); + }, + // Called when an ad request failed. + onAdFailedToLoad: (ad, err) { + _bannerAd = null; + setState(() {}); + + ad.dispose(); + }, + ), + )..load(); + } + + @override + void initState() { + adUnitId = Platform.isAndroid + ? Constant.admobBannerAndroid + : Constant.admobBannerIos; + loadAd(); + super.initState(); + } + + @override + void dispose() { + if (_bannerAd != null) { + _bannerAd!.dispose(); + } + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return (_bannerAd != null) + ? SizedBox( + width: _bannerAd!.size.width.toDouble(), + height: _bannerAd!.size.height.toDouble(), + child: AdWidget(ad: _bannerAd!), + ) + : const SizedBox.shrink(); + } +} diff --git a/lib/utils/AdMob/interstitialAdManager.dart b/lib/utils/AdMob/interstitialAdManager.dart new file mode 100644 index 0000000..d31e3ee --- /dev/null +++ b/lib/utils/AdMob/interstitialAdManager.dart @@ -0,0 +1,111 @@ +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; +// class InterstitialAdManager { +// InterstitialAd? _interstitialAd; +// +// void load({VoidCallback? onAdLoad}) { +// InterstitialAd.load( +// adUnitId: "", +// request: const AdRequest(), +// adLoadCallback: InterstitialAdLoadCallback( +// // Called when an ad is successfully received. +// onAdLoaded: (InterstitialAd ad) { +// log('$ad loaded.'); +// onAdLoad?.call(); +// // Keep a reference to the ad so you can show it later. +// _interstitialAd = ad; +// }, +// // Called when an ad request failed. +// onAdFailedToLoad: (LoadAdError error) { +// log('InterstitialAd failed to load: $error'); +// }, +// )); +// } +// +// Future show() async { +// if (_interstitialAd != null) { +// await _interstitialAd!.show(); +// } +// } +// } +// import 'package:flutter/foundation.dart'; + +// class InterstitialAdManager { +// InterstitialAd? _interstitialAd; +// int _adCount = 0; +// +// void load({VoidCallback? onAdLoad}) { +// InterstitialAd.load( +// adUnitId: "", +// request: const AdRequest(), +// adLoadCallback: InterstitialAdLoadCallback( +// onAdLoaded: (InterstitialAd ad) { +// print('$ad loaded.'); +// onAdLoad?.call(); +// _interstitialAd = ad; +// }, +// onAdFailedToLoad: (LoadAdError error) { +// print('InterstitialAd failed to load: $error'); +// }, +// ), +// ); +// } +// +// Future show() async { +// if (_interstitialAd != null) { +// log("SHOWING HEHE"); +// await _interstitialAd!.show(); +// _adCount++; +// if (_adCount == 4) { +// _adCount = 0; // Reset the count after showing the ad +// } +// } +// } +// } +import 'package:google_mobile_ads/google_mobile_ads.dart'; + +import '../constant.dart'; + +class InterstitialAdManager { + static int _adCount = 0; + static InterstitialAd? _interstitialAd; + + void load({VoidCallback? onAdLoad}) { + if (Constant.isAdmobAdsEnabled == false) { + return; + } + + InterstitialAd.load( + adUnitId: (Platform.isAndroid + ? Constant.admobInterstitialAndroid + : Constant.admobInterstitialIos), + request: const AdRequest(), + adLoadCallback: InterstitialAdLoadCallback( + onAdLoaded: (InterstitialAd ad) { + print('$ad loaded.'); + onAdLoad?.call(); + _interstitialAd = ad; + }, + onAdFailedToLoad: (LoadAdError error) { + print('InterstitialAd failed to load: $error'); + }, + ), + ); + } + + Future show() async { + if (Constant.isAdmobAdsEnabled == false) { + return; + } + if (_interstitialAd != null) { + _adCount++; + if (_adCount == 4) { + await _interstitialAd!.show(); + + _adCount = 0; // Reset the count after showing the ad + } + } + } +} diff --git a/lib/utils/AppIcon.dart b/lib/utils/AppIcon.dart new file mode 100644 index 0000000..5a5a8d1 --- /dev/null +++ b/lib/utils/AppIcon.dart @@ -0,0 +1,99 @@ +// ignore_for_file: non_constant_identifier_names, file_names + +class AppIcons { + static String placeHolder = ""; + + static var ads = ""; + + static var propertyLimites = ""; + + AppIcons._(); + // + static const String _basePath = "assets/svg/"; + //** */ + static String magic = _svgPath("magic"); + static String bin = _svgPath("bin"); + static String chat = _svgPath("inactive_chat"); + static String update = _svgPath("update"); + static String companyLogo = _svgPath("Logo/company_logo"); + static String home = _svgPath("home"); + static String profile = _svgPath("profile"); + static String search = _svgPath("search"); + static String properties = _svgPath("properties"); + static String iconArrowLeft = _svgPath("icon_arrow_left"); + static String filter = _svgPath("filter"); + static String location = _svgPath("location"); + static String downArrow = _svgPath("down_arrow"); + static String arrowRight = _svgPath("arrow_right"); + static String like = _svgPath("like"); + static String like_fill = _svgPath("like_fill"); + static String notification = _svgPath("notification"); + static String language = _svgPath("language"); + static String darkTheme = _svgPath("dark_theme"); + static String subscription = _svgPath("subscription"); + static String articles = _svgPath("article"); + static String favorites = _svgPath("like_fill"); + static String shareApp = _svgPath("share"); + static String areaConvertor = _svgPath("area_convertor"); + static String rateUs = _svgPath("rate_us"); + static String contactUs = _svgPath("contact_us"); + static String aboutUs = _svgPath("about_us"); + static String terms = _svgPath("t_c"); + static String privacy = _svgPath("privacypolicy"); + static String delete = _svgPath("delete_account"); + static String logout = _svgPath("logout"); + static String edit = _svgPath("edit"); + static String call = _svgPath("call"); + static String message = _svgPath("message"); + static String defaultPersonLogo = _svgPath("defaultProfileIcon"); + static String arrowLeft = _svgPath("arrow_left"); + static String warning = _svgPath("warning"); + static String promoted = _svgPath("promoted"); + static String headerCurve = _svgPath("header_curve"); + static String v360Degree = _svgPath("v360"); + static String deleteGirlSvg = _svgPath("delete"); + static String forRent = _svgPath("for_rent"); + static String forSale = _svgPath("for_sale"); + static String propertyMap = _svgPath("propertymap"); + static String calender = _svgPath("calender"); + static String interested = _svgPath("interested"); + static String whatsapp = _svgPath("whatsapp"); + static String somethingwentwrong = + _svgPath("MultiColorSvg/something_went_wrong"); + + static String paystack = _svgPath("paystack"); + static String razorpay = _svgPath("razorpay"); + static String paypal = _svgPath("paypal"); + static String transaction = _svgPath("transaction"); + static String reportDark = _svgPath("report_dark"); + static String report = _svgPath("report"); + static String propertySubmittedc = _svgPath("MultiColorSvg/propertysubmited"); + static String no_chat_found = _svgPath("MultiColorSvg/no_chat_found"); + static String no_data_found = + _svgPath("MultiColorSvg/no_data_found_illustrator"); + static String days = _svgPath("days"); + + /// + static String propertiesIcon = _svgPath("properties_icon"); + static String upcomingProject = _svgPath("upcoming_projects_icon"); + + ///Fallback icons + static String fallbackSplashLogo = _svgPath("Fallback/splash"); + static String fallbackPlaceholderLogo = _svgPath("Fallback/placeholder"); + static String fallbackHomeLogo = _svgPath("Fallback/homeLogo"); + + static String no_internet = _svgPath("MultiColorSvg/no_internet_illustrator"); + static String deleteIcon = _svgPath("MultiColorSvg/delete_illustrator"); + static String logoutIcon = _svgPath("MultiColorSvg/logout_illustrator"); + + //on boardings + static String onBoardingsOne = _svgPath("onbo_a"); + static String onBoardingsTwo = _svgPath("onbo_b"); + static String onBoardingsThree = _svgPath("onbo_c"); + + /// + /// + static String _svgPath(String name) { + return "$_basePath$name.svg"; + } +} diff --git a/lib/utils/CloudState/cloud_state.dart b/lib/utils/CloudState/cloud_state.dart new file mode 100644 index 0000000..8ae7dac --- /dev/null +++ b/lib/utils/CloudState/cloud_state.dart @@ -0,0 +1,185 @@ +import 'package:flutter/material.dart'; + +// Abstract class for managing cloud data state +abstract class CloudState extends State { + // Static map to store cloud data shared across instances + static Map cloudData = {}; + + // Method to get all cloud data + Map getCloudDataAll() { + return cloudData; + } + + // Global single listener for item addition + static void Function(String key, dynamic value)? onItemAdd; + static List? _listeners = []; + + // Method to add a listener for a specific key + listenOn(String key, Function(dynamic value) callBack) { + _listeners?.add((String addedKey, dynamic addedValue) { + if (key == addedKey) { + callBack.call(addedValue); + } else if (key == "*") { + callBack.call({addedKey: addedValue}); + } + }); + } + + // Method to notify all listeners about changes + void notify(String key, dynamic value) { + _listeners?.forEach((element) { + element.call(key, value); + }); + } + + // Method to get cloud data for a specific key + getCloudData(String key) { + return cloudData[key]; + } + + // Method to add cloud data and notify listeners + void addCloudData(String key, dynamic value) { + cloudData.addAll(Map.from({key: value})); + notify(key, value); + } + + void insertCloudData(String key, dynamic value) { + if (!cloudData.containsKey(key)) { + cloudData[key] = {}; + } + if (cloudData[key] is Map) { + cloudData[key].addAll(Map.from({key: value})); + } + + notify(key, value); + } + + // Method to add screen-specific data and notify listeners + void addScreenValue(String key, dynamic value) { + cloudData.addAll({key: value}); + notify(key, value); + } + + // Method to set cloud data for a specific key and notify listeners + void setCloudData(String key, dynamic value) { + cloudData[key] = value; + notify(key, value); + } + + // Method to append a value to a list in cloud data and notify listeners + void appendToList(String key, T value, {bool? disableClone}) { + if (!cloudData.containsKey(key)) { + cloudData[key] = [value]; + } + if (cloudData[key] is List) { + if (disableClone == true) { + if (!(cloudData[key] as List).contains(value)) { + (cloudData[key] as List).add(value); + notify(key, value); + } + } else { + (cloudData[key] as List).add(value); + notify(key, value); + } + } + } + + void appendToListWhere({ + required String listKey, + required String whereKey, + required T equals, + required Map add, + bool? disableClone, + }) { + cloudData.putIfAbsent(listKey, () => [add]); + + if (cloudData[listKey] is List>) { + var list = cloudData[listKey] as List>; + + if (disableClone != true || + !list.any((item) => item[whereKey] == equals)) { + int indexWhere = + list.indexWhere((element) => element[whereKey] == equals); + if (indexWhere >= 0) { + list[indexWhere] = add; + } else { + list.add(add); + notify(listKey, add); + } + } + } + } + + void removeFromListWhere({ + required String listKey, + required String whereKey, + required T equals, + }) { + print("list key ${whereKey} ex $equals"); + + if (cloudData.containsKey(listKey) && + cloudData[listKey] is List>) { + var list = cloudData[listKey] as List>; + int indexWhere = + list.indexWhere((element) => element[whereKey] == equals); + print("list key ${list} $indexWhere"); + + if (indexWhere >= 0) { + var removedItem = list.removeAt(indexWhere); + notify(listKey, removedItem); + } + } + } + + CloudState toGroup(String groupName, dynamic key, dynamic value) { + // Check if the group exists in cloudData + if (!cloudData.containsKey(groupName)) { + cloudData[groupName] = {}; // Initialize as an empty map if not present + } + + // Now you can safely access and update the group's key-value pair + cloudData[groupName][key] = value; + return this; + } + + void removeFromGroup(String groupName, dynamic key) { + if (cloudData.containsKey(groupName)) { + if (cloudData[groupName].containsKey(key)) { + cloudData[groupName].remove(key); + } + } + } + + void clearGroup(String name) { + if (cloudData.containsKey(name)) { + cloudData.remove(name); + } + } + + dynamic fromGroup(String groupName, dynamic key) { + return cloudData[groupName][key]; + } + + Map? group(String groupName) { + return cloudData[groupName] as Map?; + } + + // Method to add screen-specific data in the cloud data + void screenData(String key, dynamic value) { + if (cloudData.containsKey(runtimeType)) { + (cloudData[runtimeType] as Map).addAll({key: value}); + } else { + cloudData[runtimeType] = {}; + (cloudData[runtimeType] as Map).addAll({key: value}); + } + } + + // Method to get screen-specific data from the cloud data + dynamic getScreenData(State screen, String key) { + return cloudData[screen][key] ?? {}; + } + + // Override build method, as it's an abstract class + @override + Widget build(BuildContext context); +} diff --git a/lib/utils/CurrencyConvertor/currentyConvertor.dart b/lib/utils/CurrencyConvertor/currentyConvertor.dart new file mode 100644 index 0000000..2b039e8 --- /dev/null +++ b/lib/utils/CurrencyConvertor/currentyConvertor.dart @@ -0,0 +1,36 @@ +// import 'dart:async'; +// +// abstract class CurrencyConvertorService { +// abstract String baseCurrency; +// +// FutureOr> execute(); +// } +// +// class Currency { +// final String name; +// final double rate; +// +// Currency(this.name, this.rate); +// } +// +// class ExchangeRatesApi implements CurrencyConvertorService { +// @override +// late String baseCurrency; +// @override +// FutureOr> execute() async {} +// } +// +// class CurrencyRateProvider { +// final CurrencyConvertorService service; +// +// CurrencyRateProvider(this.service, {required this.baseCurrency}); +// +// final String baseCurrency; +// +// Future> getExchangeRates() async { +// service.baseCurrency = this.baseCurrency; +// List respnse = await service.execute(); +// +// return respnse; +// } +// } diff --git a/lib/utils/DeepLink/blueprint.dart b/lib/utils/DeepLink/blueprint.dart new file mode 100644 index 0000000..b1389b4 --- /dev/null +++ b/lib/utils/DeepLink/blueprint.dart @@ -0,0 +1,31 @@ +import 'package:flutter/material.dart'; + +import 'nativeDeepLinkManager.dart'; + +abstract class NativeDeepLinkUtility { + void handle(Uri uri, ProcessResult? result); + Future handleLink(String url) async { + Uri parse = Uri.parse(url); + + NativeDeepLinkManager nativeDeepLinkManager = NativeDeepLinkManager(); + ProcessResult? processResult = await nativeDeepLinkManager.process(parse); + nativeDeepLinkManager.handle(parse, processResult); + } + + MaterialPageRoute build(RouteSettings settings) { + return MaterialPageRoute( + builder: (context) { + return NativeLinkWidget( + settings: settings, + ); + }, + ); + } + + Future process(Uri uri); +} + +class ProcessResult { + final T result; + ProcessResult(this.result); +} diff --git a/lib/utils/DeepLink/nativeDeepLinkManager.dart b/lib/utils/DeepLink/nativeDeepLinkManager.dart new file mode 100644 index 0000000..861926a --- /dev/null +++ b/lib/utils/DeepLink/nativeDeepLinkManager.dart @@ -0,0 +1,105 @@ +import 'package:ebroker/data/Repositories/articles_repository.dart'; +import 'package:ebroker/data/Repositories/property_repository.dart'; +import 'package:ebroker/data/model/article_model.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:ebroker/utils/DeepLink/blueprint.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; +import 'package:flutter/material.dart'; + +import '../../Ui/screens/widgets/AnimatedRoutes/blur_page_route.dart'; +import '../../app/routes.dart'; +import '../constant.dart'; + +class NativeDeepLinkManager extends NativeDeepLinkUtility { + @override + void handle(Uri uri, ProcessResult? result) { + if (uri.toString().startsWith("http") || + uri.toString().startsWith("https")) { + if (result?.result is PropertyModel) { + Navigator.pushReplacementNamed( + Constant.navigatorKey.currentContext!, Routes.propertyDetails, + arguments: { + 'propertyData': result?.result as PropertyModel, + 'propertiesList': [] + }); + } + + if (result?.result is ArticleModel) { + Navigator.pushReplacementNamed( + Constant.navigatorKey.currentContext!, + Routes.articleDetailsScreenRoute, + arguments: { + "model": result?.result, + }, + ); + } + } + } + + @override + Future process(Uri uri) async { + if (uri.pathSegments.contains("properties-details")) { + String slug = uri.pathSegments[1]; + PropertyModel propertyModel = + await PropertyRepository().fetchBySlug(slug); + return ProcessResult(propertyModel); + } + if (uri.pathSegments.contains("article-details")) { + String slug = uri.pathSegments[1]; + ArticleModel articleModel = + await ArticlesRepository().fetchArticlesBySlugId(slug); + + return ProcessResult((articleModel)); + } + + return null; + } +} + +class NativeLinkWidget extends StatefulWidget { + final RouteSettings settings; + const NativeLinkWidget({super.key, required this.settings}); + static BlurredRouter render(RouteSettings settings) { + return BlurredRouter( + builder: (context) { + return Scaffold( + body: NativeLinkWidget( + settings: settings, + ), + ); + }, + ); + } + + @override + State createState() => _NativeLinkWidgetState(); +} + +class _NativeLinkWidgetState extends State { + @override + void initState() { + super.initState(); + + NativeDeepLinkManager().handleLink(widget.settings.name ?? ""); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircularProgressIndicator( + color: Theme.of(context).colorScheme.tertiaryColor, + ), + const SizedBox( + height: 15, + ), + const Text("Please Wait...") + ], + ), + ), + ); + } +} diff --git a/lib/utils/Encryption/rsa.dart b/lib/utils/Encryption/rsa.dart new file mode 100644 index 0000000..b20f219 --- /dev/null +++ b/lib/utils/Encryption/rsa.dart @@ -0,0 +1,38 @@ +import 'dart:convert'; +import 'dart:typed_data'; + +import 'package:encrypt/encrypt.dart'; +import 'package:pointycastle/asymmetric/api.dart' as d; + +class RSAEncryption { + final parser = RSAKeyParser(); + //encrypted data must be in base 64 + String decrypt({required String privateKey, required String encryptedData}) { + try { + Uint8List encryptedData_ = + Uint8List.fromList(base64Decode(encryptedData)); + // Parse the private key from the PEM format + final __privateKey__ = parser.parse(privateKey) as d.RSAPrivateKey; + + // Create an RSA decrypter with the private key + final decrypter = Encrypter(RSA(privateKey: __privateKey__)); + + // Decrypt the data + final decryptedData = decrypter.decryptBytes(Encrypted(encryptedData_)); + + // Convert the decrypted data to a string + String decryptedText = utf8.decode(decryptedData); + + return decryptedText; + } catch (e) { + throw ("Decrypt failed:$e"); + } + } + + String encrypt({required String data, required String publicKey}) { + d.RSAPublicKey publicKey_ = parser.parse(publicKey) as d.RSAPublicKey; + final encrypter = Encrypter(RSA(publicKey: publicKey_)); + final encrypted = encrypter.encrypt(data); + return encrypted.base64; + } +} diff --git a/lib/utils/Extensions/extensions.dart b/lib/utils/Extensions/extensions.dart new file mode 100644 index 0000000..8af8331 --- /dev/null +++ b/lib/utils/Extensions/extensions.dart @@ -0,0 +1,6 @@ +export 'lib/build_context.dart'; +export 'lib/color.dart'; +export 'lib/date.dart'; +export 'lib/string.dart'; +export 'lib/textWidgetExtention.dart'; +export 'lib/translate.dart'; diff --git a/lib/utils/Extensions/lib/adaptive_type.dart b/lib/utils/Extensions/lib/adaptive_type.dart new file mode 100644 index 0000000..2568fe3 --- /dev/null +++ b/lib/utils/Extensions/lib/adaptive_type.dart @@ -0,0 +1,38 @@ +class Adapter { + ///String to int + static int? forceInt(dynamic value) { + if (value == null) { + return null; + } + if (value == "") { + return 0; + } + if (value is int) { + return value; + } else { + try { + return int.tryParse(value as String); + } catch (e) { + throw "$value is not valid parsable int"; + } + } + } + + double? forceDouble(dynamic value) { + if (value == null) { + return null; + } + if (value == "") { + return 0.0; + } + if (value is double) { + return value; + } else { + try { + return double.tryParse(value as String); + } catch (e) { + throw "$value is not valid parsable double"; + } + } + } +} diff --git a/lib/utils/Extensions/lib/build_context.dart b/lib/utils/Extensions/lib/build_context.dart new file mode 100644 index 0000000..54c0239 --- /dev/null +++ b/lib/utils/Extensions/lib/build_context.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; + +import '../../../Ui/Theme/theme.dart'; + +export '../../../Ui/Theme/theme.dart'; + +extension CustomContext on BuildContext { + double get screenWidth => MediaQuery.of(this).size.width; + double get screenHeight => MediaQuery.of(this).size.height; + + //This one for colorScheme shortcut + ColorScheme get color => Theme.of(this).colorScheme; + +//This one for fontSize + ///I created different Font class to limit textTheme values, let's assume if some one is using context.font and he is getting too may options related to text theme so how will he know which one is for use?? + ///So in theme.dart file i have created Font class which will give limited numbers of getters + Font get font => Theme.of(this).textTheme.font; +} diff --git a/lib/utils/Extensions/lib/color.dart b/lib/utils/Extensions/lib/color.dart new file mode 100644 index 0000000..d0ddbc6 --- /dev/null +++ b/lib/utils/Extensions/lib/color.dart @@ -0,0 +1,25 @@ +import 'dart:ui'; + +extension ColorExt on Color { + Color brighten(int value) { + Color color0 = this; + + int red = color0.red + value; + int green = color0.green + value; + int blue = color0.blue + value; + + return Color.fromARGB(color0.alpha, red.clamp(0, 255), green.clamp(0, 255), + blue.clamp(0, 255)); + } + + Color darken(int value) { + Color color0 = this; + + int red = color0.red - value; + int green = color0.green - value; + int blue = color0.blue - value; + + return Color.fromARGB(color0.alpha, red.clamp(0, 255), green.clamp(0, 255), + blue.clamp(0, 255)); + } +} diff --git a/lib/utils/Extensions/lib/date.dart b/lib/utils/Extensions/lib/date.dart new file mode 100644 index 0000000..0af2f16 --- /dev/null +++ b/lib/utils/Extensions/lib/date.dart @@ -0,0 +1,13 @@ +extension D on String { + DateTime parseAsDate() { + return DateTime.parse(this); + } +} + +extension DT on DateTime { + bool isSameDate(DateTime date2) { + return this.year == date2.year && + this.month == date2.month && + this.day == date2.day; + } +} diff --git a/lib/utils/Extensions/lib/iterable.dart b/lib/utils/Extensions/lib/iterable.dart new file mode 100644 index 0000000..23cbe76 --- /dev/null +++ b/lib/utils/Extensions/lib/iterable.dart @@ -0,0 +1,10 @@ +extension MapIndexed on Iterable { + Iterable mapIndexed(U Function(T e, int i) f) { + int i = 0; + return map((it) { + final t = i; + i++; + return f(it, t); + }); + } +} diff --git a/lib/utils/Extensions/lib/list.dart b/lib/utils/Extensions/lib/list.dart new file mode 100644 index 0000000..8a297ca --- /dev/null +++ b/lib/utils/Extensions/lib/list.dart @@ -0,0 +1,65 @@ +import 'package:ebroker/utils/Extensions/lib/adaptive_type.dart'; + +extension ListExt on List { + void addOrRemove(T element) { + if (contains(element)) { + remove(element); + } else { + add(element); + } + } + + void clearAndAddAll(List elements) { + clear(); + addAll(elements); + } + + void clearAndAdd(T elements) { + clear(); + add(elements); + } + + bool containesAll(List element) { + int _has = 0; + + for (var i = 0; i < element.length; i++) { + if (contains(element[i])) { + _has++; + } + } + + return _has == element.length; + } + + bool isFirst(T element) { + return first == element; + } + + bool isSingleElementAndIs(T element) { + if (length == 1) { + return first == element; + } + return false; + } + + List forceInt() { + return map((e) => Adapter.forceInt(e)!).toList() ?? []; + } + + List forceDouble() { + return map((e) => Adapter().forceDouble(e)!).toList() ?? []; + } + + dynamic sum(num Function(T e) fn) { + dynamic joinner; + for (var value in this) { + dynamic valFromFn = fn.call(value); + if (joinner == null) { + joinner = valFromFn; + } else { + joinner += valFromFn; + } + } + return joinner; + } +} diff --git a/lib/utils/Extensions/lib/map.dart b/lib/utils/Extensions/lib/map.dart new file mode 100644 index 0000000..806fff0 --- /dev/null +++ b/lib/utils/Extensions/lib/map.dart @@ -0,0 +1,71 @@ +extension MapExt on Map { + void removeEmptyKeys() { + removeWhere((key, value) => value.isEmpty || value == "" || value == null); + } + + dynamic get(dynamic key) { + return this[key]; + } +} + +extension ListExt on List { + Map findByKey(dynamic key, {dynamic equals}) { + return where((element) { + return element[key] == equals; + }).first; + } + + List query(String q) { + String compareVersion = ""; + String comparableKey = ""; + String returnableKey = ""; + String comparableWithKey = ""; + List? keySplit; + // "GET `name` where `id` = `0`"; + + List split = q.split(" "); + if (q.startsWith('GET')) { + if (split[1].startsWith("`") && split[1].endsWith("`")) { + returnableKey = split[1].replaceAll("`", ""); + + if (split[2] == "where") { + if (split[3].startsWith("`") && split[3].endsWith("`")) { + comparableKey = split[3].replaceAll("`", ""); + if (comparableKey.contains(".")) { + keySplit = comparableKey.split("."); + } + } + if (split[4] == "=") { + compareVersion = "eq"; + } + if (split[4] == ">") { + compareVersion = "gt"; + } + if (split[5].startsWith("`") && split[5].endsWith("`")) { + comparableWithKey = split[5].replaceAll("`", ""); + } + if (compareVersion == "eq") { + return where((element) { + element['obj']['isPrivate']; + + return element[comparableKey] == comparableWithKey; + }).toList().map((e) => e[returnableKey]).toList(); + } + if (compareVersion == "gt") { + if (returnableKey == "*") { + var list = where((element) { + return element[comparableKey] > int.parse(comparableWithKey); + }).toList(); + return list; + } + + return where((element) { + return element[comparableKey] > int.parse(comparableWithKey); + }).toList().map((e) => e[returnableKey]).toList(); + } + } + } + } + return []; + } +} diff --git a/lib/utils/Extensions/lib/num_extention.dart b/lib/utils/Extensions/lib/num_extention.dart new file mode 100644 index 0000000..d8c8440 --- /dev/null +++ b/lib/utils/Extensions/lib/num_extention.dart @@ -0,0 +1,19 @@ +import 'package:intl/intl.dart'; + +extension NUMEXT on num { + String numPriceFormate({bool? disabled}) { + String formattedNumber = NumberFormat.compactCurrency( + decimalDigits: 2, + symbol: + '', // if you want to add currency symbol then pass that in this else leave it empty. + ).format(this); + + if (disabled == true) { + return toString(); + } + + return formattedNumber; + } + + // clamp(lowerLimit, upperLimit) +} diff --git a/lib/utils/Extensions/lib/string.dart b/lib/utils/Extensions/lib/string.dart new file mode 100644 index 0000000..d979404 --- /dev/null +++ b/lib/utils/Extensions/lib/string.dart @@ -0,0 +1,39 @@ +import 'dart:developer' as d; + +import 'package:ebroker/exports/main_export.dart'; + +extension S on String { + void get logg { + if (Constant.terminalLogMode == "debug") { + d.log(this); + } else { + print(this); + } + } + + void log([String? name]) { + if (Constant.terminalLogMode == "debug") { + d.log(this, name: name ?? ""); + } else { + print("[${name ?? "log"}]: $this"); + } + } +} + +extension OB on Object { + void get logg { + if (Constant.terminalLogMode == "debug") { + d.log(toString()); + } else { + print("$this"); + } + } + + void mlog([String? name]) { + if (Constant.terminalLogMode == "debug") { + d.log(toString(), name: name ?? ""); + } else { + print("[${name ?? "log"}]: $this"); + } + } +} diff --git a/lib/utils/Extensions/lib/textWidgetExtention.dart b/lib/utils/Extensions/lib/textWidgetExtention.dart new file mode 100644 index 0000000..9071537 --- /dev/null +++ b/lib/utils/Extensions/lib/textWidgetExtention.dart @@ -0,0 +1,108 @@ +// An extention for use with text widget to avoid re-write boilarplate code + +// ignore_for_file: file_names + +import 'package:flutter/material.dart'; + +extension StyledText on T { + Text copyWith({ + String? data, + InlineSpan? textSpan, + TextStyle? style, + StrutStyle? strutStyle, + TextAlign? textAlign, + TextDirection? textDirection, + bool? softWrap, + TextOverflow? overflow, + double? textScaleFactor, + Locale? locale, + int? maxLines, + String? semanticsLabel, + TextWidthBasis? textWidthBasis, + TextHeightBehavior? textHeightBehavior, + }) { + return Text( + data ?? this.data ?? "", + style: style ?? this.style, + locale: locale ?? this.locale, + maxLines: maxLines ?? this.maxLines, + overflow: overflow ?? this.overflow, + semanticsLabel: semanticsLabel ?? this.semanticsLabel, + softWrap: softWrap ?? this.softWrap, + strutStyle: strutStyle ?? this.strutStyle, + textAlign: textAlign ?? this.textAlign, + textDirection: textDirection ?? this.textDirection, + textHeightBehavior: textHeightBehavior ?? this.textHeightBehavior, + textScaleFactor: textScaleFactor ?? this.textScaleFactor, + textWidthBasis: textWidthBasis ?? this.textWidthBasis, + ); + } + + T bold({FontWeight? weight}) => copyWith( + style: (style ?? const TextStyle()).copyWith( + fontWeight: weight ?? FontWeight.bold, + ), + ) as T; + + ///Text overflow is inclueded + T setMaxLines({required int lines}) { + return copyWith( + maxLines: lines, overflow: TextOverflow.ellipsis, softWrap: true) as T; + } + + T italic() { + return copyWith( + style: (style ?? const TextStyle()).copyWith(fontStyle: FontStyle.italic), + ) as T; + } + + T size(double size) { + return copyWith( + style: (style ?? const TextStyle()).copyWith(fontSize: size)) as T; + } + + T color(Color color) { + return copyWith(style: (style ?? const TextStyle()).copyWith(color: color)) + as T; + } + + T underline() => copyWith( + style: (style ?? const TextStyle()) + .copyWith(decoration: TextDecoration.underline), + ) as T; + + T centerAlign() => copyWith(textAlign: TextAlign.center) as T; + + T firstUpperCaseWidget() { + String upperCase = ""; + var suffix = ""; + if (data?.isNotEmpty ?? true) { + upperCase = data?[0].toUpperCase() ?? ""; + suffix = data!.substring(1, data?.length); + } + return copyWith(data: upperCase + suffix) as T; + } + + // randomize() { + // String? text = data; + // Set indexSet = {}; + // List.generate(text?.length ?? 0, (index) { + // int? value = _randomGen(text, indexSet); + // if (value != null) { + // indexSet.add(value); + // } + // }); + + // print(indexSet.toList().toString()); + // } + + // int? _randomGen(String? text, Set indexSet) { + // int random = Random().nextInt(text?.length ?? 0); + // if (indexSet.contains(random)) { + // _randomGen(text, indexSet); + // } else { + // return random; + // } + // return null; + // } +} diff --git a/lib/utils/Extensions/lib/translate.dart b/lib/utils/Extensions/lib/translate.dart new file mode 100644 index 0000000..d88cf3a --- /dev/null +++ b/lib/utils/Extensions/lib/translate.dart @@ -0,0 +1,9 @@ +import 'package:flutter/cupertino.dart'; + +import '../../ui_utils.dart'; + +extension TranslateString on String { + String translate(BuildContext context) { + return UiUtils.translate(context, this); + } +} diff --git a/lib/utils/Geocoding/geocoding.dart b/lib/utils/Geocoding/geocoding.dart new file mode 100644 index 0000000..6fc4f5f --- /dev/null +++ b/lib/utils/Geocoding/geocoding.dart @@ -0,0 +1 @@ +abstract class GeocodingProvider {} diff --git a/lib/utils/LiquidIndicator/.DS_Store b/lib/utils/LiquidIndicator/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6eeedb518b3ff80d198cc4fa7bd14ff1bfe9db6f GIT binary patch literal 6148 zcmeHKO>fgc5S>j@>Zq!e14unpmU@j!C||0$xM?_W#fTmN89Rt>s8I38X8f#n9KI$>Bev|8Q zlIsNh@JDn6-T!3-7Ev4dC5``xy0|?mnO9TS*JU!zv#K5peyUcxv+-cl+w``)PvM!K zhjm=fs$pDy;MzN_^JHbm$@^?Fk9rS}by3GzF)2+#mQE1z@gyr!Js;{>kya)*v<+U@ z>qfnu#p3y3(D$FcJY4qu#o+bxth40MxWHj!(WaAfj}PTWR_=wO%;@OfH{qlL zi&6>$!oW=i+P2!`^Z)hV-~Tt0q$Ugq1OF8Rsxt~lLrlq?t!tCxv(|@xhO%&6WAS$i i409ACmXG2cs1f*mHh_V{#v(irxd<2? valueColor, + this.borderWidth, + this.borderColor, + this.center, + this.direction = Axis.vertical, + }) : super( + key: key, + value: value, + backgroundColor: backgroundColor, + valueColor: valueColor, + ) { + if (borderWidth != null && borderColor == null || + borderColor != null && borderWidth == null) { + throw ArgumentError("borderWidth and borderColor should both be set."); + } + } + + Color _getBackgroundColor(BuildContext context) => + backgroundColor ?? Theme.of(context).colorScheme.background; + + Color _getValueColor(BuildContext context) => + valueColor?.value ?? Theme.of(context).colorScheme.secondary; + + @override + State createState() => + _LiquidCircularProgressIndicatorState(); +} + +class _LiquidCircularProgressIndicatorState + extends State { + @override + Widget build(BuildContext context) { + return ClipPath( + clipper: _CircleClipper(), + child: CustomPaint( + painter: _CirclePainter( + color: widget._getBackgroundColor(context), + ), + foregroundPainter: _CircleBorderPainter( + color: widget.borderColor, + width: widget.borderWidth, + ), + child: Stack( + children: [ + Wave( + value: widget.value, + color: widget._getValueColor(context), + direction: widget.direction, + ), + if (widget.center != null) Center(child: widget.center), + ], + ), + ), + ); + } +} + +class _CirclePainter extends CustomPainter { + final Color color; + + _CirclePainter({required this.color}); + + @override + void paint(Canvas canvas, Size size) { + final paint = Paint()..color = color; + canvas.drawArc(Offset.zero & size, 0, _sweep, false, paint); + } + + @override + bool shouldRepaint(_CirclePainter oldDelegate) => color != oldDelegate.color; +} + +class _CircleBorderPainter extends CustomPainter { + final Color? color; + final double? width; + + _CircleBorderPainter({this.color, this.width}); + + @override + void paint(Canvas canvas, Size size) { + if (color == null || width == null) { + return; + } + + final borderPaint = Paint() + ..color = color! + ..style = PaintingStyle.stroke + ..strokeWidth = width!; + final newSize = Size(size.width - width!, size.height - width!); + canvas.drawArc(Offset(width! / 2, width! / 2) & newSize, 0, _sweep, false, + borderPaint); + } + + @override + bool shouldRepaint(_CircleBorderPainter oldDelegate) => + color != oldDelegate.color || width != oldDelegate.width; +} + +class _CircleClipper extends CustomClipper { + @override + Path getClip(Size size) { + final path = Path()..addArc(Offset.zero & size, 0, _sweep); + return path; + } + + @override + bool shouldReclip(CustomClipper oldClipper) => false; +} diff --git a/lib/utils/LiquidIndicator/src/liquid_custom_progress_indicator.dart b/lib/utils/LiquidIndicator/src/liquid_custom_progress_indicator.dart new file mode 100644 index 0000000..a168500 --- /dev/null +++ b/lib/utils/LiquidIndicator/src/liquid_custom_progress_indicator.dart @@ -0,0 +1,105 @@ +import 'package:ebroker/utils/LiquidIndicator/src/wave.dart'; +import 'package:flutter/material.dart'; + +class LiquidCustomProgressIndicator extends ProgressIndicator { + ///The widget to show in the center of the progress indicator. + final Widget? center; + + ///The direction the liquid travels. + final Axis direction; + + ///The path used to draw the shape of the progress indicator. The size of the progress indicator is controlled by the bounds of this path. + final Path shapePath; + + const LiquidCustomProgressIndicator({ + Key? key, + double value = 0.5, + Color? backgroundColor, + Animation? valueColor, + this.center, + required this.direction, + required this.shapePath, + }) : super( + key: key, + value: value, + backgroundColor: backgroundColor, + valueColor: valueColor, + ); + + Color _getBackgroundColor(BuildContext context) => + backgroundColor ?? Theme.of(context).colorScheme.background; + + Color _getValueColor(BuildContext context) => + valueColor?.value ?? Theme.of(context).colorScheme.secondary; + + @override + State createState() => _LiquidCustomProgressIndicatorState(); +} + +class _LiquidCustomProgressIndicatorState + extends State { + @override + Widget build(BuildContext context) { + final pathBounds = widget.shapePath.getBounds(); + return SizedBox( + width: pathBounds.width + pathBounds.left, + height: pathBounds.height + pathBounds.top, + child: ClipPath( + clipper: _CustomPathClipper( + path: widget.shapePath, + ), + child: CustomPaint( + painter: _CustomPathPainter( + color: widget._getBackgroundColor(context), + path: widget.shapePath, + ), + child: Stack( + children: [ + Positioned.fill( + left: pathBounds.left, + top: pathBounds.top, + child: Wave( + value: widget.value, + color: widget._getValueColor(context), + direction: widget.direction, + ), + ), + if (widget.center != null) Center(child: widget.center), + ], + ), + ), + ), + ); + } +} + +class _CustomPathPainter extends CustomPainter { + final Color color; + final Path path; + + _CustomPathPainter({required this.color, required this.path}); + + @override + void paint(Canvas canvas, Size size) { + final paint = Paint()..color = color; + canvas.drawPath(path, paint); + } + + @override + bool shouldRepaint(_CustomPathPainter oldDelegate) => + color != oldDelegate.color || path != oldDelegate.path; +} + +class _CustomPathClipper extends CustomClipper { + final Path path; + + _CustomPathClipper({required this.path}); + + @override + Path getClip(Size size) { + return path; + } + + @override + bool shouldReclip(CustomClipper oldClipper) => false; +} diff --git a/lib/utils/LiquidIndicator/src/liquid_linear_progress_indicator.dart b/lib/utils/LiquidIndicator/src/liquid_linear_progress_indicator.dart new file mode 100644 index 0000000..83019eb --- /dev/null +++ b/lib/utils/LiquidIndicator/src/liquid_linear_progress_indicator.dart @@ -0,0 +1,159 @@ +import 'package:ebroker/utils/LiquidIndicator/src/wave.dart'; +import 'package:flutter/material.dart'; + +class LiquidLinearProgressIndicator extends ProgressIndicator { + ///The width of the border, if this is set [borderColor] must also be set. + final double? borderWidth; + + ///The color of the border, if this is set [borderWidth] must also be set. + final Color? borderColor; + + ///The radius of the border. + final double? borderRadius; + + ///The widget to show in the center of the progress indicator. + final Widget? center; + + ///The direction the liquid travels. + final Axis direction; + + LiquidLinearProgressIndicator({ + Key? key, + double value = 0.5, + Color? backgroundColor, + Animation? valueColor, + this.borderWidth, + this.borderColor, + this.borderRadius, + this.center, + this.direction = Axis.horizontal, + }) : super( + key: key, + value: value, + backgroundColor: backgroundColor, + valueColor: valueColor, + ) { + if (borderWidth != null && borderColor == null || + borderColor != null && borderWidth == null) { + throw ArgumentError("borderWidth and borderColor should both be set."); + } + } + + Color _getBackgroundColor(BuildContext context) => + backgroundColor ?? Theme.of(context).colorScheme.background; + + Color _getValueColor(BuildContext context) => + valueColor?.value ?? Theme.of(context).colorScheme.secondary; + + @override + State createState() => _LiquidLinearProgressIndicatorState(); +} + +class _LiquidLinearProgressIndicatorState + extends State { + @override + Widget build(BuildContext context) { + return ClipPath( + clipper: _LinearClipper( + radius: widget.borderRadius, + ), + child: CustomPaint( + painter: _LinearPainter( + color: widget._getBackgroundColor(context), + radius: widget.borderRadius ?? 0, + ), + foregroundPainter: _LinearBorderPainter( + color: widget.borderColor ?? Colors.black, + width: widget.borderWidth ?? 0, + radius: widget.borderRadius ?? 0, + ), + child: Stack( + children: [ + Wave( + value: widget.value, + color: widget._getValueColor(context), + direction: widget.direction, + ), + if (widget.center != null) Center(child: widget.center), + ], + ), + ), + ); + } +} + +class _LinearPainter extends CustomPainter { + final Color color; + final double radius; + + _LinearPainter({required this.color, required this.radius}); + + @override + void paint(Canvas canvas, Size size) { + final paint = Paint()..color = color; + canvas.drawRRect( + RRect.fromRectAndRadius( + Rect.fromLTWH(0, 0, size.width, size.height), + Radius.circular(radius), + ), + paint); + } + + @override + bool shouldRepaint(_LinearPainter oldDelegate) => color != oldDelegate.color; +} + +class _LinearBorderPainter extends CustomPainter { + final Color color; + final double width; + final double radius; + + _LinearBorderPainter({ + required this.color, + required this.width, + required this.radius, + }); + + @override + void paint(Canvas canvas, Size size) { + final paint = Paint() + ..color = color + ..style = PaintingStyle.stroke + ..strokeWidth = width; + final alteredRadius = radius; + canvas.drawRRect( + RRect.fromRectAndRadius( + Rect.fromLTWH( + width / 2, width / 2, size.width - width, size.height - width), + Radius.circular(alteredRadius - width), + ), + paint); + } + + @override + bool shouldRepaint(_LinearBorderPainter oldDelegate) => + color != oldDelegate.color || + width != oldDelegate.width || + radius != oldDelegate.radius; +} + +class _LinearClipper extends CustomClipper { + final double? radius; + + _LinearClipper({required this.radius}); + + @override + Path getClip(Size size) { + final path = Path() + ..addRRect( + RRect.fromRectAndRadius( + Rect.fromLTWH(0, 0, size.width, size.height), + Radius.circular(radius ?? 0), + ), + ); + return path; + } + + @override + bool shouldReclip(CustomClipper oldClipper) => false; +} diff --git a/lib/utils/LiquidIndicator/src/wave.dart b/lib/utils/LiquidIndicator/src/wave.dart new file mode 100644 index 0000000..cc84758 --- /dev/null +++ b/lib/utils/LiquidIndicator/src/wave.dart @@ -0,0 +1,120 @@ +import 'dart:math' as math; + +import 'package:flutter/material.dart'; + +class Wave extends StatefulWidget { + final double? value; + final Color color; + final Axis direction; + + const Wave({ + Key? key, + required this.value, + required this.color, + required this.direction, + }) : super(key: key); + + @override + _WaveState createState() => _WaveState(); +} + +class _WaveState extends State with SingleTickerProviderStateMixin { + late AnimationController _animationController; + + @override + void initState() { + super.initState(); + + _animationController = AnimationController( + vsync: this, + duration: Duration(seconds: 2), + ); + _animationController.repeat(); + } + + @override + void dispose() { + _animationController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return AnimatedBuilder( + animation: CurvedAnimation( + parent: _animationController, + curve: Curves.easeInOut, + ), + builder: (context, child) => ClipPath( + child: Container( + color: widget.color, + ), + clipper: _WaveClipper( + + animationValue: _animationController.value, + value: widget.value, + direction: widget.direction, + ), + ), + ); + } +} + +class _WaveClipper extends CustomClipper { + final double animationValue; + final double? value; + final Axis direction; + + _WaveClipper({ + required this.animationValue, + required this.value, + required this.direction, + }); + + @override + Path getClip(Size size) { + if (direction == Axis.horizontal) { + Path path = Path() + ..addPolygon(_generateHorizontalWavePath(size), false) + ..lineTo(0.0, size.height) + ..lineTo(0.0, 0.0) + ..close(); + return path; + } + + Path path = Path() + ..addPolygon(_generateVerticalWavePath(size), false) + ..lineTo(size.width, size.height) + ..lineTo(0.0, size.height) + ..close(); + return path; + } + + List _generateHorizontalWavePath(Size size) { + final waveList = []; + for (int i = -2; i <= size.height.toInt() + 2; i++) { + final waveHeight = (size.width / 20); + final dx = math.sin((animationValue * 360 - i) % 360 * (math.pi / 180)) * + waveHeight + + (size.width * value!); + waveList.add(Offset(dx, i.toDouble())); + } + return waveList; + } + + List _generateVerticalWavePath(Size size) { + final waveList = []; + for (int i = -2; i <= size.width.toInt() + 2; i++) { + final waveHeight = (size.height / 20); + final dy = math.sin((animationValue * 360 - i) % 360 * (math.pi / 180)) * + waveHeight + + (size.height - (size.height * value!)); + waveList.add(Offset(i.toDouble(), dy)); + } + return waveList; + } + + @override + bool shouldReclip(_WaveClipper oldClipper) => + animationValue != oldClipper.animationValue; +} diff --git a/lib/utils/Login/AppleLogin/apple_login.dart b/lib/utils/Login/AppleLogin/apple_login.dart new file mode 100644 index 0000000..09e7777 --- /dev/null +++ b/lib/utils/Login/AppleLogin/apple_login.dart @@ -0,0 +1,37 @@ +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:sign_in_with_apple/sign_in_with_apple.dart'; + +import '../lib/login_status.dart'; +import '../lib/login_system.dart'; + +class AppleLogin extends LoginSystem { + OAuthCredential? credential; + @override + void init() async { + final AuthorizationCredentialAppleID appleIdCredential = + await SignInWithApple.getAppleIDCredential( + scopes: [ + AppleIDAuthorizationScopes.email, + AppleIDAuthorizationScopes.fullName, + ], + ); + final OAuthProvider oAuthProvider = OAuthProvider('apple.com'); + credential = oAuthProvider.credential( + idToken: appleIdCredential.identityToken, + accessToken: appleIdCredential.authorizationCode, + ); + } + + Future login() async { + if (credential != null) { + final userCredential = + await firebaseAuth.signInWithCredential(credential!); + + return userCredential; + } + return null; + } + + @override + void onEvent(MLoginState state) {} +} diff --git a/lib/utils/Login/Disclaimer.txt b/lib/utils/Login/Disclaimer.txt new file mode 100644 index 0000000..7baa77c --- /dev/null +++ b/lib/utils/Login/Disclaimer.txt @@ -0,0 +1,5 @@ +Note: + +This "Login" folder is for future use. Currently it is not being used. + +Thank you! \ No newline at end of file diff --git a/lib/utils/Login/EmailLogin/email_login.dart b/lib/utils/Login/EmailLogin/email_login.dart new file mode 100644 index 0000000..fb60481 --- /dev/null +++ b/lib/utils/Login/EmailLogin/email_login.dart @@ -0,0 +1,35 @@ +import 'dart:developer'; + +import 'package:firebase_auth/firebase_auth.dart'; + +import '../lib/login_status.dart'; +import '../lib/login_system.dart'; +import '../lib/payloads.dart'; + +class EmailLogin extends LoginSystem { + @override + Future login() async { + UserCredential? userCredential; + if (payload is EmailLoginPayload) { + var _payload = (payload as EmailLoginPayload); + if (_payload.type == EmailLoginType.signup) { + userCredential = + await FirebaseAuth.instance.createUserWithEmailAndPassword( + email: _payload.email, + password: _payload.password, + ); + } else { + userCredential = await FirebaseAuth.instance.signInWithEmailAndPassword( + email: _payload.email, + password: _payload.password, + ); + } + } + return userCredential; + } + + @override + void onEvent(MLoginState state) { + log("MLOGIN STATE IS $state"); + } +} diff --git a/lib/utils/Login/GoogleLogin/google_login.dart b/lib/utils/Login/GoogleLogin/google_login.dart new file mode 100644 index 0000000..5780210 --- /dev/null +++ b/lib/utils/Login/GoogleLogin/google_login.dart @@ -0,0 +1,56 @@ +import 'dart:developer'; + +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/material.dart'; +import 'package:google_sign_in/google_sign_in.dart'; + +import '../lib/login_status.dart'; +import '../lib/login_system.dart'; + +class GoogleLogin extends LoginSystem { + GoogleSignIn? _googleSignIn; + + @override + void init() async { + _googleSignIn = GoogleSignIn( + scopes: [ + 'email', + 'https://www.googleapis.com/auth/contacts.readonly', + ], + ); + } + + @override + Future login() async { + try { + emit(MProgress()); + GoogleSignInAccount? googleSignIn = await _googleSignIn?.signIn(); + if (googleSignIn == null) { + throw ErrorDescription("google-terminated"); + } + GoogleSignInAuthentication? googleAuth = + await googleSignIn?.authentication; + + AuthCredential authCredential = GoogleAuthProvider.credential( + accessToken: googleAuth?.accessToken, + idToken: googleAuth?.idToken, + ); + + UserCredential userCredential = + await firebaseAuth.signInWithCredential(authCredential); + emit(MSuccess()); + + return userCredential; + } catch (e) { + log("FAILLL ISS $e"); + + emit(MFail(e.toString())); + throw e; + } + } + + @override + void onEvent(MLoginState state) { + // TODO: implement onEvent + } +} diff --git a/lib/utils/Login/PhoneLogin/phone_login.dart b/lib/utils/Login/PhoneLogin/phone_login.dart new file mode 100644 index 0000000..ef4b378 --- /dev/null +++ b/lib/utils/Login/PhoneLogin/phone_login.dart @@ -0,0 +1,54 @@ +import 'package:firebase_auth/firebase_auth.dart'; + +import '../../../utils/constant.dart'; +import '../lib/login_status.dart'; +import '../lib/login_system.dart'; +import '../lib/payloads.dart'; + +class PhoneLogin extends LoginSystem { + String? verificationId; + + @override + Future login() async { + try { + emit(MProgress()); + // (state); + PhoneAuthCredential credential = PhoneAuthProvider.credential( + verificationId: verificationId ?? "", + smsCode: (payload as PhoneLoginPayload).getOTP()!); + + UserCredential userCredential = + await firebaseAuth.signInWithCredential(credential); + emit(MSuccess()); + + return userCredential; + } catch (e) { + emit(MFail(e)); + } + } + + @override + Future requestVerification() async { + await FirebaseAuth.instance.verifyPhoneNumber( + timeout: Duration( + seconds: Constant.otpTimeOutSecond, + ), + phoneNumber: + "+${(payload as PhoneLoginPayload).countryCode}${(payload as PhoneLoginPayload).phoneNumber}", + verificationCompleted: (PhoneAuthCredential credential) {}, + verificationFailed: (FirebaseAuthException e) { + emit(MFail(e)); + }, + codeSent: (String verificationId, int? resendToken) { + super.requestVerification(); + PhoneLoginPayload.forceResendingtoken = resendToken; + this.verificationId = verificationId; + }, + codeAutoRetrievalTimeout: (String verificationId) {}, + forceResendingToken: PhoneLoginPayload.forceResendingtoken, + ); + } + + @override + void onEvent(MLoginState state) {} +} diff --git a/lib/utils/Login/lib/login_status.dart b/lib/utils/Login/lib/login_status.dart new file mode 100644 index 0000000..d42f428 --- /dev/null +++ b/lib/utils/Login/lib/login_status.dart @@ -0,0 +1,17 @@ +abstract class MLoginState {} + +class MProgress extends MLoginState {} + +class MVerificationPending extends MLoginState { + // final String target; + + MVerificationPending(); +} + +class MSuccess extends MLoginState {} + +class MFail extends MLoginState { + final dynamic error; + + MFail(this.error); +} diff --git a/lib/utils/Login/lib/login_system.dart b/lib/utils/Login/lib/login_system.dart new file mode 100644 index 0000000..15e2f60 --- /dev/null +++ b/lib/utils/Login/lib/login_system.dart @@ -0,0 +1,130 @@ +import 'package:ebroker/utils/Login/lib/payloads.dart'; +import 'package:firebase_auth/firebase_auth.dart'; + +import 'login_status.dart'; + +abstract class LoginSystem { + List listeners = []; + FirebaseAuth firebaseAuth = FirebaseAuth.instance; + + //This is abstract method it will be called when state of login change it means when emit method will be called it will called + void onEvent(MLoginState state); + + ///This emit method will change state of login and notify all listeners and call onEvent method + void emit(MLoginState state) { + ///Loop through all listeners and call them + for (Function(MLoginState fn) i in listeners) { + i.call(state); + } + onEvent(state); + } + + Future requestVerification() async { + emit(MVerificationPending()); + } + + LoginPayload? payload; + + //This will set login payload it means it will set necessary data while login like its email , password or anything else + void setPayload(LoginPayload payload) { + this.payload = payload; + } + + ///This method will be called when initialize this + void init() {} + + ///Here will be implementation of the main login method, it will return usercredentials + Future login(); +} + +///From this we will be able to use this login . [this is for single authentication . if you use this you must have to create instance of every login system individually] +class MAuthentication { + LoginPayload? payload; + final LoginSystem system; + MAuthentication(this.system, {this.payload}); + + //This will call login system's init method + void init() { + system.init(); + } + + ///this login call will execute login method of login system which is being assigned + Future? login() async { + //assign payload to system from constructor + system.payload = payload; + + UserCredential? credential = await system.login(); + //Return its response + return credential; + } +} + +///This is used for multiple authentication system like you do not have to create all system's instance again and again +class MMultiAuthentication { + MultiLoginPayload? payload; + Map systems; + String? _selectedLoginSystem; + + MMultiAuthentication( + this.systems, { + this.payload, + }); + + ///This init will call all login system's init method by loop + void init() { + for (LoginSystem loginSystem in systems.values) { + loginSystem.init(); + } + } + + requestVerification() { + systems.forEach((String key, LoginSystem value) async { + //like assign the particular payload if key is matching to selected login system + LoginSystem? selectedSystem; + if (_selectedLoginSystem == key) { + selectedSystem = systems[key]; + selectedSystem?.payload = payload?.payloads[key]; + selectedSystem?.requestVerification(); + } + }); + } + + ///This method ensures which login system is active + void setActive(String key) { + _selectedLoginSystem = key; + } + + ///This will listen changes in state + void listen(Function(MLoginState state) fn) { + systems.forEach((String key, LoginSystem value) async { + // if (_selectedLoginSystem == key) { + // systems[key]?.payload = payload?.payloads[key]; + systems[key]?.listeners.add(fn); + // } + }); + } + + ///This method will called for login + Future? login() async { + if (_selectedLoginSystem == "" || _selectedLoginSystem == null) { + throw "Please select login system using setActive method"; + } + LoginSystem? selectedSystem; + + //assign payload and login system + systems.forEach((String key, LoginSystem value) async { + //like assign the particular payload if key is matching to selected login system + if (_selectedLoginSystem == key) { + systems[key]?.payload = payload?.payloads[key]; + selectedSystem = systems[key]; + } + }); + + UserCredential? credential; + if (selectedSystem != null) { + credential = await selectedSystem?.login(); + } + + return credential; + } +} diff --git a/lib/utils/Login/lib/payloads.dart b/lib/utils/Login/lib/payloads.dart new file mode 100644 index 0000000..4ada10f --- /dev/null +++ b/lib/utils/Login/lib/payloads.dart @@ -0,0 +1,37 @@ +abstract class LoginPayload {} + +class MultiLoginPayload { + final Map payloads; + + MultiLoginPayload(this.payloads); +} + +enum EmailLoginType { login, signup } + +class EmailLoginPayload extends LoginPayload { + final String email; + final String password; + final EmailLoginType type; + + EmailLoginPayload( + {required this.email, required this.password, required this.type}); +} + +class GoogleLoginPayload extends LoginPayload { + GoogleLoginPayload(); +} + +class PhoneLoginPayload extends LoginPayload { + final String phoneNumber; + final String countryCode; + static int? forceResendingtoken; + String? otp; + PhoneLoginPayload(this.phoneNumber, this.countryCode); + void setOTP(String value) { + this.otp = value; + } + + String? getOTP() { + return otp; + } +} diff --git a/lib/utils/Lottie/lottieEditor.dart b/lib/utils/Lottie/lottieEditor.dart new file mode 100644 index 0000000..19d263a --- /dev/null +++ b/lib/utils/Lottie/lottieEditor.dart @@ -0,0 +1,258 @@ +import 'dart:convert'; +import 'dart:typed_data'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart' show rootBundle; + +class LottieEditor { + final ValueNotifier?> _lottieNotifier = + ValueNotifier>({}); + Map? get lottieJson => _lottieNotifier.value; + ValueNotifier?> get listener => _lottieNotifier; + LottieEditor() {} + + ///This is to load lottie file put here asset file path + ///CALL THIS FIRST-> + Future openAndLoad(String path) async { + try { + final String data = await rootBundle.loadString(path); + final Map lottieJson = json.decode(data); + _updateLottieJson(lottieJson); + } catch (e) { + _handleError("Error opening and loading Lottie file", e); + } + } + + ////This function is used to modify all colors of lottie with their opacity + ////USE THIS--> + void changeWholeLottieFileColor(Color targetColor) { + if (lottieJson != null) { + final Map modifiedJson = + modifyColorsRecursive(lottieJson!, targetColor); + _updateLottieJson(modifiedJson); + } else {} + } + + ////This file is to modify colors by their shape name; [Useful for multiple color lottie] + void changeColorsOfShapeNames(List shapeNames, Color targetColor) { + if (lottieJson != null) { + final Map modifiedJson = + modifyColorsByShapeNames(lottieJson!, shapeNames, targetColor); + _updateLottieJson(modifiedJson); + } else {} + } + + ///This will convert json to UINT8 + ///USE THIS TO DISPLAY LOTTIE + + Uint8List convertToUint8List() { + if (lottieJson != null) { + return Uint8List.fromList(utf8.encode(json.encode(lottieJson))); + } else { + print("Lottie file not loaded. Call openAndLoad() first."); + return Uint8List(0); // Return an empty list or handle as needed + } + } + + // Private method to modify colors recursively + Map modifyColorsRecursive( + Map json, Color targetColor) { + final List layers = json['layers'] ?? []; + + for (dynamic layer in layers) { + _modifyLayerColors(layer, targetColor); + } + return json; + } + + // Private method to modify colors by shape names + Map modifyColorsByShapeNames( + Map json, List shapeNames, Color targetColor) { + final List layers = json['layers'] ?? []; + for (final dynamic layer in layers) { + _modifyLayerColorsByShapeNames(layer, shapeNames, targetColor); + } + return json; + } + + // Private method to modify colors within a layer + void _modifyLayerColors(dynamic layer, Color targetColor) { + final List shapes = layer['shapes'] ?? []; + for (final dynamic shape in shapes) { + _loopShapes(shape, targetColor); + // log("SHAPE NAMEEE $shape"); + // if (shape['ty'] == 'fl' || shape['ty'] == 'st') { + // log("HEHE COLOR ISS $shape"); + // shape['c'] = _flutterColorToLottie(targetColor); + // } else if (shape['ty'] == 'gr') { + // log("COLORS GG"); + // _modifyLayerColors(shape['it'], targetColor); + // } + } + } + + void _loopShapes(Map shape, targetColor) { + List shapes = shape['it'] ?? []; + for (var element in shapes) { + if (element['ty'] == "fl") { + element['c'] = _flutterColorToLottie(targetColor); + } else if (element['ty'] == "gr") { + _loopShapes(element, targetColor); + } else if (element['ty'] == "st") { + element['c'] = _flutterColorToLottie(targetColor); + } + } + } + + // Private method to modify colors within a layer based on shape names + void _modifyLayerColorsByShapeNames( + dynamic layer, List shapeNames, Color targetColor) { + final List shapes = layer['shapes'] ?? []; + for (final dynamic shape in shapes) { + if (shape['ty'] == 'fl' || shape['ty'] == 'st') { + final String shapeName = shape['nm']; + + if (shapeNames.contains(shapeName)) { + shape['c'] = _flutterColorToLottie(targetColor); + } + } else if (shape['ty'] == 'gr') { + _modifyLayerColorsByShapeNames(shape, shapeNames, targetColor); + } + } + } + + // Private method to handle errors + void _handleError(String message, dynamic error) { + print("$message: $error"); + // You can choose to throw an exception, log the error, or handle it differently. + } + + // Private method to update the Lottie JSON and notify listeners + void _updateLottieJson(Map modifiedJson) { + _lottieNotifier.value = modifiedJson; + } + + // Private method to convert Flutter color to Lottie color format + Map _flutterColorToLottie(Color flutterColor) { + final double red = flutterColor.red / 255.0; + final double green = flutterColor.green / 255.0; + final double blue = flutterColor.blue / 255.0; + final double alpha = flutterColor.opacity; + + return { + 'a': 0, + 'k': [red, green, blue, alpha], + 'ix': 4, + }; + } + + // Dispose method to release resources + void dispose() { + _lottieNotifier.dispose(); + } +} + +/*** + * + * //THIS IS EXPERIMENTAL + Future extractLayersInfo(BuildContext context) async { + try { + final ByteData data = await rootBundle.load("assets/lottie/onbo_a.json"); + final LottieComposition composition = + await LottieComposition.fromByteData(data); + recurs(composition.layers); + log({"layers": composition.layers, "": composition.name}.toString()); + } catch (e) { + print('Error loading Lottie file: $e'); + } + } + + recurs(List layers) { + for (Layer layer in layers) { + log("LAYER : ${layer.name} ${layer.id}"); + shapeGroupRecurs(layer.shapes); + } + } + + shapeGroupRecurs(List shapes) { + for (ContentModel element in shapes) { + log("ELEMENT ISS $element"); + + if (element is ShapeGroup) { + shapeGroupRecurs(element.items); + + log(" SHAPE GROUP: ${element.name}"); + } + + if (element is ShapePath) { + log("SHAPE PATH: ${element.name} ${element}"); + } + + if (element is ShapeFill) { + shapes.remove(element); + log("SHAPE FILL: ${element.name} ${element.color}"); + } + } + } + + Future modifyLottieColors() async { + try { + final String data = + await rootBundle.loadString("assets/lottie/onbo_a.json"); + var lottieJson = json.decode(data); + + modifyColorsRecursive(lottieJson); + + // Log the modified JSON + log("Modified Lottie JSON: $lottieJson"); + Uint8List uint8List = + Uint8List.fromList(utf8.encode(json.encode(lottieJson))); + setState(() { + lottiesss = uint8List; + }); + } catch (e, st) { + log("Error modifying Lottie colors: $e, $st"); + } + } + + void modifyColorsRecursive(Map json) { + List layers = json['layers']; + for (var element in layers) { + loopLayers(element); + } + } + + void loopLayers(Map layer) { + List shapes = layer['shapes'] ?? []; + for (var element in shapes) { + loopShapes(element); + } + } + + void loopShapes(Map shape) { + List shapes = shape['it'] ?? []; + for (var element in shapes) { + if (element['ty'] == "fl") { + log("FILLLLLL $element"); + element['c'] = flutterColorToLottie(context.color.teritoryColor); + } else if (element['ty'] == "gr") { + loopShapes(element); + } else if (element['ty'] == "st") { + element['c'] = flutterColorToLottie(context.color.teritoryColor); + } + } + } + + Map flutterColorToLottie(Color flutterColor) { + double red = flutterColor.red / 255.0; + double green = flutterColor.green / 255.0; + double blue = flutterColor.blue / 255.0; + double alpha = flutterColor.opacity; + + return { + 'a': 0, + 'k': [red, green, blue, alpha], + 'ix': 4, + }; + } + */ diff --git a/lib/utils/Network/.DS_Store b/lib/utils/Network/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0d48c14f57a481b52c54030b2c0b4fdb2eeaff26 GIT binary patch literal 6148 zcmeHKyG{c^3>-s>NTf(fxxc_4tfEj*=Lb>{(Vz77oW!XA*9oVf`SH(CGYHd zJwDwO=Q9A?yg%LnYXD2SBhJ3e&F|f3c2yB0(plq#R~+zyHymf#mjljS;Q<3VhY6px zK6a$;g3P=GdAO(J$;=s=##~*WUl{=|9Z>Q<6?nKnnaT1#Ge1Z8vaDYv^IqHNd%EX*(%rZZ3YTcd k#AwGncsst0q|9r+=Y2066NAop(24pPa9w0l;I9?<0?c<7qW}N^ literal 0 HcmV?d00001 diff --git a/lib/utils/Network/Interseptors/network_request_interseptor.dart b/lib/utils/Network/Interseptors/network_request_interseptor.dart new file mode 100644 index 0000000..205bfed --- /dev/null +++ b/lib/utils/Network/Interseptors/network_request_interseptor.dart @@ -0,0 +1,69 @@ +import 'dart:convert'; + +import 'package:dio/dio.dart'; +import 'package:ebroker/utils/Extensions/extensions.dart'; + +class NetworkRequestInterseptor extends Interceptor { + int totalAPICallTimes = 0; + + @override + void onRequest(RequestOptions options, RequestInterceptorHandler handler) { + Map map = {}; + + if (options.data != null) { + map = (Map.fromEntries((options.data ?? {} as FormData).fields) + ..addEntries(Iterable.castFrom((options.data as FormData).files))); + } + + // totalAPICallTimes++; + // ({ + // "URL": options.path, + // "Parameters": options.method == "POST" ? map : options.queryParameters, + // "Method": options.method, + // "_total_api_calls": totalAPICallTimes + // }).mlog("Request-API"); + // try { + // String prettyJsonEncode = _prettyJsonEncode(options.data); + // print("ENCODED ${json.encode(options.data)}"); + // print(prettyJsonEncode); + // } catch (e) { + // print("INTERSEPTOR ERROR $e"); + // } + + handler.next(options); + } + + @override + void onError(DioError err, ErrorInterceptorHandler handler) { + ({ + "URL": err.response?.requestOptions.path ?? "", + "Type": err.type, + "Error": err.error, + "Message": err.message, + }).mlog("API-Error"); + + handler.next(err); + } + + @override + void onResponse(Response response, ResponseInterceptorHandler handler) { + ({ + "URL": response.requestOptions.path, + "Method": response.requestOptions.method, + "status": response.statusCode, + "statusMessage": response.statusMessage, + "response": response.data, + }).mlog("Response-API"); + handler.next(response); + } +} + +String _prettyJsonEncode(dynamic data) { + try { + const encoder = JsonEncoder.withIndent(' '); + final jsonString = encoder.convert(data); + return jsonString; + } catch (e) { + return data.toString(); + } +} diff --git a/lib/utils/Network/Interseptors/throttelIntercepter.dart b/lib/utils/Network/Interseptors/throttelIntercepter.dart new file mode 100644 index 0000000..8d1e378 --- /dev/null +++ b/lib/utils/Network/Interseptors/throttelIntercepter.dart @@ -0,0 +1,49 @@ +import 'package:dio/dio.dart'; + +///In case there is rapidly API call request.. this will stop them +class ThrottleInterceptor extends Interceptor { + // Map to store the last request timestamp for each API endpoint + final Map _lastRequestTimestamps = {}; + + // Minimum time interval between requests (in milliseconds) + final int minInterval; + + ThrottleInterceptor({required this.minInterval}); + + @override + Future onRequest( + RequestOptions options, RequestInterceptorHandler handler) async { + // Get the key for the current API endpoint (you can customize this based on your needs) + String apiEndpointKey = options.path; + + // Check if the last request for this API endpoint was made within the specified interval + if (_isRequestThrottled(apiEndpointKey)) { + // Do not proceed with the request + handler.reject(DioError( + requestOptions: options, + error: 'Request throttled. Please wait before making another request.', + )); + return; + } + + // Store the current timestamp for this API endpoint + _lastRequestTimestamps[apiEndpointKey] = DateTime.now(); + + // Proceed with the request + handler.next(options); + } + + bool _isRequestThrottled(String apiEndpointKey) { + if (_lastRequestTimestamps.containsKey(apiEndpointKey)) { + DateTime lastRequestTime = _lastRequestTimestamps[apiEndpointKey]!; + DateTime currentTime = DateTime.now(); + int elapsedTime = currentTime.difference(lastRequestTime).inMilliseconds; + + // Check if the elapsed time is less than the minimum interval + return elapsedTime < minInterval; + } + + // No previous request for this API endpoint + return false; + } +} diff --git a/lib/utils/Network/apiCallTrigger.dart b/lib/utils/Network/apiCallTrigger.dart new file mode 100644 index 0000000..6d73eb6 --- /dev/null +++ b/lib/utils/Network/apiCallTrigger.dart @@ -0,0 +1,15 @@ +import 'dart:ui'; + +class APICallTrigger { + APICallTrigger._(); + static List _triggerableList = []; + static void onTrigger(VoidCallback fn) { + _triggerableList.add(fn); + } + + static void trigger() { + for (VoidCallback i in _triggerableList) { + i.call(); + } + } +} diff --git a/lib/utils/Network/networkAvailability.dart b/lib/utils/Network/networkAvailability.dart new file mode 100644 index 0000000..1cfec22 --- /dev/null +++ b/lib/utils/Network/networkAvailability.dart @@ -0,0 +1,16 @@ +import 'package:connectivity_plus/connectivity_plus.dart'; + +class CheckInternet { + CheckInternet(); + static Connectivity connectivity = Connectivity(); + static Future check( + {required Function() onInternet, Function()? onNoInternet}) async { + ConnectivityResult connectivityResult = + await connectivity.checkConnectivity(); + if (connectivityResult == ConnectivityResult.none) { + onNoInternet?.call(); + } else { + onInternet.call(); + } + } +} diff --git a/lib/utils/Notification/awsomeNotification.dart b/lib/utils/Notification/awsomeNotification.dart new file mode 100644 index 0000000..0ed839f --- /dev/null +++ b/lib/utils/Notification/awsomeNotification.dart @@ -0,0 +1,213 @@ +// ignore_for_file: file_names + +import 'dart:async'; +import 'dart:math'; + +import 'package:awesome_notifications/awesome_notifications.dart'; +import 'package:ebroker/Ui/screens/chat/chat_screen.dart'; +import 'package:ebroker/app/routes.dart'; +import 'package:ebroker/data/Repositories/property_repository.dart'; +import 'package:ebroker/data/cubits/chatCubits/delete_message_cubit.dart'; +import 'package:ebroker/data/model/data_output.dart'; +import 'package:ebroker/data/model/property_model.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../data/cubits/chatCubits/load_chat_messages.dart'; +import '../constant.dart'; +import '../helper_utils.dart'; + +class LocalAwsomeNotification { + AwesomeNotifications notification = AwesomeNotifications(); + void init(BuildContext context) { + requestPermission(); + + notification.initialize( + null, + [ + NotificationChannel( + channelKey: Constant.notificationChannel, + channelName: 'Basic notifications', + channelDescription: 'Notification channel', + importance: NotificationImportance.Max, + ledColor: Colors.grey), + NotificationChannel( + channelKey: "Chat Notification", + channelName: 'Chat Notifications', + channelDescription: 'Chat Notifications', + importance: NotificationImportance.Max, + ledColor: Colors.grey) + ], + channelGroups: [], + ); + listenTap(context); + } + + void listenTap(BuildContext context) { + AwesomeNotifications().setListeners( + onNotificationCreatedMethod: + NotificationController.onNotificationCreatedMethod, + onDismissActionReceivedMethod: + NotificationController.onDismissActionReceivedMethod, + onNotificationDisplayedMethod: + NotificationController.onNotificationDisplayedMethod, + onActionReceivedMethod: NotificationController.onActionReceivedMethod, + ); + } + + createNotification( + {required RemoteMessage notificationData, required bool isLocked}) async { + try { + bool isChat = notificationData.data["type"] == "chat"; + + int chatId = int.parse(notificationData.data['sender_id']) + + int.parse(notificationData.data['property_id']); + + await notification.createNotification( + content: NotificationContent( + id: isChat ? chatId : Random().nextInt(5000), + title: notificationData.data["title"], + + // icon: AppIcons.aboutUs, + hideLargeIconOnExpand: true, + summary: notificationData.data["type"] == "chat" + ? "${notificationData.data['username']}" + : null, + locked: isLocked, + payload: Map.from(notificationData.data), + autoDismissible: true, + + body: notificationData.data["body"], + wakeUpScreen: true, + + notificationLayout: notificationData.data["type"] == "chat" + ? NotificationLayout.MessagingGroup + : NotificationLayout.Default, + groupKey: notificationData.data["id"], + channelKey: notificationData.data["type"] == "chat" + ? "Chat Notification" + : Constant.notificationChannel, + ), + ); + } catch (e) { + rethrow; + } + } + + Future requestPermission() async { + NotificationSettings notificationSettings = + await FirebaseMessaging.instance.getNotificationSettings(); + + if (notificationSettings.authorizationStatus == + AuthorizationStatus.notDetermined) { + await notification.requestPermissionToSendNotifications( + channelKey: Constant.notificationChannel, + permissions: [ + NotificationPermission.Alert, + NotificationPermission.Sound, + NotificationPermission.Badge, + NotificationPermission.Vibration, + NotificationPermission.Light + ], + ); + await notification.requestPermissionToSendNotifications( + channelKey: "Chat Notification", + permissions: [ + NotificationPermission.Alert, + NotificationPermission.Sound, + NotificationPermission.Badge, + NotificationPermission.Vibration, + NotificationPermission.Light + ], + ); + if (notificationSettings.authorizationStatus == + AuthorizationStatus.authorized || + notificationSettings.authorizationStatus == + AuthorizationStatus.provisional) {} + } else if (notificationSettings.authorizationStatus == + AuthorizationStatus.denied) { + return; + } + } +} + +class NotificationController { + /// Use this method to detect when a new notification or a schedule is created + @pragma("vm:entry-point") + static Future onNotificationCreatedMethod( + ReceivedNotification receivedNotification) async {} + + /// Use this method to detect every time that a new notification is displayed + @pragma("vm:entry-point") + static Future onNotificationDisplayedMethod( + ReceivedNotification receivedNotification) async {} + + /// Use this method to detect if the user dismissed a notification + @pragma("vm:entry-point") + static Future onDismissActionReceivedMethod( + ReceivedAction receivedAction) async {} + + /// Use this method to detect when the user taps on a notification or action button + @pragma("vm:entry-point") + static Future onActionReceivedMethod( + ReceivedAction receivedAction) async { + Map? payload = receivedAction.payload; + + if (payload?['type'] == "chat") { + var username = payload?['username']; + var propertyTitleImage = payload?['property_title_image']; + var propertyTitle = payload?['title']; + var userProfile = payload?['user_profile']; + var senderId = payload?['sender_id']; + var propertyId = payload?['property_id']; + Future.delayed( + Duration.zero, + () { + Navigator.push(Constant.navigatorKey.currentContext!, + MaterialPageRoute( + builder: (context) { + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => LoadChatMessagesCubit(), + ), + BlocProvider( + create: (context) => DeleteMessageCubit(), + ), + ], + child: Builder(builder: (context) { + return ChatScreen( + profilePicture: userProfile!, + userName: username ?? "", + propertyImage: propertyTitleImage ?? "", + proeprtyTitle: propertyTitle ?? "", + userId: senderId ?? "", + propertyId: propertyId ?? ""); + }), + ); + }, + )); + }, + ); + } else { + String id = receivedAction.payload?["id"] ?? ""; + + DataOutput property = + await PropertyRepository().fetchPropertyFromPropertyId(id); + + Future.delayed( + Duration.zero, + () { + HelperUtils.goToNextPage(Routes.propertyDetails, + Constant.navigatorKey.currentContext!, false, + args: { + 'propertyData': property.modelList[0], + 'propertiesList': property.modelList, + 'fromMyProperty': false, + }); + }, + ); + } + } +} diff --git a/lib/utils/Notification/chat_message_handler.dart b/lib/utils/Notification/chat_message_handler.dart new file mode 100644 index 0000000..7d5c81f --- /dev/null +++ b/lib/utils/Notification/chat_message_handler.dart @@ -0,0 +1,146 @@ +import 'dart:async'; +import 'dart:developer'; + +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../Ui/screens/chat/chatAudio/widgets/chat_widget.dart'; +import '../Extensions/extensions.dart'; +import '../ui_utils.dart'; + +int sentMessages = 0; + +class ChatMessageHandlerOLD { + static List messages = []; + static final List _chat = []; + static final StreamController> _chatMessageStream = + StreamController>.broadcast(); + + static void add(chat) { + List msgs = (messages); + + _chat.insert(0, chat); + + ///don't change this line + msgs = [..._chat, ...msgs]; + _chatMessageStream.sink.add(msgs); + } + + static void loadMessages(List chats, BuildContext context) { + List messagesWithDate = []; + String previousDate = ""; + // Get the current date and time + DateTime now = DateTime.now(); + DateTime today = DateTime(now.year, now.month, now.day); + DateTime yesterday = today.subtract(const Duration(days: 1)); + + for (int i = chats.length - 1; i >= 0; i--) { + DateTime date = DateTime.parse((chats[i] as ChatMessage).time).toLocal(); + String formattedDate; + + if (date.isAfter(today)) { + formattedDate = UiUtils.translate(context, "today"); + } else if (date.isAfter(yesterday)) { + formattedDate = UiUtils.translate(context, "yesterday"); + } else { + formattedDate = (date.toString()).formatDate(); + } + + // Add date widget if date has changed + if (formattedDate != previousDate) { + messagesWithDate.insert(0, messageDateChip(context, formattedDate)); + previousDate = formattedDate; + } + + // Add message widget + messagesWithDate.insert(0, chats[i]); + } + + // Update the messages list and sink the new messages to the stream + messages = messagesWithDate; + // messages = chats; //uncomment and comment above code if problem in chat + _chatMessageStream.sink.add(messages); + } + + static Widget messageDateChip(BuildContext context, String formattedDate) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Center( + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(7), + color: context.color.tertiaryColor.withOpacity(0.3)), + child: Padding( + padding: const EdgeInsets.all(5.0), + child: Text(formattedDate), + ), + )), + ); + } + + static void flushMessages() { + messages.clear(); + _chat.clear(); + } + + static Stream getChatStream() { + return _chatMessageStream.stream; + } + + static attachListener(void Function(dynamic)? onData) { + _chatMessageStream.stream.listen(onData); + } + + static removeMessage(int id) { + List msgs = (messages); + msgs.removeWhere((element) { + if (element is! Padding) { + return ((element as ChatMessage).key as ValueKey).value == id; + } + return false; + }); + + _chatMessageStream.sink.add(msgs); + } + + ///This will replace message's key with server key so we will be able to delete message if we want + static updateMessageId(String identifier, int id) { + try { + List msgs = _chat; + for (var i = 0; i < _chat.length; i++) { + //We will only need to change its key when it is bloc provider because we added it locally and its key was also locally so we have to replace it with server key when message send complete + if (msgs[i] is BlocProvider) { + ///Extracting chate message from bloc provider + Widget? bloc = (msgs[i] as BlocProvider).child; + ChatMessage chat = (bloc as ChatMessage); + + ///Extracting its key [which we were added locally] + String chatKey = (chat.key as ValueKey).value; + + ///This identifier will come from ChatMessage's key when message send success. + ///this identifier must be same as chatKey because we want exact element to change + if (identifier == chatKey) { + ///Converting chat class to map and replace its key and again convert it to ChatMessage class + var map = chat.toMap(); + map['key'] = ValueKey(id); + + try { + ChatMessage chatMessage = ChatMessage.fromMap(map); + + ///Replace it with old one + _chat[i] = chatMessage; + } catch (e) { + log("THIS IS ERRRORR $e"); + } + + ///This will add chats in first and old messages in last... + msgs = [..._chat, ...messages]; + _chatMessageStream.sink.add(msgs); + } + } + } + } catch (e) { + log("ERROS IS AT $e"); + } + } +} diff --git a/lib/utils/Notification/notification_service.dart b/lib/utils/Notification/notification_service.dart new file mode 100644 index 0000000..116af2c --- /dev/null +++ b/lib/utils/Notification/notification_service.dart @@ -0,0 +1,217 @@ +// ignore_for_file: file_names + +import 'dart:async'; +import 'dart:developer'; + +import 'package:ebroker/Ui/screens/ChatNew/MessageTypes/registerar.dart'; +import 'package:ebroker/data/model/chat/chated_user_model.dart'; +import 'package:ebroker/utils/Notification/chat_message_handler.dart'; +import 'package:firebase_messaging/firebase_messaging.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import '../../Ui/screens/ChatNew/model.dart'; +import '../../Ui/screens/chat/chat_screen.dart'; +import '../../app/routes.dart'; +import '../../data/Repositories/property_repository.dart'; +import '../../data/cubits/chatCubits/get_chat_users.dart'; +import '../../data/cubits/chatCubits/load_chat_messages.dart'; +import '../../data/model/data_output.dart'; +import '../../data/model/property_model.dart'; +import '../constant.dart'; +import '../helper_utils.dart'; +import 'awsomeNotification.dart'; + +String currentlyChatingWith = ""; +String currentlyChatPropertyId = ""; + +class NotificationService { + static FirebaseMessaging messagingInstance = FirebaseMessaging.instance; + + static LocalAwsomeNotification localNotification = LocalAwsomeNotification(); + + static late StreamSubscription foregroundStream; + static late StreamSubscription onMessageOpen; + static requestPermission() async {} + + void updateFCM() async { + await FirebaseMessaging.instance.getToken(); + // await Api.post( + // // url: Api.updateFCMId, + // parameter: {Api.fcmId: token}, + // useAuthToken: true); + } + + static handleNotification(RemoteMessage? message, [BuildContext? context]) { + var notificationType = message?.data['type'] ?? ""; + + log("@notificaiton data is ${message?.data}"); + + if (notificationType == "chat") { + var senderId = message?.data['sender_id'] ?? ""; + var chatMessage = message?.data['message'] ?? ""; + var attachment = message?.data['file'] ?? ""; + var audioMessage = message?.data['audio'] ?? ""; + var time = message?.data['date'] ?? ""; + var username = message!.data['username']; + var propertyTitleImage = message.data['property_title_image']; + var propertyTitle = message.data['title']; + var userProfile = message.data['user_profile']; + var propertyId = message.data['property_id']; + + (context as BuildContext).read().addNewChat(ChatedUser( + fcmId: "", + firebaseId: "", + name: username, + profile: userProfile, + propertyId: + (propertyId is int) ? propertyId : int.parse(propertyId), + title: propertyTitle, + userId: (senderId is int) ? senderId : int.parse(senderId), + titleImage: propertyTitleImage, + )); + + ///Checking if this is user we are chatiing with + if (senderId == currentlyChatingWith && + propertyId == currentlyChatPropertyId) { + ChatMessageModel chatMessageModel = + ChatMessageModel.fromJson(message.data); + chatMessageModel.setIsSentByMe(false); + chatMessageModel.setIsSentNow(false); + ChatMessageHandler.add(chatMessageModel); + // ChatMessageHandlerOLD.add( + // Builder(builder: (context) { + // return ChatMessage( + // key: ValueKey(DateTime.now().toString().toString()), + // message: chatMessage, + // isSentByMe: false, + // propertyId: "", + // reciverId: "", + // isChatAudio: audioMessage != null && audioMessage != "", + // audioFile: audioMessage, + // attachment: attachment, + // hasAttachment: attachment != "" && attachment != null, + // senderId: senderId, + // time: time, + // ); + // }), + // ); + totalMessageCount++; + } else { + localNotification.createNotification( + isLocked: false, + notificationData: message, + ); + } + } else if (notificationType == "delete_message") { + ChatMessageHandlerOLD.removeMessage( + int.parse(message!.data['message_id'])); + } else { + localNotification.createNotification( + isLocked: false, notificationData: message!); + } + } + + static void init(context) { + requestPermission(); + registerListeners(context); + } + + static Future onBackgroundMessageHandler(RemoteMessage message) async { + if (message.notification == null) { + handleNotification( + message, + ); + } + } + + static forgroundNotificationHandler(BuildContext context) async { + foregroundStream = + FirebaseMessaging.onMessage.listen((RemoteMessage message) { + handleNotification(message, context); + }); + } + + static terminatedStateNotificationHandler(BuildContext context) { + FirebaseMessaging.instance.getInitialMessage().then( + (RemoteMessage? message) { + if (message == null) { + return; + } + if (message.notification == null) { + handleNotification(message, context); + } + }, + ); + } + + static void onTapNotificationHandler(context) { + onMessageOpen = FirebaseMessaging.onMessageOpenedApp + .listen((RemoteMessage message) async { + if (message.data['type'] == "chat") { + var username = message.data['title']; + var propertyTitleImage = message.data['property_title_image']; + var propertyTitle = message.data['property_title']; + var userProfile = message.data['user_profile']; + var senderId = message.data['sender_id']; + var propertyId = message.data['property_id']; + Future.delayed( + Duration.zero, + () { + Navigator.push(Constant.navigatorKey.currentContext!, + MaterialPageRoute( + builder: (context) { + return BlocProvider( + create: (context) { + return LoadChatMessagesCubit(); + }, + child: Builder(builder: (context) { + return ChatScreen( + profilePicture: userProfile ?? "", + userName: username ?? "", + propertyImage: propertyTitleImage ?? "", + proeprtyTitle: propertyTitle ?? "", + userId: senderId ?? "", + propertyId: propertyId ?? "", + ); + }), + ); + }, + )); + }, + ); + } else { + String id = message.data["id"] ?? ""; + DataOutput property = + await PropertyRepository().fetchPropertyFromPropertyId(id); + Future.delayed(Duration.zero, () { + HelperUtils.goToNextPage(Routes.propertyDetails, + Constant.navigatorKey.currentContext!, false, + args: { + 'propertyData': property.modelList[0], + 'propertiesList': property.modelList, + 'fromMyProperty': false, + }); + }); + } + } + // if (message.data["screen"] == "profile") { + // Navigator.pushNamed(context, profileRoute); + // } + + ); + } + + static Future registerListeners(context) async { + FirebaseMessaging.instance.setForegroundNotificationPresentationOptions( + alert: true, badge: true, sound: true); + await forgroundNotificationHandler(context); + await terminatedStateNotificationHandler(context); + onTapNotificationHandler(context); + } + + static void disposeListeners() { + onMessageOpen.cancel(); + foregroundStream.cancel(); + } +} diff --git a/lib/utils/VideoPlayer/video_player_widget.dart b/lib/utils/VideoPlayer/video_player_widget.dart new file mode 100644 index 0000000..6e38172 --- /dev/null +++ b/lib/utils/VideoPlayer/video_player_widget.dart @@ -0,0 +1,88 @@ +import 'package:ebroker/utils/VideoPlayer/ytb.dart'; +import 'package:ebroker/utils/helper_utils.dart'; +import 'package:flick_video_player/flick_video_player.dart'; +import 'package:flutter/material.dart'; +import 'package:video_player/video_player.dart'; +import 'package:youtube_explode_dart/youtube_explode_dart.dart'; + +class VideoPlayerWideget extends StatefulWidget { + final String url; + final EdgeInsetsGeometry? padding; + const VideoPlayerWideget({super.key, required this.url, this.padding}); + + @override + State createState() => _VideoPlayerWidegetState(); +} + +class _VideoPlayerWidegetState extends State { + YoutubeExplode youtubeExplode = YoutubeExplode(); + String? url; + + getYoutubeVideo(url) async { + try { + Video video = await youtubeExplode.videos.get(url); + StreamManifest manifest = + await youtubeExplode.videos.streams.getManifest(video.id.value); + + MuxedStreamInfo videoQuality = + manifest.muxed.sortByVideoQuality().bestQuality; + print("QUALITY IS ${videoQuality.url}"); + url = videoQuality.url.toString(); + _flickmanager = FlickManager( + autoPlay: false, + videoPlayerController: + VideoPlayerController.networkUrl(videoQuality.url)); + setState(() {}); + } catch (e) { + print("ISSU IS $e"); + } + } + + Future getYoutubeVideoQualityUrls() async { + Video? video = + await YtbRepo().getVideoMetadata("https://youtu.be/lSf5ThEETPk"); + + List list = await YtbRepo().getMuxed(video.id.value); + print("List map is $list"); + } + + bool isYoutube(String url) { + return HelperUtils.isYoutubeVideo(url); + } + + FlickManager? _flickmanager; + @override + void initState() { + if (isYoutube(widget.url)) { + getYoutubeVideo(widget.url); + } else { + _flickmanager = FlickManager( + autoPlay: false, + videoPlayerController: + VideoPlayerController.networkUrl(Uri.parse(widget.url))); + setState(() {}); + } + super.initState(); + } + + @override + void dispose() { + _flickmanager?.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + if (_flickmanager != null) { + return Padding( + padding: widget.padding ?? EdgeInsets.zero, + child: FlickVideoPlayer( + flickManager: _flickmanager!, + ), + ); + } + return Container( + height: 0, + ); + } +} diff --git a/lib/utils/VideoPlayer/ytb.dart b/lib/utils/VideoPlayer/ytb.dart new file mode 100644 index 0000000..a0cb7fb --- /dev/null +++ b/lib/utils/VideoPlayer/ytb.dart @@ -0,0 +1,44 @@ +import 'package:youtube_explode_dart/youtube_explode_dart.dart'; + +class YtbRepo { + var yt = YoutubeExplode(); + Future_Yfsd!{Pc1GNgw}(^~%)jk5~0L~ms|Rez1fiK~s5t(p1ci5Gq$JC#^JrXf?8 z-Y-Zi_Hvi>oBzV8DSRG!7dm|%IlZg3^0{5~;>)8-+Nk&EhAd(}s^7%MuU}lphNW9Q zT)DPo(ob{tB7_?u;4-qGDo!sh&7gHaJfkh43QwL|bbFVi@+oy;i;M zM&CP^v~lx1U`pi9PmSr&Mc<%HAq0DGH?Ft95)WY`P?~7O z`O^Nr{Py9M#Ls4Y7OM?e%Y*Mvrme%=DwQaye^Qut_1pOMrg^!5u(f9p(D%MR%1K>% zRGw%=dYvw@)o}Fw@tOtPjz`45mfpn;OT&V(;z75J*<$52{sB65$gDjwX3Xa!x_wE- z!#RpwHM#WrO*|~f7z}(}o7US(+0FYLM}6de>gQdtPazXz?OcNv4R^oYLJ_BQOd_l172oSK$6!1r@g+B@0ofJ4*{>_AIxfe-#xp>(1 z@Y3Nfd>fmqvjL;?+DmZk*KsfXJf<%~(gcLwEez%>1c6XSboURUh&k=B)MS>6kw9bY z{7vdev7;A}5fy*ZE23DS{J?8at~xwVk`pEwP5^k?XMQ7u64;KmFJ#POzdG#np~F&H ze-BUh@g54)dsS%nkBb}+GuUEKU~pHcYIg4vSo$J(J|U36bs0Use+3A&IMcR%6@jv$ z=+QI+@wW@?iu}Hpyzlvj-EYeop{f65GX0O%>w#0t|V z1-svWk`hU~m`|O$kw5?Yn5UhI%9P-<45A(v0ld1n+%Ziq&TVpBcV9n}L9Tus-TI)f zd_(g+nYCDR@+wYNQm1GwxhUN4tGMLCzDzPqY$~`l<47{+l<{FZ$L6(>J)|}!bi<)| zE35dl{a2)&leQ@LlDxLQOfUDS`;+ZQ4ozrleQwaR-K|@9T{#hB5Z^t#8 zC-d_G;B4;F#8A2EBL58s$zF-=SCr`P#z zNCTnHF&|X@q>SkAoYu>&s9v@zCpv9lLSH-UZzfhJh`EZA{X#%nqw@@aW^vPcfQrlPs(qQxmC|4tp^&sHy!H!2FH5eC{M@g;ElWNzlb-+ zxpfc0m4<}L){4|RZ>KReag2j%Ot_UKkgpJN!7Y_y3;Ssz{9 z!K3isRtaFtQII5^6}cm9RZd5nTp9psk&u1C(BY`(_tolBwzV_@0F*m%3G%Y?2utyS zY`xM0iDRT)yTyYukFeGQ&W@ReM+ADG1xu@ruq&^GK35`+2r}b^V!m1(VgH|QhIPDE X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..b77cd35 --- /dev/null +++ b/web/index.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + eBroker + + + + + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 0000000..bb920a1 --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "ebroker", + "short_name": "ebroker", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +}

    b 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 J?E2DAXjeD?H&A$GDqSf1hyfVQ}uToA4ho z;NiRj4PQGkOERb3P=Gd@OuTk_tKUJiHcG{3P^!Z1^oNa=#E|C zm>8c9h8O{e3#P-kj#+}(JVERV$3$jmmQ-R=twsz>I`ggSy23Fr>99DN_ok<{EfE1W2u%FwN_y05c5A*+&q@5Iy0{=<@TWl^iYrazT*4fK>uWj^8`iHSL n${C^+6QdP#", + "chooseNumber":"Pilih Nomor", + "viewMap":"Lihat di peta", + "yesterday":"Kemarin", + "thisActionNotValidDemo":"Tindakan ini tidak valid dalam mode demo", + "sms":" SMS", + "call":" Panggilan", + "viewProperty":"Lihat Properti", + "articles": "Artikel", + "budgetLbl": "Anggaran(Harga)", + "callBtnLbl": "Panggil", + "camera": "Kamera", + "cancelBtnLbl": "Batal", + "cancelLbl": "Batal", + "report": "Laporan", + "categories": "Kategori", + "categoriesLbl": "Kategori", + "category": "Kategori", + "chooseAdrsLbl": "Pilih Alamat", + "chooseLocation": "Pilih Lokasi", + "city": "Kota", + "clearfilter": "Bersihkan Filter", + "myAds": "Iklan Saya", "transactionHistory": "Riwayat Transaksi", + "clientaddressLbl": "Alamat Klien", + "comfirmAdrsBtnLbl": "Konfirmasi Alamat", + "comfirmBtnLbl": "Konfirmasi", + "companyAdrsLbl": "Alamat", + "companyEmailLbl": "Email", + "sendEmail": "Kirim Email", + "subject":"Subjek", + "completeLbl": "Selesai", + "convert":"Konversi", + "maintenanceModeMessage":"Maaf, kami sedang dalam masa pemeliharaan. Silakan coba lagi nanti.", + "addMainPicture":"Tambahkan Gambar Utama", + "add360degPicture":"Tambahkan Gambar 360 Derajat", + "howCanWeHelp":"Bagaimana kami bisa membantu Anda?", + "itLooksLikeYouHasError":"Sepertinya Anda mengalami masalah dengan sistem kami. Kami di sini untuk membantu Anda, jadi, silakan hubungi kami.", + "uploadPictures":"Unggah Gambar", + "addOtherPicture":"Tambahkan Gambar Lainnya", + "price":"Harga", + "paypal":"Paypal", + "purchaseFailed":"Pembelian paket gagal", + "packageNotValid":"Upgrade untuk Fitur Premium!", + "additionals":"Tambahan", + "packageNotForProperty": "Berlangganan sekarang untuk membuka fitur premium dan tingkatkan pengalaman Anda.", + "confirmDeleteAdvert":"Apakah Anda benar-benar ingin Menghapus Iklan ini?", + "confirmLogOutMsg": "Apakah Anda yakin ingin keluar?", + "confirmLogoutTitle": "Konfirmasi Keluar", + "pleaseChangeNetwork":"Silakan ubah jaringan atau coba mengubah DNS", + "contactUs": "Hubungi kami", + "continue": "Lanjutkan", + "copylink":"Salin tautan", + "country": "Negara", + "uptoDate":"Versi terbaru", + "pressAgainToExit":"Tekan lagi untuk keluar", + "newVersionAvailableForce":"Harap perbarui ke versi terbaru aplikasi kami untuk terus menggunakannya.", + "newVersionAvailable":"Kami menulis untuk memberitahu Anda bahwa versi terbaru aplikasi kami sekarang tersedia. Versi terbaru mencakup beberapa fitur baru dan peningkatan kinerja, serta perbaikan bug untuk membuat aplikasi berjalan lebih lancar.", + "currentPackage": "Paket saat ini", + "darkTheme": "Tema Gelap", + "updateAvailable":"Pembaruan tersedia", + "deactive": "Nonaktifkan", + "ddPropertyLbl": "Tambahkan Properti", + "disabled":"Nonaktif", + "pickSliderImage":"Pilih Gambar Slider", + "featured":"Unggulan", + "somethingWentWrng":"Ada yang salah", + "authExpired":"Otentikasi Kadaluarsa", + "defaultErrorMsg": "Ada yang salah. Silakan coba lagi", + "deleteAccount": "Hapus Akun", + "message":"Obrolan", + "deleteBtnLbl": "Hapus", + "deleteProfileMessageContent": "Anda tidak akan bisa mengembalikannya. Anda akan keluar dan semua sesi aktif akan diakhiri", + "deleteProfileMessageTitle": "Hapus Akun?", + "deletepropertywarning": "Apakah Anda yakin ingin menghapus properti ini?", + "descriptionLbl": "Deskripsi", + "adLimitIs":"Batas iklan adalah", + "propertyLimit":"Batas properti adalah", + "lifetime":"Seumur hidup", + "interestedUserCount":"Jumlah Pengguna yang Tertarik:", + "interested":"Tertarik", + "edit":"Edit", + "feature":"Fitur", + "interest":"Minat", + "editBtnLbl": "Edit", + "editprofile": "Edit Profil", + "emptyValueMessage": "Silakan masukkan teks", + "enterCodeSend": "Verifikasi OTP\nLayar", + "enterLocation": "Masukkan lokasi, area kota, dll", + "enterYourNumber": "Masukkan\nNomor Ponsel Anda", + "enteraddress": "Masukkan Alamat", + "enterdescriptionLbl": "Masukkan Deskripsi", + "entername": "Masukkan Nama", + "enabled":"Diaktifkan", + "favorites": "Favorit", + "filterTitle": "Filter", + "forRentLbl": "Disewakan", + "forSaleLbl": "Dijual", + "fullName":"Nama Lengkap", + "noPackage":"Tidak Ada Paket Tersedia", + "plsSubscribe":"Silakan Berlangganan ke paket apa pun untuk menggunakan fungsionalitas ini", + "gallery": "Galeri Foto", + "subsctiptionPlane":"Rencana Langganan", + "dontshowagain":"Jangan tampilkan lagi", + "fileSavedIn":"Berkas Tersimpan di folder unduhan", + "fileNotSaved":"Tidak dapat menemukan folder unduhan", + "errorFileSave":"Kesalahan saat mengunduh berkas", + "to":"KE", + "packageStartedOn":"Dimulai pada", + "selectPaymentMethod":"Pilih Metode Pembayaran", + "deleteEnquiryMessage":"Apakah Anda yakin ingin menghapus pertanyaan ini?", + "andPackageWillEndOn":"dan akan berakhir pada", + "getCodeBtnLbl": "Dapatkan Kode", + "homeTab": "Beranda", + "incomplete": "Belum lengkap", + "language": "Bahasa", + "lastWeekLbl": "Minggu Lalu", + "lattitude": "Lintang", + "turnOnNotification":"Harap aktifkan izin Notifikasi", + "lblEnterOtp": "Masukkan OTP", + "searhCity":"Cari lokasi", + "lblall": "Semua", + "ok":"Oke", + "lblchecknetwork": "Periksa Koneksi Internet", + "lblremove": "Hapus", + "copied": "Disalin!!", + "locationLbl": "Lokasi", + "enablesNewSection":"Lokasi ini akan mengaktifkan bagian baru di layar beranda untuk properti di sekitarnya", + "logout": "Keluar", + "longitude": "Garis Bujur", + "mailMsgLbl": "Hai, saya ingin tahu lebih banyak tentang RumahJo.", + "maxLbl": "Maks", + "minLbl": "Min", + "forSell":"Untuk Dijual", + "searchCity": "Cari kota", + "forRent":"Disewakan", + "sell":"Jual", + "Sell":"Jual", + "cityProj": "Kota: ", + "stateProj": "Negara Bagian: ", + "countryProj": "Negara: ", + "contactUS": "Hubungi Kami!", + "Rent":"Sewa", + "Sold":"Terjual", + "Rented":"Disewakan", + "rent":"Sewa", + "mostViewed": "Paling dilihat", + "view":"Lihat", + "chooseLanguage":"Pilih Bahasa", + "myAdvertisment": "Iklan Saya", + "myEnquiry": "Pertanyaan Saya", + "myProfile": "Profil Saya", + "myProperty": "Properti Saya", + "personalizedFeed": "Feed Personal", + "next": "Selanjutnya", + "retry": "Coba Lagi", + "personalized": "Personalisasi feed", + "startConversation": "Mulai Berbicara untuk melihat pesan Anda di sini...", + "sorryLookingFor": "Maaf, kami tidak menemukan yang Anda cari. Silakan coba cara lain", + "uploadPhoto": "Unggah \n Foto", + "otherPictures": "Foto lain", + "noInternetErrorMsg": "Ada yang salah dengan koneksi Anda, harap periksa dan coba lagi", + "noInternet": "Tidak Ada Internet", + "nodatafound": "Tidak Ada Data Ditemukan", + "notifications": "Notifikasi", + "writeHere": "Tulis di sini", + "notification":"Notifikasi", + "onboarding_1_description": "Temukan tempat ideal sesuai dengan\nkebutuhan dan harapan Anda.", + "onboarding_1_title": "Selamat Datang di RumahJo", + "onboarding_2_description": "Anda dapat mencari ribuan properti, untuk hidup Anda di platform ini dengan mudah dan cepat", + "onboarding_2_title": "Temukan Properti Terbaik Anda", + "onboarding_3_description": "Beli & jual rumah yang Anda harapkan\ndari ponsel dengan RumahJo", + "onboarding_3_title": "Beli, Jual & Sewa Properti", + "optsentsuccessflly": "OTP berhasil dikirim", + "sent":"Terkirim", + "success":"Sukses", + "status":"Status", + "viewFile":"Lihat Berkas", + "type":"Tipe", + "statusSuccess":"Sukses", + "statusFail":"Gagal", + "unlimited":"Tak Terbatas", + "setLocation":"Atur Lokasi Anda", + "setAPIkey":"Harap atur kunci API", + "setLocationforBetter":"Atur lokasi Anda untuk hasil pencarian yang lebih baik", + "pageNotFoundErrorMsg": "Halaman Tidak Ditemukan", + "payWith": "Bayar dengan", + "paystack": "Paystack", + "phoneNumber":"Nomor Telepon", + "pendingLbl": "Menunggu", + "policyAggreementStatement": "Dengan mengeklik masuk, Anda menyetujui", + "postedSinceLbl": "Diposting Sejak", + "previouslbl": "Sebelumnya", + "unableToSave": "Tidak dapat disimpan!", + "successfullyAdded": "Berhasil ditambahkan!", + "successfullySaved": "Berhasil disimpan!", + "privacyPolicy": "Kebijakan Privasi", + "profileTab": "Profil", + "profileUpdatedSuccessMessage": "Profil berhasil diperbarui", + "profileupdated": "Profil berhasil diperbarui", + "updateProperty": "Perbarui Properti", + "progressLbl": "Progres", + "promote":"Promosikan", + "createAdvertisment":"Buat Iklan", + "promoted": "DIPROMOSIKAN", + "promotedProperties": "Properti Unggulan", + "properties": "Properti", + "propertyNameLbl": "Nama Properti", + "taploacktostop":"Ketuk kunci untuk berhenti", + "slidetocancel":"Geser untuk membatalkan", + "rateUs": "Beri peringkat", + "razorpay": "Razorpay", + "subscribeToPackage":"Berlangganan paket", + "readMoreLbl": "Baca Lebih Lanjut", + "readLessLbl": "Baca lebih sedikit", + "more":"Lebih", + "resendCodeBtnLbl": "Kirim ulang kode", + "resendMessage": "Kirim ulang kode dalam", + "resendMessageDuration": " Detik", + "searchHintLbl": "Cari rumah Anda...", + "seeAll": "Lihat Semua", + "all": "Semua", + "selectLocation": "Pilih Lokasi", + "selectLocationOptional":"Pilih Lokasi (opsional)", + "sendEnqBtnLbl": "Kirim Pertanyaan", + "sendingEnquiry": "Mengirim pertanyaan", + "proeprtyType":"Tipe Properti", + "propertyAdded":"Properti Berhasil Ditambahkan", + "propertyUpdated":"Properti Berhasil Diperbarui", + "shareApp": "Bagikan Aplikasi ini", + "share":"Bagikan", + "approved": "Disetujui", + "pending": "Menunggu", + "rejected": "Ditolak", + "listedBy":"Ditayangkan Oleh", + "noChats":"Tidak ada obrolan ditemukan", + "loading":"Memuat...", + "change":"Ubah", + "changePropertyStatus":"Ubah Status Properti", + "sold":"Terjual", + "state": "Negara Bagian", + "submitProperty":"Kirim", + "submitBtnLbl": "Kirim", + "subscribe": "Berlangganan", + "subscription": "Berlangganan", + "termsConditions": "Syarat & Ketentuan", + "typeOfProperty": "Pilih Kategori", + "update": "Perbarui", + "pleaseSelectCategory": "Silakan pilih kategori", + "property":"Properti", + "startedOn":"Dimulai pada", + "willEndOn":"Berakhir pada", + "daysRemining":"Sisa hari", + "advertisment":"Iklan", + "updateProfile": "Perbarui Profil", + "uploadBtnLbl": "Unggah", + "uploadImgMsgLbl": "Unggah Gambar Utama", + "userDeleteErrorMessage": "Pengguna harus masuk kembali sebelum operasi ini dapat dilakukan.\nKemudian Anda dapat memulai prosedur penghapusan.", + "validity": "Validitas", + "packageValidity":"Validitas Paket", + "verificationMessage": "Silakan masukkan kode verifikasi 6 digit yang dikirim ke", + "proceed":"Lanjutkan", + "preview":"Pratinjau", + "selectNearestPlaces": "Pilih Tempat Terdekat", + "rentPrice": "Harga Sewa", + "previewNotAvail":"Pratinjau Tidak Tersedia", + "warning": "Peringatan", + "currentPacakgeActiveWarning":"Anda memiliki langganan yang ada. Berlangganan paket ini akan membatalkan langganan sebelumnya, apakah Anda yakin ingin melanjutkan?", + "weSendYouCode": "kami akan mengirimkan kode konfirmasi kepada Anda", + "weSentCodeOnNumber": "Masukkan kode OTP yang dikirim ke", + "chat":" Obrolan", + "writeSomething": "Tulis sesuatu di sini...", + "yesterdayLbl": "Kemarin", + "days":"Hari", + "yourPackageReachedLimit": "Paket Anda telah mencapai batasnya", + "yourPackageReachedLimitDescription": "Anda telah menggunakan semua unit yang tersedia untuk paket ini", + "maxSize":"(Maks 3MB)", + "maxSizePerImage":"(Maks 3MB per gambar)", + "Monthly": "Bulanan", + "Quarterly": "Triwulanan", + "Yearly": "Tahunan", + "uploadMainPicture": "Unggah gambar utama", + "recentlyAdded": "Baru Ditambahkan", + "advertisement": "Iklan", + "congratulations": "Selamat!", + "submittedSuccess": "Properti Anda \n Berhasil Dikirim", + "previewProperty": "Pratinjau Properti", + "backToHome": "Kembali ke beranda", + "didYoufindProblem": "Apakah Anda menemukan masalah dengan daftar ini?", + "writeReasonHere": "Tulis alasan Anda di sini", + "notReally": "Tidak benar-benar", + "yes": "Ya", + "projectName": "Nama Proyek", + "projectDetails": "Detail Proyek", + "projectStatus": "Status Proyek", + "Upcoming": "Akan Datang", + "upcoming": "Akan Datang", + "under_construction": "Sedang Dibangun", + "Under Construction": "Sedang Dibangun", + "projectLocation": "Lokasi Proyek", + "UploadDocs": "Unggah Dokumen", + "videoLink": "Tautan Video", + "projectDocuments": "Dokumen Proyek", + "floorPlans": "Rencana Lantai", + "FloorPlans": "Rencana Lantai", + "uploadOtherImages": "Unggah Gambar Lain", + "Add": "Tambah", + "Floor Title": "Judul Lantai", + "pickFloorMap": "Pilih Peta Lantai", + "addProjectMeta": "Detail Meta Proyek", + "metaDetails": "Detail Meta", + "metaTitle": "Judul Meta", + "metaKeywords": "Kata Kunci Meta", + "metaDescription": "Deskripsi Meta", + "addMetaImage": "Tambahkan Gambar Meta", + "Project section": "Bagian Proyek", + "myProjects": "Proyek Saya", + "Documents": "Dokumen", + "projectType": "Tipe Proyek", + "noFeaturedAdsYes": "Belum Ada Iklan Unggulan Ditambahkan. ", + "noFeaturedDescription": "Tampilkan Properti Anda untuk Visibilitas Premium!", + "noPropertyAdded": "Belum Ada Properti Ditambahkan", + "noPropertyDescription": "Mulai Terhubung dengan Menambahkan Properti Anda!", + "toAccessSubscribe": "Untuk mengakses properti pribadi, silakan berlangganan." + +} \ No newline at end of file diff --git a/assets/lottie/.DS_Store b/assets/lottie/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0fe128c13ef2e51fc5059c1da5fade058ffa3252 GIT binary patch literal 6148 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≷n5K5auo;H0QUINhqrQx}!pQ@DrFLLAnhuZv{UYPK94Ei@t8XIR} za42g+Q%N}EuB|P>m%dtpXMg!Ben0HS-5=gGskk@J7UEc2_N05!{$NwSXxkU64q6sq z&e1;duRtbtH2qowJbt7}y#&M@MSaf6IpltnCO?V%E2e;w zEz5?2TJ3&BB3D1U6mFvpO%xffiP+fOeW+-B2eVyQP?S@O!iG6m38}rqesS0wX)35hN@Aa zDk?4_^*=9}!}-CRU@h!-4Nlz77`cS{wwF+yVTO7Br{L>7fdMkpIcJ-P*6Qy}q~nXW z(hsAcXD4Pi{sev`i9tJ{#%e+tbNA0zOrVj_=?9BF5aG$Ft55GvYUmhOAW zQJj&$BL6dRHLHy91l;zmR*QIt7IBB7pc#^KwlrLC2q(#@bsfA>orqS%eHDz-xSZVRUmz_l+x9OOUL#K-$rAT0skPD~d?8$5m z-M;~(&F5lF0VOK|N`-W!0*#q-ak1o1T%^ioI6F~!;VsPabfO@yhJ2_zh(cOy`C6Yr z7on%k_IcQ{2Smh7hu+a ztR}^d<6~JDt-Q5HTHwwzk|qtCym5pry{Mgl=R@s(!1C_HsHwXVj^p3ND+Pa#?N4sQ z%G+0C_6mJXC|o-EEm7NkR+2w8GNG@s8R{{pw2y#)> zGYfscdYFRoPk>;oy_5Uz6kPZ*3gIU;X(5_|N}&0pEZ0w=g(~FApV7$98%Yyqdd6x#ly6cVN^|&FC*7kRUz>w`m9!H((rhFEjRSh{q};^U zbdNzbzGsqv2HL11q>Xt=ejn*tO7D07Ph-io^b$Y%Z8Z7w>-&Zh!>!}$0Gy;XUsaYr zr2-5>dg<_aDX2Id5+*ru&nrC>&+~JGzxOFjRo<9K5pabMC6!shV3OBG=7t6WmB{xe zzvDc+zM61q>y%EfTmo!%J~*zeq&!#hq)c`&DHXMolIQJ4Uz2c}NrBu2_!LV`B@Q?= zolFY#-k8*C_7+n>$>a3EIXs4pyy%@p1%7m~{5@hV#<|jaaE=Obj5ee4 zk{KKOP}=s|Hr)T&`$e*l=S=eV#7?<=Lmk-QJ_(2CIE>4_4sY|z=sf-i&gD?Vy4uh{ zlAQ5C_5wJq`4X7aTuxd^_G?;6@^rzj1HmMbhC!vWtYWkcb&6Xv;w*Q}EgBr${82pB z@66h8tQ9As#_7j7_MDWe{07#9!HsaHZu0b;R?k7Bwe(M5Y5GRBB&5pA(^r=c)?nT;>gFdp~+q#Fr8&4(!MUJKW3@AvT$i&%S4g(}!0;fHEpAG?vNM|a~D}g7RMwXt- z3HZ%m6@y)Vz{(FY`N1kbkR^dsB8_zRr;$J{2C&3E2D!$6OT3up#501s#=AY1#YEji zeF!A<-}j6^<0zOcH~%5hPk=+jOSJdeJ#MGJeRP`0FWM#5jq2w=Gwvs@ubpi+3pSDu zrkmEzm+G$Pw>6hQr8Dkp8t6)R3owb(O6??Ii9w|d)8vgmCA`vU5+?yM-lp0nPApAs z^?DnrsGY=ZXP`0F4Rn(cY%DitMeSo%uWwTiK4q5Vh*}y`Kxw#l2yLfZ(6Dj79x_V^ z4|dLdy5fGErqT;WFQE41Z%}O*LT3JaR8(w1dEarkTYiK#+WBh9UWu-PO%kZ&l9@di zX#v`Abl}3(W4P~Q8?gWVeYp3Id!_b#^;v)Hj>a8W8Nh*o`Ldnh6RAvvFoSlx3y2sEF>NUvl!L( zsTwz;5WO6oG6>`K2+-*oFy&$3hwe*2h6GL#cr^~#NFdcXz~$HaVIHJK!@TI2xFp9^{QQhV}AyEPc~!Hqn6cIw;}?AUV*ue|#VIrpB68wp%0&`E3Q23vtD zKuG{d^7`^Ui^l|;iFP*Alu{B9ppx*bB%i~`HM&^?I~j%(KgT^&y~ z^8>+|^C+3~iuB2J<_#S!n>w)u0L6S+XyYf7%#xulTKy;)o;>-2`mJz2(977p7rmixN!B(^s#?qVM>)H!v$36m=3~0$;4|~OjQQ{~<_ed`}(!R)h zkXYwBfz0ZAFfe9>*=mKwV#c|iCYWjRQ=MH#p~9VL>~A5HH!G?g<*<{FBzyC3;V4-T zL-9@MZaoQ;=K_w5xX_=azh*>Wd$s&-AuXzz0xH?*Jj#ac^{=!*GncT9hcw5(Te*f z`5=o_&tT6jGywB4>~;ow9P(bE-1P*O!i7E$S)ufUv;-0;0hilL<7+nT_UJ$*_9wug z44b?OfGDt83?7vcs1!)T0r%KID{R?*a49g2*59jFy)R|WrqJB$@@7q8!}Vr|+Ps*W z3FM=VEFS?(mnbTypnQ@|FbV}21xp+5UQ1gSw!gO@@9aK|HB0IxV5zREC|njr&vuS= zD*}}mIPy3->hDyl%dJKx1&T46S*vUurJI^8eJ4dFkPKro0|l&oqJ|8||6lkP{iB*J zQKe0`eo*b)ROy^IDj~%%vzBj!tHb7Q@ff>!4Wg%Oj2MbCENcNkhfSpNp)IpOWe!>j z#S&0bU7HliAV4Ld6_Ve(7v(*BP;T+SR=kRUpX=ZwpGISyhtN9aMo(rP&J}Hig(f(5 z+A*8e^cXJGeN}2Lt8fQH^vc^`!kn?w$Sz$6L*7ETFFuWCnkzMx-iaZ5wY0;R%;LI0 zk>5rYMt)1?b||S^eNGiJ=-s->OkpTN&PdsJQ!+$;3j{Vo$xrRT%6ybeqO<^2q3RfT z-#O~U8;`w)iiQfTxOJ8ExcbVku-McOR8dGbd%YMw1QzYol-^f!Y^yu+_XLn+*( zBN||d9fh(gZ8GeRiJe;cF6{t;w}SXSYf+`TV^h(d^f@{S7|fYu7Dc{;XhF@^UBEjLm=0Vr|0d9?8qsHHSEJXvEZ62J6w?GhLs9>tsQ?#H{k z4kE8O8#k<+jq4ZGYG!zvOx_~-QWBa;d=?}*t zq*(e-3aksyEn6wj)gWoTig{*WnpF7B>j3r*#pZl`9W7~jchQ#`ZLL!nyn zY|mw6mETC-!I#6`_yR7r9Ytf=$KkY<_@yPAL?o;DIPzQTQ2UGkmDubpkzf*k1FRWE zA68O;N=m*-Egg5Hh!?R0liXy|`qmR~ptQbp0!-p|Uaq_!y+fz4_~;LiUwAgFedJkP+D1IVuQ1JLrk>Fensfy_)h?%KLRI(F$sBGDHj=9XwZzW3yJ#~moG&HG0XNM91&Ab_#|x@(Bo1f@+)!fEEMDZO z8GF>qYo?}8bVzvvZQvvuB_og|WTZ5*n@G=R2dyttnas3CR!fqvLA9BpNY8U*u@NcO zC8^k7aozb~5MOFjlmT`4ZwXKb2FA2U815NH_vNdoT3Q{&>rURRY}({8dM7R7uNG_s zA4jR$8_xbO(Ap{42eRg4HyyJt{s?n(3Q@b@ zeiWX07)P_OLwEl5Q__dKp*Ff34;+!?&E?5~rEukow2{)p>$zMbNlBTBo@6VjV>(Uj zCEz1Jc3z5BIBD?;ULoo%Ep4(T5IR#eSv1l}6UD63+D}hbd zEe9WmkDbHYyFS1xI}S^JmNu=P4F>^FN~wsx+cP1CN!DsNTG%JlR8uxPX$0`xD-pz- z5W&VGvA9XaMOq@{sI<&;6nQ#Qv|FXTw4^hcV!C`(Ri$JGlDHvSd?zWL+o=*%3M6Jz z?L-mFoQX}ym>8f*MeQZ7H(P_z6?p$_FaG(T|3zx> z-~Zj;;M2FP!06@Ian@LZ=8CTq&=k7}HSv%#Pi*RQs;51uq8}x?w_yyDtdZ$ zV%gbW!ZGi&Sl99<&NLpzdD2#j6@}AI3Rb2VFoQiy-%CqiI!VCm9+dzkr_-g$mr^9h zpe0$?OfJL8&6Zsn?y;t4Cr&O#My7vm#nI;4&A~OEH8D?Tidq887S916moB$qJDJ1% z^}j!h8_0q8rqvCoEX|9^pS6@inY{%Ak_5x@tZ^-NaU)J=9#_JF8~mIXXqxBtEJ(_w-%|i*^Q{wK(LChwr4odWQPV{gwb^7^Go03%thR>r^0)5{R+h zi8iRMGyi@0ymrNo)lGMQ{l0%tTZo$UM$$LW%*#}hCFRnxvu&rxMPYpDBO@P4HCKL% zc_pOkOy)0#eC6maSPz#aAA^p0=p<*|7jxF*>Oc!l9O=iR#Y-_XG=x2ScA~VV8%HYt z6#Y3%iO1aC>*ktRJ)Ub_&c=F?olEDE+_4t zTIt)(4kHVm1ZnAznRjiF@R&9#uaJ;OpTm^%gmvwBm-3Z&bu?B%=mR z6z$P=?lI($v-YBrH;ETw<)F02}|(#tOl;fz-e zpLE(3mjLwvZqiaRlm8@phPH@E9x|J28?fSHcLw>!3%>VOl1;w5tdkvIvjcCr$y;X8 zT-}A~a#=A#KoTEJ4x0}vs;>cD9@mKOWu_Ubmq1>w11pwLB)IEVprxZ1Prtki7f5SA zGsA-7g6yyiGily**`xeDvUXC521lx4E1}>ak3+n%!Q*fw;xXFEE+bN8K^Cb!iGJQq z3%*3n0nC=npjvX_WMb&t4wP&TmqhV1)}G*g&PU%kYQXQ2S03(JtPI7j@TCK6}_PnUyIh7@j)udta(+!e|jv ztn!rh?!jhL3kPT}0n6EM)?clL(Gn7w9x$h4{cU?xO%LlivADbG-Qcb%PUZ(@wc3M3HnC+uqrS9Xk)gZZ$~`ysukMn~x#r z=R-{)o=m;X+Te*WcMJ5JG___^@1&h|PnC(*JBjjl$PwPuYM|)pl$*6D7*t9H(xRD{ z>hl;aPMzZw-A%7=hSwRXV#*s$KVhLL;zk9g)TUqG=l+Mnp4~7wyD>sepFIj4$>x(I z+6-4WMy-V*-wm6BjSY^$VowgujgS@9=|R@$6>J{a4Rg(1xODzy9H{t=q_xBvI>EF> z3Mz{*XZ-@qzHTA-dOA}!eUNM#HYz##nw~9nQv28hGRu+yFFAwtdL|zrr5T@x^w|jV z^?9#FXA#oS6L?~+IggjLg~%5}yh#Znu637EDbmjA_+V|7Zc_VHyOXf%*>~ZhsBSlX zdW&Z94Latc#aac&g`dGuc0Ecnvf*g@9lEm`$OJZetxc9Qw=JBhf#%95K}LROtX`~^ z3TXEzm3Q{kwl|$VyaasI4=UYZ6P$Rb^h~>fw3DL$JH4`>v=u8>2-Yz0nFt0OHRY2eQ}lM6iTQf0p@PJNGT-ED7D0n zx_OshOaHF6tm&RUQCdny(o8eZp@#I-P~x(^97&p0D3YA|XudzJ@b8$L!dic+Jg;M* z(PCAv!6s=ZrNH|XpBt|+Qbl8l`w6A%C(%A}X1{$(w9U+>?0Qr;Y(&-Y75Lg-K_`Wq zy=bmLYuH49q*vc>BW_dS?I`Jg;Dc0_r$}!LufnQf`*OL zSM!DiUeb2}r2~giX>`KA?Ay3{_&>0_>MPQ_5E0=LsWBoxibS7z!jo^yoz~Ic7*y&S z?Ln?B2NsHg;h~A52<q3~(jFpHifVY}w@FsSV22`Ng*z z4@Z>mKfepZ{Uf;L^S6m&HJ?ZAmDpGN9n>^GfkhT4Dwci~_G1rYckOpI^OR@g9TMLC z5>5o=&r#t1$ypydqT8Tf>j9JI!!0ATs#GPV+AM+X6H!$I z@2A3V(U&E=#uBfec0%g3*21?U@u*Z`l5BH>px4;%eGSp?GCd0wxc6w zIR+3~l~+w;k}+-W$OWwEehtO;ESL+I!7%&J;3J<&qbDB5dj)q+sd5@v@{5F3vS*QR znGyOpTZh`Eo1?tTFpY>orM|I#2~@Ju#E=0c)>dMzBmpkTo6BI5JnXOhS+v(4Di@PC zJ)>o*C_kH-Il?&T=5WHTIyGi^O#GZVOBNx=(yU0mX=NokB(t@c$9o=4#PJ#3U^08S{u9I8g`*%Wkt~X#M>D+ zFG$n|ga}q~=ELJwDn?QY)}BP&i^oP=VB53+^?^L1{mo`oMw6T7*U9O3N3<`8G!L)J zHju^rP-jPig6f2-kCOX-tt5wPGf2VPzlkG$rRF&mfF-d3trk>rIfr12VD@J2p>WrH zoS^rYJ<^Es(=VdV+l_*p3KTZniz0ItR={PJ!mp4f)7v;m(c4Z}JcyFs z{U~kz5o%1dE1X?{{Q8fgAhVjlr9E&ue~*s(QC#UbLjcn%4AO4>bfJc;+fcFMJMdn4 z9iyH5(boJvTI_Xb&;3YvGeFWB;YeJ8QQ@YGT$Hv$085-+fJ@T}SYlAAbAiOAfRZgY_VXUEYY0P~r_tzhqByG* z9tskYPoTY8;zfa(%!J((A&++@(-c1mloaNJk3eF7Loc5?fCInT1B1zc;$`KNlCXAC zynQDzn535$s01q6u0_5}_Feu-!cU?fiO^C~qO}lf5wVt%Gsyv^DspO^XH=$*$A1rc z{cXis_JY4wtt643&u&^5PZ#2M$l905+Ly6bsFn?A_Ho6&(?ZcCy(iW};^PdZ&Tw|3 z{Nj74bG4u(D<9djKMsSV9WVGsm%gw z!9rBeS&J&Fysv8?hT31o6_*LESqspbe|@MrCH;K^Im4+VwPat%d)Pi~MSJlVRMk1H ztu$F&0$iGoz*0B;0cKM)j12OtL~++7vo`a%){>q+lO{{_+AlVF%YgmbjW}L~TiCP1 zW$tXXlA0YkCFLC6b`ULRui%zH-3kl!U9lh|E%rb@>hy^}H@SxFpgWaq?kBg#|Es~8 zOW%kqs_!Hi-}JqiB>@AO9;+oi!IXiPgUF7t4<&A&*Exb}zUXa1FZn#^GFeE&+=W>L zFfl~}nB-bJ2%Yi46X-b>~Sey68xl7=9z>c?{cw5@+C|u%yr(COeYbUYaq*yL^ z#bQj0BV#?@5|^)J&Y(wGdh$>+C(^6jWH5VU5S$me3`hiOx#-!CM=LY_u6Pk2$;8v4 zVZ4gAZd&t4tCb`#H<{j*yk5~MY@rP&<<0tEtLm1ul8{9s-pR|_p;HbJ8^YfNs-qn5B z*ZM5ZmEIH0yGmHz>aI6osn~>}%WtB+^h=uS!N5{lTj`qkeS9QfGKHMx1g(JH6WjhPAH)<; zTA1I4&6T_jc#ZPNSt!|oUkD6u)P{ZZ) zM>o~NLrrLFirx{T&{i5G z`$WEG;}!cb;o1`rsZ8%Sx#^Fvhx{sakM^Qtlp-n; zz!c1%lHTPqKmLB=P27Qon|Piht;J-Z6Ym|z*?niR`N1v7$_+gs(W9;mC>cnT$OHWV zB@WpfPR@GNJCQv2J7P^GwIrEas?C&6KP@GoHWHEELa;hQJ5!Fftm2G;DPU3{PX?Fx z$e}T)n*8{=2HK^=O+b@-s1qhKz4khTM^hA&^+2BK-|>|IYbkMGSXx_(nrPt45 z_rfY1Jfk?Z`M+ZH?i4UvJ(SN zd}P>+aFfn{qKUsR{?>RikPp7zm{~UQ{Uy47k;>N-OyaWCn!7QWB;F}si-YUM_mh=G zAH(lI8Hhn8Eug&sl>*zK2v8E4j+A`@V`m>HKS_Ur`7OT^w?m$-nKtBC6-v)tCI_w* zY{I^(FQe=7Hdy9=1uHvW2$?roA2>#vQA|D&yjNaBQ_;=3Rg=LY29?;EGoQu58cgC4 z_ht&P#KIL?OVbHhVsME~;o=P}>GrWkU=**3XSCW$r}vz~iJix=`GGCSDO3+yL=eN2 z$0i2$Xu$L6;Fg(4EjvTP1Y`8Gr6J8Gvmi;$qy5QOMLJyWHRsiDrw_%O2gm^n>IJht- zG?mn9O$7s$Q~^q3=3E@`m5|Cq50+;5Bq!d1FIE2A=CGlte(LVr{@l&*o_hjSm1|Jj z^}0Mu(qC6!eGA6Q+tJx~nVgJQ#l5})cuIuUN!%MND{#62OWd@00ZUS(H<>JBeHm%u z8Lj^$u79*0@wo$Map=tta1-tJ=9f)%gc=JO`Ay#R0hGA&*H6zW7OmBnClA1C-Z{%B z-VQzrQe9YNrV6S{tO_qph8C;SBOfK@p#9B-~(m>!NO^KBN z_kRtfxy=iaPpw#k&wuVC*zwd`7;NgM1({a@mSR;y)}lz%<^{Jq5bV*jof1eVa|$ka z^Cm{HF^BI7trD&mA41cFdGWz%#3A^_z_yW7Z!%099ZJWa2z2{Px6kNQtHVw6fd4kMVffF zx#@2|PQ>6#z{fHBZ5pqO+o-zR4O%A-wLFtZ?T&HU>}@7} z9iiKrXp@YV1HTAeIgL-OMatX`Xk;&ClQft}TVRrj+%SO`X>chTvFeuh`eh68#Rorv z*PeO`6t5sUCH8JNxKDzBnK7*z@!(j#QeCNG3vw8q+SB@pbhGC>ytw* zfXSc|Yg8pOiM~y(7Je++#GsPejacz_%JtFI%YBf43vNI63sh9D1#9eFF1$Ht+lIS` z&~~~74IAfAd48hmv#7uLW8^OQB9=n6Nx(%LFWi?Z)l`x%YV>HS-u(2alNKJ5 z170?h8}kF%(nQ^Cfr)mlg@bP`eA9WfOJL241#o*j_|ap};u~N71ZLG%qTHS-F%%{Y zp*9|rngz$(Z&D~}Nb?KQRMpE_wi0a~zm}3EYCwp=C9XF+W7eA(=u$H8(z{$e_;H^i zMQ0nI`v&7F7OdQVGk~SE9~Zp143C>kLg}0)?GiAK2XWBOA$U%ue)`1w56&g@UDl{_ z(W_7P_b+^f#-fi1EuE=P*bf_T#;WO4#NVhUK&dx#4qBRNSET9=m^-&mt&zez`!ZJH z=9V`xySM?(J-g7Ff4#z-@lTdLauKUWKY*d(+qgtgTYMZvB}s_2m7E3_g{F@!V2~uu zov4P;RvMul)9C;#vD!M*82vG~4|Sm=qks@!KltDyXR3n2IrBDYp`(kNlm) z@*7by@zlfIjpe{#!62dO#pWF3jcfeygi}zkC>mEzU&i)dy+x67ZbA8+N|7{fXEQ}u z0)bp!3QC|Cwap+vDU#+}Fqy_X>P@gZr0*qO0z7Grv=|W!54~$!*l?@fEa4t#fI0iD z?tIlSlqTro026~tCW_>n2A0%FP@lBdtzJxvat|K)*|YeIhdznA>N1J37!TDf4D_i{ z?6`Om@NE3pR6D1jYJtU+TU&v|l98u@iF`3hj^ zLSIu#YbzOKASK~K=%PR9d|Ng$Lqr6S154tX0i{qRz7f`DV_->7Qex`HVA3HCA>c#R zlXqYTo!8Wt#l+7+nk<1Rf7|&MY$tycH+|}6RL!pm#WJS%O9N zV+4O8M=Cyp;j>S|G3#C|X?{#;z2lZ{cKh?V$=nWW-96|!{5`y$dnbCbLW5*+t5}GF zQqi{(gGmf_@WIZ;MH@s^J8_mYvFN!-8z_QVxiu)unqCvBp0NS2U!`Ege_!I@zcW6< z0ZM`g%a~;vNuDCTl5?3QyrVq5!K7eyk^m+GnF7J2j;0O?OuGK=4X9mG7c6UB?wLSZ zW?ph|D+3PoD44aBW(qM_sFu{)gsbJB%<1)*h$VCT)YMIyz>e>V3tt*)cgfY1C(;hK z9u}9np4|g;G1j$KSDw)_lNO5vED2}c(eg{@S0(|2(SQx>mf^O|>+taZ{0@hYpHr4G zMN{#{g78tqXR(>2v^h$&sg?3ln@-eSZN5|n7}2n zj=ZK)4Y) z%#q>&CWU&}S6i;)?I*Wk^&M+5Yx(R@$>MUq-ByXxkv7crb>fPTv^&Fq@oFl>oqjA# zyLd;(Jg&*+roTHkO#qAt|F^29-tkJCs2yB2?PFQ9TDF)ZtH~QGZQvwVq*FVY6ZxjY znJ2}1PK=evq_25D9OcWDBvqZJqpuDfMcrf`om>w3B{`34EODdK=5VTCt?CSBlLzSytUYbfg z$BK8G{Qao1h+mwR0UwJ(06~qMm4Xs#c&bSoYMfQWBURFBHGAWC9 zc``_q)>Ml8<%xb(iKdcv4J8g*9RW~sJ6#y+9*9`u=EBWrYC8gB&E2@UFb`WZ25^_} zDDD|}8TVd&0-LTp8j**d3CyHLa3htuVD=VTMGfO{<6Z)j9@4XjxbPC1J_3-5OQ9+Y z5vFb`vq{MXC?d3)1P^xDZBLM0xu}EQX9ktnS+_84)0@BGCuGWJA=gOX4^NIlQ6j;l z-u51BCopO0=H+Nuop`On=88{Z=<=Je)qNComwypTWUBA8xuKqBUH-w=A0Ac==3bo~ ziK}j0KnC_fp_Y<)2Ujj@ZWsU7V`r0nIWVtaB+8gc6X9TTh}S(!W?@W=I_*v_FiGB6 z30UIA1UkR|5l99Au*R5KFfBKs*OU(cNUmwMu1IP6(C`q{qkS3DGl9GTP z@n|B~SD3d%TizgPohO1KMbH!*Bx(SJM6^R|nc>Dz2}FqjfTp#sdgNpOP=ZAJCi-{+ z4Ea6t!9b1B9AoVG?kQUbeit|`hEYPMWFMCK7ci= z0_UAZ4BN_rvmgr(1Np?n^pJ*< z!IOB?I^Hem*3f4#ARFu(RVtU5rSthn3oMgNRj=*s@U@8maSv%)Y9UFp%o_Q-lFFgK zTQ18>@*%WZOL5aSPy3)17rUePO_EhIHOj4?LK|=uqS8KqEK6b*l}g*c}!xB(?a1$g1rcX0MXGv?G+!ERFz$cHa6`JP&-|Ktsp zLfU9ypv5^J>_pUbjx7&1S$`|;C*tg)K3B_l7Fbs+ZSW^%e50|-9QvDbk;?`K9t4@X z--EYsgZP=!=Wt*WH_S)oeO_97O)H}B)#DoRA2dJVISRLt52=6WKAsL~E}_GG!oqW- zfVrri@?_rZDkPcT6T5lfzARC$Eu;-=dJjrSGoZ9^_#iBqB{=7{W5gQVZw*JAQUWG% zMct-MTp+;cjAJ!UX061D%w;%ju15QCFKT*sA$Rt@aRHTXx%xEn*!lL!A7h7Y8CvqE zN9X6J1p{lhSWJ@_ib_6`Sfv@Jj)?&ay-40Z3w0DGLZAm-iC+Zk)jsCqqRyJ%A-6A{ z#NQ8>%R8V`h?EssbA%^uJegxkB$zbZKa6dUzk%7y=V0-srBkY#$Qy%>c__W|TV&38 z0NzW##??G+K2W%mUt}*JxvTdn6s-NyZVe3@<`6)HG+EF9vE2!k((NhO7%7G=VAXZ?Tro(T&0Hs*V!sX%xodNYZS7TjN)cm<0 z@sj^Op2!=*EJUL&XofOiFiB2jB?Z{LVHM6_YQf{beHj^c8|rGxUPbueIwH(_cc z_vuu>_QO?2~{Dd4W1y3)6qzc;U?- zGim>tEg6$Gfr1s|qJAzG^$AwibiEh2*%n6Cf%gCaKmbWZK~#%&@;B_GfH@Kn7K;LO z;K_YiB0weXFL|Azl!B}dm1X6HrH>XE;hb`JUg%K9EJP}o$$|E~b=YB?3s2JvsF-(u z9L(Pc;^;ks-PWb(%w8U%W~q5wm@p+n?UndWQd>`MpPbmAQl2eGersA>GZ5zv*mX-} z!&qyCeF2Dr!{X{0%}q_)#zw}l{g-c|W>GDcY>tiJ5;gS+mi9CO=H8wom~At|KH3~C zNyvNL!7nE#qKef#WCNmn5N|&bQC3$`cE2x*sY(6d(B!COQ&U~Lqc;7u zoc=43Uz(T)K1~1CEP>V!p3t0EX~t7SW^@INe@gQvBAt8qYT9vk90mW0kKBx}f8pcU zx%UWu_|vD+)}H*}qh8|SF;h73E=xc(v`FpX`sqQ52tE;N>>6_$FghANP^MHaY~sxt zLwtlY_g2bJo{r6;IJy}h>9J8Rnb=;ltm7qblUbj?!B|Q}^kcCsL(ZGaQ)=oa@@WT@ z7!CGN#4TfR0JK0$zw?{3J5OV5P@BrWsGK+lf=UaU9~X~wKeK5E$WgeNoaRnPV$dZJ zcu7P%qw$>-uD1!gX}ZxU{oM_d=9M>&ppuy!b1QMq&EQgCl(l%t-|ckcEi!W} zn_Z6Ox2%j;v8v1IEW8=r9S32Y^BK%(eO6U|?%?$TRd}%G$(Is4aucpOR8&>rBuSi% z3kkVsLiwWLcf^zANaTN);Ug_Z;=#{Fd3;WjJ`zY~b$WeTsErFRMm?l~?$c=6sjbwR zn``du8vO0IK8L#M3jDAC`%}ES?fn@g3|=55qn4_c$fdzv9Bc0K{43rRZ0z!SJaG%) z!DE#OXD_aK%(P_|D4N?ul2@?yMam=m3q?woejZu^21D|LJfUkJnN;VsfkDy%5Ps@vBjb5*6foypw*Z|gQx z=j6jNbXrk;c`(rnOyUAL%7vJSMXG>10H}?WK9hW@46LMZk zKpuXVdV)YAx}Urr>1%BgD4erJTgDlXi$NuJ*zG09t!avn1n#;elP_{GrocQ}e}@Yx&)U~|QyMJN zTcW}FrRN~QIQ=WwX5o<)-uXF zJz4YM>pOuwtNxvYsG6Hy`jD-xDTUO>Mcvh$6A3E0-LZ947YHiF(}}g3cMwflH`%B6 zP}DcpR*H4xH?F4=?WAbh6K&q@kH3kWf^4k4bA7a|;*!57Z#_D?&%#)LKjw72tf)-2 z>ZjqD@(!LF073v3YVw3DKbmJ+c69Xw;-aa0xV$1VN-$tafJ(gU%I}UR%Hmz9eV5_t zAf7S*SWLzR|Cw~Q=hw}o=4xuIdu%Xm0;frG+A>vFmf|~Ky&o%<%*DU`*OPeem3Oo; zO6N){2?+NCXUBTuQZF8Z#5g1hOg6wJ+HuU|nXL8Yat=;JG2@73!N%)k+JF=9C6&&> zzN=KKf2`}uU{V8FE5rg+VxC$xIW+-Fk~tVVR3y;FL)tuYy72y4jP%7ugNOkoPw!b+ zvg?pNa!FpSZr7}#WZ=p4G&OmX3o22dl93|+DIqqqveUb;5ol=|clJzyamgXI1sUX& z*hat~KhGiuc~%*)Da_s&1S!ib!uqmhXvnXPyCZ9EBl{Z5CP#h+_B>=!L?r|Lrw4h+ zyo*7l0oM>l>F+R>ppsH^H$B=Fjt6&i@`D{y^RfG>w~?3az(+s6B_}>um z@HRe+^86a)_I(hR6}MY2P(+K50UqEPxDbcn5jdF)+lT}`WZ9((@#Hidu*B_PnX{Q9 zzY7MKV)YJuk{aEx&W&nq@30(YN@~xZJ;-CJXFQcWk6aVz@kKx3bOYyJ7 z3@wpe1H3!jMp{LEK_%d!vB2$e!$osFwVLQ{o>9rCWvor$f@ufEd)$aL{zdB_C$K#N zK;kp^Sz^4FgG+&Vg1+GN&5#mEo4bV+&BOzq*Tw==ipD*JrkS>64#q%|vwxCP?%pds z=+r$7^ZFVJ=70<^2?P6T+X~CS*T388) zJ=T2&m-?>26{Wqqmm(AJl8@VzMZj7fEihw2MgrzyNup!qGBS<+zQYJ*T5Lal{CVVB z?ReG{X{D zm2}ZjN}#W44;-b7qvSF(vhxDXOD1rZ>{5yX7hOL!Gb9#$D~k&A@U<`8gZJJ)jGsR7 zJl3sRgin6-7K&n}&*oS3HJn}?cy1C3M4Hr6lE05k`FXR@?et1f#Y`4s@JPFpGWvfA zZ6$U{uGjoQUW}Lr$nWtrkD~@-eC7g?z$8&0K>K(u03_xmzvkb9q&W~dOmR~G#dQjm zPNYwt!%HA-?iOA?;;C3W>1pa3je7`Xsv@HH<7X2u+G$enr5#M)xaJ5y%E-;c(hsi) zNUiVB4zCpkM?H#1nqp#><{}Lk29%8Bz=XcFPfl)wO?tSFTXd;ki=Y@l~|Ix4EblXK(P1pSVFi>VA@TPBU z0B;_B8-oNyX2vnX2iLQX0Hwcr_Fr(v_a4AQkNp+4{M#q-x6l7O3QRfFj>>RN5BrQK z7?MVkhwU@{G(-a#18&YJK`OydezwNgf0BdDXSrkKgMlQaVA5kxy+j~}8xMW<8kofO zZm{N}%p5yVTP~YuuY1cr0q?nA!csT~#;$D>?1VhTdE!A77d+8Z;(%Li5j=rnUrfn5 z2?)32BFTh+X5qloZlk{65Wl`KoUD0LDt144p&jo@YP`z}CyP{mX35A)S9>UPjDE{tWevE@hl==3HZ!J@|GzOA560RaJiJHlqk`}84MvH$# zkHIAlJi?kwYDh%i4cw$s!y_;)kNK=28;asJ7f`Cn!sEPFlIP`3o=B7)HzP?X{B!=c z_(+p73Gf;r7Me=RN}rrcn}(8)999$P!Wt5CvN^Q>(aQORyY9-UhwthEG|ayTwT(~W zxYLHSW%mYk4jztAsAnEFNg|Uf;|x>xXHdyO3#(-Hm6J_i(ER*a`1=?C1N+W>fFC~a z|6yU-97!YTKkolWEG(amgPkXlN#<|Wj&jM=%|xbkCr8dtylS)2NLo!9n3Y?D*>rg6 zzq37!xY*we3xOIH*(Jy)Fe01ez-Dw#0u@hoUqJI<8v!*g$;7TIyA1Pk>j-O zV_ysLw4k2qGAp-QQfofn*Mvr@&xqTJvaDiM(!oBUa&6gQ)3bIev$?+&g|=MO5GXa| z8o`;~i)bC{l)$7h(h{l8tCRRy={xQqkm>SZ3kIFT6LL^`;c2pv_@Wi7A;imDurJd1e`$ov*-NzX8@$k72ZEOVIX2dy@y~Sb$0L zdMTaU$@6Hr&Z6&H4F&GF@C4ChBJeVZ1_WE{#>&7p6Hp(Kn@%M&YV*^16!WBCOfh+@P!BN#QsAk@$?JZaOn71e2TP{ zGBSckb52}MQ>SE}gS5JbG)G`F)7b5?8sK%2CNOO#dg$ym_@Gu>iM1H?T6hLCb(6ml z9%H?5D&8EF=T&pf<9IA79`mMH)<4aAW=McRCDue_@K{gaSgrIl{WY370-B9Al>A8f z)uyYsdZ`n0Z=A2TeAVfj3pZm|$E#T4c?a1QH<1vFv8eGW9P}3ALdjjK`2}W>G?eJ3 zHO0eZ2ewPe?|6br>=$WFrCH$*xBmjK9^Quk^|5c``uddwq+EjCXT{!&2eG)KfqWHZ zNubl4XLjO|(~rYJenuA2eI_>BVn0SJiWlO&^ZW74`!7qX!&??^!0ojgados82QMAN z8RrF<>5p^Y#ly(U%*Mx7+>X+cA{@JV8aGw1!}*Rz{9@NLXzlC7f{Hn~XZh_o(R&`} zdz&UiT$E9OGaVNR_&SJhfA}ldFncxjwI9XxvsU5DH$RB~^WqQDc;kI2C$MN`$s)XS zZZCen=M}1t0UPJ8!_76LWQ3?})!G--)3 zm^2|Y6&F8y@+Fj&7NW0j5O3_*3-$vMjFK5t;sHQ7zH`-l0p@f64NLKIINP3ww`{V; zRj{_HxyO^DaJz|Wc!f(F3t%Hyd1`%0ar$r|Qm`_T`5uEkw5*WS>$#pn?hNQL$RvIz za~sliOG_Y<1SIn}ivDIKKVfN#uLM>vUx4LH=i%w+-oW4e>rZgcotts}nkDhAM2eRd zEs!K{K5HwPtVYRirXN^hZ6&`MoW-ha87EBO*zaV6Ejq2qNMj8D?UIvSc@tuC9W26J zu!7i+lD|&Do`$|B2hOB%SEY7XXwI>F!taLX0>Y0|s%;L*Wga^zP39c0&CtoE>i>&D zCGK~WYC#68f!g`CoQLV|uiy6%@*7I7Go5XiWA(vBer--=t-`5o$FXSZ(zw}N_hrt( z8OLf2bnZu9_by~s-h>hgy?w!2Pnt^6?W7d-A4OUDYIL{lL2J%RCE}P?X*{HLW}*&> zok_=%%(S!MA@eM<5D!^Q9r;T7`Oe>BLFHUr=(>y_zx4#ZvgNb5Z`EBm(0Pm;bKB54 z&`nxD596*CThUNZi>D91jQ{=I_b@Ozh%CDUzj)_2690QveHeB5RruB3=kb4D`Y+^W z<)D#(mtXJvJ?0WHG{0mPe!cfaJn_!cIM;Cr`B}Mm_0YEepS|~hkK-)!$G_UX>b+Ra z>Ta?v$97y(?ev}yl8^uikkAkA4i0`Cf4Ji~;0}%h4$>i&BqWZVjuYGIcHH9LWy`W8 ztM|V3|2(sLrO|53?Cz}UKKhJicING~JM+BX_j$e#-aNPscdxhwMTvPhRC@wnfAWVC zm=tX^W8#3*Kc^_|Spy(fiNe&{C(UApEERA8frGzYXl*%Jdy@ElD1^@W9J2AI( zHlBTHGxVe^6y(kFSVRgbPi;g{X_-tWC)Cn;#$@8@8TyUs;)n=q7xWn`5LN#cY^m!# z_9fVpQLK!TmD_lTlb#>Wad4kKXZ3G-F8bR})~0!}#K}Uyk`l26Va=zc+_0sgRcjh_ zY258L;-DeRN)1_Y@qG_goMe&duq)#+3$~8Qp0BaTfU36WkegXg;C@`@!jQ}HR)EIP z0z>L9%rR*ZJqZ^8ytP}&dHyc*?>35qz(izRM}QZ&%I6g$J1Y&ZZ~hp^PM$^4>{$_O zB|mq;1tj%>-%$p71}D?vDK8*pa&Q*XS&6iRRso3TGYFkT(#y4!nHKw8;v`QIC;djK zNQInNJ@h_gort*zxqZP1zvs1Hev@oXYbVQjVt^V`w6^UdI8xS(IUno^9eEQd5q^en zn*tGO5lTPebz>u)dOUQSK-%ajt-%;i)@x*iO*)^nany1;b}$_V>k5-t7!1>qcgVO4 zTmF&mG#!MaAoIMZhYU6Xea6Tax`P=DWg50y$y&B7A(uD%&;zmjn#GDAW^P4=^szei zDpXSmS5-fR?Y++Y#t_l%%#NqLuOj( z4!3oRiRxghD1Wl;=*OsUZ$La*41Hn6t*Gg3kX*Qu<*O|8Kyc9Z5P?oh3K!u|cm7PW zG90v0+Q6AHMK&Y(Dxv7UY#-Z_^Q}%p`iC zH<2|FOA3{Dw(mSH&At#_1adWYw@ByX2&iFhB5u<+ulN!^yYxEg{Ewo3jZJ$u?p%7k)W7@w@=rKLVAWs0_D5tVX5v_VCBFK^zhLjV!&sib2)}s!4_I7K zjz8S_?^6Chz4sKJ`RFCwzxFPQmZzr`E+S9%aNk8`?8eGq5{r499_(zU$;i4tdFY9a z^geXrn_s$3O3I4vH@@^4{O;lBB~XbuAUw%rFa?#jiyzwVs{q#7--Q0`FQCg>4PEWC zu;qMCo+WbZHUd0`N=g!f z;X~|>jYXvK+8nQT!$oP-If;olYZNuyD;m5yx6t`S=2`*o|bo?7KMQUXF z1GbJ97SdyyJ;de7@2_r}Yc$yU6u-;3tYK> z+HIWQoy;*bUhhzUR#NVLVwZop>$v-M`Df|f>Gr%47C-WIlkJ#6F!ym0pIH|e&-*jk z#%3n9hkw)j+veZ7nuOi{#xN*&S|Y3_bi1XSka7~eDKJh8e~k+C`u^y}a5U{eX<{0Z zdXER1T}q$Pu@kH69>yXQx$zNtuknDc2UYL{XX2MnoY6F9Gmuq>HxZyxxQV(Mlwsh? zpD>tIo<9#=eckx&*2j?>lPPf}$@4kvb~KV38mC!BE@n~mce1q#`N=uM$&S>Yl#c7# z8t~xzPfHu0I73!FLQ>+ABrxf%vmc-^B^TK#S=dR$-yOu0)X?6Di^%;h)bLTzp#IzavtiD*Y46ji=)H8n5{M*JID4l`O3me0G)O zC(IxepHIzBB~a-$ys&8tKG}QNQxVd+U==5?1%_~;*xExBy-Hipt1!NV&HDMJx;(KE@#AEj<*Pjtag7ywLFzqTO8!LjbF$Z&Ty$yJo5;L> zyR73A!8Gih@lXMSN)eK74+Arfr*0)6=^wv(CwA{UhTlH)JnHIQi)Q24geg&#aAo(` zSbjfoTGmb05|?72I*LxOBR4p*-W#$^3Wl_sC!4{Fl@^2B`#W%yI6BV~?`(#~;JF=s7;~PL+#;1a1u4Ik^02u@70Hj6OT^Nq|ZtXTo#D5#N|k$(JlGT8zi; z`4v9D<}>))C$E4xk}A^Xl1r8h@SvA!-;k?HI#~tvklF2^)gpl_TsDIx!aAsHpc}OW z4)K;ru4XGsmyM}@a45=OVsrv=7qyW4S(lV1libX@XceZPKt~3a63I2LcW|^RZ9Tca zm1Y!5>30&pQyRIpUBB>hZ1~n=_~RFUF{-XVzWWsJd+fV7)p!=g8MBd@lrieM_+S~j zhfzZ(Sc&MS{xWbTq`9Y6I_w`D815h2R$nx4wba&jdg0e}*Aw@OjX*OZ9;Z!!OXTDz zMG)Zv^h6Xc05MUv*jw0)a%ki4h}gt+PkTMR$oz=_l^7)AjeUSW>}!y~qemX!0K1O* zamOW6F`Sk+PQ$=beTEKK+_N4}Jog5XiFyZ=$Lpc$tFQckcehRw>1~DIg01>>=yI=w z?(8Gt^px7O(l(L806}5t-N#C@RRt559d5N{jOFlV3fG*Wcbgu??C= zwe!0xP}1z-NN^NzMhKI3TPYfxLxD>j>rwS&Ar-7dQyuAKKd2N$3$`9l`E)@n6tRBd zO-GRcC(?;I;;TF8G8L?ol!7sn8B}r~cTe{{axU-@Pzo$@#O+WdsN6bISau%k!HSYW zoC~FP74sfQz6v>~{({WRrO0V}54Fjc_$+;8?IXxfnGMat`{3+64ol-lsH)wAvx%$F zmibkmd8gXNJ~FvC%E1@v0I}rw?FNGdf~ebX;t&$B>zmzT_v(sOmRTeLB45Ac9vrAU zCUGQ{J@7}0W|oEeR+j}1FVbXCls1-qHAiv9oVA#nT8JYJr=)WXz~m;*l8&#Of3f7k z#vj<4hyR4w33y^zHLC(v0$z^P9LN2a--GM~SJ`{3596}3)wpW*MQ9|TiLI7yU3Lxe zBaN&MbHue}SuO(0?G%x2-JCV3>a8V9rF4l@QPjn*g)i*bggaKdFeD;SRE&e zCx5~~60c6l@FZl#yV^L1IHA6G#RJ1duxl#wAsjhdDMiJr>Z*Z>{Hn8JGGHcPm|fdg z3DHq`45XPoyr?A*$!3)Rq~U_y4j5n)!p8<3ae7c$lI4@k%}$<9r02Z=iR950O04IJNN~apPOH~SoT$ErqSDe8l78WBfy`H(YFtywiRfOJ%k__C+#C5<6uO9O2Om}BoBj1{-n0M5x>0o2Lu@C@x2#+PL?(!ed33a zkMiJ*m zpw(_N1&*T$+gI0p9`77{7mt1XJe*bss)$(p$sI3AWf~1en20zpFEt0Bo;^fuJ&H{S z-^Q~aZ;;&f1V7nu!@L~GiFet3@UrrYhTC|iwFXb^+<-eC`Z_FRt;PIFLI!B;7+5;f zc@6_aMyDagLvPSau7tvbn(-m#TVmjgH~ud85@D^RBR5MOSrqAM)yzs@Nc&*71WYnG z$y?`Omt^JSt1Mn!+wzyqh>kP+1(QTM*`+zS^zO^>r$4`hBPXiF=}~)rpa!}MII4gU zK5*UslrLM}eX!MSgD(F@*iQc*m1L6MBm16*P`%=;(!`CFEe0TzSgNpMGDs7>@dA@X zM|eEtE(4xcNxA(DD)|%cvz09Vj8XnM-Taj`*{^e7-Q5$U{!h?-ob2NjYWq5>cZ6C* zK>3^dWAS3;;%RBAWTU_q4tmx^Wa39)R%R-`^T21Ze91igFYy>|c)+{L+bkkTa=G# z4=wyfWNMEuWnk2S#IcS18xjKI|`)(AUc?z-l*P-mpb2u^UPLB;t>^lX0d@<}D zC-8pu^s+|s*kL-!u5VhqX4q26MiVWi!a#u_>Q2vYR&-_0r+S;$TJc@O5*9<3b=xM?C*FAvmcmD!^c;|8H{2Jms5~3l1<5#!;2tR-A z_hjYtKho*K%mV!T&Hp5lNW|YS?|Bpd`}aqrb9b%21;xZubg1vrRF%Wsy_y}5rIo_zlW>6kg0est4!u&Q7Qx~;wV z=K6c_r>#%nTTlK-0;g7$Eywl~yCmx;wki_RLuuL7PA+oGDn4(c=pFxj#r^niva;ef zK8PnIlJS4K=Bors^m~k`$H3Cr?z$0+B?7uw7|>z`MYy*~C;j|mP9_7blo@HFFT_UW z@OO=^lz8KNz#_R^dV#a;HXF7+xdrhl@mO)wDp8c8eeT?RtiAnW{NLj*;k);L7Nx~` zWAX`5X}m3!{8=Z7hFW7UfUd6|aZw#uQS)nxhG?fC0nF;gaZ`9t0~ck0rQ}DnAF&D( z`Q7(IAyTpeK8*a@-=S(O(Q)ebCTfOAg&;6Ynn}u467Tj$ct0T+DLvF1kKkw_f zfhZiZXu*+nqp2YL-V!=VxZ69~t&^0xx_KHW29+FkvgD@4q=}aCx}Tos4+Q=IVZI|JB-)`gnE?y|D$P#FLHp1Y$7eaN8-E ziLAFcArHMomd$ugG`V|Kl9djhV~eEIjaB&by}zOS-I6<)fkLBxRKFLkL_U}kn~4k3 z=S!||Y}Lb7NHsn6IMP~)eh)ACWK*J)K9<78a)dV%mBr9D%Q1S8+p!?Elw8l! z(b?aPcr&@?4EeA%_P5YP56Fy3C3m`R>~1`O7<~*@W>G{%`a9Hm5~s;3YC&oVwLPEe zAH=T4gNUaz735yQ?s|O`CN;qn2OgXKd0S9V(l zq_)_|r=MNwg!K~_kU-J!+{J3KVjH=+C1oUG`3)=GFDw3Bx4#P8U*Cc65U5l*JKJME zcClmA^6?N>)OgiVsThv`3mH((CPJ$i3Ykq@b>!X!BJSpWl%Dnk5DuK$1WVaZlosii zkWqjPiVK`#30Y~d!$f5CQv(Q_V#7P_ntPx=7TYS7|7IuK0O;aQ!jQTPtBB~ojGrCT zO!RRX^lbEPT`E104WWn5nfeO3M)Z2O`7jy=|e1TH>Q@@0@WDzb zBq%t#D5@2^9EGs(O8F#{s&VWy=XQKod%JN&y@jmbR4 zPq6D-uq*KlF2Ks+3(nq`RDHt;Si3Xr`4` zFrr|LH4~`f0xo*UrKPgBngF0vlJyN|Wa}#jts*m^B$tmG_DU8tl6B1x$I`j(^Af4G zmaJ?T)RBDF8TIiZZ3G;>bM9lQF1Em8iz0b>ob8i_1JZSV>2o`Lxs~-0K(y)fmQl4G zYB>qsgm9hJ)K2a{x6m&>FE)hQy14(i)iOb~g zlXSm_DzFR;N|s3+xoz2XBbH@>)GyLzFD}4^6jGNhmHy#@JCL7~AubK?1;{fVppsJS zByLW;DlO`t&i8-(}yaGq&jl+HNbs(&C zyeUyiT*G{oKiRJ_V5XrlRQ_w2>^+LKFERrDM_~J48(PQ`bu|G?(@C7D&|hEMozKT#1Uv}kbz0u{CKinx{xB6GO$!j?rPnn z8#1^gMK>iLlpgX(V4z1Sn8aoFkcE3N!j@D#LFJ8w^{Q~w3J6Q-VA{)hT$ai7{2)D< zMMrZQIl#oa0_#IF#d?=Hm<%SJWXUZJ$TAZQQ~iLBH3U-J4LnXHs?#t(h>I) z6LuGBIw_Ks5l8KD=rQF?bdy!D-$4^;2Qkb#9Ry+6Xd~Z5v2o-xp5#XnP~bknSJDs$ zDA;vL??&>iB(Ksm48Cyr7CWI=0SeyF!1BbD{^~EHFA!DBwyeYUk{|bk&?Y1ad})P zmmQ4o_;e805py1K)Him2Qz|@cdaahMvie}Nx|9_Du4%NR%h1sDUVM)R`UbG|iFc5Z zpN^&1h6W~yb|z#c6PRemD;u|xQag`8n6ZR&2I^M|t<3R5G+e?8Rz6!5DU_o$0kqH{ z+H?u97*a7{nuRt~F1hJ0KuppyIFgpb*{}`zjHS>tZG}Cq0?;apxM?R#HZ3Wfa_%i| z7AsD6Qc5Ed8G* z1@5t7YfKmlb`VIWod9>jFmz>F6{#b4=*2|Xotm70jc>e{2en^A zW5>^ID|rP-*OV4GLFsr5v>t-!1k)TY%Sm%bC*8~O7OqoA-XaqzGfDsD=YsgXx{o=} zJ@_{pOoZfsER;;Pb}Z2nc^ggk4?CjKZ%A`*%Y=U}Z+jc@6+a|Yf&7f=p}M;ANt~$u z6XIzyn-v`cZPpq@#a#u*>8H^acin`yHyjOMo*E}TFxfJM!5@#pSjot9-eVGPC)u(@ z>(Gp{F7cK&*z*i3aY%axGy)MVfk+h8P7*Eg`4lFSB13-+u*8$uf37(liKK)w*s`bT z5E^@1q~pWnwszNw8=<4g|E|VEfmAuI(^}{y%Ou+Do@Su2Q6kLOW$!268ggF~!qGoMmgQBlN1k5Bw=I()Eohxta#uBRI>_y zWu?%hZn{N$6Mc3N_eX?FNsPwi+B2xc+Y6iC!H@s*5y@IR{fPh37iII`MWBI~|$`He&%O{>sdwP@~d!`7M|B1vQ~8vzEDczhU8QUWY7 zUy{`g$n<0l$ADpPM=!QL{SI>G2S=NZaN&tND0QuR?%@*ZMiv9BDjYufF7iX(BV{h&QI2OAUvkw0U%<;KW`+91& zU`O0VIGcLKq_nOI#~=zr4n;5V^@L!4D%#{}&pzN>zU0QI zzN>mheOw$kFQFewjz`S=A~Td^Mh^_d^x%7wH-Vl?21_g}!d&Ia6l!A(TUU5$)r z;_b;G|Npdk$RPJOCfVkV%|MfggQ+~F6w5Lf(zO(cWV)Xox@`4iBy;203E8+XV-d=U zU|Rx7$jXGJfH-dEr4$p1coE8y3Q$Hq?`agOl=+u>>BnlM7g`ZnP|c3ZmR!@AUn$>1 zS%c#oHr~^H;B#!%)kl3BNI7;(Xt2n#5`y^_QGZ= zAYVh}iaMKl^Y6>XWbJMMpszMWu0=**CX9d@E^qwo)0>t5Ce<8Qc6qxg#XfDVlX$E& z6yzdmf?Xxlyl2z3thAIwT(qhJ=Nnt`=+m2EpoPDp**Vj-yQ=g{LyMhS`hF`BU#?0_ zlFs34-Wh*+_^-U)1Hm8KUg~22>+`KeH=VuaoIlzrdB(Y~4F^2Wbac1iX1Tg}tQ z1^i4<3@BaP@jA@2Z^o(W_i-ZWDrr(2mp(R1Q#fw4k}@+pK0$eM8k~(E~e9k=ec-G4sEPLgG-ewjDrgT)C2Br%f6$sh0yw!SE#G6wNKokc`bo zKER86-$ZkFE7ldSCbvN%KP3L8^5in?tvZCi?tB#;eVtgGIS*N}Y3Q_c;j)|+=;`Uh zrhR|Mn}^>cPj(HiEM6-CP0m3(Hh%iH#6R@p_6-C;+41hN9auAaDF&Su!pm0$k7F|XhKq|{%?|@{TwBX`}aKsuEa~QGmb&g1{)e=^)+<62%mCdehy!jKF zK8*s$9LX!7sd^0hd0z)AAA&t~oxdVRT_5HV7_wP-z6z0F>DB zZ=kITdRj;rPvHn}S?T*xVMrLyYRA2<2#?aZ4|zxx&MC>qg1N=m_TgUa*nJq;vxtHq z-n%<`NR|1?%oBcIFbsAJ_aaOnyfVX_KwkRn3shn&>OeRiy;L#8yTXLvzCk4$EqWz& z?!|yHMdFDR$@2Aqw6V-2}?Nd7)gSWmw;1WaN_>Lk#X+`CKAhYZa zSgKyahv}b%lZoFZ5tzgSy{heX#LT`4C&+E7nm{DEbeU(P%2jszpvlXgYR7V5iQCSf{fQv?mR#q^%1I6oh`em66i#a;C7=?w&s_wdG%vdh z7Zy}Vu5+>aXuN)K3kHa6>9fnPhnbCYu=h%{oH!DRBVPMWct3V7U#n4N(tEr3J z+_s?Pf>M-UGJ2IttrqKvfSW?Bh_ri|*ZkA&QxSJ=&oC+gB9o#ruY=@RV5B*Hx5myA$Y zjg}5nY%CR})cS;f1HP=3xK-XjCANB2Vi}~QXQC{B)(`!rEMzymf%b&aGzUx;?5^Lq z*Xxat+vTc7H-hiO(8d5spb`q8#9)w-EK>P?urSHDHz3GUy95x$z>4%-8!CtU!QTZY z4)^puWAKr|E3Pk?KFixOQNT(d0IIybY8{8#Z`Xowlw|e8dcG%JU#+&PRgU<*y3cuB zoM(XtB=HL=_I%p{fz{dX`qLyogS(q@!4Ft zJXt646#*zE#v~#>CJuFN4S4pGjrf2pg>GJYHI~j^i2r-{NgS&?i4EU;6j#i<2y?Pa zBw%Pk-dq^y!T#$vAH>(z-;4X#+==xIF2dgGLr95BLP=TyzVqBqh)b*hk9_`@xN`nQ z5}5S-_Kmo6#Z5TdT8ocP?8L9{`U$>z@!iNvnuXJJ?r`mK+_L0qFb~y#zWRIIz4|uH z%PR3%R&8&i1lai-qlvigARx~~_eDqdoeXHGovsLa>=GzN)6+V^AYL4;w6xW?Nt{V@ zE}Vk}7cC5HbJJ&M;K+xE2>{h2Gb?43Wsk3lng1z}=qSF*64wNwM&Z(4;BfN3NPO{z|?5aadT3Jx-2s9IeNv7<-gNeAOyLFNn8+KiZxV?$dm^%C7 zf*dTrU>>&bI)p9n?M8Z9vJ@FE96b;~lFncrp6shpk2KLI9Z>?MNC)D*q$+y=n1tnt z1pW{JphPqbmJWdm{?hxiQsVr~i{c*iLz?`OPOXF%z+W50bq1(>x!Kt%Ku&DW2{;Jg zvlvoDHfhhCou1ml<0nPDV?9$QYz4|u*%-JPvk{=rKtUj2i;{7aRX^&`-Fk|@A56U= zS%QyBIr@X>o4fm+JeBLaX7XMheet;eNvtw`C%dp2ZNr-7b!|tRD3$^mmtbatl)&m zI{O;{+79=T#YFPxhm(6{XVPy(D^0qVANUPY3$DS6{$^y=K7u`2chN*_VoYz{+c;T1 zOVQ#843N8#d5YF0Z!hyIvBipk6k0Q_1cgJ`%B7d;P(swL9ST*ym8^t#6Y{w=x8Z?{ z?vg$pu04Uom;^kr{YB}s)lRDbB-Jf-SW2#POyd2}mM3wJK3`P29Dlm!=j7O?K{rL1 zscWrAYJ3VFeE(@F&-sqVQG5PSPS#QH*6u_>LJqDjzXU&g;pb@VZov_7>JWfvR)ek9p!D*P;@slDGlrn*;?0%cc0mU`D@BCclA7ZvalU5URQxV zZ|*`-MbRiiYhM-mBbfA+SIIRI{e)Kmc-7Ed!Sh#!JldN`Ys>pGEXRKY0OmJ_l9vBR9*aOsjg{F z#651K8L24TBao4rjBkDUGkAademwZ+4U*;3?KfSnYPH63ayRAo6pM%!Cf-%zyu4Em zJH5|HfAlAI(nXaL6-Pz+oz9W2;dx<(1AfR!vDw<9gMgSh=HOj*S&w4<=9HzwqmEOb zehu<#pG8kW>8N4gwqy~g#QKpC1_Z^pigUbYt0X1k$oGPy+w#586ODzZdm=Aa&0}u6 zMoWv})K*X8t#6*v@;Od#FzKZJcuFJs$q@pB5&j+#G!<}GZkLuKz%u|EtgbdyiMcE3 zJMK%|1M2unJ5ks8_f}y_mB{n?cN>h1{9 z2J3F*M$->u_Lq^`c@jMhkKicMa3=i*a&2)vP-R6aJ}hi{74sbRh|63Kq|PC*=wg6S zY*<<)z{uI(1PnC6-cy5tj!K$bJJ93Qpo>Dn_Yuikzdjv}IbT#%U#Gbc@0h=axo4ij zqJ%^glz$l+C;p6``gy2NTBWFrnUY9YBQdC?#HvY*3x|ZaTkI036b^1BcTkBfl!V0< zA8To4z)Tfa-bR=(-lvhU&R=F@3RM~zO zmlm#o$zZ~JCqBX9x)WGYx)cdi_nFpnQgUx)IV_{Oq2y&x^f9}>kqHT{%yEe9vF+@p zaq2wZg`+R;!@^4zW6sLC&#W&B~AxPNPsd!a!1>U=r8o z?d4>d{WWNhKL~yPRj^n7H>}0q3#ECZ^0Fy5E4SX1qEU%e{Gg+sZ>*V2*vV3f6~SN? z6&0HlDQcRJKtm5jg`J|JF|?wT^rlo=(3vS>8|;B$oIrz_GN$9*&x=fUxuE@bb#z+>(M$8vE*Q|KPevcPbo3i}E5jhUE~zEQvOkZO?tQrM_@js`x)T?-?85Qd zKVyH+eQH(Vw;Xm4l3a!SrkuD00#p)2+)7&_td%(OS-3zYu7gF|(>#EIFDd#OSw}eu zbaa;(V>Ir)_zpby&J#FF{7LgNOC*4(msX2@e$zh>Cufj^L8&vXHT3;IfZLW_gL^K# zMf&`Ohrf+Y1TcMm<*icsIkSrKy(=CVllMsd$>DQ+&_ge39*3(IU5YmkZj*qlf4S}( zMDE>;A4=_-e{G;q#Lfj2v@9GDk(MH z1URy3D2p#8M~(h2USEMt|MN1IFI|AFoP0$^X6a(6UDmL-O;KY!B(it7>&u(5|L{rNaq~JUDsL#g;z=#PJ0_bj zmy^Yd)rx4VYXL{u_u3!0((A=KNz`St+Hi!tL*&AfVAe7i+zD2M<-@*#mNEKNL&miz zsD5k=pu~%2uyi6XHjBI+yx%(pOxPkP7!jb0T*nEf9C;omaa?*60kZIQzE^zzL-}6% zvm_GzW6;Nwb(gnxYIQnA3y0hvU+w2>yctMuTc=;TO}FD@+dYn4%y|oSl_b&u@n`psqzKX%)bXo*&|ApO&f!z_zE01 zFGOG679@1+hdE;MMVMPL+jDBZLAR#bJ@N}w0>Ockf(*9Tr9fw}pi<_^z1nXBXl^QQN zfY{HTH+MofwR>occ0D&L4^(3Hk_C#2ceT-f#1ch?sgNj>L-NX$m0W!;^igA1=N$3W zznYhzBTG-6wGqySt#Bl-4ypyL47jgwF-JrwzUF~6MB+=J-?qEB2q;~q`=6XkB(57X z780lwk;n*yIs!YY`TI1MgE820nUuS?^fBxohCmu=2%+9 zWM0)!LfzAtael$GM9b22?AbMNOat6cP+7k27q?exGm~z6&~4m{^YvLNd3d0N-E#fP zTm7sX`s$~9KGA2vHOA!PQvYeZ81OQf8Jrqp-{M}3qR%c6mN|mQ>W;n&kiJ7cem|b_ zvUQTusL-AQ>Ub)1DxcHNFJJuA)^n{$FV2vncWKDSptRv{D9&F4+W?+GVZT`-FHX1$ z7H^Tz=!Uh&&XoX}j@BcHu73y7iN#1R{TzzAb|SUuZ43}H*)#N@Na{U~ie|DD(6%7G z>@IR9a-y?lGxqh`v6G_5wZ_g5$!#w98xe*2_zTd{S%u8@9f+Ox4HUM$3v1f}w8n)e zI?Dht^7rx!fP|x5FzCV&vlv{`(GM#e;7jo16MD{Yf=a$xCjh1S*>i|&y9ftKxzA6S zMUmE0@bb<#Bm(Yrb5={>$8$uc{pzQivE%e!+_da!iJ&`~EaFlVQn7(t-JYiiZhNZ_ z;_~u~CH|$_o(5cAx*F#QRC@7~SFvgDTR7WXgYR7R6%?iA<5crm2~hexk#3*qs*x7HcFZWnhVq5~MyU+XT=A^sE0Af^w4g3DK z8=tv(JuY9l#A_Rw49;Iv5U-gPUdSxW!rm>PA|)XXvobvc-R?yRV!ChxUhehEKNnNz z&iTe9iKLRp$?nwBaSG{;8l1F{t0uX&a69Erh561TX?;2ux~H)8&m8 zD|8f$Ku?i>!YTHsF6iPbk*hT$kKA=hMMAp`|*h;%G#$p#)=DIhg1;hjF{0^#)Un_EBGf|N~4@~6UM-Q?DnuNCuwBt!F!-H7u3SV=(UlIHL>XNjx4aF+G;Mop~%I zgp-~uqvXZ0iFS+O@v2D49B$Fzx3+6MBM!;ZXrwOOV?ZwaR0`Om^)@_n8L2L5GQqggwn_rk%7*I6~ zCb+Cq0?MX(Vt=k+YF5biJs4g|p<{7d_*jUNG34~z$H^qV#zAR&S+Dfwj_0Yb!OU0K z)4-qmD9<(Ab$L(q`#L9oW{5ro^F8rZho@^%&m4PYl#S%7+J`Z_;=8EZ{~NrY{WVW{ z6rGD5s6k1~W)zz#oOu2Xh%#luQT-C?+G}wvVFg;^7Aq=eq7oH0y@I7WTJ!v$zOG9gO7aBpU5AmGwG55*yK$b}z=9QvE&&bkOK{3q zgn@H!pr`&L?2KNHlPOnFRJP1uiygOo?J;vui+CiReFm|4S0aa^=*88&hDJK?2r`07 zpkNYrmaSTN8xL1F9f2l#t(NKcfhNx5 zE&Zh2_Y6g5^HewYk-;F|yNlFry5^0?h(RdM>+QOGdA>fYS(dMQd|gYS@AzV3`(JNL zlUyj6mqTn7be^|dvcBSTDReLSxPS-}Yfg7y$MYZIjxSt?bxT|vRKDtwUlY7Vf~;G9 zO|9eD^mx4S{1&Xaa1qR=z@j+`7dW-u^B4%qBp@!|5JxU-{=;=fktJOUxp=s@gU!<2 zxenMO$xcx%qbeVSq4-YdnzzBxeFlz%(SW`$7dLNX&t~{e`YlVWogRKO-tu`nuLMlu zylmRv*kh2mZkUie)-dwC@>X`_d}IWCjX*fSB(Bfa-%f7*yAYE;$5-_sUyIWAAtUje z^jr?Puqjvozp=Gsr4*6rI|3<530S*gF`8RD@X!-4Lr>(vC55?)I;^30l@hlxMTNN~ z;z=62VM{z-wCEU&u-gy2>Ub5_O=UbkayK3Z6Kt&4`gjL(1UFy8x;zI`;Y}{Wfe|)51n8T$mj1yWTZaw?}yW}&MMsO#BZ1RsQ5S#;om?HEwp>$ zCG%Adr{_5i>+ftpzzXyron!a8Hu7F#k*DF{Kt=-m{Qce}{h16;G-MRwO@z)aC?mY3 z3-xI+;WM;*3otZXX2LyTkdc^249$mh{35rir6-lWKf@kGjU5{KlchUwN@mT z+=&7r?Czu}bUkKeFEY_zUIFMNV&`B*06Io`=*oc{8=I=qcQRPQY#^KR`*|&zXA6)<~rU60J5S`*od&CWU}EcCp}X&+!Iq zdGSMh^Gmm5<-)l^4Iw`?`9U2HP-)-Wd-36mAK;R87h-vNSy1icOrFRkgDq^aDHT}+ zCMf}u!iouW<%bWyJRo&lx!genQ(cfU3hKJzmy0w~RdI}MZ-K0%@Ct z+F&L63^yRiy-s)V#{D{fX7I?t3q&&U1Ss)k*3Uu(m6%US&QF<=I2ZYGd5AjmFpx%6 zD5P5kBjdsG=&fC$a0_`WGm!KA{SF#fQc%%E_fIrYvdAL35~rWYg(AItFG$MezujN} z7M`mxhiNdN61RszBL-CYx5S$#V2aPNX9QDV7^yyQ!d6K-+LS!sSZ8NYEto!gt6!WS z11M=7gD7&gKx=8i@fc;?C!(q}9KU7+U4er}3HFz7?}NcEHqm1R5GM zt3H9E(0R6aU|^~(y?PJAzno=5DLj)lC-KoA;hDI{4*3#iLH~&6se4@Yy_ax zMF5y5YaP*60dfUnJv9-aQUp*EcW(4vfJnj`DHslpzaOc_8yi2yH^2NDiA-~J4S{{) z2elFfNNK5+dr#rrXSb5yw-J}!vknX97fB@7O7nY4N542#KreqU3irC1cVHh`4f0FI zn|NG7B&$Mu>Sb_NZzSM{!pIV5Sk#$6!%h+4qUfc_N{Cv*FSX%qXl0mJMqJ?22-qY* zr+|nVhgO;*fRb8wD^d=Rz|p<|w6tWXJ{Vd8i^B~jaibYfx+=X>0{B($#1tqn0w_&^ zo1|hBIr7`eW#t$cwBYe)U&A2j!gEV!d#_>Wy}>|CDDOIUsbb(rnv8h@ab)#4i0oRa z)sk2!@!kQqD?{}tofI;7qhz5@OCAbxP{|vh#I50pw5OmTZY}ls(Lk0LJei(L{Gn1r zH#33y6oe$|G=WMf7ZS?l-P*!i!K`~QNjHOtLJy%2-jb_!elod&alh3DmL^mGtP+@{ z%&N-c4OZ#C)vSyA3kKjRpTBcs03|zF2h8o; z51r146S};h-Mjo%Jk_rE8M7#w-4YnjJdJo;D@9Z(LQD?%ac5tIf~XG6?b?o3GH>rO zkLF5H6HF3gW+R@SK^w94Q=}(ht>g?5RATES4Np3U03}b>NuqxDy#SW_$eJk-aEU=B z2E;fb*my_;P#PI!H9#a$+M9=}@b+svB`|5hoI-Irq`jwTAi)&)5m_XiuRM=s*DS~U zi^>U9q7?;l4fFPZR$51((H%UM>+40~o}Pgu;a}~3&C_RA_B?ShIa1cZ(RmWO&I8bs z#ijl9UxCz%C9ua+Ig{<2)ncX9SZl;WNx_X_WkW+?p^gI~kcC*#p^z2SHIf^L}&L+#a^r za_|BqeaC_o)+KoCCW}bFl@R))c0U-bRdW$s-oAO{E#k>KNm%s<`<>(OtJmB`YL|WX?Q%;hCb1qbP$>c^0Rl)`LL5lJSR%Q9uiiLt2HW1+D}hP# ze60|=XH@Xn-6UE;mN7|M>Y5Rk6o=B~qg~uw=BmLxpLha#&KkV?s%T^~P4-jhq3%mu zb#+Vic`}LhmY37AkG4lpDZU)emQSG1SOyzK;M8PZ5jK7aZ|w{Ayq);mB*ln%+(Tn!>3MS&6X%9qviXR2)a1)Kt~YLcfY+++rN86a=D+ zIF!uE1>#g#_E}lmaRCKDnaL6XlxF7Lk2agItYR)Lg6r_?OPkTw(S`YCg`@P$Q6ob- zsA8aJD5GRSI#-t;SxFg4iF&&7`c3CPVmJ>l*=#k~z>)?AZywN*Sk;|cb zA+pbt5m4ghaUZ#DY_%0EXf|0~-NbOSyV_(ErB;A}wAk{v z6hjXc9X(v44F-zjX2al+|0zc=lS>D==Lxqr`T0POIY0NCqtuzGUJfPCVj&>THfV(@ z)=X`7`AAzhf*2Vdm}wZ-3=>loaKvRqUv8N(lI3k%yQa zmB7!3_>=^kKUq5_RS%Qj1sVRf($X=eykJgbdNE@aWwFA=b@_5{6KOr|rKofi4bD@T zQm2lTIC~$WoU|%R%G6X4R_b|U$&4LDW@&g=bSLweutK37dai58nplbODq|Ey?R3(+ zIU*w?uAH)Fnq;w}T@d+ce57S~wp^k>fH0k(B6^;r@Hf7h4Kv!50yA>i2LKQN(dm zmd9jjo#c0Fpv25-)jb~NaQ_S@9T_9^4C_%!>Xr0{q3@}Z^wT9x7Xhl~C=>Ki%Jod~ z+fpl9b+I8ativguL;M_6L$npw=KZuH&4#=MJ^aVmDi zN{Ow9IHWuiS*s!TA>Jg7o=7P59Jzvgg`-@N;Mh8d-QnCfBTYPbqxfagwJt(;+Xjf! ziC6haVu#$__;}D}MMnta;arAXxJ}%59s_noo@abb@9maBfu=A`Zs&6HMRv)b?}k#Xw@L`};Z zv9|OS5zSYbtTZtoIU!f_yp`kYyhoC5%An~bw>NVv9PLMG z9(wJV6;oejPSiE_o0qJUCaM7wR4*%nY-PmOM{Ic{IH!c=Q6SA4w(trh(=<-YpzWcC zSXiy$vF_p3eI4I3Q}`4^UEC=wiFO4>n8vrtZ`U;R`{3V1L}u;?=t(DLP$@AX4jW#3 z7u7Y5C@anbpZ6yItd+v@-jP`?IiQD=T-wK5*jh<)gQEpswlHEE0M@m5Qp}t%CbIY% zq`fZ-CDCSI7SSS&e9seEMJ`knPy}%$F88;%Vv30#KDX8=o=1f+Pn)b3N~6Y|=c9DL zmAX2y?x8nCPdfcDRBJN%n7AJcp3+9LhL4JhM&f8##69_#&-|O>-&3%27Ez!#>mXi{QbQyQHkGW`wHMxy`_rE-@5j<~JKm|$lVyqvWZ?f_FCW0A**5HK)FIB`#7~y> z6Og2#b5JKkTe7a`71Bg94`SmA{}!hbyBEB0rc2uWrB;c(u34S%icm*E&+X)2F0sth3J8Icx}ldnM}9LYTy1wRU+HJIzM9EmCcrLF7n(2hrrpP| z>%&9%*8O*)Fn`v#3?~DT@({C1D~(Bv#jKJX9N%#SXAf2(X;w1KWF5!i32Ye+91T(^ z&ko7mjEN(;{!jrP(QaQa3r@o;erna_k)*q?8U|VzaCB7yvu+g4nzVbSbZ~HJglq$&GjU#T(WZ@`p z5kP4se*;GPJ}Wa7m#$rk6P49?=Ec7wHYOT*IX+1DWdILPxP@?7@?auKiTr-|RIiit zipe4_mpHvNA?8VOD(Q*>VDjg3&(|%a!~1jN=f3XiCn^F8SYT2@x~-=OehG73?r$-~ zQEO1o%6{~?laWLSJXTWyP!j#+w)%2`=cr*Ww|UY#2q2kk5-vT47nqI?whwo=%h5xC zQVdKA=i9>>>41Mfp-^LZ<4)o_)C82I^5`Ci;u6VauxJ*h*d*&Cwm@1!mP$e{%(S8~ z-bKvD=Q=GK{A`aIj~_K+SCby|l1I{tJiO27+=a%ZTA;@C!fD2Ht1=S!|6<&L^B zeU2rR*Gy<{sKPfr5RrpJ3?_BZ3v#p&&_&>mja~+W^-Jz4*@E%P>24{9G(DLjb{2b5e2TSFS-u zVFq6P-9{XK|KRZbshrXw}1PQ%o+NU@O- zn2-@*E}%PaxdLCh`vz?Na5w(+=M89W^X;xK+|qc@+jMq;QgTxmOyY@g3F!-b>`xkq zxA7D$!ub-`t9Y^OcuxS&MPnwMCEr2R*(Yfw@Px18gTBU#H#13Gi&Y5(PPqE*vPO!5 zF*=!85CWg8@^59ZuT63zWfv;mT!5?!h7{v;V|s^ZVC2=Ev9!uR26PnqQCkL#N=Ir;>HbQMu0&j<`f!Fu@i>_ixjoZ1F4{uz@(1B z9<=m#k>yekSt^BZ;>Ns6y=3XZq9syrA=dr@S{ZP)v)?)(PKRYLxSYaL_!KDgq%HVK z<)-)F!zZ5{!9RTE7UYzzodUfb-Nf>X7vY9~xET#+>aqFJx6oSGA|+tuMlEZg(KUMi z#O`jMBphH8*Tel|t^^@YT_OcbBWpc!Go1=z#LOe#W<^gZd!gPVF+mEooavOmv3ukl z6s~?*`$!+EKM=0srE;0vKO$u8Jf!PH#v(ET@)4L{R)GKSpTC66j8y#imycr02fO8$ z#~ce#NiANHF%?X~6Fk9XP)Ug}sKj~JL@$9!3?BIszCI9U^IHj2A~ImPr4_s14HBs27;0ZQt(2G` ze5T8ZAV8(RZ9jqo`)lzX0+VLtc_+FI=hy~|_RHIpl#zsW_g;zIdHHzj;Wuz#>puDA zaXV%gI(G>dm?Y|97r$ZAvxQQ(YJkOXxnVdE%1IcCp43GuwN7HC&7Xo1u}&I$s~hP( z6mDVukzkc{rEOC)(1OxBCu6#(A(HyZ*tSTUCVm8Nx%OiG^Vjdfrw2~pe;#}ewdb2A zzEM-C1ujr2K~al&63&)LV)M3OcfP+Joq_O2kq3x#?*Btn&5J;X`nsEzc%vc`_z3vY zFIYEG8&nFsh01dDc(71XmeX^pxF8mL!cD~Oxuqj#8B_`uSe5*z>;x3?0lU3jm}x^z zPZU`#>4_)F#qu9#a7Zq0KVH^{K3f!;iKIKjOrbAF+Aw_77B>$m-N%MM&$NTn88@Tn z+}kkb--xpM=f-rO`IHik@dV&SkJ{LBhBv;ZhHIR>Vg`x)fl2c8;XWQDkjok+o7_@` zcB`GtC0*7@_ApvWg`1-(++(Lk`6tLyrNsjh@2%|TKR$xvdyn9|cg#gb?!+@Jo1T-)}M)loEAfUnK6;*ld}9BS2~x=V{I^Q_?ORoyzwNwSkG z+@KWY?Wq$+H1v(;^I=kMyM`V(ox9N-Uol>Nm~{16`WulO8;{JW0SvSrKpPQu6OESQ zb{e#LiNKl(v)OuQx`~s*F%H@+FfvO$9SdRNWj#fGfxKr^|_A@qw?S>eB(MD%=5oMAv8&Gr)Yr_Av^&LhM3!1Ta9KT3KkVgzp?Eb zK7^IHyt0bNhh&`FBqF2ms>pcoHDwYBW}G0wq?Hq0%VtEGQs9UokT8tVQ@oA8((`s+ z!JLNAL7)An{&FN14c#wyQcMPtEEJ`aBholUpa)9N&r5Hl#9WSpem^sA9K8%O|Mt#w zMWM5kfYm7~8bd4Q#&=;sasX~4Q?#%Cn#}+#lX6ESG6G6QprkMtODpE#qn!t^?ZZ9D zOiw{dk}~TXCFM`&G@(S@^)xQ26a_QQ5a;QV_j5cqNWat-{f*}l<~;9d1H9r27!35Nw?rP!YojhK_^CL5l%lq6K4*ZK z;{d<~pc%#~YEffu|(G5)EG8j-|i5YBwlV0$Hyb3-8rPq{&d4s2* znRO{4rB1k#QPNjs!C3808Ak!(b)?JcyilfFydlrt zMRu8xK2A`jM+e)`(Q6JnpfuQ7gWjg&FeT)u)>EUo3k7rD!>Z&aEROe0fU8=ile{2( zY--q)>q*}ANb`amfwWFa_6>shmLlSR1lU^KliR-koTF3Bjm<() zblT{XfqY_6sp@eKdj&+#4kV}7v{6yKm}B*N-P?tU0+bj)vRMZSWa%gUpigQ$x1T{5 zZ;Mji`Vi=O>mYGklAfYiC@t$CApu=s0+iTl+1qzISU`!#MG2t9?xgcgOqZivq;aHt z-bAtrqx-}2X*OsHWXyvFl)SgbODk;(j1yYPA}6Ki2s+J$UP_tXr?Wafp-|i<=s)zo zuoHk3leGqm;)_vUy$R=<+i)^*6elZprY;0*@=)8Eq%bF3NWIJ1hao%o{cL(dB>0sLcxetS{G zNdRm6m`ju8M8uVgZjXh?E_w4KtUx$OiS)(UBS<)>3a5deE(djayxiTmajekW>AkI% z7|fkW&N@VT09l*KTv*jAKT=L)1ZLU@T)O50RFs$Dg-u)VlV3fGTd%te3+ETjv|$LS zzX3o9Udv@LDccmf(SdW`zX8YpgMba<^-WvvwLYa6TyAgbJ+qb8t0WzRM=Tt~NF4jh zCoG8gz0aJCyjM%OY~BJ9u0PZ^Of{X*-<*Z72g94h0k^#Adg8wGy%A*Te9U8SF!{H{ zWG*o!-!CpxE+gh4^0OfxcbjLEmD2cfl7!e~RkP;}R3a+27^j?xcs1iI_^7!a%|{7E zH>F{A#dopJ(1!KrA3|>HR>k!Sa4Cs6mcl{at+*j7B$R_jR&whbAf?+t?ni8$FBpYo!UlViRBWTjIsSx| z3f&9_={o=ixRiKOFL5N2b@E_e+wgIqlYId&D0WZtGkBsrKgq^iRvKtzOva%T;nWFzeWzn- z!97^XTfqYn&ih zvFc)Avb18rkP>VWQ#N0g$qYx+2dGb6F7=@%ckZ%z$9+LZ1T&_(v9`aCgWq`PNHW{Z{5T-)Jx62 zUW#6_L{8HP@VK$k=xa5S71Tf#(&;p~F<}CwJ&lphoCx035FGPmQ9dRT=d}e-MgvQ`BkIrR)d5 zso${q4v=+yNW}+hp%GH0Lz(&g?4*TuewV8)O7sJNbq1@OO?K;~?f?Q6`5PnobzgH9 zPYb>ByuOb4JK{J*q<=V6aCUM!GBCt6e1U9h(O@DSeX4f6=cPPSEQ9ai1hl~!TjT4c#@nhoq zIM!VpkIO7iL}{_C+?(eF}!iPL$_q&#@)F`8j(^ zuk_rfoA+S;n)&4NHWqkMTE=8aCkK-XX|k0?k=)p&RDigmo%*&9pi5s0dq*XZG8#A( zX(nRN3YCrBgd&sX;D&#QW5At1K~eCH8 z7*#rKvl(DEbwjHkL>}}L#%HHWXH+UgYltOsG4OT3qE9&Vtn?O5GSj~-TNTf-0lc@_qi zj^=z3FQBhP*UV+lCH&K&)`{)F+PyBH7B$bxY1hE`3fi0H&Sv7eo%iB3MO+!T;eO-MR zAVSXMtZ8CRNdT02``h==ke>VQrdk|yCwl79$q`)Dmg0XPK&b(!eIcZh19f|| z5$9{L!aC1*zn|s$fv{TUcJO(ziT?0sPQzQE!sE!iJ)v5~c(cd}q&>dcKoDXeMJZ0} z0**#|Yy``jnxt@DPq^W}zzmI4-11oo?PODD;uX_x4Fq841jUl*&@k0 zXoZcyB+XF7HwKpUvehAWe>0L#tDG26fJ_FR9tJ=Dt{mwtA|oTv@=+an>bh__fk`Fp zFQGMg1uO>dd_q0Mc?CBYDsM^#gGmf3RhUv$bAijGRjmdU6_MuZMx^DWjts~YKhn}F z5S!Ann;S<{WU+dRS|Wi>blnjKr7plRgrDJgyk86fxWpoTF}w>Q>b95$U-qGWH4;Cymmz+1X-otMBP0#nr1 zzZksH(Okl2?em@y7Xi?!EKSiF^ZP!4!)$*;_9g|Ev^bs=@c!x^PEU6-Xy+f zz5O~w8kS&E&;WQ;)0Ht-{4C7fZKOd&@WP`e_G&TC;ohBQd!M-K}IX z6I~qWz4n-1XYYl<)`>o2rpN2k?PO~AL6jz@z}9*YyOXaAsC&JpY*fcDL$zHGXVu@3 zXlsRe_D#r%Pe*CP%h0wRKo5>!#oZ+?jx3ObE1LkGl$IsZvE`60Kno$k_u%ew zBg*7GPlCzGj)>$Wj?#d562WYP>#cJ`!a!M6X`bl0J*>!Bv&|} z75KT>Mh{Unt)5QpJ&CyFIAj)P`KftoTozywx0Zi%ylJ&#Ef%$X$DxZ!g@c|~&djSP zq;t~CJ>rHnA!9#ND`nGlcFi3Rmp6TMDonIUq_)^?Ce#kZAl}@AWPRWvuGMbOM3twH zO$`fRH&OkG)H^vxAT>Dw7ty4tp|K5*KJ^MsPW31*$eEmt4Rfpf>3V@w-%T8?VR3!q zMkHMTbnFGX4gd+R32z{6nSRF$!K65)eleY z7w069&&^FvTpP8g@4S3$#I>Hje!TSByLk4c%~-Oq4Bxo#R?N;F!FMFHm!^aZaIn1< zQPDYAh6Y3rlDS}rlGt|=$-O6`p$Yy>k*v-=(4?=$d2%lZR=Ujv_%!Fs*pzfT_MX{> zp6WMXNL!AD<#*$Tfse4N?qM)+6{rLYAO%{FdwPeB9t0M$Qlrf#Ssu}s-@@ly8(-(m zKtS3+Pai!rMwDY?v`M)T7_#O#NN^;gAq4O}# zXWrzu8=bQED_aVE*w>&4;1SkJyjK$t^4nk^2?oifvgKSe((}@Nq?$UHl+uIPduRPEmQR< ze+pRGRVxtJH`fB0a;s4_+_(bnR2VZbV8NC^dZY4pl9J|li&~~6uhb@m?P2c+Pofsp z1~0~Y3XtQe&TyPl8fA~i%w67i=l^H#I{@RVuC%}DMKkKXTC(Kc!C)JM8wOJY7!nc) zfe^9@>6_$FvLV@IH=B^%Y<4$gDS^NyB=k^|7;LcV#n{FjS6PzPyEK|!{&U{w$xovx zZ>lu%9DDTMym#Nd_uYBr-tT_rJ8$E=KmM)YMRfNM@5I%Yt{#_!?-ODueey@VwL5zW z%9|g7dBN9UKKT%_WzHR!SpF9uW_CUcv!e~iOK%`i?!?c|$*)UlQ=V_zNxq`lIAB*{ z$XFX!;a-IXtV4CwbPfjk4#Lp(GK|?($eZ;U)DFCflfK-j*h+C#Msl#1P+Vs)_ZdkV z>8jW5*KSc0LxP2Yy#m_Lh=l*cV3F|YbNg8o0>tUh!D!|O6S=nWG4x+SY^884C$U^+ zDzPvzv#~QT-TD}ssy+=b>*_=>H@UI0Fn6NWMax)X;HsUDJ46)eM1fKJwttA%9^HX5VkXU7y&znb(_&vVU=p8@FKaeb%@0GF zKObHv2`y&TrSv?b75+lR2AL&?^60*-+eXwAefrgtH~%aqE{`iikMIy053 zb9^u=Ll0z{eJ-4$naml~ub3{zonDnrK4W{joOk9tCbtE0vrSla-a=SLZ1~+DpM%Ha z!<>ei$*ok9OXvRAAxD2$7J58YV5X9pCVBNyMBo%$mgsrPjFYgIvzQ{;lAbS%b@#td zA7U*H?(s91hW69)5QQ)Ph(1T@a~!ap1guT8Y#}YCR;b8ZMB(g$&(RHqi}WV7;oTj% zU&9^}kz9-7W!;25=SkR^XjYPV3h}fPzatnF3}$Ypjo!!Po+U9CT~F)*5ok4<^ncHA zTLg-D2cD<&yT}N8>%D!r_y3*|fTY`Rx(XMrSOT4Pyj%{0h|B;}JaYIs9@z`VBHEiA zJ4sY}DR#CU5C9=@pPVH#XG(~r(~*0=0EWmpX1b)wv7W$XswQ|x+VGd$>)}?)r#;GT zg96Jz%px#J3ol-){G!~$5}J;6nffVeja*}9lAeH_EX^6jn!z5?Nd65Uy>bv;hua11 zq=g$7p|GJy*li}7vD7?n0-eka_;3wSnkk%uCU@6T_iAd6`H%`u-6dczvHB!o6_aVic554>9g& z0VQrz{m~yoJMVTlkNg3?g}+E-Gt0^=!%&jdOqoOpZUJUhcJ~ycsVR9NDg#Kv9s4nC zv0zwLi_V?_8e}N2{`|QKJ{wR_4GY$mA4M@O1C7BXw(4mFCh_@b%q38eCPv0GEihRv z(Am?6C!T!;gF_ZvfAxCIsh^&}5HOcM@V3s&Dl{Dzv*&XKUe2QFS)GsXUz(l32)SRtjKb-BFo+m z6Ct@ybrud*el}$K>Aa(Cfb?hP-GGjR55S!t9K?wC{F$-z4t*xmqII295i3awCUMyHT{pQdU!psl2q-0rg~Zo_)Y^`hsF2^Cap^ph$`ISHqnDRK(5 z06%AvF`eKfS8moBXzLyl0Hn^YVc2Xg6cn_hkaXH=k_29N+e~=!#4_A4bN2*LX}SSP zeEDSD-KM}zl&Jzr3iI)m&)pzIfV=1Se<9}5B7A~GyfYSC3ouh@=Rl*tR$_3eLZ3GQ zTnYpj1UEC%M2!e4sdEYZiLG9I6!V}&AWPxwgJNhGG^g$rfG8iayFIzf;FIVNb3Mbk zeoZ%bw@Bw3Ys+&RdOhl>`-$PM2fk+b6KL%677S1dOqY(|Ss-1GHJ@(BvoF4kQ_ZJw z1qp7iUO@~$nKt3}I$nA`Dq8ME#gc!-^1Z*r%cFo&mc5O@Bmc+f>=Cl}kbBICt_&mk zGQnlesm_*J?DR`kgCPR92hgO6ZIGHyEy5AmTtRNez;hrcHyDEWq*{9|IP~g4K~w46 z&F3ShELU)VGZ&e$^x9=;+0~3!@7;=pmn=fn;@D?=lxiicq-T|F2m&a{ytx9;DV@Lf z>^KekD43)opiQ)n!VM_yc?GA-ZxlC8+A>){l6XQRgCj7QjS;~l59xX_U^LuAz!80h zdxkL7H%vhbhTwL&NyIywMC-`)j|PbOW#MO{#IlpU3>JMaQkh=*?cGPe3w6m#c-sB~ zlwTL=kc95{>l1`_)k$b!nanaRkmMHF_73ULwfCd2z$^er=PYVKVIH||6SG!B?<379 zh@Y%#bP})>jHSfov3^o+B=?YHRV=~zs?_5t_X*BElU=3-qH2LPtCnCXMS^?$xo!Bt z&+fne_Y_SmIBceLw)0n6;Em0bN*2Cm0aG+n8~ZES8K| zH}0<}ly>;Y?af!X5nlSRDadtB)%!LStxv(HGW*#}x#z&k0fIuXD1)7cSWY@F8ElIs z%AK5Z^}Exlh2L0CdUkVTMouUT7cnl;QKUoFA=TSm6dhel_pz5yRh4qgF-@oj|8_&e zBY5_&Tk+;Qdnt0;O8mnuS4CaL34jvku(R-56dwLx6x3af3-{iIK0;ru#9$cFmZLN0 zyt5{1TQsd{rQfF@s|Gc$r_dP9foYgltst~m2A?5IV}w!y0&`@HgIo8ban}jVT{|Du z%VtbCdzD6ms&lGQSXV5tm3kVxvGB4bP*YgMXpLD)P6Cu{bQ2kL6VX{csr=hHio;o8 z-P=#YIq1N}w_PHzx1^_RrCF7-&X=He6Ie3MLE(`B3ye9&vC|*w8^W-_Hlk(kAclH} z=`)0pK?|}8G%^=tBbz=2l|`sqIuqGNxyZ`N5{}>g$SWA=?4LS-5>vKgFgHxlTlntFTSPK4D@mhrrtn?- z!ypL{IYCG1R$U49_M5PrZeWAC5(mrAPB*qtjTUVCo`Ne- zcJy~Bt5}7ao-Jr9+!QQX+HW(H@Rk6=M0gOgOBrGFbn*H{xjT<`;PCbXD5xqF+}o6z z;OH@fP8{jYkf+DGFK)#CzkP`9#8z5x$zqhvEswhWlqBRmLex`sz0+#Ozu3r$fEZjy?cgR55PstpzO+6gPbI;ZqtRGlyP@U+%=KODe*0E z{<3+*R+@#!p52POh^@5ws&!a#&iup|bQa}kq5*IuV;84no1DIikH{CkqRZf=51Ynv z0E&(+P}n=+)8zqqBr21CzTgh$w7aKW|A#?~aPDUD{6-?E6z+G32quMacN6PnrfaPO zXLMUd84huOsHIqLxVnWpR?c?LKM{E=i4G#@hEbvZ(K&GRL<>5)dhv}f#OI|F6j0)m zYt3JSbKAEgKew9nky>EUSIIf&vo;O4&%RzCmX;S|nRh2zz4oLCb5Df^X4+ghW0yFS z)(AHVayy17Is}PsTglaE(Wa%yuZb*x%q%4al~~Yw(G^S4cBmEmwtR@5Q(XdEDO}ls z``ES1>+!;3A3-j;9dPsoHXF@)oDJ6XN(*5GE@CDTm=wl_Nszm^X9tudO6XNYetCz< zYD({_XsDnFfIj3D5%Z`hhhBUW-67?k0E13V2TsXNo|1GN2`}2Pq~6@~;5qU%)K!wJma1WtF0`=YwsK!jb=(EC=`U@``yC`zVG%%N{2ns_Pl>Hy1Xn{rZXX0PJdk6CKvhl;a@5hd}cBezNC)6=3 zK>$3nJsNbm!e^5;nsE9_foUUsXZJeRYm$OVd<+9Dyqz_@L_H@F zbcvLwxZkfEMU&nnN*?X8VjgmqEv=n6a=ZzbtUFIm@~~-C*M0euKMIw?M-;uvEYb`i z!Lehe$){|Gs^?VNKJ0dpj#4uUwK}vrNxw&1GL@imJFLW%aT9Xwq_C^}@p!%PDf|RWAN{%_Q%p|1LZxwfo$$~#=%jm& z%X83+NbZO0rX>xncuZ%|Vdr1p!=iPILxQ96=|7UgWx=iOlo?!(cR&Lm)L4Z zvX++1F`U#+Lo98VIp*wXfj)XxbXjy593&Tn1Y1F#i8Kfdq@kpSo7k~lLYAB)w^jnX|qH=FhIh%-RaP^y+)qL)uC; zm8CG5V$&&^jK=Lo-9@x&)NJRAsuh`r&rQ%p2**ofhsO5lnv9kAn-cpYc!Dc zFMvG;7XFSrxxw}4>r?p9`^!sZ29 zgx!9`)&o`o%b@^VVF4v84KQc-Zh=0#7Of<1Y}bx|7=$h5EZxbjZ|3%wkU#qtanJXKhqE2<7ar8BQu;^GA zjM+*A@UU0FIADpMty-;?g!pvOsx@GNZ(c8|C`R4lI-J~n0w;DJM{Y?D^ybivDK1-N zLiy+hc2T`q(_%Qzmt){LO{MSMFSo!;;j7o*a&gqvQjplXY2*m3#=5AFWq`**qI?YU zurY8X{^M;@fJp>?#BG6qQ!vm;L4Xv!4k#bG_UMJAplgJGQ2-TMUI;iMvW2p@{?6BdbTTD{{mI@1G0mjP{79N3Mgqzg|a&F0nL&5nrVSaZ-IjR99+0^2|By`ao-=F z6(%<8>(VDGbl^Zcng$I9CIueP19x_<3kE9X)A%A3pu_`kwI=)+Ah4`>zH@|0)hI9^ z2LuXPKjRGY`#TDZ9EUPzk|^O1gIjM3+)quB?e;>VxxJ6 z%IlD$Zvvnx1(ZY}Db^^XQgF%brR#`?(>#C~Z3kvNsRdE-iR0!-U|6Vg3b(zhw;z9c z@+I7P+jSEn&~{Kio?TKSefm5U_0a8vhR5>Z3UgBU!w%~(D(lJZZSU{UpEWyN^31-` z7WlAuGb)chKmyboFthC$oG7_=TC|O7bOyjpfQ*A!A#4mJG0@Za_Hi8EaS#owX5pO8 z=h6K^19lpS2QvXgBKJ8x`Grc&qvMARfd(#O66ut1Q|R`#_F=~Z zuVVg&1*pFu{I#jz*?>_(Roh@YDdq89JpGKpB%j-hb)SwNOybt)%Ug+=jlV^Aq5R{S zspg{VfdQpZ#_p2h^&_TH5wIvV@`9(YXJ)7PCsWdKY~E3jiXU1Ua(U1PxIGLzNfS#x zo+RWcvYQMc1mcB6^yjrdzlxEeGwzb&c3vupZO1?p#dwr%p0xFNGzmNu?T?jZl$OJi zUm^0T@QaRV#M4m^iD#@j$fv$coi%}$&(Api1iI)(Zm~>?$!-A)fzrveJs&j_jl30R zy&FR#POMx$3j;$VXlm<4K1GQXCpnT?hv}HNB1sX1rej-W&S`44z}1^pW9h;MJn`Hs z*njvquD^OcYOA9UI1_kwqFYR|CTkcJilu+S$JLWokR0Q*4V3nnb3k@k3W_?NYU8$M zS0-+2){qHjVOcEIw*W_eN^%3cp)}5$mVKyjZ6jwNw{fC`zFF5O7GrRw+EkiQ*E7A2 z$2M6)b@&{``!`hmVy%0q{CN8-ukFN|3zouYJTn&Ob7dW=XzulTeJ+f|+zWdr@*uD^ zYXK^Tj-poM#{O_M%j_F#0UOQs?{jEyPR?8uH|@ZQu|4U#BI+kGm^AFL2_O;+Z+D&O z#I9H0fsUeOt-WIdvWYRo#zNTPEErIvV(@@IY8{DkQ#p}3-3u;Ugrd4)?E32mB-q`J zg`1Wjt01`OArJbP-6ER6Y$0%BI$772W&u=Ld-H~rofd;hBg9IIWSmY*Of+2p5ESV+ z5l9M`j;~2KJ&+DdPncw7Eo3 ziQ76>p>IF<7kZq){eocEH*e#e~e*cR? zO77$GdB$VoDFOjG@u0t#LQ1U~>rYUfF5Ho`g&{yfBXVsp{Mfx(SPV3m+KjsA3QX%gHl*50%} zrL~p=_=pvxv3zQbmb-FJPA6^KnHTdL1yywnWL>{q_JglFjAyG~m=iK-$~5rh3KPh&>Pl{xWFXw9uIrB@}Qr+ zNIIw!R8_hTb$kC8BNPeBPVNmnC=WDdv9L+O0zo?^NZP<-r`vZA0ZKm7>Cr~(hcm?* zf|*8L$2-w;vJ2f!U9b(=P&A_$MI^L6XWcwxamN& z7>VjLE^`HoFtV_JPan#Q^YP+d1&U1$EG~{%YoW@g5NI*#hhdA@L?4_vec@Je8FAfoCltqZRD7-5Lk3v;MOdAS_ z3UypMZ+FvRgBeO{Rr<|f54859>m-3ljRYc*D_KExA%RFmSbX_10iM2hNSu4+xNHP^IkA%>84sX&#^>AL z_&&b>y>Fo~TMw-%A6vI=$MY}z4R?L-o5(g$#E$^LT}3X4AMQVlPu_GJP8{7!k+=xZ zwrEoZC@zJ8 zq6IEoxfqLCTj|+txa+6)Ve?h%NNXuH%aFB$Lb=L_gKcIJ2b$D9PTc3P_KB-um!UwV zL<33EN-(Gt%oRzRMqFpDrVoilymO!tvk6p6mWz^DUaZStlX70tFNLiY%8uvYCHaAj zg>L~7SYj=!Q1=1%S3PdGEEiBE^;j#&ZPE!d+ML5Wb z@*2wOE09;3ANA?*y>1GjTNV;fk`A_d3f98e`rptMpNoRN*U+24CMr-s1P~aAVo=Eu zM!Yxbvzwv^xRivZyR3rp`4p|WQHU~V_+b~rEm%CmU$Z&ppdkc4!rcC0E#WTe2L(G zz+pOF3UYT7#GeByon~JJFzHDGlPC=Jvg`bj1Z{M0skAJ99h`L|_Y{5fz)<)o5`#kC zOge*kT=sM_29WyO`_XZ-0}d-av#jKJ)vEW*7rI24F%-E==Ygh(q2*1%$>8{yZ?Vo;J! zmx8W;53!I$rGzhbp6sTzj)o< z__>nkS>AMO!%TgrehXxqjQHHmSL6LXhw%6_+pzb*F?{0Mi($}5?~cQPGJ+WovPCgq zaX-Hg<+`s+L8Vfa9wvI9CW?_H)+cbugV;#M&vpirL_1<>N1MHWO0kuMJ`}ODLp_VU z<<~=f@>jsX2k;VGJY$htfI(9cK;>mLAW~rN3@Wj!<`BsqFo?-u()qb{fyq+#ov)Kn z*GjCF;0fpB?;phlH?D~~3%(C|j1g+mI^Y~>U6jx2v&<_Fqp?cRyr{d!@0Zhd0lY* zh2rUrEuXym@v(L33g17&{lggU9fCREjN+OS>F$)R^TR&WgFaFvq(F|BsMo%}Jy5#) z#@yccr50?qGg7|d{-Z~Z7^GV zFUu?*A}m+W(c^_@AIH!!Ev~#`6Yjb90es?y>xkW?gti|I`K8yDD4s4>l7tEgnx5GkicqTmc^m90IvJuPAU4}ImUH~Pz zC%dT=!8#Eg+_X}*LmFF&q zSS-J%8|@KG{^3Sk2EcPy2+$warRT_b%`q0^h`n!8!6dFztn8$46DY5~ z@d0YeOHenXTsHHM>kvpPSeVK@a6TBN`95r8ChVBOzV0G4?mLMOUU;7AaOG6KB z5;8PsU}rz=DQ*Io^!QF_X~44dnu&uEb}!|7D;`kEt<*#5LjTYEeH>8>9W zsIw8@{?^y19eascr^oLeco_HI{~!TGoAJ!EFW`@lJc_@*@YJ}fJn-B9z;n+$fye$# z^&p1OFaP^DSaZ<@$R)6NuzyJSzIpRCc=N4y@SFd=UjUAbMkBuVjsJ(z(h@9OFrSzr zI$X1vBI;~;9(8p!1Z;f?ZEfuW;PjJ!`**x|@p|0#{cpoP&?+#LLTN;J-4hu~N@6`` zEPYxa+4@OhOBjfqR8o+QK?0lk8p$Ddx4Nog%&sjZwn22_wql;qE|1&wm`~!|#Rf~X zhfbOF`+RoP>9P?mF`qls>FX-j_oMANqJs#~CLeh99H?tP@)TSGE8)1V;44dWeap;QxoMroH3Xry1DUynN2|*VM!<y_Y{1Z_f&i8e+ZmkSnYlsOIN&Cs9^1I6>irL6@jbsO2--lgWJ`g}t z7I-hNDTa+02PR_h6%h-`Twq2v4H~tQ0pi|Q_u%!%ci^&rxFS;a3Ej^R{8-sZToHbW zO3h1PqRLbUt>qM4d%p-p{(AU|E|DgYz0Tl{&1T1?muwJ@@iFC|uFV=^CEb7TZ*b1C z#pvtn$MO|xaqQTMv3&2j_dz`M_#^nkAO8T0VGePS7@3&;}Lj3mE|0x{b(a}j! zysWtQfB#GPe*E}Jyz=UH)YjgL4eQrn-P#KUH@vxX=iocv`+)!`i3NvpdkbV-D$-CN zPdvxWGPy0#)Y^-qr^sD)qz`2THv7~jbo2}&%cw(LWf8GvDiq@0++i&2m`?6To%rc2Bz|j%|LDnP|7cuK-u9;vuQaouJ=*If? z&iycxTkV25bwc@~=zX}#$OV%)kD#bRsKHi?TZ>uQb5Pl|9i50BP~w7l0O?gyNbqT@ zr)1L>;ne9S68NHyW3yPcgMK`Vun^w9r-r2r**hxGq!yl>n7XA#b!~X`QryJVYw?f_hE?h_c z39jO+;muniO&W21(ZU6&pIL`*eDk}+5_%3rdD()l(X57g+(^aGu4?n}=XX7*%?-~6GMUbRVwDxtA)|X*w9?XI3=R&_eMs)G)m8Y( zPyYk&k*l4<;S|6wF&!@(v^j$7TPUUyr{UkLN;lp;kGE%R>b5|t^pm&+PPO$2;8CT~ zO~9oAx||w(c%%gb6eV?p-qYEp*ueg1Teq7SN?mEnQrhpcAx~pMfzE$l`@Gaa4x>LJ zZJWU7Stvaj=`or0Obblq7P$WEby&QhUSKQjKXjZ}2A9yJ%o!G*Sa-hmd4MSb8NpZz zoHky!H?h3QTt)*XiS?9%NxY4EJWY9@tB491wKFT34I!JlYB zq+ll~0!t(0))y;VDHsDYSXnH19u1fz=CSg+)!6pXOW5`IojB*R<>Ka$OBS|l&`mDA zc0%Pykli`++wfVNp+0&)bXp~J^Y4VF`8l|{UW8W>o@J=e*T0Pa{Ewev@4o%G>C>N^kcFrbaZED%DKeDm z2uLbdQ^YQHZ1>iL!ZI6D(gGu1zrJ273Y#^f6gi}k1RF6h_1W~%VDaoq43G<)p2WE` zCa(qR&81@rJSJAn5)?xV;6GC|CYOEyj2a?N9;`)ofiFmAZDHYq_weJX+IC1Wh@x%%Sje?Co7+B(c z(b$C4${?-;oT18X#nPeIp`3ji+7CS(H<%<=k_UI`B+|`;3K0x)*oYk@1%?<1;_p(n z5N{)p$m4SR0U-j07)%hrA#t66hMXJ&ZTEvgI@&L;t9288BC+YxW*O-E#z2RG*iY$f zS{?m{^vN#Bfw9a)`cT1N+TuAnEDSCY=tKb1*g64D&Ta>63_Oj3PrUScJOn-w`)QN` z#n+sP^m!Itxm3(f){^Ta0C)k~MBxrD>3Rvh#6WQqAka@UByN?7K&5+#sq`6m$ZaDU z6Tu&@N1_2lcCCwrt;B$NqUyqc7IS8T<#!>mleXOVS7hawFeeN%j@wh58HlEB6PY&9 zJ%saS>bpRHCs9b(tRKKVauk|__mKu!ApuKYh+I6)j@X_4!Jx)eL0V;I+;jKmaoLUE z7eJyP-t`@U8I+rw0}YAhKJ@S(g*+XuGlTxm-u7vVgk`{8cl`jr`}4UdTu_6#b7te^ zt*>DA>;}?ZdNFc60#Y!uklpVJ3JORZ*?~tNdrC;*A<$dF5#%J1+{D=%ezESdb&ZM= z<{*n+vh1drvGi(zcDKZ3GKp1p5#VX2XSbCm9jx|jROc56rLlHWs`Qhjr#C>?bg^_p z8mzOs+aT3DPd$+Z$Q@{YW`&yhSCdPN)TYbeM|w_~^|QMLuDbLBEL}+2N-w;Qz55U2 zlbf%^%)08R8YP$;XgayQMbb@*rZHGcDUo)_(uN^oQ!@J_UUS!e$uH8auY^xu5pQ-; zA0MdA!x`{1m06#B4W;ArReXnp17o6Ys01Cr?J1{C<$z&QmeO_-<6gh|T-mjZ7EI!d z)jYV>k-Ls)p?v!nw%iBf{M%tU@*wurd`V26kR^jkQ&ps!g;@7*`H%#yI|b&D+u;^w z8^^PS`~VTVI+=?|Q-wN{8e*a7m{mmEH2j@rD9=_CUEe77o6rOdau_ha)0fU|!yrW@ zK#A`$>3tUNd>LS6;7QPS8U>j@`Zl~{8$<1b5x?q6IxCAkN;d~ib;_HdeGm`P|B$u5ODKFm7>?{7=*=;XSuS!SY z@am7R!ArmU8?uN+ST#3vXHQBol~Zma)9?#5@TJNxvq0Z#U)C%*Xa6f)6wX$C_>qWJ zP!NO1Q+$Jv&S&d@_t;-hG3RUe)z9w4EqC6H73VLyf5CcZmb?sMy2#+%*;@Q zME5O^0IY9*<16_74}J_C-4`1-tQYcVJ>5#Kc=U{B#3{h|#kxeBPmCo0^NY*Mh;aur zQW|^}@3Yp{9r^g2yyB_x@D*ggld(o9E* z-QAYw*N?foNlr&t_GC3c0IqOQ}eA zFc3+s3orTk%j_36?r+5t0a(Z+g@1&)(}YA|zc+H2vW{!N;`Xn8*>~Y**O3c>8lA0kX|`C4+M333nO2|vBNmj@!`FWp@8}j| zASbeh%eV|=e2Il^AS2tjlC&La#lda+P+VJr`cu6|Bz zrKRpDxqwFMYBav2V1UQ?6cfMY4ZM$ne$s4mbmDaBmBdz>e7fz#TKcyz7##`F9%eZ=4T7h$;AAV zxs<+O6V^E(&_zcg@+z$n9umNG_3VMJ^-s_&_@;0wUZ)kFthoZ%W3}4I&6C`NM5E^f zJt*LIScoM>F0w{{yB%sHw^VYytI8wRr;|Ww0-)F!G!l%CaoMOd=k*bY&)O37-Admn zn1IGW--+?yp>ov}HOfsrk9*fILYMGR99b)49=8gf(3M0Xo) zneu;y3yx_Sf^m1lejOl%(Or{wgA7g8Bi6itEUft ze)4(r^!DS%>#o3pd9#FF%rXv~9O4~b7E+-8hE6?x1|?K_v7D*06rbmbtWUWiFJ@3l z3M7ejVs=t2ED!Pcz@>sF^HhCrkx2K~0(T|kdn6DkTp{W5jFt9v!=2A$?2~)%1>XB| z>iUac-G{jiGjQ>m$PyfK@(Yzlol}~N6Yn0y>@~zh$Ztb&t`9c118SPp)hIQ{9oUKa zdg@41XZ(Omhk@e6gGpRDk!>&)fF)*#Fe|B>qN6R?xEN(~%R{waW_uJZAc9GJ2)n(p zD;!(kAY9m(`IE2~VBjNK-70o><4}T)XT)x2a=@fSy1H?DO2H&PC$0kn zTY=zR^}HHbHjLoSCtkxQiu@*x2sc9F-TfWC^y$Yy=KvndYS?Ce5AMA`fiABCimV!V5B?m^8D9Ym6(nTN>Be_% zh2!Xt+u16t&M^A7IEINSME|Xh;ORM)o5YW$<|ZIXG^c%-R{d-vQUVk=hh0)=0bzfJ zofNj2rtHoRa(Clr#qh`(Hg+;9%Pibs($hPC@l0}yRD&IH>=v5*^};P&wA96>^+baKO4705IxqAB-p0Rwx*6XCjw#+@<(YH7ucEbq zoMkXsjtXvXL*@n19-j2{R+mkLLvH4dKXp zM^Lw9rcjN8ukXiOPrrfT-eF?Ns8Co{goblxVfmHkW7&m^(7eA1jZLjWxZp(9J7PY} z4B}4`&0BC0yaPv|BnF&z-WQ=f{u?3M3{jZ?%@h+Rm$U=3lelS^og@XuB}p=?Q@8~h z9YYv$Sus3R0Eay%X*K0*qpf=oCIXH4dTFKr4W^tz^!5+aHa)7#3MS?HSxfAsEX^54 zWzrfT&Wu^_sl2EGSu!IiN`Yc7TB9-2fMI+GUeHFP_n(iR%^AzIK)Sa84=U9f38PnX zLNlr>&@i(G|M%x-uzt--LF>=U(S#tVuuWIPo zk)saYw$jWQNZLEpg20Gz(lor@LE6Jw8q=7GoRJ9gndU&%^BQGE+C_#cAxq(Up#CjC z=lIzd>Z76{BEdd^&&ycq$?~P0r_Ql@<(*azX>VT2}*3tDG z3jk~}&4R|&i_)G~Fq}0Tz9>Y#6FN8f zdl>u-_dF7>XLj*qV4SU-TwPko{jL3Y8?9Gh$D`Y^{^ku>v~CG1W>*Q(W=52>fQ=P-#bv+ zPE*I0I>NdFA`|(UQ*XYr8xKGF0?oqiA^=)}>Z z8K6GO$Z%0o0VTfYbIk@~A`v5ro<(iMJk*ezWfyNzn?yO5q&45ynw47I9TIq3_^-K$-OABbpWjok4 zF4n&wKMx&UJve&&6c#U>OCW-tf+&%Wt42rt7PoM0C_suq0Xc(Pv8>5jHdB~$?k6SM zdP%>go5r+eYBPNh5J)bNB&}B;jfE2lDtYskLw)*B1QHUz+E_~(so}2&XDY@kCpT?7--_p0L==T zG+8l&N@7FtV33(CJWxx9wH`Pvu#&QibFku*7m%>_#Kxah{oyA`J;G6Tfgk#gD{O8hEr1% z7dREjPGT^L2Xt)0Z$Ya@n#t29IJ`SQkNDd3Pmg1YlLsJpg6+4~xP|I#3S@^3%G`t=*|;KPq#%>@zMuL*EexCWqbc0pll zfzo;c3d=z#20w(t+6W&3rE-j~DdBmfNz5#xoH8?M659fHx>vghR7y6W#0(`P3G(OX zW)X;FLca1eiVF)+Sy2Xa*5m}Dn4jOC7VIRou>ciW{&;lU@f|m_OM?~GQxmswBvc+8 zOFPKnm>WC*XRS49`ovygncOlhko*=1ca2L+udAuXeGfm1C5uSPB-<=Z!0v9-Lp$bnps8p~TilGD0&?KBfNfW49vAGC` zs&6dYr|R=nh=!(0UEfV$Cb6*g=vX9{wv-+-1}5MBdzXz>@C=Y8K<7Wtfk+;<@^2{4;%b$ z8)0)E-PuUAKs^n<%Cbseh;=YK8cj(~dC{bC(JbQrEql@5+J_}qoP&~Cu?>);DKnFH zdbWU^NN-c&%vnr2Fd~`UdJU5M8-FyeeiH0{2SvSa!bbWxy?HAMTq+5hjoLkgLJ}0r z8aW9oQFZP5V$5j$12KubB=WzQ^qR;&oc#LbTA+546ii~453>smJj+D-8Obtsqht3s zheVt^u&h9BCDuynYwyFAU;bEN(h1*-s*17d+ST~K$Nmb%mu|q~g6a2sa?bi^|9R6S z26vEDJ%^xZdKD_KMPO?wDe{VKSF5pbv>)fxhh7(7yp zPB>7&%^zj3vGW zYN$`M-|D}15}$kM9Cb7aXU?jkh=R$#enQt`>hDqNOi+$S4GL9T>Am5jdp=srXemY8 zVwv<)tp$SVu>`AQE-@mnzI+3odH!X5{mxs1C7Dv&*nLf|fHezpr^?u+ZRbE^LW&bX zurl?i7-XEedP^zlvi@fBt9urTgFl3?XeCg5S)94Xet5d*D8+t;k&hI?BW^ftNj5@%+^+GsfO%C0SZGG1Kkqz2+qk%A2MP!*qPScHFjb8^OJ*aL6U!uT=tB&V|95-o z$6ztdCP1l@K&0gu%v}P#qa9_Pe?vY60N_0AdIC;H-JHf{Cix=NpJo6A7SJd&iGd`e z&OlmlIw7K)deq%aa#+GwxeTU~GW#o>aXtG;fV=6#Q>b6oAbi56Ct$(r_9D9|hs3QN z*z@i|m=~5Kn?isxeR|p%pA-G=-t2{7oh4>3xe7MGMc|K%-V5&bx1jNKt-#4Yz*D#(VpB5PEtuX!!~>&D!1^!jvZJJTq>t(R37X-GvKrGixt;F8wtjO` zUETs4j~Oupr1@l6O48QItfylO z@be^;yISD+%xS2@UtV|_d3iY~FZDD30@DP3XN?_Z0;cNS(?R3Fc6vuM*do_0te-q# znDLX2mPn@381u$VO!wk-z~DY8njfQPq4Dx0FqWpO+nb6AEs4;Hl5@SeNHZysU{XA; zde6SNm1H5xv10j>aa9*|wAjNUz+HS?q8Ps@e*VGlMyGXwroWJD+v0l6T28aUWPJqm zbc}S5WnDYG3)kfmsY$8Bb3Oeyo;Ph-}hpGA}h_m zWHCzW!!s-7=9@{E*cMGFS3yegTh&nT4q@e$8~S+V%DhoV7AO{>#l$0M(x{bW04E~&@*RZFq7x<;C0+O3CW z>rlilrR4yW!!+UH93=J;vyRO0s%WVp{S`F@QV>37_%t+l4~Vj%AlJ97&OZa@8L)Z^ z;4Qg)O0*w`?bS$F8p)XLni3~ENtI}#{>-*x`55XS4|=DnI*q4$(A?IGHRt*JSE(v@ zDr+bysAH?irU`@un4Hcx-&2Xywn#v=Gg)L>AgUG+fCQP|9&f!zx`Tgu8lS)Q6Ii}% zk?eB#9!ccDIIv)58FA!I29%^0DJq&DfEr1PAh)z0$zHD~ow#_IN+R1NXg%AWhN6G( zq%f9}$$klXt}-@8bHB*QE@YBK-ZR`6j3@e@&2Gn6zV$Eo$q&DQ(&D0^bxubAa*UzG zB{ECtLIIqr#L)MI0!IIEc|7CK zphBSNt~6b=>n(em@ZMwZAfL2J&L^!TQ+|e(6m1)(Dm`oc#KWRVRXxRW1g1;`mWr5m zvX@*}X4S+Z&>gbw#3-^FW(ce$rFR`$ui$#-+lH<#l7x4LSNA{}$r4 z&Vdko-Z6}yNH+94@iB|)z#2>go&DJU*SGQBp(6yOkzjX4Vg_TO>O2|S`DLorn~9`m zz=(@AzX(!PNI*6MntjA@^X4ppH-7~!m%(eEPnt*#6#1l@USu>$z!Bs4x(mkUBCylf z^ER{B?gi>LK`!Zf<W4W z@2?^|+ayd}mzD(YZ}7X2#}|qGy~Z(=xG_#Wc^I?Ln~RxC>&M#Wbe{`7JtfcTq#x<;3r2?VHO$vREXKcwcwcy&XYK`l;A^xK z^;b^pIgS&%k7J}~5Eq=g2&-2T+p;h}mZGQBF@ZC0{CKc96wv#66I)NW1;$f9g{pKl zZ2etuSKXS}{A0{5+-zDhW|U&AW?CM$^;iK8bR;+6h5!gNC`_2Jo1#sg-1idP#(E4p z)adLU5WwSWHbxMWkE3;q48vGkerzmS*B|X$hpp? z=hoWRfqNc&6b%F@edbfwN_T}_Pc-9XkG&@-kR+`H_ruCa?{Jt{|A7o9X}amK9t%?` zu#Xh69a79#a#;H!Rwo|Na%<{L1anX|*UX3ypUql2yfR zIRQ|zoftyf`z^TYOJ_u5N32qCLP8Mi173lVv?AK!spg;&S>yG%H~ z+FUL~QJSzL$_>pQp2ESc`%%5PhFsj_Q$C|CCX-xd3#1!RB=fWcAVCU>$vti|)1{kR zA-9#r*^7JvmrTRQ;Gs@O9|224*^6Up#$W(au#9*n?U-{QVn>LNmE-yrtPJTk;^#m~ z|JXP(gIW{X<*$!iXqt8%$58^9X3wm~SMIn$npN7ZhjLpOL5X>)~$Q23!5V zPH>Hztj5zt(38mkOVR%_9TpuP-BT9*fl(fDlp;7DYi!5hkQKut900*hGle8l5z9;wu$0K_CE_{BNRVj2hKuwPQ;yFwUQ2Y{_#Xd{|9MaVk#7Cebz!TQjER+T zE^l1AxyX#Jz3niXjmQ}lkJM^hFy*zN{rE=sJbE~@EwBtVp+3uu8EO}rtQHJwgZt@) zJ);minVpoSHVAGmA(BMg?65fS;q$xDd8`9Vt~v)Z&aI1hOeR5cTR=yyDjaTox*0R7 z66uGQg#e!K8;4H4co8T5NE>2s-0-UoH2F$e` zx>xNE7r8HbQI=p~ZU&R))V_^*Q~dRs3NVR(2X-IjX9h=l>5CKa~E2Vo)(_l#_YsPxI}7S!Htjl;@lUFWDFq66=k20SBhNW z*oBIpzf;9Hz)7h0KrD4+R!^e(UP4<@e?YDaYq8O2!s@s-HROAptcSkE^dj#HCMk5QZY zhjl92#!JwriyorsXg+$Vq*F9KX&ZY~Sr{3OHfJZ@9M)TMX>%qBfHR0RPnVA}0+Qqa zNYXN->kKM2yC!ysq-l7aBfrH9Fgjcg%10xxlSF-`z;dMDhx>-ma^y6M&#NPVjDXt& zJ&UDfBy(NpD1~vs^m;r=>7;l`&q3?$g~HxKu1O8_q+4W-42~uu_*G4MUDKli zsRESDCIbp{O(@7S!EDsSXdsO@64lpg`~dNg#SS|~rK~Jrow>xBO5;FXej7>y1n3i2 zLi{1c;p(9j6-Jmf(}q6P+IWoA|~Eif4^5CAOkyCE2m%2ivmU=FdAJh<=o zkD`>Kzg3ix=3oR%1OUt0NrAda%uZr3iH*meLlpI!KUSAbn05kdApihC07*naRD9-f zXELmZ0wip?|F7sGMyaLWLV%nXN8bAg4a*xswp%jlA?9iExryB#8B_|Zog`)!X_;hT zY0Bv+(Y?SLl&lLDuQ4+z(eDff-x#os2UN1#9Rip%qq-8GzVRC2H23U3gxqaLZ8D`XsEzN^*xgqm{y7l9@Ut%7L9E=3F7aae}0j z!&2hISZJFWV6m8AD9d{O%-Mpg4D6b(pH`p$>P(P%3v&?rSPOs1P#sM^tZ zB4}sb&-7E$U@|=?gF>BeX8T#(0;9kZ4|@3>!OSII=Ls2phjOqK2Ak?<&Oik*86J4} z33?VO1#P8Btrl)l$4$C9UM`Q{OZ0y7QMpu*u+HC^am$l&fr8r1PGTTQYOF)&B!S}r z$B@8U(i0GnXkdw%NPAz|gR8!B4H}5uT{X8F{cU|Xwf_`q7R-=VCuQrAK&80YNx{w{ zNx%~S)>E#3Le~`E3-N$Tg46&{bNEs>|Ay6TJ9|0wW=b`6k{ey@$93eA{Mme*N;&ZealmHD{fV$$t&VV>g{N(vg# z-@Ok#6zM5m(-XyVj$tOcU462%YTDH(u#!qsuw_|A&UB?gd5APA0emXIjDMH zCkCYo3TGF5#u+i6s)af_fwOGEGE0Q(8?(neN-zC3nuvg37tyw@gI09RdlfRfl=E&`9bdWX??;xJARsBxsR8x9iNFQ9&jPMi2=Edxpy0RQ&% z;d_9uaRF!|fQcCql@%3Ox@az*d0{JBNVI#&LVtAcP%Ra1Qb)MQssH75Sm7mxkpM1H zfD-TMr_<0$AB(A@ym`8nrYWm zpp5iT+8yCLNwz^74!pEi7)-6W@d6ao6b4o~^L-LqfQ6sa8BDUdNH>R~O$4)aWhDik z3!k6LtAv(ZrPAG86cWCz^h(TVd6>dT6SF6O6 zEfBDmQ@DZ{4%Gh=j3dWI60^5cCrF<)p3=*}S3AuLHt2HY6geqrco4+wjZh|lNz_42 zrg`&Mjwu_O{OsSUya5*ve|N@5~SHFME3R7-tbe%=I{P-m5!1{;a* zUsF(pycGZZy)Wap_x}n1`RfNstovr@ z^}*lAiU{ts%s$j)m%v8@RkwA3SW4sXr^cZc=m}`ZB}o%D28!ewk5LC4gCyJ?S|d|# zUShh!$|7{rv$}FlwYUi@H?PLu?s*Y;#3HSnQ#H0dmX-ZG_G01M#Ze#HK@)*+42;SMO@OurckO?PhtiY^Y9GU7h5t}GzVCO(72bz$Qq{1NIwV%nN0-%)&A zDxRNQ25U5l?G~LiA8fvil$~9w2#XR^o;E1Qe%$1}*wK|7pG=^Q{sZY8b zJw_->NhqtSX#^5!)b~ zo%-M;4s6?p`tut|D``czq?vt_&;so0mS~VdL8ELRCUy!FeR?7*Dbe{()%-Z}$0UzQ z64o>}Lk&*Ueo4qrsm&GywZ+Um1s6cw`WW05H;S8*y38V7pb;9(!~!aD#dvmsnM%Vp z3v!MAmvgWRGoWNJ8z$`H&WVZGO054h6)n^YPpm7y_)_sA7t50_mlnBcM%9P+JI9L} zR+_xjG4|p3U}B#`%+vyO(5ZuiNnE#Nbp)j6omr2)1^8a==pIB34OSM@fW&AR42>sRRN@6XX~cPp-=+}-tM%!C+%4itiE!$1%gSzj+?A!Xt26uwoQ!| zU=d#>OnS6Z;OIz`?^O;dHrSqKT|5 zqfuCzvW&>eGSE7GHyFtU*G^*q(kB|#o@8LCW28H#2IwaMN=Hn`{5U4a+DLr+)PYlI zKGcL9De%{+|)ixH=Z-D3^`w< zpi($sKu%s!rK!3Fii1CdFHS%yuuMJ&5hUSf5kHH4q#HFE&n16^Hi{S>1*nwDeiye% zBv5H!aF_t#2e4q?EL^i`Wngm)-%pVEzLWGC=gz7XfF<$%<(g>#xQ6A3a4N)Ad15GMbHtEXR>YzV}9o_$D>m zfED|w6KSi`I@?I>x2QUJ#FpdEA;I;H#mT3VMGAk*VOf*);)~P{S^|u| zvXEv9$qw|=`_QdGc@~9Rrfp?LFP?AGCJa#G0il|%5q{wZpBwhqmfK>o+QVOi%-_f@ zpg<`_aBCzzGpCE(V~2X-1of{Rd@uV@NMhajF%D8fmA#;37>f&c(eC83loWKGDroST zP9T!B%|up4C`KedkGLbBPWPBBFo_0k8OyXlU<)YWq6vx-0aVhcmALuiSL3Bu-o#J- z{kQms+it|UOBaqE($vz5y$6n9|A9j|a=eLH5i>A(!} z2}C;F1Oo+4sGeVgD+w$zWMyTMgZ8&>HP8^|HB&f<4p$$FsqA)xv; zaZ^H<0zftj=1kV}mfr5s=!~InT)wGmv#SVHY7yMr zUg|%FE3BbnteS=M z)&@uBVrhuXF^O#f9z-YFa)%F~rF3(mvmMLtY-1&joj9$evsURpoP!f-wYOZhmatrq&=a(SA^e4*} z6}V}V#Sh{wBc{@u?HbZo0-iXb#pb#*@5)%~#{)qXi{VGnF;3+yS*+(ZRgWt*IZ&MC zK-Wm<{!Ak3&bV()MF9?MK?BS{p7Cm09qI3p5p-qcjVK-gaLw#S$1XvWGvGH!CF8A z0(_h#>)`gg$6UH$HHwQ0aNk3ZqN}?Ptt9Mw=4*=3|? zws}Ru*i=vBQynp+w6xSyR88%uOEEKq1Q3asNJJT6g=q~%8CkdVI~%$Xkvci_hc*uK&jYJfF4`_xcm({ zMvM$t!U9So)+`)8yaL%Jdnn}cL41^V5vor=fyIk%$7RER!0){ca4EyPT4a+*ZocC* z3h1LD_K8cOL*Hm5rXpJ-x($RD6R2eEx8lUMBXAP%b>S@+A-6JrTzxZNrcMh)(tC-u zrb-Gi>eeJ)59VxTB}spWP(Xz=O**az6VUc$)e~Y)jF6#y@MSNG>a?;b)O0My?aTK? zG@z1HM~TY}3n&p=lV{&T*;I0UOT|n{sCJOMeRY`!?{)f_No&gefKr!D3I1GOJ#mmO zC*N2=Br#v^4DcsovA4iY%i6K^SOE@noQVJ#dv2kRR1v#SuhpV=&;m0>RjMh^CvnUo zA;KFU#cpxIX5T~S7w<3T1qIH+Du`gkZ9 zg3dsUUkZG{Or+HxUxT8m=$YtTk5$)Sh}R$8jzT(q@%qImno&ZGmNWgojuUNY+u=1t_zJeEpO$v5LOz^UH@bMA_#${~*x zueXp1Qn*9B?t`(FCVLW(+lfIVcF*hT>BBDxOj>c?5?ph|Mxlk6+3pN6@mf||n8H@{ z7bO5nyvj@?Hk-$W0s9b)q{m?$96^40Xm>Ie=$<=wKYF^$$rY&&PGvi`6>LV;k%y5# z_aAWShyRNg3qLO8%YT$K!=7(%7QmxCXNR!eqRvIHz6u9&*TXR?oXb0yskE%;Z+<}O zqi&qsas&+*%*Ncc^M&Iwf2L*&=*T5V4miPsW8p(@DM1vP2HfEUyiFrVC>(rs!cY2a zW+jP@$?l2M+1i6>2)Qe7f~N7;a776y#nVoFU+^`~Lho`+bbAxihSRy?$Rq}Hc<_Fz zxV{B@af|0DE+_Lvo~QGI8A|VVaRew}W{wA?{$ed>d5yF&8)nlo((#W{2+!2^EU)huKaS-*#!pRHZY^!Jn1at;R_T z!fLvPjkG=*+axV;fj!q@b=Bx8iWIG8*X&DqmFU-qmC53IX z$==DpL?~CcKmaMQuDqYw8{(il5R}RpI)J|1Wr2sq^*vk!x41G+vxAwT#qA&1=4o~s z(N$NS1&?_yl-)1GTXc!+W6g2u5D6mnG|43!RHEmem!}3J80*RDO_AM9C)@RnUw)AW zLX-U>Kd;2^Ch74i1XUV#eLKI@jpt5|7g&z)lL)(6XgeCWwqSWqc6$V?Q@U<5P+tYa z8%nkrNHe6XZwS5Ahw7$fPv0>5=u)glv9V1vruT%9gb+d?3HkF#^3onJk0g*n5=cmB2`O|!2@nW`W{N4s z#tj#_O166MW&8f;%xa|3YRhcZO5S6Srro*a%)ENPTO7+8C zNLD8b*NOMn=X+$vSD-lfGdRNxDDit*EZ@Ctlf5tHR*DtStEIgYfB4fgIDPF3T(o%% zOcHhF%}S}Jt{I)3y;!$8aOxp3??Bh1fRg)#dUARDIr;8g7m<(YKC~H?c&F`oY)qezvg9lb47a0Sl}?;W^T`^? zx0MOIz~v8CBh}i5VWkna1oDwhB_g%;WjOf8K0<_Z-K!ekj{yz%0+SdhV!%ROBI=7tJGd!=c7%TEY~;Jpl|$ddbCn*8DOsAQyf2`>di*6qt; ziGiekiuT)N>JierNnOa991@&qIjw1ZJ#9$ z(hOTap?hdx>cx(CqT#j`3-0+{sBrzRnZNXfK@45Vac!jSENEzyGO2A+p1 zwF*ykQM40PCW;3?h0)rH4s8+Yj0?y`&SjP;1(AjbL~2T!MOI9u6ZFvV>Tx6z0o#Jj zizl3mADCPXc;ih9)(VIR-RvI3qA|B2xBWHL6@DQsjbw`)4&@$~@fu)#3l=ov4^NA| zb$ZW0bOJ{X95@170MFKLQ-{zw3RN*2`ArU}WHno%B4WwZB+vX|-7VdC_lYgIlf?jJsk$H!=DZU0g^bc$@-Yz^4wSaHAU9>yDz&BP`GAF#lfPi3%w+oEPZ&X&XhjP z19!2*+}ulm&p|y}`yvM<_w)^8`1rHPnSYf4A~1K-4vIFEL4BpnR3d*SH@GaCpbJ&5 zUfc{O9Y57XwDJ+#EfO{9+kS8hG1?FOo$(=3YNJZIG)E z_q^l#aSeo90}Li{ze$un>VG$k5KW86BDqe}CX;nkb|j1NoA;+%_Mo$=6Z1DNL}o$w z`E3|n$|vt4(F%!yq{D+QY8h$exZlV9KX1a{NWmhF#sk9kfgi&;^S>!ta$w&o5kzta zI=qz|KR#Xqjm_=2=g&{$%+r_QoDD05livE%p5FBia(A=aodFT(kFP=Cdw!?1lNc}>Pjfv-wvn|1|sJ6MD`s} zCX`rk4<&j5f1r|*%%_vo-mQB~14HEQ7MP!Oq+Q?K2YYgLGu5qe5|8~Ktm-n@N^cPO zC*-!CjvBZ1sdwn* zr9jcFLRw0YQ|5WH(`!avPV^H9eb_b;KypuRAWI})!tWa=S)?)9v(S$#yo?CC9|9_F z@pYMSZYqLE{7m*!TPq2SixsJFY{MTOdKzbMSb?+GuNbWs>(^nM7#-NtyPi2%nFBPM z;`_-Osfj0-rJRE5k+W$?EtnXJk`wFqIjUuv1Jl&f0v%rha)(=wvsHciZ z(iWV%7<*sajjXb4sI;=GA5DFpvSl#LN1v<5M#WVhJC&!#6K$Q_9q--F(ve&SCe%gsQ9UEgwP zfD$Svl(bA9y2MS&b9G0aSeo11C^ST zQ9z0FP1n+Iiuxe#5yrz=rZg|JjoiG(a9Zi9ptl)J`uXj52-pAU*8lMdC~>0YG=acN zM?*X657uG(%iDwqb%o>-T{Nc{1v86+u8Z6Yx$ieX)?$^KRKHg0Rc26Nbkx#2+MdeMt;yXu+0aUEZck(LS*vm8x@8k8Bis`Y6BSC8 zYMk3!b1Qj+b@gEWY$8~XlK4erc%UPf|3+G8M#nO=~y|YIBolwoY`xlmbi4OQt0=W{1@`sK6FVi82VerH#y`$SC0gljOQ|NXz%M zJ(-=6yDz61xG>0Y-9u2Djzcx$5@KF&fo;!CaO7;J5H}YGoVz%X4EVzM1>-cpdi17C zwp2Q2jwvFRN=oVjy}NBcOeQ<@1o(Cnm^7!V7)vOewT}3d2zQK22paHqPeaJk>!nD!wT6F~! z!nl>!JdU(}y3$wt>;&YawyR};Ym-fEB7h9ix4}~)cT$){sBKl77I64x-7WPLi zJ+eS0w$9WPU5kX{e}HrDL_ldefJv<5qh`{_BwH!f)-~ae4?T+u&N&Sm*Dm#X>xFwV z;==FEDr{(I7_IGHQ3aHgpZnIAZu3^_!J#DV-?t0~V>=PP2JWL@*0%%6Sqt&bjwYlm zEcI55?BmH=1A1$^(M7E1Ggd?ob(3AeQ#c{NEOlh2%|H@c7KKaF`#*(6ZG<_gBBU&b ztiwS8qahVK1uu4zv1>wtV%kM~OQ%k?kzCc>McMia?D=HU8-Q4e3#E%pPs1r1icrD} z|Au%`(@eOQ*7gxFi3#?U#G~X%>WS!ALm|p@%kn&(o^Xu8q;P#WdBCF48AoUAClnUI z0jrt7<0z8|22ed&NgXLmV9z|0h%8?M`j0?eaW!#t9U_zQN5~S6+!pnvvhooVImyb! zN$=LU1g`-N@nivkd>y_l{<6sirDgJJaHND2` z6SxMLF2F+HGbv?&ktWnk++y8tB_y1zcar;*y_+oh8vw(YEf0f9t*uQoLE_ssrGa#rKw}Fo(_dL)nUP%cb695`7+1sq zxe}MCCt5O(OBBJKniGuz0ry4cuJZ{diB)hAC}^_`(YxL1v5)8=U9&}PRz~z(`IM_K z`N?f*sXbyH$E_{S9_R^7(kAweJ1%#pvVRB4Di-0fmro#j5m_mPXxg1cX!en9)kw_L zBeOJ1ZZ+cRqNM@qu$aO;&@Q45c~ja-I8^$eK@LwYo6%CqR4j+hkQvaBhCZE&?U2^F zm_SLbr;jE@l~mB;3}B$o?sL)(k+hs}ZHu~h*j+PPz5u1#-N%ufohpmyF`Qr$x7FWZ zU9LX3V`3-JcRGkhmkLGJ1~^k!z)|xU5-c51Rb7vS_P2og=ip2v;7=!yH$kCr3LS>& zpqI&L0|TBa3YF|nj5=pTKqYhQPM8xbaHysQnKUSvTahn}>sveeV5EVBK_9vg#;FD< z3A`T4@sk7Gv6d^R8lc2_5hDK3z(W+la)|<;uhEUKJ`4vLKC2~^V21f{*xjIV$B8@Tu3`;ob#7^(S0?cyf6 zNtt-}Lgs-$7&mhGwB&ze!)f| zqMNLI{Y(((6LnDqleo^R&W;?R?lVei$F)HmgliMWd<@4Wkg=ntA1iDF$S=^s);NsB z$}~cuZ8EO(oWw*vj}6Bgu;_v%o)g56PO1j{kqZY?IhA9GTqEg4&HM$#r{szJ+gHA9 zEftK*rms9tg>(G-_ZGQtIt#1NfRTdD4q(g3IDuzrZ`h9z=N&L7s4R|8^ z=YdUJd~1N;BO0B5f^e0>Bm~Owom>2DTm!*tfC;*pzlU9}#ECf-S&S4L^HA5{Oq0^# zq08`A!yZ%LC^@&5eiuq|sJQBqYcOa29GrXMxj1z25N`b9O}Ou`_o9$^?z+h3D@UJB z{b2+8$%?v_qNl0d`aNvrq#@FA_jDp~CDw)08OaJJOP@v->1uRST{=wNM1Va8_KInl z7qe>lOkuHEY^XbU5)IY$*!B7+NYBe~xyF%OTuNq&cuBzPy>IOnz~)0_;ht?UqC6!X zNqQYEiO9~J$c=1IUx$R62QiR&4IcbE^8&{8G zbf2Zd_gswlCq4^&p0}eZo`UNP@Uut83(=IL$Lj?!>8gv*!rD~}!d5f~0kK%DFeLe( zPzzU~!X0E#Nd%Up87HUJV~l)TdPd&1T1oz&WLB12Y((SXcG&xDFyyBoAwvn9DzM%Z zn=1Bo^uj!7MtV_(yb8oqO=%4nhfiQoJ2sQg;1GwlmkTO!`fzbMO=(32S$WnUgG$pu zeDMX@Qx_wl^=0C^xjjojJ`h_;Rchu)g_qYJRqDd zgF=rWTT&Gq3+{rWdj}G#{{&@n5i})dz;^7{6zMdLLh^oxIx*hOlH(jG!8}z=oE$jd z>4~U2C;y;Of!3xufmcMKrbszzoVKKrI_a+2TRT1P>~fVvZUX!h=Xtld_}73ZFo~~< zRCG80HJVx}{DJ@c4puqh;PuqHt5dVKB9Pz-RI2G~5O|d$)iMUGx`;0)o%nJz1Y}hc zfYjI9hyVNekCBm;i3={f5KWEEc;~Hm@ZHtRk*Y|-me=0K;p)SfIeR8HUwkgwhkHP= z!A7gdTu>&0!B2Ony|}cLxS0c;bAj2 zow*7dPaAK%@yug>YgnzyEK7R1i`*8l*Yp`zh zBCvImul}+(aEUYZHF4YT#?hNcbOM0_QfwvFLU&OrOjw>rbq+KyX&!-WA3Amt_Y!B) z)t8@xHOuD*a;e|6Ov+t-xEANqeT?l~RzLn+#2MB6K-==yQ#J+uT*tiEN7Q7MD{)0~rI==r+tAZ7f?F$+4Va5Q#~` z<6zRL>Vn#k>N}_mrpQH(tW7Q}rJVDr#=b{){DF*?I4J@Y3%e_bE^wa8Hj#x=qQU#D zN~FM~K&(GJ)muC^ovf35>LhJB9K5u>j)X&hgDP__RLQepJNQG`bu)mf?};iIw|0-- zG43SoFyO>)D?G5~kmAz?oO5qyp!+`Wg^$eGQt8@N1NhHDJzDz`f_C}mA{1RaaQf1< zXm0OCKmAVAQuMIW@A}i~lbBmogc5R-VC$v0_|^bFV2?H_UDw{AjiUM}vs|1P2V zRpJ63M^g7m4Cr#>eyO_WuURaurHiCIH-+6osMGRGVL8B{l4uzgmJBB$6FIXD_RP}-|8QIWr8ElkKENA{lDnH+H4XI+VVEqG z5{)iS0Qc)61txJh!a$BNFMl)N?sanCpDqB1Y>SxebKs!G()bJ#YX1RM&Kh#(O@)2$ zjj$UR17$ajQxOlQ-QC{!7!xi^2iam2D%NK#f=jF)6%!&;$1l<$hGpN2ahe|6VNhvd zp(W(#ZoZSlPnpKVX)Iy#nRcR-eqd(w*-`$Uk&bSDttv?Od zUwsBPlDpZK_xEBaaVqV2^M0hI8S$BO=i^IX{}q1v?TcX?ZWq*K7^=bUZO4RkTem!f zwA3_Qx_Je@`t{rJqyPQ_RJML72=rE4yYcM9k0LeIh{vA3pRP?nMMVi-diF(ZI)9Te zaTp8$kWa4EysV@g+lXhWo+c}{J^uj_HroX2B?gadv{=dgiMP27wwl!w-_h5<9dq#5%>AotmRU6M3xn_dB>tjt!F2)s&30tXEb;sX&S{eYP04`iWa(NWgCJOXk&8F$db)}uZ4EVT8`Q_{B7*K2^uF;7EH%^nEE*!^ zPx9vO#$eK0kGzig>laW2kcqGINP<&C2m%w43 zKvHle9JE+!{|t^cs4UzBrG3Z+EM;r}3SH*poF@ZF93IvakmO#bbO7!eDB7qq8J*|W zy)I(iCxBnXM-fR-Dd2nIsp4Tcrq8TGds9E=&Md-=!c0^jZ$WS05He{{QQy)Tr#_aU zV+E1;#w9Wu@D_49GNr|HjcdTO1{hRgFhCsKCsKslNP|jN0w9b;L~pg*u#l{j?tkO~ z?BBB=Pd)MkzI@Zq@TcGZFRG8WU{=)(WEWJy*}WYrS8t>lv^%kVZyRQm772~f8)x9~ z@g0~ovx11J=fc^y2kTaGe^P-@cOIgsy=s~Or!g~O)fCIm~>sQn?CC*vm zeSF60H=Mo>bLK9>%&ug{bC&y)E5pWWZU+OV1$(0{lgJ{X$ zFc8vZm7N|+4#8&~ghlT^6rYOt1hUATjTceO17@;h>LORUE}Ym|0|uA0NiH4&F-?3u zJvETte-K^9*?t?x)-!R5yapIlQaXruklq8+RUB!n$R%kN61qo#r6dBD@;n1e(b9o8 zcQ+ACDw1S(mG z@H7$<^u6#JM;y`(=hWP&Rnjn5+oCa85Y{BT#>$p?#owx=jO#_wWHpb!(D%JMY zN2E?1%{WDC!0z{UqUPu^+;H<(Q8BLqci(;kZtCm7b1%M%O&6Yr=GGU8b7`0&Ad+!K zb3O43nFvoYVSp^CSOx}8U`BBgT3T8#)OQ@#o|72pb_(fqN($?4=_Bhu8yv$Om|32O zwzgI{t$k4FOVQAoenKJjC0VFvKUr11ttnm(nt7| zR5amNrZ2=#e(+N)T)Gg~U;B9iy*#1n_96q0 z65o{Q0=9Pb5}c9o5_EH}$MC^NK=aIAMWxl_!b>*c7kB&ww|?hFJo(&vf@=FcX0G{?qS~1(ph@U%gQPm6!m05doH-B#FJKJV>O-xj#K{TmX~4`o&AI zY|$(aC5P`&PwxPZpJ>3+h2bejoXoV@h+2WZA)aIcRH)Yvj94a(PoBU8+X0A*5IztJ zYA2IICjnByh}NJ*?yNk_K4UIce||02UAG~aY~t5UK@Fr29zvHPGNyphR0mu2FtIhS z8I)xgQeLK_FnGt7VN*>4_048b$y)gXI1)<)izQXlKZGXxBNz;)UK}I*NuI2e{DDba zkK72&u7tCVa`MVHL^k4!oH|4;P33oBpZ6PB>py_KYai4zuZ4Q}0220o1B#xHL#l=d z;CKReLdw{~#Y~>8rKmXUrsS(UKF6Jua0{33tK2}#OHq3VGyLUcrzk#|X$CYC0qQ6F zYK7Ta28j(6NoRglVOZSV_O}}G#u52stp4g8i{~9a2y0`pzOh^~vvBvr?+ED%mz<3uO*ZTa zTD0q{aOOpy72N2y?j6L*-gNwpz>l?SRzOMp>b6hs!*J8PLX@%O((_QZ@M~C}o{qD6 z|AlpRzrmc^dyv!dIy9E{fYibKn;h+H%j;VNw?5FsMgn^ek!UE|+!Iedi~qd#Cbjtp z^jaedG)9U-myS8<<(QpbMixan93snnHGyxuI0@i#nmVCQn<4D8H86kcb;c~{44Gu{ zq!)OXq?I%nlklahFUC)Ay#;e-&4*=g4~A;Gy)u^aglL5(ncUXoTWYn}x8v0ZUPcP> zGfRcRByT}^yd7t^H^KE!no)?`d-fk8*UG2yHR73yG?>IyHJQw4Xb$XIkv5V0X55#O z_UD*lL8D6%`ggo`?`Nq>N@}Ee5OaImxcy*vG;EZ*e1chS~Aljr;aX*rIke3{VO@i!b0A7C-p$4+JvqyMJ*v3X2N}RQjXfMmDNd>Zd7* zlgLv#o!$kGvHMXfwQ0@LCAi}9OYnv3zA9Y4V)+vM?(Sd1>{LKE>vmL=+h6zKaiq2E zL1xVx$WU6LPs)X{_#7lB&p~PLL9$@_4+aO@(CJj6GqDogDNA6MM8h7f*T{xKa)7O? zUjFxMxct)1unhJH7PC)2_4HT@YD)zHNxKg0$7653Onp$`9O8E>nNfmQ-`+|Q;Osd6 zj7tcuIE3wuB{;e3Rb2U*&!W2e2wr>rO|rbz;@nMVqogQjEKk}}(pX4EpwqUUTk+Ay z+mV%(h1F|L!}d3~Lsg!FoEfh4Ow(W>uuJN0W*{pfDaX^ej7N5k?>>$X|G5<_E?7ln zsW8;*`d~9C-K58!Zt5 zrJNbLsM&iQi_Tm$uIT*A!g2f4b?1}u@KIAcf#7Yk0QeT1xmK~nROkkhwp-8 z{@v1)0d0$&0P|2+K-YOoESfUTw*iGY3e_Y}kh;Pk>b4*M5V!v5zsYLI0==F% zoG3q$(s$W)q{**!mH^ zdc!xco}$|I_VfzYTQ9u+JUTkMaMv$>i_JSfAd>NJ-2LajVcyIV?D^n%Tz=hcxaO+! zFl2V(tWEb|$F_Hno<3%M%-`pG{_p@Ee)Mr%c>Z~K?6D_t{Md1P_dB=X)}P!#JXQ{9 zX!cB{R1zO3O-_+V)YvvpRw*&0ATXSOxdc@L@iWt!(z53iFLeh`;;d`WMqWh$j_o=o zG=;$_DKI6r&wcHUM=6}-+#hb=hYL2XiyD~3ZA>;Kg;X9}1G+3Rk(AVxaF}@$yfHw`K4OF8seZ9BSF@Kz0+CMYI5bW^)wQxwaad3sHca{jgNlD(aEG1ITmd;TC+Ey6`O>7 z)Rs=9cI`&y$p;8v8iqlaj-e_cr+PZI9G=XRV&fQfUk0ee5K7ObGY_=V4kSqgkozyHJi z_{*Q}#fA-Qap}bu;F@c{f}h`U8}7RO+vpz{AYM1SV2Nrax(Az$c;3h=m5*78caXUU zZC09)u?(Y&7Ct|0wUXfgQUK;yRi-;3TR|*fMd^-P!^vD`^m?E@^3^+?LPAr{OW@s2ltgJ z=NS%87q-3-O|X5H7tM1@axr8%W7Ql;K_j+6`?y{6(G?B|!kGU^wO({QlKdLfI z03y$>aZDV5bJSfq;w#+%wPV!%Y6O(>l&2V(jLD=uiB*$<_RO<{h0m+Vk}9=#7t$La zKsI?18Fk4>%smZ78A}M@IY|WETVU3^a!OB2CsORw@#Is_;Kr|h8Sj7a5m`+A2tU33 z7eWG#n7#i%HLkt!It*HekVH}NR;^uyH(q%IH+=1Sa%VdW|9e4qGT8vrt!Z-4ptu)_P+n4ACDeo_q&4!t5H#s1!K}k1xL@y z-`KYA5C-ddQIVY|T+~i3bKA*c>A(KxZsI7^A~8`%-(FhlTh z#7cGd_T!!Rcj592H;RV>T62Fk&`BKGfKs4@yed1nys3?_j0ax>YEV4!)Ybr#P>W>l zY_Y=t1c#=y(b}6BOpOF4d1mDIc1^4u*HDczjvK{B$bb)Yey8q$9@s?wmxO#E(lmV4El1n5lWb8>Zq2zaJ z|2_)d8(k4inj=waxOkL;=>SEdJ<>e8Yu-Ux*#-ejveK-oiNGT>k+<^9VNF9jxjop4 zPbsijKxzKcZT`KmOofPu(t1zjZGPs=7BdtM7g)nl3z?@ZlJ9|F_2rCPtp=;Q_;r)0 zfjkQCBmzoeHS&|Pp(E>wmcigjhdKHg%Ys_sMk-oMgxnoC+_(d^C0`SZ3G2E=#w4a# zAOjfd^tr;WI626`8jHY>$!qcVtj$12#ztXjqU-X=;wis>HGc+4FyH-`wz ziH0H+Su#$+6`cS8KmbWZK~$?kuwK#=ha<~nt5@LsC5xy`-&VhE9o=Yd=|oFw2Wnc| z(6H|)`Z{`rypl6hkdm1UUhk%Uc+HL@s36W9<6YOs;Qx-rNPbu5Z$CuaT-(Jl`=51p4tEyHe&>F@^g*b_bLx zGvMg@2uNQo^TLVAcpw~zaC%-MF;Hd;C4l-1VG!n`&`_s367>wGdPAK=uv)f3xb)z$ zCiM0XVPMFDp&^sN3o)BGAB+Z9M>v@LPo---@hD9uNW%58nrY%xaufJB;sTYDWb;o* zE|2JDpuhQuRwkZ#Tmv#Sz~Bm7D!GG7>Dm+|5>HOByh_PV6IP!54KgaPg0uA-ZnAV{?2ac?BV5JKaO!cr2y4>>=`a*1&ZA40P5*~i! z3EcC$UkiCl|6F*%W<2%eGgz~71-Xp%;BATy_oZt;k0c6`v|;^PA?bTtKg9nK4;0H$ z;zCMIHjwKbu$6$917vlyX7x(pocO1zq70dt8F=o6f8l>`{XY7MkLvyh9-{5Qt<~SaoX(6G+|jduVNfWs+lHxdMPSvPg^emOg+SLWyQwpHep3c>F5OX zlh3`5j?NxrX85)`YNRM@%>-DjTrx*my{K&SJvsmE;QNSNN&dz;9Xi?lDM{R^iERuP zOyZohPC`?Oo!t@#lqM>6njTS;WsXh~+00urMPP|Jcz9tDMie8x{Cf12;_fN6X8lbS zk>0bZQfE)~G z;hC4yKV__wSjVmbZv?eX?w59(6A1;Ip=f$Of(3cbI+89k;RJwUiFjC_Suv{2M4bld zsYWcGQ;dtxUV=+#nMu)Yn42Rm@-)CE_@N405{5&3{T>+DWMC;)BvdddoWIXl(Mh}> zQ%3{d!pCz2IObK-k(*N>l4&}Djct!1bKW;$t9udK6(wlQyCRS*f=bJMGUnxpgot30 zd*05(5;(}ZnZ-HWj075$e}OoXIGWw&HMvM2P9~{*?sHcmB{dmmpL-Fm`s^2R=En87 z@rLVQ8|WkpCM7N*{v)kNZ6M1;6`GOHkz&0H(uc+)_xZ|n-EPf3zpFD7?fOk|K# zN$%cSDu796SB>xJOrOf&`8o4tD@bMhY_0-yk zxD{Xk>SWh8U!c*LwNh-lz{zbY^FlG8#BB`~n37v&JY8G^?iyfF$rE`pgGzz$DwX!{ z!bPfPXy<+t0|)QLuJrTJpES$8xQOjbd3hpMh$LeteOZ(BY8*eZmnNi4816ZOuV1|q zH(z@O`M9a!?D!8Jx$7&itLghRK-@xFB_4m|A+n+!f<~huOIj5HN8~y;GPYr`=wfnr zbCN5VjezrEC0Zw-dVTC8H%XaKCf=R+?zDz%x(M?%S`Tha$%%CnpPl zhpC@=qC!WMnp!*2+1-nbwBUo4czeD^8$=r-RmSS&^YHLfui)Zy*GW%L*xtVL0B*kF zstL!Vae%q3_8vHjRZHb@J$b8BApJg%XiunM5?4&CpohdZ04w>w#s$#Xx=`HlCe)-8 zcVQ5vjY2(k8bZ7A?)gT0pP!pV1P7?Fi(KmPF?1)-jdr!eTAm1!1)C{bDVZspXsiqS zT2EI=>Dz-r{ftR%UIKF{Q4IvTu@O~ww{$~ipkG*${NET`D0zxhF{zE4#)U^5$jCh( z_PsYkS+EiIy2pT$>!PYncJWb%nUtFw5H21iQ5mt~`erxxL#Z{2)xxp*HtegeBQ7Ni zmM$n0LL(nN(F`?(Mb4+_Z=nkFDCHQfQ_8Y0kT$z_Zi8``3>PTHAPbl8%QA5cRGM5D zxL{oaxqYH_5(7(dP$`h7HJ&z{8eq4#W};H@W_2xxS7~0?o7j|^2u0qdX#4aY>?yn+ zR&{zft0^n5s800Jq@;PM8$^ucs+%f6pAcN4@ntwO3Zbd{4~8^%P#K;9 zA~Rc;4k-v5P{7nrF77^v$z>@~l4$;%a#)C;Fck6ke2IB8s8ms$0X4bV9XMQzxidYF z6+YQ>2pQxOS5lZGUK-W4jiTSxo@@#kP~uAa>-X_@jxCucj0)K*DHO{jQDeefqdEo2 z){%!;JaLMxRYcZU*7h%yx4eMnl$AJ8_~i-9k-X0!gSdl=J6@mi+F?*BSVDmAI2JVBo7z`RPS z+GJ0su&V7@Y|1N!B6Thf9(WA@NdFA_6q94{!2L1ixSULJCRM;vbsGk=u7auh@4#>? zv~#`+z3nJe$A9Yrd`3YZ0+q;ucHZ1Mc<$-Pk)%_Rm95MDSTT4M3PUN`7xP4?XE153 zon$Y?5%Wg#9Xk`s*6hj>6q?$dUpHHTAJ5UmsYpXPiDZkAC(afeN&`tiU3?%iFFRLf9 zlXcFK+^b+uNW|>MN1$X^hA4}I9t90?Ug-#lR*#Ut1ycpV?JbB4HRd*olwyOEIxOr0 z7Y=YHh-!p%Nht1a(t@V~m(p|vlr)xhI1;q5sXTW|r1vQr+rr0pq@d1*4rCMr4k+>E z&DM#QkdrHmLp-$*MYXz0=k?N2NQ{kL8xGX zC^;1jciudB4+rOtoVv?N!(DBiR!zDml39u#lWa`Hp_*oaM}ohb!=~te_vO?(*3!7& z(_p|zZ@>;8_jb;c9#q_erv958;d~k73?zR!`9?C0J3!9AQMOcyOI!n!p#kOzVi$g1 zym1C)C#FG+;3n4bs?KMzw&E<>RiL(h2NLJ}0!bW``I_bP!&aXAch^(K%Fli4OSg$9 zEOsm5i~bNsF}3gYKw=SQcDxL2=3=ziB-GJZ28I}x&Hw2T3HHm0GPQK#9tTkT}RhTW($CR>47i zno#dYw{;K=14HQTE|gpBXu70~iqU9a%ztL4&SyhQ7uvh}F)(OCOIx?ViKjO(Lj}<*@O=(M66iUW<{@5dB^O2J{NUe)9HA}>^;1-W zb(uoW?})$aG_%j&cu(caDKnTfHcN0s!2El3|NZd0gRK<;)p;=Wj$aekfF})T=o!qT zXlEG|<&8dKE^vu{i+o&1{ctVOh;&){F_*?YS9Cv*tl3wSfx~uuNSt-4Ro_7deaq$~ zq9k2p)xmAxdQZA&(qYfo0B6I$pw3+mW!L+#DQN-SFu8vBV>p4P=Uwo-&um;qHy~?VGnn(LjwUl*fhQCZZRg|9y@sU=XN@aA zm>mN>KV3wg?(aEJ)8tTRV<)z}y91q_y~21kYb5I1Tkm}$ke)AF6ncGvX#)fQDl*O( z7#tAX>4V9`{TiO!_V!)mZ-U)AJZ7Q95#7Q)fUPsxpvYc};{M(4b(@y^IX&Akx8bj3 zX`~S>k~)lw0&ZuIz5<8yuO>ih3v#Bp~Grj=}MKO{J^D0Rr!Nr=@5(6uVL{!HXRb1C_ zN`jApg_d4;a&=+zfS!j^Pi}9xEU`kVN2IPzG&N%&iUf_m+Q9=*sdQ3ww~V6kA8hIQ z>9Cz`Fk{MsNh3Ev&P-0I_sTi%7qFJz49hWcsTyd2de)br9^N0Y#S-%&$+b9$<^VWU z{lv=kO5J!%$0WTL{e#2k?H?jCZaal7PC-s)GAb#mj7BpS?KIT-w@{SC=_>A4Gr?FW zx#z*U60MVX9msE(Kh;`|JOE0(C((3)3)LdZ)Ag+LVDv7wKfaD@ARHPHEK0PgsH8=- zT;lZ-L!J=%?TnrmVOaDn*iXEO>)Xc9pNWO%E=3QGd7pW43;y2^@4|h5`zN;VIuKUt zpg`Ni7U)*11JD2aeW8D+rsq6Vk@H=Q+;k(=zRs`^746$lOsw&rgxZ=IzCLqcA99G# zqE}xg07;=%)kdyw>>^j%{tC)l|B2%{mj#rilF&jc5j(&0#yj}ZP1iw}rNID*1Z_kZ z6krRc3|$%q2~}(vY)2xYm(n<+NrHbTWj2Bz8*^>n7GAlR!WP%|He#Wm6c%?xzWOh^h1KGmAwtl*;ENeZN`Jow$m+)4D)xn^;5AeY8uS{|$>&^t2X zl2i`oygOkXJPyUN2MJ`h3c!-1^N`VQ`koOXUi8(3#{~xRwS0(z?jaBO2-0-NjSgTW%Q!VOz@X6r^3bq!IiMXlfx(1w>`z@L08Rchz<`v%aYR5*H~|lDgf^zq_EUiSw`A3Q?+d=(BBesTP18GEg%D`9T`3$$6w z2yporyg!{Jb?7Jxy0&6~-1!a`ddjzYezq8xA(wgKn5M}< zd2}a5Yrvw+Irwnvhj?lG^C&7Q!uqq;!(cR^2kk<-Pd?s>kLY}MZZN3<0H6UG= z3VV+QZ@%&xI@>z1a_uUtT(J~pLT2B2^=;(l<>1i4!|3hm!8sS4gINV-0#H?vT!QES z@jMzE8nJ5aYSbRD!I|frfhy-dSo1EyYj1yw!_|Mp%-J)s`QmeNyr&*LWUA^-7{pPk zU7bL-f(i$LytlHX$Jru?K_qX0iq2FI<6td1(pF0^3uxQoMhM5i73)O2F%%)Lvj3ZXo}XuarBq4R{mf@)dWKBlC|WOGe)PtK#>R*O}N0r z0oE~tL`Ldw$dO}i_d^7g7zhlf$c_3YmdW=Ji8`!Xy+~NZcx*6p`&s0(eq!B=57ZDkJw2XeYP1K}|l&+g?CR z>T+}%LL=GABzLyQ|MoZ@edtkKbj3w@^X~p%QxgOa$StukB>YHEwCT_d)Hk@CWLK+K^=BK^9Ce|1?9K?8;!Y_!mJHnh)BWhO@=#n zqDDiYk_+t@>mynxiTlA?DRKL!vx}RkpTyx4#G6FiH1tx86=7mY3&qZ0L%hyLCgcwO zgK3DNc6rk8RCjZew#hZH4c)|8ny0MoQDEs9SuFi2D2pYwtcr?tm4^m#ha?ih1NO-R z#`GCwk!aE>pQrmh4c59%3g);g)mP`)J*~JexEcgWye+MZTsKs)Twm)@ExLTY&qB@H zSH0us;u;7=18k+FRMO-#c|8me?^<6F+(^*`mN;^lk^0*rKoUyZ!*Q)6bpL-vSM2(;NaY$gXK(|I0#@LHtb!L=8ORbTpSWz;@1U8iENb-^jON)*oFZmb8p>N>L$Q?Pd9THN~WTk)gY{|C=L z{;Y89uTTF?NLOB2hJXL_WdTs)16N*i1#bD_w~3t6jF(;}^gG zC0QkHgt@yJ>(*RCpi4GB*nSW@ckIIJAH0Fo^c0+T$@#eX`kV2c|M{*!ByRFE>&4bd z;pY4rRlvxGTo1upXZJ{yS`}ya9`zTI22IHyABEQ1gSM2VzRDau*OsyjruK)R%U*?CvV3Yub3J&Y38uh?+CCsy zBx$Y0Sf6g z-XDMXF$$N=pmHaIB%;#Unl6&AZh>0mWOclU+LEt`)eGy|m)qMA@no5am&#q-t&BRwn zxASt2djiNg-*DtDr~G)DxCVmJKmySnpRCNd~-l2O1oLhc;b_=h8;i55ft+A2NI?qZeF175b- z-OZQe&ny)5$L??80+oD~7mjmMt0ZZD!sLV>UOon*n4UliB#C)2&s6o{V_35+dK1wJ zO2-fm(_pwZ`y#Jkl2}1Ig<@n&ndISG6m`BS9`?IFN!WlQa|LD$?f08D786u8KP`Ya z2Me#AG%!ijOLN*<;T{~x|124kIZ@U0l;DoYK$F(y8O_wtV3L6(4gJ_NiHQ4WKl&+# zhlcU+bC2NF4_+0s9=9$`%0YK)mvAgMCkN$K<>=~k?HACwrp6}WoK8D7P_+~Jvs7|& zUG86|mP5!$slgNMq+-!uWj#u$TaSy7MJTTW##G zj!80Zp^n6(G(aK7*#oq$`lPhl0c{)TzQ*Mg)qn^rl~N?l5TnAKiW)3S%0?>976v0N zd!GvCviLPYXuxHq6vTyoE@79iV1N@5SmL!@;k1FI_m^)l_4bq}19gx#9&3B3zIy{6%klsa48soMs7KB)0wM&4C|4Hp`LRyv?uNs zE)xj3Q)UsT&csP=x%o=dv8$Lb@#OC2p1x$k4B-&#&0l`**G|Shzw14LL1JC_o95|z zz{h#gf+sq>UC(2_veLq!zFlJZfvywUGtPwB=GolWTV}^{ub@*3RJ1(nEy=j!^<>TD zXnhX_67XSMf+?`mqnCr9Mz0}kmDEZ;t_KUhBoKmIRYuHcd)Wmp^=yUG>9X({CJUk* z;=P(jpvU~=DzF)xg+ePPrzDfriVFXD#MR-oTE<=qFF*GZR3-%;`}?D)npKGmvOd~$ z{w93z?g!ZQ@h-HtwBflYp2LbYE6B{wd(xQ*bq9k7m141dk*JeM3MsCm-67){r$8(kBB2A1c}@XfDH3{P_oz^%lqNmm5<433 z1oAMSL!=~F@Pr2gV#i-j-NJ31B&W<^(!{Nkg3((1ny6}k`pF42i4L-UQK;mDIgzR( zlRO6kDseqTV98q_hWU!30y-%)Fco|WwnO(rU3vjDM}7){klRo?j*vSP-T9mJY?0wk zXE9mO+u`cVGbhziik=tCBJvOUs-yT#;BN`{Ew%b|p?~QKXmZczjJ5JS$=t6Cc0cGZ za6JK0*}Xdj0HZeRe6UNLH)$sxB~#l&NX$JA1)cAsk*sXu5T2syT2>-#KmW`N`1$|+LfHQK zT|Xy|o?$E?zNL#UyHMac;tUrrTa4R(eFsz=4T%0FP#t>A{m3TLZx$u2Fq-Oc!#8ih zfB)D2;omR4HOjZd=QR}G@drQtfk4K6_b=`yUZ(=w``16hs&Y`&kTGzJ(~81CN+iIf zKwaF#`jpoH6~nqb7zPhxD6xdBl;pb}ih0Oc`*M48zh1OXViz}&f5$zIbf1AFU(xHN zX{YP9mE3(*w!WBc9^c1oiVVe|(w0Zx!iH`apTmzmoaLaRF@pL%gV|QQlTN;QY3KmLERdDa`fD83=0fS2Y#Qz#d6g1A#-3^Yd zb)?bG+|T=|Mo_1nhS@L~*FfL#3ACA2u(t0RA>CI-b;mAkTSbpIu zp^fZHH$c`(;f??olmb0m#QjBo!rug*lnCbAFf=p>op$`Y+h2L1oL4-5{7vT|S$za6 zDMK~L7}yUctY&c%lrX5v!O6^X$7Q*=;V+oI_?tMf`)+(#c;mQpvAm-s=JKkhCs1AR z#aOQ9xVo{sQblSJa`o9zIfzt}tS=JCV#%S66H0j=Z556tWT7 zGXo4P{eAs(P7jmAjGEpC=%}++nN|X;)dm|`7A4ZThW-}1-wxy(atH*n;80f$l89Js zmca=0?nkd-0qSd8Q97f9LQ&gsj3UO}_{E#>?kDe{$<_gOozsykULTdk7E@iry{I2( zhSkH2GJ{E>Jg4InG_u2OW%stg-MbtpYJ3XD!5Va?uMl!G^dH6X8Q<_!OvuNWfLsn| z6k8`Tpu}L392d7!iFDiFO(?IuH=z5cA36r(z_HP6TeHW%??z9AVS}yF9CTk51lqRN zGzA4Jt<&d*p(e4L1$Q)<5YpRB9@o4=lN^z-y!@eeCq#^0O?jvp14}g&6)wSwgz{@( zJ@gki7Txb5Ve}3$Z;dOuROn?&L5E;-Ywk_J!`p&$dkePAP_LVp(~s#CJ<*#!`1i-N zxV$zGxhB%Qr499XupN78x!#`baO5p5hqoDY^9EqKr}ecjtsCbjmn_y-p7C>W4Y+H- z3LU=p+~?g7V{w)Z>I5gYw~l#4%+0W&)abzRz62cUrZDS73m}#I=4C@|$R!G;b_|vO zOnPe4w>?dK$*q*g4dkt_Bc6{Gxwne?%86;YaQ4@bWk4DRlh(j#m?Km_*miN9<$yli z&*L(D$;U5#gq0Vs9+xCqlZxXC^|Qm@D}Jv=O87l}@1GyR4PUr8QbkP2SLL9AdMMJX zFQce$W1(@CL~xrnP>s^|S8#$zzD21|S&o@4Z=-=FsbxZ5F_zLSqOlcO2Sq= zhr3S*i?rSbQzL$w}Z7xO6l8!%+3$cp0N(~1)m$OqFJ4e;)aJ&M?72M7H`qs z+{=t<>Eal0_gmucnE5ijU$tW@+NqSDakJQq*MRr7# zJCdmgaBv5me~*!TX4v8<)ZYX@+fIiLQtKhM0OIHfmxG{nmlru zAW*Aqs1tYGeFr{%e;evg*5mrGU5^s7Ryx{!aukdb0V{8LipOnXd`^S2%yC&Iu`QP; zOQar(W~jDyBd_&eXwJDvtaez|Y@H=Xlq%mH(m0SLM~f5FB=>!a40;zN5UARjzH-9- zAJmtk?8KiV1}Jfj*zL_hr1uW`P;ev*74e_7*R>(5ID2A+-H!0blzqvg5&qPz=!ovR zn|;eEOzc>MWA;uuYcHqlSWd$o5SuEGOd8D4R-OmN!H3{TUPzXwW?`T!45I1V5bi;* zFP-qf+hVeXY+(_Oh+ugs-oJak+A!FDc+vo+`S}CBsy6M;@iWY!j3X%wR*Am}=D!FQ zT;ktRB!TE~gGtf+-AD5N#q*9`4d`@iWyqt9@v?v{kxX`SqaayAmP+q8s|Bx$zaP@# zy(TsC6CJ3a_w(-d@z)I>eG#_23*gLiSj(I?-wEb0b6SGi6 zwd=&{PpkE?CJUXp=b?u=bgVr{>Dx_%;s=E`_M{NFl)MCX4}QnTcO1frkB^5) zeEBS>$fd5N;V~L)uOd)tDRcyYa3r?Yp$_z02a&g^1Z5Pu&_am(p7v_5gwnngEEiPq zl?MYV%oh}>i<{Icsc*z8#Zx)$nP;Q0>1kwiZ6#f-^OPj0W1&X13%1=sRd$+Oq#+mH zjIIx%AFc-jMh$tF!%9|Yp2SIng+uz{h*~MpLrdlwuF~yR2MQ_+&~T_;7NEpeu`juS ztaHNEq41=KXdaVe`s}SfVkaw<*(x4jO_xEIv;$(LcbK|m3vuJwV6jqkLA6l;bl6RY zMHmQ=xEFcTZ#a)LXcz9maj^Bfc9jdDY3@_u^@H+e7ZcM;gDo!L>vHlB;*6ZM(d%*z zWa1Tw05XW#uj$L$o`E$8}pnz#n!Xn=z!xIb%r z-P$}mK5lhcCauqR0ZJc{WfIG*bQ{W3?0Dkn#3;7b%I^tjV);)rKqYQJ_j%YtJDmML z^UT}BqS{=dU-8GEBrV7v4^`8V2G}XkSWyh~jPi5t=~Z$uU=ONSiGznf;#%7E64rA$28YlPP_EVj@K$v%yX? zJh3RV8XrSHkt{cc5fq5Eb~1mE2&`Dusp!bqC@cw%VWjr%MoHtNP*CTj&p4C7rNyvn zGK3~DnDq18?+~_sbnE|M{#+GV<-CT*ybH+ zeNH1`mE@@%4f$80?Bs*65ctqPJzUBnz><@wq)Xi zOYi=Kz|=%^rmjMBt~_hA*6dA~5kV^@(e2H3E1W2tRfL`Y*@4C9$dBT{9SSx{p2{w8 zY?Z{(KKzk0%6Vi%nXM8dZ^$Vp*fh-B!xF4@jGS`C0jQYPk+B~3!{3Lh^kS$QpMRZg<9mxt_{T8~YWu=FFpj21*;<i7uQsLuCGp!JS66b<`2v%~>({SYByM8M`=6k$ zp#_`ITrB`hqbEYxh$y1NR!Val{yGXMbsFYku=P(c6rPFvmiJJfaYhJL5C5e)TQ|yE zo<}nQUtLt!=`2h}?MWO7iRemOBP?tZ!QfH>xp67!MKq|N!9H(jZEY1URgfhTgGsd| z*UO4<#^lmUN8kWQsMbjgo&^f3$hAuHq{Et$8^I*c79y-OYx6xNk$o%}>m+XPsUEpa zwt`0zS}Ck-Y5m`c7iqTa=UG~YgRGPyEuz~Sldk7gu}bo$paF7YM1W@CJfIQ>SKjgs_4uxO&8QX3Ide={QbhHPfOxWI zuqIYQMelaC`8YhWPw?Q9t%joM^2Z%8Pj!ueN@Qhu-dq=_2Pgj9M+UE;lEY>~LIk-I zq?N5Zz7j>+Y66s`N8{Vk)_@4;@Na}g0AM0))hGTYBh^;sO_I9kF;`VAMq`Xr`{VgW zM+5HsTq|;1Um&}KSzRHxzOBr)VS9@TKUiwQM`XFgMBT|6C;BWdx47ukG<>DF+|d%l zGD+sIR>Aal{N*X0XE!u|?t7ttNMbqSn)|U_-cd`>xN=j;O1Cfud9%cN^E%x9M>$}U zw0z#)v~eZ+2Zk^(=rZ`|>gh*X3b~yUhjOr@yzJ(yZwvNfIoC1hkTGz8h`Y;$wNSva5Bv$kt{I$i-N3<^2v>DF}jJMm0bW6 z%_s2B7e2&C+djl%>QtMSensG2a?guBp{;hS`(bi-qi798K$$=htK^D}tl9XwU`4Od z2T&fFN>T(jExA0MDE=}5LODSdJCIb4qNZnwS7)I|{m99bfi&}oNxhu(Vj82?IBI<+ z9*eJiYoOmaTX@EY=(o>2Vu6Z^+(wzezbAQY1|ZNp{H13OC646BR%iUu?`i2G^Hw{# zy=D2kblmv?0(OI$6%sSaHuCS9e&JLHgC@MQ;bIxmH3LaJvsPyfKPSupy<0T&E;1&J zMURn|?P*)1O&$$S;OTsLjycH+MukB$akdfJXnB?uM%_eyiBQTinTBZ2VB$O4kyHg$ z{lieE&x4J4@SI-0hjyEpEEkAMRTX(Kl_MM`&^>bScR=9y3!vrHKT<{z)X7b@;ZWx= znb}XAq-omuFp>)*L)Py}18oBu6eT;O^1Jj@e*BmR4bbz-zZD08*Zd6gvm8!|G?>J7 zby8nMr5@jB3^R;?9CxApXyUYBR3 zh@`;GRO+i69N1KBr6_QAywx!N8-DH_dDi8lg-zmymin9=FeK8#{hbnZ_=8OO3yi|N zMRT=j$e{0VAbl-=`ry7B_hmE4+KD)^E@FDDpG3U_~m zt^0y`4{J4Q7!7)%rp+xKc<$x5(bL!H#l3ES@d zv4{gog9JzvcD+j=O)2bT{bHjVUp90Q2ImkCYiCg?`@jcpUhY%Shtmo0%J2S&$hW^p z5#8j^_6J?yBwr|4?9hV|sF=x(F)!VM8&+$uv0yiBGZr9$2B-D}9h~&wNreF;Z(xX> z1|gaN${(iLF)^Z?vtLb;3B`&4Nfzb{H0SfeArE6; z1i=|#2ABZ`AP#@v%-p%<+%xUo|2;+T0g_yM0#xG3xfbGbM)Jqk%2nTwp{be`ppyT@ z&Y}WJ3~IeSQfugQsYUkHylE0R2`usWK`)1_3oFy)>#PVQ$2S9HTA#-vuv%@Rj3tl` zC^1O1Yhr1RxM#|SM~^x2_LLp>_d6GVnP3ukznlOi21cUvEj4nSBW{T(Ey^&klZzJI z3Ron7hR2NJ$GoN!=aXCPW6i6z1YR+aWHf-oJaL}{xU}nFKiodIwD_9NEAN*YP||xr zk{1*bC*8_q_EpPqV?!Oz-f^nrxZCM+VQMah{fCcXZBLK%z2a|{^gDU|#kh(=CI*(I zW1}^cxI^p!x_A5uOprrk-d{KIDBN9_V`gmUqUMs8j_aM*8yQBJecsgc=v}ob>(i#O zv%CvY@}<->`b)Ta-;L0T=SZ8wCPlzv2gXe^ub_5*Kb#an4)FkDG*M%)DU%o^VT~iT zpb~>Q`2Z{2uDZS|Yb7z5#QvKE&&-RYEu{inVp)MefVRnJ7DLQu%0lTlU+tuP!9pcI zs_E(^&^-NH@;7!W;*KS!xavx(&&30JUW8!{B_>~!4=>#FJhonRI!&0h`4Er>2Py{^ zavU7Wv8D(L|#vDPps zkb*K1Kr-_Ty~Bfu)SU;oJCw8X8JZ{?rG1gvurz3)0gRSOtQh!Y)}`lhr@ImTv3&@K zYnOpaHI2Qn(TZNNsR}9;TjJ{5OVSuZkLM*HGY9ot%H?EWcKN~~KU96ZJ{m zV!mAYeA5_QIxsuPU;?u@Pjr;bxe}On zcPR?3l1{LOkd0Q_)o9ve_M6RtVu1m)dmG^k4`Fxf`y>q_m zbW*tWHi{tE9N3GR=olPHR_i1*-d02RY)UeJ%WNb4IA36e>rkVeq@y)x@#5NXWs#MrzGZ4_0iqc(qEKRlQbs?)_-sY~w*4?=RS zq8Tw5NasOmpG~UR*sZ-TLFR7`@NvH8Z@iktzKD3hphVV*XW;VHBQflVSJ z$>|yV_g(kG=kubaS$^SsNtZC+R#lce(*9obOg@P%Lw91lb~}>8Pou+A3r8Y|7?}qZ zLiQw0{ADy@3aPV_%d*A|Yu@A=b!}+Ptyp*L3#i+82i70F69;?$cu`z2($JWMf~M=HrxFs+j&MIUeWp zq&tP~<3E-54zK$ZCoLm(AkM#B#Ig)gG&?4xNOGfX*OFhRyC{0t3n!hOXRnn(v_hlW zWpAN+wo)X}wYeL^hfZMq84Et@wDzme$Zs5){EE#}lKGp~wnhGh0nL0-)V)QUnOil^ zD(x!N#53#F-+##m4q-2%j%jH_jbm#YX`5QMd>Dz*H?>qvlgb5W z-43#^w;F7A%ix~cNK?#LF=)NF4UMF^H<#Af?7$1C@4X-`rFgpx@;-HFVTE|i?<%?z z{o?hsd|MLF4EKQVX(skpVWEXPaV#a8HXi9 zvN@)ogDdm~t(>v@h(4g}X4&GA;FN57IVN)SG9C{ZO{{ekApeO*wN>g!!hJm*uy;10 zKf3bXP&3xkTmI5`#el#J{QWR$e3MAf0%6)XuDP)Rx4r*8`0Z=EaO$S@vLY&qhLUJ` z&a)mtGI{Ho`3*U+Jr38}Ysu{G6*7BM;{zl`fW#Q;!u@FR@0K)QI%Z#%v|k!Y`@Nlq6gG2$>bK zhT636G>q4sDg7pB-$F>XGfvT}=sLF1>NuOuZ9H}-0`4}<*tKh3aNBa)N$fb;85@H) z*pDt5UrB;zr9O!BN?VqtlEd-2x@}l9_8`frmZHD4C{-b)=c}E>h3zC~=AlZ(lK`7| z)u|2zu+i;^5A1d^`WG6aTr`;v()XK z3VySc3RcsLCjr(PWKBPM&j{@$CEs7Hb*G2l46U70)KVgT)IN(^+pOkag%Y6gfa};d zVDGyTvC-Fojh|5zLZxZP6~pX}$6I=7BFSBtCi26m#!r)6S-sMHl9GuRa~ZxOd8}8+ zcvmZbMuADp2ao6Ydy$KHkuSw#Z2rcmBpzR7nmD`NPHb4mR!Bf362-Uf{0R;m9>Avc zy@h!2Vlz1AavV;a< z^R^>3@iI~!AJ3It@w||e)4gQ=rI@*Z6CA$WK}t9bmYIQAOKGO(2p&7Jz)ej>F-D z{NRs~+V&;6EQ@J23R0rx+qPK1fM+q!6*mwbC3eJ&zvyMuJJqU!3NfYKY(0PWtgTMRIvSg>q>&Ej&}on1IXW#2^2` z?Km+!hMJlMU&%!Wltky_?sihAs6{BHyejS?^Qd*>zrsMvRiv$wePA}!bSY^r?ZVcf z@8Uq`t*XuF97%Pn>4NV{-3nld&9)d^QbYSm=1s@$Lsxwdj?KPKPSUN^$?xq*UQ&GBj#gFJ&PEwrfd3S!Nd(|5}wPRVY~_WqY;a+M|4l6Fg}$y4J(Xr2tvWmp-ZD96ff zruE^RpCO~(+dPg-#I?U?(|O|OI-3gw&dYgtn~m0VE-6RIh&o$Q{mxOmB7(>gXp4_a zAW(=RV$Id8BeS*jk|s(+@DRGDevLyNzk`Tf-T_o5Hxsoxq-brd(KJ9BGy!sm%*0ww zZgL1+6P=*nI6SnqrWVx1*!L1go|_`mtJO}<;e!PL06+jqL_t&n*ikEoS@&kF8G4$` zZT<`!cYO&1?u}}TuE-ZikPns6!YZ=>faXaH%{l3Zmz-L&R-0Dh{;s{2tVk1c;>9vzQ4krD*)mW^RRy zmr4dG?P<9V>kt1BzV6F08L$$V)Q7s@5o{Q}A2u>&V%pdBAtXqvLkqDc)4|SLuqjQW zg+tc|X|*-vXu)LdHXJ7aDNfFyt5moI-fFoXy@$Ss*3NU#J@qVxnl350(sWQ~kX9(x zkKKoknHMqAaK7fcxh{4~95;t~l3X9O4l-hj=CR7E z!gB2vBaK&b2{MNR%4*U!TN26fmyl?_NLQBBtaKIHAcIP&qn#SLs~5i|dkPu&IWX}k zPF;61wvBxQkCTs_AelCeG!`BaB}%?_^3iBXzlha+brRs~xO*amZ9QACW9$bQLg9c? zX3Iy~-iy^o{dO(S7cWPNQz_%@xj^rO@zs_$X#` zxhkL}u0V0NuE+^QT>1MR(t}I4hs@prVR#z~2QgSnr;`REMy)cL)!a>7hyCGc)VOSD zV8=WaNM5&#vwe(SF?4h^)A!CR3(#rN zNY{EF6$)_bt&LQS1wEFLvI8Tn63iq2zSbKNKlDSibe=0|x8zYpwTKBMu#bFJMf!h& zy0ur4hS|M_aI^r;Kr+9#>w~1F^fE;U%;v(~kf!sll(m$yk)51}M_fz(Hbh=)o_>_v zY|c7StH#DvKKHHV=$>0 zT1iIqyQF|pko?K)4Mt&UI31^l_Zrc^YMn)pK#ZK`?TS;xJ#v!0!%9xI^EB7W#p;1I zw_)w%lW@fsY=m>=H~V>4WI`5D%EvKxRXeFPSGz8-k0QLSD^24kTXmD!TO^<#pu{UT zMvz&xldKf-+G1JK90^bu)5e}T1bGM ze6OaLclQ4~9GgFkc>g_!ZTep;s?2t;sf~2CqS7)=DAc4(fJ+;l4Z2H!>(&Z(>CVK- z3Y%LR;2<+!9(O85&6CXDjACFF)>~3QiRFEu<9&!7`6(K^F2dT0$5-JcsEjTj>bM!v zp~vBD+KSrnQA0Wvv(})$^#*Jlxd#@~Dkula*VK;vC~2Xpc9Irp>65p9?hVAryjD)j zOrI9i)goyqk;$8$R4AY#$BP-YlLVg@`|?lWq3B%6oLUN=jM|C`f!t&uzTq>7HjvqJ zk|qsj{yp3$z6Wa_-(_b_1IB0Ku(=v((ovmQifh@@)PSw0Zo;)&g1COuARI^j6YbMK zlK>`>hqpYjvrxp-Q_s{kVN0(=X@6{9+qXrjo@#n=CBXND67jPv2O^35yyBfp`$Xhb zyUoTA*TLXHRZB^&G|iJwEkGl_BMb~lrj;kJH>an6TLg&28gl~d3oeB=n6o?0?> z`!ymhH^>Si8_<C;t)z?+*}1k7nZ=|`j=w^|F1b4MO?$_VQ&HRAfNbN=fC2YT z=KZgg|McK4TFaI?|MF3E3Al;a8?ZZ+0=zxg9zRk74ysM+Apuu>ntVl&FPXqGimta- zk1A#B2$G4|@urKg<@lYl=PM;q@}s1(Gga**m4ebaTg&8cFtp}(b*@!=b&?My9ZlYt z1HD&n%%+_*I5&bp{|IIyWOhpCY4)_0R$*}}99n9!(n1J+b{6=d$LPh!W$7JT-T zx8ZlLyAU5eKY%u06p@LS;PC|DtBv8zYtN@iSILKHtKe#sPZzV9{>b%$C*qOdlwnc2 za`98uQj)tW=1${#Cf9XM?*V^H7$9P>h<`$Ri2@(qEB!0f?Q@gg0p-=}d~Pzm&EB%D z66M369%Ujla2^j$Vlc1(E)A2ZS2Ph_tXhha647p6Ylx4DMXvPSNe7lB69k(Bk!TE$ zJoXHxW1WbecpjFz&8Vp(6NdwTCz-JEq`_U=PQO+f^n0W<=E_Q8i+SMh_R+#Z8rf+= zV6{6XaKu9OTgl-$Zy7A%bZNEPMyuMCX5)#3t9Bs|otN@Z{)KekVtQKjWxv}{Pv+u8 zAG{>T|7LJh_j;=p8ZUutrazgj8=;ky*+x8` zT{E_-rIabL@;KHj8eq=ejz0lg?HVM>2WztTqY`Mu-vjaE?~@#mBej zeBmL|GFuBjg)lD$jn$uxptB9V;|~|3xxCv@in`{GjUnP_&AVPvu+p@X(wzp1KALUo z4iCZ|8NqbJJ59lwi=({FXCK(-!>C?nZ#%;iMPDV#*55E`Bt??T0XPPiBIMI%h_sgc zkp)MNTn7VdTI3*sGBPWv+4wQTIWcf|x(Un?CTgUu6z}`wl3%6u?}g7YO3_pL@zt+= z3;*%;?_h9b4lZ9a>;x=12u%9%&+f-pzV>aLII;8{zyE=U@z(DBq_yQiG;YB+{_{>G z!CGA8d+*JCxc`@r5{Tr(tUrwJeD4SN{1?8Aop0=+I(_u>;=x}%j;Ee^4*&k;ui@oa zcF_c*a!u&of5jEJ=$4D&pO`}|WQ@a5zTb|K!?g zfArP2q%!AEXfG=odvWXM#BOz4L)HnEw!RILrs@r-PnWZoPHj|jTfyr zZ-xXVK*<>yL)fJZC?yl>d_+~Eb`pP>7+B&DCxa1YqpslxFxYjAY1pcfG?erQl-Q3@ zr`=OfKl#IM)&Wpv$E>6glSBezp=k-Us3(wviRHjP4KfFJndMnUzcMCH!a@1MHooE0 z2#!1eZ!Cmg@14ene*e?B`tl1gH5(*g>6>`wsfW880)KgEvRaag{0Mhr--rk05uD%LaUVR<5Z`+Q| zn>XP@ANhTJ^($YL^4xXTPYFnR4VPbb3EuIJvlr{F#GN{tM4aaBz_W=lwDhjS-P3^v(h8`O`6ZBR0?i;&F@S({NwL-xYm{Uo*4pF=Rh7y|0(>u} zl5XR^X~*w|t!WEI`o0q>^4+JEDp@;8$fA>?uJRa4kfb$DW?Y-dp?0qEh$yq#w(NkL zf33akNF~UfP8KSr#uvZ4`JTIO=L{}y4Z=bF0VQUWwR7?XmBfc#=k69< zoj(>(tV8%NV^cVfmHa|D98zBPr^Fzq5=o{VIVM#~WzCvyV{?O(4yBSEHzHA6kI#SN z4t)5I_u(J@;`a!Av*Y$p{0km<;30hS6Muk*A9)O4`O@cc#pRb^J`lwAv(A^gcIl-T z<1?TA3!0py@aSVtprN4-k3ar|1QxyU;*0o?uYM7JzaO9d%%^edt+$ZOZ3vNe&fRz4 zE9K!zKJ>xc@ehChH%P>zIW;28Do?e1b=5TCjLn;|YshH`pu~I}JG`V_`N~Pg+Po3m ze%6v^nOc6U`HCw6)(DaVa7qCtanBbtp}bjzz(6}|Dis^-%F0yrWKIdNgKoZVMv!&< zF<3X=ia7Z*gh!icZz;7sjF5#=ovfwgr>NQKQOd+ZE00Ia1S)kDxcI0f11;(7t5X1Q z>|4}qBtRwBWG^PM39G9Jygl`D9Ix$3ER*FlSr~l(!6n}neDd&M5?}m51bdDw z*VOQn7C5J$oZBy}r+QF23DntbNcoS#@9r)-6Z_Wu9$axhwhnz4jr02oYCjQAAQ2@b zITBm(i$~+6nj1$lx%{3~YA~DjkUKh_H9A;4wfq^8Ya?6za{0}k<|7|0nZzGVB?pC> zd5u1{B|~VKeG{W?*BRZErusY9cYr^hFW&nbP36>N&eu6N4}ipnT}?a1%oC0&hikXe zdrSbv1M?@y#A{(N&4V~4(>F0$DrO&w)s~&Kw8VrW0S`IZ?#KCOt^-musio)jl5;oV zvB#gpo;`apGc$*GoP8#ufhl->OPXyLoc~Vg+}peN66o|O{_S7>naVtYeftg~5{crx zbKi;1&UUKLiaS2^QJl8*O#JA_KSf}ENj;~njR0JF?Ixlj0;bfxe~Tp}BiixLD1)9x zw8wRh&ATuX$gXK(RNK{h)k{FmkCHS|AzvM(qFiQg%vaT)QmL*^{_QeYsOH*gZeid% zuyrF>wdu2(iu1kBztuvlr6fnZ(5f^hk;`v%nlDRaI-}d>`WZ}mBh8{AI2XkD z;CL~b*3<^yyQR?9EC!fgR6vPApuhck5TCzuX*K=M2co$3|MlblqjUih^$#WS@qd`d z=3Xm4^MB^?_MxSh$3J~5gs=W6M3Z_=*RYz|KnYlAq+jExL28~Oy!9B^l5*99&6i_8 z0ZWbZ`>|!{`|yTOC}+-c#zqrLo0I%|IPHrQ%N5yG-g`>sZc=@81E(wt+7B!0SCLR@ z+DY7Hr4JH2Cp5!KOxKBDV65$O6<4SDSuXw16_}ft#j6j!tZU<1opUpg^jvVnv|tho zC)0mYroaTC#2Sf5=LV5XEj;jS`j%)hr=vE5Z)z?=PDAR;+ID+RMexW4X zkNWffCY6NYRoLi)M$l5nOEp1R;(&l&GJ8`)Rewrqq-3rw(G#wldBm2mgb zcH!HhrXDlg>uUJaGmp^Jm#dS>8&`nY_P*WpTywk!r<`zS32?NH)_#PyTr;XWV&|arB1y2 zVh4WrN*7+-wE!r+_+}iVlc{BSl{!{UFP;Q^p<}R8gtr7uB!jN@;x(Mn5<7Q4(smR2 z+pb5?)`vrt+%aO1xe6!7DM+KZ0FP?#!zWr9!+4mIGf#wC+Ja^zj9F<}eEiEk=ICc!b`qjgTM$})crN+vC@5sO)*7S9hq$5uq zYQe5ybA^5`i6BheXgYw+6BDC+$uL;XKQ+XY73M_^u@8|dm5&6ZdrVL5w}bxDB^65B0DV84oB(UMM}?= zk(!)FYbhCipfpeR)@Gm(`M25EbvwrE&cvqSU!Zs5(Sq2@ z1ees9yk#>-v&UwUDDXv=Rr{%+-j=2?zudDCo4u9N^sQ~;X&mqT-E1tD{G8M6#ASC} zf&Mp-VE1!x>BbMQg7JWb0VCcrc*GxXVb;d!ykBV~G?l`!C~41l7W zd+jw>;fgD-!^c1VN%Zyg;z<8dDG&eS(Lhq=gmtk{neMFb>%kf4Z!a153@TMk-%2L_ ztPN*6{^tp{S|BHD#WE)?7Ftjv@JB7E#Qt{F5Z5QnXw~Ge<|(}dq;H#s#TZ4769L$Q z2T7$ZNIv<_RLmxKf+xd9-RpAgnJq0Fs3gWDnV?FxKFsU57^bD&Y&_+Aj-8ZelCRN+ zjc0GlOkOqUh_gQF!1a z9{x=XpZTB*w0OCKJZ=j_6zotmg<7u#U;JShr}WxzY&d}krM-VhEkGZ^Vt>3kMjyg-!ww|LNwe9>TkplCw_kxLzQ>{1o!ETt zDY~-Evgcp90!Y~$aw`ccN=`B5hzEFQ(4ZtjT1=TFO`0@J#xl#7?3low`Z^De9@)Es zg;at-GrIP7{rLL`1SnbwnFrhH7Y>ZW_QvOM(K#Q(-rwGhz}y6C+Rnu1|Medv{~PT0 zsI$FQs*~%8$L4Xy_HEKJgG~tnl&oaV_RVj674!2Uc*)7UAO@d)cGnLG%u69onsTdw z+%9_0lvwfYuAQB@eB%UmbQa&2(`vZJ`SdZ}@jp)t7{D=df^D;r**}9nDkHQlOjeeg zyDIf_VHKYIQ5rnKQEI=Mu3ZA`*w;zlJhcF$TnmXuFMu=tQ!a~anpm)r zJ-Lb!1*jyak;LP&VG201$+Z$(sdNzuxp43lHS>cr$f0?u!6b1__#GG{oF@}x=i_KN zuKPQl0j$in1TTedi>9G;|FcnCeF05y$S=}4r`xfn#fsnTlt&=WA)sjI-i33!_9t-G zX*P7VS<%yJ#q(4q6iMN=YDBj}ue~nieWab#INy&{cpP44diupd*67nO}T8`>HO zRJt6mJ^Bis`{}cI?ctZP=lR_jc&i^{$Hp)}Gr#B;sBAi=6QkK2a;t4Z_*BZ4p9jF~ zcu{WkDO))+oMQke8k}A6i$wxR&?J`6Iju=p2;AkoR?;4fZv3AJ?kC{q$T!H5`B5Z) z`w@hOUm&n);v}dvFO}mu7*ygd*Td!cy__UqiH{wYn6wq`$HH?Y$2rRHm&zF-pW#_6 z_-7`1{WotSFfmb5ma3XcB^Cej#>t%DX17c469%x0p{-##sWr?1Lb{pVa>kY)X>s7p zlbS-niRCR?&SBb-tS0m%czBjqG>3xiQC`)QH=x+u@GZ~ z7ybOPDBg9}N*3O6njJrVIErgN>BoA~XgYs~19fQ&A3yqK6n}KH`LzYa%~Gjb24>o4 zU&Z0}8_*jZg4g7JeTE4X7$FU%wd0RUd=E8WirJd=x?i4b=5E}WJ2H;xdS!Lrq>2b{ ztTo{*aa0981*hbYJF^Wod-GWxWOk))B_gxD*5mGxyUEn;y;_TvJbz1fE3W+T)tDZg zL1=Csv*R-uIeY>^3X>W1hY+HzhhC~T{PBBeD`R(D@*Wt&KrV;e>8%Qrw>bhoS}2se zAl8;)8!R;|Vf^vtRVFQ_BcdI1Z)e$mi{=MB~B})){PVq*k1avq>v58n#FE%>&5_*pjw(U z@p&^6YXGum+{|Z7t%j(UKJhbUgqBj#BzxbNmpi|@=~4&yC+LlzFI{vuVMYJ(R~`v; za>#I)o>!EwZi_2{uBm6?qeyD3`QwUDQ-rtY;BwW$P6Hoyj%`*-(M)il^;+V27CjS> zp>z5r476O0kh4WMmb00=aU-tiI3fi)FAvcR!AT}ftC7S9L-_D9N(PN|Zv@@l2)nzC zYQoTZTi3RMe{#frz;-_N8h-o0i;~|ZxjdDYR%5_>iKC0;8pMeeR-SMf@ew!6b>c~< zZQTbEpV^Mop0DB86Bpo-d-fB12XNJum*J9kU0@bgm+^7^R`UQ!g0arE?P#BHVA=$( z$yif~scQZvu1@7|)4?RsTRAf|PGi%!%t??aQ{7gc1oAR{n|%{@hZV_@XOLWTQ%<1> zAjv3Aiku7>kb$2mJ^LfZ!2(oLtL1M%*Q6=~DS3+{quR?=Z7 zOiIMfH3^mLb2V+H1hksISqHuY>-yV~m^%ivUAwZvlPL=ty$hz|dV(*C4Hof)-LCKC zomm&4(!zde7ns#(Y!^}7Qd8Y)-!BB&zdly*21Gw-lb8p zQjThRRRSj^V4)~STZZn$yt9+EdX|3_LZk+3@pQo(9xf|+1xWj3clSr(O!##Hm2#Q8 zv2bFJIyj@s{xQ`0NK$eZTvivLKxV}Um4PKascZOdj5n8$-=uu|{>~fE!|SA}G(I?< zZxv-#&PA&F3@W))M9`2-+o*R9^t`%l@`E+CrkcD8q~}VI>4k2gfEgACMn^}bA9>X_ zJaC`ij|6zatJ+j?;#t_dtw;|10?D-> zQtTwx$G^4)25%3%(ci8(R}KkB+HREk z$C^q*&FUQnX7(+Yxf|yXcsIZ|e-KkTnAx$GQVppsmNV(GvLQaIg~&npW%5y2TYDme zxw;*NR96;d8#|hC&JE|`Wioxc;Zv2Vjg@&JBv7fg1LL7d%#wd3Ibtv=5nWh4Z=sd= zAZa%VN)fOQ*re4#wSzdegI{fQ)fE@x%U}FA0+wvJ?%eva>pnZ`X8%f~bMnKaYqtc^ zS+7o;RBPw`@erIfE*w8FgywAl1cR&Z{?RJ4YJPnsz)oVTz>&T(t)$u(K*u!awhEoI z9{(wbH}q{iHhyA$wk zLI*hppK3h6;NG#8QVq%*P+}qQ%0{8K&V_zdSHY`>cUHEL z47fUw3J#*)QaIXfV0Us>T?nY8#@vk=h&o&0AmBoY66sD_lrp8ISA>=l105!Co_7j4 zn-4Xei^F#FP2f(%G@sTwo2QEzZ}PfBa1oWMpJae&?r>`TP1(MhFD=Mc#(&%|LhpPIh3XabjI$Rx7@_ z-tkA^iH;DM^x>>v5(^^W?gZwK!{b=G@yk^}3@YX0Q%Q}vn~+J008<-j1Zp~vaCDI>aO;Yi8LZ3-NUbPQ{s~I5Qrk0r zhcPg&*O-E}l=LJXFRKkyqG!8Gb$#!yUn!j`n{>H%u#w-dLNw}42PpAXj&Z~=@@L|X zuR=ZV65r;mnX`51yO^juog8qhR~HPC8CN1iYONIM%@;mi;$G;}ycSSNt+^X>R_A{U zEz_@}Yec`7T_tEKm3n2vHuD-%jpr=8dDySgCTC%e>Xucg@qoc3Ilo65t5KER+vLIA zDg~61A*F*Quz)>TG4kk+~yo3B>WDif{h?y^Z!m8ufRCIQ)d%J0+fd_$8 z{!+HM+59GPa2TbZYzIo1s28YIYjx_@iw>Jx((G633P87p6)GA$K8kp}GT&d);)se! z#R{U4P3CVcYw~Jc#7VErl%wJh-vq8^xT2(~RHdRxpf)ssO~XIOK+83l^lj7JF8lJa z(CWT7azb-ivldVbDycDdYb1YE8~VRa5#A2tVBaSZajbOen=HW0GZ38z|H{?;ZG=n! z^@#YE@4aM+O(W&*UQwJ^aTr)CCWXiWV==)b?whl|2L8#_siBl4GdJNMNo?h=w^~Qs zqO6@vw^u#2T}^(JehZt2R;h#it6m&h1>kM)V)J=tYAvQ~{k#($m$B zkAF~|g^i&M8C1F2?_#dz^#GDY8|DO*XmD?FwV@_fHF*;k%IIyY{|&62d=dxN+(!P8 zNJTXdnv2tQ^Yjp)G@M6i^A<@5m1=EXyu-I0y)`|kak$|kgr9%esAcjg2}p9rXK`fR zCvc+Uy@=cEq#~Jq!jg%?Vj(e@RIb1hgGmRYGbI6)Ec5%3s!_i0i)jMKVA3!-;4YSC zlDKz0%^vut{Niv`ZS6c6CI3j-i0=Wdt8W%6v+Bvc1__GdV`+USF#7na7e_V$r29__ zOb77FFMo@jkH40!NYT#SwX?HeP)UG3T7e%mlP4|UZ57B+f7=vlrjxBDHPDiDj6?H|)USb)Q<1E#O@bU*G`zwWqB(S7?F&mRNI&fiE>0RE4&w zM|lA%6)q+`CW?4@^fEmVy&cHKvFu73@R}d0-h|~=ic;c3)*Ku zHcFAX3L)0O*CGeemKYC4`rj*p?cv#p|B5-dJjW)N@=9!v))xk!tn&+R~J=1qht zG;@`VmB5D4dl0kvaG>J@1vlg;KT4_42^_ExFQRF zzG5_43Xz6OoMh<@9+lE3nl8X_`@0pp;`ePr{oI~qfD-#+NH*5X&sEHsdy?v1DyGBHCYYGW2v{TS`8%@C~GOjEDKTI z^bl|rOiGs`tsPPXJrKZMC3y)5|4AW#2s5Kous58E`S^OEg4{r)gFgIxh}BU6D2WI& z;y7JWoL?@T^CT(iqL$}POWt%IR^z_jli*Al+U)i!pp+?;GCLOch~?0iVc&2&Vh4Tz zobgS?UMM}siUkZfkq?N%pi&?aHH~=}zsE`i$Qre%TF9mD>1snq8%2t*ASxFvPJRcN z4p2IMJG3v+eFmWtuj<3GT7?KX_nXV=V7%Xz@HMp~JuwO8__ z!9u`MpY%(Yi-Y{{)Px4nGkhpO+HQHyg1*?gsl0a(aEjX-kB*|Z1 zvO{?x)eK;gpB63iB`G3tWF~J=iOmCrmS(;@q?cn*J`&7dODT}dUjcx9OBJHAmEI4% z_8pGOnSVM+3BaiLu3qxydSa1zX;Gl0qr1#d>rLdyZBt`Ak|WP!r~52D`&+FmO#+_C zs01c)6gR!VB(8p*d}XA9$H~M>-%ylktebW>=4ixR-FD3RHe=pHtI7oso2O}s8mG1? z0V)Z{-5eQ?f9y=1f1ExWnUnU_)@fuu29*xdhg&W2AVEuhQLlx}-I5Jwi$m30y`sOJ zAb&}v)J#h6u(#0%|0<32#&Qt8l#(=o%A^1}8P!7Nva+P5PX*$x^e-uJW*v($qW1i}WV7ju!3N2RxhHri zy$NYw_&!>3LWcwaED0b<085?1%)yOti?o)=0C zCe09tXBMhytijwW29)?Zu$Gb>X;tx7J9(CCtMbywYD`FJxk2~f#wA<4}wGc~*!F$qp@m(AX)RK60h&b$nVw~1Wj-HT-RZCN{F z2LDM~zvXfr%4e*}^{{DBx)XD`y0xa|3&`>!Y@xEyD*~R@KFj4FpPZIUF1xgH0+WPr z9ZnzQN6sRLLECh*8=g4xZ|%gBXzM%|$phcU;m(^;@2Xn_nhauN)m7U${Q}x&UXh${ zhwY7q^q)Zri>Hesy;UZllqfI?Tc*$h^&X9p!pneheG67Jx|J|VU(*{Euez{ma=Ip zRiDvZ5??xRw6(rD0=IHerV4Y`4}CHM_M2pxdkgl#JCUs4maBTj^Z9BiF_;u) zpFAcbZ*%RccFe7GIg$j1Fu*h$2_a6-rISexP^(OZPM(!(F4HrTxCl@($vefYQsjH= zl?PukC78rAdwaMRBLR-Mrk!lI;%cD?P>Hpb5=o18hN~rtDuF7fR8(>6)|hqTF*uqx zA$jBnh<4p3`BPD{Qt9jPEJiQpoGl17q~ z)U)YlA)jB#p29#@)>7iAZ)zw+D^tT{=4M7PiTQUlI0#T$-5N^bIws>OiXIh5O46)Z zNDbKHDWEYju>h60eSW^!WGJ8KY%ny1{qrMI zH$2WdO-{1?I?XBAmr|*nb06+Mj^3V5*cDtB=y9EmtfSn)B$iE40VO4^hYdDDjKd?? z>)c2ztsJcL#65&6prrL?cF}}-M-IrV;UX7e zP|4=hM~f%y?w|;91B;q@a$RA7ClO8P8u?AG9ZpkvPL=W-ozBjX1F-;V6Xc*fItdHi zU%a)_) zt$O9MMK?Q`#4@nf*;l=W5^E!+Qmj%Vsntlg20Kc&QS=ZSMZ&96J`$(`O4+1VZ*zl< z#Os^u@y?sh$E&Z=0o{Ya$pi4ToRY0*(a$lc^rP21amD5-bola*E~J%l)?l#`pt}&F zTw7@?k4NYevGhc1D__lRyaaeM&DS`e>uWrB)fVI=U_J2*ININV_~9QRw)RgJv&1OC zi_>af0g%L^fyF$Pw!`DUof<(UA%lFtB?gjCM5f`VsBwaFExw9;Vp~gd>k*n=o1Kmh zj!0v#mgWZ3kS3BGJ@x#n`1l8Jk~?Mkv`PSzSja^Ml-yQ%e=s)skfeg6n5sWd@xrtD zjahuUC^BiH6ZN4Z=$?EAM_aGMysNWloN-&J;2`Q8l|S*~sA%j^zEIOJzjq^i^9Qp6 zN_+u}H5fLNc9J7Dg|^{eAWZKFx3h!7LR0i3XERcDTaj=yW6oBOJ*174jd-G#lne8E z(g}ICvTDzD+Pzt|lo(9vpBqwJUCHuAQZaZNyqKMsMSaUc2=9_HQ$WKE3RyEk)OXON z-Dg|S{*VSr_7f7L`BN2i;Hyv^vfJgy?MAfD zezL09)(FWOQ>V-S3caj;7qQ8sNV(dVHNxPL)4ec;h{P?3kv9zU>Rv8mJ@11;Kqb*= zE^vwc?XgDdiLm+z$fEAdEiZ<$meL5-SqS+EJk*l{^C8^-@Uyu7$_vrhP>adwS&WTM zVMAXRHg8;ufuT`6_Vi1z*=+dO@4Z`U+T$tSdrHr~>J28vA`2#+{4N!)7m78`(f2OM zA>}}VQ0vrkN5fX~XJVy+KImM+ChvqYP6N>@n3O}fX{Xy}Uqh>Z7xu5Y9dWBXnwyqg z*IkbEmJ0Nvrig8LY=+1@6Zf(D(6rFluA3L;K^zt zzNF=%_h7D&i?znxusBKR?d?Z z@=If@X+uo~`%x0YXP}ccl?tIGY3^Ba_;o1OGvKi2AMvaZ8KjqG^S=%KUzbci4zK&v zBACQ^#0n6r7V|#;)KaGN#FVF(d?@w95*brl#qxaQugNlhXfcgH%$YP5nJo*=q;$Sr z4Q|X4pj6J3j4zl#avvB>I+HcqR1gDE>~Nb`zFbacUSJaYLa0)v1X#b4uSwB|91Z&*Ie?%a{l8aHv_%&T3`O| z5`E)$tApH?)L;fK6gEy4b(X`H$C`RNs%AM3%pK1PCJDJ{ZI{PK`39E}ZTc*Q>!!T? z`X0;$7VeQ-Zn_+OJsqNYRa*yXl9wCl^={?+BOOeVlS3k*ey$`}UQJrzcY&H#GV(B} zWJ_8lr^YtYOae{B65&Y--@TF@o~*BC?IatSpx8-9_CyE{X&a>dAnk`>PX=K-xo;&u zGfZ<7A@5Mf?`BB6c!%s{Ivfqc+q4ZndI5%aJM=ReyApcC3$Ph(^8-_JZ#&fi_oOEQEvU$nb_dH^o{!)oejLeTKo-^wSXM+p= z$?^r1mV6*BfJqxkqfIpt?%{MeVXgW~QY|vo8B6GtJDz1xD%~_gbzcm~m}&O5rlt`! z2?rj2@=%Z{I9E_%bNShj;h&5k!V_29=8~ea;J~#ts5SSVM`!UK#X>A3`q`>RxhIi~GjMtu#cBXQ786>SCwcdOw zaMF*G9H3Mz?Ih;C(0=6G|5`si0~1eUs_|?LcigC|8ZFvM=@l}l)t;bPTZ>vHWb zHgzjUvei?hx1sW#sHJNsF_=`V!M@)@KvJ5eoaW2Nlc7>f!Zb5lOI}rxcVr zx!@w#HV??y?*N-pm6}fRbxL@CmwPEtz#sp??P+Yyk^hJg_Ut``!!tt&)LnvPG=$OJ zcf(cNiH5!l7eS`bR6l`F$KY;Qn^xYK-Aqu4p8-A1+~l|xZB#)eIqB$=Rw`{vzP43R zNuO(|cP$nQh~iAqLRokWF>m>e?~Cb(`XDWOs@0BGbDeVe>f}0je5=*$jmv3?R?PX+ z$w$DMR+^n77dTG4VU^)#`|Y^Si^ zWY(tfn6-}@V-(KS<3W=BD`ZeHC(;>B7v->p{2aBDzaw^JeYo@eh!J2^2{fCsqm2M1 zU%sY9Whw*)N%N(EcQbm1e~!tfOO{np3Q(0nC626E46=|0UiXQgQ&TDQ_kA2mQlTye zrLW?o>b8+z71DM}lKD&B7Q|bxqR4N#9a3A!VK|&i6Tf2cU5qx|Wb!sVIZ%wIV&C|q z002M$Nkl|lb0I<-u!F9R7BERyW~!AfmjEM5k`JZgt3NVeluOg07^`>7 z1tNdclLjQo=Ky-U*GNA;|Ilt;gt8&teIsV4hSAuTBJH{;cD?=>`A~=vezzRtR;p8v zbO9=zv;G8Po=Kc_(jl)Nbt}~&0S}U+?u7*arF_+N?Gj+w@~>1>1(ixA`Rwi52fhjW z##<3R@FT=escI)>lNK*}vI&}+U>@1(;d2M0v#Pa-@@Z4822>`W9PC8vIO|bzsC|qa zYu|k16%wFiw-^I3gZ7ue6eV9!BO83!D6S;1?v-Ub5?nk2~e}F|dW{Ox512Oqh zoMdK|(P$|JsLIct(`7uc(>U{6G)=!s&d4vtT`D{r;sRWv|YC}~Uy?STFb-I3Q z`Zt!NxyGd5sePy7k=;8mH(k64uiQTdm7X}%gtZ$E;;e@CoMbq$BWJ84|15?J)I<$b zK_wGi3}VF+JOYh*}mqo^JH?YuB3bcd)7+I2J9$Fv52}!?YbZIE041%fG-mBLn|-vulJ9UiO zA^KDi+YVtgM+0M8^%wqPOYEd$H=W5)hss-&d7L9O=zZk>2WCa-05@s{ffYb>=OxrWNqj>CrN6>NBCyLG%gG#@8 zixvvocA~8=g`0aWFqDU?mXf~Wgjnml)fFn^Tp~KGWVRLyAV7=7+5C3q>$@mZM1C@p8zCU65GUDOXFg_c zTuzOa63a%5W>S>=>VEjv8z|sO$sq^sqA5rKI$D`wFet{#H#FAFhq#>F;){6SGha6Q z(sh!{tJJP33>Oc@oUnL%ur7S4V!$Mh&bD^qacmv>E}|3-YIpa?Fw$_o(sih)^Z+?J z#{6+O$n3-wpRTCBW$R3R=m`14>d0HW&QE@nd}(3m*^iN{1ZF$g`pD;4doUZ|Bv-yB zbPOB%zfOKsQj%6usHRUYTY05Lr;u_iMWWjoo><0zh#cmXE4k|37#$fiE&K6UTrzR9 zSS(;5iA^+14JHX;aVYvK0IEP$zsX3z+3I_Dj1z7*S!KZdsYPIxKG(mX{}DpztOg6Nuh2HwaBMoIhXSPMD$U1b!vx)F)Y z!QHxn0Fo1k_*RE{W3&HljMbfqe0>nboXv2={LAhZtBo++A zZ`|(>-*hAX_0iHkyZ*tek!X7vcSl}Cv#TDLwrw%Q431Y-v-x+>av!YbyaJFhs|<2! zDy4&A+!xL-t;$COd9Ui5RTjnK%R2cC4R!jE?Ef*MUAGmh*^;%x;|V$9u?CY;M6>`c zw&vsdARj+Ta{Q&IbvW_|9au|A4%AW$CUIbt@rh}?_qvPIS*q^qBmwbWGh2jHQvgc- znqEwvcnGbheFQyw?#8~ZJ9H9z@v3oAl&CH;ZL6V>n!}Cf<7n&k#cSMzEzOfzl$#>G zc_-f_Q@_$WTrQS)YRLalz}+J?XHQY&9gB9A#00Gj*ht+qK`(SB)=~-~-SMiFT=IXc zrBs9L6I(}Y8f%AsjH!mRG2C%u$$2)40sipHeSD2-uNd{VzoQF{n_4jX`f=R<<$KV3 zdLOo4csiQ97W{h^gNMvESSyLiN)bUANMbT0n8bYX#5R>AJN1)%a+)5*VA7jI>P?9| z>&^1+Ab)z2hLS0iq7^SirJ22PN4FEOsO6qf6i%KeSW_uDb}pH}y^KlB;O;?VfTgP0 zTb>svqgXm1lX1#4hf1K55*U^~0b_8fO4=mg9DfAX(>{*yz8@mhQ@-PQ9;f+p1kX8x zG?8+FLQ1}d@^OaEn(by=jO1|@_fd>%g~M^RKB9QR??bm-r|l+NMY)yUQ(8p8b(qa} zpeX<)7UDriFIpl~*l3@}J}pu$ao(Efm;@xb2m~0SNKvz%4JGEt9L>)qZD=7gMsMU% zb1-Bu7ryXugh<0k&?NcS@j1PkomX4PA${uPDu}3yonW)pli7%QV&3G)85u**iJ#+m z=S>K+38cx0Kj8cmD^6P2TPPbt1C<{n%_Q;B&8#C_=H@fbdKY>wTaPst^kVF_<9O`O zN72^PhST4*9qsGdGrMcpF+1Mo6)y&otd=D}!mMDD5ClgT z0W5L-ZSGpMI_uHuUeKn>*O9l`2H1MYu9$V`G0`a&zjB~bE-$!!Ou63gJVsL!DUHVzxxggR9XVe^`S?-VMA}dX zqcggLN^1Kd`jfe3EiC@!ORgeBiq4m}N-4*SC=Lp8s>RQdk$pD}pfuEc1>(nl3SY|( zwEEw`cIqUPn5A-0KE11hm?{Gp7G z{ssb!l)$8-cEsSuY%Uu*FIX%67+Bi#{98o@lq3)-BVeT2!6d#Ul9>gWz6o1-9uTV~ z29b82)I<{6CGB-dwAU?YX_XzAv>*`rzXS-Xl|`}hRhrq`d#<}2KYs8fp!IYzIm~#F ziY#2Asl=cX6Z=;Z+r1c)_QgLokJAb?}!t){u!ajOeM zp%B)cdO7-be#O*)Qv1xyXbHTHellwdk`v}Ct(3q*q_;sr`%^1VR$z*ce18qJT)V7i z?6^8W4th0#N>cdql@m{P&K=32s=KW5A{^K)EBW+LG{er(M=;QR2jY(WS2v2lzSM*o zP>ENzGJzvUY>L1#c{}@J@m`8{TDEoI^=Dr|I2b0AR(b6-qxsT0@H3j9Z1wX;KAQHS z7lUT@_aY{5as%c^_INNlw*@S4mPny6JIy8tkmZ0 zoJlhX@Y|&9$+E@Z5MOt#yz_fkDqHofBr8`=v=9C_>|GZl(f>|-!y;{GkCc6Y|{F94!v#% zUS-ptj0vlaj%!Kdqot-1Zh9Hb&|qUCG=p&3fL*Sm4yywjXzu@M%(r|_W6?RZ5tGnnMgFn6ot>p^1De^}o@N(=Irz=$w}mm?S40X(g4MQ>U*cIp~{awYwnaAE_)& z+vGaVY3#d1gO-+3HCof9!4^$8wNRy*y|Hulzr1D+PmRBY{Y_hN@Ha2RRoelJO}#%Z zE%M8jmqDeO!ym|&WyLvRD#s_}w3;@1+HhgRx)tTB3F;+a#6(AZ>xJdaHvj_nS!gS< zhD$oJc1$|43A50CNl&ljeMe{yX*OPmsJ)BOrR8SVh4fo|^9rdWv+Q7KN&=HOT`QQR z#&1$)dweXXrIe4^8`mYqHhTC}@|EDd&V3Mc){axfuBo@|>nR2oKK(yFyU6D$r)xy>Zkt%z$Uf~JmvE)DOU;Ek9-aGwKpJs z>|w;$eM*;Z2mp`etS8NpkEH$cBY9WJ(b@7P)>0D0&Z`-mDumeVj)AH|$XDXI!r9wT zDTMvvl_fwa5{==JN1wok_3Lrr1?OXQbPVsirl*zGrViDk(@cF4{_Gluf?%FNAVY*`U}j>Qn>DuR99bzZ~x@m$v#4)b zuB8IIA*9z`?~!zt%#f9~bjuS773`+3*S&Sl+Y)3)okhL@#P!~whRDUnld zmY-H<&8$I|jN7FNW<|*VWGB{p+b|OgAmJLvcF)3C<~yOQaPSQZ3+`#9Z&YCu8KYz+ znaYiyqgXvJ1q@}Jy?o;Yc68>yn3Yjo-iJxjhPT)pWbLW%Bsy<~ss;0w0KZ3)347(6 zR>u5rCWnD&FJd0$#Zs+;wA=MDaZ7KP!KA%`6X{8s_wzAR6OAzVlcGN+wNcPSS*5LT zhMnnZK`DP`dZ7-vGwaiGJUlXi`g$KcHRWTa!2P@K+N*HdX`7|4?%TH?_ulsa{`#-} z91q<0B-Z!!Vaq8!uoIZ{Th4gU;XJ{;(Oot9{%^|{x{aubt6dvo~DW6 zaBv)_HEw`~o^zYchQkww7v;y3;R`#@l#Y)Dh9#4^&Gmg!B%x8V!96rHAf5A)U!1;) zN64Skb{wt0VX=I5N1X%$u_&6n-SEyH#B?5jQe4J<)oc!`UGZ5Y$p4ob%Ew7}dc9`o zd#0&d0|7}5q@i`V_mk!!g|IFbL#mr}iENN?QSf~SA- zBu&&E^pT~>lA9){4h!rxc8nbx!>0Fb!5jC#j$|x>(=Oan5X-#kw~2hDn2A^e;w{pM z81v_+HF*13G*~CP?aW~~T}$S&Y?@TDBmqjL8FDOW7HBhji;@333z@C5in`vbilw~9 zXEm&s2BE^=&<#82p4)LTu{1*fCxwdMbr%|XFD!|VrBcd8@3vF%C=z5Q#efo%qqe;Y zD(Nlc64b}<5~tgaN_Ob&I7-?{>uyHu@LhOM-%3eO|K>H^aMeYCIoBo>MH7ug5DJCy`fG3Cja_fy)(_k) z<^AE0eoA1|)!26WW*P_B@vZ;*9)U?dbar;&pa10x*tBs2&OiTL{QW=v3l1DOgg^i6 zpW?OGcj1;>KZM(Fy9Gh=4SnS`@4+iCJ&Ohc+ER&_A`eANj{wURH+fYLbiu{3#2XJ>Bqye=T!1caoC- zAv0+yH4&IHk;U9Cy_ZV;NzapOztnxt)EKJ^?8Wi6_vB)`;?5uMd>_^f--D*Pofzu) z9aBfMGeY=1m##->EI`f+<4A-kx(aRMp%`L;D7r7~gQuew8{fYLZ{PnG60|CF`X$@* zV#91;k}#!t@?aAUE(l0dp}m|rfN1kY!S!_bBIu;3ZBBOugGh^4omG^$p9@+si^)aY z(W<4ytcgLJFx4m`yM{K!&!ix}4+XJS&#TtUF|_ANv^QUc*+i>2Rd(AkKP~i>NJA+e zoLU5ugy3T2kAqjZt)3>4RNa=T1jPHmEWS(h6r&|{3=SJbOPkw^Nd1L+RxJV9sieG? zlH>y^GPBrTEiK3is-;CGL3NHLq~bVPK@YV z0cz#HRQcJ=P0(qlo`Rd+bDcPpwwXTF#L2sU^j$PIHlVw!3-{c6zXT}RtyX;Pt6z|` zo;cqw0;qoV&|~=E9k(K(6QIQJ9d+z}r$#tCz{++u4G|7SrTOh)ADnY-|jx|d*434?|atzeY=*ml4Vm8C5x0OD_EjQ zQKA^cG~{rYCg(f@V30G=IqW&rD4@`&uCD5?>aGU*%!jFT!?~xbtM2{pf6hgxZ5qev z*hhfU;jROM?Y3RLUDz(KY7@4f{`{wfZR&qjE@k$BG(CAX&K~lz?HjtE!Z^hMDh1x2 zHA_}IV+r~Q5PQcL&;G&Z*h9{QW1fqZ8JIevL29N?;%M8W;$g-ux5pN@W)%;L8C&6~ zKInEvMP(9jEGwz28z*rPQzz_dkV(DxPhBEV$rHGM_MV?(s(cmt8}6FdXg9k!%#GFN zT`TqjtHX-&R^@lBr>-2G#8f)|EOku7VQjlS`R-QRcC&#=FQ2N#;l3oB=(AUkqs5oq z%}x5da|d~@ldRSz#hZ@4vCKGCgTNWo$ZS|jqADV=#Bo#>v#^WU7WTs2xr6?jCg3xQ zZ#?xD8aE|pYm2Gvhx@%4m~uj71Li|_W+O3}lun{_-AdnZTba*vY^4PCeM_R=0t_lK zdvURWN{+4{z`pKt2p{_{;%on2y+Kr_j8gcAr0Zbv`^n%oyX|-=cIBjGArtAo%A#{h zmW$h4P8BO;o~A{lvILO2%uGu5BXcfF z*8)rlD0SD~ifGTzP*J}Lb(8yHtyu;CR5D<0ZC!G9=gEJ063_hXnOS2z{p^ot_jB1P z4|U@Zx!sMqlYmt&Wi9o*Q|@M3>8*=so4L)vGl=4G%%=hrnyJJ0)*h#2C27W;|Fj6Z zzJ)E^rul)bmC9f+X_{Ox3MK67mI@|0Llh^+xwP4P0b*2g?5Nt2H?iv6x6#{pH~eKQ z3w4`JSFfwuLrkU1aP~ir5>qLLtM0y9m5yculUV6ZG}vycj8R-2H-SlWlMt#JBuTWG z+@~bXQrM+8B*z{spv#-6TsABvG4E0gTFmSvpR*fI=P<(ITG13mvmKaL=Z>ChgBVDP zad6ZOD-Lr#Ld*;Qm?=S}TQO(Wdb(%B-@`AH4I!p+!c%G5qHUFSYZf&k48>(}Czn{U9I zyLJoeF$ffiL=@fL6Y=?D++RKOYrOEnOZdr;e}LAuR($f2&&@P7`+lQnEB^hM5lmwJ zw2g$t78$&a604;<7=X3uR;(C*A5%o_>R8z!)Ouj=L1DXP+g3dM>4#9|tHQ|e2qH9C z$wh4OWFXW@_j0h?T}g7cz%&6$nC?b}JvZD^Zk04vE2n53_($VY?j6QpyI<<9rN8 zEf&$jMtSI#?eKU`FP5h3+76DB#Ec~VQv)W6mGhv0UEtybLYYO(I!G~#eU$WAEGxh{ zdw&M&iboI`zleD4jY>@}UCV<7rc^SNI-QjTXC|>Z_I!94$4*_ygJtxuVtSg!Vxc(p zy!$@6r@e@K@3~W`3b1G{@8AHkk1D zz~%IkofpnXXlV$8E~&yG2d_9*D5;w|LV!|sv0+4=8AxKlNCcPo*_H~oTdwWWG)C{w zkDC;qW#hO*0~oK`YIOBQQ+|+Gjn42~3;>TL20+m?!XQQM^d4XP&?fYD_hHvFuPfHl zX;Ri30}kMb-%64q4pX+C7vE5=% z8=34|5GzSbo1^|=L?`+&N-I^Bq_{0$%W>kg(5<(Qyafk^5{aMx8NyA)=i*vu`)RG8 zgKhIFZoCkT_@}iDPS0SHSy)vUyZX^sS43V5lJV9beCknb*|r1!=YRcM+;jJx_|zj0 z3$APrJ@^2|$H%exifi%IkA6Zx(ZWy<@f6_ibD#N?a4WZ8bpsy%&J*ZZ){b-M&l9s~ zK9fny{T9F^6U9y9zOc|YqH#C_>Mn{6m>YFOi#0T+9jMw4fB$z;-hMmkdVdQ~(-wU8 zOP|G4-+Kyw^`*bSZFk>>V@HnTt=HcYN_N<7xZ>(7@RJ|@1W$bX30$-D8a(~|r_(luDHy?+ivJtPp_DVrIxEUwh1WD8EilW%6~FI~O;GSpNTPn^L71uUs7bKuO$WQ=C%GZZG)X~^%#%H_@Y z&9DC*e%dc9D-)6=W`HQp$8qsu;UMn4`xboUzPk_&PSJuEUOfBEPZ0=)g%#n%a-(69 z>>{2~zco{=HU^XA;z^noP+~Kmj<~S3tR1U@zr((v6L{<|9)rzh!|#6mJN)1OJsB)+ z&AQe23a#{311qF?3t@e_c^1J4t%W#@vD*gW7Ucs%8+%{W? zSzX;&!4f-Z_BLtX;de2`A%HMDXAUMXvy?JX$N8Qw7B@F>c2ft$C0#OR4n2r@Qn6y7Qq*!7m8<-JH;s$lJCC6ckjWg3l0)|5VQGox_ zNSHjN!hvz>1X8jw_CS!w2ZEFHv4#kNM^1Mo!hXt|qi|m(+i!P{Rcp#_>XG5ax?8ci z=XYpa^-)}Q=6~TJ{&zh3r;p-G|LIE@ryE=Dt$^KT$3S2N?+qM8rK190`^T?=UEXTE z)${<&_$$U3hm7Ok@%>0dCNOmJ|3kd-E`0k(Phg7tCM(M4Vk2}<_aPz7sA{rfDRCML zgyM7$oHg(z&R~+LaY14kr2~7`_52uH>)Te*7R#H$RX$p{5l4oSJ07MPQN`H>thnX#!!R1SWmC1SVy;pHX`y zeRtxpN2d|Bm%~kNZzVu!q0u@Y*no5YaRTQKp2dpID}@ARb#-IqO6;VC_fYj2a(9c< zY^>G092nUH)Zd~yt5FHnvXmCX06SY&lGOH_*003*Gricpu@?AJS)PT|y#Uy!q_yl(Ly@~d9pN0GQ|H7Nok09!(6;_Q&_{rsn1Afj3yF@X# z)aq(N1(M4JzATgdG03v(eMrj?T{iFprwh_Cd zxi|<}bP^GVS6C&CK?-)`N{tJ2dH46Ru5BCrc%tY%@o%zbw9>t@39&flF59dL_$rs7 zZo{Lf4Gto9>4zAg*jU{Z+i0-vwpma_Wc%m=FgatBq(B^Dn;vtMb8Rux9^X3~fg;Ph zeu$Ck?d0Z0EU=QOvcQn^*ChE4- zwk39w)EZgr+i2CG1TCV_d^@bizlXR903~ikCYBO+kKHGo)DzH8;^bywrC1atDOn(&7O;@lMj}9y>7LenRx4WkZp7sc-7*(!L%8OLE`Ox8B){S9g6NwBwfR zx8u5NuUOC~X*mlnYCK`KeurHlHms=uCANE4?X7r~(DUoh{T%gM{t~wz{wCh2x`S3? zTOoT}Dy+0jwYy`%HT(22xGwz!Jsp2WK99Y^^%97*z)U%vU>7Ne-7)JX#f90KB^I7U z%r+N)gx#oY6i-EDEA8m{4z1#M2NDx!uy14tCtCj`tsYgbg&>Y6a1Ko;o($$#@GK}ytV61;rb2N zZo%JtjNX?k{tFrj`93xSD9y`UI>^}q>{jNWe^Rki?2JToirjyiq^AY8Ql%BRqU$@T zU-Jnh`d-DJU>VN0d~#koH3tlMoLlxK@X)k!;sBZse-G`}2wV+Uprd{#+WX%?sO#(K zio4KPb2BEr8-)6~Y$?FRAQQ)6V&Q<;ELNLU*cXraTy3xm7iwVcvswQC9Wp^S(%Vq~C zPMRoM-22L#D-oFR!!jL)w=BP(q9m9=zjJb#mVO{pXQcF;X%cO;B)8R9B6jg#;aKx1 zEN7lX;Qo7fi%Vzmj|`o`}4xbpIKC}vPeZUtD5qnLpPXJ$m`=#Vcu&;o4Z)YP@Xs;f4cWM=kmK-hB3_*gZ0a?wNsoDwq@_VBq=Z zpBGB~yTAK8eC;_4{^GCaVkKp$u5>v|3kaYC0Y#$ND99cnQ{?hC$57&HZUSYt_x}u4 zm;Es!r=G(5_VqYlf2Ei$>+MA47VzImDxqfdZL}WvCp5ckaJSxwHI?hpdFf?LUHmP& zEVbyXzZF6EGNCR8L-^0>RPG>piRl&~S}>?ma+`h>_l7NuQ0HP03{Jbs&V<|ZY`5MQX~*f`uGK6$v6m7 z&?yyg^0n7s`uq^Z)k*#iQ;N#@PymGJ1JA$_iM)<6{I))1bgs*jZMwbEw7eoX6~LaB2s(TH4KN?RG20thCXh8AG(Q{U`oj`P^LK>5B$X z;)VyD^?0TE3%Ksc_tDb%Ag&vFmx6IWi)i_JtggLz_EpZzq+k5v7jQU|Y?-fq^{aUJ z;fD!ON}A7WEyrX$Gu2&hV=smB7<{nBt%BQ|B@v;49Cf&eq2wTUw16jRfy&84*gp0$ zJe&TKmMHxeKB&A27Bh@=8{?ASvB06v5z)NVm@H!eig}?Rl2!y&-14&Z-N}y8G8WAVOd86mwi^ASh>AjKL=T+#^iHCfpnT0eD zKuVWba^5oo+K5}oU^pV^G~F?ZbEkWND;N5qONvyro60&$*Ez^k80Ql@5E;OyOy!iW zr&yrnV~FklW7svi0pQ7#!Nkdv=rp+?dm0cQJ58wZ!q~HUQb%(&Ntd{BVl0_IfVbY@ zml@sOHm+N#`5qQq1_q5eW|CaoB(W{2zi;t;u3PTknt`RH^qnXwK#6Zi%;LZst&ic# zQ{P2r$BnqUj#hIE^dd3(eZ&KUWN;e55hZYPk^?6vMY_*tDrgn3N%D&Z2;;hEb!95f(`*lo5LMV5*;8_0{CJuiCAJjiYK+|$T5stqUjVJ?33|Ps5 zGRiHn3IUS)aTn~7F*NqPg7)xvRC}9IyZR4NLqWq6mwtvYq5h#5fjhJ^ou44E0J%p7 z3B(N1U(nTnh`oveRR<7uHqb0P`7zIVfGJl`SJQz>oRQf)?0Od?%CsdV=y=A0bxKe_ zz88LKXLrqw^m{s+Q>hFpO%XU)L2X*fOr;@;+f_UA7Io4(bF!!2nPr(qdRLO6JP~YK zzIr*{`_=9Ysg*DDY-=Xwk#Y&8tNF4(%)5yu9LPO(>e%cAP`>I;ttZ!xA9wDU3a`|` zO06>=$K3I>+M={tZ4%7ZbCBw*nqwL_c*7+?Da{Q%L6c}h6zk+9ZKV^B>rZy&W_j!ES^SUj}ov{ zWWoWwz4ZGz6_&2Zm0cs4{Zt|MTgh`cmg+Evr)`i z+8S&D1{4_hso_{vZV#fpFAIUWZQhlrs_djSxGOMxEo%t%EEOp>PK73^FTvx(VH zdNQ@7b)?&GnB0#eZGV*Ra#rX0Iatbo(s5F$#;h!*ROXa8 zh-Ft!9!%x}Hk~@tgikiL+KNBv7x>|60wR7{^lMgM8I={}wB_|LMHs$nVR z3Mz>e2i@&L;OX;p!bSe$!XJS~uFx@fBE#^+LnyPx;Idi>z;eJ&fr#yutKe|gqn!R~ z-2^-lkcse6GN2&=PY9l;Rg8uxxOWHv>bwWY{f{_R@Dr6d$#f#d6S18_js^;NE&uX$ z5p_CB44-^SD=l$9Om3rkOKLnVy~{6#@;EqmOXMQXTIUC)&xh`21(8zQ-nhIG$4_6t zHQP3(UQ%_;gXMG`bX5hE66MbV7FuTARtvjtJ*+36M!bN4QY@Ne@Z{3?c>}YQg7_NO zkqYjlB+JX8*b(HdIFRMv4KpINO2@KhJo(e#;7gxbiH3?0UOio>wTMNPUUYY3R?=<) zlTsy-NC;pOZ{>tpOsRlUf>(0Nvxsr#@?7nrs!n7F@^4>BM23)DntXvuA{cJ*U!s2c zwG{tJ#y4F~K@*;1z@~!w=3@XK}alw^LsXVpULas&vdI%s& zBW3_^-y@Kx`*+ z%cLN*i6DWPODCdS#TJ9GtuL;?p==bB|F~%qzE8 zKqRTsbsY^jdHQ13fD)G#Apq7%okDToEG@sZZ!QZYmVX}ci;u%r*@pNCxjWYED2Re0 zODEUL#etbvjtC@)gG%!9HU+38>L+fqZNHP;w64D5GGaL;&{|6jUXue#eN!$p5%6V{ zaBQR#^es(+K0+lID zNZc`>C0A_sfkB~UT%|Eh!MeqKW^OO**hIm|%@&B8Z8kA64KFd1vYik#i`|Q@@5uV{ zdxHBJ%vj2YWMZ){B0x#roPAZ-ATh8TzRDJq5evny02;`bP&%8f1*+^8B*sr*qCy!& zN-bXvONsLctB(=$o?Xg}mb%e*C~)^pv?^R1{ACN5f@c7Y18c|P5qQFbsG^zQ@~KP2 z#yS9Zcm(B$5a<+xhuBUI3WRKPRl#1qng$wms36d(j)5ndVM$D$##M*^7U$}2BiFeG z1c=QPwiy>FaT%@Z)?c;V5cB2RZI2rv1(BqU5?#)OZOYifNU({6bGt1GIB5}pFf9gP zgt&<%=W}~C2hTP_mu$-9ft7>YmU9(eDThC>B{8`L%2$y$@f7Th6t8W9T!{+=DCuP- z?$B{8B_5#3b?n6JX6vx#!qD2hap5;mFMH};&cE$z#x0#g*wQ>do{=8)B*-<518vKK zNhvOFO7(HPrL`%&@j?XVR?@L_ExiRq@L26{N_0U@Um}6f&Wil3{+8g-4t*3dq+Lm! zqPWJu%W866>m`7fWojmlT&nWYm`3dCX0$MaDi@bLZWFi7EYj68fIS}^#>4mDg33zc zz$A{3$&-b}Bx-)!dbUUHJ4eqt)0JhOCp4XgIi6<#X>|A!YC0c6)A_e?w&DI9ODttq zV*zJu0%c{jNKBl>WaWKovdpGomQn!0*<+<029;vrm=FM3DP3;Y;&4#VKL(T1$y{LV z7-G&cVjGd0Te`$_o`ZwC!vke^<6em?B>~5J|0aN?=n{d0oyx%}LLC zbW9$=sVaS$7{$m&lDjA4gX37WYK7b-P3QPS&I5WgxEN_td36$j`wpJJZ5s!=KGNkP>EUU2=pUC?)i&B1W?IkJV>O~ zR;-s4$kLMkRCr8aUunr>RN7IBclqjDAK-zzX+p?A;pd;-vmF*~Qj zxE94SxkWE}K#7fYF;R|MS`A=XN!v6rG!E}InV(l_o^<`|#4yqZBV{@Y)+4LA4i!s_Y(Fq|*0u-BxSWSL*pQF|10=ur7=eBDfwLI&tki7I#RwuvjW9kmfrdtX z03|NB+ ziRF>Ydku@BBn_UOx{8}tlcdH`D#S`}T6JD3>G_+Yw)d_1!R<=-N7z|b?~tkT=OKrQ96D5eOIBo=W#6C`c-V+|8=|}0hH3^;qyUfjqrz* z)!J-C%XU-ju(HqqY6zez8+jAfL&Nkr667{y zp_q}xPhOxhyX32p)Hq5~uu4t-T+(C;wwg=X#hzCW@HJN(7zQc@x&T_OIPM>WMOdh$ z1SsWtuhQkuHI5RO+gD&f>B#Z3*m32ibWPOlyxb%VpVONqsGGu)f}}v086mRpd|q)aeKQWR;>4JM*F$nmjETn17Or{Ejhj>#+hN$DO6#kOBz>T%^{YM zk`3y3Ww+{Um6Bw<#*8a&zgjs^b0^wPKZ)k1%h5Wr3q3X0tIfI~UCd&~w7XUKlU`hV z>E95s8yD0`$8 z;{&6ptg8|_N<4$7SKvwh=*FY=*(K7=*!HEWlO;Ba#PmfZD%UP*6NrOAGd5E1xC@gM z*mv;gchR)vFHI9m$w+3Bcu(U5Cb3v7R`Jw=t<_2~mEshqCPlQwSW3yN`(dWo7`j(j zL! zalQIV$~Dei9U30Pj;l7$oiJ#RpL01-MtJ^-sbuzeN^)SBUZyGpD@m%m+1JR4Ze*QmqXhA(!K!};2_fFw2B!A1*q6tBo%rrk|R zT94NDuuI#qq1UjnZ49u-D&eG{+!0%u^t2)SeD7^>D=q78EKSxB z6 zqam!MSW12h#bO5OY(GoPr1T(9UUg*B(n36GfeO4*+)kIV@g^5kI&&hED?_?`i~YRO z>?AdDl%zK1_ld4djX*cWI=zC>s--n9>Wc|5qxcGSvsTf<(wWVqa>r@c|ASaPwg=;t>s4xyJ{dD~w93)eM-V#u zQ&cXy6P^9P)S5kG`iLzFC}m8jQ-W-4kgjT}D_OcUW?Y>8kJ*C7rTI1N*&rGI+rP%2Ae0ck*P9>^3( z^aNDWH6cN>$z~P305$GBpQKoJp4u|loD1E(3ekR-X967!gL$bsq2k-F#9m5OlH(|e zVzDi*2^g_m#k4h&oy2yKey~)owEzG>07*naRFBl!g@1ESca_@Yis>vA4gs_{Ok#$u zZnG~=j=_b{IF1EJ1a{9Ze;-cKs?F>^mT#GgYaa`w(@_MLn6bqBM#>2F(*}kqjETXb z29V)+O8opA0^HEVNG>8yOy*KXYF_T2@}C}nS8CaMA1@g|i4E5q3d7QH9a<;%>utwU zc@hg$`6(bbxigGL=D*~aslqFnaqwv+iBqg0EyAn2saaV~OPQRuX7odhRPWT9ZC-kI zcgxh?c^PI7H~{zlI0q_@VT)}7j@VpBQ!c&Ma{@ytGNCnF*6G;>eE;jl4 z3Wo=E^dVg8Ad=MH+wZ;#0~ZHycK;dSwAe|KrpaZWJM8>1Rx2XN#I6V>F~9<1KyHoi zc)c~z3s6zgi`fT@S;T?u*qfIYb2D>p8#D6cB;9$rv__vZVsK`(&PJDS=0P0aFCJLu zB0TuDFn}2uL&BAeg~kjJvpx&V>|yYP{}>QTfoiL2Bx#}I zw?}VaDc5f{v)%O)?u+syXEva-UOJ?flc`_4qyVKZ&uWV6a|G=U{ZQgmgO`qhh6v3L zx~egdSoq^&V1b!RN+64a*hVgLkFu+Xi&WtxwAuhyDi_V%#O&pW(~4-hNL0lPX1emv zG=2=@7hi^J)g##0`}1_kvO3T4lU%X<0ZOc-9xSC|WGA_)lg1!Y4Y88E4&z-6vw9#3 zm5Ih$SKfOSKKSi>2>O$8#>5U%p;Y2}bM06ZQg<`gEd=EDcG8S^Wx>=GK|`YzFjGfR z+E%^VKil~aB`1LVgWC;_pHx{*0fbdZC{T&Fj;>RYQlBKlDke&-)`eYdIY5a6bLU$e z)Q2j`d<*bzBwxSZOoO!fn#~>Q0{+kfEr|fJlss*-1?xE|o-H(o9R^}V07(Rm7+m5% z@jQbm?^8QoA3r+_ATfw^F*Kj?EKX{(yO@{$@+qfvW?!f3&bH}|%mHSp*K1i0M=Y9>7-NANdQT@Nj-_3ap1~w$Dy3s9G26&ZNN+iHbgF0&&Y%(h zF%yYFCh?EY8Np0qtJIF}#!yW%{*y6QQdjCe*JX&0?87>56{`Ga)n!tVDrBpIBbr}8 zNe`CNXehrrt1xB8Bpyi|pNxr@V1m{)ZCH8vD!ljHp4rwH8dS>HU}CnxOJv7F@%2Ch z@InGgM!T^{Z)LWfQ)wAy+?UP_KXBWv2v4k}zg32*>TdZhyp4Oo?rdr#6sW?1-U>BI zb4rt-0f;J*@dmWm7k0lnj#9ov9E@2@-=_s8&*wWL(;#hua*`9df=i;>da znq;!Qzwemt)yz&%=w7n60+oJ`ym)~Kx7CVj^NT$bTZs!`(1`z-iNqk2_-7QD#C2Ne z#T>Ec9)Qkj%k3xDTYVia_3nqY^E22y@)E12i$ok%a2Yt8kxt26<7fq=>Q~E4r$gzy z`7FS$ZxcfkIQjmGS>+g1I+ZfRID0V|w$kjo zRG6J4$57%lLn;_g(z3GI7r`XnmSnyK^kVSMFE#y9ra@ZzoV2=e4lZi8q1R!pUWfSD zalku&p^#jGDkYuOT$8er(xn&KM%<^=5>CNqbHis}=sl6H9zD(*%}x?^LE(MM+V=;7*0H?!hg(;(u*ObhyF$Y%0M;0m!Z@z&TX`7 zwB`nsf5G02M06UkyR9s+e!hs!&5!*yP7h#RmxV%m^hCKEQvT03QGa! zQ577jxfStqKS5i^&A9W@<7gPq-H$oO{`1i1W1!U*T0Z{LvWwB(jr9+d;_*mtW7_>I z@4Z@ZeVZDco2BoI1q%i$Da}-+HiA1LJgdF+vNib17e9@U-hE4IlF~6-plSoLS1HC` zBLA*ETz$R=i%}B-;JF4QPmSGj?Bp5L)2gm|i@oy9ydonp^Mxv~(&QPh%%%=hn(J;` z9qEA_H7<1X45RUYK?oiQl|sMW z_be!ZCUWVQ(mADm@!S_~iCCo1cQq0NyHVq9geRPzl|Yt=X@zF8E1{)w4aOtd1`G@= znMoK>qWK?Fs5Dx(279My*~o!CsJ-kl+~S(RwcX!Ad8pSE`e{`nmSsTRVhzTv)jmr# zedCHoY}mOG@BMnt^^I-8ppuaRC)3$mX{Jh=M*x#3@b~cW$m~jS+`*Zcm;=V7>6i3= zKBjYG>yrfh>a9-t0{D6P2dJj(3m^7CaA+upASwaJF*e!_n{0@nhkIAZ7i04EM zxGkp;hse;%Mv^P1iWo}y5|L?@ull&2sXWDDtENERESLI*aQJxk;W)B+euat+{LhRN zK?XKgQ_)KOVsng`H8m%<#M7>3jE#5GYHvHxH2!XGg_UwIut06N4;D`|2IAV6yv>%m zvOo!4PMC+G#LYR`^auF0_dc9D_&th262gkDe~x>nU%~pGr*vs;J`2hAJ_qykq14+J zLA7x<^scxF%iDU}6*K@3;pp2(=V>p-RN@Y2KEb6-GgTs(#LE8i`PT)Vc|a1U<$-_v z^Jj(Q(ti>QxLXjX)pk(13K%~ixsadT!VDIZpi&{~W~=`8h#S4*$*!JKXHd-@u*Pp0d?f|#-Ngth;DC6?rxl4jH6_;Ywts)tDk{DW+j#4C8e`a@_fDl zXHgraS${E&(pD==$=368SlaJFjDlFB_PVr1=NnY2usYJ}qQ`|oxV!10x0W)Dj-!;S zOG{H7-rsu^AM7XBNsXcxz@5t^iJZ#(tuEB}TGWSEVKl4A*@n-VS7QS$c_C4T8h1UG zg}ZUiz+;fq?ZJpwRpenOE@=q5L*v^1NE&t zvDMRr)#tv8efE{;s=ZB9RdI_0Hj38}QxO9~Q^BRgMP~tC^@OD&t|4jbzV(N|BAZLCem?-JNoGcVf+E*rKMRCiNw5G z<1uqFF6Sv%;DZFcS1n!wltvE&HP_}%8@WzUzA6`<6>^DWYQG%I$0$Aab~$md+bML8 zZ(lu{b0^s%vog{{_umDsM^EASNml2uo<$l`7Q4K`pN#J$f=atX>Ek`|YHxDExD8Qm zrci#~^8MTy*&d_HX0TQ19g&DqUx|LhYQ;uuFpJ87=eZ7uwGKWVkuD&*5%H?a6`P~A zT*bn2yvU33&B%u?bY>m@0?1sIUI++CMZk!I?sh=9&1S^`(x&zMnTg4)(PTygt0 zy!ZUOxZ?|VrOnOt8x1Ta8669k)#eYV)Rl=lQJ?*Td*|u;*-t$<@3?f3v_OIuJFt|s z!qW9R=EHEtTBuO$1F==&Gs8@ge1J;KN_y#N@;jU$U{qmVY zyxX`)J->nc{O9ufkv7q6?@RvPvaPu9qE{QG?bU0a0X^2wBzzFPnx(Fs(eich)5-?+ z`m512`i{CxrBtdcFy!5W;Lt%h8m~s{$SzfR#6(dO0ZLX5%B=%|k7rekk_&Zr;@O5T z;=qY#k)Y?fY3pC(4xGWZ?kC_PpeU1g!XvPImcd0IaU=DV(<9qBN^)hD&Sh@_wP2E1 z1E&}BFbKu_M#yD1Zl*!E1&3bC>=q>gOQI{B-ar=vN79cu?@PfXvHdPdfJ&Zmt|;?} zmr7fS1rpvhNK9XVCAKsd#^7fslPjgfTv_k#BW98)hx@&FdT+CMnAJ8Nn8bzcSna^I zn_JMk|Ht!wD_K>PCX<8SH4X`5GEK6)pB7k3l3E#5T9am3a*N7IDm~&T>E%u$Y1*RQ zRRWtCNYV->iG~tfq9^+iR{=&zzcFI|Oj|Br?pvgk&oS~QEcMqSO6&(%3ln%-NxyX0 zcmguleyZEy7AC^DuORjp($!Z?=eZwNXfWyDewBF@Y7rn&`j%+5yV7r0OIc=pUy3%< z6NJ-Z7d2^Z_T)HVNdii2pzbiu6xCdgcE5JNPc;T!%4sfyiPl|n1v>omY8F;ZmD8wSALV`k?z;# z2%PEZP9oK7G4Av4Q0}+LE^d(t0)vQYl&eIU;Y4L66rM?~fw={+N`X}+r?Vw+5e`oU z;@!_9()7`cz_y+Pe>r_p&y{D0p~QXFZ2PAk%4?HM@QVF~R2}p@p4RytD5qN!1sUhb zy+SgR&Rx8ON^deqx15dw^M}S4dV?aVlYMe^XF4YWHhQ_=WvVaR>!P0d{!Pm1n@$Jw zkC^3JqrOOcVpz}_u*{54p+8cj(hsPBg?{TnA}e>mu`WSDa0RJ2A1*xE|~>5 zG{e0sln#2#XfZ|IDDgG;u>J0<@IJY|X%)Q#Q;I;6+-z{)Ajf){kB*1~6o=D+lV>hy zRey1(uiA|G#93I&8!7%w{%j-O6Ehf>J7noPWqRqCki_w7s0iWHm-nKHw%LlvhETHO zJsX3#V?z+pz!)xl_*Ax4Eyx!S)u8X(^$X4`o$zIFGg8W{1f0W`Irei88 zm0wHm)OEygve36!tMD_$gEq4dj_b9Fx5-(yQW_9QOJHt}-6zKH z(_$Mt1>?51-G}J-MIQ2#HgCA;Bi85B`sJ#!y58&HWssKpp!fx)EJE}!A|B~t}8 zzAEgzYSV&b3~al~Y6Q1iz28av9a8!hEl@`01Or`qgIqGz=z5CvHJi?CN0ucEDD_hu zrO41;IBPedZZfl5g|1J;A}y@5@87X?(;vdyaSsg`PU8}-)}&RWGYDGq>X}}zpxk=u zq^7KX-_`hC%VT)2`!K?nUWaepqqwO&itBnFhc}QMyfu!!hq1Cwp}2IwjypPm_UZko zq?ivzF_+TSt)`vDmL?DjV7TUb)Q!A@is_RDSAVNcGg?h{W8J#e@7Mr$g$Mgy`mo?O zOQ(Rx<-*O^$p<&RVaJs;bEkb^n69oxah_uq(rR56VWqc&d1+Fv9Z$WLCM;0i32rh^-hy+B8>05F#$02Zh=AN z^%CIG(QrMQ_x}qx_D@N2vp}3?$9Sgx!r9;A{ie?#Qmt*Z0enb+Ud}H6 zGFG1dE@Dj%1UxGW(i)!C(vu#|pi*B{K9Hs!4ZP~UYw+ARpF#7gW;Cs8(W6LR%c!c9 z2M4&L?yF)NIRDW~aCDsRV=N?CLjNT!Zd&P$K!b~~1I-^k zmsT$ZlXegQ#bVLu@+J)8XjPz+XtRLapp@O*^kgQDZefJgMGIPA$$+^ zwS56ES~j3(|33i42-vjlL9B5^v3&3aTH%dYNW;I!73cp6w|4&{cG@ms!@7r1z4GG} zi>Vv|>UdZ^ji~AT1U9UF5Z6<{?>jGj3p;zhi_X#4;Ehk_)GP+sre-<>Y6|kX)W^?I zQ(nH(xCy!U%(!19h@El1{qtz)`z_qT?tG~*TMu_c%rL7ptB{JFa$h;N-$Sl%zkOde zbvPK#$}LW|uq;ja&grHx}?Nr|n*U=pWcv6od#vnuWv z^Gv&9!wkMCHz;LSH>1HMu~~9VrF5)6F%NGu#WItoowsjiz>z@al*Ml{v7OkxrqCkv zTWAF{-bzIb(NINwLuS(RANRL;p&8!td9zGXOZComzkHr2$|1 z%>B6ahAU?^$p`b6f48}O-&jYZCv;{FvdDJiCXd7>@}!17BWAJ0BHQ-*u0f)IH!6Iq zP!%{=WZLInU4BU`Nt_1D33g>jXkQH4Ozb43HfD2;KWK#ll~~`=@-=v)^-u8D*fc^X z{uQp}_v6}zWq5GIh_vF%f6?R^%`(7?QFMjz^Y9;>&nfv>&_?>)CiJSA+qj$Xj8zx5xu zaO6D3`sdsf^3~xQ8Xm*xbMnBTID-_5MDgCLdNYDSTvWVL7ql*IB= z%UmqS!pDuidud$##xPJ6bSsSnvYO$@YV%oWIDm165Ayc=vL#Z z!Wg+&1PQb(24OI%xx7JE)rg}SU9AtJz2_GKxWvc#lHRCaSGqL2yqyY<>!N;~g5g`! zxSC%3@$0bbr?2DHr(VJJpS%(KU)qcFhtK1xd#}RzL+3DXaS*=7{MnHkY@tq7Q)8`S z+t;t|K+mN);LwaN28s8EI+*y6=Af5L_-NwryUE zE9h_AmUU@clP`8s>hCtKLNXT^6j>}1i{>w&z8Wxz?Yg7^B{sl$TLT)1Lf4cS#R)!9 zl6e;3LB15}R{}-^K#7*gv}^1`>e7M zpqofenLs5Ub!z&i2j!Y)x^oOBiLP#P%7vW`=xM$m%esF;Zg7u+?VArd9iGq?P-30A zqn9iDiNU03I0`3qVC2N^u;b>>+$OlUz3}++@HJH9BY%EB++}V|jZInH?LOi>;w_-e{xXi={59~yV(Ngjpv^!PQy1V5A zoJ`eiu^gukN=GRMAjeMfrJ2kyy4`Z160=#EOQZz!Xwr+A(Xq%hY!%A@>bnu$d^UU1 z?M=D=u~|||(#tu82`Oev zyIt(;Bx%FBt(ja0rRnwBZ>M0~1KzE(#RZ);^z1j!9%r-ST8P+4JCUKsI<&7BZngbehp@egJ zYDJ58@7Va9+fg*iL5r8RB;pnd%)JVjJY={b^3nOq)QEg_y0eb4lBoe%UKg24;mKYM z9sf<1rD)GKFgXX_XwRKn4vwY7?r*7o9E4f?b5u6M;ccAfBFF3`weD_<4V=u);<@Fn z@J|#BOcFJhbAMw{Db*bvdp# z&yTWd9)n7mz%6DenOU03>r{bBVjFn1x9YZsvA*m3!g9ISmo*7nap_!Ml}+!C)0E8Y zxu}oU?dkBC)-3bVi_9ePWIUSLWwyCUIw!d3}Oc?T@CFve04BRhan`(-`Yloq04Kb7qv zmz6=KFWv4%cxnI)EEz4M=ibDwJ^S$T$vGB=(RF51K7&Vcz*45N%rdagq^DW0v)i#K zg>rQh>z8iRflBP6#NUu$D2B;koF-kQxzz8+6BOsh)dZ`|YJ&`3WfK0atNFcWDo2m& z#Q-WLb=0@Ns?-^$*tb;o!2E3B%wJuXLb>6~iD$I#!aLZmFPBj8|YFKtK!G zOKG`JxjGliIbNM2U!YR^&@1S#%Is1i2FT6^SmM>o_OJZUIDYn3ny#q8*7hrKW%u{8 zx?Pbd`MwpYRMT&*hGG=8PZNAD14~J+UG;7C7`QMOyM#d{EzGHXhqMD5kubUV zk}F;&aoFboxl|lW!2vUOEfn?vXE`iQg^=N-Q2!<7`Jo|p{XLIMNLg< zd2q>bRrrqwy-I^k29>_>`8!ZiZ~UsKP6G9-mR*Cx{mB5bni^Gr#IwLsWs|Df^94?- zQl9(cav-Y*7FiDOKzcIpc%$=O|Nzv7iQ-pBWT^elRMlgw^*ZL6!%)^`<|EOPo7 zaZdWXRa?GRyQnR<(COIrdWZ-lX=NkH)xG2ar6|2%!{JE^-qM7!P@kNQite1~uEtCl z(PfSIGYNw`N~|Qg{8CUU8AFL(-n4L(3LB_eu1)zm$DmTCm_fPfVk2O}OUu&_c{i&r zN(7e1Lo^`Q$XYtJ;y>Yo!7f_C=^Q%OdVR0CIJS=T@y~ z!-lmhRMqj>PuwkJTa2@1qCGTit1hGW#2I3=W@e;mDpw}463`)&T=!G??$mO9EL)nh z|BY)g0^64dy&|}j&fZ&EytsPJD7o>>F+{Y~qc&}M!vDlxF6hooDI&h1IK;;Y**nAFa*xv**AQ?hyQsj*8w z+n{G%xq?apn55A)Qc3?M4=Ay5{JhjXxtWxuLG6_cXqIctb`jY~>D<-Su#~cCj|eIy zcsWuE%1x0mG!>)9%}G;%MUjH~eH=7+Fp`a83?{9tYS)yNUD-r1Nt!WUd!qm>MLYh8mOAPa zSWEVc--l)TgpiCoCQ6+Xcd!f1ea~Xmxo@LVAwCVWl(YzgNX`@g1D;cVgL3NtJge^~ z*T%6bC@VjY{KtW~y}>|kg&CAPN&(vwMogT!n~@06VhBjj0+$1oM4K7Z+?oy)3ge%jcpATc;Z;mcC!hI_w#KYf5x-~Iy4Gb?=}aaDK)8Oj z!l0Ly^lHmBOS)X$-m(Gcl-gbbl*l^MF@iv-b6Xykr-3RNu+Y~;w>DEI$2ft zqGgI-ldf#8+s;f2A%>DRK#9xD6pT4ty^G;IgD^(LRVoV)z)x|)auo)af|9rcO675T zCMeMK?(*y5Kl;z`Zv1oH=HHFx(YKYd745Zbm`MyKu`8RRII0nEdO!e|Vs$seHu6r= zC9e0EXib@6l!8cgBX48UyAJ1;e+g9+hq0{tDcGX&Gm@F&3|WWfgGla;Ux2-S8=^x8 z5I*z`IG5dr76s5MUHjNoEFG96=1~(%NleRI4$M6y3Ct~CV{nK67*rBLAMu=+CPLs= zG#ZD)VIw9(0DXhXGsNubcZysP-Z^_3rw8YPfpfWhp6ikWvEF+32wwdCF0tCBy$unY z%vDY3VRr5tW-%Uja+Nx|`JN%=!C!LKroviC9E6JClAss;KB}p&a@R+%!Bp3CaCwXg zGZ3Ea!|;h01Oue5PIU8i+aL{)Usx+?uRY(-lXeY@BZnCRaVuFWp(3V{QhvE>aW^eO zM1WEzCjthQ#HHo=cWYL5lC+J*04j0lf?PqR3L0yrO1gK#2m22TNqI8s3!i-$pa1m7 zQBj^7Q>u`Y72FuLAP56Vg#f)$?~ReiO8pKa>rGd-?Qb5$-wt~-FMFJ>fW>gWYT_Uo zTd&8&r8m)AseQ@wLfJrM2B~#ZV^APU9Xcg(*zB6!-o)}ekx{f;CJ?6&*70)fcH{vj z*KY=?8G9e2)mP*UqT$Oe3$^pcjb-RQ5r1_=Urauqu<(6rp2u)7JDJZn&O z`f*gO{5U!S#}F7jj?s#BX;oo>)K0m!z!s{T8mFH{lNTqH*x|a7BhNQMn2I4R>S0dl|ycI^mx4xfp?0ZN0yO zH4#9-vwU7PVS3h5SyBulIl7*LbM!^HE4*+lzn|P#;{+n@M`U0>Lhdz)w0{|g?RAKr z`4NtH{4wG-^_>(oU=l0I?*p48_Ru`VWezy)g(DZ>Yp6y=b%jid|}@e)`PIXr~#x^0N8uVj$^aWD;V0rt=5S!&&A;dDTMdw^$F? zF-6SH2(_oKqXnmroQ1E-i%M^L9n&hmm@bU%r_N!5+}~+tJ%2HZ z_Z1`doS7xgo)gqpu+Y0jKcPvJsr^D9B2sgUVzCM88zg8|xEOuE7*r|-angI&OMS>G zUfe|m!H6i>VcB(Kzs;;0AZ8={^FMI)psTs9}~;>)5-nkGx4hUI_NOt*{UiDKWGM(ZRil z4ID+3fUNlHug%uOz{;Sz1C@?CLB4{lv%amKL#e_rnAXd+FON=^PtjjBEmVD(N9~#Hd3pH~Y!gME5ox zgz<4cB~xJReCm>}F1AaX)q@dYXkMfM!$yeBT?yZ^9cham7#@Yk?S?nU+4{5<7<3^W z6TzVB7G<%#!kgIwai=qMoLt|mI>xCM1neric$JYfcK zkz+T7{PSagw9IkmhnrFS~@0YFmA zE|z0v=Wtvlb}`cm${E#027HuQLz(J5xZ*D{b>VTWt!cw$D{n&8x$ojk*=68B?hZ#8 zeF)sbeu8HBV{|Sd{5c4ubkII+>5pS{SyaqAWzwZk*YyCCMBTYl!FFM=NUiiY+=GVuYLY;id2uYhHP6ht~gAkxlxAdcl@0ZZNFa;yv}6@iIlRTM!RB~XdO4y1xJvV|FNQtS(A1(i6T8rgs7IJRz@^90~; z1G_Ei1qN|Bg?<-_Aj(n&lBCZ8+rVmzs{a0SdbO^D(t0xO+q=&^kM@n9$MvUwjF$to zn4Fop&XjR6U7x0bRbslE+*XX~+!$r6xJr;ltY1ywXRT$5W%E{GC`D%I{&dU$gpFd7 zurR2k1|Z>d98byU)z1W_O#C0)jzPI;@@3B!RC0%h5OV0VT&bE>0yCNOY{z4S+dhLW zfe*24-5;WzgWwZ`ia|(PKb#(*D1GpFpUx4mC~WB*612}-;V(kLnmL$rTnO4MGG1ac z$8?2Ws&tK%iIUd`@nI+(RYBWm!Xg~U=r|(m^LY!XWZ_zj1|bY)#b74@%PIg|40uK9 zFHZM^pKsw*T1R;lv3GAVtkX-^I~1%`$Ifdvt{?u z=FV2scQoQB|Kmr(OqMGHi^%Dg2eAW_0aVo`e?!(8_d8}K@j0hQK2IhcyMp8z?5@Vf zb)DFE;0VQYnG{^$GUZ!r*DYaMamHRjK(VndJh3SM!u1g&I$?TfCJq?%D9gw)*j0fj z%t93vaXW@W`rVsUy(cg2gSX}K)YHOoC#}wS@aP%YYi2uH0+aN+Bf~VPZVl5jN8gBI zk*I%I2sL1_D>Gr$wkJUyB8#UHmWf{K6)j#7K^tZWv+%06Q{1oOg_rqC0iJ2>UPc*PgaiIYv21PRU>vFMcvE@wyY&7OkShbSxnLQ1= zT95YH-)j9b?l|^c)Nc7IZaDOHyyW~WBDUi6FVEH>0T<0=O@077b@E-&afIyp48pV3 zM{T}rfd-}Wb19Pt(>(YW2Z_>pM1X_=BmQINQo6d>_036cU%4=1q;(hbK7&eZk8FaL zmr;=U0JHCMlw8?K(&{fYe+)qi&b|KBkA=XH9KPL3ppKQIMDlYZ{G%;{0-S*M1Q$vQ zBtQryG2m#`9`+gLV;g;t!TYoo0tL>T7t(Qh;W&An(_1)373bmSRM^tKROq=(f>;b@ zQJfD3xGv^a=j#okh;~1S|5KKrnv*mMC4#!j>q%2tzZ7FID9nW;- z#4TM-5XeOhrX2#gDmEe7_9>}$Iqlbw&6kl|TXUHgmX+jk6`e%1=M`M)J%HXSVl5>o zrq9~{D`OoDCP_O$G4kh+lU*I*5k#EIaiLOIZR7jxaFYKw*(AoD{1oBq!gG*vUhSdX zVMp7VHe5V*5v#YYR?K$pz*#U$iStOszUd<>2>M;B+U?u^1w&# zKpCwtw-iNKx|-f?37tUibT-t><&8UIh3-VBYongC&*|#W<2+9Uh;rGwmFTwnF`yj( zUQDieJJGW@Euh4OJ$Ubpn#;_027cbyrNykzUB2y+OMMI`ofhiUn?UFD)EYDqPtg3jZXj; zjBdNsmK@`4foFB^dyHr{8DgRa}@0`CjYGtIaQXX#h~Q|bA(@^66wFiRN$ zV6;yxr6h<&TMj%gfMDV|F)be_{~W<#L{I!5h?H;18d!1?L#<`td33~wC^+plVk7-I z;@!W&`01bGymJM5n<>(GcB42eY)x$HAaveyeJZ8Ao+FXxTQe^jWW3+Kr z)MqT1UEeAz&Dqaj5J`;3m9ZhE1Q{(LfJu=#Kr>?o6D5dJEG0X;wdfE}DQ=+&5(lx9 zBNW4~Bn7vClu4BdSZY!TAkHiEQSXsh_6~gf-kVGjQ>Wm@U4ja5KSesh#7r&*n(`qu zl7XhMRxM4xLy+4u#FYKTix=ms#`M+=jO z({dgq5g0;Q1jZI(D6xAI4X&)j;D}q5XWo@!IY>!OV!g)qje#90sN@Zt!?NMm zgeEZ*5_DD~Y_CR;It!!aYY=i)BW#<`q|n-aJ=sZG>lV`|<0+B583DgRn-@VSKUZSD zd~B;-m1r)fcm(q#E`U}RjweRH2P^$G(BNPtyVUaULvZn<6A)l|W}W6p9lsNxXg5n{uNWmmA1%pZna*vHilJBNm*-2u#%Qkl4 z{olMxEHSz#Gp;t`HR-mtHG5Elb?36(#HtMPJyjv1+uMoL=iqj^(9zzaBG)2I!rviw zdvj$T_%E`S>(U$skvPDx62)DYigYd{PA)fA0_2A%=)IPJ`&!kgU;ojJS$_8HEBMl9 z`oVY6x$HVj(X!FUT0gsF?#wiK zpwxI;P#%77$+TJTh9;Pi!EQdxzTkmX20$rOOebb3F*8RCV5WDQ%v2uRL2!W!jiI&w z8Q2JnIMw_xfkw%dsEp86Z+4OqI-0Lcj=x0AAIWmRQ3?Q=pjC~eGUN0nJtgcj>=Gq5 zmi_$W@K6wQYZj|dw)Z~^`}#*PcI*c@=Uho_q{oCH-U}*AIlRA5O7OcJyEJ?-#L z9>t`0gLq1ID+eZt3GD>BMXlrzNK7Vnh0{aa6z{0My&hfU_SUg+dD`(+r;D)Mn}hW1C&IN!Ddgof#$O_k=n*g$3*B$0!r@9nUbcx z-aAh5vZ|C>2YRq~*p6ngB?Cwt7pmBRq`8~OZ$1moUF=OVIzjs{%bUVB>uQf@NUCI;7MQ*O5RbQCY zo9QcZe~ej6ELv6v{_)RWz#o2sLK_$){EjL~el5Vie+G#}rnFLjgsqm<`_y90xLt0&s8?AZ!TI6wUq|c76!LwBu2iG@>r zCyu*BgD_FVRo28~>DC$#V!55dkdGb1>GI9!ue(EfS$020RBC&40#SRC(Iy3!q_bqQ znd#(k&9(HKdoC@YB*quY1QeylFiKaSmhQty-2 zW3dybHJ_g8#SWz&0GXb8Wm}fV?IvozIyX_Rb@1X2z5AZV)*ByD%zE?AZ4{(5xp0VL zLW3`sfFxrK%wSS*tjn0f3s5Qt=yvAlzG4YnAW!@osXts+fEJXh)M5dVwWK8vr;X4U zE<$W?$IPNgTJx9Eo6iC~iNxQ2j+ezEfJP>ZuQv}+VkOTsehg*ZKfq-xZot){Aq2+u zpwD*=Us}{M?W{#2H~?=JY=A{=7!8dRmUpK?Gsll%S06Q!$pufF>suTxz5f9Z1*7h1 z{3wF%)>##7Q9o>P`it>4fMwl3LD=cTK;3N!(JFsZX&U$)h6!*olT=KfMB~8Av`qV2 zoLTXwf@&2s!z6Wq(_3G&v6BMPxnRb6w>8`H0@0A_tjzrBB)7z73S_ND613uG{8AsR zWzDeo&m&Q`LdeGMZb~3eYwy3q(SA3k&p(I$Wq+-vD#10JiiMHtej2 zmF^FNS?rpaDjc-h>dXSAPAw>lGp}?*i2( znKdW@u`?CMETs)C%|aZROlg&_GtiJO_@)Rx#OXOTRS-=I3UB2Yd4kJZs>`TSYm?XZ zb|t~TJ2ntdn}MN}xwOnFL|`s+O8rwP-CzA{Grq*wjQiyq!Y*E4&|s#a?3{M#t2 zT}7ej%24jH{QS?nb9i9+^H>+K7 zBta|3S;|_#vx*|1q{L2Q19isxDOOVqXY6x;Y9_-)hz9SVxC+6ASWu>{v)4zew+q3! z$11lH`!D+r?`(lO?2Pt};?<{K#-f zbRYAkrZ+_13?7%)AQKpY@}Knm$)lPuZne|M97$?hh*--cv&6Os=|C4>@cD8|&7YGWH$ z-0RGEdT-LGj`Tn0YVM3iqjDu(X*6S<-%oSf+oiepz0doc=NvuRgrQ+O)~;F{D{0c# z`L`rQB&Cwlt#6TZ<7ZF-vlUF@uYd)*`2{l3sBeOn;7A8xUc!QgG*^h^d_RM}@N82j zjX*_tVyxdug+w_}kgQ48GG_!bWqud&SFyeF%P^j}AH~bQjSYwI!)p|Y#YKX@v(@ax zQt{hcU{EJ7_{*+B+6bc7;Xo#ic*a0eD%mFD_oh@4OCW|vmzUa-xF9wa9tT57iVI#e zfXie*M$DbR!InF3oVg?RHP&{-SdWJ4da!_TY0uvX1S21H(tXMlc2W_w$vk`voyAwe z7DXtYnM6t-#W^EjNlpv*Ta~kXsbw)Usoma%OmlbBlitNtLGIYSV)r*2v6ZCw#QWII zjQ}NO$1(T{fLQFL(ylEqlwJ&X%d2QD4=~wcw}>XGl^7hDyMi>ox)K-j59dL@Q3jRY+u;FtaHh)2hR}aKuwaxU>Q*DBOh@=LCil ziF0$9ce#uKu29o>`cT{a5WT?e0W)``=){DUAs##Rm1wN|3|dNWhP8hmu`G6x!0=J= za@x0C_nd}b6LU%_fMn6YB(ZS}V4B#4WR_W`gGq@3(4t0BESEArC`tnb3($-lhUV10 za1S4f`VH4P4nvVkK&e+NFz=!!4!YI`P0`&faV?Isn;UB;u`xU8+QosFu>@+5D@!^UO8ot>HbT5WVO$-_ki^0q zf!ady`xqo27bz z>i3fFhub|2THc3|M4c10WQB}HV1UbsWr@_~W5I0+#tfxIOmO)ihLTF6hLXUTl2B1_ zdrCVulLpe`=qk7b%@v=T>O>QiW{yc1^IVFA?18`>W+z1$bnoM z{0Ww!eQ2n;8$AUZB;Y7#gXsQZ{;DdUQ!8Zeiih+N8suXSPGZI z*Yqrbqj54`)VWZP()~|HW1zOR>=tU*ei+DQFJ0E((I>dM1v8U^>t;}C!TLqm`|57E zNsOC;rM45vy@bTWP6~F5YoqV~u204nw%p^MSWyn{SFHU^m~f1@(M^C7yG2TP&T$^m z&5id(FiEO*lIUW@dE>QofJxjY{!U{}7~^ewrl-%hnz496ZPLxOcOOO1@ht&2H_}X! z;^r1w>72U6^<V0K2*|Ln#wYLH9a0iO|3L`kVOqFCKuCo;?iU zuoKxdglor6oP^q7B^@vw^m*kll`MoYzZPnpiGE{h0R%EqdP8oJ0AQ*q;EYjD>kJ{OXsaHm`jNrWr2$HMPaIEG=^hO-(hbDl4F(GGBb@ zb!@!iIs%l;SzvU0#Ae2hCC`NOmdqhH{Gcyerlx1_buta4jK#3q+jLu0K#3d2+DY%J z7s22DI%?{!#Ca`$obEQKto{*?oAgQ;P@%cDg zstQw5NzZGjX?X-)#Oi3SxPx5p3}I5mJ|+Hk)C2#qy7^(X{9R0m;9Df)fcRAC_@1bJde`3jkO;}#D9_N?VVXaw@^?C=C zWmloaNt#+ALi3U87tecDmZV+Y#Ii!S4A7Q$Y^KxF!0gcc@f_RwZ3HI0fko^l89OG?t z^^(gQ14;pL?eX(rc7om9MBOB*U{aXk;yRTMcQNsb4vtF5`PeHZQCpEO5RSm2uaS8O_-t)$XHjm@&59YB47^E&D;F) z8vVb#IjkE{)++u-Mq#?%K)6czv|NQCy;>~w=L6Ls}xymui zQz1OFo_hLu{Nz9X8?SBMMxax%03vC%8fY~d?D}9YUVmdNdi(nD>;C|iKx)7DTLP4L zPCC&CZfDjqdj!_3STreUNM^S-+qy_2AZ30KFKazgUCEq}2`F*l9OZ2%skO4k(9((( zxTN&~n4Bc0Im?Xh$%1ObYHEM}TXmNQ7aH zejDD3PvVSz0kJxA;p=`MT|55?Er))O?vsB(f5VHgwZ9El&wew_+skU&wzEm48(Tc z`qq1J5qs&1jT^?3|MriM;Jg3yBPf*$JomyD+Eiub=-4|Mnk0$IuYD z$-2Gx=*Mou`#W}_tE&qix$)yTa_pqQD*ED=zllFS^oRfu{rD$8#ZQ0vXCYt*2cp@r z;{$Ad>1A|Mp1=Fnck#?K&kJ?G@FIa#Z@wiwr$p%sFNG}6+RPk*1BXt@+VFI+li2l} z7h0lyI8CB+Az23`4TVW%rB62tUGhw;q3C+(S|7m*lNOaL?m;QJVeB0+;#BD^X&BD* zR59S!qKaOA%n52JCBhgA?HMzOSe!c=n8d(UB6V@u(aH^N3m?ZT&P@xCgvv?RP*O&5 zdC-u6U`_WHs7M&_SjkP$=TwJlq73JvM|LB11`@`;77Q~M_HGpbph5HExLwkM8_F6` z6&=sPtI9z`?HA#buu>nKU&=oJMiLS0?rrKJdb9?n${Zn-dS^rW0Hrn(-yX=oXl`}p zoSoG!?821!o*0*M2#bVC1X6{$OKIng^$3~QJN5H zBS&}>-P}I2&W3a`lEkrP=82T=LrkCOR_a7C(eg7lpD+tE%e*;I!y=~F_d8AqN3~s;eV`y$^8&6(SU4;jK z{WF}uVi|h-`>}SzM{wfQnepq-Km8{Z6ck|ZhlkPA(~Ix?{oi5EoH{IBvKYO+eS$vS z6_;O%jhAged3hNYEn0~G@1MSpAO7GT@`cl2;evU1=noGN8w#kXD93BWM*8^2C)}^s ztzCnTjxHQMdJNzC=2zjg^-|sZf19EW zLy5p3DHf?sm3?m^Z{!SG^EU`?mt2;H05K_TkWz1OnsDr-;OoKrJq4E&kaW4AS;Ovk zww$?e=u3%_HM6?_`i^_$m0`-7%8B7ufTZ{lF9h@Yc`0eTV`zi`rGPF)ycK9@VltWn zy#XcNKYbyflECDoiTqpwR0c@Dg;(OFFk&(;T3ft>ET;Fn;dc=mghXnCjX@-4By|p{ zNh`^V=>U_22`cH3q}t9!SGRCudOJsCTe%8-*sBe?n_H)HkrD{=EpH(+p}1uwxMXncW}*_KjXueoj5{~vSzZ4XiETRJ4~wh{e%+* zdEyODyBF8V(^D`owS~Q(mc`#QMH(H7G*Y$MVR7=L$sB)cvh-{>&nD^1rLCm z0443@mv|9O;x?C3BsV#jN%63{#0hDt$80uzmx+wkD7k)ebTu|n_o&pAgVuHHNnCpn z%gb1JUV&n74GvY&J-BBS7gzE#C!pzPBHgje>&ZoJSjR=kX8i-h0<$CED(xOJYXDx^ zMlihvF_`2YXoh75fk`|KY!v2Zq(?%3Ccan^9Xk z3E8qvRJ<>ckwBi%7jh|s!7u-uFPw2b$pTkGR5f3?(qo_Fb}_glf;!>ArGSPKySzyk z<>vBqq{&s={R$kkVtu6Yv-G%~D(@xub5A`TyWvq%#KTSsS4=AOoWj+U>^UA|)>UE# zTsTn4IqW1MN4@ZgR99(zV8YRG;53fE@4}j!)*wUe7$CW1*k4wh*SmwR5r z{~&+x!v8wdc(1lO2@v-kr5}cG3dpZ z#)Cm6W-5iVS@rTteii~lDQC`jSO56FNnj;?Zasqu@|e^KnOIviKu=7Q?3UXkb=5K1 zx-v1pg1&oA1YN7E=Jif$vPG@K#pW73-g|t~`O7X^MaT3z5rC&jmy$Z*$XoBezaO{V ze1)WP_`A&7^o>C0KqIO=@p}|ZUyCPd-f-bMxY=>77muj2&!rl^rr4l|mH@|19CO7Q5P z|6M5AqY2F8_U%7_1N#rcns3E3&pwBZ8v`z+!3{AQ4T2~)M?>Xkajua8x-2Xk2Pez! z&wvp)a-tE7=hw>8(tt~vyewY6mr8MUlhOe$Yc{Z!q|6gUFewv&vxEU9{!&MDrFggU zE2yRjRjYdsAaBtZaCzHSoM`zS4wQcyqe+SaOZnl*nZ}_j1BQ2#@SPPp(ou4$!%yr( z>kJ3-u%I>T4>2=D1Ykn*g*#@@C=#H=^~6(FxboQr%A@dv1r@@j4|h&%p9n4m152YE z1%g&TROH?z#Ta<1?Ro(^iu%)7bRGSsiX&#@@iagm@p}9h5@RRDUr*-bU{HyfO2I5O z=b!^e{&on7jw9QUpC!MMJ%B0g;H|chfu9(){OD=K8q4oAd z!@|vD=A%_qHvvomuxSi*QWs7E*z!uOX#8+OXF|*$Y0F?zjyk}+^ClQ=DpJ|O=b5GC zQIJFMm`fcCbDPGVk1xHk9amhk2Kkm;K}$(=e-rcbBx{sJQRSFyrD|nSY^&rg1JQ1J zIVqU9-?QMh9E>E%Z3s!Ip?hOGCS^QHJQslo{_S&gH?1bVU=ag@Hexf;?L*i z+_Si4(~Y#~pvRepv#75dlN}HkehOUwk!$eYd+%f8RW}G_ti510K7aS8QK0U?cfWZT z{`tqhgYKsf;i@YGAZcq$tB{TvNniTfw*>vAn(9j2b>}C?+rXeN+q$(E2%y%Y^VVR` zu6LlL(<$%@AFnsNle!Vuw)22&fD*TopJ8%7FQtGdiHwd2E^%AcYSNXZMT(hV+-@oJ zgmf%|NgXf6BS)W?1#Z@k+OWL+G0Z8N2W9a(jGTM~yVdj1l7E@hwq!)QP2GQhHh&3T zby`RlYC+64F#yCb>A@y~N#Z#Mfr3F7@qD;#=*zyCCR{z@wRpD-%p?-QEm}R?KL)GT zHrz{Mnzxb;#)oJx{b;l-ByjyU@`etf#c~03(F&luUuBzwFORcxfrla=mp7D zcBYpT{2S;x)d_QvnL^l322Z4bp(BHK?0I!JmR-IA9Ex44Wojh1;P$h-TRlZ!nGP%K z+>8}^0%f(iIN0BVmhy?oUaHztLJI>UhH4CFpdOym=M=yu2AtT%l))z*eUw4E4(%l* z+&h$yw;uf)KK7kkVh&S)nM8VTW9||RD2=4RHxpjg z=zmB-Ww|InI~%CAMresW#F5z8{mn=LRs3h}hdOUA6sCEkokV(drul+v9gmft^Rov) z05d}Wz#y!aJa~nuSstpB=h%LDMh5BSn>0A74FiLNFdIoOW29fW#^q#fW{tpO&%BB| zK7NgCjphXyIl&qJJ*UHF%Kci(+(oI)BerjP7F(ozH)>`lguX~h$rzf(O_Rb8D!+v0 z{_R+E;$fKTZ^OldM{&00LF_HQg4mL>wltS4_{G!gEU}HuP z12|GZrARJmq4flpAMZW`KMpwK%@#Gi08o+F$S8$4

  • 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

    ZI7kAvt4Vrh8u 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 z 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 m@dsbb{oC_aK3}V^ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/city.jpg b/assets/city.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ac78fd9fe23fb521af40c19c931762b73c38fa1 GIT binary patch literal 1669840 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�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≈McGjuo#|1x;DnAk$ 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