From 5020ebbbf3ea53d4aa118ef53e713da182bdfafe Mon Sep 17 00:00:00 2001 From: yangyakun Date: Tue, 16 Jul 2024 11:04:09 +0800 Subject: [PATCH] =?UTF-8?q?[6.4.5]=20[fea]=20[=E6=B7=BB=E5=8A=A0offline=20?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/och/biz/login/model/LoginModel.kt | 28 +- .../och/biz/login/presenter/LoginPresenter.kt | 4 + .../mogo/och/biz/login/ui/LoginFragment.kt | 4 + .../res/drawable/baseline_link_off_24.xml | 5 + .../src/main/res/layout/biz_login_view.xml | 11 + .../biz/lansocket/LoginLanDriverSocket.kt | 1 + .../module/biz/login/LoginStatusManager.kt | 15 +- .../common/module/constant/OchCommonConst.kt | 4 + OCH/facade/script/och.gradle | 7 + .../mogo/och/facade/route/FacadeProvider.kt | 7 + OCH/offline/driver/.gitignore | 1 + OCH/offline/driver/build.gradle | 69 + OCH/offline/driver/consumer-rules.pro | 0 OCH/offline/driver/gradle.properties | 3 + OCH/offline/driver/proguard-rules.pro | 21 + .../driver/src/main/AndroidManifest.xml | 11 + .../mogo/och/offline/ShuttleDriverProvider.kt | 38 + .../och/offline/bean/BindLineListResponse.kt | 35 + .../och/offline/bean/BusCloseTaskRequest.java | 23 + .../mogo/och/offline/bean/BusOrderBean.java | 86 ++ .../och/offline/bean/BusOrdersResponse.java | 23 + .../bean/BusQueryLineStationsRequest.java | 17 + .../bean/BusQueryLineTaskResponse.java | 19 + .../offline/bean/BusQueryLinesResponse.java | 27 + .../bean/BusResetDrivingLineRequest.java | 20 + .../och/offline/bean/BusRoutesResponse.java | 28 + .../bean/BusUpdateSiteStatusRequest.java | 26 + .../bean/QueryLeaveAwayPassengersRequest.java | 36 + .../QueryLeaveAwayPassengersResponse.java | 60 + .../offline/bean/WriteOffCountResponse.java | 15 + .../och/offline/bean/WriteOffPassenger.java | 15 + .../callback/IBusADASStatusCallback.java | 11 + .../IBusControllerStatusCallback.java | 15 + .../offline/callback/IBusLinesCallback.java | 14 + .../callback/IRefreshBusStationsCallback.java | 23 + .../callback/ISlidePannelHideCallback.java | 9 + .../com/mogo/och/offline/constant/BusConst.kt | 60 + .../fragment/BaseShuttleTabFragment.java | 558 +++++++ .../och/offline/fragment/ShuttleFragment.java | 551 +++++++ .../mogo/och/offline/model/BusLineModel.java | 148 ++ .../mogo/och/offline/model/OrderModel.java | 1282 +++++++++++++++++ .../com/mogo/och/offline/model/TicketModel.kt | 218 +++ .../mogo/och/offline/net/IBascApiService.java | 124 ++ .../och/offline/net/OrderServiceManager.kt | 208 +++ .../offline/presenter/BusLinePresenter.java | 113 ++ .../och/offline/presenter/BusPresenter.java | 325 +++++ .../och/offline/ui/BusStationCommonItem.kt | 99 ++ .../och/offline/ui/BusSwitchLineActivity.kt | 222 +++ .../och/offline/ui/BusSwitchLineView.java | 18 + .../offline/ui/adapter/OpenItemAnimator.java | 643 +++++++++ .../offline/ui/adapter/SwitchLineAdapter.kt | 181 +++ .../ui/adapter/SwitchLineTaskAdapter.kt | 76 + .../och/offline/ui/writeoff/WriteOffView.kt | 55 + .../offline/ui/writeoff/WriteOffViewModel.kt | 70 + .../och/offline/util/BusAnalyticsManager.java | 56 + .../offline/util/BusSendTripInfoManager.kt | 36 + .../offline/util/BusTrajectoryManager.java | 204 +++ .../och/offline/util/ShuttleVoiceManager.kt | 96 ++ .../com/mogo/och/offline/view/BizMapView.kt | 63 + .../mogo/och/offline/view/SlidePanelView.java | 300 ++++ .../offline/view/VerticalDashLineView.java | 64 + .../bus_autopilot_text_color_selector.xml | 4 + .../bus_base_icon_in_autopilot.png | Bin 0 -> 8756 bytes .../bus_base_icon_not_in_autopilot.png | Bin 0 -> 2342 bytes .../drawable-nodpi/bus_base_slide_block.png | Bin 0 -> 4933 bytes .../bus_disable_autopilot_icon.png | Bin 0 -> 2829 bytes .../main/res/drawable-nodpi/bus_dot_line.png | Bin 0 -> 323 bytes .../res/drawable-nodpi/bus_ic_autopilot.png | Bin 0 -> 1781 bytes .../bus_icon_arrived_station.png | Bin 0 -> 1420 bytes .../bus_icon_arriving_station.png | Bin 0 -> 1349 bytes .../bus_icon_not_arrive_station.png | Bin 0 -> 338 bytes .../drawable-nodpi/bus_light_green_nor.png | Bin 0 -> 32523 bytes .../res/drawable-nodpi/bus_light_red_nor.png | Bin 0 -> 26992 bytes .../drawable-nodpi/bus_lightyellow_nor.png | Bin 0 -> 25840 bytes .../res/drawable-nodpi/bus_line_panel_bg.png | Bin 0 -> 54116 bytes .../drawable-nodpi/bus_line_panel_bg_1.png | Bin 0 -> 47988 bytes .../drawable-nodpi/bus_line_task_arrow.png | Bin 0 -> 491 bytes .../bus_loading_autopilot_icon.png | Bin 0 -> 2579 bytes .../res/drawable-nodpi/bus_no_line_icon.png | Bin 0 -> 13534 bytes .../res/drawable-nodpi/bus_och_dot_line.png | Bin 0 -> 1004 bytes .../bus_operation_status_bg.png | Bin 0 -> 25228 bytes .../bus_operation_status_select_bg.png | Bin 0 -> 34781 bytes .../bus_right_autopilot_icon.png | Bin 0 -> 3337 bytes .../res/drawable-nodpi/bus_selected_btn.png | Bin 0 -> 5210 bytes .../res/drawable-nodpi/bus_setting_btn_bg.png | Bin 0 -> 4400 bytes .../drawable-nodpi/bus_switch_line_close.png | Bin 0 -> 3825 bytes .../drawable-nodpi/bus_switch_map_long.png | Bin 0 -> 5864 bytes .../drawable-nodpi/bus_switch_map_medium.png | Bin 0 -> 5578 bytes .../res/drawable-nodpi/bus_unselect_btn.png | Bin 0 -> 2324 bytes .../bus_wrong_autopilot_icon.png | Bin 0 -> 3966 bytes .../res/drawable-nodpi/end_maker_icon.png | Bin 0 -> 5154 bytes .../res/drawable-nodpi/icon_ai_collect.png | Bin 0 -> 7627 bytes .../res/drawable-nodpi/icon_ai_normal.png | Bin 0 -> 4840 bytes .../res/drawable-nodpi/icon_ai_select.png | Bin 0 -> 5310 bytes .../drawable-nodpi/icon_arrow_blue_bus.png | Bin 0 -> 377 bytes .../drawable-nodpi/icon_arrow_green_bus.png | Bin 0 -> 400 bytes .../drawable-nodpi/icon_arrow_grey_bus.png | Bin 0 -> 402 bytes .../main/res/drawable-nodpi/icon_bad_case.png | Bin 0 -> 7039 bytes .../drawable-nodpi/icon_bad_case_normal.png | Bin 0 -> 7086 bytes .../drawable-nodpi/icon_bad_case_select.png | Bin 0 -> 6901 bytes .../res/drawable-nodpi/icon_no_bus_line.png | Bin 0 -> 13534 bytes .../drawable-nodpi/icon_point_blue_bus.png | Bin 0 -> 1427 bytes .../drawable-nodpi/icon_point_green_bus.png | Bin 0 -> 3797 bytes .../drawable-nodpi/icon_point_grey_bus.png | Bin 0 -> 1580 bytes .../drawable-nodpi/icon_station_start_end.png | Bin 0 -> 102348 bytes .../main/res/drawable-nodpi/no_order_data.png | Bin 0 -> 14403 bytes .../res/drawable-nodpi/pingxingjiashi.png | Bin 0 -> 103905 bytes .../res/drawable-nodpi/press_start_status.png | Bin 0 -> 15387 bytes .../drawable-nodpi/shuttle_write_off_bg.png | Bin 0 -> 19330 bytes .../main/res/drawable/ai_collect_selector.xml | 8 + .../main/res/drawable/bad_case_selector.xml | 8 + .../bg_bus_traffic_light_background.xml | 7 + .../drawable/bus_autopilot_0_1_status_bg.xml | 8 + ...us_base_autopilot_status_icon_selector.xml | 5 + .../res/drawable/bus_checkbox_selector.xml | 7 + .../bus_line_dividing_line1_selector.xml | 8 + .../bus_line_dividing_line2_selector.xml | 8 + .../bus_operation_status_bg_selector.xml | 8 + .../res/drawable/bus_panel_anchor_bkg.xml | 5 + .../src/main/res/drawable/bus_panel_bkg.xml | 19 + .../drawable/bus_setting_tip_red_cir_bg.xml | 12 + .../bus_shape_select_line_item_bg_normal.xml | 7 + ...bus_shape_select_line_item_bg_selected.xml | 7 + .../bus_shape_select_line_item_time_bg.xml | 7 + ...hape_select_line_item_time_bg_selected.xml | 6 + .../drawable/bus_station_green_dash_line.xml | 12 + .../res/drawable/bus_station_v_green_dash.xml | 11 + .../main/res/drawable/bus_switch_line_btn.xml | 11 + .../drawable/bus_switch_line_btn_commit.xml | 10 + .../main/res/drawable/bus_switch_map_bg.xml | 9 + .../main/res/drawable/bus_task_time_bg.xml | 6 + .../res/drawable/bus_yi_biao_pan_bg_nor.xml | 20 + .../drawable/bus_yi_biao_pan_bg_speeding.xml | 17 + .../main/res/layout/shuttle_base_fragment.xml | 364 +++++ .../main/res/layout/shuttle_fragment_och.xml | 129 ++ .../main/res/layout/shuttle_jl_bizmap_map.xml | 14 + .../main/res/layout/shuttle_m2_bizmap_map.xml | 14 + .../layout/shuttle_no_data_common_view.xml | 31 + .../main/res/layout/shuttle_no_line_view.xml | 28 + .../layout/shuttle_stations_common_item.xml | 63 + .../main/res/layout/shuttle_switch_line.xml | 73 + .../layout/shuttle_switch_line_list_item.xml | 88 ++ .../shuttle_switch_line_list_task_item.xml | 18 + .../main/res/layout/shuttle_tap_position.xml | 68 + .../main/res/layout/shuttle_test_bar_view.xml | 49 + .../res/layout/shuttle_wirte_off_view.xml | 21 + .../src/main/res/raw/bus_away_passengers.json | 184 +++ .../driver/src/main/res/raw/bus_di.mp3 | Bin 0 -> 20826 bytes .../driver/src/main/res/raw/bus_order_1.json | 28 + .../src/main/res/raw/bus_station_list1.json | 69 + .../src/main/res/raw/bus_station_list2.json | 109 ++ .../driver/src/main/res/raw/end_marker.nt3d | Bin 0 -> 829846 bytes .../driver/src/main/res/raw/star_marker.nt3d | Bin 0 -> 844965 bytes .../driver/src/main/res/values/attrs.xml | 13 + .../driver/src/main/res/values/colors.xml | 63 + .../driver/src/main/res/values/dimens.xml | 165 +++ .../driver/src/main/res/values/strings.xml | 66 + .../driver/src/main/res/values/style.xml | 23 + .../xml/bus_switch_line_list_item_scene.xml | 53 + OCH/offline/passenger/.gitignore | 1 + OCH/offline/passenger/README.md | 15 + OCH/offline/passenger/build.gradle | 85 ++ OCH/offline/passenger/consumer-rules.pro | 0 OCH/offline/passenger/gradle.properties | 3 + OCH/offline/passenger/proguard-rules.pro | 21 + .../passenger/ExampleInstrumentedTest.java | 26 + .../passenger/src/main/AndroidManifest.xml | 5 + .../src/main/assets/m2_map_style.data | Bin 0 -> 255460 bytes .../src/main/assets/m2_map_style_extra.data | Bin 0 -> 20087 bytes .../passenger/src/main/assets/map_style.data | Bin 0 -> 249792 bytes .../src/main/assets/map_style_extra.data | Bin 0 -> 26878 bytes .../passenger/ShuttlePassengerProvider.kt | 70 + .../request/PassengerQueryLineRequest.java | 16 + .../request/PassengerWriteOffRequest.java | 50 + .../PassengerOperationStatusResponse.java | 21 + .../response/PassengerRoutesResponse.java | 29 + .../response/PassengerWriteOffResponse.kt | 13 + .../passenger/constant/BusPassengerConst.kt | 35 + .../manager/scnner/ScannerChainLogManager.kt | 49 + .../manager/scnner/ScannerManager.kt | 257 ++++ .../manager/scnner/ScannerStateView.kt | 38 + .../manager/scnner/StateChangeListener.kt | 6 + .../shuttle/passenger/model/TicketModel.kt | 103 ++ .../network/PassengerServiceManager.kt | 112 ++ .../shuttle/passenger/network/ServiceApi.java | 47 + .../IBusPassegerDriverStatusCallback.java | 9 + .../IBusPassengerADASStatusCallback.java | 18 + ...BusPassengerAutopilotPlanningCallback.java | 9 + ...IBusPassengerControllerStatusCallback.java | 13 + .../IBusPassengerRouteLineInfoCallback.java | 16 + .../passenger/model/BusPassengerModel.java | 493 +++++++ .../network/BusPassengerModelLoopManager.java | 58 + .../presenter/BaseBusPassengerPresenter.java | 192 +++ .../shuttle/passenger/ui/BusPBlueToothView.kt | 36 + .../shuttle/passenger/ui/BusPStatusBarView.kt | 70 + .../ui/BusPassengerBaseFragment.java | 96 ++ .../ui/BusPassengerRouteFragment.java | 383 +++++ .../ui/BusPassengerTrafficLightView.kt | 181 +++ .../BusPassengerLineStationsAdapter.java | 140 ++ .../ui/layoutmanager/CenterLayoutManager.java | 42 + .../passenger/ui/widget/BusPTurnLightView.kt | 200 +++ .../passenger/callback/ADASCallback.kt | 10 + .../callback/AutoPilotStatusCallback.kt | 14 + .../passenger/callback/DrivingInfoCallback.kt | 19 + .../och/shuttle/passenger/constant/M2Const.kt | 16 + .../shuttle/passenger/model/PM2ADASModel.kt | 45 + .../passenger/model/PM2DrivingModel.kt | 478 ++++++ .../passenger/presenter/PM2ADASPresenter.kt | 41 + .../presenter/PM2DrivingPresenter.kt | 143 ++ .../passenger/presenter/PM2Presenter.kt | 7 + .../shuttle/passenger/ui/PM2BaseFragment.kt | 73 + .../passenger/ui/PM2DrivingInfoFragment.kt | 301 ++++ .../shuttle/passenger/ui/PM2HPMapFragment.kt | 131 ++ .../passenger/ui/widget/M2BlueToothView.kt | 36 + .../ui/widget/M2PTrafficLightView.kt | 181 +++ .../passenger/ui/widget/M2StatusBarView.kt | 110 ++ .../passenger/ui/widget/M2TurnLightView.kt | 200 +++ .../src/main/res/drawable/scanner_qr_code.xml | 28 + .../shuttle_p_jl_arrive_line_blue.png | Bin 0 -> 1870 bytes .../shuttle_p_jl_arrive_line_green.png | Bin 0 -> 1822 bytes .../shuttle_p_jl_auto_close.png | Bin 0 -> 2890 bytes .../drawable-nodpi/shuttle_p_jl_auto_open.png | Bin 0 -> 5857 bytes .../shuttle_p_jl_bg_arrived_station.png | Bin 0 -> 2059 bytes .../shuttle_p_jl_bg_end_tag_bg.png | Bin 0 -> 6314 bytes .../shuttle_p_jl_bg_start_tag_bg.png | Bin 0 -> 6008 bytes .../shuttle_p_jl_blue_tooth_close.png | Bin 0 -> 900 bytes .../shuttle_p_jl_blue_tooth_open.png | Bin 0 -> 838 bytes .../shuttle_p_jl_bus_line_logo.png | Bin 0 -> 1090 bytes .../shuttle_p_jl_cur_station_arrived_bg.png | Bin 0 -> 8278 bytes ...shuttle_p_jl_cur_station_un_arrived_bg.png | Bin 0 -> 8669 bytes .../shuttle_p_jl_light_green_nor.png | Bin 0 -> 13615 bytes .../shuttle_p_jl_light_red_nor.png | Bin 0 -> 12368 bytes .../shuttle_p_jl_light_yellow_nor.png | Bin 0 -> 12771 bytes .../drawable-nodpi/shuttle_p_jl_line_blue.png | Bin 0 -> 765 bytes .../shuttle_p_jl_line_green.png | Bin 0 -> 797 bytes .../shuttle_p_jl_map_arrived_point.png | Bin 0 -> 1239 bytes .../shuttle_p_jl_map_arrow_arrived.png | Bin 0 -> 1219 bytes .../shuttle_p_jl_map_arrow_un_arrive.png | Bin 0 -> 1253 bytes .../drawable-nodpi/shuttle_p_jl_map_car.png | Bin 0 -> 6793 bytes .../shuttle_p_jl_map_end_point.png | Bin 0 -> 4405 bytes .../shuttle_p_jl_map_start_point.png | Bin 0 -> 4322 bytes .../shuttle_p_jl_map_unarrived_point.png | Bin 0 -> 1308 bytes .../shuttle_p_jl_no_order_data.png | Bin 0 -> 16899 bytes .../shuttle_p_jl_point_blue.png | Bin 0 -> 1685 bytes .../shuttle_p_jl_point_gray.png | Bin 0 -> 1621 bytes .../shuttle_p_jl_right_route_bg.png | Bin 0 -> 10743 bytes .../drawable-nodpi/shuttle_p_jl_route_bg.png | Bin 0 -> 567936 bytes .../shuttle_p_jl_speak_arrived_icon_0.png | Bin 0 -> 200 bytes .../shuttle_p_jl_speak_arrived_icon_1.png | Bin 0 -> 821 bytes .../shuttle_p_jl_speak_arrived_icon_2.png | Bin 0 -> 1617 bytes .../shuttle_p_jl_split_line_bg.png | Bin 0 -> 40462 bytes .../shuttle_p_jl_status_bar_logo.png | Bin 0 -> 5745 bytes .../shuttle_p_jl_youzhuan_open.png | Bin 0 -> 4772 bytes .../shuttle_p_jl_youzhuan_un_open.png | Bin 0 -> 844 bytes .../shuttle_p_jl_zuozhuan_open.png | Bin 0 -> 4788 bytes .../shuttle_p_jl_zuozhuan_un_open.png | Bin 0 -> 855 bytes .../shuttle_p_jl_bg_end_station_circle.xml | 6 + .../shuttle_p_jl_bg_middle_station_circle.xml | 6 + .../drawable/shuttle_p_jl_bg_progress_bar.xml | 14 + .../shuttle_p_jl_bg_speak_icon_arrived.xml | 8 + .../shuttle_p_jl_bg_start_station_circle.xml | 6 + .../drawable/shuttle_p_jl_bg_status_bar.xml | 9 + ...uttle_p_jl_bg_traffic_light_background.xml | 9 + ...tle_p_jl_brakelight_background_daytime.xml | 5 + .../shuttle_p_jl_dividing_line_bg.xml | 12 + .../shuttle_p_jl_panel_cur_station_panel.xml | 9 + .../shuttle_p_jl_progress_item_round.xml | 14 + .../layout/shuttle_p_jl_base_fragment.xml | 65 + .../jinlv/layout/shuttle_p_jl_map_view.xml | 12 + .../shuttle_p_jl_no_data_common_view.xml | 35 + .../layout/shuttle_p_jl_route_fragment.xml | 278 ++++ .../shuttle_p_jl_stations_common_item.xml | 59 + .../shuttle_p_jl_traffic_light_view.xml | 37 + .../layout/shuttle_p_jl_turn_light_status.xml | 53 + .../layout/shuttle_p_jl_view_blue_tooth.xml | 15 + .../layout/shuttle_p_jl_view_status_bar.xml | 68 + .../src/main/res/jinlv/values/colors.xml | 24 + .../src/main/res/jinlv/values/dimens.xml | 29 + .../src/main/res/jinlv/values/strings.xml | 10 + .../shuttle_p_m2_amap_arrived_road.png | Bin 0 -> 841 bytes .../shuttle_p_m2_amap_arriving_road.png | Bin 0 -> 899 bytes .../shuttle_p_m2_amap_custom_corner.png | Bin 0 -> 7056 bytes .../shuttle_p_m2_arrived_an_0.png | Bin 0 -> 179 bytes .../shuttle_p_m2_arrived_an_1.png | Bin 0 -> 608 bytes .../shuttle_p_m2_arrived_an_2.png | Bin 0 -> 1107 bytes .../shuttle_p_m2_auto_button_bg.png | Bin 0 -> 3301 bytes .../shuttle_p_m2_bg_driving_info_image.png | Bin 0 -> 208828 bytes .../shuttle_p_m2_blue_tooth_close.png | Bin 0 -> 900 bytes .../shuttle_p_m2_blue_tooth_open.png | Bin 0 -> 838 bytes .../drawable-nodpi/shuttle_p_m2_bottom_bg.png | Bin 0 -> 56580 bytes .../shuttle_p_m2_card_split.png | Bin 0 -> 48138 bytes .../drawable-nodpi/shuttle_p_m2_clock_bg.png | Bin 0 -> 4486 bytes .../shuttle_p_m2_img_drive_bg.png | Bin 0 -> 56819 bytes .../shuttle_p_m2_img_line_bg.png | Bin 0 -> 46770 bytes .../shuttle_p_m2_img_time_bg.png | Bin 0 -> 59365 bytes .../shuttle_p_m2_light_green_nor.png | Bin 0 -> 3417 bytes .../shuttle_p_m2_light_red_nor.png | Bin 0 -> 2909 bytes .../shuttle_p_m2_light_yellow_nor.png | Bin 0 -> 3925 bytes .../shuttle_p_m2_lightyellow_nor.png | Bin 0 -> 25840 bytes .../drawable-nodpi/shuttle_p_m2_line_name.png | Bin 0 -> 51431 bytes .../shuttle_p_m2_line_noselect.png | Bin 0 -> 6341 bytes .../drawable-nodpi/shuttle_p_m2_line_tile.png | Bin 0 -> 993 bytes .../shuttle_p_m2_map_car_icon.png | Bin 0 -> 1940 bytes .../shuttle_p_m2_map_end_icon.png | Bin 0 -> 3558 bytes .../shuttle_p_m2_map_start_icon.png | Bin 0 -> 3440 bytes .../shuttle_p_m2_map_staton_arrived_icon.png | Bin 0 -> 973 bytes .../shuttle_p_m2_map_staton_icon.png | Bin 0 -> 1018 bytes .../shuttle_p_m2_p_video_holder.png | Bin 0 -> 541003 bytes .../m2/drawable-nodpi/shuttle_p_m2_sky_bg.png | Bin 0 -> 197480 bytes .../shuttle_p_m2_status_bar_logo.png | Bin 0 -> 2951 bytes .../shuttle_p_m2_video_bottom_left.png | Bin 0 -> 924 bytes .../shuttle_p_m2_video_bottom_right.png | Bin 0 -> 920 bytes .../shuttle_p_m2_video_top_left.png | Bin 0 -> 925 bytes .../shuttle_p_m2_video_top_right.png | Bin 0 -> 894 bytes .../shuttle_p_m2_youzhuan_open.png | Bin 0 -> 2730 bytes .../shuttle_p_m2_youzhuan_un_open.png | Bin 0 -> 590 bytes .../shuttle_p_m2_zuozhuan_open.png | Bin 0 -> 1857 bytes .../shuttle_p_m2_zuozhuan_un_open.png | Bin 0 -> 612 bytes .../drawable/shuttle_p_m2_bg_dashed_line.xml | 7 + ...shuttle_p_m2_bg_driving_arrived_notice.xml | 6 + ...ttle_p_m2_bg_driving_distance_lefttime.xml | 6 + .../drawable/shuttle_p_m2_bg_driving_info.xml | 10 + .../shuttle_p_m2_bg_driving_selector.xml | 8 + .../shuttle_p_m2_bg_p_m2_arrived_station.xml | 10 + .../m2/drawable/shuttle_p_m2_bg_p_m2_auto.xml | 7 + .../shuttle_p_m2_bg_p_m2_traffic_light.xml | 7 + .../res/m2/drawable/shuttle_p_m2_bg_pnc.xml | 5 + ...tle_p_m2_brakelight_background_daytime.xml | 5 + .../shuttle_p_m2_power_seekbar_style.xml | 26 + .../shuttle_p_m2_driving_info_fragment.xml | 379 +++++ .../res/m2/layout/shuttle_p_m2_fragment.xml | 167 +++ .../m2/layout/shuttle_p_m2_hpmap_fragment.xml | 18 + .../shuttle_p_m2_traffic_light_view.xml | 36 + .../layout/shuttle_p_m2_turn_light_status.xml | 53 + .../m2/layout/shuttle_p_m2_video_fragment.xml | 13 + .../res/m2/layout/shuttle_p_m2_video_view.xml | 8 + .../layout/shuttle_p_m2_view_blue_tooth.xml | 15 + .../layout/shuttle_p_m2_view_status_bar.xml | 84 ++ .../src/main/res/m2/raw/star_marker.nt3d | Bin 0 -> 844965 bytes .../src/main/res/m2/raw/station_marker.nt3d | Bin 0 -> 1047904 bytes .../src/main/res/m2/values/colors.xml | 27 + .../src/main/res/m2/values/dimens.xml | 3 + .../src/main/res/m2/values/strings.xml | 14 + .../test/java/passenger/ExampleUnitTest.java | 15 + .../och/shuttle/presenter/BusPresenter.java | 1 - .../core/data/config/FunctionBuildConfig.kt | 8 + settings.gradle | 3 + 347 files changed, 14966 insertions(+), 13 deletions(-) create mode 100644 OCH/common/biz/src/main/res/drawable/baseline_link_off_24.xml create mode 100644 OCH/offline/driver/.gitignore create mode 100644 OCH/offline/driver/build.gradle create mode 100644 OCH/offline/driver/consumer-rules.pro create mode 100644 OCH/offline/driver/gradle.properties create mode 100644 OCH/offline/driver/proguard-rules.pro create mode 100644 OCH/offline/driver/src/main/AndroidManifest.xml create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/ShuttleDriverProvider.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BindLineListResponse.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusCloseTaskRequest.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusOrderBean.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusOrdersResponse.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusQueryLineStationsRequest.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusQueryLineTaskResponse.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusQueryLinesResponse.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusResetDrivingLineRequest.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusRoutesResponse.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusUpdateSiteStatusRequest.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/QueryLeaveAwayPassengersRequest.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/QueryLeaveAwayPassengersResponse.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/WriteOffCountResponse.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/WriteOffPassenger.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IBusADASStatusCallback.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IBusControllerStatusCallback.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IBusLinesCallback.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IRefreshBusStationsCallback.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/ISlidePannelHideCallback.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/constant/BusConst.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/fragment/BaseShuttleTabFragment.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/fragment/ShuttleFragment.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/model/BusLineModel.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/model/OrderModel.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/model/TicketModel.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/net/IBascApiService.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/net/OrderServiceManager.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/presenter/BusLinePresenter.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/presenter/BusPresenter.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/BusStationCommonItem.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/BusSwitchLineActivity.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/BusSwitchLineView.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/adapter/OpenItemAnimator.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/adapter/SwitchLineAdapter.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/adapter/SwitchLineTaskAdapter.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/writeoff/WriteOffView.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/writeoff/WriteOffViewModel.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusAnalyticsManager.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusSendTripInfoManager.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusTrajectoryManager.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/util/ShuttleVoiceManager.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/view/BizMapView.kt create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/view/SlidePanelView.java create mode 100644 OCH/offline/driver/src/main/java/com/mogo/och/offline/view/VerticalDashLineView.java create mode 100644 OCH/offline/driver/src/main/res/color/bus_autopilot_text_color_selector.xml create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_base_icon_in_autopilot.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_base_icon_not_in_autopilot.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_base_slide_block.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_disable_autopilot_icon.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_dot_line.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_ic_autopilot.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_icon_arrived_station.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_icon_arriving_station.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_icon_not_arrive_station.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_light_green_nor.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_light_red_nor.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_lightyellow_nor.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/bus_line_panel_bg.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/bus_line_panel_bg_1.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_line_task_arrow.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_loading_autopilot_icon.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/bus_no_line_icon.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_och_dot_line.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_operation_status_bg.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_operation_status_select_bg.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_right_autopilot_icon.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_selected_btn.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_setting_btn_bg.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_switch_line_close.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/bus_switch_map_long.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/bus_switch_map_medium.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_unselect_btn.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/bus_wrong_autopilot_icon.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/end_maker_icon.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_ai_collect.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_ai_normal.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_ai_select.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_arrow_blue_bus.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_arrow_green_bus.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_arrow_grey_bus.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_bad_case.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_bad_case_normal.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_bad_case_select.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_no_bus_line.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_point_blue_bus.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_point_green_bus.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/icon_point_grey_bus.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/icon_station_start_end.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/no_order_data.png create mode 100644 OCH/offline/driver/src/main/res/drawable-nodpi/pingxingjiashi.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/press_start_status.png create mode 100755 OCH/offline/driver/src/main/res/drawable-nodpi/shuttle_write_off_bg.png create mode 100755 OCH/offline/driver/src/main/res/drawable/ai_collect_selector.xml create mode 100755 OCH/offline/driver/src/main/res/drawable/bad_case_selector.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bg_bus_traffic_light_background.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_autopilot_0_1_status_bg.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_base_autopilot_status_icon_selector.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_checkbox_selector.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_line_dividing_line1_selector.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_line_dividing_line2_selector.xml create mode 100755 OCH/offline/driver/src/main/res/drawable/bus_operation_status_bg_selector.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_panel_anchor_bkg.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_panel_bkg.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_setting_tip_red_cir_bg.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_bg_normal.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_bg_selected.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_time_bg.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_time_bg_selected.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_station_green_dash_line.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_station_v_green_dash.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_switch_line_btn.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_switch_line_btn_commit.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_switch_map_bg.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_task_time_bg.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_yi_biao_pan_bg_nor.xml create mode 100644 OCH/offline/driver/src/main/res/drawable/bus_yi_biao_pan_bg_speeding.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_base_fragment.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_fragment_och.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_jl_bizmap_map.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_m2_bizmap_map.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_no_data_common_view.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_no_line_view.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_stations_common_item.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_switch_line.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_switch_line_list_item.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_switch_line_list_task_item.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_tap_position.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_test_bar_view.xml create mode 100644 OCH/offline/driver/src/main/res/layout/shuttle_wirte_off_view.xml create mode 100644 OCH/offline/driver/src/main/res/raw/bus_away_passengers.json create mode 100644 OCH/offline/driver/src/main/res/raw/bus_di.mp3 create mode 100644 OCH/offline/driver/src/main/res/raw/bus_order_1.json create mode 100644 OCH/offline/driver/src/main/res/raw/bus_station_list1.json create mode 100644 OCH/offline/driver/src/main/res/raw/bus_station_list2.json create mode 100644 OCH/offline/driver/src/main/res/raw/end_marker.nt3d create mode 100644 OCH/offline/driver/src/main/res/raw/star_marker.nt3d create mode 100644 OCH/offline/driver/src/main/res/values/attrs.xml create mode 100644 OCH/offline/driver/src/main/res/values/colors.xml create mode 100644 OCH/offline/driver/src/main/res/values/dimens.xml create mode 100644 OCH/offline/driver/src/main/res/values/strings.xml create mode 100644 OCH/offline/driver/src/main/res/values/style.xml create mode 100644 OCH/offline/driver/src/main/res/xml/bus_switch_line_list_item_scene.xml create mode 100644 OCH/offline/passenger/.gitignore create mode 100644 OCH/offline/passenger/README.md create mode 100644 OCH/offline/passenger/build.gradle create mode 100644 OCH/offline/passenger/consumer-rules.pro create mode 100644 OCH/offline/passenger/gradle.properties create mode 100644 OCH/offline/passenger/proguard-rules.pro create mode 100644 OCH/offline/passenger/src/androidTest/java/passenger/ExampleInstrumentedTest.java create mode 100644 OCH/offline/passenger/src/main/AndroidManifest.xml create mode 100755 OCH/offline/passenger/src/main/assets/m2_map_style.data create mode 100755 OCH/offline/passenger/src/main/assets/m2_map_style_extra.data create mode 100644 OCH/offline/passenger/src/main/assets/map_style.data create mode 100644 OCH/offline/passenger/src/main/assets/map_style_extra.data create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/ShuttlePassengerProvider.kt create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/request/PassengerQueryLineRequest.java create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/request/PassengerWriteOffRequest.java create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/response/PassengerOperationStatusResponse.java create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/response/PassengerRoutesResponse.java create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/bean/response/PassengerWriteOffResponse.kt create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/constant/BusPassengerConst.kt create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerChainLogManager.kt create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerManager.kt create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/ScannerStateView.kt create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/manager/scnner/StateChangeListener.kt create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/model/TicketModel.kt create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/network/PassengerServiceManager.kt create mode 100644 OCH/offline/passenger/src/main/java/com/mogo/och/shuttle/passenger/network/ServiceApi.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/callback/IBusPassegerDriverStatusCallback.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/callback/IBusPassengerADASStatusCallback.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/callback/IBusPassengerAutopilotPlanningCallback.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/callback/IBusPassengerControllerStatusCallback.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/callback/IBusPassengerRouteLineInfoCallback.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/model/BusPassengerModel.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/network/BusPassengerModelLoopManager.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/presenter/BaseBusPassengerPresenter.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPBlueToothView.kt create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPStatusBarView.kt create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerBaseFragment.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerRouteFragment.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/BusPassengerTrafficLightView.kt create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/adapter/BusPassengerLineStationsAdapter.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/layoutmanager/CenterLayoutManager.java create mode 100644 OCH/offline/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/ui/widget/BusPTurnLightView.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/callback/ADASCallback.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/callback/AutoPilotStatusCallback.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/callback/DrivingInfoCallback.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/constant/M2Const.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2ADASModel.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/model/PM2DrivingModel.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/presenter/PM2ADASPresenter.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/presenter/PM2DrivingPresenter.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/presenter/PM2Presenter.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/PM2BaseFragment.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/PM2DrivingInfoFragment.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/PM2HPMapFragment.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/widget/M2BlueToothView.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/widget/M2PTrafficLightView.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/widget/M2StatusBarView.kt create mode 100644 OCH/offline/passenger/src/main/java/m2/com/mogo/och/shuttle/passenger/ui/widget/M2TurnLightView.kt create mode 100644 OCH/offline/passenger/src/main/res/drawable/scanner_qr_code.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_arrive_line_blue.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_arrive_line_green.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_auto_close.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_auto_open.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_bg_arrived_station.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_bg_end_tag_bg.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_bg_start_tag_bg.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_blue_tooth_close.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_blue_tooth_open.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_bus_line_logo.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_cur_station_arrived_bg.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_cur_station_un_arrived_bg.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_light_green_nor.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_light_red_nor.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_light_yellow_nor.png create mode 100755 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_line_blue.png create mode 100755 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_line_green.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_map_arrived_point.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_map_arrow_arrived.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_map_arrow_un_arrive.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_map_car.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_map_end_point.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_map_start_point.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_map_unarrived_point.png create mode 100755 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_no_order_data.png create mode 100755 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_point_blue.png create mode 100755 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_point_gray.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_right_route_bg.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_route_bg.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_speak_arrived_icon_0.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_speak_arrived_icon_1.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_speak_arrived_icon_2.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_split_line_bg.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_status_bar_logo.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_youzhuan_open.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_youzhuan_un_open.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_zuozhuan_open.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable-nodpi/shuttle_p_jl_zuozhuan_un_open.png create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable/shuttle_p_jl_bg_end_station_circle.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable/shuttle_p_jl_bg_middle_station_circle.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable/shuttle_p_jl_bg_progress_bar.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable/shuttle_p_jl_bg_speak_icon_arrived.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable/shuttle_p_jl_bg_start_station_circle.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable/shuttle_p_jl_bg_status_bar.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable/shuttle_p_jl_bg_traffic_light_background.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable/shuttle_p_jl_brakelight_background_daytime.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable/shuttle_p_jl_dividing_line_bg.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable/shuttle_p_jl_panel_cur_station_panel.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/drawable/shuttle_p_jl_progress_item_round.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/layout/shuttle_p_jl_base_fragment.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/layout/shuttle_p_jl_map_view.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/layout/shuttle_p_jl_no_data_common_view.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/layout/shuttle_p_jl_route_fragment.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/layout/shuttle_p_jl_stations_common_item.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/layout/shuttle_p_jl_traffic_light_view.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/layout/shuttle_p_jl_turn_light_status.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/layout/shuttle_p_jl_view_blue_tooth.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/layout/shuttle_p_jl_view_status_bar.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/values/colors.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/values/dimens.xml create mode 100644 OCH/offline/passenger/src/main/res/jinlv/values/strings.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_amap_arrived_road.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_amap_arriving_road.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_amap_custom_corner.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_arrived_an_0.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_arrived_an_1.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_arrived_an_2.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_auto_button_bg.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_bg_driving_info_image.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_blue_tooth_close.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_blue_tooth_open.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_bottom_bg.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_card_split.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_clock_bg.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_img_drive_bg.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_img_line_bg.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_img_time_bg.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_light_green_nor.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_light_red_nor.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_light_yellow_nor.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_lightyellow_nor.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_line_name.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_line_noselect.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_line_tile.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_map_car_icon.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_map_end_icon.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_map_start_icon.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_map_staton_arrived_icon.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_map_staton_icon.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_p_video_holder.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_sky_bg.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_status_bar_logo.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_video_bottom_left.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_video_bottom_right.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_video_top_left.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_video_top_right.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_youzhuan_open.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_youzhuan_un_open.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_zuozhuan_open.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable-nodpi/shuttle_p_m2_zuozhuan_un_open.png create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable/shuttle_p_m2_bg_dashed_line.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable/shuttle_p_m2_bg_driving_arrived_notice.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable/shuttle_p_m2_bg_driving_distance_lefttime.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable/shuttle_p_m2_bg_driving_info.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable/shuttle_p_m2_bg_driving_selector.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable/shuttle_p_m2_bg_p_m2_arrived_station.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable/shuttle_p_m2_bg_p_m2_auto.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable/shuttle_p_m2_bg_p_m2_traffic_light.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable/shuttle_p_m2_bg_pnc.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable/shuttle_p_m2_brakelight_background_daytime.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/drawable/shuttle_p_m2_power_seekbar_style.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/layout/shuttle_p_m2_driving_info_fragment.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/layout/shuttle_p_m2_fragment.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/layout/shuttle_p_m2_hpmap_fragment.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/layout/shuttle_p_m2_traffic_light_view.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/layout/shuttle_p_m2_turn_light_status.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/layout/shuttle_p_m2_video_fragment.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/layout/shuttle_p_m2_video_view.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/layout/shuttle_p_m2_view_blue_tooth.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/layout/shuttle_p_m2_view_status_bar.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/raw/star_marker.nt3d create mode 100644 OCH/offline/passenger/src/main/res/m2/raw/station_marker.nt3d create mode 100644 OCH/offline/passenger/src/main/res/m2/values/colors.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/values/dimens.xml create mode 100644 OCH/offline/passenger/src/main/res/m2/values/strings.xml create mode 100644 OCH/offline/passenger/src/test/java/passenger/ExampleUnitTest.java diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt index 91f646502d..6086c90504 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt @@ -8,6 +8,7 @@ import com.mogo.commons.module.intent.IMogoIntentListener import com.mogo.commons.module.intent.IntentManager import com.mogo.commons.storage.SharedPrefsMgr import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02 import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -176,17 +177,19 @@ object LoginModel { LoginStatusManager.setBusinessType(data.data.businessType) iTaxiLoginCallback?.searchStatusSuccess() // 后台已登录 - if (valueOf(data.data.driverStatus) == LoginStatusEnum.Login) { - // 业务不支持 去退出登录 - if (!LoginStatusManager.checkBusiness(data.data.businessType)) { - val mLatitude = getChassisLocationGCJ02().latitude - val mLongitude = getChassisLocationGCJ02().longitude - LoginStatusManager.loginOut(mLatitude, mLongitude) - return + if(!FunctionBuildConfig.isOffLine){ + if (valueOf(data.data.driverStatus) == LoginStatusEnum.Login) { + // 业务不支持 去退出登录 + if (!LoginStatusManager.checkBusiness(data.data.businessType)) { + val mLatitude = getChassisLocationGCJ02().latitude + val mLongitude = getChassisLocationGCJ02().longitude + LoginStatusManager.loginOut(mLatitude, mLongitude) + return + } } + LoginStatusManager.setLoginStatus(data.data.driverStatus) } LoginStatusManager.setOpenOrderType(data.data.servingStatus) - LoginStatusManager.setLoginStatus(data.data.driverStatus) LoginStatusManager.setLoginInfo(data.data) d(SceneConstant.M_TAXI + TAG, "登录信息:$data") loginSuccess(data) @@ -222,6 +225,10 @@ object LoginModel { // 登出 fun logout(mLatitude: Double, mLongitude: Double) { val location4Login = TaxiLogoutReqBean.Location4Login(mLatitude, mLongitude) + if (FunctionBuildConfig.isOffLine) { + LoginStatusManager.setLoginStatus(LoginStatusEnum.Logout) + return + } OchCommonServiceManager.logout( mContext!!, location4Login, object : OchCommonServiceCallback { @@ -275,4 +282,9 @@ object LoginModel { updateLoginLocalStatus(0) } + fun gotoOfflineMode() { + FunctionBuildConfig.isOffLine = true + LoginStatusManager.setLoginStatus(LoginStatusEnum.Login) + } + } \ No newline at end of file diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt index 903224173b..8bc8461591 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt @@ -127,4 +127,8 @@ class LoginPresenter(view: LoginFragment?) : Presenter(view), IT this.code = null } + fun gotoOfflineMode() { + LoginModel.gotoOfflineMode() + } + } \ No newline at end of file diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt index 1e576c5cf1..d42689f0eb 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt @@ -35,6 +35,7 @@ import kotlinx.android.synthetic.main.biz_login_view.biz_actv_welcome_login_titl import kotlinx.android.synthetic.main.biz_login_view.biz_cl_driver_main import kotlinx.android.synthetic.main.biz_login_view.bv_switch_business import kotlinx.android.synthetic.main.biz_login_view.eiv_Info +import kotlinx.android.synthetic.main.biz_login_view.iv_login_offline /** @@ -109,6 +110,9 @@ class LoginFragment : MvpFragment(), ILoginView biz_actv_login_get_code.onClick { mPresenter?.getPhoneCode(biz_ace_login_phone_value.text.toString()) } + iv_login_offline.setOnClickListener { + mPresenter?.gotoOfflineMode() + } biz_ace_login_phone_value.addTextChangedListener { it?.let { itEditable -> diff --git a/OCH/common/biz/src/main/res/drawable/baseline_link_off_24.xml b/OCH/common/biz/src/main/res/drawable/baseline_link_off_24.xml new file mode 100644 index 0000000000..2fbc2cfbfc --- /dev/null +++ b/OCH/common/biz/src/main/res/drawable/baseline_link_off_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/OCH/common/biz/src/main/res/layout/biz_login_view.xml b/OCH/common/biz/src/main/res/layout/biz_login_view.xml index 2822e391fe..5602a54da0 100644 --- a/OCH/common/biz/src/main/res/layout/biz_login_view.xml +++ b/OCH/common/biz/src/main/res/layout/biz_login_view.xml @@ -159,5 +159,16 @@ android:layout_width="wrap_content" android:layout_height="wrap_content"/> + + \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/lansocket/LoginLanDriverSocket.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/lansocket/LoginLanDriverSocket.kt index 05cbd27f3f..1875a03865 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/lansocket/LoginLanDriverSocket.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/lansocket/LoginLanDriverSocket.kt @@ -1,5 +1,6 @@ package com.mogo.och.common.module.biz.lansocket +import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.och.common.module.BuildConfig import com.mogo.och.common.module.biz.login.ILoginCallback import com.mogo.och.common.module.biz.login.LoginStatusEnum diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginStatusManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginStatusManager.kt index 4acc1d99f0..c99de1fb1f 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginStatusManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginStatusManager.kt @@ -3,6 +3,7 @@ package com.mogo.och.common.module.biz.login import androidx.fragment.app.Fragment import com.alibaba.android.arouter.launcher.ARouter +import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.manager.loop.LoopInfo @@ -99,6 +100,10 @@ object LoginStatusManager : CallerBase() { @JvmStatic fun setLoginStatus(loginStatus: LoginStatusEnum) { + if(FunctionBuildConfig.isOffLine){ + loginService?.setLoginStatus(LoginStatusEnum.Login) + return + } loginService?.setLoginStatus(loginStatus) } @@ -119,10 +124,12 @@ object LoginStatusManager : CallerBase() { } fun invokeLoginStatusChange(currentStatus: LoginStatusEnum) { - if(currentStatus==LoginStatusEnum.Login){ - BizLoopManager.setLoopFunction(TAGLoopStatus, LoopInfo(60*2, ::queryLoginStatusByNet,immediately = true, scheduler = Schedulers.io())) - }else{ - BizLoopManager.removeLoopFunction(TAGLoopStatus) + if(!FunctionBuildConfig.isOffLine){ + if(currentStatus==LoginStatusEnum.Login){ + BizLoopManager.setLoopFunction(TAGLoopStatus, LoopInfo(60*2, ::queryLoginStatusByNet,immediately = true, scheduler = Schedulers.io())) + }else{ + BizLoopManager.removeLoopFunction(TAGLoopStatus) + } } M_LISTENERS.forEach { val listener = it.value diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt index cae81e1970..fb092bcf23 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt @@ -47,6 +47,10 @@ class OchCommonConst { const val TAXI_UNMANNED_DRIVER = "/taxiunman/taxiunmandriver" const val TAXI_UNMANNED_PASSENGER = "/taxiunman/taxiunmanpassenger" + const val OFFLINE_DRIVER = "/offline/offlinedriver" + const val OFFLINE_PASSENGER = "/offline/offlinepassenger" + + const val BUSINESS_STRING = 100 // 自动驾驶自动规划的最大距离 diff --git a/OCH/facade/script/och.gradle b/OCH/facade/script/och.gradle index f992990782..e8b94fefd1 100644 --- a/OCH/facade/script/och.gradle +++ b/OCH/facade/script/och.gradle @@ -4,6 +4,13 @@ project.dependencies { if (Boolean.valueOf(USE_MAVEN_PACKAGE)) { } else { + + if (isDriver()) { + implementation project.project(':OCH:offline:driver') + }else if(isPassenger){ + implementation project.project(':OCH:offline:passenger') + } + if (isCurrentDriver("C1")) { implementation project.project(':OCH:sweeper:driver') } else if (isCurrentDriver("B1")) { diff --git a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt index 35ad76da5a..4dcb8aa162 100644 --- a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt +++ b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt @@ -76,6 +76,13 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback { } private fun getFragment(): Fragment { + if(FunctionBuildConfig.isOffLine){ + if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){ + return getFragmentByServeName(OchCommonConst.OFFLINE_DRIVER) + }else if(AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)){ + return getFragmentByServeName(OchCommonConst.OFFLINE_PASSENGER) + } + } if (AppIdentityModeUtils.isBusDriver(FunctionBuildConfig.appIdentityMode)) { return getFragmentByServeName(OchCommonConst.BUS_DRIVER) } else if (AppIdentityModeUtils.isShuttleDriver(FunctionBuildConfig.appIdentityMode)) { diff --git a/OCH/offline/driver/.gitignore b/OCH/offline/driver/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/OCH/offline/driver/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/OCH/offline/driver/build.gradle b/OCH/offline/driver/build.gradle new file mode 100644 index 0000000000..72d90e458e --- /dev/null +++ b/OCH/offline/driver/build.gradle @@ -0,0 +1,69 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' + +android { + compileSdkVersion rootProject.ext.android.compileSdkVersion + // buildToolsVersion rootProject.ext.android.buildToolsVersion + defaultConfig { + minSdkVersion rootProject.ext.android.minSdkVersion + targetSdkVersion rootProject.ext.android.targetSdkVersion + versionCode Integer.valueOf(VERSION_CODE) + versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION") + + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles "consumer-rules.pro" + + kapt { + useBuildCache = false + arguments { + arg("AROUTER_MODULE_NAME", "offline"+project.getName()) + } + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + lintOptions { + abortOnError false + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + debug { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + +} + +dependencies { + implementation fileTree(dir: "libs", include: ["*.jar"]) + implementation rootProject.ext.dependencies.kotlinstdlib + implementation rootProject.ext.dependencies.androidxappcompat + implementation rootProject.ext.dependencies.arouter + kapt rootProject.ext.dependencies.aroutercompiler + implementation rootProject.ext.dependencies.androidxconstraintlayout + implementation rootProject.ext.dependencies.amapnavi3dmap + + implementation rootProject.ext.dependencies.rxjava + implementation rootProject.ext.dependencies.rxandroid + implementation rootProject.ext.dependencies.androidxrecyclerview + compileOnly rootProject.ext.dependencies.recyclerviewadapterhelper + + implementation project(":OCH:common:common") + implementation project(":OCH:common:data") + compileOnly project(":libraries:mogo-map") + +} + +apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString() \ No newline at end of file diff --git a/OCH/offline/driver/consumer-rules.pro b/OCH/offline/driver/consumer-rules.pro new file mode 100644 index 0000000000..e69de29bb2 diff --git a/OCH/offline/driver/gradle.properties b/OCH/offline/driver/gradle.properties new file mode 100644 index 0000000000..dd5c44ee62 --- /dev/null +++ b/OCH/offline/driver/gradle.properties @@ -0,0 +1,3 @@ +GROUP=com.mogo.och +POM_ARTIFACT_ID=och-bus +VERSION_CODE=1 diff --git a/OCH/offline/driver/proguard-rules.pro b/OCH/offline/driver/proguard-rules.pro new file mode 100644 index 0000000000..481bb43481 --- /dev/null +++ b/OCH/offline/driver/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/OCH/offline/driver/src/main/AndroidManifest.xml b/OCH/offline/driver/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..9c5c97035f --- /dev/null +++ b/OCH/offline/driver/src/main/AndroidManifest.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/ShuttleDriverProvider.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ShuttleDriverProvider.kt new file mode 100644 index 0000000000..d835659952 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ShuttleDriverProvider.kt @@ -0,0 +1,38 @@ +package com.mogo.och.offline + +import android.content.Context +import androidx.fragment.app.Fragment +import com.alibaba.android.arouter.facade.annotation.Route +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.och.offline.fragment.ShuttleFragment +import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.biz.provider.CommonServiceImpl + +/** + * 网约车小巴业务实现入口 + * + * @author tongchenfei + */ +@Route(path = OchCommonConst.OFFLINE_DRIVER) +class ShuttleDriverProvider : CommonServiceImpl() { + + private val TAG = ShuttleDriverProvider::class.java.simpleName + private var busFragment: ShuttleFragment?=null + + override fun init(context: Context) { + d(SceneConstant.M_TAXI + TAG, "init") + } + + override fun getFragment(): Fragment { + if(busFragment==null){ + busFragment = ShuttleFragment() + } + return busFragment!! + } + + override fun resetFragment() { + busFragment = null + } + +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BindLineListResponse.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BindLineListResponse.kt new file mode 100644 index 0000000000..2b9193b838 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BindLineListResponse.kt @@ -0,0 +1,35 @@ +package com.mogo.och.offline.bean + +import com.mogo.eagle.core.data.BaseData +import java.util.* + +/** + * + */ +data class BindLineListResponse(val data: List?) : BaseData(){ + + data class LineInfo( + val lineId:Long?, + val lineName:String?, + val siteList: List?,//站点名称 + val contrail: Contrail?,//站点名称 + ) + + data class SiteInfo( + val siteId:Long?, + val name:String?, + val seq:Double?, + val gcjLon:Double?, + val gcjLat:Double?, + val lon:Double?, + val lat:Double?, + ) + data class Contrail( + val csvFileUrl:String?, + val csvFileMd5:String?, + val txtFileUrl:String?, + val txtFileMd5:String?, + val contrailSaveTime:Long?, + ) +} + diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusCloseTaskRequest.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusCloseTaskRequest.java new file mode 100644 index 0000000000..eea31805d6 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusCloseTaskRequest.java @@ -0,0 +1,23 @@ +package com.mogo.och.offline.bean; + +import com.mogo.commons.storage.SharedPrefsMgr; +import com.mogo.och.common.module.utils.DateTimeUtil; + +/** + * 中止/结束任务请求 + */ +public class BusCloseTaskRequest { + + private String sn; + private int taskId; + private long writeVersion; + public BusCloseTaskRequest(int taskId) { + this.sn = SharedPrefsMgr.getInstance().getSn(); + this.taskId = taskId; + this.writeVersion = DateTimeUtil.getCurrentTimeStamp(); + } + + public String getSn() { + return sn; + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusOrderBean.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusOrderBean.java new file mode 100644 index 0000000000..fc3170d41f --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusOrderBean.java @@ -0,0 +1,86 @@ +package com.mogo.och.offline.bean; + +/** + * @author congtaowang + * @since 2021/3/23 + *

+ * 小巴订单 + */ +public class BusOrderBean { + + /** + * orderNo number + * passengerPhone string 下单用户电话 + * startStationId integer 开始站点 + * startStationName string + * endStationId integer 结束站点 + * endStationName string + */ + + private String orderNo; + private String passengerPhone; + private int startStationId;//乘客上车点 + private String startStationName; + private String endStationName; + private int endStationId;//乘客下车点 + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public void setPassengerPhone(String passengerPhone) { + this.passengerPhone = passengerPhone; + } + + public void setStartStationId(int startStationId) { + this.startStationId = startStationId; + } + + public void setStartStationName(String startStationName) { + this.startStationName = startStationName; + } + + public void setEndStationName(String endStationName) { + this.endStationName = endStationName; + } + + public void setEndStationId(int endStationId) { + this.endStationId = endStationId; + } + + public String getOrderNo() { + return orderNo; + } + + public String getPassengerPhone() { + return passengerPhone; + } + + public int getStartStationId() { + return startStationId; + } + + public String getStartStationName() { + return startStationName; + } + + public String getEndStationName() { + return endStationName; + } + + public int getEndStationId() { + return endStationId; + } + + @Override + public String toString() { + return "BusOrderBean{" + + "orderNo=" + orderNo + + ", passengerPhone='" + passengerPhone + '\'' + + ", startStationId=" + startStationId + + ", startStationName='" + startStationName + '\'' + + ", endStationName='" + endStationName + '\'' + + ", endStationId=" + endStationId + + '}'; + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusOrdersResponse.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusOrdersResponse.java new file mode 100644 index 0000000000..56aba7dad9 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusOrdersResponse.java @@ -0,0 +1,23 @@ +package com.mogo.och.offline.bean; + +import com.mogo.eagle.core.data.BaseData; + +import java.util.List; + +/** + * @author: wangmingjun + * @date: 2021/10/19 + */ +public class BusOrdersResponse extends BaseData { + public Result data; + public static class Result{ + public List orders; + } + + @Override + public String toString() { + return "BusOrdersResponse{" + + "data=" + data + + '}'; + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusQueryLineStationsRequest.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusQueryLineStationsRequest.java new file mode 100644 index 0000000000..c78836bf1a --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusQueryLineStationsRequest.java @@ -0,0 +1,17 @@ +package com.mogo.och.offline.bean; + +import com.mogo.commons.storage.SharedPrefsMgr; + +/** + * @author congtaowang + * @since 2021/3/22 + * + * 根据车机行驶线路站点信息 + */ +public class BusQueryLineStationsRequest { + + private String sn; + public BusQueryLineStationsRequest() { + this.sn = SharedPrefsMgr.getInstance().getSn(); + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusQueryLineTaskResponse.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusQueryLineTaskResponse.java new file mode 100644 index 0000000000..0681099262 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusQueryLineTaskResponse.java @@ -0,0 +1,19 @@ +package com.mogo.och.offline.bean; + +import com.mogo.eagle.core.data.BaseData; + +import java.util.List; + +/** + * @author: wangmingjun + * @date: 2022/2/9 + */ +public class BusQueryLineTaskResponse extends BaseData { + + public List data; + + public static class Result { + public int id; + public long taskStartTime; + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusQueryLinesResponse.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusQueryLinesResponse.java new file mode 100644 index 0000000000..9d8d36a934 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusQueryLinesResponse.java @@ -0,0 +1,27 @@ +package com.mogo.och.offline.bean; + +import com.mogo.eagle.core.data.BaseData; + +import java.util.List; + +/** + * @author: wangmingjun + * @date: 2022/2/9 + */ +public class BusQueryLinesResponse extends BaseData { + public List data; + + public static class Result { + + public int lineId;//线路id + public String name;//线路名字 + public int choose; // 1:绑定 2:未被绑定 + public String startSiteName;//始发站名称 + public String endSiteName;//终点名称 + + public boolean open;//true 打开状态 false + public boolean haveTask; + + public List taskList; + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusResetDrivingLineRequest.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusResetDrivingLineRequest.java new file mode 100644 index 0000000000..793c7e2eb8 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusResetDrivingLineRequest.java @@ -0,0 +1,20 @@ +package com.mogo.och.offline.bean; + +import com.mogo.commons.storage.SharedPrefsMgr; +import com.mogo.och.common.module.utils.DateTimeUtil; + +/** + * @author: wangmingjun + * @date: 2021/10/18 + */ +public class BusResetDrivingLineRequest { + public String sn; + public int taskId; //切换到的线路id + public long writeVersion; //更新时间戳 + + public BusResetDrivingLineRequest(int taskId) { + this.sn = SharedPrefsMgr.getInstance().getSn(); + this.taskId = taskId; + this.writeVersion = DateTimeUtil.getCurrentTimeStamp(); + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusRoutesResponse.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusRoutesResponse.java new file mode 100644 index 0000000000..83dd7cdf40 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusRoutesResponse.java @@ -0,0 +1,28 @@ +package com.mogo.och.offline.bean; + +import com.mogo.eagle.core.data.BaseData; +import com.mogo.och.data.bean.BusRoutesResult; + +/** + * 网约车小巴路线接口请求响应结果 + * + * @author tongchenfei + */ +public class BusRoutesResponse extends BaseData { + private BusRoutesResult data; + + public BusRoutesResult getResult() { + return data; + } + + public void setResult(BusRoutesResult data) { + this.data = data; + } + + @Override + public String toString() { + return "BusRoutesResponse{" + + "data=" + data + + '}'; + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusUpdateSiteStatusRequest.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusUpdateSiteStatusRequest.java new file mode 100644 index 0000000000..edfc699be5 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/BusUpdateSiteStatusRequest.java @@ -0,0 +1,26 @@ +package com.mogo.och.offline.bean; + +import com.mogo.commons.storage.SharedPrefsMgr; + +/** + * @author congtaowang + * @since 2021/3/22 + * + * 小巴车运营状态请求参数 + */ +public class BusUpdateSiteStatusRequest { + + public String sn; + public int taskId; + public int seq;//站点序号 + public int siteId;//站点id + public long writeVersion; //更新时间戳 + + public BusUpdateSiteStatusRequest(int taskId,int siteId,int seq, long writeVersion) { + this.sn = SharedPrefsMgr.getInstance().getSn(); + this.seq = seq; + this.siteId = siteId; + this.taskId = taskId; + this.writeVersion = writeVersion; + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/QueryLeaveAwayPassengersRequest.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/QueryLeaveAwayPassengersRequest.java new file mode 100644 index 0000000000..c1bb4a1654 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/QueryLeaveAwayPassengersRequest.java @@ -0,0 +1,36 @@ +package com.mogo.och.offline.bean; + +import com.mogo.commons.storage.SharedPrefsMgr; + +/** + * 查询下车乘客请求参数 + * + * @author tongchenfei + */ +public class QueryLeaveAwayPassengersRequest { + private String sn; + private int seq; //站点在线路中的序号 + private int siteId; //站点id + + public QueryLeaveAwayPassengersRequest(int seq, int siteId) { + this.sn = SharedPrefsMgr.getInstance().getSn(); + this.seq = seq; + this.siteId = siteId; + } + + public void setSeq(int seq) { + this.seq = seq; + } + + public void setSiteId(int siteId) { + this.siteId = siteId; + } + + public int getSeq() { + return seq; + } + + public int getSiteId() { + return siteId; + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/QueryLeaveAwayPassengersResponse.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/QueryLeaveAwayPassengersResponse.java new file mode 100644 index 0000000000..365409625a --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/QueryLeaveAwayPassengersResponse.java @@ -0,0 +1,60 @@ +package com.mogo.och.offline.bean; + +import com.mogo.eagle.core.data.BaseData; + +import java.util.List; + +public +/** + * @author congtaowang + * @since 2021/3/26 + * + * 到站查询下车乘客 + */ +class QueryLeaveAwayPassengersResponse extends BaseData { + + public Result data; + + public static class Result { + + public List< LeaveAwayPassenger > orders; + } + + public static class LeaveAwayPassenger { + /** + * orderNo: 订单no + * orderStatus: 订单状态 + * orderType:订单类型:0及时,1预约 + * bookingTime:预计用车时间 + * businessType:订单运营类型 9:taxi,10:bus + * startSiteId: 起点站点id + * userPhone: 乘客联系方式 + * startSitePoint:开始站点坐标 + * startSiteAddr:开始地址 + * endSiteId:结束站点id + * endSitePoint:结束站点坐标 + * carNumber:车牌号 + * createTime: 创建时间 + * startTime:开始时间 + * startSiteGcjPoint:高精坐标 + * endSiteGcjPoint: + */ +//todo 目前是需要乘客电话来通知乘客下车 目前后台没有乘客信息userPhone + public String orderNo; + public int orderStatus; + public int orderType; + public long bookingTime; + public int businessType; + public int startSiteId; + public String passengerPhone; + public List startSitePoint; + public String startSiteAddr; + public int endSiteId; + public List endSitePoint; + public String carNumber; + public long createTime; + public long startTime; + public List< Double > startSiteGcjPoint; + public List< Double > endSiteGcjPoint; + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/WriteOffCountResponse.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/WriteOffCountResponse.java new file mode 100644 index 0000000000..5316701e4c --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/WriteOffCountResponse.java @@ -0,0 +1,15 @@ +package com.mogo.och.offline.bean; + +import com.mogo.eagle.core.data.BaseData; + +import java.util.List; + +/** + * @author: wangmingjun + * @date: 2022/2/9 + */ +public class WriteOffCountResponse extends BaseData { + + public Integer data; + +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/WriteOffPassenger.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/WriteOffPassenger.java new file mode 100644 index 0000000000..8e2e7f6532 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/bean/WriteOffPassenger.java @@ -0,0 +1,15 @@ +package com.mogo.och.offline.bean; + +import java.io.Serializable; + +/** + * @author: wangmingjun + * @date: 2022/9/23 + */ +public class WriteOffPassenger implements Serializable { + public String phone; + public String orderNo; + public String ticketName; + public int passengerSize; + public long writeOffTime; +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IBusADASStatusCallback.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IBusADASStatusCallback.java new file mode 100644 index 0000000000..6a98e9e439 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IBusADASStatusCallback.java @@ -0,0 +1,11 @@ +package com.mogo.och.offline.callback; + +/** + * Created on 2021/9/8 + * + * Model->Presenter回调:ADAS相关(自动驾驶状态回调,到达终点等等) + */ +public interface IBusADASStatusCallback { + //自驾返回失败 + void onStartAdasFailure(); +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IBusControllerStatusCallback.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IBusControllerStatusCallback.java new file mode 100644 index 0000000000..57b51f3ce9 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IBusControllerStatusCallback.java @@ -0,0 +1,15 @@ +package com.mogo.och.offline.callback; + +import com.mogo.eagle.core.data.map.MogoLocation; + +/** + * Created on 2021/9/10 + * + * Model->Presenter回调:状态控制器监听(accOn、adas ui show、voice ui show、push ui show、v2x ui show等等) + */ +public interface IBusControllerStatusCallback { + // 自车定位 + void onCarLocationChanged(MogoLocation location); + //开始开启自动驾驶 + void startOpenAutopilot(); +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IBusLinesCallback.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IBusLinesCallback.java new file mode 100644 index 0000000000..96a290129c --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IBusLinesCallback.java @@ -0,0 +1,14 @@ +package com.mogo.och.offline.callback; + +import com.mogo.och.offline.bean.BusQueryLineTaskResponse; +import com.mogo.och.offline.bean.BusQueryLinesResponse; + +/** + * @author: wangmingjun + * @date: 2022/2/9 + */ +public interface IBusLinesCallback { + void onBusLinesChange(BusQueryLinesResponse lines); + void onChangeLineIdSuccess(); + void onBusLineTasks(BusQueryLineTaskResponse o, int position,boolean autoRefresh); +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IRefreshBusStationsCallback.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IRefreshBusStationsCallback.java new file mode 100644 index 0000000000..ae121f7932 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/IRefreshBusStationsCallback.java @@ -0,0 +1,23 @@ +package com.mogo.och.offline.callback; + +import com.mogo.och.data.bean.BusStationBean; + +import java.util.List; + +/** + * @author: wangmingjun + * @date: 2021/10/22 + */ +public interface IRefreshBusStationsCallback { + void updateBusTaskStatus(String lineName,String lintTime, + List stationList, + int arrivingOrArrivedIndex, + boolean isArrived); + + /** + * 结束清理一遍、选择任务后清理一遍 + */ + void clearBusStationsMarkers(); + + void updateEmptyUi(); +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/ISlidePannelHideCallback.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/ISlidePannelHideCallback.java new file mode 100644 index 0000000000..1740015a4a --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/callback/ISlidePannelHideCallback.java @@ -0,0 +1,9 @@ +package com.mogo.och.offline.callback; + +/** + * @author: wangmingjun + * @date: 2021/10/22 + */ +public interface ISlidePannelHideCallback { + void hideSlidePanel(); +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/constant/BusConst.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/constant/BusConst.kt new file mode 100644 index 0000000000..baae3bea08 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/constant/BusConst.kt @@ -0,0 +1,60 @@ +package com.mogo.och.offline.constant + +import com.mogo.commons.debug.DebugConfig + +/** + * Created on 2021/12/6 + */ +class BusConst { + companion object { + // OCH arouter 路由path + const val PATH = "/driver/api" + + // 测试用的广播 + const val BROADCAST_TEST_BUS_CONTROL_TYPE_EXTRA_KEY = "sceneType" + // 无状态 + const val STATION_STATUS_IDLE = 0 + // 已过站(历史站) + const val STATION_STATUS_LEAVING = 1 + // 到站(当前站) + const val STATION_STATUS_STOPPED = 2 + // 未到站(未到站) + const val STATION_STATUS_ARRIVING = 3 + + // 上报心跳轮询ms + const val LOOP_PERIOD_60S = 60 * 1000L + // 开始服务启动自动驾驶等待时间(埋点上传) + const val LOOP_PERIOD_15S = 15 * 1000L + const val LOOP_PERIOD_1S = 1 * 1000L + const val LOOP_DELAY = 100L + + // 下发给MEC轨迹信息间隔时间 10秒 + const val LOOP_PERIOD_10S = 10 * 1000L + // 尝试下发给MEC轨迹最多10次 + const val LOOP_SEND_TRAJ_TIMES = 10 + + //起点UUID + const val BUS_START_MAP_MAKER = "bus_start_map_maker"; + //终点UUID + const val BUS_END_MAP_MAKER = "bus_end_map_maker"; + + + /** + * 订单起终点Marker类型 + */ + const val TYPE_MARKER_BUS_ORDER = "TYPE_MARKER_BUS_ORDER" + + const val TIMER_START_AUTOPILOT_INTERVAL = 20 * 1000L + + //围栏到站 暂定10米 + const val ARRIVE_AT_END_STATION_DISTANCE = 10 + + // 轮询 + const val LOOP_PASSENGER_5S = 5 * 1000L + const val LOOP_PASSENGER_2S = 2 * 1000L + const val LOOP_PASSENGER_1S = 1 * 1000L + const val LOOP_DELAY_500 = 500L + + const val DELAY_10S = 10 * 1000L + } +} \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/fragment/BaseShuttleTabFragment.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/fragment/BaseShuttleTabFragment.java new file mode 100644 index 0000000000..9b9c64472c --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/fragment/BaseShuttleTabFragment.java @@ -0,0 +1,558 @@ +package com.mogo.och.offline.fragment; + +import static com.mogo.och.offline.constant.BusConst.TIMER_START_AUTOPILOT_INTERVAL; + +import android.animation.ObjectAnimator; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.animation.LinearInterpolator; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.constraintlayout.widget.Group; +import androidx.core.content.ContextCompat; + +import com.mogo.commons.AbsMogoApplication; +import com.mogo.commons.mvp.IView; +import com.mogo.commons.mvp.MvpFragment; +import com.mogo.commons.mvp.Presenter; +import com.mogo.eagle.core.data.config.FunctionBuildConfig; +import com.mogo.eagle.core.data.config.HdMapBuildConfig; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; +import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotRecordListenerManager; +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; +import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView; +import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView; +import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView; +import com.mogo.eagle.core.function.smp.view.SmallMapView; +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; +import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener; +import com.mogo.eagle.core.utilcode.util.UiThreadHandler; +import com.mogo.map.MogoMap; +import com.mogo.map.uicontroller.IMogoMapUIController; +import com.mogo.och.common.module.utils.ResourcesUtils; +import com.mogo.och.offline.R; +import com.mogo.och.offline.model.OrderModel; +import com.mogo.och.offline.view.BizMapView; +import com.mogo.och.data.bean.BusRoutesResult; +import com.mogo.och.offline.view.SlidePanelView; +import com.mogo.och.common.module.utils.SoundPoolHelper; + +import org.greenrobot.eventbus.EventBus; +/** + * 网约车基础Fragment,主要负责布局通用界面,处理站点面板和通话面板互斥情况 + *

+ * 部分业务放在了此处处理 + * + * @author tongchenfei + */ +public abstract class BaseShuttleTabFragment> extends MvpFragment { + + private static final String TAG = "BaseBusTabFragment"; + + protected SlidePanelView slidePanelView; + private RelativeLayout ctvAutopilotStatus; + private ImageView ctvAutopilotStatusIv; + private TextView ctvAutopilotStatusTv; + protected TextView tvArrived; + private FrameLayout flStationPanelContainer; + private BizMapView mapBizView; + private Group groupTestPanel; + + protected SmallMapView smallMapView; + + //消息盒子 + private DriverMsgBoxButtonView viewDriverMsgBoxButton; + private DriverMsgBoxListView viewDriverMsgBoxList; + private DriverMsgBoxBubbleView viewDriverMsgBoxBubble; + + private ObjectAnimator autopilotLoadingAnimator; + + public boolean isAnimateRunning = false; + + /** + * 滑动按钮触发的事件 + */ + private final SlidePanelView.OnSlidePanelMoveToEndListener onSlideToEndListener = () -> { + // 此处做一个代理,处理一下共有情况 + if (getSlidePanelOnEndListener() != null) { + getSlidePanelOnEndListener().moveToEnd(); + } + }; + + @Override + protected int getLayoutId() { + return R.layout.shuttle_base_fragment; + } + + @Override + protected void initViews() { + mapBizView = findViewById(R.id.mapBizView); + groupTestPanel = findViewById(R.id.groupTestPanel); + slidePanelView = findViewById(R.id.module_mogo_och_slide_panel); + ctvAutopilotStatus = findViewById(R.id.module_mogo_och_autopilot_status); + ctvAutopilotStatusIv = findViewById(R.id.bus_autopilot_btn_iv); + ctvAutopilotStatusTv = findViewById(R.id.bus_autopolot_btn_tv); + flStationPanelContainer = findViewById(R.id.module_mogo_och_station_panel_container); + + tvArrived = findViewById(R.id.module_mogo_och_arrived_tv); + + FrameLayout flSpeed = findViewById(R.id.fl_speed); + if (flSpeed != null) { + CallerDevaToolsManager.INSTANCE.attachAutopilotBeforeLaunchView(flSpeed.getContext(), flSpeed); + } + + LayoutInflater.from(getContext()).inflate(getStationPanelViewId(), flStationPanelContainer); + slidePanelView.setOnSlidePanelMoveToEndListener(onSlideToEndListener); + + updateSwitchMapIcon(); + + initListener(); + setAutopilotBtnStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), + CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); + ctvAutopilotStatus.setOnClickListener(new OnPreventFastClickListener() { + + @Override + public void onClickImpl(View v) { + restartAutopilot(); + } + }); + + // 模拟 不可自动驾驶,目前场景是刚开机,adas还未和工控机连接 + findViewById(R.id.btnAutopilotDisable).setOnClickListener(view -> + debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE) + ); + + // 模拟 可自动驾驶,工控机连接正常,且处于人工干预状态 + findViewById(R.id.btnAutopilotEnable).setOnClickListener(view -> + debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE) + ); + + // 模拟 自动驾驶能力,自动驾驶中,可能是停车,可能是行进,但是是机器在处理车的前进后退,不是人 + findViewById(R.id.btnAutopilotRunning).setOnClickListener(view -> + debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) + ); + + findViewById(R.id.btnAutopilotPingxing).setOnClickListener(view -> + debugAutoPilotStatus(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING) + ); + + // 模拟 自动驾驶网约车回调数据 + findViewById(R.id.btnAutopilotArrive).setOnClickListener(view -> + debugArrivedStation() + ); + + tvArrived.setOnClickListener(view -> { + onArriveStation(); + }); + + //消息盒子 + viewDriverMsgBoxButton = findViewById(R.id.viewDriverMsgBoxButton); + viewDriverMsgBoxList = findViewById(R.id.viewDriverMsgBoxList); + viewDriverMsgBoxBubble = findViewById(R.id.viewDriverMsgBoxBubble); + viewDriverMsgBoxButton.setClickListener(show -> { + if(show){ + viewDriverMsgBoxList.setVisibility(View.VISIBLE); + viewDriverMsgBoxList.notifyData(); + viewDriverMsgBoxBubble.setVisibility(View.GONE); + viewDriverMsgBoxBubble.isShowData(false); + }else{ + viewDriverMsgBoxList.setVisibility(View.GONE); + viewDriverMsgBoxBubble.setVisibility(View.VISIBLE); + viewDriverMsgBoxBubble.isShowData(true); + } + }); + + smallMapView = findViewById(R.id.smallMapView); + } + + @Override + protected void initViews(Bundle savedInstanceState) { + super.initViews(savedInstanceState); + mapBizView.onCreate(savedInstanceState); + smallMapView.onCreateView(savedInstanceState); + } + + @Override + public void onResume() { + super.onResume(); + mapBizView.onResume(); + smallMapView.onResume(); + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container + , @Nullable Bundle savedInstanceState) { + EventBus.getDefault().register(this); + return super.onCreateView(inflater, container, savedInstanceState); + } + + protected abstract void onArriveStation(); + + private void updateSwitchMapIcon() { + + IMogoMapUIController mapUIController = CallerMapUIServiceManager.INSTANCE.getMapUIController(MogoMap.DEFAULT); + if(mapUIController!=null){ + if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) { + mapUIController.changeCurrentIcon(R.raw.m2); + HdMapBuildConfig.currentCarVrIconRes = R.raw.m2; + }else if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)) { + mapUIController.changeCurrentIcon(R.raw.xiaoba); + HdMapBuildConfig.currentCarVrIconRes = R.raw.xiaoba; + } + } + } + + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + super.onSaveInstanceState(outState); + mapBizView.onSaveInstanceState(outState); + } + + @Override + public void onLowMemory() { + super.onLowMemory(); + mapBizView.onLowMemory(); + } + + @Override + public void onPause() { + super.onPause(); + mapBizView.onPause(); + smallMapView.onPause(); + } + + @Override + public void onDestroyView() { + mapBizView.onDestroy(); + if(smallMapView != null){ + smallMapView.onDestroy(); + } + super.onDestroyView(); + CallerAutopilotRecordListenerManager.INSTANCE.removeListener(TAG); + EventBus.getDefault().unregister(this); + } + + /** + * 测试到站 + */ + protected abstract void debugArrivedStation(); + + private void initListener() { + + } + + /** + * 展示滑动按钮 + * + * @param text 指定的文字 + */ + public void showSlidePanel(String text) { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + slidePanelView.setText(text); + slidePanelView.setVisibility(View.VISIBLE); + } + }, UiThreadHandler.MODE.QUEUE); + setArrivedClikable(false); + } + + /** + * 设置进站按钮状态 + * + * @param isClickable + */ + public void setArrivedClikable(boolean isClickable) { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + tvArrived.setEnabled(isClickable); + if (isClickable) { + tvArrived.setTextColor(ContextCompat.getColor(AbsMogoApplication.getApp(),R.color.bus_white)); + } else { + tvArrived.setTextColor(ContextCompat.getColor(AbsMogoApplication.getApp(),R.color.bus_arrived_btn_un_clickable_color)); + } + } + }, UiThreadHandler.MODE.QUEUE); + } + + /** + * 隐藏滑动按钮 + */ + public void hideSlidePanel() { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + slidePanelView.setVisibility(View.GONE); + } + }, UiThreadHandler.MODE.QUEUE); + } + + public void playDI() { + SoundPoolHelper.getSoundPoolHelper().playSoundWithRedId(getContext(), R.raw.bus_di); + } + + /** + * 改变自动驾驶状态 + * + * @param autopilotStatus 0:不可用 1:可用状态 2:自动驾驶中 + */ + public void onAutopilotStatusChanged(int autopilotStatus,boolean canStartAuto) { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + changeAutopilotBtnView(autopilotStatus, isAnimateRunning,canStartAuto); + } + }, UiThreadHandler.MODE.QUEUE); + } + + public void setAutopilotBtnStatus(int autopilotStatus,boolean canStartAuto) { + if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE == autopilotStatus) {//0不可用 + ctvAutopilotStatusTv.setTextColor(ResourcesUtils.getColor(R.color.bus_autopilot_text_color_disable)); + ctvAutopilotStatusTv.setText(ResourcesUtils.getString(R.string.bus_loading_autopilot_runnig_tv)); + ctvAutopilotStatusIv.setImageResource(R.drawable.bus_disable_autopilot_icon); + ctvAutopilotStatus.setClickable(true); + ctvAutopilotStatus.setBackgroundResource(R.drawable.common_autopilot_start_fail); + } else { + ctvAutopilotStatusTv.setTextColor(AbsMogoApplication.getApp().getColor(R.color.bus_autopilot_text_color_normal)); + ctvAutopilotStatusIv.setImageResource(R.drawable.bus_ic_autopilot); + if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE == autopilotStatus) { //1可用 + ctvAutopilotStatusTv.setText(ResourcesUtils.getString(R.string.bus_loading_autopilot_runnig_tv)); + if(canStartAuto){ + ctvAutopilotStatus.setClickable(true); + ctvAutopilotStatus.setBackgroundResource(R.drawable.common_autopilot_press); + }else { + ctvAutopilotStatusTv.setTextColor(ResourcesUtils.getColor(R.color.bus_autopilot_text_color_disable)); + ctvAutopilotStatusIv.setImageResource(R.drawable.bus_disable_autopilot_icon); + ctvAutopilotStatus.setClickable(true); + ctvAutopilotStatus.setBackgroundResource(R.drawable.common_autopilot_start_fail); + } + } else if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == autopilotStatus) { + ctvAutopilotStatusTv.setText(R.string.bus_loading_autopilot_runnig_tv); + ctvAutopilotStatus.setClickable(true); + ctvAutopilotStatus.setBackgroundResource(R.drawable.common_autopilot_in_autopilot); + } else if (IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING + == autopilotStatus){ + ctvAutopilotStatusTv.setText(R.string.bus_pingxing_driver); + ctvAutopilotStatus.setClickable(false); + ctvAutopilotStatus.setBackgroundResource(R.drawable.common_autopilot_pxjs); + } + } + } + + public void updateAutopilotStatus(int autopilotStatus) { + if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING + == autopilotStatus) {//2 running + ctvAutopilotStatusIv.setImageResource(R.drawable.bus_right_autopilot_icon); + ctvAutopilotStatusTv.setTextColor(ResourcesUtils.getColor(R.color.bus_autopilot_text_color_normal)); + ctvAutopilotStatusTv.setText(ResourcesUtils.getString(R.string.bus_loading_autopilot_success_tv)); +// ctvAutopilotStatus.setSelected(false); + ctvAutopilotStatus.setClickable(false); + } else { + ctvAutopilotStatusIv.setImageResource(R.drawable.bus_wrong_autopilot_icon); + ctvAutopilotStatusTv.setTextColor(ResourcesUtils.getColor(R.color.bus_autopilot_text_color_normal)); + ctvAutopilotStatusTv.setText(ResourcesUtils.getString(R.string.bus_loading_autopilot_failure_tv)); + ctvAutopilotStatus.setClickable(false); +// ctvAutopilotStatus.setSelected(false); + } + UiThreadHandler.postDelayed(new Runnable() { + @Override + public void run() { + setAutopilotBtnStatus(autopilotStatus,CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); + } + }, 1000); + } + + private void changeAutopilotBtnView(int autopilotStatus, boolean isAnimateRunning,boolean canStartAuto) { + if (isAnimateRunning && IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING + != autopilotStatus) { + // 主动开启自动驾驶中,不为2(为0、1)则继续loading + return; + } + if (isAnimateRunning) { + stopAnimAndUpdateBtnStatus(); + } else { + setAutopilotBtnStatus(autopilotStatus,canStartAuto); + } + + } + + public void stopAnimAndUpdateBtnStatus() { + stopAutopilotAnimation(); + updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); + } + + /** + * 隐藏【自动驾驶】按钮 + */ + public void hideAutopilotBiz() { + } + + /** + * 展示【自动驾驶】按钮 + */ + public void showAutopilotBiz() { + } + + public SlidePanelView.OnSlidePanelMoveToEndListener getSlidePanelOnEndListener() { + return null; + } + + /** + * 获取站点面板view,在{@link #initViews()}时候添加到container中 + * + * @return 站点面板view + */ + public abstract int getStationPanelViewId(); + + /** + * 重新开启自动驾驶 + */ + public abstract void restartAutopilot(); + + /** + * 模拟自动驾驶返回状态 + * + * @param status + */ + public abstract void debugAutoPilotStatus(int status); + + /** + * 开启自动驾驶中间动画 + */ + public void startAutopilotAnimation() { + isAnimateRunning = true; + ctvAutopilotStatusTv.setText(ResourcesUtils.getString(R.string.bus_loading_autopilot_tv)); + ctvAutopilotStatusTv.setTextColor(ResourcesUtils.getColor(R.color.bus_autopilot_text_color_normal)); + ctvAutopilotStatus.setClickable(true); + ctvAutopilotStatusIv.setImageResource(R.drawable.bus_loading_autopilot_icon); + if (autopilotLoadingAnimator == null) { + autopilotLoadingAnimator = ObjectAnimator.ofFloat(ctvAutopilotStatusIv, "rotation", 0f, 360f); + autopilotLoadingAnimator.setInterpolator(new LinearInterpolator()); + autopilotLoadingAnimator.setRepeatCount(-1);//无限循环 + autopilotLoadingAnimator.setDuration(1000);//设置持续时间 + } + autopilotLoadingAnimator.start();//动画开始 + + startingAutoApilotCountDown(); + + } + + private void startingAutoApilotCountDown() { + //10s 若自动驾驶没有开启,则结束动画 + UiThreadHandler.postDelayed(new Runnable() { + @Override + public void run() { //未启动成功做处理 + if (isAnimateRunning) {// 只判断动画是否在进行,根据自动驾驶当前状态去设置自动驾驶状态 + stopAutopilotAnimation(); + updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState()); + } + } + }, TIMER_START_AUTOPILOT_INTERVAL); + + } + + /** + * 停止自动驾驶中间动画 + */ + protected void stopAutopilotAnimation() { + if (autopilotLoadingAnimator != null) { + autopilotLoadingAnimator.end(); + ctvAutopilotStatusIv.clearAnimation(); + autopilotLoadingAnimator = null; + isAnimateRunning = false; + } + } + +// /** +// * 迈速表实时更新 +// * +// * @param newSpeed +// */ +// public void updateSpeedView(float newSpeed) { +// int speed = (int) (Math.abs(newSpeed) * 3.6F); // 倒车时工控机反馈定位信息中speed为负值 +// if (mTrafficDataView != null) { +// mTrafficDataView.updateSpeedWithValue(speed); +// } +// } + + @Override + public void onDestroy() { + super.onDestroy(); + } + + /** + * bus调试面板打开关闭 + */ + public void debugTestBar() { + if (groupTestPanel.getVisibility() == View.VISIBLE) { + groupTestPanel.setVisibility(View.GONE); + } else { + groupTestPanel.setVisibility(View.VISIBLE); + } + } + + /** + * Bus调试信息:线路、轨迹等信息 + *

+ * START + */ + private View busTestBar; + private TextView lineIdTV; + private TextView lineNameTV; + private TextView trajMd5TV; + private TextView stopMd5TV; + private TextView trajMd5DPQPTV; + private TextView stopMd5DPQPTV; + + public void showHideTestBar() { + if (busTestBar == null) { + busTestBar = findViewById(R.id.module_mogo_och_bus_test_bar); + lineIdTV = findViewById(R.id.bus_test_bar_current_line_id); + lineNameTV = findViewById(R.id.bus_test_bar_current_line_name); + trajMd5TV = findViewById(R.id.bus_test_bar_current_traj_md5); + stopMd5TV = findViewById(R.id.bus_test_bar_current_stop_md5); + trajMd5DPQPTV = findViewById(R.id.bus_test_bar_current_traj_md5_dpqp); + stopMd5DPQPTV = findViewById(R.id.bus_test_bar_current_stop_md5_dpqp); + } + + if (busTestBar.getVisibility() == View.VISIBLE) { + busTestBar.setVisibility(View.GONE); + } else { + BusRoutesResult routesResult = OrderModel.getInstance().getBusRoutesResult(); + lineIdTV.setText("lineId:" + (routesResult == null ? "" : String.valueOf(routesResult.getLineId()))); + lineNameTV.setText("lineName:" + (routesResult == null ? "" : routesResult.getName())); + trajMd5TV.setText("TMd5:" + (routesResult == null ? "" : routesResult.csvFileMd5)); + stopMd5TV.setText("SMd5:" + (routesResult == null ? "" : routesResult.txtFileMd5)); + trajMd5DPQPTV.setText("TMd5DPQP:" + (routesResult == null ? "" : routesResult.csvFileMd5DPQP)); + stopMd5DPQPTV.setText("SMd5DPQP:" + (routesResult == null ? "" : routesResult.txtFileMd5DPQP)); + busTestBar.setVisibility(View.VISIBLE); + } + } + + public void updateBusTestBarInfo() { + if (busTestBar != null && busTestBar.getVisibility() == View.VISIBLE) { + BusRoutesResult routesResult = OrderModel.getInstance().getBusRoutesResult(); + lineIdTV.setText("lineId:" + (routesResult == null ? "" : String.valueOf(routesResult.getLineId()))); + lineNameTV.setText("lineName:" + (routesResult == null ? "" : routesResult.getName())); + trajMd5TV.setText("TMd5:" + (routesResult == null ? "" : routesResult.csvFileMd5)); + stopMd5TV.setText("SMd5:" + (routesResult == null ? "" : routesResult.txtFileMd5)); + trajMd5DPQPTV.setText("TMd5DPQP:" + (routesResult == null ? "" : routesResult.csvFileMd5DPQP)); + stopMd5DPQPTV.setText("SMd5DPQP:" + (routesResult == null ? "" : routesResult.txtFileMd5DPQP)); + } + } + /** + * END + */ +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/fragment/ShuttleFragment.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/fragment/ShuttleFragment.java new file mode 100644 index 0000000000..c468b5c6d8 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/fragment/ShuttleFragment.java @@ -0,0 +1,551 @@ +package com.mogo.och.offline.fragment; + +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; +import static com.mogo.map.MogoMap.DEFAULT; + +import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.os.Bundle; +import android.view.View; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.constraintlayout.widget.Group; +import androidx.annotation.Nullable; + +import com.mogo.commons.storage.SharedPrefsMgr; +import com.mogo.eagle.core.data.config.FunctionBuildConfig; +import com.mogo.eagle.core.data.temp.EventLogout; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; +import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant; +import com.mogo.eagle.core.utilcode.util.ActivityUtils; +import com.mogo.eagle.core.utilcode.util.ToastUtils; +import com.mogo.eagle.core.utilcode.util.UiThreadHandler; +import com.mogo.map.overlay.IMoGoOverlayManager; +import com.mogo.map.overlay.core.Level; +import com.mogo.map.overlay.point.Point; +import com.mogo.och.common.module.utils.ResourcesUtils; +import com.mogo.och.offline.R; +import com.mogo.och.offline.presenter.BusPresenter; +import com.mogo.och.offline.ui.BusStationCommonItem; +import com.mogo.och.offline.ui.BusSwitchLineActivity; +import com.mogo.och.data.bean.BusStationBean; +import com.mogo.och.offline.constant.BusConst; +import com.mogo.och.offline.view.SlidePanelView; +import com.mogo.och.common.module.utils.BlinkAnimationUtil; +import com.mogo.och.common.module.utils.OCHThreadPoolManager; +import com.mogo.och.common.module.utils.QRUtilsKt; +import com.mogo.och.common.module.wigets.BindQRCodeDialog; +import com.mogo.och.common.module.wigets.MarqueeTextView; +import com.mogo.och.common.module.wigets.OCHCommitDialog; + +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import java.util.List; +import java.util.Objects; + +import me.jessyan.autosize.utils.AutoSizeUtils; + + +/** + * 网约车小巴界面 + * + * @author tongchenfei + */ +public class ShuttleFragment extends BaseShuttleTabFragment + implements SlidePanelView.OnSlidePanelMoveToEndListener, View.OnClickListener { + public static final String TAG = "BusFragment"; + + private TextView mSwitchLine; //切换路线 + private MarqueeTextView mLineName; + private TextView mTaskTime; + private Group groupStationsPanel; + private ConstraintLayout noDataView; + + private BusStationBean startStation = null; + private BusStationBean endStation = null; + private BusStationCommonItem firstStationItem; + private BusStationCommonItem secondStationItem; + private BusStationCommonItem thirdStationItem; + + + @Override + public String getTagName() { + return "BusFragment"; + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + } + @Override + public void onDestroyView() { + if (mPresenter != null) { + mPresenter.onDestroy(this); + } + IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager(); + if(overlayManager!=null) { + overlayManager.removeAllLines(); + overlayManager.removeAllPoints(); + } + super.onDestroyView(); + } + + @Override + protected void initViews() { + super.initViews(); + + mSwitchLine = findViewById(R.id.switch_line_btn); + mSwitchLine.setTag(0); + mLineName = findViewById(R.id.module_och_bus_line_name); + + firstStationItem = findViewById(R.id.bus_panel_first_station); + secondStationItem = findViewById(R.id.bus_panel_second_station); + thirdStationItem = findViewById(R.id.bus_panel_third_station); + mTaskTime = findViewById(R.id.bus_task_time_tv); + groupStationsPanel = findViewById(R.id.group_stations_panel); + noDataView = findViewById(R.id.no_line_data_view); + + CallerLogger.d(M_BUS + TAG, "initView: " + CallerAutoPilotStatusListenerManager.INSTANCE.getState()); + // 初始化的时候设置 UI 按钮状态 + showAutopilotBiz(); + + mSwitchLine.setOnClickListener(this); + + mLineName.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + showHideTestBar(); + return false; + } + }); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void changeOverview(EventLogout eventLogout){ + if (eventLogout.getMessgae() == EventLogout.LOGOUT_TYPE){ + CallerLogger.d(M_BUS + TAG,"changeOverview Event消息去登出"); + mPresenter.logout(); + }else if (eventLogout.getMessgae() == EventLogout.SHOW_QR_TYPE){ //显示二维码 + CallerLogger.d(M_BUS + TAG,"changeOverview Event qrcode,sn = " + + SharedPrefsMgr.getInstance().getSn()); + String qrUrl = String.format(FunctionBuildConfig.urlJson.getBindDriverQRUrl(), + SharedPrefsMgr.getInstance().getSn()); + Bitmap bmQr = QRUtilsKt.createQRCodeWithPicture( + BitmapFactory.decodeResource(getResources(), R.drawable.icon_qr_center_logo) + ,qrUrl, AutoSizeUtils.dp2px(getContext(),340f), + AutoSizeUtils.dp2px(getContext(),340f),true); + if (bmQr != null){ + BindQRCodeDialog.Builder builder = new BindQRCodeDialog.Builder(); + builder.title(getString(R.string.bind_driver_qr_title)) + .cancelStr(getString(R.string.qr_cancel)) + .qrBm(bmQr).build(getContext()).show(); + }else { + CallerLogger.d(M_BUS + TAG,"bmQr = null "); + } + } + } + + @Override + protected void onArriveStation() { + mPresenter.onAutopilotArriveAtStation(null); + mPresenter.arriveStation(null,"点击进站触发进站操作"); + } + + @Override + protected void debugArrivedStation() { + mPresenter.onAutopilotArriveAtStation(null); + mPresenter.arriveStation(null,"点击debug进站按钮触发进站操作"); + } + + @NonNull + @Override + protected BusPresenter createPresenter() { + return new BusPresenter(this); + } + + @Override + public void onResume() { + super.onResume(); + } + + public void hideStationsPanel(){ + groupStationsPanel.setVisibility(View.GONE); + noDataView.setVisibility(View.VISIBLE); + } + + public void showStationsPanel(){ + groupStationsPanel.setVisibility(View.VISIBLE); + noDataView.setVisibility(View.GONE); + } + + public void updateLineEmptyUI(){ + setArrivedClikable(false); + showOrHideSwitchLineBtn(true); + hideStationsPanel(); + hideSlidePanel(); + resetStationBlinkAnim(); + } + + private void resetStationBlinkAnim() { + BlinkAnimationUtil.clearAnimation(firstStationItem.getCircleImageView()); + BlinkAnimationUtil.clearAnimation(secondStationItem.getCircleImageView()); + BlinkAnimationUtil.clearAnimation(thirdStationItem.getCircleImageView()); + } + + public void updateBusTaskStatus(String lineName, String lineTime, + List stationList, + int arrivingOrArrivedIndex, + boolean isArrived){ + + if (getActivity() == null) { + return; + } + + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (stationList == null) { + // 获取小巴数据失败 + return; + } + + showStationsPanel(); + showOrHideSwitchLineBtn(false); + + mLineName.setText(lineName); + mTaskTime.setText(getString(R.string.bus_line_time_tag)+ lineTime); + // 渲染小巴路线数据 + updateBusStationStatus(stationList,arrivingOrArrivedIndex,isArrived); + } + },UiThreadHandler.MODE.QUEUE); + } + + private void updateBusStationStatus(List stationList, + int arrivingOrArrivedIndex, + boolean isArrived) { + + startStation = stationList.get(0); + endStation = stationList.get(stationList.size() - 1); + + if (arrivingOrArrivedIndex == stationList.size() - 1 && isArrived){ + //切换路线和结束路线按钮切换 + showSlidePanel("单程结束"); + + setOrRemoveMapMaker(false, BusConst.BUS_END_MAP_MAKER, endStation.getLat() + , endStation.getLon(),R.raw.end_marker); + }else if (arrivingOrArrivedIndex == 0 && isArrived){ + + showSlidePanel("滑动出发"); + + setOrRemoveMapMaker(true, BusConst.BUS_START_MAP_MAKER, + startStation.getLat(), startStation.getLon(),R.raw.star_marker); + setOrRemoveMapMaker(true, BusConst.BUS_END_MAP_MAKER, + endStation.getLat(), endStation.getLon(),R.raw.end_marker); + }else{ + if (isArrived){ + // 重置滑动按钮文字 + showSlidePanel("滑动出发"); + } + + setOrRemoveMapMaker(false, BusConst.BUS_START_MAP_MAKER, startStation.getLat() + , startStation.getLon(),R.raw.star_marker); + setOrRemoveMapMaker(true, BusConst.BUS_END_MAP_MAKER, endStation.getLat() + , endStation.getLon(),R.raw.end_marker); + } + + if (stationList.size() > 2){ //只有两个站点 + updateMoreThanTwoStationsUI(stationList,arrivingOrArrivedIndex,isArrived); + }else { + updateTwoStationsUI(stationList,arrivingOrArrivedIndex,isArrived); + } + + updateBusTestBarInfo(); + } + + /** + * 有两个以上站点的路线 + * @param stationList + * @param arrivingOrArrivedIndex + * @param isArrived + */ + private void updateMoreThanTwoStationsUI(List stationList, + int arrivingOrArrivedIndex, + boolean isArrived) { + secondStationItem.setStationTag(""); + secondStationItem.showOrHideStationArrowBg(true); + thirdStationItem.setStationTag(""); + secondStationItem.setVisibility(View.VISIBLE); + thirdStationItem.showOrHideStationArrowBg(false); + + if (arrivingOrArrivedIndex == 0 || arrivingOrArrivedIndex -1 == 0 + || (arrivingOrArrivedIndex -2 == 0 && stationList.size() == 3)){ + firstStationItem.setStationTag(ResourcesUtils.getString(R.string.bus_station_txt_tag_start)); + }else { + firstStationItem.setStationTag(""); + } + + if (arrivingOrArrivedIndex + 1 == stationList.size() - 1 || arrivingOrArrivedIndex == stationList.size() - 1 + || (arrivingOrArrivedIndex == 0 && arrivingOrArrivedIndex + 2 == stationList.size() - 1)){ //确认是否显示 "终" + thirdStationItem.setStationTag(ResourcesUtils.getString(R.string.bus_station_txt_tag_end)); + }else { + thirdStationItem.setStationTag(""); + } + + //圆点: 0:灰色 过站 1:绿色 到站或者即将到站 2:蓝色:未到站 + if (arrivingOrArrivedIndex == 0 && isArrived){ + firstStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_line_station_color_selected)); + secondStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_arrived_station_name_text_color)); + thirdStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_arrived_station_name_text_color)); + + firstStationItem.setStationName(stationList.get(0).getName()); + secondStationItem.setStationName(stationList.get(1).getName()); + thirdStationItem.setStationName(stationList.get(2).getName()); + + firstStationItem.setStationPointBg(1); + secondStationItem.setStationPointBg(2); + thirdStationItem.setStationPointBg(2); + + firstStationItem.setStationArrowBg(2); + secondStationItem.setStationArrowBg(2); + + }else if (arrivingOrArrivedIndex == stationList.size() - 1){ + firstStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_station_tag_txt_un_color)); + secondStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_station_tag_txt_un_color)); + thirdStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_line_station_color_selected)); + + firstStationItem.setStationName(stationList.get(arrivingOrArrivedIndex -2).getName()); + secondStationItem.setStationName(stationList.get(arrivingOrArrivedIndex -1).getName()); + thirdStationItem.setStationName(stationList.get(arrivingOrArrivedIndex).getName()); + + firstStationItem.setStationPointBg(0); + secondStationItem.setStationPointBg(0); + thirdStationItem.setStationPointBg(1); + + firstStationItem.setStationArrowBg(0); + if (isArrived){ + secondStationItem.setStationArrowBg(0); + }else { + secondStationItem.setStationArrowBg(1); + } + + }else { + firstStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_station_tag_txt_un_color)); + secondStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_line_station_color_selected)); + thirdStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_arrived_station_name_text_color)); + + firstStationItem.setStationName(stationList.get(arrivingOrArrivedIndex -1).getName()); + secondStationItem.setStationName(stationList.get(arrivingOrArrivedIndex).getName()); + thirdStationItem.setStationName(stationList.get(arrivingOrArrivedIndex + 1).getName()); + + firstStationItem.setStationPointBg(0); + secondStationItem.setStationPointBg(1); + thirdStationItem.setStationPointBg(2); + + secondStationItem.setStationArrowBg(2); + if (isArrived){ + firstStationItem.setStationArrowBg(0); + }else { + firstStationItem.setStationArrowBg(1); + } + } + + } + + /** + * 只有两个站点的路线 + * @param stationList + * @param arrivingOrArrivedIndex + * @param isArrived + */ + private void updateTwoStationsUI(List stationList, + int arrivingOrArrivedIndex, + boolean isArrived) { + + secondStationItem.setVisibility(View.GONE); + secondStationItem.showOrHideStationArrowBg(false); + thirdStationItem.showOrHideStationArrowBg(false); + + firstStationItem.setStationTag(ResourcesUtils.getString(R.string.bus_station_txt_tag_start)); + thirdStationItem.setStationTag(ResourcesUtils.getString(R.string.bus_station_txt_tag_end)); + + firstStationItem.setStationName(stationList.get(0).getName()); + thirdStationItem.setStationName(stationList.get(1).getName()); + + //圆点: 0:灰色 过站 1:绿色 到站或者即将到站 2:蓝色:未到站 + if (arrivingOrArrivedIndex == 0 && isArrived){//到站 + firstStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_line_station_color_selected)); + thirdStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_arrived_station_name_text_color)); + firstStationItem.setStationPointBg(1); + firstStationItem.setStationArrowBg(2); + thirdStationItem.setStationPointBg(0); + + }else { + firstStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_station_tag_txt_un_color)); + thirdStationItem.setStationNameColor(ResourcesUtils.getColor(R.color.bus_line_station_color_selected)); + if (isArrived){ //到终点 + firstStationItem.setStationPointBg(0); + firstStationItem.setStationArrowBg(0); + thirdStationItem.setStationPointBg(1); + + }else { //到终点途中 + firstStationItem.setStationPointBg(0); + firstStationItem.setStationArrowBg(1); + thirdStationItem.setStationPointBg(1); + } + } + } + + private void showOrHideSwitchLineBtn(boolean isShow) { + if (isShow){//显示切换路线 + mSwitchLine.setTag(0); + mSwitchLine.setText(ResourcesUtils.getString(R.string.bus_switch_line_btn)); + }else {//显示结束路线 + mSwitchLine.setTag(1); + mSwitchLine.setText(ResourcesUtils.getString(R.string.bus_close_line_btn)); + } + } + + public void hideOchBus() { +// tvNotice.setVisibility(View.GONE); + } + + @Override + public int getStationPanelViewId() { + return R.layout.shuttle_fragment_och; + } + + @Override + public void restartAutopilot() { + if (!isAnimateRunning) { + mPresenter.restartAutopilot(); + } + } + + @Override + public SlidePanelView.OnSlidePanelMoveToEndListener getSlidePanelOnEndListener() { + return this; + } + + @Override + public void moveToEnd() { + // 开启自动驾驶到下一站 + if (isAnimateRunning){ + stopAutopilotAnimation(); + } + mPresenter.autoDriveToNextStation(); + } + + /** + * 设置自动驾驶可用状态 + */ + public void onAutopilotEnableChange(boolean isEnable) { + if (isEnable) { + showAutopilotBiz(); + } else { + hideAutopilotBiz(); + } + } + + public void clearBusStationsMarkers(){ + CallerLogger.d(M_BUS + TAG,"clearBusStationsMarkers()"); + if (null != startStation) { + setOrRemoveMapMaker(false, BusConst.BUS_START_MAP_MAKER, startStation.getLat() + , startStation.getLon(),R.raw.star_marker); + } + if (null != endStation) { + setOrRemoveMapMaker(false, BusConst.BUS_END_MAP_MAKER, endStation.getLat() + , endStation.getLon(),R.raw.end_marker); + } + + //清除鹰眼右下角小地图轨迹 + CallerLogger.d(SceneConstant.M_BUS, "clearBusStationsMarkers --------->"); + smallMapView.clearPolyline(); + } + + /** + * 绘制地图起点终点 + * + * @param isAdd + * @param uuid + */ + private void setOrRemoveMapMaker(boolean isAdd, String uuid, double lat, double longi,int resourceId) { + if (isAdd) { + Runnable setMapMarkerRunnable = () -> { + CallerLogger.d(M_BUS + "setMapMaker= "+Thread.currentThread().getName(), + uuid + "=latitude=" + lat + ",longitude=" + longi); + + Point.Options.Builder builder = new Point.Options.Builder(BusConst.TYPE_MARKER_BUS_ORDER, Level.MAP_MARKER) + .setId(uuid) + .anchor(0.5f, 0.5f) + .set3DMode(true) + .isUseGps(true) + .controlAngle(false) + .icon3DRes(resourceId) + .latitude(lat) + .longitude(longi); + IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager(); + if (overlayManager != null) { + overlayManager.showOrUpdatePoint(builder.build(),DEFAULT); + } + }; + + OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable); + + }else { + Runnable removeMapMarkerRunnable = () -> { + CallerLogger.d(M_BUS + "RemoveMapMaker="+Thread.currentThread().getName(), + uuid+"=latitude="+lat+",longitude="+longi); + Objects.requireNonNull(CallerMapUIServiceManager.INSTANCE.getOverlayManager()).removePoint(uuid); + }; + OCHThreadPoolManager.getsInstance().execute(removeMapMarkerRunnable); + } + } + + @Override + public void debugAutoPilotStatus(int status) { + mPresenter.debugAutoPilotStatus(status); + } + + @Override + public void onClick(View v) { + if (v.getId() == R.id.switch_line_btn) {//切换路线条件: 自动驾驶过程中,点击则toast提示:自动驾驶中,不可切换路线 + //本次行程未结束,不支持切换路线。点击则toast提示:当前行程未完成,不可切换路线 + if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() + == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { + ToastUtils.showLong(ResourcesUtils.getString(R.string.bus_switch_line_btn_warning1)); + return; + } + if ((int)mSwitchLine.getTag() == 0){//切换路线 + Intent intent = new Intent(getContext(), BusSwitchLineActivity.class); + ActivityUtils.startActivity(intent); + }else {//结束任务 + OCHCommitDialog.Builder builder = new OCHCommitDialog.Builder(); + OCHCommitDialog closeLineConfirmDialog = builder + .title(getString(R.string.bus_dialog_title)) + .tips(getString(R.string.bus_dialog_tips)) + .confirmStr(getString(R.string.bus_dialog_confirm)) + .cancelStr(getString(R.string.bus_dialog_cancel)) + .build(getContext()); + closeLineConfirmDialog.setClickListener(new OCHCommitDialog.ClickListener() { + @Override + public void confirm() { + mPresenter.abortTask(); + } + + @Override + public void cancel() { + closeLineConfirmDialog.dismiss(); + } + }); + closeLineConfirmDialog.show(); + } + } + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/BusLineModel.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/BusLineModel.java new file mode 100644 index 0000000000..2b41c2838e --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/BusLineModel.java @@ -0,0 +1,148 @@ +package com.mogo.och.offline.model; + +import android.content.Context; + +import com.mogo.commons.AbsMogoApplication; +import com.mogo.commons.storage.SharedPrefsMgr; +import com.mogo.eagle.core.utilcode.util.NetworkUtils; +import com.mogo.eagle.core.utilcode.util.ToastUtils; +import com.mogo.och.offline.R; +import com.mogo.och.offline.bean.BusRoutesResponse; +import com.mogo.och.offline.callback.IBusLinesCallback; +import com.mogo.och.offline.net.OrderServiceManager; +import com.mogo.och.offline.ui.BusSwitchLineActivity; +import com.mogo.och.offline.bean.BusQueryLineTaskResponse; +import com.mogo.och.offline.bean.BusQueryLinesResponse; +import com.mogo.och.common.module.network.OchCommonServiceCallback; + +/** + * @author: wangmingjun + * @date: 2022/2/9 + */ +public class BusLineModel { + private static volatile BusLineModel sInstance; + private Context mContext; + private IBusLinesCallback mBusLinesCallback; + public static BusLineModel getInstance() { + if ( sInstance == null ) { + synchronized ( BusLineModel.class ) { + if ( sInstance == null ) { + sInstance = new BusLineModel(); + } + } + } + return sInstance; + } + private BusLineModel() { + + } + public void init() { + mContext = AbsMogoApplication.getApp(); + } + public void setBusLinesCallback(IBusLinesCallback callback){ + mBusLinesCallback = callback; + } + public void queryBusLines(){ + OrderServiceManager.queryBusLines(mContext, new OchCommonServiceCallback() { + @Override + public void onSuccess(BusQueryLinesResponse data) { + if (null == data && mBusLinesCallback != null) { + mBusLinesCallback.onBusLinesChange(null); + return; + } + + if (mBusLinesCallback != null){ + mBusLinesCallback.onBusLinesChange(data); + } + } + + @Override + public void onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort(mContext.getString(R.string.network_error_tip)); + } else { + ToastUtils.showShort(mContext.getString(R.string.request_error_tip)); + } + } + + @Override + public void onFail(int code, String failMsg) { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort("网络异常,请稍后重试"); + }else { + ToastUtils.showShort("查询所有绑定路线失败:"+failMsg); + } + } + }); + } + + /** + * 通过线路id 查询线路排班表 + * @param lineId 线路ID + * @param position 位置 + */ + public void queryBusLineTasksById(int lineId, int position,boolean autoRefresh){ + OrderServiceManager.queryBusTaskByLineId(mContext, String.valueOf(lineId),new OchCommonServiceCallback() { + @Override + public void onSuccess(BusQueryLineTaskResponse data) { + if (null == data && mBusLinesCallback != null) { + mBusLinesCallback.onBusLineTasks(null,position,autoRefresh); + return; + } + + if (mBusLinesCallback != null){ + mBusLinesCallback.onBusLineTasks(data,position,autoRefresh); + } + } + + @Override + public void onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort(mContext.getString(R.string.network_error_tip)); + } else { + ToastUtils.showShort(mContext.getString(R.string.request_error_tip)); + } + } + + @Override + public void onFail(int code, String failMsg) { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort("网络异常,请稍后重试"); + }else { + ToastUtils.showShort("查询所有绑定路线失败:"+failMsg); + } + } + }); + } + + public void commitSwitchLineId(int taskId,int lineId){ + OrderServiceManager.switchLine(mContext,taskId, new OchCommonServiceCallback() { + @Override + public void onSuccess(BusRoutesResponse o) { + SharedPrefsMgr.getInstance().putInt(BusSwitchLineActivity.LASTCOMMITLINEID,lineId); + if (mBusLinesCallback != null){ + mBusLinesCallback.onChangeLineIdSuccess(); + } + } + + @Override + public void onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort(mContext.getString(R.string.network_error_tip)); + } else { + ToastUtils.showShort(mContext.getString(R.string.request_error_tip)); + } + } + + @Override + public void onFail(int code, String failMsg) { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort("网络异常,请稍后重试"); + }else { + ToastUtils.showShort("选择任务失败:"+failMsg); + } + } + }); + } + +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/OrderModel.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/OrderModel.java new file mode 100644 index 0000000000..dd245baa8f --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/OrderModel.java @@ -0,0 +1,1282 @@ +package com.mogo.och.offline.model; + +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; +import static com.mogo.och.offline.constant.BusConst.DELAY_10S; +import static com.mogo.och.offline.constant.BusConst.STATION_STATUS_ARRIVING; +import static com.mogo.och.offline.constant.BusConst.STATION_STATUS_STOPPED; + +import android.content.Context; +import android.text.TextUtils; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.elegant.network.utils.GsonUtil; +import com.mogo.aicloud.services.socket.IMogoOnMessageListener; +import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener; +import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager; +import com.mogo.eagle.core.utilcode.util.CoordinateUtils; +import com.mogo.commons.AbsMogoApplication; +import com.mogo.eagle.core.data.BaseData; +import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters; +import com.mogo.eagle.core.data.config.FunctionBuildConfig; +import com.mogo.eagle.core.data.map.MogoLocation; +import com.mogo.eagle.core.utilcode.util.StringUtils; +import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager; +import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager; +import com.mogo.och.common.module.manager.socket.lan.LanSocketManager; +import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType; +import com.mogo.och.common.module.voice.VoiceNotice; +import com.mogo.och.offline.R; +import com.mogo.och.offline.bean.BusRoutesResponse; +import com.mogo.och.offline.callback.IBusADASStatusCallback; +import com.mogo.och.offline.net.OrderServiceManager; +import com.mogo.och.offline.util.ShuttleVoiceManager; +import com.mogo.och.common.module.manager.socket.lan.bean.AppConnectMsg; +import com.mogo.och.common.module.manager.socket.lan.bean.BaseDPMsg; +import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType; +import com.mogo.och.common.module.manager.socket.lan.bean.LoginCacheStatus; +import com.mogo.och.common.module.manager.socket.lan.bean.TaskDetailsMsg; +import com.mogo.och.common.module.biz.login.LoginStatusManager; +import com.mogo.och.common.module.manager.autopilot.autopilot.ArrivedStation; +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager; +import com.mogo.och.common.module.utils.MultiRequestLimitChecker; +import com.mogo.och.common.module.utils.OCHThreadPoolManager; +import com.mogo.och.data.bean.BusStationBean; +import com.mogo.och.common.module.manager.socket.cloud.data.SystemMsg; +import com.mogo.och.common.module.constant.OchCommonConst; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.util.GsonUtils; +import com.mogo.eagle.core.utilcode.util.NetworkUtils; +import com.mogo.eagle.core.utilcode.util.ToastUtils; +import com.mogo.eagle.core.utilcode.util.UiThreadHandler; +import com.mogo.och.data.bean.BusRoutesResult; +import com.mogo.och.offline.callback.IBusControllerStatusCallback; +import com.mogo.och.offline.callback.IRefreshBusStationsCallback; +import com.mogo.och.offline.callback.ISlidePannelHideCallback; +import com.mogo.och.offline.constant.BusConst; +import com.mogo.och.offline.util.BusAnalyticsManager; +import com.mogo.och.offline.util.BusSendTripInfoManager; +import com.mogo.och.offline.util.BusTrajectoryManager; +import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager; +import com.mogo.och.common.module.network.OchCommonServiceCallback; +import com.mogo.och.common.module.callback.OchAdasStartFailureCallback; +import com.mogo.och.common.module.manager.socket.cloud.AbnormalFactorsLoopManager; +import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager; +import com.mogo.och.common.module.utils.DateTimeUtil; +import com.mogo.och.common.module.utils.NumberFormatUtil; +import com.mogo.och.common.module.utils.PinYinUtil; +import com.mogo.och.common.module.manager.socket.lan.bean.BusCacheKey; +import com.mogo.och.data.bean.BusTransferData; +import com.mogo.och.data.manager.cache.CacheDataManager; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import io.reactivex.exceptions.UndeliverableException; +import io.reactivex.functions.Consumer; +import io.reactivex.plugins.RxJavaPlugins; + +/** + * @author congtaowang + * @since 2021/3/23 + *

+ * 小巴订单管理 + */ +public class OrderModel { + private final String TAG = OrderModel.class.getSimpleName(); + private int backgroundCurrentStationIndex = 0;//A->B 此处值是A站点索引 + private static volatile OrderModel sInstance; + private Context mContext; + private final List stationList = new ArrayList<>(); + private BusRoutesResult busRoutesResult = null; + /** + * 用来表示是否正在开往下一站 + */ + private boolean isGoingToNextStation = false; + // 运营类型 + private static final int VEHICLE_TYPE = 10; + + private IRefreshBusStationsCallback refreshBusStationsCallback; + private ISlidePannelHideCallback slidePanelHideCallback; + private IBusControllerStatusCallback mControllerStatusCallback; //Model->Presenter:VR mode等 + private IBusADASStatusCallback mADASStatusCallback; + + private volatile boolean isArrivedStation = false; + + //0: 代表没有启动过 1代表是启动第一次,当>=1 代表是重试 每次到站/路线结束清空置为0 + private volatile int firstStartAutopilot = 0; + + public static OrderModel getInstance() { + if (sInstance == null) { + synchronized (OrderModel.class) { + if (sInstance == null) { + sInstance = new OrderModel(); + } + } + } + return sInstance; + } + + private OrderModel() { + + } + + public void init() { + mContext = AbsMogoApplication.getApp(); + // 定位监听 + CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 5, mMapLocationListener); + + //开启自驾后 异常信息返回 + OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener); + + OCHSocketMessageManager.INSTANCE.registerSocketMessageListener(//监听运营消息 + OCHSocketMessageManager.msgMonitorType, + mMogoOnMessageListener); + + TicketModel.INSTANCE.load(); + + AbnormalFactorsLoopManager.INSTANCE.startLoopAbnormalFactors(mContext); + + //监听乘客屏发来的消息 + CallerTelematicListenerManager.INSTANCE.addListener(TAG, mReceivedMsgListener); + + //2022.1.28 + // 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃 + // The exception could not be delivered to the consumer because it has already canceled/disposed + // the flow or the excTeption has nowhere to go to begin with + RxJavaPlugins.setErrorHandler(new Consumer() { + @Override + public void accept(Throwable e) { + if (e instanceof UndeliverableException) { + e = e.getCause(); + CallerLogger.d(M_BUS + TAG, "UndeliverableException"); + } + if ((e instanceof IOException)) {// + // fine, irrelevant network problem or API that throws on cancellation + CallerLogger.d(M_BUS + TAG, "IOException"); + return; + } + if (e instanceof InterruptedException) { + // fine, some blocking code was interrupted by a dispose call + CallerLogger.d(M_BUS + TAG, "InterruptedException"); + return; + } + if ((e instanceof NullPointerException) || (e instanceof IllegalArgumentException)) { + // that's likely a bug in the application + CallerLogger.d(M_BUS + TAG, "NullPointerException or IllegalArgumentException"); + Thread.currentThread().getUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), e); + return; + } + if (e instanceof IllegalStateException) { + // that's a bug in RxJava or in a custom operator + CallerLogger.d(M_BUS + TAG, "IllegalStateException"); + Thread.currentThread().getUncaughtExceptionHandler().uncaughtException(Thread.currentThread(), e); + return; + } + CallerLogger.d(M_BUS + TAG, "Undeliverable exception"); + } + }); + } + + private final IReceivedMsgListener mReceivedMsgListener = + new IReceivedMsgListener() { + @Override + public void onDemoMode(boolean isDemoMode) { + + } + + @Override + public void onReceivedServerSn(@Nullable String sn) { + + } + + @Override + public void onReceivedMsg(int type, @NonNull byte[] byteArray) { + if (OchCommonConst.BUSINESS_STRING == type) { + CallerLogger.d(M_BUS + BaseDPMsg.TAG, new String(byteArray)); + BaseDPMsg msg = GsonUtils.fromJson(new String(byteArray), BaseDPMsg.class); + if (msg != null) { + if (msg.getType() == DPMsgType.TYPE_TASK_DETAILS.getType()) { + sendTaskDetailsToClients(); + } + } + } + } + }; + + private final IMogoOnMessageListener mMogoOnMessageListener = + new IMogoOnMessageListener() { + @Override + public Class target() { + return SystemMsg.class; + } + + @Override + public void onMsgReceived(SystemMsg obj) { + if (obj == null) { + CallerLogger.d(M_BUS + TAG, "onMsgReceived = null"); + return; + } + CallerLogger.i(M_BUS + TAG, "onMsgReceived = " + obj.getContext()); + List list = obj.getScreenList(); + CallerLogger.i(M_BUS + TAG, "onMsgReceived = " + GsonUtils.toJson(list)); + + if (list != null && list.contains(1)) { // 1司机端 + OCHSocketMessageManager.INSTANCE.pushAppOperationalMsgBox(DateTimeUtil.getCurrentTimeStamp(), + obj.getContext(), OCHSocketMessageManager.OPERATION_SYSTEM); + } + + if (list != null && list.contains(2)) { //乘客屏 + AppConnectMsg msg = new AppConnectMsg(true, false, obj.getContext(), -1); + LanSocketManager.sendMsgToClient(msg); + } + + } + }; + + public void setAdasStatusCallback(IBusADASStatusCallback callback) { + this.mADASStatusCallback = callback; + } + + public void setRefreshBusStationsCallback(IRefreshBusStationsCallback callback) { + this.refreshBusStationsCallback = callback; + } + + public void setSlidePanelHideCallback(ISlidePannelHideCallback callback) { + this.slidePanelHideCallback = callback; + } + + public void setControllerStatusCallback(IBusControllerStatusCallback callback) { + this.mControllerStatusCallback = callback; + } + + public void release() { + + // 注销定位监听 + CallerChassisLocationGCJ02ListenerManager.INSTANCE.removeListener(TAG); + + OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null); + + OCHSocketMessageManager.INSTANCE.releaseSocketMessageListener( + OCHSocketMessageManager.msgMonitorType); + OCHSocketMessageManager.INSTANCE.releaseSocketMessageListener( + OCHSocketMessageManager.msgWriteOffPassengerType); + + AbnormalFactorsLoopManager.INSTANCE.stopLoopAbnormalFactors(); + //监听乘客屏发来的消息 + CallerTelematicListenerManager.INSTANCE.removeListener(TAG); + } + + private Object readResolve() { + // 阻止反序列化,必须实现 Serializable 接口 + return sInstance; + } + + private final OchAdasStartFailureCallback mAdasStartFailureListener = new OchAdasStartFailureCallback() { + @Override + public void brakeStatusChanged(boolean isBrakeAvailable) { + + } + + @Override + public void onStartAutopilotFailure(@NotNull String startFailedCode, @NonNull String startFailedMessage) { + BusAnalyticsManager.getInstance().triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage, System.currentTimeMillis()); + if (mADASStatusCallback != null && !FunctionBuildConfig.isDemoMode) { + CallerLogger.e(M_BUS + TAG, "mAdasStartFailureListener = " + startFailedMessage); + mADASStatusCallback.onStartAdasFailure(); + } + } + }; + + // 自车定位 + private final IMoGoChassisLocationGCJ02Listener mMapLocationListener = new IMoGoChassisLocationGCJ02Listener() { + + @Override + public void onChassisLocationGCJ02(@Nullable MogoLocation mogoLocation) { + if (null == mogoLocation) return; + if (mControllerStatusCallback != null) { + mControllerStatusCallback.onCarLocationChanged(mogoLocation); + } + + //是否到站的围栏判断 离站状态并且自动驾驶还未触发到站 + if (isGoingToNextStation && !isArrivedStation) { + OCHThreadPoolManager.getsInstance().locationExecute(new Runnable() { + @Override + public void run() { + judgeArrivedStation(mogoLocation); + } + }); + } + } + }; + + //根据围栏判断,是否到达站点 + private void judgeArrivedStation(MogoLocation location) { + + if (backgroundCurrentStationIndex + 1 > stationList.size() - 1) { + CallerLogger.e(M_BUS + TAG, "到站数组越界"); + return; + } + BusStationBean upcomingStation = stationList.get(backgroundCurrentStationIndex + 1); + + double startLon = upcomingStation.getGcjLon(); + double startLat = upcomingStation.getGcjLat(); + double distance = CoordinateUtils.calculateLineDistance( + startLon, startLat, + location.getLongitude(), location.getLatitude()); + + if (distance <= BusConst.ARRIVE_AT_END_STATION_DISTANCE) { + CallerLogger.d(M_BUS + TAG, "行程日志-judgeArrivedStation() distance = " + distance + + " to " + upcomingStation.getName()); + onArriveAt(null, "兜底:根据定位计算到站"); + } + } + + public void queryBusCacheRoutes() { + String cacheData = CacheDataManager.Companion.getInstance().getCacheData(mContext, + BusCacheKey.BUS_LINE_CACHE); + + if (!StringUtils.isEmpty(cacheData)) { + BusTransferData data = GsonUtils.fromJson(cacheData, BusTransferData.class); + getCacheRouteSuccess(data.getRoutesResult()); + } + } + + private void getCacheRouteSuccess(BusRoutesResult data) { + if (data == null || data.getSites() == null + || data.getSites().isEmpty() + || data.getWriteVersion() < DateTimeUtil.getTodayStartTime()) { + //当为空时,显示无绑定路线图 + queryBusRoutes(); + CacheDataManager.Companion.getInstance().clearCacheData(mContext, BusCacheKey.BUS_LINE_CACHE); + return; + } + CallerLogger.d(M_BUS + TAG, "获取到小巴路线数据: " + GsonUtils.toJson(data)); + updateBusStatus(data); + } + + /** + * 查询小巴路线 + */ + public void queryBusRoutes() { + CallerLogger.d(M_BUS + TAG, "查询小巴路线"); + OrderServiceManager.queryBusRoutes(mContext, new OchCommonServiceCallback() { + @Override + public void onSuccess(BusRoutesResponse data) { + if (data == null + || data.getResult() == null + || data.getResult().getSites() == null + || data.getResult().getSites().isEmpty()) { +// //当为空时,显示无绑定路线图 + CallerLogger.d(M_BUS + TAG, "获取到小巴路线数据:空 "); + if (refreshBusStationsCallback != null) { + refreshBusStationsCallback.updateEmptyUi(); + } + clearAutopilotControlParameters(); + closeBeautificationMode(); + clearStartAutopilotTag(); + removeTipRunnables(); + CacheDataManager.Companion.getInstance().clearCacheData(mContext, BusCacheKey.BUS_LINE_CACHE); + return; + } + + if (busRoutesResult == null || busRoutesResult.getWriteVersion() < data.getResult().getWriteVersion()) { + CallerLogger.d(M_BUS + TAG, "更新小巴路线数据: " + data); + updateBusStatus(data.getResult()); + pushCacheTransferData(data.getResult()); + } + } + + + @Override + public void onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort(mContext.getString(R.string.network_error_tip)); + } else { + ToastUtils.showShort(mContext.getString(R.string.request_error_tip)); + } + } + + @Override + public void onFail(int code, String failMsg) { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort("网络异常,请稍后重试"); + } else { + ToastUtils.showShort(failMsg); + } + } + }); + + } + + /** + * 更新正在运行的任务UI + * + * @param stations + */ + private void updateBusTaskStatus(List stations) { + + int arrivingOrArrivedStationIndex = 0;//已经到站或者即将到站的索引呢 + + for (int i = 0; i < stations.size(); i++) { + BusStationBean station = stations.get(i); + + if (i == 0) { // 首发站 显示在最上面 + if (station.getDrivingStatus() == STATION_STATUS_STOPPED + && !station.isLeaving()) { //到达第一站 + arrivingOrArrivedStationIndex = i; + break; + } + } else { + BusStationBean preStation = stations.get(i - 1); + if ((station.getDrivingStatus() == STATION_STATUS_STOPPED && !station.isLeaving()) + || (station.getDrivingStatus() == STATION_STATUS_ARRIVING + && preStation.isLeaving())) { + //到站未离开 | 即将到站 显示在最中间 + arrivingOrArrivedStationIndex = i; + break; + } + } + } + + BusStationBean arrivingOrArrivedStation = stations.get(arrivingOrArrivedStationIndex); + + String lineTime = DateTimeUtil.formatLongToString( + busRoutesResult.getTaskTime(), + DateTimeUtil.HH_mm); + + if (arrivingOrArrivedStationIndex == 0 || + arrivingOrArrivedStation.getDrivingStatus() == STATION_STATUS_STOPPED + && !arrivingOrArrivedStation.isLeaving()) { + if (refreshBusStationsCallback != null) { + refreshBusStationsCallback.updateBusTaskStatus(busRoutesResult.getName(), lineTime, + stationList, arrivingOrArrivedStationIndex, true); + } + clearAutopilotControlParameters(); + } else { + if (refreshBusStationsCallback != null) { + refreshBusStationsCallback.updateBusTaskStatus(busRoutesResult.getName(), lineTime, + stationList, arrivingOrArrivedStationIndex, false); + } + updateAutopilotControlParameters(); + } + } + + /** + * 重置路线站点状态--结束路线,当前路线恢复到始发站 + */ + public void abortTask() { + CallerLogger.d(M_BUS + TAG, "结束当前路线abortTask"); + if (busRoutesResult == null) { + ToastUtils.showLong("数据异常、请稍后再试"); + return; + } + OrderServiceManager.abortTask(mContext, busRoutesResult.getTaskId() + , new OchCommonServiceCallback() { + @Override + public void onSuccess(BaseData o) { + CallerLogger.d(M_BUS + TAG, "abortTask success: " + o); + if (o.code == 0) { // 重置成功 + endOrAbortTaskSuccess(); + clearBusStationDatas(); + queryBusRoutes(); + removeTipRunnables(); + // 取消自驾 + CallerAutoPilotControlManager.INSTANCE.cancelAutoPilot(); + setTrajectoryStation(null, null, -1L); + } + } + + @Override + public void onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort(mContext.getString(R.string.network_error_tip)); + } else { + ToastUtils.showShort(mContext.getString(R.string.request_error_tip)); + } + } + + @Override + public void onFail(int code, String failMsg) { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort("网络异常,请稍后重试"); + } else { + ToastUtils.showShort(failMsg); + } + } + }); + + } + + /** + * 中断或者正常结束任务后的处理 + */ + private void endOrAbortTaskSuccess() { + + isGoingToNextStation = false; + backgroundCurrentStationIndex = 0; + + if (busRoutesResult != null) { + BusSendTripInfoManager.INSTANCE.sendBusTripInfo(BusSendTripInfoManager.END_TRIP + , busRoutesResult.getName() + , "" + , "" + , false); + } + + CacheDataManager.Companion.getInstance().clearCacheData(mContext, BusCacheKey.BUS_LINE_CACHE); + busRoutesResult = null; + + sendTaskDetailsToClients(); + } + + /** + * 离站上报成功后渲染站点 + * 服务端返回的OchBusRoutesResult逻辑, 离开站为当前站, 到达下一站后才会将下一站置为当前站, + * 车机端展示是离开当前站,下一站设置为当前站, 所以服务端数据回来要做处理,不能直接渲染 + */ + private void leaveStationSuccess(int leaveIndex, String leaveStation, + String nextStation, String nextStationKr, + long writeVersion) { + + onStartAutopilot(leaveIndex); + + leaveTTSTips(nextStation, nextStationKr); + + sendStartStationToClient(nextStation); + + if (busRoutesResult != null) { + boolean isLastStop = false; + if (leaveIndex + 1 == stationList.size() - 1) { + isLastStop = true; + } + //给bus外屏发送 + BusSendTripInfoManager.INSTANCE.sendBusTripInfo(BusSendTripInfoManager.LEAVE_STATION + , busRoutesResult.getName() + , leaveStation + , nextStation + , isLastStop); + } + + reBuildCacheRouteData(leaveIndex, BusConst.STATION_STATUS_STOPPED, true, writeVersion); + } + + private void reBuildCacheRouteData(int currentIndex, int currentDrivingStatus, boolean isLeaving + , long writeVersion) { + if (busRoutesResult != null) { + busRoutesResult.setWriteVersion(writeVersion); + List sites = busRoutesResult.getSites(); + BusStationBean bean = sites.get(currentIndex); + bean.setDrivingStatus(currentDrivingStatus); + bean.setLeaving(isLeaving); + sites.set(currentIndex, bean); + if (currentDrivingStatus == STATION_STATUS_STOPPED && !isLeaving) { + BusStationBean beanPre = sites.get(currentIndex - 1); + beanPre.setDrivingStatus(BusConst.STATION_STATUS_LEAVING); + beanPre.setLeaving(false); + sites.set(currentIndex - 1, beanPre); + } + //busRoutesResult.setSite(sites); + + pushCacheTransferData(busRoutesResult); + + updateBusStatus(busRoutesResult); + } + } + + private void onStartAutopilot(int leaveIndex) { + //开启自动驾驶 2.10.0: 如果自动驾驶状态下开启, 非自动驾驶状态下不开启,需手动点击自动驾驶按钮开启 + isGoingToNextStation = true; + if (CallerAutoPilotStatusListenerManager.INSTANCE.getState() + == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { + startAutopilot(false, leaveIndex); + } else { + firstStartAutopilot = 0; + } + } + + /** + * 开启自动驾驶 + * + * @param isRestart + */ + private void startAutopilot(boolean isRestart, int leaveIndex) { + BusAnalyticsManager.getInstance().triggerClickStartAutopilotTime(System.currentTimeMillis()); + + //1、判断轨迹url是否可用 + if (busRoutesResult != null) { + //根据开关和后台是否发布轨迹启动自驾 + if (FunctionBuildConfig.isPassStartAutopilotCommand + && TextUtils.isEmpty(busRoutesResult.csvFileUrl) + && TextUtils.isEmpty(busRoutesResult.csvFileUrlDPQP) + ) { + ToastUtils.showLong("无发布轨迹, 请发布后重试"); + CallerLogger.e( + TAG, "isPassStartAutopilotCommand = " + + FunctionBuildConfig.isPassStartAutopilotCommand + + "busRoutesResult.csvFileUrl = " + busRoutesResult.csvFileUrl + ); + return; + } + } + //2、6个条件判断 + if (!CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(true, 0)) { + return; + } + // 3、距离轨迹15m计算 + //3、距离轨迹15m计算 + String resion = TrajectoryAndDistanceManager.INSTANCE.canStartAutopilot((long) busRoutesResult.getLineId()); + if (TrajectoryAndDistanceManager.errorTypeNoneLineId.equals(resion)) { + MogoLocation nextStationPoint = new MogoLocation(); + if (backgroundCurrentStationIndex < stationList.size() - 1) { + BusStationBean nextStation = stationList.get(backgroundCurrentStationIndex + 1); + nextStationPoint.setLongitude(nextStation.getGcjLon()); + nextStationPoint.setLatitude(nextStation.getGcjLat()); + } + BusStationBean busStationBean = stationList.get(backgroundCurrentStationIndex); + MogoLocation currentStationPoint = new MogoLocation(); + currentStationPoint.setLongitude(busStationBean.getGcjLon()); + currentStationPoint.setLatitude(busStationBean.getGcjLat()); + setTrajectoryStation(currentStationPoint, nextStationPoint, (long) busRoutesResult.getLineId()); + resion = TrajectoryAndDistanceManager.INSTANCE.canStartAutopilot((long) busRoutesResult.getLineId()); + } + if (!StringUtils.isEmpty(resion)) { + ToastUtils.showShort(resion); + VoiceNotice.showNotice(resion); + return; + } + //4、ssm 给出数据 + if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()) { + ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() + + ", 请稍候重试"); + triggerUnableStartAPReasonEvent(); + return; + } + + firstStartAutopilot++; + + triggerStartServiceEvent(isRestart, false); + + AutopilotControlParameters parameters = initAutopilotControlParameters(leaveIndex); + if (null == parameters) { + CallerLogger.e(M_BUS + TAG, "行程日志-AutopilotControlParameters is empty."); + return; + } + + OchAutoPilotManager.startAutoPilot(parameters); + + CallerLogger.d(M_BUS + TAG, "行程日志-开启自动驾驶====" + GsonUtil.jsonFromObject(parameters) + + " startLatLon=" + parameters.startName + ",endLatLon=" + parameters.endName + + "isRestart = " + isRestart); + + if (mControllerStatusCallback != null) { + mControllerStatusCallback.startOpenAutopilot(); + } + } + + /** + * 到站后重置站点状态 + */ + private void arriveSiteStation(String changeInfo) { + OchChainLogManager.writeChainLog("触发进站", changeInfo, + true, OchChainLogManager.EVENT_KEY_INFE_WITH_BUS); + if (backgroundCurrentStationIndex + 1 > stationList.size() - 1) { //到站短时间内调用多次 + CallerLogger.e(M_BUS + TAG, "数组越界"); + return; + } + int arrivedStationIndex = backgroundCurrentStationIndex + 1; + String arriveStation = stationList.get(arrivedStationIndex).getName(); + String arriveStationKr = stationList.get(arrivedStationIndex).getNameKr(); + String departureStopName = stationList.get(backgroundCurrentStationIndex).getName(); + CallerLogger.d(M_BUS + TAG, "arriveSiteStation-currentStationIndex = " + arrivedStationIndex); + + isArrivedStation = true; + isGoingToNextStation = false; + + long writeVersion = DateTimeUtil.getCurrentTimeStamp(); + arriveStationSuccess(arrivedStationIndex, departureStopName, + arriveStation, arriveStationKr, writeVersion); + + String requestId = MultiRequestLimitChecker.Companion.generateRequestId(TAG + "-arriveSiteStation" + , String.valueOf(stationList.get(arrivedStationIndex).getSiteId()) + , String.valueOf(busRoutesResult.getTaskId())); + if (!MultiRequestLimitChecker.Companion.getInstance().canMakeRequest(requestId, 5)) { + CallerLogger.d(M_BUS + TAG, "arriveSiteStation-MultiRequestLimitChecker: 超过最大请求数,本次请求return"); + return; + } + OrderServiceManager.arriveSiteStation(mContext, + stationList.get(arrivedStationIndex).getSeq(), + stationList.get(arrivedStationIndex).getSiteId(), + busRoutesResult.getTaskId(), writeVersion, + new OchCommonServiceCallback() { + @Override + public void onSuccess(BaseData o) { + CallerLogger.d(M_BUS + TAG, "行程日志-arriveSiteStation success"); + MultiRequestLimitChecker.Companion.getInstance().decreaseRequestCount(requestId); + } + + @Override + public void onError() { + MultiRequestLimitChecker.Companion.getInstance().decreaseRequestCount(requestId); + } + + @Override + public void onFail(int code, String failMsg) { + MultiRequestLimitChecker.Companion.getInstance().decreaseRequestCount(requestId); + } + }); + } + + private void arriveStationSuccess(int arrivedStationIndex, String departureStopName, + String arriveStation, String arriveStationKr, + long writeVersion) { + if (busRoutesResult != null) { + boolean isLastStop = false; + if (arrivedStationIndex == busRoutesResult.getSites().size() - 1) { + isLastStop = true; + } + //给bus外屏发送 + BusSendTripInfoManager.INSTANCE.sendBusTripInfo(BusSendTripInfoManager.ARRIVE_STATION + , busRoutesResult.getName() + , departureStopName + , arriveStation + , isLastStop); + } + + ShuttleVoiceManager.INSTANCE.arrivedStationBus(arriveStation, arriveStationKr); + + sendArrivedStationToClient(arriveStation); + + reBuildCacheRouteData(arrivedStationIndex, BusConst.STATION_STATUS_STOPPED, false, writeVersion); + } + + private void sendTaskDetailsToClients() { + + BusTransferData data = new BusTransferData(LoginStatusManager.isLogin() ? 1 : 0, busRoutesResult); + TaskDetailsMsg msg = new TaskDetailsMsg(GsonUtils.toJson(data), BusinessType.shuttle); + CallerLogger.d(M_BUS + TAG, "sendTaskDetailsToClients = " + GsonUtils.toJson(msg)); + LanSocketManager.sendMsgToClient(msg); + } + + private void pushCacheTransferData(BusRoutesResult result) { + BusTransferData data = new BusTransferData(LoginStatusManager.isLogin() ? 1 : 0, result); + CallerLogger.d(M_BUS + TAG, "pushCacheTransferData = " + GsonUtils.toJson(data)); + CacheDataManager.Companion.getInstance().putCacheData(mContext, + BusCacheKey.BUS_LINE_CACHE, + GsonUtils.toJson(data)); + } + + private void sendArrivedStationToClient(String arriveStation) { + AppConnectMsg arrivedMsg = new AppConnectMsg(false, true, String.format(mContext + .getString(R.string.bus_arrived_station_tip), + arriveStation), -1); + LanSocketManager.sendMsgToClient(arrivedMsg); + } + + private void sendStartStationToClient(String nextStation) { + AppConnectMsg startMsg = new AppConnectMsg(false, true, String.format(mContext + .getString(R.string.bus_leave_station_tip), + nextStation), -1); + + UiThreadHandler.postDelayed(() -> LanSocketManager.sendMsgToClient(startMsg), DELAY_10S); + } + + private void sendEndTaskToClient() { + AppConnectMsg endMsg = new AppConnectMsg(false, true, mContext + .getString(R.string.bus_end_task_tip), -1); + LanSocketManager.sendMsgToClient(endMsg); + } + + public void sendWriteOffNumToClient(String msg) { + AppConnectMsg passengerMsg = new AppConnectMsg(false, true, msg, -1); + LanSocketManager.sendMsgToClient(passengerMsg); + } + + /** + * 离站上报 + */ + public void leaveStation() { + CallerLogger.d(M_BUS + TAG, "leaveStation-backgroundCurrentStationIndex = " + backgroundCurrentStationIndex); + if (busRoutesResult == null) { + ToastUtils.showLong("数据异常、请稍后再试"); + return; + } + String nextStationName = ""; + String nextStationNameKr = ""; + MogoLocation nextStationPoint = new MogoLocation(); + if (backgroundCurrentStationIndex < stationList.size() - 1) { + BusStationBean nextStation = stationList.get(backgroundCurrentStationIndex + 1); + nextStationName = nextStation.getName(); + nextStationNameKr = nextStation.getNameKr(); + nextStationPoint.setLongitude(nextStation.getGcjLon()); + nextStationPoint.setLatitude(nextStation.getGcjLat()); + } + final String currentStationName = stationList.get(backgroundCurrentStationIndex).getName(); + String finalNextStationName = nextStationName; + String finalNextStationNameKr = nextStationNameKr; + + isArrivedStation = false; + CallerLogger.d(M_BUS + TAG, "行程日志-离站成功开往下一站===="); + + long writeVersion = DateTimeUtil.getCurrentTimeStamp(); + leaveStationSuccess(backgroundCurrentStationIndex, currentStationName, + finalNextStationName, finalNextStationNameKr, writeVersion); + + BusStationBean busStationBean = stationList.get(backgroundCurrentStationIndex); + MogoLocation currentStationPoint = new MogoLocation(); + currentStationPoint.setLongitude(busStationBean.getGcjLon()); + currentStationPoint.setLatitude(busStationBean.getGcjLat()); + setTrajectoryStation(currentStationPoint, nextStationPoint, (long) busRoutesResult.getLineId()); + + String changeInfo = "taskId:" + busRoutesResult.getTaskId() + "--lineId:" + busRoutesResult.getLineId() + + "--currentStationName:" + currentStationName + "--finalNextStationName:" + finalNextStationName; + OchChainLogManager.writeChainLog("滑动出发", changeInfo, + true, OchChainLogManager.EVENT_KEY_INFE_WITH_BUS); + OrderServiceManager.leaveStation(mContext, + stationList.get(backgroundCurrentStationIndex).getSeq(), + stationList.get(backgroundCurrentStationIndex).getSiteId(), + busRoutesResult.getTaskId(), writeVersion, + new OchCommonServiceCallback() { + @Override + public void onSuccess(BaseData o) { + OchChainLogManager.writeChainLog("滑动出发成功", changeInfo, + true, OchChainLogManager.EVENT_KEY_INFE_WITH_BUS); + } + + + @Override + public void onError() { + } + + @Override + public void onFail(int code, String failMsg) { + } + }); + } + + //车站10s后播报 + private void leaveTTSTips(String nextStation, String nextStationKr) { + UiThreadHandler.postDelayed(new Runnable() { + @Override + public void run() {//延迟10s播报 + ShuttleVoiceManager.INSTANCE.leaveStationBus(nextStation, nextStationKr); + } + }, DELAY_10S); + + } + + /** + * 关闭美化模式 + */ + public void closeBeautificationMode() { + if (FunctionBuildConfig.isDemoMode) {//收车结束美化 + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false; //是否强制绘制引导线 + CallerAutoPilotControlManager.INSTANCE.setIgnoreConditionDraw(false);// 同步给乘客屏 + CallerAutoPilotControlManager.INSTANCE.setIPCDemoMode(false);//是否自动启动自驾 + CallerLogger.d(M_BUS + TAG, "美化模式-ignore:置为false"); + } + } + + /** + * 开启自动驾驶到下一站 + */ + public void autoDriveToNextStation() { + if (backgroundCurrentStationIndex >= stationList.size() - 1) { + // 当前站是最后一站,结束当前行程 + travelOver(); + return; + } + leaveStation(); + } + + /** + * 渲染站点信息 + * 服务端返回的OchBusRoutesResult逻辑, 离开站为当前站, 到达下一站后才会将下一站置为当前站, + * 车机端展示 三站: 中间为即将到到达或者刚到达的站 + * + * @param result + */ + private void updateBusStatus(BusRoutesResult result) { + if (result == null) return; + busRoutesResult = result; + stationList.clear(); + stationList.addAll(result.getSites()); + for (int i = 0; i < stationList.size(); i++) { + BusStationBean s = stationList.get(i); + + CallerLogger.d(M_BUS + "updateBusStationsStatus--", + "Index=" + i + " ,name = " + s.getName() + " ," + s.isLeaving() + "," + s.getDrivingStatus()); + + // 是否正在开往下一站 + if (s.isLeaving()) { + isGoingToNextStation = true; + } + // 当前站点信息 + if (s.getDrivingStatus() == STATION_STATUS_STOPPED) { + backgroundCurrentStationIndex = i; + break; + } + } + + if (backgroundCurrentStationIndex == 0 && + stationList.get(0).getDrivingStatus() == STATION_STATUS_STOPPED + && !stationList.get(0).isLeaving()) { //默认是第一站到站查询 + if (busRoutesResult != null) { // 第一站到站也是行程开始的时候 + BusSendTripInfoManager.INSTANCE.sendBusTripInfo(BusSendTripInfoManager.START_TRIP + , busRoutesResult.getName(), "", "", false); + } + + //任务选择后首发前给司机提示任务 + if (busRoutesResult != null) { + beforeTaskTips(); + } + } else { + removeTipRunnables(); + } + + BusStationBean currentStation = stationList.get(backgroundCurrentStationIndex); + + CallerLogger.d(M_BUS + TAG, + "行程日志-STATION_STATUS_STOPPED-backgroundCurrentStationIndex=" + + backgroundCurrentStationIndex + + " isLeaving()=" + currentStation.isLeaving()); + + // 美化是否开始 + if (FunctionBuildConfig.isDemoMode && (backgroundCurrentStationIndex >= 0 + && backgroundCurrentStationIndex <= stationList.size() - 1)) {//行驶过程中设置美化 + if (stationList.get(backgroundCurrentStationIndex).isLeaving()) { + startBeautificationMode(); + CallerLogger.d(M_BUS + TAG, "美化模式-ignore:置为true(每次滑动出发)"); + } else if (backgroundCurrentStationIndex > 0 && backgroundCurrentStationIndex < stationList.size() - 1) { + //美化模式下 中间站点到站 引导线要一直绘制,所以此处不出强制绘制不传false + CallerAutoPilotControlManager.INSTANCE.setIPCDemoMode(false); + CallerLogger.d(M_BUS + TAG, "美化模式-ignore:false(到达中间站)"); + clearStartAutopilotTag(); + } else { + closeBeautificationMode(); + clearStartAutopilotTag(); + } + } + + + if (currentStation.isLeaving() && slidePanelHideCallback != null) { + slidePanelHideCallback.hideSlidePanel(); + } + + sendTaskDetailsToClients(); + + //更新bus路线面板 + updateBusTaskStatus(stationList); + + //需放在currentStationIndex赋值之后 + BusTrajectoryManager.getInstance().syncTrajectoryInfo(); + } + + private void beforeTaskTips() { + if (busRoutesResult == null) return; + + removeTipRunnables(); + + long taskTime = busRoutesResult.getTaskTime(); + long tip3Time = taskTime - 3 * 60 * 1000 - DateTimeUtil.getCurrentTimeStamp(); // 首站离开前3分钟提示 + long tip1Time = taskTime - 60 * 1000 - DateTimeUtil.getCurrentTimeStamp(); // 首站离开前1分钟提示 + + if (tip3Time > 0) { + UiThreadHandler.postDelayed(tip3Runnable, tip3Time); + } + + if (tip1Time > 0) { + UiThreadHandler.postDelayed(tip1Runnable, tip1Time); + } + } + + Runnable tip3Runnable = new Runnable() { + @Override + public void run() { + + if (backgroundCurrentStationIndex == 0 && stationList.get(0).getDrivingStatus() == STATION_STATUS_STOPPED + && !stationList.get(0).isLeaving()) { + tipStartTask("3"); + } else { + removeTipRunnables(); + } + } + }; + + private void tipStartTask(String s) { + String tips = String.format(mContext + .getString(R.string.bus_before_tips_s), s); + //展示在运营消息 + OCHSocketMessageManager.INSTANCE.pushAppOperationalMsgBox( + DateTimeUtil.getCurrentTimeStamp(), + tips, OCHSocketMessageManager.OPERATION_SYSTEM); + ShuttleVoiceManager.INSTANCE.showLeafTime(tips); + } + + Runnable tip1Runnable = new Runnable() { + @Override + public void run() { + if (backgroundCurrentStationIndex == 0 && stationList != null && + stationList.get(0).getDrivingStatus() == STATION_STATUS_STOPPED + && !stationList.get(0).isLeaving()) { + tipStartTask("1"); + } else { + removeTipRunnables(); + } + } + }; + + public void removeTipRunnables() { + if (tip3Runnable != null) { + UiThreadHandler.removeCallbacks(tip3Runnable); + } + if (tip1Runnable != null) { + UiThreadHandler.removeCallbacks(tip1Runnable); + } + } + + private void clearStartAutopilotTag() { + firstStartAutopilot = 0; + } + + private void startBeautificationMode() { + FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; + CallerAutoPilotControlManager.INSTANCE.setIgnoreConditionDraw(true); + CallerAutoPilotControlManager.INSTANCE.setIPCDemoMode(true); + } + + public void clearBusStationDatas() { + if (refreshBusStationsCallback != null) { + refreshBusStationsCallback.clearBusStationsMarkers(); + } + } + + /** + * 在踩刹车、控制方向盘等操作后,会停止自动驾驶,重启自动驾驶的话相当于重新设置自动驾驶目的地 + */ + public void restartAutopilot() { + CallerLogger.d(M_BUS + TAG, "行程日志-重启自动驾驶===" + isGoingToNextStation); + //只去启动自动驾驶,不再去上报离站 + startAutopilot(firstStartAutopilot >= 1, -1); + } + + public boolean isRestartAutopilot() { + return firstStartAutopilot > 1; + } + + /** + * 行程结束 + */ + private void travelOver() { + + if (backgroundCurrentStationIndex >= stationList.size()) { + CallerLogger.e(M_BUS + TAG, "travel over index out of station list"); + return; + } + CallerLogger.d(M_BUS + TAG, "单程结束===="); + CallerAutoPilotControlManager.INSTANCE.cancelAutoPilot(); + setTrajectoryStation(null, null, -1L); + endTask(); + } + + /** + * task正常结束 + */ + private void endTask() { + CallerLogger.d(M_BUS + TAG, "任务正常走完endTask()"); + OrderServiceManager.endTask(mContext, busRoutesResult.getTaskId() + , new OchCommonServiceCallback() { + @Override + public void onSuccess(BaseData o) { + CallerLogger.d(M_BUS + TAG, "endTask success: " + o); + if (o.code == 0) { + endOrAbortTaskSuccess(); + clearBusStationDatas(); + queryBusRoutes();// 重新获取任务 + removeTipRunnables(); + ShuttleVoiceManager.INSTANCE.endOrderBus(); + sendEndTaskToClient(); + } + } + + @Override + public void onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort(mContext.getString(R.string.network_error_tip)); + } else { + ToastUtils.showShort(mContext.getString(R.string.request_error_tip)); + } + } + + @Override + public void onFail(int code, String failMsg) { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort("网络异常,请稍后重试"); + } else { + ToastUtils.showShort(failMsg); + } + } + }); + } + + /** + * 到站 + * + * @param data + */ + public void onArriveAt(ArrivedStation data, String type) { + if (backgroundCurrentStationIndex + 1 > stationList.size() - 1) { + CallerLogger.e(M_BUS + TAG, "行程日志-到站异常,取消后续操作结束"); + return; + } + + //MAP 280 每隔100ms左右返回一次到站, 导致在到达中间站后再次滑动出发后会有时间差,收到一次到站,出现问题 + //此处比对 自驾告诉的到站站点坐标和本地应到站站点坐标, 一致时才能到站 + if (data != null && data.getEndLocation() != null) { + + String latitude = NumberFormatUtil.cutOutNumber(data.getEndLocation().getLatitude(), 5); //wgs + String longitude = NumberFormatUtil.cutOutNumber(data.getEndLocation().getLongitude(), 5); + + int arrivedStationIndex = backgroundCurrentStationIndex + 1; + BusStationBean arriveStation = stationList.get(arrivedStationIndex); + String arriveLat = NumberFormatUtil.cutOutNumber(arriveStation.getLat(), 5); + String arriveLon = NumberFormatUtil.cutOutNumber(arriveStation.getLon(), 5); + + if (!latitude.equals(arriveLat) || !longitude.equals(arriveLon)) { + CallerLogger.e(M_BUS + TAG, "行程日志-到站拦截,到站坐标不一致"); + return; + } + } + + if (isArrivedStation) return; + + CallerLogger.d(M_BUS + TAG, "行程日志-当前==backgroundCurrentStationIndex=" + + backgroundCurrentStationIndex); + + arriveSiteStation(type); + } + + public boolean isGoingToNextStation() { + return isGoingToNextStation; + } + + // 登出 + public void logout() { + MogoLocation gcj02 = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02(); + LoginStatusManager.loginOut(gcj02.getLatitude(), gcj02.getLongitude()); + } + + public void triggerStartServiceEvent(boolean isRestart, boolean send) { + if (stationList == null || backgroundCurrentStationIndex >= stationList.size() - 1) { + return; + } + BusStationBean currentStation = stationList.get(backgroundCurrentStationIndex); + BusStationBean nextStation = stationList.get(backgroundCurrentStationIndex + 1); + BusAnalyticsManager.getInstance().triggerStartAutopilotEvent(isRestart, send, + currentStation.getName(), nextStation.getName(), busRoutesResult.getLineId(), "", System.currentTimeMillis()); + } + + public void triggerUnableStartAPReasonEvent() { + if (stationList == null || backgroundCurrentStationIndex >= stationList.size() - 1) { + return; + } + BusStationBean currentStation = stationList.get(backgroundCurrentStationIndex); + BusStationBean nextStation = stationList.get(backgroundCurrentStationIndex + 1); + BusAnalyticsManager.getInstance().triggerUnableStartAPReasonEvent( + currentStation.getName(), nextStation.getName(), String.valueOf(busRoutesResult.getLineId()), "", + OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason()); + } + + public BusRoutesResult getBusRoutesResult() { + return busRoutesResult; + } + + public BusStationBean getBusNextStation() { + // A->B 的过程中A站点的信息 + if (stationList == null || backgroundCurrentStationIndex >= stationList.size() - 1) { + return null; + } + return stationList.get(backgroundCurrentStationIndex); + } + + public int getCurrentStationIndex() { + return backgroundCurrentStationIndex; + } + + /** + * 将业务订单信息保存,鹰眼可取用 + */ + private void updateAutopilotControlParameters() { + + AutopilotControlParameters parameters = initAutopilotControlParameters(-1); + if (null == parameters) { + CallerLogger.e(M_BUS + TAG, "AutopilotControlParameters is empty."); + return; + } + CallerLogger.d(M_BUS + TAG, "AutopilotControlParameters is update."); + CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(parameters); + } + + private void clearAutopilotControlParameters() { + CallerLogger.d(M_BUS + TAG, "AutopilotControlParameters is clear."); + CallerAutoPilotStatusListenerManager.INSTANCE.updateAutopilotControlParameters(null); + } + + private AutopilotControlParameters initAutopilotControlParameters(int leaveIndex) { + BusStationBean currentStation = null; + BusStationBean nextStation = null; + + if (leaveIndex < 0) { + if (backgroundCurrentStationIndex + 1 > stationList.size() - 1 || !isGoingToNextStation) { + CallerLogger.e(M_BUS + TAG, "行程日志-mismatch condition1."); + return null; + } + currentStation = stationList.get(backgroundCurrentStationIndex); + nextStation = stationList.get(backgroundCurrentStationIndex + 1); + } else { + if (leaveIndex + 1 > stationList.size() - 1 || !isGoingToNextStation) { + CallerLogger.e(M_BUS + TAG, "行程日志-mismatch condition2."); + return null; + } + currentStation = stationList.get(leaveIndex); + nextStation = stationList.get(leaveIndex + 1); + } + + AutopilotControlParameters parameters = new AutopilotControlParameters(); + parameters.routeID = busRoutesResult.getLineId(); + parameters.routeName = busRoutesResult.getName(); + parameters.startName = PinYinUtil.getPinYinHeadChar(currentStation.getName()); + parameters.endName = PinYinUtil.getPinYinHeadChar(nextStation.getName()); + parameters.startLatLon = new AutopilotControlParameters + .AutoPilotLonLat(currentStation.getLat(), currentStation.getLon()); + parameters.endLatLon = new AutopilotControlParameters + .AutoPilotLonLat(nextStation.getLat(), nextStation.getLon()); + parameters.vehicleType = VEHICLE_TYPE; + if (parameters.autoPilotLine == null) { + parameters.autoPilotLine = new AutopilotControlParameters.AutoPilotLine( + busRoutesResult.getLineId(), busRoutesResult.getName(), + busRoutesResult.csvFileUrl, busRoutesResult.csvFileMd5, + busRoutesResult.txtFileUrl, busRoutesResult.txtFileMd5, + busRoutesResult.contrailSaveTime, busRoutesResult.carModel, + busRoutesResult.csvFileUrlDPQP, busRoutesResult.csvFileMd5DPQP, + busRoutesResult.txtFileUrlDPQP, busRoutesResult.txtFileMd5DPQP, + busRoutesResult.contrailSaveTimeDPQP); + } + + return parameters; + } + + public void setTrajectoryStation(MogoLocation startStation, MogoLocation endStation, Long lineId) { + TrajectoryAndDistanceManager.INSTANCE.setStationPoint(startStation, endStation, lineId); + } + +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/TicketModel.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/TicketModel.kt new file mode 100644 index 0000000000..866c1ca90d --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/model/TicketModel.kt @@ -0,0 +1,218 @@ +package com.mogo.och.offline.model + +import com.elegant.network.utils.GsonUtil +import com.mogo.aicloud.services.socket.IMogoOnMessageListener +import com.mogo.commons.AbsMogoApplication +import com.mogo.eagle.core.data.enums.EventTypeEnumNew +import com.mogo.eagle.core.data.msgbox.MsgBoxBean +import com.mogo.eagle.core.data.msgbox.MsgBoxType +import com.mogo.eagle.core.data.msgbox.V2XMsg +import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener +import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager.saveMsgBox +import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.util.GsonUtils +import com.mogo.och.offline.bean.WriteOffCountResponse +import com.mogo.och.offline.bean.WriteOffPassenger +import com.mogo.och.offline.net.OrderServiceManager +import com.mogo.och.offline.util.ShuttleVoiceManager +import com.mogo.och.common.module.manager.socket.lan.bean.BaseDPMsg +import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffDevicesMsg +import com.mogo.och.common.module.manager.socket.lan.bean.WriteOffMsg +import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager +import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.common.module.manager.loop.BizLoopManager +import com.mogo.och.common.module.manager.loop.LoopInfo +import io.reactivex.Observable +import io.reactivex.ObservableEmitter +import io.reactivex.ObservableOnSubscribe +import io.reactivex.schedulers.Schedulers + +object TicketModel : IReceivedMsgListener, IMogoOnMessageListener { + + private val TAG = "TicketModel" + + private val SELECTWRITEOFFCOUNT = "SELECTWRITEOFFCOUNT" + + private var emitterMain: ObservableEmitter?=null + + private val observable = Observable.create(ObservableOnSubscribe { emitter -> emitterMain = emitter }) + + init { + + //监听乘客屏发来的消息 + CallerTelematicListenerManager.addListener(TAG, this) + OCHSocketMessageManager.registerSocketMessageListener( //监听核销乘客 + OCHSocketMessageManager.msgWriteOffPassengerType, + this + ) + } + + fun load(){ + BizLoopManager.setLoopFunction( + SELECTWRITEOFFCOUNT, LoopInfo(3, + TicketModel::selectWriteOffCount,scheduler = Schedulers.io())) + } + + // 收到局域网的核验信息 + override fun onReceivedMsg(type: Int, byteArray: ByteArray) { + if (OchCommonConst.BUSINESS_STRING == type) { + d(SceneConstant.M_BUS + TAG, "局域网核验"+String(byteArray)) + val msg = GsonUtils.fromJson(String(byteArray), BaseDPMsg::class.java) + if (msg != null) { + if (msg.type == DPMsgType.TYPE_WRITEOFF_INFO.type) { + val writeOffMsg = GsonUtils.fromJson(String(byteArray), WriteOffMsg::class.java) + receiveWrteOffInfo(writeOffMsg) + } else if (msg.type == DPMsgType.TYPE_WRITEOFF_DEVICES_INFO.type) { + val writeOffMsg = GsonUtils.fromJson(String(byteArray), WriteOffDevicesMsg::class.java) + receiveWrteOffDevicesInfo(writeOffMsg) + } + } + } + } + + override fun target(): Class { + return WriteOffPassenger::class.java + } + + // 收到服务器的核验信息 + override fun onMsgReceived(passenger: WriteOffPassenger?) { + //进行播报 + i(SceneConstant.M_BUS + TAG, "后台socket 核验:passenger = " + GsonUtil.jsonFromObject(passenger)) + if(passenger==null||passenger.passengerSize==0){ + return + } + playPassenger( + passenger.passengerSize, + passenger.phone ?: "", + passenger.ticketName?:"", + passenger.orderNo?:"" + ) + selectWriteOffCount() + } + + private fun selectWriteOffCount(){ + val busRoutesResult = OrderModel.getInstance().busRoutesResult + val busNextStation = OrderModel.getInstance().busNextStation + if(busRoutesResult==null||busNextStation==null){ + emitterMain?.onNext(0) + d(SceneConstant.M_BUS + TAG, "线路或者站点未空:${busRoutesResult}----${busNextStation}") + return + } + OrderServiceManager.queryBusTaskByLineId(AbsMogoApplication.getApp(), + "${busRoutesResult.taskId}", + "${busNextStation.siteId}", + object : OchCommonServiceCallback { + override fun onSuccess(data: WriteOffCountResponse?) { + data?.data?.let { + emitterMain?.onNext(it) + d(SceneConstant.M_BUS + TAG, "${busNextStation.name}核销人数:${it}") + } + } + + override fun onFail(code: Int, msg: String?) { + + } + }) + } + + fun getWriteOffCountObservable():Observable{ + return observable + } + + private fun receiveWrteOffInfo(writeOffMsg: WriteOffMsg?) { + if(writeOffMsg!=null) { + if (writeOffMsg.isScuccess != null) { + if (writeOffMsg.isScuccess == true) { // 核验成功 + if(writeOffMsg.ticketSize==null||writeOffMsg.ticketSize==0){ + return + } +// playPassenger( +// writeOffMsg.ticketSize?:0, +// writeOffMsg.phone ?: "", +// writeOffMsg.ticketName ?: "", +// writeOffMsg.orderNo?:"" +// ) + } else { // 核验失败 + ShuttleVoiceManager.writeOffFaile("验票失败,${writeOffMsg.failedReason ?: ""}") + saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, V2XMsg( + EventTypeEnumNew.TYPE_ABNORMAL_VERIFICATION.poiType, + writeOffMsg.failedReason ?: "", + EventTypeEnumNew.TYPE_ABNORMAL_VERIFICATION.tts, + "" + ) + ) + ) + } + } + } + } + + private fun receiveWrteOffDevicesInfo(writeOffMsg: WriteOffDevicesMsg) { + if (writeOffMsg.isConnectScanner != null) { + val reason = if (writeOffMsg.reason == null) "" else writeOffMsg.reason!! + if (writeOffMsg.isConnectScanner==true) { // 链接成功 + saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, + V2XMsg( + EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.poiType, + reason, + EventTypeEnumNew.TYPE_DEVICE_STATUS_NORMAL.tts, + "" + ) + ) + ) + } else { // 核验失败 + saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, + V2XMsg( + EventTypeEnumNew.TYPE_DEVICE_STATUS_ABNORMAL.poiType, + reason, + EventTypeEnumNew.TYPE_DEVICE_STATUS_ABNORMAL.tts, + "" + ) + ) + ) + } + } + } + + private fun playPassenger(ticketSize: Int,phone:String,ticketName:String,orderNo:String) { + + if (ticketSize > 1) { //多人播报 "x人" ---》x人核验通过 + OrderModel.getInstance().sendWriteOffNumToClient(ticketSize.toString() + "人核验通过") + } else { //是 1 播放 "滴" 2022.11.09 改为: "核验通过" + OrderModel.getInstance().sendWriteOffNumToClient("核验通过") + } + ShuttleVoiceManager.writeOffCount(ticketSize) + + var tempPhone = phone + if (tempPhone.length > 8) { + //截取电话号码前三位 + val phoneNumPre = tempPhone.substring(0, 3) + //截取电话号码后四位 + val phoneNumFix = tempPhone.substring(7) + tempPhone = "$phoneNumPre****$phoneNumFix" + } + val content = "${ticketSize}张 $ticketName $tempPhone" + saveMsgBox(MsgBoxBean( + MsgBoxType.V2X, + V2XMsg( + EventTypeEnumNew.TYPE_VERIFICATION_SUCCESSFUL.poiType, + content, + EventTypeEnumNew.TYPE_VERIFICATION_SUCCESSFUL.tts, + "" + ) + ) + ) + } + +} \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/net/IBascApiService.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/net/IBascApiService.java new file mode 100644 index 0000000000..95968ac326 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/net/IBascApiService.java @@ -0,0 +1,124 @@ +package com.mogo.och.offline.net; +import com.mogo.eagle.core.data.BaseData; +import com.mogo.och.offline.bean.BindLineListResponse; +import com.mogo.och.offline.bean.BusCloseTaskRequest; +import com.mogo.och.offline.bean.BusRoutesResponse; +import com.mogo.och.offline.bean.BusQueryLineTaskResponse; +import com.mogo.och.offline.bean.BusQueryLinesResponse; +import com.mogo.och.offline.bean.BusQueryLineStationsRequest; +import com.mogo.och.offline.bean.BusResetDrivingLineRequest; +import com.mogo.och.offline.bean.BusUpdateSiteStatusRequest; +import com.mogo.och.offline.bean.WriteOffCountResponse; + +import io.reactivex.Observable; +import retrofit2.http.Body; +import retrofit2.http.GET; +import retrofit2.http.Header; +import retrofit2.http.Headers; +import retrofit2.http.POST; +import retrofit2.http.Query; + +/** + * 小巴车相关接口 + * + * @author tongchenfei + *

+ * wiki: http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48970072 + */ +public interface IBascApiService { + /** + * 查询当前运行任务 + * + * @param request 请求参数 + * @return 接口返回数据 + */ + @Headers( {"Content-Type:application/json;charset=UTF-8"} ) + @POST( "/och-shuttle-cabin/api/business/v1/driver/lineDataWithDriver/query" ) + Observable queryBusRoutes(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusQueryLineStationsRequest request); + + /** + * @param request 请求参数{"destLine":1,"sn":"F803EB2046PZD00229"} 这个接口是重置bus线路的, 不是重置线路中站点的 + * @return 返回值是重置后的车站列表 + * 开始路线 + */ + @Headers( {"Content-Type:application/json;charset=UTF-8"} ) + @POST( "/och-shuttle-cabin/api/flow/v1/driver/startTask" ) + Observable switchLine(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusResetDrivingLineRequest request); + + /** + * 离站,通知服务器 + * @param request + * @return + */ + @Headers({"Content-Type:application/json;charset=UTF-8"}) + @POST("/och-shuttle-cabin/api/flow/v1/driver/leave") + Observable leaveStation(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusUpdateSiteStatusRequest request); + + /** + * 到站 更新到站信息 + * @param request + * @return + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/och-shuttle-cabin/api/flow/v1/driver/arrive") + Observable arriveSiteStation(@Header ("appId") String appId,@Header("ticket") String ticket,@Body BusUpdateSiteStatusRequest request); + + /** + * 查询车辆配置的所有路线 + * @param appId + * @param ticket + * @param sn + * @return + */ + @GET("/och-shuttle-cabin/api/business/v1/driver/bindLine/query") + Observable queryBusLines(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); + + /** + * 查询线路的任务 + * @param appId + * @param ticket + * @param lineId 线路id + * @return + */ + @GET("/och-shuttle-cabin/api/business/v1/driver/task/query") + Observable queryBusTaskByLineId(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("lineId") String lineId); + + /** + * 中止任务 + * @param appId + * @param ticket + * @param data + * @return + */ + @POST("/och-shuttle-cabin/api/flow/v1/driver/abortTask") + Observable abortTask(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusCloseTaskRequest data); + + /** + * 任务正常跑完结束 + * @param appId + * @param ticket + * @param data + * @return + */ + @Headers( {"Content-type:application/json;charset=UTF-8"} ) + @POST("/och-shuttle-cabin/api/flow/v1/driver/endTask") + Observable endTask(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusCloseTaskRequest data); + + + @Headers( {"Content-type:application/json;charset=UTF-8"} ) + @GET("och-shuttle-cabin/api/business/v1/task/writeOffCount") + Observable writeOffCount(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("taskId") String taskId, @Query("siteId") String siteId); + + + /** + * 查询车辆配置的所有路线 + * @param appId + * @param ticket + * @param sn + * @return + */ + @GET("/och-vehicle/public/car/queryBindLineListBySn") + Observable queryBindLineListBySn(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); + +} + diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/net/OrderServiceManager.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/net/OrderServiceManager.kt new file mode 100644 index 0000000000..6a47ce6a3e --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/net/OrderServiceManager.kt @@ -0,0 +1,208 @@ +package com.mogo.och.offline.net + +import android.content.Context +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.commons.AbsMogoApplication +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.common.module.network.OchCommonSubscribeImpl +import com.mogo.och.common.module.network.interceptor.transformIoTry +import com.mogo.och.common.module.network.interceptor.transformTry +import com.mogo.och.offline.bean.BindLineListResponse +import com.mogo.och.offline.bean.BusCloseTaskRequest +import com.mogo.och.offline.bean.BusQueryLineStationsRequest +import com.mogo.och.offline.bean.BusQueryLineTaskResponse +import com.mogo.och.offline.bean.BusQueryLinesResponse +import com.mogo.och.offline.bean.BusResetDrivingLineRequest +import com.mogo.och.offline.bean.BusRoutesResponse +import com.mogo.och.offline.bean.BusUpdateSiteStatusRequest +import com.mogo.och.offline.bean.WriteOffCountResponse + +/** + * @author: wangmingjun + * @date: 2021/10/20 + */ +object OrderServiceManager { + + private val mService: IBascApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create( + IBascApiService::class.java + ) + + + /** + * 查询小巴车当前任务 + * @param context + * @param callback + */ + @JvmStatic + fun queryBusRoutes(context: Context, callback: OchCommonServiceCallback?) { + //获取当前高德坐标 + mService.queryBusRoutes( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + BusQueryLineStationsRequest() + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusRoutes")) + } + + /** + * 重置线路站点 + * @param context + * @param taskId + * @param callback + */ + @JvmStatic + fun switchLine( + context: Context, + taskId: Int, + callback: OchCommonServiceCallback? + ) { + mService.switchLine( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + BusResetDrivingLineRequest(taskId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "switchLine")) + } + + /** + * 中断当前任务 + * @param context + * @param taskId + * @param callback + */ + @JvmStatic + fun abortTask(context: Context, taskId: Int, callback: OchCommonServiceCallback?) { + mService.abortTask( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + BusCloseTaskRequest(taskId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "abortTask")) + } + + /** + * 正常结束任务 + * @param context + * @param taskId + * @param callback + */ + @JvmStatic + fun endTask(context: Context, taskId: Int, callback: OchCommonServiceCallback?) { + mService.endTask( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + BusCloseTaskRequest(taskId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "endTask")) + } + + /** + * 离站上报 + * @param context + * @param seq + * @param siteId + * @param callback + */ + @JvmStatic + fun leaveStation( + context: Context, + seq: Int, + siteId: Int, + taskId: Int, + writeVersion: Long, + callback: OchCommonServiceCallback? + ) { + mService.leaveStation( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + BusUpdateSiteStatusRequest(taskId, siteId, seq,writeVersion) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "leaveStation")) + } + + /** + * 到站更新站点状态 + * @param context + * @param seq + * @param siteId + * @param callback + */ + @JvmStatic + fun arriveSiteStation( + context: Context, seq: Int, siteId: Int, taskId: Int, writeVersion: Long, + callback: OchCommonServiceCallback? + ) { + mService.arriveSiteStation( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + BusUpdateSiteStatusRequest(taskId, siteId, seq, writeVersion) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation")) + } + + @JvmStatic + fun queryBusLines(context: Context, callback: OchCommonServiceCallback?) { + mService.queryBusLines( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + SharedPrefsMgr.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines")) + } + + @JvmStatic + fun queryBusTaskByLineId( + context: Context, + lineId: String?, + callback: OchCommonServiceCallback? + ) { + mService.queryBusTaskByLineId( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + lineId + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines")) + } + + @JvmStatic + fun queryBusTaskByLineId( + context: Context, + taskId: String?, + siteId: String?, + callback: OchCommonServiceCallback? + ) { + mService.writeOffCount( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + taskId, + siteId + ) + .transformIoTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "writeOffCount")) + } + + @JvmStatic + fun queryBindLineListBySn( + callback: OchCommonServiceCallback? + ) { + mService.queryBindLineListBySn( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token, + SharedPrefsMgr.getInstance().sn + ) + .transformIoTry() + .subscribe(OchCommonSubscribeImpl(AbsMogoApplication.getApp(), callback, "writeOffCount")) + } +} \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/presenter/BusLinePresenter.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/presenter/BusLinePresenter.java new file mode 100644 index 0000000000..aa072e24ef --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/presenter/BusLinePresenter.java @@ -0,0 +1,113 @@ +package com.mogo.och.offline.presenter; + +import androidx.annotation.NonNull; +import androidx.lifecycle.LifecycleOwner; + +import com.mogo.commons.mvp.Presenter; +import com.mogo.eagle.core.utilcode.util.UiThreadHandler; +import com.mogo.och.offline.ui.BusSwitchLineView; +import com.mogo.och.offline.bean.BusQueryLineTaskResponse; +import com.mogo.och.offline.bean.BusQueryLinesResponse; +import com.mogo.och.offline.callback.IBusLinesCallback; +import com.mogo.och.offline.model.BusLineModel; +import com.mogo.och.offline.model.OrderModel; + +import java.util.concurrent.TimeUnit; + +import io.reactivex.Observable; +import io.reactivex.disposables.Disposable; + +/** + * @author: wangmingjun + * @date: 2022/2/9 + */ +public class BusLinePresenter extends Presenter implements IBusLinesCallback { + + private Disposable subscribe; + + public BusLinePresenter(BusSwitchLineView view) { + super(view); + BusLineModel.getInstance().init(); + OrderModel.getInstance().init(); + } + + @Override + public void onCreate(@NonNull LifecycleOwner owner) { + super.onCreate(owner); + initListener(); + } + + private void initListener() { + BusLineModel.getInstance().setBusLinesCallback(this); + } + + @Override + public void onBusLinesChange(BusQueryLinesResponse lines) { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onBusLinesChange(lines); + } + } + }, UiThreadHandler.MODE.QUEUE); + } + + @Override + public void onChangeLineIdSuccess() { + OrderModel.getInstance().clearBusStationDatas(); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onChangeLineIdSuccess(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } + + public void queryBusLines(){ + BusLineModel.getInstance().queryBusLines(); + } + + public void queryBusLineTasks(int lineId, int position,boolean close){ + if(subscribe!=null&&!subscribe.isDisposed()){ + subscribe.dispose(); + } + if(close){ + return; + } + BusLineModel.getInstance().queryBusLineTasksById(lineId,position,false); + subscribe = Observable.interval(3, TimeUnit.MINUTES).subscribe(aLong -> { + BusLineModel.getInstance().queryBusLineTasksById(lineId,position,true); + }); + } + + public void commitSwitchLineId(int taskId,int lineId){ + BusLineModel.getInstance().commitSwitchLineId(taskId,lineId); + } + + public void removeListener(){ + BusLineModel.getInstance().setBusLinesCallback(null); + } + + public void queryBusRoutes(){ + OrderModel.getInstance().queryBusRoutes(); + } + + @Override + public void onDestroy(@NonNull LifecycleOwner owner) { + super.onDestroy(owner); + if(subscribe!=null&&!subscribe.isDisposed()){ + subscribe.dispose(); + } + } + + + @Override + public void onBusLineTasks(BusQueryLineTaskResponse o, int position,boolean autoRefresh) { + if(mView!=null) { + mView.onBusLineTasks(o,position,autoRefresh); + } + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/presenter/BusPresenter.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/presenter/BusPresenter.java new file mode 100644 index 0000000000..8279c98ea7 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/presenter/BusPresenter.java @@ -0,0 +1,325 @@ +package com.mogo.och.offline.presenter; + +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; + +import android.os.Looper; + +import androidx.annotation.NonNull; +import androidx.lifecycle.LifecycleOwner; + +import com.mogo.commons.AbsMogoApplication; +import com.mogo.commons.mvp.Presenter; +import com.mogo.eagle.core.data.config.FunctionBuildConfig; +import com.mogo.eagle.core.data.map.MogoLocation; +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.util.UiThreadHandler; +import com.mogo.och.common.module.biz.login.LoginStatusEnum; +import com.mogo.och.common.module.manager.autopilot.autopilot.ArrivedStation; +import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener; +import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager; +import com.mogo.och.data.bean.BusStationBean; +import com.mogo.och.offline.callback.IBusADASStatusCallback; +import com.mogo.och.offline.callback.IBusControllerStatusCallback; +import com.mogo.och.offline.callback.IRefreshBusStationsCallback; +import com.mogo.och.offline.callback.ISlidePannelHideCallback; +import com.mogo.och.offline.fragment.ShuttleFragment; +import com.mogo.och.offline.model.OrderModel; +import com.mogo.och.offline.util.BusTrajectoryManager; +import com.mogo.och.common.module.biz.login.ILoginCallback; +import com.mogo.och.common.module.biz.login.LoginStatusManager; +import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager; + + +import java.util.ArrayList; +import java.util.List; + +import mogo_msg.MogoReportMsg; + +/** + * 网约车小巴 + * + * @author tongchenfei + */ +public class BusPresenter extends Presenter + implements IRefreshBusStationsCallback, ISlidePannelHideCallback + , IOchAutopilotStatusListener, IBusControllerStatusCallback, ILoginCallback, IBusADASStatusCallback { + + private static final String TAG = "BusPresenter"; + + private final List mStationList = new ArrayList<>(); + private int mCurrentStation = 0; + + public BusPresenter(ShuttleFragment view) { + super(view); + //2021.11.1 鹰眼架构整合,由IMoGoAutopilotStatusListener逐步替代IMogoAdasOCHCallback接口 + OrderModel.getInstance().init(); + OCHAdasAbilityManager.getInstance().init(AbsMogoApplication.getApp()); + + } + + @Override + public void onCreate(@NonNull LifecycleOwner owner) { + super.onCreate(owner); + initModelListener(); + + OrderModel.getInstance().queryBusCacheRoutes(); + } + + @Override + public void onDestroy(@NonNull LifecycleOwner owner) { + super.onDestroy(owner); + OrderModel.getInstance().release(); + releaseListener(); + } + + public void initModelListener() { + OrderModel.getInstance().setRefreshBusStationsCallback(this); + OrderModel.getInstance().setSlidePanelHideCallback(this); + OrderModel.getInstance().setControllerStatusCallback(this); + OrderModel.getInstance().setAdasStatusCallback(this); + OchAutoPilotStatusListenerManager.INSTANCE.addListener(TAG,this); + LoginStatusManager.INSTANCE.addListener(TAG,this); + } + + public void releaseListener() { + OrderModel.getInstance().setRefreshBusStationsCallback(null); + OrderModel.getInstance().setSlidePanelHideCallback(null); + OrderModel.getInstance().setControllerStatusCallback(null); + OrderModel.getInstance().setAdasStatusCallback(null); + OCHAdasAbilityManager.getInstance().release(); + OchAutoPilotStatusListenerManager.INSTANCE.removeListener(TAG); + LoginStatusManager.INSTANCE.removeListener(TAG); + } + + public void abortTask() { + OrderModel.getInstance().abortTask(); + } + + public void autoDriveToNextStation() { + OrderModel.getInstance().autoDriveToNextStation(); + } + + public void restartAutopilot() { + if (OrderModel.getInstance().isGoingToNextStation()){ + OrderModel.getInstance().restartAutopilot(); + } + } + + // 登出 + public void logout() { + OrderModel.getInstance().logout(); + } + + @Override + public void updateBusTaskStatus(String lineName,String lineTime, + List stationList, + int arrivingOrArrivedIndex, + boolean isArrived) { + mStationList.clear(); + mStationList.addAll(stationList); + if (arrivingOrArrivedIndex == 0 || isArrived){ + mCurrentStation = arrivingOrArrivedIndex; + }else { + mCurrentStation = arrivingOrArrivedIndex -1; + } + CallerLogger.d(M_BUS + "BusOrderModel =", " mCurrentStation =" + mCurrentStation); + + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateBusTaskStatus(lineName,lineTime, + stationList, arrivingOrArrivedIndex, isArrived); + } + } + }, UiThreadHandler.MODE.QUEUE); + } + + @Override + public void updateEmptyUi() { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateLineEmptyUI(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } + + @Override + public void clearBusStationsMarkers() { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.clearBusStationsMarkers(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } + + @Override + public void hideSlidePanel() { + if (mView != null) { + mView.hideSlidePanel(); + mView.setArrivedClikable(true); + } + } + + @Override + public void onAutopilotArriveAtStation(ArrivedStation arrivedStation) { + CallerLogger.e( M_BUS + TAG, "行程日志-onAutopilotArriveAtStation arrive"); + arriveStation(arrivedStation,"底盘触发进站"); + } + + public void arriveStation(ArrivedStation arrivedStation,String type){ + OrderModel.getInstance().onArriveAt(arrivedStation,type); + } + + @Override + public void onAutopilotStatusResponse(int state) { + switch (state) { + case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE: + case IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING: + case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE: + if (FunctionBuildConfig.isDemoMode + && ( + (mCurrentStation >= 0 && mCurrentStation <= mStationList.size() - 1) + && OrderModel.getInstance().isGoingToNextStation() + ) + ) { + CallerLogger.d(M_BUS + "BusOrderModel=", "有美化功能"); + return; + } + // 改变UI自动驾驶状态 + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false,0)); + } + } + }, UiThreadHandler.MODE.QUEUE); + break; + case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING: + OrderModel.getInstance().triggerStartServiceEvent( + OrderModel.getInstance().isRestartAutopilot(), true); + // 改变UI自动驾驶状态 + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false,0)); + } + } + }, UiThreadHandler.MODE.QUEUE); + break; + default: + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onAutopilotEnableChange(false); + } + } + }, UiThreadHandler.MODE.QUEUE); + break; + } + } + + @Override + public void onCarLocationChanged(MogoLocation location) { +// if (null != location) { +// runOnUIThread(() -> mView.updateSpeedView(location.getGnssSpeed())); +// } + } + + @Override + public void startOpenAutopilot() { + //非美化模式下启动动画 + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startAutopilotAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); + + //中间站点再次开启自驾时, 自动驾驶状态是2未改变, 此次鹰眼底层不再返给业务,需优化按钮动画显示 + if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING + == CallerAutoPilotStatusListenerManager.INSTANCE.getState()&&mView!=null){ + mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), + CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false,0)); + } + } + + private void runOnUIThread(Runnable executor) { + if (executor == null) { + return; + } + if (Looper.myLooper() != Looper.getMainLooper()) { + UiThreadHandler.post(executor); + } else { + executor.run(); + } + } + + /** + * 测试使用 + */ + public void debugAutoPilotStatus(int status) { + onAutopilotStatusResponse(status); + } + + + @Override + public void onAutopilotGuardian(MogoReportMsg.MogoReportMessage guardianInfo, long lineId) { + BusTrajectoryManager.getInstance().onAutopilotGuardian(guardianInfo,lineId); + } + + @Override + public void onStatusChange(LoginStatusEnum currentStatus) { + CallerLogger.d(M_BUS + TAG, " loginStatus =" + LoginStatusManager.isLogin()); + if(LoginStatusManager.isLogin()){ +// OrderModel.getInstance().queryBusRoutes(); + OrderModel.getInstance().queryBusCacheRoutes(); + }else { + BusTrajectoryManager.getInstance().stopTrajReqLoop(); + BusTrajectoryManager.getInstance().stopTrajReqLoop(); + clearBusStationsMarkers(); + if(mView!=null) { + mView.hideSlidePanel(); + } + OrderModel.getInstance().closeBeautificationMode(); + } + } + + @Override + public void onStartAdasFailure() { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.stopAnimAndUpdateBtnStatus(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } + + @Override + public void canStartAutopilot(boolean canStart) { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStart); + } + } + }, UiThreadHandler.MODE.QUEUE); + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/BusStationCommonItem.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/BusStationCommonItem.kt new file mode 100644 index 0000000000..68f5243a9b --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/BusStationCommonItem.kt @@ -0,0 +1,99 @@ +package com.mogo.och.offline.ui + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.ImageView +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import com.mogo.och.common.module.utils.BlinkAnimationUtil +import com.mogo.och.offline.R +import kotlinx.android.synthetic.main.shuttle_stations_common_item.view.* + +/** + * @author: wangmingjun + * @date: 2022/9/15 + */ +class BusStationCommonItem @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr){ + + init { + LayoutInflater.from(context).inflate(R.layout.shuttle_stations_common_item,this,true) + } + + fun setStationName(name: String){ + busStationNameTv.text = name + } + + fun setStationNameColor(color: Int){ + busStationNameTv.setTextColor(color) + } + + fun setStationPointBg(type: Int) { // 0:灰色 过站 1:绿色 到站或者即将到站 2:蓝色:未到站 + BlinkAnimationUtil.clearAnimation(busCircleIv) + when (type) { + 0 -> { + busCircleIvBg.visibility = GONE + busCircleIv.setImageDrawable( + ContextCompat.getDrawable( + context, + R.drawable.icon_point_grey_bus + ) + ) + } + 1 -> { + busCircleIvBg.visibility = VISIBLE + busCircleIv.setImageDrawable( + ContextCompat.getDrawable( + context, + R.drawable.icon_point_green_bus + ) + ) + BlinkAnimationUtil.setAnimation(busCircleIv) + } + 2 -> { + busCircleIvBg.visibility = GONE + busCircleIv.setImageDrawable( + ContextCompat.getDrawable( + context, + R.drawable.icon_point_blue_bus + ) + ) + } + + } + } + + fun getCircleImageView() : ImageView{ + return busCircleIv + } + + fun setStationArrowBg(type: Int){// 0:灰色 过站 1:绿色 前往下一站 2:蓝色 未到站 + when(type){ + 0 -> busArrowBg.setImageResource(R.drawable.icon_arrow_grey_bus) + 1 -> busArrowBg.setImageResource(R.drawable.icon_arrow_green_bus) + 2 -> busArrowBg.setImageResource(R.drawable.icon_arrow_blue_bus) + } + + } + + fun setStationTag(tag: String){ // 0:起 1:终 + if (tag.isNullOrEmpty()){ + busTagTxt.visibility = GONE + }else{ + busTagTxt.text = tag + busTagTxt.visibility = VISIBLE + } + } + + fun showOrHideStationArrowBg(isShow:Boolean){ + if (isShow){ + busArrowBg.visibility = VISIBLE + }else{ + busArrowBg.visibility = GONE + } + } +} \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/BusSwitchLineActivity.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/BusSwitchLineActivity.kt new file mode 100644 index 0000000000..be9e02dd41 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/BusSwitchLineActivity.kt @@ -0,0 +1,222 @@ +package com.mogo.och.offline.ui + +import android.graphics.Point +import android.os.Bundle +import android.view.Gravity +import android.view.View +import android.view.ViewGroup +import android.view.WindowManager +import android.widget.ImageView +import android.widget.TextView +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.mogo.commons.mvp.MvpActivity +import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.och.offline.presenter.BusLinePresenter +import com.mogo.och.offline.ui.adapter.SwitchLineAdapter +import com.mogo.och.offline.bean.BusQueryLinesResponse +import com.mogo.och.offline.ui.adapter.OpenItemAnimator +import com.mogo.eagle.core.utilcode.mogo.view.SpacesItemDecoration +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.offline.R +import com.mogo.och.offline.bean.BusQueryLineTaskResponse +import java.util.ArrayList + +/** + * @author: wangmingjun + * @date: 2022/2/8 + */ +class BusSwitchLineActivity : MvpActivity(), + View.OnClickListener, BusSwitchLineView { + + companion object{ + const val LASTCOMMITLINEID = "lastcommitlineid" + } + + private lateinit var mClose: ImageView + private lateinit var mNoDatasView: ConstraintLayout + private lateinit var mLinesListView: RecyclerView + private lateinit var mLineCommitBtn: TextView + private lateinit var mAdapter: SwitchLineAdapter + private lateinit var linearLayoutManager:LinearLayoutManager + private val mData: MutableList = ArrayList() + override fun getLayoutId(): Int { + return R.layout.shuttle_switch_line + } + + override fun createPresenter(): BusLinePresenter { + return BusLinePresenter(this) + } + + override fun initViews() { + initWH() + initView() + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + initDatas() + } + + /** + * 初始化view + */ + private fun initView() { + mClose = findViewById(R.id.switch_line_close) + mClose.setOnClickListener(this) + mNoDatasView = findViewById(R.id.no_order_data_view) + mLineCommitBtn = findViewById(R.id.switch_line_btn_commit) + mLineCommitBtn.setOnClickListener(this) + mLinesListView = findViewById(R.id.switch_line_rv) + linearLayoutManager = LinearLayoutManager(this) + mLinesListView.setLayoutManager(linearLayoutManager) + mLinesListView.setItemAnimator(OpenItemAnimator()) + mAdapter = SwitchLineAdapter(applicationContext, mData) + mLinesListView.addItemDecoration( + SpacesItemDecoration( + 4 + ) + ) + mLinesListView.setAdapter(mAdapter) + //设置item 点击事件 + mAdapter.setOnLineItemClickListener(object : SwitchLineAdapter.LineItemClickListener{ + override fun onItemClick(position: Int, close: Boolean) { + mPresenter?.queryBusLineTasks(mData[position].lineId, position, close) + } + }) + } + + /** + * 设置布局宽高 + */ + private fun initWH() { + val window = window + val params = window.attributes + val windowManager = getSystemService(WINDOW_SERVICE) as WindowManager + val point = Point() + windowManager.defaultDisplay.getSize(point) //用于获取屏幕高度 + params.width = (point.x * 0.375).toInt() + params.height = ViewGroup.LayoutParams.MATCH_PARENT + window.attributes = params + window.setGravity(Gravity.START or Gravity.BOTTOM) + } + + /** + * 初始化数据 + */ + private fun initDatas() { + mPresenter?.queryBusLines() + } + + /** + * 查询返回绑定路线集合 + * @param data + */ + override fun onBusLinesChange(data: BusQueryLinesResponse?) { + if (null == data) { + showNoData(true) + return + } + val lastCommitLineid = SharedPrefsMgr.getInstance().getInt(LASTCOMMITLINEID, -1) + if (data.data != null && data.data.size > 0) { + showNoData(false) + mData.clear() + mData.addAll(data.data) + mAdapter.notifyDataSetChanged() + if(lastCommitLineid>0){ + mData.forEachIndexed { index, line -> + if(line.lineId==lastCommitLineid){ + line.open = true + mPresenter?.queryBusLineTasks(line.lineId,index,false) + return + } + } + } + } else { + showNoData(true) + } + } + + override fun onChangeLineIdSuccess() { + ToastUtils.showLong(resources.getString(R.string.bus_change_line_commit_tip_s)) + mPresenter?.queryBusRoutes() + mAdapter.setOnLineItemClickListener(null) + mPresenter?.removeListener() + finish() + } + + override fun onBusLineTasks(lineTaskInfo: BusQueryLineTaskResponse?, position: Int, autoRefresh:Boolean) { + val result = mData[position] + if (result.taskList == null) { + result.taskList = ArrayList() + } + if (lineTaskInfo == null) { + result.haveTask = true + // 打开操作 + mAdapter.notifyItemChanged(position) + } else { + if (lineTaskInfo.data == null || lineTaskInfo.data.isEmpty()) { + result.haveTask = true + lineTaskInfo.data = ArrayList() + } + if (lineTaskInfo.data.size != result.taskList.size) { // 不相等有变动 重新赋值 + result.taskList.clear() + result.taskList.addAll(lineTaskInfo.data) + if(autoRefresh) { + mAdapter.checkTaskId = -1 + mAdapter.checkLineId = -1 + lineTaskInfo.data.forEach { + if (it.id == mAdapter.checkTaskId) { + mAdapter.checkTaskId = it.id + mAdapter.checkLineId = result.lineId + } + } + } + // 打开操作 + mAdapter.notifyItemChanged(position) + linearLayoutManager.stackFromEnd = (position==mData.size-1||position==mData.size-2)&&mData.size>6 + mLinesListView.smoothScrollToPosition(position) + }else if(lineTaskInfo.data.isEmpty()){ + mAdapter.notifyItemChanged(position) + } + } + } + + /** + * 有无数据UI显示 + * @param b + */ + private fun showNoData(b: Boolean) { + if (b) { + mLinesListView.visibility = View.GONE + mLineCommitBtn.visibility = View.GONE + mNoDatasView.visibility = View.VISIBLE + } else { + mLinesListView.visibility = View.VISIBLE + mLineCommitBtn.visibility = View.VISIBLE + mNoDatasView.visibility = View.GONE + } + } + + override fun onClick(v: View) { + //关闭dialog + if (v.id == R.id.switch_line_close) { + finish() + return + } + //切换路线提交 + if (v.id == R.id.switch_line_btn_commit) { + if(mAdapter.checkLineId!=-1&&mAdapter.checkTaskId!=-1){ + mPresenter?.commitSwitchLineId(mAdapter.checkTaskId,mAdapter.checkLineId) + }else{ + ToastUtils.showLong("请选择任务") + } + } + } + + override fun onDestroy() { + mPresenter!!.removeListener() + super.onDestroy() + } +} \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/BusSwitchLineView.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/BusSwitchLineView.java new file mode 100644 index 0000000000..7882d71346 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/BusSwitchLineView.java @@ -0,0 +1,18 @@ +package com.mogo.och.offline.ui; + +import com.mogo.commons.mvp.IView; +import com.mogo.och.offline.bean.BusQueryLineTaskResponse; +import com.mogo.och.offline.bean.BusQueryLinesResponse; + +/** + * @author: wangmingjun + * @date: 2022/2/10 + */ +public interface BusSwitchLineView extends IView { + + void onBusLinesChange(BusQueryLinesResponse data); + void onChangeLineIdSuccess(); + + void onBusLineTasks(BusQueryLineTaskResponse o, int position,boolean autoRefresh); +} + diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/adapter/OpenItemAnimator.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/adapter/OpenItemAnimator.java new file mode 100644 index 0000000000..fc7beebd9c --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/adapter/OpenItemAnimator.java @@ -0,0 +1,643 @@ +package com.mogo.och.offline.ui.adapter; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.TimeInterpolator; +import android.animation.ValueAnimator; +import android.view.View; +import android.view.ViewPropertyAnimator; + +import androidx.annotation.NonNull; +import androidx.core.view.ViewCompat; +import androidx.recyclerview.widget.DefaultItemAnimator; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.SimpleItemAnimator; + +import java.util.ArrayList; +import java.util.List; + +/** + * This implementation of {@link RecyclerView.ItemAnimator} provides basic + * animations on remove, add, and move events that happen to the items in + * a RecyclerView. RecyclerView uses a DefaultItemAnimator by default. + * + * @see RecyclerView#setItemAnimator(RecyclerView.ItemAnimator) + */ +public class OpenItemAnimator extends DefaultItemAnimator { + private static final boolean DEBUG = false; + + private static TimeInterpolator sDefaultInterpolator; + + private final ArrayList mPendingRemovals = new ArrayList<>(); + private final ArrayList mPendingAdditions = new ArrayList<>(); + private final ArrayList mPendingMoves = new ArrayList<>(); + private final ArrayList mPendingChanges = new ArrayList<>(); + + ArrayList> mAdditionsList = new ArrayList<>(); + ArrayList> mMovesList = new ArrayList<>(); + ArrayList> mChangesList = new ArrayList<>(); + + ArrayList mAddAnimations = new ArrayList<>(); + ArrayList mMoveAnimations = new ArrayList<>(); + ArrayList mRemoveAnimations = new ArrayList<>(); + ArrayList mChangeAnimations = new ArrayList<>(); + + private static class MoveInfo { + public RecyclerView.ViewHolder holder; + public int fromX, fromY, toX, toY; + + MoveInfo(RecyclerView.ViewHolder holder, int fromX, int fromY, int toX, int toY) { + this.holder = holder; + this.fromX = fromX; + this.fromY = fromY; + this.toX = toX; + this.toY = toY; + } + } + + private static class ChangeInfo { + public RecyclerView.ViewHolder oldHolder, newHolder; + public int fromX, fromY, toX, toY; + private ChangeInfo(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder) { + this.oldHolder = oldHolder; + this.newHolder = newHolder; + } + + ChangeInfo(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder, + int fromX, int fromY, int toX, int toY) { + this(oldHolder, newHolder); + this.fromX = fromX; + this.fromY = fromY; + this.toX = toX; + this.toY = toY; + } + + @Override + public String toString() { + return "ChangeInfo{" + + "oldHolder=" + oldHolder + + ", newHolder=" + newHolder + + ", fromX=" + fromX + + ", fromY=" + fromY + + ", toX=" + toX + + ", toY=" + toY + + '}'; + } + } + + @Override + public void runPendingAnimations() { + boolean removalsPending = !mPendingRemovals.isEmpty(); + boolean movesPending = !mPendingMoves.isEmpty(); + boolean changesPending = !mPendingChanges.isEmpty(); + boolean additionsPending = !mPendingAdditions.isEmpty(); + if (!removalsPending && !movesPending && !additionsPending && !changesPending) { + // nothing to animate + return; + } + // First, remove stuff + for (RecyclerView.ViewHolder holder : mPendingRemovals) { + animateRemoveImpl(holder); + } + mPendingRemovals.clear(); + // Next, move stuff + if (movesPending) { + final ArrayList moves = new ArrayList<>(mPendingMoves); + mMovesList.add(moves); + mPendingMoves.clear(); + Runnable mover = () -> { + for (MoveInfo moveInfo : moves) { + animateMoveImpl(moveInfo.holder, moveInfo.fromX, moveInfo.fromY, + moveInfo.toX, moveInfo.toY); + } + moves.clear(); + mMovesList.remove(moves); + }; + if (removalsPending) { + View view = moves.get(0).holder.itemView; + ViewCompat.postOnAnimationDelayed(view, mover, getRemoveDuration()); + } else { + mover.run(); + } + } + // Next, change stuff, to run in parallel with move animations + if (changesPending) { + final ArrayList changes = new ArrayList<>(mPendingChanges); + mChangesList.add(changes); + mPendingChanges.clear(); + Runnable changer = () -> { + for (ChangeInfo change : changes) { + animateChangeImpl(change); + } + changes.clear(); + mChangesList.remove(changes); + }; + if (removalsPending) { + RecyclerView.ViewHolder holder = changes.get(0).oldHolder; + ViewCompat.postOnAnimationDelayed(holder.itemView, changer, getRemoveDuration()); + } else { + changer.run(); + } + } + // Next, add stuff + if (additionsPending) { + final ArrayList additions = new ArrayList<>(mPendingAdditions); + mAdditionsList.add(additions); + mPendingAdditions.clear(); + Runnable adder = () -> { + for (RecyclerView.ViewHolder holder : additions) { + animateAddImpl(holder); + } + additions.clear(); + mAdditionsList.remove(additions); + }; + if (removalsPending || movesPending || changesPending) { + long removeDuration = removalsPending ? getRemoveDuration() : 0; + long moveDuration = movesPending ? getMoveDuration() : 0; + long changeDuration = changesPending ? getChangeDuration() : 0; + long totalDelay = removeDuration + Math.max(moveDuration, changeDuration); + View view = additions.get(0).itemView; + ViewCompat.postOnAnimationDelayed(view, adder, totalDelay); + } else { + adder.run(); + } + } + } + + @Override + public boolean animateRemove(final RecyclerView.ViewHolder holder) { + resetAnimation(holder); + mPendingRemovals.add(holder); + return true; + } + + private void animateRemoveImpl(final RecyclerView.ViewHolder holder) { + final View view = holder.itemView; + final ViewPropertyAnimator animation = view.animate(); + mRemoveAnimations.add(holder); + animation.setDuration(getRemoveDuration()).alpha(0).setListener( + new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animator) { + dispatchRemoveStarting(holder); + } + + @Override + public void onAnimationEnd(Animator animator) { + animation.setListener(null); + view.setAlpha(1); + dispatchRemoveFinished(holder); + mRemoveAnimations.remove(holder); + dispatchFinishedWhenDone(); + } + }).start(); + } + + @Override + public boolean animateAdd(final RecyclerView.ViewHolder holder) { + resetAnimation(holder); + holder.itemView.setAlpha(0); + mPendingAdditions.add(holder); + return true; + } + + void animateAddImpl(final RecyclerView.ViewHolder holder) { + final View view = holder.itemView; + final ViewPropertyAnimator animation = view.animate(); + mAddAnimations.add(holder); + animation.alpha(1).setDuration(getAddDuration()) + .setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animator) { + dispatchAddStarting(holder); + } + + @Override + public void onAnimationCancel(Animator animator) { + view.setAlpha(1); + } + + @Override + public void onAnimationEnd(Animator animator) { + animation.setListener(null); + dispatchAddFinished(holder); + mAddAnimations.remove(holder); + dispatchFinishedWhenDone(); + } + }).start(); + } + + @Override + public boolean animateMove(final RecyclerView.ViewHolder holder, int fromX, int fromY, + int toX, int toY) { + final View view = holder.itemView; + fromX += (int) holder.itemView.getTranslationX(); + fromY += (int) holder.itemView.getTranslationY(); + resetAnimation(holder); + int deltaX = toX - fromX; + int deltaY = toY - fromY; + if (deltaX == 0 && deltaY == 0) { + dispatchMoveFinished(holder); + return false; + } + if (deltaX != 0) { + view.setTranslationX(-deltaX); + } + if (deltaY != 0) { + view.setTranslationY(-deltaY); + } + mPendingMoves.add(new MoveInfo(holder, fromX, fromY, toX, toY)); + return true; + } + + void animateMoveImpl(final RecyclerView.ViewHolder holder, int fromX, int fromY, int toX, int toY) { + final View view = holder.itemView; + final int deltaX = toX - fromX; + final int deltaY = toY - fromY; + if (deltaX != 0) { + view.animate().translationX(0); + } + if (deltaY != 0) { + view.animate().translationY(0); + } + // TODO: make EndActions end listeners instead, since end actions aren't called when + // vpas are canceled (and can't end them. why?) + // need listener functionality in VPACompat for this. Ick. + final ViewPropertyAnimator animation = view.animate(); + mMoveAnimations.add(holder); + animation.setDuration(getMoveDuration()).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animator) { + dispatchMoveStarting(holder); + } + + @Override + public void onAnimationCancel(Animator animator) { + if (deltaX != 0) { + view.setTranslationX(0); + } + if (deltaY != 0) { + view.setTranslationY(0); + } + } + + @Override + public void onAnimationEnd(Animator animator) { + animation.setListener(null); + dispatchMoveFinished(holder); + mMoveAnimations.remove(holder); + dispatchFinishedWhenDone(); + } + }).start(); + } + + @Override + public boolean animateChange(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder, + int fromX, int fromY, int toX, int toY) { + if (oldHolder == newHolder) { + // Don't know how to run change animations when the same view holder is re-used. + // run a move animation to handle position changes. + return animateMove(oldHolder, fromX, fromY, toX, toY); + } + final float prevTranslationX = oldHolder.itemView.getTranslationX(); + final float prevTranslationY = oldHolder.itemView.getTranslationY(); + final float prevAlpha = oldHolder.itemView.getAlpha(); + resetAnimation(oldHolder); + int deltaX = (int) (toX - fromX - prevTranslationX); + int deltaY = (int) (toY - fromY - prevTranslationY); + // recover prev translation state after ending animation + oldHolder.itemView.setTranslationX(prevTranslationX); + oldHolder.itemView.setTranslationY(prevTranslationY); + oldHolder.itemView.setAlpha(prevAlpha); + if (newHolder != null) { + // carry over translation values + resetAnimation(newHolder); + newHolder.itemView.setTranslationX(-deltaX); + newHolder.itemView.setTranslationY(-deltaY); + newHolder.itemView.setAlpha(0); + } + mPendingChanges.add(new ChangeInfo(oldHolder, newHolder, fromX, fromY, toX, toY)); + return true; + } + + void animateChangeImpl(final ChangeInfo changeInfo) { + final RecyclerView.ViewHolder holder = changeInfo.oldHolder; + final View view = holder == null ? null : holder.itemView; + final RecyclerView.ViewHolder newHolder = changeInfo.newHolder; + final View newView = newHolder != null ? newHolder.itemView : null; + if (view != null) { + final ViewPropertyAnimator oldViewAnim = view.animate().setDuration( + getChangeDuration()); + mChangeAnimations.add(changeInfo.oldHolder); + oldViewAnim.translationX((float)(changeInfo.toX - changeInfo.fromX)); + oldViewAnim.translationY((float)(changeInfo.toY - changeInfo.fromY)); + oldViewAnim.alpha(0).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animator) { + dispatchChangeStarting(changeInfo.oldHolder, true); + } + + @Override + public void onAnimationEnd(Animator animator) { + oldViewAnim.setListener(null); + view.setAlpha(1); + view.setTranslationX(0); + view.setTranslationY(0); + dispatchChangeFinished(changeInfo.oldHolder, true); + mChangeAnimations.remove(changeInfo.oldHolder); + dispatchFinishedWhenDone(); + } + }).start(); + } + if (newView != null) { + final ViewPropertyAnimator newViewAnimation = newView.animate(); + mChangeAnimations.add(changeInfo.newHolder); + newViewAnimation.translationX(0).translationY(0).setDuration(getChangeDuration()) + .alpha(1).setListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animator) { + dispatchChangeStarting(changeInfo.newHolder, false); + } + @Override + public void onAnimationEnd(Animator animator) { + newViewAnimation.setListener(null); + newView.setAlpha(1); + newView.setTranslationX(0); + newView.setTranslationY(0); + dispatchChangeFinished(changeInfo.newHolder, false); + mChangeAnimations.remove(changeInfo.newHolder); + dispatchFinishedWhenDone(); + } + }).start(); + } + } + + private void endChangeAnimation(List infoList, RecyclerView.ViewHolder item) { + for (int i = infoList.size() - 1; i >= 0; i--) { + ChangeInfo changeInfo = infoList.get(i); + if (endChangeAnimationIfNecessary(changeInfo, item)) { + if (changeInfo.oldHolder == null && changeInfo.newHolder == null) { + infoList.remove(changeInfo); + } + } + } + } + + private void endChangeAnimationIfNecessary(ChangeInfo changeInfo) { + if (changeInfo.oldHolder != null) { + endChangeAnimationIfNecessary(changeInfo, changeInfo.oldHolder); + } + if (changeInfo.newHolder != null) { + endChangeAnimationIfNecessary(changeInfo, changeInfo.newHolder); + } + } + private boolean endChangeAnimationIfNecessary(ChangeInfo changeInfo, RecyclerView.ViewHolder item) { + boolean oldItem = false; + if (changeInfo.newHolder == item) { + changeInfo.newHolder = null; + } else if (changeInfo.oldHolder == item) { + changeInfo.oldHolder = null; + oldItem = true; + } else { + return false; + } + item.itemView.setAlpha(1); + item.itemView.setTranslationX(0); + item.itemView.setTranslationY(0); + dispatchChangeFinished(item, oldItem); + return true; + } + + @Override + public void endAnimation(RecyclerView.ViewHolder item) { + final View view = item.itemView; + // this will trigger end callback which should set properties to their target values. + view.animate().cancel(); + // TODO if some other animations are chained to end, how do we cancel them as well? + for (int i = mPendingMoves.size() - 1; i >= 0; i--) { + MoveInfo moveInfo = mPendingMoves.get(i); + if (moveInfo.holder == item) { + view.setTranslationY(0); + view.setTranslationX(0); + dispatchMoveFinished(item); + mPendingMoves.remove(i); + } + } + endChangeAnimation(mPendingChanges, item); + if (mPendingRemovals.remove(item)) { + view.setAlpha(1); + dispatchRemoveFinished(item); + } + if (mPendingAdditions.remove(item)) { + view.setAlpha(1); + dispatchAddFinished(item); + } + + for (int i = mChangesList.size() - 1; i >= 0; i--) { + ArrayList changes = mChangesList.get(i); + endChangeAnimation(changes, item); + if (changes.isEmpty()) { + mChangesList.remove(i); + } + } + for (int i = mMovesList.size() - 1; i >= 0; i--) { + ArrayList moves = mMovesList.get(i); + for (int j = moves.size() - 1; j >= 0; j--) { + MoveInfo moveInfo = moves.get(j); + if (moveInfo.holder == item) { + view.setTranslationY(0); + view.setTranslationX(0); + dispatchMoveFinished(item); + moves.remove(j); + if (moves.isEmpty()) { + mMovesList.remove(i); + } + break; + } + } + } + for (int i = mAdditionsList.size() - 1; i >= 0; i--) { + ArrayList additions = mAdditionsList.get(i); + if (additions.remove(item)) { + view.setAlpha(1); + dispatchAddFinished(item); + if (additions.isEmpty()) { + mAdditionsList.remove(i); + } + } + } + + // animations should be ended by the cancel above. + //noinspection PointlessBooleanExpression,ConstantConditions + if (mRemoveAnimations.remove(item) && DEBUG) { + throw new IllegalStateException("after animation is cancelled, item should not be in " + + "mRemoveAnimations list"); + } + + //noinspection PointlessBooleanExpression,ConstantConditions + if (mAddAnimations.remove(item) && DEBUG) { + throw new IllegalStateException("after animation is cancelled, item should not be in " + + "mAddAnimations list"); + } + + //noinspection PointlessBooleanExpression,ConstantConditions + if (mChangeAnimations.remove(item) && DEBUG) { + throw new IllegalStateException("after animation is cancelled, item should not be in " + + "mChangeAnimations list"); + } + + //noinspection PointlessBooleanExpression,ConstantConditions + if (mMoveAnimations.remove(item) && DEBUG) { + throw new IllegalStateException("after animation is cancelled, item should not be in " + + "mMoveAnimations list"); + } + dispatchFinishedWhenDone(); + } + + private void resetAnimation(RecyclerView.ViewHolder holder) { + if (sDefaultInterpolator == null) { + sDefaultInterpolator = new ValueAnimator().getInterpolator(); + } + holder.itemView.animate().setInterpolator(sDefaultInterpolator); + endAnimation(holder); + } + + @Override + public boolean isRunning() { + return (!mPendingAdditions.isEmpty() + || !mPendingChanges.isEmpty() + || !mPendingMoves.isEmpty() + || !mPendingRemovals.isEmpty() + || !mMoveAnimations.isEmpty() + || !mRemoveAnimations.isEmpty() + || !mAddAnimations.isEmpty() + || !mChangeAnimations.isEmpty() + || !mMovesList.isEmpty() + || !mAdditionsList.isEmpty() + || !mChangesList.isEmpty()); + } + + /** + * Check the state of currently pending and running animations. If there are none + * pending/running, call {@link #dispatchAnimationsFinished()} to notify any + * listeners. + */ + void dispatchFinishedWhenDone() { + if (!isRunning()) { + dispatchAnimationsFinished(); + } + } + + @Override + public void endAnimations() { + int count = mPendingMoves.size(); + for (int i = count - 1; i >= 0; i--) { + MoveInfo item = mPendingMoves.get(i); + View view = item.holder.itemView; + view.setTranslationY(0); + view.setTranslationX(0); + dispatchMoveFinished(item.holder); + mPendingMoves.remove(i); + } + count = mPendingRemovals.size(); + for (int i = count - 1; i >= 0; i--) { + RecyclerView.ViewHolder item = mPendingRemovals.get(i); + dispatchRemoveFinished(item); + mPendingRemovals.remove(i); + } + count = mPendingAdditions.size(); + for (int i = count - 1; i >= 0; i--) { + RecyclerView.ViewHolder item = mPendingAdditions.get(i); + item.itemView.setAlpha(1); + dispatchAddFinished(item); + mPendingAdditions.remove(i); + } + count = mPendingChanges.size(); + for (int i = count - 1; i >= 0; i--) { + endChangeAnimationIfNecessary(mPendingChanges.get(i)); + } + mPendingChanges.clear(); + if (!isRunning()) { + return; + } + + int listCount = mMovesList.size(); + for (int i = listCount - 1; i >= 0; i--) { + ArrayList moves = mMovesList.get(i); + count = moves.size(); + for (int j = count - 1; j >= 0; j--) { + MoveInfo moveInfo = moves.get(j); + RecyclerView.ViewHolder item = moveInfo.holder; + View view = item.itemView; + view.setTranslationY(0); + view.setTranslationX(0); + dispatchMoveFinished(moveInfo.holder); + moves.remove(j); + if (moves.isEmpty()) { + mMovesList.remove(moves); + } + } + } + listCount = mAdditionsList.size(); + for (int i = listCount - 1; i >= 0; i--) { + ArrayList additions = mAdditionsList.get(i); + count = additions.size(); + for (int j = count - 1; j >= 0; j--) { + RecyclerView.ViewHolder item = additions.get(j); + View view = item.itemView; + view.setAlpha(1); + dispatchAddFinished(item); + additions.remove(j); + if (additions.isEmpty()) { + mAdditionsList.remove(additions); + } + } + } + listCount = mChangesList.size(); + for (int i = listCount - 1; i >= 0; i--) { + ArrayList changes = mChangesList.get(i); + count = changes.size(); + for (int j = count - 1; j >= 0; j--) { + endChangeAnimationIfNecessary(changes.get(j)); + if (changes.isEmpty()) { + mChangesList.remove(changes); + } + } + } + + cancelAll(mRemoveAnimations); + cancelAll(mMoveAnimations); + cancelAll(mAddAnimations); + cancelAll(mChangeAnimations); + + dispatchAnimationsFinished(); + } + + void cancelAll(List viewHolders) { + for (int i = viewHolders.size() - 1; i >= 0; i--) { + viewHolders.get(i).itemView.animate().cancel(); + } + } + + /** + * {@inheritDoc} + *

+ * If the payload list is not empty, DefaultItemAnimator returns true. + * When this is the case: + *

    + *
  • If you override {@link #animateChange(RecyclerView.ViewHolder, RecyclerView.ViewHolder, int, int, int, int)}, both + * ViewHolder arguments will be the same instance. + *
  • + *
  • + * If you are not overriding {@link #animateChange(RecyclerView.ViewHolder, RecyclerView.ViewHolder, int, int, int, int)}, + * then DefaultItemAnimator will call {@link #animateMove(RecyclerView.ViewHolder, int, int, int, int)} and + * run a move animation instead. + *
  • + *
+ */ + @Override + public boolean canReuseUpdatedViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, + @NonNull List payloads) { + return !payloads.isEmpty() || super.canReuseUpdatedViewHolder(viewHolder, payloads); + } +} \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/adapter/SwitchLineAdapter.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/adapter/SwitchLineAdapter.kt new file mode 100644 index 0000000000..7dc21fafb7 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/adapter/SwitchLineAdapter.kt @@ -0,0 +1,181 @@ +package com.mogo.och.offline.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.widget.AppCompatTextView +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.mogo.och.offline.R +import com.mogo.och.offline.bean.BusQueryLinesResponse +import com.mogo.och.offline.ui.adapter.SwitchLineAdapter.SwitchLineViewHolder +import kotlin.text.StringBuilder + +/** + * 路线列表adapter + */ +class SwitchLineAdapter( + private val mContext: Context, + private val mData: List +) : RecyclerView.Adapter() { + companion object{ + const val TAG = "SwitchLineAdapter" + } + // RecyclerView设置点击事件 + private var mItemClickListener: LineItemClickListener? = null + var checkLineId:Int = -1 + var checkTaskId:Int = -1 + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): SwitchLineViewHolder { + val view = LayoutInflater.from(mContext).inflate( + R.layout.shuttle_switch_line_list_item, parent, false + ) + return SwitchLineViewHolder(view) + } + + override fun onBindViewHolder(holder: SwitchLineViewHolder, position: Int) { + val currentPosition = holder.bindingAdapterPosition + val line = mData[currentPosition] + if(line.name!=null&&line.name.length>10){ + line.name = line.name.substring(0,10)+"…" + } + holder.lineName.text = line.name + val sb = StringBuilder() + if (line.endSiteName!=null&&line.endSiteName.length>10) { + sb.append(line.endSiteName.substring(0,5)) + sb.append("…") + sb.append(line.endSiteName.substring(line.endSiteName.length-5,line.endSiteName.length)) + }else{ + sb.append(line.endSiteName) + } + val string = mContext.getString(R.string.bus_line_goto_end, sb.toString()) + holder.lineEndName.text = string + holder.rvLineTask.layoutManager = GridLayoutManager(mContext, 3) + val switchLineTaskAdapter = SwitchLineTaskAdapter( + mContext, + checkTaskId, + line.taskList, + object : SwitchLineTaskAdapter.TaskItemClickListener { + override fun onItemClick(position: Int,isCheck:Boolean) { + try { + if(isCheck) { + checkLineId = line.lineId + checkTaskId = line.taskList[position].id + }else{ + checkLineId=-1 + checkTaskId=-1 + } + }catch (e:Exception){ + e.printStackTrace() + checkLineId=-1 + checkTaskId=-1 + } + } + }) + holder.rvLineTask.adapter = switchLineTaskAdapter + holder.rvLineTask.isFocusableInTouchMode = false + holder.actvShowMore.visibility = View.VISIBLE + + if(line.open){ + if(line.taskList==null||line.taskList.isEmpty()){ + holder.actvShowMore.text = mContext.getString(R.string.bus_switch_line_no_task) + holder.actvShowMore.setTextColor(ContextCompat.getColor(mContext,R.color.bus_color_4dffffff)) + holder.vLineTask.visibility = View.GONE + holder.rvLineTask.visibility = View.GONE + holder.selectIv.visibility = View.INVISIBLE + holder.itemView.setBackgroundResource(R.drawable.bus_shape_select_line_item_bg_normal) + }else { + holder.actvShowMore.text = mContext.getString(R.string.bus_switch_line_select_task) + holder.actvShowMore.setTextColor(ContextCompat.getColor(mContext,android.R.color.white)) + holder.vLineTask.visibility = View.VISIBLE + holder.rvLineTask.visibility = View.VISIBLE + holder.selectIv.visibility = View.VISIBLE + holder.itemView.setBackgroundResource(R.drawable.bus_shape_select_line_item_bg_selected) + holder.selectIv.apply { + pivotX = 9.5f + pivotY = 17f + rotation = 90f + } + } + }else{ + if(line.haveTask){ + holder.actvShowMore.text = mContext.getString(R.string.bus_switch_line_no_task) + holder.actvShowMore.setTextColor(ContextCompat.getColor(mContext,R.color.bus_color_4dffffff)) + holder.vLineTask.visibility = View.GONE + holder.rvLineTask.visibility = View.GONE + holder.selectIv.visibility = View.INVISIBLE + holder.itemView.setBackgroundResource(R.drawable.bus_shape_select_line_item_bg_normal) + }else { + holder.actvShowMore.text = mContext.getString(R.string.bus_switch_line_select_task) + holder.actvShowMore.setTextColor(ContextCompat.getColor(mContext,android.R.color.white)) + holder.vLineTask.visibility = View.GONE + holder.rvLineTask.visibility = View.GONE + holder.selectIv.visibility = View.VISIBLE + holder.itemView.setBackgroundResource(R.drawable.bus_shape_select_line_item_bg_normal) + holder.selectIv.apply { + pivotX = 9.5f + pivotY = 17f + rotation = 0f + } + } + } + + + //设置item点击事件 + holder.itemView.setOnClickListener { + if(holder.actvShowMore.text==mContext.getString(R.string.bus_switch_line_no_task)){ + return@setOnClickListener + } + mData.forEachIndexed { index, result -> + if(result.open){ + result.open = false; + notifyItemChanged(index) + if(result.taskList!=null) { + result.taskList.clear() + } + if(index==currentPosition){// 点击当前已经打开的item 去关闭定时网络请求 + mItemClickListener?.onItemClick(currentPosition,true) + return@setOnClickListener + } + } + } + mItemClickListener?.onItemClick(currentPosition,false) + line.open = holder.rvLineTask.visibility == View.GONE + } + } + + override fun getItemCount(): Int { + return mData.size + } + + fun setOnLineItemClickListener(itemClickListener: LineItemClickListener?) { + mItemClickListener = itemClickListener + } + + class SwitchLineViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val selectIv: ImageView + val lineName: AppCompatTextView//线路名称 + val lineEndName: AppCompatTextView //终点 + val actvShowMore: AppCompatTextView //选择时间 + val rvLineTask: RecyclerView// 排班时间 + val vLineTask: View// 白色分割线 + + init { + selectIv = itemView.findViewById(R.id.switch_line_item_select_iv) + lineName = itemView.findViewById(R.id.switch_line_name) + lineEndName = itemView.findViewById(R.id.switch_line_end_station) + rvLineTask = itemView.findViewById(R.id.rv_line_task_list) + vLineTask = itemView.findViewById(R.id.v_line_task) + actvShowMore = itemView.findViewById(R.id.actv_show_more) + } + } + + interface LineItemClickListener { + fun onItemClick(position: Int,close:Boolean) + } +} \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/adapter/SwitchLineTaskAdapter.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/adapter/SwitchLineTaskAdapter.kt new file mode 100644 index 0000000000..881c6bc263 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/adapter/SwitchLineTaskAdapter.kt @@ -0,0 +1,76 @@ +package com.mogo.och.offline.ui.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.och.offline.R +import com.mogo.och.offline.bean.BusQueryLineTaskResponse +import com.mogo.och.offline.ui.adapter.SwitchLineTaskAdapter.SwitchLineTaskViewHolder + +/** + * 路线列表adapter + */ +class SwitchLineTaskAdapter( + private val mContext: Context, + private var checkTaskId:Int, + private val mData: List?, + private val mTaskItemClickListener: TaskItemClickListener? +) : RecyclerView.Adapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SwitchLineTaskViewHolder { + val view = LayoutInflater.from(mContext).inflate( + R.layout.shuttle_switch_line_list_task_item, parent, false + ) + return SwitchLineTaskViewHolder(view) + } + + override fun onBindViewHolder(holder: SwitchLineTaskViewHolder, position: Int) { + val currentPosition = holder.bindingAdapterPosition + val task = mData!![currentPosition] + val taskStartTime = TimeUtils.millis2String(task.taskStartTime, "HH:mm") + holder.lineTask.text = taskStartTime + if(checkTaskId==task.id){ + holder.lineTask.setBackgroundResource(R.drawable.bus_shape_select_line_item_time_bg_selected) + }else{ + holder.lineTask.setBackgroundResource(R.drawable.bus_shape_select_line_item_time_bg) + } + holder.lineTask.setOnClickListener { + if(checkTaskId==task.id){ + checkTaskId = -1 + mTaskItemClickListener?.onItemClick(currentPosition,false) + }else { + resetOther() + checkTaskId = task.id + mTaskItemClickListener?.onItemClick(currentPosition,true) + } + notifyItemChanged(currentPosition) + } + } + + private fun resetOther() { + mData?.forEachIndexed { index, result -> + if(result.id==checkTaskId){ + checkTaskId = -1 + notifyItemChanged(index) + } + } + } + + override fun getItemCount(): Int { + return mData?.size ?: 0 + } + + class SwitchLineTaskViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val lineTask: TextView // 时间 + init { + lineTask = itemView.findViewById(R.id.actv_line_task) + } + } + + interface TaskItemClickListener { + fun onItemClick(position: Int,isCheck:Boolean) + } +} \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/writeoff/WriteOffView.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/writeoff/WriteOffView.kt new file mode 100644 index 0000000000..1265401bad --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/writeoff/WriteOffView.kt @@ -0,0 +1,55 @@ +package com.mogo.och.offline.ui.writeoff + +import android.content.Context +import android.util.AttributeSet +import android.util.Log +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.findViewTreeViewModelStoreOwner +import com.mogo.och.offline.R +import kotlinx.android.synthetic.main.shuttle_wirte_off_view.view.tv_write_off_count + +class WriteOffView : ConstraintLayout, WriteOffViewModel.IwriteOffViewCallback { + + private val TAG = "ItineraryView" + + constructor(context: Context) : super(context) + + constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) + + constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr) + + constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes) + + private fun initView() { + LayoutInflater.from(context).inflate(R.layout.shuttle_wirte_off_view, this, true) + } + + + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + + val viewModel = findViewTreeViewModelStoreOwner()?.let { + ViewModelProvider(it).get(WriteOffViewModel::class.java) + } + + viewModel?.setWriteOffCallback(this) + } + + + init { + try { + initView() + } catch (e: Exception) { + e.printStackTrace() + } + } + + override fun setWriteOffCount(showText: String) { + tv_write_off_count.text = showText + } + + +} \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/writeoff/WriteOffViewModel.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/writeoff/WriteOffViewModel.kt new file mode 100644 index 0000000000..30c609a2d6 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/ui/writeoff/WriteOffViewModel.kt @@ -0,0 +1,70 @@ +package com.mogo.och.offline.ui.writeoff + +import androidx.lifecycle.ViewModel +import com.mogo.commons.AbsMogoApplication +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.och.offline.model.TicketModel +import com.mogo.och.common.module.utils.RxUtils +import com.mogo.och.offline.R +import io.reactivex.Observable +import io.reactivex.Observer +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable + +class WriteOffViewModel : ViewModel() { + + private val TAG = WriteOffViewModel::class.java.simpleName + + private var viewCallback: IwriteOffViewCallback? = null + + init { + + } + + private var disposable: Disposable? = null + + private val observer = object : Observer { + override fun onSubscribe(d: Disposable) { + disposable = d + } + + override fun onError(e: Throwable) { + + } + + override fun onComplete() { + + } + + override fun onNext(countInfo: String) { + viewCallback?.setWriteOffCount(countInfo) + } + + } + + fun setWriteOffCallback(viewCallback: IwriteOffViewCallback) { + this.viewCallback = viewCallback + TicketModel + .getWriteOffCountObservable() + .flatMap { t -> + val showText = + AbsMogoApplication.getApp().getString(R.string.shuttle_write_off_count, t) + CallerLogger.d(SceneConstant.M_BUS + TAG, "显示文案:${showText}") + Observable.just(showText) + } + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(observer) + } + + override fun onCleared() { + super.onCleared() + this.viewCallback = null + RxUtils.disposeSubscribe(disposable) + } + + interface IwriteOffViewCallback { + fun setWriteOffCount(count:String) + } + +} \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusAnalyticsManager.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusAnalyticsManager.java new file mode 100644 index 0000000000..7bb6544564 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusAnalyticsManager.java @@ -0,0 +1,56 @@ +package com.mogo.och.offline.util; + + +import androidx.annotation.NonNull; + +import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutopilotAnalytics; + +/** + * OCH Bus埋点工具 + *

+ * Created on 2022/3/24 + */ +public class BusAnalyticsManager extends OchAutopilotAnalytics { + + // 埋点key:开启自动驾驶前已识别的异常,会导致无法开启自驾 + private static final String EVENT_KEY_AP_UNABLE_START_REASON = "event_key_och_bus_ap_unable_start_reason"; + // 埋点key:接管后点击'自动驾驶'按钮启动 + private static final String EVENT_KEY_RESTART_AUTOPILOT = "event_key_och_bus_restart_autopilot"; + // 埋点key:开始服务开启自动驾驶(成功/失败) + private static final String EVENT_KEY_START_SERVICE = "event_key_och_bus_start_service"; + // 埋点key:点击启动自驾 + private static final String EVENT_KEY_CLICK_START_AUTOPILOT = "event_key_och_shuttle_click_start_autopilot"; + + private static final class SingletonHolder { + private static final BusAnalyticsManager INSTANCE = new BusAnalyticsManager(); + } + + public static BusAnalyticsManager getInstance() { + return BusAnalyticsManager.SingletonHolder.INSTANCE; + } + + @NonNull + @Override + public String getEventKeyStartService() { + return EVENT_KEY_START_SERVICE; + } + + @NonNull + @Override + public String getEventKeyRestartService() { + return EVENT_KEY_RESTART_AUTOPILOT; + } + + @NonNull + @Override + public String getEventKeyApUnableStartReason() { + return EVENT_KEY_AP_UNABLE_START_REASON; + } + + @NonNull + @Override + public String getEventKeyClickStartAutopilot() { + return EVENT_KEY_CLICK_START_AUTOPILOT; + } + +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusSendTripInfoManager.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusSendTripInfoManager.kt new file mode 100644 index 0000000000..cc30b5dae7 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusSendTripInfoManager.kt @@ -0,0 +1,36 @@ +package com.mogo.och.offline.util + +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant + +/** + * @author: wangmingjun + * @date: 2022/10/24 + */ +object BusSendTripInfoManager{ + + const val START_TRIP = 1 + const val END_TRIP = 2 + const val LEAVE_STATION = 3 + const val ARRIVE_STATION = 4 + + /** + * 行程信息 + * @param type 事件类型, 1:行程开始, 2:行程结束, 3:出站, 4:进站, 5:城市占道施工预警 + * @param lineName 路线名, for type 1, 2 + * @param departureStopName 出站站点名, for type 3, 4 + * @param arrivalStopName 下一站到达站点名, for type 3, 4 + * @param isLastStop 是否终点站(下一站或者要到达站) + * @return + */ + fun sendBusTripInfo(type: Int, lineName: String, + departureStopName: String, + arrivalStopName: String, + isLastStop: Boolean) { + d(SceneConstant.M_BUS + "BusSendTripInfoManager", "type: "+ type + +", lineName: "+ lineName +", departureStopName: "+ departureStopName + + ", arrivalStopName: "+arrivalStopName+", isLastStop: "+isLastStop) + CallerAutoPilotControlManager.sendTripInfo(type,lineName,departureStopName, arrivalStopName, isLastStop) + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusTrajectoryManager.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusTrajectoryManager.java new file mode 100644 index 0000000000..4370689618 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/BusTrajectoryManager.java @@ -0,0 +1,204 @@ +package com.mogo.och.offline.util; + +import androidx.annotation.Nullable; + +import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters; +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.util.GsonUtils; +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager; +import com.mogo.och.data.bean.BusRoutesResult; +import com.mogo.och.offline.constant.BusConst; +import com.mogo.och.offline.model.OrderModel; +import com.mogo.och.common.module.biz.login.LoginStatusManager; + +import java.util.concurrent.TimeUnit; + +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; +import mogo_msg.MogoReportMsg; + +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; + +/** + * Bus轨迹管理:给MEC下发用于轨迹下载的信息 + * Created on 2022/6/23 + */ +public class BusTrajectoryManager { + private static final String TAG = BusTrajectoryManager.class.getSimpleName(); + + private static final class SingletonHolder { + private static final BusTrajectoryManager INSTANCE = new BusTrajectoryManager(); + } + + public static BusTrajectoryManager getInstance() { + return BusTrajectoryManager.SingletonHolder.INSTANCE; + } + + private AutopilotControlParameters.AutoPilotLine mAutoPilotLine = null; + private Disposable mSendReqDisposable = null; + + public BusTrajectoryManager() { + mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine(-1, "", + "", "", "", "", 0, "", + "", "", "", "", 0); + } + + /** + * 同步Bus路线信息 + */ + public void syncTrajectoryInfo() { + BusRoutesResult routesResult = OrderModel.getInstance().getBusRoutesResult(); + if (LoginStatusManager.isLogin() && routesResult != null + && OrderModel.getInstance().getCurrentStationIndex() == 0 + && !OrderModel.getInstance().isGoingToNextStation()) { + CallerLogger.d(M_BUS + TAG, "syncTrajectoryInfo() start."); + startTrajReqLoop(); + } else { + // 无路线信息or当前未在始发站 + CallerLogger.d(M_BUS + TAG, "syncTrajectoryInfo() stop."); + stopTrajReqLoop(); + } + } + + public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo,long lineId) { + onAutopilotGuardian(guardianInfo); + } + + /** + * 接口MEC反馈的常规信息(MAP v2.5.0新增轨迹相关信息) + * @param guardianInfo + */ + public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo) { + if (guardianInfo == null || !guardianInfo.hasCode()) return; + if ("ISYS_INIT_TRAJECTORY_START".equals(guardianInfo.getCode())) { + // 1. 轨迹管理_轨迹开始下载(本地已有对应轨迹也触发) + CallerLogger.d(M_BUS + TAG, "onAutopilotGuardian() 轨迹开始下载"); + OchChainLogManager.writeChainLog("轨迹监控","onAutopilotGuardian() 轨迹开始下载", true, OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY); + // ToastUtils.showShort("轨迹开始下载"); + stopTrajReqLoop(); + } else if ("ISYS_INIT_TRAJECTORY_SUCCESS".equals(guardianInfo.getCode())) { + // 2. 轨迹管理_轨迹下载成功(本地已有对应轨迹也触发) + CallerLogger.d(M_BUS + TAG, "onAutopilotGuardian() 轨迹下载成功"); + OchChainLogManager.writeChainLog("轨迹监控","onAutopilotGuardian() 轨迹下载成功", true, OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY); + // ToastUtils.showShort("轨迹下载成功"); + stopTrajReqLoop(); + } else if ("ISYS_INIT_TRAJECTORY_FAILURE".equals(guardianInfo.getCode())) { + // 3. 轨迹管理_轨迹下载失败,本地无对应轨迹 + CallerLogger.d(M_BUS + TAG, "onAutopilotGuardian() " + + "轨迹下载失败,本地无对应轨迹"); + OchChainLogManager.writeChainLog("轨迹监控","onAutopilotGuardian() 轨迹下载失败,本地无对应轨迹", true, OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY); + // ToastUtils.showShort("轨迹下载失败,本地无对应轨迹"); + } else if ("ISYS_INIT_TRAJECTORY_WARNING".equals(guardianInfo.getCode())) { + // 4. 轨迹管理_轨迹下载失败,本地有对应轨迹,认为成功 + CallerLogger.d(M_BUS + TAG, "onAutopilotGuardian() " + + "轨迹下载失败,本地有对应轨迹,认为成功"); + OchChainLogManager.writeChainLog("轨迹监控","onAutopilotGuardian() 轨迹下载失败,本地有对应轨迹,认为成功", true, OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY); + // ToastUtils.showShort("轨迹下载失败,本地有对应轨迹,认为成功"); + } else if ("ISYS_INIT_TRAJECTORY_TIMEOUT".equals(guardianInfo.getCode())) { + // 5. 轨迹管理_轨迹下载超时 + CallerLogger.d(M_BUS + TAG, "onAutopilotGuardian() 轨迹下载超时"); + OchChainLogManager.writeChainLog("轨迹监控","onAutopilotGuardian() 轨迹下载超时", true, OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY); + // ToastUtils.showShort("轨迹下载超时"); + } else if ("ISSM_FUNC_AUTO_PILOT_READY".equals(guardianInfo.getCode())) { + // 收到ssm的自动驾驶变为ready,再次下发轨迹下载.解决:域控重启,或者102域控启动太早,107节点初始化未完成导致的轨迹未进行下载。 + CallerLogger.d(M_BUS + TAG, "onAutopilotGuardian() ssm ready,再次发起下载"); + OchChainLogManager.writeChainLog("轨迹监控","onAutopilotGuardian() 再次发起下载", true, OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY); + syncTrajectoryInfo(); + } + } + + private void setupAutoPilotLine() { + BusRoutesResult routesResult = OrderModel.getInstance().getBusRoutesResult(); + if (routesResult == null) { + CallerLogger.e(M_BUS + TAG, + "setupAutoPilotLine(): routesResult is null."); + return; + } else { + if (mAutoPilotLine == null) { + mAutoPilotLine = new AutopilotControlParameters.AutoPilotLine( + routesResult.getLineId(), routesResult.getName(), + routesResult.csvFileUrl, routesResult.csvFileMd5, + routesResult.txtFileUrl, routesResult.txtFileMd5, + routesResult.contrailSaveTime, routesResult.carModel, + routesResult.csvFileUrlDPQP, routesResult.csvFileMd5DPQP, + routesResult.txtFileUrlDPQP, routesResult.txtFileMd5DPQP, + routesResult.contrailSaveTimeDPQP); + } else { + mAutoPilotLine.setLineId(routesResult.getLineId()); + mAutoPilotLine.setLineName(routesResult.getName()); + mAutoPilotLine.setTrajUrl(routesResult.csvFileUrl); + mAutoPilotLine.setTrajMd5(routesResult.csvFileMd5); + mAutoPilotLine.setStopUrl(routesResult.txtFileUrl); + mAutoPilotLine.setStopMd5(routesResult.txtFileMd5); + mAutoPilotLine.setTimestamp(routesResult.contrailSaveTime); + mAutoPilotLine.setVehicleModel(routesResult.carModel); + mAutoPilotLine.setTrajUrl_dpqp(routesResult.csvFileUrlDPQP); + mAutoPilotLine.setTrajMd5_dpqp(routesResult.csvFileMd5DPQP); + mAutoPilotLine.setStopUrl_dpqp(routesResult.txtFileUrlDPQP); + mAutoPilotLine.setStopMd5_dpqp(routesResult.txtFileMd5DPQP); + mAutoPilotLine.setTimestamp_dpqp(routesResult.contrailSaveTimeDPQP); + } + } + } + + private void clearAutoPilotLine() { + if (mAutoPilotLine == null) return; + mAutoPilotLine.setLineId(-1); + mAutoPilotLine.setLineName(""); + mAutoPilotLine.setTrajUrl(""); + mAutoPilotLine.setTrajMd5(""); + mAutoPilotLine.setStopUrl(""); + mAutoPilotLine.setStopMd5(""); + mAutoPilotLine.setTimestamp(0); + mAutoPilotLine.setVehicleModel(""); + mAutoPilotLine.setTrajUrl_dpqp(""); + mAutoPilotLine.setTrajMd5_dpqp(""); + mAutoPilotLine.setStopUrl_dpqp(""); + mAutoPilotLine.setStopMd5_dpqp(""); + mAutoPilotLine.setTimestamp_dpqp(0); + } + + private void startTrajReqLoop() { + if (mSendReqDisposable != null && !mSendReqDisposable.isDisposed()) { + return; + } + CallerLogger.d(M_BUS + TAG, "startTrajReqLoop()"); + setupAutoPilotLine(); + mSendReqDisposable = Observable.interval(BusConst.LOOP_DELAY, + BusConst.LOOP_PERIOD_10S, TimeUnit.MILLISECONDS) + .map((aLong -> aLong + 1)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(aLong -> { + if (aLong > BusConst.LOOP_SEND_TRAJ_TIMES) { + stopTrajReqLoop(); + return; + } + CallerLogger.d(M_BUS + TAG, "loop sendTrajectoryReq: " + aLong); + sendTrajectoryReq(); + }); + } + + public void stopTrajReqLoop() { + if (mSendReqDisposable != null) { + CallerLogger.d(M_BUS + TAG, "stopTrajReqLoop()"); + mSendReqDisposable.dispose(); + mSendReqDisposable = null; + clearAutoPilotLine(); + } + } + + private void sendTrajectoryReq() { + if (mAutoPilotLine == null) { + CallerLogger.e(M_BUS + TAG, "sendTrajectoryReq(): mAutoPilotLine is null!!!"); + return; + } + OchChainLogManager.writeChainLog("轨迹监控","sendTrajectoryReq() 下发轨迹 轨迹id"+mAutoPilotLine.getLineId(), true, OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY); + CallerAutoPilotControlManager.INSTANCE.sendTrajectoryDownloadReq(mAutoPilotLine); + CallerLogger.d(M_BUS + TAG, "sendTrajectoryReq(): " + + GsonUtils.toJson(mAutoPilotLine)); + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/ShuttleVoiceManager.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/ShuttleVoiceManager.kt new file mode 100644 index 0000000000..4a3de68466 --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/util/ShuttleVoiceManager.kt @@ -0,0 +1,96 @@ +package com.mogo.och.offline.util + +import com.mogo.commons.AbsMogoApplication +import com.mogo.commons.voice.AIAssist +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.och.common.module.voice.VoiceNotice +import com.mogo.och.offline.R +import com.mogo.tts.base.LangTtsEntity +import com.mogo.tts.base.LanguageType +import java.util.ArrayList + +object ShuttleVoiceManager { + + fun arrivedStationBus(siteNameCN: String?, siteNameKR: String?) { + if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) { + return + } + val context = AbsMogoApplication.getApp() + val list: MutableList = ArrayList() + siteNameCN?.let { + val chineseTTS = LangTtsEntity( + context.getString(R.string.bus_arrived_station_tip, it), + LanguageType.CHINESE + ) + val engTTS = LangTtsEntity( + context.getString(R.string.bus_arrived_station_english_tip, it), + LanguageType.CHINESE + ) + val koreanTTS = LangTtsEntity( + context.getString(R.string.bus_arrived_station_korean_tip, siteNameKR?:it), + LanguageType.KOREAN + ) + list.add(chineseTTS) + list.add(engTTS) + list.add(koreanTTS) + } + + VoiceNotice.showNotice(list, AIAssist.LEVEL1,null) + } + + fun leaveStationBus(siteNameCN: String?, siteNameKR: String?) { + val list: MutableList = ArrayList() + val context = AbsMogoApplication.getApp() + siteNameCN?.let { + val chineseTTS = LangTtsEntity( + context.getString(R.string.bus_leave_station_tip, it), + LanguageType.CHINESE + ) + val engTTS = LangTtsEntity( + context.getString(R.string.bus_leave_station_english_tip, it), + LanguageType.CHINESE + ) + list.add(chineseTTS) + list.add(engTTS) + + val koreanTTS = LangTtsEntity( + context.getString(R.string.bus_leave_station_korean_tip, siteNameKR ?: it), + LanguageType.KOREAN + ) + list.add(koreanTTS) + } + VoiceNotice.showNotice(list, AIAssist.LEVEL1,null) + } + + fun endOrderBus() { + val context = AbsMogoApplication.getApp() + val list: MutableList = ArrayList() + val chineseTTS = LangTtsEntity(context.getString(R.string.bus_end_task_tip), LanguageType.CHINESE) + val engTTS = LangTtsEntity(context.getString(R.string.bus_end_task_english_tip), LanguageType.ENGLISH) + val koreanTTS = LangTtsEntity(context.getString(R.string.bus_end_task_korean_tip), LanguageType.KOREAN) + list.add(chineseTTS) + list.add(engTTS) + list.add(koreanTTS) + VoiceNotice.showNotice(list, AIAssist.LEVEL0,null) + } + + fun writeOffCount(successNum:Int){ + if(successNum<=1){ + VoiceNotice.showNotice("核验通过", AIAssist.LEVEL3); + }else{ + VoiceNotice.showNotice("$successNum 人核验通过", AIAssist.LEVEL3) + } + } + + // 距离发车还有1分钟 + fun showLeafTime(tips: String) { + //语音提示 + VoiceNotice.showNotice(tips) + } + + fun writeOffFaile(reaseon:String) { + VoiceNotice.showNotice("验票失败,${reaseon}", AIAssist.LEVEL3) + } + +} \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/view/BizMapView.kt b/OCH/offline/driver/src/main/java/com/mogo/och/offline/view/BizMapView.kt new file mode 100644 index 0000000000..cf9404583e --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/view/BizMapView.kt @@ -0,0 +1,63 @@ +package com.mogo.och.offline.view + +import android.content.Context +import android.os.Bundle +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.FrameLayout +import com.mogo.eagle.core.data.config.FunctionBuildConfig +import com.mogo.eagle.core.function.view.MapBizView +import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils +import com.mogo.map.uicontroller.IMogoMapUIController +import com.mogo.och.offline.R + +/** + * 魔戒蓝牙控件 + * 放置于StatusBar右侧位置 + */ +class BizMapView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : FrameLayout(context, attrs, defStyleAttr) { + + private lateinit var mapBizView: MapBizView + + init { + if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) { + LayoutInflater.from(context).inflate(R.layout.shuttle_m2_bizmap_map, this, true) + }else if(AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)){ + LayoutInflater.from(context).inflate(R.layout.shuttle_jl_bizmap_map, this, true) + }else{ + LayoutInflater.from(context).inflate(R.layout.shuttle_jl_bizmap_map, this, true) + } + mapBizView = findViewById(R.id.bizMapView) + } + + fun getUI(): IMogoMapUIController? { + return mapBizView.getUI() + } + + fun onCreate(bundle: Bundle?) { + mapBizView.onCreate(bundle) + } + fun onResume() { + mapBizView.onResume() + } + + fun onSaveInstanceState(outState: Bundle){ + mapBizView.onSaveInstanceState(outState) + } + + fun onLowMemory() { + mapBizView.onLowMemory() + } + + fun onPause() { + mapBizView.onPause() + } + + fun onDestroy() { + mapBizView.onDestroy() + } +} \ No newline at end of file diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/view/SlidePanelView.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/view/SlidePanelView.java new file mode 100644 index 0000000000..d204fcd0ad --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/view/SlidePanelView.java @@ -0,0 +1,300 @@ +package com.mogo.och.offline.view; + +import android.animation.ObjectAnimator; +import android.animation.ValueAnimator; +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.LinearGradient; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.Shader; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; +import android.view.animation.DecelerateInterpolator; + +import androidx.annotation.Nullable; + +import com.mogo.commons.AbsMogoApplication; +import com.mogo.eagle.core.utilcode.util.ConvertUtils; +import com.mogo.eagle.core.utilcode.util.ThreadUtils; +import com.mogo.eagle.core.utilcode.util.UiThreadHandler; +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager; +import com.mogo.och.offline.R; + +import me.jessyan.autosize.AutoSizeConfig; +import me.jessyan.autosize.utils.AutoSizeUtils; + +/** + * 滑块滑动面板 + * + * @author tongchenfei + */ +public class SlidePanelView extends View { + private static final String TAG = "SlidePanelView"; + + public SlidePanelView(Context context) { + this(context, null); + } + + public SlidePanelView(Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public SlidePanelView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + TypedArray mTypedArray = context.obtainStyledAttributes(attrs, R.styleable.SlidePanelView); + textSize = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_textSize, textSize); + BLOCK_START_X = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_BLOCK_START_X, BLOCK_START_X); + BLOCK_START_Y = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_BLOCK_START_Y, BLOCK_START_Y); + NORMAL_TEXT_MARGIN_LEFT = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_NORMAL_TEXT_MARGIN_LEFT, NORMAL_TEXT_MARGIN_LEFT); + NORMAL_TEXT_MARGIN_RIGHT = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_NORMAL_TEXT_MARGIN_RIGHT, NORMAL_TEXT_MARGIN_RIGHT); + SHORT_TEXT_MARGIN_LEFT = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_SHORT_TEXT_MARGIN_LEFT, SHORT_TEXT_MARGIN_LEFT); + SHORT_TEXT_MARGIN_RIGHT = (int) mTypedArray.getDimension(R.styleable.SlidePanelView_SHORT_TEXT_MARGIN_RIGHT, SHORT_TEXT_MARGIN_RIGHT); + init(); + } + + private final Paint bgPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private final Paint blockPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private final Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + + private static int textSize = 40; + private static int BLOCK_START_X = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),15); + private static int BLOCK_START_Y = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),15); + private static int NORMAL_TEXT_MARGIN_LEFT = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),40); + private static int NORMAL_TEXT_MARGIN_RIGHT = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),60); + private static int SHORT_TEXT_MARGIN_LEFT = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),60);; + private static int SHORT_TEXT_MARGIN_RIGHT = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(),70);; + + private int textMarginLeft = NORMAL_TEXT_MARGIN_LEFT; + private int textMarginRight = NORMAL_TEXT_MARGIN_RIGHT; + + private OnSlidePanelMoveToEndListener moveToEndListener; + + private int blockWidth = 0; + private int blockOffset = 0; + + private float lastX; + private boolean isToEnd = false; + + private static final String STRING_SLIDE_TO_RIGHT = "向右滑动"; + private RectF bgRectF; + private Bitmap bmBlock; + + private final Matrix gradientMatrix = new Matrix(); + private float matrixTranslate; + private final Rect textRect = new Rect(); + private LinearGradient textGradient; + + private ObjectAnimator matrixAnim; + + private String blockText = STRING_SLIDE_TO_RIGHT; + private final Paint.FontMetrics blockTextMetrics = new Paint.FontMetrics(); + + private static final int GRADIENT_OFFSET = 200; + + public void setOnSlidePanelMoveToEndListener(OnSlidePanelMoveToEndListener moveToEndListener) { + this.moveToEndListener = moveToEndListener; + } + + private void setBlockOffset(int blockOffset) { + this.blockOffset = blockOffset; + invalidate(); + } + + private void setMatrixTranslate(float matrixTranslate) { + this.matrixTranslate = matrixTranslate; + invalidate(); + } + + public void setText(String text) { + this.blockText = text; + requestLayout(); + invalidate(); + } + + private void init() { + bgRectF = new RectF(0, 0, 0, 0); + bgPaint.setColor(Color.parseColor("#CC0F1325")); + bgPaint.setStyle(Paint.Style.FILL); + + textPaint.setStyle(Paint.Style.FILL); + textPaint.setTextSize(textSize); + textPaint.setTextAlign(Paint.Align.LEFT); + textGradient = new LinearGradient(-GRADIENT_OFFSET, 0, 0, 0, new int[]{0x33ffffff, 0xffffffff, 0x33ffffff}, null, Shader.TileMode.CLAMP); + textGradient.setLocalMatrix(gradientMatrix); + textPaint.setShader(textGradient); + textPaint.getFontMetrics(blockTextMetrics); + decodeImage(); + } + + private void decodeImage(){ + ThreadUtils.getCpuPool().execute(() -> { + int size = AutoSizeUtils.dp2px(getContext(), 120); + BitmapFactory.Options opts = new BitmapFactory.Options(); + opts.inDensity = (int) AutoSizeConfig.getInstance().getInitDensity(); + bmBlock = BitmapFactory.decodeResource(getResources(), R.drawable.bus_base_slide_block,opts); + bmBlock = Bitmap.createScaledBitmap(bmBlock, size, size, true); + blockWidth = bmBlock.getWidth(); + UiThreadHandler.post(this::requestLayout,UiThreadHandler.MODE.QUEUE); + }); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int widthMode = MeasureSpec.getMode(widthMeasureSpec); + int heightMode = MeasureSpec.getMode(heightMeasureSpec); + int widthSize; + int heightSize; + + if (blockText.length() < 5) { + textMarginLeft = SHORT_TEXT_MARGIN_LEFT; + textMarginRight = SHORT_TEXT_MARGIN_RIGHT; + } else { + textMarginLeft = NORMAL_TEXT_MARGIN_LEFT; + textMarginRight = NORMAL_TEXT_MARGIN_RIGHT; + } + if(bmBlock!=null) { + if (widthMode == MeasureSpec.AT_MOST) { + // 宽度根据图片大小,字符串长度,各种间隔确定 + // 高度根据图片大小和上下间隔确定 + textPaint.getTextBounds(blockText, 0, blockText.length(), textRect); + widthSize = BLOCK_START_X * 2 + bmBlock.getWidth() + textMarginLeft + textMarginRight + textRect.width(); + heightSize = BLOCK_START_Y * 2 + bmBlock.getHeight(); + widthMeasureSpec = MeasureSpec.makeMeasureSpec(widthSize, widthMode); + heightMeasureSpec = MeasureSpec.makeMeasureSpec(heightSize, heightMode); + } + } + + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + + private float textOffset = 0; + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + if (bgRectF != null){ + bgRectF.left = 0; + bgRectF.top = 0; + bgRectF.right = w; + bgRectF.bottom = h; + } + + if (matrixAnim != null) { + matrixAnim.cancel(); + } + textOffset = (getHeight() - blockTextMetrics.ascent - blockTextMetrics.descent) / 2; + matrixAnim = ObjectAnimator.ofFloat(this, "matrixTranslate", 0, w + GRADIENT_OFFSET).setDuration(2000); + matrixAnim.setRepeatCount(ValueAnimator.INFINITE); + matrixAnim.start(); + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + if (matrixAnim != null) { + matrixAnim.start(); + } + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + if (matrixAnim != null) { + matrixAnim.cancel(); + } + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + float x = event.getX(); + float y = event.getY(); + + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + if (x > BLOCK_START_X + blockOffset && x < blockWidth + BLOCK_START_X + blockOffset && y > BLOCK_START_Y && y < getHeight() - BLOCK_START_Y) { + isToEnd = false; + lastX = x; + } + break; + case MotionEvent.ACTION_MOVE: + if (lastX != 0) { + blockOffset = (int) (x - lastX); + if (blockOffset < 0) { + blockOffset = 0; + } + if (blockOffset + BLOCK_START_X + blockWidth > getWidth()) { + // 超出右边界 + blockOffset = getWidth() - BLOCK_START_X - blockWidth; + if (!isToEnd) { + isToEnd = true; + if (moveToEndListener != null) { + moveToEndListener.moveToEnd(); + } + startBlockBackAnim(); + } + } + invalidate(); + } + break; + case MotionEvent.ACTION_UP: + // 执行滑块回归动画 + if (!isToEnd) { + startBlockBackAnim(); + } + break; + default: + break; + } + + return true; + } + + private void startBlockBackAnim() { + ObjectAnimator blockBackanimator = ObjectAnimator.ofInt(this, "blockOffset", blockOffset, 0); + blockBackanimator.setInterpolator(new DecelerateInterpolator()); + blockBackanimator.setDuration(1000 * blockOffset / getWidth()); + blockBackanimator.start(); + lastX = 0; + } + + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + // 画背景 + canvas.drawRoundRect(bgRectF, (float) getHeight() / 2.0f, (float) getHeight() / 2.0f, bgPaint); + // 画文字 + gradientMatrix.setTranslate(matrixTranslate, 0); + textGradient.setLocalMatrix(gradientMatrix); + canvas.save(); + canvas.drawText(blockText, (float) (blockWidth + BLOCK_START_X + textMarginLeft), (float) textOffset, textPaint); + canvas.restore(); + if (bmBlock != null) { + if(bmBlock.getByteCount()>=5*1024*1024){ + OchChainLogManager.writeChainLog("崩溃兜底策略", + "图片大小监听"+ ConvertUtils.byte2FitMemorySize(bmBlock.getByteCount()),true,OchChainLogManager.EVENT_KEY_INFE_ERROR); + bmBlock.recycle(); + bmBlock = null; + blockWidth = 0; + decodeImage(); + }else { + // 画滑块 + canvas.drawBitmap(bmBlock, (float) (BLOCK_START_X + blockOffset), (float) BLOCK_START_Y, blockPaint); + } + } + + } + + public interface OnSlidePanelMoveToEndListener { + /** + * 滑块滑到了末尾 + */ + void moveToEnd(); + } +} diff --git a/OCH/offline/driver/src/main/java/com/mogo/och/offline/view/VerticalDashLineView.java b/OCH/offline/driver/src/main/java/com/mogo/och/offline/view/VerticalDashLineView.java new file mode 100644 index 0000000000..4ab48e3cda --- /dev/null +++ b/OCH/offline/driver/src/main/java/com/mogo/och/offline/view/VerticalDashLineView.java @@ -0,0 +1,64 @@ +package com.mogo.och.offline.view; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.DashPathEffect; +import android.graphics.LinearGradient; +import android.graphics.Paint; +import android.graphics.Path; +import android.graphics.Shader; +import android.util.AttributeSet; +import android.view.View; + +import androidx.annotation.Nullable; + +/** + * 垂直虚线 + * + * @author tongchenfei + */ +public class VerticalDashLineView extends View { + public VerticalDashLineView(Context context) { + this(context,null); + } + + public VerticalDashLineView(Context context, @Nullable AttributeSet attrs) { + this(context, attrs,0); + } + + public VerticalDashLineView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + private final Paint linePaint = new Paint(Paint.ANTI_ALIAS_FLAG); + private final Path dashPath = new Path(); + + private void init(){ + linePaint.setColor(Color.GREEN); + linePaint.setStyle(Paint.Style.STROKE); + linePaint.setStrokeWidth(2); + linePaint.setPathEffect(new DashPathEffect(new float[]{5, 5}, 0)); + } + + public void setGradient(int startColor, int endColor) { + LinearGradient linearGradient = new LinearGradient(0, 0, getWidth(), getHeight(), startColor, endColor, Shader.TileMode.CLAMP); + linePaint.setShader(linearGradient); + invalidate(); + } + + public void setColor(int color) { + linePaint.setShader(null); + linePaint.setColor(color); + invalidate(); + } + + @Override + protected void onDraw(Canvas canvas) { + dashPath.reset(); + dashPath.moveTo((float) getWidth()/2, 0); + dashPath.lineTo((float) getWidth()/2,getHeight()); + canvas.drawPath(dashPath,linePaint); + } +} diff --git a/OCH/offline/driver/src/main/res/color/bus_autopilot_text_color_selector.xml b/OCH/offline/driver/src/main/res/color/bus_autopilot_text_color_selector.xml new file mode 100644 index 0000000000..15f6897792 --- /dev/null +++ b/OCH/offline/driver/src/main/res/color/bus_autopilot_text_color_selector.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_base_icon_in_autopilot.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_base_icon_in_autopilot.png new file mode 100644 index 0000000000000000000000000000000000000000..75c26c3d719195528267c71feab680eaafd0d5ce GIT binary patch literal 8756 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 eSfKZc@ literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_base_icon_not_in_autopilot.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_base_icon_not_in_autopilot.png new file mode 100644 index 0000000000000000000000000000000000000000..927296d6900963a898b84f78d1f7699c9d5cec12 GIT binary patch literal 2342 zcmV+>3EB3EP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NuUD&1ONa40RR91NdN!<04n#S8~^|akV!;ARCodHn`?*_Wf;djrj}Zf znYvqnXrg&1mC6uNQ%fNc@@qlg3=Uq_s!5^Jktj+JVmt-rfazcq$SNmruovtGUr@B0 zSsiwYJ;j*>HiL_xk|O_#GqF<=O%oKdGr`xOGemJ`rr})`8^}EY4tGXnVq%Jio_n<+ zkQo5Bfm@)KM0~_cFNMw%2+Rk~pqAxN$j#4ErBrV>g5FNh4dA5=!S$Ly0)7VIQ#ia03BU*K2%eMJ0+I)w07!SPsd-h<6)be8~)q$?)!AH-2S zSNQ|QvAL4M;Sg}vk%4Z5wZQ9k%1T)Ag1D}?q4F7$HEz)!M-AX4aFG)zJ(f%0lui^M zh=+?PuZEPN+RSj!6C84hhR!?Sj!Xe_G8T`34+pC#zn-Z>W4y^4qHPelBz2Gq8p2)A zM3+JCrc^X=zQCbCy8mBD6`)E+;s;!wQ_p%)!fAhCo4x;wj-O*M7WpZQClFtgDBu3h zQBmG%@)qt{=Qa6 zHK-uo;J78f{YL5-&#*XXp?`$YNsV{H|6!m!Ofn-e4XnN~S<<&Q(YOnBC=W}X`(o3< zXq?4R>qc6_=<=dGfNdRYT$pJ0@Pwmnyt9V27_Iemc?t4ZV@afaJ*cXtAEt59Z}iv1 zl*5vkbGPyV$}34O&{3SOXirR{9ftdgXYv1Rqx%2EcloyxT&s@vf;)khQgjT@OE)L~ zru_=gQD}yTRxvY+@`1;89IZ@nro}ncWp`Ml*$Ika^GD%{>k$G;*XV`AFdHQ__IsF&hMY=`$#X)7=mcg8Ot8TX&W}Uk4y`dtt)O{Ju1!z%`n$0?O z-`lJa_c<^$p%nV`cLg{Av}B=4?ENLs80%?J%fpCE@cSH`1ZPX2$*-1av^(-9P%Yx* zoaSyjK$0Advnp-Fum{ivg0{p>i&%75O~gZd#49QJC=GOuf+X3YA}vqqrTr@C6?wCq zpsN+m#Xzfiogs>=_|6|dpxX;5&m>u{B549^lBt&3bm+#JKCD^|Y+E;`xITSKQt`Y$ z7{g|&CD2?I$+n)fszVhV8}L0IoVJk2+AaU%9VvBC!*-R0Kx5GeCDTVwdT6H>d=CT% zEJV_F%dghUQ;UV$iO4aE`o9@TqR&7vygG#Run(bqRJNO^(}-FjJ{QL@i; zi;2GS0m>^$PSH`E(`v-sja>yza^KT=f@pjD`Gh{_X5whiY##94`Uzub3Nol^u9qE)m2&}8fbVaKU4YBU&_ym|_ zW2~WPBLOsy@*QwW-+LSsM-4w4fk{4&vn#e?HOpj4pWXx$5*>JS;7224A6e|-K2eo` z6M*TBCQjNJN){CMNXsDFzp~DUk|VVB;6qaw&9PiWdd^dgq}cfA0c`t)dy?#DON<^{t2PYnB*URv~nY*{&dk zf6Ko*fd$5zu6!yl4x)#m_icgALW}Q(z6pp2usx*1u*$DE{qT(w>EoaeFfDI}!F1H? z)oUDuzU{X5x(yUR;K9Kv$}69ZSsXQjGuDu83L2=r4Vx+QIt>Hf?Aoc)IV`J8n_lpEHpQI5g3a_{}^Brcnv0eDS01BN7sF(T zV_i|YM14fd5$i$h!X53CEzTy#agskEzoz95x;u#Y=X(W}6C{A1QLYd3Qii$>v{<$Z zOa;Y7GmcAvNtTKO3R<+2o$Teu^|nGa67kOG8B|`F^4|pN4qS!@5xbZZ?QrO?YFeI= znfj$?+V+v2O~g0bTdcegF24z?H(^b M07*qoM6N<$f)F%O!~g&Q literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_base_slide_block.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_base_slide_block.png new file mode 100644 index 0000000000000000000000000000000000000000..ed7b293b90817473c775392fe3ad51d4d7f11d24 GIT binary patch literal 4933 zcmV-L6T0k)P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91c%TCS1ONa40RR91cmMzZ00`n$?f?K1uSrBfRCodHoePi@$9c!U+1)$1 z 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 DCiI-Y literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_disable_autopilot_icon.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_disable_autopilot_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..170f254cd1c33c0628ab979459ec6d5780c8d4ea GIT binary patch literal 2829 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 X{%-a4Ah5#400000NkvXXu0mjf^w>N> literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_icon_arrived_station.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_icon_arrived_station.png new file mode 100644 index 0000000000000000000000000000000000000000..8a065b66dd39352486755c293369d25987521e94 GIT binary patch literal 1420 zcmV;71#|j|P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR919-spN1ONa40RR919smFU0Lno(1poj9_DMuRR7eetmCtKjRTRhH%w&?$ zG)*)%{=gp4^r4Z(}(^FYEaN8*^ zxmF@S!**Je*g>$J*2J|)SIe%saj@8yb!sWWLjrwmSloU>)BUVzL|aT+zW4CRKgu8MR);m2U>vJLFq>I z(TV2|_djs+J6V_lmbw7y^Q>y! zv+wXdCxq8ey_#hJ4F$m1z?=J|A@CiwJx%)eK0JJa98z*YhTLG7IIuHjZ*0fjfA(ml zr+Ua*>g;4~Z$;#Q21F4Q$J}W*@s-M<2VZ;cs8#@z(}4{<-r(>yclYk!cML|}R$~W1 zNS-qjhygikE*&w-B(2?c<1wwer2v!L36^lUP(%S-uJw#$FoOh%m?gJZz*daSRqlMQ zML}^)xu-UwCjs_L7Bc0P6jdm|Tiso%l!tNv9Rn&r0}*(>&%2RdDhh+W3>^stCgsXd z0Nx6@3oK`hBW7GRP;!KKlw@|vio`nOTpWnCvtaWAa-V*E#&pw1YYXj7yc#Q@vC&xY zi^3dXlD9m}GhCt^IG?Spx!H;Zys@bq`S=_V3=*UnY$K?msV$fKRGe&`D9~^ z7RDSnuu>=6zrJyLT>m_4`D{rMn1}i19}n+_9(MnBx_0Tk)8pijk_$4PU(2?aT6;R+ z?{anZ=gS+VQhB!T{yRtI?zTBvdjV0TZo0ibR*>?_rUIS&`14o(I`#F8BG!X$%GRao zMP39TNO7sOj=?L--_I^>{;~Mop8M{&yIiZ?WPk>w$iUG59_x$${PgF^iC6#r^z08h zU6VR6?{N!z0Ao=5bCB;k=^klcP}aS-KlRu{H;fz@>mC{$E>*h*vaFn>>-DRfmzORs zPhXh2^x>IviUV*}x)PN2hSb6B4greTDCa{1t?h9nfiT)Z&O@$>MtfO*EjDS*9yr|ni~PcEw*i{RkUZZwV{ z_}xe4j02@Ogl9;Oat@d)`fc>r;$n$$^$$pTL*L-$9DuK2oS`Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR919-spN1ONa40RR919smFU0Lno(1poj9uSrBfR7eetmCtKjRTRhHee)v| zYfS}-1fP$rKNq`JQ|4x#xS%x%a+t(f<>dy9tNwO7jKbFu&+# zfwTq=vk5E`aF~r>Me3DNIS^Thu`M$emfjg*ViOPx2NMbXqe0@q${;~&=&{+$kH)u; z&qS@!2VE3TkVcv&tI=-ft7P+^*Xs3S!SwWtb1!uruSKfSwo-^o+1 z-h9YAI?rhJE6;3u+S|LZ_v3{Z{&?~6D>lJ_N=LfSMPnVP-+iEFf`&8`T}MABy2VL#ID z?$?)R#-22{8>V}vmC7MQh#~T<#jl)wtQL(<$6dQd*02)I(T_9CY^%EP$^6+nX)!Er z!<3kCiN{Z90IJQ+*7!Y7L6`|kNQSA^YgG2D8mp)^V%VlHOv9T_5Jx5wGAf8`^~1-h z;y^JTf1z_eyLk4jEScbzL+%>49k=})8Y`%G4=ZlOTnA>5JWv@qo7S(YFAFA|ZL*thqBEwOBKOs?h~QNw(CMtl z%|l213h$SwddGMv8O(jl`RR9e)@?Z?WTzL^qzRC@xPNtR-tF1Bp*=ep$p>-zC zZP44?aI?wJ*-~~d&e2(Qa)3eLgc@f)7XXmO>%aJOk zaR}%?Z_B5j|2Da{wvfGHf|cs*eliBVk{C9K+FE~eZGjkym&Z29ZiRhg{x&x8@Cld3 z&GMUU8~pbfG{W5W*zL7f&cFKFUl-q6uvj~}?iyNZ#b+~x1Su|+*&%st>-Te4Z>(SW zVQgahn0-|45K)w*Iia1mk&{SwYvre3&OG<}>UVE1TAa42hLFIOX6{RXB;uWo zrS_lSym7vkM9cNs;iT?HTeYasi2F&u-?_fg`FH92wM*}Qu=w%Q@0;(M?SWLp9kZ!c z#J=T_BA&pIMEpOK;Vq_za=kSlj~b4c>Z5O_zl?kisR|OR+%^r#^$(@Vt zLL!`t5@VftGQSxydqhqGjH#5p#1>EG%f%#%{ze;0nAaSc^9e*r4q*?$QPv@oGFFR4 zY*SgwK!QtfAVZ19RLe0y%8`V`N(>*Vk{PVlbE%c)??o3aJadj?P_@n`5>s-Jgj$@b z%|loeco4Cz7dKr5RH!OJC5W#AiUgERLRyzESX>@I2!0eeM3P`E4BUNikqAX74E=`^ z;{*vJ@`G&V2#kaTgLdW-{3>`bb)YFf;ek#z8748z$It%<0pSFIHmtIr00000NkvXX Hu0mjf@OOIK literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_icon_not_arrive_station.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_icon_not_arrive_station.png new file mode 100644 index 0000000000000000000000000000000000000000..e0bb24c526887d10da84456c758e1ee02efefa8e GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&k#^NA%Cx&(BWL^R}E~ycoX}-P; zT0k}j17mw80}DtA5K93u0|WB{Mh0de%?J`(zyz1&S-^~7gA@w${E7uqdpunnLo`H_ zQyQB7|Nn2?wnW$C=lKuzGaDc7H*=ZsQA?Tm@g396LeC70jQ+8A8a8z-*m86d&;NRT z#;hWyj~5vOKH9OlU7Jz5IcdIeqtCJB5=$g=1dcekJ<~of64c04`C?hpL+y3yFh34`wACOkm8sQuqm)CIq~k%UIcD|z7B4=$ zU^#m9R%EB1&jSe-H!h2!f{X@N84q2HWsa{L%mgQ!FuZ1r_>w7jn+fC}Pgg&ebxsLQ E08h+m#{d8T literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_light_green_nor.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_light_green_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..bc9fed952db66c82451be18490232db0a6e79031 GIT binary patch literal 32523 zcmV)7K*zs{P)1^@s67{VYS00001b5ch_0Itp) z=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91n4kjy1ONa40RR91m;e9(0O?;2*8l)O07*naRCodGy?d-(SAO5O_T#+n zx#vE3`4BafbVs4+8EV|bpzX|z?Ge)yb>O!4)P)AITePT)xJ?_UfMcgEP=I8UB0*EY zDNv+`7awiR}?Rrf3Z%QMw}U`=0mN`|RD%_qX;wkIO@f zA}Nn-%p&jEd#~5td#&&Oz1DB76}WGQ*%k<9FP`8$e}b}qq>6@rq~7M+FY}3Ofv5Gw ze&Sw?2MXK+>Bs{U{s7+NAx-X+zLgL6)ZhQx6zr)t>9;GKZGne;PP5rQapw!Z^*>S{ z{!D|0cBi?RdpS^y5>y zW6kynp={r#V8=W9+t*LE1&+b~sn-4ImCaGDk3g}YQdf1Cg~aIo$TwblZTh~iKKkQ5 z)ts+6_wuW+KIA0}QZ{qbEAC1@eejuthn~)q_!d&L_@U4EaV5?HN;i2(d(S+>@m%+J zg>!Gb_J(iSSLw;);ni;ys%9R9M|i`{0DUIOPG5V&4llp@^4#mrT@+B$0MO%vzNwy$3g+~v8bkLTjLulCgC z%a72p(hoZ!N z5wp)QIe!^&y?^s&;4T$W<#CeZDV@AdJ^CX&d*MR<#)pDz@dxsY9}wI8Lq)+JrRkK%C{vmFa(Oa;e7_}deO#!Tzn2H`>+XGbGuS?sWS7^Sdo=2{ zsPHE{?&GImA5q?#r&wydDb-pmySzFD)aCicZohsrxTM~l!O{MWx8~pZ;>+`eX0AH7 z-k#4pleXw|`TPqHrXn}qup;XhU%WpL6z+BYwJu$lOFQLeS?UaBD^BN?g==$<^x+h( zc(v&p&fR;ivM0FsLrKB5uiu!Fovyp79Ci6vQ?!mh8zW}we4l4R+La8pQ8c(H;gGedo-Ak^0`_BFCu&LC?2)F0U=(4eS zjz)OXCjh?tKnHcZkFuHE_PV=yjH?r+%Q znV#q{VT%t3*A!S&P)%%A6Ip$7GI^x+pa1#r_y@o5ws;qzX$DMCA_su%FezQ0oOf+^ zJ8-wT-gK^eN9COx+}#b_vpSmzXJ^i5Pq$_-X3pPtu6}02UcPzmY;N};xwW}T+zfdu ziriWRK4Ymj03PLwaMQs;ug?NZ2?fH6JmsZlpV!J*JAMSVIl1Rt1&?v@5t+ba+~Fw{ znP(Nwts9k^XD80R_0T)D-8_}*-q|)l30xM=700MJx(A`EOn=Z3)Cr(PaRYAA$~teJ z8~V<>?aQ}}x;>~aeK0T1B=XLeuY1;cy^Owrg7C>@nZA+BXMNJ+BT%mSF~TczcbsL1 z+t*L|XS?i0toOwN3t&yz-^*^o_6jm3mNyMhsoS@M?iSSPIjBsqqpZ$x!88~Q>*h||6S#|>l$a)b0c{Afx;4!0AnI09wPiO| z9M)Zbrf%4$C|Vh=`;$|bwMbYGCj(uKmm)Vz%u_(P_VKMA9U>BDFpIO2it2D z**0N&Uqes_Szq8!VXNwo_B(s7h-Zql}s zXWVxUJ1-mEo%iyUg!JxK&8U)}SOiZfD2G)lRPG5IDj;i>RMEk-NJBpK}M2 z*S3tlx%#-2-C(7+Eg9LZpG$I^rDjSoidGnLZ(eFoDA&}y;pMY=N_NdEeKZB2c;zRc zWD6V3p5UYWJQQGlc<1V*zAKZn5@6e>O0&Z&g~j3WG>>~NoLsn9VTrfwnfoy^)uzek zmb|;wA>Ua8lp+jN6Sn7pH4Fe%5t8tzIQJB1Iq(2lr`z;@Q5YS}gRHs+xE6%{eMQ=j z>*PL9|w8M_O6$n`0iD2BOME6cD=$69y*^bpAU=4PWqfVWYNMzzv39Qx(s758& z)?=3lIBV;9au5ZhHRnd}bON_Jd8Fw{FyCCG!+y~N(=6`Lx#W4kbP&4=0Ic0^hm}=8 zR#3odD2n%XP&=`b?*tWJkWWJttuI4C=&9PkQg-?Etaa0&O>W*+%eddU{r`lrw=Fvc z#4my_!u#&^@>ym&L+yHbI=Jo$nt5|vRiT-1b>@6}T2!UM^2Y>O`B2k3ANA~^R7;gy z^R6_L`mWg71YCCI5mwr@E-;khvtQ!-FW8}bo4C@{Ff}c7zDZa0vyZe`AhTs`Af zw~=eWR`u4~p*sO};{SxbL7AEdq?f_Kv|(WCcka>6>OOu~iVXg;xOjwvP)}$d`J-zi z5uQDr33S!xcL7}y&!M{p2tAQ=)m?zNwwBjVj&tLp{2ZPV#RF`2(GvJyJGGvReKyk) zXy>f=Z;5we<|t*fb@x?|ir1al(5CEC`3i(_n2rKmQv%(k@l3*lY-V7r2)_RE>O+q6 zpX7&R{y36LaCu#EzDGNN3t^WxYaqNU=y5k)ck>Q$65J(_R|^I388_J83yfMx?g^nn zP>AH96I9lp%M%BcQU?oEhXNTSO4Md8;+(M3D&XbORqu3tyd_S5l5Wr9E6t_*8oJ_| zMp>PzI09v@mP-Qa=brA6XD@23uBK2+o&msDTr2M$z8j8?+W9a{@?o}OpYG~*0#$p) z?qQ0kDA~C)uIt_nnr@T(+_u{KYLeSNhX>iE>BGVXOrE`d+;%pTb5b1Yz*>)429u+nCAv&4g@pV((W^B%#04)bSMDV{Zslubx2r2 z%w{RsRb{!x-$E+po8+UiO5y(xENnZ3c?;KP?s=JW=y?%lHN-x~QBkhV%}oeE>~{8` zLfdGAX91UNkP1bO62OzAIH>#yWGPWALLwQd-3`)cJ)nsuZYx}`P#?q#1=r-s!FD}3o1M+K_|UrJ7}JKQ zW~Et!TnoZwGter*dzzpb@c-1skKaIBbkBlkdQj9uWUoa=)LF{q0rtwIW-oI|-try} zomSUg}ejuu~L^WwI44h5~4tgBiIVxSOq`qZ;3y2U*NY4e4O1fk3n|&d ze9MX^c|@WA(J9zNfK@*7@#8GG93}=S(F*MuVP5KD=hi)Y>hti!_U*W^X>D2F!4_;0 zW7ZU0M?ot*WBH98z6h{f9Q1DtL$@+^W6vWAGul+vqP^JM1ZJE`Y-@=UBE`DpNRktw7TPh?7dzvZuRpdi1XwfC^8yp zWj)PD`<0;Oyu8?!c>}F;$Ok8o`8E=niy3#-c&Ebu8Qgl?v-I_g&f=`yq1vssMgU$R z&tY>wIUM+ew!sRx~3DHA3qWrPIZr0Jv7ovjOph zx_*ZGnT7@>g~e>xcVRutoz(>3awwVQ&5*ac)+5y*%pCAeT?jCMLVuJ;;W!_{QU{%3 z7`GT=3Sg_yp`_CemYU}?w|3+zhkJ-=aj>-B$o6h;MHOVS;YuT`|6UtY2NZ03JE(80 z<_C;Y4BXc>6qdCNWDJ?TsDVet1?wzBfAzgZ-cd`x|Wl ztiw)ldhw5#Zujz)L3&2*3=~ge!oIV^pges6yCeb}$MA zzO2>)ZK8I7uiuA(LE-pQ-1tN_8^T5%NmjGTiIP36}anaixhxc9%##>PQHF|-=6J$&y3fwG#+=$zGm-xb)h?U z0i6$Fl~0#~J)rsTH$_|`XF<7QD3`_$H#hmLd7Mb52aVo&Bjh3AN)FHjpR{!2^=)yrzTV5?>sJ;WP0TjcuOw~E+k3vzdF`#nD{YItgULN-jSWy4yq`FOEUpq&sp2yLude~Fhy2d$>Yv$*zY#-M)MTx^T^C8RkxOp4qT9| zcW50nP(1;u1GlGvd#=u4iGfufR{&zhHB*fYD5&ifI9|SPLjT9~vJrr)8W}UIoAQ=nG%C+vyj1`vbP*R;^E~2u zI3(VAAXciCj7wKpi8D7C7)wo@l!AeadSfWEC|WJAHL51a4|D8du0h;k9wX67A?R#j z?#LSX>Ss2_QUvxMD-s;TzDRYs z!U)!wgm=tXxqoK|Fs!(Abr>vT!~|F_6}ZfnrQA*Ar*osq1%GfI~LE>Six zlDS@x)pbrJd6X2d=6MLV9G^lJsAN2=*k^*MZsIpJarFhWciVb(~@VA~EV2be%k_-7h~P%{*O#+Em-+%bc6N}~Q2h07E1MO@`+ zyJJ69fK9c=smADKu9ho(xH?stBG8#kpoen77Dc%{xMYTi%^F{Wmq^}nFFuzqA;>33 zQP4QI6iCjBd+jjp4c%b5O4o!zE~eMlP)`FPJr1LdmKzO|uo0579tY#2*x28Id~`j+ zKHAy{a3!Ol3U$gloMWJk0hy7hDnsm?WRH6zvssF zYL*5SG|nif=RMB*t{;AycRg}Thc2sP%IIpO;H~!~4ZZ_61b?38EOA?R`B({eV4%X+ z`ImBc9uj6=zxtHnEU#+}^Jd|i{R%PDvCEeW+3V_+YwoHtFAAbv#Rs@3+1hAPg2g?e zU_UR^``RvZm^uk^QCR5D(^K9Q!C0a!^T=Fci~9`oICmQ4y&u(}IP2@MLk6Np?^MHN zZ4@*xlJ-B?MM8;!@tJ3X0qn4b?P{JHgxs{rxP|FqwB)jM7-n>Cy{7AdOOr|%!#*Qer%_A@Nwqa>gU zMjOq1)Y}Q8{($`Typ!`GEuF|~ooz-4V4JH;VfQG?D+krQ_hLs~?OJyIE=e#5H5?7 z1wq_|HDapBz)}rL=eWj3TTn5j0k)~P50pynErldu$dm5`ge6V%j3f(0(Lxu6t_nqi zY9Z*+ze5;foX3?QOQko!I@8fo7}m19BBO~)sK#fi$YV7(xV;mFhX8Ihgq*=Dfupk_ zC_Vy|l>rI>v=53#p*1NX@;__2?$NtpC0x$ATTnaY@-q}WAXVPHZDdl(Vq88jEH+&{ zF#CrlJRN|EBNAraoGk)HW$G1C#nnb05}U~LTlT^-MMzup0)54aEgI!wTtwrC32Y@^ zJwRq*Xhqg`C|61^XE)o?xH$}>6U|_G38`w(4y*OLGxNhv9*tK-ak9wOmVrPJgdugb zs&0f805f^eOOdsfp=2XqmO{b6Nxhc_K?V9FB>+&GNdXvo(FFieWg!;Ys~OJ`*^=1S z_mW)BOl83!v9LJIZO#>5;P3lU!ulwmm-6dqmfk2XH#6@LYC``N zq8}9Otw}6uoXy79|M3TTMc7?7`PJV!{!B=CMkf|zijd4zI`zrRVP)kxqk$OXp+Qj~ zyOxG@8XFX8VAH~Wm5MyC)g9xIp)^AY?dhl&LPzX~^cEn$gkcwo1^bIdtpHFh8HZ7| z8U#Hm>5Va8jKe&w78FmKCfAi9nEY{{9B|M7&7_l8Wu$?MYN{?>htv%#4_$K!nT&f^ zLz!Els6ns`vjOf&m7uGR^b!&mL5{k4Kz19_}-$8p=HhD?KD+l9-Gy zx@CKr?{wdfiwPzPS$!D(k%fK`owdx#2>QDoktA{ZxE@?s~1uQ_O&QJS8 z29z5JP|7z3Jao9pSrvo{?pS=2N;}>Tx(=hrH;@Eq0=x{(Aj-oy&&M%oDOR{7$`Q+G z$t(*nHslr98kbo!%Ho5=AcdXA`5-f+ENK`kkkzF1j7spr_iX(ver3hj zd5J6hxo+PHHa9o%GT9CK0vBGVoi^+VYBbt7%{P1}kha)ghnnf>QXb1C4LmP5$y4_8l0fqAWG{I+^q_@0wfQpS4Xg_qYz+@08r2+*kFw>eqdB7 z0eDdiC226cMBnD3AgL$|3IZ@jXo3Qbg8*}Zj>tL-0S51b9ReiLQ2>?8JOXP(KFp#) zVt~to5ug+6sJ9nM`Hc*Cy;fUS}*XVn@5 z4u?C@2(w02qmn29{Tx=FuRz_G`P_O8G~pG(kXh>PF?<%~T}&5MCm;V2zH%_I-9tCr zka4<-1dHRM_&iZ_skh&c6SC>UUZ4h7@t7#1kwD`*H%#=wI9jRrv|MG)~llnrAX zbVJE^WF$309*YorJS(H87dD51%hD__!ai1dh4Dxfmvf9>d6U7-#N~B#R|ro8g-YS( zVFi#ONugG{s976V5ZQ8Q=2EqV39b_$R1zV!37bWc=pUg;uhn^3?6mu|2NGA5GcqB= ztnS1+rb|&SqjP1sm5&Zb0Ru_)=&g0wD)4TfLW?{lgIR*RIeM}v?Xj>J@?NRg5jJp)roIPQ|P9rUOg6fNt~K~S(^A8JvB`ZVeJ1g01uiy??XmBJeA7OfwYaSf2LG9f#`D#w5^ z5-ow=a0lL-bnc~yV<8(;0vHIqB7Y&w4#)sjz+-4`W@8k}umP+(nE;K3n1|6Ae#t-& zjh_VoDaS2n2qlYyI`-gBCbn5k5YLGVmsd~;#@s&7yE|EsRjXO`ER_wA>v}C$Mex_S zW_oUAY=ZyY_o3YQnl(4vT5DMre|PWpZ!<`aW|=gyk)}WiWRW*rY;qUr`V#t)=W^LA zFI?QWH=Uh#S(>6=e)Wo=02r z04}p3)i71U-cTelY|xQiCZ?UnlL9bhheJRKYa}g>0Z#=G?k7=-FdoG)!n&vxcj)Gk zC|M>#q0G`CsXdD#&O)w1!C3Vy2m&1-3v0;s0%yuY7|lR}hd!a)fx9Hn#u!kSd7U(N z!2qg=N=k;@EoYSDUHfp#xW)yy!!%PBNxFA0N|*4OKppNu-7=XwR)kmCI53{oYs@u3 z*l0i@a~u;168sSic_*OKT){Ow!Rr6MMnP=cGTA)}PN8*DT9T~W!gSGepUX8lSq_UX zZR6W3H|?SyFGB&JFf0NXFHl19;kEnm#_R3^3%O}J|9*oJWP+^qGUyeve-P~NAk^dL zj3??ac-H*6x<^~#`iawg(UCihAnzDb;~oRnpMKVcjNH2kR0cARI5P?{jIKkQj-XsJ zI@J;KM*swQ%V9?CB|{W}nv2($gYbjBO1wlzHfzW_kf#(Q>p_PIxE`PCIIT);3vs4E z&CJ3v;N@+DEEcOI0cwSDHe@7+H{t#SnR4}2=3{6Y0YZorj~9QV`;yGeHf!m^N6cLg|PQ zu#jKID%ucRR2=Yx8bO~V(bL;_h>c;Dq8yG2Vkl|`&}vwx#vm>7fSNXAaV@F^$cTq^ ziYfX4jnczH4&jhcEn)!|6-L}r_m5$Wlx1L@@u~*KP&AeX`O;d5GD0E5uy~lm*7F4A znD^p*oMrk>MtG1^Pl8Rd^I^qRhKWRN2ZAP~lutK;)kcjL9<*nW#rCn2je~y15ZbC9 zl93T;a}96U@_8qwi}+pMe`r1{Z(vFX zVBra@nTJ@4q-Q8k6W&G_Ah3hd6cLM_LcNS) zd?=36IETGbG1N*zHGly|lA7Xb16Bs`aM6(#iPhKTurA47qE<3n_?Inyr9#Sb1t`KQ z1`+N29260=qwAe|o^AVFZ7qFt7y3 zQ2?Snyk7z4m_ct*)Ud|$4Ub^Qm@x(sDiHp%M`M&@h+mz7^Ii*|Hzn<9jTWT;X5)%a-ZN^3nr;wL0t06r=5JSfImeAX=Wd;rk24_K{!$EXO zwyX+Ni%bEga}C$PNt2$mPq0vz6DbB%SfBAO;vyM1=|Bd)0UacRKcw+E8;)Nh+XbZY zXJLhBx$6m1>W~?UFW@KabB;MQ*yFL^r}i!A)lG`OnUDDz5Ua9i%&-ET5Ad=+MicB0 z8PqWltA%}znGgjs8GEdx7{^4hfG5t@$Y)W7VW$S#Z4Zf!7}#I794z5F-HEa@O`Ie1 zu!hNElw)rJN1(|U1=^st)4RpIZPP=NP}mBw8zb!U!xh887BdEJg&kJxme>Z z-SI}S$;v-sMjzN{mE(y%buX+FpMe|=C5i^mG1TbT^l$#AxC&JlS@Ncfq z^ugvd{tTywOf8eOzP5pq%(&vJd)~QE^>G&L26^FfBd-W~ooakBMOKhSJmjNI>kKiC zBATujYLL2@pzDhzz!;HM)Nk0g_^m7j!H~}zA_X3aN8EznW;H00>>HyLIz~KglA%yW zqEaI>fPsKu33mH=h|U+&QT`bktwsrZ34o=3quoTNC`=6iqeXfPN$eCC-yynae_=Gl znEDO)l*%C{CimQ*!(_{kF(jgwd z`JHeirC|Npv4)YDuWS=YG;XiZzKy4G_3g<-ULU*Y7uRZOk_z_?fKT%;0GLs>X^sy$ zyTGza``T2&27vI2z&;#W0Bg2AzUBp%JcNp?7$}Co~`eeSoIu__}M7*{N|fhTd4?a*bHV zhZ`m8OnNa!lMstT#-ej^jz^}6;H&|I#@H&)4m-mip-aC&nmoJ=K=u(9pvmZBNS*u*(N?_SF`2iCGRrtp_`{R(pp8!5z;}ib}!~S3k`k6&|55YXqZ22nqW@PP8s6Iip zMU= zEZFzc)7S@LdCjaV1t;$xF_g6GDGv@*JR)V!_{qICapVqp@wl+nij+7KtK4#8m6Meg zCmf8VE6VinumE5WFEB~HtTX+Hr~N;WXv+%sF>lktD?%3N1Qre_cuiKrsEI)w z?TZG+b_B-~bqtZ~uq6OKzWgjbgA4VKK_8%6B2my4V~`w0aqQYZmYstV;m6LAv~*O2 z4DmX*Yt9uX@}wi2PJq3PkpHDxSpBEasJ}ZNkM0H$JQLEC^m;UiWH`(lrj)=I5#Hr; z5svw&_!2RvV4A}=moQ+ov7A>c3`Om?!>roCtU(*duZ<7UVZM>9i$@7mj1PAeU+kr- zt983Uj5|5HDirQCZbf@Yc`d|2ye%dIzs7_`!WcH#L{L0x?(@6B|fC!8}ZMMvP=c5k$r-8!@`*AgD5<6Dg8Az*dj=_yB8t4HcOo zs~~8Gy`2#gfl(r!flEL&rJXO`iI`g~R!K2jqcFVki1>`rVS_Cu+T0<2bCXm$QGl~h z$YPg^%MU$RD_X8c2H0$!50bxpo=pzSXTE#G#v6xG6Y?+F3md~)+l?U8jpx-UguYCJ z#TO&d84n3L3sw-F&E;kY0YD*>PHH|ie5+YS-t)sS!W`kdTMdUKG>+7X==Bf|{)7s? zf6J2B$-P81Qd#KhXOnkkio|ZUiQ+7&tG0!nMvL$Fm+d+Qj(#8 zRf4;M?dHNL7v;W!$@jaUVt)fVyNhngSHO!wb+P~RVWVe*+ zc;SjtY4AQKKNgW-0DeWKHLeihy)8Se1@*JdA|7G5rk!Aw@d}RxE%U>32*e;tGO}qd z9K8*nlcyAB0p?p`rsAtpA?|_WQ5stChE)nOD_cRTuO{ng38mJdW(2|e*8vzIL7>mK zhGE*GnNRE0kb%*##(4N)t*1Yhk&S6Y`E${yqjUgr>Im#;my9T9NjI!CSIy3qN=qCg z{X_UtC>3(Q45Xl!PQot_0a(gsnDt#e>~~%qb~}HG=2fez$0y)Yzv>_TLo#Oq4o_r9 z<913Dh+t^^+4sq{LJ2fWH+D%XX(gMKTA)0$`G^AG?yq6v`>&Dj-ogVim7R{BXOy1a zM-USwLy*caiD^(N*ElBD3xEexuGC~-fqta`P>d8xgMy36CYRPN&kXD#Dn%6-U(qi4 zxDZ5`kc`{XXbEqN1KbdK)ZrN9+MpF6JL_kPZ}Na%o8;ua;Ds=+Olk=s+&Y~9G(5GzQpYHdcW98{*+P$~_YGWh zMA+#ad?7jN{CVO;3=IHAC&;CY0)zp;P8I3F~^Av zZw+A)5WyZb#)hUkx4GQoC0hTKXYU;1-x908mvRvcW>W zZqQiZh z+Jiolw8n87XN6R7Le+#{FV7cEN}AGDMhb#aLF%?L#XWtRqUPf1@$5f_pPoW9`DMPL zJVpmW0l`+wm;L^Aj24XDqm2f*_j5yP$ZOsWoQJC5bje}@F2gCH z3hUIj-p5H(GP`}^%^H+Xj*0$TYwy1s4tEdo(JIzphQbHghHIWJTzM#?U=wyOUNRhc zLI1Ly`&9Q(bH&2}R@SiS=zczA06&~5tkmo<>eu8LkAbKl{(r89S1>C4_<&oAb@;$FjzEYR91Nk*{aN| zCJO7j6jd0o0vMPb_^Pt3 zjU@uVzz`_{uT16)fV~(%R-pefMho^>UNmDo8QOR$GFhH8*a1SBaKcE*fC;_zjG0P@ z`ymSnWe10tBA}(iF}6lta}5W@?j6?t5F#}T$-=0ZebjO{FHhHk^=bTGnVd~eijt2H zuxV9xR(h-Yh2f4Ra+$RGYH*a3ho!B@rR9;BO(QoP*OXMs7b>M5Z8=Nu?V=|{!7L6I zi?XQBAf7m!0L@`gUm^BLOhxcbKt-DDT^gS0A058f+uQpO1RXPwQcRsM*@|im1hl$= z!{_nmY8L|xc{$Sse?=J)44EJbpv>pBf?`p=i0)P9E6oqk#EcN+!`C`Q(uRW&+*BJTZR{86;OS}6x1hq8 zi=I7JTqlVttvbRkl3EY{7iNGV!!Yht!S4#|C8mfZP1cTfw*L|zGGkN%rn(IIM*Yg8 z7)7%_1_U$g&I88hCzJmByhVAjMFlI*c?m=T#lTyp*?m;r*RLLweC3N1KSMFeWbxFA z)nWWI40iu#tckLp#Wjrf(hJpch?Te%X&R-BuV|Oii19HQe;IXi*%CIcJw`ADHzxiv z*ApRMGA*;Nc$NWr5|**tWU(e@SuF^&ip7z^C%5V+iLf9xL5dhKJ*RW$HaVRL`xB1k z(;oHrkpQ-+vT`D=t4bIzf{b4Z+y0W;|N70%yajf@5vOgVQ4aN za6=kee;!1f>(V+}3B(tG@?}U<$6J0ON!R|*UkFkJQ8Y`WYbTlX2BfKc!GaBla@tWP z{t1fb&^-X0VnGu5Hqv48v(-xDYFLlPnN}W1#}UR2szM{=OVc1(CUK#Hj5e}Q#@xbD zZ}^^={9R>9Dry@dm`HJg1LV~`ss(A3=JLh`HEt^C71acn8Xphhm%{?6ir*{MxQ>;S#m;&)#FTt zRS#ie1Z)Bw>G*e{b;B0vjtcA%)tVgU!(|@D;14+$_LTr|Rg)J9c! zHmOscTW3mQv3uzelt(=+|6_m2g;LA%beCduEqI}In4G0TdTasB*R4#-XSw}R=|%IZ zyw0b2eL2BQV8cBBQl9pIgn_cxAYQya8jwTaGP6Wt`U}E?>=4)j8Nk$dCA0A|W-DbQ z95V$hZXhQf0ZeVE(UGyP@ij|(aEoR$Po+t=dDenco?sY{RoKPn-*Vf%6(5Wzo2}77Q!z(yDN!1B|PuV2`lLiqR{w ziqMJPhFW2;#fU$|n;hn7rxgsXN3cY4ViPr(wN`+^h`M&z&?@kkt43+NYWjPFFd_dx|Dtcxq*U zP?FCIGxGVAnTJq~{Fbj_mHEu%D*>f@kj4H=%4HV@P{sT5d^%qSEdPXQbsx|)lwdGl zE223JT}TY6W45^L{u&oYqr}LMI};QiSf$LY!tji%8(CnJ1~3#TeazK59>Pm3%F-PK z%TO~3FDaudT5Jl@SFiAqgT$xOvtm)<#QF}byO~uS1{nKE(Cw2SplxOtgVxienFLWGh1s<0`*#3;;;(QrX_3z9Aq%oM2(o$j2kqr zS~iITYC%KrU1}*4;A6cumK!k5USaqMO;MVotdJ69wfYPV!|51VERrkEIPB~mJv;37 zK5reR&MG?Bgm~*b)m8w4XDrV-vAiB5>V6MEAFoa)h1)Aks2XS~%PX!(CQgckR9f;Y zQfZU=sKD+8*a|>dKE5cc+mfg36GOx2nIH8FELip)?+1efc+4FU+k`^~A=B-~efTHn zWUxu|gLO0XD-habRuwCX3Xm8*pnaOc|D!wyYL<6oz!045Ezf{=Souy~Y0Hwyv0Q$}3jK{Eu4H%iHtuAK^;8+18qXJ(ikB zSzNnk$g$AL@0?l33YsM(&j}3$Y4V0-D+OEnh_8(~p~zrRH9p!1*Jw@a50^B32r#Mj z^!?*moWmyZw8P7jSiEpV-L~I*7nd7YCS=HRQp!3|H_*8#1=XuNtuK6k_&k3q3oyv_j+ex+nj1&3%>5i4`<}5#hn_E3+&DI{C4AeUZld zAE9}ysv*}9)q-ykRvGA-T1Lh~M6n9~Vp{3|c;MSFc1#mxDIZ{1t>$&Uaj7PQ8k2&R zxP%;yDTTWz=p~C_`#c%EG-+4iB{&wyC0u&ldsf`Es}KJvK8+90_|bAO&vBor zXgoZVA)#Q9-6ms2yb4}QGT-s5HC%5Ef(y&_15PxOL&2U>;^2VH9&D)0>cCD7|5v5I^QG1YKJP?vkE8*R*ygN zbL>+Anm zk0P%S0Zo%zFz+)}3D;<~5h&CLDXHD4msa>ezGYZ8NO8gpYa<#Pb!ymQ{=!nuN&-Bc zv@YGJ2$IwG$_x325zhI;ll%%`PaJF;VsWup3wz`A7BzzP6Ubjg9TG3G4Q@|h))1;P z6h4U7<=zVw<8NFqW@T%5%ny;#$Z9kMS*;b}zcLsI4a>)i1&F?(VKo*>TxWOx`^o$$h70njBUP=^^`}p^JoiJ#K3#cKw;gpVuvi&?u6SK5*pc%R zDAG86noy?tX3JO!OIIGkbf+*sfyNGlm0Af5wS5T$J4yp9<0ceH z9V_|6=Pm7Ep12g{xllQyjAeOBmGYTa{$}sRbEyIlN3q&)zki{**7_YOsB%FBDgnD@;bp?IE>LqV`Jq>nu#Y(5xqy(%sqY(( z3c{IOco;$Re_n&Mv$u+K8y77k7+{uv4)l?k$Ode29e!M)>Bp~u_JVzbh3&ySf44s@3LGopZ5=5 z!ssKqXH_W0vg@im=cqdQE&%a;t3XLTRr0!(Z3M~hkbW8NrGGv<_IY-MqDzA96vO5JLvl*z}4FcbUc zM9`nf^aQ8h0)Xi)XSGKz@2P=0D~xX zk|%J|!2G#Id!XnZ>eRB+jT)3?RJur4KBei}f?fM_FO!wvm`N}0Q`R9CR|49eNr2Kl z0QKblMg4Xk5_vlR%)Cs=B2{RdCePw|$eA}o%ZjgH?IBS?3k%6cK`AY+XG51#wvb(+ zUxkEaMf?v!m@O`YV`59)K~RlS3A(y?+;HXof*%XOw8N~{y}>Wy{yP#=ywh=**&F8g z=SxSNtcg0jzY6(ES!2`a>1cF9BgEEw{D^~0I@!c5;wBwQ=NkK=L5-r6l&_$k0+MdW zQFY7$fg2h)yi8^nb9sF+-Aj++%j=m;o-(Rt7m_I_^_OLIKjqbro_}(GeQ%_V)AYoI zdI1Ie#LQpJW-Vy+4D8~1$gmm!TPRk~3;DX!@u0Q$tE*3-K_0KLxL%Ba2V{O=bZPo6 zGb}U#7j8XLVH9S7qc2CYk^Uw@AEY&w9B;H7vfMFHbbLpb|r+R&&^6(sX zD^h(0d}X4hTv(bSt+a2T@&hY+jZq^T+)ClN2yb+dOA!Xus*aO;-}ZjW2{SV4CQ%|*UD42q!%SPr)+i#PH{U0$z>MG z`_GmKge9A_`*N+30@XWvFON&bS**XmJ(DR1oc-Ype}Dj+@qC?WtGQjvF#T%>4Zq33 zF|W6oGFpR+7DtI>%?9>lVG=H>K&b3kj$Rm|!ypaTJEqlW9o zutn8SvS3TI3IIY;zGUqI(>^T0I{*cfQ(d|Oaw4m2J-MTgN*rj->e%?tSIbnaoDS^z-AgU;5|7{yYW{u$L# zR!?UI{ZFV3DabUy#b^kcEXc6iJK} zr9CFjvo(yzhIN(i?1DlG2W4l;IH?=6APR9h=R(2{N42f;m7T5l5;WfGPMXsBV=Zza z!Ojce&);8ZvtZ+zOvS?%=gKoXy1hl2uE51NYxE^sKeksNke#IET(+s1FGz%r|! z{FiRP5EZfpEI^`h7yVO*tNs!Uy0!|6@}!l(GA&PKL&$p-Cqv*i_0=F=Hzb{~tL zo-0oG)$MikgBt$%%Q8ypv5*`l2|q7Ql&Sy>te7~VjtACeNo28Ek*1GA{rT=#FBVZk zwakZ@t(@5jyu`NcXQXN+Y?MJ8HW*qNDte@Ft;ls{n)~Ac*tGtKoO!uG{z|k8Yca@> z_@JOx^}VhQ4-8;@Y&aS+c|i+j$@fkjr}7*H0HFqUsyG7%*VduxPDS!xHTsSe5Jd=l zd9NKR4?Q!<=c%9FNB2-xe(g4rp+pH4L)~^CyRpw@Wq2lw7Z~jR0{Ao#@cO7dtA1uik0)`qD+sY*nMj}5TNz^8S=Lmq=Ss5mHA_dRmr55Uy*ai5;yjTu2>+#dko)?}c;IZ>PuZzhss z8q2cLbm|FxsQ6CHc@s0emOX;U0d*@_noayx9*@r1vG+bae^S1{#-}9FkpE9 z1g=$%cw2szqva{fOYSSr$)_|A7>X6_w8)@4k)gPU%1GwY2T`6YV_BY4vBmOUiZ@_c z7Jtrm(X^1(5vwy{D3Mv&+JjoH4QMK&q5iD+TFM>Tc&jvG*mlnYKC?O$tKOv*E4UYW z&kEZR++e1jNLhutVQiL*rxG3;V0QOg{Hlgs{+``ppK7_T$XA;1$cPve7#Ic%EYKvLReE#*^;I*y}K6 zu5sRzfXwxJ4eBNB5Nai-CEi%tqydfZOIzMqnkbd#2bxE#4L9REUBMp8D!M7FNLOlm z$^Oylm_2wT_6l4AMoAGo==`gd!1JI}CmMvv>%ml}8^e_ao-j?bi)p=*?~E;SPbg(c zh3x*2tLgnkXUe*G4)Ih~C8{O>@w~o_e`cL)II1k)z4HOHxhs3nFXk457Ruu_$CrhX zl;I&rKI;ZRkqSXTwfYBRai^NtBwJ{)Sg@vmu<*I|K+1c)44%TuJQ}gjy>Op^#C?du z5G1dT<^6S+$+_MYMs%dasJY_{U>Ep17Ooz<*5#8?u%g2H8HB;Jx?p*7LhZzwRzue3 z>OIx;oU8nG+0>jF@_3E2_aWB}J}DLwiv~<}XBADE9IOnIrdGFNnIm4|z&CSS%*{CQE& z!JD^Tt<`*wTs$UiVZQksnTxD-U*MRqMocwoFFsi9EMg0Z324lUm}mr?^^vL?em@Yd zrlHaTWUE#7a$_)48uFrWV^QR>xCM&=KNWx-yA78+uDUK60AzJo)7ar9DZ3u(G283F zHN_v*9sc%gh0YZdOU>EXEY~vUaS<3u8j{WDl1Pa%t1n62%t2!q@ zflVqDajLqM`^x)U5pJw&UwjHcQ9qTLlqZ8xV2cXe(XF?&m9snXne*RZMxF`x0vKcl zj?BWXEbGXYAjAMC_L@`@(uQRjiFz@vnK7x^gbnaC?%_bV3i^6o_WWk2+-2mB!*MR2 z0xVqx&ckvvd4mlFw4%sB0JHEWzg{W0dFj=h%^iw(4zKZNb0eowvuBF|Hk)Ji{5lsm z`76NXHA(F~7(<}8)KrsDSz{Yv3|AFcV&V=h&0eYrs|&Ovf?iuxOkXBnR!zGW(Krcz zU8cG%(*R6h2>Rs1dz|Iq*_Mde@>*Sn#l}>Q6?XFTKlrEK{N307;c)QIy;^h?Z2o{CTaPiLyfWH5hjX_N9|m!2}J zluVICb84TYqvf(iKCM=;v`=f9`-8D97^|I+W_vqLIm47#2#(Jlir5M>K? z=tG2p30bOx<+Z(uLcpt5aI-_4VDC#-O3va&mB$`1@wVkB-r~9H$&~7s7O-Ay(cnF- zi8vOnJDYHOEcQW{3jtQ{W_nevwlF}(Zpi7La8cslXYI6cW}O$@5U1w|&BZUQifo{` zJjWnI|D@ZjY=|Y5O%#}~fCw>Qw=@J2_8?;OrlA&+fxIK7u@0$qai0U$2?PY-%Ify4 zw8Pq_j{RqH*1a0nYOP^?ZS6*XckjEBodXvOWI~7lP;ImPqi>G>oFlzAojE1uP7T^jk8e+OTtqhwlEruSb+_c`rUG? zFjKT{?F-Uv)4Dt^?_P0Ba0z+m?ZP}++I$C)<@dlFatxtqJAb74-CMx!;)^Q9!bvmK zOA!{X6~`;ZQ3u|OP<*0x{-HlY?z2o8e^5pZN!qaF%<@e>@1d)-mh#H-QXVg%y`WJl zKB}|GBY#7bBWBv_d!u34Vz|=qq)mAmb;M4V;zkxTaf~*IY7NaYg-zOPDN`? z=Z6YtILi)uaBdwy3+D6NLrM$ zBZ572)~H|^@9UaAmw!GnyQ0pS@~n&RcK_M$>XqEacbxxqx{CFfgkV~N?@sNYbHPzS z(l*U5LCEcDO9p875cVkZg#HvHUk%`q{a!J|-SsfBG4A<^AKu7H{`dL2&EFG-84BhR zXJ6u^(gK;UU7YaQHvpON!@k^>t8?pK&^oUjyoRhUUBEWxE7+;HYS@C*6yuQv@Y(2s zwJF*t*sL6f>?L_DT48|+H3pMGQr3PnThl&`q(yb`*kemI>X8hhO+>XNo_Yl#4Bdcj zV%)_a``3T-y?^@u{`>fr)kb%AT;<$`$c6nGk~x>3mr;w7(r~-d{aH^9913cpa(Xp> zpj;~Nsf^++!H!1Mj0&loTFsZ|wf7njyvjjD(4(qlIHT29tm*O#vAd-!1?2Nn0 zQfrMM!}Sa1IHuL>m|3-xCvUyV&Ti=J)jc`mFEUtSqB#Eow?3v6nDABZ<$cZGXVK3L zz!oL@IBf{NaEDux3yZ#QvHPmnbJaCSGl9A9c64{UuFD{q@U+HOb`ctov_@v~Y3W)N z0Z}qp@Dl{qp$nEF@36~+87`=fP%V7Sr3*mdS@V!tyIHV$Vx`}D_RLq0-rf4s>DI0b zS6Bg&^@-GBB{+2R@>=9k;1U&4@Ny41$Zro>mQ$L*Pzv|}LDy4oQJ!Rz+XOM?RW&}c zNGr+|BVk^#@Zjeo`n|dtAJN^3F*^@oL9iY}(m3@#lW3MimCs=eR z&)8d%ZIvxvS~nuEwIzFNA*u|35R1wT5bSv_R!NpIgENHu)|#Cs2lNCn!dGRy%Ppkt z^MO94@R3;LL+^Q;RFPGJ$ZYN8dR{xRl8ZXCXn?C6F6UA{2F-dtWS|u@PTt?`p{t-l z+SlPnzM^U+Px%Xx+0n~l_&$8d7Y@1IZJQ4+a z)cbgY>luu|Hy}Y(w}Z8v4bALJPC7EYG9`hj>1h`>$wH)Vz_O4HmJtGlGVxRzV+pH# zs&&?>V~;(KHFm0Mvo!uxsIYj97Qp7Ub;z3b2Exnm-H-}M zvHVg3d^sXbVGvO;(nh>)qx<^0^#S<%D`9#r3)k+~euo+Fhz5k_>C<1`{L=TngOM5g zDVjr#t<}N?1WA(nD5GW34%t16jdR@yscB-~7@48Qw=NGi?`%&fPbp-V)N7U^ElTrL$P3{{ ztqMw|a@e1Iy(kDJwJIr^DGxlh@)-r=XcWq*oTrXuUJ;n`Ird-wU6vay1XbSQbN|kl z|0l6f(NR$zQaZL)QGHQ=lkC-wGO8NU(hr;h`{Qs)?TtOlOj?B( ztJuqeptbU!bcJbE`*;-WIwie~55(Vax6D+*(A90s71VfeZX;j23qJ?G)m;SrjW&Kp zd|=C`MXJO4nP;;>XNNWKtC@ECNbwm=>WoaX&*6Zj&9$3Vt;+Z{pL#dxYDqt~t-`{} zvYXmKy}D9iJ4B2K9egjaXt1QY*j(`Z7r*QMH-F{)Ydbe?{#$yv>;SWM%zmL~*F5#2 zZ`3_KVMd@At6%AKwm}NoH(Aly_JRtA;lP3u$LP8VTW^p%26` zQ8B0$*wmMW7L>6j7!JP&3{NB5%F54h+W^5HpO#EA7?N3@w`!~jHRf|(wmurAC}tS0 z+0qU3L}~-vcW=qS>ch=Tmw5T>_P>lPk5{i1XIIJ?JF2Na1YnB`nxXCW*MFX-y5ufl zAL+PzoRZ&P&W~$$KIAD!1xbWNw16KKz<48vbeqaxj0uvIs5tVOG|ITrXYD@PiBE$C{OtTN*>NO|Q-*&IcQ>0wI2 z)F28E%<7ZN-_|AB!!B|8df;yP*!#>C7Oh9ybCosicY~Kw8&a=zM3KiZtI}W^qLq(W zKS)@hHXQaOysISnVJ{|25JP_L4bON|#%9$l?@e=}RZ4zRZtaAjv!z;N^!cCu$-ny5 zzy9C;O@>KMT1AI_hD`WEp95s9;3L*$nx6rI+t^Xer;w8Xlm~-vloCLO8S<9-RIWU? zJh~Zi(o%Jt45&*BHN+9kIdDY+NL>53f1ge6p|V9_L}TZBfBMh;mD+NB6tVXxxtaEf zW-U(&K0;haSRxFnvr-!~;TS-n5Ft0wRJ0o`Qh;p9DF7w2j|r&3=6~?vaaT4n2p-F3 zRsay&r?43oA2%g;#yhB4W7cfNgMy{aXT#Lz&npPCX@!+yV!oP7o4J?*YznOsYHn)L zzZSUH5cD+YG+A-_)TEl}gZNggkI_J66AM3Z+u=Fa!IsC8|Fjp{B%A#<&egJByBZF+ z5dfBluGVZ}OqDW()oYa<6@gRtNYaVi50|tWq8Tzq@j$zvvxqJ5V33!MVCgLFAR|(Y zg$&z|*7xdtWQ0U04`quw|hTDo1AwLXYf8n5t8#MrH47H-G zQ83oqH=aJmdoxc-lLrC3Q(gtyhFBYsvUoCIHiK6`@`G<4+}ZlMcYgJ2|LNp~7|+b# zM%Foj5C2JKn@+S!l@P(;C}7a9rM=1kD3B56Ktw+AJ^`(i=_cu5piDFO>mnaWbE9{6 z+~_?i9|lpYS3l4Hz@PlN&wlxb-jx5AOcJbK2*qM+dCsLeLU`Dhi1*emYomdmzW}sk znowmS#zB_S1Z0xL2qn?!(XbG(xQWon`uG+3gb@r}@)YHpy9=$bULc;Pf2!e;0rv8% zFY{opx~ajnc#hXOBIqkf*ze=0ws~$d-@l`w(+xK~le*PyHuPnz%dIjf&c^q>wQ;_5 z)X3_5rg3K!4wl<|Nr<4ktbWMyj>%vU)Ys}-n>$N8Z8llKZi5>|%qCi4cQ4FNpBS^% zavtsVwCEaJsnqjcKVi?;$4WzI(CEnw7U5)u}FJSXZXQ{!i9S^p@@G2^;~QIgIc7PGZ9U&Ur=gGF0_ zYdpddFwD1a-$t4Np|)rD4R`b6E4<)!FW_H3_V6EasZaN@!YOyz-_%?jXGrC3s?(qC z&C64>HeNZt#b!K|!L7#R20uQTE^V-53T?<&=K9Pysv+ddx{v8XW0i3gLo02qFEvIU z!yO)t~tV3G%Xc=_tD&`)Q6Nc9UVdU=!ZW;LLlE@HCNJsuBNi=-UO^pSDt) zA%C$QbJSqNWKk{}bqJRjKXb~&LU%-)mwf=Zik9Gj{AHuacQ6i|%NyyLnY3xHc>#YK z|FE+K6inaV!ul81quuB)Sjvn1VwRIw!Nv&9bEl}J=7x7~*~i?Dnh2Ih!7|3zq}>gc zR^j>WK37c`+%S)OM{Zc>i$k9o*H{GYU>`jkp?!qmP?b_kxXiAtDB!(=q!L%_S#%O% zwTGTXzf`bI(a0=~6|!9ovU?Wh+%Wu}zwqz<+UnV7-+$xp{lhCPnQnsrz54#XUOpcAV@;VX^23k=jwZw$=0VYwZSaoLBg;aH`$Jl?fP(( zMxupmlVNZ$G6^GURI>gq)TgnQ)jRw6MvrX-MfY7j*T}k1M*GlD_N|kpIo8nQB{y$F zy<{RQW$JaOJo~d-PkH|@RrV@>*POem^DFvU92NlV{)|`L6?>R#?i#Jj!1qIf9-;KURocSHWw??X$g1*c7P_He|ABfyY&iku`8eL|EO2oi1XE2UASNE|CnIit=PyM-T&wtOwZMk{L&c!dRjv7&9Kok>-q1XTmjt3={P>(IS zQfC{JLC!uFP%oCCMpuzE71g3_&~N2%O~8Xo4(%wnbot-84rYm^w*g}lD?Pq@>#OEe zI6|1I!&0}zWaa|4uNyD;n1^=tHLMd?@~d-Y@4t8?fT_K$Q8~Ws@Mt7>Sxl_)6q_6zZoOAnE4Pz@3H}xri|9nUcQK!J)h0ZE zoP|3$3`$%;al{vbmXeFWGUl7U8v(L0M%6m;<{s7N&G~$*j63#jqqVOL-40Z?Hc!XR z_iOt$PY&SKyB1y-S0cz7<$jI7?U_BguPJhIkhofe`vImz4}mhzhaPXb3siUs7amFc z3NP@-*Y9ozHal4R+TVCf32t=i<*d5b4wKvcV0p8N?RXsQvPrzs>g-@RIJwS%K3XQu zimt&r$XZvFRYe;sxLGshh2}$hSQ48;P2a(o%|dtkNsu&a<4gmZN3bSY*kI3cDGqDP zbVLtbo<;4JDoM4rl>Li;^{4;NJHPQ;|JT?5*T4T0-R+$(@xFF{J;TQmAfwGwC;!QJ z{@Jhm51T*mT^~rAOCwAUDbyJODz2fPNMq!DAeM-k5QE-0!qyd!5a6}ngmzXN##yTQ zjeKd?;`7GJhz}2KTP``fJLYfiK7~6IUc+$**0|Ni6`!1|m}kvu-*UC}0nXHnH$uJG zPm*1&C2x%ooBiga%fxxsDCgx%q_sanlZbN6hx-9GpZ@Tx>oduhbpgLC!m>LLt5lFX z^}9iRV}O;IsY3+KI^qCZz;pq7t2b*|$8E7o7{*tGSfl{FCRWje;E{ZhiS{z00n#Bt zzjz5-n#xegXaHX}?qaYI?LejtK(KIYAH`5x*x@hCFcLnb9R#Ylf>VDN!vrP(cE|Yi z_kGX%FMQwk{+Dn5<6r+@-u&f%^p(!td#_OQ)78>L6y!4}f9=ATf9Mx3{L8N}aE*K> zT?BbcUJ-Gvg#`lE%J2_s++(4a&<noCkR$hFW>D>Js2Wu-7qRIi)ib$G9X5sk4}TClx^nQ)3XrKltH8O zq|7L64)Y-q8`B~YPejpi1}!Qu;1&4*?J2>219JZjx=oC z$v!h-v{J#W$|}`}BfJNe2FM>aGsQt1FjWP?-tX@%{nr2XOJCZ%_07wJqodC~HrN1F zeP!kAC(eKR`k(l>zw&Dv=Qh}(F~=Az7bAvv&89yT$c-3_4!dJ^}ctHzImygdw{(*5sgf; zr`v7(5gAMnn1%vQ4`q?l+#l`iI@vFmEb{v&nh0tyL>5+wma@gHGMNEIqgKWkU-tnJ z%xQV^S-!WUpx^Fe5IoEW-AD#yqg!UWz^k>|(DbW)Ok<1^4VMwzlc2JK7R6S7P(J4F z9x>)tX9#5&VF^Rb!)^x4)D0kUG9=N>T6Y;>p?5O%jf!XqIvSf=u=c`w_e=lDPyPxU z9Q;b}s8{*M-~T@@?%n+6XZwc-=kU{dE**|G@-$n*_e&lupfu`(`(9kD?jq~F+gM$@ zbK=6MfA=##@{hZOa%9^!h?xD@~vq2N0Vx0 zWvTKma=1)~E4&9AWRfq@2pJwG6?s4)VYsbc~mRDcM4o{`|;oT49CT8G5jN$AYf3v~&<0Wx-t85pSuglD#0pLtO^x# zjNFV)oMs@r9W1dqX1rPr6Lw=A1iN9K{k_xX3Xar_MD|B)k62K$bxC+(fZ;Hzuo)Zs zvcdZ3IlvP_2LYIYE@ij2tchcCkK_ubhg5C{Y`enVciQ(TX48UkM+8G69mGL`9e)+r z4Zi(QLhpvk2$oShyaw*AOPJ!+9y549R# zl1TGUBYGS;QLi3X6;0+C4;X#K-wSZvMXQ%5*~ZyR+5g|(x$d@cWO=-r5=oIFb+Iiw z_Bf7U$ic3I0cJ3t0xS@Hod?MCSbm;7z7a`8BYg9T(k z{j!8m2`MAY_`G6+-$xdg5!!h3SV^ua^G_BmN__zO&hHb-^W&dghpYT?-2;1kIZW;k zu=nb~wdZaL`9X8Tq$E|A+wPz(9@pec=AjWY2BO5fz(occUD0ARXck>8%2Brj)C2a+ zVow_VVe{=nUWBxaSa?ON=0Xi9yhszbtRQ{@+h4NiJd0}q3*dADy@hiDmT6TMZbK2- zTzXJusX+)|(iHo_Q@VOti$t3PFe< z^c}7v;sWAHYjym&V2E-XxkFsGjRAHf^RzL2140j_{whlSGn+HtB9Cvj^kY2((~sJ~ za?~r7`EOPu`{>cOcdYWPbe6DU&*=mfTQ9L++q|!kj_gX&(sdPZl@_1P`fbkELa8Kt zgzs>Hxg-{DFgDNaC2sE(gmX1LmLK|ch4+61ClhhiVdYQLg@nNf>5}X1fl$|Ka)6kN z2WzM_s?MXCV-AQeS;d0yxnw>}{FjhKg7uXSFa%iJ8rM+0Pc$vVfuR>ItS*kl*vcM@ z7L;*-kC;N8s7I|s0tN-2fe>xhAH|z#8iT^m)1x6S9wI|4;vGV{0!1}l26<#0ZHk*m zZ--kY>B2k_rvwQy+zigfA@nI7F>nuM0FH|OB&QPfZN?&$%bkYZ}nt7 zE-#KMf+9pjSkqwq5SK#Zo+BXtGc7|{Nny)?U1d-R}xr~El94~7tipuDp+}&RD=i5Xb}h?w8U6QDWVb zUddheivJw>VTT!wdR6!jYfP>J#GclfSpYF5j;2*=`uKjEEOLqguyAw&a84lSG5U3d z#R=q4Tx481{a6^##Nyzfi=qdiaX+>&m-c0pG)vU-UuyxWT?y2UH6!41%J_{dX$mEh zz!aNnmhv3jQ-n3t3aZrG$m>299z?dh+Ca7Ixf4K8bNkQ^3}ddbQFXu%;KSh)8+OW! z6>6eyy_ASeho5_eetze`xYrOX93Te*J#Z(>h(*p`*<-!VE1i*yKPmNm;%*tmUa`=N zOd8gLu*@a&uOD6Gi_cQUeBA<;*dDVS#kwN)`OxxP(?nzZ@S^0io_@nieE%uB9%}9e z77L-(ST5f8rJtRr3Zubesk~3r1->&SR9B#{AyWwX)H}iX4J)6kq9`ludcW(+%e)XE z4V%vvZYKYwW5A`j#RzcnL<33i-wk?r<9hSv(=(1Dz!K#@1scG<1J=-=*L!TRiJ$}i z9HVy_gU`$>`Jd{FeTb~Z@MDS+&cPtzk>Cc#IHspu!$DL%2u)&8zQlRfBs}Jx(ncLI zDfoc^L2)}c&m3@!_br|q z;~5FM*azib*}?Z%+GEvdM8gw42WtE4O;CEc)M1sE!ej$S^`yIVNCZpAonCL?(1jQ~ zuzR=>(H5ibzq>#e_%7FBLmbyXAh<#bJ4iku#U?gKRdf!;7Fpf#|V7%I=I^a zQ6s&vuccTtYqg$?7M&t#d6vl)G>V)|%DnnX@&K`eJ_sr8Ggc9}LGfFp#$rw5X^nH0 zAglpcU-=LsqzxfG8bCZFV(aHj!N%e9Vnpa0RwBMdxqm!D5B5*{)fxmkl6pY|3Or9@ zQJhPB(zS>k-a}=-EAF)m_gYT7aIR%EU2(3a`)A5K$gF%1s{R0|+D5tGcJ|sfi=2zj z4({a{ShVd_nWrh7D>l9t4whRV@iJ%kO^D0_6KOI&##bpzr^16|y0G2ZM#l=Eh zcaaw*kQN6rz47;93}9#i)GD;We1P~dQ=(X={&hqB0A0)abBwG&{GdaH(}+{)uTriK zPvEG7iiYB0NuDaaxeGyb?2nO)#;J6_7TEBb$rn}@hm|YKgxkQXiHw-T`D0k8I9Ez! zDo}*1MW7n6ty?3vFV^+i>De`x2!nQ4xPxUxqn>Wgx$N1EZ9F6qtKKGJA|5+!e?AA} zgY*aSRmW^NOO(Z1z!qP9`@s4|U2N<^@%}^1SmVCp%Kpar?iqsYS;Y>EVK&pw+8|+h zCIU5IC(XSkj%WD5U1F5rNIf8oZmEtRlJR@#zg?r&aNUy%i2VZUd^Z^$v$SAcGief? zu>v=FJt%1r$p#-K_VEUUxvAkg8=pJ}V`qSf=- z(ZkTYu=K`$QY`3{K4~f?>;+k#T8j~+&xaV5#d|b@&vY!D4d7UsfeUO7G~O|yU3%7B zci%n;g*gvzpaNpV67et^z9h_>s0caiDC zOYg$IPGzarMprFT!gDUb)Nr>A_eJIo%Dj7KIet$MzVslGEMg)Y6Qi3$v9RM+o|DdR zjR%^tA80Ms#Xac$)`M8^84=p9V{D}RCNylyPifbB{pd+@^b-Np_nh0M6Sk8yn{C(GsgwpMIr4w{vIm5L zFS1S$4_H~PhR5x+Em$MDx`MF52vEKLbb&z+vroyW1)~50#8n=i3uP^onw70*z6rkY z65yxAUTlz_rC=Jlw-h(8dg+1`z1V|aO5|xgsF01}f3+Ka2{t(#XzEvJ7%jXc)1>h5!XzWVUt z3$52-K79}Nbw7;(4N)#eW)gdi?Zta0xlf_Pn>bjZ>*cb#QRg=8Ai0r>e#-GPwJ25z zPyF1_7Wkse|!w` zk0(GgBG#7~t_3h#XH*R&Bg<>9x{!7tJVFK;!Gyn$5Fim%6@^;5n�W@{#owAr9Sy}Y%6AE1_c~a9G;LeB@vt%7@BuhN;?GCUqT2IOev5R1WVz*{I(^; zeFrNM^W}uVqneMQw_w3trdX&Sx@ru$0mbSb?1PHc)5;$jhR|DFy>Ko;5xXdmBom9E zsfzLHUC>dTt2A)0cbqOpU{d02;ssqjJp6bg4g zJh8OI6m`eR!ZC10vj<0m|H%7ZqGIdZXPg6L`YOh8=KxLKa3uY7AE@h{|5F zumFNt!Ki@fG_qVtL`PA>2S~oovbKRjl%(x*cIeENu1cscA-Go)T4wC_XQaIZMdF(~b9CH1AqwL#DKkZ@fZ0KMG;*~jqK2t?800WW5uY7eAT)pu%zq|h z1FRi(ykmaIU|s+-lx*BP=ujdyqZr+sgroMBPS_TSjCWf|lCyILDPRrmA8;;+j3mgE z_vo`%I}ZlHLxK{krJZBw@y>)+3QjPtzV z62330#H=KR-?u%mokd*0z?2Mx-Lxz}?Qz18T_-N4nxl#hYC|czCp?z+XNkaA1~R&Z zokykaD`rSsTVv)KmH@fRgFWn&`sicjKQ+^nr=1dk7-&gX=)Z(R=s6Gsutp-Nph3Bl z3>!>$Cq1pcC=V}FNp|rZ5DElAD&CB>fI#mdEMsC`H`9F$Yk6MfHzgZIO(%&$sp9(2 zzzf6bWa(;tE^#iockEopC&bKG(`p?q4P(~0MQF=uYRmZ)HyQ-CNX(ZE#4-bA`hN$= zSsJ9LOQ`q3x2TZk7o2PXj4^_!!WyN}XM`orMG~0$1MI75@q1Kk<8R#b&{C8->UTli z%l`&{z|1WV`NGNfJ%_;J6@6&+16L%l%puO@+Rev_pfUcF{^EZA+b?1O&ixe{llD(C z<)3LeyDwfP?&eKIkk*$0jmAmdT=V(UJt0}`q`wNX_0$^xb+CC>|40^ajq`*_D8?tR z{P}NuX2Fay3KrpLfcdWbGa*9ZQy*eu>Ihf&6&CDh6&KssU<kV5kMGbEnIL3F{nYP_40gaW>>SkX*go;|Ww(S#glp}ghXO)_*IQc~i&9)m2t@UU z4<6JQ8^v`s*Z*mKL|~u0zXmodt|ij4oolwgv_2k^_)fKB;W!ThT7NEa$N_SJbQuvD zPMC!2o;`oOp{;OXn^){RMO%;x4)OQ{5tr81_`)ytq@T%yvAPX}ooO~VH6^D)cQn&z zInfBEwk?K4E56HX?sMw*linQ&ZGS#l1rzEm9Rh320lJIWj*^8XkDU#Um<^mzAm%7e zPmkeXyQj(g+MS_Up>Q`1nbWP-HKhSE6}P&-cZhLjf@osW3K|;Uc_O8Zq}iN@$9yU{ z?T5z3Y`) z?b($g-!qX|1%@!HL3NGOU5c=j1Vv<~Vvve98Xw8%)A#H+nWry(|5@@sIx9|O&TpOQ zoNH>64R0);I@+?xFLO_X9{ zC`{Y4JSHH9`-No07Ynvu3?=cRJc)?BQwt77xN>Z%-MH$hjThVIpLmvuL#)Ah5G)n@ zjC9XjJT1iG5+OEA#MqOn*Is1jipabV7L>HVO&bUB7k!J-EoTUQAgrj+>wKnnDZZZn zYxjX9m|W26(df4 z0q_C?V1<}Xx5H<90~SUy4tK?i50xt`9@cQHOHM=OR&U=M3f|~Fg{u*%F*uwLchK)CZ_)+aWgDU;bw5O(_JDmpf!hnrDWkh>`z~olP2EAN=xqc%ELHHty$SR_;8rNxsLY=8#DW%IDX zwN$B1tL18)b{eB1Of>!=C?e=uPDG^?)I3O-cb1=nZ*#xp`G z!W-(T)Zj(;(An%9(4BjF)o88X=DYwG1`)6|;_e5aaGI9(FLNqySS7=cxN4^R6}B*J-=8 zooK>8GewMnbzGw-SVIZQDx@6eDpY>JED!isrt{oLoO(<8n9>8=TE@7Tir>aMLavR# zV%gzZ@;H@28TVEH6+#ESthJN;as9vG9?$H&$Ik?3z`5qIHnm`q|Bnj^OA~t20FzT& z;Z(igREW$gSG;IdSym_pyt1~-^*2>`jwkx-9l!x6lL&~FVvQMDTb|QG6e1pJs!ro!ugc&tp} z*L?3OV<{N{!{q3?^L767;MI>Ad)To234x3%)^7IG&d#d@Xsa;l@w%&StfuXk8ZPHk zAKw7;2Jm;q^`Dq=kgjG-1APl3sZg#EVH*y~cgtj7!>zI!u@kC9SbNOD0g;tWH>@GD zeVfE+gL@FC(wwMv0N!?UPHW;_BP@wSA@d!l;ry-zhv%<0z@NCWk-Cllw!>_ItR5Rb z{g%x@C<5CKZQqAIgJr{D=}=+2tzuzjK6^}OfBVd1#v6V;fsLQ4AWLBl$qHD&4!S_z{3uI_U6X=zbufhu_2;^qC`|ATYV!uo9#$g z+XY45dQEP!=kKpQ+5C>n8Hv7=^PUG?6fU4&7Qxs;HDUY#GqXxBKZ~OCOT*3nk{u#~ zi;)>}0SMMGwnmS2>*cr6DA4Gv?hExPq)enr#Ck))R5`jxycT+%o6U$vy@DTA*>RDl z8lN;(xJ^JLi!hr!xg};5QVVf-gAWNj%Locl2oi6Nre+Z&7?gO`<+|21MLwL8r!Eln z%|9yicuU1TUQPS=&%ugUdk^`>7rX$7OBSbIh}(dQNaAeXgeQL+#h9^~MrfLx_?9(J zY$VsBp%9x;vd*NnP_sMH0{5}xO^&=V)`yzsVGnTPSCjo3qWLjY0yo41e+;aN-}ZY> zZzkrq`E?iMWV!D$UgSZ{jB&Hw?LutXX6!NnYXrZhyZ=?}U_@sHe4L%uvt(Tb+bH8x zG!m@jX)`v#?ZnmIoc#P7Q~Ev2>m>3D?8zEhY;CIWF{M2mQ}7>J4P2`Tn4aNS;jnRi z>!Gg=yV*g5;b0ej?mOUI@r?5^^D*x=B(4Dcdyv+2w8w?pmUe9BW}z<6>P334me;i* zy3f|X9trxe+7{b&AXLNI$WJmOs-~u>bA?6|d9A!>bA3I77V=t%t5`Ub4~kZ9iqfN9 z5QS$B_$Vs^$-bw1djo`#T{Rd0TgJe0E~fUgkOmf&hR1DYM_cC0ALQ3WKg(4#tM@QR z&ec>YacYg)WFp8r*<+Q6FY9xOjPR)_@cdyY=t`k7x^k>8a4F?8{mL57!VRH15LnQ& zR2j0lW&SXBb?1Ypv0M0=e#eLWZqr*m#7o}7#I2wI8>ZoA@p_TicGnP@o3Zwrm|>q) z7V5A>?wKC=kxh?JI`9~d)tnOG#9%( z^o6kdEyQ8*Zesp-AtK|=#=RGrv9uX8L3C!tLS|Ap7MiAH$GFUt_IF>kefE@8MK6bM z+&$apcTnTM><@XP7Zsb~o{XbqQZvhBcO1D|?iGkl0p^h}G3GW_i08Y+ zK5!--QB=&&oMAh!$%&~T{?vR%1gbKyDP@%?zL{hBu71mFe}{^E@ywI?-z5i|{1NAs z^A|V0mnX0SMZ|7zOJq7#@pJ?c&b)`sc(MP#`w!2-{Im4e&D60hbN-VaGX{!XXK=R6 z*IDeVeBNMV1tyzS-ker>fx7LpeZ~oFf6qaavFCVKhcBn z;(IGSoOxywc@tb}X6G{v6R+?$;8JI9sZdcWE*xNm~Pe)zw2~2zv7d-0Y z=~m!s@uoiN4?5oDIr|x}WXdl+=OiCZ(~Mv9(cIs!y^#wDkq literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_light_red_nor.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_light_red_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..8732508ded7261236438ffe030e147faafff694a GIT binary patch literal 26992 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�xD*W%25}gzr#`#%1xUW*K}B~9CSh%Vrxp5 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 XNHRpgG5jl!00000NkvXXu0mjfdHZ4M literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_line_panel_bg_1.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_line_panel_bg_1.png new file mode 100755 index 0000000000000000000000000000000000000000..09a9c252da51647d30e132692c9ef316a26011cf GIT binary patch literal 47988 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 literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_line_task_arrow.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_line_task_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..b32f0693a6bd437f6e1c5e6039e9f9ef092dcaa3 GIT binary patch literal 491 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 literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_no_line_icon.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_no_line_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..fc20dca73c6966b7a0ef7a1fe7d41b167fe900d1 GIT binary patch literal 13534 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 Uh9g@3`?p9^RPJZBuwKCb09^Nox&QzG literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_och_dot_line.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_och_dot_line.png new file mode 100644 index 0000000000000000000000000000000000000000..a720a532eafc22cd6f4393f745e5f4b91c336aa1 GIT binary patch literal 1004 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR911fT-|1ONa40RR91h5!Hn01iqW@BjbN!306SHf(|+Z1t8&w$Y+T_ zh|kB}y|=r=?Cdkx2)cuj?!CR)dAr{?-|Q@c*sr%cGoxBFch-+=bo6Ux9(cGXE6v~P zFo6&-P64QcQA|8&45tX02?4-452SHGNHUTKtHUHOWG19f+BmiR-eT5wTvl`AeJS8m zcdza*gKK7`{ZEm4#$N>YY?=9I71FeAF*KB*TQCrSg>ID(2?zwn zW5#~GB)+y7}mlLJZ? zVP$=B>KZbBEn06fVee~j#_LydXBKaq@$7SJXeHqQ(=v!P0;=y2%5zA{ZAYOIqGVDo z*eb%rd>9~G6)uJF6oHKm@bC7|$2QjeJ4;JRj^*W`gO#FxE^a~d^AFUaaHAs=F3ci< zDwj^p)}(@>kg>fi)mT+$a_X~sxFBmRh=3X55;=D-Z@0VK1I9MS4l})2ygz4aUdjdD z**AZ_$O7`|Vkn?9xBp$C8+M*N$ye9>At(xHHhVAa+S;JO4v$H1gU!wM+a0>tnm{kC z5$LJLV4yU2$=MQY@{19+(eL3X$qI#Uq%((P90$M{F?JqbTo5n(@qBs!#Ssc}5+-II zQfaUbfeuJxJBYrhksAulic9W9XqbpgCFM5aC?6qKT;=aZ>XtDkTJ9#XlR{tP)dR83X6`#)BWnnaBrq=p?wB$>`g@t$- zd;`Nvi#(BU!gN{h^OfHw*C{Vy-zW>GL#Y2AH&kHKufecU4CFC&2hlJ&ws85+uin%~ a0X_f)vOJgpwguZQWT^}fKU=Tgx))Z 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 (OBl~=OZ_XT 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 z vY+UqEWf6?XokE!in44Dn!hLt#oo=O>nT+zhOQi5B`(8o1Qg)w8(AAxCav2?F$ z1&IC*@cniekBT-vVj~ed^dxI!aym570&=o(RH%m?3kRk6&U^wtct+j+$vVwpa=`S{@+P#k0i6>u;Kz)6}#!>z{vu~SD=J55>_JUzZ8(WHprHxQ zFT-=_neHfK7FRDQNQCwto5IOZwfRr7)LrxwrnMXnsOq!oT{9@ zCYA9|54|Yuix2SL?BDd6`><&xy+RzqL4m`0nnt|0tF@9o!TTM5PO!Bjs)yH}yM_}t zECx>1y4N3yqKl**gkt^L8_-SC3WJOnt>aNgLkiAW;KA{RnKzbQRzBEh`^n;$m#8X& zi5-o}$&Gf4zH$5Uvo6jH^~s@w7Fa++bF8`($A`2AWsXeZGC$`WC2g#O@ynqidkHf6 zae$bml6euYd*f+SUj zXFqWw)^nem%p2s*C?z{ks#ohh>6M-Rvd#D9cOpzD!pS9-rpTC-a|Iq8v8T5mBc3w& z_Vjr7dSt}h=Qe`yp%LG&CuAig8E>Dkp|wDdCpA|eFsEL9uW;P%Im- zjIx|>FJS$5nbl5z=OAXReX8c%LFEhWVO-CFYc!IEUqAF7sQ`koD_`KXFenpZhTLVTTMQTvc|7Dzg)K%U9=nsybWQlYfVgKTWn}?pYzt<*ssby8UA#_O(X-mMG3`t8oFw=Bo|G~r z6+76rObDq*XmRjdKJsYx7gayD(s~Mbhf`K$iS}Xi9J(|GFakK$=Cr1U|!0^ z^-twp9?R_Bj{lY3vG6HlX(?a4eQz1>^fb+0vd#ay%sW_dU!!0D>ONzAWux5n@uX1T z&dYk+jwixon7ug{ViR-dyRu?9HC9+**rcy67|qd=*Y0rLOP47#*;ID!9W4A-{(4a2 zA?9!YZ>o^{n*>NA7nfP~ZUM!%3{R85%kJG&^dSMjSplvTdkYXYBMt#Th=>5i9M#0i ziV&;8;>;bHIltW)wfJ@OBuCc?8>eq#Pj17xyJsDU3i0ZC|FvBtFLvD6ipqKgPGUB3 zt8*xgY7pX<^{!37ij_YO<7DRM~hXIC{OlRd#Et$TooSO(7|eqmZYP% z$!Ec+H@2c9Z|mt$4r|>(6yEl~++-aQDdty{4B}60JvUN}YfnlA^@`?dKm#-aBp9#9 zg-5z1Kkp6Be%y4Oq}S$E?_q&fQtnsvgxS_~Odo2^W&~CikH`PB=i3%t@@AjD0vFBn zYsL=d@Hq9DrR6DDn}#1#;-J!`l^r)ft*xFI%0xWkG_a1fNV~k`Lo-|lU&UVhnr6!oP6z{Da5~x zP`%^)DecKht$`%f-Vma`o-0 zmSXK!CLO%fvwnx$isjmy&6xI%vMY`-zLwmvOWHc^xiT*Yt6Y=E+nr@TWh-tIBHpP9 zHq#YojGl2+13^RAHANDdWB3gBS$POm7l7^Q4+?TP5=0Hnzxe1aYxUG66|9x!Q|ffV z0MU7^vXzKO?6`t>Ub6#hb4Rx)NM@>AcE10HPukI#PtDQ!cV*x#pnTk6u z{i7mANb14JEKmK_Wx}hh-B-urADGa3QTt z;!kH;KKq_$lU8d@rws$kS2W^rlGUwWQ@Sc?H~LLv%ure#Cm?T&@$LI>;_z15p39oQ zg3nAIbR7s=XM^?`O5Ldq`331bO%$-*hi`u2txZhqpf;iIGq)<1F;DyW?mu(=fH~m5 zmC;@J+dUh~Ggam;D?(-T&u+NVd&VlcsHVhqWJ>6ubv->lX!~mKHOIq3j1a3ZWJwaf zX41?0oOFH>3NPMmQ-TBqecJN>lDL*7BP#Uu_te3qo${(IF<6q<-f>Gx&zLlU|5I9e z(H-JiQ*Lndy{tP^6%zfB{*tc1LQ6CuuM8!~#5U7#O6X2g1sl!V%8`_&^g3|JsA_Ll zG7oszTNd&D%EJlw z06;cDfuEh(ySBWOV6W<{<>jp{BKfWEpJ)r&zUd1DL7nM^(BPEQh&NC5m3azydJ|7% zv6b6Q)d9AU{h0~hiR&j}-6zMd9JX6!`%fDxTZ9>|_Sdn5OeDzHW!UGuxn)?3UN7-# zAXslI&q_W+rSx(|$(hAwO$5t|c(|+?`kWAp1SE>e;-d;Go_)z_I>XhE&+(A=JxsB6Tp@)AO3)^C&G<@6 zxFc)1LTzrHejW_F(qXaQ*3Te~3b&3x{l*+TdyPW@@DWcgQK zAQFVzd#U#xoBJR&Qj_v*l(+m9rvODA-2D5x(pAM^?eAEfLyooIx={-nu7c_fA8PMb zveyA*71B^wW=z!bD!3GW2FhGxg}1Kk89CF3_70CDfj*Yx?7g};Yc zL|I~2d#qi)vPBo^O%0atdDnD9fbk>Dq(SnDcr-XOP9lh@=@?&J>%lUCx{j??RI8}H z!TE@Jr9Xf1wf`&VUj(rS}7{as^G?X=fUrH=cxv~D|N8{gy0vwVaUc3Qn= z(GXr3(=tx(5ZEnKnjzUx zy9~WShlE?9F52B*(srcTikql2yyA(hJ|iTek>%t>?77>>Z%{$BKR$Tda(3 z{3BnNVb(ejJDFwCZAha#`Ch`*ePAV;3Oo?Ti`20Wz2>DVQGRlsjJEptlw_rn$HiC_cLrBBRy}8b=w3JCqhE49Q63H@GN~ zxg`*K*X;4%5z36`jCRY9g29g@^yMDI(*^EBt7#3_e~YZvq`;1CG6pL}*o()B70-T} zBPw$oWxRI^Rm!in=o>4_Q{U{rqaL+UCmzd1+_!mr>;GWfOO<3%qYZ#d(OYk>yWjex z-#IPg!0@ANl1*C!?MH~&yA ziI*>5^iGObJBlaG`QB3&wiByeDy8r`8(}9rT1nb8Fe^??18g5 ztU1^GL7JzzGFL`lEonS~gd8v6Fi-|JDu&FQPa#g^?&~t}{J?$Zb^T;YOu*==4wOaQ zuhc-Sd1%d-o^KQ^@w?qDs%gr;9wDWoO8j?6_f_Zmr`l(4#KT^$ted|2d2mF)S->oI z1aw7ggiRY~n7xwUt+X_&EsC!(hjRPG{N3^q_DCp_b}iNme))Sa7I-$8uUpk0ouZHg ze~K)rCkhM-!ecL~@%>Wzp|wyUV_FuN#{71hO|_B$>RojJmW5EWi==`6DESJ?zQKy8 z2B;ef5M;gvXC+Ciw33=phGl#{tZ(l-C=&(<9Divb;ULi^4!3}VvD{09bA;;UOZHvd zb^N@5GN!Jn2~$QDo34shCA@J zF0w3}aMe1)d4QW~IDnVOeXy1?`}lsfMqM$1_p}5Y0C7GR-~i4p%8s;_+LfP(FK>EA z^DK4OP<)Z1v)*`xOZijkkRigLGYvw1nc)ey)0t!BLY33ks|XrMWIGN&`g%}hg+kJk zQrweh>h2i%8;9?iNEzJoJB=G&7{Yv^dl8+>j(X`;HT4(ua{Xl?A@w_uVc^vM*WddE z^Eqi~2Wt=7-3h=d?}vN%7}-~x?cF@5x6@=3ks;fPUhss>G4PyFK_jq8?+uCTy?F); zEh4Qf)x0|v1<6p2Y7j8@i=wofmOF=3kjStS38PvZeN_uzo8m$tfFCZ>MQFv4xv>qxExsds zjE860M6As9xFLmQTzkv6qCMeK1U@0C_Us#{8p8o(Zfcw@GP{~7WP7#L!}N^U*?xdV z2}8??V0D!K*Fo2N;(}?I#r+-+cf(|q6Sz!=>!}lS_|3i5=fKbc=LlngxxxZkB(C&X zHJLpulCAq`x+eEG&3(kHzDw=n`GXsj( z>z7R#lO$yZ3Lh8xaTE5`Jm&7sB51VpF0a#Mm=_d1YfWlAlY%qY!ya!t_(3zr!Po(D zY-v80ZTV*^By-V^VShx~tqeEa@P{3MVf|LC=K?0!(sLkY7LKC^&?RY^5*`2%9u&9|m zyvo>yc--#@%RV;_Agh`$6=Z%R$wo`RKcgbBcm!_wVDF6EPdFHG@!DS=a%2rpjg%>5 zbPif%fDefYkO;>oglohl*zr>tDJNY#Joc%2ggSk3ZRl`b3%aY=xa?3uzCwgq_ z5%TizOEU!X!OW++dB~&d^2dF6jV&*Kf3w#SN&IJV{40<}M+@~m+^_0c;Mo|SbdLwb z(v}gCwzOUEE=_3;3GXBIL|*4o9fc}*ej$@dmGU1ib6FbM^TZ&P71*3m^Y+k4Hjxzw zBjHEjbp5Q;+nNuZL|?QyC`(div1;3@l8-Vg2bTtNv#!pc4jL~(*nBZSNgaG!^qXKk z@#-p3r*pE9loB~~^1m2XQ)*^e4_A?KwhdGE-obbMK2qxl;Xf^7x$Tb>9^GI!+tiBi z!O{wm`(}T?OCbC;BrY17UT_I{4$Tv6;fGU zt`@&OM-oUXO6#>fnot^)4mEFmox~IWCgO=zcX98`!XgtFW)i;wBN@!R*FNWTejGBO zXifgnr?RXBA>%yI3!1Xzz($6?-qYGQ0LcAsHKi@>ib#9`nk%|+_#A7)B?gpkRcFxO z`pi{oXJ#W9vunPKzqQ=*u~1KUrVBn61gi(PV(}BU{`?Lz%2sJJ9wk!h@_$Tv z99iVsc>eZaM7Q~dTa^wEf#~$m3H7aP;MG{i)~?{kr>k@UaAvqw0B z+@|zC^H0rZ-d|(vN1j-UWw~w7tMqb=iSw?uTITwU-;Fuh%Y1q3 zXV*0|C(8@I!ekPFHxCFm!9th48s!?OJ>+DbB|ySU5b!&>E1oSeFPcq|KCg*u)8%}v zXCQzs)HU+2H|YbMlj)xJP z_8s&I=})4{a__b%NI)xmpG(T&MT8;CTj+}%m$ZD2UH84X9(^|=(SL46zzTVY`V}TD z4lccy0y6I)X93SqU~i7{8j)Z7!)>3HPS`#mxIu!y+#~LNMRVeOP^2&CHFOkCP8?+y z`g_UA0o2Q+Bw!hEe9jm6F~N|<;fcVmB2HUvN<9tw5zbkvF4iWK8>-i0#YO*sN}&zD zumqao%*6u0k01<0wcPk%Izlh?*B7(# z?B7Wf`S*Rivr1W=cca%ThV7R%>czh(m#|YXO`p$0&$x3 z1K#Jc>>{oiU|MspPn`dg*tb9Jc&26Wqy8yDdEn(UOBasW=XsVxBg-0w9TGNtBgJgh zh8+S^&L1MVW5?e;XRwpRk8QlTIt^sy5+|#{NXi<;d&79#4x||JVad{MKx=51is*dE z9)UOI9LnmbFr&rlB35W&WU%DIpyr@dwexyd#XR76 zC6A-eFpFy=ZSiAx{b2-=cvJwp#^~pbV-Ym8Zm7MYp7iwBg$dpWEk_z^66sY)Td*o zCPt}W9vk4J2$<$On-QA6Fsg@%CglfqVZf@yd10=5BNH+dE&CcTg52~bg=nK@_;C61wdirB8!-X~CKS`MzrA#mD{YoP7CNNC&>cdpT$n@*-7 z3;M#s9sTWVx;%Ta$jOGlHa^VZ&r1)=q1=s0t|z&xIt zh@MtJHz8p?y>egoUr%#iFJ@ESk{)&Bq|{_%T|f4?`Tbc*kuy4RUs)CRf*s~ipw}5W zZdXex#L<*@(RED&D83rG&^&1izxYN00$mhu)fVk?-*i6{YYJ^sr(}A647Ca`+ze`6 zV`yPfMfoJL{3^7SykGm%HZ4!B=#`zaGc5x*nu-8z!)}VO_hry(8`C7nDy58N*lrEL zM-fF7p0}NkXTlGB4B~KGGcKi#OAAY#4dow1j*2ulN~Yb+D{zCkQw*CG7|Lm)M`TXN zI{R@t_Zwc59(4wR78CH|vCkpRqWHmak&R!|BO6`pFV!us1qf@ogb&>S7)lObR3VQ< zm0+S?KfDSjS&3;j2T9ohH)9DxmB*gT6_70FKe-ahn#5=<3XM~I24;Cm+;>24?FM*x z-aMLBR}Vw|5W1!m>~OmgW^i&%z>FkKy`ENu=BBfHFf>!AXi6hkUvWl6i!6EZid zJNQdj>s^K_q(J|c*6|+0S-ZpBKkUEUkGLcmUKCU(wA%QOMUnZ1cc88QB7hz6lv5QX z2;tQ-?XaS=^@ELHa6+K$n=fB=Xs%z{1F;bXCA7lCPx~c_->+McKF@q}P}N7Y`S{*r zLH)6U(z(YfOgSi_FpGZ2!~Zr&j)^+4M*hPj68#>NHkt59;c-vy^LIU{e4E`UV(w)% z%?k_LuK0-=&4qeu3`}V9o4cYsW5&jDX#yLsP!|g#0mn=Rr;R&`i~C=Fg-?I!2hkxkl`rmLt+Mm z`32JjgKH!Yof4*6f253(0Zp*4_QN>aHyHlSr&I`$!PxSa!YbW!iZ#$G;9}ZJ@x$4Q zJ2YC@1A6_A7_R0h_x@+H$JKv4eraJ}MY{B8($wP%Vr9Z!o8YGf1Jbq9u)={Oi!b%V z52PC?o|7^w<&n+(gD5w>_^u09Bf3~tvJu{%Z2Pq?3<0XL+E3u? z_-VHKRHCyf-i!7F&WykA{5xAJCAQn@JrZ9;&r!5Tf|UXfps!Q_oD>DnBf03E8c2I+ zyE6hW7D{d}y6$36RdSr6(lAE;c=6t5UHR-bk5ziq^~%hj%_)W{b#rG)*W@kDF*X1o zzXAbbN@HZL)loR1_`F$8;T?rT?K>}7!HWi3PSbw7f8GJS+Z=kdX%FRFyQpR zc#DOiSc1NfmV}6odw<9uz`Psqo!>VAcHhE6dpJTy_dmIn!d?*D>66pLHn>>n5n3(lK#usg`kpsu|@YKk=b#@rj z(5I)9JVa!)hF`=FM(Ayju?{O)4-f4Q>)(1m&1-jRO{9z z+;LsSHcErIbm7wBZJ0Br)!4OJf&7C%9tv&T8DCq*IZ~TmvVVk=$jG4yA-UUI7<#O+ z6h|JWlZ58ec)@^2)50qH@AF?V8|z`;VZ17ZeQTz?%g3s@{zKZ6*}~*pSc;Zd1#qw8 zO?cyFTYO2w*`uBbqzoIA^QAI0=~~HI01JXVUWA5gTj@k_Rjs0gKJ?m^v?~i<2zh=uZOE8g_I8`%rYK+DFwH=CSD|9U~vP@_kBS?Bb|0Z%mS{DUNUA)7~IA z0Km2J-@gC`8DLtcy|G;vUsj!CGMsF&s&k;s!8gEHDO?l35SW}6d@KKpp_0JUwA-uX zp7XjJe0ilch;qlNY$F-XX$;Z-3c4Xh-c;Y&{b|>`W^Z|;PHn}kvvt=7(fp_OPq1pU z0IyoM^ch;&1%Sim5=6to5yrwdF+3YBBSeGm^kMiCA7*4=7rWZo3XITE@9S)JO|uJo z=GzI_yhuHWkWWIgtg_%3mL1uPtXMXN@fNoDG%t=JDCoyyjD@akn=1^_uxepX7yv_4 zVvLENl?faX!^jP2VP4a1@`f?E@Y}!t<$t_<{OCc}1zJsjtdrd81;S>Q&R$;Uo31;T z-Lbp7eB3|k6en6&>l}ju%Ba#J$*jdj+De;gJ8Y;ei$n-^4cmpyJ-3kp`b6K9j+Vg1 zXZp^TvSL?#Y`^6YyY_XqQV!HD`VLEM|3JN(frWbYFCmcmF3TtPC#!b{Uo-4+wpvWa zJVE2-+2h%8e2aIqlt!bg(ReXh%qM)5hDhF=A8s0R@x^?G<*ugF zz4WJMFbBt+7DUIOY@3H2Iti@ZberjxY*1RyH%DMEHc3W8pMU)8zy8ZN?!WiJ>+ih# zPbgIW_L4x`uA{(k*;D^G{-XZL^7P-Ylr@UGTzvJ}C%<{{>Bk>Nv#(Y)_#f*QtT{NN zq;d!rxy8dRDX<;^YD}UphzR8N2)8YZuH{$^^o-H3ZUbE=5iZ7)=|a|-%n`~H=ISv{ zG#saP9n7jK?G3OGj)xM!1i8N{bfSk_IJWfDvhOMvRl#e4(Gpldpj_ChRa6Tu~t; zM6d?=>;Z>P!y%2PjgZZ7{@}CU{pPp-`IrBZ4@A^a1dXv}kT8sf>M>RvdlCQazyC(L zt&?@Ljs>h6nl+iV0VcMxgN5z*3tJYj0@{cY2v%&~_#mX4Gqq|d5PB8g;luD{_!Qdl zHL0BB!Z55DC|Kar0DdBXcLMjZYnrvjT&C6Q{vRW*bFeK{|Kb-vX&GrR%PwZ)5|#y>vDb;~F$seOu3gS2_;j{d&Zqd;30y?VO5D}?ugihj z^%!cNPml(;`QGvBWI1Fy*>E~# z} zpl)ulD%M%Kv0CBa&wumvg9rECeEa?z?|knE}A|^w!&gX|RoDhmAJ!^zHOr zt1n+kYwlZ$wU}L;KltqTzvXpozM~790#Y?Qr7oJ)U})%gV%rjdnspPbgb4wr3_F5p zqlH@W-ioaitr{RDgkwMzVAA{-pwh?KB?VA%6S&1t=Jb*&goEW|%HR2L88P}`S6bN9 zx47lk&9^S@Ma}XhfxfDT&w38@JBN%lV1NGepGQ7f*5Cg0ckC}N-XHpl%NO@2qj#?! z4`;L2hEHx?j^~%-(Vf}D(d=wInq3--U5-ztXJd3aEy!%b9tT!aX1{>j!Iap@gzqf@ zYu3P=@ev-P)d|9t_iYAKUPENPIzfLWw7h% z0s=c-wA%I4`7%RU-Og4m2X+Crmtpt0AcMPImbE~qkC^*hMvKO z&?OUNCLL*DbZfB~+p}WQ`p6g{{n8Z%gHQm?-)HWUO7lmI$95> zu8F0n?2-Qz%k0SfG%S00`Ne2#K~R=PIBrfG}*_-Jr>c{=pT`DF0spd048 z!?%@}JaH_@hvo3}bTpV>pzB#SV#Oz3bo%AYr*TjYy8IPMHX{S88Ps`3fcsP9f;mJrXyI4FKo}bOf^Q-abHjT~v7JpZZ@d*l+@hsH*mGv3d zdX`6(h;1?~jEa_}BRVB=01F53Lg!-a!n8w}Q=K{(o(M)5LPnKIWmLPUtktpVT6A$} z)|HwT?Mh?EI+(ZwCD0%2bD&^8o)tw0w*#F4QtdDrOixbF`2W`F>Dd|Ex5g(thPDdB zF)KsO{IRLcXh>m2oNdU`9T;kHb$Q7b0?#imFE035p>wt`B+$4`15zFe9xU1p+GU?2 z{#U2+RHLiR3>YaBK(%w^nzl*Sjm{Q8ES)VweM*M_ZGbe=vxB7!NM>yS8W90Qi1d&R zbIH1tnZnE>gjMNQBR`Yn2{M6i4iJ@{oQxNSv7)1OvRK}_n838RBkub7y{n}oq~Aol zYEPG^X4tjfv*@D>RL=zARBDxYLzVG zTf864A1q4O)D{s4z{0}CS2vSsaWW_aw8jw(EkGKv=`#j^xN$jw<}|**XNL^i6Qn5h zc3XA=xco)$TE-2|CW0eagLSxBG;GD+a>PU?rm>ayj%)HbMI&` zNcHMc17PHsHE_Gg06`0ra()8U3Du!hL$|6~VLXRg0j^{IN&!GdJWv*mp1*NcE)g9r z*|yQFzR40%gc82$g4LKg*W|&llLbQO^fF2ai>SH-1eb`0ji>-%RSJwxU)vfaNOoOg zC+%_kI+$Qzb{yCmI(u=uVrC%?>gk7!9mo7fG>x;()i`P$W3$fYab(0k7kbv}H_Z-4 zA-E7hYm6LE`;s+JKQ0TM6?)4at?W^nH`X!-fBfo#X<*>e<2aIidb_LvpaFA_HEC{p zjdBhk@R-+(ynrT#GIf63M;)j(Db^RtmnT@qEU!e2J*2G$3C^2PvjkV0zT|YI$dZG1`vS!)A2Yd^c z*zDOEqkR50H&KJfgL?yqZ3lN8@)0Uj=_nx@_jJ5wI;7|bcrmT!u&ft=^B zi1cJqsu+=g(65}xC{sKLv_UlUH2c_?c8W*~%#2NpWzT878fj2w#!)f$0b>WO6oT|A z46IxwY5-XA%^WR9UZ;$X7GsE~)~zwQ#o^Z`DiFS>kP=v*6yVTPFZ~AYxty(3CU>>0 z>APaH88xW&>|%C4GIBuZ6Ky+Vh#8m?IiQ<~te>;D8iN)&nI^i#XhYKumy;4b5RA*v zt&DF2@df&omxhcY*oi{N(r6mWBJLV%W3K2|q5;?uCv#nOuDZ3^7NpE^X!5WfplrYk zBnlWs9+=`!xzK=?tc`8fHcDHSbpb3k6qGFPv(1&f2npifG~ZcM0)Vl|8}G1jG=NJ= z3=nYK&Xth>JC05OQrgh8hjegF2P>oj;3LgRE`l>em|#Y`E*VQ@Z8RX}2-upDCt|IF zm18YfeS?6Az&y0-)R1trmd?(rb?c$1fHjxoo|aub{~Ix^H)b$l;9!Cm%cYJQ3)dotDbelNBt`62FqGEHa$mt ziB69LH~)*pbeCpTcB+5Hq-O>=1D@M)VQll?$umB0`Q@o!|_ob z@6rBwEOfKylyjN9WFc^4}+L$^7oV3;ezT{(QqhYXBDujPS*2li1J zYZ%3v!GW1bu9%}<{ujgP(H*kEg)u$%>e{t zL9lML(fFT+0I2||s5@Jrf@`Hjuxcdoze~qHk>)?m!w%3ml`FW&rG}`yVx-$zxE~P! zsuKIMDH=9dwY=gUQoy%0nCI^lsYV)bt@6TPNCV^mZwf?HPbAw1+6masX_ZlFrO>Co z;sQXiGO8eEUu6d?G%L*NN7HlIHNon7+6)fl(5s_asato2u&i>Q6fpg{0oIG}18qu! zU3%8|>@lG2)3ih!4RrDW1lDjd%@}KRuHasvw1uC zXc?xm=YZ%iKn%OmLCX$SM+O`MYsOoBLG`RNS3rx@QlMs5k6j0>=D)Uv^#)zgdLb7J zmY{WCc`!fyRXYl1eD?IwlZek6IdCLwaCNpAoGb>&g8@v-S#)`6@I%w`x~X8A|`UXyVl&@v_tz^@!E@4u1`8f8q6=>9OkSp zBL|B&?hu48GrM-lgJ4=3GPsg2BRdCt!kYIRu(S~bKR}ABI7$o8dW&s?WdUL<6WE4@ zDSt=-oXNVdDceO70AS!jKEZ3B4R9Mr;~5F|jk*IRbC=$p*jw8}$khv1S?`7nP*m9O zC!MvoDQk+~NCK+t!^xHGY=tC%LIc!X0WBbl3g}=*qX30DY5q-@UAI{^BHnZulmdX2 zNPsU7mf=<<0ozVh=5aj+tWLZc~B#0;iFY$t+ z(6OdV&OjnC3xJgjLQaqZYOtma+2H>@OMp^Vl~n|zm+(qnpaCe@jBPH{fHd;a;>Tnb z*ig_WP-#;dpwf)cy1=Lo(*_9HW{r-G=H7KH0Ss-&oB+}q(2j|-60MDa9H1O=R-*yg zDeh|4mjzbMdu>Uu$0u>933Y|@a)L|_-8!g{lVl8cT|W3?GK07)(wWV^}hAAn3=z0qBv&il+z9<22Vw1F{GUBp>7`qcSJf(2bG+ zei5LJ3;=6@&~R38CeML#LES1?1E>x;C<>Gg0Zy(ffH^4cOcr(lT(>&F1(+;8AFe58 z(5S`Z7B=senv0`byrp18zp}wi;7OUagtgSUFfNZ9YxD|JhN6x}Ow_bW9b|wVDjBz# zaIGFf5|lI=eBQ&NM24*pu*|G7RK=WDrwJxljkEgJK$#!FoFqmnvx9XESfiT!lgyg? z&tly%?)5IYc2YSnrGa}n+1u^96K3S#kUVg*%zAKvAp)ZYOqFrMOhypUwWLT*N(I@p zVO#cPQ^8gu2~Cr4#6T$ka)3oh0-Ve?vH(;k>%w^=E98NQ1q`&==8$5gN3jJbS}`^p zW|KE#cMGf~m1`8Rk`rakwmm8qt_&EB3;;KQ$~O2Fv77;Mifubug-w+VAqNDpfDA@8 zJ4{MPOP~jO% zEw7QwHv+5|*#+8s2P`{b`#{?lJxI_BR_D^LmM8QI0Ij29GC))drn5mBSC8|8MS;EGQ@;XK8QA?8z2cb_qykrPA_d^ukOX8#%UWxj zf6|-g-;Z1<11LGqGH6R;`)YQ5@LT5_I8A6N}tbvsyH&1zM$la=iHEWzsa zzcFCF$g>3Pa(+3?Vcg{%el*AFi4NnQI5A+YYo|-b4VrlE7TXF=T*$w;#(#BN6T)I$ zzzCoLY%prFuE30z-jg{7M!5N?pAU6Q@ zR|SJojlFWi04dFS!=^GWp*VZ|p$KZA3ds0MByhII6u)$=1aF5`efuLNfO^%>xff;y z$b9%BrwRILp;ra0ns>jE_c@?*?0JLM0fxo=0$p1qg3P;%ZE?NB0syiHxE>>2_N8@~ z`{;ndk%CtW4Dc#X?Rbk@hKPfG1#2i-j=Al*C9Rmk$QY>s>XPEW0IPsBI{c=(iNur#g0jd3(s-p+T`J&P&;m*>Ss0aVnKgiF zS`)5vP)s?{ey9(CmLF6RsAUpM>Q%oZki)Gxf)zhY)Dyb09*1N=)RjuO{-(@DvM{XRUaqUmpd>b~(+KYMAX%7>%OVYNcLSvA4x6u~+YU|n7nuv(U93Ro}rG@$i7 zUm36G9^|Vw4&|nKub4EKsFK~Kx(>S z<-(lESxQ%a^u#r#E=@nRtAT2#%6D9R!-I)O*D4nT zs32~^+Z+qMS_4=)K;{<27LNTA&UIauZrz)RKyy@J(waBTBa9m0bU&p6n}AQ&1<;f% zeoDwDzX7So^8?XD>KJS#vP!;a`uS9ljG92r=HCc_6Rx{jwaco`xY{QHtVF&*_%gui z{aZu3^DLLHyu3&r zY-_l|e96F;bKT)$ljG{xNcNuqal6-o)070I+il0oZ2&5RMsqHR0i|CEs6py)wi)|Ht7X_>U=KZ;S}pI-I&i)2>s=knYE>rIXYt$A}2xZAZvaK8)Oj3n48I|STYXXslx zXR1PVZnEx)>}w~DMdpokfGZ$n-vVI42{1_u7A8Fbn?MafdyySW{2V*STHp#u*)rI( zVb_oW0F?9qWdl^1)XU1A{s^_7wOq3)`*fz_r-l5rmWEMx0d-dd!0Xo|SMJvm!2KM( za{Fa~)%(5>zV}aWp&h^}VY@0Hn3tZ1Lew!MX<{dVj`vn>RT3DBtZPlkC83eD} zypT}X6!wk%`2Gfgr3S=acMW9s3d_2+e<|$hy8sE?1g8M>b+TADENXM_ehpGzeznJ+ zZ0ekLWCRRKJJD!V%g|+1fm%2J=J~d;s%6dPg#y-_J`HF+FWJ`ZTHCsxGNB9HTH|)* zg5WK~y?)7umm(|XRW|VU=x_tT-Uz_PssVCr$6MrXSvTjaY%hW?Qw62lEihw8h9#{6 zs9zhhxi??YrC#Hl?p^r>bwS!?Q?HR4HJkoJK=qu|s&4O!0(k6Yv8wmZrPsiD@OiBd zf!6!hQ3Ut9kp$DO1Kf<^#(53v%C>6VWZohh)&O<_R5Eaa*z*&}ZU-B?apWQ>&6>}%OT(DrXbsSk z=lUS^Jii*~x^DX2mr-5!b*fB%6|}15=v#UX+?VlrrS*ZJazhdCrmxW`y0j}FhisKeOP2Mav?QSMG-OgrS2914KG&@i3XZ%zqb$=h5 zdi+@f)oVVl_^Q`FW_js=%|iA8w+5~Gl5rEXrtOmo9``*m*82+Fz5C$YZ){186VAU*9lIy`&iWU?CHCmAay(0)a?vUxoxxWIy+NtUk9k>f7z^R z8FIOnvGb(oy}mAREl;v;&A6ruT-WN{ST}F)x}8hP2KUvxt_85`8pN?*0onaroRpK> zeQUv3r`t(#KY>}cOHki!8Pv4^js50Zt8VAg1*z$^K6O8Vnjkf;)~N3HF{PFV z%U&awEHCfhZvtFPeGGWbm$Jcamzsgy?}FGgf$X|olos`VZf8@T`>q{r%KbiYdaPzp z_XVhHoBLSvNhsI5KYgE$;5VcyI`?xFlF`cU#;g$RdjdcXvBH z@AaPZ{r!IQbk9uBTvJnBcimOpGhttp>AlQ%ci?{OUAf7C%d*?j){?K{mEu@z`l>?i$5i}?uZm$m z2~a}bbSZ&^3I7576KNv>A*)&UX?`U4X{&y4K?q%i3F-?vZJE~^&^3)%Be4qW`5KOI zuPowTzr_=X$=pdfY`YS_8rZ5XLbSOkWgWJit;8neH;t7RsTODMHLI5v>3SV?tms}H zzGx8x9Yw>N8IJ#dH1FY2@MDa!o+JA}x8_AL(GOj#_E&grCm2OdZr{n4#~99(P|l*F zdzz&=87}2tRxBT_w6G^XF$Y}7phA|FppO^rk2A{%p1WZE>)`qk)ax9;O1;Z5S26h# zW?MaIqMkCruCCncA}u2ZS5ju%=>0S>v9BojZfs>&IWR? zrq~$S^kR_qp_1mp9!%1^J=LaYHp{#@&y&6t=58khJQ)BEwJFYpuq)~rmXT-^^1yR4 zW~q}fvpXKIi|M2DRiTLjrY!F|j6L=C+YHHc6LGBJ7|<~-+HqSUaLoTf?>Y%>w~K$L z3vjz0UmlHj=Y$h`b+{PKBPP{;0qZ?HKX(OO%-3q;1M1M6>vpEqv-WuxZt+o$O*-xZ z^IeuFvg=W<7V-4a|0JR9m`R=uAKz@XH_cq3nt>)BYqE7XvtB$-PnI8TXmcGM^w0|7 zP2SW>Ku7g_U;jJ1*^`jyu-3%fmL-t7T3~X0ehUgdG#<-X?tWjOcOmFV8IOX+G&IZN zPh2SDsAky1B$3GJ+Er7ZCLui`p{=fwi!+J&wO%vFD`z(|$0m%Lfpc%6%*8#6fLnro z%zs0mYchAP9GCWG|L2?CIdr;q3O|6fPp%4~OikrKE0#l=C>?Vcbz{JCD$uo+=F*@qUo4}C?6Bym z;)Eiz9P}|~mucC#X%E_SK~yoUb#(5S~qv?bd2QFlIQvwi*-;~#upeepZG^5uh0 zTTa}~WZ`QC@B^E)UJ;b3_o%Bda%)T5BFy6aX27Ak^_ZoYE9dXua)_WIQDq$coUKld6W++o$Iek4gMJ%gt-a@T?Xc=GtpJssggW#67P z9E5=`hH;s3NsERU0tv`iB99hsK0=4&e%5XC#1_e9j4IDueLx;~C$B7wqUYez*$M?R z2dwv3Lz||dEjaMKN?_7-7SIj?k z{+uAUQTSVYK8cMCt8{&ulXUndYC41qE{x=quO^4TrIAj@M+epKeHNW%&(1gubgrlD zYrqRdO5lp=sExt1uE?9oH@l=e*ny{@V0}Cx`KwXutsyP_p&g|0K_LaWXDZ{+Lf5+&-G~8U51*_XWJtiDrziuGFeQW&#kzTF#QYy^9*SEYi&< z=(q0d+<)7WQB;O|N6g{hx$NBnejdAH;08JgNf%@NlNXT@-gZU7Sv#-?LF&7w%b>}} zt^=w(I>mB4iXWg(&2rOjm=L-q>gXi%W%7Af86u0h%|Q|>Bf)g%_&HB8P2l0qG-quY zoLZTr`Q~Qikf6b0t*JZ>X;@k~Zn<#8WOKJIj|Jq5P^-_VsTlB(G@-Q^bwS;{ zTuqRci#w)OJ~?oSI&Lc&Dx~cr$@n=VuW*~^ECsDcKOj$D#2XBv@@m_}0EI}+Ef?bV0!PIx z8@a{uZ7>4$kK8Et5myv7M=u~;CKx}T-Wkej7PrJ{0UEx6K$H}-(2HCXJZ7dP~mmr+eagS8eQ2! z(0OF}g+Y%YO>zi|j{*9Wy}LnQ_#j9JD7K%UiiXy*y$m=p|8a^|ex3U#zLxOES*XC8 zj#m&rMc*TOGe+{t+Kz3PF~Gj@8=L*2NwV8`abbmMW37ure##1mp&Rkb1`9@UC8RHx z%$+XAJ|%F^q{b5D(%K{@nu0G6<*}Z+FckhPxoCYD!=%m$6_rehl;0YTgL;fOw`UxF zL`~yC+I>RJg(jmBHfJrGztE^unWG}c2El~g$;|D4Tjmvhm9ISSi*c99_3N+!%yIv4 z*)5MK`&SGO9T&sd{Ha7W9Zru!JxPvakZz%zOasDLE&e!j;zaF$fk*Br?_|58XSyz4 zRU6-R<0NEe`ZoI34FCZ?}TB;(Q^t zutcC*S*n7e%`+G|vZbD`Nog=ZEpjxZ=L2;l z4L%mHB7X5>o69h|a)&3$k&ZJ4dLoudM0cHAOmy=#=``xi4RFl%XKml5HyUn59~&!- zj@XK8;LD!b3KnC!j)oI_+L7P)1H8~Z)!Gt8u@K#5kW|677nIp%(MjAis z+5>v?gEcYSg(Iy0hT3JFB{ssSZugg(E|<{Sg>eWt{Cd`cHlvL3FsF)$TQ!IAOA<-~ z{>iBT*`G`5@8YWp&_2dV2+7I=5~fK3a%okEhDliVj*|e|JWWW^-4Ea#;nDsKbucng$L8s|L7;w_q?ws4bRo4fJkLe9-*1#;5Q+S%&s5B~ zeJ0j4jS5U@RZF$k(8&$|r351uz z*`xDu8wllYJYb~Jsp%3v|-b7{c@Ozw@qSWM<6Dm9hW z*@qb`xmA$1ZZm?Ri~$lKZIA(Kx4-Iq3iuDiK(nsM-EmZNH{b+nL!%@mXG2tzD0MV! zYp;?Ks^ucqJjgi;=`1oVc@|w6z^33QJ;>{``)*Jod#5RlIJ;>pD0%iZ;1xi{Midf^ z@)5|q-4&BjlmbB|TUrBUCxe#Q7J2%dvQ+6p^Mmt6H-6)!!H}r0wxWUGd4qZ7lIQWU zrakoZ^R#PC`4wrn@04IzL0*1nG)7`0CY51p zw$*$Xglu)oS2vV_WlJo`HQ<=Q9t2$1pl+XCw;k~jiEdai^GM_A%$Iahh#Q|RLSiWULvB8tvV01SJ`UlCqHl0Rs3 zf23c|&QgpUmwbh4Ne?z*PdQlFhyF6+BO!tdGlCe0C^jNK!M|Azfvi!v(b%PSH7?*8 zfXPKy+;!jy1e||C1$W#i)lGI8+A!@juH9*vgO6a?Xe$YVAfvpHWg6{RpLVDqx?t}) z$D;=y#Ahe(ci6Y;I*6_kY>ntpqjWrzMv<_jEB>tTt}sBgG(11GO#DA1 zyirg#K-fQA+RXe93t%M(8~!$moU9ZZ0xUEIg0i3)mLwG~Q7VoN9t;Ew^O{7pm)(!1 zHztqT+uClHtdMDAI!GO_U98>yw0ojMzp62@o-BjU+}X2XIkv6jW#bP>+>k3nKHrDL z>XVG5L-0|Hz1`!#`XeQMpH<1!^8J_YlYsZX{bZZJp>B4(D2=EceWed?meX!(@1_0` zhh2{6_W}}{NmC9NXwx=ubsEMFwCF;|Y}10J=~He(6X(^&oBW!!)60ee_7e&%>NVl~ z%fojEY@QDt0&sogx2I-bR=J&7>Z|8e+xpVX|%BFZbd^=l3(`ta(+Y^Kt5rS4zqq^ep zg0!a*r2@(i#g;~C2z(2}5oD95M$zz(NP#0x!Vg-eJ;zHqYdA=O@_tNb(-bbP({

}!btX&(K2;CCz|yWO*n$b%67A-Dk>DQBi02D6JCI`IQ#(bQ=rpPZSK|O* z7C6KVsVQW{h>S8VRMoWODRjto;dZ2Ct6?K52?e73`Sn%aa<&8KSTUtqVhbM`9Fy?6{5#g_cQPEBNin)cW+|s z*s@W?V^zC6-FE|fx$Sm?%iF9%*P@_kO=2DZnVXovp^F~zf57tL*Ko+fffqTrv0b=FbnEYF7iHx1rSL>c5jX{pptEbr`1)j9^ zUdL)S^R5ks_e=d*^(ZAwZex9%Wm6^DaXamnh_mR{6k=>vH=tnr-+gCM4KCB64r9@t zR}g`K57Z}=z4$8jAy{j4JN6-^1DJ%{+P0@Sq2^QXj#3OgvESr~t)v@{a{PL6M&pGQ%SOqEMXq-H z4XKB{WvK^*x@|K9-IvB=ogbLS`|5B^bInTw5DqN4*HR@q`#^2Bmu)9uz~XGG&Qj-4 z-iWh=2X`}Y#FJY>(}hi~Ud2`%GNjZzXX+)Y6`F4nBz?iC1g#{~){$EDG}}-1I97tz znd4*Z+PF53-7-Jx9C2YOxm3}gn(o!N%)tz=?b@Wu-asH(Vva|?Ms3efQ}S9HxGZ9h zm>M~Rx>64(@0wX(3~Mrv%x%0+GemEgrNHOLm}&{MfRbz1ve$&f-(_7FUM)YIEBiS+ zt+mb&L4UJ!YFOU_e@knS=hCPQ6zKnaH)%>!Ya0Z%ayM4;-MQy-2=fVAv6hs$>-M_= z`o*j3H+UT^KhDpTKWsi-*_Z}tKr7!ZjK2pKQV((X&!(;=3klvp`hy#Sd%=YJ_K^l9 ztU}zv`X8}698DG zI~SVaSnlNd6#q1hap?Q6K&q5b!2d@oje<&^yqxfV=w^Hb=I7RHk0 z!NK(Sy&bpSB7{=N_aO0Zrv2J#x#9NcY2#>ei&(4Pe9nKf!@h?%jvB;oJzJJzNV4Db z)<^Ff?KuZDlYJIL)8GYHAM&?HAJJ)Lhd@eIJiHfV#;%bt@($@J1j21Lu65Iy^i*fB zZxR2!{d$vi&Vt6Oq^AZbY?`PnRP#u;(+gqHQL|-2;Qpr|T%eq_nqxua<5W{H_K@rVGl> zp*bVK-&DBwWDeUMvJ1I@T>n&Ctp-6o3yz~M_e%hqii+MQ=2Jhd8>Q{z+0z*tlm5d$ zY^q3r@%~GDKL57eyN@VC&}g(|K@I?8WZl~~-QQ+OfnXFZ=ulhtw{b_QC?v~kiwtqfx<5RkHzs9Dq z&92I8z=ngEuXKN{>HF-?AJE=qNj7>vF)hcdxIllBFxuk-iJ)&JI^2eZltJ}eF&{2S zp$r7%C%AW$t7c+95td6OY?Gh!F`hEL&)B#mFP`p?^vPQ<2PNDWlXSmv0?;dR=nK$l z3_`Ily^<1QdN+g?40LaBx@-;7*Iu&qzM_bU$8}qXlR;u>W!hy^30j$^&8>W1aMu`- zsC#|^SM^&$lHHdx4;g}`(Ar>I51;z|IV#D$#so3c{naQSwn&Y3(pZaN%hSA5&fb+i z#bUdk$?!y2H6RIvth%3EP zI(+Q+JNr8$bu&pTXVC{s$RMF=Lbcjs`sfK596BO^bTGBTj670=9wbXQs#~1NZ65^L z^?Uioezoh_WL>+pUta7z?W(trQsa)10N#-rH0L#=?+b8o)4~FT;n? zXufcO=w`JEYE^fnq`FAxC2(YC^1MG#dE1DWW*$Wz3)dr)2hHis#Z~2*0VYF#? z$A;yGU08aq=%(gzbC>6vwMeO(c5l;@bNNiHUx73xw9?)9vFN`!f25c$dyZ(HeVWA7 z(M>SXLQ7chI`zuz|M~<^rf6t?@iE+f$V?c!#D$7cKAn=d{HZ(Z;rcW%tHEWD_NiQ- zV#zDxipGO-Zqh{dc*{D3@^CS+a=0R59kA7$q}L=x#P4AA~Fzd-ms`9?SU}=j?n8Y}u(jk(Ht#7z8g2$MhTBVQV`)SP=w|~iEmxFYQ zyrixDAIMpXW67&jLI!z_!>x@jjY(8DQ=x|N4~&de9iho_zBt+ge%n_@&dK&N@+*a_8CJ_=7U<%&O;X}g?GjCWU!fQGz2>fuyY96R42W=+Wqs4w;CD%6$t>E6 zBuR4s`|l!h0*H&WybdzJB}fGN!Q>W$kcs_``wuwq!(P=|CqAW{kk>`bQzLELU0Bu) zee`|e<4w|X=7*6?A>Z5~EUZgHv_05-dPjg3-H&2iH?XuXK&XpHEKw&UykzN(Egc%iSGQPnW=n&0}Y;2Cv z$RI?Df}>L$ewd+H=`%B1%eO!OtKM0}4Jv^=fbGqFs@KerY|P-)-zz)$xW2PfdYCvj zow3<5;zhetrt9^V#@<^D9H@|j8Va$&VD8W=&m}W~>#^%=Myo zn9J*k=ED&=FE_=~U8U3mVXV{Xl+?|#Z$v5A*lCr|&?@x-;P9H4@XXw{60>DjymC|& z>LhhtBQ=aN9tB!e!*yeCK;of5eIF= z0=Eiotc9j|ZmRuQ$3JMeLo{sfjQwkkzUGlvlxw1~J%CCSoep2&gj#A8 zG!iM+O_KWUa`_3uwVDY5a{W6BByV~%0?I*QOR+C7S+7Vga0&fTRZan`5`rl>Uo|x(1Hn!huMvjm%^bPVvR2tz> z4}Afoq7Lhg8uD!NTsrWXmMOjy>}NLK7$lx!ku@n)Of2P9LzG(3kyt0rHbhz+L-1*G z#Yrkc=WEfdEY%}y!2Z+!dcUZ^sev}>BZJK>RN)bnDCwFT-KtbAo8w{1D982_Q$A`z zD~MMR>fsbWGHFGqCAx6MK32M;HZMBWIvwf=0OR3&H^T3<{BirAM3$#0YGH-SaqSr9 zdzl2=7{oXca~z(oR2T3VHq*(foS-1=Kfg6}pQz3?I9XqEtDsf$m4b5*EajoFyY|E> zd0$wd|493^8*^w{pw2QvP10MVcO02#)Pz6(_fw?L93wlg13ndba7k>+v-w-C|F4LH zI&%@gk#{m_mnEe(Jd=h4HL@k2#GGT$_6MRz+N=2O^{{)P0RF)?FV zfW^bRGuY6>OWFQGfA#<;B`M%&Fi2EzBHN+{qzAOWG4_98frl? zn@Pggi_hcoL&QVt>La`^(x##HU5lf2?5-3TsP~IcQDp_ow9pJyxVTd`&>E|vvaf6< zISJ#~8DOU7!3uSH4uoxc_kjQ)t3Yp^5fZb5N zUVWj^aUa~iC2(Z4@Gn%-WpDcFmdiUpFpN0lZuthT0#2GDE!;gwC{Jh&vwe8e__>gb%*| zhQRMY#qY4|YWeBr>XKR&!oq)#s+C_KK>QvvVcc_IYMjVCMOo_X{Kl$H)^iiw)`kQ6 z+kGwTaVtR8K>>rAkR6_B>vJQ*Clyj3jTRo1eIHxP9|okZ4Ekb!8Yxn1uK^KcPJl?9 zgkavVYKlyu4{C$##-zMdA&L(?>uj{@8oOic9->oj8(xUrv2xb?9oiJ;d;9u zC1o&Kw9X`Q=$UTBeQ4tSDmeI~U|2+_yA1dr;rN!qs%@fUtZQ6uL7)L3IsomLTF&J_ zCEmO10WsCeW1HQwj{1a1wN7%`)M1kWlU>du@ntRB7Ix}T(!^_b>>p8Er42&D+D_r& zOs67!yHNmJEX5b0BIAJBF3$a0S0-hh#s>zeCkI#j+gl<6dYGCy@o?)(@xrad=qpZN zeRL0;dJh~k&ny_(ACLI5<&Y8NOwxsdRp%+j_;4C2grlHJ?$#iUrk}wHHf<(OLWZk< z!zcB0ayU<<-VZO?ka-Os!gm^S>Sh|0{$JxG=E!0ZGwCN1xh8E!AJj@Iu*ilH6Ey;c zU_UaZs=^ApHBPAvxp(A&X<;#^Qn!D%I+G>+xP&n6E!FiY_7n45Gmd%daP5S*ngK>& zAPp?*l$+O;EvB(zcYSV(C1&a7TVaD|tv)sTq27f&T5GXtChLm5V4%EQb&}K_sZ?8r zZq{Xhj5N!A_FVESEim_d{zdkmb4alVNGFKM*++ByXE|E(&L+Mff3B(lom7jip(QGqEg{VZXB;wW^h^A)v*rkD zu&=;JHTeyP3?G-*eZO{8sGz>A?NU~1D2`4iLr?`upZiMd0u7GRsQ^@ya);~z$2V(f zbn%K=5c#gZ+PN#*E?P-l zRv#@dG`LLjL|1-T`(4w?PiNF$*w2_bzcRYcocUfYg#E){noI06tr=o!~%jZAtivm%S=aCf0wUcra*1*I1=t4L-d2=cNBF*ww^L`XGFy zOKl+6C~u(94LYcoISHOEb4czX)onNi)qv_ja|Jq$xB3rLSx?-31|l!zEe~9m?_Pbp z9WZ>3EQQy0h9-i-VAIXOZOp+xL&EJi80FRz*8_H1kBUb(3=`dyOC{|iNiN0@nreu@ zcZ^fm!e<}DD}czvGF&DbLE6Qe6sf1x@d_S9z*MDtHB2{1xM+X}l|})Jg7=?=vGJe( z8J$`%GpD%5DpC|f8O7XZ%@vyTjHmsr@`8>?>L8@@b$zyo?b-}~^$1pT8O9`Ga22^; z$dLkE_SR<6Vq2;PLpR6((!09}#q$N2gJT(ii~IK}v>vDT2s7K>6|wCo(_OUJ564N= zpKdGNiCxo#0LC;rR+Eg%0Uy7-nGI;{&ATD$mQaSx949l~u!{{&*xix}mU`g(N|c}P z2ADQ%*sLWUjf*|~8e7o0KaLTfi*7W)I@QH9*K@=F!rT8@Yk!+g_8D}+s0Z#5k#R2l zRL}gZ^4QgCE)*naGqbNVU)EbI3%iP7(X@SeoCqt@6|w4d4PmyaWy9t?wDgdB4L?1E za%3C->KV!-BcOTXyt_4MIv%#xCmYx%4-xmeAd({0*7zk*1iiJ7y6UX*PefoJzTogT z|JG2agV}q7nOVYi53z-Q)bYeNJVP6~2MZ5X{%G@^aIv}D7`oSliN`HVb5viw{Zw6Y zuiEy*tlN_%k$5t;qyw3 z8|}JL?&``q4lR%vw%D2Sv$efWNju_AX!f~_O!{EwtXmO_R^sn9R@3#?&H}fryMY2B zCS@zepgpvq{>xR=L@F%B^4nHG)Ycfp5&^lyk3P?yu~#0dqVP=69~x>(fUY89c-izr z&|u!7Eh$_@g+8C#%)L04&)M0w5f;=4BwahAg?rP4a>9cqDTB(GOWh1W~4cD z8e^Z-I%sO`{q5izQ~&P7m$&TCg=H9Z*Il__i)zVy=|XLetjaUm;|3T31~O@sUyNJ) z10+0hPhf8WIPJXO#4 z@(ZXm9X8ruvtj_$4CW8M0FeG)f*I#fX_ojOCK|r8{t*ZNoMUoVM=0E_k%kC~0ST%) zM!2h98J_5r52_beHyC;w4Y|7boabt5sy34#69vzzPKAZIb-*=l$=?it#2H&7{&WP* z#Ib5d`dMHrz;GHW@O1I&@w)V4htJxE*g$NSrGF~6wBoix;yc+3X7iATJgc?D%#F7Z zzMHuE1YK4Sy=VV;(rZ4JZ=jWKVm`ub9~t#e89BHTB(v@VN;fNMCY@6X@)BPWvFYEY zK=hFL#T#S`3*M%_NAXg=*x%xSRpur+B?&2ZKHoz)rxFUQsOgPNsCl=*_l9(}))17) zAH=mKvz3w~AfC5%k$W$l!aClyUQXiGf%IX^o9XN(Gnc+8+u#JnNcb0Iv4*45o`L=3Q%mZb8%22J}{Hy z@Wl_2;rq;!rtGt%$oG*93yZWdJTX_>KkNJ7=w%kXUfmj2uPv#Rs9E&*cbgQLHXB>61%?b zp@p*^?aIvCf5alz{FAfM^?H24*Dx!6haC*<17WAIe1G*Kl#Zd%^)MNc_M4NvG`6u! z=7v}Af}#*I%2JaTDj!>QSUDyy@70EkLwb)o02~7Lk?tFnkCL{Ur*EUo8$QQpT4<`# z+D-CGwQ-)M6l{#ubUMc&uG%-3_v~PrND7OuvBYwp0!K>Clu2msuPbt2t^aPrDuqPNhB=q6aYVD4IKFsDDh|e56H(>N| zdM$=(ob`;A%^S7)y)JR>y*adrunqY~Ex%LKHg=?-oX6>omel0u&&vo3+@pQIEVqc_ zeozWCrOB(R2_1qORT#aBadBi~Eie9DAh41k89@2Ja3U9$S7+N5*4k~D_6UF=ySwa* zjxTQK$A$1NBRDdNv*{O@A!59|XX~Vhoy6npG z`EB%0on$b`6JVomOw7AxOvL;Cj3lL3VLO)c|3>2hn3BS{ANaAm6<;MC#(($ z+mfps$m&?(u}e9NT^}y_@Eqd0>9BY|o_10l%XW$HcTI=FOe%Y(dnvOUiGN#sS+=*q zcp$4&x7Mk3o(Ezg1?rk>G8oP3eb3SLeKzjx3C#t^JHV@R>uTKpSSJ+e421=Bv)c26 z?Q!ZkvHk=x+710=h6xP5i8aB}PEB6BhG=^O5)z?6bX~E#b0@3sDvjOZb))mm!#bka5b6o1=_Ge%6aGQ#o1gU)>tT-THk1&N zxY>Ju5}R1#SywZW0lS5DK|PO`&^S`9)7<4cfm<1oIdq?!s#2c@Sp4}ghFL?KPxotO z>iXe!@53B*;k=$RxBJ*A-fwDyigPSo*=+wAqKXX5e?bp`Xub-0uxCKB{!alX>@8*d zYBmQdF4lcMH@$w)vbsP3}h>ieRt-1@@`o)<(?tj{##c=K($K5%>XWa~iM zyLhoU9PgTZpMPPx=&%FEmcT*KzM!V}CEsC;S(GkkBTC9u07D|^JBF~oxz;&>Cze2P ztQLa@@|=AVPtF%*$5N9}pu~%;G*@qmqqrr2jMOGtI!}n-A5q7$$E}=&53{zKzvtc1kf*SS!3Tch*zCFHRiU-W zAuP4m^(v*slAR(n>HZU}lC| zC~KA&P2Ep7{fgs%A5o9`*isWmf4^&debYp@{KoJ_iXJ~2x;Ib~$8~}m)xDXD0wvKSnq^sV`35(D#nNXK=F%lHKl{GDYB7sfY) zX7N6f#S3{EsjzoOTRh|Jukp|pDVTY~{%Ynd!JJmv^X<{J72y!R_x|^kAnVw;>g;E- znad|uWbk15hUqN*Q=H3i{-7i`d}?=wagzO55JhSK$1eo?$4C?HbE1eau!RI9ipr@` zEVf9SMv|7man{!ThPn>(Ah(g`+g7EFTKF*L{0nGOFV^@rPS%Fp8gKCRjkNcb-q2KM zO&0*N#VuTHMT-})fJODikL4UyshdsW#yV+r9h`}pxI<5O8f-NLUNND-(Nqc$J3BuK zx%zT!vs5A_pt+otD&?Q#5lN}UF@GkH!r9xk-x0cuSWaS)QuKMGfRTttWmU^=3KXwy zcuDTBEzwh&${=zaY2{d5mRo|kMR3P&tEBpO_@pV z`Y{HRRuAY3{)A1}@jJX`*RN~Kms>Rb#?+7uURka9UvxqSV!ecI?y6h3?^Tzv2p2Z_z6x0U~~#Ypy~o_(cu3nZ8fT>Z_IU%)q@Kc?L!W7SogNjGgFc=pkY zE}j3OL~5_pS6_bP0O=FURDET9hRn>TIx~GljEVc)v1U2zT3VdFPkD(ck38pNFSlr5 zZ|{DSu)J9q8@35>=mOx@@eYsG7q2C7wt&ylr{Q$|E;&G3>TE_yPBSDv zdKtTVqAQ*T`1n2ZhpF(x`rp3V4bpdc9kdXBTF&cj*=4+dzmJ2YKE*EQCLemgMc1qp znxqJwVWe$L)%5#mz-~(Q)je`J5@8+)WmY1S(ALnB6+BHItNfQQGurZqUcE|TyMsd+ z{gaP3{mFoACL?^*;q=8MDu!&GE~Uo8x`w8g}`yy641&bJMS z-vI_u*F14N^Xuo|1jl-JF!+rmIX@^yfXCx@`u+k+Yxq;4Z^JYA$PY{`6bPH7^OQ~m*~7Qg3hnuMZ*cY{S}wQB^eS8k zl4C^WH;Qh~>iI-kS_S-yi8mC*n;WzlGOsN)pu4+~(c_;`mB~%G0qhYY6SfcIfZGeR z@YW&skS?>>Jj%-g1<4L#y0RTYrgZTRu9%w7Tw$a&AF&NLKDF&0ZP-}U>T231^OF2M zet#ErHdI&7?-4JxGndsO9N%|NB|G_Ae}vZJD_qVaUm={w-)}6guIVIlFa326E1yXL z&cKhpedaF@p(V1L0VFs-(0B;{k<>usp81QJd1VcnilIWJrkmlYeT3Xv69#~d2j7ZP zDT&GYy6C22?bjK{vMYZS8VRMHuS;5aTBvItpHH88Nq7P(sd}V*%H!Vju7*tg8b9p7 zEGv9k0LA({a5fF#fU97qi}yTnAcIQXE1MnkB?tKC-`-E5ppxU%ruoyro8uUhDaXz+ z`ymW4fyu3&&w%>Sr|eHKF2A{QWBe@fIoh?;H~QnhOzx^5Wjzy!QWTc~nKT)G)t0FkDG{*R%BtNx(oc>{}Ns>9hk)sYE1c;W!e6&&h|2b28?HK=m=d3BX26V5wBX(kkSnVs(fA}`b}IP7BQoss$R z`9n3RmJ^Br2$a&(dYkZ$kfkgCV}m=s=dT6%^wloL??;5|ZmJZKG%*N(-S(NbqX6@iX)$C+{U%uk2W7CZ&B(X~I-99prR2;tce0bl!B8n@Zv|$i>Oi?oF zQu!5vaLro-5N1yRHwif#D^v^n^qMJGdin|?=#v>+cvi5@Jyfl6)c9g~t`jnR>joM+ zm42Bu`QrKBb_`{$&?^TpdvNdxRICoyV>Er_c4+62a0e@!Q8%4qUTz3oU?^;a2{QU! zAYH}BUEMF|?WiBK&Dzcb^(IUCbT`M&bIl}??P*DNVSew*5ZcCgps{OhCB-j}`;%`ti1lkRPY51|}y_5AFbBpO2zO8}VvdvmpWG_peD)8pwT?-%09>6y~ zStatK;x>18&kHS(bEoG%zayi${;*O;uvNYOy`PX)l~9(RDD-|1a}EO?{%$Orr3<6K}yHAY%-%V>ET-x?nSH+DjsQHiy6 zjnZDoP^=XmP5uM-c+MG6P3)uDDt*Sn0zY$b>@-mEz~ZY(w<5E}*Az@)w8;s+a^Lmh zoemQxmG4_MG_RY{8!rok7R-}GpcOdnHS$?D45fVj%ze70}8Zflq79@*=Uu>JoKJ=TqI z=qn%bP3OnTf7|qtqfP z90pE&@7HVcO-MZn;~DITIAP^4W?M5``Ij_LcgCoE>lIbH@fNJ##$1joYqgVaMl;J9 zl;({I&o5!;JAM0*O*J&=Dn($+na@6Cckywr_Wg_hn7o@^AKPn3ZNG z?OVL&FNF}?4i+I6xjI5#5(+hw?>3qqMfr(Rx`xa=iRXPc@<8pwEt;`iS5&UnElk?B z`|veya#w}v8r5dY)B;zNMh!8mf}M|%S-vAgU7DQ?ZIPUTqdXDzcyzv5h;ieZn&+@+ z8>aHSXk=3P*I>N!&s+O-dfP^FC8@LiEY4kiL+Y=eFy%caRJk_QflKdA`%j-%U`Tn!0vKix38U*z^Z# z5)pAWu_|>dL0+&AI1WqT1bRUw7XH}Olh+s^16sNE1K2utTi3{U+m929V|ri8M~Ozg z3RRZ3ip&h&?7^mKqZ-hK^Sa|{;IQ8OWE?l7vohF8$rMjnn&9Plu#UW8u=cGD3({(D zQ9^pv)cH>0`w6t`Wx-Yv<+y+JDqvE^#TS$@k6H;A+fuo{lSpqE^1lm9gs`FlVz%mW z(^0-NuoT6r_797H{TKiMD3=CtM{7enQAy2VEeHhoL%E&<@<*dZ?%-cCE&rP-D`Z++}SRwU_wJziRC zCxdDw`HUO?9~wIyGCHX!+eU?DHh*AtXQ@4OoqjgDtuZScd1xXYs%AoZ$Ho|5Gf zN74`HARqN!m5r$a^Rv^oD=PRMi5H4DkogblGmk8n8658D4#=`&M>94}#YP+Uw zv>SJKmtes?I0SbRg1fuBHy#`UH0}gKXc~8Sm*5gyg1hU_{jBd@JH0=To-#(&S#=%l zyFYL_rCRAc{OFUYx{two5k>;gxMl`!;o;p(Ejb~ zmb_wzXs1$25>>qLz>3jKXa4AHvDMNKGmzZTQBwV-%v&u)ftxi*_Q}b2ugpT4T+>r6 zqWHnUyylE7NkLu*2c0<0J1JmgD+cC$Cr}cl$>q_dWaHFK6ueJj0ux6d6fh{^VGf%ml zwoAwUx<3(31bS%MXp!@AE8vG;{E68FT_O?PYO8mVnAoy_ zS4iL4Oq)|05Bf5;^9(P#W8lUgI9<3g_S1-0I?M4Bocar%ego6A{EXPnxc_B?jSuH> zs>Qnqd;O8wdIc`Q=A!%nyfTA!L_#dvQm15he`OlGQ#`8cqui)0pfa3yu*WQEbSXC} zdSs>Dpp@12__@fWmPXI2NH1f)ZoqSOFytozgJ+-G!20*R@4mD?6vIcpMhK@Lk9oiU zG@(Rnru(aQ{LlRXXZ<6s+lvO21~7~+5{7ew_uAVXvD}J<;B!|eS7I43VD~93)k9*U zrRH@*NTv~u+=u(!mC+6PS;`x{G1;)cT@!oFE>l&)`+PZT@Aoq1N;cZ@7FMe?!_FlG zK`gI6AUDThEc)G6hSaqzAwzRv&D^)MV#~#7By`=1~Azr-1 z{feu3b?MaR+f3^2Ptm*y7J=J^cPM*~Ej_TK1HhF!Ad?SC#5k;i!PkD z0p`ls0xs!xsp)XkL1oA?)lfm|IS!p*0I{9ZH0y z;T17I?hg4{`)-4Q(^MeeGej}KecuMyw~bJ$ybQ(s@~1Y>6{b+E9m42A2rLF@%6eZ8 zQ+23F!=|ZUZv`XNVl|0N9@;A_iZ(?u(&@DF%`-a$6y|%9d0qr#=_((NR9{(`udH;< z?M74huf7J2QnuAA4<|cB2@VlD{OS;1DnXJ3zII#aKFY`RgW zr@pg$HXML}Y(yBU9rE&x%%+4v^@dy(-klR#|Lv;r8oXZo@p#B+^!t3e=9M%_P@(<) zL2RS2ysB=)MOENRhRx+^GyOXYCk7F^+9AqVyPD;C@-){48@$+eS_p(%5QA+Oi4dBpBG41NI3k|5B22G|!c;CY+|MCTAIY+583fEpaxwLq>RL>bZJS(W! zMX=JDWkO3vll|wHQHu+*a<8$JSedUZTKaV(F8C@`E3b!C7WvGDY?BE7%y6;Ze_TB` zc@-7mN_+P6!MvKSS@u+@(GU9LndGr3y5$!T%y9T;5PczL_4ucg17q>86e4sPsSJ2q z@*Em0XGdy+FYqv7Kna(Ct+*RV2=9^oAeb~-;mQ>9AeEuj68`h50eG&;=XE7*4Rud~5KGzGTi z?V%K6FOgbM^Q}Z}E2?6-Cb69eL^!Add3PD-0`Y~)O!`w6am-9Bc6{#F5dnTLk8TNL zI~v`s|Jb~H5t77_`jzeqlt9f2_Vp`7F(3awH;Na&{0*AhI0+TwzO%8pz3 zb)K*Kj{{ux6C|1((+TLl=1G;8S*3*5=!&SmMqTg;#Sn&31zml#J%>YfLD`9~GV}N+ z&>N{OiKa8H5A$N@VKYuaIB^TUMFD-a(ES+U16#v`KYI$QqBg`6EVtW-3!R{RWNLPc z?Yc?`i}X@~EiLP@x?br2ytn*!?~RJSPljcpTfqpC$TvGeB%)uWi=u;MPw0v?0NxP3 z=%O&8a?lO>K`S6c<0N{Uds6scVHtpYB~|%j{8dk+auM>z03q>ghx?deGJl{;s_X98 z2}ft&H-4YG&A+o>AwlR1Mo0`_4=LR=41Lf_0daSmx>A&4L&-kxA6CET`nLQpxq#yS)WlB>pa#l*_(k;=9b-&*Ktgos6Ez}XPu#OhN$mLkHQH0gFJg?uGs#7lr+@>)& zn-Les++8pIjl`#?DRYhNCA|ktd%gPa)%^MOx!|p_e;M>5{IlJLRtFS&ECc#{uxY*A#TG$aooNbT z+^V~iEk(jQ`Tr{G?h9YR45L3v6vZxiP9}w?xm6<+2R>tFhUo@Pnstx?da%c8KE6Ar z%hea7G}o2SY-XLSVJ!B|HD6@v@QG<;3rEy+2x0}}eh{=xWJ=+;zWX%)?Qp5L7&b9< zS<5YvCg+UCE3ppVWO+2ZzqRp_jd@!3rZD*epB4u(=dwdmw0i%1!HNM(ue;VuliBpNxI!kbZ(+lssQ(=*{e|nG=T7^n7!%jnK_FL8VaerliR z1!BKV8|;a&|FRj(7MeVE98`*RWv;RVCNQ6}e!Kfy)N6CZwVC!k;&4Y5^nGjCbqT~= zob=xt<*V|#a(a+x+Zx!e`DYu8DTo+Qk8#mz9UGza0A@RDV4VrL9*H1i9hI|&$=7%Q z`8;om80!b)!C^Wrxsybdr%IeF?A3?}JU#lh+~4*G*xQNRivYy+U{r~1_57&AaLTo- z$n;UT;54?W+cFK)m8=61${1n^pCQa!4yzfmuOt|(xfcTrL~IX*nDR>NT+-;;x6Ud7hhAG$cl2aGHL!MK{>% zur_1$s{GsLvq%GZkq~h7aBOAh5!JOIo2{T|iza+eEOhfse{7C62um$!zqk|||HsXi z=~-M)y^o3!{R?AF3AJk0+ZLx8Z8X{E`iij2W_kzHkcjHeUq`l1mtH?*VIGn7zNYQk zqJcwyhcnS;nwgOf(P(#ESVASY*L7@q8cFu4mc{?**e1;B8EiIz%QinhBn9XpwIXJ$FI#)Ah#s9M7=xLo+pm- zhbQD&<6kg4!#AaAF{;}+U1X8E23tB@2^ynZ9+&;g3$ITzf7;VDzU?pO>rk2>7mc z12LScVLZR;zquZ~UZMdaAKfS&Dsp<5>;3yj!8*AoY`K2*1uDqLM9x1i=19efF+mPZ zBhlb~JgcciQ!24Q{hTnf{sX0*4{+J{t$tg#ZviHwmZ8&PG#glI$x!F7))G*k&)TV# zgk%?Ed39s!kCvz%ki4dY12~U8Lbc(Qr|FP_lDX%k-0*$95;22EI?dOHIuz5RQy=8J z6NR-yy`W<3gpv)h3%%HSO=7c3G<{9Hj8CX2Jv7`z(a-6esZ4)|z=ZhWkX;Kaz<=T} zHDBL%ZR9Z!IglA_ib-H^V2L@eB1TYk!YAn{_G<$1pSh(UOcr=9Piw)Nf7>p{@xu&q z;H%35QI#VndJ~CHZHSZR^x7sA)_r;xSm^D^^IR3lLuzg0buvMynLMW$ahC&YgxGmU zM?U?%big5;*uQ>u%&eu2scUEQ+8Q97!6wqft2(`VG{cf?RL9xNl~~H&2&NTSUVhA2 zkkZd$81>hGOJ;vEYjaX(b#uM@dAiKM_*P=UdHWH!ilukMmoz=t5Um*tbDpE zAv>CE`E>Z~xfju4DRd19jHmP{5lXf^wj*<&F@L3-Y_WmEL#HX8Va$dW4nAl%8g0yF zF%s+j5;Td{zKQ9&S562*N68&acDbr&+eQqW&w@C-=y=_}4YNN>5>T6zj%X6}NfZ3% zAifh_|Ka91+dSr^T$=yqAEK~04#H?w;iLnFOc}k9aP*c`s=ba&f)Cz{<5qu-&t(o& zl{fLk8+bop({{9lMgNOl%6_o?=_q97i=^Ha@!O)gs=<0DT>->X8!>}emX5&r>5oZC zUR4wbh2+y1Vq?chD#pb~d!;?J?Uj;msX(L?g(=L1s%jQ;kj37GYQ!$wgTl9kjQ8+E z^FMzATsGBP*>;(Js!Ekk@L)^qXEXJVtS!wn(Uql8=RGhncj0GX^srWdThmIx)Oza; z5od>IK`w5Oh(<2{0Tg@#6av&nJY`&)rLk}fFD{;V(b8aD7$j0b?oRP}VWcJ6AOcQP zn0HFAX$j7uS+Yan1>!LS?U~Ue(cH#CoS|jrW_;BY*MluL!0ZVbUVLU2@R*u22XfM z8vDF4guq&UK7_r@QNtj%$FwNp5PJ9~p;C0HQl*+85(&J0SoKM}AiOImW2?NKbVhZl zYR@(gYINk-_FO*x-b}C=ypB|=Di3V12_uIBq)L({^22*4ZPayNcT_1}Vi7AYr89Jt zk{fq1&%e3IPx2h-SYmR_Fi)}a9Y%|5hU6WbpEk!HSv6hiPQUZ~v%h~iNHo!wCgf{3 z6d>}dY3WL_h6=q6164Avc7xFQf2+P@UakvzYft^M*;b?_fE3mlAgVM}jt`}+jtGuT zU#NYv7r{NVJQd@q$R$Jzoiwo0w(; zH8Vl>fr#pOsdzF$AlM+l=5l`)G!QD2VZt{1{66a#jINa2+{{1k9nAdHDHUr!G~y74 z1Sn9v@CBLgOg@LNuNgiaR<`<3n30(oST!a}FyorLQ?nmyTSTx(mSp-5Y3nfmN22$I zq+|U@wl&?#Ki$N!HQC>N>9Q3f)AL?!U%808h#^JlkKaYs?Ia(J;P4x0a2472!^U!OFY5}<2E-xOy|+bSl+XN4)~fO(_Z5AhWl7!SXqT)e-Bi)v->;Yotb!x3+~y1kC&VGv(eakJaW-0V--Ha@R550!F3l%TZYn zOlX`l9uJ5pCnb8PO*%ZK3<@lgTp?UH+km)5w~(Ct zns%dUJbIfDDY5R^P#IAJWidG8OL&p1G%`%<#do{&VDz_1t-Mp|T^zUdvL{jHz) ze?H{@8wH3%GingFrfx~=j2!$hwP_PvE6ACRP75C3t9R|}HLTT&Y`#2jVzs%r#niW4 z_)222bT!z~zu$CK%B4P2e@uc*NW<9yIi78@Z)W4Lb|Ko2Ocp4 zBflFX!Ndd)lukk-m{{+<-!SNE-#YkM%68M**Sb%D29@$pf~VZtVhfIue*DX3$MhKq{i3bLiuz-#M`F6!Oc^-)TrK{ z-M)GyX{2Uxq3OIY4`gT-j7NzAHFu^+?<`o=JEIZpAb(6WPi|VSmhcwv9!3-5)2RO~ zbfP^Ta=-)7)ePEtM{Mk3RH@85&;JOaJH@&l${7|lr&l4#V6y*Qf zdgnJE)kj^q8*Ft%GpEpfD(>RT7mOle2H@cgS53~%P@2y#iwQ;bT3O_Yr&cTey+2c8 zPnoc9-jP$frNX`Pl{S7|zpjgaQa)f@ri0xBw&ho@k}GHRU-{bJ-#%8K0!IHxi_k4D z5Kp~}t38ung84dM>QCo8pZf7FK&ti3S)VkD1{Mo7n6!4MtYC{>y(2{-% zYAn5HB`e0>u?=ySx;>C~GekhG^$ygCxG1|+y(j!_^|$Al_OC;&O2RoYjM4B4{#eIZ z6ZalgOlZ>$0<8#i=pcS_6MdfSsoS%nfo0v?So*LhhO$G8_x8t(`d^!S*YE{I`OV5`_~Y_nAy1P*EJN%0`%~Fwop*`iG;&0at=c@1D&AmkJK@ zQ|C^MC*Q8s(|F<0_OSX8aNa6#`|NRwyz#Lp^%SNGY|QdrMyoftSnWAhHtB+)gO`D( zZBS(W9@A3yl(ZO%CFb%FDU8)n86jJ$?QX_K&4hhl`1{DGAF;$8mSNKs-c2izC1V_}#uZ<6V9Or-L{v>SiQP)UTslb6)l?E*>e&uA{ittKK5S$For8T*)rN zUzvzN&62_#F@$)a1s0LiI6Q*ROjj_*#XUZj{fot2uG6c-c<3yX1OILB(#o~GvN)XD zcLu;Xk&S%0`1k8~?hX9DR9g8oOk>Ai(|7LDw&imj<+SnM)JtL_D=$K+GBl${G zQ2(D_SdXY;vvp@{(9n#$%oFe9UJfG%+DjwgIP*%&_Fz15cxoawje!F>b|>tC=Vlc4 zt$LkzcUlXE4}{Z{Cvej6GH3h(aPm_Z>gN*W!WoXbm<^eOJT{Ldc6s!j7AQlaj_=5n zH152-V(u?VU*#3W%C>2xN#RVyh{}K~Bm2BpuOLcpKzU6(el|-TnUGQgk)mZ)6R_*k zpf)q=plBdtoXfikg0DkOX+z-%puBPK#&Vo-^A+Hj`bi)Mj zX*mDh>5a7^P%7Q!P-5$#PgW<;Ta@00pGVcx*Eg`$=~!sZqz~Lb5@FS5l8EmE|q zH?+<2>)YiIdd9l%>FbgQ*_Z_{)wjXU#*EHOp;HJzQ#T|IrIH?~7Yl_Q`3#1b)c#;4 z(8a@BPC?t`?f|Mh27~w5x*VH&E_-=Miwuwx=Iz`Y2WzSg1o*i~?X5^XQSasWN821d zyyldBW}Vu0j=P3Uy*yl5Zw-x_S5BaYtO3U20B%A@Mfd0*be{eYGSqAFZjth6EdE~KR17zvFnLuU5^<`ef6D}L23miq|7dnZBs3r2{4Q6>q5c;Z`F{(qGW4w!(AHeQf2?R2J=L)Y9Dnc5t6H;5Lz6!{xW-%$0rjW-i1g6W&ql9NSkjLD4 z7+mx&!sp`|nkMbxuO5r_aw#W7@ZEKhG7@f)4nk{dC%F%M>pJVtp+Sb#zZ9$J ztgm6I9+5Fz?>3T3dNDarN=V)ji~}p3Zad*C-uGSr;b^FTQs?x_V=d&5C1=w^s?mVq zi_p;@lACZo4>U5=!QyyjV&?kat$=v1*v@~zds8a2If9QW< za|k5$|K&ixqjQ?(Q8e7yX0man5wXn1bSCg3o6oUWcc$TK4Y+c#G}^}KaO_sL zHp(wiXjgHL#dq5Z9;;OqId;_Zvs4q|+J|1?ZG`M@E;^-O4ZC9anyk95XC&ME^C!&w zu+}p&1wq3IDB-O5HtNEick;MR7@IFkK?n!=0IamwVC3!4Ke&x=4||74ZzfM8Pl1lE zuYCy=?Q-l9VTscFFy!|Gu;jdD)68X7ok+q%R)I0dY9tea`3J{pKe)y(pZJIdEMDbk z19$t`Jyiov-WFpC$dF9w`ew(GY-(#3qF+X^20o|OJaLm27wN2~y0n8n8~=A1yR44GxAhr*GK4=vS;2VpY$sOIYGaC9Im`CW!QjKS5ZZZ*Lg_cYaxKXOLjyn*Sw$pt2h_$zUlXH5o{^oaN)$!2Cm%JPEC-QhEHz?h-?PXa1 zz43L>yM%P?`M!>Qx|rN{QSP^JlHt`!s?O->wNfo)_=V6*HR!_0!SQ8pT`z&at1zLi z=sM%|t68ixadJSFpl9)*wqQv_S+rHP?0@YqeW~GGU-*EQ=JIzICPQ7No<~V_u~(X>sLDuxEl`*c(V5{zoqn~(?6WQ%YaVN>p{MXR zZcOE8bJ?x#uQt^MLaN($2?!s-tJqFACZsls&f#wLZoV~W#`RXjQ*?||9X+`)edNsA z$Bg!z^->@L^KVlvegJQH7TMwIR?|FeAhmGV@Y(gNR^w#gixb32qw+omK<`8?;o!LQtTjVk2mM1t?#nK`04 zMnEFYsX#z@5Vf{V{JMp7Zy_EWq;4~@ZZjlU{~RNaF1!Y7rJ{+tN+#;^_|}HoRPh3u+opr=% zmUL1TWHy=M)Z<8!@SfZnKnK zl1+v7yqeve4QnsTDw>Ubhr6wA-O(3SxmGQ`r{^J{8xLqlKyw39nWt?t&}*Hzy8Q7AIZ%uvQj(qE~<;iHp;OUxp0TL zVEBT$dVt#bC+F{rB|Lp%Y)tZ(sZZE7FmpOm$sn^3yp7ncTrV>G4;9N0r87>_698Sl zbnDlL5THwe$AmUJ(a|}Rjf4qmZkM2}220a*+CJD#lZpA3w%*}AXcKAdb8}(eksH@C zhnEiJFF!dhUimZwRVfYgS{;6X>am>KI~fH*6;FJdQd9T33OuES1;{v6oaB4K1$&2; zrA@Onq1`@>#%_)>UYxFtqq|Gag1H6y0we+w$uRrqk$(hun{$mFO&_XuNaB3vgeAvV zt$0`;dAjB*%6uD6vSBd0ZcX z%P|IRTeii-VRq$St$o zLX!u1q&6erO2;Y0nHyyIRESo0Os(yO3f-YIi?f99%QOM~C^hgO#3}(Dp(^pmf2aBE ziOPW}Q+{F|ygRbSoCT!#u*%kGwdx;OlLIAKeebtd0oW}*X*Z<_azBFmKT+Hy6!TJ&_xU7I&&*CcS!4Z(I<_gzHn(vjfAjnLw` zx%VP}l8m|BF5>!?KU+r^KQC= z2`w@sI6k@pj+ea{CZmaLRtqM>g!+?yuD^3r+wH}l%j@ml-MIv3mvLX`jB>9C?m#RR z4g_`^;sk{j{C8$^AU+}Kc&{>`B5VCkgk2=qrne{X0<)q(2mYupn{*0FMUXe~ZHnt< z@HV%xdYhBBqQ-L#QUMkTZ2 zI$%?k!!l?#LROLHuWsF*KDnSylT}+gZZB$vjo@4Tr~*}Lyqd{cJ$T4BlQ~_(I61s; zr$Z+#Z;SlM{KE$)n?EG}f~1mDS>%D%qv1C%s|g^Z0Ys{c4-ev*#Mio8LUktKHh1om{3< zg}(DGKGNp`jz0>nKTjY%OA?pE5PSYw*SiGT?eOv6tLq6jw@!n$PwbRjY$v^d;n#z0 z%cX(#%fZey&%gX$WpErKYE#S4ioLda+$$XRw6HP8DeVF@ZRFHW7}&r5ro1`=o&fX3 zX0VW^iY9{PIm^747KB7Fk%1pVfwuGjRVSg}FH8eBBcn#R8fTje$D7vVBwkN5W$AiI zR+@_N_O-bOdZYeti$Rtcpr$?Q59IT18uZVTruH|!4bUY07)y1QJ$y;FeCcx9t3srl z5%jL&DtjSSrBOi^ETvJ>?b3dUsHY(a+34txSF)n)E6*wxrBQ}1&v`R6ItjZ)LW7v3 zQZTx~Q5pyjh(VKs--)>QCHJV?^i3+^ZSV4%Fa)AL+MQ)XYqbHF8^R3lG5|9g=>O&6 zfc6`p?+(e>hY8a2i^C443d-Elu;25!bxY5Jau1Xei%T)&(LvD8L=Ep-<;n8`;NmV< zVy*>qvBYMkr_FDxi0KoOG_(|Nokq&)NB7GBc(p`#4F3kpxtaL zwqfb>XGQzTh=Df!FGoCbbbB}$HdDp2^zD2`%=pMbL@J58ASNe9UGKFB_CINVJ3Wjl zb>qeG#bcq7K!W2PRk^D+7ZlY>sncM)u8@FlGsv7GD=3EXrnFkv6-vH?rmnE4`hrMY zn$zG&X{Yi$oDm)QK>!tBi^$ae@Dgp8Z8d2VQhojC{clk)?W;C{AJ|p;-qhW2J zgZnN3M`l(;#CKAuuABPwBwRc1giej>GYm@)@>}nBMu-D0 zgnX-fP+^zOUShrEXoU5I_f;|zy5uh@0JcZt91u*MR0RAnLB9H&F~b+xy{U-0&g!P~ zUCfY0HJYGXoD)!R2DVrz%f<`KU)uE!$P(v{C1J~10AjCWCs2-atz#ai4XDKI0`LY) z1K{+?MsK$DtJm`KxM1WDme)e>wnTi`*NW~AMf}c$wS-5v-LMVgta2FczVY1o0t7VzC81qCnW?L9k0Y86M{Y0kI4I?l zuiw-dUWB%KXN}&ptp(N15F!&=YmsSDZGb?D>sYHK#w?LcF>{$ppn@(fqYz)$htBBIvlJk zGsR*dp^IZSpGcqjw8nvu`vj#2^UHzhv`HvMGQA#BV#=oZw&P z@ZP0;52>@qe=}8EwA3|e00;g@WA%)=S#dw4_ao+l4S}#+JMhN#7dOYhdXb1W?!7qf z$aBtkN&rHpS;9h5+lwr>BLJD)u9YdW-vs>KTLyZ`IX_YDyr!4|+II$CT22Yf*@qf0 zuiCvA9xu3}3+tU9TXj7ci09+lenygb20YWDb>g8{k+sV?Lh}T(;8~@4@CG7s*GWtHZ0UiG;fho2#8<}f>a@toe7)H$z= z&(*7n1@)CZID~QnfJh(a+o~#wruFs`G)^QEW{GNqPo5$U_i)cuNse z}?sfWbe zstk-M*4aT7?VihVc^}L>k2%l9(W|nD>8vBMt0=w1CeKbsLZr@2iQt7;&d%pL$}@Za z;n1Q@cE@*{$Jo}t71x%3wB)To$qg+rNc6Kw?$}qDCzcFdsQXY6<4^U^7cPA}*}|QR z#uB>Cl#g~!{LsU$H@_3W3G;r6o2;I(x5pTeK4_@se0=&aT%zQ|hI>fT2_{ZASnpf( zhXTuhDmLi!j$oD#24r6nG4l-V9$4Dh`?(FPlCFvT@W;mjGuFNGFM`> zjB1<6#t%t4PC&azG;N&W$M1pd-Gh(SUm7urbPnf_jv7Xd$B#2(uTqkD;f~yv=1@eK zk^h?5k{B@t37lsAl;Cj4+dl~ZHi8ZU!SKn^o#P`g)qfy zL@>(s_%2ja3Up>Ou=t#H`(5NtiwugiIFR0ndK2XG=W>dbPf~bvx#=-{;g{xE;n{H%i(h=~E?1@pr;l z*BpS{fBAp{ihXX*3#@Y??KdLcX zMXK0FRetcQbJ&c166Cha9=@4<4pqsEf12J4mH5*{6?4)K2U0fkM_A(4*S$z$MEn%L zkNcwwbA$r!wwtC{;ir@xY*g6mXH20dfcgos5xa90qDI z!^U&1ZrST~K+RYd$x4rUblOpCO-c5U0>?P3y*$OAAfnO1?5rmmwoLoV0U=RYlH)rs zH(c{fFD*C8#z=B`F1^Q5mS4LsII74s`3Bo3Dwp|E|7PaM+jSP&SZgp76^3A`;yYVp zXxvfLjl1RQQ1c_@t-RCLq$ZGQun6*JCj5cRDX?$^XcT1RM}}osCVExoc#y*O1WGHc zzOMKW8HuPMLMD*lUh_6)mmZ@03d$FiF<+Q7LUHnid0M$Ld87Epo@PPbJvKLG(Ln$Q zCHZf?ijl$6iwNC@GyMGBUPS}_<5*$?{S*Kf-%u$mb-pwOl3^~@E-;<`yUgy&S}&R$ zKwYrR=XRYI7KtOm5BqPH@2WAmY&l^CrLluGJh%2;6YQ}>zJ$n6J?>V+kMNK(Ekp=| z2;wrC(x*}@BZOsT4IV{Xq^YgphAWz3=>AejY^I|L&2}4HSEO0og*fG>n$D@}wojl8 z&`1UB{Jje&0M!{N27PD91{Tn!VDz~t;F+;5wWL4wS4&N0cCh!>IOYSB2X_Y7u*@hE zrao+`iCMddyjH>g@4GxQ@DK<|6-PxjBQ()3vw&w% zieZ@gqn$zw0#5{oq&f&=Ix@9RmF7azi=GNgvZYk*frw4}Hy=Bk1Y^^~3@D6uZ3pu^ zjEsJiE4x!2LYfy zoTphtZZP1US4nZ7uU!p*>8#wr`Jz_z6TXU0B zgqP7?DUU5wX*rRu&$=zoaA7ozJ1U^W0!F93@ z;J2p_!|p!c0E}{5<&r*QuV}fWH!aMK8&C)W5q-8xtM1nJwJ~ci5Ad?;LVKEm`(7j2}29u9!15%nI1*}}|@6W4FxCZx)z|ZqWUUlAzD#I;m5WxIzOSABx6wMjI z+C<+#^9$68#DSs++*>2l>dXyv?ix!z8ia>rV`qrxibXB`#b*i|`&0hsSB8 zLSrCvYi_x5V@`H1sxI(o*tN&Y)2sgE#s6lT^)Zm7j`u7kY_z6%%S;Rp-(dao0uG5J z%`ZJgU+ja9XzEMAr=kRndjbICIGs|QyZCvCG|$H;Y6jzC06Tve8pkcY+W7ug0)WbE zXp*uO7VG|!+(bC!dK^YO7`1RQP2IW9nBW(*#A9z8S=)s}4j)p*q_u;_qW2vp7&8Mg zCKEVT2}`tL#sEfBu{I`lC`3&Jz}JzD<$*l3@x^8Iq(rEQiHfB_Jp=dk>RtrCNX}Qs zPH6;0gn7JvKz-*Z!~VwaXds<4#U6+s)@i!-jPdI0F767HNNc0)X@p_oI8y{h(lP+O z$`{@4L3&1D%2MPgihCwr;t94L4}@TLj^$ z@TCK23V3;;vCKsXGa+>TwR=6kzDA`qfEwZIm~IdPx)=c3n_7n)pwTjzdZSq@OqCJI z>K1N6{O`zq1Okl#kzd}Abori1%mZ*GGT?y5+FqjOOZDW3U!yp4WDFqx$~UA+hGXa@ zh^I#Le&_=-ZRg=+(8$8_{iHX01|Sd=TJoc@)_G2$!ocky{IX91gv=p`I!t0txr@{n7Si;@Fcp=o%isM#~CbPM~2-KiMB9OZn3V zt6BFOV!PgQ>D{0G*7(7IkaYSW%J>hzCbGED`w@XgjXuJ`)Y_Ar}2X&H!m+Qjr$uIT@_UYnz(h}x1*(oSNkkQZ>2- zWC#yHiBEsM!9dYJ={l@_4xTsJ>uB1lmznt*3#UUOO$UA((>c~1ruPUEZ$>K7$__%flg6@>EiVSWTU^y2VPkt1TXnjTeg91+0JspfI9x?vwy+_n*5J@Yg` zR~dkD`mG&?Tu=(9s&pE_xG_fz7Jt@G1Db0+MHxK)Oh^2*>!$<$-5Uc;gEjW%O;2?V z&QLJcPW(lIJx8jY-xSqlYzAAU0F8`*fdQ`Dwd|+`Z zG#@I$A~qA3{kZUzsEU=E%Dw{sEcRO%0+>~-yA4!rtb+xkYbb26uPwtrR?Zr$_XnZK z!p}Iu6aN3=4kX;0o0fY(zXrPeqM#V8P=q4@3 z^97G5ewF)n3mfwbraMX%*r5=TQe&)n!q$bF?&iScd{yJ-ZqsI*M(kUNSjNpq%;JnG z11ve2zN@fTz7#z zFWS$=&>Y9f|G;kSwlTQ%Fn4>5OvHVp7s`7$6=dk zEgC{rP!tn6n0bDE$s?YBBG{O?`T)3c<#{>|enP{_;sVT!{Q3xh^WkukgOOmA8xQ${ zF>4K0tfK<}5ZUFWB)(~Y0cE1!?$g>05E82nWOBZ;aq?ZToD=uds)A6cXJi3Kow^64 z-MHfFV#afm-c2L60eBF}_QL?oC$r{P&9TG!oZKpjkB<#OrGO*i(n1q(LL8@oAy}wT z3Bdu3)Jpmn7LFLY(CHEzIn}T_M*+(^4A;Vk;2agwobxTcuj#wa27(;&z*iL{^pA87 zYeN}I8Qsimp*|-1+$b>FEj4i5>43g=OMD22U8NE1*xI#L34rbit~EqP;>dMTM_*8! z%#lT0Ni#V1V=~HLw6AykTt5*plW@d&k;Wy9zfAhccnm3uN)zz{dHLV^UqbAgi#5*p z-nO0$xaeU(Cokoanl~;bI69YRmSW{c>Rer}#qR|{+mDSZl^EJi`+5>b0udd{1<-MO zX6J>NqpuBf$Bju7|lI01b^ty+_DEnB!9bj0`LZs=8Vt6@9Q-n>> zZ`y+!Bib)Y7BXwpGh~05U^V)Czzn_g$Nv|U1#9{=D1gzpiBa(w9Bux~`U*y6J01Xi ztDF5D49t&Q_pCYv)^nZ!@Bb~p>UBqzYtidWmw?tQO}V`+9~xt>kJ&Z@w_(WRYdi{B zCbaDmNvAgfuMWUnkiOV9>tI}svm>mlBqX*A<1&!68L*b~S9J!5FxpKlv`l6Nz}oT| z#7Y1SH_N;)!5nkSou8W24Q>li#)9GjKvJH;DOdxbf|onMQ3Y7p9-kUu^sXr5r-yOY z9ry%sXsAyq4@Rvv-JZC=K&_GXg`Xq&*}3_@!}70|kInxWsNU9dB!K&WFJ|>xPG>7Q z?ecB^UIN^6p!MogY-_n;-7FKj_6n)+C2;X50^U#MYDFpmKy4UDQ6S5@MrSj4Y5w)f z;%$(x7=agTWB^Ad0viLkxOlyG268M5Y)7m)GwCLkMPrv9m@fMhtpQY!=y>Z70F8af z{xeM?fJ1-vx*5#f9TCX|OwXSEjb$LqLX0}x(2wa-_`TwlnN6zppAX&LWYv85jlEGm-@K&m!{osY7qh7`UM_DMj^P5)mvA7ov?n}B+* z`S*UZR&{x7SXuT~62NN@r|$w-FL()P-S1Mib>CAmVF=vYZbeTA%p#1lEEfcC!}v(D zE}3EhUVN8;60nkJL&s2-6Z;Bam%Uy{2btChpa!VHm#YHW`Kd_|x{cVAx|N)(9=MeI z`NTFrIRq%9lma-qVzIyDRtZx4qzqk2KSBDlWRTkIhcUJ7x=+Pcjr&!gdcEBIyL<_& zy5IMf0A6!Aovq~Ij<2!&T+n*WOW4-^rVKO7$KcgKTmM$)P|~`Yc?IkgfKh!>M_EF6 zPGy91!5r&7pj|#U$&zjtl+I<&nD^|N%1ES`0H}Z+GN~Zl{9UtfaU6rx^Gq?S<+(?z z%g&yL|reuQUL*TkTB^P8}f$R3}+8^;-&Q~E5`fdw= z*KGn=$$-}~0TZBRCU$!Ub1W|tcwL^F_&uBer`rfD_dw0enYNLe28&jqN8N7-(k;zD z0qSFMM|v;Q6i_or)Ap1GsGG|5Q$TgwOC^BE{?eM&YYeCF4p=XKDQMj{O9Ypv*w*r) z@7DF9RB&D6ECbi|G3%y%=(pE{*LC_o1(0Le9@&-w-uLgXdv{h^x7;a%I<0;AuVBoj zf-*0E_;44>*mZjIM7hAEpW4H+AQhnQ^EEbgpP@13x=p|Hp{vUEuL0G4PO+-nzBgFo zn*Q@v)As_d&zFM_E>D5ia*Z|F*JT-407p3t>|78J*Q2Zlv&)xE8I8kP|n9qzGY)JwJaxByX^EFpt}ECXjQK}HT^Fyce!gPGV{U!0000Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91M4$rz1ONa40RR91L;wH)0KnP9zW@LXb4f%&RCoc^Tzzm<)fGQycLRtC zLOUw7wG@%Behkzk&{kTJsdZ$qTF{sTv>mH3!yi@KN^P-3EVgJn(`jp`Vx1`kLP8v? zP^#0x0XhmKA!%)yaSTveDiV=T8!!!+$tgU_{)QCSl+++aeTx zyoIZq3n40RKoYhg_S7H%k=B1qr>zm<`2lLnQbLEW!KySBf3wlaxd3arfR>Fs$l7ZtQr*r~ z|H+0wl_x6!sTE)=s_^xm1sL(AGPTTphhlBuTR)N_jjwXm3A;QP-=YB8FFmMYBV>kRe&0Sa8~qLQ!e9 zt|q9s;c^;t-^)C&$E)$dpnt{u`O?#Lay|53pvi~cr@}O1Mhh=I>QU|{C+6juW;Ckq zGX#t_UUav+=Fp%d7XeHkbDORazg9-$ZqW8Ym{#s2J5Vn$z}+k(!(D6WP?*`2Q3U%H z+OKP6W}l~b9?;5MQ%24veH24OZi@}(qf8~0L&auj9ZIEr&NO@?N~RTkxjdDgc;|Bw z8a~aQI<66dqx(}j7~CzZ$p-}t>9id5!o&;ls%!;JX&?3cJOR$df71X-9O1o=?`HX6 zFRd5V&i<{HYhK0bvP!FgBgpNQrYX%%rU3%Gu|lf|+9BC=d6W%#vY|4J1U{xIioHu( zpZft3PnVBR1KaW9?m#u=bEUQOE$^dlomL-xUQl70;NwlCen4P5mN>-JCx%;VG0rBb zG6&)ve%Rlk-8YoBLx!UFI`sG|BM#v%>cno-?E}TZXwE>LS{)^_dCH2>OJ*Iu=oi3W z;?%(rf5|?s`K^=pdsdhRIK5+A6rRqjspKj+uKVI6M7-k~7#JOGLjjCArl~YavF!lk zdUU2A4A_PD;8xqNbWkO=aSgWhd{8MIcZ8x}7J3{I2%4`j5sd75jb3cpIqLm2WL{&- z#pqoc+=t3)pJEh>V~_+y?oC`NCY~-Awa5gVwrlXgv}3|LOqI<+)d^F$UaNzt6vu!Q zJJY@nn@Oe%JWZ80y_or#rfEWqqOW75j!Kuy2eCE3b{AKjOQ&a-gMa4$OvEIc8(#ad zq2%?VT_*V*8nIY382U(zdh6X_P&7iOCRZ>-e_WaF)cOIpM&J4Z%f0-UD3je+HHEUeCRcu-%J4@a`Eg=a#i4_7Kc)4Hh(Dw->fYSdxTf^Q4QRg z`6Ynr)wikGl(?-o#6{)aBtNma)t+tY#~A9{h}trGQxcyrG~#YK+NTh6dc}$Y8=|I( z5sZ-0b`ieBam{&R^V#_dQ;(xIf7+pA$iIvH)9qZl#-U|;{*MTEKIST$FHE6(T6tlo zP0uBd3#|8`D?%^Qy@AM&4q^DXT!eDHn2R9Pdj*}j#Q8%T;{o_jDow+8vuUr=)GvWj zF4rG){8i8kr%dv+KEl|R$&@LzD`SM@1PI)6E1^6_NqWLc_ISBzyf&Shp2JdzYfEzZ zC&0D8l*ZxyxUflrbL5UgscDWH zq2r5vyM?Q?6RH&Fm7tHyR0tNBGOE3BF$a;310hxkc5RWN#65D?liF5=X}lR=+@DHI zyz`6gT=TS>UMPxgJ267&j4cARu@aJC(}UzAGx z2;n1kMXWy46JbntN$~t$u6i4XMPDN+OLZ}#mBs&q(K$is#eN(yPRa;@e}H$m8N~9( zW4hc$IZ$w6^aA9lcRQeOOf1zoG#s!>ADP8k6?8U^K^zbu2Is4qm$K^zc?9fxAdGH0esfLltNdA(xlbcd;AK4iU~ zYzW|#%-hYky3Q4O3G%2slN#>OrVB>sTWwUeORB{I!F|L9*bLQSE75)u;N~GCFu9eh z{)O0*&yJwdQMds6R2x^R%YNX7GgOd`CN?-f*4O~jM#s<6-%%_%&uGlpD@>PYKfNq> zYOzLzqajnrQuM{O*~I9;<&=5W;p+zk{)WGUs0O)8=%buSok}0H=XGXF8D@aGzrpBe zOkLgj0g+D1uL?XmJ6=K`J<5hWxrg3=7^6cAnlTZIq)j8(xAcUIp)EMe;A+!Oe1R!E zw~g-{RBybkRi?Zw3iyG-pAzS@bZ&Is6)TrELWEs@Vu5*uKwLYSVG;-GoK)@7p_rF2 z2P_JkH87y>S)A7%vh{WWlDI21t8K<)9w*b@tzMolk2-@wo?~7ZjSu)oOqI(t1(-sQ z;MZ8k?J^f2!XUpl!6@-M<4ljofnt+mH#SuA;#xRI-Aw>vlBN^-wtYTT|3)vaTRil!P6FH{UQ6RB6iv=1vK>$C zK($SmBZ+YkGY@71hSbO!5Mh?9Mi>;a&c0I(*OFD$-W(h*PIkdlh7>!u$x0+~jg_aW_Qc*TP@)HXf+d2T_y7UpAObNo1 z{~Lr{r%K?5TrbLvT5jz@-dWj!%BD-4+nMBRp$@rTlp8gPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91MxX-#1ONa40RR91MgRZ+0B$7!7ytkh#7RU!RCocsTz#yb^;y2((?fes zM`>XMHx;u2v6E51h|x$`J116+5)&3DewMK~qtR{>gDK7)VkFZ9l_kWe8A|!p!f$u$O?3v4ag*S9pLHgh1;^ z|2){o(e$GiY>b01zHhKd)9XR!92oA5*?Z!Lan*NYuIn-MoCat2JpizCL}~&&L7NOyB z9IR(IV7lef)_>d?^FbcjBOaWajSswh>)>hDI~zJ{VAky)-Y{H_kD}=2iNYKr2f+jG zh|H(mL;31c)|F?(6d(H=Sjq6KdKF`A#Nx~#ZeISa!9hu9csgTXuK4tD!&A@2ooMb? zCTevJb?OQNH7R>2IdQ1ePu&T1Xz=zicm`4+mKq$Y<&C)evJ2yuFaFx#glewwbVk5z zxp%l_X&4Wqp=+n+Con$f;K8UP*=Bv!72Z2RsvdCE8K5x$GIs;3_@VCM%`HV)SYgltf_ zwiw2xuk^Rr4k8<;ryRylcW${Eje8q={8=7tkvnnup z_L=rTn**@9HXxH{;0tJ$;M4<+08~ zLzXRLo8J_9W+vXX{GsWubEX2rSF|Ti#6Kg~_=~q*Q8h{(32SS7+OS2Z;W-Fm8W0qV zPaCNCSmzkaEN{N$E;`v+kK}$KgI%1TiK|}z{mECzQ*WhLPQ)J}#Uv=o+zr62Y(fOS zft179-tKue#2EUfkK(DLDRnImbk0v5V@dXH`Kh!WEAxobzuKI`KImoh@fFRQL8HaB znKH=M!8 zBzKO#@f_PR3;5_D-zBT3cIr2h1{Q5YkOyeG^58izX>1@WsJ9(!ZQS{MwU|SB?1xpc z%tK1qt9Ak}ob_OptH{j;U8}bocP%UcoesI?8{+Llb{fx`){9TM)uEa7(E!%%v%iYRnxqB{y4&p}Ue$0Wt5hNHgiob-c>{4d%V@eemgY`;Vr>D&`F>N!oG z#r3&!XkQ)z1N(60r}>LZ@hlwYS^_piasyl`W)cbDJ%D$H8`rRi(OTl<4}EL8=Fb|k zouaCfx9l!8`c+-o&H(1n; z$v<&)pukC2iIbaW0a7MtdZ?Jtg_JyFtaEYOoTFW>%uTx}JAGklq(@*+rdPFNA7mF6-S-u5&Lg;?F&x?p9ifT`HPQs7YQiH$;}ZBX!yZ>DzQ^ zXKV#Q1>x&PWMdvu=HO~O)vjN4+9_Gzaa-oP+vmH!iBTgu{H2Kh{9nku{K`i)@{EC= z^=StnyO?Q4&qgb;vnCNwD;(8iuI6nQDD(rdkcP(UI5j}A=p0M`rcb+UXxanVx2-Ic zzMBEcqwk6M?j9%)9f^4N$0AM=L;{d8?yu%@ednYPo}G50fx%$?M}}9OTn?n`8q#nj zq4Y&&G8c0~>-s=2wgO;(>fNC2US;D@B!WPyGISSg=yuBYT-up^HYl$ycXg$Qzx!jp z+N0-?z4+m!-u7AKxY`NW9LWLX+pb8Po2|uE(00a~$4Woim9t|TSk&3>RXXS!RZyVZ zv_9excFL(h;ZAX_)>r9Ad9$a=yS{WQarNx*Wd4z?1k=e^P(?D4^oXpe*P*92!d#4D zjvTV(DLTfIo0uwBP$JRF23y1v|gRyXM$MO3=pYqfYZhO4Y|74rlS= zhTl4n!XP-AWhE+&T5s^!q7u3YWaVI9+T0NJ=}W!Au#T!RK#F`mcFH3+MSR~WK=JLP z-ZIX->r*XK@vg@NLUpOmnYPWsaJe6(3_x9($c?uZ8I&*!^!+(pvx9e>^;Nd6Hr&9; z{BHm#e}7ZN_rFD6?NoP)FOqXxX0E=@vg@dSWL3}14oqgT=yR8bY9^wc2^3sb7vw6! zI=?RBrB_pAJdRcj>IxFQSj(g)DOl&c>97$UetLJrHE&5pE)^8^=z8SU8&`)gXCA7T zwVIvg)MXz08EPdqDVdX`lN^zZjs{IUWF=4A8}YRHk3So+@0zY5gW_g2aK@;)3IKTK zl)lt=3_kGM9H}SY zOL7rFdFBKM#MGq(>@PSKDj$$$7Qm%Qw7Dts}2F6 z7fzBTWG(WkPj#DX47Buv_omsgBpKBTLau==d7}Qnk0&5(2(<57oDg&S=ekwtGAH%Q zOA~e0gKa!?>}L+QCPCSGIgKMSD6gLE{A%y?@-5{2v`_6nYs+4Jn1lrT43;G&;ee=lv1SEXmqV`*vXG;7~)>GS-xNB!XWL zQ2yrUBCh*ZJ9KLUg#(e`tAVnDfaAlaRy)hIo8m0QLF|) zE5$6pWNHoziSki`^Rb98_rci-aBz&};(#?jG|x5b8z{-pc`o|mTYSf6*5P|=c4AT$hNE;&nzDn{5OwhPkYB{x{2luvp8hI> zMzrr82@X~CCpix6d3a3u>z|MKk+;gyPVIpfk11-F7R34Ld%$LcS$)BWeUevy=+m<5 zrk?TiG0B$#2xet#ic=pjS@MS;hi7F2TU9%ei=mb#8@DM=inKtL~3O~=E54^E%2Egze*EF;% zkpWJiBGAc)3we+bE_x{;KSglviTIBfrD>;q?*uqFJjg6S`KzCf_^~USiLq(%uzRk+S?64iQ7(eQIG#%0<(YT_e=->kX6}qtl?VH z!KwBwTj{qiPo2RtF>Vmg$DhZW@T@f8A5$LJR%0i0%HnQ-YVtfp#mC?nOgH;qxSe)< zB;wfrIH+6q{b0lwK5%MK^g6|jVs+lJELp$x0;c(8Yy*C8dYa(;S;W8NS*y}p{U?r8`hnJ;r_>%a z5dE?~W!h^`9@skhmY$@~IF)42AkWuHRET?&XWZ%dsPOza2&dyJ*cnxr3F)i^ka=Lx)i{Q(A0gk+`;kDLRENk1($skuh#SEx%C9zyGQn{Zyn3ZxArL|4LTlo*`uefjibAh%fZ9UY0kjPKwBFU7WF^z5_} zcL@0mWT93JI`axmA2+2!XvkMiwMvW|d;xDbZ~Y`dp)c$L1osybGnCC3wH5z$oj2+>KxB} z(`ipEjQ;>^3>e0oyiMOlJLpDTpf;h#T)@S+)&{^U2mQ#`;la1Oy_ji$Fi*ce{hY&V zt?&NTYd@Ynjp)HRF#i2JnkImua&9i(k42x;v@1aa3W&JYgI9@^S4*}W-VJJyjPW3} znQym9iIXmK+fQ{6C$Jb#K4Vzd^(Jm11x}n6RThV zDb`7UHZCy-Y&!=^4r{sPkuweWzvM8l3kALM79ZJJgE6Fx9g{mtJ>MLknEZ|}9i{?9 z!}7ktL4b4jSOFKML-HP+vahO|PaijI8&?BTb68IuW0==5l50(tFLs)09}~L;zEkLK z+(LSlJH>WtVCcN{;x%}$-;;Wh?dkm8|JeA-lpJPB))sXIL=N7f1o)2|H}IKBjM zhV$5h5r^xry1L9nLW7j0L!;h7bx7|ht@hzyIIQE4{axeSTn$3?VR_la^iF(C;q9}A zo#Mzf1ET=^3ia|!<2nRQJX;Y2Hmcpi=0O#ZPJ=UTKBzR0wE+%w+jZ0zALZ=DwH(w> z(%tx{Hm*C}V@f}))#)2fC$IbU;SKo0@JI1Ny8HP~4$!VT6XZaBU6W}iVYN`Fa8xzkzzy)hHGlfdk0T$5N9u=6@_&t|a}LZ{KfgHSzdv;Y zw&gC&vlAd)(g5Iq9@0QCxDS+lI{)Y4@majcIHXVW^Mh-Koojl1fvMeMC&hc?ZTPmw z)yw?HyYO9F>>T~$T>xtnK-)xj=$F7R0W^N>aSRGRZX5+*Phe*}d9HUxZL#wI2eb4W UOE75RMF0Q*07*qoM6N<$g1qb~*8l(j literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_setting_btn_bg.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_setting_btn_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..ba41bf3a53886665bbf57855d8b8624342a10444 GIT binary patch literal 4400 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 literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/bus_unselect_btn.png b/OCH/offline/driver/src/main/res/drawable-nodpi/bus_unselect_btn.png new file mode 100644 index 0000000000000000000000000000000000000000..0114bb4f2bc6d2bdb21353af4dcd253de966b911 GIT binary patch literal 2324 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 Y2c7-B&JG#}J^%m!07*qoM6N<$f@(Wqp#T5? literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/end_maker_icon.png b/OCH/offline/driver/src/main/res/drawable-nodpi/end_maker_icon.png new file mode 100755 index 0000000000000000000000000000000000000000..8acf1131514bc842834c65d5a2d578f43797478a GIT binary patch literal 5154 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 V`kwhja{ilfL5(eqstvBj`~&?U0SN#A literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/icon_ai_collect.png b/OCH/offline/driver/src/main/res/drawable-nodpi/icon_ai_collect.png new file mode 100755 index 0000000000000000000000000000000000000000..6da7b81fe4bd078bc5026bfced41ba306b6f30d0 GIT binary patch literal 7627 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 literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/icon_ai_normal.png b/OCH/offline/driver/src/main/res/drawable-nodpi/icon_ai_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..e98738b1920b87da45aa858fdb3e5e984faff1f6 GIT binary patch literal 4840 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 a9-xm^U7x6*`t{#0ld7VYLan@I_7 literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/icon_ai_select.png b/OCH/offline/driver/src/main/res/drawable-nodpi/icon_ai_select.png new file mode 100755 index 0000000000000000000000000000000000000000..d3e0107c028bda3166762cff316c8062e53963fe GIT binary patch literal 5310 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

WXY;btZtSSIU$-&(^wZO( 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�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 w%YB + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bad_case_selector.xml b/OCH/offline/driver/src/main/res/drawable/bad_case_selector.xml new file mode 100755 index 0000000000..bc47ce95d7 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bad_case_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bg_bus_traffic_light_background.xml b/OCH/offline/driver/src/main/res/drawable/bg_bus_traffic_light_background.xml new file mode 100644 index 0000000000..e0b90b9c55 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bg_bus_traffic_light_background.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_autopilot_0_1_status_bg.xml b/OCH/offline/driver/src/main/res/drawable/bus_autopilot_0_1_status_bg.xml new file mode 100644 index 0000000000..47ca8c7d4b --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_autopilot_0_1_status_bg.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/OCH/offline/driver/src/main/res/drawable/bus_base_autopilot_status_icon_selector.xml b/OCH/offline/driver/src/main/res/drawable/bus_base_autopilot_status_icon_selector.xml new file mode 100644 index 0000000000..94555d78cc --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_base_autopilot_status_icon_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_checkbox_selector.xml b/OCH/offline/driver/src/main/res/drawable/bus_checkbox_selector.xml new file mode 100644 index 0000000000..d95e931160 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_checkbox_selector.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_line_dividing_line1_selector.xml b/OCH/offline/driver/src/main/res/drawable/bus_line_dividing_line1_selector.xml new file mode 100644 index 0000000000..b00fbd8bd6 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_line_dividing_line1_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_line_dividing_line2_selector.xml b/OCH/offline/driver/src/main/res/drawable/bus_line_dividing_line2_selector.xml new file mode 100644 index 0000000000..ee555aae15 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_line_dividing_line2_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_operation_status_bg_selector.xml b/OCH/offline/driver/src/main/res/drawable/bus_operation_status_bg_selector.xml new file mode 100755 index 0000000000..3a3dc6a292 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_operation_status_bg_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_panel_anchor_bkg.xml b/OCH/offline/driver/src/main/res/drawable/bus_panel_anchor_bkg.xml new file mode 100644 index 0000000000..21b39b7e37 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_panel_anchor_bkg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_panel_bkg.xml b/OCH/offline/driver/src/main/res/drawable/bus_panel_bkg.xml new file mode 100644 index 0000000000..69539ed40f --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_panel_bkg.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_setting_tip_red_cir_bg.xml b/OCH/offline/driver/src/main/res/drawable/bus_setting_tip_red_cir_bg.xml new file mode 100644 index 0000000000..203971340e --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_setting_tip_red_cir_bg.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_bg_normal.xml b/OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_bg_normal.xml new file mode 100644 index 0000000000..272e718cce --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_bg_normal.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_bg_selected.xml b/OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_bg_selected.xml new file mode 100644 index 0000000000..e5faafb27b --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_bg_selected.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_time_bg.xml b/OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_time_bg.xml new file mode 100644 index 0000000000..ee8088637c --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_time_bg.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_time_bg_selected.xml b/OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_time_bg_selected.xml new file mode 100644 index 0000000000..e2b482ee5f --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_shape_select_line_item_time_bg_selected.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_station_green_dash_line.xml b/OCH/offline/driver/src/main/res/drawable/bus_station_green_dash_line.xml new file mode 100644 index 0000000000..fe46ef2228 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_station_green_dash_line.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_station_v_green_dash.xml b/OCH/offline/driver/src/main/res/drawable/bus_station_v_green_dash.xml new file mode 100644 index 0000000000..376e0a472c --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_station_v_green_dash.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_switch_line_btn.xml b/OCH/offline/driver/src/main/res/drawable/bus_switch_line_btn.xml new file mode 100644 index 0000000000..8b066b0ce8 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_switch_line_btn.xml @@ -0,0 +1,11 @@ + + + + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_switch_line_btn_commit.xml b/OCH/offline/driver/src/main/res/drawable/bus_switch_line_btn_commit.xml new file mode 100644 index 0000000000..e94992d507 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_switch_line_btn_commit.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_switch_map_bg.xml b/OCH/offline/driver/src/main/res/drawable/bus_switch_map_bg.xml new file mode 100644 index 0000000000..b34021d977 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_switch_map_bg.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_task_time_bg.xml b/OCH/offline/driver/src/main/res/drawable/bus_task_time_bg.xml new file mode 100644 index 0000000000..917f3932fe --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_task_time_bg.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_yi_biao_pan_bg_nor.xml b/OCH/offline/driver/src/main/res/drawable/bus_yi_biao_pan_bg_nor.xml new file mode 100644 index 0000000000..2ef90e60f7 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_yi_biao_pan_bg_nor.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/bus_yi_biao_pan_bg_speeding.xml b/OCH/offline/driver/src/main/res/drawable/bus_yi_biao_pan_bg_speeding.xml new file mode 100644 index 0000000000..dea7a88bb6 --- /dev/null +++ b/OCH/offline/driver/src/main/res/drawable/bus_yi_biao_pan_bg_speeding.xml @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/layout/shuttle_base_fragment.xml b/OCH/offline/driver/src/main/res/layout/shuttle_base_fragment.xml new file mode 100644 index 0000000000..2ea45ebc0e --- /dev/null +++ b/OCH/offline/driver/src/main/res/layout/shuttle_base_fragment.xml @@ -0,0 +1,364 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

ia>b-wB8QJ+lvd{|#NA?XYfAIQxecD_AG4a}oue*p+ipPYev5LQOpw4KF z9p*W0#mn9eZHK7j!f0Zfsk}z6UHM#cBVBJn&P?BC8XgnZ)w=K>vYW|bdGE(Ly7QWj z%%P#V!<#9ksxOv{-VS{zt6c7Q?q@I(vsW--$#0*vWD?pU6K&KP{d-Oi`y1Iu3RiB1 zr!z+gv%`79>{Lm|2Hzpvt#27QH0~u6>iV(?uT)v)k~&0*LF*Qw)%{Ti#X6nJYz2d# zENq+77#4=*T0HnawS`mtRkRbCoqRp>H&%`6g&#D8@HUe{WpR%FOljXO_k-KBh>uQ& z$~)IrH)V_uu3t(3MuhWET61Mmlh3_G$u^Ee%HjfZwJ}AQX-x6zPC;NrK7DZyMETR_ zXRFioyJzd+=`)&M7YXwUri#ixcDuJae;uC2RYo^F1+ zV%|GjLoh8afYJB!47@kKyv2&!s|pw+^1e~OP>{OMQ!XLX^|HhSy;u2Pto!!a b+5>Eak- zA^3KxBOjxqfNTB9BLddd8>imr6u!ZsC}<`mt@nV(%r8kj`Nj>aM&=#uE(RJ`FIV{( zyT9;D+qLSRf9dj|xk@<|jGI?QEb^RKc-4<%#^i>6pZi+?VnxH*!`r|7 zF8KT4*TJucmoq7T7x)xY8MjMgqilh6kAq$OvcMGkIUKrzxydW8w6xi7Zdl#I-NhM` z*s*f%L5Bq00=7lh|I2#xX(TIsSSfUq>5!ahPvG+QrmWh21(|>&9uH!b|C%=~ej>HN vd%H=Eak- zA($NU+kR&wBUgpwji~cR%l@~0bTm0#&(>C@(x|5(?aC-TNhR#r3MP*YJ#B|GEELiw zT>N4%OU~^wvkHsJKmU(`f9+NIk0giuwU>-|>A)b*Ed4#aEq+_Qq=Xrh>y4Qb5}N~z z&V{$#_j5S;Rl#$D*aAOgF#%?_hDoa%bNB@2Pi!nK6mc%I>f&^;H8>giizlg*x2NZS zfKS7#82zIQWcSXxD43zZ%-qG8XAa|S$-Q+--c2`r9Ojx!NJQA?8>!X1O=tOB`p3|NkG(Y{=em{=|tL5!25b%EmJK6p2n=nw;b; z@z`EO`+%CE(VFW|(|h7%kNpro;%>;8@h&W_?qf$A+gtmDqYg}oOv;b#GF@*zxXOEL zf5IdMsT`&Yj_E%lZ!)PpU-{2v8q3C+4U^1o%#g5sUV5{}Z925d$ V*!Oz|J=y~b4^LM=mvv4FO#mstjFA8U literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/icon_bad_case.png b/OCH/offline/driver/src/main/res/drawable-nodpi/icon_bad_case.png new file mode 100755 index 0000000000000000000000000000000000000000..22f88301f979cdec76a499f0a717df7cb7d4aad4 GIT binary patch literal 7039 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 literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/icon_bad_case_normal.png b/OCH/offline/driver/src/main/res/drawable-nodpi/icon_bad_case_normal.png new file mode 100755 index 0000000000000000000000000000000000000000..c0a978fc2b874469180654e75c4ecc6df8808dff GIT binary patch literal 7086 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%0A2>&KEnmK_Fba=I5r)>3eBrId(; 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 Y0pPz3waq=X=>Px#07*qoM6N<$fOV literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/icon_bad_case_select.png b/OCH/offline/driver/src/main/res/drawable-nodpi/icon_bad_case_select.png new file mode 100755 index 0000000000000000000000000000000000000000..ebacf3a11ac602e1bf823544f1f02a901b57ecc6 GIT binary patch literal 6901 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 literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/icon_no_bus_line.png b/OCH/offline/driver/src/main/res/drawable-nodpi/icon_no_bus_line.png new file mode 100755 index 0000000000000000000000000000000000000000..fc20dca73c6966b7a0ef7a1fe7d41b167fe900d1 GIT binary patch literal 13534 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 Uh9g@3`?p9^RPJZBuwKCb09^Nox&QzG literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/icon_point_blue_bus.png b/OCH/offline/driver/src/main/res/drawable-nodpi/icon_point_blue_bus.png new file mode 100755 index 0000000000000000000000000000000000000000..dc4c4f6f0da0a03c903cf6a1e7f84dc2864a3204 GIT binary patch literal 1427 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 LNkvXXu0mjfKvgIU literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/icon_point_grey_bus.png b/OCH/offline/driver/src/main/res/drawable-nodpi/icon_point_grey_bus.png new file mode 100755 index 0000000000000000000000000000000000000000..d43e34bb2634ebe1ea0028dff390741c8fa32990 GIT binary patch literal 1580 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 literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/no_order_data.png b/OCH/offline/driver/src/main/res/drawable-nodpi/no_order_data.png new file mode 100644 index 0000000000000000000000000000000000000000..0e61996d3fb4d3db8413a52fae4eb5d3e7d78cee GIT binary patch literal 14403 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 literal 0 HcmV?d00001 diff --git a/OCH/offline/driver/src/main/res/drawable-nodpi/pingxingjiashi.png b/OCH/offline/driver/src/main/res/drawable-nodpi/pingxingjiashi.png new file mode 100644 index 0000000000000000000000000000000000000000..78bfa2687f412b14b1f92949fee7d7190e4ef0a2 GIT binary patch literal 103905 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