From 4e28931070f5625116f42e5e2ad93ee362d97196 Mon Sep 17 00:00:00 2001 From: dotanAtTrim <133851002+dotanAtTrim@users.noreply.github.com> Date: Wed, 18 Oct 2023 17:11:59 +0300 Subject: [PATCH] update codebase of ardupilot (#1) * AP_Motors: Add a seprate spool down time, if it's 0 use spool up time * Tools: add extract_features Check Firmware and ODID * Tools: add build_option - ODID (OpenDroneID/RemoteID) * AP_InertialSensor: add INS_RAW_LOG_OPT to allow raw logging of post, and pre+post on primary or all gyros * AP_Mount: Xacti does not report cannot take pic * AP_Mount: Xacti take pic reliability improved * AP_Mount: Xacti uses GCS_SEND_TEXT * AP_Mount: Xacti get_param_name_str returns empty string on failure * AC_PID: Simplify update_error method by calling update all * Plane: fix guided heading control anti windup * Plane: MAV_CMD_GUIDED_CHANGE_HEADING: allow changing heading type or rate for same heading * Plane: GuidedHeading PID: remove slew limit * AP_EFI: Rate limit the megasquirt driver This fixes it up so that the driver actually works on things like AP_Periph that poll at a high rate. This was never a problem with the main firmware as EFI was run at a lower rate, but on AP_Periph this was much to fast. This lead to spamming fresh requests and keeping the buffer completly stuffed with requests. To compound it, the EFI device would start over when there was a fresh request, and eventually our buffer writes become corrupted leading to bad checksums, and a complete failure of the comms. This prevents that situation from happening. * AP_RCProtocol: disable raw logging if no RC_Channel We're asking the singleton here for information on whether we should do raw logging. We may not actually be compiling the RC_Channel library in. * GCS_MAVLink: handle message interval commands as both long and int * Tools: handle message interval commands as both long and int * AP_Scripting: winch-test param name typo fix * AP_Scripting: winch-test becomes winch-control applet * AP_Scripting: winch-control gets .md file * AP_Winch: minor comment improvement * AP_Winch: Daiwa gets stuck protection * AP_Mount: Xacti minor format update * AP_Mount: Xacti supports optical zoom * AP_Mount: Xacti digital zoom percentage fix * Sub: accept MISSION_START as both long and int * autotest: add test for Sub MAV_CMD_MISSION_START * autotest: add upload_rally_points_from_locations * AP_HAL: Add support for NeoPixelRGB * AP_HAL_ChibiOS: add support for NeoPixelRGB * AP_SerialLED: add support for NeoPixelRGB via set_num_neopixel_rgb() * AP_Notify: add support for NeoPixelRGB via set_num_neopixel_rgb() * AP_Scripting: support set_num_neopixel_rgb() * AP_OSD: Make per-cell voltage be shown to two decimal places again * AP_Common: make Location.cpp compile without AP::ahrs() available * AP_AHRS: allow compilation when GPS not available * GCS_MAVLink: allow compilation when GPS library not available * hwdef: HerePro requires AHRS to compile * AP_Periph: instantiate AP_AHRS even if not in SITL Closes potential problem with HerePro if it calls AP_AHRS methods * AP_TemperatureSensor: support var pointer backend params * AP_TempratureSensor: add support for analog sensor with polynomial * AP_Scripting: added INF_Inject EFI driver * AP_Scripting: add basic print * Sub: accept DO_CHANGE_SPEED as both command_long and command_int * autotest: add (disabled) sub test for MAV_CMD_DO_CHANGE_SPEED this doesn't work on master either... * AP_OLC: use right type and static const variable * AP_OLC: add unit tests * GCS_MAVLink: handle DO_AUX_FUNCTION as both long and int * autotest: test MAV_CMD_DO_AUX_FUNCTION as both COMMAND_LONG and COMMAND_INT * bootloaders: refresh Pixhawk6X bootloader ... and include the elf file so we can try to tell what's in the bin * Plane: accept MAV_CMD_DO_LAND_START as both command_long and COMMAND_INT * Tools: add tests for MAV_CMD_DO_LAND_START for both int and long * ArduCopter: don't send fence_status mavlink message if fence not compiled in * ArduPlane: don't send fence_status mavlink message if fence not compiled in * ArduSub: don't send fence_status mavlink message if fence not compiled in * Blimp: don't send fence_status mavlink message if fence not compiled in * Rover: don't send fence_status mavlink message if fence not compiled in * Copter: Two processes in one * Tracker: enable EK2 and EK3 parameters * Tools: board_types.txt: add Vimdrones board types * SITL: document airspeed params * Tools: document airspeed params * AP_Avoidance: Change division to multiplication * hwdef: ARKV6X ADIS16507 example * AC_Fence: Change the description to match the actual value(NFC) * AP_Math: add CRC8_generic method * AP_Proximity: add driver for LD06 * AP_Proximity: Minor fixes to LD06 driver * bootloaders: update CubeOrange bootloader to include flash-from-sd support this is just a rebuild of this firmware; the changes have been in the hwdef for a very long time * SITL: fix typos * bootloaders: freshen CubeOrangePlus bootloader notably this includes flash-from-SD-card support * hwdef: CubeOrangePlus: build abin files ... for use with flash-from-SD-card * GCS_MAVLink: cope with NaNs being passed in when doing conversion to command_int * autotest: fix interact * Tools: add InterActTest to show interaction with automated setup * hwdef:add VTX power control to SpeedyBeeF405-Wing * HAL_ChibiOS: Fix stm32l4+ flash issue stm32l4+ flash reset register has been reset properly * AP_GPS: have AP_GPS_UBLOX use boolean uart read * AP_InertialSensor: fixed the error value for BMI088 the bad value is -32768 not 0xffff (which is -1) -32768 badly corrupts the low-pass filter, and is what we see in logs (a large negative spike on all 3 axes) update to bug fix from: https://github.com/ArduPilot/ardupilot/pull/23033 * AP_BattMonitor: added SHUNT parameter to INS2xx driver some vendors want different shunt resistors * Tools: allow Ohm units in parameters * Copter: remove duplicate friend declaration Signed-off-by: Rhys Mainwaring * AP_Winch: Make healthy strings common * Filter: HarmonicNotch: convert harmonics to int32 param * AP_InertialSensor: call init for harmonic notch params * AP_GyroFFT: update harmonics to uint32 * AP_AHRS: add airspeed estimate status logging * ArduPlane: add airspeed estimate status logging * hwdef: add MatekL431 ADSB Periph * Tools: add bootloader for MatekL431-ADSB * Filter: LowPassFilter2p: constrain cuttoff to 40% of sample rate * GCS_MAVLink: allow PREFLIGHT_STORAGE as COMMAND_INT and COMMAND_LONG * ArduSub: accept MAV_CMD_CONDITION_YAW as both long and int in Sub * Tools: accept MAV_CMD_CONDITION_YAW as both long and int in Sub * AP_GPS: correct placement of voiding clause should be voided when no logging, not just on periph... * AP_RangeFinder: log signal quality * AP_RangeFinder: add quality to Blue Robotics Ping1D driver * AP_RangeFinder_MAVLink: implement get_signal_quality_pct Co-authored-by: Willian Galvani * AP_RangeFinder: change get_signal_quality signature to use int8_t * GCS_Common: use int8_t for rangefinder quality_pct * AP_ChibiOS: Delete the same definition * AP_DDS: use ROS convention for node name Signed-off-by: Rhys Mainwaring * autotest: add autotests for MAV_CMD_SET_SOURCE_SET mavlink command * GCS_MAVLink: handle EKF_SOURCE_SET as both long and int * ArduPlane: allow Plane to run MAV_CMD_MISSION_START as long and int * Tools: allow Plane to run MAV_CMD_MISSION_START as long and int * AP_AHRS: Correct/clarify AHRS_WIND_MAX description * autotest: don't build examples for fmuv2 needs extra defines as we kill features from it * hwdef: Create correct README and add defaults to ease setup * AP_RTC: add AP_RTC_config.h * AP_ADSB: allow for compilation without AP_RTC_ENABLED * AP_BoardConfig: add and use an AP_RTC_config.h * AP_HAL_ChibiOS: disable RTC on periphs the singleton isn't instantiated * AP_Hott_Telem: allow for compilation without AP_RTC_ENABLED * AP_Logger: allow for compilation without AP_RTC_ENABLED * AP_Mount: allow for compilation without AP_RTC_ENABLED * AP_MSP: add and use an AP_RTC_config.h * AP_NMEA_Output: allow for compilation without AP_RTC_ENABLED * AP_OSD: allow for compilation without AP_RTC_ENABLED * AP_RCTelemetry: allow for compilation without AP_RTC_ENABLED * AP_Stats: add and use an AP_RTC_config.h * ArduCopter: allow for compilation without AP_RTC_ENABLED * ArduPlane: allow for compilation without AP_RTC_ENABLED * ArduSub: allow for compilation without AP_RTC_ENABLED * GCS_MAVLink: allow for compilation without AP_RTC_ENABLED * Rover: allow for compilation without AP_RTC_ENABLED * AP_RTC: remove code if AP_RTC_ENABLED is false * AP_GPS: allow for compilation without AP_RTC_ENABLED * waf: disable RTC on sitl_periph_gps * AP_HAL_ChibiOS: add and use HAP_PERIPH_ENABLE_RTC * Tools: add and use HAP_PERIPH_ENABLE_RTC * AP_HAL_ChibiOS: add RTC support to GPS periphs that log this re-adds support for RTC into GPS peripherals that also log. This was removed as these boards were calling methods on the nullptr * AP_HAL_ChibiOS: JFB110 board definition Co-authored-by: Randy Mackay * AP_DroneCAN: fixed sim on hw build tested using: Tools/scripts/sitl-on-hardware/sitl-on-hw.py --board Pixhawk6C --vehicle plane --simclass Plane --frame plane * AC_AttitudeControl: Fix some typos Fixed some typos found in the code. * AC_Autorotation: Fix some typos Fixed some typos found in the code. * AC_AutoTune: Fix some typos Fixed some typos found in the code. * AC_Avoidance: Fix some typos Fixed some typos found in the code. * AC_CustomControl: Fix some typos Fixed some typos found in the code. * AC_Fence: Fix some typos Fixed some typos found in the code. * AC_PID: Fix some typos Fixed some typos found in the code. * AC_PrecLand: Fix some typos Fixed some typos found in the code. * AC_Sprayer: Fix some typos Fixed some typos found in the code. * AC_WPNav: Fix some typos Fixed some typos found in the code. * AP_AccelCal: Fix some typos Fixed some typos found in the code. * AP_ADSB: Fix some typos Fixed some typos found in the code. * AP_AHRS: Fix some typos Fixed some typos found in the code. * AP_Airspeed: Fix some typos Fixed some typos found in the code. * AP_AIS: Fix some typos Fixed some typos found in the code. * AP_Arming: Fix some typos Fixed some typos found in the code. * AP_Baro: Fix some typos Fixed some typos found in the code. * AP_BattMonitor: Fix some typos Fixed some typos found in the code. * AP_Beacon: Fix some typos Fixed some typos found in the code. * AP_BLHeli: Fix some typos Fixed some typos found in the code. * AP_BoardConfig: Fix some typos Fixed some typos found in the code. * AP_Camera: Fix some typos Fixed some typos found in the code. * AP_CANManager: Fix some typos Fixed some typos found in the code. * AP_Common: Fix some typos Fixed some typos found in the code. * AP_Compass: Fix some typos Fixed some typos found in the code. * AP_DAL: Fix some typos Fixed some typos found in the code. * AP_DDS: Fix some typos Fixed some typos found in the code. * AP_DroneCAN: Fix some typos Fixed some typos found in the code. * AP_EFI: Fix some typos Fixed some typos found in the code. * AP_ESC_Telem: Fix some typos Fixed some typos found in the code. * AP_ExternalAHRS: Fix some typos Fixed some typos found in the code. * AP_Filesystem: Fix some typos Fixed some typos found in the code. * AP_FlashIface: Fix some typos Fixed some typos found in the code. * AP_FlashStorage: Fix some typos Fixed some typos found in the code. * AP_Follow: Fix some typos Fixed some typos found in the code. * AP_Frsky_Telem: Fix some typos Fixed some typos found in the code. * AP_Generator: Fix some typos Fixed some typos found in the code. * AP_GPS: Fix some typos Fixed some typos found in the code. * AP_Gripper: Fix some typos Fixed some typos found in the code. * AP_GyroFFT: Fix some typos Fixed some typos found in the code. * AP_HAL: Fix some typos Fixed some typos found in the code. * AntennaTracker: Fix some typos Fixed some typos found in the code. * ArduCopter: Fix some typos Fixed some typos found in the code. * ArduPlane: Fix some typos Fixed some typos found in the code. * ArduSub: Fix some typos Fixed some typos found in the code. * Blimp: Fix some typos Fixed some typos found in the code. * GCS_MAVLink: accept accel cal vehicle positions as both int and long * AP_RCProtocol: protect against invalid data in SBUS * AP_RCProtocol: make sbus_decode public to allow for a test suite * AP_SBusOut: make sbus output exactly match sbus input decoding * HAL_Linux: use the AP_RCProtocol sbus decoder for Linux * AP_RCProtocol: added a test suite for SBUS encode/decode cover all values and check special handling of 875 * Tools: rebuild IO firmware * AP_RCProtocol: prevent decoding past end of output array this fixes test_sbus on clang * AP_Scripting: added INS filters to revert list these may be changed in a tuning session * AP_Logger: added build directory to VER message this allows log review tools to use right parameter and mode map when vendor has changed the vehicle type strings * hwdef: correct compilation of CubeOrange-SimOnHW ../../libraries/AP_InertialSensor/AP_InertialSensor_config.h:20:2: error: #error "INS_AUX_INSTANCES must be zero if INS_MAX_INSTANCES is less than 3" 20 | #error "INS_AUX_INSTANCES must be zero if INS_MAX_INSTANCES is less than 3" | ^~~~~ * Rover: 4.4.0-beta8 release notes * Copter: 4.4.2-beta1 release notes * Rover: update 4.4.2-beta1 release notes * Copter: update 4.4.2-beta1 release notes * AP_Bootloader: add SpeedyBeeF405v4 * AP_OpenDroneID: ensure Persistent memory is not read continuously * AP_OpenDroneID: only load from persistent memory in init() we do not want to do this from update() as it is an expensive call * AP_OpenDroneID: remove duplicate definition of AP_OPENDRONEID_ENABLED ... my guess is conflict resolution caused this * autotest: added Plane.TerrainRally test reproduces the issue from https://github.com/ArduPilot/ardupilot/issues/25157 * Plane: fixed terrain RTL with rally points this fixes a bug where if the terrain database cache does not have the tile for the location of a rally point then RTL to the rally point with TERRAIN_FOLLOW=1 will not track terrain The underlying issue is that Location::loc.change_alt_frame() will return false if the location is not in the terrain memory cache. We can't just extrapolate as the rally point could be in a totally different terrain area to the current location. So instead we set it as terrain_following_pending and fix it as soon as the terrain cache is filled. fixes https://github.com/ArduPilot/ardupilot/issues/25157 * Plane: 4.4.2-beta1 release notes * hwdef: Cite CubeOrange-SimOnHW as the default file * Tools: adjust install_prereqs_ubuntu.sh to handle Mantic * Vagrant: add Mantic Minotaur to available VMs * github: test mantic not bionic bionic no longer builds SITL: ../../libraries/AP_Logger/AP_Logger_Backend.cpp: In member function 'bool AP_Logger_Backend::Write_VER()': ../../libraries/AP_Logger/AP_Logger_Backend.cpp:577:5: sorry, unimplemented: non-trivial designated initializers not supported }; ^ compilation terminated due to -Wfatal-errors. * autotest: correct hook removal for Copter tests these hooks were remaining active if the test failed * GCS_MAVlink: correct routing for Solo Gimbal Check for a opro camera in a Solo gimbal added and re-enable the routing of Gopro Mavlink commands * Flter: notchfilter: remove unneeded value and pre-multiply for speed * AP_Periph: Rate limit EFI driver updates Also remove the last update variables for features that were compiled out. * AC_PID: If PD max limiting isn't active clear the flag * AP_HAL_ChibiOS: hwdef: scripts: defaults_periph: disable unused libaries by defualt * AP_Param: Allow override of AP_PARAM_DYNAMIC_ENABLED define * AP_Scripting: don't include CAN support on periph if there is only one CAN port * AP_Scripting: require a file system * AP_Scripting: lua_scripts: add missing HAL_LOGGING_ENABLED define * AP_Scripting: generator: emit dependancys for operators * AP_Scripting: Generator: allow unused enum loader function * AP_Scripting: add lots off missing binding dependencies * AP_Scripting: add support for dependencty on manual methods, remove handling of mission commands without AP_Mission * GCS_MAVLink: handle MAV_CMD_DEBUG_TRAP as both long and int * SRV_Channel: expose public function to convert scaled value to pwm Allow other modules to get and store the PWM value for a specific scaled value and re-apply it later. * AP_ServoRelayEvents: allow mavlink command of rcin scaled functions Allow `MAV_CMD_DO_SET_SERVO` and `MAV_CMD_DO_REPEAT_SERVO` to be used on a servo output set to an RCINnScaled function (i.e. k_rcinN_mapped). Scaling is applied so that a commanded servo PWM of <=1000 maps to SERVOn_MIN, a PWM of 1500 maps to SERVOn_TRIM, and a PWM of >=2000 maps to SERVOn_MAX. Linear interpolation is performed between ranges. * GCS_MAVLink: add build option for deprecated MISSION_REQUEST replaced by MISSION_REQUEST_INT * autotest: test setting modes via COMMAND_INT and DO_SET_MODE * GCS_MAVLink: allow setting modes via COMMAND_INT and DO_SET_MODE * AP_BattMonitor: DroneCAN: always have consumed energy * ArduPlane: accept LOITER_UNLIM and RETURN_TO_LAUNCH as command_int * Tools: accept LOITER_UNLIM and RETURN_TO_LAUNCH as command_int * Plane:force min transition timer to 2 sec * hwdef:fix bug in AtomRCF405NAVI,fix some bds that aren't building * AP_Beacon: fix example when Beacon not available simply print the fact that the beacon librar y isn't compiled in * Tools: Replay: correct compilation when AdvancedFailsafe not available * AP_Scripting: added SVFFI generator support * autotest: add test for SET_ATTITUDE_TARGET headings * Plane:reset in landing seq on mode change while disarmed * Copter: encapsulate auto takeoff into an ojbect similar to the encapsulation of "user takeoff" into an object * AP_HAL_ChibiOS: correct printing of timer information * Blimp: remove misleading implementation of MAV_CMD_CONDITION_YAW this would return success when it, in fact, does nothing. * AP_HAL_ChibiOS: add support for saving and restoring SCK pin state when SPI goes into undefined state during reset * AP_HAL_ChibiOS: fix mode setting for ICM45686 on CubeOrangePlus * AP_HAL_ChibiOS: add option to set HAL_SPI_SCK_SAVE_RESTORE * autotest: add explicit test for MAV_CMD_GET_HOME_POSITION * GCS_MAVLink: handle MAV_CMD_GET_HOME_POSITION as both long and int * autotest: add test for MAV_CMD_NAV_TAKEOFF for quadplane using command_long * Plane: use origin-relative altitudes rather than home-relative * autotest: allow more time for disarm on vtol-state test right on the edge * autotest: test DO_SEND_BANNER as both long and int * GCS_MAVLink: handle MAV_CMD_DO_SEND_BANNER as both long and int * hwdef: Adapt the rotation direction of the QMC5883L * hwdef: To adapt the rotation directionof the QMC5883L on new Aerofox-Airspeed-DLVR --------- Signed-off-by: Rhys Mainwaring Co-authored-by: Michael du Breuil Co-authored-by: Tom Pittenger Co-authored-by: Iampete1 Co-authored-by: Randy Mackay Co-authored-by: Peter Barker Co-authored-by: Andy Piper Co-authored-by: Michelle Rossouw Co-authored-by: Andrew Tridgell Co-authored-by: Pierre Kancir Co-authored-by: muramura Co-authored-by: Huibean Co-authored-by: Anthony Luo Co-authored-by: alexklimaj Co-authored-by: Joshua Henderson Co-authored-by: Adithya Patil Co-authored-by: rishabsingh3003 Co-authored-by: Henry Wurzburg Co-authored-by: thu5cob Co-authored-by: Rhys Mainwaring Co-authored-by: Willian Galvani Co-authored-by: Clyde McQueen Co-authored-by: Tim Tuxworth Co-authored-by: jfbblue0922 Co-authored-by: Mykhailo Kuznietsov Co-authored-by: bugobliterator Co-authored-by: stephan Co-authored-by: Thomas Watson Co-authored-by: AerofoxTech --- .github/workflows/test_environment.yml | 6 +- .github/workflows/test_size.yml | 2 + AntennaTracker/AntennaTracker.txt | 4 +- AntennaTracker/GCS_Mavlink.h | 2 +- AntennaTracker/Parameters.cpp | 14 +- AntennaTracker/Parameters.h | 2 + ArduCopter/AP_ExternalControl_Copter.cpp | 2 +- ArduCopter/Copter.h | 3 +- ArduCopter/GCS_Mavlink.cpp | 58 +- ArduCopter/GCS_Mavlink.h | 2 +- ArduCopter/ReleaseNotes.txt | 22 + ArduCopter/crash_check.cpp | 4 +- ArduCopter/mode.h | 39 +- ArduCopter/mode_auto.cpp | 20 +- ArduCopter/mode_autorotate.cpp | 4 +- ArduCopter/mode_guided.cpp | 6 +- ArduCopter/mode_systemid.cpp | 8 +- ArduCopter/takeoff.cpp | 69 +- ArduPlane/Attitude.cpp | 10 +- ArduPlane/GCS_Mavlink.cpp | 47 +- ArduPlane/Log.cpp | 11 +- ArduPlane/Parameters.cpp | 2 +- ArduPlane/Parameters.h | 6 +- ArduPlane/Plane.h | 16 +- ArduPlane/ReleaseNotes.txt | 30 +- ArduPlane/altitude.cpp | 14 +- ArduPlane/commands_logic.cpp | 10 +- ArduPlane/ekf_check.cpp | 4 +- ArduPlane/events.cpp | 4 +- ArduPlane/is_flying.cpp | 2 +- ArduPlane/mode.cpp | 11 + ArduPlane/mode_acro.cpp | 2 +- ArduPlane/mode_guided.cpp | 13 +- ArduPlane/mode_qacro.cpp | 2 +- ArduPlane/mode_qrtl.cpp | 2 +- ArduPlane/mode_qstabilize.cpp | 2 +- ArduPlane/motor_test.cpp | 2 +- ArduPlane/navigation.cpp | 4 +- ArduPlane/quadplane.cpp | 15 +- ArduPlane/servos.cpp | 2 +- ArduPlane/system.cpp | 2 +- ArduPlane/tailsitter.cpp | 14 +- ArduPlane/takeoff.cpp | 2 +- ArduPlane/tiltrotor.cpp | 6 +- ArduSub/GCS_Mavlink.cpp | 32 +- ArduSub/GCS_Mavlink.h | 6 +- ArduSub/Parameters.h | 2 +- ArduSub/ReleaseNotes.txt | 2 +- ArduSub/commands_logic.cpp | 4 + ArduSub/defines.h | 2 +- ArduSub/mode_poshold.cpp | 2 +- Blimp/Blimp.h | 2 +- Blimp/Fins.h | 2 +- Blimp/GCS_Mavlink.cpp | 21 +- Blimp/GCS_Mavlink.h | 2 +- Rover/GCS_Mavlink.cpp | 2 + Rover/mode_auto.cpp | 4 + Rover/release-notes.txt | 24 +- Tools/AP_Bootloader/board_types.txt | 8 +- Tools/AP_Periph/AP_Periph.h | 21 +- Tools/AP_Periph/Parameters.cpp | 6 + Tools/AP_Periph/Parameters.h | 1 + Tools/AP_Periph/adsb.cpp | 42 +- Tools/AP_Periph/batt_balance.cpp | 3 +- Tools/AP_Periph/battery.cpp | 46 + Tools/AP_Periph/efi.cpp | 14 + Tools/AP_Periph/esc_apd_telem.cpp | 2 +- Tools/AP_Periph/wscript | 2 + .../IO_Firmware/iofirmware_dshot_highpolh.bin | Bin 46932 -> 46796 bytes .../IO_Firmware/iofirmware_dshot_lowpolh.bin | Bin 46932 -> 46796 bytes .../iofirmware_f103_8MHz_highpolh.bin | Bin 41196 -> 41028 bytes .../iofirmware_f103_8MHz_lowpolh.bin | Bin 41196 -> 41028 bytes .../iofirmware_f103_dshot_highpolh.bin | Bin 46924 -> 46788 bytes .../iofirmware_f103_dshot_lowpolh.bin | Bin 46924 -> 46788 bytes .../IO_Firmware/iofirmware_f103_highpolh.bin | Bin 41196 -> 41028 bytes Tools/IO_Firmware/iofirmware_f103_lowpolh.bin | Bin 41196 -> 41028 bytes Tools/IO_Firmware/iofirmware_highpolh.bin | Bin 41196 -> 41028 bytes Tools/IO_Firmware/iofirmware_lowpolh.bin | Bin 41196 -> 41028 bytes Tools/Replay/Replay.cpp | 2 + Tools/ardupilotwaf/boards.py | 3 + .../copter_payload_place.txt | 0 Tools/autotest/arducopter.py | 121 +- Tools/autotest/arduplane.py | 226 +- Tools/autotest/ardusub.py | 80 + Tools/autotest/autotest.py | 2 +- Tools/autotest/balancebot.py | 2 +- Tools/autotest/common.py | 206 +- Tools/autotest/default_params/periph.parm | 7 +- Tools/autotest/param_metadata/param.py | 1 + Tools/autotest/quadplane.py | 46 +- Tools/autotest/rover.py | 91 +- Tools/bootloaders/CubeOrangePlus_bl.bin | Bin 17644 -> 38688 bytes Tools/bootloaders/CubeOrangePlus_bl.elf | Bin 436376 -> 176244 bytes Tools/bootloaders/CubeOrangePlus_bl.hex | 3521 +++++++++++----- Tools/bootloaders/CubeOrange_bl.bin | Bin 17836 -> 38800 bytes Tools/bootloaders/CubeOrange_bl.elf | Bin 437892 -> 176244 bytes Tools/bootloaders/CubeOrange_bl.hex | 3540 +++++++++++------ Tools/bootloaders/JFB110_bl.bin | Bin 0 -> 17924 bytes Tools/bootloaders/MatekL431-ADSB_bl.bin | Bin 0 -> 18516 bytes Tools/bootloaders/MatekL431-ADSB_bl.hex | 1160 ++++++ Tools/bootloaders/Pixhawk6X_bl.bin | Bin 17868 -> 38848 bytes Tools/bootloaders/Pixhawk6X_bl.elf | Bin 0 -> 176244 bytes .../install-prereqs-ubuntu.sh | 26 +- Tools/scripts/build_options.py | 2 + Tools/scripts/extract_features.py | 6 +- Tools/vagrant/initvagrant.sh | 4 +- Vagrantfile | 19 + .../AC_AttitudeControl/AC_AttitudeControl.cpp | 4 +- .../AC_AttitudeControl_Multi_6DoF.cpp | 2 +- .../AC_AttitudeControl_Multi_6DoF.h | 4 +- .../AC_AttitudeControl/AC_CommandModel.cpp | 2 +- .../AC_AttitudeControl/AC_WeatherVane.cpp | 4 +- libraries/AC_AttitudeControl/AC_WeatherVane.h | 2 +- libraries/AC_AutoTune/AC_AutoTune.h | 2 +- libraries/AC_AutoTune/AC_AutoTune_Heli.cpp | 8 +- libraries/AC_AutoTune/AC_AutoTune_Heli.h | 8 +- libraries/AC_AutoTune/AC_AutoTune_Multi.cpp | 2 +- libraries/AC_AutoTune/AC_AutoTune_Multi.h | 6 +- libraries/AC_Autorotation/AC_Autorotation.cpp | 8 +- libraries/AC_Autorotation/AC_Autorotation.h | 2 +- libraries/AC_Avoidance/AC_Avoid.cpp | 6 +- libraries/AC_Avoidance/AC_Avoid.h | 4 +- libraries/AC_Avoidance/AP_OABendyRuler.h | 2 +- libraries/AC_Avoidance/AP_OADatabase.cpp | 2 +- libraries/AC_Avoidance/AP_OADijkstra.cpp | 2 +- libraries/AC_Avoidance/AP_OADijkstra.h | 2 +- libraries/AC_CustomControl/AC_CustomControl.h | 2 +- .../AC_CustomControl_Empty.cpp | 8 +- libraries/AC_Fence/AC_Fence.cpp | 6 +- libraries/AC_Fence/AC_PolyFence_loader.h | 6 +- libraries/AC_PID/AC_PID.cpp | 57 +- libraries/AC_PID/AC_PI_2D.h | 2 +- .../examples/AC_PID_test/AC_PID_test.cpp | 2 +- libraries/AC_PrecLand/AC_PrecLand.cpp | 6 +- libraries/AC_PrecLand/AC_PrecLand.h | 2 +- .../AC_PrecLand/AC_PrecLand_StateMachine.cpp | 8 +- .../AC_PrecLand/AC_PrecLand_StateMachine.h | 4 +- libraries/AC_Sprayer/AC_Sprayer.cpp | 4 +- libraries/AC_WPNav/AC_Circle.cpp | 2 +- libraries/AC_WPNav/AC_Circle.h | 2 +- libraries/AC_WPNav/AC_WPNav.cpp | 2 +- libraries/AP_ADSB/AP_ADSB.cpp | 2 +- libraries/AP_ADSB/AP_ADSB.h | 2 +- libraries/AP_ADSB/AP_ADSB_Sagetech.cpp | 4 + libraries/AP_ADSB/AP_ADSB_Sagetech_MXS.cpp | 4 + .../AP_ADSB/AP_ADSB_uAvionix_MAVLink.cpp | 2 +- libraries/AP_AHRS/AP_AHRS.cpp | 50 +- libraries/AP_AHRS/AP_AHRS.h | 15 +- libraries/AP_AHRS/AP_AHRS_DCM.cpp | 14 +- libraries/AP_AHRS/AP_AHRS_DCM.h | 2 +- libraries/AP_AIS/AP_AIS.cpp | 10 +- libraries/AP_AIS/AP_AIS.h | 2 +- libraries/AP_AccelCal/AccelCalibrator.cpp | 10 +- libraries/AP_AccelCal/AccelCalibrator.h | 2 +- libraries/AP_Airspeed/AP_Airspeed.cpp | 4 +- libraries/AP_Airspeed/AP_Airspeed.h | 2 +- libraries/AP_Airspeed/AP_Airspeed_Backend.h | 2 +- libraries/AP_Airspeed/AP_Airspeed_NMEA.cpp | 2 +- libraries/AP_Airspeed/AP_Airspeed_SDP3X.cpp | 2 +- libraries/AP_Arming/AP_Arming.cpp | 2 +- libraries/AP_Avoidance/AP_Avoidance.cpp | 8 +- libraries/AP_BLHeli/AP_BLHeli.cpp | 6 +- libraries/AP_BLHeli/AP_BLHeli.h | 2 +- libraries/AP_Baro/AP_Baro.cpp | 4 +- libraries/AP_Baro/AP_Baro.h | 2 +- libraries/AP_Baro/AP_Baro_BMP085.cpp | 4 +- libraries/AP_Baro/AP_Baro_BMP280.cpp | 2 +- libraries/AP_Baro/AP_Baro_BMP388.cpp | 2 +- libraries/AP_Baro/AP_Baro_Backend.cpp | 2 +- libraries/AP_Baro/AP_Baro_Backend.h | 2 +- libraries/AP_Baro/AP_Baro_DPS280.cpp | 2 +- libraries/AP_Baro/AP_Baro_DroneCAN.cpp | 2 +- libraries/AP_Baro/AP_Baro_FBM320.cpp | 2 +- libraries/AP_Baro/AP_Baro_LPS2XH.cpp | 2 +- libraries/AP_Baro/AP_Baro_SPL06.cpp | 2 +- libraries/AP_BattMonitor/AP_BattMonitor.cpp | 2 +- .../AP_BattMonitor/AP_BattMonitor_Bebop.cpp | 2 +- .../AP_BattMonitor_DroneCAN.cpp | 1 - .../AP_BattMonitor/AP_BattMonitor_DroneCAN.h | 4 +- .../AP_BattMonitor_Generator.cpp | 4 +- .../AP_BattMonitor/AP_BattMonitor_Generator.h | 2 +- .../AP_BattMonitor/AP_BattMonitor_INA2xx.cpp | 16 +- .../AP_BattMonitor/AP_BattMonitor_INA2xx.h | 1 + .../AP_BattMonitor_SMBus_Generic.cpp | 2 +- .../AP_BattMonitor_SMBus_Solo.cpp | 4 +- .../AP_BattMonitor_Synthetic_Current.h | 2 +- libraries/AP_Beacon/AP_Beacon_Nooploop.h | 2 +- .../AP_Marvelmind_test/AP_Marvelmind_test.cpp | 11 + libraries/AP_BoardConfig/AP_BoardConfig.cpp | 6 +- libraries/AP_BoardConfig/AP_BoardConfig.h | 4 +- libraries/AP_CANManager/AP_CANManager.cpp | 2 +- libraries/AP_CANManager/AP_CANSensor.cpp | 2 +- libraries/AP_CANManager/AP_SLCANIface.cpp | 2 +- libraries/AP_Camera/AP_Camera_SoloGimbal.cpp | 2 +- libraries/AP_Camera/AP_RunCam.cpp | 6 +- libraries/AP_Common/Location.cpp | 22 +- libraries/AP_Common/Location.h | 2 +- libraries/AP_Common/tests/test_location.cpp | 2 +- libraries/AP_Common/tests/test_nmea_print.cpp | 2 +- libraries/AP_Compass/AP_Compass_Backend.cpp | 6 +- libraries/AP_Compass/AP_Compass_Backend.h | 2 +- .../AP_Compass/AP_Compass_Calibration.cpp | 4 +- libraries/AP_Compass/AP_Compass_DroneCAN.cpp | 4 +- libraries/AP_Compass/AP_Compass_HMC5843.cpp | 2 +- libraries/AP_Compass/AP_Compass_MMC5xx3.cpp | 2 +- libraries/AP_Compass/AP_Compass_SITL.cpp | 2 +- libraries/AP_Compass/CompassCalibrator.h | 2 +- libraries/AP_DAL/AP_DAL.cpp | 12 +- libraries/AP_DAL/AP_DAL.h | 2 +- libraries/AP_DDS/AP_DDS_Client.cpp | 4 +- libraries/AP_DDS/AP_DDS_External_Odom.cpp | 4 +- libraries/AP_DDS/README.md | 8 +- libraries/AP_DDS/dds_xrce_profile.xml | 2 +- libraries/AP_DroneCAN/AP_DroneCAN.cpp | 4 +- libraries/AP_EFI/AP_EFI_Serial_MS.cpp | 9 +- libraries/AP_EFI/AP_EFI_Serial_MS.h | 2 +- libraries/AP_ESC_Telem/AP_ESC_Telem.h | 2 +- libraries/AP_ExternalAHRS/AP_ExternalAHRS.cpp | 2 +- libraries/AP_ExternalAHRS/AP_ExternalAHRS.h | 2 +- .../AP_ExternalAHRS_MicroStrain5.cpp | 2 +- .../AP_ExternalAHRS_MicroStrain5.h | 2 +- .../AP_ExternalAHRS_VectorNav.cpp | 6 +- .../AP_ExternalAHRS_VectorNav.h | 2 +- .../AP_ExternalAHRS/MicroStrain_common.cpp | 2 +- .../AP_ExternalAHRS/MicroStrain_common.h | 2 +- .../AP_Filesystem/AP_Filesystem_FATFS.cpp | 2 +- .../examples/jedec_test/jedec_test.cpp | 2 +- libraries/AP_FlashStorage/AP_FlashStorage.cpp | 2 +- libraries/AP_FlashStorage/AP_FlashStorage.h | 2 +- libraries/AP_Follow/AP_Follow.cpp | 2 +- libraries/AP_Frsky_Telem/AP_Frsky_D.cpp | 4 +- .../AP_Frsky_MAVlite_SPortToMAVlite.cpp | 2 +- libraries/AP_GPS/AP_GPS.cpp | 47 +- libraries/AP_GPS/AP_GPS_DroneCAN.cpp | 2 +- libraries/AP_GPS/AP_GPS_FixType.h | 18 + libraries/AP_GPS/AP_GPS_NMEA.cpp | 2 +- libraries/AP_GPS/AP_GPS_UBLOX.cpp | 7 +- libraries/AP_GPS/GPS_Backend.cpp | 6 +- libraries/AP_Generator/AP_Generator.cpp | 6 +- .../AP_Generator/AP_Generator_Backend.cpp | 2 +- .../AP_Generator/AP_Generator_IE_650_800.h | 4 +- .../AP_Generator/AP_Generator_IE_FuelCell.h | 2 +- .../AP_Generator/AP_Generator_RichenPower.cpp | 2 +- libraries/AP_Gripper/AP_Gripper.h | 2 +- libraries/AP_Gripper/AP_Gripper_Backend.h | 2 +- libraries/AP_Gripper/AP_Gripper_Servo.h | 2 +- libraries/AP_GyroFFT/AP_GyroFFT.cpp | 6 +- libraries/AP_GyroFFT/AP_GyroFFT.h | 2 +- libraries/AP_HAL/AP_HAL_Boards.h | 2 +- libraries/AP_HAL/AP_HAL_Namespace.h | 2 +- libraries/AP_HAL/CANIface.h | 6 +- libraries/AP_HAL/Device.cpp | 2 +- libraries/AP_HAL/GPIO.h | 2 +- libraries/AP_HAL/RCOutput.cpp | 1 + libraries/AP_HAL/RCOutput.h | 6 +- libraries/AP_HAL/WSPIDevice.h | 2 +- .../AP_HAL/examples/AnalogIn/AnalogIn.cpp | 2 +- .../AP_HAL/examples/RCOutput2/RCOutput.cpp | 6 +- libraries/AP_HAL/examples/Storage/Storage.cpp | 4 +- libraries/AP_HAL/utility/ftoa_engine.cpp | 2 +- libraries/AP_HAL/utility/srxl.cpp | 4 +- libraries/AP_HAL/utility/st24.cpp | 2 +- libraries/AP_HAL/utility/sumd.h | 2 +- libraries/AP_HAL_ChibiOS/RCOutput.cpp | 24 +- libraries/AP_HAL_ChibiOS/SPIDevice.cpp | 61 +- libraries/AP_HAL_ChibiOS/SPIDevice.h | 20 +- .../AP_HAL_ChibiOS/hwdef/ARKV6X/hwdef.dat | 14 +- .../hwdef/AeroFox-Airspeed-DLVR/hwdef.dat | 2 +- .../hwdef/AeroFox-Airspeed/hwdef.dat | 2 +- .../hwdef/AtomRCF405NAVI/hwdef.dat | 11 +- .../defaults.parm | 2 +- .../CubeOrangePlus-SimOnHardWare/hwdef.dat | 3 + .../hwdef/CubeOrangePlus/hwdef.dat | 7 +- .../hwdef/FlywooF405Pro/hwdef.dat | 3 + .../AP_HAL_ChibiOS/hwdef/HerePro/hwdef.dat | 2 + .../AP_HAL_ChibiOS/hwdef/JFB110/README.md | 140 + .../AP_HAL_ChibiOS/hwdef/JFB110/defaults.parm | 28 + .../AP_HAL_ChibiOS/hwdef/JFB110/hwdef-bl.dat | 139 + .../AP_HAL_ChibiOS/hwdef/JFB110/hwdef.dat | 352 ++ .../hwdef/KakuteF7Mini/hwdef.dat | 4 +- .../hwdef/MatekF405-TE/hwdef.dat | 5 +- .../hwdef/MatekF405-Wing/hwdef.dat | 12 +- .../hwdef/MatekL431-ADSB/hwdef-bl.dat | 2 + .../hwdef/MatekL431-ADSB/hwdef.dat | 11 + .../hwdef/SPRacingH7RF/README.md | 91 +- .../hwdef/SPRacingH7RF/SPRacingH7_Board.JPG | Bin 146019 -> 0 bytes .../hwdef/SPRacingH7RF/defaults.parm | 7 + .../hwdef/SPRacingH7RF/spracingh7rf.jpg | Bin 0 -> 63666 bytes .../SPRacingH7RF/spracingh7rf_bottom.jpg | Bin 0 -> 145513 bytes .../SPRacingH7RF/spracingh7rf_connectors.jpg | Bin 0 -> 385654 bytes .../hwdef/SPRacingH7RF/spracingh7rf_top.jpg | Bin 0 -> 122790 bytes .../AP_HAL_ChibiOS/hwdef/Sierra-F9P/hwdef.dat | 1 + .../hwdef/Sierra-PrecisionPoint/hwdef.dat | 1 + .../hwdef/SpeedyBeeF405Mini/hwdef.dat | 3 + .../hwdef/SpeedyBeeF405WING/Readme.md | 6 +- .../hwdef/SpeedyBeeF405WING/hwdef.dat | 3 + libraries/AP_HAL_ChibiOS/hwdef/common/flash.c | 2 + .../AP_HAL_ChibiOS/hwdef/omnibusf4/hwdef.dat | 3 +- .../hwdef/omnibusf4pro/hwdef.dat | 7 +- .../hwdef/revo-mini-i2c/hwdef.dat | 2 + .../AP_HAL_ChibiOS/hwdef/revo-mini/hwdef.dat | 1 + .../hwdef/scripts/STM32H755xx.py | 1287 ++++++ .../hwdef/scripts/chibios_hwdef.py | 6 +- .../hwdef/scripts/defaults_bootloader.h | 4 - .../hwdef/scripts/defaults_periph.h | 38 + libraries/AP_HAL_Linux/RCInput.cpp | 13 +- libraries/AP_HAL_Linux/sbus.cpp | 186 - libraries/AP_HAL_Linux/sbus.h | 6 - libraries/AP_HAL_SITL/HAL_SITL_Class.cpp | 4 +- libraries/AP_HAL_SITL/I2CDevice.cpp | 4 +- libraries/AP_HAL_SITL/I2CDevice.h | 4 +- libraries/AP_HAL_SITL/SITL_Periph_State.cpp | 15 + libraries/AP_HAL_SITL/SITL_Periph_State.h | 4 +- libraries/AP_HAL_SITL/SITL_State.h | 2 +- libraries/AP_HAL_SITL/SITL_State_common.h | 2 +- libraries/AP_HAL_SITL/Scheduler.cpp | 2 - libraries/AP_Hott_Telem/AP_Hott_Telem.cpp | 2 + libraries/AP_ICEngine/AP_ICEngine.cpp | 11 +- libraries/AP_ICEngine/AP_ICEngine.h | 7 +- .../AP_InertialSensor/AP_InertialSensor.cpp | 12 + .../AP_InertialSensor/AP_InertialSensor.h | 12 + .../AP_InertialSensor_BMI088.cpp | 2 +- .../AP_InertialSensor_Backend.cpp | 50 +- .../AP_InertialSensor_Backend.h | 2 +- libraries/AP_Logger/AP_Logger_Backend.cpp | 1 + libraries/AP_Logger/AP_Logger_File.cpp | 8 +- libraries/AP_Logger/AP_Logger_File.h | 2 +- libraries/AP_Logger/LogStructure.h | 7 +- libraries/AP_MSP/AP_MSP_Telem_Backend.cpp | 6 + libraries/AP_Math/crc.cpp | 10 + libraries/AP_Math/crc.h | 1 + libraries/AP_Motors/AP_MotorsMulticopter.cpp | 45 +- libraries/AP_Motors/AP_MotorsMulticopter.h | 1 + libraries/AP_Mount/AP_Mount_Viewpro.cpp | 5 + libraries/AP_Mount/AP_Mount_Xacti.cpp | 319 +- libraries/AP_Mount/AP_Mount_Xacti.h | 59 +- libraries/AP_NMEA_Output/AP_NMEA_Output.cpp | 4 + libraries/AP_Notify/AP_Notify.cpp | 3 +- libraries/AP_Notify/AP_Notify.h | 4 + libraries/AP_Notify/NeoPixel.cpp | 6 +- libraries/AP_OLC/AP_OLC.cpp | 70 +- libraries/AP_OLC/AP_OLC.h | 16 +- libraries/AP_OLC/tests/test_olc.cpp | 52 + libraries/AP_OLC/tests/wscript | 7 + libraries/AP_OSD/AP_OSD_Screen.cpp | 18 +- libraries/AP_OpenDroneID/AP_OpenDroneID.cpp | 10 +- libraries/AP_OpenDroneID/AP_OpenDroneID.h | 8 +- libraries/AP_Param/AP_Param.h | 2 + libraries/AP_Proximity/AP_Proximity.cpp | 10 + libraries/AP_Proximity/AP_Proximity.h | 3 + libraries/AP_Proximity/AP_Proximity_LD06.cpp | 198 + libraries/AP_Proximity/AP_Proximity_LD06.h | 69 + .../AP_Proximity/AP_Proximity_Params.cpp | 2 +- libraries/AP_Proximity/AP_Proximity_config.h | 9 + .../AP_RCProtocol/AP_RCProtocol_Backend.cpp | 5 +- .../AP_RCProtocol/AP_RCProtocol_Backend.h | 2 +- .../AP_RCProtocol/AP_RCProtocol_SBUS.cpp | 31 +- libraries/AP_RCProtocol/AP_RCProtocol_SBUS.h | 5 +- libraries/AP_RCProtocol/tests/test_sbus.cpp | 46 + libraries/AP_RCProtocol/tests/wscript | 8 + libraries/AP_RCTelemetry/AP_CRSF_Telem.cpp | 14 +- .../AP_RCTelemetry/AP_Spektrum_Telem.cpp | 8 + libraries/AP_RTC/AP_RTC.cpp | 6 + libraries/AP_RTC/AP_RTC.h | 6 + libraries/AP_RTC/AP_RTC_config.h | 7 + libraries/AP_RangeFinder/AP_RangeFinder.cpp | 5 + .../AP_RangeFinder/AP_RangeFinder_BLPing.cpp | 9 + .../AP_RangeFinder/AP_RangeFinder_BLPing.h | 7 + .../AP_RangeFinder/AP_RangeFinder_Backend.h | 2 +- .../AP_RangeFinder_LightWareSerial.h | 2 +- .../AP_RangeFinder/AP_RangeFinder_MAVLink.cpp | 19 +- .../AP_RangeFinder/AP_RangeFinder_MAVLink.h | 5 + libraries/AP_SBusOut/AP_SBusOut.cpp | 15 +- libraries/AP_Scripting/AP_Scripting.cpp | 2 + libraries/AP_Scripting/AP_Scripting.h | 4 +- .../AP_Scripting/AP_Scripting_CANSensor.cpp | 4 +- .../AP_Scripting/AP_Scripting_CANSensor.h | 14 +- libraries/AP_Scripting/AP_Scripting_config.h | 9 +- .../AP_Scripting/applets/revert_param.lua | 7 + .../winch-control.lua} | 4 +- .../AP_Scripting/applets/winch-control.md | 20 + libraries/AP_Scripting/docs/docs.lua | 10 + .../AP_Scripting/drivers/EFI_Halo6000.lua | 7 +- .../AP_Scripting/drivers/Generator_SVFFI.lua | 246 ++ .../AP_Scripting/drivers/Generator_SVFFI.md | 35 + libraries/AP_Scripting/drivers/INF_Inject.lua | 247 ++ libraries/AP_Scripting/drivers/INF_Inject.md | 38 + .../generator/description/bindings.desc | 40 +- libraries/AP_Scripting/generator/src/main.c | 31 +- libraries/AP_Scripting/lua_bindings.cpp | 16 +- libraries/AP_Scripting/lua_bindings.h | 1 + libraries/AP_Scripting/lua_scripts.cpp | 2 + libraries/AP_SerialLED/AP_SerialLED.cpp | 9 + libraries/AP_SerialLED/AP_SerialLED.h | 5 +- .../AP_ServoRelayEvents.cpp | 16 + libraries/AP_Stats/AP_Stats.cpp | 2 + libraries/AP_TECS/AP_TECS.cpp | 4 + .../AP_TemperatureSensor.cpp | 54 + .../AP_TemperatureSensor.h | 4 + .../AP_TemperatureSensor_Analog.cpp | 97 + .../AP_TemperatureSensor_Analog.h | 45 + .../AP_TemperatureSensor_Params.cpp | 2 +- .../AP_TemperatureSensor_Params.h | 1 + .../AP_TemperatureSensor_config.h | 3 + libraries/AP_Winch/AP_Winch.cpp | 4 +- libraries/AP_Winch/AP_Winch.h | 5 +- libraries/AP_Winch/AP_Winch_Daiwa.cpp | 84 +- libraries/AP_Winch/AP_Winch_Daiwa.h | 13 + libraries/Filter/HarmonicNotchFilter.cpp | 25 +- libraries/Filter/HarmonicNotchFilter.h | 17 +- libraries/Filter/LowPassFilter2p.cpp | 13 +- libraries/Filter/NotchFilter.cpp | 20 +- libraries/Filter/NotchFilter.h | 4 +- .../TransferFunctionCheck.cpp | 2 +- libraries/GCS_MAVLink/GCS.h | 23 +- libraries/GCS_MAVLink/GCS_Common.cpp | 178 +- libraries/GCS_MAVLink/GCS_MAVLink.cpp | 6 +- libraries/GCS_MAVLink/GCS_config.h | 12 + libraries/GCS_MAVLink/MAVLink_routing.cpp | 18 +- libraries/GCS_MAVLink/MAVLink_routing.h | 3 + libraries/GCS_MAVLink/MissionItemProtocol.cpp | 2 + .../GCS_MAVLink/examples/routing/routing.cpp | 13 +- libraries/SITL/SIM_ADSB.cpp | 38 +- libraries/SITL/SIM_Aircraft.cpp | 7 + libraries/SITL/SIM_GPS.cpp | 6 +- libraries/SITL/SIM_Gimbal.cpp | 37 +- libraries/SITL/SIM_Morse.cpp | 7 +- libraries/SITL/SIM_RF_MAVLink.cpp | 9 +- libraries/SITL/SIM_RF_MAVLink.h | 2 +- libraries/SITL/SIM_Ship.cpp | 9 +- libraries/SITL/SIM_Ship.h | 1 + libraries/SITL/SIM_Vicon.cpp | 15 +- libraries/SITL/SIM_Vicon.h | 2 + libraries/SITL/SIM_config.h | 2 +- libraries/SITL/SITL.cpp | 39 +- libraries/SITL/SITL_Airspeed.cpp | 44 + libraries/SRV_Channel/SRV_Channel.cpp | 21 +- libraries/SRV_Channel/SRV_Channel.h | 3 + modules/mavlink | 2 +- 439 files changed, 12315 insertions(+), 3705 deletions(-) mode change 100644 => 100755 Tools/IO_Firmware/iofirmware_f103_dshot_highpolh.bin mode change 100644 => 100755 Tools/IO_Firmware/iofirmware_f103_dshot_lowpolh.bin mode change 100644 => 100755 Tools/IO_Firmware/iofirmware_f103_highpolh.bin mode change 100644 => 100755 Tools/IO_Firmware/iofirmware_f103_lowpolh.bin rename Tools/autotest/ArduCopter_Tests/{PayLoadPlaceMission => PayloadPlaceMission}/copter_payload_place.txt (100%) create mode 100755 Tools/bootloaders/JFB110_bl.bin create mode 100755 Tools/bootloaders/MatekL431-ADSB_bl.bin create mode 100644 Tools/bootloaders/MatekL431-ADSB_bl.hex create mode 100755 Tools/bootloaders/Pixhawk6X_bl.elf create mode 100644 libraries/AP_GPS/AP_GPS_FixType.h create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/JFB110/README.md create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/JFB110/defaults.parm create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/JFB110/hwdef-bl.dat create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/JFB110/hwdef.dat create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/MatekL431-ADSB/hwdef-bl.dat create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/MatekL431-ADSB/hwdef.dat delete mode 100644 libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/SPRacingH7_Board.JPG create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/spracingh7rf.jpg create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/spracingh7rf_bottom.jpg create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/spracingh7rf_connectors.jpg create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/spracingh7rf_top.jpg create mode 100644 libraries/AP_HAL_ChibiOS/hwdef/scripts/STM32H755xx.py delete mode 100644 libraries/AP_HAL_Linux/sbus.cpp delete mode 100644 libraries/AP_HAL_Linux/sbus.h create mode 100644 libraries/AP_OLC/tests/test_olc.cpp create mode 100644 libraries/AP_OLC/tests/wscript create mode 100644 libraries/AP_Proximity/AP_Proximity_LD06.cpp create mode 100644 libraries/AP_Proximity/AP_Proximity_LD06.h create mode 100644 libraries/AP_RCProtocol/tests/test_sbus.cpp create mode 100644 libraries/AP_RCProtocol/tests/wscript create mode 100644 libraries/AP_RTC/AP_RTC_config.h rename libraries/AP_Scripting/{examples/winch-test.lua => applets/winch-control.lua} (95%) create mode 100644 libraries/AP_Scripting/applets/winch-control.md create mode 100644 libraries/AP_Scripting/drivers/Generator_SVFFI.lua create mode 100644 libraries/AP_Scripting/drivers/Generator_SVFFI.md create mode 100644 libraries/AP_Scripting/drivers/INF_Inject.lua create mode 100644 libraries/AP_Scripting/drivers/INF_Inject.md create mode 100644 libraries/AP_TemperatureSensor/AP_TemperatureSensor_Analog.cpp create mode 100644 libraries/AP_TemperatureSensor/AP_TemperatureSensor_Analog.h create mode 100644 libraries/SITL/SITL_Airspeed.cpp diff --git a/.github/workflows/test_environment.yml b/.github/workflows/test_environment.yml index 22c8f2b0e42f0..c7ee632a2d9e0 100644 --- a/.github/workflows/test_environment.yml +++ b/.github/workflows/test_environment.yml @@ -28,14 +28,14 @@ jobs: fail-fast: false # don't cancel if a job from the matrix fails matrix: include: - - os: ubuntu - name: bionic - os: ubuntu name: focal - os: ubuntu name: jammy - os: ubuntu name: lunar + - os: ubuntu + name: mantic - os: archlinux name: latest - os: debian @@ -77,7 +77,7 @@ jobs: with: submodules: 'recursive' - name: test install environment ${{matrix.os}}.${{matrix.name}} - timeout-minutes: 30 + timeout-minutes: 45 env: DISABLE_MAVNATIVE: True DEBIAN_FRONTEND: noninteractive diff --git a/.github/workflows/test_size.yml b/.github/workflows/test_size.yml index 5aacd030311f4..84bb5bb154ec8 100644 --- a/.github/workflows/test_size.yml +++ b/.github/workflows/test_size.yml @@ -71,6 +71,8 @@ jobs: config: [ Durandal, MatekF405, + KakuteF7, + MatekH743-bdshot, Pixhawk1-1M, MatekF405-CAN, # see special "build bootloader" code below DrotekP3Pro, # see special "build bootloader" code below diff --git a/AntennaTracker/AntennaTracker.txt b/AntennaTracker/AntennaTracker.txt index f66169dee5093..8ced3605b2246 100644 --- a/AntennaTracker/AntennaTracker.txt +++ b/AntennaTracker/AntennaTracker.txt @@ -109,7 +109,7 @@ around. It might even damage itself. AntennaTracker (like other ardupilot software such as ArduPlane, ArduRover etc) has configuration values that control and tailor its operation, and which are stored in EEPROM on the processor. The configuration is restored from -EEPROM every time the processsor starts. +EEPROM every time the processor starts. You can use MissionPlanner, mavproxy or apm_planner or other mavlink compatible software to check and change the configuration of your AntennaTracker. @@ -219,7 +219,7 @@ the vehicle, cd to the ArduPlane directory and run this: ../Tools/autotest/sim_arduplane.sh -T --aircraft test -The -T flag tells sim_arduplane.sh to start an entenna tracker +The -T flag tells sim_arduplane.sh to start an antenna tracker simulator and also start a virtual antenna tracker in a window. To start the antenna tracker running run "tracker start" in the diff --git a/AntennaTracker/GCS_Mavlink.h b/AntennaTracker/GCS_Mavlink.h index 84313915464f4..38f7cdb483e71 100644 --- a/AntennaTracker/GCS_Mavlink.h +++ b/AntennaTracker/GCS_Mavlink.h @@ -14,7 +14,7 @@ class GCS_MAVLINK_Tracker : public GCS_MAVLINK protected: // telem_delay is not used by Tracker but is pure virtual, thus - // this implementaiton. it probably *should* be used by Tracker, + // this implementation. it probably *should* be used by Tracker, // as currently Tracker may brick XBees uint32_t telem_delay() const override { return 0; } diff --git a/AntennaTracker/Parameters.cpp b/AntennaTracker/Parameters.cpp index 2b146ef519cdc..e1757fba32e4c 100644 --- a/AntennaTracker/Parameters.cpp +++ b/AntennaTracker/Parameters.cpp @@ -130,7 +130,7 @@ const AP_Param::Info Tracker::var_info[] = { // @Param: ONOFF_PITCH_MINT // @DisplayName: Pitch minimum movement time - // @Description: Minimim amount of time in seconds to move in pitch + // @Description: Minimum amount of time in seconds to move in pitch // @Units: s // @Increment: 0.01 // @Range: 0 2 @@ -541,6 +541,18 @@ const AP_Param::Info Tracker::var_info[] = { // @Path: ../libraries/AP_Logger/AP_Logger.cpp GOBJECT(logger, "LOG", AP_Logger), +#if HAL_NAVEKF2_AVAILABLE + // @Group: EK2_ + // @Path: ../libraries/AP_NavEKF2/AP_NavEKF2.cpp + GOBJECTN(ahrs.EKF2, NavEKF2, "EK2_", NavEKF2), +#endif + +#if HAL_NAVEKF3_AVAILABLE + // @Group: EK3_ + // @Path: ../libraries/AP_NavEKF3/AP_NavEKF3.cpp + GOBJECTN(ahrs.EKF3, NavEKF3, "EK3_", NavEKF3), +#endif + AP_VAREND }; diff --git a/AntennaTracker/Parameters.h b/AntennaTracker/Parameters.h index a3192e24b5594..972c36f52505e 100644 --- a/AntennaTracker/Parameters.h +++ b/AntennaTracker/Parameters.h @@ -130,6 +130,8 @@ class Parameters { k_param_disarm_pwm, k_param_auto_opts, + k_param_NavEKF2, + k_param_NavEKF3, k_param_logger = 253, // 253 - Logging Group diff --git a/ArduCopter/AP_ExternalControl_Copter.cpp b/ArduCopter/AP_ExternalControl_Copter.cpp index e5f1f49ec7421..35353a412618f 100644 --- a/ArduCopter/AP_ExternalControl_Copter.cpp +++ b/ArduCopter/AP_ExternalControl_Copter.cpp @@ -19,7 +19,7 @@ bool AP_ExternalControl_Copter::set_linear_velocity_and_yaw_rate(const Vector3f } const float yaw_rate_cds = isnan(yaw_rate_rads)? 0: degrees(yaw_rate_rads)*100; - // Copter velocity is positive if aicraft is moving up which is opposite the incoming NED frame. + // Copter velocity is positive if aircraft is moving up which is opposite the incoming NED frame. Vector3f velocity_NEU_ms { linear_velocity.x, linear_velocity.y, diff --git a/ArduCopter/Copter.h b/ArduCopter/Copter.h index b6d5ce552fb2a..5af9342850878 100644 --- a/ArduCopter/Copter.h +++ b/ArduCopter/Copter.h @@ -234,7 +234,8 @@ class Copter : public AP_Vehicle { friend class ModeZigZag; friend class ModeAutorotate; friend class ModeTurtle; - friend class AP_ExternalControl_Copter; + + friend class _AutoTakeoff; Copter(void); diff --git a/ArduCopter/GCS_Mavlink.cpp b/ArduCopter/GCS_Mavlink.cpp index 74f16ad7edd35..7c74d377dc275 100644 --- a/ArduCopter/GCS_Mavlink.cpp +++ b/ArduCopter/GCS_Mavlink.cpp @@ -511,7 +511,9 @@ static const ap_message STREAM_EXTENDED_STATUS_msgs[] = { MSG_GPS2_RAW, MSG_GPS2_RTK, MSG_NAV_CONTROLLER_OUTPUT, +#if AP_FENCE_ENABLED MSG_FENCE_STATUS, +#endif MSG_POSITION_TARGET_GLOBAL_INT, }; static const ap_message STREAM_POSITION_msgs[] = { @@ -795,6 +797,33 @@ MAV_RESULT GCS_MAVLINK_Copter::handle_command_int_packet(const mavlink_command_i return handle_MAV_CMD_DO_WINCH(packet); #endif + case MAV_CMD_NAV_LOITER_UNLIM: + if (!copter.set_mode(Mode::Number::LOITER, ModeReason::GCS_COMMAND)) { + return MAV_RESULT_FAILED; + } + return MAV_RESULT_ACCEPTED; + + case MAV_CMD_NAV_RETURN_TO_LAUNCH: + if (!copter.set_mode(Mode::Number::RTL, ModeReason::GCS_COMMAND)) { + return MAV_RESULT_FAILED; + } + return MAV_RESULT_ACCEPTED; + + case MAV_CMD_NAV_VTOL_LAND: + case MAV_CMD_NAV_LAND: + if (!copter.set_mode(Mode::Number::LAND, ModeReason::GCS_COMMAND)) { + return MAV_RESULT_FAILED; + } + return MAV_RESULT_ACCEPTED; + +#if MODE_AUTO_ENABLED == ENABLED + case MAV_CMD_DO_LAND_START: + if (copter.mode_auto.jump_to_landing_sequence_auto_RTL(ModeReason::GCS_COMMAND)) { + return MAV_RESULT_ACCEPTED; + } + return MAV_RESULT_FAILED; +#endif + default: return GCS_MAVLINK::handle_command_int_packet(packet, msg); } @@ -838,33 +867,6 @@ MAV_RESULT GCS_MAVLINK_Copter::handle_command_long_packet(const mavlink_command_ return MAV_RESULT_ACCEPTED; } -#if MODE_AUTO_ENABLED == ENABLED - case MAV_CMD_DO_LAND_START: - if (copter.mode_auto.jump_to_landing_sequence_auto_RTL(ModeReason::GCS_COMMAND)) { - return MAV_RESULT_ACCEPTED; - } - return MAV_RESULT_FAILED; -#endif - - case MAV_CMD_NAV_LOITER_UNLIM: - if (!copter.set_mode(Mode::Number::LOITER, ModeReason::GCS_COMMAND)) { - return MAV_RESULT_FAILED; - } - return MAV_RESULT_ACCEPTED; - - case MAV_CMD_NAV_RETURN_TO_LAUNCH: - if (!copter.set_mode(Mode::Number::RTL, ModeReason::GCS_COMMAND)) { - return MAV_RESULT_FAILED; - } - return MAV_RESULT_ACCEPTED; - - case MAV_CMD_NAV_VTOL_LAND: - case MAV_CMD_NAV_LAND: - if (!copter.set_mode(Mode::Number::LAND, ModeReason::GCS_COMMAND)) { - return MAV_RESULT_FAILED; - } - return MAV_RESULT_ACCEPTED; - default: return GCS_MAVLINK::handle_command_long_packet(packet, msg); } @@ -1478,7 +1480,7 @@ void GCS_MAVLINK_Copter::handleMessage(const mavlink_message_t &msg) } // end handle mavlink -MAV_RESULT GCS_MAVLINK_Copter::handle_flight_termination(const mavlink_command_long_t &packet) { +MAV_RESULT GCS_MAVLINK_Copter::handle_flight_termination(const mavlink_command_int_t &packet) { #if ADVANCED_FAILSAFE == ENABLED if (GCS_MAVLINK::handle_flight_termination(packet) == MAV_RESULT_ACCEPTED) { return MAV_RESULT_ACCEPTED; diff --git a/ArduCopter/GCS_Mavlink.h b/ArduCopter/GCS_Mavlink.h index 59c29caf99514..eda1fd42c65cb 100644 --- a/ArduCopter/GCS_Mavlink.h +++ b/ArduCopter/GCS_Mavlink.h @@ -18,7 +18,7 @@ class GCS_MAVLINK_Copter : public GCS_MAVLINK uint32_t telem_delay() const override; - MAV_RESULT handle_flight_termination(const mavlink_command_long_t &packet) override; + MAV_RESULT handle_flight_termination(const mavlink_command_int_t &packet) override; uint8_t sysid_my_gcs() const override; bool sysid_enforce() const override; diff --git a/ArduCopter/ReleaseNotes.txt b/ArduCopter/ReleaseNotes.txt index f838bb14c6288..b3c7b19c2e972 100644 --- a/ArduCopter/ReleaseNotes.txt +++ b/ArduCopter/ReleaseNotes.txt @@ -1,5 +1,27 @@ ArduPilot Copter Release Notes: ------------------------------------------------------------------ +Copter 4.4.2-beta1 13-Oct-2023 +Changes from 4.4.1 +1) Autopilot related enhancements and fixes + - BETAFPV-F405 support + - MambaF405v2 battery and serial setup corrected + - mRo Control Zero OEM H7 bdshot support + - SpeedyBee-F405-Wing gets VTX power control + - SpeedyBee-F405-Mini support + - T-Motor H743 Mini support +2) EKF3 supports baroless boards +3) GPS-for-yaw allows base GPS to update at only 3Hz +4) INA battery monitor supports config of shunt resistor used (see BATTx_SHUNT) +5) Log VER message includes vehicle type +6) OpenDroneId option to auto-store IDs in persistent flash +7) RC SBUS protection against invalid data in first 4 channels +8) Bug fixes + - BMI088 IMU error value handling fixed to avoid occasional negative spike + - Dev environment CI autotest stability improvements + - OSD correct DisplayPort BF MSP symbols + - OSD option to correct direction arrows for BF font set + - Sensor status reporting to GCS fixed for baroless boards +------------------------------------------------------------------ Copter 4.4.1 26-Sep-2023 / 4.4.1-beta2 14-Sep-2023 Changes from 4.4.1-beta1 1) Autopilot related enhancements diff --git a/ArduCopter/crash_check.cpp b/ArduCopter/crash_check.cpp index 18a04aec4fdf8..786e56b5a0e52 100644 --- a/ArduCopter/crash_check.cpp +++ b/ArduCopter/crash_check.cpp @@ -101,7 +101,7 @@ void Copter::thrust_loss_check() { static uint16_t thrust_loss_counter; // number of iterations vehicle may have been crashed - // no-op if suppresed by flight options param + // no-op if suppressed by flight options param if ((copter.g2.flight_options & uint32_t(FlightOptions::DISABLE_THRUST_LOSS_CHECK)) != 0) { return; } @@ -181,7 +181,7 @@ void Copter::thrust_loss_check() // check for a large yaw imbalance, could be due to badly calibrated ESC or misaligned motors void Copter::yaw_imbalance_check() { - // no-op if suppresed by flight options param + // no-op if suppressed by flight options param if ((copter.g2.flight_options & uint32_t(FlightOptions::DISABLE_YAW_IMBALANCE_WARNING)) != 0) { return; } diff --git a/ArduCopter/mode.h b/ArduCopter/mode.h index 28c78411797a8..11cbf3afedce0 100644 --- a/ArduCopter/mode.h +++ b/ArduCopter/mode.h @@ -8,6 +8,27 @@ class ParametersG2; class GCS_Copter; +// object shared by both Guided and Auto for takeoff. +// position controller controls vehicle but the user can control the yaw. +class _AutoTakeoff { +public: + void run(); + void start(float complete_alt_cm, bool terrain_alt); + bool get_position(Vector3p& completion_pos); + + bool complete; // true when takeoff is complete + +private: + // altitude above-ekf-origin below which auto takeoff does not control horizontal position + bool no_nav_active; + float no_nav_alt_cm; + + // auto takeoff variables + float complete_alt_cm; // completion altitude expressed in cm above ekf origin or above terrain (depending upon auto_takeoff_terrain_alt) + bool terrain_alt; // true if altitudes are above terrain + Vector3p complete_pos; // target takeoff position as offset from ekf origin in cm +}; + class Mode { public: @@ -51,6 +72,8 @@ class Mode { // do not allow copying CLASS_NO_COPY(Mode); + friend class _AutoTakeoff; + // returns a unique number specific to this mode virtual Number mode_number() const = 0; @@ -215,21 +238,7 @@ class Mode { virtual bool do_user_takeoff_start(float takeoff_alt_cm); - // method shared by both Guided and Auto for takeoff. - // position controller controls vehicle but the user can control the yaw. - void auto_takeoff_run(); - void auto_takeoff_start(float complete_alt_cm, bool terrain_alt); - bool auto_takeoff_get_position(Vector3p& completion_pos); - - // altitude above-ekf-origin below which auto takeoff does not control horizontal position - static bool auto_takeoff_no_nav_active; - static float auto_takeoff_no_nav_alt_cm; - - // auto takeoff variables - static float auto_takeoff_complete_alt_cm; // completion altitude expressed in cm above ekf origin or above terrain (depending upon auto_takeoff_terrain_alt) - static bool auto_takeoff_terrain_alt; // true if altitudes are above terrain - static bool auto_takeoff_complete; // true when takeoff is complete - static Vector3p auto_takeoff_complete_pos; // target takeoff position as offset from ekf origin in cm + static _AutoTakeoff auto_takeoff; public: // Navigation Yaw control diff --git a/ArduCopter/mode_auto.cpp b/ArduCopter/mode_auto.cpp index cdf41a4f7aa47..f60a512e81355 100644 --- a/ArduCopter/mode_auto.cpp +++ b/ArduCopter/mode_auto.cpp @@ -350,7 +350,7 @@ void ModeAuto::takeoff_start(const Location& dest_loc) pos_control->init_z_controller(); // initialise alt for WP_NAVALT_MIN and set completion alt - auto_takeoff_start(alt_target_cm, alt_target_terrain); + auto_takeoff.start(alt_target_cm, alt_target_terrain); // set submode set_submode(SubMode::TAKEOFF); @@ -364,7 +364,7 @@ bool ModeAuto::wp_start(const Location& dest_loc) Vector3f stopping_point; if (_mode == SubMode::TAKEOFF) { Vector3p takeoff_complete_pos; - if (auto_takeoff_get_position(takeoff_complete_pos)) { + if (auto_takeoff.get_position(takeoff_complete_pos)) { stopping_point = takeoff_complete_pos.tofloat(); } } @@ -536,7 +536,7 @@ bool ModeAuto::is_landing() const bool ModeAuto::is_taking_off() const { - return ((_mode == SubMode::TAKEOFF) && !auto_takeoff_complete); + return ((_mode == SubMode::TAKEOFF) && !auto_takeoff.complete); } // auto_payload_place_start - initialises controller to implement a placing @@ -965,7 +965,7 @@ void ModeAuto::takeoff_run() if ((copter.g2.auto_options & (int32_t)Options::AllowTakeOffWithoutRaisingThrottle) != 0) { copter.set_auto_armed(true); } - auto_takeoff_run(); + auto_takeoff.run(); } // auto_wp_run - runs the auto waypoint controller @@ -1326,13 +1326,13 @@ void ModeAuto::payload_place_run() FALLTHROUGH; case PayloadPlaceStateType_Ascent_Start: { - auto_takeoff_start(nav_payload_place.descent_start_altitude_cm, false); + auto_takeoff.start(nav_payload_place.descent_start_altitude_cm, false); nav_payload_place.state = PayloadPlaceStateType_Ascent; } break; case PayloadPlaceStateType_Ascent: - if (auto_takeoff_complete) { + if (auto_takeoff.complete) { nav_payload_place.state = PayloadPlaceStateType_Done; } break; @@ -1782,7 +1782,11 @@ void ModeAuto::do_nav_delay(const AP_Mission::Mission_Command& cmd) nav_delay_time_max_ms = cmd.content.nav_delay.seconds * 1000; // convert seconds to milliseconds } else { // absolute delay to utc time +#if AP_RTC_ENABLED nav_delay_time_max_ms = AP::rtc().get_time_utc(cmd.content.nav_delay.hour_utc, cmd.content.nav_delay.min_utc, cmd.content.nav_delay.sec_utc, 0); +#else + nav_delay_time_max_ms = 0; +#endif } gcs().send_text(MAV_SEVERITY_INFO, "Delaying %u sec", (unsigned)(nav_delay_time_max_ms/1000)); } @@ -1970,13 +1974,13 @@ bool ModeAuto::verify_takeoff() { #if AP_LANDINGGEAR_ENABLED // if we have reached our destination - if (auto_takeoff_complete) { + if (auto_takeoff.complete) { // retract the landing gear copter.landinggear.retract_after_takeoff(); } #endif - return auto_takeoff_complete; + return auto_takeoff.complete; } // verify_land - returns true if landing has been completed diff --git a/ArduCopter/mode_autorotate.cpp b/ArduCopter/mode_autorotate.cpp index fb009a1d3421d..414401c2e9a57 100644 --- a/ArduCopter/mode_autorotate.cpp +++ b/ArduCopter/mode_autorotate.cpp @@ -47,7 +47,7 @@ bool ModeAutorotate::init(bool ignore_checks) // Display message gcs().send_text(MAV_SEVERITY_INFO, "Autorotation initiated"); - // Set all inial flags to on + // Set all intial flags to on _flags.entry_initial = 1; _flags.ss_glide_initial = 1; _flags.flare_initial = 1; @@ -173,7 +173,7 @@ void ModeAutorotate::run() g2.arot.set_desired_fwd_speed(); // Set target head speed in head speed controller - _target_head_speed = HEAD_SPEED_TARGET_RATIO; //Ensure target hs is set to glide in case hs hasent reached target for glide + _target_head_speed = HEAD_SPEED_TARGET_RATIO; //Ensure target hs is set to glide in case hs has not reached target for glide g2.arot.set_target_head_speed(_target_head_speed); // Prevent running the initial glide functions again diff --git a/ArduCopter/mode_guided.cpp b/ArduCopter/mode_guided.cpp index 4d0f9e3154cfb..9c2914de8b7bf 100644 --- a/ArduCopter/mode_guided.cpp +++ b/ArduCopter/mode_guided.cpp @@ -153,7 +153,7 @@ bool ModeGuided::do_user_takeoff_start(float takeoff_alt_cm) pos_control->init_z_controller(); // initialise alt for WP_NAVALT_MIN and set completion alt - auto_takeoff_start(alt_target_cm, alt_target_terrain); + auto_takeoff.start(alt_target_cm, alt_target_terrain); // record takeoff has not completed takeoff_complete = false; @@ -656,8 +656,8 @@ void ModeGuided::set_angle(const Quaternion &attitude_quat, const Vector3f &ang_ // called by guided_run at 100hz or more void ModeGuided::takeoff_run() { - auto_takeoff_run(); - if (auto_takeoff_complete && !takeoff_complete) { + auto_takeoff.run(); + if (auto_takeoff.complete && !takeoff_complete) { takeoff_complete = true; #if AP_LANDINGGEAR_ENABLED // optionally retract landing gear diff --git a/ArduCopter/mode_systemid.cpp b/ArduCopter/mode_systemid.cpp index 1a942780b8dfc..15dc1eba4f0ed 100644 --- a/ArduCopter/mode_systemid.cpp +++ b/ArduCopter/mode_systemid.cpp @@ -107,7 +107,7 @@ bool ModeSystemId::init(bool ignore_checks) // systemId_exit - clean up systemId controller before exiting void ModeSystemId::exit() { - // reset the feedfoward enabled parameter to the initialized state + // reset the feedforward enabled parameter to the initialized state attitude_control->bf_feedforward(att_bf_feedforward); } @@ -261,11 +261,7 @@ void ModeSystemId::run() attitude_control->input_euler_angle_roll_pitch_euler_rate_yaw(target_roll, target_pitch, target_yaw_rate); // output pilot's throttle - if (copter.is_tradheli()) { - attitude_control->set_throttle_out(pilot_throttle_scaled, false, g.throttle_filt); - } else { - attitude_control->set_throttle_out(pilot_throttle_scaled, true, g.throttle_filt); - } + attitude_control->set_throttle_out(pilot_throttle_scaled, !copter.is_tradheli(), g.throttle_filt); if (log_subsample <= 0) { log_data(); diff --git a/ArduCopter/takeoff.cpp b/ArduCopter/takeoff.cpp index 790936ac6bb94..14fb7d39da7ba 100644 --- a/ArduCopter/takeoff.cpp +++ b/ArduCopter/takeoff.cpp @@ -1,13 +1,7 @@ #include "Copter.h" Mode::_TakeOff Mode::takeoff; - -bool Mode::auto_takeoff_no_nav_active = false; -float Mode::auto_takeoff_no_nav_alt_cm = 0; -float Mode::auto_takeoff_complete_alt_cm = 0; -bool Mode::auto_takeoff_terrain_alt = false; -bool Mode::auto_takeoff_complete = false; -Vector3p Mode::auto_takeoff_complete_pos; +_AutoTakeoff Mode::auto_takeoff; // This file contains the high-level takeoff logic for Loiter, PosHold, AltHold, Sport modes. // The take-off can be initiated from a GCS NAV_TAKEOFF command which includes a takeoff altitude @@ -118,20 +112,27 @@ void Mode::_TakeOff::do_pilot_takeoff(float& pilot_climb_rate_cm) // auto_takeoff_run - controls the vertical position controller during the process of taking off in auto modes // auto_takeoff_complete set to true when target altitude is within 10% of the take off altitude and less than 50% max climb rate -void Mode::auto_takeoff_run() +void _AutoTakeoff::run() { + const auto &g2 = copter.g2; + const auto &inertial_nav = copter.inertial_nav; + const auto &wp_nav = copter.wp_nav; + auto *motors = copter.motors; + auto *pos_control = copter.pos_control; + auto *attitude_control = copter.attitude_control; + // if not armed set throttle to zero and exit immediately if (!motors->armed() || !copter.ap.auto_armed) { // do not spool down tradheli when on the ground with motor interlock enabled - make_safe_ground_handling(copter.is_tradheli() && motors->get_interlock()); + copter.flightmode->make_safe_ground_handling(copter.is_tradheli() && motors->get_interlock()); // update auto_takeoff_no_nav_alt_cm - auto_takeoff_no_nav_alt_cm = inertial_nav.get_position_z_up_cm() + g2.wp_navalt_min * 100; + no_nav_alt_cm = inertial_nav.get_position_z_up_cm() + g2.wp_navalt_min * 100; return; } // get terrain offset float terr_offset = 0.0f; - if (auto_takeoff_terrain_alt && !wp_nav->get_terrain_offset(terr_offset)) { + if (terrain_alt && !wp_nav->get_terrain_offset(terr_offset)) { // trigger terrain failsafe copter.failsafe_terrain_on_event(); return; @@ -151,7 +152,7 @@ void Mode::auto_takeoff_run() attitude_control->reset_rate_controller_I_terms(); attitude_control->input_thrust_vector_rate_heading(pos_control->get_thrust_vector(), 0.0); // update auto_takeoff_no_nav_alt_cm - auto_takeoff_no_nav_alt_cm = inertial_nav.get_position_z_up_cm() + g2.wp_navalt_min * 100; + no_nav_alt_cm = inertial_nav.get_position_z_up_cm() + g2.wp_navalt_min * 100; return; } @@ -169,7 +170,7 @@ void Mode::auto_takeoff_run() if (throttle >= MIN(copter.g2.takeoff_throttle_max, 0.9) || (copter.pos_control->get_z_accel_cmss() >= 0.5 * copter.pos_control->get_max_accel_z_cmss()) || (copter.pos_control->get_vel_desired_cms().z >= 0.1 * copter.pos_control->get_max_speed_up_cms()) || - ( auto_takeoff_no_nav_active && (inertial_nav.get_position_z_up_cm() >= auto_takeoff_no_nav_alt_cm))) { + ( no_nav_active && (inertial_nav.get_position_z_up_cm() >= no_nav_alt_cm))) { // throttle > 90% // acceleration > 50% maximum acceleration // velocity > 10% maximum velocity @@ -180,10 +181,10 @@ void Mode::auto_takeoff_run() } // check if we are not navigating because of low altitude - if (auto_takeoff_no_nav_active) { + if (no_nav_active) { // check if vehicle has reached no_nav_alt threshold - if (inertial_nav.get_position_z_up_cm() >= auto_takeoff_no_nav_alt_cm) { - auto_takeoff_no_nav_active = false; + if (inertial_nav.get_position_z_up_cm() >= no_nav_alt_cm) { + no_nav_active = false; } pos_control->relax_velocity_controller_xy(); } else { @@ -194,7 +195,7 @@ void Mode::auto_takeoff_run() pos_control->update_xy_controller(); // command the aircraft to the take off altitude - float pos_z = auto_takeoff_complete_alt_cm + terr_offset; + float pos_z = complete_alt_cm + terr_offset; float vel_z = 0.0; copter.pos_control->input_pos_vel_accel_z(pos_z, vel_z, 0.0); @@ -202,7 +203,7 @@ void Mode::auto_takeoff_run() pos_control->update_z_controller(); // call attitude controller with auto yaw - attitude_control->input_thrust_vector_heading(pos_control->get_thrust_vector(), auto_yaw.get_heading()); + attitude_control->input_thrust_vector_heading(pos_control->get_thrust_vector(), copter.flightmode->auto_yaw.get_heading()); // takeoff complete when we are less than 1% of the stopping distance from the target altitude // and 10% our maximum climb rate @@ -211,40 +212,42 @@ void Mode::auto_takeoff_run() const float stop_distance = 0.5 * sq(vel_threshold_fraction * copter.pos_control->get_max_speed_up_cms()) / copter.pos_control->get_max_accel_z_cmss(); bool reached_altitude = copter.pos_control->get_pos_target_z_cm() >= pos_z - stop_distance; bool reached_climb_rate = copter.pos_control->get_vel_desired_cms().z < copter.pos_control->get_max_speed_up_cms() * vel_threshold_fraction; - auto_takeoff_complete = reached_altitude && reached_climb_rate; + complete = reached_altitude && reached_climb_rate; // calculate completion for location in case it is needed for a smooth transition to wp_nav - if (auto_takeoff_complete) { - const Vector3p& complete_pos = copter.pos_control->get_pos_target_cm(); - auto_takeoff_complete_pos = Vector3p{complete_pos.x, complete_pos.y, pos_z}; + if (complete) { + const Vector3p& _complete_pos = copter.pos_control->get_pos_target_cm(); + complete_pos = Vector3p{_complete_pos.x, _complete_pos.y, pos_z}; } } -void Mode::auto_takeoff_start(float complete_alt_cm, bool terrain_alt) +void _AutoTakeoff::start(float _complete_alt_cm, bool _terrain_alt) { // auto_takeoff_complete_alt_cm is a problem if equal to auto_takeoff_start_alt_cm - auto_takeoff_complete_alt_cm = complete_alt_cm; - auto_takeoff_terrain_alt = terrain_alt; - auto_takeoff_complete = false; + complete_alt_cm = _complete_alt_cm; + terrain_alt = _terrain_alt; + complete = false; // initialise auto_takeoff_no_nav_alt_cm - auto_takeoff_no_nav_alt_cm = inertial_nav.get_position_z_up_cm() + g2.wp_navalt_min * 100; - if ((g2.wp_navalt_min > 0) && (is_disarmed_or_landed() || !motors->get_interlock())) { + const auto &g2 = copter.g2; + const auto &inertial_nav = copter.inertial_nav; + no_nav_alt_cm = inertial_nav.get_position_z_up_cm() + g2.wp_navalt_min * 100; + if ((g2.wp_navalt_min > 0) && (copter.flightmode->is_disarmed_or_landed() || !copter.motors->get_interlock())) { // we are not flying, climb with no navigation to current alt-above-ekf-origin + wp_navalt_min - auto_takeoff_no_nav_active = true; + no_nav_active = true; } else { - auto_takeoff_no_nav_active = false; + no_nav_active = false; } } // return takeoff final position if takeoff has completed successfully -bool Mode::auto_takeoff_get_position(Vector3p& complete_pos) +bool _AutoTakeoff::get_position(Vector3p& _complete_pos) { // only provide location if takeoff has completed - if (!auto_takeoff_complete) { + if (!complete) { return false; } - complete_pos = auto_takeoff_complete_pos; + complete_pos = _complete_pos; return true; } diff --git a/ArduPlane/Attitude.cpp b/ArduPlane/Attitude.cpp index 9bba585d0f703..39a9461ea63e7 100644 --- a/ArduPlane/Attitude.cpp +++ b/ArduPlane/Attitude.cpp @@ -32,7 +32,7 @@ float Plane::calc_speed_scaler(void) speed_scaler = MIN(speed_scaler, new_scaler); // we also decay the integrator to prevent an integrator from before - // we were at low speed persistint at high speed + // we were at low speed persistent at high speed rollController.decay_I(); pitchController.decay_I(); yawController.decay_I(); @@ -51,7 +51,7 @@ float Plane::calc_speed_scaler(void) } if (!plane.ahrs.airspeed_sensor_enabled() && (plane.flight_option_enabled(FlightOptions::SURPRESS_TKOFF_SCALING)) && - (plane.flight_stage == AP_FixedWing::FlightStage::TAKEOFF)) { //scaling is surpressed during climb phase of automatic takeoffs with no airspeed sensor being used due to problems with inaccurate airspeed estimates + (plane.flight_stage == AP_FixedWing::FlightStage::TAKEOFF)) { //scaling is suppressed during climb phase of automatic takeoffs with no airspeed sensor being used due to problems with inaccurate airspeed estimates return MIN(speed_scaler, 1.0f) ; } return speed_scaler; @@ -486,7 +486,7 @@ int16_t Plane::calc_nav_yaw_coordinated() // user is doing an AUTOTUNE with yaw rate control const float rudd_expo = rudder_in_expo(true); const float yaw_rate = (rudd_expo/SERVO_MAX) * g.acro_yaw_rate; - // add in the corrdinated turn yaw rate to make it easier to fly while tuning the yaw rate controller + // add in the coordinated turn yaw rate to make it easier to fly while tuning the yaw rate controller const float coordination_yaw_rate = degrees(GRAVITY_MSS * tanf(radians(nav_roll_cd*0.01f))/MAX(aparm.airspeed_min,smoothed_airspeed)); commanded_rudder = yawController.get_rate_out(yaw_rate+coordination_yaw_rate, speed_scaler, false); using_rate_controller = true; @@ -658,11 +658,11 @@ void Plane::update_load_factor(void) nav_roll_cd = constrain_int32(nav_roll_cd, -2500, 2500); roll_limit_cd = MIN(roll_limit_cd, 2500); } else if (max_load_factor < aerodynamic_load_factor) { - // the demanded nav_roll would take us past the aerodymamic + // the demanded nav_roll would take us past the aerodynamic // load limit. Limit our roll to a bank angle that will keep // the load within what the airframe can handle. We always // allow at least 25 degrees of roll however, to ensure the - // aircraft can be maneuvered with a bad airspeed estimate. At + // aircraft can be manoeuvred with a bad airspeed estimate. At // 25 degrees the load factor is 1.1 (10%) int32_t roll_limit = degrees(acosf(sq(1.0f / max_load_factor)))*100; if (roll_limit < 2500) { diff --git a/ArduPlane/GCS_Mavlink.cpp b/ArduPlane/GCS_Mavlink.cpp index 15593a66fd7b0..efb77d48129e5 100644 --- a/ArduPlane/GCS_Mavlink.cpp +++ b/ArduPlane/GCS_Mavlink.cpp @@ -596,7 +596,9 @@ static const ap_message STREAM_EXTENDED_STATUS_msgs[] = { MSG_GPS2_RAW, MSG_GPS2_RTK, MSG_NAV_CONTROLLER_OUTPUT, +#if AP_FENCE_ENABLED MSG_FENCE_STATUS, +#endif MSG_POSITION_TARGET_GLOBAL_INT, }; static const ap_message STREAM_POSITION_msgs[] = { @@ -919,11 +921,6 @@ MAV_RESULT GCS_MAVLINK_Plane::handle_command_int_guided_slew_commands(const mavl float new_target_heading = radians(wrap_180(packet.param2)); - // if packet is requesting us to go to the heading we are already going to, we-re already on it. - if ( (is_equal(new_target_heading,plane.guided_state.target_heading))) { // compare two floats as near-enough - return MAV_RESULT_ACCEPTED; - } - // course over ground if ( int(packet.param1) == HEADING_TYPE_COURSE_OVER_GROUND) { // compare as nearest int plane.guided_state.target_heading_type = GUIDED_HEADING_COG; @@ -1005,6 +1002,26 @@ MAV_RESULT GCS_MAVLINK_Plane::handle_command_int_packet(const mavlink_command_in case MAV_CMD_DO_GO_AROUND: return plane.trigger_land_abort(packet.param1) ? MAV_RESULT_ACCEPTED : MAV_RESULT_FAILED; + case MAV_CMD_DO_LAND_START: + // attempt to switch to next DO_LAND_START command in the mission + if (plane.mission.jump_to_landing_sequence()) { + plane.set_mode(plane.mode_auto, ModeReason::GCS_COMMAND); + return MAV_RESULT_ACCEPTED; + } + return MAV_RESULT_FAILED; + + case MAV_CMD_MISSION_START: + plane.set_mode(plane.mode_auto, ModeReason::GCS_COMMAND); + return MAV_RESULT_ACCEPTED; + + case MAV_CMD_NAV_LOITER_UNLIM: + plane.set_mode(plane.mode_loiter, ModeReason::GCS_COMMAND); + return MAV_RESULT_ACCEPTED; + + case MAV_CMD_NAV_RETURN_TO_LAUNCH: + plane.set_mode(plane.mode_rtl, ModeReason::GCS_COMMAND); + return MAV_RESULT_ACCEPTED; + default: return GCS_MAVLINK::handle_command_int_packet(packet, msg); } @@ -1032,14 +1049,6 @@ MAV_RESULT GCS_MAVLINK_Plane::handle_command_long_packet(const mavlink_command_l { switch(packet.command) { - case MAV_CMD_NAV_LOITER_UNLIM: - plane.set_mode(plane.mode_loiter, ModeReason::GCS_COMMAND); - return MAV_RESULT_ACCEPTED; - - case MAV_CMD_NAV_RETURN_TO_LAUNCH: - plane.set_mode(plane.mode_rtl, ModeReason::GCS_COMMAND); - return MAV_RESULT_ACCEPTED; - #if HAL_QUADPLANE_ENABLED case MAV_CMD_NAV_TAKEOFF: { // user takeoff only works with quadplane code for now @@ -1052,18 +1061,6 @@ MAV_RESULT GCS_MAVLINK_Plane::handle_command_long_packet(const mavlink_command_l } #endif // HAL_QUADPLANE_ENABLED - case MAV_CMD_MISSION_START: - plane.set_mode(plane.mode_auto, ModeReason::GCS_COMMAND); - return MAV_RESULT_ACCEPTED; - - case MAV_CMD_DO_LAND_START: - // attempt to switch to next DO_LAND_START command in the mission - if (plane.mission.jump_to_landing_sequence()) { - plane.set_mode(plane.mode_auto, ModeReason::GCS_COMMAND); - return MAV_RESULT_ACCEPTED; - } - return MAV_RESULT_FAILED; - default: return GCS_MAVLINK::handle_command_long_packet(packet, msg); } diff --git a/ArduPlane/Log.cpp b/ArduPlane/Log.cpp index 027453dc597e9..8f46404a85669 100644 --- a/ArduPlane/Log.cpp +++ b/ArduPlane/Log.cpp @@ -79,6 +79,7 @@ struct PACKED log_Control_Tuning { float rudder_out; float throttle_dem; float airspeed_estimate; + uint8_t airspeed_estimate_status; float synthetic_airspeed; float EAS2TAS; int32_t groundspeed_undershoot; @@ -88,7 +89,8 @@ struct PACKED log_Control_Tuning { void Plane::Log_Write_Control_Tuning() { float est_airspeed = 0; - ahrs.airspeed_estimate(est_airspeed); + AP_AHRS::AirspeedEstimateType airspeed_estimate_type = AP_AHRS::AirspeedEstimateType::NO_NEW_ESTIMATE; + ahrs.airspeed_estimate(est_airspeed, airspeed_estimate_type); float synthetic_airspeed; if (!ahrs.synthetic_airspeed(synthetic_airspeed)) { @@ -106,6 +108,7 @@ void Plane::Log_Write_Control_Tuning() rudder_out : SRV_Channels::get_output_scaled(SRV_Channel::k_rudder), throttle_dem : TECS_controller.get_throttle_demand(), airspeed_estimate : est_airspeed, + airspeed_estimate_status : (uint8_t)airspeed_estimate_type, synthetic_airspeed : synthetic_airspeed, EAS2TAS : ahrs.get_EAS2TAS(), groundspeed_undershoot : groundspeed_undershoot, @@ -303,15 +306,17 @@ const struct LogStructure Plane::log_structure[] = { // @Field: NavPitch: desired pitch // @Field: Pitch: achieved pitch // @Field: ThO: scaled output throttle -// @Field: RdrOut: scaled output rudder +// @Field: RdO: scaled output rudder // @Field: ThD: demanded speed-height-controller throttle // @Field: As: airspeed estimate (or measurement if airspeed sensor healthy and ARSPD_USE>0) // @Field: SAs: DCM's airspeed estimate, NaN if not available +// @Field: AsT: airspeed type ( old estimate or source of new estimate) +// @FieldValueEnum: AsT: AP_AHRS::AirspeedEstimateType // @Field: E2T: equivalent to true airspeed ratio // @Field: GU: groundspeed undershoot when flying with minimum groundspeed { LOG_CTUN_MSG, sizeof(log_Control_Tuning), - "CTUN", "Qccccffffffi", "TimeUS,NavRoll,Roll,NavPitch,Pitch,ThO,RdrOut,ThD,As,SAs,E2T,GU", "sdddd---nn-n", "FBBBB---00-B" , true }, + "CTUN", "QccccffffBffi", "TimeUS,NavRoll,Roll,NavPitch,Pitch,ThO,RdO,ThD,As,AsT,SAs,E2T,GU", "sdddd---n-n-n", "FBBBB---000-B" , true }, // @LoggerMessage: NTUN // @Description: Navigation Tuning information - e.g. vehicle destination diff --git a/ArduPlane/Parameters.cpp b/ArduPlane/Parameters.cpp index b0cddc9081358..720eed4c27369 100644 --- a/ArduPlane/Parameters.cpp +++ b/ArduPlane/Parameters.cpp @@ -159,7 +159,7 @@ const AP_Param::Info Plane::var_info[] = { // @Param: TKOFF_TDRAG_SPD1 // @DisplayName: Takeoff tail dragger speed1 - // @Description: This parameter sets the airspeed at which to stop holding the tail down and transition to rudder control of steering on the ground. When TKOFF_TDRAG_SPD1 is reached the pitch of the aircraft will be held level until TKOFF_ROTATE_SPD is reached, at which point the takeoff pitch specified in the mission will be used to "rotate" the pitch for takeoff climb. Set TKOFF_TDRAG_SPD1 to zero to go straight to rotation. This should be set to zero for hand launch and catapult launch. It should also be set to zero for tricycle undercarriages unless you are using the method above to genetly hold the nose wheel down. For tail dragger aircraft it should be set just below the stall speed. + // @Description: This parameter sets the airspeed at which to stop holding the tail down and transition to rudder control of steering on the ground. When TKOFF_TDRAG_SPD1 is reached the pitch of the aircraft will be held level until TKOFF_ROTATE_SPD is reached, at which point the takeoff pitch specified in the mission will be used to "rotate" the pitch for takeoff climb. Set TKOFF_TDRAG_SPD1 to zero to go straight to rotation. This should be set to zero for hand launch and catapult launch. It should also be set to zero for tricycle undercarriages unless you are using the method above to gently hold the nose wheel down. For tail dragger aircraft it should be set just below the stall speed. // @Units: m/s // @Range: 0 30 // @Increment: 0.1 diff --git a/ArduPlane/Parameters.h b/ArduPlane/Parameters.h index 3045ff8eda7e0..7210bfe777126 100644 --- a/ArduPlane/Parameters.h +++ b/ArduPlane/Parameters.h @@ -421,7 +421,7 @@ class Parameters { AP_Int8 flight_mode6; AP_Int8 initial_mode; - // Navigational maneuvering limits + // Navigational manoeuvring limits // AP_Int16 alt_offset; AP_Int16 acro_roll_rate; @@ -541,14 +541,14 @@ class ParametersG2 { AP_Int8 crow_flap_options; AP_Int8 crow_flap_aileron_matching; - // Forward throttle battery voltage compenstaion + // Forward throttle battery voltage compensation AP_Float fwd_thr_batt_voltage_max; AP_Float fwd_thr_batt_voltage_min; AP_Int8 fwd_thr_batt_idx; #if OFFBOARD_GUIDED == ENABLED // guided yaw heading PID - AC_PID guidedHeading{5000.0, 0.0, 0.0, 0 , 10.0, 5.0, 5.0 , 5.0 , 0.2}; + AC_PID guidedHeading{5000.0, 0.0, 0.0, 0 , 10.0, 5.0, 5.0 , 5.0 , 0.0}; #endif #if AP_SCRIPTING_ENABLED && AP_FOLLOW_ENABLED diff --git a/ArduPlane/Plane.h b/ArduPlane/Plane.h index 1385e5cbc4d55..b8d6e21db733c 100644 --- a/ArduPlane/Plane.h +++ b/ArduPlane/Plane.h @@ -246,7 +246,7 @@ class Plane : public AP_Vehicle { #endif #if HAL_RALLY_ENABLED - // Rally Ponints + // Rally Points AP_Rally rally; #endif @@ -312,7 +312,7 @@ class Plane : public AP_Vehicle { // Failsafe struct { - // Used to track if the value on channel 3 (throtttle) has fallen below the failsafe threshold + // Used to track if the value on channel 3 (throttle) has fallen below the failsafe threshold // RC receiver should be set up to output a low throttle value when signal is lost bool rc_failsafe; @@ -556,8 +556,7 @@ class Plane : public AP_Vehicle { float target_heading_accel_limit; uint32_t target_heading_time_ms; guided_heading_type_t target_heading_type; - bool target_heading_limit_low; - bool target_heading_limit_high; + bool target_heading_limit; #endif // OFFBOARD_GUIDED == ENABLED } guided_state; @@ -619,7 +618,7 @@ class Plane : public AP_Vehicle { // The instantaneous desired pitch angle. Hundredths of a degree int32_t nav_pitch_cd; - // the aerodymamic load factor. This is calculated from the demanded + // the aerodynamic load factor. This is calculated from the demanded // roll before the roll is clipped, using 1/sqrt(cos(nav_roll)) float aerodynamic_load_factor = 1.0f; @@ -736,6 +735,9 @@ class Plane : public AP_Vehicle { // are we trying to follow terrain? bool terrain_following; + // are we waiting to load terrain data to init terrain following + bool terrain_following_pending; + // target altitude above terrain in cm, valid if terrain_following // is set int32_t terrain_alt_cm; @@ -772,7 +774,7 @@ class Plane : public AP_Vehicle { AP_Mount camera_mount; #endif - // Arming/Disarming mangement class + // Arming/Disarming management class AP_Arming_Plane arming; AP_Param param_loader {var_info}; @@ -856,7 +858,7 @@ class Plane : public AP_Vehicle { void reset_offset_altitude(void); void set_offset_altitude_location(const Location &start_loc, const Location &destination_loc); bool above_location_current(const Location &loc); - void setup_terrain_target_alt(Location &loc) const; + void setup_terrain_target_alt(Location &loc); int32_t adjusted_altitude_cm(void); int32_t adjusted_relative_altitude_cm(void); float mission_alt_offset(void); diff --git a/ArduPlane/ReleaseNotes.txt b/ArduPlane/ReleaseNotes.txt index bf2b93000972c..1559e32c6bd29 100644 --- a/ArduPlane/ReleaseNotes.txt +++ b/ArduPlane/ReleaseNotes.txt @@ -1,3 +1,31 @@ +Release 4.4.2-beta1 13th October 2023 +------------------------------------- + +Changes from 4.4.1 + +- BETAFPV-F405 support +- MambaF405v2 battery and serial setup corrected +- mRo Control Zero OEM H7 bdshot support +- SpeedyBee-F405-Wing gets VTX power control +- SpeedyBee-F405-Mini support +- T-Motor H743 Mini support +- EKF3 supports baroless boards +- INA battery monitor supports config of shunt resistor used (see BATTx_SHUNT) +- BMI088 IMU error value handling fixed to avoid occasional negative spike +- Dev environment CI autotest stability improvements +- OSD correct DisplayPort BF MSP symbols +- OSD option to correct direction arrows for BF font set +- Sensor status reporting to GCS fixed for baroless boards +- added opendroneid option to auto-store IDs in persistent flash +- fixed TECS bug that could cause inability to climb or descend +- fixed race condition when starting TECS controlled mode +- fixed RTL with rally point and terrain follow +- protect against invalid data in SBUS for first 4 channels +- added build type to VER message +- allow moving baseline rover at 3Hz +- use RC deadzones in stick mixing + + Release 4.4.1 26th September 2023 --------------------------------- @@ -284,7 +312,7 @@ of changes. Many thanks to all the people who have contributed! - Gimbal/Mount2 can be moved to retracted or neutral position - Gremsy ZIO support - IMAGE_START_CAPTURE, SET_CAMERA_ZOOM/FOCUS, VIDEO_START/STOP_CAPTURE command support - - Paramters renamed and rescaled + - Parameters renamed and rescaled i) CAM_TRIGG_TYPE renamed to CAM1_TYPE and options have changed ii) CAM_DURATION renamed to CAM1_DURATION and scaled in seconds iii) CAM_FEEDBACK_PIN/POL renamed to CAM1_FEEBAK_PIN/POL diff --git a/ArduPlane/altitude.cpp b/ArduPlane/altitude.cpp index 04aa72b270746..4c3a35f4097ca 100644 --- a/ArduPlane/altitude.cpp +++ b/ArduPlane/altitude.cpp @@ -212,6 +212,12 @@ void Plane::set_target_altitude_location(const Location &loc) target_altitude.amsl_cm += home.alt; } #if AP_TERRAIN_AVAILABLE + if (target_altitude.terrain_following_pending) { + /* we didn't get terrain data to init when we started on this + target, retry + */ + setup_terrain_target_alt(next_WP_loc); + } /* if this location has the terrain_alt flag set and we know the terrain altitude of our current location then treat it as a @@ -469,12 +475,16 @@ bool Plane::above_location_current(const Location &loc) modify a destination to be setup for terrain following if TERRAIN_FOLLOW is enabled */ -void Plane::setup_terrain_target_alt(Location &loc) const +void Plane::setup_terrain_target_alt(Location &loc) { #if AP_TERRAIN_AVAILABLE if (terrain_enabled_in_current_mode()) { - loc.change_alt_frame(Location::AltFrame::ABOVE_TERRAIN); + if (!loc.change_alt_frame(Location::AltFrame::ABOVE_TERRAIN)) { + target_altitude.terrain_following_pending = true; + return; + } } + target_altitude.terrain_following_pending = false; #endif } diff --git a/ArduPlane/commands_logic.cpp b/ArduPlane/commands_logic.cpp index 9d603addea986..79887fabdeb3c 100644 --- a/ArduPlane/commands_logic.cpp +++ b/ArduPlane/commands_logic.cpp @@ -8,7 +8,11 @@ bool Plane::start_command(const AP_Mission::Mission_Command& cmd) // default to non-VTOL loiter auto_state.vtol_loiter = false; - // log when new commands start +#if AP_TERRAIN_AVAILABLE + plane.target_altitude.terrain_following_pending = false; +#endif + + // log when new commands start if (should_log(MASK_LOG_CMD)) { logger.Write_Mission_Cmd(mission, cmd); } @@ -542,7 +546,11 @@ void ModeAuto::do_nav_delay(const AP_Mission::Mission_Command& cmd) nav_delay.time_max_ms = cmd.content.nav_delay.seconds * 1000; // convert seconds to milliseconds } else { // absolute delay to utc time +#if AP_RTC_ENABLED nav_delay.time_max_ms = AP::rtc().get_time_utc(cmd.content.nav_delay.hour_utc, cmd.content.nav_delay.min_utc, cmd.content.nav_delay.sec_utc, 0); +#else + nav_delay.time_max_ms = 0; +#endif } gcs().send_text(MAV_SEVERITY_INFO, "Delaying %u sec", (unsigned)(nav_delay.time_max_ms/1000)); } diff --git a/ArduPlane/ekf_check.cpp b/ArduPlane/ekf_check.cpp index 86b972225ce76..e36e4ef1abcdf 100644 --- a/ArduPlane/ekf_check.cpp +++ b/ArduPlane/ekf_check.cpp @@ -112,7 +112,7 @@ bool Plane::ekf_over_threshold() return false; } - // Get EKF innovations normalised wrt the innovaton test limits. + // Get EKF innovations normalised wrt the innovation test limits. // A value above 1.0 means the EKF has rejected that sensor data float position_variance, vel_variance, height_variance, tas_variance; Vector3f mag_variance; @@ -157,7 +157,7 @@ void Plane::failsafe_ekf_event() ekf_check_state.failsafe_on = true; AP::logger().Write_Error(LogErrorSubsystem::FAILSAFE_EKFINAV, LogErrorCode::FAILSAFE_OCCURRED); - // if not in a VTOL mode requring position, then nothing needs to be done + // if not in a VTOL mode requiring position, then nothing needs to be done #if HAL_QUADPLANE_ENABLED if (!quadplane.in_vtol_posvel_mode()) { return; diff --git a/ArduPlane/events.cpp b/ArduPlane/events.cpp index 122b3dc361d21..f49814aca9b90 100644 --- a/ArduPlane/events.cpp +++ b/ArduPlane/events.cpp @@ -140,7 +140,7 @@ void Plane::failsafe_long_on_event(enum failsafe_state fstype, ModeReason reason if(g.fs_action_long == FS_ACTION_LONG_PARACHUTE) { #if PARACHUTE == ENABLED parachute_release(); - //stop motors to avoide parachute tangling + //stop motors to avoid parachute tangling plane.arming.disarm(AP_Arming::Method::PARACHUTE_RELEASE, false); #endif } else if (g.fs_action_long == FS_ACTION_LONG_GLIDE) { @@ -183,7 +183,7 @@ void Plane::failsafe_long_on_event(enum failsafe_state fstype, ModeReason reason if(g.fs_action_long == FS_ACTION_LONG_PARACHUTE) { #if PARACHUTE == ENABLED parachute_release(); - //stop motors to avoide parachute tangling + //stop motors to avoid parachute tangling plane.arming.disarm(AP_Arming::Method::PARACHUTE_RELEASE, false); #endif } else if (g.fs_action_long == FS_ACTION_LONG_GLIDE) { diff --git a/ArduPlane/is_flying.cpp b/ArduPlane/is_flying.cpp index 3b2c27396f59d..ffe578736aff1 100644 --- a/ArduPlane/is_flying.cpp +++ b/ArduPlane/is_flying.cpp @@ -261,7 +261,7 @@ void Plane::crash_detection_update(void) if (g.takeoff_throttle_min_accel > 0 && !throttle_suppressed) { // if you have an acceleration holding back throttle, but you met the - // accel threshold but still not fying, then you either shook/hit the + // accel threshold but still not flying, then you either shook/hit the // plane or it was a failed launch. crashed = true; crash_state.debounce_time_total_ms = CRASH_DETECTION_DELAY_MS; diff --git a/ArduPlane/mode.cpp b/ArduPlane/mode.cpp index a9af6555b7a6a..ff124dc6ba3dd 100644 --- a/ArduPlane/mode.cpp +++ b/ArduPlane/mode.cpp @@ -97,6 +97,10 @@ bool Mode::enter() quadplane.mode_enter(); #endif +#if AP_TERRAIN_AVAILABLE + plane.target_altitude.terrain_following_pending = false; +#endif + bool enter_result = _enter(); if (enter_result) { @@ -121,6 +125,13 @@ bool Mode::enter() // but it should be harmless to disable the fence temporarily in these situations as well plane.fence.manual_recovery_start(); #endif + //reset mission if in landing sequence, disarmed, not flying, and have changed to a non-autothrottle mode to clear prearm + if (plane.mission.get_in_landing_sequence_flag() && + !plane.is_flying() && !plane.arming.is_armed_and_safety_off() && + !plane.control_mode->does_auto_navigation()) { + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "In landing sequence: mission reset"); + plane.mission.reset(); + } } return enter_result; diff --git a/ArduPlane/mode_acro.cpp b/ArduPlane/mode_acro.cpp index acf0f497523d8..c15970b9bdece 100644 --- a/ArduPlane/mode_acro.cpp +++ b/ArduPlane/mode_acro.cpp @@ -68,7 +68,7 @@ void ModeAcro::stabilize() int32_t roll_error_cd = -ToDeg(acro_state.locked_roll_err)*100; plane.nav_roll_cd = ahrs.roll_sensor + roll_error_cd; // try to reduce the integrated angular error to zero. We set - // 'stabilze' to true, which disables the roll integrator + // 'stabilize' to true, which disables the roll integrator SRV_Channels::set_output_scaled(SRV_Channel::k_aileron, plane.rollController.get_servo_out(roll_error_cd, speed_scaler, true, false)); diff --git a/ArduPlane/mode_guided.cpp b/ArduPlane/mode_guided.cpp index 2d712c7598722..a523ddf87065e 100644 --- a/ArduPlane/mode_guided.cpp +++ b/ArduPlane/mode_guided.cpp @@ -61,16 +61,11 @@ void ModeGuided::update() float bank_limit = degrees(atanf(plane.guided_state.target_heading_accel_limit/GRAVITY_MSS)) * 1e2f; bank_limit = MIN(bank_limit, plane.roll_limit_cd); - plane.g2.guidedHeading.update_error(error, delta); // push error into AC_PID , possible improvement is to use update_all instead.? + // push error into AC_PID + const float desired = plane.g2.guidedHeading.update_error(error, delta, plane.guided_state.target_heading_limit); - float i = plane.g2.guidedHeading.get_i(); // get integrator TODO - if (((is_negative(error) && !plane.guided_state.target_heading_limit_low) || (is_positive(error) && !plane.guided_state.target_heading_limit_high))) { - i = plane.g2.guidedHeading.get_i(); - } - - float desired = plane.g2.guidedHeading.get_p() + i + plane.g2.guidedHeading.get_d(); - plane.guided_state.target_heading_limit_low = (desired <= -bank_limit); - plane.guided_state.target_heading_limit_high = (desired >= bank_limit); + // Check for output saturation + plane.guided_state.target_heading_limit = fabsf(desired) >= bank_limit; plane.nav_roll_cd = constrain_int32(desired, -bank_limit, bank_limit); plane.update_load_factor(); diff --git a/ArduPlane/mode_qacro.cpp b/ArduPlane/mode_qacro.cpp index b74a434384161..d49e1e0fb6152 100644 --- a/ArduPlane/mode_qacro.cpp +++ b/ArduPlane/mode_qacro.cpp @@ -9,7 +9,7 @@ bool ModeQAcro::_enter() quadplane.transition->force_transition_complete(); attitude_control->relax_attitude_controllers(); - // disable yaw rate time contant to mantain old behaviour + // disable yaw rate time constant to maintain old behaviour quadplane.disable_yaw_rate_time_constant(); IGNORE_RETURN(ahrs.get_quaternion(plane.mode_acro.acro_state.q)); diff --git a/ArduPlane/mode_qrtl.cpp b/ArduPlane/mode_qrtl.cpp index e31e4681ada0c..9be1c962bd6a4 100644 --- a/ArduPlane/mode_qrtl.cpp +++ b/ArduPlane/mode_qrtl.cpp @@ -126,7 +126,7 @@ void ModeQRTL::run() ftype alt_diff; if (!stopping_loc.get_alt_distance(plane.next_WP_loc, alt_diff) || is_positive(alt_diff)) { - // climb finshed or cant get alt diff, head home + // climb finished or cant get alt diff, head home submode = SubMode::RTL; plane.prev_WP_loc = plane.current_loc; diff --git a/ArduPlane/mode_qstabilize.cpp b/ArduPlane/mode_qstabilize.cpp index 659d674736f45..2f78a210fb3c2 100644 --- a/ArduPlane/mode_qstabilize.cpp +++ b/ArduPlane/mode_qstabilize.cpp @@ -83,7 +83,7 @@ void ModeQStabilize::set_tailsitter_roll_pitch(const float roll_input, const flo plane.quadplane.transition->set_VTOL_roll_pitch_limit(plane.nav_roll_cd, plane.nav_pitch_cd); } -// set the desired roll and pitch for normal quadplanes, also limited by forward flight limtis +// set the desired roll and pitch for normal quadplanes, also limited by forward flight limits void ModeQStabilize::set_limited_roll_pitch(const float roll_input, const float pitch_input) { plane.nav_roll_cd = roll_input * MIN(plane.roll_limit_cd, plane.quadplane.aparm.angle_max); diff --git a/ArduPlane/motor_test.cpp b/ArduPlane/motor_test.cpp index 67dee708b50b7..38229d2f35134 100644 --- a/ArduPlane/motor_test.cpp +++ b/ArduPlane/motor_test.cpp @@ -67,7 +67,7 @@ void QuadPlane::motor_test_output() // sanity check throttle values if (pwm >= RC_Channel::RC_MIN_LIMIT_PWM && pwm <= RC_Channel::RC_MAX_LIMIT_PWM) { - // turn on motor to specified pwm vlaue + // turn on motor to specified pwm value motors->output_test_seq(motor_test.seq, pwm); } else { motor_test_stop(); diff --git a/ArduPlane/navigation.cpp b/ArduPlane/navigation.cpp index b60b442646e69..76846b0fe6ed6 100644 --- a/ArduPlane/navigation.cpp +++ b/ArduPlane/navigation.cpp @@ -73,7 +73,7 @@ void Plane::loiter_angle_update(void) loiter.next_sum_lap_cd = loiter.sum_cd + lap_check_interval_cd; } else if (!loiter.reached_target_alt && labs(loiter.sum_cd) >= loiter.next_sum_lap_cd) { - // check every few laps for scenario where up/downdrafts inhibit you from loitering up/down for too long + // check every few laps for scenario where up/downward inhibit you from loitering up/down for too long loiter.unable_to_acheive_target_alt = labs(current_loc.alt - loiter.start_lap_alt_cm) < 500; loiter.start_lap_alt_cm = current_loc.alt; loiter.next_sum_lap_cd += lap_check_interval_cd; @@ -188,7 +188,7 @@ void Plane::calc_airspeed_errors() get_throttle_input()) + ((int32_t)aparm.airspeed_min * 100); } #if OFFBOARD_GUIDED == ENABLED - } else if (control_mode == &mode_guided && guided_state.target_airspeed_cm > 0.0) { // if offbd guided speed change cmd not set, then this section is skipped + } else if (control_mode == &mode_guided && guided_state.target_airspeed_cm > 0.0) { // if offboard guided speed change cmd not set, then this section is skipped // offboard airspeed demanded uint32_t now = AP_HAL::millis(); float delta = 1e-3f * (now - guided_state.target_airspeed_time_ms); diff --git a/ArduPlane/quadplane.cpp b/ArduPlane/quadplane.cpp index 93d062d38d2cf..d6a72bc5a6b4b 100644 --- a/ArduPlane/quadplane.cpp +++ b/ArduPlane/quadplane.cpp @@ -33,7 +33,7 @@ const AP_Param::GroupInfo QuadPlane::var_info[] = { // @DisplayName: Transition time // @Description: Transition time in milliseconds after minimum airspeed is reached // @Units: ms - // @Range: 1 30000 + // @Range: 2000 30000 // @User: Advanced AP_GROUPINFO("TRANSITION_MS", 11, QuadPlane, transition_time_ms, 5000), @@ -400,7 +400,7 @@ const AP_Param::GroupInfo QuadPlane::var_info2[] = { // @Param: ASSIST_ALT // @DisplayName: Quadplane assistance altitude - // @Description: This is the altitude below which quadplane assistance will be triggered. This acts the same way as Q_ASSIST_ANGLE and Q_ASSIST_SPEED, but triggers if the aircraft drops below the given altitude while the VTOL motors are not running. A value of zero disables this feature. The altutude is calculated as being above ground level. The height above ground is given from a Lidar used if available and RNGFND_LANDING=1. Otherwise it comes from terrain data if TERRAIN_FOLLOW=1 and comes from height above home otherwise. + // @Description: This is the altitude below which quadplane assistance will be triggered. This acts the same way as Q_ASSIST_ANGLE and Q_ASSIST_SPEED, but triggers if the aircraft drops below the given altitude while the VTOL motors are not running. A value of zero disables this feature. The altitude is calculated as being above ground level. The height above ground is given from a Lidar used if available and RNGFND_LANDING=1. Otherwise it comes from terrain data if TERRAIN_FOLLOW=1 and comes from height above home otherwise. // @Units: m // @Range: 0 120 // @Increment: 1 @@ -524,7 +524,7 @@ const AP_Param::GroupInfo QuadPlane::var_info2[] = { // @Param: FWD_THR_USE // @DisplayName: Q mode forward throttle use - // @Description: This parameter determines when the feature that uses forward throttle insread of forward tilt is used. The amount of forward throttle is controlled by the Q_FWD_THR_GAIN parameter. The maximum amount of forward pitch allowed is controlled by the Q_FWD_PIT_LIM parameter. Q_FWD_THR_USE = 0 disables the feature. Q_FWD_THR_USE = 1 enables the feature in all position controlled modes such as QLOITER, QLAND, QRTL and VTOL TAKEOFF. Q_FWD_THR_USE = 2 enables the feature in all Q modes except QAUTOTUNE and QACRO. When enabling the feature, the legacy method of controlling forward throttle use via velocity controller error should be disabled by setting Q_VFWD_GAIN to 0. Do not use this feature with tailsitters. + // @Description: This parameter determines when the feature that uses forward throttle instead of forward tilt is used. The amount of forward throttle is controlled by the Q_FWD_THR_GAIN parameter. The maximum amount of forward pitch allowed is controlled by the Q_FWD_PIT_LIM parameter. Q_FWD_THR_USE = 0 disables the feature. Q_FWD_THR_USE = 1 enables the feature in all position controlled modes such as QLOITER, QLAND, QRTL and VTOL TAKEOFF. Q_FWD_THR_USE = 2 enables the feature in all Q modes except QAUTOTUNE and QACRO. When enabling the feature, the legacy method of controlling forward throttle use via velocity controller error should be disabled by setting Q_VFWD_GAIN to 0. Do not use this feature with tailsitters. // @Values: 0:Off,1:On in all position controlled Q modes,2:On in all Q modes except QAUTOTUNE and QACRO // @User: Standard AP_GROUPINFO("FWD_THR_USE", 37, QuadPlane, q_fwd_thr_use, uint8_t(FwdThrUse::OFF)), @@ -1699,14 +1699,15 @@ void SLT_Transition::update() // after airspeed is reached we degrade throttle over the // transition time, but continue to stabilize const uint32_t transition_timer_ms = now - transition_low_airspeed_ms; - if (transition_timer_ms > (unsigned)quadplane.transition_time_ms) { + const float trans_time_ms = constrain_float(quadplane.transition_time_ms,2000,30000); + if (transition_timer_ms > unsigned(trans_time_ms)) { transition_state = TRANSITION_DONE; in_forced_transition = false; transition_start_ms = 0; transition_low_airspeed_ms = 0; gcs().send_text(MAV_SEVERITY_INFO, "Transition done"); } - float trans_time_ms = MAX((float)quadplane.transition_time_ms.get(),1); + float transition_scale = (trans_time_ms - transition_timer_ms) / trans_time_ms; float throttle_scaled = last_throttle * transition_scale; @@ -2858,7 +2859,7 @@ void QuadPlane::vtol_position_controller(void) if (plane.control_mode == &plane.mode_guided || vtol_loiter_auto) { plane.ahrs.get_location(plane.current_loc); int32_t target_altitude_cm; - if (!plane.next_WP_loc.get_alt_cm(Location::AltFrame::ABOVE_HOME,target_altitude_cm)) { + if (!plane.next_WP_loc.get_alt_cm(Location::AltFrame::ABOVE_ORIGIN,target_altitude_cm)) { break; } if (poscontrol.slow_descent && @@ -2866,7 +2867,7 @@ void QuadPlane::vtol_position_controller(void) // gradually descend as we approach target plane.auto_state.wp_proportion = plane.current_loc.line_path_proportion(plane.prev_WP_loc, plane.next_WP_loc); int32_t prev_alt; - if (plane.prev_WP_loc.get_alt_cm(Location::AltFrame::ABOVE_HOME,prev_alt)) { + if (plane.prev_WP_loc.get_alt_cm(Location::AltFrame::ABOVE_ORIGIN,prev_alt)) { target_altitude_cm = linear_interpolate(prev_alt, target_altitude_cm, plane.auto_state.wp_proportion, diff --git a/ArduPlane/servos.cpp b/ArduPlane/servos.cpp index ae6f3c69c5fc1..ced42525788e8 100644 --- a/ArduPlane/servos.cpp +++ b/ArduPlane/servos.cpp @@ -924,7 +924,7 @@ void Plane::indicate_waiting_for_rud_neutral_to_takeoff(void) SRV_Channels::set_output_scaled(SRV_Channel::k_rudder, 0); channel_function_mixer(SRV_Channel::k_rudder, SRV_Channel::k_elevator, SRV_Channel::k_vtail_right, SRV_Channel::k_vtail_left); if (!SRV_Channels::function_assigned(SRV_Channel::k_rudder) && !SRV_Channels::function_assigned(SRV_Channel::k_vtail_left)) { - // if no rudder indication possible, neutral elevons during wait becuase on takeoff stance they are usually both full up + // if no rudder indication possible, neutral elevons during wait because on takeoff stance they are usually both full up SRV_Channels::set_output_scaled(SRV_Channel::k_elevon_right, 0); SRV_Channels::set_output_scaled(SRV_Channel::k_elevon_left, 0); } diff --git a/ArduPlane/system.cpp b/ArduPlane/system.cpp index 6f21b75abc751..7c7066bef06b6 100644 --- a/ArduPlane/system.cpp +++ b/ArduPlane/system.cpp @@ -257,7 +257,7 @@ bool Plane::set_mode(Mode &new_mode, const ModeReason reason) if (control_mode == &new_mode) { // don't switch modes if we are already in the correct mode. - // only make happy noise if using a difent method to switch, this stops beeping for repeated change mode requests from GCS + // only make happy noise if using a different method to switch, this stops beeping for repeated change mode requests from GCS if ((reason != control_mode_reason) && (reason != ModeReason::INITIALISED)) { AP_Notify::events.user_mode_change = 1; } diff --git a/ArduPlane/tailsitter.cpp b/ArduPlane/tailsitter.cpp index ffc8c76c25263..f40fa33d1f26e 100644 --- a/ArduPlane/tailsitter.cpp +++ b/ArduPlane/tailsitter.cpp @@ -27,7 +27,7 @@ const AP_Param::GroupInfo Tailsitter::var_info[] = { // @Param: ENABLE // @DisplayName: Enable Tailsitter // @Values: 0:Disable, 1:Enable, 2:Enable Always - // @Description: This enables Tailsitter functionality. A value of 2 forces Qassist active and always stabilize in forward flight with airmode for stabalisation at 0 throttle, for use on vehicles with no control surfaces, vehicle will not arm in forward flight modes, see also Q_OPTIONS "Mtrs_Only_Qassist" + // @Description: This enables Tailsitter functionality. A value of 2 forces Qassist active and always stabilize in forward flight with airmode for stabilisation at 0 throttle, for use on vehicles with no control surfaces, vehicle will not arm in forward flight modes, see also Q_OPTIONS "Mtrs_Only_Qassist" // @User: Standard // @RebootRequired: True AP_GROUPINFO_FLAGS("ENABLE", 1, Tailsitter, enable, 0, AP_PARAM_FLAG_ENABLE), @@ -161,7 +161,7 @@ const AP_Param::GroupInfo Tailsitter::var_info[] = { // @Param: MIN_VO // @DisplayName: Tailsitter Disk loading minimum outflow speed - // @Description: Use in conjunction with disk therory gain scaling and Q_TAILSIT_DSKLD to specify minumum airspeed over control surfaces, this will be used to boost throttle, when decending for example, 0 disables + // @Description: Use in conjunction with disk theory gain scaling and Q_TAILSIT_DSKLD to specify minumum airspeed over control surfaces, this will be used to boost throttle, when descending for example, 0 disables // @Range: 0 15 AP_GROUPINFO("MIN_VO", 22, Tailsitter, disk_loading_min_outflow, 0), @@ -330,7 +330,7 @@ void Tailsitter::output(void) SRV_Channels::set_output_pwm(SRV_Channel::k_throttleLeft, throttle_pwm); SRV_Channels::set_output_pwm(SRV_Channel::k_throttleRight, throttle_pwm); - // throttle output is not used by AP_Motors so might have diffrent PWM range, set scaled + // throttle output is not used by AP_Motors so might have different PWM range, set scaled SRV_Channels::set_output_scaled(SRV_Channel::k_throttle, throttle * 100.0); } } @@ -513,7 +513,7 @@ void Tailsitter::output(void) bool Tailsitter::transition_fw_complete(void) { if (!plane.arming.is_armed_and_safety_off()) { - // instant trainsition when disarmed, no message + // instant transition when disarmed, no message return true; } if (labs(quadplane.ahrs_view->pitch_sensor) > transition_angle_fw*100) { @@ -539,7 +539,7 @@ bool Tailsitter::transition_fw_complete(void) bool Tailsitter::transition_vtol_complete(void) const { if (!plane.arming.is_armed_and_safety_off()) { - // instant trainsition when disarmed, no message + // instant transition when disarmed, no message return true; } // for vectored tailsitters at zero pilot throttle @@ -634,7 +634,7 @@ void Tailsitter::speed_scaling(void) float spd_scaler = 1.0f; float disk_loading_min_throttle = 0.0; - // Scaleing with throttle + // Scaling with throttle float throttle_scaler = throttle_scale_max; if (is_positive(throttle)) { throttle_scaler = constrain_float(hover_throttle / throttle, gain_scaling_min, throttle_scale_max); @@ -930,7 +930,7 @@ bool Tailsitter_Transition::allow_stick_mixing() const if (tailsitter.in_vtol_transition()) { return false; } - // Transitioning into fixed wing flight, leveling off + // Transitioning into fixed wing flight, levelling off if ((transition_state == TRANSITION_DONE) && (fw_limit_start_ms != 0)) { return false; } diff --git a/ArduPlane/takeoff.cpp b/ArduPlane/takeoff.cpp index 73290a5f060c0..5574ad2c9b0c1 100644 --- a/ArduPlane/takeoff.cpp +++ b/ArduPlane/takeoff.cpp @@ -238,7 +238,7 @@ int16_t Plane::get_takeoff_pitch_min_cd(void) return auto_state.takeoff_pitch_cd * scalar; } - // are we entering the region where we want to start leveling off before we reach takeoff alt? + // are we entering the region where we want to start levelling off before we reach takeoff alt? if (auto_state.sink_rate < -0.1f) { float sec_to_target = (remaining_height_to_target_cm * 0.01f) / (-auto_state.sink_rate); if (sec_to_target > 0 && diff --git a/ArduPlane/tiltrotor.cpp b/ArduPlane/tiltrotor.cpp index 8f5c37f5d599f..e8babe5e86d93 100644 --- a/ArduPlane/tiltrotor.cpp +++ b/ArduPlane/tiltrotor.cpp @@ -39,7 +39,7 @@ const AP_Param::GroupInfo Tiltrotor::var_info[] = { // @Param: TYPE // @DisplayName: Tiltrotor type - // @Description: This is the type of tiltrotor when TILT_MASK is non-zero. A continuous tiltrotor can tilt the rotors to any angle on demand. A binary tiltrotor assumes a retract style servo where the servo is either fully forward or fully up. In both cases the servo can't move faster than Q_TILT_RATE. A vectored yaw tiltrotor will use the tilt of the motors to control yaw in hover, Bicopter tiltrottor must use the tailsitter frame class (10) + // @Description: This is the type of tiltrotor when TILT_MASK is non-zero. A continuous tiltrotor can tilt the rotors to any angle on demand. A binary tiltrotor assumes a retract style servo where the servo is either fully forward or fully up. In both cases the servo can't move faster than Q_TILT_RATE. A vectored yaw tiltrotor will use the tilt of the motors to control yaw in hover, Bicopter tiltrotor must use the tailsitter frame class (10) // @Values: 0:Continuous,1:Binary,2:VectoredYaw,3:Bicopter AP_GROUPINFO("TYPE", 5, Tiltrotor, type, TILT_TYPE_CONTINUOUS), @@ -115,7 +115,7 @@ void Tiltrotor::setup() && (type != TILT_TYPE_BICOPTER)); - // check if there are any perminant VTOL motors + // check if there are any permanent VTOL motors for (uint8_t i = 0; i < AP_MOTORS_MAX_NUM_MOTORS; ++i) { if (motors->is_motor_enabled(i) && ((tilt_mask & (1U<<1)) == 0)) { // enabled motor not set in tilt mask @@ -193,7 +193,7 @@ void Tiltrotor::slew(float newtilt) SRV_Channels::set_output_scaled(SRV_Channel::k_motor_tilt, 1000 * current_tilt); } -// return the current tilt value that represens forward flight +// return the current tilt value that represents forward flight // tilt wings can sustain forward flight with some amount of wing tilt float Tiltrotor::get_fully_forward_tilt() const { diff --git a/ArduSub/GCS_Mavlink.cpp b/ArduSub/GCS_Mavlink.cpp index 8bbaba74cf0d3..4bc904184e86d 100644 --- a/ArduSub/GCS_Mavlink.cpp +++ b/ArduSub/GCS_Mavlink.cpp @@ -354,7 +354,9 @@ static const ap_message STREAM_EXTENDED_STATUS_msgs[] = { MSG_GPS2_RAW, MSG_GPS2_RTK, MSG_NAV_CONTROLLER_OUTPUT, +#if AP_FENCE_ENABLED MSG_FENCE_STATUS, +#endif MSG_NAMED_FLOAT }; static const ap_message STREAM_POSITION_msgs[] = { @@ -465,9 +467,18 @@ MAV_RESULT GCS_MAVLINK_Sub::handle_command_int_packet(const mavlink_command_int_ { switch(packet.command) { + case MAV_CMD_CONDITION_YAW: + return handle_MAV_CMD_CONDITION_YAW(packet); + + case MAV_CMD_DO_CHANGE_SPEED: + return handle_MAV_CMD_DO_CHANGE_SPEED(packet); + case MAV_CMD_DO_MOTOR_TEST: return handle_MAV_CMD_DO_MOTOR_TEST(packet); + case MAV_CMD_MISSION_START: + return handle_MAV_CMD_MISSION_START(packet); + case MAV_CMD_NAV_LOITER_UNLIM: return handle_MAV_CMD_NAV_LOITER_UNLIM(packet); @@ -495,11 +506,8 @@ MAV_RESULT GCS_MAVLINK_Sub::handle_MAV_CMD_NAV_LAND(const mavlink_command_int_t return MAV_RESULT_ACCEPTED; } -MAV_RESULT GCS_MAVLINK_Sub::handle_command_long_packet(const mavlink_command_long_t &packet, const mavlink_message_t &msg) +MAV_RESULT GCS_MAVLINK_Sub::handle_MAV_CMD_CONDITION_YAW(const mavlink_command_int_t &packet) { - switch (packet.command) { - - case MAV_CMD_CONDITION_YAW: // param1 : target angle [0-360] // param2 : speed during change [deg per second] // param3 : direction (-1:ccw, +1:cw) @@ -510,9 +518,11 @@ MAV_RESULT GCS_MAVLINK_Sub::handle_command_long_packet(const mavlink_command_lon sub.mode_auto.set_auto_yaw_look_at_heading(packet.param1, packet.param2, (int8_t)packet.param3, (uint8_t)packet.param4); return MAV_RESULT_ACCEPTED; } - return MAV_RESULT_FAILED; + return MAV_RESULT_DENIED; +} - case MAV_CMD_DO_CHANGE_SPEED: +MAV_RESULT GCS_MAVLINK_Sub::handle_MAV_CMD_DO_CHANGE_SPEED(const mavlink_command_int_t &packet) +{ // param1 : unused // param2 : new speed in m/s // param3 : unused @@ -522,16 +532,14 @@ MAV_RESULT GCS_MAVLINK_Sub::handle_command_long_packet(const mavlink_command_lon return MAV_RESULT_ACCEPTED; } return MAV_RESULT_FAILED; +} - case MAV_CMD_MISSION_START: +MAV_RESULT GCS_MAVLINK_Sub::handle_MAV_CMD_MISSION_START(const mavlink_command_int_t &packet) +{ if (sub.motors.armed() && sub.set_mode(Mode::Number::AUTO, ModeReason::GCS_COMMAND)) { return MAV_RESULT_ACCEPTED; } return MAV_RESULT_FAILED; - - default: - return GCS_MAVLINK::handle_command_long_packet(packet, msg); - } } MAV_RESULT GCS_MAVLINK_Sub::handle_MAV_CMD_DO_MOTOR_TEST(const mavlink_command_int_t &packet) @@ -799,7 +807,7 @@ uint64_t GCS_MAVLINK_Sub::capabilities() const ); } -MAV_RESULT GCS_MAVLINK_Sub::handle_flight_termination(const mavlink_command_long_t &packet) { +MAV_RESULT GCS_MAVLINK_Sub::handle_flight_termination(const mavlink_command_int_t &packet) { if (packet.param1 > 0.5f) { sub.arming.disarm(AP_Arming::Method::TERMINATION); return MAV_RESULT_ACCEPTED; diff --git a/ArduSub/GCS_Mavlink.h b/ArduSub/GCS_Mavlink.h index 17a3e77a8d08a..91c62ddff5278 100644 --- a/ArduSub/GCS_Mavlink.h +++ b/ArduSub/GCS_Mavlink.h @@ -15,12 +15,11 @@ class GCS_MAVLINK_Sub : public GCS_MAVLINK { return 0; }; - MAV_RESULT handle_flight_termination(const mavlink_command_long_t &packet) override; + MAV_RESULT handle_flight_termination(const mavlink_command_int_t &packet) override; MAV_RESULT handle_command_do_set_roi(const Location &roi_loc) override; MAV_RESULT _handle_command_preflight_calibration_baro(const mavlink_message_t &msg) override; MAV_RESULT _handle_command_preflight_calibration(const mavlink_command_int_t &packet, const mavlink_message_t &msg) override; - MAV_RESULT handle_command_long_packet(const mavlink_command_long_t &packet, const mavlink_message_t &msg) override; MAV_RESULT handle_command_int_packet(const mavlink_command_int_t &packet, const mavlink_message_t &msg) override; @@ -53,6 +52,9 @@ class GCS_MAVLINK_Sub : public GCS_MAVLINK { int16_t vfr_hud_throttle() const override; + MAV_RESULT handle_MAV_CMD_CONDITION_YAW(const mavlink_command_int_t &packet); + MAV_RESULT handle_MAV_CMD_MISSION_START(const mavlink_command_int_t &packet); + MAV_RESULT handle_MAV_CMD_DO_CHANGE_SPEED(const mavlink_command_int_t &packet); MAV_RESULT handle_MAV_CMD_DO_MOTOR_TEST(const mavlink_command_int_t &packet); MAV_RESULT handle_MAV_CMD_NAV_LOITER_UNLIM(const mavlink_command_int_t &packet); MAV_RESULT handle_MAV_CMD_NAV_LAND(const mavlink_command_int_t &packet); diff --git a/ArduSub/Parameters.h b/ArduSub/Parameters.h index 12e300732e66f..f170667859e8f 100644 --- a/ArduSub/Parameters.h +++ b/ArduSub/Parameters.h @@ -49,7 +49,7 @@ class Parameters { // Layout version number, always key zero. // k_param_format_version = 0, - k_param_software_type, // unusued + k_param_software_type, // unused k_param_g2, // 2nd block of parameters diff --git a/ArduSub/ReleaseNotes.txt b/ArduSub/ReleaseNotes.txt index 937999ce180a4..6d68f5216e7f5 100644 --- a/ArduSub/ReleaseNotes.txt +++ b/ArduSub/ReleaseNotes.txt @@ -704,7 +704,7 @@ Changes from 3.1.4 11) CLI removed from APM1/2 to save flash space, critical functions moved to MAVLink: a) Individual motor tests (see MP's Initial Setup > Optional Hardware > Motor Test) b) compassmot (see MP's Initial Setup > Optional Hardware > Compass/Motor Calib) - c) parameter reset to factory defautls (see MP's Config/Tuning > Full Parameter List > Reset to Default) + c) parameter reset to factory defaults (see MP's Config/Tuning > Full Parameter List > Reset to Default) ------------------------------------------------------------------ ArduCopter 3.1.5 27-May-2014 / 3.1.5-rc2 20-May-2014 Changes from 3.1.5-rc1 diff --git a/ArduSub/commands_logic.cpp b/ArduSub/commands_logic.cpp index f35eac79675ef..681022a3dd93b 100644 --- a/ArduSub/commands_logic.cpp +++ b/ArduSub/commands_logic.cpp @@ -401,7 +401,11 @@ void Sub::do_nav_delay(const AP_Mission::Mission_Command& cmd) nav_delay_time_max_ms = cmd.content.nav_delay.seconds * 1000; // convert seconds to milliseconds } else { // absolute delay to utc time +#if AP_RTC_ENABLED nav_delay_time_max_ms = AP::rtc().get_time_utc(cmd.content.nav_delay.hour_utc, cmd.content.nav_delay.min_utc, cmd.content.nav_delay.sec_utc, 0); +#else + nav_delay_time_max_ms = 0; +#endif } gcs().send_text(MAV_SEVERITY_INFO, "Delaying %u sec", (unsigned)(nav_delay_time_max_ms/1000)); } diff --git a/ArduSub/defines.h b/ArduSub/defines.h index 170b466966cbd..87e45820bc982 100644 --- a/ArduSub/defines.h +++ b/ArduSub/defines.h @@ -39,7 +39,7 @@ enum autopilot_yaw_mode { #define WP_YAW_BEHAVIOR_NONE 0 // auto pilot will never control yaw during missions or rtl (except for DO_CONDITIONAL_YAW command received) #define WP_YAW_BEHAVIOR_LOOK_AT_NEXT_WP 1 // auto pilot will face next waypoint or home during rtl #define WP_YAW_BEHAVIOR_LOOK_AT_NEXT_WP_EXCEPT_RTL 2 // auto pilot will face next waypoint except when doing RTL at which time it will stay in it's last -#define WP_YAW_BEHAVIOR_LOOK_AHEAD 3 // auto pilot will look ahead during missions and rtl (primarily meant for traditional helicotpers) +#define WP_YAW_BEHAVIOR_LOOK_AHEAD 3 // auto pilot will look ahead during missions and rtl (primarily meant for traditional helicopters) #define WP_YAW_BEHAVIOR_CORRECT_XTRACK 4 // point towards intermediate position target during line following diff --git a/ArduSub/mode_poshold.cpp b/ArduSub/mode_poshold.cpp index 8c1b389464c1a..b85e359ede568 100644 --- a/ArduSub/mode_poshold.cpp +++ b/ArduSub/mode_poshold.cpp @@ -93,7 +93,7 @@ void ModePoshold::run() } else { // hold current heading - // this check is required to prevent bounce back after very fast yaw maneuvers + // this check is required to prevent bounce back after very fast yaw manoeuvres // the inertia of the vehicle causes the heading to move slightly past the point when pilot input actually stopped if (tnow < sub.last_pilot_yaw_input_ms + 250) { // give 250ms to slow down, then set target heading target_yaw_rate = 0; // Stop rotation on yaw axis diff --git a/Blimp/Blimp.h b/Blimp/Blimp.h index 8923e6bd1ceb3..32ac39b5bddf4 100644 --- a/Blimp/Blimp.h +++ b/Blimp/Blimp.h @@ -175,7 +175,7 @@ class Blimp : public AP_Vehicle RCMapper rcmap; - // intertial nav alt when we armed + // inertial nav alt when we armed float arming_altitude_m; // Failsafe diff --git a/Blimp/Fins.h b/Blimp/Fins.h index 6e225580385e3..89541eea7cd97 100644 --- a/Blimp/Fins.h +++ b/Blimp/Fins.h @@ -50,7 +50,7 @@ class Fins uint16_t _speed_hz; // speed in hz to send updates to motors float _throttle_avg_max; // last throttle input from set_throttle_avg_max - float _time; //current timestep + float _time; // current timestamp bool _armed; // 0 if disarmed, 1 if armed diff --git a/Blimp/GCS_Mavlink.cpp b/Blimp/GCS_Mavlink.cpp index dfcab4b6f5970..314e10e65baa5 100644 --- a/Blimp/GCS_Mavlink.cpp +++ b/Blimp/GCS_Mavlink.cpp @@ -323,7 +323,9 @@ static const ap_message STREAM_EXTENDED_STATUS_msgs[] = { MSG_GPS2_RAW, MSG_GPS2_RTK, MSG_NAV_CONTROLLER_OUTPUT, +#if AP_FENCE_ENABLED MSG_FENCE_STATUS, +#endif MSG_POSITION_TARGET_GLOBAL_INT, }; static const ap_message STREAM_POSITION_msgs[] = { @@ -486,23 +488,6 @@ MAV_RESULT GCS_MAVLINK_Blimp::handle_command_long_packet(const mavlink_command_l return MAV_RESULT_ACCEPTED; } - case MAV_CMD_CONDITION_YAW: - // param1 : target angle [0-360] - // param2 : speed during change [deg per second] - // param3 : direction (-1:ccw, +1:cw) - // param4 : relative offset (1) or absolute angle (0) - if ((packet.param1 >= 0.0f) && - (packet.param1 <= 360.0f) && - (is_zero(packet.param4) || is_equal(packet.param4,1.0f))) { - // blimp.flightmode->auto_yaw.set_fixed_yaw( - // packet.param1, - // packet.param2, - // (int8_t)packet.param3, - // is_positive(packet.param4)); - return MAV_RESULT_ACCEPTED; - } - return MAV_RESULT_FAILED; - default: return GCS_MAVLINK::handle_command_long_packet(packet, msg); } @@ -529,7 +514,7 @@ void GCS_MAVLINK_Blimp::handleMessage(const mavlink_message_t &msg) } // end handle mavlink -MAV_RESULT GCS_MAVLINK_Blimp::handle_flight_termination(const mavlink_command_long_t &packet) +MAV_RESULT GCS_MAVLINK_Blimp::handle_flight_termination(const mavlink_command_int_t &packet) { MAV_RESULT result = MAV_RESULT_FAILED; if (packet.param1 > 0.5f) { diff --git a/Blimp/GCS_Mavlink.h b/Blimp/GCS_Mavlink.h index 7ff116581c438..ed406ac0f9366 100644 --- a/Blimp/GCS_Mavlink.h +++ b/Blimp/GCS_Mavlink.h @@ -13,7 +13,7 @@ class GCS_MAVLINK_Blimp : public GCS_MAVLINK uint32_t telem_delay() const override; - MAV_RESULT handle_flight_termination(const mavlink_command_long_t &packet) override; + MAV_RESULT handle_flight_termination(const mavlink_command_int_t &packet) override; uint8_t sysid_my_gcs() const override; bool sysid_enforce() const override; diff --git a/Rover/GCS_Mavlink.cpp b/Rover/GCS_Mavlink.cpp index d2fbf0886bd82..24a41058cf756 100644 --- a/Rover/GCS_Mavlink.cpp +++ b/Rover/GCS_Mavlink.cpp @@ -531,7 +531,9 @@ static const ap_message STREAM_EXTENDED_STATUS_msgs[] = { MSG_GPS2_RAW, MSG_GPS2_RTK, MSG_NAV_CONTROLLER_OUTPUT, +#if AP_FENCE_ENABLED MSG_FENCE_STATUS, +#endif MSG_POSITION_TARGET_GLOBAL_INT, }; static const ap_message STREAM_POSITION_msgs[] = { diff --git a/Rover/mode_auto.cpp b/Rover/mode_auto.cpp index e71264a7ed06b..439f4a014b034 100644 --- a/Rover/mode_auto.cpp +++ b/Rover/mode_auto.cpp @@ -788,7 +788,11 @@ void ModeAuto::do_nav_delay(const AP_Mission::Mission_Command& cmd) nav_delay_time_max_ms = cmd.content.nav_delay.seconds * 1000; // convert seconds to milliseconds } else { // absolute delay to utc time +#if AP_RTC_ENABLED nav_delay_time_max_ms = AP::rtc().get_time_utc(cmd.content.nav_delay.hour_utc, cmd.content.nav_delay.min_utc, cmd.content.nav_delay.sec_utc, 0); +#else + nav_delay_time_max_ms = 0; +#endif } gcs().send_text(MAV_SEVERITY_INFO, "Delaying %u sec", (unsigned)(nav_delay_time_max_ms/1000)); } diff --git a/Rover/release-notes.txt b/Rover/release-notes.txt index a4cf5944f070e..e695707811318 100644 --- a/Rover/release-notes.txt +++ b/Rover/release-notes.txt @@ -1,5 +1,27 @@ Rover Release Notes: ------------------------------------------------------------------ +Rover 4.4.0-beta8 13-Oct-2023 +Changes from 4.4.0-beta7 +1) Autopilot related enhancements and fixes + - BETAFPV-F405 support + - MambaF405v2 battery and serial setup corrected + - mRo Control Zero OEM H7 bdshot support + - SpeedyBee-F405-Wing gets VTX power control + - SpeedyBee-F405-Mini support + - T-Motor H743 Mini support +2) EKF3 supports baroless boards +3) GPS-for-yaw allows base GPS to update at only 3Hz +4) INA battery monitor supports config of shunt resistor used (see BATTx_SHUNT) +5) Log VER message includes vehicle type +6) OpenDroneId option to auto-store IDs in persistent flash +7) RC SBUS protection against invalid data in first 4 channels +8) Bug fixes + - BMI088 IMU error value handling fixed to avoid occasional negative spike + - Dev environment CI autotest stability improvements + - OSD correct DisplayPort BF MSP symbols + - OSD option to correct direction arrows for BF font set + - Sensor status reporting to GCS fixed for baroless boards +------------------------------------------------------------------ Rover 4.4.0-beta7 14-Sep-2023 Changes from 4.4.0-beta6 1) Autopilot related enhancements @@ -20,7 +42,7 @@ Changes from 4.4.0-beta5 - Navigator autopilot GPIOs fix (PWM output was broken) - Pixhawk6C Serial RTS lines pulled low on startup - QiotekZealotF427 and QiotekZealotH743 battery monitor default fixed - - SDMODELH7V1 support + - SDMODELH7V1 supporta 2) Driver enhancements - DroneCAN battery monitors allow reset of battery SoC - Himark DroneCAN servo support diff --git a/Tools/AP_Bootloader/board_types.txt b/Tools/AP_Bootloader/board_types.txt index fe3ca656ea74e..ab5b3fa8bde83 100644 --- a/Tools/AP_Bootloader/board_types.txt +++ b/Tools/AP_Bootloader/board_types.txt @@ -248,8 +248,9 @@ AP_HW_PixFlamingoH743V 1133 AP_HW_AR-F407SmartBat 1134 AP_HW_SPEEDYBEEF4MINI 1135 -AP_HW_TMOTORH7 1136 +AP_HW_SPEEDYBEEF4V4 1136 AP_HW_FlywooF405Pro 1137 +AP_HW_TMOTORH7 1138 AP_HW_ESP32_PERIPH 1205 AP_HW_ESP32S3_PERIPH 1206 @@ -259,6 +260,11 @@ AP_HW_CUBEBLACK_PERIPH 1401 AP_HW_PIXRACER_PERIPH 1402 AP_HW_SWBOOMBOARD_PERIPH 1403 +AP_HW_VIMDRONES_FLOW 1404 +AP_HW_VIMDRONES_MOSAIC_X5 1405 +AP_HW_VIMDRONES_MOSAIC_H 1406 +AP_HW_VIMDRONES_PERIPH 1407 + # IDs 5000-5099 reserved for Carbonix # IDs 5100-5199 reserved for SYPAQ Systems # IDs 6000-6099 reserved for SpektreWorks diff --git a/Tools/AP_Periph/AP_Periph.h b/Tools/AP_Periph/AP_Periph.h index 9db9b8ccebe10..8ed77e88fc1fb 100644 --- a/Tools/AP_Periph/AP_Periph.h +++ b/Tools/AP_Periph/AP_Periph.h @@ -137,6 +137,7 @@ class AP_Periph_FW { void can_airspeed_update(); void can_rangefinder_update(); void can_battery_update(); + void can_battery_send_cells(uint8_t instance); void can_proximity_update(); void can_buzzer_update(void); void can_safety_button_update(void); @@ -235,6 +236,7 @@ class AP_Periph_FW { struct { mavlink_message_t msg; mavlink_status_t status; + uint32_t last_heartbeat_ms; } adsb; #endif @@ -357,6 +359,10 @@ class AP_Periph_FW { AP_Networking networking; #endif +#ifdef HAL_PERIPH_ENABLE_RTC + AP_RTC rtc; +#endif + #if HAL_GCS_ENABLED GCS_Periph _gcs; #endif @@ -365,13 +371,26 @@ class AP_Periph_FW { static const AP_Param::Info var_info[]; +#ifdef HAL_PERIPH_ENABLE_EFI + uint32_t last_efi_update_ms; +#endif +#ifdef HAL_PERIPH_ENABLE_MAG uint32_t last_mag_update_ms; +#endif +#ifdef HAL_PERIPH_ENABLE_GPS uint32_t last_gps_update_ms; uint32_t last_gps_yaw_ms; +#endif uint32_t last_relposheading_ms; +#ifdef HAL_PERIPH_ENABLE_BARO uint32_t last_baro_update_ms; +#endif +#ifdef HAL_PERIPH_ENABLE_AIRSPEED uint32_t last_airspeed_update_ms; +#endif +#ifdef HAL_PERIPH_ENABLE_GPS bool saw_gps_lock_once; +#endif static AP_Periph_FW *_singleton; @@ -473,10 +492,10 @@ class AP_Periph_FW { #if AP_SIM_ENABLED SITL::SIM sitl; +#endif #if AP_AHRS_ENABLED AP_AHRS ahrs; #endif -#endif }; #ifndef CAN_APP_NODE_NAME diff --git a/Tools/AP_Periph/Parameters.cpp b/Tools/AP_Periph/Parameters.cpp index 85c57798313ea..80b3ae7d44a21 100644 --- a/Tools/AP_Periph/Parameters.cpp +++ b/Tools/AP_Periph/Parameters.cpp @@ -608,6 +608,12 @@ const AP_Param::Info AP_Periph_FW::var_info[] = { GSCALAR(can_mirror_ports, "CAN_MIRROR_PORTS", 0), #endif // HAL_PERIPH_CAN_MIRROR +#ifdef HAL_PERIPH_ENABLE_RTC + // @Group: RTC + // @Path: ../libraries/AP_RTC/AP_RTC.cpp + GOBJECT(rtc, "RTC", AP_RTC), +#endif + AP_VAREND }; diff --git a/Tools/AP_Periph/Parameters.h b/Tools/AP_Periph/Parameters.h index 030444030ae80..fb4a628b02109 100644 --- a/Tools/AP_Periph/Parameters.h +++ b/Tools/AP_Periph/Parameters.h @@ -84,6 +84,7 @@ class Parameters { k_param_battery_balance, k_param_battery_hide_mask, k_param_can_mirror_ports, + k_param_rtc, }; AP_Int16 format_version; diff --git a/Tools/AP_Periph/adsb.cpp b/Tools/AP_Periph/adsb.cpp index fe80b39081ec8..1a1229826bee6 100644 --- a/Tools/AP_Periph/adsb.cpp +++ b/Tools/AP_Periph/adsb.cpp @@ -27,18 +27,6 @@ extern const AP_HAL::HAL &hal; -# if !HAL_GCS_ENABLED - -#include "include/mavlink/v2.0/protocol.h" -#include "include/mavlink/v2.0/mavlink_types.h" -#include "include/mavlink/v2.0/all/mavlink.h" -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wmissing-declarations" -#include "include/mavlink/v2.0/mavlink_helpers.h" -#pragma GCC diagnostic pop - -#endif - /* init ADSB support */ @@ -53,16 +41,6 @@ void AP_Periph_FW::adsb_init(void) } } -static mavlink_message_t chan_buffer; -mavlink_message_t* mavlink_get_channel_buffer(uint8_t chan) { - return &chan_buffer; -} - -static mavlink_status_t chan_status; -mavlink_status_t* mavlink_get_channel_status(uint8_t chan) { - return &chan_status; -} - /* update ADSB subsystem */ @@ -83,7 +61,7 @@ void AP_Periph_FW::adsb_update(void) const uint8_t c = (uint8_t)uart->read(); // Try to get a new message - if (mavlink_parse_char(MAVLINK_COMM_0, c, &adsb.msg, &adsb.status)) { + if (mavlink_frame_char_buffer(&adsb.msg, &adsb.status, c, &adsb.msg, &adsb.status) == MAVLINK_FRAMING_OK) { if (adsb.msg.msgid == MAVLINK_MSG_ID_ADSB_VEHICLE) { // decode and send as UAVCAN TrafficReport static mavlink_adsb_vehicle_t msg; @@ -92,6 +70,24 @@ void AP_Periph_FW::adsb_update(void) } } } + + /* + some ADSB devices need a heartbeat to get the system ID + */ + const uint32_t now_ms = AP_HAL::millis(); + if (now_ms - adsb.last_heartbeat_ms >= 1000) { + adsb.last_heartbeat_ms = now_ms; + mavlink_heartbeat_t heartbeat {}; + mavlink_message_t msg; + heartbeat.type = MAV_TYPE_GENERIC; + heartbeat.autopilot = MAV_AUTOPILOT_ARDUPILOTMEGA; + auto len = mavlink_msg_heartbeat_encode_status(1, + MAV_COMP_ID_PERIPHERAL, + &adsb.status, + &msg, &heartbeat); + + uart->write((uint8_t*)&msg.magic, len); + } } /* diff --git a/Tools/AP_Periph/batt_balance.cpp b/Tools/AP_Periph/batt_balance.cpp index fd1fec4207ade..86c7c7a11cd7c 100644 --- a/Tools/AP_Periph/batt_balance.cpp +++ b/Tools/AP_Periph/batt_balance.cpp @@ -102,6 +102,7 @@ void AP_Periph_FW::batt_balance_update() uint8_t *buffer = new uint8_t[ARDUPILOT_EQUIPMENT_POWER_BATTERYINFOAUX_MAX_SIZE]; if (pkt == nullptr || buffer == nullptr) { delete pkt; + delete [] buffer; return; } @@ -130,7 +131,7 @@ void AP_Periph_FW::batt_balance_update() total_size); delete pkt; - delete buffer; + delete [] buffer; } #endif // HAL_PERIPH_ENABLE_BATTERY_BALANCE diff --git a/Tools/AP_Periph/battery.cpp b/Tools/AP_Periph/battery.cpp index 9a97c591a11d3..8f07834d22e66 100644 --- a/Tools/AP_Periph/battery.cpp +++ b/Tools/AP_Periph/battery.cpp @@ -75,7 +75,53 @@ void AP_Periph_FW::can_battery_update(void) CANARD_TRANSFER_PRIORITY_LOW, &buffer[0], total_size); + + // Send individual cell information if available + if (battery_lib.has_cell_voltages(i)) { + can_battery_send_cells(i); + } + } +} + +/* + send individual cell voltages if available + */ +void AP_Periph_FW::can_battery_send_cells(uint8_t instance) +{ + // allocate space for the packet. This is a large + // packet that won't fit on the stack, so dynamically allocate + auto* pkt = new ardupilot_equipment_power_BatteryInfoAux; + uint8_t* buffer = new uint8_t[ARDUPILOT_EQUIPMENT_POWER_BATTERYINFOAUX_MAX_SIZE]; + if (pkt == nullptr || buffer == nullptr) { + delete pkt; + delete [] buffer; + return; + } + const auto &cell_voltages = battery_lib.get_cell_voltages(instance); + + for (uint8_t i = 0; i < ARRAY_SIZE(cell_voltages.cells); i++) { + if (cell_voltages.cells[i] == 0xFFFFU) { + break; + } + pkt->voltage_cell.data[i] = cell_voltages.cells[i]*0.001; + pkt->voltage_cell.len = i+1; } + + pkt->max_current = nanf(""); + pkt->nominal_voltage = nanf(""); + + // encode and send message: + const uint16_t total_size = ardupilot_equipment_power_BatteryInfoAux_encode(pkt, buffer, !periph.canfdout()); + + canard_broadcast(ARDUPILOT_EQUIPMENT_POWER_BATTERYINFOAUX_SIGNATURE, + ARDUPILOT_EQUIPMENT_POWER_BATTERYINFOAUX_ID, + CANARD_TRANSFER_PRIORITY_LOW, + buffer, + total_size); + + // Delete temporary buffers + delete pkt; + delete [] buffer; } #endif // HAL_PERIPH_ENABLE_BATTERY diff --git a/Tools/AP_Periph/efi.cpp b/Tools/AP_Periph/efi.cpp index 5d84adbfd72cd..d1bb114cf633d 100644 --- a/Tools/AP_Periph/efi.cpp +++ b/Tools/AP_Periph/efi.cpp @@ -8,6 +8,11 @@ #include +#ifndef AP_PERIPH_EFI_MAX_RATE +// default to 2x the AP_Vehicle rate +#define AP_PERIPH_EFI_MAX_RATE 100U +#endif + /* update CAN EFI */ @@ -16,6 +21,15 @@ void AP_Periph_FW::can_efi_update(void) if (!efi.enabled()) { return; } + +#if AP_PERIPH_EFI_MAX_RATE > 0 + const uint32_t now_ms = AP_HAL::millis(); + if (now_ms - last_efi_update_ms < (1000U / AP_PERIPH_EFI_MAX_RATE)) { + return; + } + last_efi_update_ms = now_ms; +#endif + efi.update(); const uint32_t update_ms = efi.get_last_update_ms(); if (!efi.is_healthy() || efi_update_ms == update_ms) { diff --git a/Tools/AP_Periph/esc_apd_telem.cpp b/Tools/AP_Periph/esc_apd_telem.cpp index fccc2663312bb..ed438d60f36c5 100644 --- a/Tools/AP_Periph/esc_apd_telem.cpp +++ b/Tools/AP_Periph/esc_apd_telem.cpp @@ -48,7 +48,7 @@ bool ESC_APD_Telem::update() { // valid packet, copy the data we need and reset length decoded.voltage = le16toh(received.packet.voltage) * 1e-2f; decoded.temperature = convert_temperature(le16toh(received.packet.temperature)); - decoded.current = le16toh(received.packet.bus_current) * (1 / 12.5f); + decoded.current = ((int16_t)le16toh(received.packet.bus_current)) * (1 / 12.5f); decoded.rpm = le32toh(received.packet.erpm) / pole_count; decoded.power_rating_pct = le16toh(received.packet.motor_duty) * 1e-2f; ret = true; diff --git a/Tools/AP_Periph/wscript b/Tools/AP_Periph/wscript index 30f09bb36dfcd..8f238ce14b0d5 100644 --- a/Tools/AP_Periph/wscript +++ b/Tools/AP_Periph/wscript @@ -80,7 +80,9 @@ def build(bld): 'AP_SBusOut', 'AP_RobotisServo', 'AP_FETtecOneWire', + 'GCS_MAVLink', ] + bld.ap_stlib( name= 'AP_Periph_libs', dynamic_source='modules/DroneCAN/libcanard/dsdlc_generated/src/**.c', diff --git a/Tools/IO_Firmware/iofirmware_dshot_highpolh.bin b/Tools/IO_Firmware/iofirmware_dshot_highpolh.bin index 441aa59e79f6c7bcc02babb81c0b5712d52e93ee..83a7e2b6299695df11f9bb41ab3e2a6a4570dcdc 100755 GIT binary patch delta 8943 zcmaKx3tUvy+W*(uGXtAD1Sp8e3?l*}I)DkLC>Pm?NQh--N`kir6~VlLH&DULu}oTe z(ma-Bp49ThfV@Z4aq!mBQ+lAZq>iPhY*N$qc$+=LT;AVC?b!eG@14)*yVtYVde+)& zul=lNJ!{Q{+uY~3xPi5lsAKvNzH(`n@_*Ss#@*u3Vv?Ja1!GGP~M4c;E$dk7o<-*{40y(QnHwytlM6MISA6 z&OK9$k`jK^rMWHAj3CsiU~!Rs0uGoJ`MvZ9%yM(9n*PZqL}pVjwmotZtz&m1r-to6 zOtf{9E;-q70WZsGj6YXqc#7{HX0!Y3=l0oIkEns3MqA_+DqdpwQK=Z=HBpSd%6h7Y zdYPpQQq_1W7P3j|IW&izRwvLDW>JUIZsrh*ed6r zbn$9Wk+YGwqwU=TiDye0R5Y++O(gBXmT79}0M-Th_2%$s#zn<;)o0n;si^Hzm!uhC zv@Lx8hQ^4h>{hy;h@04FePctLoc?)g!9)C;Q?2Eqee=|j9-;^HjL}5s4-tM#Fi|f@ z8t6sTiPy!#b&Yg075~k$W8B5*x*B zJH)<wdu%!N>gNC@S zP1}O}{m2jN?jaG++hV4t8UJD={I0c>^hP@T7~y|G8p0O!Uq^$OvwwJ~?if*5<|?Xu z5|r&+$~Z}jsotL@BrKsHv)u{#^f3E1;Uw+Lng_(7M(2QcC+%t_d}WIg7P8r`wD2mW zWw6HtN$C@4Q0RA*ZOd)RvUU*d7HKf4lLqT5jeLtIEc^>k{(?`mYP3flS4pFLm8iye zih2hf%^Qc~V`l(A){!`<<~`UX|JxX5U<}7OWT#Rmtshq>ZP3+8Z|Y!Nrnc^06y7^C z-B-xCGbi~^je(kT*GaNUz?56S?Z48SipL$hRywWT4!=C7b+TjDO5Z%C@af$)52y8x zleBt`Efn1;@Pf=~O>?z1kvU6^5hk1)BKQd&LO8yw8V2X@ z2u$2-3XBQRdfd#RI-yV`{xll>AC5P91wCJ!amT$#Te&`KM7vJnh85oUj-Q@$$TVHp zeP>R}vh3!r2X|@8j;4>Y;!Ftwck?^$%+1kZUo`pOJoB9YRQo1Zh{V+@?EbdVH@tWy zWX?jpLL{$U=Pf*+ZRe%YH@uPWReRnN=*3w$f#OvgCj+u== zi|g10-4N9bm)km=1tjIE(joO^#YuDMAa*t>!qe(hVI;m|H2i|7d|i9|5oLA$sH06=DucN()XjOFBLLJ@Vze!7eL&(O_Sq9vzA$9Vrjv|F<7e zulFbFacq9t#{PviwUC_Ox7!&ghk1xQFwq7Rg}BJ|&}4s@F<{JqJP+}li}f3-rlVNy z(8#9_xS~cY#L>>MF@5rSqkDT?Z1K=%GEd>XYXgY74z0gP?K$d(XWuE= z2fH5J8!#$b3LINkg%WY3at0lB<7?%AOZ>;4s#;g|0U34Utq{*@eyFENQFq-Fb$!Q< zs`ji_iUGSl*3pGL3UuVXh^9wTW{FHosMUY5q0zypTFnUd$e9Hy!reI-u z-Ba3O2!7x1<1si{;-U=qC)cEzsP=uVg*R4E^;04rpla7uQnegR25NsclLTu=N+n!@ z`o39*j<;33-pKcAyl=0#`bzqjL>th*PO8?8=-7fQNf_Q<-1}COc2sy`om5jjZjDr; zPU`R$l$H_&hlPb~mEZa+ER+W%f8FbnpDs`vClKam@#p+3ehTG2x3%6~X)sFufy#LA z&WBzEZ=0grzZ2SLo7~nY)RrHqx)RV|e&~sIlF-)S*Qhhfoicr4GZPZrvRN9zS_@;6 z{_N%&1C41din&UGW%&twhs(O_cMD+s?>^vd7BH?9vHbjTZ_&4yS5Yy-i&u))(An%} zQ50Rue8w+8=vp&AHFAXGNi#_KT`RA#FUOw@Ki{=Q8mZ$1Mas8LUh>;Bd|`##x|e!qJ{96}znt|aQ# zm2AY6w?jGcftzaM=3dv=ON(^~|Fach0J}9stK`IA+$^N{W6a&-#n1Jc# zKh%$(^2P~ySvy<72EIIwhOwHLW0fvzqQv&U{49-NwwF`rO_n%yQ1o>-Rr{tI5jBZ# z$Ted0gqK@5guZ?ZwjEn!7>kIG0q*p{X6qB$nQ7As`x@NAfc)0pIt()0`l5#qy`D%$DrTf{hrK#MABP?!O z9DSV?O-sa})l7?|!EEQWRJw#+oHm{QgAJXo(f;V5Pv2@%Cf@3}GLLE;R*a0=r%~>9 zap~7)^;}N;J6nNmVj@lKuZ-47^<=MwlrW| zeFc?J-#GmUK4pn=U~+rUOU->~g6Acoq0w7VezoL3uaJc09Xf0=+MK%#(9=cWx_BH( z9N(^jLs<~@ZIdb?u2a_d#7W|Ab$E@S18;Q7Vau(qpUgaZm+m0Gh{~tHB`($}2Y$|0 z&4_(|UwOh9gMF1{yrflcl^S*NgF(m>bckpP);;=v1g{Mqm;jmmfSz8ZSNkTTU{;YkIG3x z6Z>{Xq;iG1?HChg>S5oX%#8BsEAg!`u{WI7i>z~IJXJEqto$J(Y+?D|>epncIcclpSH27D7*5PfkMpLQcG3Vs*0ya68MIn`Q|#Xrp~A zI;q%k+I(mI_?#YJ=$My&DlKPa`exd~BFn;kj@j-bCX)?6k!6;pho0&BaMn7Q*3Ir- z@3HNgM{#t*%J$KCmOgtB&Pd8<_w*}sPQ0O1WQe$R`^h0)kPClNPId=&yWvz2_gXh?M;y&v1jlL-Tg{UkaP^Wbs3obAAI^ez_ z9m0gxvg-0!gxT+vhbAOT>svq0`oMBV;oaU_kSDy`+RNUUb-Vpx?!690w;ejH9qej( z&eIFsWb>!3ozil(w}xzUTYs@pq40rg!G@;o*fxX<51)|GHQGQmSLU6Pjy5{13)$p( zNwE6Y=OuXmP*QkLJ&qGE+S!SD(f)Tam7WnYyZy>F7rQg>nO^VOw@9n7EPdbc5A)+m zD@U`{6-=lYK_{^Kidbr92Py^y8SOXqV-d*WF*4*y7H1g>9K z#^UO(j0#xj_KEYtuwaj+cUXU5iSvsCMj%gl$rpz?e<2QQ5!*gLv$Ri_((((TIFSg< z;KZIs5XZG-uRxR{&6iFqvOL-(+l1?hu498{aV0Q#mj6X7}W)L|YT`Ln}>zFuW0^KBY?EC}eWRzq9pKe{9`&`6eYP+$*5XhJ zaX8=M#BZ=g>7JbGF4T#yf9N1N@e8NJs$)@$B6WrLhQF$`^rdvK!`jeQ-m0CQ(n_?u zOXd4LT?&K-beMJ;NqEq4*X*!*cd@yPrsOR-`Y@>GTa-FZ>@QI@Ze*k$dD z-Ay1i$5OTjK7*!JsiWczH|^W^%EMg}iIX}U)>am@IFY{3MlO!=UW6T6AO>_>8=JSd z_r#;Ruv|=6tQPXwg&YQQV&G9;@G@{Be^kCtYoQi3@xxml?o#5+1|w%tQz|Y)^eG=r z@h!o^Q&qg++kdagH(HU`t5PBUi(OruQghj+Yb_MV74;KIhRynwEzXc8XsX~>aPs9o zT%wn(U%BH2oArB1A(l%vYp|VSt3xqad_d6CT;0!^1qQ^g5a z<~(fc>|x2+JBX+Qae~E((MLHk`6$i{7+dljoyN>dQZw~kvUg1?iR_--#OjV}#CJUk zIB^=@w#(XpH$k1u^^Jala<6J1&PuvSUk@Q9FAi4y1)EwGg|=#{v;~c}@6Ej2&Z>K; z?*_c!-3m{6nD(a~@Ti9=Z1FB^w6eul2o?Ib$~OC}eIRCir4fCEXRgdZoN<^F-(kO2 zg~l84No4!~31Q*GI;7v(#CDt@4Tu+-FgKFX?rJwy8S!1mkLD2JKd`Ok%^RyA*@xql|q_B8}c=U81<2V1jD%iZW=dzX#&uW&ywKi(?-a-6xA4GGlk&Kzg6mXAyL#ks0UWeLR5nay=hBDG2(MM#EOlK5X2G(oE+M&1pB=?|qKN^!iHW_nU9?=EPynI>S6+XRWW+f-iaSGk{ zN=q8iPK#MGa|tJwvd$HebUd@Jh@x4n=gKJfiPV)EoTN{}HIOaC)y;O|dYhS6PEc(* zL3kYtuNfA()e$)6OpZbb)cbavyH53lMGNtQZ+=F37miKl*F@A9+@iT#A9dszmWDJF zsL~X1ubGINV#ck?diceAU6QP<%L89jLYPf4LK4n=yz(ULC3_C$;-0QTab=NY{g+*` zo^)0kIq~0JG|i4Zk7V}#T04AI$?95pwyxHv!7;pKP%H~(%W4;KZ70~B+O=}Bbk$#r z+T@B7KfSGa z{KhxAr|X@&%MwQIF5Qj5XmZ5v63OV>8HTS<#VY3~5zh!$^}111eAW4be%Pp+<}jEK z#kolMrdT?WWp0WL8|};zuIMe{RLq7>_NW_XStH%qym-?W9DR}HHC&;F=KgQiskr_} zS>s!o^snsBTZ8dwW4C3}bF6IJ*IeC6mbLw_w1HjUzJuF#vU%;>f|84Jvh(ls<9wX# z!8>YdXFcC7=60QAi{Cv#EzLuBC2;=F9eED_K4pMk%%6YS{ObFwsrNyQ%g3O+soAxA zt)k`%WFMSshQa3FgA12h+V1{iLQQ&)MEF&a?)sjm1*5=54T3U2Do$yyd{Yd=T2hKt602e_gAdi0MGVre< zNX&#D(yO2h@_R`40RxD{eG6;YKeH8p@3EXGKo4v{`RkzJ3B9e5w}YKIq=tX*iGoR}FdxXB+5`51|F=^HE(4_?9wdS!@VI;ra47 zzKAkln2a|CvYrw5r$HxcJus}siCj7btreqt;E!4=N7;O^0{mZ3bfTQTj8~cpvjuaL%$1{E=P@%38t9S(0U8 zLOu>ogR`={5WPlOLpjOi;~@-1rE5sfp-_c%)ogSEvIPX8f%`}g)WRN-UId-sGH5}) zt4OcC!jc=87GYzc@gAmC@+V+0`e+Q4`R?>5b`3yKFI075Ap_-y$%kbehX-TytM${&w@r)K}iKA zFThd7)C5P>$;zH zd*<(VxNm>s`j=C}NA)7wfE=PN8cnnpffDWl(TIPXT{Ttx~oG!7oF`Yo}`pdCaT@;1?CBRqJd>bDoFOul|+6OcKRX!ndF z+I^N{`lGK#YV#6*WcgjPLM}pTum_C^%Ka!^^}~2s9l9>7%}T{(tfos~cw;>wN(Y)% zgeN+p)!rf32qC-@ca&Z4lIHoHtKF&h6&vHV|m*%O=7v!zR?O9vp z-d#zoN!(vf47{M$n`Gk%DxPC4-FDG(wjgLVH_Xi*1exezmfSs=?zJrFoCuqNUmxizfVWH{^a=DRh3=1o}AXlPabmwaMbFx}KYgAQ>jWZ%>T-v4H zPySS!^sw*c&`C7wv&R;z%#-JDNFUUacdtCZPBtgh$^-(>wD_ zHgC^LGAr+w=H=a6z7Y9}m6%B3(mdn|P(~D`vheV5{{vQ4PEYdzt5Qcr?H4RNJcCBC zP2rR17G@2f7Tmjm7%F9BVq(p=7za+@c(cUhDTXw#=X!m>863bw(x6I{Edx> zNT#2$r4fv-gWQ8f@{wNGI!Oa{0NmiPiIQJ>uKGmCcF2_q5z!UUuaI53?~( zcT3+g2Op9Axsw;%QkJXx!*73OzVhYE6F1Z=@u%Chyr=k58;LpI+%fKGk8Gmi7c5^N zjutP_m(g_gAILi_evyoe80J`=Zf~Yys)H{`X@rf}X>--6$wWj1OY?8XBn=l5#llX?s-R zM~EeeeFl0|yxtxo#ODw+=X!!k-ZGREx3}*rJOG{F+BJf?L+9&u5*d}FXv7t)mWT5i z+eX5PmF+hQkMizkr5~VpphK|%g@xtBL=sF+^H5JQ&D~k>+1B2X`{eD&_%lFY-rz*ps>$~cJ~@e-fkq?Jz7K=90$B1}q~c77@3Uo?>st#J4=DQ- zma6?@{3g`Q^(nQS4MZSVA zQk6iM`a=!A!*|ZzFS{g_vrD#18tvR}4Z`26=19xmy&i`09K$rIg4SWKBqN@zb( zOSU8h2s(X?p#Ff0JDtAOC8&s%_wPn~uxMKyBHQr1yxuqFRDUI>1QeKtdC#Z!Ge85q#Ji)1p&lCMs2by$IFkYWL zk$Ri%x|ha3`J;Tee7#JJ>f4!`kJ59S2g=;g;EvXHb0i2ZN$(;tre?Y`7_z6sC1tzH zYh98@M_R5uO>mV-;}Ja^(MQu`no@+kTUS)xx374gzMT;`&Hk$0=k{q;i0sW@sU>!m z%{#*jvbT-W5SgAhZPRilJ9jtzmM`ZeQ~tC~N4;$vr%elyIh{|E7TO${W?$u~u^NRF zR#kQ5O>r}(7MU_Kdg1vIC0T^9-Nr=ClkIM)5BuJjt%-(2SyaMYI*wH(gl1lMX)tPE zx^$M)k!ssON)Hgx&qYM$~`Wr!@Rb9jLpe5pSL`AdT(hCrbd@Ez0G?k6_hcXZFfnz ztSBkVYpY_cTF7T+#3n`5SO<0d$zedcWgDhllw5GH{nH8CX^*vsLhOY77 z$fjtxCDE-Iz)H4q@LDdVfq5i9$#px4vHd_x(I{Y{Dd8B5)RYZ_1cCfE51oVif*rspooDL zH@$eAy(Xm4XV@2l-mgxn^kKqbc3+6@aS7^*u|GmFh;}KGC1vTk7aQ5rS;mlOj+UT* zUE^WQQEH(V`q|AmhoIl=ovZ<6jdGaDv#-jgQ_a7eSE?=b6g@pnw>im~!hj@wW_E8?npt+>6?82x< zdfZZ#9l{0v>hi%!Ef5KQHc!mgZGo(LY>yyfR!1sn zy2s+jT%p65SMC7%Jxk5i)6d!D+)%FF$x3sFV5zX=rj>o+tdxh3{oMLzJC0ys*EN=) z>h3}~=Jjh%O%9EW6$}N?EKu7_goq=dQ_?sR`(%8pJ8ipgwbgrxPpPlq9~UGH#o@7Y zD|)mI=^_cE32`XvV`rmmGzP?lUpC$S#|x&rzmz3iUl|}$f8VAM7)ETR^2YgVn|cae z4Rb0FVEzAjWuU0#Jew(>QerGoD+_If&S0|!ifR>h3qqTRl-#urElDa7t%U#0YDB|N zEZAJF?OA=_zTo<-j0?oz-?vg;W*phF6;BeE-uz71iCV+RkeEujY#CW47x2j~YFmNE zTZj`lJ=vnHX5V3>JtTKGZj!r!AfwK}F+W?7iZacIgehB|pRK#f;{&%;<}Rsel)LNH zvEG+E*Ol|FB+280UC4Q^)-ClwNlNvaYyN$e1{`lDamQNxtBs9lAh)2N&B_~)u*J<) z>l#z)RP)pVOZOABE$!0w|Jpyxuz&vfk(${Td4<%?V#mHoE$rmjsq{4#k-thm#<5p^ zgKU)x`K>ZDvh-sueFYCaVYtoMhO6Ati|lm%BD$L;Kb1@evjtCu()nz|Q>S4WdE=qCF{OMkw@n^RJnoguG-fy?zC&waht^DJJ;Qz; zXP`%!=lH1P-({tQksWENNQ?XbmT;{@E1^TH543{WjPaA{c-AyNf$n3r@rD6$MYybj z9pEJR9XNnSEK|`qlen$CTsDo36{_Vm#3jANGA8KhTvjw83hUK|3CR?_ov@Q`WYeBb zrjhK;r*G4(Y}Le~DHRo`DlnE!D#0TAo}m05nVh(?KCoPgQw(1#*d=%S`|CA=5mI|Q z#nNn-Mk2IJ8SN_J+WIh|Jk&1P5W^$xzB^BRIo~cNwU;znZcY>^eUc5BG?aeC=1z+D z3TYxu+B%oigYB6V>-9Hzt2_lq&o|hGNwGc^_E>>KEu8oY^L#dfhOy{p!*RvSd^S4Z zpO{`IY$aw7!ms*QXvR&p^4Xv1*Q{`IR5!Jo8dl3Uja@YFu{ZY4 zn0c+{)$$S}t}YoWaTv>}od%i8wT>Mytfl?ZmL^_keZE3ALUro)+P;+pH2p?Ch;+Jwq2lF#*F$p*W-c zhBdsT^EBa-o@HN8E2f2(VFiB5_LWnZ%-uc4Dhp%iM0Th!9tLuyFdQC%w!&mu%o3*0 zp!eCf>3Ty~7aeq`Rvmw*<=T9zcSfDSI=$0hbvI`PihXnWa&lYw3mpU zMs7v=^@5*f5tw6Txe>?gI@j(RXc|NDTr!r#Pi)p;DPI(ErB)Lcb6L^Yi=*qE7O&y7 z|E?-d=J>-eNo>zs;YK zxAKRqG@74>s|e*pe`VnKe$Gb&r!>@v+r^ZEmpTS4(D|{|)WnWFZ>D`&L{Ws#6j@sj zo7(KcnJ~L3mUdx_igE^bZ41u1VqTT5Y1wTKu7Mw>kQ2k)IBeQE;jsLR(I_M)?F>${ z5qhRIF#-AWRHE-ucCV-(mo~=|Ia8nkr|sJ?D^xqrT5H!omD&9pku94w4XeQASr&SS zZ8C@WJZQU*yQ^a9Ev&{oEQmPw&s+=Zy4}&zt8KgIQ}F>)%|3|Pb7=MeI*nbO-NSE~ zYvL`n$|UYCpF7&Z=o|yR&7$Tc(2v=~IfG~g+cd{Q53#hl2D*Y3&CNlLHFKBJK`eG& zR^W&>pO_CX`$k@r-zFN{Uh0z4*{XR{y>7U_m5*WuPiC$2qG>7%C=QByLS9$@QTkrn zmn!e(FahIE+){6Qb^343ow4^?I;l^sCLf(V+ zMeA#K;Ia}Tbk;D#F{*~@ugyOrAFp;wqu5u)2{fF!isQWBE6BUYkL5%^2TPnE*(J_x z5QYe89Scdgn@yiTr04hct#So+yB}M=us)i%qk?cCEn!FI52u^h{rSSPTI7QoXLR}zY6R!KCT3rZsVN4b4syf7@-1IR*fVOrtS4z=x9Lg7BqnK&`80f(QujFmXh2s!mQ!_UKcz2*q- zls>nc?$W^bUNM-JT~%@Z>@){w$;#13a7wG49)dr@3TJsJE{Lka+ny9x+ZWoT687Q3 z%-*pMPP`8%pR&+saln$0uUH_qYaT{n^-T|arY;WF?S%qv;0dj1_8Oa!vVc zQ;k!qWl4*o=^QqBQ4uzolZ(OwyV&~*M6b4$tIO(YPk}q6<$FDB>rFQF#rWu0Tn%I3jN-(uF8FUSDJkzjp8D0DYa}On zw>u>@+x%j<(R9~}>tkqqyEMC#jwo-YZnzmpN28WzeC9=_Kw!%kNgF^e;R6 z=ZjOaKRMoc64lnJjhr|g7hG+lB8|iOUO81dq@Oyjc=4@rh6g@_zFtX)fS zZEeQ-JaKG(ACZ{aq}SSFYElG!X{VbmxuL);ORu?Og*NF;StS<9ZPHhmTq#(0{TxbK zxjR9SrHdUJYoIY6x1pEvW$EwkHt9&4zLXQL&Fw6UHpq=(0fg7V-NuQ}9>)rO9R4|` zS~`wC%O);OPJ6;Zc{rB~!aMK(k~`uFeAiKc6W>B_9a0f`f;?&Ks^RuHpgG8i>l~!F zhtMrM23Gw(`+8{vZiW9@YRIi@`_ZcHINp{c{|2BHyz4p9w}JMhEm%<-C~PsVV;=bm zK|Z>d zh;o;^v3rZ(JO6F%Cj1238f$Ts&Z1m*CwqSR@cai2zV&H^u=zqKYWEhX-ekr-Otr(r z<2FXbUmCQ6u8!(Y;DpS()j~>*mbXjc?ZGuO%-rY`t;C=hQ^6@*FFOpfnf<;Tu2Uxq zUNNf6e)j|GqkCxSDK>w_;GipTm@Dfa6{pCfguX(mK*U|FenluZ{uKLe#n`wHTott% zn+~qK1owHFl&gg#ArWRV8$0J4?lo9G4%;h5lh-BdMV9|kGPm$m_UcP(Qde$JS`gNU zM&*o2#N1X!bgnBqN0E1j%qS=-;lvp(q2pa`OCg5oQA>-Ka^fVGy)qn*m{}_$;2B(t zXJ58|rJjbcb9idmZ9FCB_p+Y;!UnuNLBpSh?~$#4d1&}1r*8C@nJPhN_HDrp%1l_K z5G(lRn2H?|W7l5}EnDpttsVLp9c6}{L3kc$QdBV;n+Q)a<0{f&by*sri_lHTy`+W3 zk8*elFV@6B%5bFOImT(omZeR0PQ2n6*-Ke@#kF;g2lwh6_w2QqyK!M~59Gc%YNP)5 zFO7wMOh>Lo_S#9AyhyUUT-MqssdI>;EQNL?&9r9=NHNKhm#ey-^t;$xn|a|I6bB9O z4vh(aXvj_ybGG?_jZ>eplHMn*BZbefz_I7cHgaQ5v%6($lwf)J`}t!qF4{WPC^+xk zjW@M$#Q)SZ<&U`kc^G%8Y2F`kCmzQAqv@qT;*LCwJJYn0EvyI(di#%*cORxyH+{r* zR9JEUu6SjyD&P&c#0Jl&B!!w%x)J{38*K2JcWJZb@|qV_8vI3ec8BGuS6}A_WxC#* z9XIm5!uQNE!sO8R3gkxL%fYZKDyFzT2^}I_HycOdKPT7E=Ak2RTZ3VkRE%RGo1)=G zP1_V6taYUe*UYvMDypE9G4hsG(Qr8}OE!JO(SNh-E!SwRrEgWGhWns_Rlku&_p`fi z48*N1`pq<&%Vxj%J*PXv(zm})^I7Zmom}rTmNh#BHTR>F{bN@j?kgvIu#2b1SdYI= z<@%jrOa69>F0`b+6UTK4Y#4|C>`dTS>-aA$FYI{*uGcg0V1Z(brTyJCD&0KDK5*g& zV>T6Hb70-}n?g6Y(=D+A-F{zM*KQO^hDQtGm5t^BTo?=XhtLCT{r(JiInVF^N^>$9 zV`bTOz(Dg`hY{@^ux$ja6SARFX97O$ig;e9r!0PDdvumkJ@k7`!*9?2E(+pPyDk$x7O zdra><pz(Me+QQ0W_5Z-G* zT}M2;SIWqCP_G=fE(?t3etvr9NaT;%9?mun;T;%fL!d0ak4;%!CKmy9j1leHFLxxQxPjyuCsCAQ&Pz0ueLhzR+J_$VocP673Q#$q9p1~(X z+zpm`XlPj~Vuyj*Q_(c=S0x=p+96O6{;wKSpF??|ZW?L;e^s8Q04*yZGqtOyqwnCa z6we{;JZO2IXl>xH^jt`zMQG$q=z{;!W0O8!TQ;m1pB=YV>>xHL^qA24=&|Pa>`g>6h_-9`YoFigU$F3GtqW;ub<)3>HGao-M47 z4zi(?tDs{NAv_OmutU`w%GR$(pVy&GSpPP#1MC8Oz``|X16aKlT>%FXSB3CA;toMx zjL-$@AlHLNP=~ViDCr;-WuM3UF32a5b`}i7dnPys`Ft)`!U`k?Kye$w9e|^%M-zjj zZNON)iZKS0z@vl~=r`hh6T*vtLhnApWl9{Vg1ik(Kz#NllmUu2VqlTB1M$0*wE1)A zFIdV3*FM+xpQo_sf*ar#5WxfB1l(zyB!EBYcA9-w`%dg`^b**>RnQ79f|KA7aDf>{ hLVVA#HI~0=-hSF$Mp^vfBo7gP02MS?W*(l&{VzOV)MWqw diff --git a/Tools/IO_Firmware/iofirmware_dshot_lowpolh.bin b/Tools/IO_Firmware/iofirmware_dshot_lowpolh.bin index 0bce6c10f1ecd1a0d8bbb22aa166535e973533a8..dbc520edd07a617a842e2cb6b8f8ccb3383ff166 100755 GIT binary patch delta 8943 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 delta 9132 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 diff --git a/Tools/IO_Firmware/iofirmware_f103_8MHz_highpolh.bin b/Tools/IO_Firmware/iofirmware_f103_8MHz_highpolh.bin index 82065f85eb99b080e4a05146bd69e328e5485d17..a722bc5bd2ee925ea653298d76de6d6ccf52bbad 100755 GIT binary patch delta 7863 zcmaKx3s_Xu+Q--0b77-g1ypXbhXDl<9WE+_m*KVnL6OYNlmxFMVqs>9W?+J8r&3#* zTG`PQ)6x=%j+FC3mX)1j52TjnsZUGKc*)wM(%#I4`TiTVJm>j3JkM{|yWjU+?_T%I z=I4*OPusb%wUh`4!wBD*OZZr@cR0 z-w2L@v*0?Qs|X*mYSXy>{Vu>m4Lh~=cDk^3)4PNH3hH5Bhd4+J{<`Ux$2Yb6^f^6@ z@QbqvU;b2c1+DPbl`6bsU}yW}C1yZ!D}C55oYzJ)Y|x%>W&yVlA+@OfasWW^&t;SoeCE$P-r7vCZ! zaiU(zZ8rEWrL=%;@jDlk(oKx}BkGhSQvuQ1O@vBU*&6@1;=fVeSEBnRHGWtaZaGt_ zv7A)anYQI^R$}_KHnvP?DePzIsN^hPEBn}#fDyEUtqFLI&SX)6YqWZ4sfX`(J~VzE-b% zM(UMgCe0zqIwy)t7<(pq(vM9kw9mfW3!OC}=ObdQQ-&ocH=a@~9A~gzt}^STbXF3!pK6&iEQ(gL@bCoh;oYZ{ zC+?@xWL6x$h(@rF!e$4mkR0?FBQ6aP+vqcRF`K-sUKoE7( z(H_CbMf(&8k$NeN83jZ59s8 zbG2`>Z=#cF4)ZoX#jSgjJ!|}N@&771QD`(^sK4vZC`>48D612wbPC!4XgSGOxl~pQ z&EI?dXtY60DdZ%sJGT4)wC&J7)SG*QJ5Ee2BzW_MB(t(HgOkR&8_M^==Uw<%dVN;0 z&X|zGq3%oNhoOHJ`hC6ng~%IG7#B@2wk;WYX=TstILEHUL^mkg1fBhL!byJa*x7rK z@0s7@O=L;2Ats0G((KL9S3p0oQ7s{n${ewC(yYO65q{@dN;dB${QHpSf*0OmPsXmL zA2D}qX#ZPBh)|WMS>886+rgzwR*Zy7zZ_x120uynvE73w(pAhp_%yor^C5-Y&rTK` zca*-wzKx5eE15g)ufx~vCVW+k7Gq+gM{DPGT6?N~s-o>1(5SJzwh(hCOYS7b%}Oe% zQ&LUr%lHWY2~L{NTL*d*Ap-cau6RR@Pmdr5Skn+F1pRQ*A&C6%EonweKIYj9VV# z@-1-7FS_PG<5Qp&KfBqkcgrz7q}98qSn{L@CXq6?T+!3sL^h^~0fsn{dz(s!9eoZ} zSyNJWn+d7O=34@k@+dCpc#}tdjvXKRR^YEFrbm9$Gq5pURHcP%b;1yOlI>4OqW@s$ z5{xwt*HDqdX1$zd_Q-SE(ySQPdBLKus24-g+3Ff4IRX;*wFSib8}-+6sY%2z_M_3L z&KOi|0V?vO`G#kiv1(n`xDJ!TWfWiifuECmxNVNO`^KV_mD$bC-)_>B*P7nRifc;{ zxobagUtG%{_;r)twJ)al&2qfd6RdEx8i!wZ{#9>Y3z@T1?_kAy=T~-~&vx)i{?$Iv zd)Izt5Af#f9CY3{gB5?vozxP5K?griM$ib*g;s+Lnu_4k}}k5WWb=|}e7@JQ}^H~VV%`&49WMoi~+ zx!4aQ1QYKT7Hg%~TvXU=Lw*yc{+!)&f3T6Zi&#k3k0ZP}%bx^ba1r=zaWxM&4WeAf zZZ;_?S-)owW< n>3gPu!Bikxw(6om^_J^*_LDj_o>1TClBg(q+2JQaz+;tLxe@` zX+MQsP8N#0o#w_M!+?C9q;(ZVhZL+EsFSKa)EG3;WO-+)#uAQ|TqiZ5BAoOw3JJ}k zZFx?M&xH4d@5*)3nr@Q?+XB2)k3(!)N+jpn&7MqoKFp>FqNy;ZcR|o*=pA>axz42ru{$LEAw1TFkFH$WI{cz+ADL z39rCDxepOGLjS-%oJOEK-d7%WA*OeqZQX?ZEoYltcZ9q4Vs^@Ehy-8YFL+**2Y6~Un}3JlQLNOsBSue%@{4y zuh^6{15ISh(xRxLc}rRerNPa%^e#%Xo4?OU(0G?RilvGYmpq*Xj!)=UgbJ(-erY@{ z)Ra}_k+#YPHfj9BewnR!%N^B$2KK@D!CXfJ`(gYju5vHyZ#IQpJY0ps_QRa&7poNq zq0qsm3Zj$FD6Gspyv8e@vj=dGp3PgXUG61$dF5R7ikX@HzVo+R!*ZgPfTFtPut?*z zb7{`iZ?%6|{E9wZ{@n6CBXPP->>pQ5_z zJXmV9F*Ps^2>v51U-W79bJcSZ_S;~u6~~*rBn`sm-4j+{l(WKXg;t8v?m^zI_k`6J z)vd@|aS?f^-4l^3>T7zzCZRLXYJ?hVl_FDBo+_)bjhT8nmu=0oa_{eLelTkw7xas} zFAgq2m>#}%FU>|1kv6c^If?W`_FhhS+?N=L0akVLc;uJS%es5kWg=xl6M&WY=e_Jk z&UbV?JCQqrb~1Nvl-45?g$ZI9cK!@8gI;A%iJ3LWU3JR1$)DNOqNp)@`7wuA6lnWo5po+#xF@2(@`36y~&spnpmgQR8L-`lnF_l zeMGIjOv7OVAY0U0f8!#?gNmQ&Ma9Z0dI9Xib8JnmAdo(L)Dia?H~#5oxX=mR<%%VUw7LG3Bqzbj%DV@CcWa} z4yk*srcx`iEMJlD?2*s(+`CcLW25?`hpw`%`Q?S1#1j@U3-*Q z$Y!Nn*sL%U%lfc$sHis(^tskPPUDeRFg9T+P7z*(qv?}ud|^0U$7U3M!s*>iDC!Tx z=%U=w)0_pOQ{Lyy#P1G=Q{LbvH*BV~+ELsVWdhOPs+w=gcFH-uUR!#-o`=`dthvaD z)Bd+bv7-m{+AO`cQrL?B-w4`Xuc^IW6W}$5rA(YbA7vXRCQ%Rjc%pH{qEcMfz*#^a zA$$tR06M8gLlex>mfBjyJUL!Gq^u=w`5P8A$v}^>k&|L+6PqzO862x;1^%rt2de9q8>h_lp4 z47(R>hW0|)JB>mmCq3RBcwU>}-^t#cCPW#q=6mE%dekh}8sRqibSoWlH+mvlI?doW zp_`7p-lR>u-l^^Z?DDiRga6`bPu-b&sS`(r)oQJj7GiJLYef?_x;!_DGk3VQe>av)cKw&9wet|I%uH9wywr|X91Wlmbi zc1#~JphUUO+icpQm(ILt5h|OUjvE!(oFuZJrvFOMvy%^}(^Td=X|&VJT_uKdb1^aWl*Cg z-z~r7qQ>l{JQm7S=s79k2#5!B5vt6Y_f_8nVF1Fb#wc?D%+J)vu zw>*=bD;+{>ndXss+!Om*#Ul~HK8~RxF=*|zL?h{O2u-tY-p^irL>T(4qrEA>N>h9j ze(AhVz_f3>jQ2?`^@qGf?jSD=66-JPF?fD)v5Suk8#2PJ6XRNOV3P*o{-MM2Mg=D_ z#Xd%Ob#>;X9=96@z0tEGM-<;0^SIU?L+L)ZY;`VfHCCjw665Z2^|{lj!CFHzjI&9? zZ=E-7Zh0MBGplq$i`uqW>G>9|iIY}zQ-Qat(jx5PYJ9Y@Q(gTNuPE7iw7;QMwcgiF zV`9$VJ{OTVrPD2scCw*m!#Kgo9x99RIo7))kv5;V3D2Za!R+-iam*3ZK%5cO^PYO2 zQD4eQ!_ms#m<)rDsLyFF)GiQTRO*aViwhr`&@NCad3xBO@-W)K(#un7G)_}%u{614 zutdxb+2x39OcM>ut(O%umDU_7vp}cBiw;@m&`8;eLr!;6oPVe^-KE-oQIcTG?p8f+ zb!((#rC55p#3A3;?T}-fhUJ`ie$nk%6OSlXtsfBr#84E-a)gtXAHmgtT`QkL)7bdg zqZ7ZwaTecJ$|4V83T+^=Cn^T@O$D6vsOp=!?vSsj-KX1+3CniRPT;Qgu#VZovMb^8 z6yU`^t(^4Rhjb|I<_ix-=4O-V-JnVvYb+mN1%wqWr`8W83SOU#UsDu zS$i{Z-TRI@$?V->t6s*k7L3C;wbcurOE)Z2%Mme{#ugSOW9F(2o9QknROOwabIRsb zaZ{Iie;-nEQ(-Mh~Dzhw6xSZ5jqB!DaJ1qkJm3?e6&>z@O_&vdN z3k~!L8?x{(*k+p-W^g?UlNRRdwFd~l?;SR-;yzC2Vk;`bYW}WhM_X|jmDb?=FzUn= zZhf>EFX{`;iwQmzO19fM2(M0~Luk8Jpi9%lz0gJkifOev>-InhJJT&sap}>|-Ey&u zqT#ybX>RX=Zh4zC7ZWbTSu8zM(k*XrcFSves;rz;z>)yPh3vT-qI${iEd5>P;P910-`q(&Kzw6IJ zR}#ySG-^%@B!c@{w&IDGxXTBc`z(7{qxW5lQ$u}o#q#gCk>5IZFHFeUUB25AC(a1p zU8Y!l&JM&F!DlSzd*Szq7c8b6Dt+qw$&!(C%{CBYjY?Kly>bY}`oA)Az^l$I@w~+z zN~JCE$c()FUS@miQt7|gxw=f8 zNFwXMrE#pQ{w*&3f12M|dz7Q!vhwvq=qGIbdIQcX@2oGSW0?2z=jiq3OV9sGeIq}b zf)B=K@Utza`N9i@w9n*&gwF@{uQ!i+$xp*QeUOQpCe`dZOo-Cbe)IFGHDmiHViA={ zUd%s9qFxL>*S~l~W?EKwM@WGzFII>_mWMlcHj-i5@9^spdAz?%)sNK5E_80TPr2H`INdphB}KsRs$a_8^L7{Y%HmW@S+BaKJe2#!HM z0ZxN?cn)P-Hb>P2;%0p!_ckGrLqQ}k+@n|R>3ALsrh-zi5G)2uz}+{ies|@POu|nG zTVUS~cHHB)3vvV4ZzeVT!Fvql$WRT`LN$UG@SlaULiaJK2LG*4t*|cxtH9ktg(CK9 zJlBKuz51HlrcOMZ24}(d-~zY=u7JClU(EVLJ~j#M2`+%+cd#P8>w5{Z9b5s8paryo zyY|Fl!jA-@HTW@rTu=b+I+R1+u>#GEbRL)rrh`&&*TxOe>Of#N>Ck;{s5{5RKHw2PXz9CHfig9HT6)h2Q5?4E#S{Wb-~sRbPxXb zSJuP69&}B^f6N~G^LV+i6+A>1@W&oT-+@1SvG)u#JqRqtf6~C8`Hh7w6I{m?EpXO< z`msm1JzKMD4tjYW>M$Qu6-))&7ovH}FyTNZ$OQ#pBB(A$IM}-&pN8xUBEfc04>o}k z*rtNjkVi&f)Icr=^T0wdb^&6-<}N29zYB^Tcv!3gc?pO|p|+@cunbg#bOc(3bTz04 z>%qJV3?rnQ*vH#fmXt5T)C8w1;fYlD7zWs4TvWjl4CWB%(qYTRb1dXW$OfeGAQJ2c z$Dum`s^K5YUVL>(NGYNefKZI7u}ITF2|NDkhML5s80bqdW1+bKE`clHItZ;olYk`H z(}5kju}G_->w+AKbU$!Irbu;Q`r~L~H3i>8UIGdrdjnq(53V3aAkvU3tX+u^THut4 zG#7AGb9Xk7OHZINP{6am4elD2K`w_a328NGfV>@Pq^biWA*X|G$hxPH|4FpdR RN*~dHFV=gS_r4)={|6FYn7sf1 delta 8147 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 diff --git a/Tools/IO_Firmware/iofirmware_f103_8MHz_lowpolh.bin b/Tools/IO_Firmware/iofirmware_f103_8MHz_lowpolh.bin index 9897dce49e79c265d9bc18bf1ba6942f27c60dd5..cdb40f2fab870f0225c3f9ea488aaa2ba73fad86 100755 GIT binary patch delta 7863 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 delta 8147 zcmaKx3s@9Kw#Tb_W}tyVMiIg@^nl1)2k?Osb>z{2sECh5qeRfCqoToABDxB$XfSFN zOIN*FvnGnKNWvrRmFNW2kd3=B7tCfOag(b_+!2jQkI_ss!!Y;XD6YBR&E@-kUDfBD zI#pATQ&r7JE!+?1xv}Mx2sJ^3_YetRkV*K|4p;rS zvZ_Vvc_SW9(+TgrwqXff;-R@C^U`~)!!s-45^~$S{3iNMI-REaYPzfruFUGPQ0byP zVB&yZ$#|)bP4WunO5SBlyo~N2I(sbc(h*kYl}nE>r`LaSr5~_AYo|Z;jqI|mb_pVt zUg>fR&%00ZqeVCA^9H^5DoXR%zJAwyH+7MSlOYvyq9KQyC2A#-!0*03*v^B~L$E)MB+G4MA z&(QedtD`5<@QB`~&Ndy$iZJby7wWGTH_9*eR~lcA#y85QMCCo)zakv}F|2szmQ9l9V2mTtH7BZ5)$+m}VqQjYYXfSPThzVs}Se#=^n!SxmQ4XOn#Y_lk zzLa3YcHhW6Y2mkOk;rHr@K#map z2c8HCol@SbwRAU?uCr-^Q|%@N$ZWda=+AoeYqb-+bNOr%qiyal2EyI?9(GC}uIVky z+Vu(C3q5K zoT<5Sh1G=>0+ntPDhb-kr)xbDY&hCt&jtY)rj2%t^u{a}|rY!Y%SxL1W!fMmQSYf$5%;2(Zcd4zsX4tS9vf4{mr!u{<_&`>5nyuX+vJYcIe6BcXHg68_ zAVLTTWSuekvhW^3)R|M@#t$RaX%|HPabFwJ*N5!{5u`${oKhigGgQcX448k-8K^w( z{wMQ|_m(D=H14Rq+)0zL=2mG%UAQWdF!ehcc;g+1H#%*@yZhxhZCkq+ZuHJkiy!~o z;^wr4_K+rziFuN1STZ6ebK2(jwA7Q`$)ZjlEvipZ>9Sp0TY`#`laCk)DNE-Yb#hS{ zmw2h(W!u7t#_8!J8dbwx-$EC(OG8O3ULX< zXVRjZQ^dU6*HoT&u6bU(lkPj${+iwE&P7$A>?vHUCw7(9Gu;DuPb;N?GHtnN@Vn;mr)gVFgC;M!u|A6yj32#jEAv#Pv0o*pp7u93v<@LZw~ zF$rRiO?I)`Bq48Ux3SJw|5Ua{dbxXIxL;0XfJS=9MI(GC8BFi2QkjAg@io$*?r6jy z2igS5(gRrzlXk-U!dFEa=|PvlguMe+ip6afmK@3*ILgK*zZRtL5=2Appx)@APSr@` zu-=9t4#f4aZ<9yp5A_(r!*Ye}pcTS|phB#Vm0vC5B+eN)Av7ll?b*pj4ND!X#c!+h zCc+La5e_3?jPFt6KZ)R%09+6jvLGsA7jVHjo|p> z?3-~0&cBK2jQ*Tw7mGFyDKpCn^#w8*jS{CF!+}2a=ExA?vi2 zYxC9;X&f<9_v$%nL{>~l|) z_0(3D=9Q8%sSM3E-hN8=Z@0YmlhR$KM!5Y_=d+pH(tx@oi5`K%*S7%4~D z{ZF`6Yb)2~t!qKq=brG$X}uD6SS0knvN~x*xjfNOlGVFXr;PWc^Vsb1W^T&yhM=?n z&i4nW7tTe#SRLM0chznKk@m67jD(Cc@{=*`EyOg%fwGERwohawlt0Yx#@RyiL?9

G(9mac~tu)^IS6T9n4gDqRqiqhv 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 diff --git a/Tools/IO_Firmware/iofirmware_f103_dshot_highpolh.bin b/Tools/IO_Firmware/iofirmware_f103_dshot_highpolh.bin old mode 100644 new mode 100755 index 2c1bd7e9d57eb85fbd3865933ab85f9e1ac150f5..3d993264ce8699942bf654a8877104efe329e02f GIT binary patch delta 9148 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 BUkVz5-alcfjjo6n=y7 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 QkEp{h*1H?`yeV@32Q7S<1poj5 delta 8147 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 My!W=f_NvJJAN;qDasU7T delta 8108 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 N;=Q-+wO2*%{{R@bj&lG2 delta 8106 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 DzY_}h diff --git a/Tools/Replay/Replay.cpp b/Tools/Replay/Replay.cpp index 63c0cfba19106..a55a33a799d1b 100644 --- a/Tools/Replay/Replay.cpp +++ b/Tools/Replay/Replay.cpp @@ -100,8 +100,10 @@ const struct AP_Param::GroupInfo GCS_MAVLINK_Parameters::var_info[] = { }; GCS_Dummy _gcs; +#if AP_ADVANCEDFAILSAFE_ENABLED AP_AdvancedFailsafe *AP::advancedfailsafe() { return nullptr; } bool AP_AdvancedFailsafe::gcs_terminate(bool should_terminate, const char *reason) { return false; } +#endif // dummy method to avoid linking AP_Avoidance // AP_Avoidance *AP::ap_avoidance() { return nullptr; } diff --git a/Tools/ardupilotwaf/boards.py b/Tools/ardupilotwaf/boards.py index f1a51e5fd673d..faf500cc24ee3 100644 --- a/Tools/ardupilotwaf/boards.py +++ b/Tools/ardupilotwaf/boards.py @@ -829,6 +829,7 @@ def configure_env(self, cfg, env): HAL_PERIPH_ENABLE_EFI = 1, HAL_PERIPH_ENABLE_RPM = 1, HAL_PERIPH_ENABLE_RC_OUT = 1, + HAL_PERIPH_ENABLE_ADSB = 1, AP_AIRSPEED_ENABLED = 1, AP_AIRSPEED_AUTOCAL_ENABLE = 0, AP_AHRS_ENABLED = 1, @@ -837,6 +838,7 @@ def configure_env(self, cfg, env): HAL_RAM_RESERVE_START = 0, APJ_BOARD_ID = 100, HAL_GCS_ENABLED = 0, + HAL_MAVLINK_BINDINGS_ENABLED = 1, HAL_LOGGING_ENABLED = 0, HAL_LOGGING_MAVLINK_ENABLED = 0, AP_MISSION_ENABLED = 0, @@ -862,6 +864,7 @@ def configure_env(self, cfg, env): HAL_NAVEKF3_AVAILABLE = 0, HAL_PWM_COUNT = 32, HAL_WITH_ESC_TELEM = 1, + AP_RTC_ENABLED = 0, ) diff --git a/Tools/autotest/ArduCopter_Tests/PayLoadPlaceMission/copter_payload_place.txt b/Tools/autotest/ArduCopter_Tests/PayloadPlaceMission/copter_payload_place.txt similarity index 100% rename from Tools/autotest/ArduCopter_Tests/PayLoadPlaceMission/copter_payload_place.txt rename to Tools/autotest/ArduCopter_Tests/PayloadPlaceMission/copter_payload_place.txt diff --git a/Tools/autotest/arducopter.py b/Tools/autotest/arducopter.py index 4559da65fa56c..043c791540b57 100644 --- a/Tools/autotest/arducopter.py +++ b/Tools/autotest/arducopter.py @@ -4599,7 +4599,7 @@ def precision_loiter_to_pos(self, x, y, z, timeout=40): 0.01 # size of target in radians, Y-axis ) - def PayLoadPlaceMission(self): + def PayloadPlaceMission(self): """Test payload placing in auto.""" self.context_push() @@ -8653,9 +8653,10 @@ def verify_yaw(mav, m): if m.yawspeed > yawspeed_thresh_rads: raise NotAchievedException("Excessive yaw on takeoff: %f deg/s > %f deg/s (frame=%s)" % (math.degrees(m.yawspeed), math.degrees(yawspeed_thresh_rads), frame)) - self.install_message_hook(verify_yaw) + self.context_push() + self.install_message_hook_context(verify_yaw) self.takeoff(10) - self.remove_message_hook(verify_yaw) + self.context_pop() self.hover() self.change_mode('ALT_HOLD') self.delay_sim_time(1) @@ -8671,13 +8672,14 @@ def verify_rollpitch(mav, m): if m.roll > roll_thresh_rad: raise NotAchievedException("Excessive roll %f deg > %f deg" % (math.degrees(m.roll), math.degrees(roll_thresh_rad))) - self.install_message_hook(verify_rollpitch) + self.context_push() + self.install_message_hook_context(verify_rollpitch) for i in range(5): self.set_rc(4, 2000) self.delay_sim_time(0.5) self.set_rc(4, 1500) self.delay_sim_time(5) - self.remove_message_hook(verify_rollpitch) + self.context_pop() self.do_RTL() @@ -9880,7 +9882,7 @@ def tests1a(self): self.GuidedSubModeChange, self.MAV_CMD_CONDITION_YAW, self.LoiterToAlt, - self.PayLoadPlaceMission, + self.PayloadPlaceMission, self.PrecisionLoiterCompanion, self.Landing, self.PrecisionLanding, @@ -10000,6 +10002,9 @@ def tests1e(self): self.MAVLandedStateTakeoff, self.Weathervane, self.MAV_CMD_AIRFRAME_CONFIGURATION, + self.MAV_CMD_NAV_LOITER_UNLIM, + self.MAV_CMD_NAV_RETURN_TO_LAUNCH, + self.MAV_CMD_NAV_VTOL_LAND, ]) return ret @@ -10264,6 +10269,107 @@ def DO_CHANGE_SPEED_in_guided(self): self.disarm_vehicle(force=True) self.reboot_sitl() + def _MAV_CMD_DO_FLIGHTTERMINATION(self, command): + self.set_parameters({ + "SYSID_MYGCS": self.mav.source_system, + "DISARM_DELAY": 0, + }) + self.wait_ready_to_arm() + self.arm_vehicle() + self.context_collect('STATUSTEXT') + command(mavutil.mavlink.MAV_CMD_DO_FLIGHTTERMINATION, p1=1) + self.wait_disarmed() + self.reboot_sitl() + + def MAV_CMD_DO_FLIGHTTERMINATION(self): + '''test MAV_CMD_DO_FLIGHTTERMINATION works on Copter''' + self._MAV_CMD_DO_FLIGHTTERMINATION(self.run_cmd) + self._MAV_CMD_DO_FLIGHTTERMINATION(self.run_cmd_int) + + def MAV_CMD_NAV_LOITER_UNLIM(self): + '''ensure MAV_CMD_NAV_LOITER_UNLIM via mavlink works''' + for command in self.run_cmd, self.run_cmd_int: + self.change_mode('STABILIZE') + command(mavutil.mavlink.MAV_CMD_NAV_LOITER_UNLIM) + self.wait_mode('LOITER') + + def MAV_CMD_NAV_RETURN_TO_LAUNCH(self): + '''ensure MAV_CMD_NAV_RETURN_TO_LAUNCH via mavlink works''' + for command in self.run_cmd, self.run_cmd_int: + self.change_mode('STABILIZE') + command(mavutil.mavlink.MAV_CMD_NAV_RETURN_TO_LAUNCH) + self.wait_mode('RTL') + + def MAV_CMD_NAV_VTOL_LAND(self): + '''ensure MAV_CMD_NAV_LAND via mavlink works''' + for command in self.run_cmd, self.run_cmd_int: + self.change_mode('STABILIZE') + command(mavutil.mavlink.MAV_CMD_NAV_VTOL_LAND) + self.wait_mode('LAND') + self.change_mode('STABILIZE') + command(mavutil.mavlink.MAV_CMD_NAV_LAND) + self.wait_mode('LAND') + + def start_flying_simple_rehome_mission(self, items): + '''uploads items, changes mode to auto, waits ready to arm and arms + vehicle. If the first item it a takeoff you can expect the + vehicle to fly after this method returns + ''' + + self.upload_simple_relhome_mission(items) + + self.set_parameter("AUTO_OPTIONS", 3) + self.change_mode('AUTO') + self.wait_ready_to_arm() + + self.arm_vehicle() + + def _MAV_CMD_DO_LAND_START(self, run_cmd): + alt = 5 + self.start_flying_simple_rehome_mission([ + (mavutil.mavlink.MAV_CMD_NAV_TAKEOFF, 0, 0, alt), + (mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, 200, 0, alt), + (mavutil.mavlink.MAV_CMD_NAV_LAND, 0, 0, 0), + (mavutil.mavlink.MAV_CMD_DO_LAND_START, 0, 0, alt), + (mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, 200, 2000, alt), + (mavutil.mavlink.MAV_CMD_NAV_LAND, 0, 0, 0), + ]) + + self.wait_current_waypoint(2) + run_cmd(mavutil.mavlink.MAV_CMD_DO_LAND_START) + self.wait_current_waypoint(5) + # we pretend to be in RTL mode while doing this: + self.wait_mode("AUTO_RTL") + self.do_RTL() + + def MAV_CMD_DO_LAND_START(self): + '''test handling of mavlink-received MAV_CMD_DO_LAND_START command''' + self._MAV_CMD_DO_LAND_START(self.run_cmd) + self.zero_throttle() + self._MAV_CMD_DO_LAND_START(self.run_cmd_int) + + def _MAV_CMD_SET_EKF_SOURCE_SET(self, run_cmd): + run_cmd( + mavutil.mavlink.MAV_CMD_SET_EKF_SOURCE_SET, + 17, + want_result=mavutil.mavlink.MAV_RESULT_DENIED, + ) + + self.change_mode('LOITER') + self.wait_ready_to_arm() + + run_cmd(mavutil.mavlink.MAV_CMD_SET_EKF_SOURCE_SET, 2) + + self.assert_prearm_failure('Need Position Estimate') + run_cmd(mavutil.mavlink.MAV_CMD_SET_EKF_SOURCE_SET, 1) + + self.wait_ready_to_arm() + + def MAV_CMD_SET_EKF_SOURCE_SET(self): + '''test setting of source sets using mavlink command''' + self._MAV_CMD_SET_EKF_SOURCE_SET(self.run_cmd) + self._MAV_CMD_SET_EKF_SOURCE_SET(self.run_cmd_int) + def tests2b(self): # this block currently around 9.5mins here '''return list of all tests''' ret = ([ @@ -10328,6 +10434,9 @@ def tests2b(self): # this block currently around 9.5mins here self.RPLidarA2, self.SafetySwitch, self.BrakeZ, + self.MAV_CMD_DO_FLIGHTTERMINATION, + self.MAV_CMD_DO_LAND_START, + self.MAV_CMD_SET_EKF_SOURCE_SET, ]) return ret diff --git a/Tools/autotest/arduplane.py b/Tools/autotest/arduplane.py index 17a4c22fdb62e..e6060a0bde2e7 100644 --- a/Tools/autotest/arduplane.py +++ b/Tools/autotest/arduplane.py @@ -1836,6 +1836,82 @@ def FenceRetRally(self): self.do_fence_disable() # Disable fence so we can land self.fly_home_land_and_disarm() # Pack it up, we're going home. + def TerrainRally(self): + """ Tests terrain follow with a rally point """ + self.context_push() + self.install_terrain_handlers_context() + + def terrain_following_above_80m(mav, m): + if m.get_type() == 'TERRAIN_REPORT': + if m.current_height < 50: + raise NotAchievedException( + "TERRAIN_REPORT.current_height below 50m %fm" % m.current_height) + if m.get_type() == 'VFR_HUD': + if m.groundspeed < 2: + raise NotAchievedException("hit ground") + + def terrain_wait_path(loc1, loc2, steps): + '''wait till we have terrain for N steps from loc1 to loc2''' + tstart = self.get_sim_time_cached() + self.progress("Waiting for terrain data") + while True: + now = self.get_sim_time_cached() + if now - tstart > 60: + raise NotAchievedException("Did not get correct required terrain") + for i in range(steps): + lat = loc1.lat + i * (loc2.lat-loc1.lat)/steps + lon = loc1.lng + i * (loc2.lng-loc1.lng)/steps + self.mav.mav.terrain_check_send(int(lat*1.0e7), int(lon*1.0e7)) + + report = self.assert_receive_message('TERRAIN_REPORT', timeout=60) + self.progress("Terrain pending=%u" % report.pending) + if report.pending == 0: + break + self.progress("Got required terrain") + + self.wait_ready_to_arm() + self.homeloc = self.mav.location() + + guided_loc = mavutil.location(-35.39723762, 149.07284612, 99.0, 0) + rally_loc = mavutil.location(-35.3654952000, 149.1558698000, 100, 0) + + terrain_wait_path(self.homeloc, rally_loc, 10) + + # set a rally point to the west of home + self.upload_rally_points_from_locations([rally_loc]) + + self.set_parameter("TKOFF_ALT", 100) + self.change_mode("TAKEOFF") + self.wait_ready_to_arm() + self.arm_vehicle() + self.set_parameter("TERRAIN_FOLLOW", 1) + self.wait_altitude(90, 120, timeout=30, relative=True) + self.progress("Done takeoff") + + self.install_message_hook_context(terrain_following_above_80m) + + self.change_mode("GUIDED") + self.do_reposition(guided_loc, frame=mavutil.mavlink.MAV_FRAME_GLOBAL_TERRAIN_ALT) + self.progress("Flying to guided location") + self.wait_location(guided_loc, + accuracy=200, + target_altitude=None, + timeout=600) + + self.progress("Reached guided location") + self.set_parameter("RALLY_LIMIT_KM", 50) + self.change_mode("RTL") + self.progress("Flying to rally point") + self.wait_location(rally_loc, + accuracy=200, + target_altitude=None, + timeout=600) + self.progress("Reached rally point") + + self.context_pop() + self.disarm_vehicle(force=True) + self.reboot_sitl() + def Parachute(self): '''Test Parachute''' self.set_rc(9, 1000) @@ -3793,29 +3869,36 @@ def attempt_fence_breached_disable(start_mode, end_mode, expected_mode, action): attempt_fence_breached_disable(start_mode="FBWA", end_mode="FBWA", expected_mode="GUIDED", action=6) attempt_fence_breached_disable(start_mode="FBWA", end_mode="FBWA", expected_mode="GUIDED", action=7) - def MAV_DO_AUX_FUNCTION(self): + def _MAV_CMD_DO_AUX_FUNCTION(self, run_cmd): '''Test triggering Auxiliary Functions via mavlink''' self.context_collect('STATUSTEXT') - self.run_auxfunc(64, 2) # 64 == reverse throttle + self.run_auxfunc(64, 2, run_cmd=run_cmd) # 64 == reverse throttle self.wait_statustext("RevThrottle: ENABLE", check_context=True) - self.run_auxfunc(64, 0) + self.run_auxfunc(64, 0, run_cmd=run_cmd) self.wait_statustext("RevThrottle: DISABLE", check_context=True) - self.run_auxfunc(65, 2) # 65 == GPS_DISABLE + self.run_auxfunc(65, 2, run_cmd=run_cmd) # 65 == GPS_DISABLE self.start_subtest("Bad auxfunc") self.run_auxfunc( 65231, 2, - want_result=mavutil.mavlink.MAV_RESULT_FAILED + want_result=mavutil.mavlink.MAV_RESULT_FAILED, + run_cmd=run_cmd, ) self.start_subtest("Bad switchpos") self.run_auxfunc( 62, 17, - want_result=mavutil.mavlink.MAV_RESULT_DENIED + want_result=mavutil.mavlink.MAV_RESULT_DENIED, + run_cmd=run_cmd, ) + def MAV_CMD_DO_AUX_FUNCTION(self): + '''Test triggering Auxiliary Functions via mavlink''' + self._MAV_CMD_DO_AUX_FUNCTION(run_cmd=self.run_cmd) + self._MAV_CMD_DO_AUX_FUNCTION(run_cmd=self.run_cmd_int) + def FlyEachFrame(self): '''Fly each supported internal frame''' vinfo = vehicleinfo.VehicleInfo() @@ -4926,6 +5009,127 @@ def MAV_CMD_DO_GO_AROUND(self): self._MAV_CMD_DO_GO_AROUND(self.run_cmd) self._MAV_CMD_DO_GO_AROUND(self.run_cmd_int) + def _MAV_CMD_DO_FLIGHTTERMINATION(self, command): + self.set_parameters({ + "AFS_ENABLE": 1, + "SYSID_MYGCS": self.mav.source_system, + "AFS_TERM_ACTION": 42, + }) + self.wait_ready_to_arm() + self.arm_vehicle() + self.context_collect('STATUSTEXT') + command(mavutil.mavlink.MAV_CMD_DO_FLIGHTTERMINATION, p1=1) + self.wait_disarmed() + self.wait_text('Terminating due to GCS request', check_context=True) + self.reboot_sitl() + + def MAV_CMD_DO_FLIGHTTERMINATION(self): + '''test MAV_CMD_DO_FLIGHTTERMINATION works on Plane''' + self._MAV_CMD_DO_FLIGHTTERMINATION(self.run_cmd) + self._MAV_CMD_DO_FLIGHTTERMINATION(self.run_cmd_int) + + def MAV_CMD_DO_LAND_START(self): + '''test MAV_CMD_DO_LAND_START as mavlink command''' + self.set_parameters({ + "RTL_AUTOLAND": 3, + }) + self.upload_simple_relhome_mission([ + (mavutil.mavlink.MAV_CMD_NAV_TAKEOFF, 0, 0, 30), + (mavutil.mavlink.MAV_CMD_NAV_LOITER_UNLIM, 0, 0, 30), + self.create_MISSION_ITEM_INT( + mavutil.mavlink.MAV_CMD_DO_LAND_START, + ), + (mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, 800, 0, 0), + ]) + + self.change_mode('AUTO') + self.wait_ready_to_arm() + + self.arm_vehicle() + + self.start_subtest("DO_LAND_START as COMMAND_LONG") + self.wait_current_waypoint(2) + self.run_cmd(mavutil.mavlink.MAV_CMD_DO_LAND_START) + self.wait_current_waypoint(4) + + self.start_subtest("DO_LAND_START as COMMAND_INT") + self.set_current_waypoint(2) + self.run_cmd_int(mavutil.mavlink.MAV_CMD_DO_LAND_START) + self.wait_current_waypoint(4) + + self.fly_home_land_and_disarm() + + def start_flying_simple_rehome_mission(self, items): + '''uploads items, changes mode to auto, waits ready to arm and arms + vehicle. If the first item it a takeoff you can expect the + vehicle to fly after this method returns + ''' + + self.upload_simple_relhome_mission(items) + + self.change_mode('AUTO') + self.wait_ready_to_arm() + + self.arm_vehicle() + + def InteractTest(self): + '''just takeoff''' + + if self.mavproxy is None: + raise NotAchievedException("Must be started with --map") + + self.start_flying_simple_rehome_mission([ + (mavutil.mavlink.MAV_CMD_NAV_TAKEOFF, 0, 0, 30), + (mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, 800, 0, 0), + (mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, 800, 800, 0), + (mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, 0, 400, 0), + ]) + + self.wait_current_waypoint(4) + + self.set_parameter('SIM_SPEEDUP', 1) + + self.mavproxy.interact() + + def MAV_CMD_MISSION_START(self): + '''test MAV_CMD_MISSION_START starts AUTO''' + self.upload_simple_relhome_mission([ + (mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, 800, 0, 0), + ]) + for run_cmd in self.run_cmd, self.run_cmd_int: + self.change_mode('LOITER') + run_cmd(mavutil.mavlink.MAV_CMD_MISSION_START) + self.wait_mode('AUTO') + + def MAV_CMD_NAV_LOITER_UNLIM(self): + '''test receiving MAV_CMD_NAV_LOITER_UNLIM from GCS''' + self.takeoff(10) + self.run_cmd(mavutil.mavlink.MAV_CMD_NAV_LOITER_UNLIM) + self.wait_mode('LOITER') + self.change_mode('GUIDED') + self.run_cmd_int(mavutil.mavlink.MAV_CMD_NAV_LOITER_UNLIM) + self.wait_mode('LOITER') + self.fly_home_land_and_disarm() + + def MAV_CMD_NAV_RETURN_TO_LAUNCH(self): + '''test receiving MAV_CMD_NAV_RETURN_TO_LAUNCH from GCS''' + self.set_parameter('RTL_AUTOLAND', 1) + self.start_flying_simple_rehome_mission([ + (mavutil.mavlink.MAV_CMD_NAV_TAKEOFF, 0, 0, 30), + (mavutil.mavlink.MAV_CMD_NAV_LOITER_UNLIM, 0, 0, 30), + self.create_MISSION_ITEM_INT( + mavutil.mavlink.MAV_CMD_DO_LAND_START, + ), + (mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, 800, 0, 0), + ]) + + for i in self.run_cmd, self.run_cmd_int: + self.wait_current_waypoint(2) + self.run_cmd(mavutil.mavlink.MAV_CMD_NAV_RETURN_TO_LAUNCH) + self.wait_current_waypoint(4) + self.set_current_waypoint(2) + self.fly_home_land_and_disarm() + def tests(self): '''return list of all tests''' ret = super(AutoTestPlane, self).tests() @@ -4986,7 +5190,7 @@ def tests(self): self.RTL_CLIMB_MIN, self.ClimbBeforeTurn, self.IMUTempCal, - self.MAV_DO_AUX_FUNCTION, + self.MAV_CMD_DO_AUX_FUNCTION, self.SmartBattery, self.FlyEachFrame, self.RCDisableAirspeedUse, @@ -5022,10 +5226,18 @@ def tests(self): self.MAV_CMD_DO_INVERTED_FLIGHT, self.MAV_CMD_DO_AUTOTUNE_ENABLE, self.MAV_CMD_DO_GO_AROUND, + self.MAV_CMD_DO_FLIGHTTERMINATION, + self.MAV_CMD_DO_LAND_START, + self.InteractTest, + self.MAV_CMD_MISSION_START, + self.TerrainRally, + self.MAV_CMD_NAV_LOITER_UNLIM, + self.MAV_CMD_NAV_RETURN_TO_LAUNCH, ]) return ret def disabled_tests(self): return { "LandingDrift": "Flapping test. See https://github.com/ArduPilot/ardupilot/issues/20054", + "InteractTest": "requires user interaction", } diff --git a/Tools/autotest/ardusub.py b/Tools/autotest/ardusub.py index 624e1924da9c3..230bfbd1838f3 100644 --- a/Tools/autotest/ardusub.py +++ b/Tools/autotest/ardusub.py @@ -422,6 +422,7 @@ def disabled_tests(self): ret = super(AutoTestSub, self).disabled_tests() ret.update({ "ConfigErrorLoop": "Sub does not instantiate AP_Stats. Also see https://github.com/ArduPilot/ardupilot/issues/10247", # noqa + "MAV_CMD_DO_CHANGE_SPEED": "Doesn't work", }) return ret @@ -439,6 +440,82 @@ def MAV_CMD_NAV_LAND(self): cmd(mavutil.mavlink.MAV_CMD_NAV_LAND) self.assert_mode('SURFACE') + def MAV_CMD_MISSION_START(self): + '''test handling of MAV_CMD_NAV_LAND received via mavlink''' + self.upload_simple_relhome_mission([ + (mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, 2000, 0, 0), + (mavutil.mavlink.MAV_CMD_NAV_RETURN_TO_LAUNCH, 0, 0, 0), + ]) + + self.wait_ready_to_arm() + self.arm_vehicle() + for cmd in self.run_cmd, self.run_cmd_int: + self.change_mode('CIRCLE') + cmd(mavutil.mavlink.MAV_CMD_MISSION_START) + self.assert_mode('AUTO') + self.disarm_vehicle() + + def MAV_CMD_DO_CHANGE_SPEED(self): + '''ensure vehicle changes speeds when DO_CHANGE_SPEED received''' + items = [ + (mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, 2000, 0, 0), + (mavutil.mavlink.MAV_CMD_NAV_RETURN_TO_LAUNCH, 0, 0, 0), + ] + items = [] + for i in range(0, 2000, 10): + items.append((mavutil.mavlink.MAV_CMD_NAV_WAYPOINT, i, 0, 0)) + self.upload_simple_relhome_mission(items) + + self.wait_ready_to_arm() + self.arm_vehicle() + self.run_cmd(mavutil.mavlink.MAV_CMD_MISSION_START) + for run_cmd in self.run_cmd, self.run_cmd_int: + for speed in [1, 2, 3, 1]: + run_cmd(mavutil.mavlink.MAV_CMD_DO_CHANGE_SPEED, p2=speed) + self.wait_groundspeed(speed-0.02, speed+0.02, minimum_duration=2) + self.disarm_vehicle() + + def _MAV_CMD_CONDITION_YAW(self, run_cmd): + self.arm_vehicle() + self.change_mode('GUIDED') + for angle in 5, 30, 60, 10: + angular_rate = 10 + direction = 1 + relative_or_absolute = 0 + run_cmd( + mavutil.mavlink.MAV_CMD_CONDITION_YAW, + p1=angle, + p2=angular_rate, + p3=direction, + p4=relative_or_absolute, # 1 for relative, 0 for absolute + ) + self.wait_heading(angle, minimum_duration=2) + + self.start_subtest('Relative angle') + run_cmd( + mavutil.mavlink.MAV_CMD_CONDITION_YAW, + p1=0, + p2=10, + p3=1, + p4=0, # 1 for relative, 0 for absolute + ) + self.wait_heading(0, minimum_duration=2) + run_cmd( + mavutil.mavlink.MAV_CMD_CONDITION_YAW, + p1=20, + p2=10, + p3=1, + p4=1, # 1 for relative, 0 for absolute + ) + self.wait_heading(20, minimum_duration=2) + + self.disarm_vehicle() + + def MAV_CMD_CONDITION_YAW(self): + '''ensure vehicle yaws according to GCS command''' + self._MAV_CMD_CONDITION_YAW(self.run_cmd) + self._MAV_CMD_CONDITION_YAW(self.run_cmd_int) + def tests(self): '''return list of all tests''' ret = super(AutoTestSub, self).tests() @@ -456,6 +533,9 @@ def tests(self): self.TestLogDownloadMAVProxy, self.MAV_CMD_NAV_LOITER_UNLIM, self.MAV_CMD_NAV_LAND, + self.MAV_CMD_MISSION_START, + self.MAV_CMD_DO_CHANGE_SPEED, + self.MAV_CMD_CONDITION_YAW, ]) return ret diff --git a/Tools/autotest/autotest.py b/Tools/autotest/autotest.py index 04735f7fd90f5..84c5884e070db 100755 --- a/Tools/autotest/autotest.py +++ b/Tools/autotest/autotest.py @@ -98,7 +98,7 @@ def build_binaries(): def build_examples(**kwargs): """Build examples.""" - for target in 'fmuv2', 'Pixhawk1', 'navio', 'linux': + for target in 'Pixhawk1', 'navio', 'linux': print("Running build.examples for %s" % target) try: util.build_examples(target, **kwargs) diff --git a/Tools/autotest/balancebot.py b/Tools/autotest/balancebot.py index efeb4875109aa..0bc8963e8b262 100644 --- a/Tools/autotest/balancebot.py +++ b/Tools/autotest/balancebot.py @@ -111,7 +111,7 @@ def tests(self): self.DriveRTL, self.DriveMission, self.TestWheelEncoder, - self.GetBanner, + self.MAV_CMD_DO_SEND_BANNER, self.DO_SET_MODE, self.ServoRelayEvents, ]) diff --git a/Tools/autotest/common.py b/Tools/autotest/common.py index 1e7c61edecc86..99685094031b2 100644 --- a/Tools/autotest/common.py +++ b/Tools/autotest/common.py @@ -227,6 +227,8 @@ def close(self): self.file = None def write(self, data): + if isinstance(data, bytes): + data = data.decode('ascii') self.file.write(data) if not self.suppress_stdout: self.stdout.write(data) @@ -2151,19 +2153,10 @@ def get_sim_parameter_documentation_get_whitelist(self): "SIM_ADSB_COUNT", "SIM_ADSB_RADIUS", "SIM_ADSB_TX", - "SIM_ARSPD2_FAIL", - "SIM_ARSPD2_FAILP", "SIM_ARSPD2_OFS", - "SIM_ARSPD2_PITOT", - "SIM_ARSPD2_RATIO", "SIM_ARSPD2_RND", - "SIM_ARSPD2_SIGN", - "SIM_ARSPD_FAILP", "SIM_ARSPD_OFS", - "SIM_ARSPD_PITOT", - "SIM_ARSPD_RATIO", "SIM_ARSPD_RND", - "SIM_ARSPD_SIGN", "SIM_BAR2_DELAY", "SIM_BAR2_DISABLE", "SIM_BAR2_DRIFT", @@ -2216,10 +2209,6 @@ def get_sim_parameter_documentation_get_whitelist(self): "SIM_IE24_ENABLE", "SIM_IE24_ERROR", "SIM_IE24_STATE", - "SIM_IMU_COUNT", - "SIM_IMU_POS_X", - "SIM_IMU_POS_Y", - "SIM_IMU_POS_Z", "SIM_IMUT1_ACC1_X", "SIM_IMUT1_ACC1_Y", "SIM_IMUT1_ACC1_Z", @@ -3359,13 +3348,16 @@ def HIGH_LATENCY2(self): raise NotAchievedException("Air Temperature not received from HIGH_LATENCY2") self.HIGH_LATENCY2_links() - def context_set_message_rate_hz(self, id, rate_hz): + def context_set_message_rate_hz(self, id, rate_hz, run_cmd=None): + if run_cmd is None: + run_cmd = self.run_cmd + overridden_message_rates = self.context_get().overridden_message_rates if id not in overridden_message_rates: - overridden_message_rates[id] = self.get_message_rate(id) + overridden_message_rates[id] = self.measure_message_rate(id) - self.set_message_rate_hz(id, rate_hz) + self.set_message_rate_hz(id, rate_hz, run_cmd=run_cmd) def HIGH_LATENCY2_links(self): @@ -3785,8 +3777,11 @@ def get_mission_count(self): def run_auxfunc(self, function, level, + run_cmd=None, want_result=mavutil.mavlink.MAV_RESULT_ACCEPTED): - self.run_cmd( + if run_cmd is None: + run_cmd = self.run_cmd + run_cmd( mavutil.mavlink.MAV_CMD_DO_AUX_FUNCTION, p1=function, p2=level, @@ -4304,9 +4299,17 @@ def assert_receive_message(self, mav=None, condition=None, delay_fn=None, - instance=None): + instance=None, + check_context=False): if mav is None: mav = self.mav + + if check_context: + collection = self.context_collection(type) + if len(collection) > 0: + # return the most-recently-received message: + return collection[-1] + m = None tstart = time.time() # timeout in wallclock while True: @@ -4316,8 +4319,10 @@ def assert_receive_message(self, continue if m is not None: break - if time.time() - tstart > timeout: - raise NotAchievedException("Did not get %s" % type) + elapsed_time = time.time() - tstart + if elapsed_time > timeout: + raise NotAchievedException("Did not get %s after %s seconds" % + (type, elapsed_time)) if delay_fn is not None: delay_fn() if verbose: @@ -4713,6 +4718,8 @@ def check_mission_item_upload_download(self, items, itype, mission_type, strict= self.check_fence_items_same(items, downloaded_items, strict=strict) elif mission_type == mavutil.mavlink.MAV_MISSION_TYPE_MISSION: self.check_mission_waypoint_items_same(items, downloaded_items, strict=strict) + elif mission_type == mavutil.mavlink.MAV_MISSION_TYPE_RALLY: + self.check_mission_waypoint_items_same(items, downloaded_items, strict=strict) else: raise NotAchievedException("Unhandled") @@ -4729,6 +4736,13 @@ def check_mission_upload_download(self, items, strict=True): mavutil.mavlink.MAV_MISSION_TYPE_MISSION, strict=strict) + def check_rally_upload_download(self, items): + self.check_mission_item_upload_download( + items, + "rally", + mavutil.mavlink.MAV_MISSION_TYPE_RALLY + ) + def check_dflog_message_rates(self, log_filepath, message_rates): reader = self.dfreader_for_path(log_filepath) @@ -5693,8 +5707,12 @@ def run_cmd_int(self, p6=None, p7=None, quiet=False, + mav=None, ): + if mav is None: + mav = self.mav + if p5 is not None: x = p5 if p6 is not None: @@ -5728,20 +5746,20 @@ def run_cmd_int(self, x, y, z)) - self.mav.mav.command_int_send(target_sysid, - target_compid, - frame, - command, - 0, # current - 0, # autocontinue - p1, - p2, - p3, - p4, - x, - y, - z) - self.run_cmd_get_ack(command, want_result, timeout) + mav.mav.command_int_send(target_sysid, + target_compid, + frame, + command, + 0, # current + 0, # autocontinue + p1, + p2, + p3, + p4, + x, + y, + z) + self.run_cmd_get_ack(command, want_result, timeout, mav=mav) def send_cmd(self, command, @@ -6073,10 +6091,13 @@ def get_mode_from_mode_mapping(self, mode): def run_cmd_do_set_mode(self, mode, timeout=30, + run_cmd=None, want_result=mavutil.mavlink.MAV_RESULT_ACCEPTED): + if run_cmd is None: + run_cmd = self.run_cmd base_mode = mavutil.mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED custom_mode = self.get_mode_from_mode_mapping(mode) - self.run_cmd( + run_cmd( mavutil.mavlink.MAV_CMD_DO_SET_MODE, p1=base_mode, p2=custom_mode, @@ -6084,7 +6105,7 @@ def run_cmd_do_set_mode(self, timeout=timeout, ) - def do_set_mode_via_command_long(self, mode, timeout=30): + def do_set_mode_via_command_XYZZY(self, mode, run_cmd, timeout=30): """Set mode with a command long message.""" tstart = self.get_sim_time() want_custom_mode = self.get_mode_from_mode_mapping(mode) @@ -6092,12 +6113,18 @@ def do_set_mode_via_command_long(self, mode, timeout=30): remaining = timeout - (self.get_sim_time_cached() - tstart) if remaining <= 0: raise AutoTestTimeoutException("Failed to change mode") - self.run_cmd_do_set_mode(mode, timeout=10) + self.run_cmd_do_set_mode(mode, run_cmd=run_cmd, timeout=10) m = self.wait_heartbeat() self.progress("Got mode=%u want=%u" % (m.custom_mode, want_custom_mode)) if m.custom_mode == want_custom_mode: return + def do_set_mode_via_command_long(self, mode, timeout=30): + self.do_set_mode_via_command_XYZZY(mode, self.run_cmd, timeout=timeout) + + def do_set_mode_via_command_int(self, mode, timeout=30): + self.do_set_mode_via_command_XYZZY(mode, self.run_cmd_int, timeout=timeout) + def mavproxy_do_set_mode_via_command_long(self, mavproxy, mode, timeout=30): """Set mode with a command long message with Mavproxy.""" base_mode = mavutil.mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED @@ -7077,6 +7104,35 @@ def assert_rc_channel_value(self, channel, value): raise NotAchievedException("Expected %s to be %u got %u" % (channel, value, m_value)) + def do_reposition(self, + loc, + frame=mavutil.mavlink.MAV_FRAME_GLOBAL_RELATIVE_ALT): + '''send a DO_REPOSITION command for a location''' + self.run_cmd_int( + mavutil.mavlink.MAV_CMD_DO_REPOSITION, + 0, + 0, + 0, + 0, + int(loc.lat*1e7), # lat* 1e7 + int(loc.lng*1e7), # lon* 1e7 + loc.alt, + frame=frame + ) + + def add_rally_point(self, loc, seq, total): + '''add a rally point at the given location''' + self.mav.mav.rally_point_send(1, # target system + 0, # target component + seq, # sequence number + total, # total count + int(loc.lat * 1e7), + int(loc.lng * 1e7), + loc.alt, # relative alt + 0, # "break" alt?! + 0, # "land dir" + 0) # flags + def wait_location(self, loc, accuracy=5.0, @@ -9729,7 +9785,7 @@ def ArmFeatures(self): self.progress("ALL PASS") # TODO : Test arming magic; - def get_message_rate(self, victim_message, timeout=10, mav=None): + def measure_message_rate(self, victim_message, timeout=10, mav=None): if mav is None: mav = self.mav tstart = self.get_sim_time() @@ -9753,21 +9809,36 @@ def get_message_rate(self, victim_message, timeout=10, mav=None): def rate_to_interval_us(self, rate): return 1/float(rate)*1000000.0 - def set_message_rate_hz(self, id, rate_hz, mav=None): + def interval_us_to_rate(self, interval): + if interval == 0: + raise ValueError("Zero interval is infinite rate") + return 1000000.0/float(interval) + + def set_message_rate_hz(self, id, rate_hz, mav=None, run_cmd=None): '''set a message rate in Hz; 0 for original, -1 to disable''' + if run_cmd is None: + run_cmd = self.run_cmd if isinstance(id, str): id = eval("mavutil.mavlink.MAVLINK_MSG_ID_%s" % id) if rate_hz == 0 or rate_hz == -1: set_interval = rate_hz else: set_interval = self.rate_to_interval_us(rate_hz) - self.run_cmd( + run_cmd( mavutil.mavlink.MAV_CMD_SET_MESSAGE_INTERVAL, p1=id, p2=set_interval, mav=mav, ) + def get_message_rate_hz(self, id, mav=None, run_cmd=None): + '''return rate message is being sent, in Hz''' + if run_cmd is None: + run_cmd = self.run_cmd + + interval = self.get_message_interval(id, mav=mav, run_cmd=run_cmd) + return self.interval_us_to_rate(interval) + def send_get_message_interval(self, victim_message, mav=None): if mav is None: mav = self.mav @@ -9786,12 +9857,19 @@ def send_get_message_interval(self, victim_message, mav=None): 0, 0) - def get_message_interval(self, victim_message, mav=None): + def get_message_interval(self, victim_message, mav=None, run_cmd=None): '''returns message interval in microseconds''' + if run_cmd is None: + run_cmd = self.run_cmd + self.send_get_message_interval(victim_message, mav=mav) m = self.assert_receive_message('MESSAGE_INTERVAL', timeout=1, mav=mav) + + if isinstance(victim_message, str): + victim_message = eval("mavutil.mavlink.MAVLINK_MSG_ID_%s" % victim_message) if m.message_id != victim_message: - raise NotAchievedException("Unexpected ID in MESSAGE_INTERVAL") + raise NotAchievedException(f"Unexpected ID in MESSAGE_INTERVAL (want={victim_message}, got={m.message_id}") + return m.interval_us def set_message_interval(self, victim_message, interval_us, mav=None): @@ -9821,7 +9899,7 @@ def test_rate(self, self.set_message_rate_hz(victim_message, in_rate, mav=mav) - new_measured_rate = self.get_message_rate(victim_message, timeout=message_rate_sample_period, mav=mav) + new_measured_rate = self.measure_message_rate(victim_message, timeout=message_rate_sample_period, mav=mav) self.progress( "Measured rate: %f (want %f)" % (round(new_measured_rate, ndigits=ndigits), @@ -9865,6 +9943,22 @@ def SET_MESSAGE_INTERVAL(self): self.start_subtest('Many-message tests') self.test_set_message_interval_many() + def MESSAGE_INTERVAL_COMMAND_INT(self): + '''Test MAV_CMD_SET_MESSAGE_INTERVAL works as COMMAND_INT''' + original_rate = round(self.measure_message_rate("VFR_HUD", 20)) + self.context_set_message_rate_hz('VFR_HUD', original_rate*2, run_cmd=self.run_cmd_int) + if abs(original_rate*2 - round(self.get_message_rate_hz("VFR_HUD", run_cmd=self.run_cmd_int))) > 1: + raise NotAchievedException("Did not set rate") + + self.start_subtest("Use REQUEST_MESSAGE via COMMAND_INT") + # 148 is AUTOPILOT_VERSION: + self.context_collect('AUTOPILOT_VERSION') + self.run_cmd_int(mavutil.mavlink.MAV_CMD_REQUEST_MESSAGE, 148) + self.delay_sim_time(2) + count = len(self.context_collection('AUTOPILOT_VERSION')) + if count != 1: + raise NotAchievedException(f"Did not get single AUTOPILOT_VERSION message (count={count}") + def test_set_message_interval_many(self): messages = [ 'CAMERA_FEEDBACK', @@ -9893,7 +9987,7 @@ def assert_message_rate_hz(self, message, want_rate, sample_period=20, ndigits=0 if mav is None: mav = self.mav self.drain_mav(mav) - rate = round(self.get_message_rate(message, sample_period, mav=mav), ndigits=ndigits) + rate = round(self.measure_message_rate(message, sample_period, mav=mav), ndigits=ndigits) self.progress("%s: Want=%f got=%f" % (message, round(want_rate, ndigits=ndigits), round(rate, ndigits=ndigits))) if rate != want_rate: raise NotAchievedException("Did not get expected rate (want=%f got=%f)" % (want_rate, rate)) @@ -9901,7 +9995,7 @@ def assert_message_rate_hz(self, message, want_rate, sample_period=20, ndigits=0 def test_set_message_interval_basic(self): ex = None try: - rate = round(self.get_message_rate("VFR_HUD", 20)) + rate = round(self.measure_message_rate("VFR_HUD", 20)) self.progress("Initial rate: %u" % rate) self.test_rate("Test set to %u" % (rate/2,), rate/2, rate/2, victim_message="VFR_HUD") @@ -9911,7 +10005,7 @@ def test_set_message_interval_basic(self): self.test_rate("Resetting original rate", 0, rate) self.progress("try getting a message which is not ordinarily streamed out") - rate = round(self.get_message_rate("CAMERA_FEEDBACK", 20)) + rate = round(self.measure_message_rate("CAMERA_FEEDBACK", 20)) if rate != 0: raise PreconditionFailedException("Already getting CAMERA_FEEDBACK") self.progress("try various message rates") @@ -9928,7 +10022,7 @@ def test_set_message_interval_basic(self): want_rate = self.get_parameter("SCHED_LOOP_RATE") * 0.8 self.set_message_rate_hz(mavutil.mavlink.MAVLINK_MSG_ID_CAMERA_FEEDBACK, want_rate) - rate = round(self.get_message_rate("CAMERA_FEEDBACK", 20)) + rate = round(self.measure_message_rate("CAMERA_FEEDBACK", 20)) self.set_parameter("SIM_SPEEDUP", old_speedup) self.progress("Want=%f got=%f" % (want_rate, rate)) if abs(rate - want_rate) > 2: @@ -10023,7 +10117,7 @@ def REQUEST_MESSAGE(self, timeout=60): '''Test MAV_CMD_REQUEST_MESSAGE''' self.set_parameter("CAM1_TYPE", 1) # Camera with servo trigger self.reboot_sitl() # needed for CAM1_TYPE to take effect - rate = round(self.get_message_rate("CAMERA_FEEDBACK", 10)) + rate = round(self.measure_message_rate("CAMERA_FEEDBACK", 10)) if rate != 0: raise PreconditionFailedException("Receiving camera feedback") self.poll_message("CAMERA_FEEDBACK") @@ -11076,6 +11170,22 @@ def upload_fences_from_locations(self, self.check_fence_upload_download(items) + def rally_MISSION_ITEM_INT_from_loc(self, loc): + return self.create_MISSION_ITEM_INT( + mavutil.mavlink.MAV_CMD_NAV_RALLY_POINT, + x=int(loc.lat*1e7), + y=int(loc.lng*1e7), + z=loc.alt, + frame=mavutil.mavlink.MAV_FRAME_GLOBAL_RELATIVE_ALT, + mission_type=mavutil.mavlink.MAV_MISSION_TYPE_RALLY + ) + + def upload_rally_points_from_locations(self, rally_point_locs): + '''takes a sequence of locations, sets vehicle rally points to those locations''' + items = [self.rally_MISSION_ITEM_INT_from_loc(x) for x in rally_point_locs] + self.correct_wp_seq_numbers(items) + self.check_rally_upload_download(items) + def wait_for_initial_mode(self): '''wait until we get a heartbeat with an expected initial mode (the one specified in the vehicle constructor)''' diff --git a/Tools/autotest/default_params/periph.parm b/Tools/autotest/default_params/periph.parm index 0e39124d3732a..506d302c6676c 100644 --- a/Tools/autotest/default_params/periph.parm +++ b/Tools/autotest/default_params/periph.parm @@ -6,7 +6,8 @@ BARO_ENABLE 1 ARSPD_TYPE 100 RNGFND1_TYPE 100 RNGFND1_MAX_CM 12000 -BATT_MONITOR 4 +BATT_MONITOR 16 +BATT_I2C_BUS 2 # by default disable motors/servos, overridden in vehicle specific parameters OUT1_FUNCTION -1 @@ -17,3 +18,7 @@ OUT5_FUNCTION -1 OUT6_FUNCTION -1 OUT7_FUNCTION -1 OUT8_FUNCTION -1 + +# enable some simulated ADSB vehicles +SIM_ADSB_COUNT 4 +ADSB_PORT 2 diff --git a/Tools/autotest/param_metadata/param.py b/Tools/autotest/param_metadata/param.py index f7db128834a3b..3cc5266a47ecc 100644 --- a/Tools/autotest/param_metadata/param.py +++ b/Tools/autotest/param_metadata/param.py @@ -129,6 +129,7 @@ def has_param(self, pname): 'kg/m/m' : 'kilograms per square meter', # metre is the SI unit name, meter is the american spelling of it 'kg/m/m/m': 'kilograms per cubic meter', 'litres' : 'litres', + 'Ohm' : 'Ohm', } required_param_fields = [ diff --git a/Tools/autotest/quadplane.py b/Tools/autotest/quadplane.py index 9074baaceacad..ca292df483fad 100644 --- a/Tools/autotest/quadplane.py +++ b/Tools/autotest/quadplane.py @@ -352,7 +352,8 @@ def EXTENDED_SYS_STATE_SLT(self): self.change_mode("QLAND") self.wait_altitude(0, 2, relative=True, timeout=60) self.wait_extended_sys_state(mavutil.mavlink.MAV_VTOL_STATE_MC, - mavutil.mavlink.MAV_LANDED_STATE_ON_GROUND) + mavutil.mavlink.MAV_LANDED_STATE_ON_GROUND, + timeout=30) self.mav.motors_disarmed_wait() def EXTENDED_SYS_STATE(self): @@ -1442,6 +1443,48 @@ def mavlink_MAV_CMD_DO_VTOL_TRANSITION(self): self.fly_home_land_and_disarm() + def MAV_CMD_NAV_TAKEOFF(self): + '''test issuing takeoff command via mavlink''' + self.change_mode('GUIDED') + self.wait_ready_to_arm() + + self.arm_vehicle() + self.run_cmd(mavutil.mavlink.MAV_CMD_NAV_TAKEOFF, p7=5) + self.wait_altitude(4.5, 5.5, minimum_duration=5, relative=True) + self.change_mode('QLAND') + self.wait_disarmed() + + self.start_subtest("Check NAV_TAKEOFF is above current location, not home location") + self.change_mode('GUIDED') + self.wait_ready_to_arm() + + # reset home 20 metres above current location + current_alt_abs = self.get_altitude(relative=False) + + loc = self.mav.location() + + home_z_ofs = 20 + self.run_cmd( + mavutil.mavlink.MAV_CMD_DO_SET_HOME, + p5=loc.lat, + p6=loc.lng, + p7=current_alt_abs + home_z_ofs, + ) + + self.arm_vehicle() + takeoff_alt = 5 + self.run_cmd(mavutil.mavlink.MAV_CMD_NAV_TAKEOFF, p7=takeoff_alt) + self.wait_altitude( + current_alt_abs + takeoff_alt - 0.5, + current_alt_abs + takeoff_alt + 0.5, + minimum_duration=5, + relative=False, + ) + self.change_mode('QLAND') + self.wait_disarmed() + + self.reboot_sitl() # unlock home position + def tests(self): '''return list of all tests''' @@ -1480,5 +1523,6 @@ def tests(self): self.RCDisableAirspeedUse, self.mission_MAV_CMD_DO_VTOL_TRANSITION, self.mavlink_MAV_CMD_DO_VTOL_TRANSITION, + self.MAV_CMD_NAV_TAKEOFF, ]) return ret diff --git a/Tools/autotest/rover.py b/Tools/autotest/rover.py index 080b749c05226..e929b88c764a6 100644 --- a/Tools/autotest/rover.py +++ b/Tools/autotest/rover.py @@ -18,7 +18,6 @@ from pysim import util from common import AutoTestTimeoutException -from common import MsgRcvTimeoutException from common import NotAchievedException from common import PreconditionFailedException @@ -389,34 +388,18 @@ def GripperMission(self): self.wait_statustext("Mission Complete", timeout=60, check_context=True) self.disarm_vehicle() - def GetBanner(self): + def _MAV_CMD_DO_SEND_BANNER(self, run_cmd): '''Get Banner''' - target_sysid = self.sysid_thismav() - target_compid = 1 - self.mav.mav.command_long_send( - target_sysid, - target_compid, - mavutil.mavlink.MAV_CMD_DO_SEND_BANNER, - 1, # confirmation - 1, # send it - 0, - 0, - 0, - 0, - 0, - 0) - start = time.time() - while True: - m = self.mav.recv_match(type='STATUSTEXT', - blocking=True, - timeout=1) - if m is not None and "ArduRover" in m.text: - self.progress("banner received: %s" % m.text) - return - if time.time() - start > 10: - break + self.context_push() + self.context_collect('STATUSTEXT') + run_cmd(mavutil.mavlink.MAV_CMD_DO_SEND_BANNER) + self.wait_statustext("ArduRover", timeout=1, check_context=True) + self.context_pop() - raise MsgRcvTimeoutException("banner not received") + def MAV_CMD_DO_SEND_BANNER(self): + '''test MAV_CMD_DO_SEND_BANNER''' + self._MAV_CMD_DO_SEND_BANNER(self.run_cmd) + self._MAV_CMD_DO_SEND_BANNER(self.run_cmd_int) def drive_brake_get_stopping_distance(self, speed): '''measure our stopping distance''' @@ -1256,6 +1239,8 @@ def DO_SET_MODE(self): '''Set mode via MAV_COMMAND_DO_SET_MODE''' self.do_set_mode_via_command_long("HOLD") self.do_set_mode_via_command_long("MANUAL") + self.do_set_mode_via_command_int("HOLD") + self.do_set_mode_via_command_int("MANUAL") def RoverInitialMode(self): '''test INITIAL_MODE parameter works''' @@ -5804,6 +5789,40 @@ def SET_ATTITUDE_TARGET(self, target_sysid=None, target_compid=1): break self.disarm_vehicle() + def SET_ATTITUDE_TARGET_heading(self, target_sysid=None, target_compid=1): + '''Test handling of SET_ATTITUDE_TARGET''' + self.change_mode('GUIDED') + self.wait_ready_to_arm() + self.arm_vehicle() + + for angle in 0, 290, 70, 180, 0: + self.SET_ATTITUDE_TARGET_heading_test_target(angle, target_sysid, target_compid) + self.disarm_vehicle() + + def SET_ATTITUDE_TARGET_heading_test_target(self, angle, target_sysid, target_compid): + if target_sysid is None: + target_sysid = self.sysid_thismav() + + def poke_set_attitude(value, target): + self.mav.mav.set_attitude_target_send( + 0, # time_boot_ms + target_sysid, + target_compid, + mavutil.mavlink.ATTITUDE_TARGET_TYPEMASK_BODY_ROLL_RATE_IGNORE | + mavutil.mavlink.ATTITUDE_TARGET_TYPEMASK_BODY_PITCH_RATE_IGNORE | + mavutil.mavlink.ATTITUDE_TARGET_TYPEMASK_BODY_YAW_RATE_IGNORE, + mavextra.euler_to_quat([ + math.radians(0), + math.radians(0), + math.radians(angle) + ]), # att + 0, # roll rate (rad/s) + 0, # pitch rate + 0, # yaw rate + 1) # thrust + + self.wait_heading(angle, called_function=poke_set_attitude, minimum_duration=5) + def SET_POSITION_TARGET_LOCAL_NED(self, target_sysid=None, target_compid=1): '''Test handling of SET_POSITION_TARGET_LOCAL_NED''' if target_sysid is None: @@ -6514,6 +6533,19 @@ def cf(*args, **kwargs): self.do_RTL() self.disarm_vehicle() + def _MAV_CMD_GET_HOME_POSITION(self, run_cmd): + '''test handling of mavlink command MAV_CMD_GET_HOME_POSITION''' + self.context_collect('HOME_POSITION') + run_cmd(mavutil.mavlink.MAV_CMD_GET_HOME_POSITION) + self.assert_receive_message('HOME_POSITION', check_context=True) + + def MAV_CMD_GET_HOME_POSITION(self): + '''test handling of mavlink command MAV_CMD_GET_HOME_POSITION''' + self.change_mode('LOITER') + self.wait_ready_to_arm() + self._MAV_CMD_GET_HOME_POSITION(self.run_cmd) + self._MAV_CMD_GET_HOME_POSITION(self.run_cmd_int) + def tests(self): '''return list of all tests''' ret = super(AutoTestRover, self).tests() @@ -6529,7 +6561,7 @@ def tests(self): self.DriveSquare, self.DriveMission, # self.DriveBrake, # disabled due to frequent failures - self.GetBanner, + self.MAV_CMD_DO_SEND_BANNER, self.DO_SET_MODE, self.MAVProxy_DO_SET_MODE, self.ServoRelayEvents, @@ -6542,9 +6574,11 @@ def tests(self): self.Gripper, self.GripperMission, self.SET_MESSAGE_INTERVAL, + self.MESSAGE_INTERVAL_COMMAND_INT, self.REQUEST_MESSAGE, self.SYSID_ENFORCE, self.SET_ATTITUDE_TARGET, + self.SET_ATTITUDE_TARGET_heading, self.SET_POSITION_TARGET_LOCAL_NED, self.MAV_CMD_DO_SET_MISSION_CURRENT, self.MAV_CMD_DO_CHANGE_SPEED, @@ -6593,6 +6627,7 @@ def tests(self): self.NoArmWithoutMissionItems, self.CompassPrearms, self.MAV_CMD_DO_SET_REVERSE, + self.MAV_CMD_GET_HOME_POSITION, ]) return ret diff --git a/Tools/bootloaders/CubeOrangePlus_bl.bin b/Tools/bootloaders/CubeOrangePlus_bl.bin index 22cee0be3a7bc9e6a7ffde92be84285b6083d522..93755be351bb07f2e99fe3d22cc95a788ae9e4df 100755 GIT binary patch literal 38688 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ȤO!B|e#kX%$}`jXG8S}tdA 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 delta 10599 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 MD#B?OW={A207kDXv;Y7A diff --git a/Tools/bootloaders/CubeOrangePlus_bl.elf b/Tools/bootloaders/CubeOrangePlus_bl.elf index 34a0a2b4a1820b950c6032e7029fc10b19d42589..262cba9f89baec232cea862be783b032a696716c 100755 GIT binary patch literal 176244 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 z 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 literal 436376 zcmeFY3wTsTwm(|6_wMf9d3GlO@&Y>DK?32C2S^Z+F`}N5m^umX{d=I*kW&>Zn6?_WNgrA=N732|A3dBu%onMjeu``BX z3#YFhe`WsTa~VU3q>tNwWq#6$pDh%qE)o5dAbtV?fq+0jARrJB2nYlO0s;YnfIvVX zAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO z0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0j zARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka z1Ofs9fq+0jARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%( zKp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m z1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5 zKtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;YnfIvVXAP^7; z2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;Yn zfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%(Kp^lP1dPn~l*H7F@l5?OLR;wl z9NrD!UmpH4=1ThVwC~23UdPnO5tr1fFxav3H`kQbol`eY#nX)E^%vB6e>lsy z>T#ZB>~{#)Uzl`{&S^O}_pz39D;}eiLudU+*&LD$r_A*;_USj4sOv9G59Kl1>dqx? zrd*OgV?gpB?w9?y_0RR+m@{%#TG`{S=`Do;CAzO8eOAh4RO+nMvb6G@uIpOnA=QNt z=wP;Cvyv~9k^CP)*X#XBvy3@tlHlDL?&T{W5 zVK(kRIXKwC{WlJ>PX;>}D`;Z=KM&+I4lQT)xQx`5i&s9e^5ja%|5TsBE%}f4DQ@3E zOZhKdDL$V6OIP99&65*a6gL~iGnq~D@92wZWd20~=AU|z`Fs1b+{~}^GJiz??Hl!V zhr!+1!CI)^oSF8kDC_0^JzX|=p=)8G+H7hnJewd(8T{E_2b3H}nD4(Wp!C}umL{rk zLg`^|bR+khg3Mtlo7?@vd*VvD|Hz=;p4izAZ(^gv%cnU!)reIiR_#&C)7Io4toAw% zN;c-N9msQ3do0bYg)sY>!qod6%(fcwK-0YPd1dMD6fe(Z{#|uS{x(;jwaPmOz3Du= zt!{StF0b6hs^#-6f2XU?zoicS;D5SbvXzu4*P`zR+~q9eSl~SiQ3MsBKzemo5HmYgkkGO?nvgFvr`0io7t_rrFYiZW@cWl0Y+Kl4?T; z2DxURge@zU7P7C|DYD0H`=2Yf*@GFZKI++DdYS)^{r^#xxTfJC&-hiTwf3+_*QfV$ zB6@a@*3bWre)e6|`y}XNMpZ$o^@939zWlS5I{bf6UdVav+pJQU`y$EI%Ym@O(_$BBSQA~Zr z%+yYVM8u~ekW6{#-Hi9w$V)sP&D2GRhiS?q*@8Vk8Dv>bfB$;6OUf`j`)U`9S6kBE zu=D(12a;gp^ZFV(V9Btc34Nv!ogY!2Rmk&&kIyhnWM@yU|Kv-PUyh2kBwlTBD9~Zp z#{5_J4LhY|+*I1zp=8`rdI8VHrRO^4`qRy&ZgZDnX8xP|AX{&EmicXc2fN0hKe-LF zTomgw^^}~6j=sHbYd`bf+J9AJv_D#o&Q@DkX0YeF!CRrLwDk8KY{IX6ddgF+RHre6 zCO6C4<>R*Nu4n$M`k)K#%R#-5^xfXKxwjM}JsYz_ePgLx?Ly!CC-t$cuGUxG3bi(o zT7R8eZ}Xpf$8>PVD7R$GNB*b#GBLJZaG6ffY|-D#bDVzfdS&uC%ovXHSKZgShu7N5 zZ}U8ZI?d?5$-1xNwTGBV{c<$9(wlQdiQrRbMQjhODTTYw65FzQe2t2(;)xU zyUjJ@!i<*=p08Usqi5Pn3FQZ8@@@9N=%}yig>~#?V}lnayd>}BQ}`}9z_Y*ZpgC#{ z=7#Ui6AJh$LJXxNya#M{T_kK~bjQ9la=f+uoi3Xc^};B>%r?y`o0(jk)l%l>KP5c) z&S1v6Qs%$0Z|<4r6!_|M^~u z{be5;eb8MCv|e{5pBOpO+8(uw=g0X*`(-)d`NZM{0o!!LwoNDxefy})$y%Au?o)O!|5D`o;xf6e z0Lkst* zLH%|hU>Xs;uwviq=(9Wb6_lAeqe6YQR4eJL0c!j0`_M|$&Bd?HoYCE|ufiSGr9?6R z=Yg=5|2oj6jiX@CaZSDiwTMT%ihYDpv`@81Jx8;_li*$BqZud)wW#k6_8b{V$Lw-j zf8u^^ZG?@D*%!94%zcECKIT>isF&Aur)sr&YGA$AV~P8MJq-g`2XnZ8TE79P4fI~` zo(|0S_5SAXM)&M5Xw(J&{;K;&UrceY{eoHVQP}xJR`Qt#C{SmN%xtwKl$UfA zG@0fo?kukjDWflD9i&+EmjzDl&ucC~IV4B&tSeZ-&Oc`H1(*to8D~8n$jr%aWDeD? zE?Au3VGTx~^mqsV!O|;r_)2ONu(eC0AQN`O_@kf(- z`HF?nAZ4sFLUm8$*rl4JeOb7-H}Qh z+m2LAv&B8oA-g5FFEyc;r?D}8t+gdmvFzUFl6;sI)A~AUOJK7_Bj+T!P43O^p9L~) z^I!iYP+PzIWyEu`57M|Qbx*7c_IwruhZVXHb*Yk}vyMIO%4)H@|8(G|EZFlBrRD5R z8&*7`xW4%F0~Zdc6CMm?dOm8!{1aqZe{NMzWiOXIH^>`ZfAj@=vcdbXmDynD8@a8& zgZf4)PhEphOZ^kJ^FUL|?37aGUptWD9)|Z*1DW2TrN;yHwxQP_4JZXe<`nrQ**f=a z#JPV-ug#q>i}`n7Bnc&xBpgVm)VbZC=I48E#QyzNv^^K2`Pcn?dXhh=bhieYYh6rz zFOS)ru6VW|bs^hd171N>bh+YAT@!_IVy}q8E;+_$#;!2gp6m|xEDkCj?#^PlH-MD{z9 zE&nL%A0)kU`QkgmvSFRH|IcZPDpuz_?uzwU1AN*-r|NK?V+x-(&Y9>B%A3wqunVo< zcH}hMHop3`0y&?vnj`kD{`bG$4)IrYA8nv zawPVpXgQL#9EbEAS_wmDp)CLU-lTFWB{7tT`TKgUS`K-C4#wB-s82pUZ?KHQJetjH z*IF=-qFn_z>sUr3jAynv#6#Qm5^oH%-3Hn+5&6(Q`Tm@y{Ml?wa!ZVxXD7GjmhW)I z<4LCkS2xSUNdY^3ONJh&lY%AJaB3{1Ci=$US>UsK<-6ayOYWR6Z~Fer{b$crd50*j z7Kh(tko_jP=*&#{Lr()Rcgp3S&+z8*R*$Ru=c_0d?ZKR$A6+%iU}#J5TkOMq2fFHR zPxsXYmgM9#$A@ZBXTMa7I{WJ#W}WY^b4B=wztpkL@wbi{j#C|8*sF#M_Vk1UwHy2T zl6UVixTko#Ycfoes#1JOew8P;)Mfn5RN7MLxA6wkT)$1GxRZN`*Ijpyb_N|D?D;r! ze*2pts!iYhqfhS1LdqXQDadQ4RW!+OQwv(B8HctJ$Iw*}WiwjZ9>K}50v1t$mHq0I zY6j&zFgV&@C+FjgK&7lTCbd-=6GGbCPA57r1Gi@1ncq0t?=)Go98U~R2}yruOm2Jr z?!=lG8Y^nBBPdBOp%PXt&%%7S!~#E(zo~Z%INdeB>DXVjS&O~a0m+90O+(xputr3? zpLemN4|<=fxvJ&|sZFlvqsi{E7}5C`8)~wP8!EHh4c=SQ8a#pKm=iChCA;&GHtOOv z?oYir#lari#m~IciaRmqQ=Sx1f5*7oh+S+?lj0uYCe6oBE1s)0%_L*GSPi|^5xw$$ ze{<}KJoig!{PAE4sP)BybYek>8{F@T9)BEt>o==Wwspl7F9C%5SUGE zraeSI>RQ`mb13dOH(~!P@2?sgyieEgX$_tQ=?#@b*4S&dA>U`-hRV-sq8n}Q9VL1% zWw}kKa@{nx8*u*l+sOx!yS91!>7KcyYnXe7+ZRZ$N6$wQ`ml%SA?~G(v@5cqHHAUh z?KxPe<==?>T|QmwnlxG4*B!*kOZM@4oBO>IzH2Kqe4RR?m^6Ld@s{UsCEK;ZLv1%$ zt;K`@udFQz0Pk4$P`7TC&v>6fOQ;>yHH*`$Du>si7c>k$^HyJK3;agb&Eb|@r?uo^ zaOh+VG_f-8)bRWv@MIY}q8lpH*T^+Gnj3*;{-Dim38DGlZU47}m)bA?AGZIy^LP^W zK}9W$(fmR2YY{KN`(TJi@s|;&G_%gjrMMiDtJZmWBzGI)v_A>2MA8LfS#>OJTv!1;@B)tqAt)M=Omd zZNukw*HzM*igQ>?LGyRplGx>SB|R{&C_*d_1ESZnh#|0liDeyT$f_MzYEZ2}(Le;RR;f9q8pBZ|L{IHfh~ za=?T8|1%`_6J0Kk=OdIs`@VHe3FUm0a+TsHj18+<*CwgRGsaC=$COL;(6x;;u%B~3 z51PxB3)@|UgzpZwlN{K^%Qw^wt{%&6Xyfp|}-TPcl4xj{6{yquT;`8VQwG2Px;M`?&w%plvv5 z;Ly&4Hf?tm?5Sv}ho?*Sdt_U-v9&(1-o_jmW99adV~y>EzI|+e>!H)b^W{@=nQNKJ zzG2znW%|B<9QM;wsBdm;i&#vm);Gg0vlweD>zb|D;1M+i7B=$dY;NwqK8PHbS{}}A|8qu0tYSO%Ejl7=wrv&*9`8n<% zrS-kMYm7Fl?Fi`T8Zf)}dl%Ovc-h$VzO*fTTB5V7Rq3je&S36M%q>7^8P2c5<)C+t z1@>kodgrgD9rZ`vT{X9PXErJsp5$PUcTgWqC<}8=u;-P~id)c3eaQXE2f4#(XBigE zge;IVE!fl3%N$2e^L*-$OXD`vUg%*NG3c=l?5eqcL@!2htzKVCb8QprTrV5k6*Y10 zB=<>AawATqXnAYzo|*xMQU-Q4h zM?tGn^2kq|pL?$@+FLVoy#tp2w5QtRe}nsw$v&1r{Br~P`?CQmKe5pW?v4_p1GUPjZPr%Ktj~R~1RlzHdc{uH=9Y$K+k5MB zezk&S({8Koth}C$$KJZmY)1|o&99{I`03$}V9z}mS;RTnu^ppB_OHWkQgS%YN?7li z|DC#w_Lt!=EA_>;^XwTu3EtFgbu9Y;>}<1CwM?=Iyy7sKd^);M7RL!&N+pFO}fUNC%-tB>nmRACs za`u<7tWCZmZ}l?S+psJZ`7A50_Bk&|u5GS$-D_UDwY++nJYIiuRUDX_I7L+eSxoXTg}fAxWzqd*gBX4!x8Nt*7XsNbd>n|ruX z_Q&(6HtwI@%d-@p1kX{@OWEZ+JF?4n;CoAc?>Vg{3@uS#qCAO^f7zF6#H@l`u>-$` z)L{Sf5vlY0!cu#DX(6e<_3wn#vHo9lBt`l-8~aAG)L_qDS_@8paa-e%Na`gE_}<{f zFQOy-OSzT|e%8TS+OY=s5RM}hgzT1OU*|JUJ9!{}?4ZJsG^0b;oX_g#!DoK0m63k(9r@B*6 z`?$zlba;i_NF%GGLmv;z`t|qC{a22QKV$y0gzB1is$ zZO>&`Z#H=4)$m$*pYT5J>OZ>JD|=iXi)UddUB#Y<#-Dt@j5;dWvA*nsM61n3HO!u> zo!yEmvA$!Rp6&3RW_gL8#UA*?uhiTAUA>0#lp1w)vRCph@T7W@D`}rK*wc5A>QtVd zgL&%V{ZVr)zU&(QthtQ&M`4x=_Iw^xb|p6QXYuW>H@jwGjR`APu;)ZD&_VfXMv@K0 zz{gftnO(EqyAv&v+x0!y))w+@yb|P&ah324uGUxJ!JfAcvKGp#z;~BcQ;+#=hiiKa zd}>&IiEn9A@x9Jglj^;}WA|{oqcU}Mu%|xA-8P)MEY886JzAZ~7x|Z9a%1zCDt36E zx2Tv~gFUBO$X8)$ikThkaRo8a2kPumv*_$FEx;Ycf#ewMMf|@QU>e3%zfnr{UDNDW z3sCmQu<5T5m_PmCx96;NHara*ZT1bopVmD~Qx0)99XY2eNsY9hw*ZaTf}0Q{AE{h6 z&%3~TOX?0+e>>#K4|i&VN3u&BYD+eH8@le7iUKj?q?)3@^l>gc3&xqsiUR55-bPw7 zD+*Y~Np?A)j$?S5#?_YmUDo%&)c?VrzXln0KfxY%XojY<0Ao^lTFt`BcpJurhO2Hp z!Jc#2|EWztO>3!&^q5dSwRu*fvD^jplVLfDo+6Ke)QfM@DNXMK8GT~(rFtb#g(um) z2-dduO=^DutR&WL^KNpn)`Di)>+sy_nTgb&4R&`J%8@@;?n;slpElUZ=1mEN0rhEZ zQ~LD=cMSHNvV;5g_vgD81d=B1bj7yjR7H&&*TPbwa>jbzIn6WQJ#Dy=R#NQWUe8@# zl=@k60ltcD^ESZ0tEOOm?_X83)4Saj1N(l_lkHjV8RFULz0H%5wo@A!=PGNP_ok+K zztZfppeb#3b0 z_1;m-Nfv(U{_2{-w4L59uD_pnA$fSJZMk{;juze(C6P4wp09hI+6tdXVe)J?8v9w} z(i-lc+V5EYy!WltEv_N$iN$S!m^w#QTWHi)*L>@F8K*w(Pwl6(U{=kc61~4Z?WnA2 zbeVmL#c8SVAQVPrk83%U9EBAt`gPFjbzEu3O7>2DqxT-{VN8rq9;5j97*lC7##L>J zJl4=|C}o{*Lry7$EO@NtIQ){+v8UaPcWu+o{RX#+Js5wE`QHxkX9wXsC`xDccMsgc zEbezsvq_Fx*&$6*0(?4uq4j_?>EB$uJr!qyMEHMs9{4dzKuYiGh|FK5!JcJ(`Z&Yb zY$0E!zV{v}@v$at?;Sl>Ze-g@T zJRkKpH5tYX!-~WGDMRIy6q}BprHp6r`e4r=`uGkhBepEq^L}3}YIFv>RBd(*-5;R1 z3H(=j&vxiJWl$gXc6MX|m)QtZZ<^y`W{-8pz#ph$mRS}wbbTNxT^44Z73}c@4d*{t zsbB;fXX$g_%`L2DPdT#@z6x~2Aq+>T#rRQauivw9;N1h*$xV{iL?29c*EZ*2WghIA ziZ4{>@V(#y`jmWUG-d{STm#v&-aU|ok^f0hZ8Tkd;XoF?4hDPLL0LdmPl#^+B=9J{ z4?SA%nEOd!`<@AF+y}3!CC`(-Gxe8ne^c|Q2@_gP_CoBY2YZx(+JhG9<$Yot80`Tg6ZfRe8DId&xrW)dx@ z`&*MIsgn(anxjNGnO63mp$Uqo9t?E4ss*E zgD;z@Hd&$L9PXh|8FJf6ugmY0P9iszWoRQU#5s(2u;7#{kA1Y{u9&q>dGU5q+DCO12gE#V764`&y+vYytQ?BJ8Bl2298rd zFA1XDT&gegOT9VZYz^YfGeBPqYMoerT8_X!jI(X|{;cUpHVmXq#-C_Yazx3ieP4$4GYfX`(45x&V_VTQj zov<-QE@-KDKaDRwSuH!<4XEWcEswiTx}QK>&JVs9V4h!fDlsPl7%g4t+~t>~_Yt>` zJc*Q{euJ^Eb$&pZvBfnzAmwyx_fN0~83c-X$ZMl~_E4T+&-ekGJp-1@{o^p2p7-Ur zpX|Ul=J}Qk1bWl{Vog?K8Z7OdL5_VoR?+MMA7H`m0(*)#b(@lkP31=qVAqJX&eB|* z&JN%!I-|Q?rw-6J)CwnC7+0Rtl)fTUF&s}{k-jW_MR7MPPG1%^TPk*Vj~*!Mu3P2s zn94~*4m9BA*DdToQNUKAX`s6=rP4yuV`}1d%)G$)2%Ye?xhWBI1^lwXJud82wN$=6 z*z<0XJWsrsMv}37vr9P^zHd`oayW1+E?!XG=-ZBr{Z;Bgx$J1bmznB;)n1QYcS;Ls z-_#Y9@CEbGxjGLl6?}YK+Gv>N%`dydjxkVHy%9I(^m!8bzGbIun(wmeH?ie$WhcBD z-KQ$eia92#D0&u+tpVIls>7|L0h@}uMf*ouy@l}FSUnc|$@?}2>sEQEe^zNO|L6|K_cx&)n6vvV*snBH zTAB^z{T-AKdoBI@73$W5JyIV+ZBrPD)H0TVn@9;^dO=N*c0Vahhwndy?mVr=ohKH) z^Q0KL+kIyJy>#cvGylpvPoyV&UyAPkVH}}dwEjkwN0&yI)w`mPMVG%d;$(V4s@*S3 zTU`Zoqb*~wr{*B$*fe+#(!T2W3itEqPF^_Bd{PU4dS(%`!=fkuyI1LSCC=l=0?f>^ z3@7RB^w&8LtEbQ-TVbQUI8cxz`y9pm=4z@!4Hk9RrFaQ;qUQZm+#jr%&8{6@gy zY`_;hSWk)wNe6#nJ? zIoz|lXP}_`Gfx3ZW(CaA7O3|icHJR|!!x&ANo=Ujufgnak~?B-`Ix8U`toZ&!n{mv zQW2*#c2$=9KRonZ_6{#*V(&+ICLyHbG#D-}^thHUcUy<4{4mCdh9l+~XA-_S;?p>ro^y!s zRPhcp5rPKneDTHP`*haJgr9P|1z%eIJmE1f>YQ@~R)Kb8DV;?LJpW18+W}UCaL3yL z)r=5*_Gq*hh}qr=?8vFEvN#eeht>@BTa5j!gwLAZJy=cHHemEP9YubN+)!zD z04HcpDu^!c#J>Gd5$I`T7i=10HF!^LgHE~2B4NxWLcgt{D$tw`8*tV!+|#JXUUG{C zmaOS7I>QrDuL2rNbPs{-o-94aUFSaOjqh9ETgr!ejegmTcqF^0~)r5I@h{Y|J&jo3|)k3;C3yS$suBTOd6dyPAx5Fv7Bv z`Do-$dB(Y*rgFrtmlL=Abn7makKNp|pr{=+-jVD&BNy>5r?86CKEg#z>6tN@&&fr61;~{uVBw_ zF*hvC1wuKq_$>=D13MKTo+D#gB<&nt`hSxKZ25=Yl;zRhL{B+<34}S}ozwIe@AEZ@ z-eaDWgU;+tElx+G=Z-B&Uh1p#VyUyx!l#=LywZQJyShluci?7P(U~JfxD|lC^cO-jhD%>>ZCdu!Fi|{f8Lo z=X@lCw8G>PDzA*!0ujRa&YG*dUwCeMJ+&D7INRF+i+QY9!ur6+MjeR5K3G-dPFIoz z?ZtR8C$(T^uW00^K@-9(4GLaZ8ne1n_4_! z%cc}Q{gwU;-Oe*doTTMltWRN#==2`KXe|(0+iyw-8kT~SreqBxS}U+l3n!CO?Kx<3kK%)}V)&>ho^c&+ly^ikM z1u-o}-IfJK-Fp^vdh%ck)tI04ugm8o*7aK5e@a)i;hs-D8;w~Y%G_C^*_VvD3Om?| zR@ft(#@MGceu@v_wIPdET=%>TQ(1LvI+&8-SXF7^iJ>nc9-rY--4%jrLW&r)rHkF^Z4NNh;uEzb?^?v$(J1Ld2nzd;<6TBH~6I_w<%hD?cj5W8?^YU!R3e> zwfJ3w*@&C8__D!ox!k5|@yfwk+1d46-D#Ya^b*euK99Iw;^%{RAg-7A*TIR1>m{}i zeq#)mcy#bt#Pt$?H&}zXUgEohV-eR&JT%y8_yKxJ&7l6pIp)nvcoS~7_dVRd%e!ml zj0;m=GIy3^1hX+xx6@9DWnz4=F>I`j_CaG@{(9_m*chGH|Is2h;f(pL-;Umi)_TW* z-r0)Y*@fO&r1cIxgFS2e`IO&wJZ|Exm{sabW2G)G?QX&CwXJi{BxhaQq4fy*nd!>thdKDN_)4SYe1@m%Z~-C_01@w&E0XJS0^O)XML+ZV9% zz+>cpBX7dyLET5W=`~u9b>0IZ-Va}+^_XS}xwFvPN;6wGOMDA&npZF5PYv;>euqB| zGyXr75Aij5GiP0%B5s$@R~Eg0U}JzKGXF??^R64)%0{PxnCR zhRECAsDsJFQEMAKQ8g(Z?9Fjje%teQO=9r|-1v|yGh2$5%awyYN1Ap2B5tBIR@E?D z;_w7-Lseq&XH}+CjvwY9r1@pA=PBGA{`zD=GfHA~r{u8rZQLO_>?sQAE7J58RpR_o zCEuanK-2G?(8=MU<=5fd_hHcBPHub%bQXLs4a@(w93G8Zwz(Rrq+?_&Z6QzTx6n^> zRrsC>-7ca#KWx> zV)w-!TYtmy?-k!xd`oddRR`|pNV}DMz7oBZafEs)kvwTp`7-)SxuUO%s&T@_Y(#zY zw#T&`eFgt4_10j|&}Q@#%B6m?!xL2zP^LxGnvUKgY|&daJpUij9qjq~jj%tM`pbd- zN*(@m)!)zySN7NYIE7!{Ut|NYfNTEI0xs_{IuqF(vG^YWt9D!Hq2&|MZ@&#%v|gh= z8(vHO#_``c4OPmqPit&$Wood;7i8L5_3IA3-(ubM@G^w&2C=JNc0aRx?!j4FkL^K^ zk=HdR++(I|QlITKntp-v&M>!gV%iBqms7@F&+K2iaCXb?ZPj`!(pQ&C{aKKD-aYfg zQR=tfcZ_jggZ?V*Ygm45@pZ-1&|iPYmm0!(SS!90HEvwKwNaV2D>crS=sAp=Lx(+w zYf_6h;--%j8V!U6cfd1C?MdP~@WH3ifFL#~|-ZQQASYWd)3iH5boJls@ z?A^gCyWa$lm`)!HoYGQHAyv&FIW=Qq8REHCSpV*4uUe zT|IV4+e7i~c7y#ecD!@_p81CZyKM$|5BHFFj(jgnTDTDB2|B~$GnP#Mb9Sz8u;^LvID|!Jb(`n&C0;y@7rq-N_R9*_kzT zXHtcx(2Y*y#F-%@2FO`*kKIw^SLI{XzqOmocUF-<>tq$P@2p&0eG*@0xP5V@=DE>z z;!Zd9xw#Bp&YEN1Xy=IoyG$!^Ubj}7+Vq{-V9(Q+JnoP!(7wsg`4_W0{->-C|6ve1 zOR{5uP3$oK6D;&bJ2$cR6;6N9>Ff?NXZH;3L1(b`W$i0$;Mu^lfoBWxU?FV98E3_c zGZhuE5NO-X4xNjFMm>)HK)fE>wKufaLuNa8+riV`;B5zQ2Y5Tc)863i0Pj)o9tBT( zgZC(SyTRKH-fj!^B;Gi?ci>wh;ayqI(JnQ^1H8M@a}qG_hDlFO*qIeL92?4ZIl&_=maYZCkgQhzJYNWp2gu5giO@v_3QlU0RfNF!Z&sh+8j ze_Rgfo=?_8C0$c?&8(g1^TpLE)l+AktbU?;@sfhFRD_dNRMNAM%tlVhpEdtLSJv&l zt);M!x!s$qPF6bYsZ|rpPA)--^HZ0OFI$YTb7`Jqd|9F=5$7rFJG1**)8Gqt;j}@u zlu*m$v3=N6k$p3a3EjT+xMtt5aZ00GzTq^AU!KM;OQX0xF0}ckj?L5TAAU`C2>;=U zt3voH%h~37HP7Z@)smSHmlRf_7}Sf=L2hHr#w@2G1u^($=lb`%)TX1jwSoIRxNnbJ z9E}R@jz>3E;OwT4u}|UizXATU%Vp_qzAn2Bvc8DyhyO%YiO446mT5&zSZ~umkyRtI z+aT+U$l`xb{-F+*h-~6==v^Mx`^Y8PB1;p-iBsub124{ITZ2()ODNk0X&!~6M%vvwN}d9R5<&SuRe@5=5?3H?1@eJHiJ*L- z^b&`M+C}@>i#<`jdhaAO(;aY~$3i@{neKz@ybA$cZtxAdA5OmLUtH8V=dqtK;y;X3 ztR~O&88b}qQ#9aBU#_3T+l==vyrb~`1>VE(-iCJ;-jDT}Gk%Eo);?249^Mc4#bjKC z_eQ)&ppx+$<0_rIvzd+>kAv4M*{Eqxbzelc*dr>39oTI(_;s0;2&mZi9H zpDp|C)66R2+lBtEig3m~#HmtoJ$6mZW;i9U!GA=|ZE$g4avFT|IcM>|GT>y>{|mCQ zz4*el;D$N*d8Jck%$UJK(MkCer%cXADU7}^5@z8$^X%uu{pY_7+`EiLn1wJIp%7s_ zLJEQb;YI|?nTtD`!x0uC%tV-na4o_Zgdqq^5l9ZBPW#RSj- z=47?_7Fvf8PLp*JW=_@hT0qw$o!H?z(OHRei9M0Y)aM*%2i{{4ibxjU6wOi*lkksd zd1jhrBt#9F%)$+soN*;nk_?$f#!ZF|GCtUv70#q6WHcGLfj*A#Ka^?1mwse6^#P-ym0dWm(s#@ z5^sTkKtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;YnfIvVX zAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO z0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0j zARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka z1Ofs9fq+0jARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%( zKp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m z1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5 zKtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;YnfI#5?UkHp= z!u1`YMS>x6dLdJ1AYOs=l2DxeoD$XWi&0j;3ygp9D=8|v#+Frb{f)N5m3P@@-c_}9 z$&#f@Y&Wb}ac8x+vgU4EZqE3;oV=Xz_e>gpSLN~*E60E{A#XyijkvkFIr+A%l}qnj zTDfZJ7*;qDrBp7htg2yr6rzSHGsn+i##qxFvlOK!C`o(>A0{XBRG!X9D0cq(P^MK7 zPd?VjSWL5lF_XlY7ex3cDW)Ze%Zj1q?$t~g<6z9#I!sfa55A-t{;a)}_t92~8^4jE z&IXn#J9#OkaP=#&B*|dZUZ(9RKp9FU%}IWU1Qf%^cqu11SaVaJ&{(G1>7|+$Q;HoA zH92t+UdCsLk&N8xxWpe){3B#jbCQ07xZwyf4nn_q;_z1~z7m4wyy3(*d`gUYsASa4 zj6uXr|BiyiPNXM1yRE%|t3Dj(zvRE5|dE6XBJe8Yd-ArlM z>uJf>*C}nTPNiFaNjfWZ%4V$rPI2?}e3{l~sPy@IT9$P$NiNW-an@L9j=Mppa;(!R z?M9uNWGy8vH|bP?^(NACvrbL7en657b;@ZSptMCgRcu{F`4$^2RO?b}9o704gO!k& zZT+0`-KtX+)>g`Qn@-(e{hHFgr&9~9KPD}=>soHL-axJO=xHA7J0w}DQ%kJpiK@~m zuk|s?SFN}GPOFTu5Vu56tF;s@K(8#-snymGNay!;$u-s%s>?FH4fk9BPPlk=s?Hi9 zoi#eO$-14&Tdq@^tuv|r?$D`6tzVLsJ9VnwdOMYHmriZBUQhY%)~OxVp_H~lr*>OP z$X;r7YLE3erQM^~Y_Ihms>@0}?OAI-QL7B`WQQ+W=2MGS>uEk~CDrp@ojPtUAmo3b zQ|;Dksh;=g)W_C7Dq)RIow7bm`PS;x=hm52&mZd4m)7^FML*K1udGgzykDpM*72m} z$2!$*HB!C@^d1XX(@Aojo;Hy18>)4kPBETv4`p1hlL}9;QQbD^q{AXhWM3u+c-^KBn_0COv5@?-_N)yH?TZL$ zv5?R+n$XWks14CSM1&{-N?r@6d=^dt^LUsk!I<@eNj&=ds4kLEhm+GI$)OY#46Vk_ zNJ^x};oSDH%#w&qq{3ktH_1?aH%4SeQ3bSx#jGp`SK`taz*5-;e*85lyTLMDhwjLX zFIN+=cTj&%3A0nq;>A=aMC0eA(AGm$x1t&G*QZjcG3pEG)A+d>VNq*HY@S9WsedJ6 zzD6XgDum+~q>$!xbu9{uzd`Fn8&f97gDSL)K$2O>#4~Cl9?|pwqaL!#NK#dqq{V4{ zi@!^Y4>R$l5V9>wg=_l< zW~pA8%dAIqN&%I}tncZR3M!vjf2UJ1)|XI()yIcZi!7Gv)oYmbI3G?Op2QL#C8cd# z9*RUG6_c`{7^;{wRzhbJu;1oB-IR+AZQFEt6V3@?9S zGa8(6sG#&>m@^)nJtXsfm@@_(D^QSr7v@Z4w&AlW*Y&b-QUb;m`ik$)OJHooswK6= z&L#pKr2R(T%cQw-0vTBm7&H_|R>M4`3OR<1Z7D(}F>6+>WYRpH`7jt85p4Tm0Yk8F z8d=4p`{Y=f8=gb>6+%WD2F?LgKq8}-*2*S1hB5oZ5LfYn%Wsxsdr^pE+yRdA6E53t z4sp~&;21uDOl61@b&5F8NwQ-FIPasF-y&$g3@bQ)KzW>YDAEJ6`93OdRER6ny2`7d zYifvNDg{SrKzVaQ9J3c3Lz^ULQhB5+njV0c8Qut$c?!f|wF2?b%FIbbnRUo1ZIDf! z;WCLUZ@#=t;+X0$FOxXt9ha9$oM?KW375*e0HQlw=BPJNr5~eyK@@cruaIzd82ui2 zdxz-sy~( zY)-gv;I8%Z13-a$3H94#LnG`&>t*7~wS;lI8iE;MS7YzG4!~i zr=Nz%o=BNABPC&QaT{2YS2p~N%A^^Ixbi}9Bkd%Pfp*A|b`r<5ADoCa6UXc$PPmP) zg7^)>C2PJ4GW<)hq~)@~U=6jAxUvnCXQYk9F;##QX(MsWYrvs4YBL~lqIVD{JRAKH zihmy|kJ|S!AmICHHrgT^)>3)YKH|!+(rgs&N8%U`(QFj%N8*^?quD6jkHj(4K|qI#l}t(;PvY;ar$ZUTCP_Eu0O(X#V_WSnhf>X%^f-7$$_ zRUb$hx~g%sTZ7a!v|Ss6jH3|jWzh6*$fmVW8pKjl4bChil^{572Jt;aZbitVvc{|c zXB{XyJC6Agh}(hwZ3y^{y&ex~v1Gi{!qiiU^WB@V5R6&_@)tm03Tj0ttOjojczeNH z7Um^k?a;R;SMm7-=~a9I&$&waG1KICL%tF6yTbAXx;!>7m*frdwGfNsc|KI`OW`~y z_l;1wpM-g#aA6(yXl!P+_Fi5lHdvQr4f1W5mC43GhYpd}^4MF!#pD9)_o1lld$93Z%QNWk z!7JGKr$}lMkDVQnIv$oub=M9pvu_$acr ziQ1N}faf29NY1L&tC%#ETRsKBCiKy)n~hv#dK0k+%;sZg56E&SQ>kZS`C~}P)6|{0 zinQfxmV0If8SbR2mDmh+Y8%8!$o!SIf1Er8Bj8D7W3e=PDW*9GqnMGDjei2k{D_=1 z4(-9R4r~U%9$|!D8qg*3Ie@7b zMr^IHWM(9-Qy!oKJW`T8_8!H4fKj76&4$!?RLrA7z84V&H zTrErh0jBngFW@R0M87I*K2(I<*YP+=ko#K29*=%-ZPwk_2Hkxvll$7NyRV`9b}B-5 zUmF$ZAUBJNHurM#s*sd5J0F(Ge59F7U1YCa{Ud`V?|Z+yNH)^|fMbF*r<+5LiD#hA#^jJ=B7meQWf0G3Ga4I14=|R4 zA%`3jT6`QBa7<7 zC-LrP{HM|g(m>}%a!AC_g0+D;u^e*wU`#}?-2MHvjBk@-sR;|fm`BXJD%UW+U5cXY zG+w`tV5MQ73e^b#Obs(YBtAp++$F`3*iRv{86oLSR5%8V>tR5ayH+h@{7EU6j#A{; zI*Ksl1Xcr*;`D$Dl1LmH0GE7Q9SB1^K@1`?fH3S`h#keyN!C`gWIj(?gG?;N4&E1} z$BALX_em!Dc91$h#Ff1?m}X0I8bwkc39+MyGThJQ)L(`;F`L0LVhb|#1#l9vQ?Mdv zzm##{d_zU-fee3HG9?fQ>q1=lJ#eK$Nlx7s;uw6SeJPiRkao&xq6acDBQ}p(31gsr zbf|>%*O0mmTd6#VTx#DB5T7sI%h>SGk*@R6V5-d?FbwxRTLi7VjNMBNO{}T-(G>N15si}k}MKm;t9ZeLWskN6l zvGhQ%T|)F`XumO30-1gqM!<;ukRW3kN%LDAGesdD`y$zsSGRkx868yl?p88q&F;NY z2HE`zD7ynevwN>Jne6^?&_5v_?A|Lm$s&IP@&JNv;x)R7p8(^}#Jq1MfIS;GPJoE-$^O=n#Bu?+4rqz_$0jf?kcojuklQ2 z1l4#b8Wx9;u^ciZAY*}3x?GB-8EZcH6$q*OVe=c1&UaAnE|3gEKLlqPl9nP2eG|kw zM1F)Y>>3W4?AVix)zI!3KdWF)ZOsddcF!m4=^+=a; zsUGiwd>cWZCekGrO%t79bRZ-wM4cWc+_VvGm!he~(U?%kV`!%lT}oA_2gDh-OI8QO zwNY(@$Or^&R8K}EA7NMpM6VpxKR`y!1aBZ!YY2r*$)uSeapXF1G!vwVW`e|yA}V5n z#EGGYHsr#Cx(o%DBIrMD91%Fue(?ARN&XyF)kZaOm3D9=lko8faPSnu_3@bw(M{tM*Zia@>o4bP@t_k%oxFr2c5tO-XE z4i^6tePzLnj=*;hqkP&Z{1YEZ$_RmUgdywE`SgRiU>T*zU$~sP8{7wmK8EK^2o)lX zqVzLY7_DR;1kXVU{7r7`PC}a~zWWQ5c9mAzo7_RA@d|CUzsYlH;av`O-$xjIEmj)j zoKEAN&yU}T;yK*kw3z(_>5q`ij|iL=KIR$7NRP8rBdS0pNo%N)Z^5sf1kOH)zKD=| zbtqY>L$b6)mWLLDa~Mf)QS!l1vT+BJWgM!9z6(w}lKzB1zu4bWfe&(h`9?uYz~s9R zqpEQ=w0u9vM-lNY3@cGU_zijy?J^QKGp5~@n zXxEo-aOHMzwShtrefb7Eil|G=H#ji?a3ah1WR#eXp#Ajan~JbdS3ko|tyF}zd{Yqx z)WebG8ytfZoXCRt4LBxxXmd$;`7Vd{S)mfrUqk9dQA6 z1{-S3ALa7xP@~mm54fgMa3i%Lj+vH)NNtD{O%E_HO+8gm;R)47U%nwBEu`kYfcZ*W zzQIvwiqg=eh`xN2KB6Mi&IjPc(&LJ0XDzgoi(UUkDe>Xun~X_YzGIo`eZ*sFW#YH$ zc2Cm!P_Bn7S-1OJ`AD++#}R&lpxOPcd_39x%b;H(9_;>BUN8>1+d&>j&`ta{-NgIB z=q2XLC5(Shx9|ii06|;6sWa+85a|E)^8Ff()Es@@#3)y1qg=lGA-F~L8s~5a)p!yV z<{;=pFo$1FL+~ar<|EKjp39?YGW`L_)d&fvptlJp7<~Xu;o54s6)BG(XshJ|D2>yD zdXrD#)_D-uR?9sQ`F8|u5H%t4GQzNjAo?#>%PpjeCSE?3>#HSkWYVnlI7PG`Cw3H3 zksc>b3_Y$`Ek8hk?;+?v&1?xAIhoMP=W+t@(ae^(hEi}NW=kB?8gL@3C2`Dqz=^Du zr=a?;A@$m7xf&w;5GgO?@>)_(W=mZ8JyK4)PKs!aAa)c{kwy?Fh8|a#Z4XK~A8y2O zN)C_1*e1eCy0ltOpf1?`X{6UBKAd_z5j_%(kU==u5U8hBu5H@pf3FSlRR=2x^xD4IPOvHnMPk32E-T ze9bOJdNIPkT(h&u!@(Pke)wBy;PKtGaUQ3&ve8b(@QQJCE^W-A@y+Lr*OuzWY2zS# z7c|!(jE|yu>VURf{}lAUAxzMg>jUA{dMvHhREV^nD*1}OSicNG`gox&)|9Heiqyzr z{T`CurDR&HDcR^la%8do3z9xUpx?xQC%Ep6r)uqh2|MKUQ=z0PJ;{iqA22(m;<~`FuR^IIMfyRD ziqU3jm6@n%6Z^@!rfZF!jtq2Xk?+0}wx^rv^sA@?`%p_bQuRhppG4hw6Z*Iqff_x1 z1~umxs6QfTjlNcE^f{1S8VilSR%E8?0a})^Og6WV&hpO}+hLW6D zCQ;irg_3U2lJpk;G{n17i{5Z5N^7`@nW%ZWo6+0S6LOOLJgB_YqU6ag60U~uWb%s{$@Mw87}7>^eddzu(?qUM8a0#7fe$M0 zDBkSqGsvm@F-fK+XbMnM{y0H%%@xc>0tNY^xgZs93i6;@(1vzUkb~;fm+^iM0k+fv zBT(3<7>ywhXeC-n9?%L*Y4rODn}*9hpt!mF-}iuqF7W`{^$l{$Q5nOLkr~4jlVL)BRBpY0CB~QKWjDC)e|Yi|IUp+IdtQ1 z3zBd*49}=tctq0!4Du5v(4_VnF~_3tXe~x8B)_aZp9%|o5)sm3A)#k9p?68B4bfmk zh!UWrGn|qH&r$eBodI!8JU`5gCh_onywq^=oJex$#@|#*p_1tX;dg2r&b=Tk^RtLd zq{3mD`$&fB`$|NHMqRjmyTJX9WBvDFMQ;2RVK4AcZ~PTNN#w>Kl^VJ6M?~bt9}$ro ze?&xX{E_DG-1rMS*5@M0tlWraln0M!dVuj3Di(IEYw?g{o#Kg+8-GtiIB6&{uq5rq zUy^>~PY&JqdjQFD=*HiFA|AQ%cMXi+8oKdES4vs<#vj>EWe{poBD{|ux)MYpRKwWm@Fa9M|o^Je6 zi!5TlC~yGWTJXE3pN*iMwd%L*onRtQ0#uG}3k4 z_!`Qk9~lkb-Gt>VRa0~w&m=`7v9P64zzw+>TqS82NGC%2L)Z+_Po_haRLEuWh7WHJ zaSc9jIlK_VTSFXEJ2*1jjUzq^aZpKg1cCxD#K_a&-U7vo5a>7j{*V~=QvtZXHM~B= zk?A`c#{tSlk>S4$v7?BR;kF+hE+M7>90mSTP5Vk{t_^7i2J;A{QQyVjAT9SA2BUNg zwjjqt2!z2^ItIT6`2xZv44hQOEG{oX?n@Yy{sRUT|1}2hLh%uVD>3j=0b?)6pq`Wy z1{Ar30Z~_CupgWV27iI(k3!mkK^)mZlx{~<;Qz(in}A7CU47&CR#kUbcU8~yOwTma zJuvhPGcdp~3^ObP3^44VY@#3$Wpe>V5fK!3+)+@`C~gyj;sPeFxJM0|Xf!d3nne@$ zCBa?eZj64v-?`PrjLG}v|9`%(pXXHHbMCq4oV!-td+x2u0d&Vel#D5Zgeim1k>V2o z%fQnKwz_V3uuB7~=|CHU1T{?G8%$Xsy|_@(iYAR8XKI2wz0B6Wy5VTrOwya}vq(j$ zuMgeM*2mFJ85|=5S$F&y)Ox9jkEJn=fwm!ldKmHXAl^#O1$Jh^hQEWo<~pRNzUzQc z=W5Y8Sk?R-5iKz8!9qkCjNyZM--m-FV2{A*(2FUscLdgmofIo}7ON;N>az3EQ!! zScipP@)U&s7QkQsRfS$c3`Q&Kul6;NFT)r+s_GYZq&%cpFWU}m+S8ZnL6mmHz@BzQ zjO{4wt*|NRt%d&dCTw^;u)|dUbm*&qbSe6vNgM!LLxC1FiKUHC&k+aN?7vk5I!2fpA_pkV9`%d_M`TE{7JErXzv0h z#maybE6E9BVX>0p^TO5?c2REcnG+~cwPzq2n>>ReW!r@3E+{o-QA#bQqAZ_2J0Zuq zDS9B%m}N?;Ym`28Q#DIX&l=c@2D1nZnimXL%DUO^ISIt0pmVwC?bFO*;oRsvaIi_~ zj*lUyiDFNODQXZqg0-MX?mi>XP?`_NlygCrcbFEr_blkguH7uRo&_UGA1qcZETI)r zKYJmaseFbc8;*)n+K?wHex6L^9q44~=ngKf)l<*B?v%$}VP^p9v3Oz4>&xdWEL*F4 zNLm5P;0C0671&<^17xcDqgp;-I^~D}^i4oCHsi5mrQ>r%VBz*MZqZ(PUts&f9L3U@ zE#}}nMPSZRxU+~kv*kcRe@LtYh&i*H_=J5B&>xWmb7sp55&WR)RDdyO-#VIe6Y#Bo zzEu!?btiLL|0i=?nloJrzacc|$$~l4q$yk!o8fO@)jj zt6N#}Q$%)qD0>*zh$O31M0Ov@sRnQyp3-ANnr zW!%ncNDt;@yl5K?E?}tVQw!S0OMAKjGJZ-qqyK}|R{VPy{Q!*~En=pGV*XqZGg`#F z2ocW%X!Phh8trw%10bO9?Ehe(5&SPa(O9ig@z|mj*tZXEFH#zAddfaZa0 za&G{Ag(PTh9zo49i~}~HZ$F6n-{jX!F-L)F zh6sivWm-kaJK`m#ycz3ABe=GtxwbTdYfGAIOT)Q-WOMy!8+b+3eW56ZM3kqZj2^-D zBb)0-Be;HqbIXG-Jau$2Tkgq~VL@erLD#a&l~;xRzz86p(7Kq)s>5Q^KN;O-h` zgRbIW32QH8mrGdKL@K|{)o78OHu3%6FJakt;HDBAo;?lnJ8$U2a@Hjzb=uH}<*XZo z)OkZ+m*uP-h_-h?pj%sZEW_N+ho!A^7!J;+^GLhHGwy|@tz8TUOIxHnUy~3lZDr6H z!n5gvfE3QAw;;@kRAD7+3>jscAC96gB_rn{IEv12codxoxA`%3VI_+?z1_H+2cpkA zX0dWkKv;;^6o^I2xe(#Pn$cE-3u{KdKsa18`Ups2%_xGfN}4qz(!(_)$%!hg8T}Jc z2}h%zi+o&)c>&=zkW(B!`jf~c#S$V3(Z7^yDdL1_R>&lwfQdDdaE6iT0|ZxwOpHJb z&&^28*@YMo zlTsYN5>6D?q7qz+c>$prDeQak)Kzp|cM0>XT+xLRE?J6^qS)5CHt?1b=}6t6-8txV zX*nReT~}`gqSAakPu-$x&PJY`G(F_0J9PE05#^>&LDo`t8!SV93b0i1sN zF+mP;{_V-MV zHkKW|dZ|i%s%svBluhXmn1?TQ&2NBRntl|cW$K^0nmzjpRq_v@#jY-)&~md(SDe&E zESXFK2~=h!OwySvQGizFGpMmM`$DyoNg#_6RYC_sahbN4AVonyjV@xwGYw!=nLEK4 z&peHCO=M1hFfUUEF=d(M$a#6@6&MgzB}))djMam!ox}{(MYSlE%yuxU44Vuoq^U5M%C^1d+-64E1(s<_=0xk}d}Mezh(!|vy( zlG7lpc%rrkfip_>l4`O~*Qw)yB%D)lEn1IDF)tttM2jj(u;AwE)YZasEqU%J@D#I^ zsgnI*ckx1#dza(XfUs~2Zi@ZzivpV}*@m(zUa6~X^oxWO z$2HXl7lIMA19Hp|#3l=#Ly@>5U(z@JQ}DQFqS#9Mm2(VN?pBmoNrNDcI|he3KD4FUl3@& zgo)p|;=0!|D~kp3U5lnI5hUeu zsiNdyLCV}0ndT5dD%_2fcBmlT-Lr@+6(sMTjn-RoxFEG|jxk3FQt#eKM zN9W$7h~vxOB%{tPXR@`1)5&r9wB!WA94GfaZ8}jf*U9~a*vW$VPVPiXIYqFPllw6X z<}|^|oZQEhdAeW~PAiqXJPG0ir*hfBs^r{?QXndl z`-Y6`%bSVCa@_e^a-Jl^n$FQQ^L)V^H^=4Ek`02nZthoX)*A)$-5gi1N-hvA<>vlG z&Wi*qb8{8w;3XFeR^jHxlJm!cb$4_36T3{XyqkNH*k-{{ZC5bsmkUDd(eHyPM-CxRPrHTj%Cl z7Nl;lGwKLrQmdm zauM3Ry__pR@IcG+BHN8TL=IFA`-c$OMud2qa-J^`S&>4->q59EUN~8ULTpsdzewZ& zS5qJs8z$DJFpW_T<2;T-G+u~c;>fUnCww>TqsbC~s&W`7>S(!1)SVAl-`mPL5+wT+ zHj|re9>VD6ryL#UCcN|lRC_97?yD+26y~L(26NIoiNy@&!jFYAOu5>=6zQT&+%1(# z>Ub3-q>q8{REd^{1C>4vk*RWnIq8pxWzBudO@D*-lBzXvzAE_@3O`k+?Y|m%{d9Z< z<=s!!jRkoFP|K<2g1k+{hH7~%3FM6p<>B0&N{!QYe@N+8o0_8Ir7$}^p7N#@vT0H2 z{<``?+;W`sSmx_MgSqLinUlo^^V8VwqEd&MN10Um0;XGTu+sF`EV^TK4HcB7ucVaY zbq%K|73l=iooYC{r~9EzrOwh~aUQoi7Foh!MoX?@;he4QlYm64kQRk{zK$P@P@1cg zsf+Mb1v6EeyP#5+>T2F(o%C;M=2g0ycV;*JXDYwOJdL4H*HGvdZ8w1&rKp6n4p;AL zTnN%UTu}Ry%4b$SxCu3;ydBWSN3Z}-IO`!U;rt2LidgCKaSw*Le?ozluB~QRxj(_R z^aOdrbKJd%oG3`dy$!WpdXgYfBe@dMBH30p_Xn4rZ2un0dYFf}^vojeCCkhQNo8(8 zq38@>z+owSD@f^m?LLUM7lV|ZmtTZ%6~o&q(m!>%FqNdUHGOUEFVGB(vo(F4%}JMW zwgRE}l*=v+q#GWI%G}F90@4e}wB+GS7=8rl&#F8+3}5Q!_`Hpn=MZy!1zeBmh4FHP z-Ql$5;3|2@a;Z1Hv(#HrARrb*+%=9XoCPyhHwh~#bPhaZZ zLy>&lueB5YFt3 z!xRW7bH-r`gtNAMk`7ZKoSwm9+8cHx99kpofw`99q}T_!8d%TQP=r=Pmh~C28){TO z&$72V>X|5FZ-Y0rx(Djasd6CtZ$@Q$>hhl-Q$Qs7t#@cs_-=_+t=0B=P4YzNgD5Dw0Lx1N6H* z4^I)a=qbpo^@+BpLUsRN22^_%s612O|MP$nnFk7Y6!wo-o0PFdpg1^F-;fR{aSDWq zie8Zc)u85}ssbRtei!8NkK)icvaKxJvLB+(y927dg*x$Wg#PaZl-Lv0iFYIP|309^ zcT*?c8z4F<%i~3K!uKRP2SMM!g3iW|VbU!YUOx@hAYgso_p>`rb>gI0U%(__) zd?{eik~N1Z>mKcMGP((bjeusX#@=hH%ewdwQ&abunz|j)w*sW5mO!W8%@*~rwm(HZ zN==b!bDL&ZQ=~+`0wt^|QexbR7S> zI(bmTnj*!m2PLd2QW8znS*R&ed|tZL)JxF!mx9j5)re+It%E8S{c#R!s#P_fgNS!f zAD5X3`{Dzms_{Y)zW{N&5cfgpsU|Am(x0igpgL9UbLe;0B|7RLdYV++0hrPEk#2E` z?!|8L6|6u@Q7v>?|sfJ7otWr(Q2&F>%FfiS$jW)TRV9}X&4Xx*pvsy z>Zic?Fo>*;B8ZawNNo&K!)Q{_JIwlhZ50$)({=PL#DE(eV@argy6#Q=FG2SUfTm4> z*v=v`T5}{Gs-sg7YqC28t_o8_LvoM={(xjr}fmPiPb|=OEQt1u;KG;A+6IGxmrP zm*6xuFG^}!gcz38o-8$^QZAs_B6FZ@ffUNkXig?eMY<=m^f=@`3g|1td$E?aj=zEM z7C>6!14z>EXUGkI&N7NjYx^}=+W+-DX}I~W1eKm@8J9_M*MdS%wHYHp!5s^XfN)&? zCp3Hw;IH+}y!|^~H9edI$;QQFf}|wRv3e)0=2SA8jv3eE%o&LR9t@Gy*$L zhBIJBYs4go(WM<);**~$=+c(ay0klP_W=1d^2)MAQ|eNl62W$RMIoXL<1~J3w%z_8MD2sf=VHn`8PopVR(@><)9nYbokCfj3X`c0j>sb(m+91VkVi^=_gOr3Y!jiByMnS>I zpbYw73;CnLrl(N8g_|EsnG|~#g|n0ykWwZ&K`bm~QhZ*zjI{ef`s_eMFzzrjQckXl zvP4Gk4r#p-y{}v0P{6(DZlk4~Ua4a_t$=`KfKfRZ^lPwbI3<+zy3IjwKs|^Zh`kCh zh7qdqZ{V4Q3OWJt(mR4%>_E7ASD&Q^!i}C#_CUUbc?|eFWN*K9@#;1yg1hAL=_N$|2@p1i@n1j~TA7+4xA#Znrcm4iWejNi z4w1Y`&4C`%N*6H`7q3=BieMJ+RX8d-xd>)$Oa2@bR+{eE7Mit9%o+q)0|3U7?PAGX z;Ijb}?_`NVhngf?FHSF#N7a8o#AI%XI6ce9(JAtvdb(`Am@Ln!r;j9ks^skqktlhx zkU7(j7?SpZtrwKGmu$T_ski|QWud8?!8MM0PU=p1C&8jMfN@Jm>dQOiEkL)Egfcxz zwq863>}kMg*?MtuE&ViK0{;{+ECoa*|xTLu7Zq9DQCuiuv&Ht>?K<-7K@m9p_q#bVit>-ry=4A z0F7Q;N27IKsee)MlK)_!5iDCT=1awQ4+Y05h3#;DB`cnTQ4K&UettdM;Q>JBl7xz% z-@;aW8nBZ9!+Jx^|K8?|X4!f%M>IEun$Ij~o+CZrMhM&j5Y2N2vdO&&^p7M#^BmcF z@g1;l0K-N=%>UlJMDwHvapSaxB>70Fd4HTD{dPzbhvmIxCd*W`{kgy@3UV$|7NQ>U*e`uC>jPA z?NdlgD4GOhGN^>23EH1if%`e3c&X*i;o1P9Xdke>jh0C$8Ukbr1`9&bc z-ksBV7t5SC!9gf$K@x8EAry@TG8pqoBjqHW^vrnKYhi7jh$-IOr;y@l> zLKVH846q#!7U}))7k!X~Uk*E|`c0t6HU(hN-w6aSEgJ(2PW@k@ew-wo`W~G6zekjtq*LF6Q=eF(h)#VEPW>mr=_l#b z_jc-D2e&)F(D8NvFOCr+y_YS(&6$--AymWpdvNMg`}!oE`W~G6%;fn=I`us`^@(jr(y8yksm~m3ETU82gH!)| zNZFL6Q{RJApN_9flXU8PaO$(LuTUPH`U&_^DW*847vV1fr#|JR#HpVWr+(^6l%|yu zr+!MD`YGeo_vqA5z^Q*KQWOMab`+*A{I?b-2N$X`=_3U zeTkH~{Zr!hPl?+~f4Z;)+Gh&lWa#$y zX9*H$pDl==q1)fzSCBya96^G-&lM!lzP})W+uxsOFNM->bo=`U#lOV^MTTyFe}QnR z4Bh_zLP4C&PBc1yksxk{ZhwEVAby5!e}9P}sSMrz{=tHjW$5Gt=}lVr-x z((Uh`FPP(I>GtpR#y8Znh z3)bDu((UhGCRpCh((UhW7Od9I((UhGE?B*rrQ6@XQm_U$OSiv&wO~zdmTrH)L$JYa zmTrIl8o^rKEZzS8PX%jpvvm9WTgrLQZFjSD`}@}lw$9Dc?eAYF*iJVGx4*x&T;6pR z&%y2QU!OUfW#nb)_V;fvC6>(6?eE_x@>NlmZhwDU`3>N7in4V3``gPOVLH4lc5&~B1+ z`+IQv^UkZ1bo+a7`xA4Lbo+a7`xA4ON4LKRxBqjH7G>g+ln1x}ffPfxzgKYkC+YV0 z3U2=--Tofj{=9FwNxJ>L(CzQh?eAfoG;8F+?av+3NxJ>Lg4;hyx4&0#`zPu4_u%&D zgG(SUbo+aB`+IQvA5M9-9^C%3ASy|>zX!L!$tKH;yiA3EV6{djCyqYduMC=ejw2UkrsstxBndoCF%C};P&SYS|#cB_u%&DP1Z@$ z?eD?u&pWf5q}$(v+n>*CzVhhy_qJ$z1*AkNDk0ld+!qlfNb{iE|8OAgt&q+~JE6vu z%bPME(gHl;JdO%aIAzf2@`<(*(j`u-sE2U(fq072{WGLT>=)qf?ao6^x*?$KBIO41 z3(A$t$AEJyeV#5R z?y;zTGY`XhavAjnxG?lD?MMY`rpBu_WLv!kvc(shj}1r>wHqY*_G&m^XX2Rp7$iFP zdMyk{afv9b_tzc;a!W5bAOZ5Lei4c*M6rvRkbcCDTuj9pj3nC%s~gIKC$?r-K#HkW zkm%s6**hS`RXa%Z@QGq3^dxy<;aL>#1*KC8itGM{B0CA`Z-zSas&0PLp$YG=M#OqV z{OSi0eZD~iPY3Ve9;)i7>kO0V@;B`%c@Hyi7# z$EB>;)p&OaG~5gZytNr!&{X4UyF06K1q@#RkZN3Q_hU7_0{m$}UwP-;8e3M0r`2Mq z4Ip*vW1x__od?NU?WCS{cI-1KmAWO_mLphU-I5ehyTBRNElDx;0!U%qk`!0GcB$JV zpm-TTep0u~z@pX1RE$q|u>VQjl5DH5Ko0AcBy7lFqbk%bNoYZARE4@F$y2;KP(s&@ z)a~g|dRnNMt@%W-XhrX%-e5=mM#XH+B-^SUL2(@mgw615s0-UCb`YQ)%5`7vCa9yRTqX8xbmn3^4I68ptH5$!7_I7V1kP^q zY)A{b$*qWBH+lC55%musA~Zn{4ca_gqO^Iusho|w2X_u=*Nz@o3596Px}&wC(B@sc zC)@lh$ljv>Y4ffd!;zv;U^JSWRJp{>Y9!+gWi5P9FR~ zaXAhg{6KLxoHO`=;;bm{(&FBM(!Ym_r{k9s$d$dZa1O?P zjOl+ED8B{e2|&XtBHfva*D8gSYh!$)RPAYqc@-=#1L|HtbE#}n(STr3SlJ{+lnYW=*(9MFKng3HB;2WSjY4)<*`L9v ze*ok+fW6!Yi&phWtA7&5d-hCSlZsmw(6Fva!cYQISl1-smIYGS$w~4=s5G*|u;%qa zuK~!faV<&!-pTO83MeS1yAwT{4+}v-^{D}EU5K;0wx~YsAac{no)T__f`0fgP_5>HLGNY9mSU)v zsv+4{i$D&mhNOsE22xlxB*oN9kix1VDXw_!(hsXqJUt6VB>fQnJSgVLYdy`5ad(OI zLy~QEI~5lOV3KfSqvFBP``fYSsF?RUl5Mq&iVII} zBt_IpDlXjXNQ$YoR9v{%krbEYU5fe;C|%M;@n>MfSWCr=?AYFT2ouF5W3270m?Vs~ zofVUWv9_~flH!WjE{acr(h~}b>yE>y^Cx8QFsLguXE^cKX;pV2qS!1?>l7sqb(;~v zwt2-5BKlm12srvfLHpp2)#p|a9}0=8j$<(Iu73(?!A+2jB8TqxZRd!8yY0RoaFyc* zS1_1XH95FdQf^56VN%s&B+K@5D>?-xU|`2>^7!yJ`MD)e_?uBOn*f96fd``KC8K>q zFpk~Jf$>QzT8}6hZ9DD`lRs%y@hvXb7hMz^C4ZpvD6pA_{{5{Q>iib6KP%|m-)f@H zw!Rp40HX7hf=;&Wt~wbdI#Vi2!9D0R)9>r(Q>e@u$s=2?(f7WVJRS+T%K(zc_qF8l zV&E5$M%S+XK=_Nzeu4Cs6Kv6yInsJn4W-=`luYJjkST0Vq! zst=9rK_8iZOh>nccJYR0?0QT~IqU}!vjAe(V_M4L1mJ5(6T2SQc`giG1Hx4#!mh`4 zLj$t;8=$`g^gWt({YF=CaiO?BCij4_5LXfA@l2SLxoY zpLU371+ej7t)=mw0QC5RWNxIYy9Vjm3$j3vYio5%1`j@&LvD*?yR%}MA~L1aUYUwg zZI2t-6_3}^{UEJbta%M&Q%YDdp*5F5?F9fSrQ=O0?E?N3po-sU)N6GUmoB~p;S)fZ z`??i@jrWL+7@IgHXjgS72K1-9(p$~}ePCy!d-P#xO*VTBS?s!FFN`MvQ;_(fGcJMc7ZpNGvQH3Lw9{JE+LWDC36WYvMBglYwe z+uCZl>cF2b@BRv(-VTC>`2hX~Ka-b#h1P-}Z!;Q6Z-tV9B(xz{s``UG!-!IRjMq!C zwg%&B$^-d$exViE{??BHS%)BdLg?K8ChHI+`Mijl@Bw}`Oj#9}V_xz*6-oy{fi#a` z6k(GQyz8K8RuEWJ(me1=9hP&CDi;4h9c@6xV8B4}-v^hyDgJ>v$Ku}zmFodjbc=#_ z5Z$78f^ai{b<$+&b1FUik#F)CtM1dI99HPDo0q*FXyE zgd|_>1}Ur)djKQ>_>#2anO|q?0h2myFiktL=(8J;;$(IDYRfNTz zgO-Xwld2mBCKl~YP!JZcw08@)q^2o|o@*L5xBZ#YW+6yvV|yZtwZ}ueBjt271#S$j zDDC=up|o>a?nuqh*a%?3R+@sH4RjWusV1;N^rNep{${!D5WSTB6nk}j@JQqAmM^wp&I^sHi`D6-WW2q*OEyM-9Zs8 zCBH{l??CJbq-v?<_}RMbc+{`Y7&Y=J2(VJv7sD>o#!rm_YyN_9qqqsi;)_j2oeI?A zCYVugL#@S+fQ<@Yq&te6VB|%*qry!vqry!vBg0KF?B3GexHP6lg_~eTg_~eTg_~eT zg_~eTO#riOf*BcZg5k}#?NiXX3FbxotI@y4&`I$2vE0%8rY*sn1>`a0iQr8EaxqGU z;O%Xdj6MZaf;SCF5&?p@FW4p^F~P&|J^GIjOYo*!?ijp_M!gFtR-=ChIRtMqm~!AI zB(dHx8Xv0R$7+-}6EXipfZ)vlf>+-tg0~ltcaWIiO$Aceu~LNhu8cklRDw4NG2bIV z@FoIDQU?W0z=o5dNsc=Fh)uBJq!Q14@}?9#fADwJXw*!w;lyk*vCSqE+iWti%_b8k z4_<6C*$;oV*<@k|n@oa@C7B2qrdO;XgV|)_@atxH8OnMg$;(h|v$4cs6UJ7ODfn}O zcb^>2aIlNyWQKR_jqcX3$7Y7HH&Dg~(Pf9MQr;phbqHC1* zeYP1X%9Jw!3KPT2WKp~(H5Q9$?>?y;MJ&68e=jacUR06e+(4~!tA7i$_V~el#M!KZK;bnc5u@3Yk?9 z!uLLV^K|wQ*zRNc$z+T2lbGyMgdI3x+=H3y2%b6|){Jj_OUqt4R)GVhQj*u!$O&eD+D#3ziqRcBee^~%8s31u}`Jc_u8 zi?Cz0x-SEXabU29=NM*fP>aJ4*jZz;AK@=@1~j?WM7JCAV3;T67*;Vn`zdR(AP!Q# z$&@cct2LvhFBl>x!B*dz;v;F<2R}X65|YU=_exlyj-Ux&s@moXZTB2R1}Gn+;YA47OZuuzFyygP`epgUtg5O*a_qK<~&^%DK@Xi&Pxvcd$QhyLP{m zQeLT?n{|$1HjtB1KPlfk*JfWX!RBG*tPWNl;b^WA4%>@ z*(RUNz5+odCottM6TXeD`p?q4N-iYND>?E*8;6_H>&e=ptN0cA_(&kWhYwHkWx4Xo zS8uq^5y4(3T)Ytma}tyBMB$Cp*_E)EEsGu7b#~#Jei#=Fy4;CZ%#RJ09lT6=f7E5{ zjOBj>LHA4IOR|ID<~RfTIE&(Ybh;hA8h7-^b&>;)s<;}a;`=+%W%)9R=3PM?k$C(U$?bGo}Z(blm~$HUOS{)*;EcxYeHy z?w*+Ati!y$H!CW5#$p-*>$v)#gx}Ht$P7rPcnDVJNOMt2U{Y1A)#4wDK!zOlRX{meQl`HsHg1LOhA`?7$W7 z;Vl6rmI50WxQFvxI(gz1q`;k5xi=_VA@f=Qf319#!X;qQO_V*~=8ml4<=`SQG7m&9 z+Yj#>P-5#S3GM=sO`iA`QsBiA*$+VOeSz#jUm($DuvolEvFz*r67nluG~Qj{dYYUA zD23fS=*DUUkIzT{QN}^b{t)~lk3*qE|Ix}Y?iY`t9kqpXEcr@~95fhp51NCQwj^O& zIGt(>r&Dd=bgFFvB*}DYbU2-2a~$(2=$ua7ihtF92Ws0oQ`hnt$!6mjyOO8Y&eXF= z8H?aqCaBsU!=1-EEMR3nGOUN`eG05gO;ELeOV)h?RyG~Ox{sbs)^3nGTURisMsxMo z8jIr;EK0*RR<}xA`!L20)Rlbnv)Kb_&p_QOkAmZ#fawHhq2-QegCIorcE?Wzkr18k zs#}V|pn9?bbw7;c{+n2i0da%5*j*@4tYnzE7(ZL=$Ah_;53W=^n2RYOC9cfH-T+gX zvV*zUwTMVKZMfROTx5q9uM|*7QBFvSeY_L_=!*!mNn}QLk*yn*8PpzLX>;vnIdQeG!O! z$=e^EW0>VeE%H84e@ym0GRv&VpXjEM2g5um$1vvKG-0wJd><%Z7;JOa9#tysh_fbqEQjF|Ue<%5v=sq7 z{oYqxbf6Qr@U-IZh2~kbz$s-LR{kzD+@ggBbNnh|iwx%aR}oumFyC({w!~m5|1osr zqJs@q<}akoLkw2oAIrEyozg!;L3e*9;|?=%d7rO0C|YW;T7NA$ml>?yKb+X%PU%`0 z-r%Q+9bw{{{6m>;xxoheXE5$agSGnnTz1h>CS9AKW!wrA*X}Q8x}yy?!QaTZl?I#Q zAC3owqGL?DX?{<}tuk@5{9~BzScC27!{w=pRvT=de=O6jaY|X72bN76J6jbUXX0)z zE}OP5(BnK%CxdP);cz;$9@cIikFqXgg8%Tx)x@->|IIDbS=zu zS(C(uDGM`QVh*rYWnrdE%mp@FS(xb(^OKzETA1k)O930icVq}w2CP|GnCUXE0$7W( zFw-U09oS%HVWvwg4{V6CFw-Sg3kDa>>Sg64%Y-DSXhuG4U)O9Y2caN$gsnBx~_x<{fFaWvpKnsCq+L;MDWuK+dQ;bDfdEMCx=nJg{TdJrPKpsbX> zPv_+e()~ctyad!l?EvU6Ylh8$+B}d(1R98>fs99BEC5r>sWg47j&h^D=B4++D=?Yc zs%vR=AF+9>9z>+K*t%7>6G08i3B9Tv7%udgc*_mcb83$78{$c~{@B&WlHBVvkQPAI zTtMI1XfQ5q<;5lQIXZp|l=gZlh_M;N99vgfrTsnt^(rL1LTv579mP`0!5&q7BA8YR_M~*u&Cc9i~-AsfL;#@(+b-b1C_cW-H7Bpu- zQ1V|ujOK-diC(GWeV|%Oo6I!@DS$Z<(AgEYhoWtYHe|lVZbLr5t!w zr94Q9@FL~G?UO9yfe#8w}2 zBw}2h=1?^fbvELu7+>x(=a~0&b;hhyifjjLpq2dl5DL#BK%NkbyQ5 zqsu^a=4-nz8!suYkfF``%Chs|l?q#jJf6xjsj-XkPyjwlF68@$wl>}c8b6ECcpm~A z5E%U^0+%Cj6okMacvRc;J`wvR7~00|59?Ip(_q;O7ByxD^D-s54FnmoI<_EHJ1S*L z{$Hre&Cq=*^^d&?jP}=M_Bc*=9iFQnN0*|*uXK*5OVQys75<3S6S%DMHUg@IcNvCc zz{b9NMvtSP(cw20#{CBM41JD6_~YsrdYK_k zr!5}QAIIsm#UuLTIGwimb%t>hAi?6-874l9BDOBKDmj+glfGs8a|4VWx;MKzC__F& z3N`6?#vg0-BxbWxCQJNkONIh9KAfDhm-qP;T%4RgE@_*QHu8J8pqZ8f=#&jLpgf~} ziJ$ssi8s+~Z+n?&6FYW3N;a~w(jGgOfzvDPy?M{#53Fc>9JAzRaSJM9J3wwD&mr(M zU>a{QILJS};IH)HubeRiq6j53+!^c@LC=`Mo)Pqp8D}F*NWGJs&c!5x_X-k!hk_%N z?B&jg!E{3EjiTwB@K3M~f~%8rS4U-g;A$r9Htso`urHEjVHh_JoSi1@-m~2}Ui{ay z_5Oc4Ti~3@r;|`7AAU-(b4vlX&9uK%f}~-PBPD)H_62riGgB{~R>kgWyr%I*+I<_CcunK*n#%HwcunJ&sf$tKHI2h- zN_{v)=)8x2{|j7_yuec`Gxg&6^$xTc|7INi&4IwgNgBsYeJ%5v;7mOZ|0b7+f|+{p zqWnlElbL!P{>^zz#+iB?{>|SqnVG2!FHAW%$8eBxe?g3sGchmw z1#N&BSw-V?-R(48cg=KNrh%ztG9@<-PaD%fR-HIJvG^*p7vu1>3)4Vxc-n<&pg273 z!ZZ*r$0lVLrh&i)DZ4NY1lFwV!ZZ+Ai?R#TKw$VvL}3~TY>2W8(?DQDm0g$y0vo36 z!ZZ+AtFjBzKw!g_U6=-n!_zKI1I6KK7p8%9c-n<&ARV4~w~ORe9G-Sz8c2tyU6=;a z;b|A9fpmCc0a?-*ho@bb28zSeE=&XI@U+8epmBKGmTofvU=#^LZh8#0W;GY*F*otEP8jAI%|#5g?TmKeCrh&!JAWVm691c(RPMPjS2B$c1lvhNC$M?olS&Y-Y$f%6$NQiN| z7a5yjgcIX*FEUXOSG@O;spV|gevH$-$n^5RLqRIa>0V@?4D(n9Gme8%GTn>d9aLZ_ z-Uq@me1D8S%Z_6IO5j480!lY|SI}8@J&`YQ2mBP!O?-K0*)1&1>=4)rsJH-@C6L&X z3#`!R*oogkboLs=376U5(3S=z; z#{nv^fm;&Cm>9BEWQQ&r1>3T-5pw}pHZaWsAlD(V1)#cDf%jEVSO@&5PloP5y~d8d zk4Xv^{BYanMAzhXjop`deF!P<2AI6Au?I7+{{-Q4faH~lExAy_@pkN9n!&vG#e;Gm zfXVAWz^8eUysi!M+K%`(faG;40*e8X*UboA3Xr@qU5uAPUi-pO$?MO+vYly|*PRGF z48WjFvwI5qa9#@kp4{#r6Q^^sh+wJfNreI~UvSY_yfbP^*Ca5s>}| zBvw=Kq@kDE_RTclbWo=vdNLq;Jdgzl90*X=Z-DuIP-^rnJ-DXuQnkzxOg`RbHqZ!Z z$o+Vf>b80no_@#Mz1ip1ApJ1_Q{?0E25T686$qOF`D4)w__H|O))Q@e8q)XL5m22J zs21mA4+WHH1t>P=V%gt;@(@J)0)StBe!!udC~2~7Z-Jy*BE7Z;Q7$nH)7@M_9Oj>R zqyX5MLW{^hK-_aiq^e^qGlX2z1-&QV?^4GAlW*fWY=J0~?*Von=KDhk*$puH9$+^! z-+4T~XC;~CMZgaPh$TOQ znEvfSrC|WYph)rGS*21Ug?88y7K@Y$Q%R|msbU&Z^*L>P<%c%D8QS=Y)t5G&1+}LZ z%z4$Avjg}Y1#><{iiXgfk16$4t28ta)|;RHyOpS8FpAP(N5KSMETaIiEUAjAKJzS_ z&+jeiHuXrLJKjQ}@97LUq^9&UmQ5$-p3Wc}xw>?Qo!|>Q!xOOgaR7c5JVU`B%S}m( z*k##2hP3|Y1~C{SOv{fCvtq10mFBfq*o|JG4bNiHgMmF=h}eJWLa)MzmyIE)h20RV z@3%a0b3#KufbMt*!)8wj-fsU71CRl@E+285A-J@xk$o5)s6KFYAC{y5%rtv?r(u>KB#h$R60_S9cJ^;~Zi$!gAj ztG|CQeWcuhl>#aKlOX#9fRz3w1TLhqibCm2m9b^$8?DH@OvKW^0X$m)|8wcL)52{i zeFpZFKC%B&`VTih1h0@<>^<+W+0nASWq@c-X-N%By z(6aA9MM*)E>g)tHEND`qPk<5@wABXjgdq11GYv12`-?35BS@3n_W)NnK;5qq8@4?& zO3wbfdKpbsRu`RfjSUbFKIn0igl^y5k$_Y8g26 zGRyuLl4^Ol?L4k;qEOWQdPVpaq2tG*K) z#SjoYPU7bHZV!k(NqcOn{9y=zJs;2>HsX_Xo-r38{RTjo(Xg7W7b=n96m6f0Bw;l> zuYua7nxnfx39I=w$hrl9-=1oAnZtG3{xc-i64_JD#QsY)KMrxfHX_a7XC7O*a*qD5 zn~>LsdO*SWJ$Y@1dfjmv`fa!4u_S<~UYyIm0x5q1^yGFo5C^hDL`LJd2#NPm$OK)- z);|oy7C^U^INv!zw{Tj#0Qfx8I6DS$6h&SH!Uljma85LhW(V-w08*wG!HBR-qw83v zKSD{AcPdkN{SV7Dv8i*JJ`Y*X0`SY9nw5X$Y@?*ZwObDP*&9K97aY3*S#AaU9)W)m zxd=!W?X?@AQ;qCo>Z9;BE2OR^vZqFf{g)bPgs=t*#7}NV|5hW?37K{29wn-nby3CT zY+YfhX)PLT71HaDYrDa`)jXwDp__?Jg6MGoDbuVe)8)XI0;DLJ)^2AO@S%emq>$!G zYGewnFFcu%5}O4|*gQ8t#CZVxqzL%X#Ei94;px_<= zTx@XJK*9T+6hK5Ud1}TBXq0{-?DObvkVgI%Dc~1IQrN2y^jE-Ojsq{sIA^tk6ELK3 zN3#_Rww@!KoQc?%T+Pe52H^; z&lAHmm#a=J4CJ(+jT ze7BWBG`Y7h%Nx%I*op=yv#t&W)3YXUJlFe3gN%L&i z-_Y@iJYqqJzp34c+~rS*zYb(ASP1dIX?M~=Fo_Twm7G}cO~&DyoE*Oa^#ifffMnto=5;|>uX>Gev9X$#{WN_mvsNzc}e%*&r7=h<9W$=r}L8WhV}l&24uU*iEb(KV3;T67&gAZ4Kqox)N#*3JoRqLWMIx*o(v=hFC%3MiABkx~(`GZ%(MRk{lR5 z0pUGBmhK6jW6L#FW8V_B9EQDVd8>%WwY!f)1fcSdn4}MdWg5@$O82(B+wrvA{fmHV zGm153osj4;0%5*2AF24>?>3-n6I1oEQ_KkBCrCWdLDu$xoJ$q3o@Ye5X&FUL~9UpHh9hyzMsI_ zdF0~-Y)ZFT@de<^--;O3vj?Oe$ar3u8$HU3oq_lsi$Hi6v8wV7a1yhy1b`{46?qf! z)m)DwHF`U!5p3nG-Y=lI_kj|{R?eDb0VP33N{?b0yXrVluYz?~&_evG--m)_;Ly9M zV4@YN-U}?G*dJ3k&Wlwq2q=-SC>-a-L^ye3yl^@c#e$Xyza4^a4TP(nEP|C_v3Q|A zJ=KaWMkpu(mj8*2=SAWVwCv3YN%{WI23$4S4Z(oZ4WyD<+5&+B3~TmD)By5n{D<@!k5e_oGZ z+n)frZ2;3d{$P5C=?H(+(h<%;?5TimvSsp5x`dtc1`w_VNSprzLhHZE7rMo3x`f^0 zF+~3gU^>w2x}2801i}jd=>;@PSD@haYr5M#5F)*RRB&Pd0I(M@Y4?zkNb_NG8q>sl5_z!cYdUCA7t2f~?v$|KQ0sK;x{L(xXO4>% zMDzoI{3$?GB|F{2V8qTxFkYnn+sMcc_biy60jSC|fc=F$i^y}0wqF5H{>Px!lhW^} z2>lJ5Z;@M7vj4qL_H|_6sw3Zlz1L@;n7+p`=sU(=!T6u+qQS_Uls>68FAn6e^ewcx zPGb;JeS47VP^6O5|0mRb4UjP?H4)pj0IHIGAjbqxFu`NmzK{tx{?sA97a-5^$FzGg zIp<3pJYxC2HYY90-_f>EEu9Ju1D_%h-fk??vz z)xJP}fx!KM{A3__Z!6092qcQ$&P0xm^+l?D3rl_#$QI^E<~~9un->s-aW2KP9(O_7 z)08OnD0ivVHSUZ2oq+^VApQ8Q<6aRDVifcIQL)nh?e(6y19 z!yA3sahl~3=gk@p<%6X2yw#h1r$ru;-j-X#;1+o}dMC|@!I{w%TVV!zs2Oqr@jvz8 z{lew|)@<$|LrG9WzGCd-CYBX3=zSrKWb9Dk{EggdRMQSdY%Q}t4Y{^9kZaH!MqF>g zV%7}}w8W&oQBupuZ8O_4gfJvU7guSDYwD4Qh>OZ>b|7QHMJ<$VY~3W`K_dI&7Rpvl z(!)+JvpK$-6elSCB+bnW-ck)j083>Ce@P0J*k$AV;E1ga-e3&0ZcH( zBw!_)1XCn|YWkkFJpx6C|Wm&6bwraO>|80cZ93*XAU@KNrC zZ{>PdlTlm^oVB##Ji^t5z%}oA-*5T;c*n%oxQbE+7*` zVcRyC;=E&~;x>E3$mxdC$oP@;l{@chQ{tlwOF;Ih?ExjAgsI(hzyFclw1rq)%aUn*1`0>k;Xl&d>g|Ppx-?y z^%;^BIp5%l8kG0#Fl<*cc0=jMh=DYw1pgv0{%m3YUJ%@TE-qX!KG%4 z<4vd7c0pV(N3+HX;(IQQA16r4dm7T>;{_@6uB3nof>e0tlWn3P-MzmsW|AOzRk{SS zT^*n4;xw}I{!UG^5)3PEAye%WC$cVmEK}{9U=EZ{UqZgQf;k$mTGn_T2Akxorz$N$ z%1t`H#O>oijuhmg#rNUgY zaFvQbXeza2;qfZ|kc3@t10_BjXSepf>9p~ef)tf3TymI-?<|=BT`BM8JYpV^G!@=T zrg$UOU_TVwxyvGm9#-Hjj4M?pwx)#VY$(2Crz0W9MSNwb+4J8ZLEK%|2 zMRXGonE3}WvlR&J{G;e;^FE@U7fLoEO}qCLrM+0P1<3f4g-1fbOCn%`x0%KKs-&6b z9fSDzYY7fDv%J-8KW~;kkHXl`YodU^`+1!pN^zV zk&z2CnPJDy{2#`?1iXqOYrCqu@4el(yYHHWo0Sj(B#=N70)#~fJ3^2Mh=>Sb2L*`) z5Cs(!5fBv}RMe=TID#wg%jk$Z=*TecIOsUzIO6W8Gj8bo?^|_mgzuT}|NlHsb?QCm z)TvWTS9kTTszW-eneLz3C7`R!a^RGccd@!s;OA zyU-{i@=|Xw-I<0>)v?t4VxYx_eZ)b#r~XOa60Nf;^%tTRBPWg-S8XbnXqo2Kr9L7$ z8;ioh8<5(_9L_b=y>+JNpS`P`4n#*MCjRYIYN}WgE1|!ylhO$#1lDE-l z$6>fM#g9MErACz1Gb+`UU15_^aVAh>>L*HGX5?WboS2;2%ko@qeN}x;VL7x8fbm0r5NZpI=^kHgB^gj=yW?$&yjbvMt7z5 zl6Q?p52jX=cdbTGq^=;^s?l?)70mrQeZ%}g*nGS)YgI|P8Z&c+;XsT0%^BQI-7S?xWlHu5W)-=1mQd=krzH%-yOx~r190#21 z4VNud_$tAzhRYmv-X40nN|X|@2T+iRMM@EGRMj~_Xoq;j;)7S6vz+P3gA}+N zkyt(-ScCXBe6Qh5Ube14k`B!aaInGiF>qgif^XAZEY!aNyesAZp&xNE0F3^gf1sA zmu)3FX-NytOW4+%qSz1{vDgWUOK~^K4bEXnE6{)lvi0(`whcwp_8>IvrnY}E=M9~- zHc`w+u)Ltn5M6|Q>7*AZLk=R@8*PSMkTyh=@wqNrR8pQWR*o{as03Y=#Vty(ym=|< zJvbDVFPwuPDO&27wjx_@|qsvKg@BXnZ6>=zcDM zJhA&a{u|%@D*l^*4{UjC`kttb^o;Js&X^ydr*I(T-+{Tf_m0{n9Q;$e<3P45a0#TR zVS2h2(68-*qo#j2A$bnv^z<)qtQ+nN$k9{5%sF3IDW$(o3vpWVZ91Rn{Fj~&qVDl5 zNS=a!!3S{3INokyJcY`#E0XINPapPm9paXnYCeX7;e6x+WO8?gQ&UK~^#chfqW^@4 zcgT^bfSW+Dy;XKKfUSP-J1@5<;z(kt4XEy*+(8uN+m!7NS6hi~?k;dg^UlGZN)6 zUMPGT@lYWe+cVy>{{>)g>Hx;uxdFs+#Mew=9Ly!%Qol_b@8qfS2(th*^7{&Bq>-C09byOFoZlY>zCt9sjG6 z^fe!YuX&=zBz?`t;A{Q^yz{~AA_%XcDIem;V5eCBaJRi(${&By6$J_=v+^N}K>0G{Mo@SFxkRzLb=Og9;7OjRIOgm^6^R_>Nj^t;lFw0|mpnum*W!U1%zJcQSmS<4xZ$XLs9NZUSD~fBZ5*G$#j~;yP>Ohs z0$Fx3K~DuzHa*G5YZXX)l8^T?dm>Zh-p}c1Bf~AsqrVanHa*G5k5d4-qY>f*6|n7R z$*EVsLuUjStUx;Vp$cT#^dui2ra;Q>&fG^RkoF`WA8FpFb8m3AGxswoKURsPb04RG zWz&;wap(pwHvTVK>STc{E&e@sD{M^Ezc z6ft0en~BHk;kgBcw%%W;UtD$mhmK?q$l}U#*=*VOQKx;+_IDOBp)l4>Y3(=I6cY7I!W`dS|2>gFQvZ6 zn00q8C6e?cAFI*GN^T~CCwab>r1iCVl8>K;E*^s?`D$osR~mySdCnY?^dujHCwW~= zE-Q$^ll&Gua;)TFmJ6QbiR|PLED1cx6M0E`l8?>RuQIVDJ;}%5NuE!vM3SE5WAG%; z46>5+Bp*9lmK5QCD#Xi`p5=i3-6m7e5d+oahW zmOYx_Tm=I5y=eNxN(F*C8?I1M*_guomP%Hc z?<40T{YIA@7daIIIj4doa&AKn$((^Gw}G>4KuS(9xoX9n0a9{uaSP(@8Q+;o-fVvY zeR3x{T?nj@1+gX^Nyv5`U%(D3^4M6oVdp~jpC`6gE?5j1W9H7BpFq4eek$!Fd z;~lR;x<2ICubF@H!hpMnn6 zYI8Y&=g*s?fci1d-r=Y;ocLwg4$ZjQ4H8wng77=S z-^g~z39wU=3C@##S!rg8&I9O%o!MnUE@ht`H5xA)2wjS?f|_#X?h;;AH56b4IDeeJMu#~lYDJW+kn*|8!uS*Un_+cI{ zAs~YjTg{u9ADxqtYJLSOT^W}ROjAPNgMt&S%(C%miX%EgJJ#lQWqwS>U;5RzV7f(6 zd0vS8R%i0;M)pIw_$bVSE7>P8J!#K6nk9YCX7EG3%@qmQ*V|T4vt(!1(@juv4MO+x zA;aU5M30-8vReAGV;1Jss#2?E35BaT@_^NobEiVy5wb?+@s<$PtwjF{tH%;B8VuRd z33W|~iT+j02gv)#>1~9bh^z09wfA)g^LzENt6&U%IYPj4rYo4_-9pZ>cH(1nEoicJ zAC)O{-t9wc20^w5LT^dw_i7)Y)QP>{qalCMXngNMC%OFya7U`T3i7AnY7BQE>h7cn7#cZnxcsWf?yW|JS>nICFXTcgoau%weOxG|-Dq%m zlf~st|93}(J-D3@$8qMH7b26YZ%_ap&Z&CTKz7`%Xtmj@%GlY<`Ke|d%CZ8X+(zg4 zCn6srbfNH02#XZ%BzEOsDlIZ%Ebaybm3SH=QxFDGtUenWx^P@zN~4J>u`p{i7CEc2 zfm932*nb@xNC`HB!m&Z!tEAY93@h8lhYOI!c?kUL!hv8f#N>KrFjNNaWCk1zNDXXe z2ARQtln{Qq`E@WL#o>jz+6IGbpnOX@gStn-<&oR_p%)#|ymDy}4J)hBk@W~H>Yho9 z{PS3m8YRNvS9D_@U+XTA8Bu<<-QP{yPnLmssMa>y;|Kny?a8nHr|sF)i>~ym?RUZM zJ2I8S+J7Aq(k?{?qh(+(GvLTfsu=^dZDb}TkOHNx_DKoxqB6*g&d)&ko=gU;{r4du ztC+z!87M~?RS8H9G%|xs?UNE}W(Jv|m=uQ>+L=#&2E^a0X~g-6{+?j zc-SE|(!B?iF5^&p2>w@S`n?z=y;<1q5}|RsK)#(U8x?pNSdsa2R-hXdUIAvbl3FJe zZ%5q2fIcyo`u9Nm2?P;4fD-X14vxTaJj9madZMuc*YUECNc@;)|H?W?vG7AfY!!G< zASr*q)_f6L2O6v9hc+721yq?ac}p{MAkd~TV6yZg`3#tQHG_{8B*VW(^tVD5pgedx ztQ`iKuK15VBan2CSDX?S^D`9YeFVo;v^vrTB6U9mH$hrARk2OLQxRf~P(|afYqLcp z=7L7WtO3@;cw;%#WcNpM2CG{zJJa*6awq!;`UHd3*%pI5{1>-X;;K9K516R1Q>P%n zzcFY1+NsMqB!AG>gPZfARdnXl0R_c=-yXjJdMPRT-zhPhXe zSESJ>cLI6sHEM9zP)o5!jc#Z1I%qV}rCXm+iAIy%r-(XgG}XP1I!iTba_>VGhdNnm zBna&25xk52mfvaH90yBkZN&Wa-^V*jvM?(%a5_`)JrCb+25E3R1nYi-^2P z-F249o|-wn)_MRSYTcr)?Ct3jA!55>CY%>sjr0NY7ral$$3VTj&j_)Dx}78}$>U;FoiOoRST1kUXISEfM^4Evseangq@k#qtbLT6W_F?>vN5Yj z!`=#>D3W*3%tkY~w=Cl|bQMx%x8Pd_$mvu$Z-QGI#&@z$5XnPCq&}je!Df(((7N{b z$_h7xUo}3Zy@SmTEa-ZSd*>tM&0L0ahX$KHDe)EvuOQ@>|nPg3x{z zz!B&zUWmvx$o@MBkwpMsfPEODm_BJ91?M0*9nJ;7F{YRBU&m{3?TW%nJi7#T$F>^? zkpg;($)A9NAQbEbs6wPWLLtS9o&jYz&`^Y;{Qy%CnN09!fW?R`BKQbk9U>PZ6n_nH z7>ToJ+&2I_LH#X4{!G;Sg)jl14`4#va7tH#Qm`18--G`I0#;1j54e$r@`9!mGTR8` zOabT(PR>>72$Te&DF-k{p-Llh2XZX!1Y$u7m)D@~PY7LVjuI>D2~fTsit><9@}hd* z*U~Sz4%EX)@DGF{x`zB2k)IIom&2-y;c=C72O@=tbbSz!u84F~&;M?C`YlBq-Xe;@ z^p0YZ%tvE}ne#2$kex9{KuUE+-hpvcRYm1#WhhI5p>8|LHtViBV}a4_c9_vab;1JU zICjGBs`C{XW5}t(WVOhM@D8hfq$_lEHp1-LHA|>)j3Ikg&8)#2fsxt(YR@X=wFMii zpJdv_XRt>kD38C&e5U_dY8%*G+J>KH#jiH}ECiee`M++B&`~%L7@V0)dfaJ z6<;o71oM4p>RE-isi=|QK*K^m%KSn!@r!hR^=%+&&6iTydWM4z-K1HaC|Qh0c?_XemHK8GVW~HPunwWu6ePr>T-=A8Yg^7l zMcyM5O!hl)A414!f&@FC=+%l?1tRaZ$v&=SzlPjrl--e$?Oll!4M4Jycie3+P&w4V^)dncqiDvzAr6T8Y5ZQV9T!jdGSuQova3E&@Y62XO_c=b97b7`@!n2YUmtU#-diMUba$36i^*&l?FYl(0XfiAu&|F zMKw#MdIosNMBSjReXn3`&(mZ$waI9oCsnr%XSihsv~2(HPs1W*E{G{28PM)Y2%{)NnR)3<4!efZeNrZhy}La}h$>Mu4(wamlA- z4kSe#J0$vo61)aNS0NOVT14r`fF408VyXj(`~hJke-J228*&6@6x{~GkKp_pK@F+o zN?z2Ex>n|>A+=x<23rI*q*f!+0|7&19t7D_+PWwT^amV(!C;q2Zxp?AG1wiYef%?M z1O}%lbUb>#UA;hlx69+iVscxPD~g_LrT3hyj40knfucxU0dO6?#O z-dVZ;&_OD^vv6fp`tT*YZ`KoFge`uzbS;a1LE&xW0Fd?z3U4Ey0;peM;cbL*ia&?{ z>WCnC8=_OZm%ZH>%^BQRAG1s&{B~5gaZMs0Z0|0^eNj5g(PsWB znBKbkWI`_ih3gREz9bWDG0V>)dRZge52EedKWOAdCJY@f+*dS;MfhxW_iF?%tJL{N znOKJmQvR(yfDUM0sZU4k?w>R&^IxXqs~T1KXXEB@U(=|{FRcc8U87om0VUtisLo$b z^rl7w{D-OYEt%Mc{ObMxkoUGO5gcKm3fzMlHTYcg>AoWqk3+K2|CH(eEEBH-HTm>G z>K>8_?r&P^Cu#M&I^BxM(1|GDdm63sx6;nPXtdhzK`rlVTh{u^X!Tz;TJN{ues%vQ z6CXq8rsyQ<{6O=B5#`hh&YcoJfN2>~n<+okTI-GI#}xjDhQo|#gxrrb9A!kWVA{jl z*ajoIm==AkH8&d3m+-#hexkV(jp#!x^{1LU*@zxu1%0OBR3rK&Gx}V^CL`Ly;(Vdu zY$H0J@JkKn8_`^5^p%DSjp#6P|EXcK5iKM9TEnGAw3;@5BNGmu4l9i42kcJYYVKwu zdNWo1OT#TjbUxv~HQZ`MJ5tqm8nznI_gIAQHQZ)I)&9jFbOCo5(MMQ>A2oNUA!4uM zPGRSZ;}>mwt_-lJV?l@zH)M!X1TRHAK!W0^{el!XMesIqNKhPlP*I935#%{!0TN=o zzu2mZlg4aFg{Nvh%dK!keldfoBYwpJ@)YsZ3{i>z z{j;c)Tp*#c!56m*uV=u?4&i$tKi7D@0&(gR{`JVt>#dOmUXAejXk-KR6keT1o?nDU z^ZIHO^WQ*U@%m|$<&Q<9c>Og>`TV%y4G6?p6$O4bN*eqs8MiD)4Wl&PI)j{ROzAyc2c0QvY`5K3?<6{2i2> zpizbIL$fzgqbk2Yc_(R9>yM(ANgCDp{B_PdS)&0yei+25cN*3EN60%xqhV^G@TLS* zdyeu~)9O=oeKq)hXS%5xHTwM2?wzL5ME`U0rfD?U=ZNA>*IK6f6It3O&1>?Xr{oNc zX8T;_@6FU`zR%Ibo2ARX(C0S}Z?@(&M}}gm7gL?5Qrt2M&3^eiS^qoF0E#kB204Q&}+N$y1&dNO)7xob6y z$!K4yx>&<38U32}t8CV9Zy6>xUr z7Kq@H=-sLNg@_CTxJv^LFT%T913Pj&Yx^FJJbw+xp?fuo`R8C%_jYTPst4`@^zIk^!!AJnKcGJ!cfq*0mwcWQZ9qY8f|$Dv0ws`96k_ozm- zeiBa{?=g+){8>bgYc#Kn4e3_p44bmWE?X8y#@__5e1*psL{Wd zXpcq{{gG7pv__NtyNI6AXsYkg%x5)f@~0C$r_pTxk3`RFG~b`aig-bzh5iRbFKX26 zSJ1G%8ZGsI%L47wXocU7w!Ea#Dt`&l%NnirOKHm=G+OI#B6>xm_5Sxn`!(9+_ogj> z)M&GR8PNfaw)nZUD_{EfbL!+Jk8$@qvbeHe5 zL~m)d+aF8xwnh*7Zx9{S=uy8bA6xHe^n~AuW&g8Ad;A-i-yw~j^A9oIyBh8F`!n5p z8vOxIomt$!1k69-d6e|L$3xDSe)`GuL`XkNBkXQZYGA33|9cH=EcIi)PlZgnJI+#G z-F+O&$q7h=Ufq2h%E{*vQ6J&sP);HXs80Ael#|E?>MML4%1Pu!=+4i_p`1i9pladc zP)?#Opc>)hP)?#0P)~t@R-po*TH)hRPV$O@dI=wgauSsS!4@3KNmK>|TW}~RQ3Vie z!J(W)RY0%>hjJ3tM(EYu$Dy1=bwIEMhjJ1Ph`^nnk3%^L>LYOH=i^XLf?<&*$ZVSi zqatwU=i^XLavCCV=jY>4PJ+e=-1+%9l#^g$gkIh8*i~pU5OTtyoa9Z7z@49uLpceW zM3(aE?&DBSx>CW#nN^ik@4DS5KP=beY!kwRr^H5H>^LvJL9?A)Kew0UUoPnkfJ_&veQnD%X zZ|Ss;s}58xBHzhe^){y7zarmjWcdkn&&UrN+5SrOz{rmpVVZ?~uRm!JiwqwLbVQ>p zzdia|5tN3_W2YJOLRh^U_G;grOoLH7bh?9uJ*{Mir6q z7`h{-MpbH77qN_7zKYiRGnhj_^M*x+Q8KB~DF0uyB}=0Q4vCR$4I2H0OqQe3M1Nlo zpms(sUt}kX#8}#yYnZ>Fw!+p6s6|8XmkV2L-gXwY@61B|+5EvIIyLtYi1^5YRMFEE zFwkJpQ@k~hNu4aBQ*xOsHA+OMg}A&@sMPJsq9;0u1X6woW1#Q>OLU?Fmh%l7 zA$pPmw(~qQn52MbACG5S6z)6GxG{Si!DI!poCr!CogPq`I{|8IQk()OmkMSmQ0#;V zW-3rBERSfGxenG@Q!o_8UexpRyP+)h2OYm2GO>fHAut)c2yxB*6o!W^&QIdQgBOF6 zR{?pE{|GeTr?lPqb6~&0$Vk|M3frB3d^LWA=;!PfxvQZrBcXqLIJ}W z*8$)h1xyFa357gY0n7Qk7+|FW0qnJdnp)^pvlpqZa4OB53MSH!^*Q8fLkhdl+Jq5d zCGc+;f^2;W0!4jM1h9@{*+x$S3!#0>xulJ!xID2KANJcB34(LMT#nE|eQ!+}5q25l z%7rKzHlb$;u?H$U;%Ad97YdlJX`-+aEg*lC!5Vfe{EbJDt(4c<|0rvieJeC?Md-xr zf0QGcijl=upU8_{fn)zU*h&ek zG7-8Rz{ec^!5-Xaj3C+nLVf4I$@0#72H91V@mns|5(hVxQ+*DX`|Bc zR#JJ%P|-#wv*mCcE6fl@%HsE7anZ@;id@na-Sj%-bu~h#W;DQ3*_T7g?|~mj=zP)` z2rieg-XQ)JgufsZH_t#dpDop``#lKXBH-9Z-g!+jTm(`6p+lpB8rx;EYmyzAU6)hP zM-a5?nOgNM5N04~)mWg+VP!Q4%Sl|qpU7v+2sIxB;bjC-b~EpcZn|g#R9**=7w;jg z?PU6aQ?Lveq4N9ALi`52?l@7pk5nI`DK9GVYlPSZMh`FsYlbb(C zn*w>^w;m8P1W~r1z1Wq(X4E(sC~N-|Zy*x8j)JLckoS2A)vF+Zjx4Id@35S|F-kSK z8&@u^S`Xd@phK^$>WH6TuUy&@YqQX7r7OUqN>TW47S)v5)H)SZ+-As*$vQw=ATtmw zt(p(!>;F|-%^SSuKMH0+Vw6h0A96hx%*Il(kJK0T+hFR=2tA?lqZ)Ew2ii{xj<5LW zI9927D%KZ+f;)n{)N2OPu(yI=;pbs}KXlB^D1A#Q?TQ4Y2vqu31qYQ=fF_UvrEm42 z()B=V5k&2^98sPKe~UQ(N;!nIo|uQ9Gw&hinFv2w-wDxO2)!<5iJn!o7lEHe=)H82 zkk2KbK|L8)HubuJsrIU|^Cxh>MCe0x{4-XgSI8Fv1A*&K$K~#+(2YW zJ;{TH@czF_)xe;W*jT?&@p|SyD2vQn)bmCR9@LKN?$U@O9_nz&nRw#M3)OQ%GWUV! z02ZnCslA`P<}h>QANmU#>stsZ6HkQwqGkabU`~*H-9HB8<9Etkidw>y_oBdeA`DY! zq0Uo{c@X$5groG#qUqI2&qkHcMbI;R=>inAx|(s>IO0@ltseLS`6mwjl-5;`Q)n7i zfkPh(#TW3JOL^lKC}mI!qxpo;$_lEER#u?;Jd}OH>iLYG2;|jxCGBbGY?g8{A$!HD80@HWi);07*k|)BfywG78;+m6yug%#?)I+ zSOl4{p&qIj5>9w5ohmXUg|tt266P~BoR14b!VZfopwSZF^~O~%P%NmyiynyIV~FG5 zFBc)}qYh&+{@)7}vGD3Md`hzP*(;VlZ{_GkiRQT6RZ#su7A5`}&1zL;HG>miV+DCh zFXBos*$P>t*;%sIIf95Y21_t{$FD&Yrw}6EN5w5?d;>t80=9$skL;`BUU&<8Za)QL zH~w1{%FXLbfIBf}^K$&9AQM&obR_k8V zmGKeKQIDW?ujxzO%Ym0sP4dois&13nEAqCmex@U$prn^sx)X(=IJCzhm=J7`PFa%+J;f7-tv8&(`eRfyZ$P zzJN<8V4TW-HF6E^Tzgtyw3&Sc%G6?StHtkx_9K1ZUDw{!5AA7R(@Thz_PL0!vIm2E zzFmy?1CoPDq)=@f&W#m;V6)xqfpN{Q1A z`a3#DKreMhB5fyU9OOGYsR3LX^b2IloYz1pcM6eLH)kOl}P35`CRq$oF$Tferng zkI+E}IFph4an5(34|E>Kb&%5osp_4tp?|RR17wCdMMyi`DMv0NoG8+cbozlZ%IOcv z@s0%zqn%HY%NS=8xDC!c(8oGAA?*oH73kxforpI&;~;sWQ;O?&rycZ9a9nUFI#tki zlJgntpX4+{!^zI~piFi?fjy@5JMp)#(lHRHql{r#Y2~PjiMq+jM6cv^6<{ zah>5@44pHbhoNnjGZxp`js^KS&UK*Ab)JN_d5#bL^PLpp3!KML-qW26p#Kc#Vc5CQ zp>z91&L(I()43RF7dt~B)9e_apXHp39G5sBAZ?4&36!NyHZ(7Do`ufkj*lGAcIf$e zg|ilvbDUGaJ=ggMBv(53K-(&(72NZj%c0?X=Md-@IHM3>?aYJbHO@@rd!e%cdMl}AC#+w6~MpH0rLQExv&+nZj;W*_$|c!2x+a`WnvzH zaQR!mwNoY*0u{S&!!m1^=B;*P$kDn(^R{`nL$`HjI-Op#ZQYelC_NwfTX&~Z>Q&hm zmgiCJHt8kEy*HiKP)n)tjWDr_nHv7_jl#N5Ce*=4rpKS)tovnRJD6XY9+wJO56A?^ zAUu5{{7=)Pc=U^q2(V0%#}TJ8MQo?>rVQ>QBD=t+dd2@z1jti~?ngwOe|3?8hXY#H zdQe)I!GiEzhJ}?OH`}Nqt_-oTGUR1w5iVDTSXdcCLoAmoLoBQeA+lYr46**8k(c1g z5DP0q$crVoGQ`5l5F)tZqE4&~xfdCvT&@hUurh?aQkN@3EUXM6Ds#Cq#KOuDq6(KQ zLoBQeA*ymq@qn_hGK8qs<;oBXD?^CtT&@hUurh>bfXkI37FLGrLw@xxSB6+v8Nw2c za=9`Di=Y&0a9JG|R)%~4$wrqeL-0UI{0!8jdka>E7!K|bmn%aotPG)+6$!2kv9L0P zXqC&AAr@AK5UqB(GQ@gc+p^Z>$`A`HLulE0mn%aotPDv&=O*3USQ$c|NcR-13@HKA zGCZyfv9L0PTI&suD?==-3?Uq5cw8A`VPy#6C_{H7tPG*C4Ti^+AvoV%X>K$;{(g(| z+!c4C;c;aM93?95WW(di5bHAyry3qthFDk`LaUk#k1IngtPCNXZFpQ6Vqs+n;e5m6 z$`A`HLkJfd9#@87U6X>%hR2m57FLFkyVUTwGQ`5lkQx}d!tl5<#KOuDayJ_uSB6+v z8A7!pacBt%k>yAr@AK5Vjf~SB6+v8A7fGGsqFBq+}J84gy4943bZb%U{0 zRhl$rLn=H~^I2|%aclD~9+JTU5w}O;chc{MtbOGqoEL9XNsLBJH zu94*y5jAOKyVn!V(8zP^iDqgPbD!tPH%p@|cRF>>)+pt+kT=ItJ*mJQN8Vh`D|V+- z%RG%r-4&FauTh!4KNeW3&MRDc*tAa9yefAN)19GFt$QJP3pJ`!yJM_HI^6&_m%KAI zuiia_=@x4=%-uv@vqqy_F4eHk(&-x9_T(+myhisdrfbn?qI(T_OErRXRi;~JC0LzP z{f5D~bC+x0?x^2@sfKm7F8qU0-7N1wP>qx5Rq;C3#|q0Fhqg)&8p(2hNA$f$wtFhk4;tY#cisX&22^FoTy;5KZyPu zFh7Dh$(S`G=d6H9su^E3@Sh=DatqnI0n zRpxY!vJyC@&ur2l<>sRt<_wJr5-rGTmIlR%7GyPBgVIC`^v%(rEYX6j=4w!pXu&yz z^E9YRwDc0@d<|+7c(XDWXi%4E=_Ab3H5ia+sT1ZI8q_CR`U-QQ2E&jkOjxARC?MEy zrbZ1wFk-PrjXmmq}7e$>R{o9~9uLPWTk?_w5BKKcNy_9miD7hsv@CxMeO~`!>nXf2U zunO!tP(qBdD@`0}%wh0pu1e|q_G8?o} zT`2ddVT!`5k=z1VuBJ|WoXtf}`L}{P2FZ>`=txf9Zcyd`O-Cqw5&+Mn+=cjG!^FI( zI(Mac0u@{W&Sr>Sj*x#Yz;6-Rfgsv5QEwW;i%R56Qzdv3{NEv{1g|0TCj`{Sb$I=i zD}#qnz+zz8%8KaJjNirOdEVooe9l35#@A(W6}vuIgesjPM^z%L0CC`?)oBT1=itEj>(4UX7dgIaHuCI>fJ8q zOYPy%5SCbUT}9UM5aeys?LQocj}P@DuVN*K#xWsPH5CW>>ffM&sC*v7r16WwcZ9Qoq!xs6D6)WONvQ4ABf_<$ep z{&&AQ*iqa>x&P)j=U87kCalc3iV0kVcxIdNMAEn565NJM=q|&+gkd9cwK-uhFk!e2 zbYXMCU|_;PDa+0x!i0gywmD%iFkv9_98MSvOc;n_4kru-CJaPbHYW@QCJfgjgOtq) zgMkSHd8IZd3~+&NsrGFc_FH5H2*roG=)eFc3ByVNMtfOc)548evWt z3``gbVeASc%n5^m2?M#CjW8z+1||%ITZ}L#3 zjNXkQL-x*NTtxqZK}hydz>50h)G1&`50TSX0Z+s%+G2iBT0gTNk_OMmCElJX2FJ;a zUry%WPAdMfir1=mA0;!4ad#sU{ShHuqTo}ACmx~jX+@+bTN(d2IJp}hKS&^3vv!m6 ze6Ro%#6TGnz-P-PGw|GcF^}<_3@e*!4PJ_}VC@ilS;fZUDKZ=(H4qAZz(Xb%C*7c4 zP$U|Y_X^ejE|~f?!>38v5Zs0b>k5_OZAg{>XIw}!$}rN(O=c9h;KMZ0st3_{)D9GW z3CeFFCV7E=VLS#ZIoX&q8TpV<+1fDSbTpQnLM@P!7VWF*l; zNL4ZwwW)qfD{1>Jt>d@ZLVSV%jqjH7Avhi4>4#v;K>ZM`!wt;8_~p=){te-%y>sw5 z&9FeqZ~X7uwZQu&d?N~fR$P8w*yH1x&S`| z6A=&YCV?B|?9!|=8RxGHc2(AT#6z!;@V7jC-tSV#xXsIt2o4Q5HRez43fnk>3*@{E zj*1X@;VK!%#)+rVATA!6VQieB7*}QGv&e6JczeASzbJScI{0g6T>NSvI*%JC!q_-LG{ED=i7+-! z5Y>C!I1$Fi38G=@AdE0JPB8aT9yd;ev2lXD29LkIg|TshsL|ubi7+-!5KZ*BaUzV3 z6GW5Mr`a$zPEgBKZz4;JjT7WGdE7V=#>NSv*&a7egt2jgXukT`7RJU2rd#N7<3t!6 zC&+7dxp5+ljT1ym)rYq*Hcn7-g~yE(VQicrZDPAX@El<3t!6Cy3U1+&B@& z#tEYJ9yd;ev2lWElXsX}uyKNDv!{-8!Nv)qEgm;cgt2jgXsgGK6JczeAZm5FaUzV3 z6GYq87qc)nPSCO)-dVVYv2lXDo!(DG*f_z?d6&zL6JczeAn$-TgLY!$1kvjrH%^4H zaf0Y=>;nSA#tEWB9yd;ev2lXveUBR_!q_-L^mmUNC&Jh`L3G&L%MxMZ1kq<+JteVm zg6J!+l3K8Fg6Lb18z;ipI6}nU?g6X&W|9 z5aQSsZkz~X;{+j&UE#)wFg8vQ#w34R5n*hcAk30JH%^4Hae^=#y>744(&&33ns?YL6ZhJa|lC?(02zOz_|_frZ@Y4flcIF@fk(j~){| zcuZi4Ho5ee;K5_UlhCr+qsIgf9uuAg+Tzh;f(MTYZ1t@o@-?7~L+Ys}9+FM?=fYzG z^(4YDR3wzggapsdfQK+-V=p?+jyG}IW0Nl2soZ+qLc*hi1s4t$K1SiXE*vaWLNZA42pufAaInw<5Vd$hOV(Ok zvUvgF2+~F9V8Mlhg=>|}jg+}NBa_WeiQPc3+l7OL$Cbz)iX3PYVaY^<4i;QESa?^7 ze1L1tzo4Bbvgq6*bgQ>a4U!j1NqJss$QUN=459-hFu7H=Kg9X1zfmn(T7W^6ovQotaJrzi$=wQLG zRiFSr_)tSHvmBWs_kK>UgABJYkN!$Tr08J5KTZMUjz;hYDqyFcC8u5iFC|g4{$K^t zxerw!D@6wj{xAhnsqV~ugaXLjWHCpYx9i*+93F&_I+OBal}I}GaSB)|I#}=<6-ehk zUI8z~Pk#Oc1=6{nq(HjtlN3njezF3{ovxt#$z~^HsvIo%r#X+K52d)y&!48GM5>x# zx&l^e4?3OSq=22Gg9U$v0v;A$1I$z)mP(N`OM$G^L8h6lKq^HC3;rAh3Q}~i;LlT_ zICU{{_7^BnnxcaR|8xb)QgpE3FI1o+MF$K1nF>^;=wQKLtUzsw4i@}o1?uwXV8K62 z0r-(*IhSO=grxQPT&?A|D2|Z%bgt4i^0L6pC5-zhT8(piq{TPX`PB8ii6;et?C!DEnLd zE3oqEV8LIjc=c939W40kvK{;zW);A}f`3UW0w4nUKT>dgc6XvsJ{>Ih8&oo3=hMN0 zzfmE}&ZmO~|5Al)JO5dB>rD!Ic0L^}_?IaZv-97iK=+`P#X6Mtvf`6St6?Q%yEciDlRAuM)U>RB!s;gDg@NdoT$!c*5 z76a_a8A{;h)4_s&o31fGpAHuM-zxngl1~Q<{?6=KkhCKCbg%D#Z!tfLW6LQ9pW~} zAsVlU5aP(d2VMqqWTeRopD#k>DZ^;F7Aoun88}!7%?HUkkKN=B^H%7=b~rd#cpg-5 z8ZU6L@Crn+tsKpV_c4VmZx0b1ERY9ZpmeYRKQiWKBndKcGUma-LLSLuaWNistg@)Zf<~@q<-ozh*#N;j$e|M8U|}&+(7}QS2Mc^a3y%&K zFo)>ChpgqjL^I)Fflp@JdyARF!2)02P^omV;BAv;1(F1*Dr&95)xH)N2Gu=mP`i+N z3$*h+PfQ zfozJ=u7KG!gS`Bk72MR8^sBa{f3rFs zmGo~`HIo`Mu})VdeGbhp->`y9+md!ex7WG8aZIjn=v=!XX-5RnaWQkE7WU<;tZyNyK0*IRo$E3PE<#WxzES7>5b(VST^8`C zrJJmF?9d;B@K=PgN4w$&of}!NcUqBGXyGh;mqI}7CuX?B3KmoedzH%YWOP}b;Sz1@ zNsv4dL1nl^TYN6?as;im#qy~3Mi6cwk+;6Y&;BGn3c_xLE{kc}QY*!~D{nSlCJ{u( zH(1Scte}njkue%~JO1fvo@13B)k1Tu8n)1JNY)pjt2*9pjx~sPq#Q50UCFt@Xe-L; z!e>1)8$y0+E6r%DirQu(?KA{cn$gxk>bwN_B7`nUP6W~IJl0XQ)_kB% z^GUE=*Hg7sP0de3_(=q%x!M{;&Hn)Y8-mtcqcuBo@XSXL9eM7xEU=wH8CL0HLD1L#i+Wa^mTZg0Fbp35L+cWKW z2sR*e!QQ9qOs^B9)&ZW6pp{;)l|BW+lL)Fcb6|_)MYZN#rg=7uRIT|sL|#P@70Xb* z63X$SZjjxk`2pm5T?kGkFCRnjBZTV90e(T`2tseKBWj%qc?r_$hs?@65R>yTyGE$3 z1>;=QDQZj(fq-hLW+vIghI-b_>VjgbhAM}A7X;N%gAh3mp^Rdxp(X>3M}X45qmI~6 zY=)(5Bw3}~Xc@R2*Rm#?O`0S0cmAi^YO>iZVoh#8GG#9JS2mubU~4Aq7&AcNnx<$M@U z;?awZ`S=(NV#Pm@>-R`3c|jawjTyKJI(mHrRLM&{WCtQt{|DeCL?$5gVMAD`6}gkO zdWCrg(x`?w9o+c{wKlk!hQRM2s_7z3!Ha6T-{_`W4e9flBI~FWLtsnYJ22`uC~s{k zIO)3|Hwg;vqgLb}j9@(^hSBWSZ(%?UHh|hUBf$p%>58nKmZqh#==cPm;Ex${6dq)# zKcuZlA#EezY(z>BAgkXHMBm9E-vyPT<4Qhjb{Vp^Egi*c2BgzX$)w|ZhUhyildj+A z96quPzoACh|1g-}KMOLAlx3*l`xX>`3xe(**}9Pe3-FsAh+Wi~ojHaYsfL2sAE8Uj z5**~7W2lj8H3+K^DyaAnvXQ);z_Lv;0^B-R`5$n$LF6WcYOfGK-XQV-K?>kQL_R?1 zU(i$7x}rD|oed3DUlik(16jV`4f>`Ufe{#KDvyAA1S!5pC?luZ!Pr)CI-Y_E)j0q? z5$QqD5#S_5PDH4x0+dDGla2|o!Lrgaq z;8jFkA{YzcFTxZMq2?x}O^c}61{&`uKR=^G)ch8-*C5y7SK4u}f>!-2u33(z zI~AsnZlkHuP}E$QX3RQ!>AE8*QXg*AH(PgJJO7Mj$zb_n)}m?7ms1| z5;eb1Gu}Uj(OcBKlxF;J45N>zc{9yO;J#?9Ls=(k4ucVFkN2Zv7*(R?+caa?F$@$C z(2tQ6}0h{jGQh-oksLmFDR8i|w*2Q$@Rb`+AG1-w=Tqxu|>AcK52c)UyX66aETmu@@l+ae@c`Ndqou)WgAt2}r zM&(IeE-x1I#L_mECw4lE>P((BWOG{eA+lnR&b&;D;hc7*y8(vy7hw7^e9`amfv|G9 z^q+v>X5@gmXmO^gmdkQB)db`-5J2;&YR8v_PaAa9G7_mWy42Y_xBGs${wXLa03Dkko)>Nc~ z>OpC1DpDL?j%lj7$Z9r%`cq96fry;UJTH}@<;;^!MXI@)d1ji5l+aG*nQ1CgoW0C5 z(^RCmyd2Y1=OMq9nLKOA=Hz)ZvSL%HS4zIv^dAAvF%-P*f|MTV)o?CG{CpfN9VLDK zvLU~K4t-0Gl4@!-lK1f_*_SOeYB0WQG)Of)#?AjG6Bgn==95t;D%6Pvt9Ohd-CBcZ zorzB%MN++6s9~W<=Dfn{8gwylY7-hRp@!WW)qMa%Myi>sCA)Lxik^bg11fqV$;d@B za1uaJgTXitA(YMpa|$d1p@=wsBs<{8zT5+?qm|Z=`%~!{rSy|N{6aSdIzR0}`3CNA zJ^)c+--!!j>XT5O2vWh=zfjwo%6gfFXWVEt%)P0GoYCs!k2m{J&k6KED&JCriPBjL zVXc!frPCKdsyKcTi@ML3L)-N2>&*K?96yt}J?cx&X>?AHsyk-%!%XsM9V_kxHJ(1E zhtuObka3SM`TW%>?olbU)V*42+{@H^y+0KTVkSX_Y~{OpqbkbvYIb`y`qPyNB}(}X zDw&*kBI>nOP1T+N?_mUSd<`>P=S#k{>kQW^4LZY1(xd#x=pDutMwZFZt9~1vm_SwU zL4g>5J}yQRc;i1r-5Vz{*5-U|e4Fz%xS+zVz-6`LxvbXWvfA-nR%<=R*f40Zwj(x( zD_xcIHTLZKZ$PK>HPy!^aO`;yrCtH5Y~^cF<%=MFilTgkQ29DQq8VTK5GKA4uo~lk z^B8x)XTwMk5IV{;E#yxL+G^y0DlwMx)n&LlC*O6 zQaKf*Um)`%LiK!r4rk$w6QPom^xlZnBJ@&#_1h20B`+LvR2= z1a}F*BcL+4XBoDb11l_X6>>~3aC#k@Lk0|}M8Mw<+tHlq?fd_)z0&_5PP5cPCPQ!E zKX!k#TDp{RptTV>tK~{&dO!aSAgEpCA-$h+rNoVx*-v>XfKUrwxu0?~P_doaPf6Zt zJF}mXylqZqKcz}1odxKz+)t?zN++|QQl*rR+OTtv=5CWtWHxu5biWT2Nvb3Y|{dU-VWQxfUr(cDi-q?bo? zKP8b~9?kufM0$BN_frz-<;R;fM_X7P-5E$PkLG?#rdtus?58Bs%cHrUl4!MB9?kufv_&tE=6*^dy*!%x zDSJcbCf(dv9!;J|_Y^FT9s#ChIGO#F)LL&inf;W6!wiSZqq(1waFn4t5|&5P*apMN z?5CvWM#IVMrzCfx;XG79!~-O#8;q^0(xfpPQeiBQ=3UEjD~wy4 zcy0z`jZbDjzzCMMPta62D^5utpQtPvQ_`6pd?4V$?ORVH0AEF$pRr#<+$Ub%`-q*O-m#8uNdi zs;=s)dk4@Y|9AI&-1KHUKH4oxe%sXx# zabE*`4?->NqAUyN&qpz)q`=K0LpDWTVZ6g7^A-?!Tc#sTDGnb+Ha`W6rx8RQFF)Sw z%)@YDVWdD<52D#pRIf+XJX=chXORCli--r|#Yu~u2jf>A%JIi;NPr7XOBb^t+-=E) zhM%7ZpBw^vL!?1a#*;~>w$oxXGd>43do3#P8_>3BS>xrB zQSdw>pWmH`j%vD5@jj7}`T#~I4IY0$;q0BHYsF8lvGxOqvfm(r-;9f;ei$M@MV>t6_o9~zhm879;KN(^Q*l99%?dw>pNb2cm`0HcQ6xRTX*i(p68@wQ z3Aqzdex)J3cqr2%!u^m)A1Z+~4ijKmpPyH#{8-IX$jYVvMgCH_KuspU12dy){wSJN z;jfUMRdqzzfy$yEgQ)7LrdJV(=%hS=m^lNejUCVT=h{2wC6Yc z-8xbAaS3!pIZUpqPc%`o&gkP=0GAHslE!`tm2cuc_O@$suplv;79Re2+9y$y0J@BoTcK>2u zE{MaBdk8`eDHev9ocgI!-6`-K^DnjY05D(Z`)%M@|4%VC{VcGl1u4J&hcPCz8<^l^ z&#(V!j0xdE5*hdf8eRtGOjL6Q0{`k)#w00pg7B94e*NYcljfUcsii4@2ov?+iP3pN z!3Cb*sJWvnz?}hJ09nH)!Tr*>26o>E(b}dSG#>AYWjOrZv-SH9FPN?x=1*i-4WQhO z2t#{7(*~}pn_5*jJ%gMdNX|`{k>8UksSfU)rM(2FafoHtKbh(zzbR+KafUE#HSR&5 zOdY}-gAW2;MjUj=Q>l@hPmch62%+k*2yCB9bshn_-9S8#(2RS;r&Br7g&Sad12vqA z?PI8H#MRSK3JE3Wb16BTM}q8dgb_;)z{q0-H-F^pQ-$|Js^SGO!M&_F1EG$+{}agW ztp%C)aw_7+S2+U2`s;v|Bfx|l0itt+%m@%u;1A?UM&MF#zZgOO)$Bs{5792nDcsoC z!khasWXRfaFbuxbjwW~+Ke$xaPOM+lwKE}WCpt%nwaeK>OraAPGxj&4*6Vf6a_)|0 z6`Mfg<^13!R>8STtbZ@CX6_ObJV@@CyK;6BljVU)4NO z(*@k-Cc^x}TP;5S_E9vqp6lp-^h6-fb^0k*4CNpu+ldY^au5@(0LH8#V)Ew!W7g24 zsDFoUWy`%_&$%#)mk+$Cz)9G2CA6J4kjiqv*MUJdVs8s&Rr7NoHHq`{7vS=9gkku^ z*+A+*YE|zXJY@k&&Bd*$(VUB8fow%k6X^@ESU`Cg5Qiejer6^9)l*Uaiz$Bzw3}=n zvB3?%n)VTs-3p9pA2HE3U`+c?0MnHS{FC!!6G*(r$o$S!_A6vgJwdF$lgz0nn2_^? z=o}$4ONlA)$C;()poX*KT2wXLK;rFTH4j3Ups!>##QLx6YM7AK5S=4rsv)Mp9}GY; zB|nWSuF%ztyd2qF3{#boRSN=ctUgi0lCkau8dtn+-H>E`DzgL`V}bCt++@aYeQGMl z?@M4jfKVm1`TEp6YKfl$@g#!O5_h3U>lxr+RJxonM9T?NBeLXLId%amSe>HiqE1#u zG1X*Qt&~~zTwI3`RAsAE2eGmaAlea<3q?0Oa81fzhVsdUVhKCYxlr`5@0<(83Si76 zI0{UcA@EO50w%n5WPVD@zmLrI#lk<2%sB~|kfTH593eA0#1#1BjLs>jVNG01+2s#Q z7(>&GN1gxLjcOOD<>b}ma7~q3enDzBN1;us?S-i+Tq?5HTR}2rtkk-Pr}A7ZP{drQ z%#i)wB(mhwbV4^ck5ZgTrTYE^8Y{AjQK?z1Vk2ZcA3?3k*3@KH^+g~C5Y(z1tyblu zKq;25NXcu0;(Ap$#mmuld={d>e+5y-V4kVbd&TRbC@a9Y2Vwm7Zsh-)*G39V ztemv=E0M|4qoc3v}K#w&7XNpYRi4HctFL ze%mR+7aiGC(Ys(+Il3Ce_j(zeiWlP66E$24!)d&nVfT6+tikK4qKOQunKY8ViOL>8 z=%D3tuXhAn==G_k|5a~T2bkaAijanyk2-~J!!f965vk} zWb0>x|ACw&LId=9ky{2U_YJk z&iA74fK;wNV*Mhpa`iDGS0B+iLT2?5Q{aztO1ooml@~U}f!0$l8g{5n}DqawDd&6BuK;tw*ivbj?zCoy#iP*}wrW zxTOlbXfYA%_ppKbVnR%?f^E~58!=h_IF{QcaKAjRVI&3kcPt9NJESeQ%YajsTMs^1 zPs{D&Xs)!}I8nHf2mAUj$SR!(k zaz@BmikH;JBi-}>2GpDGN&D?#uz{N!vy>96SvuY8;4FO*yzWC#({H-h&C9}bK>P$j z&7B#ZG}b)a!v8mrvTMoF?__gkdGc%x*(73vS$30%$#&aKA|_e_jA>E_7*9appPZOa zfy7%&=JUMlN=PiH2C+W2ovEq8gq#{g=LngJNlbx1&cr+zH7tm0QPunoB;F=gv&{3q zqpKm-zgkzrgsg_>93fK;F$MlO=D-I~#j(1Ykv~E<=RaQ|Q$ zB&qPi8<5e4uJE=@!?i&TR)sf%gLO6-e+0o?kXj!CF*vBln3I-}#k-aT#=0lZk=O&s z;EO0cfM71|soj%M1P>tp33ZuEdwLJBW?DiPk$D{$GcAb;`HdknhL3{j4g~%swpNjy zoAUe?h>={{8+GS0Av>3)a)eCh5`!xkYGBYe=KqQsejeANF70s-s`gL$OgHL#LCw~) zQD>)Y`U|t!^iFAF{X*Ut%l^9*1Y@R33+vx(1B-aMk{U&pOs0L5Tpy7O3Btto)jz?^ zQa$^K9GX8stp7lmEUWp}Brc<&Sp5wM2gpjcOSujLd>}%Xc8mB|qaVF*`+RZH3_x%L zkj?;Pw*un~K(q}QGXQ%Gm9`cTOf|NWp2IhtZO?t78irZg$R@7O~$0b{1;!E|ykRCrFe{{9z-;#a$F5bpakif{U2+ zGUl51;Y=e)Q7I(;ksG^;q^?G=F`#{w4P2zWhWubqV=@&aAiEH{#qt&rz??p83|xYEYqgb z%pC4&yk**Qnkg-(Wo3rbbQ(^SBxq;X_A0ySVQ_m0LE25s&2}Q!*iBC&>&MKd-Nfu@ z39^md^a`?GLg3%*P3W1_jeec~5*j&Y!&&PH9Vh{=1ptfXEln={D#?A4Zw7fSSS#|) z{@jFovwx^0KkzfK1XCORdO|)Mp@=v7-6WQGQK?V(2XXO<*(Z_fYH;OpP=u@f`6Lu` zUm>Hz@yvbhLFlp6e57VS40`|5UY*aCBIyCmk@T~9dSvi-$h!@Ba*E!Egu3)HB^5?q zWSKpe_u#>YKs=WoK+~Q=EDm}VCDT8y^9zl5 z?2cYb|9G-=YR~67<6NHxDsRgVklk=FP=7*){})2TQ2<6>2*VPgo5W{=SpHyUQ73+c zMMyOt6bB*5^8HBkA&3QQkaZr$bK%KIoCegX2s1bymw=PUAIOGVkLreLKyF0t1qcme z0DKOKYY=L#1QkEDWiEBxfrG#KyaTJlZIKe6CQ`#MfVvBXZYP)506c-jV+aS6cm#;$ zj}#yG&68M$WUqnbRhA(GZzJA%10WWpu)Ln_g#11d4M5i+G*bR)ykFywl>hLQYQRKf zk4KOV=tg25Ld_hI4c34~U&nm86QPI?u7eMQ|8985Ge9x;e+~~>3LJy~r%3RipR}l1 zf?xIQX2}8!Gi z^j`3h8m2Q>;^)fAp4BDh&2w`(LmQ+qG-)N`HiyGTc?GWaOk8{nJcCu%eJC>r?? znkF*%C>o)3z6Po-gO8#S3iJFZS_U6QBUH%Y7>W!&ibkNA<44gl_$V5oy8OtAAjC(} z2sP&UQM3#`ibkk8kC!P#1|LNu)RN;z(J~?>p|%`9ik87g(U{ks<44gl_$V5oj$9ue zz-RDLG(w#@K7h~QqiAe+SN{HNb0CKu{zw=9$lA}&Y&A9W6JFIDS;yJKC=+h* zHQ$=2kw?maKT@EN`nA6V@@P!5<(z1u`1DAWIXQE!VK^1}mH&<(qEh^!dFP#qk0<|v zw8v&H0#045F9DgV{Mg}E<(~z*=D+Ym%78zzmpnv2SFJtjPaw9-v38I{1%k+)v-zL2SR)vo8+rwlLr4-$h9b1^0AOsqSQf2!L8)X zgObwfpd|TZ7aC_1@WHq6llcLDu#YCd?%;2rzvMoe0Q+cm0*~uJC+M(`hE!@FO@Mtg zgw#Ho0Q+bNsbdBM?4u#1ju{Ma%pf7Pk0!uA8qRUGk0!uA8s@2eGy(R}5K{YS0_>w9 zr1sGS*hfQ1?V|~>kA{%iM-yNl4I#CUCcr)#LTVpPfPFN-Kz(W-O@MtgY?0bW6JQ?= zA+?Vtz&;vIRJD&Lz&@HkA{%iM-yNlO*?q1V+I54qhX#<#|#G8M>7kV@iBt|ju|A^ZgtFHfMW&; z#>Wf>*hfP!K4vh$J{k%eA2S%>m_c%mj~NVb%ph~)V+OJ5Q0B(R384PgDAi?;U!2rh$5{!=-46u)eV0_GAfPFLs<6{PcHxw8jGZ_5dt62gu;$sGb zH&t$Y%wX^b1;)n=2G~bKR`D@|0rt@ljE@-%u#bk|R&~r^fMW*P!1$QK0Q+c|%Y8KW zAm-#N%t8YDXgJgJ?78PO68mVl*(e}F=DewMu#e^?<`5xsDp7}IgncycGKYvf7ZXQS z=EN`uQo`6r!+f?|!q`Vcc!h@JV+I2pGx!Yfl^wygL6pO#AUyJ5RB&A&hgpO?q&&D@ zom`Di`5f6Nf*TYRhO3~6f*Tct&uX&VO$sW8OPF`Fg6hKYgtjQCG3+7qc?C6xQwiOo zpq6k2p#cT8g|i85RZu%l8DSM)2>g@L3fY`-5Lh?ha%hQWpJF@&tP^%yo%#E zHI9u4znX#$!f|SZ(&4u}KsZi~P#E$!wG56^BUA`^6hH>YsSzrMUq#1faGV;uu`b-i zJRGOSyvFdG%)@bNgqp+8lP8W-Bh(UdM`Q-asj*yJcn538acazK4{swSj#DGl5kk@9 z3?Bt`h6gea$Eh)|E95|CaGV;USs{;8%iuUQLUY5%Nr~gs2z7@%PA!Au)Cet-r;KKB zoSK{r;YE}h$Eh)IY4{S$;W#xyJ>ioqhvU=;^@lu8Era9K2(1XYGc$wZ)W~IJ$m7&9 zI8KdutHSS+633|#S`+d(wG56^BeXW;rp*kFQ)9U^LT)6<;5aqrt&4b^S_a3d5!w)P zDP(Y*8Y#~Ud7N4X$Eh*zg79VhW^kMup^L(|$P>q@5xOkoacUVHr$%T~$m7&9I8Kew z=5P#Xxu7$GUI5p-t7ssg)EOh&C;p`ex<2W_0+R8!(-{x+_jhkGp_%=5S34SjugKu*aNJonR;M?2;LY%ZS z5ykOs?pLtH-7k|>rL!Lljs>qGKQo+N+4Obts^({gv&TyyC2G>y4;0P;P3^HFdt4Ly zsdkCTo{&8NI3Y_{wP$;yOb#Xanc?j6CMi<&^HTuyOCVkSd)(G!kCs4K&Cd*HkC8y3 z$j=OCkCi~N$j=OCS4g0)nx7fYo*1z5#%g|MIJ-*bG*|O8!`YK0&{ECM3};tMpiTJv z%y9NY{`n|Wm!?ov&ECxDLP|I9U<~6d*#vwrY9WBx5=d9?A}~h+VfAPN2TGt&{JS-H zel%AC#p*?5aF7J*s{cr`c@k(8zR#@rek1D1u(J9t&s!9Y&!gI*%v#(;tf;<=r4Exo zbM@)WSt@~9)$cIpC<*jeFCfq-fpyi#k?d#*Y_7)rn($UgU|V%F$v!B79n~|LbAkkR zSAUf`CrRL)hO?NnMglmL!2dP#PVujztdwxbgG79|c{1GZdch{w_ z0J`l7j0i(m<>92(p;#;k(MT^G!|&oT+%wD}SS<5?<;SK8mLhO-|9-6NtaKJo? z+@X>1(Aa1Z+yanluNdQr~B@**D+R6rm_|dLazH<8d*OjfBB>B`8EhgD-@^ zM<^Z9;0s~!5eg$3d?5@zLWPJ1UkHPb5Wc_X1A@WFdg>w?e6SB?USmXqFNDEI%I1g$ zUkHPbP>Xy8CWOJqa%~X}z7Pf<^V%aCd?5@zLim0jenS|1ggPS{d?5@zLR}FJz7Pf< zp;-|Pz7Pf-o;0s~!5!xVMvgOAW< z5e>c&1|OkK5e>c&1|Ol#(H?Sv!AI!ohz4H>gOAX)5e>c&1|OjtA{u-l3_e0zay0lt z7<`1b$~PoJ7<`oMwulB_2!oG#+ael#Aq>7RgWKIX8hjxPKIZL=Xz+zF_z3NaXz+zF z_y|24(clYV@DX}GqQMu!;3KpM5lfTgOAXj=rOhk1|Olc;3M>U zM1wDc!AI!Lhz4H>gO5_b717`eVem0eou3=R;3I?w$u#&v7<>fd^K(NOd<5h3b3+(> z1mp8_Ll}Gnfd^K(NOd<5h3b3+(>1mp8_Ll}JYalzorZ(?g;@Nv~@7xJnI z-eVrPghe}5M2`13(%$2U-s4Dnk0W}IBinl%Io{()dygY}k0b3pj_5s(wD&lo_c(IA z$C2YbjvViCy?0;j;m__+|FSXhK? zoD)C-xPiN?8*z!lXN>R;Hm#GFz2F$+)O5sHe-*HN@4Kcu#sq7D;j_G&{uq;82Mpi) zu00{fL}Z9D6nsU$?hIgWN8Ptk5dPJtfw>JNY54;T_O%7)quz#Xz@Cp>QB#RuLf$6I z^>1EK(;8#^dnps%3$K|GW3tauCcGD3b9ju2-l9x+FI>t*K6(B~nXpGd%Jk2W=bKt4 zF(l1d*GNCBcbk{#0(Czn+tTzFdN*}59JNg(mT%%VnKyBp%$vAP=1trt^CoT+UtE%J z;x?H#ahos#LcWPR)VztyCJ*~P@O%?jiqt#?o)!jwloyJBL4I1?w+z3^4!IjlXoqyi zc1UVFBzu2OU)Rw)xO4XcimE;)lU6VBX#edx3d?n!*$7cGbEF#267c{+NH-VGm?Zo? z4TmCH;{~~Nv$+#E2u6XVoe1#3Tn*%o;+(6)SRD6$~pzLc}6+ zyha6e=0DE7CIxlnXSD+ws-Ria3 zZTAWfQHV(j?C=VQu zFpuB>mD}SLrm$?60{gwf3k0VtaD`X+Ji!?XT$G4^rlYoR8Sgo5}h&<$Yd5?Ya`XET7IOD-$(G;{+P zy3AXZr=c6b&?U4cPeV6=p-X6Oo}SGBhAzvUk*A>>z|du$GIRqNx`a05rIR0qE-BB; z)6flI=rZqu{LADdfm=n{k)q-QgL zp-T{Ike{^4|-CS-zb- zX3B6pbQk`5%$YIMh7+IuB@ujGdF&yh-bFfl3x2}(3&JK0Z1_q1v|rfNfe0ErJrZ$l z0)Ft>2p|e+`3Cd2`AxF`X5|~q;|>W|0SI|+&bY-xnHJ#${ERzP0%@=zJD+bbkN;Q= zg{a^UOIIF*1YGQdKda%if^XGuB&uGU@LfOReuUy1i?P-Edwvz4QHtUsjMRk36qGK$ zvINlg6%-aPI~>sC3Mv$T$h;pYs93Ck=WN0g3aTs8gEHZVe${%^*jPN1ls{5=EycrG z!;clzR{S%0?o?2F@zaE!R8U883ZbVI)LFchT%J}?SCJ3bChSr*%qsea0(wT}br*YB z!%q~nsFGC0uVOE*D1M!k&#SzP zivPks`&R{BR^0Z<#CLHQE}HC7)6 zZ_R|CDyX^oFx-wzcve9z&~$))rl7X!enQVFsJ-|!1fB461$Bs;=Wr#M@O;K^h1Bu+ z2L7SIO?-6tAArgZ&tN@I{AoBIqJ*1AA>-Mm-*QpaerUCr__HSB)8PlueG{J>%GDnV zzZucQ9~P%0D@q@TUwjD+x`97H{2FZQc$uU26nT>9N<$=5G0`28 zh(3h6XOO(h5HSPAuhTjFO1V->QTkqud_g1SIXn4NATG*$S7-ATWhGaf!*`*jFwN+U z5{Y%`cQsA7p)mq$8Xl`AXhz48Ls@Gf{4#z!j*>tzJdI?%5~vILB7aAp1RAji3Bd9u za&8X!ah;BSIfyO7pI!xMLGf*5MQMSoTpmAp{s3_X(EdoWI;l>ksk=KqqSBvPjGgA! z7I~$p4=3Fetw0%0mq}l08qeajC#^qKOuAFnlotM5B>%EM9a$A5-GCr9ewAq0g}mv% z@oLuqHzezwjM9@=RNe}xu>on(_-)AGHJ*m%riA}BOs&Z){fm+9Kg{$=!}-CVEYoL9 z{&;v$h|16X$ObX_!ciZMP&~YKET}g6oRjI0pRNKx?#1w2^g4iQ0Ciy}nQiok1DF-A zQaKlb!OHMMKp|%bn5_ywieCVCAX*dhfewI6LAF-Z91c0B-0jIuscM|^O)t6=!W4@{ zf6J5CTv7d@^;5-^9STYVnkJ?^rl1he0bF52K&c;kzp5Y5-yFI(+j0WL$!U+Eej>8UR;aF}w|20C2U{g;7odTw9HJ4le;N zr{?f+MaFg0Qp@w^QHBeoO=Mn#>`|K1L}{wkD1ARLLqE9~b=?RO9DRe}ZCRIx|7m*- z5ts*^u*V8F`#VsKwx4(k8N+d;H;ls($HzqIDD(|NVT=FUQbLp;!B2YdFCqNA-vF^4 zj&Ku=xW0_=7Jq&zA5!@iFZBq}Ay>@@#g zR(U26FCaq>^KiU}%&|TN2xfTv!MqWL)BP7neXd14Q&an(W`@TfN&R8JPyqEti+Yx( z-ipCwhQ}XCeTF}W)R$Y-vo-ZWpk{{0A4&ZYpGWC5Uu99x(bUgjSefDRM^c~Z^NDry zbr$uZn);)lW`@TfN&R>JcS(IqLXAnF$^RRDcsp{c_#??L^Z6jZ`5v2m8p*i~j>I4{ zC*qGJztSHK7R~qDYBpTG<`9*GPvLyke>&mitxip2Mk)wvjn6M>o9hs0=9 zF%?-uuR!g&)m}Hmsgq)I9gSK7FpXQ$)*d5f4NBx#bP3q!$aOa`qlmd4>_-vvD44Yn z(+ZjvVxB=_Br$I-LV^`81#z_6>o65^iI3{i70xvk-i4wOi*95I7M+SjxY}zpMX5(d zwdkVlrsyI_7P9D>EI~OAM+c4|=6;Acf|zds)4;?^CfGTDLRLL78-S@NW(_cP#5@2# zb;L{q=UQSu3+ZZ!nF^X3VlDxuhL}oVs^=mx6s4+XAaNToMPlwn{}+k*Jor=*vlW;s zVj7UBB<5-+h`{W!`P`<;g>sQ&i4v>(-0xk%b)?y$@W3L+la8 z?15@pqw=PTY@f6ozJQDy5kzZ^>8PJVuq>;Xi6&=R#f?a0mU-Q%Vhw1$Exb^$ij1n_ z-@xIQ2xE4litp(vGOCJ}i!omjMC(?RSJV4fkU7ID4n|!WR&gxa6)f}WK+++r;6;m7 z1geT-!C^VVmlZ$(dDLg?6Quc~_e%Xjrg{l&a!D zaF~fOW*w?nuJWdel&az+WE?N6xZhOq8mdUKir=C+DOPbZs=y1|YfKe1a9D+>s`wN* zT*@j|po;r-6`rc%ACYmVtl~;j#ph6k$0}|`M|r4XtUfz-+EL+HeRk}$Bg1igAj@#T zj8r&IpB>wUvt!3C&B7s#Fl7YZ<(TfF!^LI2_*EXU`Xew^Q*f$6o%3(mPtcaX?&UA{ zg|GNAd;H)y&8<=1tjrTwG_9!4+k*N;@D#w^O#B3i-!kzW5^po{0uotB9lVG{9TTr0 z(Sk(gcSuNoR(390k*dc7(~urR2LIRjFgyfkhV&a=7*5OKeLIAp6~L(tc#9Arb9^d{ zehw@{_TDh!{yc_oY#6<=03Sa>h!%(9A>^mU&_2^~$1hbKCty+XZ|t*4$GyjwVBF`S z`o)(s!EEqnqnnuHJ{yhSb6JfX{hagyq=Q@WlS%&*ezQC96Y>YPc#e4Xc%D*wB6km> zS2T8W4PTtYKCKeRctScFgOp zpwBLV&yLWd3i|8<`0NNRsi4m;fX|N5(hBzgQdvQet zeRctScBH(hf~G4JXM`s@Pu>zgQq1#Xn4-Vn8BebnTJ{p40?l*w$ zuAt8@fX|M3+big^3*fUOw4-7UdkH=}LXTC@XBWU{$NHYApwBLV&yIOJE9kQe;IkvN ztD>9b;Ikw2Y=wN_1D_qsJzqheT>zgQ^LAIzXBWU{N9d&r`s@Pu>4_jQWkHdRvi05Ma)q`)*m zOu*X}7!t(1x=_0sOfpr9Dh~O>-HWHjEf-ftuncyrD+^xVCg0n^N zj|yz_t3N`S?@?g8UwtII>?;cF@T->-yjOvpe)S51UsYh2U;QY{eocY1{OTVN{JH|? z`qeuL-lxEBzxo-1-%#KpUui-1jMRd26+BAA=ZLD8N&i6FKL`^ue&kj=8Tsk>AXmEB zGS?RAEUgPOH%04^SO1~aBJ-uD1xSi|y4W&z4&8xt>|)D&*BEZ351&M)@|u1>`MD*YRzFqp~O&zfHhl7Y*^-1aby8#BUQ2 z2pi(J2?!MGP zeUKr1ko>UtP-b}J3xVH{?{^Nn7EJNL6Q#r|1aHeNAw)e|Vkdk8q)%Uhvm_9PuRCcC zDCb-Q+*^R(L>RH2bh`?-qU5Mcar1~UV!OoE6So@hD&kI+xMt!$3iup^k$gXyk2za_ z6x|3To+H%@m8AMCD6VA5HziJTdj{~62&0xuoa8oQ0L}JZXk(ewW%ywbIiBrI-m(K4 zMJ*dO>}?jiUN#lZ88r37k#6esMpza;J+3V!ow3SRk1h>S2wHs>~ zb1HD_0iTI5LcXtZyllqxfIml^d~M|fiF*L>H;9vOube1xPXKB6Jhk~)9_W5)e<-Sa<~u>+IG`Fa}k9+xyUvz1#$_(=#NYVYA8|b0G=*U z(|{U5)Exl7AW>aFwG#C_z@H%CR)Y4ew;=O+xBgn_XnYc6k$fj{)Tb~*5kOGwjj627 z`<25gj~-I(6^CH*wBgCXJfN_Y;w0uwxMJ0{RFHDPqhJr%6kOvO#3nK*^L4L(<;7JmpPV)Yy&| zHG`}P2UihsLC-M$AZ1n64tCS+)rh4WI1IZ<2WsVjNBgugP>bvUMW@ zi)m`e0}C+@BkhV}Tua_NdI$@Q8tzT4?eiX7m_K^Riu?zHV`V3`mSHi40x`8VF5YJH zS+y#MnR3M?9_GPR+5cm&#ADi2<24H*_c)z_t3E5n!~Cv<*@VFwbNxa&xD%cBfK>+& z>=QW_u{4t=W7a5~?u)qiWIG3KMuVr=9ATo^odX|RTmXYPu1OV`78i&o>;bU=G1wKC zkHP62vcqb-Fqkt`qyJ$c(laL;smT^M1$Hxpm_1o=2Ao-`+p+Hzg=OTs%P6guQIIUT zj9L#_wXkqZn!B*@Vuq|s%FS5|x1L&9dA+dkIRh@V3U_!8t5vft?%_(iJLB=FvKtrU zigrK8xay>{YV>@pC9Y(A>++aYH5rax{h$*MC-$4EIV72Djn)*zx%q?4^Py!}tU5JA zn>8O+J6r)+Us}D4)as>0WqpqGe3TLtR}I5ASs&yx+U-lHC)?PFW;mVWWrT?{6-CB6 z9n8h#^ezzXhA9SEXbe&ys&U9F6YiG?f-|=GjoYY&=(a5j2;{7}xC1-}s_6ybO!= zYH+MbU#Lb}`T{e87o<^%E^4(`{%A{wwCN12QLP8YYCSN{v9JCY??73>3+>)lq8VZ?*C~VW!KF`ei6zjhPfD)`^Zi}>?1fgc-t{7s zQ^gr`uEkP?Kg;wDSE6-sSIc)!=@LJ1GWx>dI#-S`ntqV8wo(26(@WXDvg%1w(37U3 zbTL-yi!ZLBy!aNA#aZpH;~H~CN253?YD*V>UCdmrM6UFDYk9|o8uaoW;;NO#7{qKK z?S#^oi>sa=vUdOTUHm+nf$NDK*&Dzw)N-kZQ zpp}c-*fW#WT2Myy6iXX%`ATaWR%_f}whYr899nn)1y!bLS7K02S4x1Y1Z&j3sVG^& zGtHVLE%rRb=2W6rIWsU_s7>b>Rv6O~Wr)3h?r7ta!xlpI^g)Kdwou4@o>Np&&d&?h zh*Oqh;oTZ>pKhxqXA&#~yF^bab_Z({Zc*HSYEr7qLsVzQ8gsGDSWn4AZJxOIwk5_V zKkTLoak$ID5$*`Pe%#30YS1BEW(Ed3pKL0%Mvf{~mOW+4vX?hwc&Js@=XgqK-KX_y zoqBY+PCdp!q0ip8noaIp0(Ix2T>|RPCe*q!(z-LbVR02>p;R$a$(kz+^6O>MwXiY_Cbxl!=m^0p1q1GyzX0#V3 zL)i`00fv$+x=f8p`&mn@S7TM7%^#_ow5rgSkJK|yUb>*3b2btLi8E5{2b=H~TK!n=q5Sg;^ z`pdcwV5DUe z&>4XngLu}JSxt^Kyv>PkBH-Ff`ZgA677U(iccR}(9ZWVuV;C3X+}eMSjW z)tVKrJf_llGJO!%(xB3UmDoUz10wG5#H6xy7q*L*_^qUMmGITtgl3hI6DO#YE`3KA zP&v#iS0D53ful`jDHvVPg18>JNQ7AEs1G3VQl5iCpYC6$#LF>Wo#{lyyobjFrqNUi z`*3TPYM4T)hS4`;M&*>VU`aHmCQw&0?BFxv9tqlJ0|(ZlauZdcC?La z9S*ZmJ~~L2tz{7CRVMFf9D~3WMo%o~4y?q@2@AoVcCk?7&Dux=pn{oTsmk)3E>a{K zN82~J=~8-@#zL$X;lSL-4N;l<#J>M1Q6luCn30X8=lz(OyD<(oX6mubbW?S?zMGM# zQao3%YvnVfay5dxGBZ+1bLUXM+c(_@I$C|MbyeBR&6w8C?9lnKswkJXJ03W>w&P|l zh?SG1=Hn1(5j_W$p>nXTdX)9U8?x9uJ;WyG{1HOmjLG?}r_`bLti{b(++;b4aWiJi ztcx6OcMG0Xm)$JkB{bZdW0~OCgVJX;69?yu2&MqhysyZHYL)|9KJN~|g8qVBkn z<7v~lm-XIcSxbpMmFNViGL1up4|d`O&c`~5xm2PgOO~*!CY6=ZVg%CbiUT#uSxBwc zLNYf?=3y&tm6X~scS$g>l8HV}dn4NInH+b=czqq3pszy{%{sRm-(j#?N+>&fDa8CH zo7TjorD@|lFXg<~rd7O(rrK)Y{g_g!3!Ueuu^@>xB?XSnv>8S`jpcJyt)ZnV(TkW* zSB+|g`m?ofVm?V#p>&Hjp5iv`>o!WM8{9}~?Wx?6@cT$@%IW3vl{f#UECiyIh&&2j(4;Bfm!5zAEjot(#3^P8w`Tg;+}XNJ;uZ1!X@m6q&`-^ho#pM#LoT%pN znLK}G1$x)VL~W_!{@*gno!x`h3SmXDGa&Y->J3d0P&?c^ZJF^PcAx8iP%nVC@M#De zts1w!gvz_}BeYL_6TiS+=*G91%{8%DBt4-9E8Y9QE z$a`^k7E5f``RXR8n~oV?0N?o>#ME#S)()X%+VRSI=59NQ@6gn zi}%-`gWC_VEP}W{m3^Jn212NfNIbo6$E6 z`au!*ktWLo!yq@2>dMqr7$+&)emgVV=s?qDat)gt_IaJXl)0elkvS|Vp3Da$SXBrI1KTTIve3uIJHX!1x)O&ss3oirq=zp;+vM;@@GfL9|0_&{WWG+crg6tu+>Dm! zT4lQHjia)kVes4CUhZy)$3G^<>$bXYvBQOCy>=+5QB%uudg3viVVavbL*lJ1N;@Wd z&)7sfg|(-WHgK>5%|)A;1hwhrQ6cJwF;d48agcrQVal?X=Nb9p;gC)k$Gxh0&GD;3 zqsEg=Dr;&}bq^wI)KVX8uN}O6YI{*B)gfhid$F04wls(8nLvT@F>_0mqu1$JwNX;L z?@RUkweN=*?Y*A|KB{Xw-Ua54g{T zK(x=zv$68zok}Sq>GafUTpNG3saPU$a9 z<)Ktl90aDhy?Z24FeNTfQ#l9TeU_|rQ&@mh6C$oEOmEpl1M-QxHtq~&K;sdkaD zGE7xt5YM)*8FP|L#ero7sjDo_p;Qe$6Xu!=6%`MklnH)MSF3dAJ=VT}x_EFcWOIv~ zH0WkKyBaogu~QI;LrWFd5_iHV=?{yG$qNGZ+{NO?Ah+4Y{=22+YHQ!mc=qpI-MdAl zOewv`O3?WT9d$gY=`mEHO5q=Gx0oXLcZGRZi`JzwdVlvUORyXbN% zS%1}uEtHsBat50!X>Pr*3jy!?_iod>Jyw46iZjjdVjbR}iL^G%xvKszu|l<~uhOc% zC=<8}l=_}aZC>sPu-+0ZzX+J_EmvR-S_yG;QRyvlW2uE8AFwCyH?jW{s|~Ld8Z9u) z(g^lbFjou2?&{>tiNsJE%qxxSf}Xv}ej|4xP#+}TX3!>reS2};72r;8{i3W?YuXSp7g-{-?obq%!BEudE!E_8 z1ox(^($z-#%_1~TZOJR@f!Ft7GDo?IYTS;Inn3rIb-BiEmstn0(~S1u7&-48;r>he zO7xyPSzkO&8XZN}WGS+t#vG6}*nU&Ee%;9*&#h*&#*)cD+~ATGHpmM`ast9NY*rn7 z!g``#Ywoq$lZ~@R`hd;rpzmSM#99*ywDc*SGJ5rOM$MqXJ^Ypny?n2wV*^7V z*KFR`{d%eKTWx7>OhpcJjaJyDI#YYvaVJhUj{Rb_J2kb>Urq>4_Ca1)F?xmhd|}0` zTN?Gaa3q?Ch~Zk%<9<6CEH$|?ytWUt#kJ>0*{lZhkeV5f_FHR#U4fhOq%vO52ep+Q zB4tL7gOp~u$4f##sk0jpXVH(JkfWZ&lP`rTx!NcDrINW%aq%9gndk8?Ywatw7GS5l z#^MVMURp6_r)i%7nI6ERQ)}g$<6Sxf&+C-FPqqQXqR0h@6FY5>aJ-CpFCX7?(CL{t zY_!v}d;sEIP_Tntj`AXVkdlT%&QnR*TEhAcU2;^0C-2a$RldL;A=t+Ds9@8izT_`5 z^(I}7TXR$0-nKf~1B$zHn%~X_CneM2u}pHIV0%+sDh8KQCiRNYGW#|_U+s>JWsb>@ zvS}!7cVql4s>iM-o^p80Bw1lGuCG+{EiZFH^sCzyA&%zw)1BqMYl03J;#lW03-R`S znSDQo=6krznn9-CaGjq(404&(s-@J)87mGnDZaoOO@StrXo_lk=;H3I8Km3g3-xMD z_jajGT%B@Ysdo0|uX#@o=hSuQFF1X`R-V+$*s9IQ)K_@ zE>jDOmSnA^vg*t#)CK?-d2;%I#^R!6slXx1oE>bR8ZJq$;3XOsn@6~UaAk_e)fST8 zoJ3nIg^xYHdaaJox?`kn425mc=G`cL?-KiFptERV4C>f)u0Oc?P>s+vV``Vrjnz7g zU)qTkzPsrkQwWzB(BXazmNvUrA0nU{1_C&P2Yu2_;k8d#O-R+^WIL{04O%JbM{tr9 z7PqZta2}&uNlC8{x(C-C`uI{(z9$X)`wgXYDRLGe+6k>-DLx?dt37f8E4@6&9(DSV zEt^p{RC|%*VkKT=#i!IaQ>IS42a%Z_4u1_FAjs>Ixhx-CN*rIh;W@T^zF4I0mNbmS z{x!&cZ}j!_&Fblk1IB3u@?n#8W9{l&R9t?W@7~o^>~ls`mRkAJypYf8loBm*i#V4( z>SSY8QjOM>cA(^jR|icO*I~&fb_pKZX$7WlJF!VNL8(FJ-dJnOwY_ha978Zn|WG(txDjqDG<(^m&2?e>? zkCycm-PepWBC25?TCOB$N0?^d{?-}Fzl~0aJ4!AQbz}TLvNgb+KiD8(-EX==NM=M{Bed3q8KK|c2 zL(jVA>TTF&jp_}Z22uJ%)Yih(())OA-tKiZtKRP^dixmiy}0|d-3+&nbrX=dz>|UH zVvWu0*zj#B)wz8CBlbGP@7TtaiOp@z#d!NUT;R!dDxPexzSSmaxs5aN2T~7@d;ja% zQqBA5p&*ey<6N<_rDjH0E<)s>(8~Q^F!pPCXmyy?-azcwl6IiF#ms3tF|X}JUJ$Iw z>bfc+QTg!??ggb7n+BN79Bpl3sJV>`3eSf$7Y*79`h|nIUNoEK%Fl&FIdjG3A{gZL zPs>!1Zx-n5kXi_(=R@ve7_o6EsVtsP!+|pu#5nEUgwSTwrQF!8tX&wKocr=PgWd7<`oAx3m=7#?3s=?@f<^c zOhR#tO)(D?Z%F3Hl46$RajZ?zZFux2Jo;^lhe5GJ^5~gtc=TwBocJ2@@VSN1$A<$3 zG&(PS1k^5sl<2guo#4=gU}HV87x<*kPt*h{5f<=#vt6_Y$WYf!t z^skBVq77o!P=?OQ?Vf0;4O>Q);Wmh)+Bzqx?C$dH{S?_Cj?|@d!h7Gv!@sJ=4Pu$D z-1KuKPDk6%L~sVBAU4F^Vt0QeHUfKDIq_9MU5nrnbCxtBIGpohEKn0l1~wAUqxg%Z zob%!xaxEd&!wUbKSe^hl{-;`mD-b-<%ZTg6nkOl76_EGJd^34$q?xHUPa$qWiMwT~ z<&4OnUThGVsbkjd7Ma#RjzRj5V}|`v3^40HMak$Pgp@d|unX~X2p<>ch^cLZm7IxL zSI%#}=+@&kYOwtMma-TOP=HquHoi|GHl#Cui4=A*J3Y{dLE*ssPs@>v@wMm`H7oEr z7W=QGD8iWt(6@|cAt)uw)Et#jNimeDH+DRGU}%twKFToRa7=ZQyvV1_4*s5a6RF9{aUnl}@lO!>0J#h&Tmm}Ey!AU{9RS`)_`1w8_K!|WC z0;FMdoJ<<#!lCHZ6l7zq4u_~u6WN`U>H*&ssv6xIPb>j~85X6DG*T2qe_Y&dVrXP{ zrcFU~gLpB5O{^=mV{4e)etG{HHd{`>y-Y7F!!EIp`Vz9e5|QN1I*hIC$zDbr)Rb6P zNJ=Y`w?T$WFQb^GS(BtB4_qKQ6EreC7&0>$k|nMN+k0dUJ&Y)mbrp9hdJ_s~2_-!G z5(;MxClt#Q3Zr(Q3Qg6nh6I}Q)R2Z^Fb#>!Z%eu!M&Fgm<5F% zfq7gKn0|yZ1maPNG@{x_YpRpss|fb&g@y#?4FqSZ=VfEJm7<{`f!c{+^U!0;*c#&h zRT>hCWD&&fL4b&iINJ6kawvKe3TqOrMv;xOSTb)?mjiK?L|TJFDrPwPCqY_+a%EiH z?$F4{>I@1ja1fu5U=!QDUorykQTHSq?EZ+c1ynZ^0lmg(E`nmqRJY1tw9sTE>{N;z z+9hExqYi|WI9o8*+dHEsUl8Gd4Q*9Bf8R-&{lm6Q)5eZ($ z&BmJuSm2D<9&&Oo+a!8h5-n#$BIrp=36dZKtW(t>$c(J7gpy+100wu-8hRM9X!&?~ zNvlZz4N26?=ph7(-8=9YQctT4M!OK8XVx%&9wCc#=3LP_K;Rb$7!yXX*m(qgqw*M0 z7{#2D>OV?wyCmvkq$Ez3j=0+(%_2()ib3w47(|C+dl9l$$m||QXUb$hqYVnn=t_lU zv{_*pU8k^GIun~dBkv<6Q7@z8WpX*A)d;G6tm$JagVFgWgQ<%UGGd)z?=gKT0>+zi zTqBdq8Bvb%&SK>YB~c$EC9Kt1eFkZD7AsYa9kjEYxkg`*X|qWL5Vv!@$>3Lh)L)6} z(P(=uY8>PLnX2}Bjj?pGQMQS=S2u|876b^*=pmWxXY|hqzF2p`027ZOaG-hynA(m| zvf#*Pi$wP_B1QSY>T0bXve?kmtNz|&hi^b77t1<(7+ockP8$=7UQOXjl@}!0h)`1J z_jC&xvjlUYRBR&4=68tt zY$8|VCY+YrM9WJ=Y(!;4WraPAh9h8rmkcm50-;<)mS8SKw25316QVww$Q3amT5c1S zir9h5Cd&$Y7)?chh-VBiF%6+yM3!JKM6`)q5pfVDNES-69!7^C$hI@F7@?doOE4FV zZ6cR(LeysyxoyW~8hqwRUOkKsLXgd3VjegyJq{K}0A(WS43Fbm# zo5+!4e&0=B# zLV2@Tg1M;OCUR>}i27`z(%R`!`m?(KVkD9ZkxI!*jK1U=CH>oyzLyaxD4<(63HfKK zwenVMZ-N&c0Yr?#p@TJ*MBkP~y^J)GUEM3dXHeMD_m9QImNt#V<3R32a5Ni~EDDo> zt=TAj4@l2MfPjo1kx56Jl46}i_c9_yd1qV&>K7r7Ge~psj>Kvp*CIHg z7Q_~yZbc{+mExv>pNs(JjHV)_#k%`GF~C%}gf;+TigKsLITx*R^x;Bammq)vqa$R} zc%xVa{~l`;;Y$dhV)P1v8e68`Q5lRVPWhmd!xrS;rU)7BkjZ{V-&0sdtfsv9Wx#G$ zM2v2dNoPn{0aOJtj#G4uHYz$s7bB={Vd@eI@hZ*~xm!cyiPM2N6TuhJyQZsXMKj|g zikgw4*-&TEoC`F0mK9|Nt42jyf(-45(MwHf*@XDVk!O&WLI-Gad|5I6E15MK?arDS z2(efSV#YWph-^eC;V=)VMF=hj@_ld!o>m}0PDW`EVa+irBDf>yi5(!>g#ZQTnhQIj zM|LS~!>ER=q;;ibS26S6R%DF+grEkKsgx|Vp=4I4fz2U6Kt>fZXe9}6;NX7-#Q>0R0g9a1bHE0Vkm;kmZeyNxfn*9$kuN*QJ+oZs`7-> za+|2so@hs96J&)wj3yzd9%O2=gi3D)ScJKd(I#?bOo;kyB3H(QXt_;PD&t&KHcwXA z!)O75>_#T=@x?*9ktLW55p5z@L}+x7^hvTFM%bDgH=e0uBvjgX7GW+p+e9wsgs9IZ zavP7sA;9Nw$*YIaG6dN!CXPfXpC0%QIq)YSVEQsTNs>{kGqqYmr6RKkb0M-#iIY4NEW=jBO&9aYEE*6P5NwC-}^eym}bTMo{yRsW}oVZ5N9$ z7uDNDZuJRKpG{O+{dVY!A0VJx89jlZ+RN0BREA#Fj7k5fME5cx1?k zVRQ|G>{TXiLP!fLD5j`(%KMl+HY4Y~@wjVH9-jsFRs=MT(Va5ss65ufKTxOy%!fhL ztl9Jink(QJuza%ZpQ?o8#p#Ahc6s^*QRoR{_{{{r9@%{a!x=f>9(~%oq=F? zTO`g0=Av@q%|Ly&gxGDd3#}X`!u1H~Z$>@Cne1n@Tqb)MouaUePE%M$mn$rzD-@Q| zW`$++8HHtZx56^|io!Dbn!+;rhQczcgZS2c2IZxc=SV4g8Ii*6T6}RE_-{)RvneGK z&jIlQg4?4NuL8wj_h^$K=JgV+Na264e{X=gqghHj8POvuxgF8}hJJid^==~lc@XRp zDWlO+o_HLHJrZfGVK^pHG=t#wn|zv{)uhixbM%dE2b$ z7_})nMq?C~(O3jk8&hO$%~wx^Kok({mM1khR|%(_rb&z3&aBZ38mnWpSSOVX8ro}y zCQvcdlSa5}$jZAj9IWkoF%5UtrM-I3z^Y%8JkyPX7d(ycU%}Fs>>FfvUZPb z1M&9}&`w5=Bb2u@A?me>+;%2JeKt{fJ4v`*R=J$fqX=v#V-|GU*_g3;x$S&7E{t~S zvQ9f2?RGM~2?cIKKwBBzCX@Y)?oe1pl+Nt|Puu|9EeI(wwQMo;1AhVnm@>LVCXZ(H zNrh!}IfBcS^04UXlBk!FCUUz~k*$?veT-BM{fu;p@;)YeNW_SLgD!4cDI{Av9L1NQ zZDMllK=t#aP(6&;6srd&|H zS|F&Er)luw9?DKbfMkriRFctRne1nDn8Gq*edRM-^CP!5N!-h5Dgws8jxo8bG1v7l zhZW6~R2%9TYxc>^(5xA^f?_fPdVmqxV$(j`MxHE>97eNbvS%Kmg(}HNHN*6^=KMTv z3|>P(7ck0!Qniq&3RRpD8#j2<$>BdFhh9dSL+?Psq1Wb+w9ZSvg#rw|xMpREve^#w zV+at8(Gv*RR$OGv8cSu_0o+d!tV^DkdK8EsA(T!hks?dxSaT8vr*}J0+pGdiKP1VP z>kjiIkwThD%(6#GBvMGL>?|M`B9w`#>lAB|djSH(WpoLG>Hwxbt1=i} zXEK=DsxmZ}#G?M2u#2Qr>rjWIpCX|JvGq(!3?dNB!%>*72-c{j43gUn&cZeWEx+(5 zfRthHIToXY+|n7ER~lRzWW_y<8WB{7GBr$PFlsd!x}@-MCRWH`T>>J3557r;cB6Cr z)-~RZa8<4^-o#o;Nd{&Tc!ME@M@j~3nhNi2AQ-G>1>zkb1b8}QVPv)v7AtoRz5k39 zwv{lre|8U8BD!d+;mOLfFX0C3GPlNe@T5&{Z9=w^E`<@q?Tk?T2pzf$!IgU(Fn1wX zo%NphxkN?_v(iK#3iM^V6)F?~6)n9Xx1YSW>}LVvXF*S_s$cbeL>MP zdJ#eO2ve`93`T63J1rFlmj9(B>t&?N_YN?{Le|m{Viyq4OQh)^8(AhD>#$lfm;g!) zs}>R^^BC_0#($1BN*?UlYf6)Pe=6k0B;ld~Ep zoC%srYrMt4MjAC~Bh9?={6UJ_NJD7|Q6Pg?)7FV*W93-Q$ZLLZh9>ug28o2#CaaHJ z_8a!belNX%K8gPn>EWHB8usyg_HC#DylEC`YHc3ECE3F}MLu+KK?~ zjJ_yacy=A*Z3yK85&KmH6kznVGNOzi$vp^;5L#ZwR#U9$@fY`|#jaf5q+V-L_~NWa zvshRrx$Y$Nl+!#ZB+=kbBa)c`gj;T<=D;F}|4m~VWBd$=@iS>VVRekvzGNt!&P`iN zClT2oGvbY>9=4d<k!KOc@waoRz!?QWHlix$mAjfNA8^1 z4Af^4O6%0pT5T_{^L-FmeDzCsqNm2Em^9 zS+N$FGZB2;v?ZOG)*ZjU-Zq4m_?$*8&#q`3bhPk*WPrIGPphEYv5wMqXTMd(%}5kF zRbFCzSbD*(#8RVHGNG{QNsx|Q7DY1iEF|xI_1}HC4SZJJI5K(;K}pZl?^On)H%$gp zp6Vk;?FeprVTS=XT9O!3M%7pVvWO7DP+KorX{!+&Drt{qq>35kofj1FAy#R5G`vTE zc+5rm9wpx6BGKXCNpY;=HZr+`_gT9V#MG`k39A--k5IfBohg$?Gdc@_FQ_qIkD&U3 zDN1fl_Jo$m=qNw)%y~rOY?xgX*~rK%R@BoU6?P zOrIwSmouVNI!lWN{R=F6*wPC&(o9u9AQi)2#zC_bDayfM&wdMOR%c3F0;)}t(lo^n zh-9!NvXQ2EfEr1s+I1FYN9zF7pOR(GRhoUnI#ieT--RTH)Z*?^4BF}7aU}}fE(y(3DudAtCPSAj zjrZE2`^eBdEE0{<@ivU}eQK;3J%peHWNN$0VDzZTVCpfI!RT?5!PFBfgVFOQL)XQa z*q0O$BX+5+b|fij_DGsuM!%8C9!4amc%@oW@l}L|UjzF+1K~Urq9|p(o0ZGuq=rIJ|!86{4pt_W)=MgX*j9xSuOuecy z7`~;$B9YeeVEMzfc*BG<&#v0sU5GFw*RkPW1BIfLB6KGe#*}NcHQb z&***xHA$IL)%PdW_po|09(*DTaS`&bM8JGxv>Cw{=YDK}i5nFDCPb>nW0E?KvAO|v zAm%V_;n*D3fUc5rZ$*ZyaDEt$J(38Rb&Ot= z$)g$VK~PhTssB_Nj2>&(8JbBF{~z|=1f$(g{iWbmvOa-RXo7lGEv2 z0HJf?B8Ct#2?3)ratn}X2r+38F$6?L(TTjEh>W5^WH6#Kh>W6xhz=@)$jcxiA|f+` z$T*0I$S{if{r;r9P_IA@ZBuvaqh_Mkce5m|9zv1>)k8>qjinx<&uYcW#6LxyYcWMl+pB&R16E~T z!E-$#;dv*aa}DG}ud8YuAJMujqLct72L7HUu@?Zz(8=`ps{?*sv<_^3p+3n{s7xlS z6Vr;!WwltGL*B2m{O6LDV{c`l3dQ46%-4lJlXpzj>Es<>A22!GFKkO=U3W3o%K+w% z5$Py)BZMKyPv=n9xF|pcH-NWD8)j8H7K?J6TIpCQ%E3GKGa`Nd7E!Is0LG<^E6sYW zjE{I%8CL;*h{|@Sc^oU_F0-zdakqDsq4DI=LmhZ?1@7k<+G-g-t>dyN)7^q^%oD*m z8HnH*9N4*A*3$s$LdMydPe{cFyB3e@z2`Xull2CGU^0|zB9u=ECi7Y5)fa46K%M601#y|ghrn`KP`5#I1MLZ<&r2A<=`Fr;e{wCIqckUs;VvD6ha3- zH@s4-c_sfUV(ho4<_<1$Y3AclI%$S;8ex>LY`(6`u{ZJ~EtkhE(p)T=qqpU9Tv_m% z9(8Dq3cq~HP<1D!O%f1f){LnVDcy)GAK4@>3f=#5@dPJDo`#d-u6^Ms1K`TI5vVLy zK)S?`*2oA*`7{-e+$+)y$W>{E%;a$UrkNq7`K>HxK&a|wnX|OkEX%Gb+2!iocZTR~ zHFHzbBa5NmP87UzrLWFI&WlsIhO{^I#S4+;&3tESfHFM0Fmqv6-rT}bF+NhBN3L8s zT=msjJvN4I-@5KDW{z-s<~=40Vw{6;;CVAde&CP;ZrSyjinZ!`RnC zUv3_2WE=rdaU*ui;sd0;ML7_98K44WC>l^vSc( z>&#<~jFEt4LKYvOA`?P?#$sP9Ln-u^31uWMtp31=H6O6!GJWTN)qZi|xDSjtHp6uz zMnq8@*K@*`PQeZIiSC&VxyyRGF0r^XacxgK+<0?7t8j2>N4n9H4tWmC7u zjbU@<>ob=aH+r8Olh$a?qcWBBh`d-xt$B>T?ffhE>%z=5;taPMGxMpm<+4)Q@m@xc z$`rG&mobT&QDv#gmTTVJ^s0id?xzlgpN>``WsBM$DOwHA&2wO}157O!VO;F3AwglB zHXuf!D1Sk2aw-;jaX6>aF)pmaVI5GxM2ZVaa~F`G!$%ZeU<#|NMy@N2z-gi(FRZG= zk+_ZlsKxOZC2y4>{9Kb23kz`AAE?~B1y}T={5Fldt{}vN3^`-FWv-RVRE)lQl$;A# z%49qSj3{h>qOe=GXS_$K;6gEn9UP;=(_lRZd?^=p+gty8NaI=5M zZdulQ_Yh~H@Bn4_4;=02l$#`$SNXO&4!6V7o)-RIsHMbkxK>+n6<4V8} zJ=w1I9x}e1dMH%(Q}{~_ZH!TJkb18n!QlCIZZHkqFL^XSsWq9 zLoIkp*eGiYaOyGVwK9a^3g=uIdLI~HLL6pyEj)YC^Wno zplmWW1HKc<_FnHHW5pujtdnt+Sy#*8LG1)xwgt92rClW?w2t5#Ev92-C>blWQrNiA z*CnCL7CP-yA@q7-0US7m&`5AxTI5E(A{awRyp+6;AgvQcpy++hkCm^_V46g+@GvpV zu`Hyy_O1UY9*+YWGBT$b(rY_0Jbq4(uW-F%%AZywWpGdSaep(-U78GPH}P9;{^{sY zmJdvWy*3M$OAQ$&FxFbYV;&{q$E*f&qZYBvB#yemfx8un&}3Kq;TLe=vjvn&mYZ$% zGpu8Tb+1oL#zO!zM{)NfSd>7;%#r1Rj+Moq4!$}Q0aok+)pC~7`V2pvHQ8A!c7JpVh)=Y~11;8fmG{@^R{H%U_vy!L&!>m!54glIshB5`itxLHt}@DiuPWJI={;nuGHY%Y@=<4zu2G~R_?q2W z@HHX0;?37?p>PLT^7%MU_&$wXRYSF;7_ZGR`qcZAV8xcfV`L~Nb%h-zg_!T1WhftV z4wcea7=g=3psFUv;56QlD{Jz2Hgj+Cn?xBm0e!j^eO-PZHng=et^;gFkwsyuNVA)9 zdcd4l%b3f`-6vMEEVRcBZH|59|*6%-dvS*rV|0Me! zTxFj#yFw1$*VPyTkN0uOXa!I)&K9TRZH1|ertX$Q2hf;0R;(DjEQzO&U|op772Y-? z4OlExjBI7L3{WH)%Yn+yQ&$j5kD;VfU(p}`J1mGJ~Hq{wQQD2BzW%L^eF zxol>aDJsUn=zv-w0`DD{zk-uofLfAq4&alPZHM8 z$uQC}V5B57NwM$+vLytqnlc+KAIHg1wveD&ZuvXNyD!D?`Kg#iA1CC~05gvakCDxy zb@$`=kol+GvZ?Su;;5vRW&N58(@3EM$h+1TX5lgisOUhWEcbU1O@*`K*^1-e`UGXD zzN*?w80VVv8X3aqI|8z3)`n<=lsh7-dlvzBSv+ac=vO%G1S;~?RJb_7&6lmIum{&0 zfV`{9fP!jV-we>}WNZffD3EQ7_wbnEe->g*KE#^cS%{RH3SngCW+R_M-ZR*9L%Oo6 zY7Fq&8lSQl(@J|0$%a@evOnziN1iw z2zIJdFxF%k6%$E@u{OiVCX$L& zj>$06sn3`jHnD}6G^&Jnyk+ND87Bg;GnVg`<-Okh5{yf|Rb>gk194hv&TD0Oj5h?| zLR|-rv&}#4$W4XL#4$ghn+jWS-3H`c>kDV&axPFcQz-XM)y_)xRy@7~&`L6%GiwFa zoMEg980teg!q|je?jhs@J|YUV>rJDj`As~k@^~Lk3YsraQ{gFGo~?5A z^>rn#UjoRwj4uPebIYb&=XzdR!&q|8m4o3gdfGXh0-xdwEn@>vSvp?@LR)EQYhBgk9}mO2)4j#*rVgTPv9n7Pa@z(F1rnav#2;8EdfD70&VT*E|#3vk#~ z>8P%K$-!K22OuhBTmgt|&x=nq7CwgSwLrzpGpeu$ryGF$%%dZPMN1&00mL4es~dL9 zzG12VzL;-6q?l0>TKzcuPX-i^%#FZ^!t%pAcgwcLz79X4bGK}YXGGzZD>C^|ga-91 z)QIJk6|uakB9ckVsV~a-yHSXC%AS5Z|E=7c ze|^D9l78=1^*!Bxt9*vPtYBqLzt6Aw{)7Kc>hyP`a$8i}Qc%G+Eh{wK00%x%kaf&*$+Y(tMiw~33~dw4ml}`H&(S2a9w0X|P5_b&$a)oE8Fao1m5H0lJVL8;~E@Gacv{;4j-3{cl00E(6ETke!1DF@4A&CrTZWuRj#3)p&VjM znd8=vLj+aT7ZTbPs0$}A$a2#lrD-rqmthdnFme%>G!m^~|a*lRKER8<5DOQfUvlhzv zq}Z03v_n(VjVcGUv z0*!@b+X@FTEV5Yoak3~_)t_c@dJfPEEc1DQektSk0CU0lyJcxQ#N0y}Rg*sJUQT!J zSk^h*dN9Xgu1d_~6LT}>qjDby7Zy{$i-1Mr;l*VwQMeqpy24jm^#qH4dhAtQL@(rO z_p7IIr^Q%}2L`*$iy#Z4%q3c_}k~a#AF!cue(U`|$>RUex z$G5_T-?dok3SZkVQr$+w<()c5k_TaPj7dp)K~ zdOW7m?Zuposh`TDhg0XpL(iC`P7qQhhpksEaguR z6DfT?LZxrL6r}H-3enZt!I?fCh$~#X)Ra% zNPGHhO#PIO)TA%Kycn|$a}Q<*=G}>jHLcfBzv>5iN#a0EJr6Mra|NdQo8B_Hg#zml zlk54u9rGN_@Y{@~u5iOUL;en&?#IIl%r^X_Gg8oA+OhIgxMu zRGy7|%e)j*`3S$`vD6iwxHP1<2Yg(ww9%(RE`Sepi>Et_% z54qh9)D`~z>JY!wNHyTL98=}cFW@V@RAYtsmdlf$>h((8H7`grocfV|Y9Ia7FQla} zIL z;3usdy+Y)t^39$BKia3-Re@ zv+7s()bAHU@>ALC3ZMSp6p!10O6Nq(!!fVLT#cy16%T{SvwB>WRv) zdoU$TUB6NO_3QCQ;kd+9Kh=Gl5MMAuzJj?n!9P4PWvI^UP!N>QZz!MgrE6dze`<$2 zll)*!$4lrR!Ia-zpsw&^iZnu>g@*~(hAEkJ)w>C@V}{=%EOmvM`v?51k(E9Nw}~8P zEB{k5Rc^^-hw|`QxF4u1%vln`=}2DnqSJAO*RinbPp7~tx1{J+CF`{OC2V&qreq#9 zz9kJh5r4^Vs$WPVRrM}WRGE@^)p(Uu@D5A~ja-f?X^~4XCI4_KrbHJWC!>oN`}9{N zrev=*o+YR)b5~+Y1YFFfV)}O4m;V-@_aMHX$Gj3#9CgK~laGm*I`UAx=~PDjP~5M4 zd^+Hog}Z)=UngzLF?D{YdeYHj52k)?_TT^0+yE(eVJL^rkkymKol-oPV>V%mg(Xuz znV-phtG|ZdA}n=1PT*WrCJ=G+V| znU{{cD&XCW{}cFM)x&u$@rR%KOkH8hKLk9nW)#n*iFs>cK9QKEW!`@|<_7St#q7nL zxZKyn+{9d-nCmdd;J*R$G)(=D_J;jeU#Tn1yCtN5H+UU6e_v0heJS`qjeqE0k0f~K zCgzE`aF;+2KMqWU4i+sOypF*Bra@o}{({~?;9UGeyz8+a4-6K!{1x|b!VMLFFuYp+ zdH2D}EdPADck(?LT$C&CCD?1hmVe$| zWw;8MMIHx(Ik|ESCEQT)2g9r7pLf5GGTZ>%Gz9npID&g>!2P(FDeL?};J{pcDE;e! zp{5`D!%)I0uS3Bf46l}d-n~|x$X)dk^6^seYQ>XxAFS@>zbIG#50kgS;6HNte*t?f zsLRD$3rFsQ;nnibyU&IHau6W?%&G*$n-OeIK)e~jBGS~-E0A40n9v^LzvQ6~zDf*K z`&YY%_<|YmXAyQbun0IX7mxTj{lO8quK-p7tAP+tf4FiRD*j-2wfuWYqZ-c5U zPjy&*|7;MvTK;+WeEPxOUp|6g-V|QQr^;9j_vZXnraX*jfu03I_~2LVE`DKuP{Mt3 zE_{DDavKbA?Hu1KDzwDvUs-Fe-V9M?FfcV^(=KN*P*QfZ; z1Hsw&p97o=>;yvj-i5sycIEs-K89+Bcx&Mg<{!enTzIwOspTHh59Z5-S1X?2uC}bB z-gPc9641FsE1+|UX@Jfp<^VdESODl;Vkw|=i6ej&z*<1(5;~I*g#K^|_D~+3OXzGN zeAhBVzIILE>OF8Ba6J&*@4)^|;BMd^;9lThFTEIFZ^BtUaffY?&?GL06L!Jqxd6!o2#x?G7w~#O zasiSF5ZnexEo z_S1JQ|GfKD@B*~u;@d<1t_LJXqWY*VzucZqppI~oBk2GFp5#a*D-!Z|JoYyNdc$m6 z&OPAQGDG-k|KKiplm6gb+%L$bqgUnvyg%n&9dGq_Nav-xSBDSZgT*g-nQG9>inYRp zc!OCBua^5z!%1GJKez>VJ*yewzXN*!J)RldLpp<*weW}QUY*Wx!`H(9bBXs}>h?b1 ze&FF;J!=d~R!g99Qk`G9`Ij2~x)}Vg#69%8oB9c-wwJ6`z<;r(;&?KFI%KaTuO*qR zP~Wn50JDH{&V4EN@RMynYgZo_KSd@U?s}!7A12*EG2fg(e;t6489+Y$M!7f+|EYG>uN<;1&a(Mal zf<2#ZaLb!|?=j@-T+J%$y+=@qQOpeKjF2YW5hgF=Ek2Y`@ntvKYaI0D{4amjBW zJiS@;V*K;r^vY2!(CbGbem#3s4SMwG#rWsL$zBVd$i=^hz91P?!ED?Gl0g+n22~&# zRDonnL;nl;`xtI|Y$!bU6Wp&$-1Xj%9{CCGibId;NKRGH0|j@zAfdM)!ZQ)UeK~H2 z0;_=4z*=BE5d81Q{vhyh0*_!m20Q`id6n?CO2B^-_osnc?yZE8Y-=@scw8m8p9apG z0KIYY-WGPeSIor65-0S?LCO6FFew>Bhqdv5~Dmq4=SAI6Fbx3EhG=lECfIm<= z!B6Q0eCe281q6-M!TnL(qz!H$kfu0+)Wh`$QW+p-NDSk@CWm+j(;%x;IDfH1HoTN=J-DBtvMjQYQ0=!hbTJco7k0C9oITA?!P#&b9s0>I0Q68jw zC=b#@B+#9Vkna$0K3uR%o6$gcwfyt$lZhjrSJ{={5O1|#wSPYU!5+%7BNtEb%bUUr z>8Q+kxPkAR`th%J|2jC|1nviPcO}I49QNk{DGrlLvEW|DE)6To0jY8c?$!Oi*7soe zgZWp-I~acO*FBqoU>p9uz`1}l--U1&W3Pr?IsZM_tKo*6zw{IK2e;xb&3_@C{&3_r z7+x*^YWHsv*PRJGfSHGf_cTuoX<;6uz)+w&N+I7N-h8-Vmm0)@@M`(z-S4i- ztMaYca6?g$D_29$5*t2#a13w#O)=?DL6Gx+PCpjWNo z$4@Q1KX6Id6;42FM_uu^V@8{5FX8~bST1+*cgC3;&f0wH_O8P=ZaR6>YmVtUb9>ju zlQv`UZ(HxYEt@tM21ML?=CRt5zM}b?h;RtX+5Zg4%&jIrEG&&fL;< z>N&k#hpc^d*I}CA0in>U>-w5|%Y zuI~Be1?BEE<)KDa8A+1wt}{+LW#gtTrw%zw{l~KXZQEe50;7;GA=62T)fDO;S*wDQ{HY!uf>lr*7MXv3c``@+n+_Eu3=3_D$PQ zpn5@}JD#$ULSW^R@hKZmq4`fZ`+zg}MupM#-VGa0Jq>$YD4c-pq_Z~np3wWYt)~i~ z7aC6hVbhjgJ{T^iYz#h)Nu=T1V&1%IdvBV|_ER=)Ae4FZZaU*sZ{OZ~#=->~4_Hh= zabUbC_is7t)UzzTQTfu~U-50F+o;kNqC*N%oo-9HJL-#(D;0~SXiQv;Mz%*|rnf~d zZs&c;B9BbAN5!}U^-{&+h`MMdfpoRX-CL(X&Cy=q6kk{8GH>0wau3$@)G|Uea5P-K3RqIhtCi8xgtFd!k5| z)~G=SIHVp$uDNIdrkLZB$Qd$O9c`8;-%diZHQT>v9~rS5UyP>9))tMI;kHo0=F{Qb zV>h-K?PXqD%Tb+qxv_0gY&KfK%!M9>tXP)XqIz>~_le;=Q{O$&C>iA>(0qOHHaY)% znx$x@zCia`m=R6%-}>L?Jf>&ibxm2X(mLYaqfDzA)i0Muquob$P>~c! z?r~RQw##e-!#zO)p><<7O^rLT9Mw0|qgCNx9M_g2(6$rSr(bnreA@HrLb@C1zN0jn zqxtc;XnYr`wPPI{HFe0^LXMRK4Vji`OHxO%!#rlsv)}9e{ zvHJzyK8sxz)$`|BeukX2o~o=x?*Gzg`>u~7pS5@R@+rRIWNjs-Y>eG+lzBI%M_E+$ zy61P4@fqdb=gQ@HOjO@hvRpqr%v@JjXubPyay^RnWFqn1uTi}{nhP{GN3Hmb#TK_) za{rMfH=IJLzON!3)%P^U6oV*=eYJl(i*ZOjqHndoK*aPhMZ1zxbVVh4YyG^a9P`<1 zOG6ZQSoZ%dOKiB=|A!>|B%qXfY-VD8v8k*$S3~mHHcRB^St3I!QFW6Z3ks&PQH!yu|e(a!JQ&YhywjS1dE@+&@|* z@b6iqherZ$-*(EtgwK#@@5@Kk`ZPTuYxabY#hxpH(Xl-zpS5Xo@4QW0mTI*x zL?YjGU(_AUEZz)-3iTGda~Xr9W<`g(bD@tGX$DMI->GG=k z??Rd@MG&_|E6Gxlr}i{YQ$_1IX1HXP94tHKTy{Fhj^$=$mKzK2v(iOYq@%!nj(kA` z)Uin3V3aOvT?uN+T(xw1I)F*AD|ROpqY3*&S$ zYAZE#juCZ_o?DEX@GW*mBd3>b>k@T@0=$EHTm@*c)HHcbZgoDqlk}Y-z>Xi7nxRa*LaF1hCI7fu9HX9 zr<5A`UlzN6*;&NRxvyA}m+{?}e3#2a0VVgp#8DD~)aYKrmW{kNs@psMtDB8#kH$^6 z#;{6KyNEPZ_CxzDw@`Fib$r)twRl06$xo0#t0w~|7K^PTl-sY!yTx*wQh*TBKL%Af zV2ymU*2)(5Eiy*^;<(Z`$QL1iX37 za6FEUBITh>zLTm)xp;vUUfUcanc69~pA4FxT0mbI8@4v5EXuax;vU`YJ@fW<4r$>q=|0#`vh1DXTv2v}pGXH`*kJUnF960SyUn zc36B@X7LTw>lwHCUR|f{*$<0FKX5h4>B7IeO%>xCZ5%~eG~knV%No_qRC}VPftayYcBaRWl{T8OePE|m0derI1BupeORj;~u9!<^4Ktyn&mLGYlW2XD$_RG{wUjLn zGxkl^C);V2lrXt+?rU`#$<6Mo=lRvD=4#=Wr!U!b7nY}QQG!0J#$llg{Z!4`93A%J zrm_QxMyf8{Wm*xNqXYYy%09_xec7h62WhcdQ<)a}%Bk$*eyzw)Wgp0LGmMV%ZK57< zD!Xd9(I(yEUy>nEJ(cas;(M`E*%#sdy21_!-{I}+hO}+d)?mO5;9vK3|35v(sJZc0 zm#B5x6?TgiXCKMAM{>|%o3%gL4zY5J+V6JprJs8=X;-Op4{47X*13l^FH$w*G~aoS zbDL;KR)hWVlJ*&QK=A2Fd_)#VAC0@OPoO1uNkxt8t`4*qA1SSIclQajH(t_XAw+$N}+61Nr7hJEOj{UI&(HERU0~Sp5MXZ zoShYkE*KLxi|U6q{mt8o#uh7f)s65~qf$z#j=RNT5-qJrF3iZcWG)?%ZHC0j{yNKq zkv2=9mCq|er#N>rOKx4XgzvWSU1pn`ZHBZie}5-0L6wv#B1p1)ah6*30;6P;U5%1W zcQsI;?t$}ck3pJkl!A^^aNnsY#n1g7Mnvc!rD%)YzbB>GZKY`A+n0jxzNPrNO3{*( zg5x+5pY2^oS>1^{uBvgLgOjbw%w=OZ#rtJiyhRjGT8`W=D4s~4W*r4Cf_SZ;87*Re zyij{YZ4>s>1`39@&W(y}BkU8-hfEmubcUji$mT`GE^W`Kx_v{{y~l6R(&+c~e4P4O zp14f*ro=s4@f%H^45BoOYb^@jgFZC0x{rJM^pHd8O|iSfa#!ze-Kq3FQ~v5K&Y@K# z-9C0-rK>`Sl*8ajvupi|-M`xC_ttTYDKk)4=_k8yuGD?zjDBQqfM@uz-a~2#Q>Uk062=1nF z2D`lAI`s;~ ziYNxDKy&w}ULlkSBWXo*zev48C=o_dl;(btdWBFTjHElw{Veqgp+p!-otk?z^$MXz z<0TDiZV{_(b1NbzVpK<}EMHOLhHx-CI(BEVUP+k1&IUygX)SXsniFM~SBf|6=1^&^ z#=l`vRFg<;oBO1e1)2orM#xhMKdEwa|At@D^Q8!~AI{S3=6+-=Nwgo0IJzU+i*{^} z_M0MmSjO%$R=AdMh#-RQ1!JB?PHWs4cQ;}oLS*6k{JBMQf_3vmqp?~Kq;#rA zggwTZd6Wqp1=8-$EcKx+*@!Ga+Fh~J^A`D#Jd@FO?^9I1cr)ikW7;GCpM#rF)X!vz z4YQ~>sHm;c1WM3dju5Wu_62T}gSSfRB`I*X6;uW0D1ws4oHmd3A|?BXHaf}^g2t;B zA^6*b5d1`zzoAuzn!V`$d1s(=HJGI)(EXEQ(&@}z5e&$Ad+Yx!O%lrMGP2bc?Gt<9 zk=Q*lf?npXdHc#(EU}V%nE$Q>ud6QFJH}nr3f1U-WO$!=d)e4vCHF(aQx;-(?b}7m zI>N&9R;I3fd)h*C$(58Ay1T7>NK}lCTt_sQL%fbQ&i9R6oErW^iY26{Mwyfxx`%u? z<~_1MV|p7k+B^?oF20(vPRDAYJ5?g%J{I9(&r8V9eTYVS65X$SG@epD-9|T}RwLbB zjPQ0gC|gZ3pt0=U)>AG|istfZ-Ki~XhC~@k%c8qXBz$YMFY+f1oi?Y03HUJMvNEqY z4mO!$kXx}MsAgjhPdPd&&0!i=kMz@UZU-v8jqYZ}+{}!kW1s!^i%Jr7n;-2Tk7hz& zh`rOA=tDM%7&)4VR%jzsB|enx!va~F6CYYojC<4xsJIr-xNeW8&GS7N;i#iE8GCsW|Y3zH3CmVpXE3}vHA-l)&M40%9KZQoKhnVL=xZ_Cjb)!+O`l5TX-g)*j5 zPm6<8;zDX(`YcTzOcSoEXW=xz4Em$uP&JR)Qt(o$MoW-b*bSFj-TVI1K}|^%C~Aq^ z8_k=_v9|b8mf*0fVnP_XItOb&VVirO4XW%&gTZtJem28>-2B`lJ3NJt93vxdmrE%8 zY2!rU>qVmBF((J)If?@{B<|&3nUjBH=A>HUrI6{OcSV`@ku>o_(Jw!*&`UcLZ%BD# z0eR`K?&4^~Y zbIWZ}tEST~WS(&|35jk=_92imGb+xv1L;=~sWdRU8+>@t4mz*>J6k*kWdJZjUlEJ@ zWgM>C?D+o`e0yFI-<7-~vgnRBDr!8ED`O?r(yq)Qz5%y}nSV)2Eh!Vepq7cD5ePlx zr|AC869@<@ClkpxE6et)Y%(8+E+Ve!v3rQftZ>&A+bWqeD$MB=W^FSPLdTpZ(xK%3Gt17Jve@6f6+s=>BwKHr+?3B$=vUk_t-Og~kjYpa&3wz+XoN*1s^((r zXtreMQ&OKo#@Ovehg0$Ay0@wC?PKv<>$)bR#1;@?dx%iv&K^bhjp_(nB=mC*$I-K+ z@tslgoQT-!u}n?=v-FkdC(Z5Ff4oG$i)RrzLO|0+Vi=2C3PatKeIut*h`ie(Z=EB0 zmdINza{dn?a`7K+fqH<3NEw9MV8MKZ1u051Uf_kh=@(5?JWDFle$c}GqB`8-0mG#v z|KHk9DVhmE$@%=uY5E_<^R;P$n|(3&jfgmM&m(hknsqJDCJ)EBxL-&mm2BWkyhtij z-4%B3+5%sCOf;c$M%3ZnhS0y8+7?Z48`UXhKz|^h!16nRGj1H1MED-3?=AXXkaTkH z6!3vO`FIik-QAu@Gyz@pBYnbYZMWnlxgbrg?oK7&D%mW;EJ@66$Ygg8&F*F^6qN5G zOh=EE(V~CN(F7TEJSE^ie|66)?iN3#FcNJ`0u~GcI<^;1=mu9BV%@uy z0XELvY@89W>fYCjSq5P6?i@Q-3UpF)O~m@-vJ` z{C@Yjf~_PlD}HI)u@?9irD)dNXqo0Cs-R&)PucBVjOHNCph|G=^^$9F&Amz89Oc{1 zZ5Er~&H0RVFL%@VR?jSfCbyv=AFu#Xyr4|0JGWBX7tYKsl+@FhwwO&oYkSvwOTq0RX zhmokK2=GQIY}MSCHD~#n8&XRq%Tn5sjqZIri@sC*OBU5I8bQ+t#s3^)A1%zOjqTCi z({Sjr(aDv7aCs;8QNuhckmVk?dN)qN z+*{Z0i=AaNR0%>xs^};_-on}dv+D`U#K`G{(T$uLHU{?@BC2h3HC6l3;_LYDvfeqQ zI_^7K5U28^B{%SfQOC(>`E@c{eotKwf3$esLo!qB1yQG_)h?TJ8CtpyS3Hu==4JZ6H_U8S52t$f4B14y+6HHGbz+#)nno0J z;}r}?)nG}BgPXz3A&cECapo3}jory@Hg|Df%o4ooC1yWzza#rx9`gDBZWi4zdaEa_ zCD2GO+l0s}g@EU762%=pyOad!cK!Fa^V(#!e^$OISta*ZiTzDQR!LvzVkR9f?dlMS@7!K`z&c-PWMf*-i%X11UZ?rj&I&MnHD8g{%aA&AbuWqB z=O9!& zV>>pcLUxziQV2J;eTtsNVD{v03-$u@W>hDw|LzZ-#V1_9oxEtJhOZXQ%jDmZUzlsCZB3TlrTho5u?`amD`Y0!NkdyR^ z>cA{x+rh=|adK1#Z~0+g{bK(@F=Z9eA%fBGVCGPCy~$uAOMR<KYoJ)Va@)udRDVPX=L-NwXnHe9jl!pQnQWj zy%Jlc!2|z<&apQxtuR_x#r#4c4zZq{aPOdERb+p|`iQAfd^9aVT;+Jl60U%hV9uqo%uagfc@1E7MszTbr#|xTrL23E95SE&EX< z8Mf6*{l6^rX0ePQ26`D6ZMu?84vO>Z>Xp${>OZ;t(PKK zA1Gw$U#Ir$KLg*RGxVQ>)&bJjP`^~^-+36HnVaS-A9n) z(~R&xY?s9v9_yOdGfAJJ@$I--<7es4{iCU1wQy~zzepaty1nj~6apignX zGMbpPS!6lj?3>%W#oo~oYviW2!6i1)-6D4s_w&2LbgKIbv4W^5KdKyg1rnbP!C@D| z1|=4^T2l}V9!-J%q!(6Xu~@b$5Rb4Z_94Qc#)=zfXWiL#DC7q7 z7rRff_|g+%_bg(;bq@6#)N&lVpU|ch*4pKhJ|YFa*)H;0VB7az0|}zOac0_x$wkuK znSG)TA-yPSGD@)YJ(VNTrxCnH5=61Rh!C^F^5zO(RKtJXJUJN^XPobZH*3E2j$IS2#Nj=L;h7BnEB4U89jv z;)n?xUkx z(nrQp5;QC%YoTB8Y#Gcgi~VgoLqOYmX1mZtr@qCTtzL>p59*`=7I0qlH*1*uQH|l&T`M%o8Gn8ev!Sl=ICOyJa+%h z49rf{eXx$rY8}UR+1+~QE+A)GBDC{Vbno_yaXLjQ-eihWyy^WBX7=APIi%CAZe`jm zb)ik_+{zpqjqKo>1afA6{m>P3JyGTCWM&2G3h38%A4#kr+}*$&fLSc zL|T(wWJ9k1jwO<^D!>0*fLWk)C5LRC;Cos;rIN*0&&7U3)#|AG#qPffMzlCadp|w( zcf>6&2S<04q0l@FBN=lYs>5N%B#=k6V`EtT<#Cj)s0ydA7$0{ z48ez#7pA7mf&v4{8|W1|_jfvs_W4K;QTm^kX2#O+;5*R2@9d|(_87rma!*-#XazB_ z=x8JmyZ?iyW~(0$Be&Ov+=_8xwYFQiO|+NXK0vjR<}9Si+1aSOe+OA59QgLR=euwB zXUc?|G|Ano{l)~e5lnJi9b{xvi1LUA@eu9O9{em3$^Ss-NZ3Q|5Yr|1{d}o)mO`N+ zm#xscTtCz%x|KRsuRbi4`IcOnKRIxj594NHXrh~UmivyG2a-Zc_etMETAuGhB)Wm} zd{?8V6{akb)s)8e2kZm7R26pG?^F|%oMpuZT4?al;{ObNXC~UV8jTG%a$**TAmfV(L)#>~}Wy(25{5*-XJNNgrygKd2 zhFS!M*iY!RqO!9M=Z~xbsj5lIrir*wImvM=ZsXk-cZ3?d+c5>3J_kCFKSjqx)6;wl z{2AME5qN6sI8{w|6stl_y^tj&^(^#V)QKeH4-GDgn=VV-{+3OahOwI2A9R&{*0u24 zc>AExOKd`IEo2v{$<+iI#0+nOhd*ALi4cGiFOe%aV#h^ka1+U>6k|Dj0=^php5b8}V?2%{y z`M}#XD7ff4qHV-Tc3p3WAV_3EsEx{#4Eq*3Gs4d?G%H$NJ5`pXGxY|id)60yB(eSq zT~S1b$cZ0%nxr-KG|zlN)#4Yqk&t(`hllqnF$~Tq)TUmCjLuK!%@Do5$>2+SPO!~q z^d9$hmlRf%;0T^JbnmR!eo-RwjVflzJywyCM)zSdQtT!#(=0Eh%xlXNQ$kJaRVbnEyV2~k8GH$+nz{XE zA!?xq>yb{cysSje{jDt(CW+MQ-d)$mm9zgnuME?Zc?;H|*kHw_ezw!0kY4t5KeA1P zEe-4rb=OEFz~1gj$o+Zlav~YKKM_bT*(7JuMH8UfD(D1}X71T6W zr+VN^UBig4N19TnVv?*t3R_ffD-t4Zt!Wc#hRdmeib!`eOCeb9mxUsCpPA|=X?2Ml z*V9Osh4)cEMN*X5UCCr9WwKA4=S4(g_a$%{YlMS#`K9)(M!PV2-7eewFmXLAazT@e zyNrCI#9E8r!h{96q;;|-`i+W2pR+`ny+sCn6R(o{waVDiYU_k%AP$#Ap*Cth(kWR< zyiaOm8pk%xULss~%Y<5Oj)`5Hlo*|8!pgGy(?!%wv&4w+c>_t3U-ZvuViU(&3lN7{ zZJxx|l_ovX>Muv-_xn_0D|tbQf@W84`(H|fx45UzVlFk_)pgBtJ zdONPw?M(NeRpcIXAo|#S7Y9$~&v1Llv2ZMh?P`1XMJohN2P*7cYx)mb)1#0MyeXtK zraPKqV!GC0?^K9B9o9OBCv1sqM(l31J>y7sZ=o$&vv4skiS33L>fCM&-D12uSfoYl zj#QU14z`LrN=keuxlYnbyQ%LnKCeGc^7`@f$~~UTu#EPywO=%iT@*9gtXWD25#p|& ztpmjRb|OcOL$ft_gKfu@s^^t=SOJYX>{CFEGwGwyFmO{y0j-FhD#HC_e=SO?y^X7b zN=`MSw0P#k6{3*~B=z6hmh`ZRf^8yYZ_0DQ@D(I(1y!zQK z6?>3A#wzBzv`8i#s3au3J5R`b(?*#oajd%Km#Lm)+iyzvysU=y21%dP+*Wdb&^AVb z69`p1O>j(Inh3DWpe3z#-eJYHhhC@S zH80~KQUXDQM3-wC!POvH;{BzK(v<#U*8|{USKy~meqvONdJ)_fay#eM`wdE527D}u^SE4dhF_nI+hLOGfqXET?^Bmp3`NViNO* zQ@R8CM^?R()QCL|w7qxRrY+LjV#?zVW}?v3@TSDtjv$)iRoXdt6{w?_ryvek6;T7g zTPkiOWOTb1zR(<_*W^tIlu3fwXKWeLp+hnvB6eFLx@JPKLJ^7H(!Qm%4@9$liv`5o zg1bm6EL{qsCu89Bd(jlWi`=}&$;JDb*tl*?nM^o}TID=1@%6I(PLmrbeh!o1qaL|; zFF?||lIK(3&wOSFP(!-~#mYVhQXjHbvLjCy;1xL?CFJBkx0BuEG|lTWF%o-NQr#jS zI5YG+N?oKpT-p8)W!qov=j7-(Rg9F1uZrs3Xtl@L_6SIHV(?hvRXFIJ(T(=nkR!KU zO}RAF-%yNO+k83)k=*ZK%vEc#_m#klsktW(qBG!8j_IkXQ+ir?rSeD_qUOIu}l@ky+hAI zvJL)8lJ{4 z9UzR?CJ2;v+thy3=+RgHWznPk&g@+xAzzlY;RH`)*Cs?Wf|H3moiU*rJ*9Z~Od4lj zI-Djw64O z-BzxYvgh1Tju$rDBs`i-i|ssiJw`j)T3XIR>^d4Zjn0Iyc1Q5Ei?#6~oKDy@8;z4W z-G8=6ll8?G);yP>DbbMhzw9yRdX$c+-MkKp^yC=3M2m*xCn%u~<3=kR+D3Z`y)ldn z_4sca>G>)8^B;%w{Hxs1aOH+-5`ej?JZ4Dm80I+cFL8vQw)v#(8xt;cPFS~kcUdi4 z#MsUTy$RQbtz@hjApb(4NgjCtDb60!*#Y{`YwtL#cT@5VV=`OJVw~S)lQevsDemJs zYm>MR*W`aJW{Zu78MY~Nh&|Y+-=i_0^jX&x9WI0W@$f|b0n3WlEcdcT7CuB%P?6G2>n8l!nwG`>9 zzD^rW^#y*fGfCj0YdXyfGAi%SDt56OiCq&^#L=R0y3q}WC{A0p6CJS+n7Zu76Cq4r zt+`!ulf0e{S%>&xTCP1!&atR=w0+j-jnF&u+r`yP;xDf%(E||4n5)Dym zZnw&kPE}2hZLsbUZ}N_sQO8A1`$Gk@mxisE&E|`g;^oX|NqLHB6@%GG67aHBMdLX7 zCQ0_xd`tacM{_sSv91%MMoAMea=2t_98OAy8Q7}DeH%xWppn^85n;|pivsl8yctnR z4cwl%9~I4^n~-m#qhV0%ixBqNrVlIgYzfBdX&`!r^wW~Z_nlvE=9LNLV&=ys+!x!* zz@pIvjUBtAVZ>X?^GSJc$>x;P#C->7j87jZaTBfPbu>4J3e76*URB!H;8}}T{s@A% zMR!e|GPH=AxgYjpR1&8JM~|S!=%DhQl-H5%?-Qg6UaabM8h2P>>a$Bx4~^ZdHYg!3 z-u#yOpa^IvHZj?#2@&spwg)*@(19{ zJe~h!aeA?Pg7qYp_eovZ=)Q9{Re!HAjfjcHGIvlWbrRJ=dzVIIR9qM}StpvBb|%du z@=~|cWtzsh*`PLN{38~rVs-l`n=uV|^ZQtR(Jk|ikD}km6)ygxaguUN%23v+8gC&F zbv61Ea8QTK)U8cK4^|&}IqND>;lY9q{psR_M#!gC`+>OXl5SrkGw)$sBhLg%jaSb}+C!z7z?BG@UFL55-CForzQ zar)LxXY!rAj=U9~k{*6Ghia;1<2JFt*$`$@-zL26sTCWhdiRHIiGM+vX(4&sa-T3e zEHMU;i92=LB8j%Hwu~;ZIHuav(zsD8$1=?p(`D0!hE*$Z@)JnBxA|l%zJ>3$@S``{ zx#(!7HJw8xrY7HZdARXCX4OQ*WVZ!j>kKPkdlc{S>i!VY=m^m-LK;I=8Gpk3@8?g} z^e!e{|K=OdP;o}g9on{N-?nHH%i4T@z?{y5y6KusyiM)V6flmenne-j6NZj`q3KYK z)S&nmn1j;MY81J(Xp3}ZsiD#0H`=Yl(Qb`Idmj}|_Zvy0s!#;Qjp~+Y68dqp?oUPl z3;X0Q{U6sI&6p-l8DpW2Y}e;WkNLKm&2^i+-Wyt!w_iuQ6D<*`jN{gm@QPYJ z)p|d4L-71`k9CG|R&H+XB08--bTcVTE=SYaqgiDs;T?ZaH2Na&=hMwZu5IbDSCEZ! z^0bye3D;A{<#;wEg%qH%?_|xB#+^nwID_D1MF4eH6a|<)R`x*`2>tYI324eHxM#N5|Mcj4>W0C}->Q@k+&0-&#t? z>M-+lDoEA^w+cn7_(B&H{jX?I1FLHHEA)JmiA;Omr-eVkl>V_m>+#9PcsAsObF+#i z1i4#0BkpL5p&QsMM4&+K#D{=AvPZX^7l}dZMp6NbrN{@(U!XLK!RlIbF>JLMTGAMz z;vrRo;L$Ye(S&vq5${BaA-|&jN6m{0whl2pn$jN4oF2`BmQok+&S)W{nR5=4ZNMcC zo@Vx&9u%wY-4-qAh(;?kR~4usHStW+;oyC?yfd=Y=AU$1F)qnnvkCUkw5~O=Et-k0 zyf$UB8=9RF+HSJ9s^?v5m)}|85Rs7-;#170w&kPqUb@4GVM)PMddbI}{xe|Da34XF zfb#11h`N^LJo}}3w$&RX5zh!(1pgHxAh{1#CYO21$FTKmxn*veyLza}ApkhJYQDZl zIZz*GF0S&DutRb}z^FtscDu%uW*XgloTOC+0@-#ea&|l|t?8{OQdTMhMIb}i+k=N) z##(~i2F>m1+8&H9lUk8!#}%X5OsWfwMN*{l1o!>w-d+WP;%FD+j&0ibWeiRDYx9SY z7V|YxkH_HdzY)RWxUu>mB;gZ{iu-#BmG>C)^@Kka^Yt%^2razzq+V2woSB@|rDy+C zSsywJvMA%uK!{b7G&$1c8(LXC;iA2eEt7N$FKo3W`A*m!ORCmf9eU6?jLYh$b4@??ap|{nH$d9JSY#aHpQLe`n|;6 zRR3F-Kivjs=)0KQE)#k>CDi?{BDa&ESLeJv`F-ZLQ%~@>`G?%+Hy*I~fOF1)d^Z+l za-a-{vcTlXajg2)Z|E;f=epADt;t1e=G8Bsj})UOQ}m*Z?bJ*=dZlp^?(t#hENGwf ztHQ-hl!!V`aT_qDB_Nf?vO5Pw_vm@aUBy;XenBb!FTD*^t!h8hn&Lyf0|pn8RvgU5 zj)#LRrYlVP3SF1K<9gW$^uqotm-{(>wsG6x#XO+}{G~|^VWhIi53HV>wo5i^jJu~P zl`&-U6?4kP8;$Ce47%tD7awg=|7f(L7S9rXkc73!$49p*mR9$}YQLhpXCLLsA4UOGdzz_#EW(^FyP>rS`I#80fQRX z9}~+McX8!Co#UOm@PMt8M3Zw=?G)%z~?gQ||+ z`YE1eiTwEbr?ae2!WE6(hk5x#;@gk&aCx12)LkR}5dM@$!p%K^B2KMkx}Kz_zbW(j zPJ(@1=JW%w{le+7|1tBrH^KgdcPhG1ovZHK>K?YtiDw`h2qNCnc>xVYHW@|kB6d|? z=A)Y}L~GPEHySzDs6Z(|TEqq(7YVkrNj#D$>QSgWg>`!&jvD&yL|RO;|6~^JHP49sbpe+BQN5^@(QR;-I3Q4B{ zj80Zlq;mIS=P+sp+n|y0{u)?s`?8gcT0`WO9iX2;+6cQ|VV@u@8$QqWe5_f6>2(aL z8mE~3tit`Vvb?C&fZVUY%F+FW%hBZss-YdDs-p};@GgnpPtKLE5f}lZ4g{@Xw2MFR zq}x`IF_4t`nGUKXrQ@MW`q1$lon~~ru{OggYv6091P+`{N@I^Sq-;&(*b=rTYmwgr z_&3P-+;a9N$pD*Fo37;?uaWon8ns?m+YH_vFT+_vf^CL7Tl0=&4Y*iigVwfm5pPB5 zGF;w?xu6c`#b&y*{cg2Rv1rPu6F)@zS98%Oy$(v=9EeBiPV4MNEgisVu{8%6DM)bH z&f+LP%Zw(!H!Hv20%?3a2_DQ);y?1f;g&MuGW;mNq z;ZKRp0u#k_Wb0|OPL$DjmLfK7%{S<5G&$l?8RpKV3}3W5w=0O^t0amEwXGUwyD*MJ z{Y5Bbtc;wB6VA&dVpy&izO4iDR=A2|(Cy0}PCPYT;qc}ml@46RGI1zfOTS2=A6ICW zp_v?0!fKvr&pnB^=>-oL8Bde?iaY1Trxj0&kcO#mKJBz<0wxzQW>9O~J5oPjW`|AT zm(4>hbusdk3+j{uJHOB^r}l1zIq7JPs!}cx3ag`Y@8q(lj(~rs+n%NospKvYEvlEL zEWQi4B+<8qUhp*}88^~=R~|?0PoZQR_;?zuz9F4b+cCYjRLPZ#Ki{D%&Dr0 zUl3ju(n%Y_i|Iu7VrMi~$DfP6G=fwkdT9hN8LFo8i7r{v8?S+47TcVm;JHI?8y%I= zgVvP>8J0aT>qaSAwf(*GX!{SStI-M{Z^`X*R9En*q2?g!m}UX^&=f zM?8g6;yDTseGMsq_?;xdw4p)oVzltf^yA#MC#*O>$|aC$$b?r$`}@``;Nm%U2(Q-k zXt10|yN{~dpwdI^bIH!KGkJ^#Rlm{&x6$tR(j$?-BkFlU95M ztyo&9Zli*{f`;U4lDPjJni8?CUn#4mbuKU?@)BPH>XFTMS6#hcx9#8wb56kjFbpOg z9+mWxhd)c1pvicW+pck`QcKMoiZ$ueGb0I$uuSYjEUoQQz#y|1RoeF}sr8kdL&Ol6FA9T`oY7j+>-rzA}CG@^s^ zvAfgAx@{j%Pe!UMt@n%7l4y$FI#?pkk>&zJ@RX;Xt+>65n*2xuIYOI?yIxteo+h3s zxpd!$m^NmSv_;%23cfhauTw2XMT&GHKsv+RSMGeMJE9dWM&sfz`$$z6$33G`TL2sx`gMqT?cs z8N@7+fvBfywXQN3nh8?@;Rj}>(~aBTLw>JRey`RTY>s+3fs%SeIzbPew+S7$94N*# z@kB8-{6ihHe4b4!n;Nb=vUAn-HZ^c}*sEhh>xl5ko;T=fUK~=BwR&3P-sH-0@}TZH zv5mL;xJ4*j-ed47NCP_TZHcsK!ERw|m58ceqBYvx%5;mNnC0$9rtPi>u!B|pK_~qondFS zZ8M^7TbY@R_KKErn%EW{)$Q502UDC|RUF=VP;m~aZ4Jd-+N0`-+?W5CaiNT@~V@1^UXTc!)1CWMvx7n^{acwIKFNiWE% z1=Q^aL}oSf*i{&sCG2A)45&#&tb_V6pTJ_%S`(hV(lMd?J%n%ME;I#hi>(DTVm0~O zHetTaNKyPIoAou>YhGU!xdjRC{AH0_9_*GJ;ih&)vqZF)qovj^%gtm_)I(KjWk$Qo z)Z>Mvapwz?IF^C8iw_BCOzzjJ7NL5y?r4&M6C=;dRt~l&kP?d^DNk4utx}JG z#yxF)v`-K3eX*%I5Ommt2kNLzl~L^Bfl~^eWQ8=orn|rpbSk(l45+QPs+((p%|i9eMv}ll%z?0@wX0k32AXje&jj(Do7=h)O48c=vv8g@L#Zak4c6q~ zzuPH(i)gBPY9R3Ay0o(fC3}$^Zcp?#KB5 zJSH^3ZwoY$!B%kUo1$6mDE9{z5Z(T^9wRd{ktchZQ;VHGg&6_yNuPoyV{JXyNZ9U! z|HUQNc|S8wJwt!P;{Xr%@`}37U-`X%;r!k_`_{Oh;a+ebZfvG?*Eq64qmh05@j119 z?>Q$Y(U$%ISDUL(xmGY}p3um?I~iU6n(k$con(7rdct%MwUnv3T@kw%Sl`-pvtkAE zbW!un_Gls;u>Cq0wzY%XUZAWay1Zh!VZIsp2lTJQ)iV z&Z6@43ewo1G#-(XcCxTkhy>ba|uxqOZ-&VjamE2 zI*b2XJY4||OiC^8Lt3$06xT|s8~>k@Md$#gJ)L-QQ2&-h^Nr|nn@IJz3~UC=sD$Kb zXasg#^46{t!6e$>GhHr3jn2ONP;FdKZf}rkW7F-D(*`eHS)yjB8;ki}#uT%dtDntP z5?@imEku_}HNawx-4CF0C1Po7hHdUubGtxJ9&&AgY+~hTPabWo*$hS}i)&@a|Ejrm zBJS`Jt4XXXq$bu*M|nwU$Th)>$|&5jn)rnj5Leg4htE&67wQH{Qn^E}0$S|~p6#*n zA4xWERrzmLL`jRiJBxIX7CVwVEJ;3ZvHp7`-))v}zRP{`y)N5ssM6HC6AIQERE;pK z(rEm%&$*9|LCdlyVlp^OBs1yEjOyw4q!8;MTC09%x&d*XtD3Zpy5^8;k6T8h#$fOj zcpw${yejZ+N;PZVe8UjrHW%;odCup%pCQ)SwZXsw=u#HqK9g-^6FLRDP>>ADSe(lt=DPheTt> z)NU!Uu!lonI6*loiu^S7k1r-C%rXB+F;zrA36G{*l<6V`$0xTsmC3^G%7O%K{o(?rpAO~RoxDCqTew?xh=br~ZEkR@gA;*S ztmB#JQL-+GJO7}fdpwOUw^niOOB22^OufKSla9}d`}m$M#?`Y5{M#gOvlbA-TXuF? zcE-A2@8I~)6cW~)CoNm=v|9AbmBvizKw|zH9lGywMH>ArShhs5bP8UH%t(ki`ffRwOm0<0HYTKJ(aVE zvaK~caL6i`taj_yQWNuHmaMPPL9!*w^Hty)Yh+7+inWR*%m1%fxZYr?zJIu>T7MEx zI9<3zpxmf>{5SGpr$45>*`j}f6>ezN388|{QCpxsva_e}+GTHnt8zcQ(=T67l80>h z;<&?@jaADRT2?~(L+c~S@`Z3Jbyu}~iGig-62)&!7N_~BuQ}cBpCIaBe8`H0>v*e! zJ6=p4Shzk+hsiHo|CGfu&tTSmgDq3txpZ>qS#Cl1nKX25B}ZNRA{dv`7`5;!T`Y-PUQNl;99oxQM9@?I zJ<;fWJ%wcRTKk#5(E4Z3?8}S1OGImXqV(C@69FyitPh_L?m))pljK;? zf))j7E`O<2orbfusBVWk?lL;eWZ$90^}RrD4^*%VypW9ea*SEcl3s>^Gh;9CU33W7 zc)syOVz^u}JZ3Ri_b@q}7IkN9_TRs~$Fu&#GrU^3s70X92Aa>%?eJPNOHrCcecV&Q zx9)x+^H{*2V4POSh#f+(%Aoa2JQBpmC_Z@Gt7hQB7&toSP(_u9OrCC!cxJwhdmCJ(b}c(kRZj^|RV>TcPF@e~}$|&_bkb*ex0}AGI-K$6(3R1v(LX@z!uo zFo^^nR08(Yqi$4xRpit}7-5J!K&!l}&5iAGTifFG7e+H!VoK|a>yeTxN$Lq%=+VVzCFZ7{mC>w2psPw=c1<(VqX&`V1;!*`&f*Cu?t?ArMK*C35qiDV zj?2GV?T{zgUx6bx*DH%_CH(w@39o0QlSeV$!%XW6uc$o-3{l2>2pSgt($5_J9FEK? z<_+WfZ|}8U--qo#RMvix5J*GdQ7i{C%=T>Q|r8nlzE# z7`I4I13j|k)yWF$bxuk&*RQxinoxoV-X*NX!SonKp4;;`-F0equ~K=^RzAc7#Gjin zB|>aVE4g+6o=-P!Ml@zxgjBLb(fqDUYSBxmrcb$7X-gq@G#P6>c3i`Plz7{r~K`+;@;@U9b@{tmUe*=WE5{*~nARV04(; zm2kPz-!9m+U5{7Vc+kplvwEr?O>~ob*PBlK=9MeG`LT~h)7zP>FFY+;rb!!jME5I9 z>CjK{lW-ipcu_E2G`gyX=%w@1l^pltB}C)m*JvH!X$$doo%=%pMH@B->G{uT`#9NT zivGXy-UT|+tGe_3x}|O!yWO-y8|>jFjDa@vLse2g3^ue>CAG?yx(k*1VPmI|RHatY zl1g1w>IWBANU*^?LQDb~lYxmLCNXz83AqEguwn=#B!P@!Ov2p21ae6r#JK~BnM)Ef zlZ5;G?{m&qr@od=`>wlI?pjm5T2=qE&tso`_SxsPzwfAzIOkwFG;uDbvj_bY;fcQw z8C?eyxSyw~`~ES}0aoqT?9o$gI5_uRKG3(O1@jA^>78+dU;VXD-*MGd3S`?`l9V?zZigXMAOsG& zKpofVh(n8Kx%{Yd!Hd=2&W^X57ll2RHsIdbF7r3)W$qqom-TgR;9iFyR|w}o{!0HH z!iT&fyh8bM1gJ0Er18V^HSx7vkJOMKAx*IJ`Y6bX$qdA=zDthhbBAM zvNpNVJRg37@#k^YCYLxb89O;sda|#6I#wB(p5fh3mpnC|oGk9WgbC34X8K8$GF~i< z9C@B{T;2@Z6zBN;hySD0gvC{^Fpai-U$Q4%%0};o`vD zU^Ta|H+Zeh^X9G;RzHpx3vW*&+6$i>aF|1 zb>gj4h5TSOpOMo-ZGLveg@yHW)xuo0(y%jYv$giBmvXw$Zr7HV=UwVB&97RROPz*M zTNf*>Eg>#W9OA?lhq%UxL!3zB5GRm0y|cl9cWkoXNJw`!@Y@t3T|Qlr zB>qX+ZSJAfGi&v=dYhvTCiV;Z{L`eOM1V~k4@)FugP%ch+O>gq!% z>Yw{V7jKuI!DCK(J!Bu3b3gUQ?DGKJ&8&pGo_xZ~tZN)vH{pw)sKm?dv4t5W{AMq! zdLtrSo`%`Js|GgbV`ew1mRm8Gm|rFRw%cFg4Mu%a#NQ#>=Dxjh=jrQv)j&UQJj&}X z?j3!Tj@&nNGp{+>(RYi7!#A66EbskP;=X-4X5Z0Q@^JsnT#~m#uckKYftyjq9esyA zJa}{e6`UO1EROp64s7V(1}Zspa6|voKobt#u%UlD=&(aC+t7a{XxyP2H}wA)XvU%4 z8~S-lw6EgO-VKxeyuiEfsDncr`mX{_IW)YX{~4f3hxTvieX{e-E&pCwKQ?(@0!{htI#3w|*K ze1ib_NdNl~@aF_b6W$*J{(=DMf_I16iq_s}+VJl}jBgPjeIO502-Mm%f-DSkWNJD= z4u<~{EUh2|!|1Z<1rDf&9|cP@9`KkaC`>ng#bYY@3eyf=U}Xt-b(QG{elv!@0hWeP zZNq;7mX7G2QEBX#z|xWrdCYY~rYAfPXLO!mGffHk{~1`i(jz2kOI)DzB@~DalEzqW zJ4{>Rx=LT%OS|ZJe~s{TLHv7yH2*IGq%-$=X8xMIq&3|1WX$1XZhAuwhW{&A_h!G# zXCTet#wpXBd%WiSXVw^f$vgS`gIF?=+ZYodVL?IO{554j-ASd*F!OFn2_{n6TQiw0e&=Q4_Q056hk(px5fPcN_Y? z#ucIJ!tx8nq`RRj-}jO|Y?KZ2T9d^|nf#H{u=+8w2ArB0eXO3}pA zMjBmg%7Y&-4bPS972Q|qX=nGY?%wZhFWmIBop>no=rE^nynfi-Yk?cs4twK}UeNn| zUda61O_#lxXFPcBo(EB&>Mh)I!hPEFHocHXocC?orMIi_T(f+^xAFY@vpJP`&ZZaT zHtpmBk(8n&*Xi}wA*v*x_r%MoOLq|Jz6nLJhv`J%PUB5HLA_hg?`cQgZdNt#H9hU` ze8Kem06v87RX94E(0;r7=3GMeif>_U${V?PWH3{}uob|Y*k-lgrh;q?kJ zHD9tZH4AI#iHr?%%7qf!1U6|SREdwJ01eWxVcp$!|JNvr2K_bu`4JLjUCo_@=w z%SvjOr{hqtVbkF~o1VUVQ=S(}*!u_ic;nm-&UUWU9VhlaN50*TKOA1EgywaB5mnD0 zaW24HCj6Jjtx)7~Y`k(uwF_OJd)8FOAMY;%}bGxN;BcodMh~^*BF@dzI}I zG|wEJdu@HbQ(9?slJewau2?!gom7g|V@FCyN;65dy2kUO2dkZAwN*cxwCkN}z13>A zl9BRgZep@Lc4Rt{b*$>{-=tmB{z|o>%$Axfrv~iL+Df}|YNcKqAg81_G%_`vw9YTj zwolu3PUS-T*osn*x0=hP%5>6bR&8U4GUpeo{s}x6lr&mrs`GQn$i!&QmEEpI{GX|w zn{9Nsb~7qmWh(k~Wo9}#JX4-d=4RXVa;uR{k5$H|kB=2|x$e(=_vcVjKg-R=^Rr7! zbF=fO;ikFPSzYU-%t>0~(<6mxlf|SYfl%^R(EK9Rnv5#N=_j1jTU@9tSxRDSR%_MK zs+*kg*OQ9fVaugBR2V-zt!A-r%d}Tkh3RR^FOQaLw` z?Da$ONn~4s7+!0vy^GD|`rdYy!w`c_$hxC8^k6T(Q+STW=konn@b2#-Zw@m@X8m zGu-f6tS=<(MZ`1Eqcsx2EtRp!>13i(GGQ#YPmv5!4VkD+9n}P`via%64x-XLMV|~Y z^GDj@vEiu!%N z`*X;&X41(!jc|a*>@-&u4LjtLJnq4hW?tfAf%1`4?Y1G&LH`8~OT{9t}Cmm3@!*x9Nt)o0uF>j!o(&#$iC#GZJk zet!4z0r0|7bGEa4cCK*~8dp;Q5f)a@4)1QS?ylwb6SC6W-C0~)p4)Ba@m#ZYnm`NT zd$u*dcoVK;XAjhOFTZqQbzt|Yf!#;j1G^V!-Ola>x>$YpYSWSuIJ?9+vs;?kX*5^b zH>rSy0C%?;<`hg=4Yi0dOt`Z;XxQmfOXS+B&o|n{hq8jk$u^{-r->L+)bxaD#B2Me zvENwvx)g|ka&47C%!bB>WrB5VE-au(2z;rraylvIoJrPuQba-dpc6xwi3%Qr$x3 zJFcNn2!wm0xwcdrwRXRx9R2FpK8{31NhFV=N?0182H(p;^#W~J4M zwWV~lB2}!;cb1I3qwP42s0>rYVwCB$7!#a)J4y9aokH5RX=zQnsi%v3AKD$F~J$wXnMQo7A0DDY*Rx2ucI=4nk5+qE_0v@sVC zYL?s3uqJapQe}-nf2B4-vXaXzH=G7*+AxFbEca~?ObtYY?@Ir!N}C-o4oVoRH)iuGGCjQ z@$upC=tNGv5Sdzjh8bQP1KWXXd5L$Yz{S#7d2FgYRkn5q1m<|$?dnna}C3b zKBN2db>^0-h)YMRCq_y$r6Y%{GbaZnmTA}9JLef|5&bj*l%5?J9E`LO<4R+u6Mg?y zkaWTy8n7}`4%sI~H6bGeQ?@nV6BTWwFjG1{Mk7@h8VgM)s0lS=DuC`}c%o347-2~y ze)b)V*pZ4FKk8;S$Fn%Y!^4T2mu49(9vv%Nm(UNjQCDe3ibeFMl1z-C*dkF^n@1u1 z%1mKq(&G9>ADX0W6n<>P#4P*12Fo^R8s>jH@hpSvM^oo2-l_ zbLClvsta1gL`57s67>emDGRRle5cB-5$RRnciQ!Yk{K|yGkKQ6R3ubJ{aWV7Ivo*Q|5|I+oec~n$WVoD zB%!h}&uW}Ch_#h#NLjI&)`f8vhl?fE?&w-4^kU?RL831*o{TN8b}o#rEiBYq48e1~ zGYT0Q(~{YRd29<3z8Xx9D0I9OR#bhybs3$Sd+fMhq6|E-1{2|`5|7H>xI+N?})NJC2A1vl% zo<|#{RkI=;5F6dHA6yu@N$!aX_e6k8LIqC{qc zqqN_dZDl-XtjORk&$@xl)n|y2BP_7X1qNY~&$%_Nk6;sn(n_zAq0>>5`It6rdo@K1 z%UFb%Va=@9m|(9iHCWACvx@H%v#0B8tA27|qm|39V5To{E1_z!ib-(fVUatm0-U^E z-}T1FOnK;JbmIz>84XqHV=Wt?$d2jE;_OOosoo+LSW}r$$xs`{ygsD2T`K<$gP z08Q_;YSpl*NU+9)&VI_A7~zuCmc&eV`5UCs?j&Pn7#^89R;e;g85xxw?FI$Q8p@(& zlUbHuER58j*V=v@-#_eX*Ih(~%E(r_sH%}>*X*>coF%#_i!2mvZW1+fNa<=Bu8{RY zOogP`e>!7ILn#UE3^~kWL|R^ul|V7e{JMIJ(cITS(a)KBC}pwHo@MhPv=KWMAv?=l z*>%@Km8E)pHH{F}Re}maBSo#gG0K zDLv?APX&h%$;hqd9G}?5F0(aP&s2u(G?^2d&&XIzML^T&1rxscKaP;I?SyBQ-akjzbO4_(Z3tR2LETz&s zomspFbeNdeNyx%3uBP~6yI2p) z)ar9UmmSuH(Y(H58^9E@j?h%LZ|RF_J?fgwszFC*3kjyyT4b1!KNae%(yDx~ z)X$lq$rl+OZko3G6;vfzV$V=5rczx!`E`7z)E;Rq*K69~=;g5|7bf*?!HssB-YGtX zXlZ-F(mI8!xm}hZgHBR2F{(V7EO_tOPAPl-vn!4HsubJls>)YAy4vYVa3)seca<6) zY+1hNI?cJ)uDXaNTiOSODkUms)pw7!wlQTeO^&{SdS*}O>U5CmSq)L-?p4A8Dte)9 z-L+6I6&T&EQGCD0aLZhUebCC}7?U;PxJ2!O+YLX_=+FaCCQ~DoTL$fK&i>}@?~uz; z`Dn*nZODkQ!e(CR-LN!vvXGXoW1Z>(Q)c?E-&Hf7>MJt2EGJIe)*s?7+-j*Dlch4p zNv#e`Oen@+xw*7dXKM_rdeWB#11_6da!yA>N#W>JIcIe$G|pxQg9=6P@~1Yr;)Q zN=fm=jGe8>*0eiXz!heuCrw^#Fi3$W7_^e{qmxCk*1@dWiJwywTJev`ZyGRYZPa2MV(*w>IiaHJ{8e z?{|`%aUr@3_4UK1a_VT^oh**esG-ctORzqFV~~ZGv>egPz{y0o!e{C&jx;2r=2ER2 z?2D$&8}lxrXG8fi!d93(&7W?2lFeqUEq;msHYQ1XsQjulwC?4Tp=(p8aQ2#}0Y7Oe6Kn#mmUr1xlLrCF23XThl1{zz*Hcg9xpWk)2@9uhoD<1nqx0v;@msUB8J7;4uBl9fwenrNC zA=*?`Y+^1}eZEdeKYA!VtCzb_d>Bu}m7B}VE}#smBsq`NY9}pYBlYswT=gtcH}+Co z<@6io9jGlWiY<*3%EV84T+JhCGdD~t8Ku$N?uWA22V9=Sb^%o zYSRw3upvl~ZD}mV@WG^7ry)-hc_E&drBBG)h#p574pY1-694wmj)N?AX@l*&JVL zV&}=)_HA9`T$1zK-gakgPW^zijg=-@DhDxQBZrl+$RRj{bIijyGF-rPv#W^RsLr-d zQHyzY&l;*k`;<&8v+||WZh&%pGKRFP^XF#~MUChSl8ZL?+pJBir%iaPjhYys!z17M zvmNb8Ap;2x@dYU$l%;yu9onMcTAQHR0iWo7L!+Bk*S$e)w{S)=g__G)#l zxvDG6*y1L#Lx@(GYc5rD&X}MqxNX>I%oZ(kiUe2#EET)4(Y7E-kJAg^NmTf5p)S@M?6cH|iH9awCLNUXbX8Mw zYP@2%5ki&B)wX1yRG1J`NUaNvcuwM|x{hLRuBSr#hi9F>pugsYpp?tj7gkKET+6!* z8uAwKQb;w8_+qo#l3iM6CSoC_h- z2CJX$H2ZOat60BTHgt2$&*kdDl9hGw{K6@pPun)z25qB53+B1mwVKPyQQ8i;)c({V zD%E9A)O>>e*6Qc|*0r*78K`VKkH+HG)D{Vg0XsrsW@&rpVb_FRC>;m7Lp1~~lS1lz zNWH}5=%Vb~jEn7g6+%NgyG{~cS(Dx4v2In4P2LJ4% z6?1+Lb7?l*Wo1UZrGxYp6dbcf?_|(e@z8$y(%`m(31SMhx@H10?+Nj;GQYg)Ug*Rg z4U;+i#QtBfLf=}(^cY7vub7`@`(e~=j<3+s8X7GrPBg|c=EbMkJ@Wozbk1AGZk^8A z-+WS@9+|Edj!olF62*5rGZ>s^tDPKWzuV#@C(4y0)$;UVA9?WrCnQYBHSK29V%f3U zVwyM4+rnJ)6t}L^ytx$0}uxpK15g2A;yvxB!ujk%H-IA9Er0X{dy-VB^a!IK&FP3UR! zxF)bAsg`?^r&>UkTy3NJvCDzKLbY0~jP_Kt(O#WBRp-c_p(&{pXez{%OMm6P?2v0R zhC|%=NX~!fRZ0Or9cy1p6n?ox2h`{ZE&;9jsiEHbvYz9VSOvFxnCTUx7gbJOFvMhr*sbYI1e6&C2lLZNaZDHNt)ZuFLN z{va-FGli;jt9o>N+&hCNi>wTm8}qGZ8`+dcCadLRl?e_6^#iY~qbH6eg%R8qIi@R9 zK&epT$njWG9H)qB9Z!3oN8Hu5wKR#|Olen;(o03Sm?=z&uUpEwL3zg7Vnc&t3C(&k zD(w2!8cSdFxH!dmvs+P2Rq||CGK;`ev+tagiq$EcNmU>YqkK^;{Iib(!!8pW2bs#t z^Mt9Jda90a95J$8b_ke^7V*247}-qW?~rAUd*+E_gmfrVkVSnp+KgTohOH4p@f(UlwTT0*iN3#N7u^Qha`*DB4QmWO%tE| zDZV0wW7>ls9D`D45&gBi3MKW2iaFs*BKs{t9{r%JxPtI6He{t1#10WDCG9xlBNdzg z&;zv|{x#Ey8X!?c^sQ_UxNM#Bc6savyBDc5Y`tlMl^bHRbC`r7EU&4U(L;LsUpK5ZD9x~54-MkU?y ziRn}o3x$)8X+$Qbhp6bxt!1%q zF``c2T3cbNf#DFD%uC|NOoC%G612*txmTn;=&xTJr@g}WYcChqzZuZf3t~weIV#hM zs=+VrZH?7MEDaCzuwU2mo2^}qnqY&`^vC4meJjO>Q_msPv*c{3GbC=w@1{AirI2{o zsOB%T=GhC46Zf@UtslvmjE3%%QB zU)4FC-51L0Qcf=CW?8W}7dq!yFlm|3!Q6?G981j_hBtOr+xS92o^7*4&5+#W&ePHa zVNW{~d6nISOpsexvFj(3X)+4v&dq{m`Umf?BGm8Z9M z`55q+!(qdPtCR^>3Qh->Oi^?Ds=VOG;8d}6v{IG1beKF3R!67Vc0nKrK>|nx;w4*V z=~#(MpdQ@})B;|nqml>yOfrc+tBV`$aI4AVCQK%n4SJUBIACgag?Z$%94w59NMNBV z8a3sRz+a1U!jz~o<4}o5eG(ejx2o!66^nDT-_!n?AkC42#&~u~?(1yQ_P-Za@#kWe z)2-bBS0sC|M;CaOX1-#}LL!9b^AU8;;k@m1r&tq2}o_~~UD9w=S zp|1I^y2>7Q6~XJCRY;O$D3&rgFQO{Gfeuep#-@U_j~A*F?zD-cz?qT{cD>H)n`d%r zmc#Ov%R$Q~%bM2m{h@NAJQZ3lZYQspUE%xqQA_zKQWxI>h3SgVeeL8okj33oo##UzCr5YyDDz=}&2d`G-30L0=RV2_4sWA3H2y+f*(Xm2$B( zjz6=Dd`xfu^VJVYl2gMpO4ksb0OLJ zI7gZ*DCcP%Qgc+|_@PoEPoLoC@|bUPo$BdaG%*7eRN3?6keYlFvaa@=+Fdd*Cj1kjO`}us&ueMtWN0d6}cGSX{&(FUU(S^nh?Dfre z_iq0mFCTL%Mr-?8o8C<|*hu%EohI={*+6@zcp4ue@Fch4nl=~Z=!?d!#w;vcLAF)6XvG=2t~&5u-hiZ(ItYOT*K zYN61}nWQ56X+K#}WjrOd+Pv#nYr0nLYan5dSND)db2c5U}OL8Pm`P26maIX6#- zwD%Sk8*`1L749n43m93*`RBpHOBuVbE}LhakWLKb^6T0{9oaJ}h4%H2+q&Bi=*+$! zsGTjn1{nK+#nEaCp#&r1J2#r(^LOS;eY2{kDh62@a9mck1sXpHG8Y;q$efBfq8`2w z)^5GMgv}q+1g}4xHE~SqBKw4vwVNzg6J=njJk)?_%Dt?msC)LcfP@iyCw)9YT&NOR1r ztuSN5cs!1(H(R*_!)&!XZ%%(G;hs-9Z~hNqC*MD-)Z+kSPu}!KTVRKhs^N{pSw_*h z`nhr}(?+{FZ_gjPU0i>()iRnD=eBw6K}z=Na0oL}#}#5u9gpvCfQ!dPPc5RGXLI({ zmCgd(tElPf98igQ{p#T%c-(OQ4&DB!rL?2X;ib=lp`iB(J;divCtRl53rppuM}1=U z6~$D}Emj0gDsYk!ibUviAd;ZCaVdTC6?qnkJiN0C4!fP;W}mF;;TV{%uc95eNTH{S zwrYQq#n4nb0?A7U{L$~@s#;gT-X?fuvsWClaD!h~P|hpG&%MF`X~crI!!+U76df08 zd1<-ZB{t@97<<#r2Z9zN^%kJ>1vb)&x-(no@ zdDg%e^8`LG5>a^0&nd8u`!6azX?O4=lt;*jc{M+=Qilxf1|N1O(|07y>KKbHo)Fe{ zju%zuDjkCHbn5zccu(oBM~Y9Y>CLRUsQ3Ww5PCN*ajS#uh!UbAAFBpB$h1KQZ%Mnl zvNTC~LeB$msIZD9oF3uOi1P^do%i2ENqNj7O^r z?Jj$6My;Uo&Gu!xw87f@&P&@_HJco8*UfmNu1gnOa!cSM(v4;pT8l}!*v$&@@pKOl zmFRXB%cVSGRL6&Cx=;Pf-znQ;yBkGEkM)T^ep zDA&TBsnIH=Ux?x930jw4=k&H68#vscQ5<4ZeP|*nu$SMO z_o=liLwh6N3z<`EUg=+ufo%45>7b!58s|I}?@j*Vxyj$5#F_T}gI3JJOg{T#tb*BV zQb{QzzT_@;Idt(2-T0TR2VI#sjn#zxB=@AyD}tT$y3*p6 zF}(Vi*N^ab$o>w;X*3766@iqD+85n>NZ2=x9>FrMmb#OIi|_*Vv%djQ4uS(pRIbi+c+* zq~?!Q-(|~j9eFr;rLkO{qr&$eRIEt5CF*=vJQmfxhr3&mNWYA39XCJWMB-%SwMg)vOBlI*@ zl&GggeF+B-8kekry0*vo>}fyKo2Vw;Hj1*h*S24jPaNQ0VjhRU`r~!ns4;kiPomRn z;VrR|BAz@G?tSRp7|sOq^sl`;y(e6q7_uz0eTB|+Lm?7}6=U{WJsvYYg$m z&h68m{rYnt;VI+V`J{Y{UJ-O_g=d6QbBnja0v?Z{6n9dT7GjoJLvk9wtkViHsyfZ$ z6-kBC)J&XCY1dv%sbH&RUcZK(SdJ1>{C*nuPDLBBJ!gnmkyH&a1rzg5R=gQL`5_

9O0Fz;Ia|UA4|4u;njnq+Xn93a@SMdy!kDg?(TnU z-`kYy@?~HA!_R;24}SmmKD#X$;obPz`iP%L_t&NPdN_P+GYJ87w8@%(WcWrs|Q{J-q z?oDs)e_P+%$>BAZZM$yt@|4H#6IXf0Jd3ZGw_$MLImm76Rmqkk7TznjknVQqN>|9# ziJ-^ln>3fgcUCX&<+YICCvDJ6;r?eNTX=1y)k}CQSobcfp2AmW=mQ!0t_*!RLqC+E zPh{vbU|y=3mUl9PZwE{6l9%}Dfd37@gARpof=o9;_;o)1J;Wch_}kyq?|RD2WncWg z&;IVVgw}O3R=)bUeA9R-Poh18|3N0};ZTRH%(p`LG(1S=ra$0Ez@uR4B$`&;#tjzA zTXAyZvg{*Mn?`n*2Eb3){Nwa2;4>O%V4+ej~Tg zmbb-iDP2&!JBg?E3c4`h!{0~vE(=f7SDY$z`T3kLBk!5|F~?f+xHT)fP%WLAb`HAiLYaA4j><`uTB2ad$j7+48>|4e6W{^Tss6%?U{@bEE{acu-{<26{AsZI-+-ro4Xl2X&J{+t?VP@B+g1r- zr;l^>K*&4o8#kwY>t@$WLjGmqN+$ZR^7TxieaMbEbN00#Xabcs%M;X~kq{8k!aee^r%e34=VOPa&_E7lp@I?HFU#G3H6XgSB?8!-QpKNZT`YPT>iPv%Q z!nk)w+Bc86zA1hbSD%CYkL^&%XXgu&ElbcwSyODjYtx(i-_mzC{iJc(7ySZY+|75h zyg%ae#mt%f0uFsM;2%Yo4k@ckiT`eRjq|@3tiB%7zb}LD1Bddn{NKZET@OGXCj9{a zg}(-#4bNR^dg$XNV)23*QT_xxC)Ffh_uIy#Y`A zCukFn7TWH3Jm*k)eL{bWc~}0EboSy4lP$hqggKP0?L=FJ_GRL&v$m^8OFPpi$u7=c z_(A3WB3Dn;`tK7?GHV;9?|*T(Erhp%)s`Wj?ci&{jPKT$ zuj9Ak4HN!83s1-E)wn-|c#jb82NrMVn=ZR}I{D zqer;YO&^u7^Z^fM@Y}#@vp`q;xF4$ifu?vtzKR#ZuiKC$W2~X0{<-lDmu{th&8}ayu^?2KY`W%l(+EYOPn1F^JK+~^AYdwAl`k%JJ0XP)>)pSUH#IoT@`*dSZ%Jn zgil8FY~GJTza4s37Y0Zx+DDLzKD%vm|GQw7|~;CE#3{Sl6JQt4lRRgydeeV5Nq zSf2s@2fFa~3=ZuV=O^ADCjF!2w};;&QF|#b(XQU#w@rCo{4^uuAkolzY(lF0)97GzXQH6gCQ9$&>vif9&|HX{z-)UapFtP zDpU9?VD0S(oss+%{*9OQ%++3_zNj)q8+>`!=4Z=z2>LMe8DEC*-QZo|Cz8$giT6?B zJxV;4BmBM_lP#ZvH{rM(NXd2Au-@ioROQRwx8{LIg1rz;x5YjlO}Du|9!x0Ti$FIpp?4tp5lMYni%y0lhIyZX@jHc#nxJpt{|6VPU$X-ewb)YkZ^%%Ckm z^KH?LWkzsvq?@i5+B_@!`{=k2lh3u?xF-9p;5e=@`*q1<#Fc&2*dnaYpYea)bCZpy zx2Z3R-w^k8{GN!$sF?N|Xz}=!D?HjIF|^-G^?1J=rubyJGDbDPhXj|RFG6Ja)p zdgz)JviFphuieS+r_Xv&jQyg~2ld&`Q%v^@mXzKrkv`oJ9ew)j^sO7vmpr`-_|<3D zrW@3kT;(O`!upf%{m^slDhgHl8|15%mP-6(FK=N?Y5Gxm#eX28OE+KC=h{Q@uLloD zco1BS@P6>g2)`1%65$)cuZ!?4;Gc@{1o)j1R(*apgWnxt*~jn+{68GgWlO#v;pGsS z?+~9KUS1m$l~;@KPplJvDWd-j^kuMGb|e2Jzt>0f4}#wSR$mMBcSrQ!B>X*K@hQ5> ze>9>izaKgmFYFU%JohtEg&JA@i0f#PrF`}_-f(+ewgNdNi>?WAp;@1!xO=(Es;cSiJ&MD*7}7nVIy`Ze(9z^LI((9`+_Iy`e31CUvUm8}BoBhaC-k@1XX<}{giYQNmb}4)&a>yiOSclvXGgg2l#+g}Ks@1VbiEdlmg^cQF7!k+$2(XY?Yg+2XR z(O;UO3w!z=(RXL)!k+#z(f4NP!k(`BEk^phi7BJ7>rWe#angrR&}aEvxv-5%1^P|i z2P^1@e69lh)zIGyK1o2J%ik){)jsm8in08rVl02C7|Z7=##^uI#qwQ>>GwpqwoZNI zdlceJ-~SFQz5>7UMGEvYr033bJJSht`6dPWG3Zx-HFFMh`6>nadFa<<(ho%RZ!?8{ zekQ$qnL_$El74q4y?mPj{msz#Wzrvt=x>KUl1VS$r;z?#&`X*0@`VcYpND=7EPEa5 zC*P<*m)ztV6|nScHNv9HS1Qnjpn_ym2FACn8)n5g|e z1CHBIeocY?5z>DNJW4>|U%pL&uJ*kOtd&!s%hxH;)xOUG$L%ZMr$ATxUY|)XU#LJ= z`{pv~ITO`BDYC+V|E>dihoby4tr6j@wth zR)PKr=nZg@fFK|FS_S$aLH|{7EI;{P1-jZrzE=UOy*czrvFP%>3UuL#43-~NOqc&u zj6WA)<)2*BOYhHM`Afy=!p}z@uL5iQ4*V`gbj5#1gq7bt87%)Mg88`i*`Djp7xu3s?+2pz zuYmqxu-Z42|6oK{`QM1J%KuIVKbFDrZ6X>Ur~mR{3Rw9KXE0Y23^=-*uYD)dms{XZ zILvSESf@VnfeQJHKlwlftnxY$7G3^Lfi5gRrGORx{s@aMzokGImOoOA<=Ydm(mxtu z#h0&7pbN{_C*a09^%;oh%I{!=m0tcnA-(7yiLmh(VbQO9K{vkWJ0mRmJrQ1AhadUS z5RH#(Px;WqSUxl{mJdz9=hw;afr$Q-&_4_ww%omaiRj{2J~ko0dx-ya@T8A#^|`J~ z{{Zys!P;k*KC6C*BD&(s?}jfv8w?C}j(#5|=`ND4f>iWwYBl;uIg=6|X5&dh> zg#-Ps!1sZF90L&6L&A=qrz9Fbhce?Q`seAJwKpk!98iG9*9}ZW9vgM@kuYBD1iSpu zALzo@S$tRj$%uY6bm5r38qp=s^BH`1gs&yNunJW9hrsuM3sHGrj^fWl7Y^}X2mTtE z<7`X+^Wg9a^8xu$xiHrsRxy@;Rlv&s;Rq`~`BlaAhww8B zSakVQ1#J99_+y+A|I1YGevq(>|CHoU){&?DnBx3cpQl*m$)72vmm@5?e3}AXcr}CN za}?;}_rVB%YaM<*644d^(-F4%M_BZ)WH5(s0|fJVO7geLAFMC+&wpB{Jo)!1cCaTu zh_K3&zmJi-woFOen>B0p+FaZ zOA!`-@)?ThAKl%>qRTfZrr)`zi$#}jP@oITHz;70_wl`5EV}%H0^Rb@VEF~bbom9v zSbjk7iRqFp<@Vf~J^_TxopsPIj`~-Z4_@4yd6UCRGPoV!4^eON66Y`V)PN1uP z#Rw~Z`S8T_lMxnOemsFLEI*zY%a13<^5Y3u<@HDXNBF)BzR{njs(<|g{0oQi@P6|kR=#vrs4^&=6e*_#pp})xw$%So9 z{$w4x{E7ly@{%u6jO9xdWBC%rSiVFtmY-0JB2>vkrgq#R>8M9{MN1^34hTNxnIOE`A?=Sr@B3`RK&-o%qiLEV}%30#^Ey zk^V7dGd#S(>E{k@1o=$+0uk2#cC2XpUOW@o(_7X_zcq?KvkrY%L|1*1Xgy-}&(ODL=-LldGCATXzV@#S zdVar_!QaZ@{%HN6^jaUe^e#WGH+u5R;Kwrf`w_l_`qt66U1acM@UsB^rHwAXYr#$M z2>Md<^z-0{w#1@ z-Y)R>n9plG75(KI`d9`Z&EQ+XS5bbbZw>seNS@1?_~$bCC&6D}|Mgm5{?CEm@U(7z z9|Hd)V7Sqxs(!mdc$IJhkZG1%Cnk9PsfsJ~c_c%KSs_hobKQcjf)mR<9qRuWcmw=|_WvRHUF5I*55?ck z!CB1DH5vSZ4BnN&`!o0u`1kOC3Hcue-$DE8d1#e)47`u|!Hh3|Hk1Cf8QcN?B=e)d z|4)MD4-o9lUEmV(81VVM3p_^u4fuX=7(ccro03m~pMPyvzy1LH8T4twr~ec1hkbt% zzuyGM^7#(<3-qU8Kfa%#|4RmMVF3AXWM7^Iem?#>cl+`VfaClRfv-Sc_Ivta@HNQu zeICCWto`)!%;(hq@D<~;aX^2i&#wbt#rP2F^Hy-2|IcOc`!o2LGx*oR$EdI75t7Fz zz#oq6=O2RKi@bw9|8wwrXs@k4{&&G~`G23ma#@Y(mu2t{WyJU^eZP|N{CVJ~vc3)a zl?PwXc(vrqdj&YoZz6-I!MC!15bWCm_`b+~UdY6MQwIMu_+#krqrSXf0N+IW9`YF9 zx8ynS_j->%l}Z1(4E`fn&&)~nqzG?lS_Q2OI^#|UL zf9#9Fas6}Pr_x@bz9sN`BKuU&#BYM{K!4KymZ85LJc2$1`g_22@Pg;({h9c`0@gfH zAMy7w@FwaL`2Rfkj>vxgDfmn5FaCh|s^52&ek{lX+qc25Nz*?i`M<$2zs!x2?;+oyPnXj%yYq{uB+mrj%6J|0=egiG{fogLiuC;; zcvCbUmB1sr-2T7#IS#&y@jc8h>fkuPrsC6|hkgBi0=!1~Vf=p!_zLtV@binA^dHXP z|B%5Cfj`6i^}Nsja~b-VGWbuyU!^^E`uN|>(7y}*LZ9o;s^5PHe}MgF{Hsy= zpUKeg1+UQ_LEaw&Uoq01k35u#|NG!OuIjem7rWRE^v zmccu~*xxPsyPehWi@@Kbza0ci{<%#2mxDj_O7|R-=z4xQ*0(8e_-H*)0dK(m?eh68 zg0WfY`0zULCiIVGqm}owVC@gQ5iI-h@4=s;e}?}40QgGMqZStb*TMABRG&Tr<_t0& z?|&a0^Y@>?o33%^$KwA_GxWa%|0C&Z%%4R6d+>dcK3&EmEpdKN2fr104S0Tbg1?Tv z4R{!={pes1Uj`my{x<339|p(yl{5I(44%*6x)0m(7z7;%cwu&OWIT4{|^3SG#>Xcarh+d z`$jLHr-NhpJR7_ZeUUuXK6!A1@gvlyl!;#fzn}SEu>ZFzJ@%C^OFy59zYHGZJohD@ z{s!=O8E=Ap{h3Vsdo%ch;I+tp{|7M5Fu-5>*QVqTGx5Ki!GD&)kAl17$5WGk$k2I& zsz*Lg1;3y62>tC@;1|L_$*jJ+!5?Eh>3IAy@CfwK-^<_<_T@#MJ`axNzYLD~c?0-4 z%nyS7eP<^AzXgBw@@{^=2xgCKi_ZDfe!mX>Jo`PN{XU;b|HokF+}-s;hW_{9e~9!8 z-`?b>_jJcMe06*He+l?1>{pP_5cmr8eXFl;0o-k`{^WQjeHHv0$mbp(znP(50RJ8P zD@>!Teyq)t4@B$F4`$*&n8CjZ)_R7&=*#Bhv*52&|B&C;z&YkSp*{Z={43r*X?*PG zfw;K6wt??pybt#CS>QA1_m|0E^530_e;|WLGWcfj1@tA%hmV81^4gS~$;AI(!29sm z*R#bc?`Od`p?~Ln`R@l`fjtW2;fKJi0aEKSq09M|_oc z8~8KKCqw&nz~94OF{~K4-sGE@iiIx3&0zq z@%SYf`fvunB7-Nu-TjI0{qPuA{!b6Um&&`%=t2Jd$x0^uxeR_IILG=s*!#C-=syRZ zy0W`IzYqM$XuNw6{8rKj`|!J9^xHmKpZ*Crmd`gtPy6epuSk$on#O9z+B)h$eqFJ*#pZ2FSnPP&DCVpebo$bDJ?;EOG|?*(cSL_UY>2g=k4aF z+4i!}q58V!@?3+f!AHu~QEo?ecc|}~U*%$ZE?wmU_~v|*OQXTn+a_~)yZ3y7E4%8= z`PW*|Q2WBlyzaDFZLYNIXDw`h`vSMs=;APck51Wz4-#&{XL*J6ZId@}6TH8)rh40L zxj|je>==0MST67G{Px!fT}&4 z`5d{WhWA(NV)EN2hZl68I6wAtD-hRAIJUS^u&S4;8{+nKi_W!ANFb-1DquU1_vr^W zt5dQ1vXwpGnzwK6Bhghu4fi(hJ?_$tv9sJ_IojgR)p-gTUz$DDE^$*;r?GG$@4tuq z_W@pSPR(?wQ@;CCFFp667D1O4g&6*~Me)B6*o7Qt*6M3@-DJ}^qbpf!N%KtAu4*!> zV-l*-sI-yz<_;P6m-l_I=_h}a>U?J@IlJ76l5!38oa#5{DguXVYF6$>Z`J4PjkEPV zTsJYhXON3}d<Q`H3MaSu|2<7qrmya%KT!f zJza0lPuI_^HCpvri9p&ym1)$L(2qr{ul=qOkNbqVGz(Vd7ad7a=NHeSHrzS0HYW%- zXaYZUhfX(oe;0kY`OnKI7hP(G zu9Bg;d__IpXUDbkbWU9!8Q(A@gRfQ>TP*%=k1O^cYT~)AiZ2(UgUO9 zE;3LjKisS=)$6Oujs~kF;r7V%j#zco=qhqoyZruw=O>>Jzj7mklse4SSe^3Xau7qH z=JUfoD3{YUEOS<=8E$@WFE=`+q@Vqd34b%lSYYvBA-$C|@ZfJnoNcvcFI49=ym3#VU7+PU zo^?By57*Q9E1N@NpFfwi9O1U@5L!L!<{rAO#qI^;O2yiF?q9Dl3NXr6qdfBmLap+{ zzEcK4oRb4l7hA9fY#9iPy!6;D@8&OMFZ?idz)W5v^T9>oN zHkU<^-wmPg{J!vOBy`^Va0to|4kzmLbj_e<)~(SCvuM_ton%Hsn%p>jzhfHjE`_Ub zub_25$>2gsy54&WpV~t=dih~iHjz0WN}{$o+wt=<*Vxl;DuDjj1eR$~>w;GaS`4EV zYdd#m`DPm(OpbLghE3J;w%ozEwVXX&F5iODa0%%zjWgvn`YbJ*mw8y8U$Zf8xx7fN z;^_f5&<9m=yd$c0tjSOiRG#~fTq(nW&+*U%x+Eyr4PRvw+N7ox$e>*-?Z0g3|Qb^Nf4Aa)VKJ}t2Rh{v0)py0^ z(?-Z2DA+iqq0kgZA~h>Ov2(L)wdIrA+x@H(o5VwEv3>OO2xWg2skrR=8)m-fFF_c4FI-8D-jL+N!!cG7JFuK@C`Sly^aM z|5jZ~k&yFn+O}NJ#KlaJqUMKGDZ30-*};tsd-PgnnRU7n*LI$ag~PS(5>9NL-9(&= zY+JMKMeORSAPrx!8`9!);TQTR6^(hNNJ7&7Ap_U;cLn?FA6<5|LZxUcgtRps0c+y8 z3RALbd-iNS%*R}ul$CrsamXJG>0Ezoa4qSndY!sp)Lp7Pe7mgYXA$zKT?|`VIXk=5 zpz-TI7FO9s&kcoNrmH|e;O>h%_5!EDmJ^;)3r;~a=8Q6PZct@ zQd{LFUrdGRpUpI6>lk`^4L?;y^9QwR?KDrFTB@_Iv`Miyc??&PIS(Ak_Mq^(z?G5S z3qr%E?@QIWc01GLBO1coc%pPuv!$g9$Bl8EG^kE(>3~Z z5;t7AA;`;|K|odWZHQ3L(wopgCS0ve(oXAr71G|3jvV7Oh-|Ie zILH133$^w#mm)J@G6$A5H+|HO4|6-3KAJqzZ?#30YeeGMiIUl@UZTRbQT( zT|qTcD`b~_I;NP3Yl(1lJl48AJzX5V7M0Sy$Fr-e>=VTe>nF1=4`%M@y1$h=bXvAg zD#r_HkunB3Mt)@7E5>vjVl4A=LY(eb9=q;;F?xr2g0>1+Q3pk5B0}k|OSs4k(be1b z%NjISUW-9)L1*J27xH4JMxC`Yp^X7mJd})zIt_Gt5Pm%LY^9S6#$WYG)ZFbxwavDq78ejLnjZj`Y~ohIbM)ziL6Wa9Q5=yxj}CUjhet~HuBB1cf2 zFri2X!#v$Rm>$d<1Dma5*fN~2W6%h~!u7OYE}f_5qJV2F<)R})Tvk8AgG-oG`4s88v0(Iu^@Y;dv~hjZ<=?a z(gNqUA+{E^rP#A$+0!IFMj=R<$vLLO+gO``+0;$*{V)$v504CC)oxN}^QnkAfgqQlx;w^37Pvgx^NjMz$2W5ltJxyfUTW99PQUu9|xonN%Ifaz6G ziF`Cyl_2989Sr%2dbh&um1RG?M&=NUzP7SByTYbXjalM+-8x?o9oo>YMPsYi);1e< zoknLZokZl*RbD=wtI)Y4eF!4y_Pnf`=CuVo-OO>R!4`qv z0Lx7w`_ql3rBDHuV^L>G_epY^J=NBtn)x2de6-3$cBSbv$g>?0CYmtSSS8FeFYV6O)BQ6)15&qV*9PN>onyi>vQnF5qH@x;e5qY#*}ZHH z6ZTtsYb6s9swp)@?=MrOr+2q-0md6^o zsdIPN#-~fIZQ6j{sUtf8oNirM?##~Vl&j^w7yU2Vsio!Z9-G71U)Bz%R+2r-)`ZEP zRsSv1lk8zao$RqinJJR}O!jE2DA|)vpZLiZHro)%o{{OPJ+mG5^yjc7B(2rw)=r_z zEVBLY*}1tEXImaISqeXA*&5Vj*i(9uPB{XFs)U~luvX_x@KQg#VwuzQ^k|ji=ne9- zNe+=$ura>-n!U?LPj?U-})z4Lq;j{U{H8Xp=M^KL;#@ zKi>sgS^AbgOUTdpH;}Uq)%_>rR|M;~%C&P~UI2Kze)~`0;bw5i?=_qkzlM07-658v z2_5CX^3#9$+1yUN_!IKG&Byss@m@o`P_FX(^3jdSu8$~{`-EQ$z!2{{$nQHve8+z) zP`h$DLp+5Jy5#uMZcL{9Z+(fT|F7deGFj!zJ|8AtNTYy|^V_1|3jZqcuKR4DcH{kg zCf+}PyD!;4qZIBFQrr&=zeO2(d4F>9EiR7!2HLMjzZL%W-|0^#a32q!5bsk2gx{k5 z@fZ4&od-j#F74q=y#KLjQ*!X@7svaGj~8Sy^vzAl$0mE@sl0Fcc!Bch-p$Fq>NNfn z^gwZA4S6FERF-c_?7i5BAt>H<{y&xfrlWl8^T^$slfU6?K72wQaUbo8_o-jnoIDmH I@g3s*Kk*&|od5s; diff --git a/Tools/bootloaders/CubeOrangePlus_bl.hex b/Tools/bootloaders/CubeOrangePlus_bl.hex index a01ab8adc35d7..07d3f9ad04bb7 100644 --- a/Tools/bootloaders/CubeOrangePlus_bl.hex +++ b/Tools/bootloaders/CubeOrangePlus_bl.hex @@ -1,1105 +1,2420 @@ :020000040800F2 -:1000000000060020A1020008FD0F00087D0F000877 -:10001000D50F00087D0F0008A90F0008A3020008F3 -:10002000A3020008A3020008A3020008DD290008BB -:10003000A3020008A3020008A3020008A30200080C -:10004000A3020008A3020008A3020008A3020008FC -:10005000A3020008A3020008653E0008913E0008C4 -:10006000BD3E0008E93E0008153F0008A302000855 -:10007000A3020008A3020008A3020008A3020008CC -:10008000A3020008A3020008A3020008A3020008BC -:10009000A3020008A3020008A3020008413F0008D1 -:1000A000A3020008A3020008A3020008A30200089C -:1000B000A3020008A3020008A3020008A30200088C -:1000C000A3020008A3020008A3020008A30200087C -:1000D000A3020008A3020008194000082D400008F0 -:1000E000A53F0008A3020008A3020008A30200081D -:1000F000A3020008A3020008A3020008A30200084C -:10010000A3020008A302000855400008A30200084B -:10011000A3020008A3020008A3020008A30200082B -:10012000A3020008A3020008A3020008A30200081B -:10013000A3020008A3020008A3020008A30200080B -:10014000A3020008A3020008A3020008A3020008FB -:10015000A3020008A3020008A3020008A3020008EB -:10016000A3020008A3020008A3020008A3020008DB -:10017000A302000849350008A3020008A3020008F2 -:10018000A3020008A302000841400008A3020008DF -:10019000A3020008A3020008A3020008A3020008AB -:1001A000A3020008A3020008A3020008A30200089B -:1001B000A3020008A3020008A3020008A30200088B -:1001C000A3020008A3020008A3020008A30200087B -:1001D000A302000835350008A3020008A3020008A6 -:1001E000A3020008A3020008A3020008A30200085B -:1001F000A3020008A3020008A3020008A30200084B -:10020000A3020008A3020008A3020008A30200083A -:10021000A3020008A3020008A3020008A30200082A -:10022000A3020008A3020008A3020008A30200081A -:10023000A3020008A3020008A3020008A30200080A -:10024000A3020008A3020008A3020008A3020008FA -:10025000A3020008A3020008A3020008A3020008EA -:10026000A3020008A3020008A3020008A3020008DA -:10027000A3020008A3020008A3020008A3020008CA -:10028000A3020008A3020008A3020008A3020008BA -:10029000A3020008A3020008A3020008A3020008AA -:1002A00002E000F000F8FEE772B63A4880F30888F2 -:1002B000394880F3098839484EF60851CEF20001DA -:1002C000086040F20000CCF200004EF63471CEF22D -:1002D00000010860BFF34F8FBFF36F8F40F2000043 -:1002E000C0F2F0004EF68851CEF200010860BFF374 -:1002F0004F8FBFF36F8F4FF00000E1EE100A4EF604 -:100300003C71CEF200010860062080F31488BFF330 -:100310006F8F02F021FC02F0C3FB03F05DFB4FF096 -:1003200055301F491B4A91423CBF41F8040BFAE784 -:100330001C49194A91423CBF41F8040BFAE71A499B -:100340001A4A1B4B9A423EBF51F8040B42F8040B69 -:10035000F8E700201749184A91423CBF41F8040BC6 -:10036000FAE702F0DBFB03F0BBFB144C144DAC428C -:1003700003DA54F8041B8847F9E700F041F8114C00 -:10038000114DAC4203DA54F8041B8847F9E702F038 -:10039000C3BB00000006002000220020000000086F -:1003A00000000020000600209044000800220020E9 -:1003B0005C22002060220020D44F0020A002000810 -:1003C000A0020008A0020008A00200082DE9F04FDA -:1003D0002DED108AC1F80CD0D0F80CD0BDEC108AED -:1003E000BDE8F08F002383F311882846A047002042 -:1003F00001F0DAFEFEE701F055FE00DFFEE7000047 -:1004000038B500F0D7FC30B1164B00220E211A721D -:100410005A729972DA7202F0A1FA054602F0D4FA21 -:100420000446D0B9104B9D4219D001339D4241F290 -:10043000883512BF044600250124002002F098FAF6 -:100440000CB100F059F800F039FD00F0F9FB284636 -:1004500000F004F900F050F8F9E70025EDE7054653 -:10046000EBE700BF00220020010007B008B500F054 -:10047000B3FBA0F120035842584108BD07B541F233 -:100480001203022101A8ADF8043000F0C3FB03B051 -:100490005DF804FB202310B583F311881248C3686C -:1004A0000BB101F007FF0023104A4FF47A710E4898 -:1004B00001F0C4FE002383F311880D4C236813B1AF -:1004C0002368013B2360636813B16368013B636089 -:1004D000084B1B7833B9636823B9022000F070FC25 -:1004E0003223636010BD00BF602200209504000825 -:1004F0007C23002074220020F8B5514B514A1C4641 -:100500001968013100F09B8004339342F8D162688E -:100510004D4B9A4240F293804C4B9B6803F1006331 -:1005200003F500339A4280F08A80002000F0A2FB9D -:100530000220474B187000F041FC464B0021D3F8D5 -:10054000E820C3F8E810D3F81021C3F81011D3F84D -:100550001021D3F8EC20C3F8EC10D3F81421C3F821 -:100560001411D3F81421D3F8F020C3F8F010D3F805 -:100570001821C3F81811D3F81821D3F8802042F0BD -:100580000062C3F88020D3F8802022F00062C3F814 -:100590008020D3F88020D3F8802042F00072C3F886 -:1005A0008020D3F8802022F00072C3F88020D3F896 -:1005B000803072B64FF0E023C3F8084DD4E9000450 -:1005C000BFF34F8FBFF36F8F234AC2F88410BFF37E -:1005D0004F8F536923F480335361BFF34F8FD2F8A9 -:1005E000803043F6E076C3F3C905C3F34E335B01B5 -:1005F00003EA060C29464CEA81770139C2F8747285 -:10060000F9D2203B13F1200FF2D1BFF34F8FBFF38C -:100610006F8FBFF34F8FBFF36F8F536923F4003396 -:1006200053610023C2F85032BFF34F8FBFF36F8F77 -:10063000202383F31188854680F308882047F8BD7E -:100640000000020820000208FFFF0108002200202D -:10065000742200200044025800ED00E02DE9F04F24 -:1006600093B0A94B2022FF2100900AA89D6800F0BA -:10067000CFFBA64A1378A3B90121A5481170C36026 -:10068000202383F31188C3680BB101F013FE00230C -:10069000A04A4FF47A719E4801F0D0FD002383F305 -:1006A0001188009B9C4A03B1136000239B49009C66 -:1006B00098469B461E469A460B705360012000F0F8 -:1006C0007DFB24B1944B1B68002B00F016820020A8 -:1006D00000F082FA0390039B002BF2DB012000F074 -:1006E0006BFB039B213B162BE8D801A252F823F0A9 -:1006F0004D0700087507000809080008BD06000836 -:10070000BD060008BD0600089D0800086F0A000825 -:1007100089090008EB090008130A0008390A0008D3 -:10072000BD0600084B0A0008BD060008BD0A000807 -:10073000ED070008BD060008010B00085907000876 -:10074000ED070008BD060008EB0900080220FFF7CE -:100750008DFE002840F0FB81009B022105A8B8F126 -:10076000000F08BF1C4641F21233ADF8143000F000 -:1007700051FAA3E74FF47A7000F02EFA071EEBDB74 -:100780000220FFF773FE0028E6D0013F052F00F29C -:10079000E081DFE807F0030A0D101336052304217A -:1007A00005A8059300F036FA17E004215648F9E74A -:1007B00004215B48F6E704215A48F3E74FF01C098F -:1007C000484609F1040900F057FA0421059005A8EC -:1007D00000F020FAB9F12C0FF2D101204FF0000AFD -:1007E00000FA07F747EA0B0B5FFA8BFB00F05CFBA4 -:1007F00026B10BF00B030B2B08BF0024FFF73EFEC6 -:100800005CE704214848CDE7002EA5D00BF00B0390 -:100810000B2BA1D10220FFF729FE074600289BD011 -:1008200001203E4E00F026FA4FF000080220307002 -:1008300000F0C4FA5FFA88F9484600F02BFA044643 -:1008400090B1484608F1010800F034FA0028F1D1CF -:10085000B846044641F21213022105A83E46ADF8FF -:10086000143000F0D7F929E7012325460220337020 -:1008700000F0A2FA244B9B68AB4207D9284600F04F -:10088000FBF9013040F068810435F3E70025234B84 -:10089000B8463E461D70204B5D60A7E7002E3FF432 -:1008A0005BAF0BF00B030B2B7FF456AF02201B4BFF -:1008B000187000F083FA322000F08EF9B0F10009D0 -:1008C000FFF64AAF19F003077FF446AF0E4A09EB73 -:1008D0000503926893423FF63FAFB9F5807F3FF73B -:1008E0003BAF124BB945019322DD4FF47A7000F013 -:1008F00073F90390039A002AFFF62EAF039A01378B -:10090000019B03F8012BEDE7002200207823002053 -:1009100060220020950400087C230020742200201F -:1009200004220020082200200C220020782200202F -:10093000C820FFF79BFD074600283FF40DAF1F2D91 -:1009400011D8C5F120020AAB25F0030084494A45BD -:10095000184428BF4A46019200F034FA019AFF2158 -:100960007F4800F055FA4FEAA903C9F387027C4992 -:100970002846019300F054FA064600283FF46AAF77 -:10098000019B05EB830531E70220FFF76FFD00288F -:100990003FF4E2AE00F0AAF900283FF4DDAE0027F4 -:1009A000B946704B9B68BB4218D91F2F11D80A9BC0 -:1009B00001330ED027F0030312AA134453F8203C4E -:1009C00005934846042205A9043700F019FB814627 -:1009D000E7E7384600F050F90590F2E7CDF81490BB -:1009E000042105A800F016F900E70023642104A8FB -:1009F000049300F005F900287FF4AEAE0220FFF763 -:100A000035FD00283FF4A8AE049800F065F9059084 -:100A1000E6E70023642104A8049300F0F1F800281D -:100A20007FF49AAE0220FFF721FD00283FF494AE38 -:100A3000049800F053F9EAE70220FFF717FD0028B9 -:100A40003FF48AAE00F062F9E1E70220FFF70EFD05 -:100A500000283FF481AE05A9142000F05DF9074697 -:100A60000421049004A800F0D5F83946B9E73220F3 -:100A700000F0B2F8071EFFF66FAEBB077FF46CAE56 -:100A8000384A07EB0A03926893423FF665AE0220AC -:100A9000FFF7ECFC00283FF45FAE27F00307574454 -:100AA000BA453FF4A3AE50460AF1040A00F0E4F858 -:100AB0000421059005A800F0ADF8F1E74FF47A7035 -:100AC000FFF7D4FC00283FF447AE00F00FF90028F0 -:100AD00044D00A9B01330BD008220AA9002000F061 -:100AE0009FF900283AD02022FF210AA800F090F9AF -:100AF000FFF7C4FC1C4801F05DFB13B0BDE8F08FAC -:100B0000002E3FF429AE0BF00B030B2B7FF424AE29 -:100B10000023642105A8059300F072F80746002819 -:100B20007FF41AAE0220FFF7A1FC814600283FF4B3 -:100B300013AEFFF7A3FC41F2883001F03BFB0598B0 -:100B400000F0FCF94E463C4600F0AEF9B6E506462C -:100B50004CE64FF0000AFFE5B8467BE6374679E6FB -:100B60007822002000220020A08601002DE9F84F05 -:100B70004FF47A7306460D46002402FB03F7DFF8B4 -:100B80005080DFF8509098F900305FFA84FA5A1CD0 -:100B900001D0A34210D159F824002A4631460368F7 -:100BA000D3F820B03B46D847854205D1074B0120FA -:100BB00083F800A0BDE8F88F0134042CE3D14FF492 -:100BC000FA7001F0F7FA0020F4E700BFC823002014 -:100BD0001022002058410008002307B502460121D9 -:100BE0000DF107008DF80730FFF7C0FF20B19DF829 -:100BF000070003B05DF804FB4FF0FF30F9E7000099 -:100C00000A46042108B5FFF7B1FF80F00100C0B229 -:100C1000404208BD074B0A4630B41978064B53F8DA -:100C20002140014623682046DD69044BAC4630BCB8 -:100C3000604700BFC823002058410008A08601007B -:100C400070B50A4E00240A4D01F060FD308028681E -:100C50003388834208D901F055FD2B6804440133E1 -:100C6000B4F5003F2B60F2D370BD00BFCA23002053 -:100C70008423002001F028BE00F1006000F5003060 -:100C80000068704700F10060920000F5003001F04C -:100C90009FBD0000054B1A68054B1B889B1A8342B9 -:100CA00002D9104401F02EBD00207047842300209B -:100CB000CA23002038B5074D04462868204401F0B7 -:100CC00027FD28B928682044BDE8384001F032BD2E -:100CD00038BD00BF842300200020704700F1FF5082 -:100CE00000F58F10D0F8000870470000064991F811 -:100CF000243033B100230822086A81F82430FFF73A -:100D0000C1BF0120704700BF88230020014B186835 -:100D1000704700BF0010005C244BF0B51A68044611 -:100D2000234BC2F30B06120C1F885868BE4293F97E -:100D3000085028D09F89BE4206D101200C2505FB12 -:100D40000033586893F9085041F201039A421CD0CD -:100D500041F203039A421AD042F201039A4218D098 -:100D600042F203039A4208BF5625621E0B46441EF8 -:100D70000A4493420FD214F9016F581C6EB1034616 -:100D800000F8016CF5E70020D8E75A25EDE7592572 -:100D9000EBE75825E9E7184605E02C2482421C7051 -:100DA00001D9981C5D70401AF0BD00BF0010005CB6 -:100DB0001422002000207047704700007047000098 -:100DC00070470000002310B5934203D0CC5CC4549C -:100DD0000133F9E710BD0000013810B510F9013FEB -:100DE0003BB191F900409C4203D11AB10131013A63 -:100DF000F4E71AB191F90020981A10BD1046FCE7EB -:100E000003460246D01A12F9011B0029FAD1704795 -:100E100002440346934202D003F8011BFAE77047ED -:100E20002DE9F8431F4D14460746884695F82420BF -:100E300052BBDFF870909CB395F824302BB9202278 -:100E4000FF2148462F62FFF7E3FF95F82400414653 -:100E5000C0F1080205EB8000A24228BF2246D6B2AC -:100E60009200FFF7AFFF95F82430A41B17441E44EF -:100E70009044E4B2F6B2082E85F82460DBD1FFF787 -:100E800035FF0028D7D108E02B6A03EB82038342A9 -:100E9000CFD0FFF72BFF0028CBD10020BDE8F8838F -:100EA0000120FBE788230020024B1A78024B1A70BE -:100EB000704700BFC823002010220020F8B5194C4D -:100EC000194800F079FC2146174800F0A1FC24687D -:100ED0001648D4F89020164ED2F80438154D43F039 -:100EE0000203114FC2F8043801F064F92046124998 -:100EF00000F09CFDD4F890200424D2F8043823F0AC -:100F00000203C2F804384FF4E133336055F8040BA0 -:100F1000B84202D0314600F0ADFB013C14F0FF04B2 -:100F2000F4D1F8BD70420008C832002040420F00E2 -:100F3000B0230020584100087842000838B50B4B18 -:100F400004461A780A4B53F822500A4B9D420CD0A3 -:100F5000094B002118221846FFF75AFF046001468A -:100F60002846BDE8384000F085BB38BDC8230020C6 -:100F700058410008C8320020B023002000B59BB0C3 -:100F8000EFF3098168226846FFF71CFFEFF3058342 -:100F9000044B9A6BDA6A9A6A9A6A9A6A9A6A9A6AA5 -:100FA0009B6AFEE700ED00E000B59BB0EFF309811E -:100FB00068226846FFF706FFEFF30583044B9A6B40 -:100FC0009A6A9A6A9A6A9A6A9A6A9B6AFEE700BF64 -:100FD00000ED00E000B59BB0EFF3098168226846A0 -:100FE000FFF7F0FEEFF30583034B5A6B9A6A9A6A98 -:100FF0009A6A9A6A9B6AFEE700ED00E0FEE700004D -:1010000030B50A44084D91420DD011F8013B5840CB -:10101000082340F30004013B2C4013F0FF0384EA53 -:101020005000F6D1EFE730BD2083B8ED0268436889 -:101030001143016003B1184770470000024A13686A -:1010400043F0C0031360704700440040024A136835 -:1010500043F0C0031360704700480040024A136821 -:1010600043F0C003136070470078004037B5274C49 -:10107000274D204600F0F2FA04F1140000940023FA -:101080004FF40072234900F0B3F94FF40072224983 -:1010900004F138000094214B00F02CFA204BC4E9F5 -:1010A0001735204C204600F0D9FA04F114000094C2 -:1010B00000234FF400721C4900F09AF94FF40072BB -:1010C0001A4904F138000094194B00F013FA194B37 -:1010D000C4E91735184C204600F0C0FA04F114009A -:1010E00000234FF400721549009400F081F9144B6D -:1010F0004FF40072134904F13800009400F0FAF93B -:10110000114BC4E9173503B030BD00BFCC2300201C -:1011100000E1F50510250020102B00203D100008EF -:10112000004400403824002010270020102D00200B -:101130004D10000800480040A42400201029002081 -:101140005D100008102F002000780040037C30B5AF -:10115000334C002918BF0C46012B18D1314B984253 -:101160000FD1314BD3F8E82042F40032C3F8E82025 -:10117000D3F8102142F40032C3F81021D3F8103113 -:1011800005E02A4B98422FD0294B984238D022684C -:10119000036EC16D03EB52038466B3FBF2F3626826 -:1011A000150442BF23F0070503F0070343EA450394 -:1011B000CB60A36843F040034B60E36843F0010356 -:1011C0008B6042F4967343F001030B604FF0FF33E2 -:1011D0000B62510505D512F010221DD0B2F1805FCF -:1011E0001CD080F8643030BD0F4BD3F8E82042F4B7 -:1011F0008022C3F8E820D3F8102142F48022BBE714 -:10120000094BD3F8E82042F08042C3F8E820D3F835 -:10121000102142F08042AFE77F23E2E73F23E0E77F -:1012200068410008CC2300200044025838240020E4 -:10123000A42400202DE9F047C66D05463768F469FF -:101240002107346219D014F0080118BF8021E20789 -:1012500048BF41F02001A3074FF0200348BF41F0F1 -:101260004001600748BF41F4807183F31188281D55 -:10127000FFF7DCFE002383F31188E2050AD5202363 -:1012800083F311884FF40071281DFFF7CFFE002370 -:1012900083F311884FF020094FF0000A14F0200862 -:1012A00038D13B0616D54FF0200905F1380A200643 -:1012B00010D589F31188504600F050F9002836DA2D -:1012C0000821281DFFF7B2FE27F0800333600023BA -:1012D00083F31188790614D5620612D5202383F38F -:1012E0001188D5E913239A4208D12B6C33B127F02A -:1012F00040071021281DFFF799FE3760002383F374 -:101300001188E30618D5AA6E1369ABB15069BDE820 -:10131000F047184789F31188736A284695F86410D6 -:10132000194000F0B5F98AF31188F469B6E7B062A4 -:1013300088F31188F469BAE7BDE8F087F8B5154677 -:10134000826804460B46AA4200D28568A1692669D4 -:10135000761AB5420BD218462A46FFF733FDA36929 -:101360002B44A3612846A3685B1BA360F8BD0CD97E -:10137000AF1B18463246FFF725FD3A46E168304478 -:10138000FFF720FDE3683B44EBE718462A46FFF7EA -:1013900019FDE368E5E7000083689342F7B504466A -:1013A000154600D28568D4E90460361AB5420BD2DE -:1013B0002A46FFF707FD63692B4463612846A3684B -:1013C0005B1BA36003B0F0BD0DD93246AF1B01918A -:1013D000FFF7F8FC01993A46E0683144FFF7F2FC68 -:1013E000E3683B44E9E72A46FFF7ECFCE368E4E7FF -:1013F00010B50A440024C361029B8460C16002618D -:101400000362C0E90000C0E9051110BD08B5D0E9CC -:101410000532934201D1826882B9826801328260CA -:101420005A1C426119700021D0E904329A4224BF4B -:10143000C368436100F0DAFE002008BD4FF0FF30C2 -:10144000FBE7000070B5202304460E4683F31188A5 -:10145000A568A5B1A368A269013BA360531CA36161 -:1014600015782269934224BFE368A361E3690BB155 -:1014700020469847002383F31188284607E0314629 -:10148000204600F0A3FE0028E2DA85F3118870BD43 -:101490002DE9F74F04460E4617469846D0F81C90A3 -:1014A0004FF0200A8AF311884FF0000B154665B102 -:1014B0002A4631462046FFF741FF034660B94146C0 -:1014C000204600F083FE0028F1D0002383F311882A -:1014D000781B03B0BDE8F08FB9F1000F03D0019085 -:1014E0002046C847019B8BF31188ED1A1E448AF3EE -:1014F0001188DCE7C160C361009B82600362C0E9C0 -:1015000005111144C0E9000001617047F8B50446B7 -:101510000D461646202383F31188A768A7B1A36858 -:10152000013BA36063695A1C62611D70D4E90432F7 -:101530009A4224BFE3686361E3690BB12046984790 -:10154000002080F3118807E03146204600F03EFE7F -:101550000028E2DA87F31188F8BD0000D0E90523FE -:1015600010B59A4201D182687AB9826800210132AD -:1015700082605A1C82611C7803699A4224BFC36846 -:10158000836100F033FE204610BD4FF0FF30FBE7D3 -:101590002DE9F74F04460E4617469846D0F81C90A2 -:1015A0004FF0200A8AF311884FF0000B154665B101 -:1015B0002A4631462046FFF7EFFE034660B9414612 -:1015C000204600F003FE0028F1D0002383F31188A9 -:1015D000781B03B0BDE8F08FB9F1000F03D0019084 -:1015E0002046C847019B8BF31188ED1A1E448AF3ED -:1015F0001188DCE7026843681143016003B11847B2 -:10160000704700001430FFF743BF00004FF0FF3376 -:101610001430FFF73DBF00003830FFF7B9BF0000BE -:101620004FF0FF333830FFF7B3BF00001430FFF73F -:1016300009BF00004FF0FF311430FFF703BF000077 -:101640003830FFF763BF00004FF0FF323830FFF74C -:101650005DBF000000207047FFF708BD044B03602A -:1016600000234360C0E9023301230374704700BFC5 -:101670008041000810B52023044683F31188FFF74A -:1016800065FD02232374002383F3118810BD00003D -:1016900038B5C36904460D461BB904210844FFF759 -:1016A000A9FF294604F11400FFF7B0FE002806DA6E -:1016B000201D4FF48061BDE83840FFF79BBF38BD67 -:1016C000026843681143016003B118477047000086 -:1016D00013B5406B00F58054D4F8A4381A6811781B -:1016E000042914D1017C022911D11979012312890D -:1016F0008B4013420BD101A94C3002F06DF8D4F8A5 -:10170000A4480246019B2179206800F0DFF902B06D -:1017100010BD0000143001F0EFBF00004FF0FF33A8 -:10172000143001F0E9BF00004C3002F0C1B80000F5 -:101730004FF0FF334C3002F0BBB80000143001F022 -:10174000BDBF00004FF0FF31143001F0B7BF000003 -:101750004C3002F08DB800004FF0FF324C3002F0F8 -:1017600087B800000020704710B500F58054D4F809 -:10177000A4381A681178042917D1017C022914D1E0 -:101780005979012352898B4013420ED1143001F054 -:101790004FFF024648B1D4F8A4484FF44073617932 -:1017A0002068BDE8104000F07FB910BD406BFFF726 -:1017B000DBBF0000704700007FB5124B01250426F7 -:1017C000044603600023057400F184024360294647 -:1017D000C0E902330C4B0290143001934FF4407374 -:1017E000009601F001FF094B04F69442294604F1EA -:1017F0004C000294CDE900634FF4407301F0C8FF40 -:1018000004B070BDA8410008AD170008D11600084B -:101810000A68202383F311880B790B3342F82300E5 -:101820004B79133342F823008B7913B10B3342F811 -:10183000230000F58053C3F8A41802230374002387 -:1018400083F311887047000038B5037F044613B155 -:1018500090F85430ABB90125201D0221FFF730FF6D -:1018600004F114006FF00101257700F0CBFC04F1C6 -:101870004C0084F854506FF00101BDE8384000F08E -:10188000C1BC38BD10B5012104460430FFF718FF74 -:101890000023237784F8543010BD000038B5044687 -:1018A0000025143001F0B8FE04F14C00257701F05A -:1018B00087FF201D84F854500121FFF701FF2046C7 -:1018C000BDE83840FFF750BF90F8803003F0600368 -:1018D000202B06D190F881200023212A03D81F2A2B -:1018E00006D800207047222AFBD1C0E91D3303E04F -:1018F000034A426707228267C3670120704700BF1F -:101900002C22002037B500F58055D5F8A4381A6888 -:10191000117804291AD1017C022917D119790123E0 -:1019200012898B40134211D100F14C04204602F081 -:1019300007F858B101A9204601F04EFFD5F8A44898 -:101940000246019B2179206800F0C0F803B030BD49 -:1019500001F10B03F0B550F8236085B004460D4645 -:10196000FEB1202383F3118804EB8507301D082185 -:10197000FFF7A6FEFB6806F14C005B691B681BB114 -:10198000019001F037FF019803A901F025FF0246FD -:1019900048B1039B2946204600F098F8002383F3C2 -:1019A000118805B0F0BDFB685A691268002AF5D0AD -:1019B0001B8A013B1340F1D104F18002EAE70000E9 -:1019C000133138B550F82140ECB1202383F311884E -:1019D00004F58053D3F8A4281368527903EB8203EB -:1019E000DB689B695D6845B104216018FFF768FEFC -:1019F000294604F1140001F025FE2046FFF7B4FE4D -:101A0000002383F3118838BD7047000001F018B936 -:101A100001234022002110B5044600F8303BFFF7B7 -:101A2000F7F90023C4E9013310BD000010B52023ED -:101A3000044683F311882422416000210C30FFF713 -:101A4000E7F9204601F01EF902232370002383F3F7 -:101A5000118810BD70B500EB8103054650690E4634 -:101A60001446DA6018B110220021FFF7D1F9A069FD -:101A700018B110220021FFF7CBF931462846BDE806 -:101A8000704001F011BA000083682022002103F0A9 -:101A9000011310B5044683601030FFF7B9F92046F2 -:101AA000BDE8104001F08CBAF0B4012500EB8104D0 -:101AB00047898D40E4683D43A46945812360002344 -:101AC000A2606360F0BC01F0A9BA0000F0B4012587 -:101AD00000EB810407898D40E4683D43646905811A -:101AE00023600023A2606360F0BC01F01FBB000014 -:101AF00070B5022300250446242203702946C0F84D -:101B000088500C3040F8045CFFF782F9204684F8D6 -:101B1000705001F05DF963681B6823B129462046C7 -:101B2000BDE87040184770BD037880F88C300523FD -:101B3000037043681B6810B504460BB10421984735 -:101B40000023A36010BD000090F88C204368027051 -:101B50001B680BB1052118477047000070B590F85D -:101B60007030044613B1002380F8703004F1800215 -:101B7000204601F049FA63689B68B3B994F8803055 -:101B800013F0600535D00021204601F0F3FC002160 -:101B9000204601F0E3FC63681B6813B10621204670 -:101BA0009847062384F8703070BD20469847002877 -:101BB000E4D0B4F88630A26F9A4288BFA36794F944 -:101BC0008030A56F002B4FF0200380F20381002DA1 -:101BD00000F0F280092284F8702083F3118800213C -:101BE0002046D4E91D23FFF771FF002383F31188FA -:101BF000DAE794F8812003F07F0343EA022340F2FE -:101C00000232934200F0C58021D8B3F5807F48D0DE -:101C10000DD8012B3FD0022B00F09380002BB2D1C6 -:101C200004F1880262670222A267E367C1E7B3F5A5 -:101C3000817F00F09B80B3F5407FA4D194F882307F -:101C4000012BA0D1B4F8883043F0020332E0B3F5A1 -:101C5000006F4DD017D8B3F5A06F31D0A3F5C06396 -:101C6000012B90D86368204694F882205E6894F82F -:101C70008310B4F88430B047002884D04368636789 -:101C80000368A3671AE0B3F5106F36D040F602423E -:101C900093427FF478AF5C4B63670223A367002312 -:101CA000C3E794F88230012B7FF46DAFB4F888302D -:101CB00023F00203A4F88830C4E91D55E56778E7EE -:101CC000B4F88030B3F5A06F0ED194F8823020467E -:101CD00084F88A3001F0DAF863681B6813B10121D7 -:101CE00020469847032323700023C4E91D339CE753 -:101CF00004F18B0363670123C3E72378042B10D11E -:101D0000202383F311882046FFF7BEFE85F3118858 -:101D10000321636884F88B5021701B680BB1204647 -:101D2000984794F88230002BDED084F88B3004235F -:101D3000237063681B68002BD6D002212046984789 -:101D4000D2E794F8843020461D0603F00F010AD52F -:101D500001F04CF9012804D002287FF414AF2B4B7A -:101D60009AE72B4B98E701F033F9F3E794F88230C8 -:101D7000002B7FF408AF94F8843013F00F01B3D038 -:101D80001A06204602D501F00DFCADE701F0FEFB7E -:101D9000AAE794F88230002B7FF4F5AE94F88430F3 -:101DA00013F00F01A0D01B06204602D501F0E2FB84 -:101DB0009AE701F0D3FB97E7142284F8702083F3AD -:101DC00011882B462A4629462046FFF76DFE85F3EB -:101DD0001188E9E65DB1152284F8702083F311883B -:101DE00000212046D4E91D23FFF75EFEFDE60B220D -:101DF00084F8702083F311882B462A462946204612 -:101E0000FFF764FEE3E700BFD8410008D0410008B7 -:101E1000D441000838B590F870300446002B3ED00D -:101E2000063BDAB20F2A34D80F2B32D8DFE803F0A2 -:101E300037313108223231313131313131313737B7 -:101E4000856FB0F886309D4214D2C3681B8AB5FBFB -:101E5000F3F203FB12556DB9202383F311882B464F -:101E60002A462946FFF732FE85F311880A2384F8B3 -:101E700070300EE0142384F87030202383F311882F -:101E8000002320461A461946FFF70EFE002383F36F -:101E9000118838BDC36F03B198470023E7E70021DD -:101EA000204601F067FB0021204601F057FB6368E4 -:101EB0001B6813B10621204698470623D7E7000088 -:101EC00010B590F870300446142B29D017D8062B83 -:101ED00005D001D81BB110BD093B022BFBD8002156 -:101EE000204601F047FB0021204601F037FB6368E4 -:101EF0001B6813B1062120469847062319E0152BCD -:101F0000E9D10B2380F87030202383F3118800235C -:101F10001A461946FFF7DAFD002383F31188DAE742 -:101F2000C3689B695B68002BD5D1C36F03B1984729 -:101F3000002384F87030CEE7024B0022C3E900335F -:101F40009A60704710310020002382680374054BAB -:101F50001B6899689142FBD25A6803604260106026 -:101F6000586070471031002008B5202383F3118892 -:101F7000037C032B05D0042B0DD02BB983F31188E0 -:101F800008BD436900221A604FF0FF334361FFF739 -:101F9000DBFF0023F2E7D0E9003213605A60F3E779 -:101FA000002382680374054B1B6899689142FBD833 -:101FB0005A6803604260106058607047103100201A -:101FC000054B196908741868026853601A60186133 -:101FD00001230374FEF7FAB9103100204B1C30B511 -:101FE000044687B00A4D10D02B6901A8094A00F0B9 -:101FF00025F92046FFF7E4FF049B13B101A800F088 -:1020000059F92B69586907B030BDFFF7D9FFF8E7D8 -:1020100010310020691F000838B50C4D044641619D -:102020002B6981689A68914203D8BDE83840FFF770 -:102030008BBF1846FFF7B4FF01232C6101462374C0 -:102040002046BDE83840FEF7C1B900BF103100207E -:10205000044B1A681B6990689B68984294BF0020E3 -:10206000012070471031002010B5084C236820690A -:102070001A6854602260012223611A74FFF790FFEE -:1020800001462069BDE81040FEF7A0B910310020DC -:1020900008B5FFF7DDFF18B1BDE80840FFF7E4BF62 -:1020A00008BD0000FFF7E0BFFEE7000010B50C4CD4 -:1020B000FFF742FF00F0B4F880220A49204600F002 -:1020C0003BF8012344F8180C037400F097FC00233C -:1020D00083F3118862B60448BDE8104000F04CB8A4 -:1020E00038310020DC410008EC41000800F01CB948 -:1020F000EFF3118020B9EFF30583202282F31188DA -:102100007047000010B530B9EFF30584C4F308043C -:1021100014B180F3118810BDFFF7BAFF84F3118862 -:10212000F9E70000034A516853685B1A9842FBD8EC -:10213000704700BF001000E08260022202827047F8 -:102140008368A3F17C0243F80C2C026943F83C2C11 -:10215000426943F8382C074A43F81C2CC268A3F1A3 -:10216000180043F8102C022203F8082C002203F870 -:10217000072C7047E503000810B5202383F311886E -:10218000FFF7DEFF00210446FFF746FF002383F33D -:102190001188204610BD0000024B1B6958610F20BA -:1021A000FFF70EBF10310020202383F31188FFF7C3 -:1021B000F3BF000008B50146202383F311880820EF -:1021C000FFF70CFF002383F3118808BD49B1064BCC -:1021D00042681B6918605A60136043600420FFF76F -:1021E000FDBE4FF0FF307047103100200368984269 -:1021F00006D01A680260506018465961FFF7A4BE05 -:102200007047000038B504460D462068844200D16E -:1022100038BD036823605C604561FFF795FEF4E715 -:10222000054B4FF0FF3103F11402C3E905220022F0 -:10223000C3E90712704700BF1031002070B51C4E73 -:1022400005460C46C0E9032301F0B0FB334653F8C2 -:10225000142F9A420DD130620A2C2CBF00190A307B -:102260002A60C5E90124C6E90555BDE8704001F0C2 -:1022700087BB316A431AE31838BF1C469368A342F0 -:1022800002D9081901F08CFB73699A6894420CD842 -:102290005A68AC602B606A6015609A685D60121BBA -:1022A0009A604FF0FF33F36170BDA41A1B68ECE72E -:1022B0001031002038B51B4C636998420DD08168FD -:1022C000D0E9003213605A600022C2609A680A4462 -:1022D0009A604FF0FF33E36138BD03682246002166 -:1022E00042F8143F93425A60C16003D1BDE83840C0 -:1022F00001F050BB9A688168256A0A449A6001F02F -:1023000055FB6369411B9A688A42E5D9AB181D1ACF -:10231000206A092D98BF01F10A02BDE83840104437 -:1023200001F03EBB103100202DE9F041184C002790 -:1023300004F11406656901F039FB236AAA68C11A21 -:102340008A4215D81344D5F80C802362D5E90032AF -:1023500013605A606369EF60B34201D101F01AFB68 -:1023600087F311882869C047202383F31188E1E7A8 -:102370006169B14209D013441B1ABDE8F0410A2B30 -:102380002CBFC0180A3001F00BBBBDE8F08100BFC4 -:102390001031002000207047FEE700007047000069 -:1023A0004FF0FF307047000002290CD0032904D001 -:1023B0000129074818BF00207047032A05D805489F -:1023C00000EBC2007047044870470020704700BF10 -:1023D000D44200083C2200208842000870B59AB020 -:1023E00005460846144601A900F0C2F801A8FEF708 -:1023F00007FD431C0022C6B25B001046C5E900344D -:1024000023700323023404F8013C01ABD1B202343F -:102410008E4201D81AB070BD13F8011B013204F8C6 -:10242000010C04F8021CF1E708B5202383F311889E -:102430000348FFF767FA002383F3118808BD00BF44 -:10244000C832002090F8803003F01F02012A07D123 -:1024500090F881200B2A03D10023C0E91D3315E039 -:1024600003F06003202B08D1B0F884302BB990F82A -:102470008120212A03D81F2A04D8FFF725BA222A4F -:10248000EBD0FAE7034A426707228267C36701205D -:10249000704700BF3322002007B5052917D8DFE8B1 -:1024A00001F0191603191920202383F31188104A0B -:1024B00001210190FFF7CEFA019802210D4AFFF7A2 -:1024C000C9FA0D48FFF7EAF9002383F3118803B036 -:1024D0005DF804FB202383F311880748FFF7B4F964 -:1024E000F2E7202383F311880348FFF7CBF9EBE7EA -:1024F000284200084C420008C832002038B50C4D74 -:102500000C4C2A460C4904F10800FFF767FF05F15F -:10251000CA0204F110000949FFF760FF05F5CA720D -:1025200004F118000649BDE83840FFF757BF00BF67 -:10253000A04B00203C220020044200080E4200086C -:102540001D42000870B5044608460D46FEF758FCCB -:10255000C6B22046013403780BB9184670BD324626 -:102560002946FEF739FC0028F3D10120F6E70000E8 -:102570002DE9F04705460C46FEF742FC2B49C6B252 -:102580002846FFF7DFFF08B10736F6B2284928468C -:10259000FFF7D8FF08B11036F6B2632E0BD8DFF87C -:1025A0008C80DFF88C90234FDFF894A02E7846B90A -:1025B0002670BDE8F08729462046BDE8F04701F0C7 -:1025C000B5BD252E2ED1072241462846FEF704FC34 -:1025D00070B9194B224603F10C0153F8040B8B42DE -:1025E00042F8040BF9D11B8807350E341380DDE760 -:1025F000082249462846FEF7EFFB98B9A21C0F4B6C -:10260000197802320909C95D02F8041C13F8011B8C -:1026100001F00F015345C95D02F8031CF0D11834D5 -:102620000835C3E7013504F8016BBFE7F442000841 -:102630001D4200080B430008FC42000800E8F11F9F -:102640000CE8F11FBFF34F8F044B1A695107FCD1FF -:10265000D3F810215207F8D1704700BF0020005274 -:1026600008B50D4B1B78ABB9FFF7ECFF0B4BDA68E5 -:10267000D10704D50A4A5A6002F188325A60D3F869 -:102680000C21D20706D5064AC3F8042102F188328C -:10269000C3F8042108BD00BFFE4D002000200052F9 -:1026A0002301674508B5114B1B78F3B9104B1A6924 -:1026B000510703D5DA6842F04002DA60D3F81021FE -:1026C000520705D5D3F80C2142F04002C3F80C2183 -:1026D000FFF7B8FF064BDA6842F00102DA60D3F880 -:1026E0000C2142F00102C3F80C2108BDFE4D002070 -:1026F000002000520F289ABF00F58060400400209F -:10270000704700004FF40030704700001020704701 -:102710000F2808B50BD8FFF7EDFF00F5003302686E -:10272000013204D104308342F9D1012008BD0020D8 -:10273000FCE700000F2870B5054645D8FFF7D8FC28 -:10274000224CFFF77FFF0646FFF78AFF4FF0FF336B -:10275000072D6361C4F8143120D82361FFF772FF9D -:102760002B0243F02403E360E36843F08003E3605B -:1027700023695A07FCD42846FFF764FF4FF4003161 -:10278000FFF7B8FF00F002F93046FFF78BFFFFF7C5 -:10279000B9FC2846BDE87040FFF7BABFC4F8103155 -:1027A000FFF750FFA5F108031B0243F02403C4F810 -:1027B0000C31D4F80C3143F08003C4F80C31D4F858 -:1027C00010315B07FBD4D6E7002070BD002000521B -:1027D0002DE9F84F40EA020305460C461746D80695 -:1027E00002D00020BDE8F88F27F01F07DFF8D4B033 -:1027F000FFF736FF2744BC4203D10120FFF752FF09 -:10280000F0E720222946204601F080FC10B920354F -:102810002034F0E72B4605F120021E68711CE0D140 -:1028200004339A42F9D1FFF763FC05F17843234A58 -:10283000B3F5801F224B28BF9A4603F1040338BF2B -:102840009046A2F1080228BF9846A3F108033ABFB8 -:102850009146DA469946FFF7F5FEC8F80060A5EB09 -:10286000040CD9F8002004F11C0142F00202C9F85E -:102870000020221FDAF8006016F00506FAD152F89F -:10288000043F8A424CF80230F4D1BFF34F8FFFF778 -:10289000D9FE4FF0FF32C8F80020D9F8002022F00E -:1028A0000202C9F80020FFF72DFC2022214628460D -:1028B00001F02CFC0028AAD030469FE714200052DB -:1028C000102100521020005210B5084C237828B176 -:1028D0001BB9FFF7C5FE0123237010BD002BFCD0F0 -:1028E0002070BDE81040FFF7DDBE00BFFE4D0020A8 -:1028F0000244074BD2B210B5904200D110BD441C27 -:1029000000B253F8200041F8040BE0B2F4E700BF36 -:10291000504000580E4B30B51C6F240405D41C6F7A -:102920001C671C6F44F400441C670A4C0244236873 -:10293000D2B243F480732360074B904200D130BD84 -:10294000441C51F8045B00B243F82050E0B2F4E7B5 -:1029500000440258004802585040005807B5012270 -:1029600001A90020FFF7C4FF019803B05DF804FB44 -:1029700013B50446FFF7F2FFA04205D0012201A9DA -:1029800000200194FFF7C6FF02B010BD0144BFF361 -:102990004F8F064B884204D3BFF34F8FBFF36F8F27 -:1029A0007047C3F85C022030F4E700BF00ED00E0A0 -:1029B000034B1A681AB9034AD2F8D0241A60704738 -:1029C000004E00200040025808B5FFF7F1FF024B0F -:1029D0001868C0F3806008BD004E0020EFF3098343 -:1029E000054968334A6B22F001024A6383F3098880 -:1029F000002383F31188704700EF00E0202080F36C -:102A0000118862B60D4B0E4AD96821F4E0610904C1 -:102A1000090C0A430B49DA60D3F8FC2042F08072BB -:102A2000C3F8FC20084AC2F8B01F116841F0010148 -:102A300011601022DA7783F82200704700ED00E081 -:102A40000003FA0555CEACC5001000E0202310B5F8 -:102A500083F311880E4B5B6813F4006314D0F1EE1E -:102A6000103AEFF309844FF08073683CE361094B3F -:102A7000DB6B236684F30988FFF7EAFA10B1064B93 -:102A8000A36110BD054BFBE783F31188F9E700BF95 -:102A900000ED00E000EF00E0F7030008FA03000893 -:102AA00070B5BFF34F8FBFF36F8F1A4A0021C2F882 -:102AB0005012BFF34F8FBFF36F8F536943F400334E -:102AC0005361BFF34F8FBFF36F8FC2F88410BFF312 -:102AD0004F8FD2F8803043F6E074C3F3C900C3F3DC -:102AE0004E335B0103EA0406014646EA817501396B -:102AF000C2F86052F9D2203B13F1200FF2D1BFF39C -:102B00004F8F536943F480335361BFF34F8FBFF34B -:102B10006F8F70BD00ED00E0FEE700000A4B0B4830 -:102B20000B4A90420BD30B4BC11EDA1C121A22F037 -:102B300003028B4238BF00220021FEF769B953F827 -:102B4000041B40F8041BECE7EC440008D44F0020C1 -:102B5000D44F0020D44F00207047000070B5D0E95A -:102B6000244300224FF0FF359E6804EB42135101CD -:102B7000D3F80009002805DAD3F8000940F08040B6 -:102B8000C3F80009D3F8000B002805DAD3F8000BCE -:102B900040F08040C3F8000B013263189642C3F83E -:102BA0000859C3F8085BE0D24FF00113C4F81C3891 -:102BB00070BD000000EB8103D3F80CC02DE9F04399 -:102BC000DCF814204E1CD0F89050D2F800E005EB51 -:102BD000063605EB4118506870450AD30122D5F836 -:102BE000343802FA01F123EA0101C5F83418BDE8CE -:102BF000F083AEEB0003BCF81040A34228BF23468D -:102C0000D8F81849A4B2B3EB840FF0D89468A4F1B3 -:102C1000040959F8047F3760A4EB09071F44042F07 -:102C2000F7D81C44034494605360D4E7890141F011 -:102C30002001016103699B06FCD41220FFF772BAE0 -:102C400010B50A4C2046FEF7E3FE094BC4F890305D -:102C5000084BC4F89430084C2046FEF7D9FE074BC9 -:102C6000C4F89030064BC4F8943010BD044E0020D8 -:102C70000000084040430008A04E0020000004402F -:102C80004C43000870B503780546012B5DD1494BD4 -:102C9000D0F89040984259D1474B0E216520D3F887 -:102CA000D82042F00062C3F8D820D3F8002142F0C7 -:102CB0000062C3F80021D3F80021D3F8802042F04D -:102CC0000062C3F88020D3F8802022F00062C3F8AD -:102CD0008020D3F8803000F071FC384BE360384B33 -:102CE000C4F800380023D5F89060C4F8003EC02333 -:102CF00023604FF40413A3633369002BFCDA012330 -:102D00000C203361FFF70EFA3369DB07FCD4122085 -:102D1000FFF708FA3369002BFCDA00262846A66084 -:102D2000FFF71CFF6B68C4F81068DB68C4F8146810 -:102D3000C4F81C68002B3AD1224BA3614FF0FF333B -:102D40006361A36843F00103A36070BD1E4B98420A -:102D5000C8D1194B0E214D20D3F8D82042F0007273 -:102D6000C3F8D820D3F8002142F00072C3F8002144 -:102D7000D3F80021D3F8802042F00072C3F88020FD -:102D8000D3F8802022F00072C3F88020D3F880208E -:102D9000D3F8D82022F08062C3F8D820D3F80021DD -:102DA00022F08062C3F80021D3F8003193E7074B8B -:102DB000C3E700BF044E0020004402584014004006 -:102DC00003002002003C30C0A04E0020083C30C070 -:102DD000F8B5D0F89040054600214FF00066204637 -:102DE000FFF724FFD5F8941000234FF001128F68ED -:102DF0004FF0FF30C4F83438C4F81C2804EB4312F9 -:102E000001339F42C2F80069C2F8006BC2F808099A -:102E1000C2F8080BF2D20B68D5F89020C5F89830AC -:102E2000636210231361166916F01006FBD112209D -:102E3000FFF778F9D4F8003823F4FE63C4F80038BB -:102E4000A36943F4402343F01003A3610923C4F8AA -:102E50001038C4F814380B4BEB604FF0C043C4F883 -:102E6000103B094BC4F8003BC4F81069C4F80039A2 -:102E7000D5F8983003F1100243F48013C5F8982078 -:102E8000A362F8BD1C43000840800010D0F89020D9 -:102E900090F88A10D2F8003823F4FE6343EA011355 -:102EA000C2F80038704700002DE9F84300EB8103B9 -:102EB000D0F890500C468046DA680FFA81F9480144 -:102EC000166806F00306731E022B05EB41134FF044 -:102ED000000194BFB604384EC3F8101B4FF0010137 -:102EE00004F1100398BF06F1805601FA03F39169CB -:102EF00098BF06F5004600293AD0578A04F15801D8 -:102F0000374349016F50D5F81C180B430021C5F811 -:102F10001C382B180127C3F81019A7405369611EEC -:102F20009BB3138A928B9B08012A88BF5343D8F81E -:102F30009820981842EA034301F140022146C8F85C -:102F40009800284605EB82025360FFF76FFE08EBFE -:102F50008900C3681B8A43EA845348341E436401D2 -:102F60002E51D5F81C381F43C5F81C78BDE8F883EE -:102F700005EB4917D7F8001B21F40041C7F8001BE7 -:102F8000D5F81C1821EA0303C0E704F13F030B4AFC -:102F90002846214605EB83035A60FFF747FE05EB01 -:102FA0004910D0F8003923F40043C0F80039D5F8AF -:102FB0001C3823EA0707D7E700800010000400024E -:102FC000D0F894201268C0F89820FFF7C7BD000021 -:102FD0005831D0F8903049015B5813F4004004D0C8 -:102FE00013F4001F0CBF0220012070474831D0F8B5 -:102FF000903049015B5813F4004004D013F4001FD3 -:103000000CBF02200120704700EB8101CB68196AD8 -:103010000B6813604B6853607047000000EB81033E -:1030200030B5DD68AA691368D36019B9402B84BF35 -:10303000402313606B8A1468D0F890201C4402EB84 -:103040004110013C09B2B4FBF3F46343033323F0B2 -:10305000030343EAC44343F0C043C0F8103B2B686A -:1030600003F00303012B0ED1D2F8083802EB411014 -:1030700013F4807FD0F8003B14BF43F0805343F03B -:103080000053C0F8003B02EB4112D2F8003B43F082 -:103090000443C2F8003B30BD2DE9F041D0F8906008 -:1030A00005460C4606EB4113D3F8087B3A07C3F8F4 -:1030B000087B08D5D6F814381B0704D500EB81032C -:1030C000DB685B689847FA071FD5D6F81438DB072A -:1030D0001BD505EB8403D968CCB98B69488A5A683B -:1030E000B2FBF0F600FB16228AB91868DA68904243 -:1030F0000DD2121AC3E90024202383F3118821463C -:103100002846FFF78BFF84F31188BDE8F081012387 -:1031100003FA04F26B8923EA02036B81CB68002B6C -:10312000F3D021462846BDE8F041184700EB810363 -:103130004A0170B5DD68D0F890306C692668E660A9 -:1031400056BB1A444FF40020C2F810092A6802F056 -:103150000302012A0AB20ED1D3F8080803EB421485 -:1031600010F4807FD4F8000914BF40F0805040F084 -:103170000050C4F8000903EB4212D2F8000940F0F5 -:103180000440C2F800090122D3F8340802FA01F120 -:103190000143C3F8341870BD19B9402E84BF4020D4 -:1031A000206020681A442E8A8419013CB4FBF6F48E -:1031B00040EAC44040F00050C6E700002DE9F0416D -:1031C000D0F8906004460D4606EB4113D3F8087919 -:1031D000C3F80879FB071CD5D6F81038DA0718D5DC -:1031E00000EB8103D3F80CC0DCF81430D3F800E016 -:1031F000DA6896451BD2A2EB0E024FF000081A6067 -:10320000C3F80480202383F31188FFF78FFF88F32E -:1032100011883B0618D50123D6F83428AB40134259 -:1032200012D029462046BDE8F041FFF7C3BC012378 -:1032300003FA01F2038923EA02030381DCF8083070 -:10324000002BE6D09847E4E7BDE8F0812DE9F84F80 -:10325000D0F8905004466E69AB691E4016F4805851 -:103260006E6103D0BDE8F84FFEF742BC002E12DAC3 -:10327000D5F8003E9F0705D0D5F8003E23F00303A4 -:10328000C5F8003ED5F80438204623F00103C5F800 -:103290000438FEF759FC300505D52046FFF75EFCE3 -:1032A0002046FEF741FCB1040CD5D5F8083813F0E0 -:1032B000060FEB6823F470530CBF43F4105343F430 -:1032C000A053EB60320704D56368DB680BB120467E -:1032D0009847F30200F1BA80B70226D5D4F890904F -:1032E00000274FF0010A09EB4712D2F8003B03F424 -:1032F0004023B3F5802F11D1D2F8003B002B0DDA1B -:1033000062890AFA07F322EA0303638104EB870365 -:10331000DB68DB6813B13946204698470137D4F89B -:103320009430FFB29B689F42DDD9F00619D5D4F8DE -:103330009000026AC2F30A1702F00F0302F4F012BF -:10334000B2F5802F00F0CC80B2F5402F09D104EB0C -:103350008303002200F58050DB681B6A974240F02F -:10336000B2803003D5F8185835D5E90303D50021CC -:103370002046FFF791FEAA0303D501212046FFF75F -:103380008BFE6B0303D502212046FFF785FE2F033A -:1033900003D503212046FFF77FFEE80203D5042171 -:1033A0002046FFF779FEA90203D505212046FFF745 -:1033B00073FE6A0203D506212046FFF76DFE2B023D -:1033C00003D507212046FFF767FEEF0103D508214B -:1033D0002046FFF761FE700340F1A980E90703D59D -:1033E00000212046FFF7EAFEAA0703D50121204667 -:1033F000FFF7E4FE6B0703D502212046FFF7DEFE50 -:103400002F0703D503212046FFF7D8FEEE0603D58C -:1034100004212046FFF7D2FEA80603D50521204649 -:10342000FFF7CCFE690603D506212046FFF7C6FE4E -:103430002A0603D507212046FFF7C0FEEB0576D507 -:1034400020460821BDE8F84FFFF7B8BED4F89090A9 -:1034500000274FF0010AD4F894305FFA87FB9B688D -:103460009B453FF639AF09EB4B13D3F8002902F423 -:103470004022B2F5802F24D1D3F80029002A20DA87 -:10348000D3F8002942F09042C3F80029D3F800296C -:10349000002AFBDB5946D4F89000FFF7C7FB2289CE -:1034A0000AFA0BF322EA0303238104EB8B03DB68A4 -:1034B0009B6813B159462046984759462046FFF766 -:1034C00079FB0137C7E7910701D1D0F80080072ABF -:1034D00002F101029CBF03F8018B4FEA18283DE777 -:1034E00004EB830300F58050DA68D2F818C0DCF8EA -:1034F0000820DCE9001CA1EB0C0C00218F4208D154 -:10350000DB689B699A683A449A605A683A445A6000 -:1035100027E711F0030F01D1D0F800808C4501F1AD -:10352000010184BF02F8018B4FEA1828E6E7BDE8E5 -:10353000F88F000008B50348FFF788FEBDE8084093 -:10354000FFF784BA044E002008B50348FFF77EFE5B -:10355000BDE80840FFF77ABAA04E0020D0F89030BE -:1035600003EB4111D1F8003B43F40013C1F8003BD9 -:1035700070470000D0F8903003EB4111D1F80039CA -:1035800043F40013C1F8003970470000D0F89030C0 -:1035900003EB4111D1F8003B23F40013C1F8003BC9 -:1035A00070470000D0F8903003EB4111D1F800399A -:1035B00023F40013C1F8003970470000090100F13D -:1035C0006043012203F56143C9B283F8001300F0A0 -:1035D0001F039A4043099B0003F1604303F56143D5 -:1035E000C3F880211A60704730B50433039C017220 -:1035F000002104FB0325C160C0E90653049B03635B -:10360000059BC0E90000C0E90422C0E90842C0E906 -:103610000A11436330BD00000022416AC260C0E964 -:103620000411C0E90A226FF00101FEF7EBBD0000B2 -:10363000D0E90432934201D1C2680AB9181D70471B -:1036400000207047036919600021C2680132C2601E -:10365000C269134482699342036124BF436A0361D0 -:10366000FEF7C4BD38B504460D46E3683BB1626958 -:103670000020131D1268A3621344E36207E0237A5B -:1036800033B929462046FEF7A1FD0028EDDA38BD02 -:103690006FF00100FBE70000C368C269013BC36033 -:1036A0004369134482699342436124BF436A43617F -:1036B00000238362036B03B11847704770B5202362 -:1036C000044683F31188866A3EB9FFF7CBFF0546AF -:1036D00018B186F31188284670BDA36AE26A13F810 -:1036E000015B9342A36202D32046FFF7D5FF00237C -:1036F00083F31188EFE700002DE9F84F04460E46EA -:10370000174698464FF0200989F311880025AA46EC -:10371000D4F828B0BBF1000F09D141462046FFF78D -:10372000A1FF20B18BF311882846BDE8F88FD4E9BA -:103730000A12A7EB050B521A934528BF9346BBF11B -:10374000400F1BD9334601F1400251F8040B91425E -:1037500043F8040BF9D1A36A403640354033A362E5 -:10376000D4E90A239A4202D32046FFF795FF8AF351 -:103770001188BD42D8D289F31188C9E730465A462C -:10378000FDF720FBA36A5E445D445B44A362E7E768 -:1037900010B5029C0433017204FB0321C460C0E92C -:1037A00006130023C0E90A33039B0363049BC0E9AB -:1037B0000000C0E90422C0E90842436310BD0000D4 -:1037C000026A6FF00101C260426AC0E9042200226D -:1037D000C0E90A22FEF716BDD0E904239A4201D1BE -:1037E000C26822B9184650F8043B0B6070470020AD -:1037F00070470000C3680021C2690133C360436998 -:10380000134482699342436124BF436A4361FEF7D4 -:10381000EDBC000038B504460D46E3683BB12369B2 -:1038200000201A1DA262E2691344E36207E0237AD2 -:1038300033B929462046FEF7C9FC0028EDDA38BD29 -:103840006FF00100FBE7000003691960C268013AEC -:10385000C260C269134482699342036124BF436A10 -:10386000036100238362036B03B1184770470000B4 -:1038700070B520230D460446114683F31188866AED -:103880002EB9FFF7C7FF10B186F3118870BDA36A88 -:103890001D70A36AE26A01339342A36204D3E16913 -:1038A00020460439FFF7D0FF002080F31188EDE7B0 -:1038B0002DE9F84F04460D46904699464FF0200AF0 -:1038C0008AF311880026B346A76A4FB949462046B5 -:1038D000FFF7A0FF20B187F311883046BDE8F88FCD -:1038E000D4E90A073A1AA8EB0607974228BF1746F9 -:1038F000402F1BD905F1400355F8042B9D4240F899 -:10390000042BF9D1A36A40364033A362D4E90A23D9 -:103910009A4204D3E16920460439FFF795FF8BF3FF -:1039200011884645D9D28AF31188CDE729463A460F -:10393000FDF748FAA36A3D443E443B44A362E5E7F1 -:10394000D0E904239A4217D1C3689BB1836A8BB133 -:10395000043B9B1A0ED01360C368013BC360C3696C -:103960001A4483699A42026124BF436A03610023B7 -:1039700083620123184670470023FBE700F0DAB8A2 -:10398000034B002258631A610222DA60704700BFBD -:10399000000C0040014B0022DA607047000C004030 -:1039A000014B5863704700BF000C0040014B586A40 -:1039B000704700BF000C00404B6843608B68836019 -:1039C000CB68C3600B6943614B6903628B694362D7 -:1039D0000B6803607047000008B53C4B40F2FF7174 -:1039E0003B48D3F888200A43C3F88820D3F88820BE -:1039F00022F4FF6222F00702C3F88820D3F888205F -:103A0000D3F8E0200A43C3F8E020D3F808210A43A2 -:103A1000C3F808212F4AD3F808311146FFF7CCFF2D -:103A200000F5806002F11C01FFF7C6FF00F5806021 -:103A300002F13801FFF7C0FF00F5806002F1540188 -:103A4000FFF7BAFF00F5806002F17001FFF7B4FFE5 -:103A500000F5806002F18C01FFF7AEFF00F5806099 -:103A600002F1A801FFF7A8FF00F5806002F1C40190 -:103A7000FFF7A2FF00F5806002F1E001FFF79CFF75 -:103A800000F5806002F1FC01FFF796FF02F58C71F2 -:103A900000F58060FFF790FF00F000F90E4BD3F8BF -:103AA000902242F00102C3F89022D3F8942242F00F -:103AB0000102C3F894220522C3F898204FF0605207 -:103AC000C3F89C20054AC3F8A02008BD0044025852 -:103AD000000002585843000800ED00E01F000803F2 -:103AE00008B500F0F3FAFEF7E1FA0F4BD3F8DC204B -:103AF00042F04002C3F8DC20D3F8042122F0400257 -:103B0000C3F80421D3F80431084B1A6842F00802C4 -:103B10001A601A6842F004021A60FEF749FFBDE815 -:103B20000840FEF7EBBC00BF0044025800180248F2 -:103B300070470000114BD3F8E82042F00802C3F8A8 -:103B4000E820D3F8102142F00802C3F810210C4AF3 -:103B5000D3F81031D36B43F00803D363C722094B6A -:103B60009A624FF0FF32DA6200229A615A63DA6099 -:103B70005A6001225A611A60704700BF004402581F -:103B80000010005C000C0040094A08B51169D368B8 -:103B90000B40D9B29B076FEA0101116107D52023C1 -:103BA00083F31188FEF7A2FA002383F3118808BD7E -:103BB000000C0040384B4FF0FF31D3F88020C3F8A1 -:103BC0008010D3F880200022C3F88020D3F8800032 -:103BD000D3F88400C3F88410D3F88400C3F8842099 -:103BE000D3F88400D86F40F0FF4040F4FF0040F469 -:103BF0003F5040F03F00D867D86F20F0FF4020F4DE -:103C0000FF0020F43F5020F03F00D867D86FD3F872 -:103C100088006FEA40506FEA5050C3F88800D3F82C -:103C20008800C0F30A00C3F88800D3F88800D3F8EE -:103C30009000C3F89010D3F89000C3F89020D3F808 -:103C40009000D3F89400C3F89410D3F89400C3F80C -:103C50009420D3F89400D3F89800C3F89810D3F8C0 -:103C60009800C3F89820D3F89800D3F88C00C3F8D4 -:103C70008C10D3F88C00C3F88C20D3F88C00D3F8C8 -:103C80009C00C3F89C10D3F89C10C3F89C20D3F878 -:103C90009C3000F0E7B900BF00440258614B01229C -:103CA000C3F80821604BD3F8F42042F00202C3F8B5 -:103CB000F420D3F81C2142F00202C3F81C21042294 -:103CC000D3F81C31594BDA605A689104FCD5584A34 -:103CD0001A6001229A60574ADA6000221A614FF492 -:103CE00040429A61514B9A699204FCD51A6842F499 -:103CF00080721A604C4B1A6F12F4407F04D04FF45C -:103D000080321A6700221A671A6842F001021A60AC -:103D1000454B1A685007FCD500221A611A6912F047 -:103D20003802FBD1012119604FF0804159605A6778 -:103D3000414ADA62414A1A611A6842F480321A60D2 -:103D4000394B1A689103FCD51A6842F480521A6004 -:103D50001A689204FCD53A4A3A499A6200225A6398 -:103D600019633949DA6399635A64384A1A64384ADC -:103D7000DA621A6842F0A8521A602B4B1A6802F0F5 -:103D80002852B2F1285FF9D148229A614FF4886233 -:103D9000DA6140221A622F4ADA644FF080521A65C3 -:103DA0002D4A5A652D4A9A6532232D4A13601368AD -:103DB00003F00F03022BFAD11B4B1A6942F00302E6 -:103DC0001A611A6902F03802182AFAD1D3F8DC20F5 -:103DD00042F00052C3F8DC20D3F8042142F0005234 -:103DE000C3F80421D3F80421D3F8DC2042F0804248 -:103DF000C3F8DC20D3F8042142F08042C3F8042148 -:103E0000D3F80421D3F8DC2042F00042C3F8DC20D0 -:103E1000D3F8042142F00042C3F80421D3F804315E -:103E2000704700BF0080005100440258004802580B -:103E300000C000F0040000010000FF0100889008AD -:103E400032206000630209011D02040047040508D6 -:103E5000FD0BFF01200000200010E0000001010028 -:103E6000002000524FF0B04208B5D2F8883003F07D -:103E70000103C2F8883023B1044A13680BB15068BB -:103E80009847BDE80840FEF7E1BD00BF544F002051 -:103E90004FF0B04208B5D2F8883003F00203C2F800 -:103EA000883023B1044A93680BB1D0689847BDE8C5 -:103EB0000840FEF7CBBD00BF544F00204FF0B0428A -:103EC00008B5D2F8883003F00403C2F8883023B173 -:103ED000044A13690BB150699847BDE80840FEF7E2 -:103EE000B5BD00BF544F00204FF0B04208B5D2F826 -:103EF000883003F00803C2F8883023B1044A93697C -:103F00000BB1D0699847BDE80840FEF79FBD00BFE0 -:103F1000544F00204FF0B04208B5D2F8883003F07B -:103F20001003C2F8883023B1044A136A0BB1506AF7 -:103F30009847BDE80840FEF789BD00BF544F0020F8 -:103F40004FF0B04310B5D3F8884004F47872C3F84A -:103F50008820A30604D5124A936A0BB1D06A984709 -:103F6000600604D50E4A136B0BB1506B98472106BF -:103F700004D50B4A936B0BB1D06B9847E20504D57F -:103F8000074A136C0BB1506C9847A30504D5044A3B -:103F9000936C0BB1D06C9847BDE81040FEF756BD4E -:103FA000544F00204FF0B04310B5D3F8884004F4CC -:103FB0007C42C3F88820620504D5164A136D0BB104 -:103FC000506D9847230504D5124A936D0BB1D06DFF -:103FD0009847E00404D50F4A136E0BB1506E984712 -:103FE000A10404D50B4A936E0BB1D06E98476204BE -:103FF00004D5084A136F0BB1506F9847230404D5BA -:10400000044A936F0BB1D06F9847BDE81040FEF79C -:104010001DBD00BF544F002008B50348FDF70AF945 -:10402000BDE80840FEF712BDCC23002008B50348C8 -:10403000FDF700F9BDE80840FEF708BD3824002070 -:1040400008B50348FDF7F6F8BDE80840FEF7FEBCEA -:10405000A424002008B5FFF797FDBDE80840FEF74F -:10406000F5BC0000062108B50846FFF7A7FA0621AF -:104070000720FFF7A3FA06210820FFF79FFA062181 -:104080000920FFF79BFA06210A20FFF797FA06217D -:104090001720FFF793FA06212820FFF78FFA09214E -:1040A0007A20FFF78BFA07213220FFF787FA0C21DD -:1040B0002620FFF783FA0C212720FFF77FFA0C2137 -:1040C0005220BDE80840FFF779BA000008B5FFF7B5 -:1040D00071FD00F00DF8FDF7BFFAFDF797FCFDF755 -:1040E00069FBFFF725FDBDE80840FFF747BC00006E -:1040F0000023054A19460133102BC2E9001102F1D1 -:104100000802F8D1704700BF544F002010B50139A4 -:104110000244904201D1002005E0037811F8014FDC -:10412000A34201D0181B10BD0130F2E7034611F87D -:10413000012B03F8012B002AF9D1704753544D335A -:104140003248373F3F3F0053544D333248373433C2 -:104150002F37353300000000C8320020CC23002068 -:1041600038240020A4240020009600000000000055 -:10417000000000000000000000000000000000003F -:1041800000000000211600080D160008491600085E -:1041900035160008411600082D16000819160008EB -:1041A0000516000855160008000000003117000829 -:1041B0001D17000859170008451700085117000877 -:1041C0003D17000829170008151700086517000893 -:1041D0000000000001000000000000006D61696E39 -:1041E0000000000069646C6500000000E441000804 -:1041F00050310020C832002001000000A920000832 -:10420000000000004375626550696C6F740043756F -:1042100062654F72616E67652B2D424C00255345D8 -:104220005249414C2500000002000000000000003F -:1042300051190008C119000840004000704B0020CF -:10424000804B00200200000000000000030000007E -:1042500000000000091A0008000000001000000023 -:10426000904B002000000000010000000000000052 -:10427000044E00200101020099240008A92300082F -:10428000452400082924000843000000904200084B -:1042900009024300020100C03209040000010202C9 -:1042A000010005240010010524010001042402027C -:1042B0000524060001070582030800FF0904010028 -:1042C000020A000000070501024000000705810204 -:1042D0004000000012000000DC4200081201100142 -:1042E00002000040AE2D5810000201020301000040 -:1042F0000403090425424F41524425004375626579 -:104300004F72616E6765506C7573003031323334B3 -:1043100035363738394142434445460000000000F5 -:104320005D1B0008151E0008C11E0008400040006B -:104330003C4F00203C4F0020010000004C4F00206B -:1043400080000000400100000800000000010000A3 -:1043500000040000080000000000812A00000000A6 -:10436000AAAAAAAA00000024FFFE00000000000084 -:1043700000A00A000001000000000000AAAAAAAAEA -:1043800000000000FFFF000000000000000000002F -:104390001400005400000000AAAAAAAA14000054A5 -:1043A000FFFF0000000000000000000000681A008D -:1043B00000000000AAAA8AAA00541500FFFF00000E -:1043C000000070077700000040810200000000003C -:1043D000AAAAAAAA00410100F7FF0000000000708D -:1043E000070000000000000000000000AAAAAAAA1E -:1043F00000000000FFFF00000000000000000000BF -:104400000000000000000000AAAAAAAA0000000004 -:10441000FFFF00000000000000000000000000009E -:1044200000000000AAAAAAAA00000000FFFF0000E6 -:10443000000000000000000000000000000000007C -:10444000AAAAAAAA00000000FFFF000000000000C6 -:10445000000000000000000000000000AAAAAAAAB4 -:1044600000000000FFFF000000000000000000004E -:104470000000000000000000AAAAAAAA0000000094 -:10448000FFFF00000000000000000000000000002E -:10449000270400000000000000001E0000000000D3 -:1044A000FF000000000000003C4100083F00000049 -:1044B00050040000474100083F0000000096000043 -:1044C0000000080096000000000800000400000042 -:1044D000F0420008000000000000000000000000A2 -:0C44E000000000000000000000000000D0 +:1000000000060020E1020008E3020008E302000805 +:10001000E3020008E3020008E3020008E30200082C +:10002000E3020008E3020008E3020008358A000842 +:10003000E3020008E3020008E3020008E30200080C +:10004000E3020008E3020008E3020008E3020008FC +:10005000E3020008E3020008E17E00080D7F0008CB +:10006000397F0008657F0008917F0008E3020008DF +:10007000E3020008E3020008E3020008E3020008CC +:10008000E3020008E3020008E3020008E3020008BC +:10009000E3020008E3020008E3020008BD7F000855 +:1000A000E3020008E3020008E3020008E30200089C +:1000B000E3020008E3020008E3020008E30200088C +:1000C000E3020008E3020008E3020008E30200087C +:1000D000E3020008E3020008A9800008BD800008D0 +:1000E00021800008E3020008E3020008E3020008A0 +:1000F000E3020008E3020008E3020008E30200084C +:10010000E302000895800008E5800008E30200088B +:10011000E3020008E3020008E3020008E30200082B +:10012000E3020008E3020008E3020008E30200081B +:10013000E3020008E3020008E3020008E30200080B +:10014000E3020008E3020008E3020008E3020008FB +:10015000E3020008E3020008E3020008E3020008EB +:10016000E3020008E3020008E3020008E3020008DB +:10017000E3020008D97B0008E3020008E30200085C +:10018000E3020008E3020008D1800008E30200084F +:10019000E3020008E3020008E3020008E3020008AB +:1001A000E3020008E3020008E3020008E30200089B +:1001B000E3020008E3020008E3020008E30200088B +:1001C000E3020008E3020008E3020008E30200087B +:1001D000E3020008C57B0008E3020008E302000810 +:1001E000E3020008E3020008E3020008E30200085B +:1001F000E3020008E3020008E3020008E30200084B +:10020000E3020008E3020008E3020008E30200083A +:10021000E3020008E3020008E3020008E30200082A +:10022000E3020008E3020008E3020008E30200081A +:10023000E3020008E3020008E3020008E30200080A +:10024000E3020008E3020008E3020008E3020008FA +:10025000E3020008E3020008E3020008E3020008EA +:10026000E3020008E3020008E3020008E3020008DA +:10027000E3020008E3020008E3020008E3020008CA +:10028000E3020008E3020008E3020008E3020008BA +:10029000E3020008E3020008E3020008E3020008AA +:1002A000E3020008E3020008E3020008E30200089A +:1002B000E3020008E3020008E3020008E30200088A +:1002C000E3020008E3020008E3020008E30200087A +:1002D000E3020008E3020008E3020008E30200086A +:1002E00002E000F000F8FEE772B6374880F30888B5 +:1002F000364880F3098836483649086040F20000E5 +:10030000CCF200004EF63471CEF200010860BFF36B +:100310004F8FBFF36F8F40F20000C0F2F0004EF637 +:100320008851CEF200010860BFF34F8FBFF36F8F8B +:100330004FF00000E1EE100A4EF63C71CEF20001E3 +:100340000860062080F31488BFF36F8F06F0BAFEB2 +:1003500006F0D4F84FF055301F491B4A91423CBF7C +:1003600041F8040BFAE71D49184A91423CBF41F895 +:10037000040BFAE71A491B4A1B4B9A423EBF51F83D +:10038000040B42F8040BF8E700201849184A914280 +:100390003CBF41F8040BFAE706F0D2FE06F030F954 +:1003A000144C154DAC4203DA54F8041B8847F9E7A6 +:1003B00000F0C4F9114C124DAC4203DA54F8041B9E +:1003C0008847F9E706F0BABE0006002000220020A8 +:1003D0000000000808ED00E00000002000060020FA +:1003E0004896000800220020D8220020D8220020B1 +:1003F00020670020E0020008E0020008E002000898 +:10040000E00200082DE9F04F2DED108AC1F80CD064 +:10041000D0F80CD0BDEC108ABDE8F08F002383F338 +:1004200011882846A047002005F05AFEFEE705F097 +:1004300099FD00DFFEE7000053B94AB9002908BF63 +:1004400000281CBF4FF0FF314FF0FF3000F074B9AF +:10045000ADF1080C6DE904CE00F006F8DDF804E01B +:10046000DDE9022304B070472DE9F047089D0446FA +:100470008E46002B4DD18A42944669D9B2FA82F257 +:1004800052B101FA02F3C2F1200120FA01F10CFA93 +:1004900002FC41EA030E94404FEA1C48210CBEFBCB +:1004A000F8F61FFA8CF708FB16E341EA034306FB54 +:1004B00007F199420AD91CEB030306F1FF3080F0E3 +:1004C0001F81994240F21C81023E63445B1AA4B230 +:1004D000B3FBF8F008FB103344EA034400FB07F7D2 +:1004E000A7420AD91CEB040400F1FF3380F00A8113 +:1004F000A74240F207816444023840EA0640E41B08 +:1005000000261DB1D4400023C5E900433146BDE8B3 +:10051000F0878B4209D9002D00F0EF800026C5E955 +:10052000000130463146BDE8F087B3FA83F6002E6D +:100530004AD18B4202D3824200F2F980841A61EBE5 +:10054000030301209E46002DE0D0C5E9004EDDE703 +:1005500002B9FFDEB2FA82F2002A40F09280A1EBEB +:100560000C014FEA1C471FFA8CFE0126200CB1FB40 +:10057000F7F307FB131140EA01410EFB03F0884239 +:1005800008D91CEB010103F1FF3802D2884200F2C6 +:10059000CB804346091AA4B2B1FBF7F007FB101158 +:1005A00044EA01440EFB00FEA64508D91CEB0404F6 +:1005B00000F1FF3102D2A64500F2BB800846A4EB51 +:1005C0000E0440EA03409CE7C6F12007B34022FA3C +:1005D00007FC4CEA030C20FA07F401FA06F31C436B +:1005E000F9404FEA1C4900FA06F3B1FBF9F8200C78 +:1005F0001FFA8CFE09FB181140EA014108FB0EF0BE +:10060000884202FA06F20BD91CEB010108F1FF3A0D +:1006100080F08880884240F28580A8F10208614419 +:10062000091AA4B2B1FBF9F009FB101144EA014127 +:1006300000FB0EFE8E4508D91CEB010100F1FF34D2 +:100640006CD28E456AD90238614440EA0840A0FB6A +:100650000294A1EB0E01A142C846A64656D353D040 +:100660005DB1B3EB080261EB0E0101FA07F722FA64 +:1006700006F3F1401F43C5E9007100263146BDE88D +:10068000F087C2F12003D8400CFA02FC21FA03F3F0 +:10069000914001434FEA1C471FFA8CFEB3FBF7F071 +:1006A00007FB10360B0C43EA064300FB0EF69E4296 +:1006B00004FA02F408D91CEB030300F1FF382FD22F +:1006C0009E422DD9023863449B1B89B2B3FBF7F6D7 +:1006D00007FB163341EA034106FB0EF38B4208D9B0 +:1006E0001CEB010106F1FF3816D28B4214D9023EF1 +:1006F0006144C91A46EA004638E72E46284605E70F +:100700000646E3E61846F8E64B45A9D2B9EB0208DF +:1007100064EB0C0E0138A3E74646EAE7204694E76F +:100720004046D1E7D0467BE7023B614432E73046A2 +:1007300009E76444023842E7704700BF38B500F06B +:10074000D1FB06F0CDFB054606F0B2FC0446E0B94D +:10075000104B9D421BD001339D4241F2883504BFAE +:1007600001240025002006F0C5FB0CB100F07AF84A +:1007700001F02EFB01F0EAF900F01CFD08B100F0D9 +:1007800071F8284600F010F9F9E70025EAE7054678 +:10079000E8E700BF010007B008B501F0A3F9A0F138 +:1007A00020035842584108BD07B541F21203022107 +:1007B00001A8ADF8043001F0B3F903B05DF804FB13 +:1007C00038B5302383F31188174803680BB105F05F +:1007D0006BFD0023154A4FF47A71134805F05AFD5A +:1007E000002383F31188124C236813B12368013B63 +:1007F0002360636813B16368013B63600D4D2B7820 +:1008000033B963687BB9022001F05CFA322363607C +:100810002B78032B07D163682BB9022001F052FA21 +:100820004FF47A73636038BDD8220020C1070008F6 +:10083000F8230020F0220020084B187003280CD861 +:10084000DFE800F008050208022001F031BA0220BA +:1008500001F024BA024B00225A607047F0220020B7 +:10086000F8230020F8B5494B494A1C461968013164 +:1008700000F08A8004339342F8D16268454B9A4273 +:1008800040F28280444B9B6803F1006303F5003320 +:100890009A4279D2002001F073F90220FFF7CCFFD1 +:1008A0003E4B00219A6C99641A6F19671A6FDA6CC3 +:1008B000D9645A6F59675A6F1A6D19659A6F99679B +:1008C0009B6F374BD3F8802042F00062C3F8802042 +:1008D000D3F8802022F00062C3F88020D3F8802073 +:1008E000D3F8802042F00072C3F88020D3F8802033 +:1008F00022F00072C3F88020D3F8803072B64FF037 +:10090000E023C3F8084DD4E90004BFF34F8FBFF3D1 +:100910006F8F244AC2F88410BFF34F8F536923F4BA +:1009200080335361BFF34F8FD2F8803043F6E076C7 +:10093000C3F3C905C3F34E335B0103EA060C294632 +:100940004CEA81770139C2F87472F9D2203B13F175 +:10095000200FF2D1BFF34F8FBFF36F8FBFF34F8FD5 +:10096000BFF36F8F536923F4003353610023C2F840 +:100970005032BFF34F8FBFF36F8F302383F3118853 +:10098000854680F308882047F8BD00BF00000208B4 +:1009900020000208FFFF0108002200200045025845 +:1009A0000044025800ED00E02DE9F04F93B0B44B45 +:1009B0002022FF2100900AA89D6801F0B3F9B14AF6 +:1009C0001378A3B90121B04811700360302383F379 +:1009D000118803680BB105F067FC0023AB4A4FF4A4 +:1009E0007A71A94805F056FC002383F31188009B17 +:1009F00013B1A74B009A1A60A64A1378032B03D0B1 +:100A000000231370A24A53604FF0000A009CD346A3 +:100A10005646D146012001F04BF924B19C4B1B688E +:100A2000002B00F02682002001F05CF80390039B6D +:100A3000002BF2DB012001F031F9039B213B1F2B3E +:100A4000E8D801A252F823F0C90A0008F10A000808 +:100A5000850B0008150A0008150A0008150A000889 +:100A6000170C0008E70D0008010D0008630D0008D1 +:100A70008B0D0008B10D0008150A0008C30D000811 +:100A8000150A0008350E0008690B0008150A000851 +:100A9000790E0008D50A0008690B0008150A00083D +:100AA000630D0008150A0008150A0008150A000859 +:100AB000150A0008150A0008150A0008150A00089A +:100AC000150A0008850B00080220FFF765FE0028C4 +:100AD00040F0F981009B022105A8BAF1000F08BF80 +:100AE0001C4641F21233ADF8143001F019F891E7C9 +:100AF0004FF47A7000F0F6FF071EEBDB0220FFF7E1 +:100B00004BFE0028E6D0013F052F00F2DE81DFE832 +:100B100007F0030A0D1013360523042105A80593D9 +:100B200000F0FEFF17E004215548F9E704215A4878 +:100B3000F6E704215948F3E74FF01C08404608F156 +:100B4000040801F01FF80421059005A800F0E8FF53 +:100B5000B8F12C0FF2D101204FF0000900FA07F78D +:100B600047EA0B0B5FFA8BFB01F028F926B10BF07B +:100B70000B030B2B08BF0024FFF716FE4AE70421E6 +:100B80004748CDE7002EA5D00BF00B030B2BA1D1CE +:100B90000220FFF701FE074600289BD00120002617 +:100BA00000F0EEFF0220FFF747FE1FFA86F84046EE +:100BB00000F0F6FF0446B0B1039940460136A1F1BA +:100BC00040025142514100F0FBFF0028EDD1BA46EE +:100BD000044641F21213022105A83E46ADF8143036 +:100BE00000F09EFF16E725460120FFF725FE244B67 +:100BF0009B68AB4207D9284600F0C4FF013040F0A3 +:100C000067810435F3E70025224BBA463E461D7046 +:100C10001F4B5D60A8E7002E3FF45CAF0BF00B03A9 +:100C20000B2B7FF457AF0220FFF706FE322000F0B7 +:100C300059FFB0F10008FFF64DAF18F003077FF43D +:100C400049AF0F4A08EB0503926893423FF642AF63 +:100C5000B8F5807F3FF73EAF124BB845019323DDD7 +:100C60004FF47A7000F03EFF0390039A002AFFF6DB +:100C700031AF039A0137019B03F8012BEDE700BF69 +:100C800000220020F4230020D8220020C107000801 +:100C9000F8230020F0220020042200200822002057 +:100CA0000C220020F4220020C820FFF775FD074623 +:100CB00000283FF40FAF1F2D11D8C5F120020AAB59 +:100CC00025F0030084494245184428BF424601925A +:100CD00001F002F8019AFF217F4801F023F84FEA62 +:100CE000A803C8F387027C492846019301F022F843 +:100CF000064600283FF46DAF019B05EB830533E703 +:100D00000220FFF749FD00283FF4E4AE00F076FF33 +:100D100000283FF4DFAE0027B846704B9B68BB420B +:100D200018D91F2F11D80A9B01330ED027F00303C7 +:100D300012AA134453F8203C05934046042205A907 +:100D4000043701F0A5F88046E7E7384600F01AFFBF +:100D50000590F2E7CDF81480042105A800F0E0FE2C +:100D600002E70023642104A8049300F0CFFE0028CA +:100D70007FF4B0AE0220FFF70FFD00283FF4AAAECB +:100D8000049800F031FF0590E6E70023642104A8F1 +:100D9000049300F0BBFE00287FF49CAE0220FFF716 +:100DA000FBFC00283FF496AE049800F01FFFEAE732 +:100DB0000220FFF7F1FC00283FF48CAE00F02EFF7C +:100DC000E1E70220FFF7E8FC00283FF483AE05A925 +:100DD000142000F029FF07460421049004A800F025 +:100DE0009FFE3946B9E7322000F07CFE071EFFF671 +:100DF00071AEBB077FF46EAE384A07EB0903926809 +:100E000093423FF667AE0220FFF7C6FC00283FF48E +:100E100061AE27F003074F44B9453FF4A5AE4846FD +:100E200009F1040900F0AEFE0421059005A800F0C8 +:100E300077FEF1E74FF47A70FFF7AEFC00283FF43D +:100E400049AE00F0DBFE002844D00A9B01330BD0F2 +:100E500008220AA9002000F06DFF00283AD02022C5 +:100E6000FF210AA800F05EFFFFF79EFC1C4805F07A +:100E70003DF913B0BDE8F08F002E3FF42BAE0BF020 +:100E80000B030B2B7FF426AE0023642105A80593EA +:100E900000F03CFE074600287FF41CAE0220FFF75E +:100EA0007BFC804600283FF415AEFFF77DFC41F245 +:100EB000883005F01BF9059800F0C8FF46463C460F +:100EC00000F07CFFA6E506464EE64FF0000901E67D +:100ED000BA467EE637467CE6F42200200022002057 +:100EE000A0860100704700007047000070470000B6 +:100EF000704700002DE9F04100F5803704461646A2 +:100F00003B7C5BB9C0681030204400F0E5FEE5682A +:100F10003544B5F5004FE56002D816B1BDE8F08163 +:100F2000DEB905F07F0605F110000021C6F180064C +:100F30002044F6B232462E4400F0F4FEA06804F1DC +:100F40001008324600F10060414600F5003005F01F +:100F50008FFD30B901233B74E0E74FF4004635467E +:100F6000ECE7A26805F11001404632442144A2603A +:100F7000E268521BE26000F0AFFE0220BDE8F041E3 +:100F800000F0A0BE183000F0E9BC000010B5044627 +:100F900007F0FAFD204610BD10B5044607F0F4FD39 +:100FA000204610BDC3B280B2A3F14102052A02D887 +:100FB000373800B27047613B052B94BF5738303843 +:100FC000F7E70000F8B504461546084603220C4929 +:100FD00000F08CFE014688B908346F1C15F9110029 +:100FE000FFF7E0FF064617F911000131FFF7DAFFBE +:100FF000102940EA061004F8010BEFD1F8BD00BF3C +:10100000008D00082DE9F04FADF53F7D07464168A2 +:1010100001222AA802F030FE002840F08780064610 +:10102000824681461125DFF80C81DFF80CB101AB57 +:101030004FF4805241462AA802F07EFF002875D165 +:10104000019AB2F5805F71D8002A65D00446019AF2 +:101050009442ECD2282D0FD008DC132D2DD01E2D5C +:1010600039D0112D13D00134A4B2F0E7322D2DD098 +:10107000372D2FD02D2DF6D13B68121B08EB040124 +:1010800038461B692D259847BDF80440EBE7121B35 +:10109000022A09D9594608EB040000F027FE18B9C6 +:1010A00002342825A4B2DEE718F804303A2B3DD0EC +:1010B0000A2B1CBFA1461325D5E718F804300A2BCC +:1010C00034D03A2B04BFA2463225CCE718F80430BE +:1010D000202BC8D0264618F804300A2B1AD1AAEBC8 +:1010E000090208EB090102A811254F2A28BF4F2247 +:1010F00007F0F2FDA21B08EB060116A84F2A28BF35 +:101100004F2207F0E9FD3B6816AA02A9DB683846C2 +:101110009847A8E71E25A6E73B68384604491B699F +:10112000984701200DF53F7DBDE8F08F0020F9E7DD +:10113000028E000800240020048D000800F1180130 +:1011400010B5044686B00846019100F0F1FB204638 +:10115000FFF758FF60B1019902A800F049FC102286 +:1011600004F1080102A807F033FDB0FA80F040094D +:1011700006B010BD70B504460025EEB2304600F052 +:101180000FFD58B100213046013500F019FD08B9B6 +:10119000002070BD022000F095FDEEE72046FFF72D +:1011A00031FF0028F4D004F58034207C80F0010069 +:1011B000EFE70000F0B5C9B005F0AAFE00F096FE1A +:1011C00018B90025284649B0F0BD69462A4802F002 +:1011D00075FF00284BD1294C204602F09FFF28487C +:1011E00002F09CFF274802F099FF2146224803F0B5 +:1011F00011F80028E5D1702007F0C8FC064610B1B0 +:10120000214B44600360336830469B68984705462D +:1012100000282ED01A4F1948394602F0FBFF054628 +:101220000028CED1194807F0B1FC044638B1184B5C +:101230004760036000F58033C0E902551D742368E0 +:1012400020469B689847054628B10E490C4802F095 +:10125000E1FF0028B5D1336830465B6898471CB180 +:10126000236820465B68984700F028FEAAE700251F +:10127000FAE70446EFE700BF088D0008188D000864 +:101280002F8D0008458D0008688D000814000100AE +:10129000848D00082DE9F04FD44A8DB00B68D0F84A +:1012A00004A001931A440368D14E1A44D1F81C904B +:1012B000DFF8B4C3DFF8B4B3D0E90234634003EA23 +:1012C0000A03634013444A6802920AEB7363029C68 +:1012D000C84A2244C468224484688AEA04051D403E +:1012E000654015448A68039203EB3555039CC24A56 +:1012F0002244846822448AEA03042C4084EA0A04D3 +:101300001444CA6805EBF4340492164483EA0502D7 +:10131000224056445A4032440E69059604EBB222EC +:10132000059FB64E3E441E4485EA040313406B40BD +:1013300033444E69069602EB7363069FB04E3E44FB +:101340002E4484EA02051D40654035448E690796A7 +:1013500003EB3555079FAB4E3E44264482EA030417 +:101360002C4054403444A84E4E4405EBF43416440B +:1013700083EA050222405A4032440E6A089604EB82 +:10138000B222089FA14E3E441E4485EA0403134046 +:101390006B4033444E6A099602EB7363099F9C4E7F +:1013A000D1F830E03E44D1F83880F3442E4484EA4A +:1013B00002051D40654035448E6AA6F5244703EBBF +:1013C00035550A964F3F274482EA03042C40544087 +:1013D0003C44CF6A0B9705EBF4340B9E8D4F37449A +:1013E000029E174483EA050222405A403A448A4F3B +:1013F000774404EBB2221F4485EA040313406B4098 +:101400003B444F6BBC4402EB7363654484EA020CBB +:101410000CEA030C8CEA040C6544DFF854C2C444A3 +:1014200003EB3555A44482EA03042C405440644441 +:10143000D1F83CC0794905EBF4346144114483EAA6 +:10144000050222405A400A44754904EBB222314455 +:10145000079E194484EA02032B4063400B44714900 +:1014600002EBF36331440B9E0D4482EA03012140F9 +:10147000514029446C4D03EBF1513544019E254404 +:1014800083EA010414405C402C44684D01EBB444F1 +:101490003544069E154481EA04021A404A402A4413 +:1014A000634D04EB323235440A9E1D4484EA020344 +:1014B0000B4063402B445F4D02EBF3633544059EC4 +:1014C0000D4482EA03012140514029445A4D03EB67 +:1014D000F1516544254483EA010414405C402C44E6 +:1014E000564D01EBB4443544099E154481EA04028B +:1014F0001A404A402A44524D04EB32323544049E8D +:101500001D4484EA02030B4063402B444D4D02EB23 +:10151000F36345440D4482EA0301214051402944CC +:10152000494D03EBF1513544089E2C4483EA0105F3 +:1015300015405D402C44454D01EBB4443544039EB9 +:101540002A4481EA04051D404D402A44404D04EBE5 +:1015500032323D442B4484EA020593440D406540F9 +:101560002B443C4D02EBF3633544069E294482EA4A +:101570000305254055402944374D03EBF1514D44B7 +:101580002C4483EA010515405D40254401EBB54537 +:1015900081EA050404EA03024A405A44A6F5B82B3E +:1015A000089E05EB3232ABF2BE6B54405B442344E1 +:1015B0002A4C344402EB33730B9E0C4485EA02013F +:1015C00059402144264C344403EB7151029E25447A +:1015D00082EA03044C402544224C444401EB354547 +:1015E000144483EA01026A40224443E078A46AD7A3 +:1015F000EECEBDC156B7C7E8DB702024AF0F7CF537 +:101600002AC68747134630A8019546FDD8988069B9 +:10161000AFF7448BBED75C892211906B2108B44987 +:1016200062251EF640B340C0515A5E26AAC7B6E9ED +:101630005D102FD65314440281E6A1D8C8FBD3E72E +:10164000E6CDE121D60737C3870DD5F4ED145A4511 +:1016500005E9E3A9F8A3EFFCD9026F6781F671876A +:1016600022619D6D0C38E5FD937198FD8A4C2A8DA1 +:101670008E4379A6934C344405EB7222059E1C449C +:1016800081EA0503534023448F4C344402EB337307 +:101690000A9E0C4485EA0201594021448B4C4C447B +:1016A00003EB7151254482EA03044C402C44884DDD +:1016B000354401EB3444019E154483EA0102624043 +:1016C0002A44844D3D4404EB72221D4481EA040304 +:1016D00053402B44804D354402EB3373049E294420 +:1016E00084EA02055D4029447C4D354403EB715189 +:1016F000079E254482EA03044C402C44784D35442F +:1017000001EB3444099E2A4483EA010565401544EF +:10171000744A324404EB7525039E134481EA0402A3 +:101720006A401A44704B734405EB32720B4484EAEE +:101730000501514019446D4B634402EB71511C4447 +:1017400085EA02034B401C44694B334401EB3444AB +:10175000019E1D4482EA010363402B44654D04EB66 +:1017600073233544069E154463EA010262402A440D +:10177000614D03EBB2624D4462EA040929445F4DB6 +:1017800089EA0309454449442C445D4D02EBB151BB +:101790003544049E61EA03081D4488EA0208444473 +:1017A00001EB744464EA02034B402B44554D04EBB7 +:1017B000F323754463EA010E15448EEA040E0EEB22 +:1017C0000502514D03EBB262354462EA040E29442E +:1017D0000A9D8EEA030EA5F580164C4D7144A6F6BF +:1017E000833602EBB151264461EA03045440344489 +:1017F000029E01EB7444354464EA02061D444E40E7 +:101800007319089E424D04EBF323354463EA010645 +:101810001544664072193F4D03EBB262654462EABB +:10182000040629443C4D5E403144079E02EBB15111 +:10183000354461EA03062C44384D56403D44344457 +:10184000059E1D4401EB744464EA02034B402B44A3 +:10185000334D04EBF32335440B9E154463EA010238 +:1018600062402A442F4D03EBB2623544039E0D447F +:1018700062EA0401594029442B4D02EBB151354431 +:101880002A4E254461EA030454402C44099D01EB8F +:1018900074442E4464EA02051E4485EA01039D193E +:1018A00003681A440AEB040303EBF5230260436068 +:1018B00083681C44C36819448460C1600DB0BDE8EE +:1018C000F08F00BF44EABEA4A9CFDE4B604BBBF64D +:1018D00070BCBFBEC67E9B28FA27A1EA8530EFD434 +:1018E000051D880439D0D4D9E599DBE6F87CA21F20 +:1018F0006556ACC4442229F497FF2A43A72394AB2E +:1019000039A093FCC3595B6592CC0C8FD15D848563 +:101910004F7EA86FE0E62CFE144301A3A111084EF0 +:10192000827E53F735F23ABDBBD2D72A91D386EBEC +:10193000094B036003F18833436003F12943A3F5A6 +:101940009613A3F68B638360A3F18833C3600023EF +:10195000C0E90433704700BF012345672DE9F84310 +:101960001446026905460E46E300C2F3C50800F1BD +:1019700018079B18036122BF43690133436112F4C6 +:10198000FC7F436903EB5473436114D0C8F14009F1 +:1019900007EB08004C4504D22246BDE8F84307F0A7 +:1019A00027B9403C4A464E4407F022F944443946A0 +:1019B0002846FFF76FFCA04606EB0409B8F13F0F7D +:1019C000A9EB08010AD94022384607F011F9394637 +:1019D0002846A8F14008FFF75DFCEFE7A1096FF08A +:1019E0003F02384602FB014206EB8111D5E70000B9 +:1019F00070B50B6901F1180506460C46C3F3C50323 +:101A0000EA18501C8022EA54C3F13F02072A1FD86B +:101A1000002100F087F929462046FFF73BFC3822D9 +:101A20000021284600F07EF92369294620462365D7 +:101A300063696365FFF72EFC21461022304607F0EC +:101A4000D7F8204658220021BDE8704000F06AB95E +:101A5000C3F137020021E5E72DE9F84F4FF47A731F +:101A600006460D46002402FB03F7DFF85080DFF83E +:101A7000509098F900305FFA84FA5A1C01D0A342C2 +:101A800010D159F824002A4631460368D3F820B013 +:101A90003B46D847854205D1074B012083F800A07B +:101AA000BDE8F88F0134042CE3D14FF4FA7004F050 +:101AB0001DFB0020F4E700BF44340020102200206A +:101AC0001422002070B504464FF47A76412C254646 +:101AD00028BF412506FB05F004F008FB641BF5D187 +:101AE00070BD0000002307B5024601210DF107007B +:101AF0008DF80730FFF7B0FF20B19DF8070003B065 +:101B00005DF804FB4FF0FF30F9E700000A460421BE +:101B100008B5FFF7A1FF80F00100C0B2404208BD48 +:101B2000074B0A4630B41978064B53F8214001465A +:101B300023682046DD69044BAC4630BC604700BFDB +:101B40004434002014220020A086010070B50A4E03 +:101B500000240A4D04F030FF308028683388834227 +:101B600008D904F025FF2B6804440133B4F5003F85 +:101B70002B60F2D370BD00BF46340020003400203B +:101B800004F0E8BF00F1006000F500300068704725 +:101B900000F10060920000F5003004F069BF000021 +:101BA000054B1A68054B1B889B1A834202D91044C7 +:101BB00004F0FEBE002070470034002046340020B0 +:101BC00038B50446074D29B128682044BDE838409F +:101BD00004F006BF2868204404F0F0FE0028F3D08B +:101BE00038BD00BF003400200020704700F1FF50D6 +:101BF00000F58F10D0F8000870470000064991F8F2 +:101C0000243033B100230822086A81F82430FFF71A +:101C1000BFBF0120704700BF04340020014B18688B +:101C2000704700BF0010005C194B013803220844C4 +:101C300070B51D68174BC5F30B042D0C1E88A6420A +:101C40000BD15C680A46013C824213460FD214F95C +:101C5000016F4EB102F8016BF6E7013A03F1080398 +:101C6000ECD181420B4602D22C2203F8012B042432 +:101C7000094A1688AE4204D1984284BF967803F888 +:101C8000016B013C02F10402F3D1581A70BD00BF90 +:101C90000010005C24220020C48D0008022803D11B +:101CA000024B4FF080529A61704700BF00100258FB +:101CB000022803D1024B4FF480529A61704700BF53 +:101CC00000100258022804D1024A536983F4805359 +:101CD0005361704700100258002310B5934203D09F +:101CE000CC5CC4540133F9E710BD0000013810B5D5 +:101CF00010F9013F3BB191F900409C4203D11AB168 +:101D00000131013AF4E71AB191F90020981A10BD97 +:101D10001046FCE703460246D01A12F9011B0029BF +:101D2000FAD1704702440346934202D003F8011BE4 +:101D3000FAE770472DE9F8431F4D144607468846D9 +:101D400095F8242052BBDFF870909CB395F82430AE +:101D50002BB92022FF2148462F62FFF7E3FF95F8B9 +:101D600024004146C0F1080205EB8000A24228BFD2 +:101D70002246D6B29200FFF7AFFF95F82430A41B9D +:101D800017441E449044E4B2F6B2082E85F824604D +:101D9000DBD1FFF733FF0028D7D108E02B6A03EB34 +:101DA00082038342CFD0FFF729FF0028CBD1002048 +:101DB000BDE8F8830120FBE704340020024B1A78C9 +:101DC000024B1A70704700BF4434002010220020DC +:101DD000F8B5194C194803F077FC2146174803F071 +:101DE0009FFC24684FF47A70154ED4F89020154D5E +:101DF000D2F80438114F43F00203C2F80438FFF759 +:101E000061FE2046104903F099FDD4F89020042487 +:101E1000D2F8043823F00203C2F804384FF4E13357 +:101E2000336055F8040BB84202D0314603F0AAFBE8 +:101E3000013CF6D1F8BD00BFC4940008F048002072 +:101E40002C34002014220020CC9400080C4B70B5D8 +:101E50000C4D04461E780C4B55F826209A420DD0A6 +:101E60000A4B002118221846FFF75CFF0460014668 +:101E700055F82600BDE8704003F084BB70BD00BF7C +:101E80004434002014220020F04800202C3400208C +:101E900030B50A44084D91420DD011F8013B58402D +:101EA000082340F30004013B2C4013F0FF0384EAB5 +:101EB0005000F6D1EFE730BD2083B8ED10B5084CE7 +:101EC00001220849002001F0B3FE23783BB1064807 +:101ED00003F0D0FA044803F003FB0023237010BD85 +:101EE00048340020D48D0008A43600201D482DE978 +:101EF000F041036D2BB901224FF48051503005F0B1 +:101F000049F8194E33780BB1FFF7D8FF0324174F68 +:101F10004FF00008134D15492846C7F8048003F018 +:101F2000D1FA284603F00AF948B1013C284603F0EB +:101F3000D7FA14F0FF04EED1204634700FE00C49BC +:101F400001220C4801F074FE014618B1284603F046 +:101F500091FAEAE7084800F011F801203070BDE876 +:101F6000F08100BFA4360020483400203C2200202D +:101F7000D48D00084C340020D88D00080FB4002008 +:101F800004B070470068704703460068596870479E +:101F90000B0A017043700B0C090E8370C1707047FF +:101FA000110A027003714170110C120E8170C2701F +:101FB0001A0A42711A0C1B0E8271C371704700001D +:101FC000C36A0239023B8B4283BF4389006C01FB29 +:101FD0000300002070470000C2F307238A76CB7607 +:101FE0000378032B01BF120C0A75120A4A75704759 +:101FF00000F10B010022D30143EA520310F8012B38 +:1020000052FA83F38842DAB2F5D1104670470000E5 +:1020100010B5417804460020013102464901022AE8 +:1020200016BFA35C032203EBC03302F101021EBF03 +:102030009BB203EB500398B29142F0D810BD000060 +:1020400002684AB1134613F8011B1F290DD93A291A +:10205000F9D1911C8B4202D04FF0FF3070471278BB +:10206000302AF9D1036000207047014B187870477F +:102070009836002038B50D46044618B909200023CB +:102080002B6038BD0368002BF8D01A78002AF5D0F1 +:102090008188DA889142F1D1587804F0B3F910F0D0 +:1020A0000100EBD12368EBE738B50D4640F2523121 +:1020B000144602F0B9F9FF2807D9012C0BD9030AFD +:1020C000022468702B70204638BD30B1002CFAD045 +:1020D00001242870F7E70024F5E70446F3E7000041 +:1020E0002DE9F8430026D0F8008005460C468E7690 +:1020F000836B002B4AD098F80030042B4BD1334629 +:102100003546402720E0B7F5187F80F0C480F906F7 +:1021100006F1010608BF0237D05B02372BB900F584 +:10212000205292B2B2F5006F0DD305F11A01C5F13C +:10213000FF0240EA03402144FFF7B6FF002800F009 +:10214000AA80054400200346D8F8102092F82310F6 +:10215000B142D8D8002B40F09E80002D00F09B802B +:1021600000232544AB766373D8F81020137903F06D +:102170003701DB0621730BD402F13800FFF704FFAF +:10218000C4E9000193896381D3892381BDE8F88381 +:1021900000200146F4E7C36C01335ED1EA6B0023F3 +:1021A0002E26551E184615F8011F013020290CD087 +:1021B000052908BFE521092804D10B2B9EBFE7188C +:1021C00001337E73E718013379730B28EBD1E118E3 +:1021D00000204873A17E00294BD1002B40D06FF026 +:1021E0000C0604F10D000825361B331810F8011BEE +:1021F000002938D02E298BB24AD0A3F141011929E8 +:1022000003D8117B0D4200D020330373EDE7B9F101 +:10221000000F05D100F520539BB2B3F5006F0BD32F +:1022200007F11A01C7F1FF0240EA09402144FFF714 +:102230003BFF48B10744002002368146D8F80C30F5 +:10224000985B0028E3D13846B9F1000F4FF0000247 +:1022500018BF002023189A76A0E7B1463746EDE76D +:102260003F23A3760123234400219976137B03B9EE +:102270006373D37A02F11C0003F03F03237300233E +:10228000FFF780FE20606360D38A6381138B7CE755 +:1022900010250B46B9E73F230125A37660E7000030 +:1022A00038B50546002435F8020B08B9204638BD7C +:1022B00002F0EEF86308C2B203EBC43312FA83F300 +:1022C0009AB2C0F3072303EB520303EBC2339CB271 +:1022D000E9E7000037B5C37804461BB90025284656 +:1022E00003B030BD00F14C01826C012340780191B4 +:1022F00004F0AEF8054680B9A36BE070A06C226BC9 +:10230000C31A9342EAD2A3780199022BE6D1024480 +:102310000123607804F09CF8E1E70125DFE7000085 +:1023200038B5836C05460C468B4210D0FFF7D2FFC0 +:1023300060B92246012305F14C01687804F064F885 +:1023400000281CBF4FF0FF340120AC6438BD0020D2 +:10235000FCE7000038B500230446C3704FF0FF339C +:102360008364FFF7DDFF00284BD1B4F84A524AF6E8 +:1023700055239D4207D10B22254904F14C0006F05C +:1023800027FC00283FD094F84C30EB2B03D01833B7 +:10239000DBB2012B2ED84AF655239D4206D10822E6 +:1023A0001C4904F19E0006F013FC48B3B4F8573002 +:1023B000B3F5007F1ED194F85930DBB15A1E1A4292 +:1023C00018D1B4F85A30ABB194F85C30013B012B12 +:1023D00010D8B4F85D306BB1B4F85F307F2B06D8FD +:1023E00004F16C00FFF7CEFDB0F5803F02D3B4F8E6 +:1023F000623053B94AF6552085420CBF02200320B3 +:1024000038BD0420FCE70120FAE70020F8E700BF10 +:10241000048E0008108E000802392DE9F04701F003 +:1024200007044FF0010A466C05460AFA04F4174601 +:10243000984606EB1136C1F3C809E4B23146284686 +:102440000136FFF76DFF18B10120BDE8F08799460E +:1024500005EB090292F84C30234214BF0121002100 +:10246000414513D06340013F82F84C3085F803A00A +:10247000EBD0640014F0FF04EAD109F10103012458 +:102480004FF00009B3F5007FE1D1D7E70220DCE788 +:1024900001290246F8B50C4640F28C800668F36AC2 +:1024A0008B4240F287803378013B032B00F282801D +:1024B000DFE803F00229384B04EB5405B16B3046DA +:1024C00001EB5521FFF72CFF10B14FF0FF30F8BDA5 +:1024D0006F1CC5F30805B16B3046354401EB57213D +:1024E00095F84C50FFF71CFF0028EED1C7F3080702 +:1024F000E3073E4496F84C0045EA00204CBF000933 +:10250000C0F30B00E3E7B16B304601EB1421FFF79A +:1025100007FF0028D9D1640004F4FF742644B6F8FC +:102520004C00D4E7B16B304601EBD411FFF7F8FE55 +:102530000028CAD1A40006F14C0004F4FE74204423 +:10254000FFF720FD20F07040C1E7D0E90430D579D5 +:1025500053EA000101D0916801B95DBB9168022D79 +:10256000A4EB01010DD1013B728940F1FF305B0A00 +:1025700043EAC053B3FBF2F399421BD81CD0601C52 +:10258000A5E7032D02D193698B42F8D8D3699BB993 +:10259000B16B304601EBD411FFF7C2FE002894D195 +:1025A000A0004C3600F4FE703044FFF7EBFC20F046 +:1025B00000408CE701208AE76FF0004087E70000C9 +:1025C000F8B5066804460D463378042B0CBF4FF06F +:1025D00080524FF400128A4201D80220F8BDCA0688 +:1025E000FBD182680163D2B9022B13D83389B3EBD4 +:1025F000551FF2D9F36BA363A36B6263002BECD07E +:1026000003EB55234C36C5F308050020A36335447E +:10261000E563E3E7F36BC271002BE7D01A467789D5 +:102620007F02BD42114604D23046FFF7C9FCA063C9 +:10263000E2E72046FFF72CFF431C024606D00128A4 +:10264000CBD9F36A8342C8D9ED1BEAE70120C5E77D +:1026500001292DE9F04706460C46174608D9C36AFA +:102660008B4205D90378022B62D003D8012B22D0EC +:10267000022552E0033B012BFAD8816B01EBD41108 +:10268000FFF74EFE0546002847D1A40006F14C0393 +:1026900004F4FE741C443378042B07D0204627F042 +:1026A0007047FFF76FFC00F0704007433946204643 +:1026B000FFF76EFC2FE001EB5108816B01EB582115 +:1026C000FFF72EFE054640BB14F0010406F14C094D +:1026D00008F1010AC8F3080808BFFBB230461FBF63 +:1026E00019F8083003F00F023B0103F0F00318BFA4 +:1026F000134309F808300123B16BF37001EB5A2141 +:10270000FFF70EFE054640B9CAF3080A44B1C7F305 +:10271000071709F80A700123F3702846BDE8F0870F +:1027200019F80A30C7F3032723F00F031F43F0E71C +:10273000816B01EB1421FFF7F3FD05460028ECD176 +:10274000640006F14C0304F4FF741F551919C7F314 +:1027500007274F70DFE70000F8B504460E4617461E +:10276000E3690BB91846F8BD012BA6EB03052068F9 +:1027700014BFAA1C3A46691CFFF76AFF0028F2D171 +:10278000E369013BE361EBE701292DE9F8430646E4 +:102790000C461746056802D80220BDE8F883EB6AAC +:1027A0008B42F9D97AB9A14621463046A046FFF7B7 +:1027B0006FFE0446B0B92B78042B02D1002F43D111 +:1027C000F7710020E9E72B78042B02D1C379022BA3 +:1027D000E9D04FF0FF3239462846FFF739FF00288D +:1027E000E1D0DAE70128D7D0421C01D10120D4E79B +:1027F0002B78042B19D1EA6AAB69023A93421CD3B5 +:1028000008F10102A2420CD02B78042B08D100233E +:10281000A2EB090249462846FFF7FEFD0028BCD17D +:10282000A146EB6AA342BFD8C5E70022414628462D +:10283000FFF70EFF0028DED0AFE70133AB612B7945 +:1028400043F001032B71DBE7F3798BB9B468BC4229 +:1028500002D10223F371B4E721463046FFF718FE98 +:10286000012899D9431CC1D001348442EFD0A8E794 +:10287000032BA6D1B368BB42A3D8B2691344BB42B1 +:102880009FD3E6E770B5C3790446032B06D1816870 +:102890008369CD18A94203D10023E371002070BDE4 +:1028A0004E1C20683246FFF7D3FE0028F7D1314690 +:1028B000F0E700002DE9F74305460191FFF70AFD17 +:1028C0000446002849D105F14C09019928464FF4E6 +:1028D0000072FFF775FB2146A86407464846FFF7DC +:1028E00021FA6C896402B4F5004F28BF4FF400440C +:1028F000B4F5007F2FD9204604F00CFA804630B1A1 +:1029000022460021640A0026FFF70CFA09E0640859 +:10291000EEE72346BA194146687803F099FD18B9E5 +:1029200026446B899E42F4D3404604F003FA68893A +:10293000801B18BF012003B0BDE8F08301366B890E +:102940009E42F4D20123BA194946687803F080FD0B +:102950000028F3D0EBE70026F1E70120EBE70000C9 +:10296000F8B50446FFF7B6FC0546002842D12378A7 +:10297000032B37D12779012F34D104F14C060146BE +:102980004FF400723046FFF7CDF9552341227221F2 +:1029900084F84A32AA2304F50D7084F84F2084F895 +:1029A0004B32522384F8301284F84C3084F84D3086 +:1029B000612384F8311284F84E3084F83332A169EF +:1029C00084F83222FFF7E4FA616904F50E70FFF72C +:1029D000DFFA626B3B46314601326078A26403F055 +:1029E00037FD257100226078114603F055FD00384F +:1029F00018BF0120F8BD000000232DE9F0430B6053 +:102A000085B00F461546FFF71BFB061EC0F2B281CC +:102A1000804B53F82640002C00F0AE813C6005F05E +:102A2000FE0523786BB1607803F0ECFCC70708D48F +:102A30001DB110F0040500D00A25284605B0BDE8F8 +:102A4000F0830023F0B22370607003F0C7FCC1076D +:102A500000F194810DB14207EED400212046FFF72A +:102A600079FC022840F099806E4604F2122304F2A9 +:102A70005221324618461033FFF784FA42F8040B0D +:102A80008B42F7D1002556F8041B00297DD0204643 +:102A9000FFF760FC012879D80128A26C40F0C080C3 +:102AA00004F1570304F18C0113F8015B002D7BD175 +:102AB0008B42F9D1B4F8B430B3F5807F74D194F877 +:102AC000B830092B70D104F19400FFF75DFA4FF094 +:102AD000FF33171841F10001BB4275EB010363D3CB +:102AE00004F1A000FFF74EFA94F8BA302063012BEE +:102AF000A37059D194F8B99003FA09F91FFA89F330 +:102B00006381002B50D0444B04F1A800FFF73AFA40 +:102B10000646984248D8831C626304F1A400E3622D +:102B2000FFF730FA00EB020804F19C00C4F8408083 +:102B3000FFF728FA10441FFA89F2A06306FB02F39C +:102B400013EB080345EB05029F4271EB02032BD305 +:102B50002E4604F1AC00FFF715FAE06365B963890E +:102B6000B34221D9E16B2046FFF72AFA81192046AA +:102B7000FFF7D6FB98B90136631993F84C30812BD7 +:102B800014D02035C5F30805E8E703200135042DEE +:102B90007FF479AF042807D101E0042801D1012591 +:102BA0004BE701287FF678AF0D2546E705F11400C5 +:102BB00004F14C063044FFF7E5F901280546F3D946 +:102BC000E36A8342F0D96189821E236C02FB0133E0 +:102BD0006364A16B204601EBD511FFF7A1FB002830 +:102BE000DDD105F07F0006EB8000FFF7CBF9431C39 +:102BF00003D00135A842ECD0D6E70425C4E905008E +:102C0000064A257000251388E56101339BB21380C5 +:102C1000E38012E79C360020FDFFFF7FA0360020F6 +:102C2000B4F85730B3F5007FBED1B4F8626026B96E +:102C300004F17000FFF7A6F9064694F85C302663AD +:102C4000591EA3700129AFD894F859506581002D01 +:102C5000AAD0691E2942A7D1B4F85D8018F00F0FE1 +:102C6000A4F80880A0D1B4F85F0018B904F16C0092 +:102C7000FFF788F9B4F85A10002995D006FB03FE37 +:102C800001EB181CF44460458ED3A0EB0C00A84265 +:102C9000B0FBF5F388D33E48834285D84FF6F570F4 +:102CA00083426DD903259F1C114402EB0C03032DB5 +:102CB000E7626263A16323644CD1B4F8763053EACF +:102CC00008037FF471AFBB0004F17800FFF75AF9F5 +:102CD000E06303F2FF13B6EB532FFFF465AF4FF041 +:102CE000FF33032DC4E905334FF08003237187D1EF +:102CF000B4F87C30012B83D1511C2046FFF710FB28 +:102D000000287FF47DAFB4F84A224AF6552320719B +:102D10009A427FF475AF1F4B04F14C00FFF732F974 +:102D200098427FF46DAF03F1FF5304F50C70FFF789 +:102D300029F903F50053203398427FF461AF04F57D +:102D40000D70FFF71FF9A06104F50E70FFF71AF977 +:102D5000606155E7B8F1000F3FF426AF7144022DD2 +:102D60004FEA4703E1631EBFD91907F0010303EBE4 +:102D70005103AEE70B2560E60C255EE603255CE615 +:102D800040F6F575AB428CBF022501258BE700BFED +:102D9000F5FFFF0F525261412DE9F84F07460568D4 +:102DA000884649B96E69C6B1EB6AB34298BF01263D +:102DB000AB69A3B9002405E0FFF76AFB01280446CC +:102DC00003D801242046BDE8F88F421C00F0D280D1 +:102DD000EB6A8342F6D84646EAE70126E8E72A7816 +:102DE000EB6A042A40F08380A6F1020A023B4FF00E +:102DF000010B9A4528BF4FF0000AD146696C28465E +:102E000001EB1931FFF78CFA00283BD109F00703D9 +:102E1000EA6AC9F3C8010BFA03F3901EDBB26A1821 +:102E20004C4609F1010992F84C20814502EA03025F +:102E300033BF5B0000234FF40071DBB228BF99461B +:102E4000B2B90234631E0333BCD80123214628469D +:102E50001A46FFF7E1FA0228B3D0012800F08A8071 +:102E6000B8F1000F13D10223FB710028A9D130E083 +:102E7000CA450AD0002BD2D10131B1F5007FBDD2B5 +:102E80000123CCE74FF0FF34DCE70024DAE7FB79DD +:102E9000022B07D1731CA342E7D0BB68F31ABB61B6 +:102EA0000323FB7108F10102FB69A24205D113B1B2 +:102EB0000133FB61D9E70223FBE70BB90123FB6177 +:102EC000224641463846FFF747FC00284FD10123F0 +:102ED000FB61EA6AAB69023A6C6193429CBF03F101 +:102EE000FF33AB612B7943F001032B716AE7464551 +:102EF00014D1741C3846A34298BF02242146FFF720 +:102F0000C7FA01283FF45DAF431C33D0E0B16B69D1 +:102F1000012B03D9EA6A934238BF1E463446013476 +:102F2000EB6AA34203D8012E7FF644AF0224214668 +:102F30003846FFF7ADFA48B101283FF442AF0130FF +:102F400018D0B442EBD135E7002CE7D04FF0FF3278 +:102F500021462846FFF77CFB48B9B8F1000FB8D0EE +:102F6000224641462846FFF773FB0028B1D00128CE +:102F70007FF427AF4FF0FF3424E700002DE9F8433A +:102F800006680446076B894633782037042B0CBF4C +:102F90004FF080534FF40013BB429CBF0023836368 +:102FA000836B73B1C7F30808B8F1000F3CD101334C +:102FB000416B836339B93389B3EB571F34D800238E +:102FC000A36304200AE07389013B13EA57232BD142 +:102FD000FFF75EFA0128054602D80220BDE8F88313 +:102FE000421C01D10120F9E7F36A834216D8B9F1F6 +:102FF000000FE4D0616B2046FFF7CEFE0546C8B156 +:103000000128EAD0431CEDD001463046FFF752FCC0 +:103010000028E7D1E37943F00403E3712946304601 +:103020006563FEF7CDFFA0634C360020276346445E +:10303000E663D3E70720D1E7F8B50E460021044642 +:103040000768FFF7BDFA98B90546A16B3846FFF748 +:1030500067F968B93A78E36B042A1B780CD11B0630 +:103060000ED5054601212046FFF788FF0028ECD049 +:10307000042808BF072006E0E52B01D0002BF0D183 +:103080000135B542EED1F8BDC16C4B1C2DE9F041C4 +:1030900004460568066B1FD1E5274FF00108A16BB8 +:1030A0002846FFF73DF998B92A78E36B042A09BF4F +:1030B0001A781F7002F07F021A7085F80380236B64 +:1030C000B3420DD200212046FFF758FF0028E6D07A +:1030D000042808BF022003E0FFF772FA0028DBD0C3 +:1030E000BDE8F0812DE9F04105460068A96B06694D +:1030F000FFF716F9044620B9EB6B1A78852A03D03E +:1031000002242046BDE8F081324603F1200153F845 +:10311000040B8B4242F8040BF9D1777801377F0119 +:10312000A7F16003B3F5007FEAD800212846FFF736 +:1031300025FF04280446E3D00028E2D1A96B2868C3 +:10314000FFF7EEF804460028DBD1EB6B1A78C02AB3 +:10315000D6D106F1200203F1200153F8040B8B4273 +:1031600042F8040BF9D196F823300F222C33B3FB2D +:10317000F2F3B7EB431FC3D34FF0400800212846BA +:10318000FFF7FCFE04280446BAD00028B9D1A96B89 +:103190002868FFF7C5F804460028B2D1EB6B1A780F +:1031A000C12AADD1B8F5187F09D206EB080203F1A8 +:1031B000200153F8040B8B4242F8040BF9D108F1BB +:1031C00020084745DAD8B8F5187F9AD83046FEF778 +:1031D0001FFF7388834294D092E700000B6800229F +:1031E00010B5036004460B6A83604B6AC261C37109 +:1031F00023F0FF03896AC0E90432C164FFF7E0F9F4 +:1032000020B92046BDE81040FFF76CBF10BD00009C +:10321000F8B50368054601271C692046FEF7F8FE4D +:10322000A070000A6678E0702846E96CFFF7C8F9DC +:1032300020B1022828BF0220C0B2F8BDA96B2868BF +:10324000FFF76EF80028F4D1EB6B04F1200254F87C +:10325000041B944243F8041BF9D12B68DF70002E45 +:10326000E7D000212846013EFFF788FEE0E7000096 +:103270002DE9F8434FF0FF08064607680424454649 +:103280004FF6FF79B16B11B9002C73D063E038466B +:10329000FFF746F8044600285DD1F06B0378002B59 +:1032A0006ED03A78042A11D1852B4DD1336B30463C +:1032B000F364FFF717FF044600284CD13B691B79E4 +:1032C00003F03F03B3712046BDE8F883C27AE52BD3 +:1032D00002F03F02B27143D02E2B41D022F02001E8 +:1032E00008293DD00F2A40D1590637D503F0BF0534 +:1032F000336B90F80D80F364437B434530D1428BB0 +:1033000072BB03780D21FC6823F04003DFF874E002 +:10331000013B4B4301211EF801CB30F80CC009B32F +:10332000FF2B1DD824F813C06146013301320D2A4A +:10333000F1D10278520605D521B1FF2B10D8002219 +:1033400024F81320013DEDB200213046FFF716FEB0 +:103350000446002896D00023B363B4E7AB42CBD039 +:10336000FF25F1E7CC45E1D0FAE72DB9FEF740FEA5 +:10337000404501D10024A6E74FF0FF33F364A2E7F4 +:103380000424E8E7AC8E00082DE9F04F002187B057 +:103390000446D0F80090FFF713F9804670B999F809 +:1033A0000030042B33D1D9F80C00FEF779FF074623 +:1033B0002046FFF75DFF054620B18046404607B036 +:1033C000BDE8F08FD9F810309A8CBA42F0D193F85A +:1033D00023B040265D4506D1D9F80C3033F81530BE +:1033E000002BE5D1EAE7F106D9F8103008BF023624 +:1033F000985B01F04DF8D9F80C30824633F815008F +:1034000001F046F88245D3D102360135E2E74FF0AC +:10341000FF0A4FF0FF3B5546C4F84CB0A16B48463D +:10342000FEF77EFF00285CD1E66B3778002F77D05F +:10343000F27AE52F02F03F03A37103D0120704D5FF +:103440000F2B04D0C4F84CB04FE00F2B54D194F89C +:103450004B3058063FD4790645D5236B07F0BF079C +:1034600096F80DA0E364737B53453ED1738B002B1C +:103470003BD135780121D9F80C3005F03F05019397 +:103480000D23013D5D43284B13F8012BB25A71B354 +:10349000FF2D059329D81046049200F0F9FF6B1C0C +:1034A00003900293019B33F8150000F0F1FF03999C +:1034B00081421AD1049A029D1146059B1B4A9342F0 +:1034C000E2D133785A0604D519B1019B33F815308F +:1034D0005BB97D1EEDB200212046FFF74FFD0028AD +:1034E0009CD080466AE7BD42BDD0FF25F3E74FF68A +:1034F000FF708242E2D0F8E72DB93046FEF778FD42 +:1035000050453FF45BAF94F84B30DB079AD40B2265 +:1035100004F14001304605F05BFB002892D14DE7F5 +:103520004FF004084AE700BFAC8E0008B98E0008CF +:103530002DE9F04F90F84BB099B004461BF0A00570 +:1035400040F068810668F26832F81530002B4AD1E5 +:103550003378042B40F087800F230E352046B5FBCF +:10356000F3F5A91CFFF768FD8146002877D1236B8E +:103570000135A3EB4515E3795A07E56435D523F00A +:1035800004032046E371FFF77DF950BB4FF0FF3293 +:10359000616B2046FFF7E0F818BBA3682BB3214608 +:1035A00004A8FFF71BFEE0B970894FF40071D4E95D +:1035B0000423E0FB01233069C4E904233830FEF71B +:1035C000EFFC3069D4E904232830FEF7E9FCE37905 +:1035D000326904A843F0010382F82130FFF718FE96 +:1035E00018B181463BE00135AEE7D6E903544022ED +:1035F00000212046FEF796FB8523012140222370FF +:10360000C0234FF0C10C04EB010884F820300023E4 +:103610001E469E46571C04F802C0F0B2023204F85F +:1036200007E021B135F8131009B10133DBB20F0AFD +:10363000A15408F802700232D706F2D135F813709F +:103640000136002FE6D184F82330831C28466370AE +:10365000FEF726FE84F82400000A84F82500484678 +:1036600019B0BDE8F08F04F140070DF1100A1BF00E +:10367000010F97E807008AE8070000F0D380402395 +:103680004FF0010884F84B30BC46F368B8F1050FE1 +:103690009AE80700ACE803002CF8022B4FEA12422C +:1036A0008CF8002059D9981E424630F8021F002994 +:1036B00042D10DF10F0C072102F00F0E91461209B5 +:1036C0000EF13000392888BF0EF1370001390CF8AF +:1036D000010902D0B9F10F0FEED818AB7E205A18AD +:1036E00002F8580C38460022914206D010F801CB5F +:1036F00002F1010EBCF1200F31D104F13F0C07297A +:1037000002F1010297BF18AB20205818013198BF71 +:1037100010F8580C072A0CF80200F0D92046FFF7E1 +:1037200033FE8146002878D108F10108B8F1640F12 +:10373000AAD14FF0070992E74FF0100C01F0010EEB +:1037400049080EEB4202D30344BF82F4883282F070 +:103750002102BCF1010CF1D1A7E74246A9E772466C +:10376000C2E7216B2046A1EB4511FEF729FF8146F8 +:1037700000287FF474AF4FF6FF783846FEF738FC28 +:103780000190A16B3046FEF7CBFD814600287FF407 +:1037900066AFE36BE9B2019A4FF00D0CD6F80CE07E +:1037A0005A734FF00F02DFF8E0A0DA724A1E187366 +:1037B0000CFB02F284469876D87640451AF8019BB5 +:1037C0000CF1010C18BF3EF8120003EB090B18BFF7 +:1037D000013203F809004FEA1029002808BF4046CB +:1037E000BCF10D0F8BF80190E7D1404502D03EF8B7 +:1037F00012200AB941F0400119700123002120462E +:10380000F370FFF7BBFB814600287FF428AF013D32 +:10381000B7D11BE04FF0060921E704287FF41FAF62 +:1038200084F84BB01BF0020F20461BBF0C350D2156 +:103830000125B5FBF1F518BF01352946FFF7FCFB63 +:10384000814600287FF40BAF013D8AD1A16B304641 +:10385000FEF766FD814600287FF401AF0146202275 +:10386000E06BFEF75FFAE36B03CF18605960BA783C +:1038700039889A72198194F84B30E26B03F018037F +:1038800013730123F370EAE6AC8E000810B504460A +:103890000A463430FEF776FB886004F13800FEF704 +:1038A00073FBC2E9040194F8213003F00203D371E1 +:1038B0000023D36110BD000003284B8B04BF8A8A0C +:1038C00043EA0243184670472DE9F04F0B7899B050 +:1038D000044689462F2BD0F800B001D05C2B09D1CB +:1038E0004A461378914601322F2BFAD05C2BF8D040 +:1038F000002301E0DBF81C30A3600023E3619BF8A8 +:103900000030042B1ED1A368E3B1DBF82030214640 +:1039100004A82362DBF824306362DBF82830A3625A +:10392000FFF75CFC0346002854D1DBF8102002F1BD +:103930003800FEF727FBC4E9040392F8213003F0B6 +:103940000203E37199F800301F2B00F235818023C8 +:103950000021204684F84B3019B0BDE8F04FFEF747 +:103960002FBE49460B78894601312F2BFAD05C2BAC +:10397000F8D01F2B8CBF00250425012F2FD11388D1 +:103980002E2B31D1002322F8173004F140029F4240 +:103990008CBF2E21202101330B2B02F8011BF6D105 +:1039A00045F02005204684F84B50FFF7EDFC94F8D5 +:1039B0004B30002800F0E78004280BD1990603F073 +:1039C000040240F1DC80002A00F0F6808023002011 +:1039D00084F84B3019B0BDE8F08F0425CDE7022FF5 +:1039E00002D153882E2BCAD0911E87BB002322F808 +:1039F0001730002F00F0118132F8130019460133FF +:103A00002028F9D009B92E2801D145F00305901ED0 +:103A100030F817302E2B01D0013FF9D14FF0203371 +:103A20004FF0000A6364D0462364C4F8473008238B +:103A3000481C32F811600090F6B1202E03D02E2ED3 +:103A40000DD1B84210D045F003050099F0E731F8E8 +:103A50001730202B01D02E2BC8D1013FC5E79A4546 +:103A600005D20099B9423BD10B2B30D101E00B2B91 +:103A700027D145F003050B2394F84020E52A04BF25 +:103A8000052284F84020082B04BF4FEA88085FFA1B +:103A900088F808F00C030C2B03D008F00303032B69 +:103AA00001D145F00205A8073FF57CAF18F0010FE2 +:103AB00018BF45F0100518F0040F18BF45F00805B1 +:103AC00070E70099B94202D045F00305D4D84FEA17 +:103AD00088080B234FF0080A00975FFA88F8B4E7CC +:103AE0007F2E15D9304640F25231CDE9022345F000 +:103AF0000203019300F098FC10F0800F0646DDE908 +:103B0000022316D000F07F0646498E5D019D46B324 +:103B100031464548CDE9012305F0C8F8DDE9012328 +:103B2000F8B9A6F1410189B219291ED848F0020856 +:103B300010E0FF28EAD9591E8A4503D345F0030552 +:103B40009A4682E704EB0A01000A0AF1010A019D84 +:103B500081F8400004EB0A010AF1010A81F8406093 +:103B600073E745F003055F26F4E7A6F1610189B22A +:103B700019299EBF203E48F00108B6B2EAE7002AA4 +:103B800008BF052026E75A073FF524AFA379DB06D7 +:103B900045D59BF80000042835D1A3682146E27979 +:103BA00023622369DBF8100023F0FF0313436362F1 +:103BB000E36CA362FFF76AFE23680027DA6819F84E +:103BC000010B00283FF409AF40F25231009200F09F +:103BD0004BFC054608B31F28009A7FF6FEAE2F283F +:103BE0003FF4BFAE5C283FF4BCAE7F2805D8014649 +:103BF0000E4805F05BF8009A78B9FF2F0DD022F837 +:103C000017500137DBE7216B0BF14C03C1F30801BF +:103C10001944FFF751FEA060CEE70620DAE6052042 +:103C2000D8E600BF2C8E0008258E00081C8E0008E8 +:103C30001FB5CDE9001003A814460391FEF700FA62 +:103C4000002815DB0B4A52F820300BB10021197007 +:103C5000019B0BB10021197042F820302CB10022D9 +:103C600001A96846FEF7C8FE0446204604B010BD10 +:103C70000B24FAE79C3600202DE9F04798B09046D7 +:103C800005460191002800F0528102F03F0603A989 +:103C900001A83246FEF7B0FE002840F04681039BA3 +:103CA0004FF48C60049303F035F80746002800F0C9 +:103CB0004081039B00F500720199D86004A81A6145 +:103CC000FFF702FE044620B99DF95B30002BB8BF18 +:103CD000062418F01C0F00F0CD80002C4CD0042CD2 +:103CE00040D104A8FFF724FC044600283AD146F04E +:103CF0000806039B1A78042A40F083801869294635 +:103D00002B60FFF7C3FD039B1E22002118690230C0 +:103D1000FEF708F8039C00211A2220692630FEF7DE +:103D200001F8236920221A71246903F011F8014671 +:103D3000012208342046FEF72BF9039B04A81B69D7 +:103D400083F82120FFF764FA044658B9A96801B343 +:103D500002462846FEF718FDAB68039A0446013B6D +:103D60005361B4B1384602F0E5FF0CB100232B607B +:103D7000204618B0BDE8F0879DF8163013F0110FFB +:103D800040F0848018F0040F40F0C98018F0080F4C +:103D9000AFD1039A31071399936C48BF46F04006A0 +:103DA000E964AB641078042872D1069B9DF8171063 +:103DB0002B62089B106923F0FF030B4329466B62BB +:103DC000179BAB62FFF762FDDDF80CA00024002218 +:103DD00005F15008BAF8063021464046C5F800A063 +:103DE000AB80002385F8306085F831406C64C5E90C +:103DF0000E234FF40072FDF795FFB20653D4002452 +:103E0000B0E702F0A5FF0146009013980E30FEF7D0 +:103E1000BFF8139800991630FEF7BAF8039C13996F +:103E20002078FFF749FD202300228046CB722046F0 +:103E30001399FEF7D1F8139B002201211A775A77C4 +:103E40009A77DA77039BD970B8F1000FA1D0414679 +:103E500004A8D3F84890FEF797FC0446002881D1C7 +:103E600049460398FEF75CFA039B044608F1FF30CD +:103E7000586176E7002C7FF475AF9DF81630DC06AC +:103E80004FD418F0020F84D0D80782D5072469E7F1 +:103E9000FFF712FD0023A86001F11C00FEF772F885 +:103EA0006B61286190E7D5E9046956EA0903A6D059 +:103EB000BAF80AA0A9684FEA4A2AC5E90E69B245CC +:103EC00074EB09031BD300242964002C7FF44AAF50 +:103ED000C6F30803002B92D0039C2046FEF770F82F +:103EE00008B3760A0123414646EAC95682196A6434 +:103EF000607802F089FA041E18BF012432E72846D0 +:103F0000FEF7C6FAB6EB0A06014669F10009012878 +:103F100003D9431CD3D10124D6E70224D4E70824D3 +:103F200020E704241EE702241CE704461EE70924B8 +:103F30001EE711241CE700002DE9F04F994685B0DB +:103F40000023884603A90446C9F800301646FEF748 +:103F500091F8054680BB94F831506DBB94F8303031 +:103F600013F00103009300F0A68004F1500AD4E995 +:103F70000432D4E90E011B1A62EB0102B34272F162 +:103F8000000238BF1E46BEB1D4E90E10C1F30803CB +:103F9000002B40F08280039B5A894B0A013A43EA86 +:103FA000C0531A401BD151EA000309D1A06801286F +:103FB0000DD8022584F83150284605B0BDE8F08FB1 +:103FC000216C20460192FEF763FA019AEFE7431C49 +:103FD00004D10123009D84F83130EDE72064DDF841 +:103FE0000CB0216C5846FDF7EBFF0028E1D0B6F588 +:103FF000007F02EB000731D3BBF80A1002EB56201A +:10400000730A88429BF8010088BF8B1A3A464146E2 +:10401000019302F0F9F90028DBD194F93020019BDB +:10402000002A0BDA606CC01B984207D24FF4007272 +:10403000514608EB4020FDF74FFE019B5F02D9F887 +:104040000030F61BB8443B44C9F80030D4E90E32C6 +:10405000DB1942F10002C4E90E3294E7626CBA4205 +:104060001AD094F93030002B0DDA012351469BF819 +:10407000010002F0EDF90028ABD194F8303003F0E4 +:104080007F0384F83030039801233A465146407844 +:1040900002F0BAF900289CD16764A16B4046C1F3D5 +:1040A0000801C1F500775144B74228BF37463A4668 +:1040B000FDF712FEC3E707257EE7000070B596B056 +:1040C0000E460022019002A901A8FEF795FC0446C5 +:1040D000E0B94FF48C6002F01DFE0546D8B1029B9A +:1040E00000F500720199D86002A81A61FFF7ECFB95 +:1040F000044640B99DF95330002B0ADB1EB131460E +:1041000002A8FDF7EDFF284602F014FE204616B087 +:1041100070BD0624F7E71124F8E7000070B5B8B0C9 +:104120000222019003A901A8FEF766FC044608BB21 +:10413000039B4FF48C60109302F0ECFD05460028C1 +:1041400066D0039B00F500720199D86010A81A612F +:10415000FFF7BAFB044650B99DF88B30980655D44A +:10416000190653D49DF84630DA0706D507242846A9 +:1041700002F0E0FD204638B070BD039B0493187830 +:10418000042814D104A91869FFF780FB069E9DF846 +:104190004630DB0610D410A8FEF776FF0446002850 +:1041A000E5D156BB0398FEF7DBFB0446DFE71F991A +:1041B000FFF782FB0646EAE7039BDA69B242D5D0F5 +:1041C00024930021269624A81B78042B01BFDDE947 +:1041D0000823CDE928239DF817308DF89730FEF796 +:1041E000EFF904460028C2D124A8FFF741F804469D +:1041F0000028BBD00428BAD1CDE70246314604A836 +:10420000FEF7C2FA04460028B1D1CBE70624AEE798 +:104210001124AFE7F0B5BDB0CDE900106846FDF759 +:104220000FFF022203A901A8FEF7E6FB04460028BF +:1042300041D1039B4FF48C60149302F06BFD054653 +:10424000002800F0EE80039B00F5007214AE019987 +:10425000D8601A613046FFF737FB044640BB9DF833 +:104260009B3013F0A00F40F0D880039B009F1A787A +:10427000042A68D11B6904AC03F1400C18680833A8 +:1042800053F8041C2246634503C21446F6D150225B +:10429000314628A8FDF720FD394628A8FFF714FB72 +:1042A000044600284CD12A9A169B9A4206D008242C +:1042B000284602F03FFD20463DB0F0BD349A209BD9 +:1042C0009A42F4D128A8FFF733F904460028EFD129 +:1042D000039B04AF1B6993F801E093F823C09C8C07 +:1042E0003A46083303CAB24243F8080C43F8041CA8 +:1042F0001746F5D1039B28A81B6983F801E0039BAF +:104300001A6982F823C01A6982F82440240A82F8C4 +:1043100025401A691379D9065CBF43F02003137155 +:10432000FEF776FF04460028C2D13046FEF7ACFE09 +:1043300004460028BCD10398FEF712FB0446B7E7F9 +:104340000428B5D1BEE7239A04AB02F1200C106813 +:10435000083252F8041C1C46624503C42346F6D1B9 +:104360005022314628A8FDF7B7FC394628A8FFF7A8 +:10437000ABFA044600284CD12A9A169B9A4296D151 +:10438000349A209B9A4292D128A8FFF7D1F804468C +:1043900000288DD137990DF11D030DF12D0001F18C +:1043A0000D0253F8044B834242F8044BF9D11888AC +:1043B000012710809B7893709DF81B30039CDA06D0 +:1043C00058BF43F02003CB72E770CB7ADB06ACD545 +:1043D000169A2A9B9A42A8D02078FFF76DFA0146D8 +:1043E0002046FDF7EDFD0146C8B12046FDF798FFD8 +:1043F000044600287FF45CAF039890F86D302E2BB4 +:1044000093D12A9A00F16C01FDF7E6FD039BDF7062 +:104410008BE704287FF44CAFB6E7062448E7022474 +:1044200046E7112447E700007F2810B501D880B285 +:1044300010BDB0F5803F13D240F2523399420FD1F4 +:104440000849002231F8024B93B2844203D103F1B0 +:104450008000C0B2ECE70132802AF3D11346F6E7C0 +:104460000020E5E76C9100087F280DD940F2523317 +:10447000994208D1FF2806D800F10040034B80384C +:1044800033F8100070470020704700BF6C9100089F +:10449000B0F5803FF0B522D21F4A83B21F49B0F574 +:1044A000805F28BF0A46141D34F8042C2146AAB1A7 +:1044B000934213D334F8025C2E0AEFB252FA85F518 +:1044C000A84222DA082E09D8DFE806F0050A101201 +:1044D0001416181A1C00801A34F810301846F0BD53 +:1044E000981A00F001001B1A9BB2F7E7103BFBE79C +:1044F000203BF9E7303BF7E71A3BF5E70833F3E7F2 +:10450000503BF1E7A3F5E353EEE70434002ECBD1A3 +:1045100001EB4702C7E700BFBC8E0008B09000085F +:10452000084BC26A994228BF1946836C50688B4277 +:1045300010B506D95A1E4C0002EB4103B3FBF4F34D +:10454000184410BD20BCBE0001F001038A0748BF1B +:1045500043F002034A0748BF43F008030A0748BF75 +:1045600043F00403CA0648BF43F010038A06426BB7 +:1045700048BF43F0200313434363704710B5074C13 +:10458000204600F093FF064B0022C4E91023054BA0 +:10459000A364054BE363054BE36410BDA436002020 +:1045A0000070005200B4C404F8360020F83800202F +:1045B000C36A0BB90E4BC3620379012B0CD10D4BAF +:1045C000984209D10C4B5A6B42F480325A63DA6D2F +:1045D00042F48032DA65DB6D436C00221A65DA62E0 +:1045E0001A605A605A624FF0FF329A63704700BFF8 +:1045F0006C920008A4360020004502580379012B74 +:1046000016D0436C00221A65DA621A605A605A6248 +:104610004FF0FF329A63074B984209D1064B5A6B11 +:1046200022F480325A63DA6D22F48032DA65DB6D6F +:10463000704700BFA43600200045025810B5446CF6 +:104640000649FFF76DFF6060236842F2107043F087 +:1046500003032360BDE8104001F048BD801A060046 +:104660000129F8B5466C0B4F09D175680A493D40E0 +:10467000FFF756FF054345F480557560F8BD746833 +:1046800006493C40FFF74CFF044344F480547460F7 +:10469000F4E700BF00ECFFFF80F0FA0240787D01F4 +:1046A000436C00225A601A6070470000426C012976 +:1046B000536823F4404304D0022905D001B9536064 +:1046C000704743F48043FAE743F40043F7E7000000 +:1046D000436C41F480519A60D9605A6B1206FCD544 +:1046E00080229A637047000010B541F48851446CF1 +:1046F000A260E160616B11F04502FBD0A26311F092 +:10470000040203D0FFF720FF012010BD61691046AD +:104710001960FAE710B541F48851446CA260E16079 +:10472000616B11F04502FBD0A26311F0050203D0CA +:10473000FFF70AFF012010BD616910461960FAE712 +:1047400073B5134604460E46302282F31188426C3C +:10475000D26B32B14FF0FF314030019301F0D2FC07 +:10476000019B606C00220265C263C262456B15F456 +:10477000807504D185F31188012002B070BD4FF01F +:10478000FF31816382F31188012E06D90C21204666 +:1047900002B0BDE87040FFF7BDBF1046EDE7000076 +:1047A00073B5446C0E4600250192616BA1632565CB +:1047B000E562FFF7C9FE012E07D9019B2A460C21AD +:1047C00002B0BDE87040FFF7A5BF02B070BD0000A9 +:1047D00010B541F49851446CA260E160616B11F036 +:1047E0004502FBD0A26311F03F0203D0FFF7ACFEFD +:1047F000012010BD216A10461960E1695960A16964 +:1048000099606169D960F4E72DE9F74304460191A5 +:10481000006D01A91746984602F0D4FB0646002811 +:104820004AD0626C2046DDF804905568C5F309054E +:1048300001356B00A56CB5FBF3F54FF47A73B5FB4E +:10484000F3F55D43556200F0F7FD50BB636C4FF02C +:10485000FF3201254146C3F8589020461D659A63F2 +:104860004FF49572DA6342F207029F62DA62E36CF8 +:104870000A9AFFF74FFFA0B9E26C104B11680B408A +:104880007BB929462046FFF75BFF054648B92E460F +:104890003A460199206D02F0BDFB304603B0BDE8F9 +:1048A000F0833A460199206D02F0B4FBE26C0121DD +:1048B0002046FFF775FFF0E70126EEE708E0FFFD71 +:1048C0002DE9F7431F46436C01924FF47A725D68FD +:1048D00004468846C5F3090501356E00856CB5FBB5 +:1048E000F6F5B5FBF2F555435D6200F0A5FD20B18C +:1048F0000125284603B0BDE8F0837E0201A9206DA2 +:10490000324602F05FFB05460028F1D0636C019A45 +:10491000D4F84C909A6501221A654FF0FF329A63E1 +:104920004FF49572DA639E62236BDB064B4658BFE9 +:104930004FEA4828012F42461BD912212046FFF793 +:10494000E9FEC0B9D9F80020104B13409BB9636C45 +:1049500042F2930239462046DA62E26CFFF7F0FE3B +:10496000804640B932460199206D454602F052FB1F +:10497000BFE71121E2E732460199206D02F04AFBC0 +:10498000E26C39462046FFF70BFFB2E708E0FFFD77 +:104990002DE9F3411F46436C01924FF47A725D6832 +:1049A00004468846C5F3090501356E00856CB5FBE4 +:1049B000F6F5B5FBF2F555435D6200F03DFD20B123 +:1049C0000125284602B0BDE8F0817E0201A9206DD4 +:1049D000324602F02DFB05460028F1D0636C019AA7 +:1049E0009A6501221A654FF0FF329A634FF48D7277 +:1049F000DA639E62236BE66CDB06334658BF4FEAF0 +:104A00004828012F424619D919212046FFF782FE76 +:104A1000B0B932680F4B134093B9636C42F2910204 +:104A200039462046DA62E26CFFF78AFE064638B95C +:104A300001993546206D02F027FBC2E71821E4E713 +:104A40000199206D02F020FBE26C39462046FFF709 +:104A5000A7FEB6E708E0FFFD12F0030F2DE9F041D5 +:104A600007460C4615461E4617D00E44B44202D1E6 +:104A70000020BDE8F0810123FA6B21463846FFF79C +:104A80001FFF0028F5D128464FF40072F96B05F599 +:104A900000750134FDF720F9E8E7BDE8F041FFF7C4 +:104AA0000FBF000012F0030F2DE9F04107460C463E +:104AB00015461E4617D00E44B44202D10020BDE870 +:104AC000F08129464FF40072F86B05F50075FDF78B +:104AD00003F90123FA6B21463846FFF759FF0028F6 +:104AE000EDD10134E8E7BDE8F041FFF751BF000028 +:104AF00000207047302310B583F311880024436CE5 +:104B000040302146DC6301F00BFB84F3118810BDBB +:104B1000026843681143016003B118477047000001 +:104B2000024A136843F0C00313607047004400401A +:104B3000024A136843F0C003136070470048004006 +:104B4000024A136843F0C0031360704700780040C6 +:104B5000044B9A6C02439A641A6F104318671B6FD8 +:104B6000704700BF0045025837B5274C274D2046F7 +:104B700000F0FCFC04F11400009400234FF40072D8 +:104B8000234900F097F94FF40072224904F13800EC +:104B90000094214B00F010FA204BC4E91735204C4B +:104BA000204600F0E3FC04F11400009400234FF4CD +:104BB00000721C4900F07EF94FF400721A4904F1AA +:104BC00038000094194B00F0F7F9194BC4E9173578 +:104BD000184C204600F0CAFC04F1140000234FF4E6 +:104BE00000721549009400F065F9144B4FF40072FF +:104BF000134904F13800009400F0DEF9114BC4E9C8 +:104C0000173503B030BD00BFFC38002000E1F505CA +:104C1000403A002040400020214B00080044004062 +:104C200068390020403C002040420020314B000801 +:104C300000480040D4390020403E0020414B00088D +:104C4000404400200078004038B5264D0446037CDF +:104C5000002918BF0D46012B06D1234B984230D1B5 +:104C60004FF40030FFF774FF2A68236EE16D03EB09 +:104C70005203A566B3FBF2F36A68100442BF23F047 +:104C8000070003F0070343EA4003CB60AB6843F03F +:104C900040034B60EB6843F001038B6042F4967372 +:104CA00043F001030B604FF0FF330B62510505D554 +:104CB00012F0102211D0B2F1805F10D084F864306D +:104CC00038BD0A4B984205D0094B9842CCD14FF0E1 +:104CD0008040C7E74FF48020C4E77F23EEE73F23FF +:104CE000ECE700BF74920008FC380020683900200F +:104CF000D43900202DE9F047C66D05463768F469C0 +:104D0000210734621AD014F0080118BF4FF48071E3 +:104D1000E20748BF41F02001A3074FF0300348BF2E +:104D200041F04001600748BF41F0800183F31188E2 +:104D3000281DFFF7EDFE002383F31188E2050AD555 +:104D4000302383F311884FF48061281DFFF7E0FEC4 +:104D5000002383F311884FF030094FF0000A14F05C +:104D6000200838D13B0616D54FF0300905F1380A36 +:104D7000200610D589F31188504600F051F900281B +:104D800036DA0821281DFFF7C3FE27F080033360C1 +:104D9000002383F31188790614D5620612D53023D7 +:104DA00083F31188D5E913239A4208D12B6C33B1D0 +:104DB00027F040071021281DFFF7AAFE37600023C7 +:104DC00083F31188E30618D5AA6E1369ABB1506955 +:104DD000BDE8F047184789F31188736A284695F8AB +:104DE0006410194000F0DCFB8AF31188F469B6E71F +:104DF000B06288F31188F469BAE7BDE8F087000073 +:104E0000F8B51546826804460B46AA4200D285686A +:104E1000A1692669761AB5420BD218462A46FCF7D4 +:104E20005BFFA3692B44A3612846A3685B1BA360B7 +:104E3000F8BD0CD9AF1B18463246FCF74DFF3A4679 +:104E4000E1683044FCF748FFE3683B44EBE7184671 +:104E50002A46FCF741FFE368E5E7000083689342D8 +:104E6000F7B50446154600D28568D4E90460361AC1 +:104E7000B5420BD22A46FCF72FFF63692B446361CE +:104E80002846A3685B1BA36003B0F0BD0DD9324672 +:104E9000AF1B0191FCF720FF01993A46E0683144CD +:104EA000FCF71AFFE3683B44E9E72A46FCF714FFE6 +:104EB000E368E4E710B50A440024C361029B846000 +:104EC000C16002610362C0E90000C0E9051110BDC4 +:104ED00008B5D0E90532934201D1826882B982686F +:104EE000013282605A1C426119700021D0E90432FB +:104EF0009A4224BFC368436101F02CF9002008BD29 +:104F00004FF0FF30FBE7000070B5302304460E463B +:104F100083F31188A568A5B1A368A269013BA360CA +:104F2000531CA36115782269934224BFE368A361EF +:104F3000E3690BB120469847002383F31188284684 +:104F400007E03146204601F0F5F80028E2DA85F363 +:104F5000118870BD2DE9F74F04460E461746984656 +:104F6000D0F81C904FF0300A8AF311884FF0000BF4 +:104F7000154665B12A4631462046FFF741FF0346F4 +:104F800060B94146204601F0D5F80028F1D0002351 +:104F900083F31188781B03B0BDE8F08FB9F1000FDF +:104FA00003D001902046C847019B8BF31188ED1A6E +:104FB0001E448AF31188DCE7C160C361009B8260F4 +:104FC0000362C0E905111144C0E9000001617047A6 +:104FD000F8B504460D461646302383F31188A768BA +:104FE000A7B1A368013BA36063695A1C62611D708D +:104FF000D4E904329A4224BFE3686361E3690BB1E8 +:1050000020469847002080F3118807E0314620466B +:1050100001F090F80028E2DA87F31188F8BD00006B +:10502000D0E9052310B59A4201D182687AB9826825 +:105030000021013282605A1C82611C7803699A4205 +:1050400024BFC368836101F085F8204610BD4FF08E +:10505000FF30FBE72DE9F74F04460E46174698460A +:10506000D0F81C904FF0300A8AF311884FF0000BF3 +:10507000154665B12A4631462046FFF7EFFE034646 +:1050800060B94146204601F055F80028F1D00023D0 +:1050900083F31188781B03B0BDE8F08FB9F1000FDE +:1050A00003D001902046C847019B8BF31188ED1A6D +:1050B0001E448AF31188DCE70379052B05BF836A58 +:1050C000002001204B6004BF4FF400730B60704759 +:1050D00070B55D1E866A04460D44B54205D9436B22 +:1050E00043F080034363012070BD06250571FFF77F +:1050F000B3FC05232371F7E770B55D1E866A04468D +:105100000D44B54205D9436B43F08003436301204E +:1051100070BD07250571FFF7C5FC05232371F7E76F +:1051200038B505790446052D05D108230371FFF72D +:10513000DFFC257138BD0120FCE700000323F0B53A +:10514000037185B00446FFF779FA00222046114624 +:10515000FFF7BEFA4FF4D57203AB08212046FFF7E4 +:10516000D9FA0246B8B901232363039BC3F303238F +:10517000012B09D103AB37212046FFF7CBFA18B931 +:10518000A44B039A1340ABB120460125FFF788FAE0 +:105190000223237137E103AB002237212046FFF7BA +:1051A000B9FA28B99B4A039B1A40002A00F0A7804D +:1051B00002232363236B03F00F03022B40F0A9802B +:1051C0006425954E42F2107000F090FF03AB32461A +:1051D00001212046FFF788FA0028D5D1039B002B38 +:1051E00080F293805A0003D5236B43F010032363AE +:1051F000002204F1080302212046FFF7E9FA0246E3 +:105200000028C1D104F1380303212046FFF782FAB8 +:105210000028B9D104F11805A26B092120462B46BC +:10522000FFF7D6FA0028AFD102ABA26B07212046C8 +:10523000FFF770FA06460028A6D1236B03F00F0390 +:10524000022B40F08F807E227F21284603F07EF9DA +:10525000012840F28780E76B42F2107000F046FFB1 +:1052600008234FF40072394620460096FFF7CCFA27 +:10527000002889D1384603F0B7F9236BA06203F008 +:105280000F03022B72D103AB644A06212046FFF7BD +:1052900041FA002871D15F49039B1940B1FA81F1AD +:1052A00049092046FFF7DCF902AB4FF400721021E8 +:1052B0002046FFF72FFA054600287FF465AF554ECC +:1052C000029B33427FF460AF236B13F00E0F03F0A9 +:1052D0000F0273D0022A7FF457AFE36A19780129CD +:1052E00000F09480022900F09380002900F089806A +:1052F0004B4F2046FFF7DAF903AB3A4676E011460A +:1053000020462263FFF7E4F954E7013D7FF45AAFEA +:105310003AE7444D6426444A3E4F012B18BF1546D8 +:1053200003AB002237212046FFF7F4F900287FF471 +:105330002BAF039B3B427FF427AF03AB2A462921C7 +:105340002046FFF7D1F900287FF41EAF039B002B06 +:10535000FFF648AF013E3FF417AF42F2107000F085 +:10536000C5FEDDE7284603F013F986E77E227F219C +:105370002846E66B03F0EAF808B9002191E700231C +:1053800040223146204600930623FFF73DFA0028CD +:10539000F3D1B3895BBA9B07EFD5244B402231464A +:1053A000204600930623FFF72FFA0028E5D1317C31 +:1053B00001F00F010F3918BF012172E7E36A197874 +:1053C000F9B101297FF4E0AE2046FFF76FF903AB96 +:1053D000A26B37212046FFF79DF900287FF4D4AE59 +:1053E000039B33427FF4D0AE03AB0222062120465A +:1053F000FFF790F900287FF4C7AE039B33427FF498 +:10540000C3AE05232371284605B0F0BD084F70E7F1 +:10541000084F6EE708E0FFFD0080FFC00001B90300 +:105420000000B7030080FF5000001080F1FFFF80F4 +:105430000001B7030002B70337B504460C4D01ABBA +:10544000A26B0D212046FFF765F978B9019B2B422D +:105450000BD1C3F34323042B08D0053B022B04D804 +:105460004FF47A7000F042FEE9E7012003B030BD4E +:1054700008E0FFFD70B53023054683F311880379FA +:105480000024022B03D184F31188204670BD04232D +:10549000037184F311880226FFF7CEFF04462846E5 +:1054A000FFF7FEF82E71F0E7FFF768B8044B0360D2 +:1054B0000123037100234363C0E90A33704700BF2F +:1054C0008C92000810B53023044683F31188C16222 +:1054D000FFF76EF802230020237180F3118810BDBE +:1054E00010B53023044683F31188FFF787F80023B3 +:1054F0000122E362227183F3118810BD02684368C0 +:105500001143016003B11847704700001430FFF7E2 +:1055100021BD00004FF0FF331430FFF71BBD00002A +:105520003830FFF797BD00004FF0FF333830FFF7FA +:1055300091BD00001430FFF7E7BC00004FF0FF31D1 +:105540001430FFF7E1BC00003830FFF741BD000028 +:105550004FF0FF323830FFF73BBD0000012914BF88 +:105560006FF0130000207047FFF7FEBA044B036092 +:1055700000234360C0E9023301230374704700BF76 +:10558000B092000810B53023044683F31188FFF76A +:105590005BFB02230020237480F3118810BD000000 +:1055A00038B5C36904460D461BB904210844FFF70A +:1055B000A5FF294604F11400FFF78AFC002806DA4B +:1055C000201D4FF40061BDE83840FFF797BF38BD9C +:1055D000026843681143016003B118477047000037 +:1055E00013B5406B00F58054D4F8A4381A681178CC +:1055F000042914D1017C022911D1197901231289BE +:105600008B4013420BD101A94C3002F0CDFED4F8EF +:10561000A4480246019B2179206800F0DFF902B01E +:1056200010BD0000143002F04FBE00004FF0FF33F9 +:10563000143002F049BE00004C3002F021BF0000DF +:105640004FF0FF334C3002F01BBF0000143002F06B +:105650001DBE00004FF0FF31143002F017BE0000F5 +:105660004C3002F0EDBE00004FF0FF324C3002F043 +:10567000E7BE00000020704710B500F58054D4F854 +:10568000A4381A681178042917D1017C022914D191 +:105690005979012352898B4013420ED1143002F004 +:1056A000AFFD024648B1D4F8A4484FF44073617985 +:1056B0002068BDE8104000F07FB910BD406BFFF7D7 +:1056C000DBBF0000704700007FB5124B01250426A8 +:1056D000044603600023057400F1840243602946F8 +:1056E000C0E902330C4B0290143001934FF4407325 +:1056F000009602F061FD094B04F69442294604F13C +:105700004C000294CDE900634FF4407302F028FE90 +:1057100004B070BDD8920008BD560008E1550008DD +:105720000A68302383F311880B790B3342F8230086 +:105730004B79133342F823008B7913B10B3342F8C2 +:10574000230000F58053C3F8A4180223037400203B +:1057500080F311887047000038B5037F044613B109 +:1057600090F85430ABB90125201D0221FFF730FF1E +:1057700004F114006FF00101257700F0F7FC04F14B +:105780004C0084F854506FF00101BDE8384000F03F +:10579000EDBC38BD10B5012104460430FFF718FFF9 +:1057A0000023237784F8543010BD000038B5044638 +:1057B0000025143002F018FD04F14C00257702F0AA +:1057C000E7FD201D84F854500121FFF701FF20461A +:1057D000BDE83840FFF750BF90F8803003F0600319 +:1057E000202B06D190F881200023212A03D81F2ADC +:1057F00006D800207047222AFBD1C0E91D3303E000 +:10580000034A426707228267C3670120704700BFCF +:105810004422002037B500F58055D5F8A4381A6821 +:10582000117804291AD1017C022917D11979012391 +:1058300012898B40134211D100F14C04204602F032 +:1058400067FE58B101A9204602F0AEFDD5F8A44884 +:105850000246019B2179206800F0C0F803B030BDFA +:1058600001F10B03F0B550F8236085B004460D46F6 +:10587000FEB1302383F3118804EB8507301D082126 +:10588000FFF7A6FEFB6806F14C005B691B681BB1C5 +:10589000019002F097FD019803A902F085FD0246F0 +:1058A00048B1039B2946204600F098F8002383F373 +:1058B000118805B0F0BDFB685A691268002AF5D05E +:1058C0001B8A013B1340F1D104F18002EAE700009A +:1058D000133138B550F82140ECB1302383F31188EF +:1058E00004F58053D3F8A4281368527903EB82039C +:1058F000DB689B695D6845B104216018FFF768FEAD +:10590000294604F1140002F085FC2046FFF7B4FE9E +:10591000002383F3118838BD7047000001F0A2BC5A +:1059200001234022002110B5044600F8303BFCF76B +:10593000F9F90023C4E9013310BD000010B530238C +:10594000044683F311882422416000210C30FCF7C7 +:10595000E9F9204601F0A8FC02230020237080F31F +:10596000118810BD70B500EB8103054650690E46E5 +:105970001446DA6018B110220021FCF7D3F9A069AF +:1059800018B110220021FCF7CDF931462846BDE8B8 +:10599000704001F089BD000083682022002103F0DF +:1059A000011310B5044683601030FCF7BBF92046A4 +:1059B000BDE8104001F004BEF0B4012500EB810405 +:1059C00047898D40E4683D43A469458123600023F5 +:1059D000A2606360F0BC01F021BE0000F0B40125BC +:1059E00000EB810407898D40E4683D4364690581CB +:1059F00023600023A2606360F0BC01F097BE00004A +:105A000070B5022300250446242203702946C0F8FD +:105A100088500C3040F8045CFCF784F9204684F888 +:105A2000705001F0D5FC63681B6823B129462046FD +:105A3000BDE87040184770BD0378052B10B50446CB +:105A40000AD080F88C300523037043681B680BB1C3 +:105A5000042198470023A36010BD000001780529A8 +:105A600006D190F88C20436802701B6803B1184778 +:105A70007047000070B590F87030044613B10023F1 +:105A800080F8703004F18002204601F0BDFD6368AB +:105A90009B68B3B994F8803013F0600535D00021CD +:105AA000204602F0AFF80021204602F09FF863681C +:105AB0001B6813B1062120469847062384F87030EE +:105AC00070BD204698470028E4D0B4F88630A26F15 +:105AD0009A4288BFA36794F98030A56F002B4FF0DE +:105AE000300380F20381002D00F0F280092284F857 +:105AF000702083F3118800212046D4E91D23FFF78D +:105B00006DFF002383F31188DAE794F8812003F016 +:105B10007F0343EA022340F20232934200F0C58041 +:105B200021D8B3F5807F48D00DD8012B3FD0022B70 +:105B300000F09380002BB2D104F188026267022248 +:105B4000A267E367C1E7B3F5817F00F09B80B3F5FF +:105B5000407FA4D194F88230012BA0D1B4F88830D2 +:105B600043F0020332E0B3F5006F4DD017D8B3F520 +:105B7000A06F31D0A3F5C063012B90D86368204695 +:105B800094F882205E6894F88310B4F88430B047AB +:105B9000002884D0436863670368A3671AE0B3F5FD +:105BA000106F36D040F6024293427FF478AF5C4BE0 +:105BB00063670223A3670023C3E794F88230012BB5 +:105BC0007FF46DAFB4F8883023F00203A4F8883076 +:105BD000C4E91D55E56778E7B4F88030B3F5A06FE8 +:105BE0000ED194F88230204684F88A3001F04EFCC1 +:105BF00063681B6813B10121204698470323237073 +:105C00000023C4E91D339CE704F18B036367012380 +:105C1000C3E72378042B10D1302383F31188204667 +:105C2000FFF7BAFE85F311880321636884F88B506F +:105C300021701B680BB12046984794F88230002BE6 +:105C4000DED084F88B300423237063681B68002B3C +:105C5000D6D0022120469847D2E794F884302046D7 +:105C60001D0603F00F010AD501F0C0FC012804D085 +:105C700002287FF414AF2B4B9AE72B4B98E701F0E7 +:105C8000A7FCF3E794F88230002B7FF408AF94F878 +:105C9000843013F00F01B3D01A06204602D501F06C +:105CA000C9FFADE701F0BAFFAAE794F88230002BF4 +:105CB0007FF4F5AE94F8843013F00F01A0D01B06EA +:105CC000204602D501F09EFF9AE701F08FFF97E78B +:105CD000142284F8702083F311882B462A46294623 +:105CE0002046FFF769FE85F31188E9E65DB11522CC +:105CF00084F8702083F3118800212046D4E91D2305 +:105D0000FFF75AFEFDE60B2284F8702083F311881A +:105D10002B462A4629462046FFF760FEE3E700BFF0 +:105D200008930008009300080493000838B590F821 +:105D300070300446002B3ED0063BDAB20F2A34D82E +:105D40000F2B32D8DFE803F03731310822323131FE +:105D50003131313131313737856FB0F886309D427E +:105D600014D2C3681B8AB5FBF3F203FB12556DB95D +:105D7000302383F311882B462A462946FFF72EFE4F +:105D800085F311880A2384F870300EE0142384F818 +:105D90007030302383F31188002320461A461946B9 +:105DA000FFF70AFE002383F3118838BDC36F03B1E8 +:105DB00098470023E7E70021204601F023FF002158 +:105DC000204601F013FF63681B6813B106212046CB +:105DD00098470623D7E7000010B590F870300446C6 +:105DE000142B29D017D8062B05D001D81BB110BD14 +:105DF000093B022BFBD80021204601F003FF0021C4 +:105E0000204601F0F3FE63681B6813B106212046AB +:105E10009847062319E0152BE9D10B2380F8703041 +:105E2000302383F3118800231A461946FFF7D6FD65 +:105E3000002383F31188DAE7C3689B695B68002B52 +:105E4000D5D1C36F03B19847002384F87030CEE7F3 +:105E50000023826880F8243083691B689968914226 +:105E6000FBD25A68036042601060586070470000BF +:105E70000023826880F8243083691B689968914206 +:105E8000FBD85A6803604260106058607047000099 +:105E900008B50846302383F3118891F82430032B8A +:105EA00005D0042B0DD02BB983F3118808BD8B6A64 +:105EB00000221A604FF0FF338362FFF7C9FF00230F +:105EC000F2E7D1E9003213605A60F3E7034610B5F8 +:105ED0001B68984203D09C688A689442F8D25A683A +:105EE0000B604A601160596010BD0000FFF7B0BF41 +:105EF000064BD96881F824001868026853601A605C +:105F00000122D86080F82420FAF77CBA40460020AD +:105F10000C4B30B5DD684B1C87B004460FD02B46C8 +:105F2000094A684600F0B6F92046FFF7E1FF009BFA +:105F300013B1684600F0B8F9A86A07B030BDFFF7A2 +:105F4000D7FFF9E740460020915E0008044B1A682D +:105F5000DB6890689B68984294BF002001207047DE +:105F600040460020094B10B51C68D8682268536071 +:105F70001A600122DC6084F82420FFF779FF0146D3 +:105F80002046BDE81040FAF73DBA00BF4046002069 +:105F9000044B1A68DB6892689B689A4201D9FFF744 +:105FA000E1BF70474046002038B50123084C00256A +:105FB0002370656002F046FB02F06CFB0549064861 +:105FC00002F042FC0223237085F3118838BD00BF24 +:105FD000E8480020109300084046002000F09AB9DD +:105FE000EFF3118020B9EFF30583302282F311889B +:105FF0007047000010B530B9EFF30584C4F308040E +:1060000014B180F3118810BDFFF7C2FF84F311882B +:10601000F9E70000034A516853685B1A9842FBD8BD +:10602000704700BF001000E08B604B630023CA6123 +:1060300000F128020B6302230A618B84012388612B +:1060400081F8263001F11003C26A4A611360C3620D +:1060500001F12C030846CB6270470000D0E9013102 +:10606000026841F8183CA1F19C033839CB60036900 +:1060700041F8243C436941F8203C034B41F8043C7F +:10608000C3680248FFF7D0BF1D0400084046002047 +:1060900008B5FFF7E3FFBDE80840FFF727BF0000A2 +:1060A00038B50E4BDC6804F12C05A062E06AA8420A +:1060B0000FD194F826303BB994F825309B0702BFE6 +:1060C000D4E9043213605A600F20BDE83840FFF76E +:1060D0000FBF0368E362FFF709FFE7E740460020D0 +:1060E000302383F31188FFF7DBBF000008B50146BA +:1060F000302383F311880820FFF70AFF002383F37E +:10610000118808BD054BDB6821B10360986203204C +:10611000FFF7FEBE4FF0FF30704700BF4046002043 +:1061200003682BB10022026018469962FFF7DEBEB9 +:1061300070470000064BDB6839B1426818605A604E +:10614000136043600420FFF7E3BE4FF0FF30704759 +:10615000404600200368984206D01A6802605060EA +:1061600018469962FFF7C2BE7047000038B5044672 +:106170000D462068844200D138BD036823605C600E +:106180008562FFF7B3FEF4E7036810B59C68A2428E +:106190000CD85C688A600B604C602160596099681B +:1061A0008A1A9A604FF0FF33836010BD121B1B6880 +:1061B000ECE700000A2938BF0A2170B504460D46F5 +:1061C0000A26601902F038FA02F020FA041BA542F0 +:1061D00003D8751C04462E46F3E70A2E04D9012085 +:1061E000BDE8704002F0F8BB70BD0000F8B5144B7C +:1061F0000D460A2A4FF00A07D96103F110018260A7 +:1062000038BF0A224160196914460160486018616C +:10621000A81802F001FA02F0F9F9431B0646A3425E +:1062200006D37C1C28192746354602F005FAF2E70A +:106230000A2F04D90120BDE8F84002F0CDBBF8BD1B +:1062400040460020F8B506460D4602F0DFF90F4A39 +:10625000134653F8107F9F4206D12A460146304626 +:10626000BDE8F840FFF7C2BFD169BB68441A2C19DA +:1062700028BF2C46A34202D92946FFF79BFF22469E +:1062800031460348BDE8F840FFF77EBF4046002096 +:1062900050460020C0E90323002310B45DF8044BEE +:1062A0004361FFF7CFBF000010B5194C2369984236 +:1062B0000DD08168D0E9003213605A609A680A44B0 +:1062C0009A60002303604FF0FF33A36110BD0268A2 +:1062D000234643F8102F53600022026022699A423D +:1062E00003D1BDE8104002F0A1B9936881680B4466 +:1062F000936002F08BF92269E1699268441AA24224 +:10630000E4D91144BDE81040091AFFF753BF00BF9C +:10631000404600202DE9F047DFF8BC8008F1100767 +:106320002C4ED8F8105002F071F9D8F81C40AA6829 +:10633000031B9A423ED814444FF00009D5E90032BD +:10634000C8F81C4013605A60C5F80090D8F81030A7 +:10635000B34201D102F06AF989F31188D5E903311A +:1063600028469847302383F311886B69002BD8D0D7 +:1063700002F04CF96A69A0EB040982464A450DD245 +:10638000022002F029FB0022D8F81030B34208D1D5 +:1063900051462846BDE8F047FFF728BF121A2244AD +:1063A000F2E712EB09092946384638BF4A46FFF79B +:1063B000EBFEB5E7D8F81030B34208D01444C8F863 +:1063C0001C00211AA960BDE8F047FFF7F3BEBDE845 +:1063D000F08700BF504600204046002010B560B94D +:1063E000074804790368053C9B6818BF0124984757 +:1063F00008B144F00404204610BD0124FBE700BFAF +:10640000A4360020FFF7EABF2DE9F047884617467B +:106410009A460446B0B90D4E3579052D05D00324B2 +:106420000DE0013D15F0FF050ED0326853463946A8 +:106430003046D2F814904246C8470028F1D1204691 +:10644000BDE8F0870424FAE70124F8E7A436002029 +:106450002DE9F047884617469A460446B0B90D4ED6 +:106460003579052D05D003240DE0013D15F0FF051C +:106470000ED03268534639463046D2F8189042461C +:10648000C8470028F1D12046BDE8F0870424FAE788 +:106490000124F8E7A436002037B50C46154670B93C +:1064A00051B101290BD10748694603681B6A984717 +:1064B00010B9019B04462B60204603B030BD042474 +:1064C000FAE700BFA436002000207047FEE7000076 +:1064D000704700004FF0FF30704700004B6843608A +:1064E0008B688360CB68C3600B6943614B6903624F +:1064F0008B6943620B6803607047000008B53A4B34 +:1065000040F2FF713948D3F888200A43C3F8882045 +:10651000D3F8882022F4FF6222F00702C3F8882013 +:10652000D3F88830324B1A6C0A431A649A6E0A43C5 +:106530009A66304A9B6E1146FFF7D0FF00F58060E7 +:1065400002F11C01FFF7CAFF00F5806002F138017B +:10655000FFF7C4FF00F5806002F15401FFF7BEFFB2 +:1065600000F5806002F17001FFF7B8FF00F5806070 +:1065700002F18C01FFF7B2FF00F5806002F1A80183 +:10658000FFF7ACFF00F5806002F1C401FFF7A6FF42 +:1065900000F5806002F1E001FFF7A0FF00F58060E8 +:1065A00002F1FC01FFF79AFF02F58C7100F58060A3 +:1065B000FFF794FF01F0CEFB0F4BD3F8902242F08F +:1065C0000102C3F89022D3F8942242F00102C3F8EA +:1065D00094220522C3F898204FF06052C3F89C2003 +:1065E000064AC3F8A02008BD004402580000025823 +:1065F000004502582493000800ED00E01F00080346 +:1066000008B501F0C5FDFFF7CFFC0D4BDA6B42F08A +:106610004002DA635A6E22F040025A665B6E094B02 +:106620001A6842F008021A601A6842F004021A60FE +:1066300000F032FD00F032FBBDE8084000F0B4B8D5 +:10664000004502580018024801207047002070479A +:106650007047000002290CD0032904D00129074803 +:1066600018BF00207047032A05D8054800EBC20078 +:106670007047044870470020704700BF2895000805 +:1066800054220020DC94000870B59AB005460846F4 +:10669000144601A900F0C2F801A8FBF73BFB431C1C +:1066A0000022C6B25B001046C5E900342370032304 +:1066B000023404F8013C01ABD1B202348E4201D85D +:1066C0001AB070BD13F8011B013204F8010C04F874 +:1066D000021CF1E708B5302383F311880348FFF764 +:1066E00099F8002383F3118808BD00BFF04800200B +:1066F00090F8803003F01F02012A07D190F8812022 +:106700000B2A03D10023C0E91D3315E003F0600319 +:10671000202B08D1B0F884302BB990F88120212AA1 +:1067200003D81F2A04D8FFF757B8222AEBD0FAE77C +:10673000034A426707228267C3670120704700BF90 +:106740004B22002007B5052917D8DFE801F01916FC +:1067500003191920302383F31188104A0121019075 +:10676000FFF700F9019802210D4AFFF7FBF80D48E9 +:10677000FFF71CF8002383F3118803B05DF804FBD6 +:10678000302383F311880748FEF7E6FFF2E7302352 +:1067900083F311880348FEF7FDFFEBE77C940008C4 +:1067A000A0940008F048002038B50C4D0C4C2A4647 +:1067B0000C4904F10800FFF767FF05F1CA0204F174 +:1067C00010000949FFF760FF05F5CA7204F11800CF +:1067D0000649BDE83840FFF757BF00BFC861002039 +:1067E0005422002058940008629400087194000814 +:1067F00070B5044608460D46FBF78CFAC6B2204633 +:10680000013403780BB9184670BD32462946FBF7B0 +:106810006DFA0028F3D10120F6E700002DE9F047DA +:1068200005460C46FBF776FA2B49C6B22846FFF719 +:10683000DFFF08B10736F6B228492846FFF7D8FF30 +:1068400008B11036F6B2632E0BD8DFF88C80DFF873 +:106850008C90234FDFF894A02E7846B92670BDE8BF +:10686000F08729462046BDE8F04702F02DBA252ED4 +:106870002ED1072241462846FBF738FA70B9194B4A +:10688000224603F10C0153F8040B8B4242F8040B2F +:10689000F9D11B8807350E341380DDE708224946FD +:1068A0002846FBF723FA98B9A21C0F4B197802323D +:1068B0000909C95D02F8041C13F8011B01F00F015E +:1068C0005345C95D02F8031CF0D118340835C3E7FD +:1068D000013504F8016BBFE7489500087194000882 +:1068E0005F9500085095000800E8F11F0CE8F11FC3 +:1068F000BFF34F8F044B1A695107FCD1D3F8102115 +:106900005207F8D1704700BF0020005208B50D4B68 +:106910001B78ABB9FFF7ECFF0B4BDA68D10704D556 +:106920000A4A5A6002F188325A60D3F80C21D20721 +:1069300006D5064AC3F8042102F18832C3F80421BF +:1069400008BD00BF266400200020005223016745D7 +:1069500008B5114B1B78F3B9104B1A69510703D5D1 +:10696000DA6842F04002DA60D3F81021520705D508 +:10697000D3F80C2142F04002C3F80C21FFF7B8FF16 +:10698000064BDA6842F00102DA60D3F80C2142F0DB +:106990000102C3F80C2108BD26640020002000522B +:1069A0000F289ABF00F58060400400207047000067 +:1069B0004FF4003070470000102070470F2808B5D2 +:1069C0000BD8FFF7EDFF00F500330268013204D168 +:1069D00004308342F9D1012008BD0020FCE700000B +:1069E0000F2838B505463FD8FFF782FF1F4CFFF749 +:1069F0008DFF4FF0FF3307286361C4F814311DD8B1 +:106A00002361FFF775FF030243F02403E360E368AB +:106A100043F08003E36023695A07FCD42846FFF75C +:106A200067FFFFF7BDFF4FF4003100F08FFA2846F3 +:106A3000FFF78EFFBDE83840FFF7C0BFC4F8103144 +:106A4000FFF756FFA0F108031B0243F02403C4F82C +:106A50000C31D4F80C3143F08003C4F80C31D4F875 +:106A600010315B07FBD4D9E7002038BD002000526D +:106A70002DE9F84F05460C46104645EA0203DE06AE +:106A800002D00020BDE8F88F20F01F00DFF8BCB076 +:106A9000DFF8BCA0FFF73AFF04EB0008444503D140 +:106AA0000120FFF755FFEDE720222946204602F09E +:106AB0008FF810B920352034F0E72B4605F120027D +:106AC0001F68791CDDD104339A42F9D105F178436E +:106AD0001B481C4EB3F5801F1B4B38BF184603F1F3 +:106AE000F80332BFD946D1461E46FFF701FF0760C3 +:106AF000A5EB040C336804F11C0143F0020333607E +:106B0000231FD9F8007017F00507FAD153F8042FA6 +:106B10008B424CF80320F4D1BFF34F8FFFF7E8FE10 +:106B20004FF0FF332022214603602846336823F0CC +:106B30000203336002F04CF80028BBD03846B0E7BF +:106B4000142100520C200052142000521020005238 +:106B50001021005210B5084C237828B11BB9FFF75B +:106B6000D5FE0123237010BD002BFCD02070BDE8A2 +:106B70001040FFF7EDBE00BF266400202DE9F04F66 +:106B80000D4685B0814658B111F00D0614BF202284 +:106B9000082211F00803019304D0431E034269D078 +:106BA000002435E0002E37D009F11F0121F01F0924 +:106BB0004FF00108314F05F00403DFF8CCA005EADF +:106BC000080BBBF1000F32D07869C0072FD408F151 +:106BD00001080C37B8F1060FF3D19EB9284D49468C +:106BE000A819019201F078FD0446002839D1203619 +:106BF000019AA02EF3D1494601F06EFD044600280B +:106C00002FD1019A49461F4801F066FD044660BB3A +:106C1000204605B0BDE8F08F0029C9D101462846BD +:106C2000029201F059FD0446D8B9029AC0E713B1A7 +:106C300078694107CBD5AC0702D578698007C6D5FE +:106C4000019911B178690107C1D549460AEB48108D +:106C5000CDE9022301F040FD0446DDE902230028CE +:106C6000B5D04A460021204601E04A460021FBF704 +:106C700059F8CDE70246002E96D199E770950008A5 +:106C80006864002028640020486400200021FFF789 +:106C900075BF00000121FFF771BF000070B5144DF2 +:106CA0000124144E40F2FF3200210120FBF73AF894 +:106CB00006EB441001342A6955F80C1F01F0F8FC6A +:106CC000062CF5D137254FF4C0542046FFF7E2FFDC +:106CD000014628B122460848BDE8704001F0E8BCF2 +:106CE000C4EBC404013D4FEAD404EED170BD00BF33 +:106CF0007095000848640020286400200421FFF7F4 +:106D00003DBF00004843FFF7C1BF000008B101F0DC +:106D100055BD7047B0F5805F10B5044607D8FFF742 +:106D2000EDFF28B92046BDE81040FFF7AFBF0020B7 +:106D300010BD0000FFF7EABF08B501F055FE034A99 +:106D4000D2E90032C01842EB010108BD08650020FD +:106D5000434BD3E900232DE9F34113437CD0FFF7E4 +:106D6000EBFF404A00230027F9F766FB06460D4675 +:106D70003D4A0023F9F760FB0023144630462946BC +:106D8000394AF9F759FB4FF461613C23ADF80170C2 +:106D9000B4FBF1F5B4FBF3F601FB154103FB16461A +:106DA0004624B1FBF3F1314BF6B28DF80040984226 +:106DB0003CD84FF0640C4FF4C87EA30704F26C7209 +:106DC00025D1B2FBFCF30CFB132313BBB2FBFEF388 +:106DD0000EFB1322B2FA82F35B0903F26D18621CF8 +:106DE0008045D2B217D90FB18DF800400022204C57 +:106DF0004FF00C0C17460CFB0343D4B2013213F8CE +:106E000004C084450CD8A0EB0C000127F5E7002353 +:106E1000E3E70123E1E7A0EB080014460127CCE7F4 +:106E20000FB18DF80140431C8DF802309DF8010030 +:106E3000431C9DF800005038400640EA43509DF83E +:106E4000023040EA034040EA560040EAC52040EAEA +:106E5000411002B0BDE8F0814FF40410F9E700BF23 +:106E60000865002040420F008051010090230B0074 +:106E7000B89500080244074BD2B210B5904200D139 +:106E800010BD441C00B253F8200041F8040BE0B2DE +:106E9000F4E700BF504000580E4B30B51C6F24047F +:106EA00005D41C6F1C671C6F44F400441C670A4C1B +:106EB00002442368D2B243F480732360074B9042AC +:106EC00000D130BD441C51F8045B00B243F820509F +:106ED000E0B2F4E70044025800480258504000581D +:106EE00007B5012201A90020FFF7C4FF019803B0F4 +:106EF0005DF804FB13B50446FFF7F2FFA04205D08E +:106F0000012201A900200194FFF7C6FF02B010BDC5 +:106F100010B56424013C4FF47A70FFF7E7F814F0E1 +:106F2000FF04F7D1084B4FF0807214249A6103F5E7 +:106F3000805308229A61013C4FF47A70FFF7D6F82B +:106F400014F0FF04F7D110BD000002580144BFF354 +:106F50004F8F064B884204D3BFF34F8FBFF36F8F21 +:106F60007047C3F85C022030F4E700BF00ED00E09A +:106F70000144BFF34F8F064B884204D3BFF34F8FBA +:106F8000BFF36F8F7047C3F870022030F4E700BF83 +:106F900000ED00E070B5054616460C4601201021B4 +:106FA000FFF7B0FE286046733CB1204636B1FFF7CC +:106FB000A5FE2B68186000B19C6070BDFFF76AFEEB +:106FC000F7E7000070B50E461546044600B30B689F +:106FD00043608368934210D213B10068FFF796FEB6 +:106FE000637B28462BB1FFF789FE206020B9A060A3 +:106FF00070BDFFF74FFEF8E7A560206805F11F019F +:10700000306021F01F01FFF7A1FF01202073EFE79F +:107010000120EDE710B5044640B10068884205D173 +:10702000606808B1FAF758FE0023237310BD000012 +:1070300070B50E461546044620B383689A4210D9AF +:1070400013B10068FFF762FE637B28462BB1FFF7A0 +:1070500055FE206020B9A06070BDFFF71BFEF8E769 +:10706000A560316819B12A462068FAF735FE206814 +:1070700005F11F01306021F01F01FFF779FF0120AA +:107080002073E9E70120E7E720B103688B4204BFE2 +:107090000023037370470000034B1A681AB9034AB0 +:1070A000D2F8D0241A6070471065002000400258C2 +:1070B00008B5FFF7F1FF024B1868C0F3806008BD08 +:1070C0001065002070B5BFF34F8FBFF36F8F1A4A62 +:1070D0000021C2F85012BFF34F8FBFF36F8F536977 +:1070E00043F400335361BFF34F8FBFF36F8FC2F888 +:1070F0008410BFF34F8FD2F8803043F6E074C3F3AF +:10710000C900C3F34E335B0103EA0406014646EAB5 +:1071100081750139C2F86052F9D2203B13F1200F7A +:10712000F2D1BFF34F8F536943F480335361BFF300 +:107130004F8FBFF36F8F70BD00ED00E0FEE70000E2 +:10714000214B2248224A70B5904237D3214BC11EB1 +:10715000DA1C121A22F003028B4238BF00220021EF +:10716000FAF7E0FD1C4A0023C2F88430BFF34F8FCA +:10717000D2F8803043F6E074C3F3C900C3F34E3352 +:107180005B0103EA0406014646EA81750139C2F84B +:107190006C52F9D2203B13F1200FF2D1BFF34F8F85 +:1071A000BFF36F8FBFF34F8FBFF36F8F0023C2F812 +:1071B0005032BFF34F8FBFF36F8F70BD53F8041B76 +:1071C00040F8041BC0E700BF20970008206700209C +:1071D000206700202067002000ED00E0054B996B40 +:1071E00021EA000199631A6E22EA00021A661B6EF8 +:1071F000704700BF0045025870B5D0E92443002213 +:107200004FF0FF359E6804EB42135101D3F800099B +:10721000002805DAD3F8000940F08040C3F80009DF +:10722000D3F8000B002805DAD3F8000B40F08040BB +:10723000C3F8000B013263189642C3F80859C3F82B +:10724000085BE0D24FF00113C4F81C3870BD000099 +:10725000890141F02001016103699B06FCD41220E1 +:10726000FEF7D8BE10B50A4C2046FEF759FB094B75 +:10727000C4F89030084BC4F89430084C2046FEF710 +:107280004FFB074BC4F89030064BC4F8943010BD48 +:107290001465002000000840F4950008B065002047 +:1072A000000004400096000870B503780546012BE5 +:1072B00058D13F4BD0F89040984254D13D4B0E21CD +:1072C00065209A6B42F000629A631A6E42F0006287 +:1072D0001A661B6E384BD3F8802042F00062C3F868 +:1072E0008020D3F8802022F00062C3F88020D3F8F9 +:1072F000803000F037FF314BE360314BC4F8003889 +:107300000023D5F89060C4F8003EC02323604FF4FA +:107310000413A3633369002BFCDA01230C203361CF +:10732000FEF778FE3369DB07FCD41220FEF772FE0D +:107330003369002BFCDA00262846A660FFF75CFFC5 +:107340006B68C4F81068DB68C4F81468C4F81C687B +:1073500063BB1C4BA3614FF0FF336361A36843F031 +:107360000103A36070BD184B9842C9D1114B4FF077 +:1073700080609A6B42F000729A631A6E42F000725B +:107380001A661B6E0C4BD3F8802042F00072C3F8D3 +:107390008020D3F8802022F00072C3F88020D3F838 +:1073A0008030FFF71BFF0E214D20A2E7074BD1E7EE +:1073B0001465002000450258004402584014004063 +:1073C00003002002003C30C0B0650020083C30C003 +:1073D000F8B5D0F89040054600214FF000662046F1 +:1073E000FFF736FFD5F8941000234FF001128F6895 +:1073F0004FF0FF30C4F83438C4F81C2804EB4312B3 +:1074000001339F42C2F80069C2F8006BC2F8080954 +:10741000C2F8080BF2D20B68D5F89020C5F8983066 +:10742000636210231361166916F01006FBD1122057 +:10743000FEF7F0FDD4F8003823F4FE63C4F80038FA +:10744000A36943F4402343F01003A3610923C4F864 +:107450001038C4F814380B4BEB604FF0C043C4F83D +:10746000103B094BC4F8003BC4F81069C4F800395C +:10747000D5F8983003F1100243F48013C5F8982032 +:10748000A362F8BDD095000840800010D0F890208D +:1074900090F88A10D2F8003823F4FE6343EA01130F +:1074A000C2F80038704700002DE9F84300EB810373 +:1074B000D0F890500C468046DA680FFA81F94801FE +:1074C000166806F00306731E022B05EB41134FF0FE +:1074D000000194BFB604384EC3F8101B4FF00101F1 +:1074E00004F1100398BF06F1805601FA03F3916985 +:1074F00098BF06F5004600293AD0578A04F1580192 +:10750000374349016F50D5F81C180B430021C5F8CB +:107510001C382B180127C3F81019A7405369611EA6 +:107520009BB3138A928B9B08012A88BF5343D8F8D8 +:107530009820981842EA034301F140022146C8F816 +:107540009800284605EB82025360FFF781FE08EBA6 +:107550008900C3681B8A43EA845348341E4364018C +:107560002E51D5F81C381F43C5F81C78BDE8F883A8 +:1075700005EB4917D7F8001B21F40041C7F8001BA1 +:10758000D5F81C1821EA0303C0E704F13F030B4AB6 +:107590002846214605EB83035A60FFF759FE05EBA9 +:1075A0004910D0F8003923F40043C0F80039D5F869 +:1075B0001C3823EA0707D7E7008000100004000208 +:1075C000D0F894201268C0F89820FFF715BE00008C +:1075D0005831D0F8903049015B5813F4004004D082 +:1075E00013F4001F0CBF0220012070474831D0F86F +:1075F000903049015B5813F4004004D013F4001F8D +:107600000CBF02200120704700EB8101CB68196A92 +:107610000B6813604B6853607047000000EB8103F8 +:1076200030B5DD68AA691368D36019B9402B84BFEF +:10763000402313606B8A1468D0F890201C4402EB3E +:107640004110013C09B2B4FBF3F46343033323F06C +:10765000030343EAC44343F0C043C0F8103B2B6824 +:1076600003F00303012B0ED1D2F8083802EB4110CE +:1076700013F4807FD0F8003B14BF43F0805343F0F5 +:107680000053C0F8003B02EB4112D2F8003B43F03C +:107690000443C2F8003B30BD2DE9F041D0F89060C2 +:1076A00005460C4606EB4113D3F8087B3A07C3F8AE +:1076B000087B08D5D6F814381B0704D500EB8103E6 +:1076C000DB685B689847FA071FD5D6F81438DB07E4 +:1076D0001BD505EB8403D968CCB98B69488A5A68F5 +:1076E000B2FBF0F600FB16228AB91868DA689042FD +:1076F0000DD2121AC3E90024302383F311882146E6 +:107700002846FFF78BFF84F31188BDE8F081012341 +:1077100003FA04F26B8923EA02036B81CB68002B26 +:10772000F3D021462846BDE8F041184700EB81031D +:107730004A0170B5DD68D0F890306C692668E66063 +:1077400056BB1A444FF40020C2F810092A6802F010 +:107750000302012A0AB20ED1D3F8080803EB42143F +:1077600010F4807FD4F8000914BF40F0805040F03E +:107770000050C4F8000903EB4212D2F8000940F0AF +:107780000440C2F800090122D3F8340802FA01F1DA +:107790000143C3F8341870BD19B9402E84BF40208E +:1077A000206020681A442E8A8419013CB4FBF6F448 +:1077B00040EAC44040F00050C6E700002DE9F8431D +:1077C000D0F8906005460C464F0106EB4113D3F804 +:1077D000088918F0010FC3F808891CD0D6F81038B2 +:1077E000DB0718D500EB8103D3F80CC0DCF81430AC +:1077F000D3F800E0DA68964530D2A2EB0E024FF0E3 +:1078000000091A60C3F80490302383F31188FFF74E +:107810008DFF89F3118818F0800F1DD0D6F8343809 +:107820000126A640334217D005EB84030134D5F876 +:107830009050D3F80CC0E4B22F44DCF8142005EBD0 +:107840000434D2F800E05168714514D3D5F83438C7 +:1078500023EA0606C5F83468BDE8F883012303FA75 +:1078600001F2038923EA02030381DCF80830002BCC +:10787000D1D09847CFE7AEEB0103BCF810008342AC +:1078800028BF0346D7F8180980B2B3EB800FE3D8BE +:107890009068A0F1040959F8048FC4F80080A0EBA7 +:1078A00009089844B8F1040FF5D818440B449060C7 +:1078B0005360C8E72DE9F84FD0F8905004466E6940 +:1078C000AB691E4016F480586E6103D0BDE8F84FD6 +:1078D000FEF796B8002E12DAD5F8003E9B0705D0C9 +:1078E000D5F8003E23F00303C5F8003ED5F8043870 +:1078F000204623F00103C5F80438FEF7AFF837053A +:1079000005D52046FFF778FC2046FEF795F8B00431 +:107910000CD5D5F8083813F0060FEB6823F4705334 +:107920000CBF43F4105343F4A053EB6031071BD555 +:107930006368DB681BB9AB6923F00803AB6123788C +:10794000052B0CD1D5F8003E9A0705D0D5F8003E9E +:1079500023F00303C5F8003E2046FEF77FF8636876 +:10796000DB680BB120469847F30200F1BA80B702FA +:1079700026D5D4F8909000274FF0010A09EB471262 +:10798000D2F8003B03F44023B3F5802F11D1D2F895 +:10799000003B002B0DDA62890AFA07F322EA03039F +:1079A000638104EB8703DB68DB6813B1394620464B +:1079B00098470137D4F89430FFB29B689F42DDD9D5 +:1079C000F00619D5D4F89000026AC2F30A1702F043 +:1079D0000F0302F4F012B2F5802F00F0CA80B2F566 +:1079E000402F09D104EB8303002200F58050DB68AF +:1079F0001B6A974240F0B0803003D5F8185835D54F +:107A0000E90303D500212046FFF746FEAA0303D56C +:107A100001212046FFF740FE6B0303D502212046DB +:107A2000FFF73AFE2F0303D503212046FFF734FE6C +:107A3000E80203D504212046FFF72EFEA90203D554 +:107A400005212046FFF728FE6A0203D506212046BD +:107A5000FFF722FE2B0203D507212046FFF71CFE6D +:107A6000EF0103D508212046FFF716FE700340F111 +:107A7000A780E90703D500212046FFF79FFEAA074C +:107A800003D501212046FFF799FE6B0703D502219C +:107A90002046FFF793FE2F0703D503212046FFF76B +:107AA0008DFEEE0603D504212046FFF787FEA806CB +:107AB00003D505212046FFF781FE690603D506217F +:107AC0002046FFF77BFE2A0603D507212046FFF755 +:107AD00075FEEB0574D520460821BDE8F84FFFF789 +:107AE0006DBED4F890904FF0000B4FF0010AD4F81F +:107AF00094305FFA8BF79B689F423FF638AF09EBF3 +:107B00004713D3F8002902F44022B2F5802F20D188 +:107B1000D3F80029002A1CDAD3F8002942F0904259 +:107B2000C3F80029D3F80029002AFBDB3946D4F832 +:107B30009000FFF78DFB22890AFA07F322EA03037C +:107B4000238104EB8703DB689B6813B13946204629 +:107B500098470BF1010BCAE7910701D1D0F80080DB +:107B6000072A02F101029CBF03F8018B4FEA182893 +:107B70003FE704EB830300F58050DA68D2F818C0C1 +:107B8000DCF80820DCE9001CA1EB0C0C00218F4282 +:107B900008D1DB689B699A683A449A605A683A440B +:107BA0005A6029E711F0030F01D1D0F800808C450D +:107BB00001F1010184BF02F8018B4FEA1828E6E7C2 +:107BC000BDE8F88F08B50348FFF774FEBDE808402C +:107BD00000F068BF1465002008B50348FFF76AFE8F +:107BE000BDE8084000F05EBFB0650020D0F89030DE +:107BF00003EB4111D1F8003B43F40013C1F8003B03 +:107C000070470000D0F8903003EB4111D1F80039F3 +:107C100043F40013C1F8003970470000D0F89030E9 +:107C200003EB4111D1F8003B23F40013C1F8003BF2 +:107C300070470000D0F8903003EB4111D1F80039C3 +:107C400023F40013C1F8003970470000044BDA6BCD +:107C50000243DA635A6E104358665B6E704700BF8A +:107C6000004502583A4B4FF0FF31D3F8802062F0C4 +:107C70000042C3F88020D3F8802002F00042C3F80D +:107C80008020D3F88020D3F88420C3F88410D3F860 +:107C900084200022C3F88420D3F88400D86F40F0F9 +:107CA000FF4040F4FF0040F4DF4040F07F00D86721 +:107CB000D86F20F0FF4020F4FF0020F4DF4020F0D8 +:107CC0007F00D867D86FD3F888006FEA40506FEA1A +:107CD0005050C3F88800D3F88800C0F30A00C3F8F6 +:107CE0008800D3F88800D3F89000C3F89010D3F838 +:107CF0009000C3F89020D3F89000D3F89400C3F814 +:107D00009410D3F89400C3F89420D3F89400D3F8D7 +:107D10009800C3F89810D3F89800C3F89820D3F8C7 +:107D20009800D3F88C00C3F88C10D3F88C00C3F8FB +:107D30008C20D3F88C00D3F89C00C3F89C10D3F8A7 +:107D40009C10C3F89C20D3F89C3000F0D3B900BF3E +:107D50000044025808B50122504BC3F80821504B8B +:107D60005A6D42F002025A65DA6F42F00202DA6797 +:107D70000422DB6F4B4BDA605A689104FCD54A4A07 +:107D80001A6001229A60494ADA6000221A614FF4AF +:107D900040429A61434B9A699204FCD51A6842F4B6 +:107DA00080721A60424B1A6F12F4407F04D04FF475 +:107DB00080321A6700221A671A6842F001021A60BC +:107DC0003B4B1A685007FCD500221A611A6912F061 +:107DD0003802FBD1012119604FF0804159605A6788 +:107DE000344ADA62344A1A611A6842F480321A60FC +:107DF0002F4B1A689103FCD51A6842F480521A601E +:107E00001A689204FCD52D4A2D499A6200225A63C1 +:107E1000196301F57C01DA6301F5E77199635A642E +:107E2000284A1A64284ADA621A6842F0A8521A608C +:107E30001F4B1A6802F02852B2F1285FF9D148228C +:107E40009A614FF48862DA6140221A621F4ADA644A +:107E50001F4A1A651F4A5A651F4A9A6532231F4AEC +:107E60001360136803F00F03022BFAD1104A136951 +:107E700043F003031361136903F03803182BFAD19D +:107E80004FF00050FFF7E2FE4FF08040FFF7DEFEBC +:107E90004FF00040BDE80840FFF7D8BE0080005119 +:107EA000004502580048025800C000F004000001DC +:107EB000004402580000FF01008890083220600052 +:107EC00063020901470E0508DD0BBF0120000020F9 +:107ED000000001100910E000000101100020005214 +:107EE0004FF0B04208B5D2F8883003F00103C2F871 +:107EF000883023B1044A13680BB150689847BDE835 +:107F0000084000F0CFBD00BF986600204FF0B0429F +:107F100008B5D2F8883003F00203C2F8883023B1E4 +:107F2000044A93680BB1D0689847BDE8084000F058 +:107F3000B9BD00BF986600204FF0B04208B5D2F836 +:107F4000883003F00403C2F8883023B1044A13696F +:107F50000BB150699847BDE8084000F0A3BD00BFD1 +:107F6000986600204FF0B04208B5D2F8883003F090 +:107F70000803C2F8883023B1044A93690BB1D06971 +:107F80009847BDE8084000F08DBD00BF986600200E +:107F90004FF0B04208B5D2F8883003F01003C2F8B1 +:107FA000883023B1044A136A0BB1506A9847BDE880 +:107FB000084000F077BD00BF986600204FF0B04346 +:107FC00010B5D3F8884004F47872C3F88820A3066B +:107FD00004D5124A936A0BB1D06A9847600604D55B +:107FE0000E4A136B0BB1506B9847210604D50B4A10 +:107FF000936B0BB1D06B9847E20504D5074A136C1D +:108000000BB1506C9847A30504D5044A936C0BB18F +:10801000D06C9847BDE8104000F044BD9866002041 +:108020004FF0B04310B5D3F8884004F47C42C3F855 +:108030008820620504D5164A136D0BB1506D984720 +:10804000230504D5124A936D0BB1D06D9847E00417 +:1080500004D50F4A136E0BB1506E9847A10404D596 +:108060000B4A936E0BB1D06E9847620404D5084A50 +:10807000136F0BB1506F9847230404D5044A936FD4 +:108080000BB1D06F9847BDE8104000F00BBD00BFAA +:108090009866002008B50348FCF72CFDBDE80840B1 +:1080A00000F000BDA436002008B50348FCF722FE0E +:1080B000BDE8084000F0F6BCFC38002008B50348D5 +:1080C000FCF718FEBDE8084000F0ECBC6839002061 +:1080D00008B50348FCF70EFEBDE8084000F0E2BC1E +:1080E000D439002008B500F039FDBDE8084000F0A3 +:1080F000D9BC0000062108B5084600F033F8062177 +:10810000072000F02FF80621082000F02BF80621A8 +:10811000092000F027F806210A2000F023F80621A4 +:10812000172000F01FF80621282000F01BF8092175 +:108130007A2000F017F80921312000F013F8072108 +:10814000322000F00FF80C21262000F00BF80C2153 +:10815000272000F007F80C215220BDE8084000F06D +:1081600001B80000090100F16043012203F56143F9 +:10817000C9B283F8001300F01F039A4043099B0023 +:1081800003F1604303F56143C3F880211A6070472F +:1081900008B5FFF767FD00F0AFFCFDF7E5F9FDF767 +:1081A00083F9FDF7BBFBFDF78DFAFEF751FABDE849 +:1081B000084000F029BA000030B50433039C017276 +:1081C000002104FB0325C160C0E90653049B03633F +:1081D000059BC0E90000C0E90422C0E90842C0E9EB +:1081E0000A11436330BD00000022416AC260C0E949 +:1081F0000411C0E90A226FF00101FDF7B7BF0000CA +:10820000D0E90432934201D1C2680AB9181D7047FF +:1082100000207047036919600021C2680132C26002 +:10822000C269134482699342036124BF436A0361B4 +:10823000FDF790BF38B504460D46E3683BB162696F +:108240000020131D1268A3621344E36207E0237A3F +:1082500033B929462046FDF76DFF0028EDDA38BD19 +:108260006FF00100FBE70000C368C269013BC36017 +:108270004369134482699342436124BF436A436163 +:1082800000238362036B03B11847704770B5302336 +:10829000044683F31188866A3EB9FFF7CBFF054693 +:1082A00018B186F31188284670BDA36AE26A13F8F4 +:1082B000015B9342A36202D32046FFF7D5FF002360 +:1082C00083F31188EFE700002DE9F84F04460E46CE +:1082D000174698464FF0300989F311880025AA46C1 +:1082E000D4F828B0BBF1000F09D141462046FFF772 +:1082F000A1FF20B18BF311882846BDE8F88FD4E99F +:108300000A12A7EB050B521A934528BF9346BBF1FF +:10831000400F1BD9334601F1400251F8040B914242 +:1083200043F8040BF9D1A36A403640354033A362C9 +:10833000D4E90A239A4202D32046FFF795FF8AF335 +:108340001188BD42D8D289F31188C9E730465A4610 +:10835000F9F7C2FCA36A5E445D445B44A362E7E7AD +:1083600010B5029C0433017203FB0421C460C0E910 +:1083700006130023C0E90A33039B0363049BC0E98F +:108380000000C0E90422C0E90842436310BD0000B8 +:10839000026A6FF00101C260426AC0E90422002251 +:1083A000C0E90A22FDF7E2BED0E904239A4201D1D6 +:1083B000C26822B9184650F8043B0B60704700238E +:1083C0001846FAE7C3680021C2690133C3604369F4 +:1083D000134482699342436124BF436A4361FDF7BA +:1083E000B9BE000038B504460D46E3683BB12369C9 +:1083F00000201A1DA262E2691344E36207E0237AB7 +:1084000033B929462046FDF795FE0028EDDA38BD40 +:108410006FF00100FBE7000003691960C268013AD0 +:10842000C260C269134482699342036124BF436AF4 +:10843000036100238362036B03B118477047000098 +:1084400070B530230D460446114683F31188866AC1 +:108450002EB9FFF7C7FF10B186F3118870BDA36A6C +:108460001D70A36AE26A01339342A36204D3E169F7 +:1084700020460439FFF7D0FF002080F31188EDE794 +:108480002DE9F84F04460D46904699464FF0300AC4 +:108490008AF311880026B346A76A4FB94946204699 +:1084A000FFF7A0FF20B187F311883046BDE8F88FB1 +:1084B000D4E90A073A1AA8EB0607974228BF1746DD +:1084C000402F1BD905F1400355F8042B9D4240F87D +:1084D000042BF9D1A36A40364033A362D4E90A23BE +:1084E0009A4204D3E16920460439FFF795FF8BF3E4 +:1084F00011884645D9D28AF31188CDE729463A46F4 +:10850000F9F7EAFBA36A3D443E443B44A362E5E736 +:10851000D0E904239A4217D1C3689BB1836A8BB117 +:10852000043B9B1A0ED01360C368013BC360C36950 +:108530001A4483699A42026124BF436A036100239B +:1085400083620123184670470023FBE701F01F03F5 +:10855000F0B502F01F0456095A1C0123B6EB511F57 +:1085600050F8265003FA02F34FEA511703F1FF3394 +:108570003DBF50F82720C4F12000134003EA050056 +:108580003BBF03FA00F225FA04F0E0401043F0BDCF +:1085900070B57E227F210546FFF7D8FF18B101286C +:1085A00019D0002070BD3E2249212846FFF7CEFF9A +:1085B0002F22044631212846FFF7C8FF0646013422 +:1085C0005022023653212846B440FFF7BFFF093836 +:1085D00004FA00F0E6E7302245212846FFF7B6FF0F +:1085E00001308002DEE7000090F8D63090F8D72006 +:1085F0001B0403EB026390F8D42090F8D5001344D9 +:1086000003EB00207047000000F084BA014B586A69 +:10861000704700BF000C0040034B002258631A61F2 +:108620000222DA60704700BF000C0040014B0022BC +:10863000DA607047000C0040014B5863704700BF80 +:10864000000C0040024B034A1A60034A5A6070470C +:10865000646600202067002000000220074B49428A +:1086600010B55C68201A08401968821A8A4203D340 +:10867000A24201D85A6010BD0020FCE764660020C9 +:1086800008B5302383F31188FFF7E8FF002383F355 +:10869000118808BD0448054B03600023C0E901337D +:1086A0000C3000F017B900BF6C660020818600080E +:1086B000CB1D083A23F00703591A521A10B4D208F6 +:1086C0000024C0E9004384600C301C605A605DF8EF +:1086D000044B00F0FFB800002DE9F74F364FCD1DD9 +:1086E0008846002818BF0746082A4FEAD50538BF34 +:1086F000082207F10C003C1D9146019000F02CF976 +:10870000019809F10701C9F1000E2246246864B9F5 +:1087100000F02CF93B68CBB308224946E8009847A3 +:10872000044698B340E9027830E004EB010CD4F839 +:1087300004A00CEA0E0C0AF10106ACF1080304EBEC +:10874000C6069E42E1D9A6EB0C0CB5EBEC0F4FEA46 +:10875000EC0BDAD89C421DD204F10802AB45A3EB26 +:1087600002024FEAE202626009D9691CED4303EBA1 +:10877000C1025D445560256843F8315022601C46B3 +:10878000C3F8048044F8087B00F0F0F8204603B0FA +:10879000BDE8F08FAA45216802D111602346EEE7BB +:1087A000013504EBC50344F8351003F10801761ACE +:1087B000F6105E601360F1E76C66002073B5044646 +:1087C000A0F1080550F8080C54F8043C061D0C30C4 +:1087D00007330190DB0844F8043C00F0BDF8334651 +:1087E00001989E421A6801D0AB4228D20AB1954244 +:1087F00025D244F8082C54F8042C1D60013254F89A +:10880000081C05EBC206B14206D14E68324444F85A +:10881000042C0A6844F8082C5E68711C03EBC10143 +:108820008D4207D154F8042C013232445A6054F876 +:10883000082C1A6002B0BDE8704000F097B81346EB +:10884000CFE70000FEE7000070B51E4B0025044690 +:1088500086B058600E460563816300F0FBF804F1B2 +:108860002803A5606563C4E90A3304F11003C4E971 +:1088700004334FF0FF33C4E90044C4E90635FFF781 +:10888000C5FE2B46024604F13C012046C4E90823FC +:1088900080230D4A6567FDF7C7FB7368E0600B4AEC +:1088A00003620123009280F824306846F268019246 +:1088B0003269CDE90223064BCDE90435FDF7E8FB2B +:1088C00006B070BDE8480020149600080C96000819 +:1088D000458800080023C0E90000836003617047F9 +:1088E00070B51C4B05468468DE685CB3B44213D196 +:1088F00003690133036170BDA36094F8243083B130 +:10890000062B15D1A06A2146D4E9003213605A60C3 +:10891000FDF7DCFAA36A9C68B368A2689A42EBD3BD +:1089200006E0D4E90032204613605A60FDF7DEFA13 +:1089300028463146FDF7CAFAB5620620BDE8704008 +:10894000FDF7D6BA0369866001330361336BC360F8 +:108950003063D0E74046002008B5302383F3118808 +:10896000FFF7BEFF002383F3118808BD194BD968B8 +:1089700083688B4210B520D1302383F311880269BC +:10898000013A0261B2B90468C368A0420B631ED009 +:108990004A6B9BB901238A60036103681A6802600D +:1089A00050601A6B8360C26018631846FDF79EFA28 +:1089B000FDF7EEFA002383F3118810BD1C68A34273 +:1089C00003D0A468A24238BF2246DB68E1E7826098 +:1089D000F0E700BF40460020024A536B1843506343 +:1089E000704700BF4046002070B5104E82B0FDF7C2 +:1089F000F7FA0546FFF70AFE3268034690423360F5 +:108A000037BF0B4A0A495168146836BF0131D1E9B2 +:108A1000004151600419284641F100010191FDF720 +:108A2000E9FA2046019902B070BD00BF8C660020B3 +:108A300090660020EFF30983054968334A6B22F002 +:108A400001024A6383F30988002383F31188704786 +:108A500000EF00E0302080F3118862B60D4B0E4A23 +:108A6000D96821F4E0610904090C0A430B49DA6072 +:108A7000D3F8FC2042F08072C3F8FC20084AC2F808 +:108A8000B01F116841F0010111602022DA7783F8EC +:108A90002200704700ED00E00003FA0555CEACC59A +:108AA000001000E0302310B583F311880E4B5B6893 +:108AB00013F4006314D0F1EE103AEFF309844FF091 +:108AC0008073683CE361094BDB6B236684F30988A0 +:108AD000FDF73CFA10B1064BA36110BD054BFBE757 +:108AE00083F31188F9E700BF00ED00E000EF00E03C +:108AF0002F040008320400080023054A19460133F8 +:108B0000102BC2E9001102F10802F8D1704700BF32 +:108B1000986600200E4B9A6C42F008029A641A6F15 +:108B200042F008021A670B4A1B6FD36B43F008032D +:108B3000D363C722084B9A624FF0FF32DA620022F9 +:108B40009A615A63DA605A6001225A611A6070476A +:108B5000004502580010005C000C0040094A08B5AE +:108B60001169D3680B40D9B29B076FEA010111610B +:108B700007D5302383F31188FDF730FA002383F300 +:108B8000118808BD000C0040FEF7C0B8012838BFAE +:108B9000012010B504462046FEF778F830B900F001 +:108BA00007F808B900F00CF88047F4E710BD0000A2 +:108BB000024B1868BFF35B8F704700BF1867002037 +:108BC00008B5062000F056F80120FDF77FFC0000F4 +:108BD00010B501390244904201D1002005E003782C +:108BE00011F8014FA34201D0181B10BD0130F2E76C +:108BF000884210B501EB020402D98442234607D80B +:108C0000431EA14208D011F8012B03F8012FF8E709 +:108C1000024401468A4200D110BD13F8014D02F80A +:108C2000014DF7E71F2938B504460D4604D9162330 +:108C300003604FF0FF3038BD426C12B152F8213062 +:108C40004BB9204600F030F82A4601462046BDE8E0 +:108C5000384000F017B8012B0AD0591C03D1162355 +:108C600003600120E7E7002442F8254028469847A2 +:108C70000020E0E7024B01461868FFF7D3BF00BFB2 +:108C80007422002038B5074D0023044608461146DB +:108C90002B60FDF71FFC431C02D12B6803B123603E +:108CA00038BD00BF1C670020FDF70EBCC9B20346EB +:108CB00010F8012B1AB18A42F9D1184670470029E1 +:108CC00018BF0023F9E70000034611F8012B03F851 +:108CD000012B002AF9D1704710B50139034632B192 +:108CE00011F8014F03F8014B013A002CF7D11A4457 +:108CF0000021934200D110BD03F8011BF9E70000E9 +:108D00004D4435002D2D0A002F6172647570696C19 +:108D10006F742E6162696E002F6172647570696C88 +:108D20006F742D7665726966792E6162696E002FA7 +:108D30006172647570696C6F742D666C6173682EF6 +:108D40006162696E002F6172647570696C6F742D59 +:108D5000666C61736865642E6162696E0000000074 +:108D60000000000000000000F10E00088D0F000858 +:108D70003D110008C50F0008850F00080000000025 +:108D800000000000ED0E0008990F000875110008A2 +:108D9000E90E0008F50E000853544D333248373FB2 +:108DA0003F3F0053544D3332483733782F373278B2 +:108DB0000053544D3332483734332F3735332F3740 +:108DC0003530000001105A000310590001205800EE +:108DD000032056002F0000005375636365737366AC +:108DE000756C6C79206D6F756E74656420534443A7 +:108DF0006172642028736C6F77646F776E3D2575A0 +:108E0000290A0000EB769045584641542020200066 +:108E10004641543332202020000000002A3A3C3ED4 +:108E20007C223F7F002B2C3B3D5B5D004355454141 +:108E30004141414345454549494941414592924F48 +:108E40004F4F5555594F554F9C4F9E9F41494F5538 +:108E5000A5A5A6A7A8A9AAABACADAEAFB0B1B2B359 +:108E6000B4414141B8B9BABBBCBDBEBFC0C1C2C3A9 +:108E7000C4C54141C8C9CACBCCCDCECFD1D145455F +:108E80004549494949D9DADBDCDD49DF4FE14F4F3C +:108E90004F4FE6E8E85555555959EEEFF0F1F2F32A +:108EA000F4F5F6F7F8F9FAFBFCFDFEFF0103050700 +:108EB000090E10121416181C1E00000061001A037F +:108EC000E0001703F8000703FF000100780100012C +:108ED000300132010601390110014A012E017901E8 +:108EE000060180014D00430281018201820184015B +:108EF000840186018701870189018A018B018B0129 +:108F00008D018E018F0190019101910193019401D6 +:108F1000F60196019701980198013D029B019C0181 +:108F20009D0120029F01A001A001A201A201A401B4 +:108F3000A401A601A701A701A901AA01AB01AC01E7 +:108F4000AC01AE01AF01AF01B101B201B301B30198 +:108F5000B501B501B701B801B801BA01BB01BC0147 +:108F6000BC01BE01F701C001C101C201C301C401BE +:108F7000C501C401C701C801C701CA01CB01CA01AB +:108F8000CD011001DD0101008E01DE011201F301AE +:108F90000300F101F401F401F80128012202120199 +:108FA0003A020900652C3B023B023D02662C3F025F +:108FB00040024102410246020A015302400081017F +:108FC0008601550289018A0158028F015A029001D7 +:108FD0005C025D025E025F02930161026202940123 +:108FE0006402650266026702970196016A02622CBA +:108FF0006C026D026E029C01700271029D0173028F +:1090000074029F0176027702780279027A027B026B +:109010007C02642C7E027F02A60181028202A901E9 +:109020008402850286028702AE014402B101B201C8 +:1090300045028D028E028F0290029102B7017B03DE +:109040000300FD03FE03FF03AC0304008603880353 +:1090500089038A03B1031103C2030200A303A3031C +:10906000C4030803CC0303008C038E038F03D803CF +:109070001801F2030A00F903F303F403F503F603FE +:10908000F703F703F903FA03FA033004200350044B +:109090001007600422018A043601C1040E01CF04C6 +:1090A0000100C004D0044401610526040000000052 +:1090B0007D1D0100632C001E9601A01E5A01001F99 +:1090C0000806101F0606201F0806301F0806401F4E +:1090D0000606511F0700591F521F5B1F541F5D1FBB +:1090E000561F5F1F601F0806701F0E00BA1FBB1FB0 +:1090F000C81FC91FCA1FCB1FDA1FDB1FF81FF91FAC +:10910000EA1FEB1FFA1FFB1F801F0806901F0806AF +:10911000A01F0806B01F0400B81FB91FB21FBC1F54 +:10912000CC1F0100C31FD01F0206E01F0206E51F6F +:109130000100EC1FF31F0100FC1F4E210100322132 +:1091400070211002842101008321D0241A05302CC3 +:109150002F04602C0201672C0601752C0201802C63 +:109160006401002D260841FF1A030000C700FC001F +:10917000E900E200E400E000E500E700EA00EB00BF +:10918000E800EF00EE00EC00C400C500C900E600F6 +:10919000C600F400F600F200FB00F900FF00D60064 +:1091A000DC00F800A300D800D7009201E100ED0038 +:1091B000F300FA00F100D100AA00BA00BF00AE002F +:1091C000AC00BD00BC00A100AB00BB009125922506 +:1091D000932502252425C100C200C000A9006325F3 +:1091E000512557255D25A200A500102514253425FD +:1091F0002C251C2500253C25E300C3005A255425B9 +:1092000069256625602550256C25A400F000D00056 +:10921000CA00CB00C8003101CD00CE00CF00182518 +:109220000C2588258425A600CC008025D300DF00EE +:10923000D400D200F500D500B500FE00DE00DA0053 +:10924000DB00D900FD00DD00AF00B400AD00B100CF +:109250001720BE00B600A700F700B800B000A800B5 +:10926000B700B900B300B200A025A00001000000C3 +:109270000000000000960000000000000000000058 +:1092800000000000000000000000000000000000DE +:10929000496600084D6600083D51000875540008F5 +:1092A000D1500008F950000821510008B9500008B9 +:1092B0000000000029550008155500085155000808 +:1092C0003D5500084955000835550008215500084E +:1092D0000D5500085D5500080000000041560008CB +:1092E0002D560008695600085556000861560008BA +:1092F0004D560008395600082556000875560008D6 +:1093000000000000010000000000000063300000C9 +:109310000C9300080000000000000000B846002088 +:10932000E84800200000812A00000000AAAAAAAA9A +:1093300000000024FFFE00000000000000A00A0062 +:109340000001000000000000AAAAAAAA0000000074 +:10935000FFFF000000000000000000001400AA56FB +:1093600000000000AAAAAAAA14005554FFFF00009A +:1093700000000000CCCC0C0020681A0000000000A7 +:10938000AAAA8AAA10541500FFFF0000000C70075B +:10939000770000004081020100100000AAAAAAAADA +:1093A00000410100F7FF000000000070070000000E +:1093B0000000000000000000AAAAAAAA0000000005 +:1093C000FFFF00000000000000000000000000009F +:1093D00000000000AAAAAAAA00000000FFFF0000E7 +:1093E000000000000000000000000000000000007D +:1093F000AAAAAAAA00000000FFFF000000000000C7 +:10940000000000000000000000000000AAAAAAAAB4 +:1094100000000000FFFF000000000000000000004E +:109420000000000000000000AAAAAAAA0000000094 +:10943000FFFF00000000000000000000000000002E +:1094400000000000AAAAAAAA00000000FFFF000076 +:1094500000000000000000004375626550696C6FF9 +:109460007400437562654F72616E67652B2D424CC7 +:10947000002553455249414C2500000002000000E0 +:109480000000000061580008D1580008400040006A +:1094900098610020A8610020020000000000000088 +:1094A000030000000000000019590008000000003F +:1094B00010000000B8610020000000000100000062 +:1094C000000000001465002001010200456700084B +:1094D00055660008F1660008D566000843000000E4 +:1094E000E494000809024300020100C032090400AC +:1094F0000001020201000524001001052401000101 +:10950000042402020524060001070582030800FF67 +:1095100009040100020A00000007050102400000E2 +:10952000070581024000000012000000309500088D +:109530001201100102000040AE2D5810000201027D +:10954000030100000403090425424F415244250051 +:10955000437562654F72616E6765506C757300305C +:109560003132333435363738394142434445460089 +:109570000000002000000200020000000000003097 +:1095800000000400080000000000002400000800A3 +:10959000040000000004000000FC000002000000C5 +:1095A00000000430008000000800000000000038C7 +:1095B00000000100010000001F1C1F1E1F1E1F1FB6 +:1095C0001E1F1E1F1F1D1F1E1F1E1F1F1E1F1E1FB3 +:1095D00000000000755A00082D5D0008D95D0008E4 +:1095E000400040004C6600204C6600200100000056 +:1095F0005C660020800000004001000008000000C0 +:1096000000010000001000000800000069646C65A3 +:10961000000000006D61696E002C043804043808F5 +:109620000C10141C202425260000000000006404F7 +:109630000100040000000000000C0010283034007D +:10964000286EFF7F010000002704000000000000DA +:1096500000001E0000000000FF000000F048002095 +:10966000FC38002068390020D439002000000000B8 +:10967000988D000883040000A38D000850040000AA +:10968000B18D0008010000000000000000960000FD +:109690000000080096000000000800000400000020 +:1096A00044950008000000000000000000000000D9 +:1096B00000000000000000000000000078220020F0 +:1096C000000000000000000000000000000000009A +:1096D000000000000000000000000000000000008A +:1096E000000000000000000000000000000000007A +:1096F000000000000000000000000000000000006A +:109700000000000000000000000000000000000059 +:109710000000000000000000000000000000000049 :00000001FF diff --git a/Tools/bootloaders/CubeOrange_bl.bin b/Tools/bootloaders/CubeOrange_bl.bin index 243033814f015240d9f5e7221f95003742e9333a..cd5b57818bff260e7034b9ebdc0240ce2b42d0b6 100755 GIT binary patch literal 38800 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 delta 9864 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 diff --git a/Tools/bootloaders/CubeOrange_bl.elf b/Tools/bootloaders/CubeOrange_bl.elf index 376200bb94e6a4f923beb1c1002c3740095f96ac..f8477f312eaf591cce7652bdef1fc6213c3f4dbd 100755 GIT binary patch literal 176244 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 CDa_OW literal 437892 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%0DVGl-k?`0WGB5jX4c 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ÐlWAig#UVNBM}pmq#?jmRBj5ggzxcnykLpYdMt& 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 aPR64A0`Ity^u>GNBb$?_EQR|M;{AW4LUp77 diff --git a/Tools/bootloaders/CubeOrange_bl.hex b/Tools/bootloaders/CubeOrange_bl.hex index d9b147151e1e9..aea4d36ed1a81 100644 --- a/Tools/bootloaders/CubeOrange_bl.hex +++ b/Tools/bootloaders/CubeOrange_bl.hex @@ -1,1117 +1,2427 @@ :020000040800F2 -:1000000000060020A102000869100008E90F00089E -:1000100041100008E90F000815100008A3020008AD -:10002000A3020008A3020008A3020008A12A0008F6 -:10003000A3020008A3020008A3020008A30200080C -:10004000A3020008A3020008A3020008A3020008FC -:10005000A3020008A3020008293F0008553F00083A -:10006000813F0008AD3F0008D93F0008A302000807 -:10007000A3020008A3020008A3020008A3020008CC -:10008000A3020008A3020008A3020008A3020008BC -:10009000A3020008A3020008A3020008054000080C -:1000A000A3020008A3020008A3020008A30200089C -:1000B000A3020008A3020008A3020008A30200088C -:1000C000A3020008A3020008A3020008A30200087C -:1000D000A3020008A3020008DD400008F140000868 -:1000E00069400008A3020008A3020008A302000858 -:1000F000A3020008A3020008A3020008A30200084C -:10010000A3020008A302000819410008A302000886 -:10011000A3020008A3020008A3020008A30200082B -:10012000A3020008A3020008A3020008A30200081B -:10013000A3020008A3020008A3020008A30200080B -:10014000A3020008A3020008A3020008A3020008FB -:10015000A3020008A3020008A3020008A3020008EB -:10016000A3020008A3020008A3020008A3020008DB -:10017000A30200080D360008A3020008A30200082D -:10018000A3020008A302000805410008A30200081A -:10019000A3020008A3020008A3020008A3020008AB -:1001A000A3020008A3020008A3020008A30200089B -:1001B000A3020008A3020008A3020008A30200088B -:1001C000A3020008A3020008A3020008A30200087B -:1001D000A3020008F9350008A3020008A3020008E2 -:1001E000A3020008A3020008A3020008A30200085B -:1001F000A3020008A3020008A3020008A30200084B -:10020000A3020008A3020008A3020008A30200083A -:10021000A3020008A3020008A3020008A30200082A -:10022000A3020008A3020008A3020008A30200081A -:10023000A3020008A3020008A3020008A30200080A -:10024000A3020008A3020008A3020008A3020008FA -:10025000A3020008A3020008A3020008A3020008EA -:10026000A3020008A3020008A3020008A3020008DA -:10027000A3020008A3020008A3020008A3020008CA -:10028000A3020008A3020008A3020008A3020008BA -:10029000A3020008A3020008A3020008A3020008AA -:1002A00002E000F000F8FEE73B48804772B63B48AA -:1002B00080F308883A4880F309883A484EF6085196 -:1002C000CEF20001086040F20000CCF200004EF6D1 -:1002D0003471CEF200010860BFF34F8FBFF36F8F10 -:1002E00040F20000C0F2F0004EF68851CEF200015C -:1002F0000860BFF34F8FBFF36F8F4FF00000E1EE48 -:10030000100A4EF63C71CEF200010860062080F320 -:100310001488BFF36F8F02F081FC02F023FC03F01E -:10032000BDFB4FF0553020491C4A91423CBF41F87B -:10033000040BFAE71D491A4A91423CBF41F8040BED -:10034000FAE71B491B4A1C4B9A423EBF51F8040B6B -:1003500042F8040BF8E700201849194A91423CBFC3 -:1003600041F8040BFAE702F03BFC03F01BFC154CD0 -:10037000154DAC4203DA54F8041B8847F9E700F046 -:1003800043F8124C124DAC4203DA54F8041B884770 -:10039000F9E702F023BC00006D1000080006002001 -:1003A00000220020000000080000002000060020BD -:1003B00050450008002200205C220020602200201E -:1003C000D44F0020A0020008A0020008A0020008EC -:1003D000A00200082DE9F04F2DED108AC1F80CD0D5 -:1003E000D0F80CD0BDEC108ABDE8F08F002383F369 -:1003F00011882846A047002001F02AFFFEE701F0FF -:10040000A5FE00DFFEE7000038B500F0F1FC30B1DA -:10041000164B00220E211A725A729972DA7202F089 -:10042000F3FA054602F026FB0446D0B9104B9D4274 -:1004300019D001339D4241F2883512BF0446002590 -:100440000124002002F0EAFA0CB100F079F800F083 -:100450006BFD00F013FC284600F020F900F070F866 -:10046000F9E70025EDE70546EBE700BF0022002095 -:10047000010007B008B500F0CDFBA0F12003584201 -:10048000584108BD07B541F21203022101A8ADF899 -:10049000043000F0DDFB03B05DF804FB38B5202329 -:1004A00083F311881748C3680BB101F057FF00238D -:1004B000154A4FF47A71134801F014FF002383F3B7 -:1004C0001188124C236813B12368013B23606368D1 -:1004D00013B16368013B63600D4D2B7833B96368DA -:1004E0007BB9022000F09AFC322363602B78032B47 -:1004F00007D163682BB9022000F090FC4FF47A73A7 -:10050000636038BD602200209D0400087C23002029 -:1005100074220020084B187003280CD8DFE800F084 -:1005200008050208022000F06FBC022000F062BC47 -:10053000024B00225A607047742200207C23002066 -:10054000F8B5504B504A1C461968013100F09980AB -:1005500004339342F8D162684C4B9A4240F2918046 -:100560004B4B9B6803F1006303F500339A4280F024 -:100570008880002000F09CFB0220FFF7CBFF454B5A -:100580000021D3F8E820C3F8E810D3F81021C3F80D -:100590001011D3F81021D3F8EC20C3F8EC10D3F8E5 -:1005A0001421C3F81411D3F81421D3F8F020C3F8A0 -:1005B000F010D3F81821C3F81811D3F81821D3F884 -:1005C000802042F00062C3F88020D3F8802022F01F -:1005D0000062C3F88020D3F88020D3F8802042F056 -:1005E0000072C3F88020D3F8802022F00072C3F894 -:1005F0008020D3F8803072B64FF0E023C3F8084D66 -:10060000D4E90004BFF34F8FBFF36F8F224AC2F8C3 -:100610008410BFF34F8F536923F480335361BFF3CA -:100620004F8FD2F8803043F6E076C3F3C905C3F3A9 -:100630004E335B0103EA060C29464CEA8177013907 -:10064000C2F87472F9D2203B13F1200FF2D1BFF33C -:100650004F8FBFF36F8FBFF34F8FBFF36F8F536910 -:1006600023F4003353610023C2F85032BFF34F8F9D -:10067000BFF36F8F202383F31188854680F30888AA -:100680002047F8BD0000020820000208FFFF010813 -:10069000002200200044025800ED00E02DE9F04F58 -:1006A00093B0A84B2022FF2100900AA89D6800F07B -:1006B000E5FBA54A1378A3B90121A4481170C360D2 -:1006C000202383F31188C3680BB101F047FE002398 -:1006D0009F4A4FF47A719D4801F004FE002383F392 -:1006E0001188009B13B19B4B009A1A609A4A1378A9 -:1006F000032B03D000231370964A53604FF0000A77 -:10070000009CD3465646D146012000F07DFB24B123 -:10071000904B1B68002B00F00E82002000F07AFA4C -:100720000390039B002BF2DB012000F063FB039B93 -:10073000213B162BE8D801A252F823F099070008B4 -:10074000C107000855080008090700080907000844 -:1007500009070008DD080008AB0A0008C509000801 -:10076000270A00084F0A0008750A00080907000850 -:10077000870A000809070008F90A00083908000874 -:10078000090700083D0B0008A50700083908000804 -:1007900009070008270A00080220FFF76BFE00285F -:1007A00040F0F381009B022105A8BAF1000F08BFB9 -:1007B0001C4641F21233ADF8143000F049FAA3E7B9 -:1007C0004FF47A7000F026FA071EEBDB0220FFF7E9 -:1007D00051FE0028E6D0013F052F00F2D881DFE866 -:1007E00007F0030A0D1013360523042105A805930D -:1007F00000F02EFA17E004215248F9E70421574887 -:10080000F6E704215648F3E74FF01C08404608F18C -:10081000040800F04FFA0421059005A800F018FA2A -:10082000B8F12C0FF2D101204FF0000900FA07F7C0 -:1008300047EA0B0B5FFA8BFB00F06CFB26B10BF069 -:100840000B030B2B08BF0024FFF71CFE5CE7042101 -:100850004448CDE7002EA5D00BF00B030B2BA1D104 -:100860000220FFF707FE074600289BD00120002644 -:1008700000F01EFA0220FFF74DFE5FFA86F84046B0 -:1008800000F026FA044688B14046013600F030FAFE -:100890000028F2D1BA46044641F21213022105A8FB -:1008A0003E46ADF8143000F0D3F92DE7254601207F -:1008B000FFF730FE234B9B68AB4207D9284600F078 -:1008C000F9F9013040F066810435F3E70025224B49 -:1008D000BA463E461D701F4B5D60ADE7002E3FF4EB -:1008E00061AF0BF00B030B2B7FF45CAF0220FFF723 -:1008F00011FE322000F08EF9B0F10008FFF652AF81 -:1009000018F003077FF44EAF0E4A08EB0503926818 -:1009100093423FF647AFB8F5807F3FF743AF124BA6 -:10092000B845019322DD4FF47A7000F073F903901B -:10093000039A002AFFF636AF039A0137019B03F8AA -:10094000012BEDE700220020782300206022002008 -:100950009D0400087C230020742200200422002033 -:10096000082200200C22002078220020C820FFF757 -:1009700081FD074600283FF415AF1F2D11D8C5F1A2 -:1009800020020AAB25F0030084494245184428BFE1 -:100990004246019200F04CFA019AFF217F4800F094 -:1009A0006DFA4FEAA803C8F387027C4928460193F1 -:1009B00000F06CFA064600283FF46EAF019B05EB91 -:1009C000830539E70220FFF755FD00283FF4EAAE22 -:1009D00000F0AAF900283FF4E5AE0027B846704BB6 -:1009E0009B68BB4218D91F2F11D80A9B01330ED028 -:1009F00027F0030312AA134453F8203C0593404602 -:100A0000042205A9043700F04FFB8046E7E738468B -:100A100000F050F90590F2E7CDF81480042105A804 -:100A200000F016F908E70023642104A8049300F0FD -:100A300005F900287FF4B6AE0220FFF71BFD002861 -:100A40003FF4B0AE049800F065F90590E6E70023A6 -:100A5000642104A8049300F0F1F800287FF4A2AE0A -:100A60000220FFF707FD00283FF49CAE049800F039 -:100A700053F9EAE70220FFF7FDFC00283FF492AEAD -:100A800000F062F9E1E70220FFF7F4FC00283FF4F0 -:100A900089AE05A9142000F05DF9074604210490F1 -:100AA00004A800F0D5F83946B9E7322000F0B2F8D2 -:100AB000071EFFF677AEBB077FF474AE384A07EB2C -:100AC0000903926893423FF66DAE0220FFF7D2FC15 -:100AD00000283FF467AE27F003074F44B9453FF4C1 -:100AE000ABAE484609F1040900F0E4F80421059092 -:100AF00005A800F0ADF8F1E74FF47A70FFF7BAFC03 -:100B000000283FF44FAE00F00FF9002844D00A9BB4 -:100B100001330BD008220AA9002000F0B7F9002801 -:100B20003AD02022FF210AA800F0A8F9FFF7AAFC7A -:100B30001C4801F093FB13B0BDE8F08F002E3FF48A -:100B400031AE0BF00B030B2B7FF42CAE0023642192 -:100B500005A8059300F072F8074600287FF422AE3E -:100B60000220FFF787FC804600283FF41BAEFFF70A -:100B700089FC41F2883001F071FB059800F014FA0D -:100B800046463C4600F0C6F9BEE5064654E64FF040 -:100B9000000907E6BA467FE637467DE67822002060 -:100BA00000220020A08601002DE9F84F4FF47A734F -:100BB00006460D46002402FB03F7DFF85080DFF8FD -:100BC000509098F900305FFA84FA5A1C01D0A34281 -:100BD00010D159F824002A4631460368D3F820B0D2 -:100BE0003B46D847854205D1074B012083F800A03A -:100BF000BDE8F88F0134042CE3D14FF4FA7001F012 -:100C00002DFB0020F4E700BFC823002010220020A5 -:100C10001C420008002307B5024601210DF1070020 -:100C20008DF80730FFF7C0FF20B19DF8070003B033 -:100C30005DF804FB4FF0FF30F9E700000A4604219D -:100C400008B5FFF7B1FF80F00100C0B2404208BD17 -:100C5000074B0A4630B41978064B53F82140014639 -:100C600023682046DD69044BAC4630BC604700BFBA -:100C7000C82300201C420008A086010070B50A4E5F -:100C800000240A4D01F098FD3080286833888342A3 -:100C900008D901F08DFD2B6804440133B4F5003F01 -:100CA0002B60F2D370BD00BFCA2300208423002034 -:100CB00001F060BE00F1006000F500300068704790 -:100CC00000F10060920000F5003001F0D7BD000097 -:100CD000054B1A68054B1B889B1A834202D91044A6 -:100CE00001F066BD0020704784230020CA23002045 -:100CF00038B5074D04462868204401F05FFD28B947 -:100D000028682044BDE8384001F06ABD38BD00BF06 -:100D1000842300200020704700F1FF5000F58F1061 -:100D2000D0F8000870470000064991F8243033B12C -:100D300000230822086A81F82430FFF7C1BF012090 -:100D4000704700BF88230020014B1868704700BF20 -:100D50000010005C244BF0B51A680446234BC2F324 -:100D60000B06120C1F885868BE4293F9085028D011 -:100D70009F89BE4206D101200C2505FB003358682F -:100D800093F9085041F201039A421CD041F2030347 -:100D90009A421AD042F201039A4218D042F2030357 -:100DA0009A4208BF5625621E0B46441E0A449342CF -:100DB0000FD214F9016F581C6EB1034600F8016C94 -:100DC000F5E70020D8E75A25EDE75925EBE7582548 -:100DD000E9E7184605E02C2482421C7001D9981CD2 -:100DE0005D70401AF0BD00BF0010005C14220020AE -:100DF00000207047022803D1024B4FF080529A61C5 -:100E0000704700BF00100258022803D1024B4FF474 -:100E100080529A61704700BF00100258022804D126 -:100E2000024A536983F4805353617047001002589B -:100E3000002310B5934203D0CC5CC4540133F9E7CE -:100E400010BD0000013810B510F9013F3BB191F918 -:100E500000409C4203D11AB10131013AF4E71AB1C2 -:100E600091F90020981A10BD1046FCE7034602468F -:100E7000D01A12F9011B0029FAD170470244034627 -:100E8000934202D003F8011BFAE770472DE9F843BB -:100E90001F4D14460746884695F8242052BBDFF8BC -:100EA00070909CB395F824302BB92022FF2148463E -:100EB0002F62FFF7E3FF95F824004146C0F10802D6 -:100EC00005EB8000A24228BF2246D6B29200FFF76F -:100ED000AFFF95F82430A41B17441E449044E4B29D -:100EE000F6B2082E85F82460DBD1FFF71DFF00283D -:100EF000D7D108E02B6A03EB82038342CFD0FFF700 -:100F000013FF0028CBD10020BDE8F8830120FBE7C8 -:100F100088230020024B1A78024B1A70704700BFDA -:100F2000C823002010220020F8B5194C194800F001 -:100F300097FC2146174800F0BFFC24681648D4F8F7 -:100F40009020164ED2F80438154D43F00203114F8D -:100F5000C2F8043801F082F92046124900F0BAFDC7 -:100F6000D4F890200424D2F8043823F00203C2F805 -:100F700004384FF4E133336055F8040BB84202D023 -:100F8000314600F0CBFB013C14F0FF04F4D1F8BD76 -:100F900034430008C832002040420F00B023002034 -:100FA0001C4200083C43000838B50B4B04461A7835 -:100FB0000A4B53F822500A4B9D420CD0094B00219A -:100FC00018221846FFF75AFF046001462846BDE87C -:100FD000384000F0A3BB38BDC82300201C420008E5 -:100FE000C8320020B023002000B59BB0EFF3098188 -:100FF00068226846FFF71CFFEFF30583044B9A6BEA -:10100000DA6A9A6A9A6A9A6A9A6A9A6A9B6AFEE79E -:1010100000ED00E000B59BB0EFF30981682268465F -:10102000FFF706FFEFF30583044B9A6B9A6A9A6AFF -:101030009A6A9A6A9A6A9B6AFEE700BF00ED00E02E -:1010400000B59BB0EFF3098168226846FFF7F0FE18 -:10105000EFF30583034B5A6B9A6A9A6A9A6A9A6A03 -:101060009B6AFEE700ED00E0FEE7000000B595B0EA -:10107000132101A801F00EFD9DF84F307BB1002334 -:10108000132101A88DF84F3001F0FEFC054BD3F879 -:10109000002882F30888D3F804389847FEE715B093 -:1010A0005DF804FB0090F01F30B50A44084D9142F2 -:1010B0000DD011F8013B5840082340F30004013BD8 -:1010C0002C4013F0FF0384EA5000F6D1EFE730BD67 -:1010D0002083B8ED026843681143016003B11847EB -:1010E00070470000024A136843F0C0031360704762 -:1010F00000440040024A136843F0C0031360704785 -:1011000000480040024A136843F0C0031360704770 -:101110000078004037B5274C274D204600F0F2FA02 -:1011200004F11400009400234FF40072234900F0EE -:10113000B3F94FF40072224904F138000094214BB6 -:1011400000F02CFA204BC4E91735204C204600F063 -:10115000D9FA04F11400009400234FF400721C49E2 -:1011600000F09AF94FF400721A4904F13800009423 -:10117000194B00F013FA194BC4E91735184C2046E7 -:1011800000F0C0FA04F1140000234FF40072154976 -:10119000009400F081F9144B4FF40072134904F1EC -:1011A0003800009400F0FAF9114BC4E9173503B088 -:1011B00030BD00BFCC23002000E1F5051025002044 -:1011C000102B0020E51000080044004038240020C7 -:1011D00010270020102D0020F510000800480040C6 -:1011E000A42400201029002005110008102F002041 -:1011F00000780040037C30B5334C002918BF0C4602 -:10120000012B18D1314B98420FD1314BD3F8E82044 -:1012100042F40032C3F8E820D3F8102142F400323F -:10122000C3F81021D3F8103105E02A4B98422FD093 -:10123000294B984238D02268036EC16D03EB5203EC -:101240008466B3FBF2F36268150442BF23F007051E -:1012500003F0070343EA4503CB60A36843F0400370 -:101260004B60E36843F001038B6042F4967343F0F4 -:1012700001030B604FF0FF330B62510505D512F0EF -:1012800010221DD0B2F1805F1CD080F8643030BDD8 -:101290000F4BD3F8E82042F48022C3F8E820D3F8BB -:1012A000102142F48022BBE7094BD3F8E82042F03A -:1012B0008042C3F8E820D3F8102142F08042AFE723 -:1012C0007F23E2E73F23E0E72C420008CC23002005 -:1012D0000044025838240020A42400202DE9F047BF -:1012E000C66D05463768F4692107346219D014F0D9 -:1012F000080118BF8021E20748BF41F02001A30781 -:101300004FF0200348BF41F04001600748BF41F45F -:10131000807183F31188281DFFF7DCFE002383F31F -:101320001188E2050AD5202383F311884FF4007158 -:10133000281DFFF7CFFE002383F311884FF020090B -:101340004FF0000A14F0200838D13B0616D54FF0B4 -:10135000200905F1380A200610D589F31188504676 -:1013600000F050F9002836DA0821281DFFF7B2FEF8 -:1013700027F080033360002383F31188790614D5A6 -:10138000620612D5202383F31188D5E913239A42EC -:1013900008D12B6C33B127F040071021281DFFF72F -:1013A00099FE3760002383F31188E30618D5AA6EEF -:1013B0001369ABB15069BDE8F047184789F311884C -:1013C000736A284695F86410194000F0B5F98AF35D -:1013D0001188F469B6E7B06288F31188F469BAE756 -:1013E000BDE8F087F8B51546826804460B46AA4268 -:1013F00000D28568A1692669761AB5420BD21846D3 -:101400002A46FFF715FDA3692B44A3612846A3686C -:101410005B1BA360F8BD0CD9AF1B18463246FFF723 -:1014200007FD3A46E1683044FFF702FDE3683B44BC -:10143000EBE718462A46FFF7FBFCE368E5E7000008 -:1014400083689342F7B50446154600D28568D4E90F -:101450000460361AB5420BD22A46FFF7E9FC6369ED -:101460002B4463612846A3685B1BA36003B0F0BDF7 -:101470000DD93246AF1B0191FFF7DAFC01993A46CC -:10148000E0683144FFF7D4FCE3683B44E9E72A46CF -:10149000FFF7CEFCE368E4E710B50A440024C3611B -:1014A000029B8460C16002610362C0E90000C0E980 -:1014B000051110BD08B5D0E90532934201D182680B -:1014C00082B98268013282605A1C4261197000211F -:1014D000D0E904329A4224BFC368436100F0DAFEC7 -:1014E000002008BD4FF0FF30FBE7000070B520235F -:1014F00004460E4683F31188A568A5B1A368A269C6 -:10150000013BA360531CA36115782269934224BF59 -:10151000E368A361E3690BB120469847002383F396 -:101520001188284607E03146204600F0A3FE002837 -:10153000E2DA85F3118870BD2DE9F74F04460E46B7 -:1015400017469846D0F81C904FF0200A8AF311886D -:101550004FF0000B154665B12A4631462046FFF78D -:1015600041FF034660B94146204600F083FE002853 -:10157000F1D0002383F31188781B03B0BDE8F08F0E -:10158000B9F1000F03D001902046C847019B8BF3AF -:101590001188ED1A1E448AF31188DCE7C160C3612B -:1015A000009B82600362C0E905111144C0E900009C -:1015B00001617047F8B504460D461646202383F3B3 -:1015C0001188A768A7B1A368013BA36063695A1C8F -:1015D00062611D70D4E904329A4224BFE3686361FA -:1015E000E3690BB120469847002080F3118807E09B -:1015F0003146204600F03EFE0028E2DA87F31188EB -:10160000F8BD0000D0E9052310B59A4201D18268E7 -:101610007AB982680021013282605A1C82611C788A -:1016200003699A4224BFC368836100F033FE2046F9 -:1016300010BD4FF0FF30FBE72DE9F74F04460E4693 -:1016400017469846D0F81C904FF0200A8AF311886C -:101650004FF0000B154665B12A4631462046FFF78C -:10166000EFFE034660B94146204600F003FE002825 -:10167000F1D0002383F31188781B03B0BDE8F08F0D -:10168000B9F1000F03D001902046C847019B8BF3AE -:101690001188ED1A1E448AF31188DCE7026843685A -:1016A0001143016003B11847704700001430FFF781 -:1016B00043BF00004FF0FF331430FFF73DBF000081 -:1016C0003830FFF7B9BF00004FF0FF333830FFF775 -:1016D000B3BF00001430FFF709BF00004FF0FF3127 -:1016E0001430FFF703BF00003830FFF763BF00007E -:1016F0004FF0FF323830FFF75DBF00000020704729 -:10170000FFF708BD044B036000234360C0E90233C8 -:1017100001230374704700BF4442000810B5202322 -:10172000044683F31188FFF765FD02232374002329 -:1017300083F3118810BD000038B5C36904460D4617 -:101740001BB904210844FFF7A9FF294604F114003E -:10175000FFF7B0FE002806DA201D4FF48061BDE8D7 -:101760003840FFF79BBF38BD0268436811430160F2 -:1017700003B118477047000013B5406B00F5805463 -:10178000D4F8A4381A681178042914D1017C0229EC -:1017900011D11979012312898B4013420BD101A970 -:1017A0004C3002F07BF8D4F8A4480246019B217922 -:1017B000206800F0DFF902B010BD0000143001F025 -:1017C000FDBF00004FF0FF33143001F0F7BF000001 -:1017D0004C3002F0CFB800004FF0FF334C3002F035 -:1017E000C9B80000143001F0CBBF00004FF0FF314A -:1017F000143001F0C5BF00004C3002F09BB800006F -:101800004FF0FF324C3002F095B8000000207047D6 -:1018100010B500F58054D4F8A4381A68117804295A -:1018200017D1017C022914D15979012352898B40A7 -:1018300013420ED1143001F05DFF024648B1D4F8D6 -:10184000A4484FF4407361792068BDE8104000F06F -:101850007FB910BD406BFFF7DBBF00007047000091 -:101860007FB5124B0125042604460360002305744E -:1018700000F1840243602946C0E902330C4B029018 -:10188000143001934FF44073009601F00FFF094BA1 -:1018900004F69442294604F14C000294CDE9006319 -:1018A0004FF4407301F0D6FF04B070BD6C420008E5 -:1018B00055180008791700080A68202383F3118857 -:1018C0000B790B3342F823004B79133342F8230092 -:1018D0008B7913B10B3342F8230000F58053C3F822 -:1018E000A41802230374002383F3118870470000B7 -:1018F00038B5037F044613B190F85430ABB90125D5 -:10190000201D0221FFF730FF04F114006FF00101E8 -:10191000257700F0CBFC04F14C0084F854506FF0B4 -:101920000101BDE8384000F0C1BC38BD10B501214F -:1019300004460430FFF718FF0023237784F854305F -:1019400010BD000038B504460025143001F0C6FE75 -:1019500004F14C00257701F095FF201D84F85450C8 -:101960000121FFF701FF2046BDE83840FFF750BFD7 -:1019700090F8803003F06003202B06D190F881208E -:101980000023212A03D81F2A06D800207047222AC4 -:10199000FBD1C0E91D3303E0034A42670722826797 -:1019A000C3670120704700BF2C22002037B500F527 -:1019B0008055D5F8A4381A68117804291AD1017C09 -:1019C000022917D11979012312898B40134211D1B1 -:1019D00000F14C04204602F015F858B101A9204648 -:1019E00001F05CFFD5F8A4480246019B21792068EC -:1019F00000F0C0F803B030BD01F10B03F0B550F8B2 -:101A0000236085B004460D46FEB1202383F3118880 -:101A100004EB8507301D0821FFF7A6FEFB6806F1E1 -:101A20004C005B691B681BB1019001F045FF0198F8 -:101A300003A901F033FF024648B1039B2946204623 -:101A400000F098F8002383F3118805B0F0BDFB681F -:101A50005A691268002AF5D01B8A013B1340F1D164 -:101A600004F18002EAE70000133138B550F8214054 -:101A7000ECB1202383F3118804F58053D3F8A42814 -:101A80001368527903EB8203DB689B695D6845B19B -:101A900004216018FFF768FE294604F1140001F0E4 -:101AA00033FE2046FFF7B4FE002383F3118838BDD0 -:101AB0007047000001F026B901234022002110B533 -:101AC000044600F8303BFFF7D9F90023C4E901339D -:101AD00010BD000010B52023044683F31188242292 -:101AE000416000210C30FFF7C9F9204601F02CF9C4 -:101AF00002232370002383F3118810BD70B500EB1F -:101B00008103054650690E461446DA6018B110226A -:101B10000021FFF7B3F9A06918B110220021FFF7E7 -:101B2000ADF931462846BDE8704001F01FBA00000B -:101B300083682022002103F0011310B5044683605E -:101B40001030FFF79BF92046BDE8104001F09ABA2B -:101B5000F0B4012500EB810447898D40E4683D43E2 -:101B6000A469458123600023A2606360F0BC01F09A -:101B7000B7BA0000F0B4012500EB810407898D405D -:101B8000E4683D436469058123600023A2606360CB -:101B9000F0BC01F02DBB000070B502230025044607 -:101BA000242203702946C0F888500C3040F8045CA9 -:101BB000FFF764F9204684F8705001F06BF9636810 -:101BC0001B6823B129462046BDE87040184770BD08 -:101BD000037880F88C300523037043681B6810B5C8 -:101BE00004460BB1042198470023A36010BD0000F8 -:101BF00090F88C20436802701B680BB105211847D0 -:101C00007047000070B590F87030044613B100239F -:101C100080F8703004F18002204601F057FA6368C2 -:101C20009B68B3B994F8803013F0600535D000217B -:101C3000204601F001FD0021204601F0F1FC63681F -:101C40001B6813B1062120469847062384F870309C -:101C500070BD204698470028E4D0B4F88630A26FC3 -:101C60009A4288BFA36794F98030A56F002B4FF08C -:101C7000200380F20381002D00F0F280092284F815 -:101C8000702083F3118800212046D4E91D23FFF73B -:101C900071FF002383F31188DAE794F8812003F0C1 -:101CA0007F0343EA022340F20232934200F0C580F0 -:101CB00021D8B3F5807F48D00DD8012B3FD0022B1F -:101CC00000F09380002BB2D104F1880262670222F7 -:101CD000A267E367C1E7B3F5817F00F09B80B3F5AE -:101CE000407FA4D194F88230012BA0D1B4F8883081 -:101CF00043F0020332E0B3F5006F4DD017D8B3F5CF -:101D0000A06F31D0A3F5C063012B90D86368204643 -:101D100094F882205E6894F88310B4F88430B04759 -:101D2000002884D0436863670368A3671AE0B3F5AB -:101D3000106F36D040F6024293427FF478AF5C4B8E -:101D400063670223A3670023C3E794F88230012B63 -:101D50007FF46DAFB4F8883023F00203A4F8883024 -:101D6000C4E91D55E56778E7B4F88030B3F5A06F96 -:101D70000ED194F88230204684F88A3001F0E8F8D9 -:101D800063681B6813B10121204698470323237021 -:101D90000023C4E91D339CE704F18B03636701232F -:101DA000C3E72378042B10D1202383F31188204626 -:101DB000FFF7BEFE85F311880321636884F88B501A -:101DC00021701B680BB12046984794F88230002B95 -:101DD000DED084F88B300423237063681B68002BEB -:101DE000D6D0022120469847D2E794F88430204686 -:101DF0001D0603F00F010AD501F05AF9012804D09D -:101E000002287FF414AF2B4B9AE72B4B98E701F095 -:101E100041F9F3E794F88230002B7FF408AF94F88F -:101E2000843013F00F01B3D01A06204602D501F01A -:101E30001BFCADE701F00CFCAAE794F88230002B04 -:101E40007FF4F5AE94F8843013F00F01A0D01B0698 -:101E5000204602D501F0F0FB9AE701F0E1FB97E79D -:101E6000142284F8702083F311882B462A462946D1 -:101E70002046FFF76DFE85F31188E9E65DB1152276 -:101E800084F8702083F3118800212046D4E91D23B3 -:101E9000FFF75EFEFDE60B2284F8702083F31188C5 -:101EA0002B462A4629462046FFF764FEE3E700BF9B -:101EB0009C420008944200089842000838B590F807 -:101EC00070300446002B3ED0063BDAB20F2A34D8DD -:101ED0000F2B32D8DFE803F03731310822323131AD -:101EE0003131313131313737856FB0F886309D422D -:101EF00014D2C3681B8AB5FBF3F203FB12556DB90C -:101F0000202383F311882B462A462946FFF732FE09 -:101F100085F311880A2384F870300EE0142384F8C6 -:101F20007030202383F31188002320461A46194677 -:101F3000FFF70EFE002383F3118838BDC36F03B192 -:101F400098470023E7E70021204601F075FB0021B8 -:101F5000204601F065FB63681B6813B1062120462B -:101F600098470623D7E7000010B590F87030044674 -:101F7000142B29D017D8062B05D001D81BB110BDC2 -:101F8000093B022BFBD80021204601F055FB002124 -:101F9000204601F045FB63681B6813B1062120460B -:101FA0009847062319E0152BE9D10B2380F87030F0 -:101FB000202383F3118800231A461946FFF7DAFD20 -:101FC000002383F31188DAE7C3689B695B68002B01 -:101FD000D5D1C36F03B19847002384F87030CEE7A2 -:101FE000024B0022C3E900339A6070471031002091 -:101FF000002382680374054B1B6899689142FBD2E9 -:102000005A680360426010605860704710310020C9 -:1020100008B5202383F31188037C032B05D0042B00 -:102020000DD02BB983F3118808BD436900221A60D3 -:102030004FF0FF334361FFF7DBFF0023F2E7D0E906 -:10204000003213605A60F3E7002382680374054B83 -:102050001B6899689142FBD85A680360426010601F -:102060005860704710310020054B196908741868D2 -:10207000026853601A60186101230374FEF7AAB95D -:10208000103100204B1C30B5044687B00A4D10D0EB -:102090002B6901A8094A00F025F92046FFF7E4FF63 -:1020A000049B13B101A800F059F92B69586907B0D6 -:1020B00030BDFFF7D9FFF8E71031002011200008EC -:1020C00038B50C4D044641612B6981689A6891428C -:1020D00003D8BDE83840FFF78BBF1846FFF7B4FFC1 -:1020E00001232C61014623742046BDE83840FEF7E9 -:1020F00071B900BF10310020044B1A681B69906849 -:102100009B68984294BF0020012070471031002046 -:1021100010B5084C236820691A68546022600122B7 -:1021200023611A74FFF790FF01462069BDE8104053 -:10213000FEF750B91031002008B5FFF7DDFF18B1E8 -:10214000BDE80840FFF7E4BF08BD0000FFF7E0BFAF -:10215000FEE7000010B50C4CFFF742FF00F0B4F8AA -:1021600080220A49204600F03BF8012344F8180C6D -:10217000037400F0A5FC002383F3118862B60448C1 -:10218000BDE8104000F04CB838310020A0420008F3 -:10219000B042000800F01CB9EFF3118020B9EFF352 -:1021A0000583202282F311887047000010B530B9F2 -:1021B000EFF30584C4F3080414B180F3118810BD53 -:1021C000FFF7BAFF84F31188F9E70000034A51686A -:1021D00053685B1A9842FBD8704700BF001000E0BC -:1021E00082600222028270478368A3F17C0243F876 -:1021F0000C2C026943F83C2C426943F8382C074AFE -:1022000043F81C2CC268A3F1180043F8102C0222DA -:1022100003F8082C002203F8072C7047ED03000890 -:1022200010B5202383F31188FFF7DEFF0021044659 -:10223000FFF746FF002383F31188204610BD0000FE -:10224000024B1B6958610F20FFF70EBF10310020B1 -:10225000202383F31188FFF7F3BF000008B5014680 -:10226000202383F311880820FFF70CFF002383F35A -:10227000118808BD49B1064B42681B6918605A6055 -:10228000136043600420FFF7FDBE4FF0FF3070473E -:10229000103100200368984206D01A68026050602E -:1022A00018465961FFF7A4BE7047000038B50446D0 -:1022B0000D462068844200D138BD036823605C600D -:1022C0004561FFF795FEF4E7054B4FF0FF3103F151 -:1022D0001402C3E905220022C3E90712704700BFB8 -:1022E0001031002070B51C4E05460C46C0E9032392 -:1022F00001F0BEFB334653F8142F9A420DD13062E1 -:102300000A2C2CBF00190A302A60C5E90124C6E94D -:102310000555BDE8704001F095BB316A431AE318DA -:1023200038BF1C469368A34202D9081901F09AFBF2 -:1023300073699A6894420CD85A68AC602B606A60E2 -:1023400015609A685D60121B9A604FF0FF33F3616D -:1023500070BDA41A1B68ECE71031002038B51B4C87 -:10236000636998420DD08168D0E9003213605A60E9 -:102370000022C2609A680A449A604FF0FF33E3611A -:1023800038BD03682246002142F8143F93425A6048 -:10239000C16003D1BDE8384001F05EBB9A68816836 -:1023A000256A0A449A6001F063FB6369411B9A68DD -:1023B0008A42E5D9AB181D1A206A092D98BF01F190 -:1023C0000A02BDE83840104401F04CBB1031002037 -:1023D0002DE9F041184C002704F11406656901F05D -:1023E00047FB236AAA68C11A8A4215D81344D5F854 -:1023F0000C802362D5E9003213605A606369EF6094 -:10240000B34201D101F028FB87F311882869C04746 -:10241000202383F31188E1E76169B14209D01344B5 -:102420001B1ABDE8F0410A2B2CBFC0180A3001F07E -:1024300019BBBDE8F08100BF1031002000207047BB -:10244000FEE70000704700004FF0FF3070470000CB -:1024500002290CD0032904D00129074818BF002005 -:102460007047032A05D8054800EBC20070470448AE -:1024700070470020704700BF984300083C220020AE -:102480004C43000870B59AB005460846144601A9A9 -:1024900000F0C2F801A8FEF7E9FC431C0022C6B216 -:1024A0005B001046C5E9003423700323023404F8AE -:1024B000013C01ABD1B202348E4201D81AB070BDDA -:1024C00013F8011B013204F8010C04F8021CF1E7B7 -:1024D00008B5202383F311880348FFF767FA002328 -:1024E00083F3118808BD00BFC832002090F8803007 -:1024F00003F01F02012A07D190F881200B2A03D193 -:102500000023C0E91D3315E003F06003202B08D140 -:10251000B0F884302BB990F88120212A03D81F2AE3 -:1025200004D8FFF725BA222AEBD0FAE7034A42671C -:1025300007228267C3670120704700BF3322002053 -:1025400007B5052917D8DFE801F019160319192076 -:10255000202383F31188104A01210190FFF7CEFA5E -:10256000019802210D4AFFF7C9FA0D48FFF7EAF971 -:10257000002383F3118803B05DF804FB202383F369 -:1025800011880748FFF7B4F9F2E7202383F3118895 -:102590000348FFF7CBF9EBE7EC42000810430008D3 -:1025A000C832002038B50C4D0C4C2A460C4904F1B9 -:1025B0000800FFF767FF05F1CA0204F1100009499E -:1025C000FFF760FF05F5CA7204F118000649BDE87F -:1025D0003840FFF757BF00BFA04B00203C2200202F -:1025E000C8420008D5420008E042000870B5044621 -:1025F00008460D46FEF73AFCC6B220460134037881 -:102600000BB9184670BD32462946FEF71BFC002860 -:10261000F3D10120F6E700002DE9F84F05460C46FE -:10262000FEF724FC2C49C6B22846FFF7DFFF08B1AD -:102630000336F6B229492846FFF7D8FF08B110360D -:10264000F6B2632E0DD8DFF89080DFF89090244F1B -:10265000DFF894A0DFF894B02E7846B92670BDE874 -:10266000F88F29462046BDE8F84F01F0C1BD252E60 -:102670002ED1072241462846FEF7E4FB70B9DBF86D -:10268000003007350A3444F80A3CDBF8043044F8DB -:10269000063CBBF8083024F8023CDDE70822494636 -:1026A0002846FEF7CFFB98B9A21C0E4B19780232D0 -:1026B0000909C95D02F8041C13F8011B01F00F01A0 -:1026C0005345C95D02F8031CF0D118340835C3E73F -:1026D000013504F8016BBFE7B8430008E042000889 -:1026E000CB43000800E8F11F0CE8F11FC0430008CD -:1026F000BFF34F8F044B1A695107FCD1D3F8102157 -:102700005207F8D1704700BF0020005208B50D4BAA -:102710001B78ABB9FFF7ECFF0B4BDA68D10704D598 -:102720000A4A5A6002F188325A60D3F80C21D20763 -:1027300006D5064AC3F8042102F18832C3F8042101 -:1027400008BD00BFFE4D0020002000522301674558 -:1027500008B5114B1B78F3B9104B1A69510703D513 -:10276000DA6842F04002DA60D3F81021520705D54A -:10277000D3F80C2142F04002C3F80C21FFF7B8FF58 -:10278000064BDA6842F00102DA60D3F80C2142F01D -:102790000102C3F80C2108BDFE4D002000200052AC -:1027A0000F289ABF00F580604004002070470000A9 -:1027B0004FF4003070470000102070470F2808B514 -:1027C0000BD8FFF7EDFF00F500330268013204D1AA -:1027D00004308342F9D1012008BD0020FCE700004D -:1027E0000F2870B5054645D8FFF7D6FC224CFFF7F9 -:1027F0007FFF0646FFF78AFF4FF0FF33072D636127 -:10280000C4F8143120D82361FFF772FF2B0243F084 -:102810002403E360E36843F08003E36023695A071D -:10282000FCD42846FFF764FF4FF40031FFF7B8FFF0 -:1028300000F002F93046FFF78BFFFFF7B7FC2846A0 -:10284000BDE87040FFF7BABFC4F81031FFF750FF82 -:10285000A5F108031B0243F02403C4F80C31D4F89B -:102860000C3143F08003C4F80C31D4F810315B070D -:10287000FBD4D6E7002070BD002000522DE9F84FB0 -:1028800040EA020305460C461746D80602D000204F -:10289000BDE8F88F27F01F07DFF8D4B0FFF736FF49 -:1028A0002744BC4203D10120FFF752FFF0E720226A -:1028B0002946204601F08CFC10B920352034F0E781 -:1028C0002B4605F120021E68711CE0D104339A42A8 -:1028D000F9D1FFF761FC05F17843234AB3F5801F76 -:1028E000224B28BF9A4603F1040338BF9046A2F159 -:1028F000080228BF9846A3F108033ABF9146DA467A -:102900009946FFF7F5FEC8F80060A5EB040CD9F86E -:10291000002004F11C0142F00202C9F80020221F2D -:10292000DAF8006016F00506FAD152F8043F8A4240 -:102930004CF80230F4D1BFF34F8FFFF7D9FE4FF0C0 -:10294000FF32C8F80020D9F8002022F00202C9F8AE -:102950000020FFF72BFC20222146284601F038FCFE -:102960000028AAD030469FE71420005210210052C0 -:102970001020005210B5084C237828B11BB9FFF77E -:10298000C5FE0123237010BD002BFCD02070BDE8D4 -:102990001040FFF7DDBE00BFFE4D00200244074B94 -:1029A000D2B210B5904200D110BD441C00B253F811 -:1029B000200041F8040BE0B2F4E700BF504000589B -:1029C0000E4B30B51C6F240405D41C6F1C671C6FA4 -:1029D00044F400441C670A4C02442368D2B243F416 -:1029E00080732360074B904200D130BD441C51F8E6 -:1029F000045B00B243F82050E0B2F4E70044025810 -:102A0000004802585040005807B5012201A9002093 -:102A1000FFF7C4FF019803B05DF804FB13B504464B -:102A2000FFF7F2FFA04205D0012201A90020019486 -:102A3000FFF7C6FF02B010BD0144BFF34F8F064B36 -:102A4000884204D3BFF34F8FBFF36F8F7047C3F833 -:102A50005C022030F4E700BF00ED00E0034B1A6891 -:102A60001AB9034AD2F8D0241A607047004E0020E9 -:102A70000040025808B5FFF7F1FF024B1868C0F399 -:102A8000806008BD004E0020CAB201460120FFF759 -:102A900097BF0000CAB201460120FFF77FBF0000C8 -:102AA000EFF30983054968334A6B22F001024A6358 -:102AB00083F30988002383F31188704700EF00E057 -:102AC000202080F3118862B60D4B0E4AD96821F49C -:102AD000E0610904090C0A430B49DA60D3F8FC20D1 -:102AE00042F08072C3F8FC20084AC2F8B01F116897 -:102AF00041F0010111601022DA7783F8220070475B -:102B000000ED00E00003FA0555CEACC5001000E072 -:102B1000202310B583F311880E4B5B6813F4006318 -:102B200014D0F1EE103AEFF309844FF08073683C53 -:102B3000E361094BDB6B236684F30988FFF7DCFA5A -:102B400010B1064BA36110BD054BFBE783F3118861 -:102B5000F9E700BF00ED00E000EF00E0FF03000830 -:102B60000204000870B5BFF34F8FBFF36F8F1A4A8E -:102B70000021C2F85012BFF34F8FBFF36F8F53691C -:102B800043F400335361BFF34F8FBFF36F8FC2F82D -:102B90008410BFF34F8FD2F8803043F6E074C3F354 -:102BA000C900C3F34E335B0103EA0406014646EA5B -:102BB00081750139C2F86052F9D2203B13F1200F20 -:102BC000F2D1BFF34F8F536943F480335361BFF3A6 -:102BD0004F8FBFF36F8F70BD00ED00E0FEE7000088 -:102BE0000A4B0B480B4A90420BD30B4BC11EDA1C0D -:102BF000121A22F003028B4238BF00220021FEF796 -:102C00003DB953F8041B40F8041BECE7AC45000841 -:102C1000D44F0020D44F0020D44F00207047000034 -:102C200070B5D0E9244300224FF0FF359E6804EBD5 -:102C300042135101D3F80009002805DAD3F800093E -:102C400040F08040C3F80009D3F8000B002805DAF3 -:102C5000D3F8000B40F08040C3F8000B013263183A -:102C60009642C3F80859C3F8085BE0D24FF001134D -:102C7000C4F81C3870BD000000EB8103D3F80CC011 -:102C80002DE9F043DCF814204E1CD0F89050D2F817 -:102C900000E005EB063605EB4118506870450AD395 -:102CA0000122D5F8343802FA01F123EA0101C5F80E -:102CB0003418BDE8F083AEEB0003BCF81040A3422B -:102CC00028BF2346D8F81849A4B2B3EB840FF0D834 -:102CD0009468A4F1040959F8047F3760A4EB09074C -:102CE0001F44042FF7D81C44034494605360D4E776 -:102CF000890141F02001016103699B06FCD4122087 -:102D0000FFF764BA10B50A4C2046FEF7D5FE094B12 -:102D1000C4F89030084BC4F89430084C2046FEF7B5 -:102D2000CBFE074BC4F89030064BC4F8943010BD6E -:102D3000044E00200000084000440008A04E00207F -:102D4000000004400C44000870B503780546012BD0 -:102D50005DD1494BD0F89040984259D1474B0E2154 -:102D60006520D3F8D82042F00062C3F8D820D3F809 -:102D7000002142F00062C3F80021D3F80021D3F80B -:102D8000802042F00062C3F88020D3F8802022F037 -:102D90000062C3F88020D3F8803000F071FC384B1B -:102DA000E360384BC4F800380023D5F89060C4F8CD -:102DB000003EC02323604FF40413A3633369002B48 -:102DC000FCDA01230C203361FFF700FA3369DB07DB -:102DD000FCD41220FFF7FAF93369002BFCDA002645 -:102DE0002846A660FFF71CFF6B68C4F81068DB6814 -:102DF000C4F81468C4F81C68002B3AD1224BA361B4 -:102E00004FF0FF336361A36843F00103A36070BD1B -:102E10001E4B9842C8D1194B0E214D20D3F8D82013 -:102E200042F00072C3F8D820D3F8002142F00072BB -:102E3000C3F80021D3F80021D3F8802042F00072BB -:102E4000C3F88020D3F8802022F00072C3F88020DD -:102E5000D3F88020D3F8D82022F08062C3F8D8209D -:102E6000D3F8002122F08062C3F80021D3F80031AA -:102E700093E7074BC3E700BF044E0020004402580D -:102E80004014004003002002003C30C0A04E00204F -:102E9000083C30C0F8B5D0F89040054600214FF00E -:102EA00000662046FFF724FFD5F8941000234FF06A -:102EB00001128F684FF0FF30C4F83438C4F81C2872 -:102EC00004EB431201339F42C2F80069C2F8006B61 -:102ED000C2F80809C2F8080BF2D20B68D5F89020A6 -:102EE000C5F89830636210231361166916F0100656 -:102EF000FBD11220FFF76AF9D4F8003823F4FE63FF -:102F0000C4F80038A36943F4402343F01003A361DD -:102F10000923C4F81038C4F814380B4BEB604FF099 -:102F2000C043C4F8103B094BC4F8003BC4F8106917 -:102F3000C4F80039D5F8983003F1100243F4801337 -:102F4000C5F89820A362F8BDDC430008408000105B -:102F5000D0F8902090F88A10D2F8003823F4FE635D -:102F600043EA0113C2F80038704700002DE9F84326 -:102F700000EB8103D0F890500C468046DA680FFAD7 -:102F800081F94801166806F00306731E022B05EB53 -:102F900041134FF0000194BFB604384EC3F8101B24 -:102FA0004FF0010104F1100398BF06F1805601FAB9 -:102FB00003F3916998BF06F5004600293AD0578A75 -:102FC00004F15801374349016F50D5F81C180B43E1 -:102FD0000021C5F81C382B180127C3F81019A74089 -:102FE0005369611E9BB3138A928B9B08012A88BF89 -:102FF0005343D8F89820981842EA034301F140025D -:103000002146C8F89800284605EB82025360FFF776 -:103010006FFE08EB8900C3681B8A43EA8453483477 -:103020001E4364012E51D5F81C381F43C5F81C7887 -:10303000BDE8F88305EB4917D7F8001B21F40041E0 -:10304000C7F8001BD5F81C1821EA0303C0E704F1F8 -:103050003F030B4A2846214605EB83035A60FFF7DE -:1030600047FE05EB4910D0F8003923F40043C0F8BF -:103070000039D5F81C3823EA0707D7E7008000108D -:1030800000040002D0F894201268C0F89820FFF7DE -:10309000C7BD00005831D0F8903049015B5813F497 -:1030A000004004D013F4001F0CBF02200120704721 -:1030B0004831D0F8903049015B5813F4004004D0F7 -:1030C00013F4001F0CBF02200120704700EB8101A8 -:1030D000CB68196A0B6813604B6853607047000037 -:1030E00000EB810330B5DD68AA691368D36019B9B4 -:1030F000402B84BF402313606B8A1468D0F8902063 -:103100001C4402EB4110013C09B2B4FBF3F46343ED -:10311000033323F0030343EAC44343F0C043C0F83E -:10312000103B2B6803F00303012B0ED1D2F80838B3 -:1031300002EB411013F4807FD0F8003B14BF43F042 -:10314000805343F00053C0F8003B02EB4112D2F829 -:10315000003B43F00443C2F8003B30BD2DE9F04191 -:10316000D0F8906005460C4606EB4113D3F8087B77 -:103170003A07C3F8087B08D5D6F814381B0704D5DE -:1031800000EB8103DB685B689847FA071FD5D6F828 -:103190001438DB071BD505EB8403D968CCB98B69E0 -:1031A000488A5A68B2FBF0F600FB16228AB9186802 -:1031B000DA6890420DD2121AC3E90024202383F367 -:1031C000118821462846FFF78BFF84F31188BDE85C -:1031D000F081012303FA04F26B8923EA02036B8175 -:1031E000CB68002BF3D021462846BDE8F0411847B4 -:1031F00000EB81034A0170B5DD68D0F890306C694E -:103200002668E66056BB1A444FF40020C2F8100945 -:103210002A6802F00302012A0AB20ED1D3F8080884 -:1032200003EB421410F4807FD4F8000914BF40F07F -:10323000805040F00050C4F8000903EB4212D2F86D -:10324000000940F00440C2F800090122D3F8340814 -:1032500002FA01F10143C3F8341870BD19B9402EC8 -:1032600084BF4020206020681A442E8A8419013CC3 -:10327000B4FBF6F440EAC44040F00050C6E700005A -:103280002DE9F041D0F8906004460D4606EB41135D -:10329000D3F80879C3F80879FB071CD5D6F810389D -:1032A000DA0718D500EB8103D3F80CC0DCF8143032 -:1032B000D3F800E0DA6896451BD2A2EB0E024FF07D -:1032C00000081A60C3F80480202383F31188FFF7F5 -:1032D0008FFF88F311883B0618D50123D6F83428D0 -:1032E000AB40134212D029462046BDE8F041FFF71B -:1032F000C3BC012303FA01F2038923EA0203038119 -:10330000DCF80830002BE6D09847E4E7BDE8F08110 -:103310002DE9F84FD0F8905004466E69AB691E4015 -:1033200016F480586E6103D0BDE8F84FFEF734BC48 -:10333000002E12DAD5F8003E9F0705D0D5F8003EE2 -:1033400023F00303C5F8003ED5F80438204623F0E7 -:103350000103C5F80438FEF74BFC300505D52046BF -:10336000FFF75EFC2046FEF733FCB1040CD5D5F820 -:10337000083813F0060FEB6823F470530CBF43F4C6 -:10338000105343F4A053EB60320704D56368DB6845 -:103390000BB120469847F30200F1BA80B70226D558 -:1033A000D4F8909000274FF0010A09EB4712D2F8A9 -:1033B000003B03F44023B3F5802F11D1D2F8003B3A -:1033C000002B0DDA62890AFA07F322EA030363810C -:1033D00004EB8703DB68DB6813B139462046984766 -:1033E0000137D4F89430FFB29B689F42DDD9F006D4 -:1033F00019D5D4F89000026AC2F30A1702F00F033D -:1034000002F4F012B2F5802F00F0CC80B2F5402F1C -:1034100009D104EB8303002200F58050DB681B6AAE -:10342000974240F0B2803003D5F8185835D5E903FB -:1034300003D500212046FFF791FEAA0303D5012101 -:103440002046FFF78BFE6B0303D502212046FFF7D2 -:1034500085FE2F0303D503212046FFF77FFEE802F8 -:1034600003D504212046FFF779FEA90203D50521E3 -:103470002046FFF773FE6A0203D506212046FFF7B8 -:103480006DFE2B0203D507212046FFF767FEEF01F3 -:1034900003D508212046FFF761FE700340F1A980A3 -:1034A000E90703D500212046FFF7EAFEAA0703D566 -:1034B00001212046FFF7E4FE6B0703D502212046D9 -:1034C000FFF7DEFE2F0703D503212046FFF7D8FEC6 -:1034D000EE0603D504212046FFF7D2FEA80603D549 -:1034E00005212046FFF7CCFE690603D506212046BC -:1034F000FFF7C6FE2A0603D507212046FFF7C0FEC8 -:10350000EB0576D520460821BDE8F84FFFF7B8BE99 -:10351000D4F8909000274FF0010AD4F894305FFA65 -:1035200087FB9B689B453FF639AF09EB4B13D3F8FC -:10353000002902F44022B2F5802F24D1D3F80029CB -:10354000002A20DAD3F8002942F09042C3F800297B -:10355000D3F80029002AFBDB5946D4F89000FFF786 -:10356000C7FB22890AFA0BF322EA0303238104EB47 -:103570008B03DB689B6813B1594620469847594630 -:103580002046FFF779FB0137C7E7910701D1D0F853 -:103590000080072A02F101029CBF03F8018B4FEA69 -:1035A00018283DE704EB830300F58050DA68D2F871 -:1035B00018C0DCF80820DCE9001CA1EB0C0C002191 -:1035C0008F4208D1DB689B699A683A449A605A68CE -:1035D0003A445A6027E711F0030F01D1D0F8008078 -:1035E0008C4501F1010184BF02F8018B4FEA1828D4 -:1035F000E6E7BDE8F88F000008B50348FFF788FE4E -:10360000BDE80840FFF784BA044E002008B503481F -:10361000FFF77EFEBDE80840FFF77ABAA04E002013 -:10362000D0F8903003EB4111D1F8003B43F4001384 -:10363000C1F8003B70470000D0F8903003EB411117 -:10364000D1F8003943F40013C1F800397047000085 -:10365000D0F8903003EB4111D1F8003B23F4001374 -:10366000C1F8003B70470000D0F8903003EB4111E7 -:10367000D1F8003923F40013C1F800397047000075 -:10368000090100F16043012203F56143C9B283F8E7 -:10369000001300F01F039A4043099B0003F16043AD -:1036A00003F56143C3F880211A60704730B50433D5 -:1036B000039C0172002104FB0325C160C0E906538D -:1036C000049B0363059BC0E90000C0E90422C0E934 -:1036D0000842C0E90A11436330BD00000022416A7C -:1036E000C260C0E90411C0E90A226FF00101FEF7CF -:1036F000DDBD0000D0E90432934201D1C2680AB9AD -:10370000181D704700207047036919600021C268C6 -:103710000132C260C269134482699342036124BFCB -:10372000436A0361FEF7B6BD38B504460D46E3684B -:103730003BB162690020131D1268A3621344E36267 -:1037400007E0237A33B929462046FEF793FD002887 -:10375000EDDA38BD6FF00100FBE70000C368C26915 -:10376000013BC3604369134482699342436124BFB0 -:10377000436A436100238362036B03B118477047B8 -:1037800070B52023044683F31188866A3EB9FFF79B -:10379000CBFF054618B186F31188284670BDA36A91 -:1037A000E26A13F8015B9342A36202D32046FFF75B -:1037B000D5FF002383F31188EFE700002DE9F84FD0 -:1037C00004460E46174698464FF0200989F31188A3 -:1037D0000025AA46D4F828B0BBF1000F09D1414614 -:1037E0002046FFF7A1FF20B18BF311882846BDE8E2 -:1037F000F88FD4E90A12A7EB050B521A934528BF9C -:103800009346BBF1400F1BD9334601F1400251F8FA -:10381000040B914243F8040BF9D1A36A40364035BA -:103820004033A362D4E90A239A4202D32046FFF729 -:1038300095FF8AF31188BD42D8D289F31188C9E770 -:1038400030465A46FDF7F4FAA36A5E445D445B4491 -:10385000A362E7E710B5029C0433017204FB032165 -:10386000C460C0E906130023C0E90A33039B036365 -:10387000049BC0E90000C0E90422C0E90842436398 -:1038800010BD0000026A6FF00101C260426AC0E927 -:1038900004220022C0E90A22FEF708BDD0E9042371 -:1038A0009A4201D1C26822B9184650F8043B0B6015 -:1038B0007047002070470000C3680021C2690133CF -:1038C000C3604369134482699342436124BF436ADE -:1038D0004361FEF7DFBC000038B504460D46E368DF -:1038E0003BB1236900201A1DA262E2691344E3621E -:1038F00007E0237A33B929462046FEF7BBFC0028AF -:10390000EDDA38BD6FF00100FBE7000003691960D4 -:10391000C268013AC260C26913448269934203617A -:1039200024BF436A036100238362036B03B118471A -:103930007047000070B520230D460446114683F3FE -:103940001188866A2EB9FFF7C7FF10B186F3118878 -:1039500070BDA36A1D70A36AE26A01339342A36239 -:1039600004D3E16920460439FFF7D0FF002080F33B -:103970001188EDE72DE9F84F04460D46904699462B -:103980004FF0200A8AF311880026B346A76A4FB980 -:1039900049462046FFF7A0FF20B187F31188304643 -:1039A000BDE8F88FD4E90A073A1AA8EB0607974250 -:1039B00028BF1746402F1BD905F1400355F8042BAB -:1039C0009D4240F8042BF9D1A36A40364033A362EC -:1039D000D4E90A239A4204D3E16920460439FFF767 -:1039E00095FF8BF311884645D9D28AF31188CDE72C -:1039F00029463A46FDF71CFAA36A3D443E443B443F -:103A0000A362E5E7D0E904239A4217D1C3689BB1CA -:103A1000836A8BB1043B9B1A0ED01360C368013BD1 -:103A2000C360C3691A4483699A42026124BF436A2E -:103A30000361002383620123184670470023FBE7DC -:103A400000F0DAB8034B002258631A610222DA60F0 -:103A5000704700BF000C0040014B0022DA60704745 -:103A6000000C0040014B5863704700BF000C004041 -:103A7000014B586A704700BF000C00404B68436020 -:103A80008B688360CB68C3600B6943614B690362D9 -:103A90008B6943620B6803607047000008B53C4BBC -:103AA00040F2FF713B48D3F888200A43C3F88820CE -:103AB000D3F8882022F4FF6222F00702C3F888209E -:103AC000D3F88820D3F8E0200A43C3F8E020D3F8E5 -:103AD00008210A43C3F808212F4AD3F808311146B8 -:103AE000FFF7CCFF00F5806002F11C01FFF7C6FF75 -:103AF00000F5806002F13801FFF7C0FF00F580603B -:103B000002F15401FFF7BAFF00F5806002F1700185 -:103B1000FFF7B4FF00F5806002F18C01FFF7AEFF04 -:103B200000F5806002F1A801FFF7A8FF00F58060B2 -:103B300002F1C401FFF7A2FF00F5806002F1E0018D -:103B4000FFF79CFF00F5806002F1FC01FFF796FF94 -:103B500002F58C7100F58060FFF790FF00F000F92E -:103B60000E4BD3F8902242F00102C3F89022D3F812 -:103B7000942242F00102C3F894220522C3F898204F -:103B80004FF06052C3F89C20054AC3F8A02008BD3E -:103B900000440258000002581844000800ED00E0FC -:103BA0001F00080308B500F0F3FAFEF7D3FA0F4B35 -:103BB000D3F8DC2042F04002C3F8DC20D3F8042123 -:103BC00022F04002C3F80421D3F80431084B1A68EC -:103BD00042F008021A601A6842F004021A60FEF706 -:103BE0003DFFBDE80840FEF7DDBC00BF00440258C1 -:103BF0000018024870470000114BD3F8E82042F04B -:103C00000802C3F8E820D3F8102142F00802C3F8F4 -:103C100010210C4AD3F81031D36B43F00803D3635F -:103C2000C722094B9A624FF0FF32DA6200229A6192 -:103C30005A63DA605A6001225A611A60704700BF05 -:103C4000004402580010005C000C0040094A08B50E -:103C50001169D3680B40D9B29B076FEA010111616A -:103C600007D5202383F31188FEF794FA002383F30A -:103C7000118808BD000C0040384B4FF0FF31D3F8DD -:103C80008020C3F88010D3F880200022C3F8802061 -:103C9000D3F88000D3F88400C3F88410D3F88400EC -:103CA000C3F88420D3F88400D86F40F0FF4040F47C -:103CB000FF0040F43F5040F03F00D867D86F20F03D -:103CC000FF4020F4FF0020F43F5020F03F00D86771 -:103CD000D86FD3F888006FEA40506FEA5050C3F8AD -:103CE0008800D3F88800C0F30A00C3F88800D3F82E -:103CF0008800D3F89000C3F89010D3F89000C3F870 -:103D00009020D3F89000D3F89400C3F89410D3F81F -:103D10009400C3F89420D3F89400D3F89800C3F823 -:103D20009810D3F89800C3F89820D3F89800D3F8E7 -:103D30008C00C3F88C10D3F88C00C3F88C20D3F817 -:103D40008C00D3F89C00C3F89C10D3F89C10C3F8E7 -:103D50009C20D3F89C3000F0E7B900BF0044025823 -:103D6000614B0122C3F80821604BD3F8F42042F0E4 -:103D70000202C3F8F420D3F81C2142F00202C3F877 -:103D80001C210222D3F81C31594BDA605A68910485 -:103D9000FCD5584A1A6001229A60574ADA6000221C -:103DA0001A614FF440429A61514B9A699204FCD5D2 -:103DB0001A6842F480721A604C4B1A6F12F4407FFA -:103DC00004D04FF480321A6700221A671A6842F052 -:103DD00001021A60454B1A685007FCD500221A618F -:103DE0001A6912F03802FBD1012119604FF08041AD -:103DF00059605A67414ADA62414A1A611A6842F4C4 -:103E000080321A60394B1A689103FCD51A6842F463 -:103E100080521A601A689204FCD53A4A3A499A626A -:103E200000225A6319633949DA6399635A64384A3C -:103E30001A64384ADA621A6842F0A8521A602B4BA8 -:103E40001A6802F02852B2F1285FF9D148229A612B -:103E50004FF48862DA6140221A622F4ADA644FF026 -:103E600080521A652D4A5A652D4A9A6532232D4A89 -:103E70001360136803F00F03022BFAD11B4B1A696E -:103E800042F003021A611A6902F03802182AFAD1C4 -:103E9000D3F8DC2042F00052C3F8DC20D3F8042130 -:103EA00042F00052C3F80421D3F80421D3F8DC20F7 -:103EB00042F08042C3F8DC20D3F8042142F0804273 -:103EC000C3F80421D3F80421D3F8DC2042F00042E7 -:103ED000C3F8DC20D3F8042142F00042C3F80421E7 -:103EE000D3F80431704700BF0080005100440258ED -:103EF0000048025800C000F0020000010000FF016D -:103F00000088900832206000630209011D0204004D -:103F100047040508FD0BFF01200000200010E00011 -:103F200000010100002000524FF0B04208B5D2F865 -:103F3000883003F00103C2F8883023B1044A1368C3 -:103F40000BB150689847BDE80840FEF7E1BD00BFDF -:103F5000544F00204FF0B04208B5D2F8883003F03B -:103F60000203C2F8883023B1044A93680BB1D068C9 -:103F70009847BDE80840FEF7CBBD00BF544F002076 -:103F80004FF0B04208B5D2F8883003F00403C2F80D -:103F9000883023B1044A13690BB150699847BDE8D2 -:103FA0000840FEF7B5BD00BF544F00204FF0B042AF -:103FB00008B5D2F8883003F00803C2F8883023B17E -:103FC000044A93690BB1D0699847BDE80840FEF7F1 -:103FD0009FBD00BF544F00204FF0B04208B5D2F84B -:103FE000883003F01003C2F8883023B1044A136A02 -:103FF0000BB1506A9847BDE80840FEF789BD00BF85 -:10400000544F00204FF0B04310B5D3F8884004F46B -:104010007872C3F88820A30604D5124A936A0BB1BC -:10402000D06A9847600604D50E4A136B0BB1506BEB -:104030009847210604D50B4A936B0BB1D06B984778 -:10404000E20504D5074A136C0BB1506C9847A305E1 -:1040500004D5044A936C0BB1D06C9847BDE810406E -:10406000FEF756BD544F00204FF0B04310B5D3F8C3 -:10407000884004F47C42C3F88820620504D5164ABF -:10408000136D0BB1506D9847230504D5124A936DFB -:104090000BB1D06D9847E00404D50F4A136E0BB1F5 -:1040A000506E9847A10404D50B4A936E0BB1D06EA5 -:1040B0009847620404D5084A136F0BB1506F9847B4 -:1040C000230404D5044A936F0BB1D06F9847BDE821 -:1040D0001040FEF71DBD00BF544F002008B5034837 -:1040E000FDF7FCF8BDE80840FEF712BDCC23002028 -:1040F00008B50348FDF7F2F8BDE80840FEF708BD33 -:104100003824002008B50348FDF7E8F8BDE808406A -:10411000FEF7FEBCA424002008B5FFF797FDBDE81C -:104120000840FEF7F5BC0000062108B50846FFF779 -:10413000A7FA06210720FFF7A3FA06210820FFF7B8 -:104140009FFA06210920FFF79BFA06210A20FFF7B4 -:1041500097FA06211720FFF793FA06212820FFF788 -:104160008FFA09217A20FFF78BFA07213220FFF717 -:1041700087FA0C212620FFF783FA0C212720FFF76E -:104180007FFA0C215220BDE80840FFF779BA000001 -:1041900008B5FFF771FD00F00DF8FDF7B1FAFDF776 -:1041A00089FCFDF75BFBFFF725FDBDE80840FFF745 -:1041B00047BC00000023054A19460133102BC2E911 -:1041C000001102F10802F8D1704700BF544F0020DF -:1041D00010B501390244904201D1002005E0037876 -:1041E00011F8014FA34201D0181B10BD0130F2E7B6 -:1041F000034611F8012B03F8012B002AF9D170476F -:1042000053544D333248373F3F3F0053544D3332C0 -:10421000483734332F37353300000000C8320020D0 -:10422000CC23002038240020A42400200096000085 -:10423000000000000000000000000000000000007E -:104240000000000000000000C9160008B5160008B4 -:10425000F1160008DD160008E9160008D51600085A -:10426000C1160008AD160008FD1600080000000089 -:10427000D9170008C517000801180008ED17000835 -:10428000F9170008E5170008D1170008BD17000846 -:104290000D180008000000000100000000000000F0 -:1042A0006D61696E0000000069646C6500000000CB -:1042B000A842000850310020C83200200100000050 -:1042C00051210008000000004865782F50726F6689 -:1042D00069434E430025424F415244252D424C0034 -:1042E0002553455249414C250000000002000000C2 -:1042F00000000000F9190008691A00084000400099 -:10430000704B0020804B00200200000000000000E5 -:104310000300000000000000B11A000800000000C7 -:1043200010000000904B0020000000000100000081 -:1043300000000000044E0020010102004125000899 -:1043400051240008ED240008D12400084300000097 -:104350005443000809024300020100C0320904006E -:1043600000010202010005240010010524010001E2 -:10437000042402020524060001070582030800FF49 -:1043800009040100020A00000007050102400000C4 -:10439000070581024000000012000000A043000851 -:1043A0001201100102000040AE2D161000020102A1 -:1043B000030100000403090425424F415244250033 -:1043C000437562654F72616E676500303132333418 -:1043D0003536373839414243444546000000000035 -:1043E000051C0008BD1E0008691F000840004000B1 -:1043F0003C4F00203C4F0020010000004C4F0020AB -:1044000080000000400100000800000000010000E2 -:1044100000040000080000000000812A00000000E5 -:10442000AAAAAAAA00000024FFFE000000000000C3 -:1044300000A00A000001000000000000AAAAAAAA29 -:1044400000000000FFFF000000000000000000006E -:104450001400005400000000AAAAAAAA14000054E4 -:10446000FFFF0000000000000000000000681A00CC -:1044700000000000AAAA8AAA00541500FFFF00004D -:10448000000070077700000040810201001000006A -:10449000AAAAAAAA00410100F7FF000000000070CC -:1044A000070000000000000000000000AAAAAAAA5D -:1044B00000000000FFFF00000000000000000000FE -:1044C0000000000000000000AAAAAAAA0000000044 -:1044D000FFFF0000000000000000000000000000DE -:1044E00000000000AAAAAAAA00000000FFFF000026 -:1044F00000000000000000000000000000000000BC -:10450000AAAAAAAA00000000FFFF00000000000005 -:10451000000000000000000000000000AAAAAAAAF3 -:1045200000000000FFFF000000000000000000008D -:104530000000000000000000AAAAAAAA00000000D3 -:10454000FFFF00000000000000000000000000006D -:104550008C0000000000000000001E0000000000B1 -:10456000FF00000000000000004200083F000000C3 -:10457000500400000B4200083F00000000960000BD -:104580000000080096000000000800000400000081 -:10459000B44300080000000000000000000000001C -:0C45A0000000000000000000000000000F +:1000000000060020E1020008E3020008E302000805 +:10001000E3020008E3020008E3020008E30200082C +:10002000E3020008E3020008E30200089D8A0008DA +:10003000E3020008E3020008E3020008E30200080C +:10004000E3020008E3020008E3020008E3020008FC +:10005000E3020008E3020008497F0008757F0008FA +:10006000A17F0008CD7F0008F97F0008E3020008A7 +:10007000E3020008E3020008E3020008E3020008CC +:10008000E3020008E3020008E3020008E3020008BC +:10009000E3020008E3020008E302000825800008EC +:1000A000E3020008E3020008E3020008E30200089C +:1000B000E3020008E3020008E3020008E30200088C +:1000C000E3020008E3020008E3020008E30200087C +:1000D000E3020008E30200081181000825810008FE +:1000E00089800008E3020008E3020008E302000838 +:1000F000E3020008E3020008E3020008E30200084C +:10010000E3020008FD8000084D810008E3020008BA +:10011000E3020008E3020008E3020008E30200082B +:10012000E3020008E3020008E3020008E30200081B +:10013000E3020008E3020008E3020008E30200080B +:10014000E3020008E3020008E3020008E3020008FB +:10015000E3020008E3020008E3020008E3020008EB +:10016000E3020008E3020008E3020008E3020008DB +:10017000E3020008317C0008E3020008E302000803 +:10018000E3020008E302000839810008E3020008E6 +:10019000E3020008E3020008E3020008E3020008AB +:1001A000E3020008E3020008E3020008E30200089B +:1001B000E3020008E3020008E3020008E30200088B +:1001C000E3020008E3020008E3020008E30200087B +:1001D000E30200081D7C0008E3020008E3020008B7 +:1001E000E3020008E3020008E3020008E30200085B +:1001F000E3020008E3020008E3020008E30200084B +:10020000E3020008E3020008E3020008E30200083A +:10021000E3020008E3020008E3020008E30200082A +:10022000E3020008E3020008E3020008E30200081A +:10023000E3020008E3020008E3020008E30200080A +:10024000E3020008E3020008E3020008E3020008FA +:10025000E3020008E3020008E3020008E3020008EA +:10026000E3020008E3020008E3020008E3020008DA +:10027000E3020008E3020008E3020008E3020008CA +:10028000E3020008E3020008E3020008E3020008BA +:10029000E3020008E3020008E3020008E3020008AA +:1002A000E3020008E3020008E3020008E30200089A +:1002B000E3020008E3020008E3020008E30200088A +:1002C000E3020008E3020008E3020008E30200087A +:1002D000E3020008E3020008E3020008E30200086A +:1002E00002E000F000F8FEE772B6374880F30888B5 +:1002F000364880F3098836483649086040F20000E5 +:10030000CCF200004EF63471CEF200010860BFF36B +:100310004F8FBFF36F8F40F20000C0F2F0004EF637 +:100320008851CEF200010860BFF34F8FBFF36F8F8B +:100330004FF00000E1EE100A4EF63C71CEF20001E3 +:100340000860062080F31488BFF36F8F06F0DCFE90 +:1003500006F0ECF84FF055301F491B4A91423CBF64 +:1003600041F8040BFAE71D49184A91423CBF41F895 +:10037000040BFAE71A491B4A1B4B9A423EBF51F83D +:10038000040B42F8040BF8E700201849184A914280 +:100390003CBF41F8040BFAE706F0F4FE06F04AF918 +:1003A000144C154DAC4203DA54F8041B8847F9E7A6 +:1003B00000F0C4F9114C124DAC4203DA54F8041B9E +:1003C0008847F9E706F0DCBE000600200022002086 +:1003D0000000000808ED00E00000002000060020FA +:1003E000B896000800220020D8220020D822002041 +:1003F00020670020E0020008E0020008E002000898 +:10040000E00200082DE9F04F2DED108AC1F80CD064 +:10041000D0F80CD0BDEC108ABDE8F08F002383F338 +:1004200011882846A047002005F072FEFEE705F07F +:10043000B1FD00DFFEE7000053B94AB9002908BF4B +:1004400000281CBF4FF0FF314FF0FF3000F074B9AF +:10045000ADF1080C6DE904CE00F006F8DDF804E01B +:10046000DDE9022304B070472DE9F047089D0446FA +:100470008E46002B4DD18A42944669D9B2FA82F257 +:1004800052B101FA02F3C2F1200120FA01F10CFA93 +:1004900002FC41EA030E94404FEA1C48210CBEFBCB +:1004A000F8F61FFA8CF708FB16E341EA034306FB54 +:1004B00007F199420AD91CEB030306F1FF3080F0E3 +:1004C0001F81994240F21C81023E63445B1AA4B230 +:1004D000B3FBF8F008FB103344EA034400FB07F7D2 +:1004E000A7420AD91CEB040400F1FF3380F00A8113 +:1004F000A74240F207816444023840EA0640E41B08 +:1005000000261DB1D4400023C5E900433146BDE8B3 +:10051000F0878B4209D9002D00F0EF800026C5E955 +:10052000000130463146BDE8F087B3FA83F6002E6D +:100530004AD18B4202D3824200F2F980841A61EBE5 +:10054000030301209E46002DE0D0C5E9004EDDE703 +:1005500002B9FFDEB2FA82F2002A40F09280A1EBEB +:100560000C014FEA1C471FFA8CFE0126200CB1FB40 +:10057000F7F307FB131140EA01410EFB03F0884239 +:1005800008D91CEB010103F1FF3802D2884200F2C6 +:10059000CB804346091AA4B2B1FBF7F007FB101158 +:1005A00044EA01440EFB00FEA64508D91CEB0404F6 +:1005B00000F1FF3102D2A64500F2BB800846A4EB51 +:1005C0000E0440EA03409CE7C6F12007B34022FA3C +:1005D00007FC4CEA030C20FA07F401FA06F31C436B +:1005E000F9404FEA1C4900FA06F3B1FBF9F8200C78 +:1005F0001FFA8CFE09FB181140EA014108FB0EF0BE +:10060000884202FA06F20BD91CEB010108F1FF3A0D +:1006100080F08880884240F28580A8F10208614419 +:10062000091AA4B2B1FBF9F009FB101144EA014127 +:1006300000FB0EFE8E4508D91CEB010100F1FF34D2 +:100640006CD28E456AD90238614440EA0840A0FB6A +:100650000294A1EB0E01A142C846A64656D353D040 +:100660005DB1B3EB080261EB0E0101FA07F722FA64 +:1006700006F3F1401F43C5E9007100263146BDE88D +:10068000F087C2F12003D8400CFA02FC21FA03F3F0 +:10069000914001434FEA1C471FFA8CFEB3FBF7F071 +:1006A00007FB10360B0C43EA064300FB0EF69E4296 +:1006B00004FA02F408D91CEB030300F1FF382FD22F +:1006C0009E422DD9023863449B1B89B2B3FBF7F6D7 +:1006D00007FB163341EA034106FB0EF38B4208D9B0 +:1006E0001CEB010106F1FF3816D28B4214D9023EF1 +:1006F0006144C91A46EA004638E72E46284605E70F +:100700000646E3E61846F8E64B45A9D2B9EB0208DF +:1007100064EB0C0E0138A3E74646EAE7204694E76F +:100720004046D1E7D0467BE7023B614432E73046A2 +:1007300009E76444023842E7704700BF38B500F06B +:10074000DDFB06F0EFFB054606F0D4FC0446E0B9FD +:10075000104B9D421BD001339D4241F2883504BFAE +:1007600001240025002006F0E7FB0CB100F07AF828 +:1007700001F03AFB01F0F6F900F028FD08B100F0B5 +:1007800071F8284600F01CF9F9E70025EAE705466C +:10079000E8E700BF010007B008B501F0AFF9A0F12C +:1007A00020035842584108BD07B541F21203022107 +:1007B00001A8ADF8043001F0BFF903B05DF804FB07 +:1007C00038B5302383F31188174803680BB105F05F +:1007D00083FD0023154A4FF47A71134805F072FD2A +:1007E000002383F31188124C236813B12368013B63 +:1007F0002360636813B16368013B63600D4D2B7820 +:1008000033B963687BB9022001F068FA3223636070 +:100810002B78032B07D163682BB9022001F05EFA15 +:100820004FF47A73636038BDD8220020C1070008F6 +:10083000F8230020F0220020084B187003280CD861 +:10084000DFE800F008050208022001F03DBA0220AE +:1008500001F030BA024B00225A607047F0220020AB +:10086000F8230020F8B5504B504A1C461968013156 +:1008700000F0998004339342F8D162684C4B9A425D +:1008800040F291804B4B9B6803F1006303F500330A +:100890009A4280F08880002001F07EF90220FFF764 +:1008A000CBFF454B0021D3F8E820C3F8E810D3F87C +:1008B0001021C3F81011D3F81021D3F8EC20C3F89D +:1008C000EC10D3F81421C3F81411D3F81421D3F881 +:1008D000F020C3F8F010D3F81821C3F81811D3F89A +:1008E0001821D3F8802042F00062C3F88020D3F8AA +:1008F000802022F00062C3F88020D3F88020D3F853 +:10090000802042F00072C3F88020D3F8802022F0CB +:100910000072C3F88020D3F8803072B64FF0E02325 +:10092000C3F8084DD4E90004BFF34F8FBFF36F8FB6 +:10093000224AC2F88410BFF34F8F536923F48033E7 +:100940005361BFF34F8FD2F8803043F6E076C3F3A4 +:10095000C905C3F34E335B0103EA060C29464CEA92 +:1009600081770139C2F87472F9D2203B13F1200F5C +:10097000F2D1BFF34F8FBFF36F8FBFF34F8FBFF332 +:100980006F8F536923F4003353610023C2F8503250 +:10099000BFF34F8FBFF36F8F302383F311888546EA +:1009A00080F308882047F8BD0000020820000208F4 +:1009B000FFFF0108002200200044025800ED00E083 +:1009C0002DE9F04F93B0B44B2022FF2100900AA8EC +:1009D0009D6801F0B3F9B14A1378A3B90121B04879 +:1009E00011700360302383F3118803680BB105F0A5 +:1009F00073FC0023AB4A4FF47A71A94805F062FCFE +:100A0000002383F31188009B13B1A74B009A1A604F +:100A1000A64A1378032B03D000231370A24A536015 +:100A20004FF0000A009CD3465646D146012001F003 +:100A30004BF924B19C4B1B68002B00F02682002050 +:100A400001F05CF80390039B002BF2DB012001F026 +:100A500031F9039B213B1F2BE8D801A252F823F068 +:100A6000E10A0008090B00089D0B00082D0A000888 +:100A70002D0A00082D0A00082F0C0008FF0D0008A1 +:100A8000190D00087B0D0008A30D0008C90D000812 +:100A90002D0A0008DB0D00082D0A00084D0E000885 +:100AA000810B00082D0A0008910E0008ED0A0008CD +:100AB000810B00082D0A00087B0D00082D0A000894 +:100AC0002D0A00082D0A00082D0A00082D0A00082A +:100AD0002D0A00082D0A00082D0A00089D0B0008A9 +:100AE0000220FFF759FE002840F0F981009B022107 +:100AF00005A8BAF1000F08BF1C4641F21233ADF849 +:100B0000143001F019F891E74FF47A7000F0F6FF15 +:100B1000071EEBDB0220FFF73FFE0028E6D0013F77 +:100B2000052F00F2DE81DFE807F0030A0D1013360F +:100B30000523042105A8059300F0FEFF17E004211A +:100B40005548F9E704215A48F6E704215948F3E7E4 +:100B50004FF01C08404608F1040801F01FF804217A +:100B6000059005A800F0E8FFB8F12C0FF2D10120A4 +:100B70004FF0000900FA07F747EA0B0B5FFA8BFB0F +:100B800001F028F926B10BF00B030B2B08BF002452 +:100B9000FFF70AFE4AE704214748CDE7002EA5D01B +:100BA0000BF00B030B2BA1D10220FFF7F5FD07463D +:100BB00000289BD00120002600F0EEFF0220FFF766 +:100BC0003BFE1FFA86F8404600F0F6FF0446B0B13F +:100BD000039940460136A1F140025142514100F0D3 +:100BE000FBFF0028EDD1BA46044641F21213022160 +:100BF00005A83E46ADF8143000F09EFF16E72546E6 +:100C00000120FFF719FE244B9B68AB4207D9284609 +:100C100000F0C4FF013040F067810435F3E70025A0 +:100C2000224BBA463E461D701F4B5D60A8E7002E62 +:100C30003FF45CAF0BF00B030B2B7FF457AF02209C +:100C4000FFF7FAFD322000F059FFB0F10008FFF67F +:100C50004DAF18F003077FF449AF0F4A08EB0503C7 +:100C6000926893423FF642AFB8F5807F3FF73EAFC0 +:100C7000124BB845019323DD4FF47A7000F03EFF2C +:100C80000390039A002AFFF631AF039A0137019BC4 +:100C900003F8012BEDE700BF00220020F423002021 +:100CA000D8220020C1070008F8230020F0220020ED +:100CB00004220020082200200C220020F422002020 +:100CC000C820FFF769FD074600283FF40FAF1F2D2E +:100CD00011D8C5F120020AAB25F003008449424532 +:100CE000184428BF4246019201F002F8019AFF2100 +:100CF0007F4801F023F84FEAA803C8F387027C4934 +:100D00002846019301F022F8064600283FF46DAF13 +:100D1000019B05EB830533E70220FFF73DFD00282B +:100D20003FF4E4AE00F076FF00283FF4DFAE00278A +:100D3000B846704B9B68BB4218D91F2F11D80A9B2D +:100D400001330ED027F0030312AA134453F8203CBA +:100D500005934046042205A9043701F0A5F8804612 +:100D6000E7E7384600F01AFF0590F2E7CDF8148067 +:100D7000042105A800F0E0FE02E70023642104A896 +:100D8000049300F0CFFE00287FF4B0AE0220FFF7FE +:100D900003FD00283FF4AAAE049800F031FF05904F +:100DA000E6E70023642104A8049300F0BBFE0028BA +:100DB0007FF49CAE0220FFF7EFFC00283FF496AED4 +:100DC000049800F01FFFEAE70220FFF7E5FC002887 +:100DD0003FF48CAE00F02EFFE1E70220FFF7DCFCD1 +:100DE00000283FF483AE05A9142000F029FF074630 +:100DF0000421049004A800F09FFE3946B9E7322090 +:100E000000F07CFE071EFFF671AEBB077FF46EAEEE +:100E1000384A07EB0903926893423FF667AE022017 +:100E2000FFF7BAFC00283FF461AE27F003074F44F8 +:100E3000B9453FF4A5AE484609F1040900F0AEFEFD +:100E40000421059005A800F077FEF1E74FF47A70D1 +:100E5000FFF7A2FC00283FF449AE00F0DBFE0028BB +:100E600044D00A9B01330BD008220AA9002000F0CD +:100E70006DFF00283AD02022FF210AA800F05EFF73 +:100E8000FFF792FC1C4805F049F913B0BDE8F08F5C +:100E9000002E3FF42BAE0BF00B030B2B7FF426AE92 +:100EA0000023642105A8059300F03CFE07460028B6 +:100EB0007FF41CAE0220FFF76FFC804600283FF451 +:100EC00015AEFFF771FC41F2883005F027F905985F +:100ED00000F0C8FF46463C4600F07CFFA6E506460B +:100EE0004EE64FF0000901E6BA467EE637467CE65C +:100EF000F422002000220020A0860100704700009C +:100F00007047000070470000704700002DE9F04175 +:100F100000F58037044616463B7C5BB9C06810304C +:100F2000204400F0E5FEE5683544B5F5004FE56086 +:100F300002D816B1BDE8F081DEB905F07F0605F1F3 +:100F400010000021C6F180062044F6B232462E443D +:100F500000F0F4FEA06804F11008324600F10060D1 +:100F6000414600F5003005F0A5FD30B901233B7482 +:100F7000E0E74FF400463546ECE7A26805F11001C2 +:100F8000404632442144A260E268521BE26000F015 +:100F9000AFFE0220BDE8F04100F0A0BE183000F026 +:100FA000E9BC000010B5044607F028FE204610BD3D +:100FB00010B5044607F022FE204610BDC3B280B231 +:100FC000A3F14102052A02D8373800B27047613BCD +:100FD000052B94BF57383038F7E70000F8B50446C2 +:100FE0001546084603220C4900F08CFE014688B9DC +:100FF00008346F1C15F91100FFF7E0FF064617F9DA +:1010000011000131FFF7DAFF102940EA061004F859 +:10101000010BEFD1F8BD00BF748D00082DE9F04F32 +:10102000ADF53F7D0746416801222AA802F030FE57 +:10103000002840F087800646824681461125DFF869 +:101040000C81DFF80CB101AB4FF4805241462AA865 +:1010500002F07EFF002875D1019AB2F5805F71D849 +:10106000002A65D00446019A9442ECD2282D0FD074 +:1010700008DC132D2DD01E2D39D0112D13D00134A5 +:10108000A4B2F0E7322D2DD0372D2FD02D2DF6D153 +:101090003B68121B08EB040138461B692D25984755 +:1010A000BDF80440EBE7121B022A09D9594608EBA8 +:1010B000040000F027FE18B902342825A4B2DEE7A8 +:1010C00018F804303A2B3DD00A2B1CBFA14613253B +:1010D000D5E718F804300A2B34D03A2B04BFA246C7 +:1010E0003225CCE718F80430202BC8D0264618F853 +:1010F00004300A2B1AD1AAEB090208EB090102A855 +:1011000011254F2A28BF4F2207F020FEA21B08EB13 +:10111000060116A84F2A28BF4F2207F017FE3B688A +:1011200016AA02A9DB6838469847A8E71E25A6E755 +:101130003B68384604491B69984701200DF53F7DFF +:10114000BDE8F08F0020F9E7768E0008002400202B +:10115000788D000800F1180110B5044686B00846E5 +:10116000019100F0F1FB2046FFF758FF60B10199B3 +:1011700002A800F049FC102204F1080102A807F0BF +:1011800061FDB0FA80F0400906B010BD70B50446AC +:101190000025EEB2304600F00FFD58B10021304678 +:1011A000013500F019FD08B9002070BD022000F0E3 +:1011B00095FDEEE72046FFF731FF0028F4D004F557 +:1011C0008034207C80F00100EFE70000F0B5C9B06A +:1011D00005F0C0FE00F096FE18B90025284649B07B +:1011E000F0BD69462A4802F075FF00284BD1294C12 +:1011F000204602F09FFF284802F09CFF274802F09B +:1012000099FF2146224803F011F80028E5D170200B +:1012100007F0F6FC064610B1214B446003603368CA +:1012200030469B689847054600282ED01A4F19482B +:10123000394602F0FBFF05460028CED1194807F0D9 +:10124000DFFC044638B1184B4760036000F580337B +:10125000C0E902551D74236820469B6898470546DF +:1012600028B10E490C4802F0E1FF0028B5D13368DF +:1012700030465B6898471CB1236820465B689847F6 +:1012800000F028FEAAE70025FAE70446EFE700BFD2 +:101290007C8D00088C8D0008A38D0008B98D000896 +:1012A000DC8D000814000100F88D00082DE9F04FD6 +:1012B000D44A8DB00B68D0F804A001931A44036897 +:1012C000D14E1A44D1F81C90DFF8B4C3DFF8B4B3A0 +:1012D000D0E90234634003EA0A03634013444A68D6 +:1012E00002920AEB7363029CC84A2244C4682244F7 +:1012F00084688AEA04051D40654015448A680392A3 +:1013000003EB3555039CC24A2244846822448AEA8E +:1013100003042C4084EA0A041444CA6805EBF4343C +:101320000492164483EA0502224056445A4032444D +:101330000E69059604EBB222059FB64E3E441E444C +:1013400085EA040313406B4033444E69069602EB72 +:101350007363069FB04E3E442E4484EA02051D404E +:10136000654035448E69079603EB3555079FAB4EB4 +:101370003E44264482EA03042C4054403444A84EA0 +:101380004E4405EBF434164483EA050222405A40E9 +:1013900032440E6A089604EBB222089FA14E3E44E6 +:1013A0001E4485EA040313406B4033444E6A099699 +:1013B00002EB7363099F9C4ED1F830E03E44D1F8B4 +:1013C0003880F3442E4484EA02051D4065403544CC +:1013D0008E6AA6F5244703EB35550A964F3F2744FE +:1013E00082EA03042C4054403C44CF6A0B9705EB3F +:1013F000F4340B9E8D4F3744029E174483EA050256 +:1014000022405A403A448A4F774404EBB2221F44A8 +:1014100085EA040313406B403B444F6BBC4402EB32 +:101420007363654484EA020C0CEA030C8CEA040C36 +:101430006544DFF854C2C44403EB3555A44482EA42 +:1014400003042C4054406444D1F83CC0794905EB76 +:10145000F4346144114483EA050222405A400A44AC +:10146000754904EBB2223144079E194484EA020311 +:101470002B4063400B44714902EBF36331440B9EF4 +:101480000D4482EA03012140514029446C4D03EB95 +:10149000F1513544019E254483EA010414405C4027 +:1014A0002C44684D01EBB4443544069E154481EA52 +:1014B00004021A404A402A44634D04EB3232354458 +:1014C0000A9E1D4484EA02030B4063402B445F4D97 +:1014D00002EBF3633544059E0D4482EA030121408B +:1014E000514029445A4D03EBF1516544254483EAA8 +:1014F000010414405C402C44564D01EBB444354487 +:10150000099E154481EA04021A404A402A44524D79 +:1015100004EB32323544049E1D4484EA02030B403E +:1015200063402B444D4D02EBF36345440D4482EA86 +:101530000301214051402944494D03EBF151354409 +:10154000089E2C4483EA010515405D402C44454D1E +:1015500001EBB4443544039E2A4481EA04051D404E +:101560004D402A44404D04EB32323D442B4484EA42 +:10157000020593440D4065402B443C4D02EBF36360 +:101580003544069E294482EA0305254055402944F6 +:10159000374D03EBF1514D442C4483EA01051540CE +:1015A0005D40254401EBB54581EA050404EA0302E8 +:1015B0004A405A44A6F5B82B089E05EB3232ABF2EE +:1015C000BE6B54405B4423442A4C344402EB3373D7 +:1015D0000B9E0C4485EA020159402144264C3444B8 +:1015E00003EB7151029E254482EA03044C402544DA +:1015F000224C444401EB3545144483EA01026A401D +:10160000224443E078A46AD7EECEBDC156B7C7E8FE +:10161000DB702024AF0F7CF52AC68747134630A81D +:10162000019546FDD8988069AFF7448BBED75C8999 +:101630002211906B2108B44962251EF640B340C0C8 +:10164000515A5E26AAC7B6E95D102FD6531444023C +:1016500081E6A1D8C8FBD3E7E6CDE121D60737C3A1 +:10166000870DD5F4ED145A4505E9E3A9F8A3EFFC7D +:10167000D9026F6781F6718722619D6D0C38E5FD97 +:10168000937198FD8A4C2A8D8E4379A6934C3444ED +:1016900005EB7222059E1C4481EA05035340234456 +:1016A0008F4C344402EB33730A9E0C4485EA0201EA +:1016B000594021448B4C4C4403EB7151254482EA40 +:1016C00003044C402C44884D354401EB3444019EC6 +:1016D000154483EA010262402A44844D3D4404EBF0 +:1016E00072221D4481EA040353402B44804D35444B +:1016F00002EB3373049E294484EA02055D402944C9 +:101700007C4D354403EB7151079E254482EA030466 +:101710004C402C44784D354401EB3444099E2A4416 +:1017200083EA010565401544744A324404EB75258B +:10173000039E134481EA04026A401A44704B7344C6 +:1017400005EB32720B4484EA0501514019446D4B9C +:10175000634402EB71511C4485EA02034B401C4474 +:10176000694B334401EB3444019E1D4482EA01037A +:1017700063402B44654D04EB73233544069E1544AA +:1017800063EA010262402A44614D03EBB2624D44B8 +:1017900062EA040929445F4D89EA03094544494442 +:1017A0002C445D4D02EBB1513544049E61EA0308BF +:1017B0001D4488EA0208444401EB744464EA0203CD +:1017C0004B402B44554D04EBF323754463EA010E63 +:1017D00015448EEA040E0EEB0502514D03EBB26286 +:1017E000354462EA040E29440A9D8EEA030EA5F5EB +:1017F00080164C4D7144A6F6833602EBB151264457 +:1018000061EA030454403444029E01EB74443544BD +:1018100064EA02061D444E407319089E424D04EBD3 +:10182000F323354463EA01061544664072193F4DBF +:1018300003EBB262654462EA040629443C4D5E4013 +:101840003144079E02EBB151354461EA03062C4452 +:10185000384D56403D443444059E1D4401EB7444CC +:1018600064EA02034B402B44334D04EBF32335442D +:101870000B9E154463EA010262402A442F4D03EB9C +:10188000B2623544039E0D4462EA04015940294482 +:101890002B4D02EBB15135442A4E254461EA030435 +:1018A00054402C44099D01EB74442E4464EA020523 +:1018B0001E4485EA01039D1903681A440AEB0403D8 +:1018C00003EBF5230260436083681C44C36819443A +:1018D0008460C1600DB0BDE8F08F00BF44EABEA4D3 +:1018E000A9CFDE4B604BBBF670BCBFBEC67E9B284B +:1018F000FA27A1EA8530EFD4051D880439D0D4D960 +:10190000E599DBE6F87CA21F6556ACC4442229F4B5 +:1019100097FF2A43A72394AB39A093FCC3595B6577 +:1019200092CC0C8FD15D84854F7EA86FE0E62CFEB3 +:10193000144301A3A111084E827E53F735F23ABD3C +:10194000BBD2D72A91D386EB094B036003F18833CE +:10195000436003F12943A3F59613A3F68B638360D9 +:10196000A3F18833C3600023C0E90433704700BF8C +:10197000012345672DE9F8431446026905460E46E2 +:10198000E300C2F3C50800F118079B18036122BFEA +:1019900043690133436112F4FC7F436903EB5473E1 +:1019A000436114D0C8F1400907EB08004C4504D24C +:1019B0002246BDE8F84307F055B9403C4A464E443C +:1019C00007F050F9444439462846FFF76FFCA0461B +:1019D00006EB0409B8F13F0FA9EB08010AD9402230 +:1019E000384607F03FF939462846A8F14008FFF786 +:1019F0005DFCEFE7A1096FF03F02384602FB0142B0 +:101A000006EB8111D5E7000070B50B6901F11805EF +:101A100006460C46C3F3C503EA18501C8022EA545C +:101A2000C3F13F02072A1FD8002100F087F9294699 +:101A30002046FFF73BFC38220021284600F07EF9C3 +:101A4000236929462046236563696365FFF72EFCF9 +:101A500021461022304607F005F920465822002181 +:101A6000BDE8704000F06AB9C3F137020021E5E734 +:101A70002DE9F84F4FF47A7306460D46002402FB19 +:101A800003F7DFF85080DFF8509098F900305FFAE4 +:101A900084FA5A1C01D0A34210D159F824002A46D6 +:101AA00031460368D3F820B03B46D847854205D17C +:101AB000074B012083F800A0BDE8F88F0134042C07 +:101AC000E3D14FF4FA7004F029FB0020F4E700BFE3 +:101AD00044340020102200201422002070B5044657 +:101AE0004FF47A76412C254628BF412506FB05F0A8 +:101AF00004F014FB641BF5D170BD0000002307B592 +:101B0000024601210DF107008DF80730FFF7B0FF05 +:101B100020B19DF8070003B05DF804FB4FF0FF30E3 +:101B2000F9E700000A46042108B5FFF7A1FF80F09D +:101B30000100C0B2404208BD074B0A4630B41978D4 +:101B4000064B53F82140014623682046DD69044BCB +:101B5000AC4630BC604700BF443400201422002053 +:101B6000A086010070B50A4E00240A4D04F046FF1D +:101B7000308028683388834208D904F03BFF2B6803 +:101B800004440133B4F5003F2B60F2D370BD00BFB5 +:101B9000463400200034002004F0FEBF00F1006055 +:101BA00000F500300068704700F10060920000F519 +:101BB000003004F07FBF0000054B1A68054B1B88FE +:101BC0009B1A834202D9104404F014BF00207047CE +:101BD000003400204634002038B50446074D29B1B2 +:101BE00028682044BDE8384004F01CBF2868204421 +:101BF00004F006FF0028F3D038BD00BF00340020F9 +:101C00000020704700F1FF5000F58F10D0F8000859 +:101C100070470000064991F8243033B100230822B0 +:101C2000086A81F82430FFF7BFBF0120704700BF6A +:101C300004340020014B1868704700BF0010005C9E +:101C4000194B01380322084470B51D68174BC5F3C2 +:101C50000B042D0C1E88A6420BD15C680A46013C81 +:101C6000824213460FD214F9016F4EB102F8016B94 +:101C7000F6E7013A03F10803ECD181420B4602D2A8 +:101C80002C2203F8012B0424094A1688AE4204D101 +:101C9000984284BF967803F8016B013C02F104027C +:101CA000F3D1581A70BD00BF0010005C2422002040 +:101CB000388E0008022803D1024B4FF080529A61FF +:101CC000704700BF00100258022803D1024B4FF4A6 +:101CD00080529A61704700BF00100258022804D158 +:101CE000024A536983F480535361704700100258CD +:101CF000002310B5934203D0CC5CC4540133F9E700 +:101D000010BD0000013810B510F9013F3BB191F949 +:101D100000409C4203D11AB10131013AF4E71AB1F3 +:101D200091F90020981A10BD1046FCE703460246C0 +:101D3000D01A12F9011B0029FAD170470244034658 +:101D4000934202D003F8011BFAE770472DE9F843EC +:101D50001F4D14460746884695F8242052BBDFF8ED +:101D600070909CB395F824302BB92022FF2148466F +:101D70002F62FFF7E3FF95F824004146C0F1080207 +:101D800005EB8000A24228BF2246D6B29200FFF7A0 +:101D9000AFFF95F82430A41B17441E449044E4B2CE +:101DA000F6B2082E85F82460DBD1FFF733FF002858 +:101DB000D7D108E02B6A03EB82038342CFD0FFF731 +:101DC00029FF0028CBD10020BDE8F8830120FBE7E4 +:101DD00004340020024B1A78024B1A70704700BF7F +:101DE0004434002010220020F8B5194C194803F0A3 +:101DF00083FC2146174803F0ABFC24684FF47A704B +:101E0000154ED4F89020154DD2F80438114F43F0F8 +:101E10000203C2F80438FFF761FE2046104903F0C0 +:101E2000A5FDD4F890200424D2F8043823F002034E +:101E3000C2F804384FF4E133336055F8040BB8426C +:101E400002D0314603F0B6FB013CF6D1F8BD00BF2D +:101E500038950008F04800202C340020142200207F +:101E6000409500080C4B70B50C4D04461E780C4B89 +:101E700055F826209A420DD00A4B00211822184608 +:101E8000FFF75CFF0460014655F82600BDE870408E +:101E900003F090BB70BD00BF44340020142200202A +:101EA000F04800202C34002030B50A44084D9142FF +:101EB0000DD011F8013B5840082340F30004013BCA +:101EC0002C4013F0FF0384EA5000F6D1EFE730BD59 +:101ED0002083B8ED10B5084C01220849002001F01C +:101EE000B3FE23783BB1064803F0DCFA044803F064 +:101EF0000FFB0023237010BD48340020488E0008DB +:101F0000A43600201D482DE9F041036D2BB90122B4 +:101F10004FF48051503005F05FF8194E33780BB113 +:101F2000FFF7D8FF0324174F4FF00008134D154952 +:101F30002846C7F8048003F0DDFA284603F016F9B6 +:101F400048B1013C284603F0E3FA14F0FF04EED157 +:101F5000204634700FE00C4901220C4801F074FE59 +:101F6000014618B1284603F09DFAEAE7084800F058 +:101F700011F801203070BDE8F08100BFA4360020C8 +:101F8000483400203C220020488E00084C340020B9 +:101F90004C8E00080FB4002004B0704700687047F2 +:101FA00003460068596870470B0A017043700B0CB8 +:101FB000090E8370C1707047110A0270037141707D +:101FC000110C120E8170C2701A0A42711A0C1B0E8B +:101FD0008271C37170470000C36A0239023B8B42B1 +:101FE00083BF4389006C01FB0300002070470000A1 +:101FF000C2F307238A76CB760378032B01BF120C3A +:102000000A75120A4A75704700F10B010022D301CC +:1020100043EA520310F8012B52FA83F38842DAB2F2 +:10202000F5D110467047000010B5417804460020F5 +:10203000013102464901022A16BFA35C032203EBC9 +:10204000C03302F101021EBF9BB203EB500398B2F2 +:102050009142F0D810BD000002684AB1134613F84F +:10206000011B1F290DD93A29F9D1911C8B4202D0AD +:102070004FF0FF3070471278302AF9D1036000200A +:102080007047014B187870479836002038B50D46D8 +:10209000044618B9092000232B6038BD0368002BC3 +:1020A000F8D01A78002AF5D08188DA889142F1D1E7 +:1020B000587804F0BFF910F00100EBD12368EBE78A +:1020C00038B50D4640F25231144602F0B9F9FF28F6 +:1020D00007D9012C0BD9030A022468702B70204603 +:1020E00038BD30B1002CFAD001242870F7E7002465 +:1020F000F5E70446F3E700002DE9F8430026D0F8A1 +:10210000008005460C468E76836B002B4AD098F8EB +:102110000030042B4BD133463546402720E0B7F53D +:10212000187F80F0C480F90606F1010608BF023767 +:10213000D05B02372BB900F5205292B2B2F5006F96 +:102140000DD305F11A01C5F1FF0240EA0340214415 +:10215000FFF7B6FF002800F0AA80054400200346E0 +:10216000D8F8102092F82310B142D8D8002B40F0B4 +:102170009E80002D00F09B8000232544AB76637386 +:10218000D8F81020137903F03701DB0621730BD444 +:1021900002F13800FFF704FFC4E90001938963816D +:1021A000D3892381BDE8F88300200146F4E7C36C9E +:1021B00001335ED1EA6B00232E26551E184615F812 +:1021C000011F013020290CD0052908BFE52109286D +:1021D00004D10B2B9EBFE71801337E73E718013340 +:1021E00079730B28EBD1E11800204873A17E0029F8 +:1021F0004BD1002B40D06FF00C0604F10D000825E8 +:10220000361B331810F8011B002938D02E298BB249 +:102210004AD0A3F14101192903D8117B0D4200D006 +:1022200020330373EDE7B9F1000F05D100F520531A +:102230009BB2B3F5006F0BD307F11A01C7F1FF0290 +:1022400040EA09402144FFF73BFF48B10744002022 +:1022500002368146D8F80C30985B0028E3D1384626 +:10226000B9F1000F4FF0000218BF002023189A7632 +:10227000A0E7B1463746EDE73F23A3760123234489 +:1022800000219976137B03B96373D37A02F11C00A2 +:1022900003F03F0323730023FFF780FE2060636099 +:1022A000D38A6381138B7CE710250B46B9E73F2364 +:1022B0000125A37660E7000038B50546002435F80F +:1022C000020B08B9204638BD02F0EEF86308C2B22E +:1022D00003EBC43312FA83F39AB2C0F3072303EB80 +:1022E000520303EBC2339CB2E9E7000037B5C37871 +:1022F00004461BB90025284603B030BD00F14C014F +:10230000826C01234078019104F0BAF8054680B947 +:10231000A36BE070A06C226BC31A9342EAD2A3783D +:102320000199022BE6D102440123607804F0A8F859 +:10233000E1E70125DFE7000038B5836C05460C4670 +:102340008B4210D0FFF7D2FF60B92246012305F17E +:102350004C01687804F070F800281CBF4FF0FF347F +:102360000120AC6438BD0020FCE7000038B5002334 +:102370000446C3704FF0FF338364FFF7DDFF00288E +:102380004BD1B4F84A524AF655239D4207D10B224D +:10239000254904F14C0006F055FC00283FD094F884 +:1023A0004C30EB2B03D01833DBB2012B2ED84AF67E +:1023B00055239D4206D108221C4904F19E0006F0D7 +:1023C00041FC48B3B4F85730B3F5007F1ED194F800 +:1023D0005930DBB15A1E1A4218D1B4F85A30ABB199 +:1023E00094F85C30013B012B10D8B4F85D306BB130 +:1023F000B4F85F307F2B06D804F16C00FFF7CEFDF8 +:10240000B0F5803F02D3B4F8623053B94AF6552094 +:1024100085420CBF0220032038BD0420FCE70120C8 +:10242000FAE70020F8E700BF788E0008848E0008E5 +:1024300002392DE9F04701F007044FF0010A466C1C +:1024400005460AFA04F41746984606EB1136C1F31E +:10245000C809E4B2314628460136FFF76DFF18B1CE +:102460000120BDE8F087994605EB090292F84C304F +:10247000234214BF01210021414513D06340013F95 +:1024800082F84C3085F803A0EBD0640014F0FF0410 +:10249000EAD109F1010301244FF00009B3F5007FEF +:1024A000E1D1D7E70220DCE701290246F8B50C4666 +:1024B00040F28C800668F36A8B4240F28780337862 +:1024C000013B032B00F28280DFE803F00229384B46 +:1024D00004EB5405B16B304601EB5521FFF72CFF9F +:1024E00010B14FF0FF30F8BD6F1CC5F30805B16B9C +:1024F0003046354401EB572195F84C50FFF71CFF4F +:102500000028EED1C7F30807E3073E4496F84C00D5 +:1025100045EA00204CBF0009C0F30B00E3E7B16BB4 +:10252000304601EB1421FFF707FF0028D9D16400E2 +:1025300004F4FF742644B6F84C00D4E7B16B30467F +:1025400001EBD411FFF7F8FE0028CAD1A40006F170 +:102550004C0004F4FE742044FFF720FD20F070408E +:10256000C1E7D0E90430D57953EA000101D0916880 +:1025700001B95DBB9168022DA4EB01010DD1013BB6 +:10258000728940F1FF305B0A43EAC053B3FBF2F3B8 +:1025900099421BD81CD0601CA5E7032D02D193697A +:1025A0008B42F8D8D3699BB9B16B304601EBD4119B +:1025B000FFF7C2FE002894D1A0004C3600F4FE7054 +:1025C0003044FFF7EBFC20F000408CE701208AE765 +:1025D0006FF0004087E70000F8B5066804460D4636 +:1025E0003378042B0CBF4FF080524FF400128A4214 +:1025F00001D80220F8BDCA06FBD182680163D2B9B6 +:10260000022B13D83389B3EB551FF2D9F36BA363B5 +:10261000A36B6263002BECD003EB55234C36C5F360 +:1026200008050020A3633544E563E3E7F36BC2715B +:10263000002BE7D01A4677897F02BD42114604D2AB +:102640003046FFF7C9FCA063E2E72046FFF72CFF06 +:10265000431C024606D00128CBD9F36A8342C8D96D +:10266000ED1BEAE70120C5E701292DE9F047064601 +:102670000C46174608D9C36A8B4205D90378022B4A +:1026800062D003D8012B22D0022552E0033B012B5C +:10269000FAD8816B01EBD411FFF74EFE05460028F6 +:1026A00047D1A40006F14C0304F4FE741C443378B3 +:1026B000042B07D0204627F07047FFF76FFC00F08F +:1026C0007040074339462046FFF76EFC2FE001EBD0 +:1026D0005108816B01EB5821FFF72EFE054640BBE8 +:1026E00014F0010406F14C0908F1010AC8F30808C6 +:1026F00008BFFBB230461FBF19F8083003F00F02C5 +:102700003B0103F0F00318BF134309F8083001231D +:10271000B16BF37001EB5A21FFF70EFE054640B98D +:10272000CAF3080A44B1C7F3071709F80A7001236E +:10273000F3702846BDE8F08719F80A30C7F303277D +:1027400023F00F031F43F0E7816B01EB1421FFF728 +:10275000F3FD05460028ECD1640006F14C0304F4B7 +:10276000FF741F551919C7F307274F70DFE70000E3 +:10277000F8B504460E461746E3690BB91846F8BD8E +:10278000012BA6EB0305206814BFAA1C3A46691C5E +:10279000FFF76AFF0028F2D1E369013BE361EBE751 +:1027A00001292DE9F84306460C461746056802D86C +:1027B0000220BDE8F883EB6A8B42F9D97AB9A146C9 +:1027C00021463046A046FFF76FFE0446B0B92B788D +:1027D000042B02D1002F43D1F7710020E9E72B78B9 +:1027E000042B02D1C379022BE9D04FF0FF323946D6 +:1027F0002846FFF739FF0028E1D0DAE70128D7D0D3 +:10280000421C01D10120D4E72B78042B19D1EA6AAC +:10281000AB69023A93421CD308F10102A2420CD0E8 +:102820002B78042B08D10023A2EB09024946284645 +:10283000FFF7FEFD0028BCD1A146EB6AA342BFD83A +:10284000C5E7002241462846FFF70EFF0028DED0EC +:10285000AFE70133AB612B7943F001032B71DBE769 +:10286000F3798BB9B468BC4202D10223F371B4E7A7 +:1028700021463046FFF718FE012899D9431CC1D0E4 +:1028800001348442EFD0A8E7032BA6D1B368BB4242 +:10289000A3D8B2691344BB429FD3E6E770B5C379AE +:1028A0000446032B06D181688369CD18A94203D160 +:1028B0000023E371002070BD4E1C20683246FFF7F4 +:1028C000D3FE0028F7D13146F0E700002DE9F743A9 +:1028D00005460191FFF70AFD0446002849D105F19C +:1028E0004C09019928464FF40072FFF775FB214609 +:1028F000A86407464846FFF721FA6C896402B4F5DC +:10290000004F28BF4FF40044B4F5007F2FD9204674 +:1029100004F022FA804630B122460021640A0026E3 +:10292000FFF70CFA09E06408EEE72346BA194146BE +:10293000687803F0A5FD18B926446B899E42F4D34C +:10294000404604F019FA6889801B18BF012003B0C3 +:10295000BDE8F08301366B899E42F4D20123BA1997 +:102960004946687803F08CFD0028F3D0EBE7002699 +:10297000F1E70120EBE70000F8B50446FFF7B6FCED +:102980000546002842D12378032B37D12779012F20 +:1029900034D104F14C0601464FF400723046FFF783 +:1029A000CDF955234122722184F84A32AA2304F535 +:1029B0000D7084F84F2084F84B32522384F8301283 +:1029C00084F84C3084F84D30612384F8311284F857 +:1029D0004E3084F83332A16984F83222FFF7E4FAEA +:1029E000616904F50E70FFF7DFFA626B3B46314612 +:1029F00001326078A26403F043FD25710022607803 +:102A0000114603F061FD003818BF0120F8BD000039 +:102A100000232DE9F0430B6085B00F461546FFF704 +:102A20001BFB061EC0F2B281804B53F82640002CDF +:102A300000F0AE813C6005F0FE0523786BB1607854 +:102A400003F0F8FCC70708D41DB110F0040500D04E +:102A50000A25284605B0BDE8F0830023F0B22370B4 +:102A6000607003F0D3FCC10700F194810DB14207FF +:102A7000EED400212046FFF779FC022840F099802F +:102A80006E4604F2122304F25221324618461033E5 +:102A9000FFF784FA42F8040B8B42F7D1002556F871 +:102AA000041B00297DD02046FFF760FC012879D85F +:102AB0000128A26C40F0C08004F1570304F18C019E +:102AC00013F8015B002D7BD18B42F9D1B4F8B430FF +:102AD000B3F5807F74D194F8B830092B70D104F12C +:102AE0009400FFF75DFA4FF0FF33171841F1000132 +:102AF000BB4275EB010363D304F1A000FFF74EFA6C +:102B000094F8BA302063012BA37059D194F8B9908E +:102B100003FA09F91FFA89F36381002B50D0444B63 +:102B200004F1A800FFF73AFA0646984248D8831CF9 +:102B3000626304F1A400E362FFF730FA00EB0208DD +:102B400004F19C00C4F84080FFF728FA10441FFAF3 +:102B500089F2A06306FB02F313EB080345EB0502C1 +:102B60009F4271EB02032BD32E4604F1AC00FFF71A +:102B700015FAE06365B96389B34221D9E16B204658 +:102B8000FFF72AFA81192046FFF7D6FB98B90136DC +:102B9000631993F84C30812B14D02035C5F3080508 +:102BA000E8E703200135042D7FF479AF042807D12D +:102BB00001E0042801D101254BE701287FF678AF19 +:102BC0000D2546E705F1140004F14C063044FFF7EB +:102BD000E5F901280546F3D9E36A8342F0D9618912 +:102BE000821E236C02FB01336364A16B204601EB60 +:102BF000D511FFF7A1FB0028DDD105F07F0006EB22 +:102C00008000FFF7CBF9431C03D00135A842ECD07C +:102C1000D6E70425C4E90500064A25700025138877 +:102C2000E56101339BB21380E38012E79C360020FC +:102C3000FDFFFF7FA0360020B4F85730B3F5007FCA +:102C4000BED1B4F8626026B904F17000FFF7A6F9AE +:102C5000064694F85C302663591EA3700129AFD84C +:102C600094F859506581002DAAD0691E2942A7D138 +:102C7000B4F85D8018F00F0FA4F80880A0D1B4F864 +:102C80005F0018B904F16C00FFF788F9B4F85A1026 +:102C9000002995D006FB03FE01EB181CF4446045A7 +:102CA0008ED3A0EB0C00A842B0FBF5F388D33E48CE +:102CB000834285D84FF6F57083426DD903259F1C5A +:102CC000114402EB0C03032DE7626263A1632364EA +:102CD0004CD1B4F8763053EA08037FF471AFBB00EF +:102CE00004F17800FFF75AF9E06303F2FF13B6EB43 +:102CF000532FFFF465AF4FF0FF33032DC4E90533C5 +:102D00004FF08003237187D1B4F87C30012B83D13D +:102D1000511C2046FFF710FB00287FF47DAFB4F86C +:102D20004A224AF6552320719A427FF475AF1F4B11 +:102D300004F14C00FFF732F998427FF46DAF03F1D4 +:102D4000FF5304F50C70FFF729F903F50053203306 +:102D500098427FF461AF04F50D70FFF71FF9A06191 +:102D600004F50E70FFF71AF9606155E7B8F1000F2E +:102D70003FF426AF7144022D4FEA4703E1631EBFC3 +:102D8000D91907F0010303EB5103AEE70B2560E609 +:102D90000C255EE603255CE640F6F575AB428CBF7C +:102DA000022501258BE700BFF5FFFF0F525261415D +:102DB0002DE9F84F07460568884649B96E69C6B1DE +:102DC000EB6AB34298BF0126AB69A3B9002405E0C2 +:102DD000FFF76AFB0128044603D801242046BDE81A +:102DE000F88F421C00F0D280EB6A8342F6D8464648 +:102DF000EAE70126E8E72A78EB6A042A40F08380B4 +:102E0000A6F1020A023B4FF0010B9A4528BF4FF092 +:102E1000000AD146696C284601EB1931FFF78CFA9C +:102E200000283BD109F00703EA6AC9F3C8010BFA8D +:102E300003F3901EDBB26A184C4609F1010992F8BF +:102E40004C20814502EA030233BF5B0000234FF4AC +:102E50000071DBB228BF9946B2B90234631E033356 +:102E6000BCD80123214628461A46FFF7E1FA02287A +:102E7000B3D0012800F08A80B8F1000F13D10223EB +:102E8000FB710028A9D130E0CA450AD0002BD2D16D +:102E90000131B1F5007FBDD20123CCE74FF0FF3403 +:102EA000DCE70024DAE7FB79022B07D1731CA3428D +:102EB000E7D0BB68F31ABB610323FB7108F1010281 +:102EC000FB69A24205D113B10133FB61D9E70223AB +:102ED000FBE70BB90123FB61224641463846FFF769 +:102EE00047FC00284FD10123FB61EA6AAB69023A33 +:102EF0006C6193429CBF03F1FF33AB612B7943F0CC +:102F000001032B716AE7464514D1741C3846A3426D +:102F100098BF02242146FFF7C7FA01283FF45DAFAE +:102F2000431C33D0E0B16B69012B03D9EA6A9342A9 +:102F300038BF1E4634460134EB6AA34203D8012E43 +:102F40007FF644AF022421463846FFF7ADFA48B178 +:102F500001283FF442AF013018D0B442EBD135E73D +:102F6000002CE7D04FF0FF3221462846FFF77CFBCC +:102F700048B9B8F1000FB8D0224641462846FFF7BD +:102F800073FB0028B1D001287FF427AF4FF0FF3446 +:102F900024E700002DE9F84306680446076B8946DC +:102FA00033782037042B0CBF4FF080534FF40013BD +:102FB000BB429CBF00238363836B73B1C7F30808D4 +:102FC000B8F1000F3CD10133416B836339B93389C8 +:102FD000B3EB571F34D80023A36304200AE073899E +:102FE000013B13EA57232BD1FFF75EFA0128054670 +:102FF00002D80220BDE8F883421C01D10120F9E784 +:10300000F36A834216D8B9F1000FE4D0616B204611 +:10301000FFF7CEFE0546C8B10128EAD0431CEDD02B +:1030200001463046FFF752FC0028E7D1E37943F030 +:103030000403E371294630466563FEF7CDFFA063C4 +:103040004C36002027634644E663D3E70720D1E7E8 +:10305000F8B50E46002104460768FFF7BDFA98B997 +:103060000546A16B3846FFF767F968B93A78E36B14 +:10307000042A1B780CD11B060ED5054601212046DB +:10308000FFF788FF0028ECD0042808BF072006E0DF +:10309000E52B01D0002BF0D10135B542EED1F8BDC2 +:1030A000C16C4B1C2DE9F04104460568066B1FD12D +:1030B000E5274FF00108A16B2846FFF73DF998B9C5 +:1030C0002A78E36B042A09BF1A781F7002F07F0286 +:1030D0001A7085F80380236BB3420DD2002120467D +:1030E000FFF758FF0028E6D0042808BF022003E0BD +:1030F000FFF772FA0028DBD0BDE8F0812DE9F0413E +:1031000005460068A96B0669FFF716F9044620B961 +:10311000EB6B1A78852A03D002242046BDE8F081A3 +:10312000324603F1200153F8040B8B4242F8040BA2 +:10313000F9D1777801377F01A7F16003B3F5007FFC +:10314000EAD800212846FFF725FF04280446E3D0EB +:103150000028E2D1A96B2868FFF7EEF804460028A2 +:10316000DBD1EB6B1A78C02AD6D106F1200203F12D +:10317000200153F8040B8B4242F8040BF9D196F866 +:1031800023300F222C33B3FBF2F3B7EB431FC3D32F +:103190004FF0400800212846FFF7FCFE04280446B3 +:1031A000BAD00028B9D1A96B2868FFF7C5F8044642 +:1031B0000028B2D1EB6B1A78C12AADD1B8F5187FCF +:1031C00009D206EB080203F1200153F8040B8B42ED +:1031D00042F8040BF9D108F120084745DAD8B8F5D0 +:1031E000187F9AD83046FEF71FFF7388834294D029 +:1031F00092E700000B68002210B5036004460B6ADA +:1032000083604B6AC261C37123F0FF03896AC0E91E +:103210000432C164FFF7E0F920B92046BDE8104050 +:10322000FFF76CBF10BD0000F8B503680546012725 +:103230001C692046FEF7F8FEA070000A6678E07070 +:103240002846E96CFFF7C8F920B1022828BF022000 +:10325000C0B2F8BDA96B2868FFF76EF80028F4D15A +:10326000EB6B04F1200254F8041B944243F8041B56 +:10327000F9D12B68DF70002EE7D000212846013EEF +:10328000FFF788FEE0E700002DE9F8434FF0FF0864 +:1032900006460768042445464FF6FF79B16B11B91D +:1032A000002C73D063E03846FFF746F80446002848 +:1032B0005DD1F06B0378002B6ED03A78042A11D1DF +:1032C000852B4DD1336B3046F364FFF717FF04466F +:1032D00000284CD13B691B7903F03F03B3712046B2 +:1032E000BDE8F883C27AE52B02F03F02B27143D009 +:1032F0002E2B41D022F0200108293DD00F2A40D1A9 +:10330000590637D503F0BF05336B90F80D80F36491 +:10331000437B434530D1428B72BB03780D21FC685F +:1033200023F04003DFF874E0013B4B4301211EF81A +:1033300001CB30F80CC009B3FF2B1DD824F813C003 +:103340006146013301320D2AF1D10278520605D5CA +:1033500021B1FF2B10D8002224F81320013DEDB23B +:1033600000213046FFF716FE0446002896D00023C1 +:10337000B363B4E7AB42CBD0FF25F1E7CC45E1D056 +:10338000FAE72DB9FEF740FE404501D10024A6E73B +:103390004FF0FF33F364A2E70424E8E7208F00082E +:1033A0002DE9F04F002187B00446D0F80090FFF7D8 +:1033B00013F9804670B999F80030042B33D1D9F84D +:1033C0000C00FEF779FF07462046FFF75DFF054634 +:1033D00020B18046404607B0BDE8F08FD9F81030E4 +:1033E0009A8CBA42F0D193F823B040265D4506D1BD +:1033F000D9F80C3033F81530002BE5D1EAE7F106A7 +:10340000D9F8103008BF0236985B01F04DF8D9F8B2 +:103410000C30824633F8150001F046F88245D3D1CE +:1034200002360135E2E74FF0FF0A4FF0FF3B554609 +:10343000C4F84CB0A16B4846FEF77EFF00285CD173 +:10344000E66B3778002F77D0F27AE52F02F03F0352 +:10345000A37103D0120704D50F2B04D0C4F84CB0CD +:103460004FE00F2B54D194F84B3058063FD47906D7 +:1034700045D5236B07F0BF0796F80DA0E364737B77 +:1034800053453ED1738B002B3BD135780121D9F8C0 +:103490000C3005F03F0501930D23013D5D43284BA2 +:1034A00013F8012BB25A71B3FF2D059329D810469A +:1034B000049200F0F9FF6B1C03900293019B33F818 +:1034C000150000F0F1FF039981421AD1049A029D80 +:1034D0001146059B1B4A9342E2D133785A0604D524 +:1034E00019B1019B33F815305BB97D1EEDB2002197 +:1034F0002046FFF74FFD00289CD080466AE7BD427A +:10350000BDD0FF25F3E74FF6FF708242E2D0F8E727 +:103510002DB93046FEF778FD50453FF45BAF94F887 +:103520004B30DB079AD40B2204F14001304605F002 +:1035300089FB002892D14DE74FF004084AE700BF0D +:10354000208F00082D8F00082DE9F04F90F84BB028 +:1035500099B004461BF0A00540F068810668F26847 +:1035600032F81530002B4AD13378042B40F0878095 +:103570000F230E352046B5FBF3F5A91CFFF768FDB8 +:103580008146002877D1236B0135A3EB4515E379FC +:103590005A07E56435D523F004032046E371FFF7AD +:1035A0007DF950BB4FF0FF32616B2046FFF7E0F82A +:1035B00018BBA3682BB3214604A8FFF71BFEE0B994 +:1035C00070894FF40071D4E90423E0FB01233069D2 +:1035D000C4E904233830FEF7EFFC3069D4E9042352 +:1035E0002830FEF7E9FCE379326904A843F00103CF +:1035F00082F82130FFF718FE18B181463BE0013513 +:10360000AEE7D6E90354402200212046FEF796FBA0 +:103610008523012140222370C0234FF0C10C04EB0D +:10362000010884F8203000231E469E46571C04F8EB +:1036300002C0F0B2023204F807E021B135F81310ED +:1036400009B10133DBB20F0AA15408F8027002324B +:10365000D706F2D135F813700136002FE6D184F881 +:103660002330831C28466370FEF726FE84F824006E +:10367000000A84F82500484619B0BDE8F08F04F12F +:1036800040070DF1100A1BF0010F97E807008AE8C8 +:10369000070000F0D38040234FF0010884F84B303E +:1036A000BC46F368B8F1050F9AE80700ACE80300E0 +:1036B0002CF8022B4FEA12428CF8002059D9981EA0 +:1036C000424630F8021F002942D10DF10F0C0721AC +:1036D00002F00F0E914612090EF13000392888BF12 +:1036E0000EF1370001390CF8010902D0B9F10F0FC2 +:1036F000EED818AB7E205A1802F8580C3846002233 +:10370000914206D010F801CB02F1010EBCF1200F5E +:1037100031D104F13F0C072902F1010297BF18AB28 +:1037200020205818013198BF10F8580C072A0CF8BF +:103730000200F0D92046FFF733FE8146002878D1F9 +:1037400008F10108B8F1640FAAD14FF0070992E718 +:103750004FF0100C01F0010E49080EEB4202D303AA +:1037600044BF82F4883282F02102BCF1010CF1D115 +:10377000A7E74246A9E77246C2E7216B2046A1EBC4 +:103780004511FEF729FF814600287FF474AF4FF6FC +:10379000FF783846FEF738FC0190A16B3046FEF703 +:1037A000CBFD814600287FF466AFE36BE9B2019A56 +:1037B0004FF00D0CD6F80CE05A734FF00F02DFF803 +:1037C000E0A0DA724A1E18730CFB02F28446987667 +:1037D000D87640451AF8019B0CF1010C18BF3EF851 +:1037E000120003EB090B18BF013203F809004FEA7E +:1037F0001029002808BF4046BCF10D0F8BF801903E +:10380000E7D1404502D03EF812200AB941F040010C +:103810001970012300212046F370FFF7BBFB81469E +:1038200000287FF428AF013DB7D11BE04FF0060917 +:1038300021E704287FF41FAF84F84BB01BF0020F80 +:1038400020461BBF0C350D210125B5FBF1F518BF36 +:1038500001352946FFF7FCFB814600287FF40BAFBA +:10386000013D8AD1A16B3046FEF766FD81460028F6 +:103870007FF401AF01462022E06BFEF75FFAE36BB5 +:1038800003CF18605960BA7839889A72198194F810 +:103890004B30E26B03F0180313730123F370EAE675 +:1038A000208F000810B504460A463430FEF776FB38 +:1038B000886004F13800FEF773FBC2E9040194F854 +:1038C000213003F00203D3710023D36110BD000047 +:1038D00003284B8B04BF8A8A43EA02431846704789 +:1038E0002DE9F04F0B7899B0044689462F2BD0F87C +:1038F00000B001D05C2B09D14A46137891460132C1 +:103900002F2BFAD05C2BF8D0002301E0DBF81C3021 +:10391000A3600023E3619BF80030042B1ED1A36851 +:10392000E3B1DBF82030214604A82362DBF8243021 +:103930006362DBF82830A362FFF75CFC03460028D3 +:1039400054D1DBF8102002F13800FEF727FBC4E960 +:10395000040392F8213003F00203E37199F8003078 +:103960001F2B00F2358180230021204684F84B3044 +:1039700019B0BDE8F04FFEF72FBE49460B788946D7 +:1039800001312F2BFAD05C2BF8D01F2B8CBF0025D8 +:103990000425012F2FD113882E2B31D1002322F89B +:1039A000173004F140029F428CBF2E2120210133A9 +:1039B0000B2B02F8011BF6D145F02005204684F8B8 +:1039C0004B50FFF7EDFC94F84B30002800F0E780F7 +:1039D00004280BD1990603F0040240F1DC80002A90 +:1039E00000F0F6808023002084F84B3019B0BDE849 +:1039F000F08F0425CDE7022F02D153882E2BCAD099 +:103A0000911E87BB002322F81730002F00F0118190 +:103A100032F81300194601332028F9D009B92E28AD +:103A200001D145F00305901E30F817302E2B01D040 +:103A3000013FF9D14FF020334FF0000A6364D046C4 +:103A40002364C4F847300823481C32F81160009002 +:103A5000F6B1202E03D02E2E0DD1B84210D045F055 +:103A600003050099F0E731F81730202B01D02E2BF9 +:103A7000C8D1013FC5E79A4505D20099B9423BD16B +:103A80000B2B30D101E00B2B27D145F003050B2385 +:103A900094F84020E52A04BF052284F84020082B32 +:103AA00004BF4FEA88085FFA88F808F00C030C2B73 +:103AB00003D008F00303032B01D145F00205A8074A +:103AC0003FF57CAF18F0010F18BF45F0100518F056 +:103AD000040F18BF45F0080570E70099B94202D0FD +:103AE00045F00305D4D84FEA88080B234FF0080AA5 +:103AF00000975FFA88F8B4E77F2E15D9304640F278 +:103B00005231CDE9022345F00203019300F098FC05 +:103B100010F0800F0646DDE9022316D000F07F0684 +:103B200046498E5D019D46B331464548CDE90123A6 +:103B300005F0F6F8DDE90123F8B9A6F1410189B2F3 +:103B400019291ED848F0020810E0FF28EAD9591EAA +:103B50008A4503D345F003059A4682E704EB0A0140 +:103B6000000A0AF1010A019D81F8400004EB0A01F4 +:103B70000AF1010A81F8406073E745F003055F260A +:103B8000F4E7A6F1610189B219299EBF203E48F0F1 +:103B90000108B6B2EAE7002A08BF052026E75A075F +:103BA0003FF524AFA379DB0645D59BF80000042838 +:103BB00035D1A3682146E27923622369DBF810003E +:103BC00023F0FF0313436362E36CA362FFF76AFE13 +:103BD00023680027DA6819F8010B00283FF409AFC1 +:103BE00040F25231009200F04BFC054608B31F280A +:103BF000009A7FF6FEAE2F283FF4BFAE5C283FF45C +:103C0000BCAE7F2805D801460E4805F089F8009A19 +:103C100078B9FF2F0DD022F817500137DBE7216B61 +:103C20000BF14C03C1F308011944FFF751FEA060EA +:103C3000CEE70620DAE60520D8E600BFA08E000811 +:103C4000998E0008908E00081FB5CDE9001003A8DA +:103C500014460391FEF700FA002815DB0B4A52F8D0 +:103C600020300BB100211970019B0BB1002119709C +:103C700042F820302CB1002201A96846FEF7C8FEA8 +:103C80000446204604B010BD0B24FAE79C36002001 +:103C90002DE9F04798B0904605460191002800F0C4 +:103CA000528102F03F0603A901A83246FEF7B0FE9A +:103CB000002840F04681039B4FF48C60049303F08E +:103CC0004BF80746002800F04081039B00F5007286 +:103CD0000199D86004A81A61FFF702FE044620B9D2 +:103CE0009DF95B30002BB8BF062418F01C0F00F0C4 +:103CF000CD80002C4CD0042C40D104A8FFF724FC2C +:103D0000044600283AD146F00806039B1A78042A94 +:103D100040F08380186929462B60FFF7C3FD039BA1 +:103D20001E22002118690230FEF708F8039C0021CA +:103D30001A2220692630FEF701F8236920221A7121 +:103D4000246903F027F80146012208342046FEF7D3 +:103D50002BF9039B04A81B6983F82120FFF764FA61 +:103D6000044658B9A96801B302462846FEF718FD73 +:103D7000AB68039A0446013B5361B4B1384602F084 +:103D8000FBFF0CB100232B60204618B0BDE8F08784 +:103D90009DF8163013F0110F40F0848018F0040FD6 +:103DA00040F0C98018F0080FAFD1039A310713997A +:103DB000936C48BF46F04006E964AB641078042871 +:103DC00072D1069B9DF817102B62089B106923F097 +:103DD000FF030B4329466B62179BAB62FFF762FD43 +:103DE000DDF80CA00024002205F15008BAF80630D6 +:103DF00021464046C5F800A0AB80002385F830601E +:103E000085F831406C64C5E90E234FF40072FDF76C +:103E100095FFB20653D40024B0E702F0BBFF014681 +:103E2000009013980E30FEF7BFF8139800991630E3 +:103E3000FEF7BAF8039C13992078FFF749FD202379 +:103E400000228046CB7220461399FEF7D1F8139BCF +:103E5000002201211A775A779A77DA77039BD97073 +:103E6000B8F1000FA1D0414604A8D3F84890FEF75E +:103E700097FC0446002881D149460398FEF75CFA76 +:103E8000039B044608F1FF30586176E7002C7FF46D +:103E900075AF9DF81630DC064FD418F0020F84D0B1 +:103EA000D80782D5072469E7FFF712FD0023A86031 +:103EB00001F11C00FEF772F86B61286190E7D5E90B +:103EC000046956EA0903A6D0BAF80AA0A9684FEA1D +:103ED0004A2AC5E90E69B24574EB09031BD30024D5 +:103EE0002964002C7FF44AAFC6F30803002B92D05C +:103EF000039C2046FEF770F808B3760A012341467A +:103F000046EAC95682196A64607802F095FA041E7E +:103F100018BF012432E72846FEF7C6FAB6EB0A06B8 +:103F2000014669F10009012803D9431CD3D10124BA +:103F3000D6E70224D4E7082420E704241EE702245D +:103F40001CE704461EE709241EE711241CE70000B5 +:103F50002DE9F04F994685B00023884603A9044611 +:103F6000C9F800301646FEF791F8054680BB94F874 +:103F700031506DBB94F8303013F00103009300F022 +:103F8000A68004F1500AD4E90432D4E90E011B1AC8 +:103F900062EB0102B34272F1000238BF1E46BEB1AD +:103FA000D4E90E10C1F30803002B40F08280039B7C +:103FB0005A894B0A013A43EAC0531A401BD151EACD +:103FC000000309D1A06801280DD8022584F83150DA +:103FD000284605B0BDE8F08F216C20460192FEF71F +:103FE00063FA019AEFE7431C04D10123009D84F892 +:103FF0003130EDE72064DDF80CB0216C5846FDF758 +:10400000EBFF0028E1D0B6F5007F02EB000731D3CB +:10401000BBF80A1002EB5620730A88429BF8010095 +:1040200088BF8B1A3A464146019302F005FA0028F0 +:10403000DBD194F93020019B002A0BDA606CC01BA5 +:10404000984207D24FF40072514608EB4020FDF72A +:104050004FFE019B5F02D9F80030F61BB8443B4489 +:10406000C9F80030D4E90E32DB1942F10002C4E98C +:104070000E3294E7626CBA421AD094F93030002BB9 +:104080000DDA012351469BF8010002F0F9F90028EE +:10409000ABD194F8303003F07F0384F830300398CC +:1040A00001233A465146407802F0C6F900289CD1D7 +:1040B0006764A16B4046C1F30801C1F50077514424 +:1040C000B74228BF37463A46FDF712FEC3E7072539 +:1040D0007EE7000070B596B00E460022019002A95E +:1040E00001A8FEF795FC0446E0B94FF48C6002F09D +:1040F00033FE0546D8B1029B00F500720199D860E5 +:1041000002A81A61FFF7ECFB044640B99DF9533051 +:10411000002B0ADB1EB1314602A8FDF7EDFF284651 +:1041200002F02AFE204616B070BD0624F7E71124DF +:10413000F8E7000070B5B8B00222019003A901A809 +:10414000FEF766FC044608BB039B4FF48C6010939B +:1041500002F002FE0546002866D0039B00F50072BF +:104160000199D86010A81A61FFF7BAFB044650B94C +:104170009DF88B30980655D4190653D49DF84630D7 +:10418000DA0706D50724284602F0F6FD204638B0A7 +:1041900070BD039B04931878042814D104A91869EE +:1041A000FFF780FB069E9DF84630DB0610D410A872 +:1041B000FEF776FF04460028E5D156BB0398FEF7CC +:1041C000DBFB0446DFE71F99FFF782FB0646EAE7C1 +:1041D000039BDA69B242D5D024930021269624A805 +:1041E0001B78042B01BFDDE90823CDE928239DF8C6 +:1041F00017308DF89730FEF7EFF904460028C2D14A +:1042000024A8FFF741F804460028BBD00428BAD1FF +:10421000CDE70246314604A8FEF7C2FA044600285C +:10422000B1D1CBE70624AEE71124AFE7F0B5BDB0BE +:10423000CDE900106846FDF70FFF022203A901A88F +:10424000FEF7E6FB0446002841D1039B4FF48C6047 +:10425000149302F081FD0546002800F0EE80039BD8 +:1042600000F5007214AE0199D8601A613046FFF76C +:1042700037FB044640BB9DF89B3013F0A00F40F085 +:10428000D880039B009F1A78042A68D11B6904AC6C +:1042900003F1400C1868083353F8041C22466345A8 +:1042A00003C21446F6D15022314628A8FDF720FD5E +:1042B000394628A8FFF714FB044600284CD12A9A57 +:1042C000169B9A4206D00824284602F055FD204647 +:1042D0003DB0F0BD349A209B9A42F4D128A8FFF754 +:1042E00033F904460028EFD1039B04AF1B6993F810 +:1042F00001E093F823C09C8C3A46083303CAB242CB +:1043000043F8080C43F8041C1746F5D1039B28A872 +:104310001B6983F801E0039B1A6982F823C01A69BC +:1043200082F82440240A82F825401A691379D906B4 +:104330005CBF43F020031371FEF776FF04460028AC +:10434000C2D13046FEF7ACFE04460028BCD103982B +:10435000FEF712FB0446B7E70428B5D1BEE7239A5F +:1043600004AB02F1200C1068083252F8041C1C4601 +:10437000624503C42346F6D15022314628A8FDF7F2 +:10438000B7FC394628A8FFF7ABFA044600284CD101 +:104390002A9A169B9A4296D1349A209B9A4292D19D +:1043A00028A8FFF7D1F8044600288DD137990DF1E0 +:1043B0001D030DF12D0001F10D0253F8044B834252 +:1043C00042F8044BF9D11888012710809B7893702C +:1043D0009DF81B30039CDA0658BF43F02003CB72D4 +:1043E000E770CB7ADB06ACD5169A2A9B9A42A8D006 +:1043F0002078FFF76DFA01462046FDF7EDFD0146F6 +:10440000C8B12046FDF798FF044600287FF45CAF52 +:10441000039890F86D302E2B93D12A9A00F16C01FD +:10442000FDF7E6FD039BDF708BE704287FF44CAFBC +:10443000B6E7062448E7022446E7112447E70000D0 +:104440007F2810B501D880B210BDB0F5803F13D2DF +:1044500040F2523399420FD10849002231F8024B01 +:1044600093B2844203D103F18000C0B2ECE7013281 +:10447000802AF3D11346F6E70020E5E7E091000833 +:104480007F280DD940F25233994208D1FF2806D82F +:1044900000F10040034B803833F8100070470020D3 +:1044A000704700BFE0910008B0F5803FF0B522D220 +:1044B0001F4A83B21F49B0F5805F28BF0A46141D0A +:1044C00034F8042C2146AAB1934213D334F8025C89 +:1044D0002E0AEFB252FA85F5A84222DA082E09D840 +:1044E000DFE806F0050A10121416181A1C00801ACC +:1044F00034F810301846F0BD981A00F001001B1A6D +:104500009BB2F7E7103BFBE7203BF9E7303BF7E7CF +:104510001A3BF5E70833F3E7503BF1E7A3F5E35324 +:10452000EEE70434002ECBD101EB4702C7E700BF12 +:10453000308F000824910008084BC26A994228BFB6 +:104540001946836C50688B4210B506D95A1E4C0030 +:1045500002EB4103B3FBF4F3184410BD20BCBE00D2 +:1045600001F001038A0748BF43F002034A0748BF2E +:1045700043F008030A0748BF43F00403CA0648BFD4 +:1045800043F010038A06426B48BF43F020031343F5 +:104590004363704710B5074C204600F09FFF064B61 +:1045A0000022C4E91023054BA364054BE363054BCC +:1045B000E36410BDA43600200070005200B4C404AF +:1045C000F8360020F8380020C36A0BB9104BC362DC +:1045D0000379012B11D10F4B98420ED10E4BD3F81A +:1045E000D42042F48032C3F8D420D3F8FC2042F423 +:1045F0008032C3F8FC20D3F8FC30436C00221A65EB +:10460000DA621A605A605A624FF0FF329A6370475A +:10461000E0920008A4360020004402580379012BE0 +:104620001BD0436C00221A65DA621A605A605A6223 +:104630004FF0FF329A63094B98420ED1084BD3F8E2 +:10464000D42022F48032C3F8D420D3F8FC2022F402 +:104650008032C3F8FC20D3F8FC307047A436002029 +:104660000044025810B5446C0649FFF765FF6060CE +:10467000236842F2107043F003032360BDE810404A +:1046800001F04CBD801A06000129F8B5466C0B4FAD +:1046900009D175680A493D40FFF74EFF054345F4CF +:1046A00080557560F8BD746806493C40FFF744FFCB +:1046B000044344F480547460F4E700BF00ECFFFF4F +:1046C00080F0FA0240787D01436C00225A601A6043 +:1046D00070470000426C0129536823F4404304D022 +:1046E000022905D001B95360704743F48043FAE7CB +:1046F00043F40043F7E70000436C41F480519A60B3 +:10470000D9605A6B1206FCD580229A63704700006C +:1047100010B541F48851446CA260E160616B11F006 +:104720004502FBD0A26311F0040203D0FFF718FF8B +:10473000012010BD616910461960FAE710B541F417 +:104740008851446CA260E160616B11F04502FBD0BE +:10475000A26311F0050203D0FFF702FF012010BD94 +:10476000616910461960FAE773B5134604460E46B0 +:10477000302282F31188426CD26B32B14FF0FF319C +:104780004030019301F0D6FC019B606C0022026571 +:10479000C263C262456B15F4807504D185F311883C +:1047A000012002B070BD4FF0FF31816382F31188A8 +:1047B000012E06D90C21204602B0BDE87040FFF75B +:1047C000BDBF1046EDE7000073B5446C0E460025F2 +:1047D0000192616BA1632565E562FFF7C1FE012EC1 +:1047E00007D9019B2A460C2102B0BDE87040FFF7B3 +:1047F000A5BF02B070BD000010B541F49851446CE3 +:10480000A260E160616B11F04502FBD0A26311F080 +:104810003F0203D0FFF7A4FE012010BD216A10461D +:104820001960E1695960A16999606169D960F4E72B +:104830002DE9F74304460191006D01A917469846FA +:1048400002F0E2FB064600284AD0626C2046DDF802 +:1048500004905568C5F3090501356B00A56CB5FBDF +:10486000F3F54FF47A73B5FBF3F55D43556200F051 +:10487000FBFD50BB636C4FF0FF3201254146C3F88E +:10488000589020461D659A634FF49572DA6342F2A0 +:1048900007029F62DA62E36C0A9AFFF74FFFA0B942 +:1048A000E26C104B11680B407BB929462046FFF79C +:1048B0005BFF054648B92E463A460199206D02F045 +:1048C000CBFB304603B0BDE8F0833A460199206D3A +:1048D00002F0C2FBE26C01212046FFF775FFF0E712 +:1048E0000126EEE708E0FFFD2DE9F7431F46436C84 +:1048F00001924FF47A725D6804468846C5F3090553 +:1049000001356E00856CB5FBF6F5B5FBF2F5554348 +:104910005D6200F0A9FD20B10125284603B0BDE885 +:10492000F0837E0201A9206D324602F06DFB054640 +:104930000028F1D0636C019AD4F84C909A6501225A +:104940001A654FF0FF329A634FF49572DA639E62F4 +:10495000236BDB064B4658BF4FEA4828012F4246DF +:104960001BD912212046FFF7E9FEC0B9D9F8002073 +:10497000104B13409BB9636C42F2930239462046B8 +:10498000DA62E26CFFF7F0FE804640B932460199E8 +:10499000206D454602F060FBBFE71121E2E7324699 +:1049A0000199206D02F058FBE26C39462046FFF772 +:1049B0000BFFB2E708E0FFFD2DE9F3411F46436C12 +:1049C00001924FF47A725D6804468846C5F3090582 +:1049D00001356E00856CB5FBF6F5B5FBF2F5554378 +:1049E0005D6200F041FD20B10125284602B0BDE81E +:1049F000F0817E0201A9206D324602F03BFB0546A4 +:104A00000028F1D0636C019A9A6501221A654FF073 +:104A1000FF329A634FF48D72DA639E62236BE66C09 +:104A2000DB06334658BF4FEA4828012F424619D9C2 +:104A300019212046FFF782FEB0B932680F4B1340B0 +:104A400093B9636C42F2910239462046DA62E26C15 +:104A5000FFF78AFE064638B901993546206D02F007 +:104A600035FBC2E71821E4E70199206D02F02EFB27 +:104A7000E26C39462046FFF7A7FEB6E708E0FFFDE7 +:104A800012F0030F2DE9F04107460C4615461E466D +:104A900017D00E44B44202D10020BDE8F0810123BA +:104AA000FA6B21463846FFF71FFF0028F5D128464C +:104AB0004FF40072F96B05F500750134FDF718F934 +:104AC000E8E7BDE8F041FFF70FBF000012F0030F69 +:104AD0002DE9F04107460C4615461E4617D00E44F8 +:104AE000B44202D10020BDE8F08129464FF40072A3 +:104AF000F86B05F50075FDF7FBF80123FA6B21460D +:104B00003846FFF759FF0028EDD10134E8E7BDE84A +:104B1000F041FFF751BF000000207047302310B56F +:104B200083F311880024436C40302146DC6301F09C +:104B30000FFB84F3118810BD0268436811430160C4 +:104B400003B1184770470000024A136843F0C003DE +:104B50001360704700440040024A136843F0C003EA +:104B60001360704700480040024A136843F0C003D6 +:104B70001360704700780040064BD3F8E8200243EA +:104B8000C3F8E820D3F810211043C3F81001D3F87C +:104B9000103170470044025837B5274C274D204646 +:104BA00000F0FCFC04F11400009400234FF40072A8 +:104BB000234900F097F94FF40072224904F13800BC +:104BC0000094214B00F010FA204BC4E91735204C1B +:104BD000204600F0E3FC04F11400009400234FF49D +:104BE00000721C4900F07EF94FF400721A4904F17A +:104BF00038000094194B00F0F7F9194BC4E9173548 +:104C0000184C204600F0CAFC04F1140000234FF4B5 +:104C100000721549009400F065F9144B4FF40072CE +:104C2000134904F13800009400F0DEF9114BC4E997 +:104C3000173503B030BD00BFFC38002000E1F5059A +:104C4000403A002040400020494B0008004400400A +:104C500068390020403C002040420020594B0008A9 +:104C600000480040D4390020403E0020694B000835 +:104C7000404400200078004038B5264D0446037CAF +:104C8000002918BF0D46012B06D1234B984230D185 +:104C90004FF40030FFF770FF2A68236EE16D03EBDD +:104CA0005203A566B3FBF2F36A68100442BF23F017 +:104CB000070003F0070343EA4003CB60AB6843F00F +:104CC00040034B60EB6843F001038B6042F4967342 +:104CD00043F001030B604FF0FF330B62510505D524 +:104CE00012F0102211D0B2F1805F10D084F864303D +:104CF00038BD0A4B984205D0094B9842CCD14FF0B1 +:104D00008040C7E74FF48020C4E77F23EEE73F23CE +:104D1000ECE700BFE8920008FC380020683900206A +:104D2000D43900202DE9F047C66D05463768F4698F +:104D3000210734621AD014F0080118BF4FF48071B3 +:104D4000E20748BF41F02001A3074FF0300348BFFE +:104D500041F04001600748BF41F0800183F31188B2 +:104D6000281DFFF7E9FE002383F31188E2050AD529 +:104D7000302383F311884FF48061281DFFF7DCFE98 +:104D8000002383F311884FF030094FF0000A14F02C +:104D9000200838D13B0616D54FF0300905F1380A06 +:104DA000200610D589F31188504600F051F90028EB +:104DB00036DA0821281DFFF7BFFE27F08003336095 +:104DC000002383F31188790614D5620612D53023A7 +:104DD00083F31188D5E913239A4208D12B6C33B1A0 +:104DE00027F040071021281DFFF7A6FE376000239B +:104DF00083F31188E30618D5AA6E1369ABB1506925 +:104E0000BDE8F047184789F31188736A284695F87A +:104E10006410194000F0DCFB8AF31188F469B6E7EE +:104E2000B06288F31188F469BAE7BDE8F087000042 +:104E3000F8B51546826804460B46AA4200D285683A +:104E4000A1692669761AB5420BD218462A46FCF7A4 +:104E50004FFFA3692B44A3612846A3685B1BA36093 +:104E6000F8BD0CD9AF1B18463246FCF741FF3A4655 +:104E7000E1683044FCF73CFFE3683B44EBE718464D +:104E80002A46FCF735FFE368E5E7000083689342B4 +:104E9000F7B50446154600D28568D4E90460361A91 +:104EA000B5420BD22A46FCF723FF63692B446361AA +:104EB0002846A3685B1BA36003B0F0BD0DD9324642 +:104EC000AF1B0191FCF714FF01993A46E0683144A9 +:104ED000FCF70EFFE3683B44E9E72A46FCF708FFCE +:104EE000E368E4E710B50A440024C361029B8460D0 +:104EF000C16002610362C0E90000C0E9051110BD94 +:104F000008B5D0E90532934201D1826882B982683E +:104F1000013282605A1C426119700021D0E90432CA +:104F20009A4224BFC368436101F02CF9002008BDF8 +:104F30004FF0FF30FBE7000070B5302304460E460B +:104F400083F31188A568A5B1A368A269013BA3609A +:104F5000531CA36115782269934224BFE368A361BF +:104F6000E3690BB120469847002383F31188284654 +:104F700007E03146204601F0F5F80028E2DA85F333 +:104F8000118870BD2DE9F74F04460E461746984626 +:104F9000D0F81C904FF0300A8AF311884FF0000BC4 +:104FA000154665B12A4631462046FFF741FF0346C4 +:104FB00060B94146204601F0D5F80028F1D0002321 +:104FC00083F31188781B03B0BDE8F08FB9F1000FAF +:104FD00003D001902046C847019B8BF31188ED1A3E +:104FE0001E448AF31188DCE7C160C361009B8260C4 +:104FF0000362C0E905111144C0E900000161704776 +:10500000F8B504460D461646302383F31188A76889 +:10501000A7B1A368013BA36063695A1C62611D705C +:10502000D4E904329A4224BFE3686361E3690BB1B7 +:1050300020469847002080F3118807E0314620463B +:1050400001F090F80028E2DA87F31188F8BD00003B +:10505000D0E9052310B59A4201D182687AB98268F5 +:105060000021013282605A1C82611C7803699A42D5 +:1050700024BFC368836101F085F8204610BD4FF05E +:10508000FF30FBE72DE9F74F04460E4617469846DA +:10509000D0F81C904FF0300A8AF311884FF0000BC3 +:1050A000154665B12A4631462046FFF7EFFE034616 +:1050B00060B94146204601F055F80028F1D00023A0 +:1050C00083F31188781B03B0BDE8F08FB9F1000FAE +:1050D00003D001902046C847019B8BF31188ED1A3D +:1050E0001E448AF31188DCE70379052B05BF836A28 +:1050F000002001204B6004BF4FF400730B60704729 +:1051000070B55D1E866A04460D44B54205D9436BF1 +:1051100043F080034363012070BD06250571FFF74E +:10512000AFFC05232371F7E770B55D1E866A044660 +:105130000D44B54205D9436B43F08003436301201E +:1051400070BD07250571FFF7C1FC05232371F7E743 +:1051500038B505790446052D05D108230371FFF7FD +:10516000DBFC257138BD0120FCE700000323F0B50E +:10517000037185B00446FFF775FA002220461146F8 +:10518000FFF7BAFA4FF4D57203AB08212046FFF7B8 +:10519000D5FA0246B8B901232363039BC3F3032363 +:1051A000012B09D103AB37212046FFF7C7FA18B905 +:1051B000A44B039A1340ABB120460125FFF784FAB4 +:1051C0000223237137E103AB002237212046FFF78A +:1051D000B5FA28B99B4A039B1A40002A00F0A78021 +:1051E00002232363236B03F00F03022B40F0A980FB +:1051F0006425954E42F2107000F090FF03AB3246EA +:1052000001212046FFF784FA0028D5D1039B002B0B +:1052100080F293805A0003D5236B43F0100323637D +:10522000002204F1080302212046FFF7E5FA0246B6 +:105230000028C1D104F1380303212046FFF77EFA8C +:105240000028B9D104F11805A26B092120462B468C +:10525000FFF7D2FA0028AFD102ABA26B072120469C +:10526000FFF76CFA06460028A6D1236B03F00F0364 +:10527000022B40F08F807E227F21284603F09AF98E +:10528000012840F28780E76B42F2107000F046FF81 +:1052900008234FF40072394620460096FFF7C8FAFB +:1052A000002889D1384603F0D3F9236BA06203F0BC +:1052B0000F03022B72D103AB644A06212046FFF78D +:1052C0003DFA002871D15F49039B1940B1FA81F181 +:1052D00049092046FFF7D8F902AB4FF400721021BC +:1052E0002046FFF72BFA054600287FF465AF554EA0 +:1052F000029B33427FF460AF236B13F00E0F03F079 +:105300000F0273D0022A7FF457AFE36A197801299C +:1053100000F09480022900F09380002900F0898039 +:105320004B4F2046FFF7D6F903AB3A4676E01146DD +:1053300020462263FFF7E0F954E7013D7FF45AAFBE +:105340003AE7444D6426444A3E4F012B18BF1546A8 +:1053500003AB002237212046FFF7F0F900287FF445 +:105360002BAF039B3B427FF427AF03AB2A46292197 +:105370002046FFF7CDF900287FF41EAF039B002BDA +:10538000FFF648AF013E3FF417AF42F2107000F055 +:10539000C5FEDDE7284603F02FF986E77E227F2150 +:1053A0002846E66B03F006F908B9002191E70023CF +:1053B00040223146204600930623FFF739FA0028A1 +:1053C000F3D1B3895BBA9B07EFD5244B402231461A +:1053D000204600930623FFF72BFA0028E5D1317C05 +:1053E00001F00F010F3918BF012172E7E36A197844 +:1053F000F9B101297FF4E0AE2046FFF76BF903AB6A +:10540000A26B37212046FFF799F900287FF4D4AE2C +:10541000039B33427FF4D0AE03AB02220621204629 +:10542000FFF78CF900287FF4C7AE039B33427FF46B +:10543000C3AE05232371284605B0F0BD084F70E7C1 +:10544000084F6EE708E0FFFD0080FFC00001B903D0 +:105450000000B7030080FF5000001080F1FFFF80C4 +:105460000001B7030002B70337B504460C4D01AB8A +:10547000A26B0D212046FFF761F978B9019B2B4201 +:105480000BD1C3F34323042B08D0053B022B04D8D4 +:105490004FF47A7000F042FEE9E7012003B030BD1E +:1054A00008E0FFFD70B53023054683F311880379CA +:1054B0000024022B03D184F31188204670BD0423FD +:1054C000037184F311880226FFF7CEFF04462846B5 +:1054D000FFF7FAF82E71F0E7FFF75CB8044B0360B2 +:1054E0000123037100234363C0E90A33704700BFFF +:1054F0000093000810B53023044683F31188C1627D +:10550000FFF762F802230020237180F3118810BD99 +:1055100010B53023044683F31188FFF77FF800238A +:105520000122E362227183F3118810BD026843688F +:105530001143016003B11847704700001430FFF7B2 +:1055400021BD00004FF0FF331430FFF71BBD0000FA +:105550003830FFF797BD00004FF0FF333830FFF7CA +:1055600091BD00001430FFF7E7BC00004FF0FF31A1 +:105570001430FFF7E1BC00003830FFF741BD0000F8 +:105580004FF0FF323830FFF73BBD0000012914BF58 +:105590006FF0130000207047FFF7FEBA044B036062 +:1055A00000234360C0E9023301230374704700BF46 +:1055B0002493000810B53023044683F31188FFF7C5 +:1055C0005BFB02230020237480F3118810BD0000D0 +:1055D00038B5C36904460D461BB904210844FFF7DA +:1055E000A5FF294604F11400FFF78AFC002806DA1B +:1055F000201D4FF40061BDE83840FFF797BF38BD6C +:10560000026843681143016003B118477047000006 +:1056100013B5406B00F58054D4F8A4381A6811789B +:10562000042914D1017C022911D11979012312898D +:105630008B4013420BD101A94C3002F0E9FED4F8A3 +:10564000A4480246019B2179206800F0DFF902B0EE +:1056500010BD0000143002F06BBE00004FF0FF33AD +:10566000143002F065BE00004C3002F03DBF000077 +:105670004FF0FF334C3002F037BF0000143002F01F +:1056800039BE00004FF0FF31143002F033BE00008D +:105690004C3002F009BF00004FF0FF324C3002F0F6 +:1056A00003BF00000020704710B500F58054D4F807 +:1056B000A4381A681178042917D1017C022914D161 +:1056C0005979012352898B4013420ED1143002F0D4 +:1056D000CBFD024648B1D4F8A4484FF44073617939 +:1056E0002068BDE8104000F07FB910BD406BFFF7A7 +:1056F000DBBF0000704700007FB5124B0125042678 +:10570000044603600023057400F1840243602946C7 +:10571000C0E902330C4B0290143001934FF44073F4 +:10572000009602F07DFD094B04F69442294604F1EF +:105730004C000294CDE900634FF4407302F044FE44 +:1057400004B070BD4C930008ED56000811560008D7 +:105750000A68302383F311880B790B3342F8230056 +:105760004B79133342F823008B7913B10B3342F892 +:10577000230000F58053C3F8A4180223037400200B +:1057800080F311887047000038B5037F044613B1D9 +:1057900090F85430ABB90125201D0221FFF730FFEE +:1057A00004F114006FF00101257700F0F7FC04F11B +:1057B0004C0084F854506FF00101BDE8384000F00F +:1057C000EDBC38BD10B5012104460430FFF718FFC9 +:1057D0000023237784F8543010BD000038B5044608 +:1057E0000025143002F034FD04F14C00257702F05E +:1057F00003FE201D84F854500121FFF701FF2046CD +:10580000BDE83840FFF750BF90F8803003F06003E8 +:10581000202B06D190F881200023212A03D81F2AAB +:1058200006D800207047222AFBD1C0E91D3303E0CF +:10583000034A426707228267C3670120704700BF9F +:105840004422002037B500F58055D5F8A4381A68F1 +:10585000117804291AD1017C022917D11979012361 +:1058600012898B40134211D100F14C04204602F002 +:1058700083FE58B101A9204602F0CAFDD5F8A4481C +:105880000246019B2179206800F0C0F803B030BDCA +:1058900001F10B03F0B550F8236085B004460D46C6 +:1058A000FEB1302383F3118804EB8507301D0821F6 +:1058B000FFF7A6FEFB6806F14C005B691B681BB195 +:1058C000019002F0B3FD019803A902F0A1FD024688 +:1058D00048B1039B2946204600F098F8002383F343 +:1058E000118805B0F0BDFB685A691268002AF5D02E +:1058F0001B8A013B1340F1D104F18002EAE700006A +:10590000133138B550F82140ECB1302383F31188BE +:1059100004F58053D3F8A4281368527903EB82036B +:10592000DB689B695D6845B104216018FFF768FE7C +:10593000294604F1140002F0A1FC2046FFF7B4FE52 +:10594000002383F3118838BD7047000001F0B0BC1C +:1059500001234022002110B5044600F8303BFCF73B +:10596000EDF90023C4E9013310BD000010B5302368 +:10597000044683F311882422416000210C30FCF797 +:10598000DDF9204601F0B6FC02230020237080F3ED +:10599000118810BD70B500EB8103054650690E46B5 +:1059A0001446DA6018B110220021FCF7C7F9A0698B +:1059B00018B110220021FCF7C1F931462846BDE894 +:1059C000704001F09DBD000083682022002103F09B +:1059D000011310B5044683601030FCF7AFF9204680 +:1059E000BDE8104001F018BEF0B4012500EB8104C1 +:1059F00047898D40E4683D43A469458123600023C5 +:105A0000A2606360F0BC01F035BE0000F0B4012577 +:105A100000EB810407898D40E4683D43646905819A +:105A200023600023A2606360F0BC01F0ABBE000005 +:105A300070B5022300250446242203702946C0F8CD +:105A400088500C3040F8045CFCF778F9204684F864 +:105A5000705001F0E9FC63681B6823B129462046B9 +:105A6000BDE87040184770BD0378052B10B504469B +:105A70000AD080F88C300523037043681B680BB193 +:105A8000042198470023A36010BD00000178052978 +:105A900006D190F88C20436802701B6803B1184748 +:105AA0007047000070B590F87030044613B10023C1 +:105AB00080F8703004F18002204601F0D1FD636867 +:105AC0009B68B3B994F8803013F0600535D000219D +:105AD000204602F0C3F80021204602F0B3F86368C4 +:105AE0001B6813B1062120469847062384F87030BE +:105AF00070BD204698470028E4D0B4F88630A26FE5 +:105B00009A4288BFA36794F98030A56F002B4FF0AD +:105B1000300380F20381002D00F0F280092284F826 +:105B2000702083F3118800212046D4E91D23FFF75C +:105B30006DFF002383F31188DAE794F8812003F0E6 +:105B40007F0343EA022340F20232934200F0C58011 +:105B500021D8B3F5807F48D00DD8012B3FD0022B40 +:105B600000F09380002BB2D104F188026267022218 +:105B7000A267E367C1E7B3F5817F00F09B80B3F5CF +:105B8000407FA4D194F88230012BA0D1B4F88830A2 +:105B900043F0020332E0B3F5006F4DD017D8B3F5F0 +:105BA000A06F31D0A3F5C063012B90D86368204665 +:105BB00094F882205E6894F88310B4F88430B0477B +:105BC000002884D0436863670368A3671AE0B3F5CD +:105BD000106F36D040F6024293427FF478AF5C4BB0 +:105BE00063670223A3670023C3E794F88230012B85 +:105BF0007FF46DAFB4F8883023F00203A4F8883046 +:105C0000C4E91D55E56778E7B4F88030B3F5A06FB7 +:105C10000ED194F88230204684F88A3001F062FC7C +:105C200063681B6813B10121204698470323237042 +:105C30000023C4E91D339CE704F18B036367012350 +:105C4000C3E72378042B10D1302383F31188204637 +:105C5000FFF7BAFE85F311880321636884F88B503F +:105C600021701B680BB12046984794F88230002BB6 +:105C7000DED084F88B300423237063681B68002B0C +:105C8000D6D0022120469847D2E794F884302046A7 +:105C90001D0603F00F010AD501F0D4FC012804D041 +:105CA00002287FF414AF2B4B9AE72B4B98E701F0B7 +:105CB000BBFCF3E794F88230002B7FF408AF94F834 +:105CC000843013F00F01B3D01A06204602D501F03C +:105CD000DDFFADE701F0CEFFAAE794F88230002B9C +:105CE0007FF4F5AE94F8843013F00F01A0D01B06BA +:105CF000204602D501F0B2FF9AE701F0A3FF97E733 +:105D0000142284F8702083F311882B462A462946F2 +:105D10002046FFF769FE85F31188E9E65DB115229B +:105D200084F8702083F3118800212046D4E91D23D4 +:105D3000FFF75AFEFDE60B2284F8702083F31188EA +:105D40002B462A4629462046FFF760FEE3E700BFC0 +:105D50007C930008749300087893000838B590F895 +:105D600070300446002B3ED0063BDAB20F2A34D8FE +:105D70000F2B32D8DFE803F03731310822323131CE +:105D80003131313131313737856FB0F886309D424E +:105D900014D2C3681B8AB5FBF3F203FB12556DB92D +:105DA000302383F311882B462A462946FFF72EFE1F +:105DB00085F311880A2384F870300EE0142384F8E8 +:105DC0007030302383F31188002320461A46194689 +:105DD000FFF70AFE002383F3118838BDC36F03B1B8 +:105DE00098470023E7E70021204601F037FF002114 +:105DF000204601F027FF63681B6813B10621204687 +:105E000098470623D7E7000010B590F87030044695 +:105E1000142B29D017D8062B05D001D81BB110BDE3 +:105E2000093B022BFBD80021204601F017FF00217F +:105E3000204601F007FF63681B6813B10621204666 +:105E40009847062319E0152BE9D10B2380F8703011 +:105E5000302383F3118800231A461946FFF7D6FD35 +:105E6000002383F31188DAE7C3689B695B68002B22 +:105E7000D5D1C36F03B19847002384F87030CEE7C3 +:105E80000023826880F8243083691B6899689142F6 +:105E9000FBD25A680360426010605860704700008F +:105EA0000023826880F8243083691B6899689142D6 +:105EB000FBD85A6803604260106058607047000069 +:105EC00008B50846302383F3118891F82430032B5A +:105ED00005D0042B0DD02BB983F3118808BD8B6A34 +:105EE00000221A604FF0FF338362FFF7C9FF0023DF +:105EF000F2E7D1E9003213605A60F3E7034610B5C8 +:105F00001B68984203D09C688A689442F8D25A6809 +:105F10000B604A601160596010BD0000FFF7B0BF10 +:105F2000064BD96881F824001868026853601A602B +:105F30000122D86080F82420FAF764BA4046002095 +:105F40000C4B30B5DD684B1C87B004460FD02B4698 +:105F5000094A684600F0B6F92046FFF7E1FF009BCA +:105F600013B1684600F0B8F9A86A07B030BDFFF772 +:105F7000D7FFF9E740460020C15E0008044B1A68CD +:105F8000DB6890689B68984294BF002001207047AE +:105F900040460020094B10B51C68D8682268536041 +:105FA0001A600122DC6084F82420FFF779FF0146A3 +:105FB0002046BDE81040FAF725BA00BF4046002051 +:105FC000044B1A68DB6892689B689A4201D9FFF714 +:105FD000E1BF70474046002038B50123084C00253A +:105FE0002370656002F062FB02F088FB05490648F9 +:105FF00002F05EFC0223237085F3118838BD00BFD8 +:10600000E8480020849300084046002000F09AB938 +:10601000EFF3118020B9EFF30583302282F311886A +:106020007047000010B530B9EFF30584C4F30804DD +:1060300014B180F3118810BDFFF7C2FF84F31188FB +:10604000F9E70000034A516853685B1A9842FBD88D +:10605000704700BF001000E08B604B630023CA61F3 +:1060600000F128020B6302230A618B8401238861FB +:1060700081F8263001F11003C26A4A611360C362DD +:1060800001F12C030846CB6270470000D0E90131D2 +:10609000026841F8183CA1F19C033839CB600369D0 +:1060A00041F8243C436941F8203C034B41F8043C4F +:1060B000C3680248FFF7D0BF1D0400084046002017 +:1060C00008B5FFF7E3FFBDE80840FFF727BF000072 +:1060D00038B50E4BDC6804F12C05A062E06AA842DA +:1060E0000FD194F826303BB994F825309B0702BFB6 +:1060F000D4E9043213605A600F20BDE83840FFF73E +:106100000FBF0368E362FFF709FFE7E7404600209F +:10611000302383F31188FFF7DBBF000008B5014689 +:10612000302383F311880820FFF70AFF002383F34D +:10613000118808BD054BDB6821B10360986203201C +:10614000FFF7FEBE4FF0FF30704700BF4046002013 +:1061500003682BB10022026018469962FFF7DEBE89 +:1061600070470000064BDB6839B1426818605A601E +:10617000136043600420FFF7E3BE4FF0FF30704729 +:10618000404600200368984206D01A6802605060BA +:1061900018469962FFF7C2BE7047000038B5044642 +:1061A0000D462068844200D138BD036823605C60DE +:1061B0008562FFF7B3FEF4E7036810B59C68A2425E +:1061C0000CD85C688A600B604C60216059609968EB +:1061D0008A1A9A604FF0FF33836010BD121B1B6850 +:1061E000ECE700000A2938BF0A2170B504460D46C5 +:1061F0000A26601902F054FA02F03CFA041BA54288 +:1062000003D8751C04462E46F3E70A2E04D9012054 +:10621000BDE8704002F014BC70BD0000F8B5144B2E +:106220000D460A2A4FF00A07D96103F11001826076 +:1062300038BF0A224160196914460160486018613C +:10624000A81802F01DFA02F015FA431B0646A342F5 +:1062500006D37C1C28192746354602F021FAF2E7BE +:106260000A2F04D90120BDE8F84002F0E9BBF8BDCF +:1062700040460020F8B506460D4602F0FBF90F4AED +:10628000134653F8107F9F4206D12A4601463046F6 +:10629000BDE8F840FFF7C2BFD169BB68441A2C19AA +:1062A00028BF2C46A34202D92946FFF79BFF22466E +:1062B00031460348BDE8F840FFF77EBF4046002066 +:1062C00050460020C0E90323002310B45DF8044BBE +:1062D0004361FFF7CFBF000010B5194C2369984206 +:1062E0000DD08168D0E9003213605A609A680A4480 +:1062F0009A60002303604FF0FF33A36110BD026872 +:10630000234643F8102F53600022026022699A420C +:1063100003D1BDE8104002F0BDB9936881680B4419 +:10632000936002F0A7F92269E1699268441AA242D7 +:10633000E4D91144BDE81040091AFFF753BF00BF6C +:10634000404600202DE9F047DFF8BC8008F1100737 +:106350002C4ED8F8105002F08DF9D8F81C40AA68DD +:10636000031B9A423ED814444FF00009D5E900328D +:10637000C8F81C4013605A60C5F80090D8F8103077 +:10638000B34201D102F086F989F31188D5E90331CE +:1063900028469847302383F311886B69002BD8D0A7 +:1063A00002F068F96A69A0EB040982464A450DD2F9 +:1063B000022002F045FB0022D8F81030B34208D189 +:1063C00051462846BDE8F047FFF728BF121A22447D +:1063D000F2E712EB09092946384638BF4A46FFF76B +:1063E000EBFEB5E7D8F81030B34208D01444C8F833 +:1063F0001C00211AA960BDE8F047FFF7F3BEBDE815 +:10640000F08700BF504600204046002010B560B91C +:10641000074804790368053C9B6818BF0124984726 +:1064200008B144F00404204610BD0124FBE700BF7E +:10643000A4360020FFF7EABF2DE9F047884617464B +:106440009A460446B0B90D4E3579052D05D0032482 +:106450000DE0013D15F0FF050ED032685346394678 +:106460003046D2F814904246C8470028F1D1204661 +:10647000BDE8F0870424FAE70124F8E7A4360020F9 +:106480002DE9F047884617469A460446B0B90D4EA6 +:106490003579052D05D003240DE0013D15F0FF05EC +:1064A0000ED03268534639463046D2F818904246EC +:1064B000C8470028F1D12046BDE8F0870424FAE758 +:1064C0000124F8E7A436002037B50C46154670B90C +:1064D00051B101290BD10748694603681B6A9847E7 +:1064E00010B9019B04462B60204603B030BD042444 +:1064F000FAE700BFA436002000207047FEE7000046 +:10650000704700004FF0FF30704700004B68436059 +:106510008B688360CB68C3600B6943614B6903621E +:106520008B6943620B6803607047000008B53C4B01 +:1065300040F2FF713B48D3F888200A43C3F8882013 +:10654000D3F8882022F4FF6222F00702C3F88820E3 +:10655000D3F88820D3F8E0200A43C3F8E020D3F82A +:1065600008210A43C3F808212F4AD3F808311146FD +:10657000FFF7CCFF00F5806002F11C01FFF7C6FFBA +:1065800000F5806002F13801FFF7C0FF00F5806080 +:1065900002F15401FFF7BAFF00F5806002F17001CB +:1065A000FFF7B4FF00F5806002F18C01FFF7AEFF4A +:1065B00000F5806002F1A801FFF7A8FF00F58060F8 +:1065C00002F1C401FFF7A2FF00F5806002F1E001D3 +:1065D000FFF79CFF00F5806002F1FC01FFF796FFDA +:1065E00002F58C7100F58060FFF790FF01F0E2FB8F +:1065F0000E4BD3F8902242F00102C3F89022D3F858 +:10660000942242F00102C3F894220522C3F8982094 +:106610004FF06052C3F89C20054AC3F8A02008BD83 +:1066200000440258000002589893000800ED00E072 +:106630001F00080308B501F0DFFDFFF7CDFC104B8C +:10664000D3F8DC2042F04002C3F8DC20D3F8042168 +:1066500022F04002C3F80421D3F80431094B1A6830 +:1066600042F008021A601A6842F004021A6000F050 +:1066700035FD00F035FBBDE8084000F0B5B800BFBF +:10668000004402580018024801207047002070475B +:106690007047000002290CD0032904D001290748C3 +:1066A00018BF00207047032A05D8054800EBC20038 +:1066B0007047044870470020704700BF9C95000851 +:1066C000542200205095000870B59AB0054608463F +:1066D000144601A900F0C2F801A8FBF727FB431CF0 +:1066E0000022C6B25B001046C5E9003423700323C4 +:1066F000023404F8013C01ABD1B202348E4201D81D +:106700001AB070BD13F8011B013204F8010C04F833 +:10671000021CF1E708B5302383F311880348FFF723 +:1067200091F8002383F3118808BD00BFF0480020D2 +:1067300090F8803003F01F02012A07D190F88120E1 +:106740000B2A03D10023C0E91D3315E003F06003D9 +:10675000202B08D1B0F884302BB990F88120212A61 +:1067600003D81F2A04D8FFF74FB8222AEBD0FAE744 +:10677000034A426707228267C3670120704700BF50 +:106780004B22002007B5052917D8DFE801F01916BC +:1067900003191920302383F31188104A0121019035 +:1067A000FFF7F8F8019802210D4AFFF7F3F80D48BA +:1067B000FFF714F8002383F3118803B05DF804FB9E +:1067C000302383F311880748FEF7DEFFF2E730231A +:1067D00083F311880348FEF7F5FFEBE7F094000818 +:1067E00014950008F048002038B50C4D0C4C2A4692 +:1067F0000C4904F10800FFF767FF05F1CA0204F134 +:1068000010000949FFF760FF05F5CA7204F118008E +:106810000649BDE83840FFF757BF00BFC8610020F8 +:1068200054220020CC940008D9940008E494000875 +:1068300070B5044608460D46FBF778FAC6B2204606 +:10684000013403780BB9184670BD32462946FBF770 +:1068500059FA0028F3D10120F6E700002DE9F84F9E +:1068600005460C46FBF762FA2C49C6B22846FFF7EC +:10687000DFFF08B10336F6B229492846FFF7D8FFF3 +:1068800008B11036F6B2632E0DD8DFF89080DFF82D +:106890009090244FDFF894A0DFF894B02E7846B99A +:1068A0002670BDE8F88F29462046BDE8F84F02F073 +:1068B00045BA252E2ED1072241462846FBF722FA5B +:1068C00070B9DBF8003007350A3444F80A3CDBF8CD +:1068D000043044F8063CBBF8083024F8023CDDE7FD +:1068E000082249462846FBF70DFA98B9A21C0E4B20 +:1068F000197802320909C95D02F8041C13F8011B5A +:1069000001F00F015345C95D02F8031CF0D11834A2 +:106910000835C3E7013504F8016BBFE7BC950008F3 +:10692000E4940008CF95000800E8F11F0CE8F11F7F +:10693000C4950008BFF34F8F044B1A695107FCD16F +:10694000D3F810215207F8D1704700BF0020005241 +:1069500008B50D4B1B78ABB9FFF7ECFF0B4BDA68B2 +:10696000D10704D50A4A5A6002F188325A60D3F836 +:106970000C21D20706D5064AC3F8042102F1883259 +:10698000C3F8042108BD00BF266400200020005287 +:106990002301674508B5114B1B78F3B9104B1A69F1 +:1069A000510703D5DA6842F04002DA60D3F81021CB +:1069B000520705D5D3F80C2142F04002C3F80C2150 +:1069C000FFF7B8FF064BDA6842F00102DA60D3F84D +:1069D0000C2142F00102C3F80C2108BD26640020FE +:1069E000002000520F289ABF00F58060400400206C +:1069F000704700004FF400307047000010207047CF +:106A00000F2808B50BD8FFF7EDFF00F5003302683B +:106A1000013204D104308342F9D1012008BD0020A5 +:106A2000FCE700000F2838B505463FD8FFF782FF86 +:106A30001F4CFFF78DFF4FF0FF3307286361C4F849 +:106A400014311DD82361FFF775FF030243F02403BF +:106A5000E360E36843F08003E36023695A07FCD4F2 +:106A60002846FFF767FFFFF7BDFF4FF4003100F046 +:106A70008FFA2846FFF78EFFBDE83840FFF7C0BF0A +:106A8000C4F81031FFF756FFA0F108031B0243F0D2 +:106A90002403C4F80C31D4F80C3143F08003C4F85B +:106AA0000C31D4F810315B07FBD4D9E7002038BD96 +:106AB000002000522DE9F84F05460C46104645EAE5 +:106AC0000203DE0602D00020BDE8F88F20F01F0090 +:106AD000DFF8BCB0DFF8BCA0FFF73AFF04EB00081A +:106AE000444503D10120FFF755FFEDE72022294659 +:106AF000204602F0A7F810B920352034F0E72B46E5 +:106B000005F120021F68791CDDD104339A42F9D1C6 +:106B100005F178431B481C4EB3F5801F1B4B38BF53 +:106B2000184603F1F80332BFD946D1461E46FFF797 +:106B300001FF0760A5EB040C336804F11C0143F06E +:106B400002033360231FD9F8007017F00507FAD14C +:106B500053F8042F8B424CF80320F4D1BFF34F8F2E +:106B6000FFF7E8FE4FF0FF3320222146036028465E +:106B7000336823F00203336002F064F80028BBD0CE +:106B80003846B0E7142100520C2000521420005265 +:106B9000102000521021005210B5084C237828B163 +:106BA0001BB9FFF7D5FE0123237010BD002BFCD0CD +:106BB0002070BDE81040FFF7EDBE00BF2664002046 +:106BC0002DE9F04F0D4685B0814658B111F00D0604 +:106BD00014BF2022082211F00803019304D0431EA1 +:106BE000034269D0002435E0002E37D009F11F019F +:106BF00021F01F094FF00108314F05F00403DFF8C1 +:106C0000CCA005EA080BBBF1000F32D07869C007B1 +:106C10002FD408F101080C37B8F1060FF3D19EB953 +:106C2000284D4946A819019201F08AFD0446002822 +:106C300039D12036019AA02EF3D1494601F080FDCA +:106C4000044600282FD1019A49461F4801F078FDDB +:106C5000044660BB204605B0BDE8F08F0029C9D1CD +:106C600001462846029201F06BFD0446D8B9029A0B +:106C7000C0E713B178694107CBD5AC0702D5786975 +:106C80008007C6D5019911B178690107C1D5494678 +:106C90000AEB4810CDE9022301F052FD0446DDE97C +:106CA00002230028B5D04A460021204601E04A468A +:106CB0000021FBF743F8CDE70246002E96D199E775 +:106CC000E0950008686400202864002048640020E3 +:106CD0000021FFF775BF00000121FFF771BF000021 +:106CE00070B5144D0124144E40F2FF3200210120F2 +:106CF000FBF724F806EB441001342A6955F80C1F01 +:106D000001F00AFD062CF5D137254FF4C05420467A +:106D1000FFF7E2FF014628B122460848BDE870406F +:106D200001F0FABCC4EBC404013D4FEAD404EED137 +:106D300070BD00BFE0950008486400202864002072 +:106D40000421FFF73DBF00004843FFF7C1BF00002B +:106D500008B101F067BD7047B0F5805F10B504461B +:106D600007D8FFF7EDFF28B92046BDE81040FFF730 +:106D7000AFBF002010BD0000FFF7EABF08B501F06B +:106D800067FE034AD2E90032C01842EB010108BD98 +:106D900008650020434BD3E900232DE9F341134359 +:106DA0007CD0FFF7EBFF404A00230027F9F744FBB4 +:106DB00006460D463D4A0023F9F73EFB00231446E4 +:106DC00030462946394AF9F737FB4FF461613C23D5 +:106DD000ADF80170B4FBF1F5B4FBF3F601FB15411E +:106DE00003FB16464624B1FBF3F1314BF6B28DF8A6 +:106DF000004098423CD84FF0640C4FF4C87EA30783 +:106E000004F26C7225D1B2FBFCF30CFB132313BB11 +:106E1000B2FBFEF30EFB1322B2FA82F35B0903F21C +:106E20006D18621C8045D2B217D90FB18DF80040A1 +:106E30000022204C4FF00C0C17460CFB0343D4B23D +:106E4000013213F804C084450CD8A0EB0C000127D4 +:106E5000F5E70023E3E70123E1E7A0EB0800144690 +:106E60000127CCE70FB18DF80140431C8DF80230AB +:106E70009DF80100431C9DF800005038400640EA90 +:106E800043509DF8023040EA034040EA560040EA91 +:106E9000C52040EA411002B0BDE8F0814FF4041073 +:106EA000F9E700BF0865002040420F008051010053 +:106EB00090230B00289600080244074BD2B210B56D +:106EC000904200D110BD441C00B253F8200041F89C +:106ED000040BE0B2F4E700BF504000580E4B30B551 +:106EE0001C6F240405D41C6F1C671C6F44F4004401 +:106EF0001C670A4C02442368D2B243F480732360B7 +:106F0000074B904200D130BD441C51F8045B00B2E5 +:106F100043F82050E0B2F4E7004402580048025819 +:106F20005040005807B5012201A90020FFF7C4FF17 +:106F3000019803B05DF804FB13B50446FFF7F2FFB8 +:106F4000A04205D0012201A900200194FFF7C6FF4D +:106F500002B010BD10B56424013C4FF47A70FFF705 +:106F6000DDF814F0FF04F7D1084B4FF080721424C1 +:106F70009A6103F5805308229A61013C4FF47A70BC +:106F8000FFF7CCF814F0FF04F7D110BD0000025851 +:106F90000144BFF34F8F064B884204D3BFF34F8F9A +:106FA000BFF36F8F7047C3F85C022030F4E700BF77 +:106FB00000ED00E00144BFF34F8F064B884204D33D +:106FC000BFF34F8FBFF36F8F7047C3F8700220304D +:106FD000F4E700BF00ED00E070B5054616460C462C +:106FE00001201021FFF7B0FE286046733CB1204617 +:106FF00036B1FFF7A5FE2B68186000B19C6070BD2C +:10700000FFF76AFEF7E7000070B50E461546044626 +:1070100000B30B6843608368934210D213B10068D9 +:10702000FFF796FE637B28462BB1FFF789FE2060B1 +:1070300020B9A06070BDFFF74FFEF8E7A56020689B +:1070400005F11F01306021F01F01FFF7A1FF0120B2 +:107050002073EFE70120EDE710B5044640B100686A +:10706000884205D1606808B1FAF742FE0023237315 +:1070700010BD000070B50E461546044620B3836867 +:107080009A4210D913B10068FFF762FE637B28466D +:107090002BB1FFF755FE206020B9A06070BDFFF74F +:1070A0001BFEF8E7A560316819B12A462068FAF797 +:1070B0001FFE206805F11F01306021F01F01FFF75E +:1070C00079FF01202073E9E70120E7E720B1036899 +:1070D0008B4204BF0023037370470000034B1A6800 +:1070E0001AB9034AD2F8D0241A60704710650020FC +:1070F0000040025808B5FFF7F1FF024B1868C0F3D3 +:10710000806008BD1065002070B5BFF34F8FBFF3DE +:107110006F8F1A4A0021C2F85012BFF34F8FBFF38E +:107120006F8F536943F400335361BFF34F8FBFF345 +:107130006F8FC2F88410BFF34F8FD2F8803043F6C0 +:10714000E074C3F3C900C3F34E335B0103EA0406E2 +:10715000014646EA81750139C2F86052F9D2203BF6 +:1071600013F1200FF2D1BFF34F8F536943F48033F3 +:107170005361BFF34F8FBFF36F8F70BD00ED00E021 +:10718000FEE70000214B2248224A70B5904237D3D7 +:10719000214BC11EDA1C121A22F003028B4238BFA7 +:1071A00000220021FAF7CAFD1C4A0023C2F88430ED +:1071B000BFF34F8FD2F8803043F6E074C3F3C900B9 +:1071C000C3F34E335B0103EA0406014646EA8175C8 +:1071D0000139C2F86C52F9D2203B13F1200FF2D1E1 +:1071E000BFF34F8FBFF36F8FBFF34F8FBFF36F8F1F +:1071F0000023C2F85032BFF34F8FBFF36F8F70BDC3 +:1072000053F8041B40F8041BC0E700BF9097000828 +:1072100020670020206700202067002000ED00E0AC +:10722000074BD3F8D81021EA0001C3F8D810D3F8DF +:10723000002122EA0002C3F80021D3F80031704790 +:107240000044025870B5D0E9244300224FF0FF35C6 +:107250009E6804EB42135101D3F80009002805DAB7 +:10726000D3F8000940F08040C3F80009D3F8000BC0 +:10727000002805DAD3F8000B40F08040C3F8000B7B +:10728000013263189642C3F80859C3F8085BE0D28C +:107290004FF00113C4F81C3870BD0000890141F0A3 +:1072A0002001016103699B06FCD41220FEF7CABECF +:1072B00010B50A4C2046FEF74BFB094BC4F8903042 +:1072C000084BC4F89430084C2046FEF741FB074BAE +:1072D000C4F89030064BC4F8943010BD14650020FB +:1072E0000000084064960008B065002000000440DB +:1072F0007096000870B503780546012B5CD1434BAE +:10730000D0F89040984258D1414B0E216520D3F8D7 +:10731000D82042F00062C3F8D820D3F8002142F010 +:107320000062C3F80021D3F80021D3F8802042F096 +:107330000062C3F88020D3F8802022F00062C3F8F6 +:107340008020D3F8803000F041FF324BE360324BB5 +:10735000C4F800380023D5F89060C4F8003EC0237C +:1073600023604FF40413A3633369002BFCDA012379 +:107370000C203361FEF766FE3369DB07FCD4122074 +:10738000FEF760FE3369002BFCDA00262846A66073 +:10739000FFF758FF6B68C4F81068DB68C4F814681E +:1073A000C4F81C6883BB1D4BA3614FF0FF336361BE +:1073B000A36843F00103A36070BD194B9842C9D183 +:1073C000134B4FF08060D3F8D82042F00072C3F81E +:1073D000D820D3F8002142F00072C3F80021D3F87E +:1073E0000021D3F8802042F00072C3F88020D3F847 +:1073F000802022F00072C3F88020D3F88030FFF79D +:107400000FFF0E214D209EE7064BCDE714650020AF +:10741000004402584014004003002002003C30C0E9 +:10742000B0650020083C30C0F8B5D0F89040054663 +:1074300000214FF000662046FFF730FFD5F894108A +:1074400000234FF001128F684FF0FF30C4F834383A +:10745000C4F81C2804EB431201339F42C2F80069B0 +:10746000C2F8006BC2F80809C2F8080BF2D20B6828 +:10747000D5F89020C5F8983063621023136116691F +:1074800016F01006FBD11220FEF7DCFDD4F8003810 +:1074900023F4FE63C4F80038A36943F4402343F0A7 +:1074A0001003A3610923C4F81038C4F814380B4B37 +:1074B000EB604FF0C043C4F8103B094BC4F8003BED +:1074C000C4F81069C4F80039D5F8983003F11002F7 +:1074D00043F48013C5F89820A362F8BD40960008D5 +:1074E00040800010D0F8902090F88A10D2F8003830 +:1074F00023F4FE6343EA0113C2F80038704700002A +:107500002DE9F84300EB8103D0F890500C468046FB +:10751000DA680FFA81F94801166806F00306731E4F +:10752000022B05EB41134FF0000194BFB604384E17 +:10753000C3F8101B4FF0010104F1100398BF06F1CE +:10754000805601FA03F3916998BF06F500460029B9 +:107550003AD0578A04F15801374349016F50D5F8A2 +:107560001C180B430021C5F81C382B180127C3F841 +:107570001019A7405369611E9BB3138A928B9B0815 +:10758000012A88BF5343D8F89820981842EA034349 +:1075900001F140022146C8F89800284605EB820216 +:1075A0005360FFF77BFE08EB8900C3681B8A43EA40 +:1075B000845348341E4364012E51D5F81C381F43B0 +:1075C000C5F81C78BDE8F88305EB4917D7F8001B10 +:1075D00021F40041C7F8001BD5F81C1821EA030369 +:1075E000C0E704F13F030B4A2846214605EB83031D +:1075F0005A60FFF753FE05EB4910D0F8003923F429 +:107600000043C0F80039D5F81C3823EA0707D7E74C +:107610000080001000040002D0F894201268C0F826 +:107620009820FFF70FBE00005831D0F89030490184 +:107630005B5813F4004004D013F4001F0CBF022069 +:10764000012070474831D0F8903049015B5813F45D +:10765000004004D013F4001F0CBF0220012070472B +:1076600000EB8101CB68196A0B6813604B685360AB +:107670007047000000EB810330B5DD68AA6913682C +:10768000D36019B9402B84BF402313606B8A146800 +:10769000D0F890201C4402EB4110013C09B2B4FB2D +:1076A000F3F46343033323F0030343EAC44343F097 +:1076B000C043C0F8103B2B6803F00303012B0ED12D +:1076C000D2F8083802EB411013F4807FD0F8003B69 +:1076D00014BF43F0805343F00053C0F8003B02EB6B +:1076E0004112D2F8003B43F00443C2F8003B30BDE6 +:1076F0002DE9F041D0F8906005460C4606EB4113A9 +:10770000D3F8087B3A07C3F8087B08D5D6F81438B5 +:107710001B0704D500EB8103DB685B689847FA0719 +:107720001FD5D6F81438DB071BD505EB8403D968C1 +:10773000CCB98B69488A5A68B2FBF0F600FB162276 +:107740008AB91868DA6890420DD2121AC3E9002487 +:10775000302383F3118821462846FFF78BFF84F3FB +:107760001188BDE8F081012303FA04F26B8923EA52 +:1077700002036B81CB68002BF3D021462846BDE87D +:10778000F041184700EB81034A0170B5DD68D0F87D +:1077900090306C692668E66056BB1A444FF40020AE +:1077A000C2F810092A6802F00302012A0AB20ED1B7 +:1077B000D3F8080803EB421410F4807FD4F80009D2 +:1077C00014BF40F0805040F00050C4F8000903EBB3 +:1077D0004212D2F8000940F00440C2F80009012228 +:1077E000D3F8340802FA01F10143C3F8341870BD2C +:1077F00019B9402E84BF4020206020681A442E8A88 +:107800008419013CB4FBF6F440EAC44040F0005057 +:10781000C6E700002DE9F843D0F8906005460C4615 +:107820004F0106EB4113D3F8088918F0010FC3F894 +:1078300008891CD0D6F81038DB0718D500EB810377 +:10784000D3F80CC0DCF81430D3F800E0DA689645C1 +:1078500030D2A2EB0E024FF000091A60C3F8049078 +:10786000302383F31188FFF78DFF89F3118818F017 +:10787000800F1DD0D6F834380126A640334217D0E9 +:1078800005EB84030134D5F89050D3F80CC0E4B272 +:107890002F44DCF8142005EB0434D2F800E05168E2 +:1078A000714514D3D5F8343823EA0606C5F8346890 +:1078B000BDE8F883012303FA01F2038923EA0203F6 +:1078C0000381DCF80830002BD1D09847CFE7AEEB2E +:1078D0000103BCF81000834228BF0346D7F81809FB +:1078E00080B2B3EB800FE3D89068A0F1040959F897 +:1078F000048FC4F80080A0EB09089844B8F1040F85 +:10790000F5D818440B4490605360C8E72DE9F84F50 +:10791000D0F8905004466E69AB691E4016F480584A +:107920006E6103D0BDE8F84FFEF782B8002E12DA80 +:10793000D5F8003E9B0705D0D5F8003E23F00303A1 +:10794000C5F8003ED5F80438204623F00103C5F8F9 +:107950000438FEF79BF8370505D52046FFF772FC83 +:107960002046FEF781F8B0040CD5D5F8083813F09E +:10797000060FEB6823F470530CBF43F4105343F429 +:10798000A053EB6031071BD56368DB681BB9AB699B +:1079900023F00803AB612378052B0CD1D5F8003E0A +:1079A0009A0705D0D5F8003E23F00303C5F8003E42 +:1079B0002046FEF76BF86368DB680BB120469847FA +:1079C000F30200F1BA80B70226D5D4F890900027D0 +:1079D0004FF0010A09EB4712D2F8003B03F44023B1 +:1079E000B3F5802F11D1D2F8003B002B0DDA62895C +:1079F0000AFA07F322EA0303638104EB8703DB68D7 +:107A0000DB6813B13946204698470137D4F89430E3 +:107A1000FFB29B689F42DDD9F00619D5D4F89000DB +:107A2000026AC2F30A1702F00F0302F4F012B2F571 +:107A3000802F00F0CA80B2F5402F09D104EB8303F8 +:107A4000002200F58050DB681B6A974240F0B0804E +:107A50003003D5F8185835D5E90303D50021204661 +:107A6000FFF746FEAA0303D501212046FFF740FE9B +:107A70006B0303D502212046FFF73AFE2F0303D5FF +:107A800003212046FFF734FEE80203D504212046F7 +:107A9000FFF72EFEA90203D505212046FFF728FE99 +:107AA0006A0203D506212046FFF722FE2B0203D5EA +:107AB00007212046FFF71CFEEF0103D508212046D1 +:107AC000FFF716FE700340F1A780E90703D50021F8 +:107AD0002046FFF79FFEAA0703D501212046FFF7A6 +:107AE00099FE6B0703D502212046FFF793FE2F076F +:107AF00003D503212046FFF78DFEEE0603D50421B2 +:107B00002046FFF787FEA80603D505212046FFF78C +:107B100081FE690603D506212046FFF77BFE2A0673 +:107B200003D507212046FFF775FEEB0574D52046E7 +:107B30000821BDE8F84FFFF76DBED4F890904FF0E4 +:107B4000000B4FF0010AD4F894305FFA8BF79B6872 +:107B50009F423FF638AF09EB4713D3F8002902F4F0 +:107B60004022B2F5802F20D1D3F80029002A1CDA58 +:107B7000D3F8002942F09042C3F80029D3F8002935 +:107B8000002AFBDB3946D4F89000FFF787FB2289F7 +:107B90000AFA07F322EA0303238104EB8703DB6875 +:107BA0009B6813B13946204698470BF1010BCAE791 +:107BB000910701D1D0F80080072A02F101029CBF91 +:107BC00003F8018B4FEA18283FE704EB830300F525 +:107BD0008050DA68D2F818C0DCF80820DCE9001C14 +:107BE000A1EB0C0C00218F4208D1DB689B699A68DD +:107BF0003A449A605A683A445A6029E711F0030FF0 +:107C000001D1D0F800808C4501F1010184BF02F858 +:107C1000018B4FEA1828E6E7BDE8F88F08B503485E +:107C2000FFF774FEBDE8084000F070BF1465002047 +:107C300008B50348FFF76AFEBDE8084000F066BFDC +:107C4000B0650020D0F8903003EB4111D1F8003B33 +:107C500043F40013C1F8003B70470000D0F89030A7 +:107C600003EB4111D1F8003943F40013C1F8003996 +:107C700070470000D0F8903003EB4111D1F8003B81 +:107C800023F40013C1F8003B70470000D0F8903097 +:107C900003EB4111D1F8003923F40013C1F8003986 +:107CA00070470000064BD3F8DC200243C3F8DC2009 +:107CB000D3F804211043C3F80401D3F8043170470A +:107CC000004402583A4B4FF0FF31D3F8802062F065 +:107CD0000042C3F88020D3F8802002F00042C3F8AD +:107CE0008020D3F88020D3F88420C3F88410D3F800 +:107CF00084200022C3F88420D3F88400D86F40F099 +:107D0000FF4040F4FF0040F4DF4040F07F00D867C0 +:107D1000D86F20F0FF4020F4FF0020F4DF4020F077 +:107D20007F00D867D86FD3F888006FEA40506FEAB9 +:107D30005050C3F88800D3F88800C0F30A00C3F895 +:107D40008800D3F88800D3F89000C3F89010D3F8D7 +:107D50009000C3F89020D3F89000D3F89400C3F8B3 +:107D60009410D3F89400C3F89420D3F89400D3F877 +:107D70009800C3F89810D3F89800C3F89820D3F867 +:107D80009800D3F88C00C3F88C10D3F88C00C3F89B +:107D90008C20D3F88C00D3F89C00C3F89C10D3F847 +:107DA0009C10C3F89C20D3F89C3000F0D7B900BFDA +:107DB0000044025808B50122534BC3F80821534B25 +:107DC000D3F8F42042F00202C3F8F420D3F81C21C7 +:107DD00042F00202C3F81C210222D3F81C314C4BA2 +:107DE000DA605A689104FCD54A4A1A6001229A6006 +:107DF000494ADA6000221A614FF440429A61444BCA +:107E00009A699204FCD51A6842F480721A603F4B5A +:107E10001A6F12F4407F04D04FF480321A670022A8 +:107E20001A671A6842F001021A60384B1A68500744 +:107E3000FCD500221A611A6912F03802FBD1012127 +:107E400019604FF0804159605A67344ADA62344A07 +:107E50001A611A6842F480321A602C4B1A68910336 +:107E6000FCD51A6842F480521A601A689204FCD554 +:107E70002C4A2D499A6200225A63196301F57C014C +:107E8000DA6301F5E77199635A64284A1A64284A4B +:107E9000DA621A6842F0A8521A601C4B1A6802F0A3 +:107EA0002852B2F1285FF9D148229A614FF48862D2 +:107EB000DA6140221A621F4ADA641F4A1A651F4AB1 +:107EC0005A651F4A9A6532231E4A1360136803F0ED +:107ED0000F03022BFAD10D4A136943F00303136118 +:107EE000136903F03803182BFAD14FF00050FFF755 +:107EF000D9FE4FF08040FFF7D5FE4FF00040BDE8BF +:107F00000840FFF7CFBE00BF008000510044025878 +:107F10000048025800C000F0020000010000FF010C +:107F2000008890083220600063020901470E0508AE +:107F3000DD0BBF0120000020000001100910E0004F +:107F400000010110002000524FF0B04208B5D2F8F5 +:107F5000883003F00103C2F8883023B1044A136863 +:107F60000BB150689847BDE8084000F0CFBD00BF96 +:107F7000986600204FF0B04208B5D2F8883003F080 +:107F80000203C2F8883023B1044A93680BB1D06869 +:107F90009847BDE8084000F0B9BD00BF98660020D2 +:107FA0004FF0B04208B5D2F8883003F00403C2F8AD +:107FB000883023B1044A13690BB150699847BDE872 +:107FC000084000F0A3BD00BF986600204FF0B0420B +:107FD00008B5D2F8883003F00803C2F8883023B11E +:107FE000044A93690BB1D0699847BDE8084000F096 +:107FF0008DBD00BF986600204FF0B04208B5D2F8A2 +:10800000883003F01003C2F8883023B1044A136AA1 +:108010000BB1506A9847BDE8084000F077BD00BF3B +:10802000986600204FF0B04310B5D3F8884004F4B0 +:108030007872C3F88820A30604D5124A936A0BB15C +:10804000D06A9847600604D50E4A136B0BB1506B8B +:108050009847210604D50B4A936B0BB1D06B984718 +:10806000E20504D5074A136C0BB1506C9847A30581 +:1080700004D5044A936C0BB1D06C9847BDE810400E +:1080800000F044BD986600204FF0B04310B5D3F81F +:10809000884004F47C42C3F88820620504D5164A5F +:1080A000136D0BB1506D9847230504D5124A936D9B +:1080B0000BB1D06D9847E00404D50F4A136E0BB195 +:1080C000506E9847A10404D50B4A936E0BB1D06E45 +:1080D0009847620404D5084A136F0BB1506F984754 +:1080E000230404D5044A936F0BB1D06F9847BDE8C1 +:1080F000104000F00BBD00BF9866002008B5034893 +:10810000FCF70CFDBDE8084000F000BDA4360020DF +:1081100008B50348FCF706FEBDE8084000F0F6BCD1 +:10812000FC38002008B50348FCF7FCFDBDE808401A +:1081300000F0ECBC6839002008B50348FCF7F2FDFC +:10814000BDE8084000F0E2BCD439002008B500F0DA +:108150003FFDBDE8084000F0D9BC0000062108B58D +:10816000084600F033F80621072000F02FF806211A +:10817000082000F02BF80621092000F027F806213E +:108180000A2000F023F80621172000F01FF806212E +:10819000282000F01BF809217A2000F017F80921A7 +:1081A000312000F013F80721322000F00FF80C21E5 +:1081B000262000F00BF80C21272000F007F80C21F6 +:1081C0005220BDE8084000F001B80000090100F1AC +:1081D0006043012203F56143C9B283F8001300F044 +:1081E0001F039A4043099B0003F1604303F5614379 +:1081F000C3F880211A60704708B5FFF763FD00F0EF +:10820000AFFCFDF7C9F9FDF767F9FDF79FFBFDF737 +:1082100071FAFEF73DFABDE8084000F029BA000007 +:1082200030B50433039C0172002104FB0325C160B7 +:10823000C0E90653049B0363059BC0E90000C0E945 +:108240000422C0E90842C0E90A11436330BD0000BE +:108250000022416AC260C0E90411C0E90A226FF03D +:108260000101FDF79BBF0000D0E90432934201D128 +:10827000C2680AB9181D7047002070470369196069 +:108280000021C2680132C260C2691344826993420C +:10829000036124BF436A0361FDF774BF38B5044628 +:1082A0000D46E3683BB162690020131D1268A362AA +:1082B0001344E36207E0237A33B929462046FDF7E9 +:1082C00051FF0028EDDA38BD6FF00100FBE7000038 +:1082D000C368C269013BC360436913448269934226 +:1082E000436124BF436A436100238362036B03B18C +:1082F0001847704770B53023044683F31188866AA7 +:108300003EB9FFF7CBFF054618B186F31188284622 +:1083100070BDA36AE26A13F8015B9342A36202D3C1 +:108320002046FFF7D5FF002383F31188EFE7000015 +:108330002DE9F84F04460E46174698464FF030098F +:1083400089F311880025AA46D4F828B0BBF1000FA4 +:1083500009D141462046FFF7A1FF20B18BF31188D8 +:108360002846BDE8F88FD4E90A12A7EB050B521A8C +:10837000934528BF9346BBF1400F1BD9334601F10B +:10838000400251F8040B914243F8040BF9D1A36A5F +:10839000403640354033A362D4E90A239A4202D3DF +:1083A0002046FFF795FF8AF31188BD42D8D289F3A2 +:1083B0001188C9E730465A46F9F79AFCA36A5E4429 +:1083C0005D445B44A362E7E710B5029C043301728D +:1083D00003FB0421C460C0E906130023C0E90A338B +:1083E000039B0363049BC0E90000C0E90422C0E9C9 +:1083F0000842436310BD0000026A6FF00101C260D1 +:10840000426AC0E904220022C0E90A22FDF7C6BE82 +:10841000D0E904239A4201D1C26822B9184650F823 +:10842000043B0B60704700231846FAE7C36800213D +:10843000C2690133C3604369134482699342436153 +:1084400024BF436A4361FDF79DBE000038B5044672 +:108450000D46E3683BB1236900201A1DA262E26960 +:108460001344E36207E0237A33B929462046FDF737 +:1084700079FE0028EDDA38BD6FF00100FBE700005F +:1084800003691960C268013AC260C2691344826913 +:108490009342036124BF436A036100238362036B39 +:1084A00003B118477047000070B530230D460446ED +:1084B000114683F31188866A2EB9FFF7C7FF10B102 +:1084C00086F3118870BDA36A1D70A36AE26A013346 +:1084D0009342A36204D3E16920460439FFF7D0FF39 +:1084E000002080F31188EDE72DE9F84F04460D4692 +:1084F000904699464FF0300A8AF311880026B34619 +:10850000A76A4FB949462046FFF7A0FF20B187F37D +:1085100011883046BDE8F88FD4E90A073A1AA8EB6B +:108520000607974228BF1746402F1BD905F1400385 +:1085300055F8042B9D4240F8042BF9D1A36A40362C +:108540004033A362D4E90A239A4204D3E169204666 +:108550000439FFF795FF8BF311884645D9D28AF38A +:108560001188CDE729463A46F9F7C2FBA36A3D4494 +:108570003E443B44A362E5E7D0E904239A4217D185 +:10858000C3689BB1836A8BB1043B9B1A0ED0136006 +:10859000C368013BC360C3691A4483699A4202619C +:1085A00024BF436A03610023836201231846704796 +:1085B0000023FBE701F01F03F0B502F01F0456098A +:1085C0005A1C0123B6EB511F50F8265003FA02F350 +:1085D0004FEA511703F1FF333DBF50F82720C4F194 +:1085E0002000134003EA05003BBF03FA00F225FA1E +:1085F00004F0E0401043F0BD70B57E227F210546B7 +:10860000FFF7D8FF18B1012819D0002070BD3E2215 +:1086100049212846FFF7CEFF2F2204463121284664 +:10862000FFF7C8FF06460134502202365321284680 +:10863000B440FFF7BFFF093804FA00F0E6E7302244 +:1086400045212846FFF7B6FF01308002DEE7000033 +:1086500090F8D63090F8D7201B0403EB026390F813 +:10866000D42090F8D500134403EB0020704700009D +:1086700000F084BA014B586A704700BF000C0040FC +:10868000034B002258631A610222DA60704700BF70 +:10869000000C0040014B0022DA607047000C0040E3 +:1086A000014B5863704700BF000C0040024B034A67 +:1086B0001A60034A5A6070476466002020670020F1 +:1086C00000000220074B494210B55C68201A0840A0 +:1086D0001968821A8A4203D3A24201D85A6010BD97 +:1086E0000020FCE76466002008B5302383F311887E +:1086F000FFF7E8FF002383F3118808BD0448054B0A +:1087000003600023C0E901330C3000F017B900BF4B +:108710006C660020E9860008CB1D083A23F00703A9 +:10872000591A521A10B4D2080024C0E900438460D8 +:108730000C301C605A605DF8044B00F0FFB800007C +:108740002DE9F74F364FCD1D8846002818BF074644 +:10875000082A4FEAD50538BF082207F10C003C1D56 +:108760009146019000F02CF9019809F10701C9F137 +:10877000000E2246246864B900F02CF93B68CBB3A4 +:1087800008224946E8009847044698B340E9027831 +:1087900030E004EB010CD4F804A00CEA0E0C0AF152 +:1087A0000106ACF1080304EBC6069E42E1D9A6EB34 +:1087B0000C0CB5EBEC0F4FEAEC0BDAD89C421DD257 +:1087C00004F10802AB45A3EB02024FEAE202626049 +:1087D00009D9691CED4303EBC1025D44556025686E +:1087E00043F8315022601C46C3F8048044F8087BEB +:1087F00000F0F0F8204603B0BDE8F08FAA452168EC +:1088000002D111602346EEE7013504EBC50344F8BD +:10881000351003F10801761AF6105E601360F1E777 +:108820006C66002073B50446A0F1080550F8080CEA +:1088300054F8043C061D0C3007330190DB0844F863 +:10884000043C00F0BDF8334601989E421A6801D0FE +:10885000AB4228D20AB1954225D244F8082C54F8EC +:10886000042C1D60013254F8081C05EBC206B1420D +:1088700006D14E68324444F8042C0A6844F8082CA7 +:108880005E68711C03EBC1018D4207D154F8042CC2 +:10889000013232445A6054F8082C1A6002B0BDE824 +:1088A000704000F097B81346CFE70000FEE70000E5 +:1088B00070B51E4B0025044686B058600E46056311 +:1088C000816300F0FBF804F12803A5606563C4E947 +:1088D0000A3304F11003C4E904334FF0FF33C4E951 +:1088E0000044C4E90635FFF7C5FE2B46024604F1F5 +:1088F0003C012046C4E9082380230D4A6567FDF743 +:10890000ABFB7368E0600B4A03620123009280F8BE +:1089100024306846F26801923269CDE90223064BA1 +:10892000CDE90435FDF7CCFB06B070BDE84800206A +:10893000849600087C960008AD8800080023C0E9F2 +:10894000000083600361704770B51C4B0546846866 +:10895000DE685CB3B44213D103690133036170BDB7 +:10896000A36094F8243083B1062B15D1A06A214668 +:10897000D4E9003213605A60FDF7C0FAA36A9C681C +:10898000B368A2689A42EBD306E0D4E900322046ED +:1089900013605A60FDF7C2FA28463146FDF7AEFA79 +:1089A000B5620620BDE87040FDF7BABA036986607B +:1089B00001330361336BC3603063D0E7404600206E +:1089C00008B5302383F31188FFF7BEFF002383F33C +:1089D000118808BD194BD96883688B4210B520D126 +:1089E000302383F311880269013A0261B2B9046845 +:1089F000C368A0420B631ED04A6B9BB901238A60F7 +:108A0000036103681A68026050601A6B8360C26079 +:108A100018631846FDF782FAFDF7D2FA002383F3B4 +:108A2000118810BD1C68A34203D0A468A24238BFBD +:108A30002246DB68E1E78260F0E700BF40460020A5 +:108A4000024A536B18435063704700BF40460020F2 +:108A500070B5104E82B0FDF7DBFA0546FFF70AFE4F +:108A6000326803469042336037BF0B4A0A49516867 +:108A7000146836BF0131D1E900415160041928461C +:108A800041F100010191FDF7CDFA2046019902B0B4 +:108A900070BD00BF8C66002090660020EFF3098354 +:108AA000054968334A6B22F001024A6383F309885F +:108AB000002383F31188704700EF00E0302080F33B +:108AC000118862B60D4B0E4AD96821F4E0610904A1 +:108AD000090C0A430B49DA60D3F8FC2042F080729B +:108AE000C3F8FC20084AC2F8B01F116841F0010128 +:108AF00011602022DA7783F82200704700ED00E051 +:108B00000003FA0555CEACC5001000E0302310B5C7 +:108B100083F311880E4B5B6813F4006314D0F1EEFD +:108B2000103AEFF309844FF08073683CE361094B1E +:108B3000DB6B236684F30988FDF720FA10B1064B3E +:108B4000A36110BD054BFBE783F31188F9E700BF74 +:108B500000ED00E000EF00E02F0400083204000800 +:108B60000023054A19460133102BC2E9001102F116 +:108B70000802F8D1704700BF98660020114BD3F867 +:108B8000E82042F00802C3F8E820D3F8102142F0B0 +:108B90000802C3F810210C4AD3F81031D36B43F00C +:108BA0000803D363C722094B9A624FF0FF32DA629F +:108BB00000229A615A63DA605A6001225A611A608F +:108BC000704700BF004402580010005C000C0040D9 +:108BD000094A08B51169D3680B40D9B29B076FEAFF +:108BE0000101116107D5302383F31188FDF70EFAD7 +:108BF000002383F3118808BD000C0040FEF7A8B8DD +:108C0000012838BF012010B504462046FEF760F861 +:108C100030B900F007F808B900F00CF88047F4E725 +:108C200010BD0000024B1868BFF35B8F704700BF98 +:108C30001867002008B5062000F056F80120FDF75F +:108C40005DFC000010B501390244904201D10020C2 +:108C500005E0037811F8014FA34201D0181B10BDA5 +:108C60000130F2E7884210B501EB020402D98442D8 +:108C7000234607D8431EA14208D011F8012B03F860 +:108C8000012FF8E7024401468A4200D110BD13F8D3 +:108C9000014D02F8014DF7E71F2938B504460D468E +:108CA00004D9162303604FF0FF3038BD426C12B177 +:108CB00052F821304BB9204600F030F82A460146E0 +:108CC0002046BDE8384000F017B8012B0AD0591CE7 +:108CD00003D1162303600120E7E7002442F8254072 +:108CE000284698470020E0E7024B01461868FFF746 +:108CF000D3BF00BF7422002038B5074D00230446BF +:108D0000084611462B60FDF7FDFB431C02D12B6882 +:108D100003B1236038BD00BF1C670020FDF7ECBB2A +:108D2000C9B2034610F8012B1AB18A42F9D118468C +:108D30007047002918BF0023F9E70000034611F827 +:108D4000012B03F8012B002AF9D1704710B5013926 +:108D5000034632B111F8014F03F8014B013A002CE0 +:108D6000F7D11A440021934200D110BD03F8011B32 +:108D7000F9E700004D4435002D2D0A002F61726483 +:108D80007570696C6F742E6162696E002F61726418 +:108D90007570696C6F742D7665726966792E616283 +:108DA000696E002F6172647570696C6F742D666CEA +:108DB0006173682E6162696E002F617264757069FB +:108DC0006C6F742D666C61736865642E6162696E88 +:108DD000000000000000000000000000090F000873 +:108DE000A50F000855110008DD0F00089D0F0008B1 +:108DF0000000000000000000050F0008B10F00088F +:108E00008D110008010F00080D0F000853544D3359 +:108E10003248373F3F3F0053544D33324837337861 +:108E20002F3732780053544D3332483734332F378D +:108E300035332F373530000001105A000310590028 +:108E400001205800032056002F0000005375636373 +:108E500065737366756C6C79206D6F756E7465647F +:108E6000205344436172642028736C6F77646F777A +:108E70006E3D2575290A0000EB7690455846415411 +:108E800020202000464154333220202000000000E2 +:108E90002A3A3C3E7C223F7F002B2C3B3D5B5D0011 +:108EA0004355454141414143454545494949414172 +:108EB0004592924F4F4F5555594F554F9C4F9E9F3E +:108EC00041494F55A5A5A6A7A8A9AAABACADAEAF81 +:108ED000B0B1B2B3B4414141B8B9BABBBCBDBEBF79 +:108EE000C0C1C2C3C4C54141C8C9CACBCCCDCECF15 +:108EF000D1D145454549494949D9DADBDCDD49DF6E +:108F00004FE14F4F4F4FE6E8E85555555959EEEFB1 +:108F1000F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFFD9 +:108F200001030507090E10121416181C1E0000007C +:108F300061001A03E0001703F8000703FF000100B7 +:108F400078010001300132010601390110014A01A6 +:108F50002E017901060180014D0043028101820149 +:108F600082018401840186018701870189018A01C8 +:108F70008B018B018D018E018F0190019101910177 +:108F800093019401F60196019701980198013D0221 +:108F90009B019C019D0120029F01A001A001A20153 +:108FA000A201A401A401A601A701A701A901AA0188 +:108FB000AB01AC01AC01AE01AF01AF01B101B20137 +:108FC000B301B301B501B501B701B801B801BA01E8 +:108FD000BB01BC01BC01BE01F701C001C101C2015E +:108FE000C301C401C501C401C701C801C701CA0149 +:108FF000CB01CA01CD011001DD0101008E01DE01AE +:109000001201F3010300F101F401F401F801280158 +:10901000220212013A020900652C3B023B023D028A +:10902000662C3F0240024102410246020A015302FD +:10903000400081018601550289018A0158028F0191 +:109040005A0290015C025D025E025F0293016102BE +:10905000620294016402650266026702970196014A +:109060006A02622C6C026D026E029C017002710237 +:109070009D01730274029F017602770278027902E1 +:109080007A027B027C02642C7E027F02A6018102AE +:109090008202A9018402850286028702AE0144028F +:1090A000B101B20145028D028E028F02900291023F +:1090B000B7017B030300FD03FE03FF03AC030400C1 +:1090C0008603880389038A03B1031103C2030200E4 +:1090D000A303A303C4030803CC0303008C038E0380 +:1090E0008F03D8031801F2030A00F903F303F40312 +:1090F000F503F603F703F703F903FA03FA03300461 +:10910000200350041007600422018A043601C104C0 +:109110000E01CF040100C004D004440161052604FF +:10912000000000007D1D0100632C001E9601A01EA2 +:109130005A01001F0806101F0606201F0806301FD0 +:109140000806401F0606511F0700591F521F5B1FCC +:10915000541F5D1F561F5F1F601F0806701F0E0003 +:10916000BA1FBB1FC81FC91FCA1FCB1FDA1FDB1FB7 +:10917000F81FF91FEA1FEB1FFA1FFB1F801F0806CD +:10918000901F0806A01F0806B01F0400B81FB91FD3 +:10919000B21FBC1FCC1F0100C31FD01F0206E01F5F +:1091A0000206E51F0100EC1FF31F0100FC1F4E210A +:1091B0000100322170211002842101008321D0247A +:1091C0001A05302C2F04602C0201672C0601752C27 +:1091D0000201802C6401002D260841FF1A030000C3 +:1091E000C700FC00E900E200E400E000E500E70061 +:1091F000EA00EB00E800EF00EE00EC00C400C50060 +:10920000C900E600C600F400F600F200FB00F90019 +:10921000FF00D600DC00F800A300D800D7009201C0 +:10922000E100ED00F300FA00F100D100AA00BA005D +:10923000BF00AE00AC00BD00BC00A100AB00BB0095 +:1092400091259225932502252425C100C200C00046 +:10925000A9006325512557255D25A200A5001025ED +:10926000142534252C251C2500253C25E300C300AE +:109270005A25542569256625602550256C25A400AE +:10928000F000D000CA00CB00C8003101CD00CE00F4 +:10929000CF0018250C2588258425A600CC00802524 +:1092A000D300DF00D400D200F500D500B500FE00E9 +:1092B000DE00DA00DB00D900FD00DD00AF00B40005 +:1092C000AD00B1001720BE00B600A700F700B8003F +:1092D000B000A800B700B900B300B200A025A000FC +:1092E00001000000000000000096000000000000E7 +:1092F000000000000000000000000000000000006E +:1093000000000000896600088D6600086D510008A5 +:10931000A5540008015100082951000851510008C6 +:10932000E9500008000000005955000845550008A4 +:10933000815500086D5500087955000865550008ED +:10934000515500083D5500088D55000800000000EB +:10935000715600085D5600089956000885560008A9 +:10936000915600087D5600086956000855560008B9 +:10937000A5560008000000000100000000000000E9 +:10938000633000008093000800000000000000002F +:10939000B8460020E84800200000812A00000000B4 +:1093A000AAAAAAAA00000024FFFE000000000000F4 +:1093B00000A00A000001000000000000AAAAAAAA5A +:1093C00000000000FFFF000000000000000000009F +:1093D0001400AA5600000000AAAAAAAA1400555414 +:1093E000FFFF000000000000CCCC0C0020681A0039 +:1093F00000000000AAAA8AAA10541500FFFF00006E +:10940000000C70077700000040810201001000008E +:10941000AAAAAAAA00410100F7FF000000000070FC +:10942000070000000000000000000000AAAAAAAA8D +:1094300000000000FFFF000000000000000000002E +:109440000000000000000000AAAAAAAA0000000074 +:10945000FFFF00000000000000000000000000000E +:1094600000000000AAAAAAAA00000000FFFF000056 +:1094700000000000000000000000000000000000EC +:10948000AAAAAAAA00000000FFFF00000000000036 +:10949000000000000000000000000000AAAAAAAA24 +:1094A00000000000FFFF00000000000000000000BE +:1094B0000000000000000000AAAAAAAA0000000004 +:1094C000FFFF000000000000000000004865782F4A +:1094D00050726F6669434E430025424F4152442506 +:1094E0002D424C002553455249414C2500000000B7 +:1094F0000200000000000000915800080159000817 +:109500004000400098610020A86100200200000097 +:10951000000000000300000000000000495900089E +:109520000000000010000000B861002000000000F2 +:10953000010000000000000014650020010102008D +:109540008567000895660008316700081567000800 +:10955000430000005895000809024300020100C0C2 +:109560003209040000010202010005240010010577 +:1095700024010001042402020524060001070582DB +:10958000030800FF09040100020A000000070501AA +:1095900002400000070581024000000012000000A8 +:1095A000A49500081201100102000040AE2D161013 +:1095B00000020102030100000403090425424F4197 +:1095C00052442500437562654F72616E67650030D5 +:1095D0003132333435363738394142434445460019 +:1095E0000000002000000200020000000000003027 +:1095F0000000040008000000000000240000080033 +:10960000040000000004000000FC00000200000054 +:109610000000043000800000080000000000003856 +:1096200000000100010000001F1C1F1E1F1E1F1F45 +:109630001E1F1E1F1F1D1F1E1F1E1F1F1E1F1E1F42 +:1096400000000000A55A00085D5D0008095E0008E2 +:10965000400040004C6600204C66002001000000E5 +:109660005C6600208000000040010000080000004F +:1096700000010000001000000800000069646C6533 +:10968000000000006D61696E002C04380404380885 +:109690000C10141C20242526000000000000640487 +:1096A0000100040000000000000C0010283034000D +:1096B000B86DFF7F010000008C000000000000007A +:1096C00000001E0000000000FF000000F048002025 +:1096D000FC38002068390020D43900200000000048 +:1096E0000C8E000883040000178E00085004000050 +:1096F000258E000801000000000000000096000018 +:1097000000000800960000000008000004000000AF +:10971000B8950008000000000000000000000000F4 +:10972000000000000000000000000000782200207F +:109730000000000000000000000000000000000029 +:109740000000000000000000000000000000000019 +:109750000000000000000000000000000000000009 +:1097600000000000000000000000000000000000F9 +:1097700000000000000000000000000000000000E9 +:1097800000000000000000000000000000000000D9 :00000001FF diff --git a/Tools/bootloaders/JFB110_bl.bin b/Tools/bootloaders/JFB110_bl.bin new file mode 100755 index 0000000000000000000000000000000000000000..06d3969c94474a64d7cff975599cc544672f576a GIT binary patch literal 17924 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 literal 0 HcmV?d00001 diff --git a/Tools/bootloaders/MatekL431-ADSB_bl.bin b/Tools/bootloaders/MatekL431-ADSB_bl.bin new file mode 100755 index 0000000000000000000000000000000000000000..017ff999e0d358f3c4f5b0549d36b7ebdc797787 GIT binary patch literal 18516 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 QkTWRD0!?BC{~!MRA5=TKjQ{`u literal 0 HcmV?d00001 diff --git a/Tools/bootloaders/MatekL431-ADSB_bl.hex b/Tools/bootloaders/MatekL431-ADSB_bl.hex new file mode 100644 index 0000000000000..5718b9a9ff16f --- /dev/null +++ b/Tools/bootloaders/MatekL431-ADSB_bl.hex @@ -0,0 +1,1160 @@ +:020000040800F2 +:1000000000090020B5040008C52500087D2500086A +:10001000A52500087D2500089D250008B7040008D7 +:10002000B7040008B7040008B7040008B935000891 +:10003000B7040008B7040008B7040008B7040008B4 +:10004000B7040008B7040008B7040008B7040008A4 +:10005000B7040008B7040008554300087D430008B2 +:10006000A5430008CD430008F5430008B704000885 +:10007000B7040008B7040008B7040008B704000874 +:10008000B7040008B7040008B704000831250008C9 +:100090005D2500086D250008B70400081D44000810 +:1000A000B7040008B7040008B7040008B704000844 +:1000B000F1440008B7040008B7040008B7040008BA +:1000C000B7040008B7040008B7040008B704000824 +:1000D000B7040008B7040008B7040008B704000814 +:1000E00081440008B7040008B7040008B7040008FA +:1000F000B7040008B7040008B7040008B7040008F4 +:10010000B7040008B7040008B7040008B7040008E3 +:10011000B7040008B7040008B7040008B7040008D3 +:10012000B7040008B7040008B7040008B7040008C3 +:10013000B7040008B7040008B7040008B7040008B3 +:10014000B7040008B7040008B7040008B7040008A3 +:10015000B7040008B7040008B7040008B704000893 +:10016000B7040008B7040008B7040008B704000883 +:10017000B7040008B7040008B7040008B704000873 +:10018000B7040008B7040008B7040008B704000863 +:10019000B7040008B7040008B7040008B704000853 +:1001A000091200080000000000000000000000002C +:1001B00053B94AB9002908BF00281CBF4FF0FF31CE +:1001C0004FF0FF3000F074B9ADF1080C6DE904CECA +:1001D00000F006F8DDF804E0DDE9022304B0704722 +:1001E0002DE9F047089D04468E46002B4DD18A42EA +:1001F000944669D9B2FA82F252B101FA02F3C2F11D +:10020000200120FA01F10CFA02FC41EA030E9440AD +:100210004FEA1C48210CBEFBF8F61FFA8CF708FBCE +:1002200016E341EA034306FB07F199420AD91CEBA6 +:10023000030306F1FF3080F01F81994240F21C81D8 +:10024000023E63445B1AA4B2B3FBF8F008FB103320 +:1002500044EA034400FB07F7A7420AD91CEB040455 +:1002600000F1FF3380F00A81A74240F20781644425 +:10027000023840EA0640E41B00261DB1D4400023AA +:10028000C5E900433146BDE8F0878B4209D9002D0E +:1002900000F0EF800026C5E9000130463146BDE898 +:1002A000F087B3FA83F6002E4AD18B4202D3824202 +:1002B00000F2F980841A61EB030301209E46002DB1 +:1002C000E0D0C5E9004EDDE702B9FFDEB2FA82F206 +:1002D000002A40F09280A1EB0C014FEA1C471FFA64 +:1002E0008CFE0126200CB1FBF7F307FB131140EA4B +:1002F00001410EFB03F0884208D91CEB010103F118 +:10030000FF3802D2884200F2CB804346091AA4B2D9 +:10031000B1FBF7F007FB101144EA01440EFB00FEAD +:10032000A64508D91CEB040400F1FF3102D2A64512 +:1003300000F2BB800846A4EB0E0440EA03409CE7B1 +:10034000C6F12007B34022FA07FC4CEA030C20FA5E +:1003500007F401FA06F31C43F9404FEA1C4900FA7E +:1003600006F3B1FBF9F8200C1FFA8CFE09FB1811FB +:1003700040EA014108FB0EF0884202FA06F20BD96E +:100380001CEB010108F1FF3A80F08880884240F2BE +:100390008580A8F102086144091AA4B2B1FBF9F002 +:1003A00009FB101144EA014100FB0EFE8E4508D9FD +:1003B0001CEB010100F1FF346CD28E456AD9023882 +:1003C000614440EA0840A0FB0294A1EB0E01A14267 +:1003D000C846A64656D353D05DB1B3EB080261EBD5 +:1003E0000E0101FA07F722FA06F3F1401F43C5E9AF +:1003F000007100263146BDE8F087C2F12003D840E5 +:100400000CFA02FC21FA03F3914001434FEA1C4726 +:100410001FFA8CFEB3FBF7F007FB10360B0C43EA18 +:10042000064300FB0EF69E4204FA02F408D91CEBC8 +:10043000030300F1FF382FD29E422DD902386344C6 +:100440009B1B89B2B3FBF7F607FB163341EA034166 +:1004500006FB0EF38B4208D91CEB010106F1FF38B5 +:1004600016D28B4214D9023E6144C91A46EA0046AC +:1004700038E72E46284605E70646E3E61846F8E63E +:100480004B45A9D2B9EB020864EB0C0E0138A3E787 +:100490004646EAE7204694E74046D1E7D0467BE768 +:1004A000023B614432E7304609E76444023842E7E0 +:1004B000704700BF02E000F000F8FEE772B6374870 +:1004C00080F30888364880F3098836483649086042 +:1004D00040F20000CCF200004EF63471CEF2000182 +:1004E0000860BFF34F8FBFF36F8F40F20000C0F280 +:1004F000F0004EF68851CEF200010860BFF34F8F36 +:10050000BFF36F8F4FF00000E1EE100A4EF63C7122 +:10051000CEF200010860062080F31488BFF36F8FCD +:1005200003F034FD03F0B6FD4FF055301F491B4A70 +:1005300091423CBF41F8040BFAE71D49184A914229 +:100540003CBF41F8040BFAE71A491B4A1B4B9A427D +:100550003EBF51F8040B42F8040BF8E7002018499D +:10056000184A91423CBF41F8040BFAE703F012FD30 +:1005700003F0E2FD144C154DAC4203DA54F8041BB1 +:100580008847F9E700F042F8114C124DAC4203DA0B +:1005900054F8041B8847F9E703F0FABC000900206F +:1005A000001100200000000808ED00E0000100201C +:1005B00000090020D8470008001100207C1100200D +:1005C00080110020003B0020A0010008A4010008C9 +:1005D000A4010008A40100082DE9F04F2DED108AB8 +:1005E000C1F80CD0C3689D46BDEC108ABDE8F08F01 +:1005F000002383F311882846A047002003F072F9F6 +:10060000FEE703F0D5F800DFFEE70000F8B500F0E4 +:100610000DFE03F05DFC074603F0AEFC0546D0BBC3 +:10062000294B9F4237D001339F4237D0274B27F0C9 +:10063000FF029A4235D1F8B200F03EFC2E4642F25B +:10064000107400F03FFC08B10024264601F0A8F821 +:1006500058B3032000F03EF80024264635B11C4B69 +:100660009F4203D003F080FC00242646002003F0C4 +:1006700039FC0EB100F044F800F056FC00F0D8FD53 +:1006800001F0A8FF0546B4B900F096FC4FF47A706B +:1006900003F02EF9F7E72E460024D2E704460126A0 +:1006A000CFE706464FF47A74CBE7002CD6D04FF450 +:1006B0007A740126D2E701F08DFF431BA342E3D9F0 +:1006C00000F01EF8DCE700BF010007B0000008B032 +:1006D000263A09B0084B187003280CD8DFE800F060 +:1006E00008050208022000F001BE022000F0F4BD5F +:1006F000024B00225A6070478011002084110020B4 +:1007000010B501F04DF830B1234B03221A70234B82 +:1007100000225A6010BD224B224A1C461968013142 +:10072000F8D004339342F9D16268A242F2D31E4B4F +:100730009B6803F1006303F520439A42EAD203F079 +:10074000E5FB03F0F7FB002000F08CFD0220FFF733 +:10075000C1FF164B9A6D00229A65996F9A67996F3F +:10076000D96DDA65D96FDA67D96F196E1A66D3F861 +:100770008010C3F88020D3F8803072B64FF0E023A9 +:100780003021C3F8084DD4E9003281F311889D4629 +:1007900083F308881047BDE78011002084110020F2 +:1007A00000A0000820A00008001100200010024056 +:1007B000094A136849F2690099B21B0C00FB013326 +:1007C0001360064B186844F2506182B2000C01FBC2 +:1007D0000200186080B27047141100201011002030 +:1007E00010B500211022044600F09AFD034B03CB04 +:1007F000206061601868A06010BD00BF9075FF1F89 +:100800002DE9F041ADF5507D0DF13C086EAC40F2A4 +:10081000751207460D4610A80021C8F8001000F018 +:100820007FFD4FF4C4720021204600F079FD01F0F5 +:10083000D1FE254B4FF47A72B0FBF2F0186093E8CA +:100840000700022384E807000DF5ED702382FFF70F +:10085000C7FF42F204631D49238407A803F054FF35 +:100860001C2384F832310DF2EB226B440DF1340C71 +:100870001E4603CE664510605160334602F1080201 +:10088000F6D13068106041460122204600F094FD08 +:1008900000230393AB7E029305F11903019380B209 +:1008A0000123CDE904800093E97E05A3D3E9002369 +:1008B000384602F057FA0DF5507DBDE8F08100BFD3 +:1008C0009E6AC421818A46EE8C11002018470008D8 +:1008D0002DE9F0412C4C237ADAB080460D465BBB03 +:1008E00027A9284600F078FE0746002842D19DF847 +:1008F0009D60C82E3ED801464FF4A662204600F007 +:100900000FFD4FF48073C4F8F8314FF40073C4F84E +:100910000C334FF44073C4F8203432460DF19E017D +:1009200004F1090000F0EAFC26449DF89C3077723F +:1009300023720BB9EB7E23728122002106AC27A81B +:1009400000F0EEFC0122214627A800F081FE0023E2 +:100950000393AB7E029305F1190380B20193282320 +:10096000CDE904400093E97E05A3D3E90023404686 +:1009700002F0F8F95AB0BDE8F08100BFAFF3008093 +:1009800026417272DF25D7B7A8320020F0B5254E78 +:100990004FF48A7505FB0065F1B096F8D83085F8FC +:1009A000DC300024D822214685F8E8403AA800F03F +:1009B000B7FC06F1090000F0ABFCD5F8E4308DF887 +:1009C000F000C2B206AF06F109010DF1F100CDE968 +:1009D0003A3400F093FC394601223AA800F064FE54 +:1009E00080B2CDE9047008230127CDE9023706F172 +:1009F000D803019330230093317A0B4807A3D3E93E +:100A0000002302F0AFF9A04206DD01F0E3FDC5F8D6 +:100A1000E000384671B0F0BD2046FBE778F6339F22 +:100A200093CACD8DA8320020A42100202DE9F041E9 +:100A30001D4D1E4E1E4F86B0284602F0BFF90346DC +:100A400058B30024CDE90344ADF81440027B8DF87F +:100A5000142099684068029403AA03C21B68DFF857 +:100A6000548043F00043029301F0B6FD821941F136 +:100A70000003009402A9384601F078F8A04205DD91 +:100A8000284602F09FF988F80040D5E798F8003032 +:100A9000072B05D8013388F8003006B0BDE8F08197 +:100AA000014802F08FF9F8E7A421002040420F002E +:100AB000D8210020DD37002070B50D4614461E46B3 +:100AC00002F0ACF850B9022E10D1012C0ED112A3B5 +:100AD000D3E90023C5E90023012007E0282C10D02A +:100AE00005D8012C09D0052C0FD0002070BD302C6A +:100AF000FBD10BA3D3E90023ECE70BA3D3E900233D +:100B0000E8E70BA3D3E90023E4E70BA3D3E9002331 +:100B1000E0E700BFAFF30080401DA12026812A0B33 +:100B200078F6339F93CACD8D9E6AC421818A46EEA2 +:100B300026417272DF25D7B7F017304A39059E5625 +:100B400038B505460E4C0021013500F0ADFBA4F888 +:100B50002C55B4F82C0500F08FFB78B1B4F82C05B7 +:100B600000F09AFB014648B9B4F82C0500F09CFB54 +:100B7000B4F82C350133A4F82C35EAE738BD00BFB2 +:100B8000A832002010B50A4B0A4A1A6003F58053B8 +:100B900093F860203AB9DC6D2CB1204600F07EFE5F +:100BA000204603F0F1FCBDE81040034800F076BE9B +:100BB000D821002074470008203200202DE9F04F92 +:100BC0008FB000AF05460C4602F028F8002849D146 +:100BD000237E022B1BD1E38A012B18D101F0FAFCF2 +:100BE0000646FFF7E5FD03464FF4C870DFF8C48200 +:100BF000B3FBF0F206F5167602FB103316FA83F318 +:100C0000C8F80030E37E33B9A34B00221A703C379A +:100C1000BD46BDE8F08F07F12401204600F09AFCA4 +:100C20000028F4D107F11400FFF7DAFD97F8264009 +:100C300007F11401224607F1270003F0EFFC00281A +:100C4000E2D10F2C08D8944B1C70D8F80030A3F5D3 +:100C50001673C8F80030DAE797F82410284601F038 +:100C6000D5FFD4E7E38A282B2BD010D8012B23D033 +:100C7000052BCCD1BFF34F8F8849894BCA6802F44A +:100C8000E0621343CB60BFF34F8F00BFFDE7302B13 +:100C9000BDD1844EE17E327A9142B8D1607E314638 +:100CA000002291F8DC50854200F0A5800132042A30 +:100CB00001F58A71F5D1AAE721462846FFF7A0FD84 +:100CC000A5E721462846FFF703FEA0E7B2F8EC505F +:100CD0007B6005F103094FEA99094FEA8902D11DAA +:100CE000C908A8EBC1039D46EB460021584600F019 +:100CF00017FB04F1EE012A463144584600F0FEFA93 +:100D00007B6813B9012000F0ADFA96F8D20000F02C +:100D1000B3FA044630B9307200F0CEFA204600F043 +:100D2000A1FAB1E0D6F8D4203AB996F8D200B6F8D4 +:100D30002C25824201D8FFF703FFD6F8D4202A449D +:100D4000944208D296F8D200B6F82C25013082429F +:100D500001D8FFF7F5FE70685FFA89F2594600F096 +:100D6000E7FA08B9C54679E0726896F8D2002A44D5 +:100D70007260D6F8D42005EB0209C6F8D49000F0D2 +:100D80007BFA814509D396F8D220D6F8D4000132F7 +:100D9000001B86F8D220C6F8D400FF2D0FD80024FF +:100DA000347200F089FA204600F05CFA00F0F8FC9A +:100DB0003D4B188108B9FFF7A3FCC54627E7BB6880 +:100DC00096F8D9000AFB0362FB68D2F8E41082F8B7 +:100DD000E83001F58061C2F8E030C2F8E410FFF7B6 +:100DE000D5FDFFF723FE96F8D920013202F0030269 +:100DF00086F8D920B6E74FF48A7A0AFB02F505F1A6 +:100E0000EA013144204600F07BFCF86000287FF4C2 +:100E1000FEAE3544012285F8E82001F0DBFBD5F871 +:100E2000E020D6ED007ADFED216A801A192838BF5C +:100E3000192040F6B832904228BF1046B8EE677AC3 +:100E400007EE900AF8EEE77A67EEA67ADFED186A09 +:100E5000E7EE267AFCEEE77AC6ED007A96F8D9300E +:100E6000BB60BA6873680AFB02F4321992F8E810A2 +:100E700059B1D2F8E4108B42E8463FF427AF002185 +:100E800082F8E810C2F8E010C5467368064A9B0A6B +:100E900001331381BBE600BF9D21002000ED00E07F +:100EA0000400FA05A83200208C110020CDCCCC3DE6 +:100EB0006666663FA0210020014B1870704700BF96 +:100EC0009811002038B54FF00054134B22689A4215 +:100ED00020D1124B627D12481A70237D03724FF4A9 +:100EE0008073C0F8F8314FF40073C0F80C3300255C +:100EF0004FF44073C0F820340A49C0F8E450C922C6 +:100F0000093000F0FBF9E0222946204600F008FAFB +:100F1000012038BD0020FCE79AAD44C5981100209F +:100F2000A83200201600002037B500F039FC194D1A +:100F3000194928810223012218486B7101F0E8F950 +:100F400000230193164B174900931748174B4FF492 +:100F5000805201F033FE164B197811B1124801F09E +:100F600055FE01F037FB0446FFF722FC4FF4C8732F +:100F7000B0FBF3F202FB130304F5167010FA83F0D2 +:100F80000C4B186002F0F8FF08B10F232B8103B05F +:100F900030BD00BF8C11002040420F00D82100203E +:100FA000B90A00089C110020A4210020BD0B0008F4 +:100FB00098110020A02100202DE9F04F2DED028B8B +:100FC0000FF23829D9E90089834C93B00BAE9FED1D +:100FD0007E8BFFF72BFD814FDFF828A200230A93B9 +:100FE000ADF834300B9373604FF0000B5B468DED22 +:100FF000008B01250DF11D0207A938468DF81C5004 +:101000008DF81DB001F034F99DF81C30002B40F034 +:10101000A580204601F002FE0646002845D1704F0B +:1010200001F0D8FA3B6898423FD301F0D3FA8246E8 +:10103000FFF7BEFB4FF4C873B0FBF3F202FB1303E0 +:101040000AF5167010FA83F03860664F97F800B012 +:10105000CBF1100ABBF1000F14BF33462B465FFAE9 +:101060008AFA0EA88DF82830FFF7BAFBBAF1060FFE +:1010700028BF4FF0060A0EAB03EB0B0152460DF1F1 +:10108000290000F03BF90AAB0393182302930AF1FD +:101090000102554BD2B2CDE90053049220464CA335 +:1010A000D3E9002301F000FE3E7001F093FA4F4AAD +:1010B0004F4D1368C31AB3F57A7F2ED3106001F039 +:1010C0008BFA02460B46204601F086FE204601F0D0 +:1010D000A5FD10B32B7A474E002B14BF0323022328 +:1010E000737101F077FA0EAF4FF47A730122B0FBFF +:1010F000F3F039463060304600F004FA18230293CA +:101100003D4B019380B240F25513CDE9037000933B +:1011100042464B46204601F0C7FD2B7A93B101F0C1 +:1011200059FA002607464FF48A7A95F8D9003044D8 +:1011300000F003000AFB005393F8E82092B3013655 +:10114000042EF2D1C82002F0D3FB2B7A002B7FF4BF +:101150003DAF13B0BDEC028BBDE8F08FDAF8143070 +:1011600083F00803CAF81430594610220EA800F084 +:10117000D7F80DF11E0308AA0AA9384600F0F4FDBD +:1011800096E803000FAB83E803009DF834308DF838 +:1011900044300A9B0E930EA9DDE90823204601F096 +:1011A000EFFF21E7D3F8E02042B12B68FA2B38BFDC +:1011B000FA23BA1A0533B2EB430FC0D3FFF7E6FBAD +:1011C0000028BCD1BEE700BF000000000000000006 +:1011D000401DA12026812A0BA4210020D821002017 +:1011E000A02100209D2100209C210020D837002034 +:1011F000A83200208C110020DC370020F1C6A7C1E6 +:10120000D068080F0004004808B5054800F046FE05 +:10121000BDE80840034A0449002003F0AFB900BF0D +:10122000D821002018380020850B000870470000E6 +:1012300070B502F0E9FC094E094D308000242868A1 +:101240003388834208D902F0DBFC2B680444013365 +:10125000B4F5204F2B60F2D370BD00BF0C380020D6 +:10126000E037002002F082BD00F10060920000F53E +:10127000204002F005BD0000054B1A68054B1B8895 +:101280009B1A834202D9104402F0BABC0020704776 +:10129000E03700200C380020024B1B68184402F095 +:1012A000B5BC00BFE0370020024B1B68184402F0B9 +:1012B000BFBC00BFE0370020064991F8243033B1AD +:1012C0000023086A81F824300822FFF7CDBF0120EF +:1012D000704700BFE4370020022802BF024B4FF4E2 +:1012E00000229A61704700BF00040048022802BF34 +:1012F000014B08229A6170470004004810B5002392 +:10130000934203D0CC5CC4540133F9E710BD000014 +:1013100003460246D01A12F9011B0029FAD1704780 +:1013200002440346934202D003F8011BFAE77047D8 +:101330002DE9F8431F4D144695F8242007468846AA +:1013400052BBDFF870909CB395F824302BB9202263 +:10135000FF2148462F62FFF7E3FF95F82400C0F114 +:101360000802A24228BF2246D6B24146920005EBAF +:101370008000FFF7C3FF95F82430A41B1E44F6B28B +:10138000082E17449044E4B285F82460DBD1FFF7BF +:1013900093FF0028D7D108E02B6A03EB8203834236 +:1013A000CFD0FFF789FF0028CBD10020BDE8F8831C +:1013B0000120FBE7E43700202DE9F0470D46044605 +:1013C00000219046284640F27912FFF7A9FF2346F4 +:1013D00020220021284601F075FE231D0222202133 +:1013E000284601F06FFE631D03222221284601F0EA +:1013F00069FEA31D03222521284601F063FE04F1A6 +:10140000080310222821284601F05CFE04F1100395 +:1014100008223821284601F055FE04F11103082264 +:101420004021284601F04EFE04F112030822482113 +:10143000284601F047FE04F11403202250212846DB +:1014400001F040FE04F1180340227021284601F00B +:1014500039FE04F120030822B021284601F032FEB3 +:1014600004F121030822B821284601F02BFE04F1E3 +:101470002207C0263B46314608222846083601F09E +:1014800021FEB6F5A07F07F10107F3D104F1320385 +:1014900008223146284601F015FE002704F1330AE0 +:1014A00094F832304FEAC7099F4209F5A47615D364 +:1014B000B8F1000F08D1314604F599730722284688 +:1014C00001F000FE09F24F16274694F832213B1B2B +:1014D00093420CD3F01DC008BDE8F0870AEB070368 +:1014E00008223146284601F0EDFD0137D8E707F222 +:1014F000331331460822284601F0E4FD083601374F +:10150000E3E7000013B504460846002101602346C6 +:10151000C0F803102022019001F0D4FD0198231D92 +:101520000222202101F0CEFD0198631D0322222119 +:1015300001F0C8FD0198A31D0322252101F0C2FD81 +:10154000019804F108031022282101F0BBFD0720B7 +:1015500002B010BDF7B50023047F00910E460722AC +:101560001946054601F072FC731C0093012200230A +:101570000721284601F06AFCC4B9B31C0093052278 +:1015800023460821284601F061FC0D243746B27835 +:10159000BB1B934211D32B7FA88A0734E408BBB945 +:1015A000844294BF0020012003B0F0BDAB8ADB0071 +:1015B000083BDB08B3700824E8E7FB1C00932146D6 +:1015C00000230822284601F041FC08340137DEE7F9 +:1015D000201A18BF0120E7E7F7B50023047F009128 +:1015E0000E4608221946054601F030FC731CC4B9AA +:1015F0000822009311462346284601F027FC1024B8 +:10160000012372785F1C013B934211D32B7FA88A80 +:101610000734E408BBB9844294BF0020012003B022 +:10162000F0BDAB8ADB00083BDB0873700824E7E7FA +:10163000F3190093214600230822284601F006FCF6 +:1016400008343B46DDE7201A18BF0120E7E7000019 +:10165000F8B50E4605461446002181223046FFF7B4 +:101660005FFE2B4608220021304601F02BFD7CB99D +:101670006B1C07220821304601F024FD0F240123B2 +:101680006A785F1C013B934204D3E01DC008F8BD9B +:101690000824F4E7EB1921460822304601F012FD38 +:1016A00008343B46ECE70000F8B50E460546144604 +:1016B0000021CE223046FFF733FE2B4628220021A0 +:1016C000304601F0FFFC7CB905F10803082228210F +:1016D000304601F0F7FC30242F462A7A7B1B9342D8 +:1016E00004D3E01DC008F8BD2824F5E707F109037D +:1016F00021460822304601F0E5FC08340137ECE7CA +:10170000F7B5047F00910E46012310220021054603 +:1017100001F09CFBC4B9B31C00930922234610219D +:10172000284601F093FB192437467288BB1B9A4266 +:1017300011D82B7FA88A0734E408BBB9844294BF30 +:101740000020012003B0F0BDAB8ADB00103BDB08BA +:1017500073801024E8E73B1D0093214600230822F4 +:10176000284601F073FB08340137DEE7201A18BF62 +:101770000120E7E730B5094D0A4491420DD011F838 +:10178000013B5840082340F30004013B2C4013F078 +:10179000FF0384EA5000F6D1EFE730BD2083B8EDB7 +:1017A000F7B5384A106851686B4603C36A46364934 +:1017B0003648082302F042FF0446002833D10A25A8 +:1017C000334A106851686B4603C36A4631492F4853 +:1017D000082302F033FF0446002849D00369B3F51B +:1017E000583F45D8B0F8661040F2264291423FD1AA +:1017F000294A024402F15C018B4239D35C3B234904 +:1018000000209E1AFFF7B6FF3246074604F1640136 +:101810000020FFF7AFFFA3689F4229D1E3689842F9 +:1018200008BF002524E00369B3F5583F27D8418B52 +:1018300040F22642914220D1174A024402F110019F +:101840008B4218D3103B114900209D1AFFF792FFDD +:101850002A46064604F118010020FFF78BFFA36813 +:101860009E4202D1E368984201D00D25A8E70025E9 +:10187000284603B0F0BD1025A2E70C25A0E70B25F4 +:101880009EE700BF38470008DC5F030000A00008A7 +:1018900041470008905F03000860FFF710B5037C24 +:1018A000044613B9006802F0B1FE204610BD0000E6 +:1018B0000023BFF35B8FC360BFF35B8FBFF35B8F0E +:1018C0008360BFF35B8F7047BFF35B8F0068BFF32C +:1018D0005B8F704770B505460C30FFF7F5FF05F1DB +:1018E000080604463046FFF7EFFFA04206D930460F +:1018F0006D68FFF7E9FF2544281A70BD3046FFF7F1 +:10190000E3FF201AF9E7000070B50546406898B17A +:1019100005F10800FFF7D8FF05F10C060446304634 +:10192000FFF7D2FF8442304694BF6D680025FFF771 +:10193000CBFF013C2C44201A70BD000038B50C468A +:101940000546FFF7C7FFA04210D305F10800FFF7D7 +:10195000BBFF04446868B4FBF0F100FB1144BFF323 +:101960005B8F0120AC60BFF35B8F38BD0020FCE7CC +:101970002DE9F041144607460D46FFF7C5FF8442A6 +:1019800028BF0446D4B1B84658F80C6B4046FFF760 +:101990009BFF3044286040467E68FFF795FF331A6E +:1019A0009C4203D86C600120BDE8F0816B60A41BF1 +:1019B0003B68AB602044E8600220F5E72046F3E78F +:1019C00038B50C460546FFF79FFFA04210D305F13E +:1019D0000C00FFF779FF04446868B4FBF0F100FBEA +:1019E0001144BFF35B8F0120EC60BFF35B8F38BD08 +:1019F0000020FCE72DE9FF41884669460746FFF7CE +:101A0000B7FF6C4606B204EBC6060025B44209D007 +:101A10006268206808EB0501FFF770FC6368083412 +:101A20001D44F3E729463846FFF7CAFF284604B0AD +:101A3000BDE8F081F8B505460C300F46FFF744FFCE +:101A400005F1080604463046FFF73EFFA042304647 +:101A500088BF6C68FFF738FF201A386020B1304625 +:101A60002C68FFF731FF2044F8BD000073B5144621 +:101A700006460D46FFF72EFF844228BF044601901C +:101A8000DCB101A93046FFF7D5FF019B33B93268BD +:101A9000C5E90233C5E9002401200CE09C4238BFAF +:101AA00001942860019868608442F5D93368AB607E +:101AB000241AEC60022002B070BD2046FBE7000053 +:101AC0002DE9FF410F466946FFF7D0FF6C4600B293 +:101AD00004EBC0050026AC4209D0D4F8048054F8C9 +:101AE000081BB8194246FFF709FC4644F3E73046A5 +:101AF00004B0BDE8F081000038B50546FFF7E0FF0F +:101B0000044601462846FFF719FF204638BD00006D +:101B1000302383F3118862B670470000002383F3FB +:101B2000118862B67047000010B4026854681A4603 +:101B300023465DF8044B184701207047002070478A +:101B40000020704770470000002070470E2070474B +:101B500000F5805090F8C800C0F3400070470000C6 +:101B600000F5805090F9C90070470000F7B50C6887 +:101B7000BDF8207014F000541E466FD10B7B082B6B +:101B80006CD8FFF7C5FF4569AB685B010CD4AB6847 +:101B90001B0108D4AC6814F080545DD1FFF7BEFF80 +:101BA000204603B0F0BD01240B6804F1180C002B93 +:101BB000B8BFDB004FEA0C1CB4BF43F004035B0565 +:101BC00045F80C300B680FFA84FC13F0804F18BFF7 +:101BD00005EB0C1E05EB0C1C1EBFDEF8803143F03C +:101BE0000203CEF880310B7BCCF8843105EB041571 +:101BF0008B68C5F88C314B68C5F88831DCF88031CA +:101C000043F00103CCF8803100EB441541F2680346 +:101C10001D4403EB44130344C5E9002608330D4675 +:101C200001F10C0C55F804EB43F804EB6545F9D1D0 +:101C300084342D881D8000EB441407F003032579BC +:101C400025F00B052B432371FFF768FF0097334600 +:101C500000F0E2FC0120A4E70224A5E74FF0FF30EA +:101C60009FE7000013B500F580540191E06DFFF788 +:101C70004BFE1F280AD90199E06D2022FFF7BAFE1A +:101C8000A0F120035842584102B010BD0020FBE7EC +:101C900008B500F58050FFF73BFFC06DFFF708FE69 +:101CA000BDE80840FFF73ABF00220260828142602F +:101CB0008260704710B500220023C0E90023002392 +:101CC000044603810C30FFF7EFFF204610BD0000F3 +:101CD000F0B5054600F580500C4690F8C83013F07A +:101CE000040FC3F3800108BF114661F3820304F1BE +:101CF000840680F8C83005EB461389B01B79D807F5 +:101D00002ED57AB319072DD46846FFF7D3FF05EB1C +:101D1000441303F5835303F1180703AA103318681B +:101D20005968144603C40833BB422246F7D11868E9 +:101D300020609B88A380DDE90E23CDE900230123E9 +:101D4000ADF808302B686946DB6B2846984705EBF1 +:101D500046152B791A075CBF43F008032B7101E08D +:101D6000002AF4D109B0F0BD2DE9F047074688B04C +:101D700007F5805468469A468846FFF7C9FE9146A3 +:101D8000FFF798FFE06DFFF7A5FD1F2829D9E06D4B +:101D900020226946FFF7B0FE202822D103AD444639 +:101DA00005AB2E4603CE9E4220606160354604F1AD +:101DB0000804F6D130682060B388A380DDE90023F1 +:101DC000C9E90023BDF80830AAF80030FFF7A6FEE5 +:101DD0004A4653464146384608B0BDE8F04700F051 +:101DE00009BCFFF79BFE002008B0BDE8F0870000AB +:101DF0002DE9F84F0023C0E90133254B044640F894 +:101E0000183B0F46FFF750FF04F12800FFF752FF81 +:101E100004F1480804F58255464608353046203618 +:101E2000FFF748FFAE42F9D104F580554FF48053D7 +:101E30004FF00009C5E91339C5F848800123EE6564 +:101E400004F5875804F58456C5F8549085F8583041 +:101E500085F86030083608F108084FF0000A4FF0A6 +:101E6000000B46E908ABA6F11800FFF71DFF20366E +:101E700046F8289C4645F4D185F8C97017B1054845 +:101E800000F0A2FB044B63612046BDE8F88F00BF61 +:101E9000744700084C4700080064004010B5044B2C +:101EA000197804464A1C1A70FFF7A2FF204610BD9D +:101EB000143800202DE9F047002950D0294B2A4F33 +:101EC000B7FBF1F599428CBF0A231123581EB5FBCD +:101ED000F3FC03FB1C53C4B22BB102280346F5D814 +:101EE0000020BDE8F0870CF1FF36B6F5806FF7D221 +:101EF000C4EBC40E0EF103034FEAE309C3F3C703B7 +:101F0000A4EB030809F1010A4FF47A755FFA88F02F +:101F100009FB05555AFA88F8B5FBF8F5B5F5617F68 +:101F2000C1BF0EF1FF33C3F3C703E01AC0B25C1C9C +:101F300050FA84F40CFB04F4B7FBF4F4A142CFD1C3 +:101F4000013BDBB20F2BCBD80138C0B20728C7D872 +:101F50000021107116809170D3700120C1E70846EE +:101F6000BFE700BF3F420F0000B4C40470B5054690 +:101F70000E464FF47A746B695B6803F00103B34259 +:101F800007D04FF47A7001F0B3FC013CF3D1204646 +:101F900070BD0120FCE7000030B54269936913F081 +:101FA000700F16D000230B4C936103F1840200EBF9 +:101FB000421211794D0709D5890707D5416954F8AF +:101FC00023508D60117941F0040111710133032B0D +:101FD000EBD130BD6047000873B51D464369164616 +:101FE0009A68D207044609D59A6801219960C2F31C +:101FF0004002CDE900650021FFF76AFE63699A6837 +:10200000D1050BD59A684FF480719960C2F34022D4 +:10201000CDE9006501212046FFF75AFE63699A6801 +:10202000D2030BD59A684FF480319960C2F34042D5 +:10203000CDE9006502212046FFF74AFE204602B0A6 +:10204000BDE87040FFF7A8BFF8B50446466900290F +:102050006CD106F10C07386880076AD006EB0115D1 +:102060003868D5F8B00110F0040FD5F8B0011ABFE8 +:10207000C00840F00040400DA061D5F8B0C11CF090 +:10208000020F1CBF40F08040A061D5F8B40106EB00 +:10209000011100F00F0084F82400D1F8B801207776 +:1020A000D1F8B801000A6077D1F8B801000CA07728 +:1020B000D1F8B801000EE077D1F8BC0184F8200017 +:1020C000D1F8BC01000A84F82100D1F8BC01000C51 +:1020D00084F82200D1F8BC11090E84F823103821AD +:1020E000396004F1340004F1180104F1240551F8B9 +:1020F000046B40F8046BA942F9D109880180C4E956 +:102100000A2321460023238651F8283B2046DB6B17 +:10211000984704F58052204692F8C83043F00403F3 +:1021200082F8C830BDE8F840FFF736BF06F1100767 +:1021300091E7F8BD10B5044600F04EFA02460B4692 +:1021400052EA030102D0013A63F10003044908682E +:1021500020B12146BDE81040FFF776BF10BD00BF9B +:1021600010380020F8B500F583511E46FFF7D0FC6B +:10217000DFF844C00831002404F1840500EB451564 +:102180002B795F070ED4DB060CD5D1E9007397429B +:10219000B34107D243695CF824709F602B7943F008 +:1021A00004032B710134032C01F12001E4D1BDE8BB +:1021B000F840FFF7B3BC00BF6047000808B5FFF761 +:1021C000A7FCFFF7E9FEBDE80840FFF7A7BC000049 +:1021D000F8B543690546986800F0E050B0F1E05F5B +:1021E0000F461FD0E8B1FFF793FC05F58354103478 +:1021F000002606F1840305EB43131B791A0706D565 +:102200000136032E04F12004F3D1012007E05B071F +:10221000F6D42146384600F039FA0028F0D1FFF70D +:102220007DFCF8BD0120FCE700F5805008B5FFF704 +:102230006FFCC06DFFF74EFBFFF770FC43090CBF4E +:102240000120002008BD0000F8B51D4600231370D2 +:102250000F4606461446FFF7E7FF80F0010038708E +:1022600025B129463046FFF7B3FF2070F8BD0000C6 +:102270002DE9B8410C4615461F46804600F0ACF9E2 +:102280000B462178024609B9287850B14046FFF73D +:1022900069FFFFF793FF3B462A462146FFF7D4FF2D +:1022A0000120BDE8B881000010B5FFF731FC174BE5 +:1022B0009A6D42F000729A659A6B42F000729A63CE +:1022C0009A6B00F5805422F000729A63FFF726FCA7 +:1022D00094F8C830DB0718D4B9B103211320FFF7F5 +:1022E00017FC01F0DBF90321142001F0D7F90321D9 +:1022F000152001F0D3F994F8C83043F0010384F8B5 +:10230000C830BDE81040FFF709BC10BD0010024006 +:102310002DE9F04700F5805588B095F8C930012BBC +:102320000446884616467FD8804F57F823200AB9BE +:1023300047F82300D7F800A0C4F80C802674BAF13F +:10234000000F63D095F8C930012B6FD001212046D2 +:10235000FFF7AAFFFFF7DCFB6269136823F00203B3 +:1023600013606269136843F0010313606369002717 +:102370005F6101212046FFF7D1FBFFF7F7FD002841 +:1023800000F09580E86DFFF793FA04F58359BA469B +:1023900009F10809202200216846FEF7C1FF02A8C2 +:1023A000FFF782FCCDF818A06A4609EB07030DF190 +:1023B000180E9446BCE80300F44518605960624664 +:1023C00003F10803F5D1DCF80000186020379CF811 +:1023D00004201A71602FDDD195F8C8306FF38203A5 +:1023E000002785F8C8306A4641462046ADF800709F +:1023F000ADF802708DF80470FFF75CFD636948BBAF +:102400004FF400421A6008B0BDE8F08741F2D000F6 +:1024100002F0BCF8814610B15146FFF7E9FCC7F85D +:102420000090B9F1000F8DD10020ECE73868036807 +:102430001B6B98470146002888D13868FFF734FFA6 +:102440003868036832465B684146984700287FF445 +:102450007DAFE9E761221A609DF802309DF8032004 +:102460001B06120402F4702203F040731343BDF8FC +:102470000020C2F3090213439DF804201205022E26 +:1024800002F4E0020CBF4FF00041002113436269E7 +:102490000B43D361636913225A616269136823F0A5 +:1024A0000103136039462046FFF760FD08B96369F0 +:1024B000A6E795F8C93093BB6169D1F8002242F0D4 +:1024C0000102C1F800226169D1F8002222F47C5295 +:1024D00022F00E02C1F800226169D1F8002242F414 +:1024E0006062C1F800226269C2F814326269C2F8FF +:1024F0000432626941F6FF71C2F80C126269C2F8D7 +:1025000040326269C2F8443263690122C3F81C2276 +:102510006269D2F8003223F00103C2F8003295F864 +:10252000C83043F0020385F8C8306CE7103800204B +:1025300008B500F051F850EA0103024602D0421EED +:1025400061F10001044B186810B10B46FFF744FD20 +:10255000BDE8084001F064B81038002008B500203C +:10256000FFF7E8FDBDE8084001F05AB808B50120C2 +:10257000FFF7E0FDBDE8084001F052B800B59BB0A0 +:10258000EFF3098168226846FEF7B8FEEFF3058392 +:10259000014B9B6BFEE700BF00ED00E008B5FFF7C5 +:1025A000EDFF000000B59BB0EFF30981682268469B +:1025B000FEF7A4FEEFF30583014B5B6BFEE700BF64 +:1025C00000ED00E0FEE700000FB408B5029801F04E +:1025D00025F9FEE701F016BC01F0EEBB13B56C4621 +:1025E00084E80600031D94E8030083E80500012049 +:1025F00002B010BD73B58568019155B11B885B07AA +:1026000007D4D0E900369B6B9847019AC1B2304697 +:10261000A847012002B070BDF0B5866889B00546B4 +:102620000C465EB1BDF838305B070AD4D0E90037FC +:102630009B6B98472246C1B23846B047012009B08B +:10264000F0BD00220023CDE900230023ADF80830BF +:102650000A4603AB01F10806106851681C4603C422 +:102660000832B2422346F7D1106820609288A280D7 +:10267000FFF7B2FF0423ADF808302B68CDE9000165 +:10268000DB6B694628469847D8E7000030B50368F9 +:102690000968DD0FB5EBD17F23F0604421F0604283 +:1026A0004FEAD1700BD0002BB8BFA40C0029B8BFE3 +:1026B000920C944202D034BF0120002030BD9442DD +:1026C00005D1C1F38070C3F380738342F6D1944285 +:1026D0002CBF00200120F1E72DE9F041456A15B932 +:1026E0004162BDE8F0814B6823F06047C3F38A463E +:1026F0004FEAD37EC3F3807816EA230638BF3E46FE +:10270000AC462B465A68BEEBD27F22F060440AD01A +:10271000002A18DAA40CB44217D19D420FD10D60E3 +:10272000DEE71346EEE7A74207D102F08044C2F38A +:10273000807242450BD054B1EFE708D2EDE7CCF8F8 +:1027400000100B60CDE7B44201D0B442E5D81A685E +:102750009C46002AE5D11960C3E700002DE9F04747 +:10276000089D01F007044FEAD508224405F007054B +:1027700000EBD1004FF47F49944201D1BDE8F087CE +:1027800004F0070705F0070A57453E4638BF56468E +:10279000C6F10806111B8E4228BF0E46E10808EB61 +:1027A000D50E415C13F80EC0B94029FA06F721FA9C +:1027B0000AF1FFB28CEA010147FA0AF739408CEAC4 +:1027C000010C03F80EC034443544D5E780EA0120FB +:1027D000082341F2210201B24000002980B203F136 +:1027E000FF33B8BF504013F0FF03F4D1704700002F +:1027F00038B50C468D18A54200D138BD14F8011B20 +:10280000FFF7E4FFF7E7000042684AB1136843604E +:102810004389818901339BB29942438138BF8381C7 +:102820001046704770B588B0202204460D466846B1 +:102830000021FEF775FD20460495FFF7E5FF0246EF +:1028400058B16B46054608AE1C4603CCB44228601E +:102850006960234605F10805F6D1104608B070BD41 +:10286000082817D909280CD00A280CD00B280CD01E +:102870000C280CD00D280CD00E2814BF402030207E +:1028800070470C20704710207047142070471820A4 +:102890007047202070470000082817D90C280CD951 +:1028A00010280CD914280CD918280CD920280CD998 +:1028B00030288CBF0F200E207047092070470A2057 +:1028C00070470B2070470C2070470D2070470000A8 +:1028D0002DE9F843078C072F04461ED9D0E902984A +:1028E00000254FF6FF73C5F12006A5F1200029FA57 +:1028F00005F108FA06F628FA00F031430143C9B29F +:102900001846FFF763FF0835402D0346EBD1E16918 +:102910003A46BDE8F843FFF76BBF4FF6FF70BDE8DE +:10292000F883000010B54B6823B9CA8A63F3090223 +:10293000CA8210BD04691A681C600361C38A013B26 +:10294000C3824A60EFE700002DE9F84F1D46CB8AAD +:102950000F46C3F309010529814692460B4630D044 +:102960000020AAB207F11A049EB2042E1FFA80F8C2 +:102970000FD8904503F1010306D3FB8A0A4462F3A2 +:102980000903FB8201201AE01AF80060E6540130C6 +:10299000EAE79045F1D2A1F1050B1C237C68BBFB53 +:1029A000F3F203FB12BB1FFA8BF6002C45D148460D +:1029B000FFF72AFF044638B978606FF00200BDE8DF +:1029C000F88F4FF00008E6E7002606607860ADB2A9 +:1029D0004FF0000B454510D90AEB0803221D13F8F0 +:1029E000011B9155B1B208F101081B291FFA88F8A3 +:1029F0002BD0454506F10106F1D8FB8AC3F3090245 +:102A0000154465F30903BCE7013292B21C46236802 +:102A1000002BF9D16B1F0B441C21B3FBF1F30133E5 +:102A20009BB29A42D3D2BBF1000FD0D14846FFF7F8 +:102A3000EBFE20B9C4F800B0BFE70122E7E7C0F819 +:102A400000B05E4620600446C1E74545D5D94846FA +:102A5000FFF7DAFE08B92060AFE7C0F800B0002643 +:102A600020600446B6E700002DE9F04F2DED028B03 +:102A70001C4683B05B69019207468846002B00F034 +:102A80009A80238C2BB1E269002A00F09480072BF6 +:102A900035D807F10C00FFF7B7FE054638B96FF0DF +:102AA0000205284603B0BDEC028BBDE8F08F14226E +:102AB0000021FEF735FC228CE16905F10800FEF7E4 +:102AC0001DFC208C013080B2FFF7E6FEFFF7C8FE48 +:102AD000013880B22084013028746369228C1B780D +:102AE0002A4403F01F0363F03F0348F000411372D0 +:102AF000384669602946FFF7EFFD0125D1E700F16F +:102B00000C034FF0000908EE103A4FF0800A4E46D1 +:102B10004D4618EE100AFFF777FE83460028BED018 +:102B200014220021FEF7FCFB002E3AD1019BABF8EA +:102B3000083002220BF1080E1FFA82FC0CF1010092 +:102B4000BCF1060F218C80B201D88E422BD3FFF747 +:102B5000A3FEFFF785FE62691278013802F01F02BA +:102B60008E4208BF4FF0400A42EA49121BFA80F138 +:102B70004AEA020A013048F0004281F808A08BF8C6 +:102B80001000CBF8042059463846FFF7A5FD238CEA +:102B90000135B3422DB289F001094FF0000AB8D1D6 +:102BA0007FE70022C6E7E169895D0EF80210013671 +:102BB000B6B20132C0E76FF0010572E7F8B515460D +:102BC0000E463022002104461F46FEF7A9FB069B55 +:102BD0006360B5F5001F079BA76034BF6A094FF615 +:102BE000FF72A36297B2E66104F1100000239A42DB +:102BF00006D800230360A782E3822383E360F8BD45 +:102C00000660013330462036F1E7000003781BB937 +:102C10004BB2002BC8BF01707047000000787047AE +:102C2000F8B50C46C969074611B9238C002B37D17A +:102C3000257E1F2D34D8387828BB228C072A2CD823 +:102C4000268A36F003032BD14FF6FF70FFF7D0FD35 +:102C500020F001003102400441EA0561400C41EAE4 +:102C600040254FF6FF72234629463846FFF7FCFE03 +:102C7000002807DD626913780133DBB21F2B88BFA0 +:102C800000231370F8BD218A2D0645EA012505436E +:102C90002046FFF71DFE0246E5E76FF00300F1E76F +:102CA0006FF00100EEE7000070B58AB004461646EA +:102CB0000021282268461D46FEF732FBBDF8383059 +:102CC000ADF810300F9B05939DF840308DF818300B +:102CD000119B07936946BDF84830ADF82030204677 +:102CE000CDE90265FFF79CFF0AB070BD2DE9F04108 +:102CF000D36905460C4616460BB9138C5BBB377E71 +:102D00001F2F28D895F80080B8F1000F26D0304644 +:102D1000FFF7DEFD3378210241EAC33141EA0801C1 +:102D2000338A41EA076141EA03410246334641F0F2 +:102D300080012846FFF798FE00280ADD3378012B32 +:102D400007D1726913780133DBB21F2B88BF0023D0 +:102D50001370BDE8F0816FF00100FAE76FF0030037 +:102D6000F7E70000F0B58BB004460D46174600218A +:102D7000282268461E46FEF7D3FA9DF84C305A1EAC +:102D8000534253418DF800309DF84030ADF810307B +:102D9000119B05939DF848308DF81830149B0793CC +:102DA0006A46BDF85430ADF8203029462046CDE9BA +:102DB0000276FFF79BFF0BB0F0BD0000406A00B148 +:102DC00004307047436A1A68426202691A600361FC +:102DD000C38A013BC38270472DE9F041D0F82080BF +:102DE000194E14461D464146002709B9BDE8F08139 +:102DF000D1E90223A21A65EB0303964277EB0303A2 +:102E00001ED2036A8B420DD1FFF78CFD036A1B684B +:102E1000036203690B60C38A0161016A013BC382DB +:102E20008846E2E7FFF77EFD0B68C8F800300369CB +:102E30000B60C38A0161013BC382D8F80010D4E75C +:102E400088460968D1E700BF80841E002DE9F04F55 +:102E50008BB00D46DDF8509014469B468046002806 +:102E600000F01981B9F1000F00F01581531E3F2BBE +:102E700000F21181012A03D1BBF1000F40F00B8158 +:102E80000023CDE90833B8F81430B5EBC30F4FEA8F +:102E9000C30703D300200BB0BDE8F08F2B199F426E +:102EA000D8F80C303ABF7F1BFFB227461BB9D8F8C1 +:102EB0001030002B7AD0272D4ED8C5F12806B74206 +:102EC0004FF000032CBFF6B23E4600932946D8F8D7 +:102ED000080008AB3246FFF741FCA7EB060A354471 +:102EE0005FFA8AFAB8F8143003F10053053BDB00AF +:102EF0000493D8F80C3003932821039B13B1BAF143 +:102F0000000F2CD1D8F8100040B1BAF1000F05D055 +:102F1000009608AB5246691AFFF720FC38B2002F22 +:102F2000B8D066070AD00AAB03EBD401624211F8AD +:102F3000083C02F00702134101F8083C082C3CD978 +:102F4000102C40F2B580202C40F2B780BBF1000F6E +:102F500000F09C80082334E0BA460026C2E7049BB8 +:102F6000E02B28BFE02306930B44AB42059314D912 +:102F70005A1B03980096924534BF5246D2B2691A42 +:102F800008AB04300792FFF7E9FB079A1644AAEB57 +:102F9000020A1544F6B25FFA8AFA049B069A05996A +:102FA0009B1A0493039B1B680393A6E70093D8F82E +:102FB000080008AB3A462946AEE7BBF1000F13D034 +:102FC0000123B4EBC30F6CD0082C12D89DF820302D +:102FD000621E23FA02F2D50706D54FF0FF3202FA3D +:102FE00004F423438DF820309DF8203089F8003018 +:102FF00051E7102C12D8BDF82030621E23FA02F2DD +:10300000D10706D54FF0FF3202FA04F42343ADF89E +:103010002030BDF82030A9F800303CE7202C0FD834 +:103020000899631E21FA03F3DA0705D54FF0FF3242 +:1030300002FA04F40C430894089BC9F800302AE70C +:10304000402C2BD0DDE90865611EC4F12102A4F1FA +:10305000210326FA01F105FA02F225FA03F31143DE +:103060001943CB0712D50122A4F12003C4F120019A +:1030700002FA03F322FA01F1A240524243EA0103A9 +:1030800063EB430332432B43CDE90823DDE90823F7 +:10309000C9E90023FFE66FF00100FCE66FF00800CD +:1030A000F9E6082CA0D9102CB3D9202CEED8C3E710 +:1030B000BBF1000FADD0022383E7BBF1000FBBD003 +:1030C00004237EE730B5012A144638BF0124402C82 +:1030D00085B028BF40240025012ACDE9025518D823 +:1030E0001B788DF8083063070AD004AB03EBD405D6 +:1030F000624215F8083C02F00702934005F8083CCC +:10310000009103462246002102A8FFF727FB05B0E5 +:1031100030BD082AE4D9102A03D81B88ADF808303E +:10312000E1E7202A8DBFD3E900231B680293CDE994 +:103130000223D8E710B5CB681BB98B600B618B827B +:1031400010BD04691A681C600361C38A013BC38215 +:10315000CA60F0E703064CBFC0F3C03002207047DE +:1031600008B50246FFF7F6FF022806D15306C2F360 +:103170000F2001D100F0030008BDC2F30740FBE7B8 +:103180002DE9F04F93B0CDE903230A6804461046B9 +:10319000FFF7E0FF022814BFC2F306260026002A2C +:1031A0000D46824680F2F28112F0C04940F0EE8175 +:1031B000097B002900F0EA81022803D02378B3427A +:1031C00040F0E781C2F304630693104602F07F03E8 +:1031D0000593FFF7C5FF059B29444FEA834848EA5A +:1031E0000A4848EA4668CE7800230022CDE9082341 +:1031F000F309834648EA0008029367D0059B0093D1 +:1032000002466768534608A92046B847002800F0E0 +:10321000C381276A4FB9414604F10C00FFF702FB56 +:10322000074690B96FF0020054E03B6998450DD015 +:103230003F68002FF9D1414604F10C00FFF7F2FA84 +:1032400007460028EED0236A3B60276297F817C034 +:1032500006F01F08CCF3840CACEB08001FFA80FECC +:103260000028B8BF0EF12000A8EB0C031FFA83FE64 +:10327000D7E90221B8BF00B2002B0793BEBF0EF101 +:1032800020031BB2079352EA010338D0039BDFF8F7 +:1032900024E39A1A049B4FF0000C63EB010196455E +:1032A0007CEB01032BD36B7B97F81AE0734519D1A4 +:1032B000029B002B78D0012821DC7868F8B9DFF870 +:1032C000F0C2944570EB010316D337E0276A27B9A3 +:1032D0006FF00C0013B0BDE8F08F3B699845B5D096 +:1032E0003F68F4E7B24890427CEB010301D3002031 +:1032F000F0E7029B002BFAD0079B0F2B17DCFA7D1F +:10330000B30002F0030203F07C031343FB7539465C +:103310002046FFF707FB6B7BBB76029B3BB9FB7D2F +:10332000C3F38402013262F38603FB75D0E76A7B44 +:10333000BB7E9A42DBD1029B002B35D0B309022B16 +:1033400032D0039BBB60049BFB60142200210DA8BC +:10335000FDF7E6FF039B0A93049B0B932B1D0C9335 +:103360002B7BADF83EB0013BDBB2ADF83C30069BA9 +:103370008DF84230059B8DF8433094F82C308DF851 +:1033800040A083F001038DF844308DF84180A3689C +:103390000AA920469847FB7DC3F38403013303F059 +:1033A0001F039B02FB82A2E7FB7DC6F34012B2EB38 +:1033B000D31F40F0F480C3F38403434540F0F28010 +:1033C000029A2B7BB609002A4DD0F2075DD4032B5D +:1033D00040F2EB80039BBB60049BFB602B7BAE1D2C +:1033E000033BDBB23246394604F10C00FFF7ACFA7E +:1033F00000280CDA39462046FFF794FAFB7DC3F328 +:103400008403013303F01F039B02FB820AE7DDE91B +:103410000884AB883B834FF6FF73C9F12000A9F104 +:10342000200228FA09F104FA00F0014324FA02F21A +:1034300011431846C9B2FFF7C9F909F10809B9F1F2 +:10344000400F0346E9D1B8822A7B033AD2B2314613 +:10345000FFF7CEF9FB7DB882DA43C2F3C01262F304 +:10346000C713FB7543E786B92E1D013BDBB232461D +:10347000394604F10C00FFF767FA0028BADB2A7B13 +:10348000B88A013AD2B23146E2E7F98AC1F30901BA +:10349000013B0429DAB25BD8281D002307F11B0683 +:1034A0009A4208D910F801CB06F801C00131013366 +:1034B0000529DBB2F4D103990A9104990B91934247 +:1034C00007F11B010C9138BF043379680D9134BFAB +:1034D00055FA83F300230E93FB8AADF83EB0C3F395 +:1034E00009031A44069B8DF84230059B8DF8433042 +:1034F00094F82C30ADF83C2083F001038DF8443073 +:1035000000238DF840A08DF841807B602A7BB88A2B +:10351000013A291DFFF76CF93B8BB882834203D136 +:10352000A3680AA92046984720460AA9FFF702FE89 +:10353000FB7DBA8AC3F38403013303F01F039B02AC +:10354000FB823B8B9A420CBF00206FF01000C1E65B +:103550007B68002BAFD0052001E01C3033461E688D +:10356000002EFAD1091A081D2E1D184401EB090C72 +:10357000BCF11B0F5FFA89F39DD89A429BD916F8CC +:10358000013B00F8013B09F10109EFE76FF0090089 +:10359000A0E66FF00A009DE66FF00B009AE66FF070 +:1035A0000D0097E66FF00E0094E66FF00F0091E6C5 +:1035B00040420F0080841E00EFF3098305494A6BE7 +:1035C00022F001024A63683383F30988002383F3FE +:1035D0001188704700EF00E0302080F3118862B658 +:1035E0000C4B0D4AD96821F4E0610904090C0A4327 +:1035F000DA60D3F8FC20094942F08072C3F8FC205D +:103600000A6842F001020A602022DA7783F8220079 +:10361000704700BF00ED00E00003FA05001000E075 +:1036200010B5302383F311880E4B5B6813F40063ED +:1036300014D0F1EE103AEFF30984683C4FF0807338 +:10364000E361094BDB6B236684F3098800F0A4F87F +:1036500010B1064BA36110BD054BFBE783F3118846 +:10366000F9E700BF00ED00E000EF00E0030600080E +:10367000060600084FF0E023002258684FF0FF31A3 +:10368000930003F1604303F5614301329042C3F8B4 +:103690008010C3F88011F3D27047000000F160433E +:1036A00003F561430901C9B283F80013012200F058 +:1036B0001F039A4043099B0003F1604303F56143F4 +:1036C000C3F880211A60704700230375826803697C +:1036D0001B6899689142FBD25A680360426010608F +:1036E0005860704700230375826803691B689968F6 +:1036F0009142FBD85A68036042601060586070477E +:1037000008B50846302383F311880B7D032B05D0C1 +:10371000042B0DD02BB983F3118808BD8B690022CF +:103720001A604FF0FF338361FFF7CEFF0023F2E70B +:10373000D1E9003213605A60F3E70000FFF7C4BF1D +:10374000054BD9680875186802681A605360012231 +:103750000275D860FCF740BF2038002030B50C4B14 +:10376000DD684B1C87B004460FD02B46094A6846DB +:1037700000F050F92046FFF7E3FF009B13B16846C5 +:1037800000F052F9A86907B030BDFFF7D9FFF9E79B +:103790002038002001370008044B1A68DB68906865 +:1037A0009B68984294BF0020012070472038002079 +:1037B000084B10B51C68D86822681A605360012253 +:1037C0002275DC60FFF78EFF01462046BDE8104001 +:1037D000FCF702BF20380020044B1A68DB689268AF +:1037E0009B689A4201D9FFF7E3BF70472038002059 +:1037F00038B5074C07490848012300252370656048 +:1038000000F000FC0223237085F3118838BD00BF4F +:10381000483A0020B84700082038002008B572B6A2 +:10382000044B186500F0B6FA00F06EFB024B032261 +:103830001A70FEE720380020483A002000F02AB92C +:10384000EFF3118020B9EFF30583302282F3118862 +:103850007047000010B530B9EFF30584C4F30804D5 +:1038600014B180F3118810BDFFF7B6FF84F31188FF +:10387000F9E700008B60022308618B8208467047DD +:103880008368A3F1840243F8142C026943F8442CA2 +:10389000426943F8402C094A43F8242CC26843F893 +:1038A000182C022203F80C2C002203F80B2C044ADB +:1038B00043F8102CA3F12000704700BFF105000869 +:1038C0002038002008B5FFF7DBFFBDE80840FFF710 +:1038D00035BF0000024BDB6898610F20FFF730BF57 +:1038E00020380020302383F31188FFF7F3BF000056 +:1038F00008B50146302383F311880820FFF72EFF17 +:10390000002383F3118808BD10B503689C68A242A8 +:103910000CD85C688A600B604C60216059609968C3 +:103920008A1A9A604FF0FF33836010BD1B68121B28 +:10393000ECE700000A2938BF0A2170B504460D469D +:103940000A26601900F058FB00F044FB041BA54256 +:1039500003D8751C2E460446F3E70A2E04D9BDE8A9 +:103960007040012000F08EBB70BD0000F8B5144B14 +:103970000D46D96103F1100141600A2A196982607C +:1039800038BF0A22016048601861A818144600F088 +:1039900025FB0A2700F01EFB431BA342064606D365 +:1039A0007C1C281900F028FB27463546F2E70A2F31 +:1039B00004D9BDE8F840012000F064BBF8BD00BFA9 +:1039C00020380020F8B506460D4600F003FB0F4AEC +:1039D000134653F8107F9F4206D12A4601463046CF +:1039E000BDE8F840FFF7C2BFD169BB68441A2C1983 +:1039F00028BF2C46A34202D92946FFF79BFF224647 +:103A000031460348BDE8F840FFF77EBF203800206C +:103A10003038002010B4C0E9032300235DF8044BC4 +:103A20004361FFF7CFBF000010B5194C23699842DE +:103A30000DD0D0E90032816813605A609A680A4458 +:103A40009A60002303604FF0FF33A36110BD23464B +:103A5000026843F8102F53600022026022699A42E4 +:103A600003D1BDE8104000F0C1BA936881680B44EF +:103A7000936000F0AFFA2269E1699268441AA242A9 +:103A8000E4D91144BDE81040091AFFF753BF00BF45 +:103A9000203800202DE9F047DFF8BC8008F110073E +:103AA0002C4ED8F8105000F095FAD8F81C40AA68AF +:103AB000031B9A423ED81444D5E900324FF0000966 +:103AC000C8F81C4013605A60C5F80090D8F8103050 +:103AD000B34201D100F08AFA89F31188D5E90331A4 +:103AE00028469847302383F311886B69002BD8D080 +:103AF00000F070FA6A69A0EB04094A4582460DD2CB +:103B0000022000F0BFFA0022D8F81030B34208D1EA +:103B100051462846BDE8F047FFF728BF121A224455 +:103B2000F2E712EB090938BF4A4629463846FFF743 +:103B3000EBFEB5E7D8F81030B34208D01444211A90 +:103B4000C8F81C00A960BDE8F047FFF7F3BEBDE868 +:103B5000F08700BF30380020203800200020704758 +:103B6000FEE70000704700004FF0FF307047000094 +:103B7000BFF34F8F024A1369DB03FCD4704700BFC9 +:103B80000020024008B5094B1B7873B9FFF7F0FF1E +:103B9000074B5A69002ABFBF064A9A6002F1883271 +:103BA0009A601A6822F480621A6008BD603A0020A8 +:103BB000002002402301674508B50B4B1B7893B9E1 +:103BC000FFF7D6FF094B5A6942F000425A611A6862 +:103BD00042F480521A601A6822F480521A601A68FD +:103BE00042F480621A6008BD603A00200020024062 +:103BF0007F289ABF00F58030C00200207047000087 +:103C00004FF4006070470000802070477F2808B59F +:103C10000BD8FFF7EDFF00F500630268013204D115 +:103C200004308342F9D1012008BD0020FCE70000E8 +:103C30007F2810B504461FD8FFF79AFFFFF7A2FFB1 +:103C40000E4BF3221A6102225A615A6942EAC002FB +:103C50005A615A6942F480325A61FFF789FF4FF482 +:103C60000061FFF7C5FF00F04BF9FFF7A5FF204605 +:103C7000BDE81040FFF7CABF002010BD0020024081 +:103C80002DE9F84340EA020313F00703144606D077 +:103C9000304B40F231321A600020BDE8F8838518BD +:103CA0002D4A95420CD92B4A40F236311160F3E788 +:103CB000031D1B684A68934208D1083C083008314C +:103CC000072C14D902680B689A42F1D0FFF75AFF0B +:103CD000FFF74EFF214E08314FF001084FF0000969 +:103CE000012CA1F1080706D8FFF766FF01E0002CC0 +:103CF000ECD10120D1E7C6F81480054651F8083C04 +:103D000045F8043B51F8043C4360FFF731FF336949 +:103D100043F001033361C6F81490026851F8083C7F +:103D20009A420CD00B4B40F25E321A600C4B18607A +:103D30000C4B1C600C4B1F60FFF73EFFACE72D687F +:103D400051F8043C9D4201F10801EBD1083C0830D8 +:103D5000C6E700BF5C3A00200000040800200240D3 +:103D6000503A0020583A0020543A0020084908B53B +:103D70000B7828B11BB9FFF705FF01230B7008BDB5 +:103D8000002BFCD0BDE808400870FFF715BF00BF4E +:103D9000603A00204FF480314FF0005000F0B2B88C +:103DA0000846114600F014BC012000F011BC0000D0 +:103DB000084600F02BBC000070B582B0FFF740FD54 +:103DC0000E4E054600F006F93268904237BF0C4AA5 +:103DD0000B49516814682EBFD1E90041013151608F +:103DE0000419034641F10001284601913360FFF7B1 +:103DF00031FD0199204602B070BD00BF643A002039 +:103E0000683A002070B582B0FFF71AFD104E0546E3 +:103E100000F0E0F83268904237BF0E4A0D49516811 +:103E200014682EBFD1E9004101315160041941F1FC +:103E300000010346284601913360FFF70BFD01990D +:103E40004FF47A7200232046FCF7B2F902B070BD3D +:103E5000643A0020683A002010B50244064BD2B202 +:103E6000904200D110BD441C00B253F8200041F82C +:103E7000040BE0B2F4E700BF50280040114B30B50E +:103E8000D3F89040240409D4D3F89040C3F890406C +:103E9000D3F8904044F40044C3F890400A4C23689F +:103EA00043F4807323600244084BD2B2904200D1A5 +:103EB00030BD441C00B251F8045B43F82050E0B21E +:103EC000F4E700BF0010024000700040502800409E +:103ED00007B5012201A90020FFF7BEFF019803B03A +:103EE0005DF804FB13B50446FFF7F2FFA04205D0CE +:103EF000012201A900200194FFF7C0FF02B010BD0C +:103F0000704700007047000070470000074B45F203 +:103F100055521A6002225A6040F6FF729A604CF6BF +:103F2000CC421A60024B01221A70704700300040E8 +:103F3000743A0020034B1B781BB1034B4AF6AA22AC +:103F40001A607047743A002000300040054B1A6830 +:103F500032B902F1804202F50432D2F894201A609C +:103F6000704700BF703A0020024B4FF40002C3F8C4 +:103F7000942070470010024008B5FFF7E7FF024B9E +:103F80001868C0F3407008BD703A00207047000008 +:103F9000FEE700000A4B0B480B4A90420BD30B4B39 +:103FA000DA1C121AC11E22F003028B4238BF002213 +:103FB0000021FDF7B5B953F8041B40F8041BECE7EA +:103FC00054480008003B0020003B0020003B00203C +:103FD00000F0BEB84FF08043586A70474FF08043FE +:103FE000002258631A610222DA6070474FF0804362 +:103FF0000022DA60704700004FF08043586370473A +:10400000FEE7000070B51B4B01630025044686B037 +:10401000586085620E46FFF7DFFA04F11003C4E929 +:1040200004334FF0FF33C4E90635C4E90044A5600A +:10403000E562FFF7CFFF2B460246C4E9082304F1EF +:1040400034010D4A256580232046FFF713FC012328 +:10405000E0600A4A0375009272680192B268CDE985 +:104060000223074B6846CDE90435FFF72BFC06B069 +:1040700070BD00BF483A0020C4470008C947000887 +:1040800001400008024AD36A1843D062704700BF5B +:1040900020380020244B2548DA6A42F0070210B489 +:1040A000DA62DA6A224C22F00702DA62DA6ADA6C41 +:1040B00042F00702DA64DA6E42F00702DA664FF085 +:1040C0009042DB6E4FF0AA31002353609160D060C4 +:1040D0004FF6FF7050611362536214601024C2F8EF +:1040E0000434C2F80814C2F80C444FF6F774C2F84E +:1040F00014449924C2F82034C2F824440D4CC2F868 +:104100000044C2F80438C2F80818C2F80C38C2F8E3 +:104110001408C2F82038C2F82438C2F800385DF814 +:10412000044B00F055B800BF00100240000100240D +:104130000001002850000A0008B500F005FAFFF75A +:1041400057FBBDE80840FFF701BF000070470000C3 +:104150000F4B9A6D42F001029A659A6F42F001028C +:104160009A670C4A9B6F936843F0010393604FF08A +:1041700080434F229A624FF0FF32DA6200229A6146 +:104180005A63DA605A6001225A611A60704700BFB0 +:1041900000100240002004E04FF0804208B5116991 +:1041A000D3680B40D9B2C9439B07116107D53023AF +:1041B00083F31188FFF742FB002383F3118808BDC6 +:1041C00008B5FFF757FABDE8084000F099B90000BC +:1041D0005A4B4FF0FF319A6A99629A6A00229A62AA +:1041E000986AD86A60F00700D862D86A00F00700C1 +:1041F000D862D86A186B1963186B1A63186B986BBE +:104200009963986B9A63986BD86BD963D86BDA63B0 +:10421000D86B186C1964196C1A641A6C484A4FF4FC +:10422000E06111601A6E474942F001021A66D3F844 +:10423000802022F00102C3F88020D3F880209A6DFC +:1042400042F080529A659A6F22F080529A679A6F74 +:104250004FF440720A604A6912F48062FBD14A60EE +:104260001A6822F0F00242F060021A601A6842F006 +:1042700001021A601A689107FCD500229A609A68B8 +:1042800012F00C02FBD1D3F8901011F4407F1EBF46 +:104290004FF48031C3F89010C3F8902061221A6067 +:1042A0001A689207FCD500229A609A6812F00C0FE7 +:1042B000FBD169221A60D3F8942022F4706242F490 +:1042C000C062C3F894201A6842F480321A601A68F7 +:1042D0009003FCD5D3F8902022F00322C3F890205D +:1042E000194ADA601A6842F080721A601A689101FD +:1042F000FCD5164A1A611A6842F080621A601A6880 +:104300001201FCD500229A600D49114AC3F8882099 +:104310000A6822F0070242F004020A600A6802F00A +:104320000702042AFAD19A6842F003029A609A6856 +:1043300002F00C020C2AFAD1704700BF00100240B4 +:10434000002002400070004003140001000C100027 +:1043500055550134074A08B5536903F00103536109 +:1043600023B1054A13680BB150689847BDE808406F +:10437000FFF756B900040140783A0020074A08B513 +:10438000536903F00203536123B1054A93680BB1EB +:10439000D0689847BDE80840FFF742B900040140E3 +:1043A000783A0020074A08B5536903F004035361C3 +:1043B00023B1054A13690BB150699847BDE808401D +:1043C000FFF72EB900040140783A0020074A08B5EB +:1043D000536903F00803536123B1054A93690BB194 +:1043E000D0699847BDE80840FFF71AB900040140BA +:1043F000783A0020074A08B5536903F01003536167 +:1044000023B1054A136A0BB1506A9847BDE80840CA +:10441000FFF706B900040140783A0020164B10B5AA +:104420005C6904F478725A61A30604D5134A936A4E +:104430000BB1D06A9847600604D5104A136B0BB1D4 +:10444000506B9847210604D50C4A936B0BB1D06B87 +:104450009847E20504D5094A136C0BB1506C984794 +:10446000A30504D5054A936C0BB1D06C9847BDE801 +:104470001040FFF7D5B800BF00040140783A002093 +:10448000194B10B55C6904F47C425A61620504D58D +:10449000164A136D0BB1506D9847230504D5134A86 +:1044A000936D0BB1D06D9847E00404D50F4A136E9D +:1044B0000BB1506E9847A10404D50C4A936E0BB112 +:1044C000D06E9847620404D5084A136F0BB1506F41 +:1044D0009847230404D5054A936F0BB1D06F9847D2 +:1044E000BDE81040FFF79CB800040140783A002076 +:1044F00008B5FFF751FEBDE80840FFF791B800008E +:10450000062108B50846FFF7C9F806210720FFF77E +:10451000C5F806210820FFF7C1F806210920FFF79A +:10452000BDF806210A20FFF7B9F806211720FFF78A +:10453000B5F806212820FFF7B1F8BDE808400721AB +:104540001C20FFF7ABB8000008B5FFF739FE00F0FC +:1045500007F8FFF7FBFDBDE80840FFF739BD000095 +:104560000023054A19460133102BC2E9001102F15C +:104570000802F8D1704700BF783A00200B46014688 +:10458000184600F02DB8000000F040B8012838BFF0 +:10459000012010B50446204600F030F830B900F094 +:1045A00007F808B900F00CF88047F4E710BD0000E8 +:1045B000024B1868BFF35B8F704700BFF83A0020CA +:1045C00008B5062000F084F80120FFF7C9FA0000C2 +:1045D000024B0A4601461868FFF7E2BB181100209B +:1045E00010B5054C13462CB10A4601460220AFF324 +:1045F000008010BD2046FCE700000000024B014691 +:104600001868FFF7D1BB00BF18110020024B01460C +:104610001868FFF7CDBB00BF1811002010B5013995 +:104620000244904201D1002005E0037811F8014FC7 +:10463000A34201D0181B10BD0130F2E72DE9F04173 +:10464000A3B1C91A17780144044603F1FF3C8C4218 +:10465000204601D9002009E00578BD4204F101049B +:10466000F5D10CEB0405D618A54201D1BDE8F081C7 +:1046700015F8018D16F801EDF045F5D0E7E70000DB +:104680001F2938B504460D4604D9162303604FF0A0 +:10469000FF3038BD426C12B152F821304BB9204680 +:1046A00000F030F82A4601462046BDE8384000F0C8 +:1046B00017B8012B0AD0591C03D11623036001201F +:1046C000E7E7002442F82540284698470020E0E725 +:1046D000024B01461868FFF7D3BF00BF1811002036 +:1046E00038B5074D00230446084611462B60FFF7F6 +:1046F0003BFA431C02D12B6803B1236038BD00BFD5 +:10470000FC3A0020FFF72ABA034611F8012B03F800 +:10471000012B002AF9D170476F72672E61726475A0 +:1047200070696C6F742E4D6174656B4C3433312D30 +:10473000414453420000000040A2E4F16468910645 +:104740000041A3E5F2656992070000004261642020 +:1047500043414E496661636520696E6465782E0049 +:1047600080000000008000000000800000000000C9 +:1047700000000000291B0008112300087122000816 +:10478000391B00086D1B0008691D00083D1B00084F +:104790004D1B0008411B0008491B0008451B000871 +:1047A000911C0008511B0008DD250008611B000852 +:1047B000651C000863300000B4470008783800200A +:1047C000483A00206D61696E0069646C6500000004 +:1047D00010BAFF7F01000000260400000000000066 +:1047E0000060030000000000FE2A0100D204000067 +:1047F0001C1100200000000000000000000000006C +:1048000000000000000000000000000000000000A8 +:104810000000000000000000000000000000000098 +:104820000000000000000000000000000000000088 +:104830000000000000000000000000000000000078 +:104840000000000000000000000000000000000068 +:044850000000000064 +:00000001FF diff --git a/Tools/bootloaders/Pixhawk6X_bl.bin b/Tools/bootloaders/Pixhawk6X_bl.bin index e423fa530e8c3e79cec5b8f7fb36e9f87f3c75f1..f476675a51da268b35f6fdcd8b5d439b6f3908fc 100755 GIT binary patch literal 38848 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 L{ygmexBq_ullnCx delta 10017 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%0AG5kL*g*gA_2>nh6|L$kcn*W16eFMVrY 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 Z|B93875CM3&36C%$CK>u(TLAz_aB{O>CgZG literal 0 HcmV?d00001 diff --git a/Tools/environment_install/install-prereqs-ubuntu.sh b/Tools/environment_install/install-prereqs-ubuntu.sh index eea1db11fcb60..65c84f229b850 100755 --- a/Tools/environment_install/install-prereqs-ubuntu.sh +++ b/Tools/environment_install/install-prereqs-ubuntu.sh @@ -104,6 +104,11 @@ elif [ ${RELEASE_CODENAME} == 'lunar' ]; then SITLCFML_VERSION="2.5" PYTHON_V="python3" PIP=pip3 +elif [ ${RELEASE_CODENAME} == 'mantic' ]; then + SITLFML_VERSION="2.5" + SITLCFML_VERSION="2.5" + PYTHON_V="python3" + PIP=pip3 elif [ ${RELEASE_CODENAME} == 'groovy' ] || [ ${RELEASE_CODENAME} == 'bullseye' ]; then SITLFML_VERSION="2.5" @@ -157,7 +162,8 @@ fi ARM_LINUX_PKGS="g++-arm-linux-gnueabihf $INSTALL_PKG_CONFIG" # python-wxgtk packages are added to SITL_PKGS below -if [ ${RELEASE_CODENAME} == 'lunar' ]; then +if [ ${RELEASE_CODENAME} == 'lunar' ] || + [ ${RELEASE_CODENAME} == 'mantic' ]; then # on Lunar (and presumably later releases), we install in venv, below PYTHON_PKGS+=" numpy pyparsing psutil" SITL_PKGS="python3-dev" @@ -167,7 +173,8 @@ fi # add some packages required for commonly-used MAVProxy modules: if [[ $SKIP_AP_GRAPHIC_ENV -ne 1 ]]; then - if [ ${RELEASE_CODENAME} == 'lunar' ]; then + if [ ${RELEASE_CODENAME} == 'lunar' ] || + [ ${RELEASE_CODENAME} == 'mantic' ]; then PYTHON_PKGS+=" matplotlib scipy opencv-python pyyaml" SITL_PKGS+=" xterm libcsfml-dev libcsfml-audio${SITLCFML_VERSION} libcsfml-dev libcsfml-graphics${SITLCFML_VERSION} libcsfml-network${SITLCFML_VERSION} libcsfml-system${SITLCFML_VERSION} libcsfml-window${SITLCFML_VERSION} libsfml-audio${SITLFML_VERSION} libsfml-dev libsfml-graphics${SITLFML_VERSION} libsfml-network${SITLFML_VERSION} libsfml-system${SITLFML_VERSION} libsfml-window${SITLFML_VERSION}" else @@ -258,7 +265,7 @@ elif [ ${RELEASE_CODENAME} == 'lunar' ]; then SITL_PKGS+=" libpython3-stdlib" # for argparse elif [ ${RELEASE_CODENAME} == 'buster' ]; then SITL_PKGS+=" libpython3-stdlib" # for argparse -else +elif [ ${RELEASE_CODENAME} != 'mantic' ]; then SITL_PKGS+=" python-argparse" fi @@ -272,6 +279,9 @@ if [[ $SKIP_AP_GRAPHIC_ENV -ne 1 ]]; then SITL_PKGS+=" libjpeg8-dev" elif [ ${RELEASE_CODENAME} == 'lunar' ]; then SITL_PKGS+=" libgtk-3-dev libwxgtk3.2-dev " + elif [ ${RELEASE_CODENAME} == 'mantic' ]; then + SITL_PKGS+=" libgtk-3-dev libwxgtk3.2-dev " + # see below elif apt-cache search python-wxgtk3.0 | grep wx; then SITL_PKGS+=" python-wxgtk3.0" elif apt-cache search python3-wxgtk4.0 | grep wx; then @@ -287,6 +297,10 @@ if [[ $SKIP_AP_GRAPHIC_ENV -ne 1 ]]; then PYTHON_PKGS+=" opencv-python" SITL_PKGS+=" python3-wxgtk4.0" SITL_PKGS+=" fonts-freefont-ttf libfreetype6-dev libpng16-16 libportmidi-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev" # for pygame + elif [ ${RELEASE_CODENAME} == 'mantic' ]; then + PYTHON_PKGS+=" wxpython opencv-python" + SITL_PKGS+=" python3-wxgtk4.0" + SITL_PKGS+=" fonts-freefont-ttf libfreetype6-dev libpng16-16 libportmidi-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev" # for pygame elif [ ${RELEASE_CODENAME} == 'bullseye' ] || [ ${RELEASE_CODENAME} == 'groovy' ] || [ ${RELEASE_CODENAME} == 'buster' ] || @@ -329,7 +343,8 @@ fi PIP_USER_ARGUMENT="--user" # create a Python venv on more recent releases: -if [ ${RELEASE_CODENAME} == 'lunar' ]; then +if [ ${RELEASE_CODENAME} == 'lunar' ] || + [ ${RELEASE_CODENAME} == 'mantic' ]; then $APT_GET install python3.11-venv python3 -m venv $HOME/venv-ardupilot @@ -354,7 +369,8 @@ if [ "$GITHUB_ACTIONS" == "true" ]; then PIP_USER_ARGUMENT+=" --progress-bar off" fi -if [ ${RELEASE_CODENAME} == 'lunar' ]; then +if [ ${RELEASE_CODENAME} == 'lunar' ] || + [ ${RELEASE_CODENAME} == 'mantic' ]; then # must do this ahead of wxPython pip3 run :-/ $PIP install $PIP_USER_ARGUMENT -U attrdict3 fi diff --git a/Tools/scripts/build_options.py b/Tools/scripts/build_options.py index d1414472c7339..256d1d9694e2c 100644 --- a/Tools/scripts/build_options.py +++ b/Tools/scripts/build_options.py @@ -58,6 +58,7 @@ def __init__(self, Feature('Ident', 'ADSB_UAVIONIX', 'HAL_ADSB_UAVIONIX_MAVLINK_ENABLED', 'Enable UAvionix ADSB', 0, 'ADSB'), Feature('Ident', 'ADSB_UAVIONX_UCP', 'HAL_ADSB_UCP_ENABLED', 'Enable uAvionix UCP ADSB', 0 , 'ADSB'), Feature('Ident', 'AIS', 'AP_AIS_ENABLED', 'Enable AIS', 0, None), + Feature('Ident', 'OpenDroneID', 'AP_OPENDRONEID_ENABLED', 'Enable OpenDroneID (Remote ID)', 0, None), Feature('Telemetry', 'CRSF', 'HAL_CRSF_TELEM_ENABLED', 'Enable CRSF Telemetry', 0, 'FrSky SPort PassThrough,FrSky,FrSky SPort,RC_CRSF'), # noqa Feature('Telemetry', 'CRSFText', 'HAL_CRSF_TELEM_TEXT_SELECTION_ENABLED', 'Enable CRSF Text Param Selection', 0, 'CRSF,OSD_PARAM,FrSky SPort PassThrough,FrSky,FrSky SPort'), # NOQA: E501 @@ -307,6 +308,7 @@ def __init__(self, Feature('MAVLink', 'AP_MAVLINK_MSG_DEVICE_OP_ENABLED', 'AP_MAVLINK_MSG_DEVICE_OP_ENABLED', 'Enable handling of DeviceOp mavlink messages', 0, None), # noqa Feature('MAVLink', 'AP_MAVLINK_SERVO_RELAY_ENABLED', 'AP_MAVLINK_SERVO_RELAY_ENABLED', 'Enable handling of ServoRelay mavlink messages', 0, 'SERVORELAY_EVENTS'), # noqa Feature('MAVLink', 'AP_MAVLINK_MSG_SERIAL_CONTROL_ENABLED', 'AP_MAVLINK_MSG_SERIAL_CONTROL_ENABLED', 'Enable handling of Serial Control mavlink messages', 0, None), # noqa + Feature('MAVLink', 'AP_MAVLINK_MSG_MISSION_REQUEST_ENABLED', 'AP_MAVLINK_MSG_MISSION_REQUEST_ENABLED', 'Enable handling of MISSION_REQUEST mavlink messages', 0, None), # noqa Feature('Developer', 'KILL_IMU', 'AP_INERTIALSENSOR_KILL_IMU_ENABLED', 'Allow IMUs to be disabled at runtime', 0, None), Feature('Developer', 'CRASHCATCHER', 'AP_CRASHDUMP_ENABLED', 'Enable CrashCatcher', 0, None), diff --git a/Tools/scripts/extract_features.py b/Tools/scripts/extract_features.py index 228560eec407c..301b007c70939 100755 --- a/Tools/scripts/extract_features.py +++ b/Tools/scripts/extract_features.py @@ -146,6 +146,8 @@ def __init__(self, filename, nm="arm-none-eabi-nm"): ('AP_SMARTAUDIO_ENABLED', 'AP_SmartAudio::AP_SmartAudio',), ('AP_TRAMP_ENABLED', 'AP_Tramp::AP_Tramp',), + ('AP_CHECK_FIRMWARE_ENABLED', 'AP_CheckFirmware::check_signed_bootloader',), + ('HAL_QUADPLANE_ENABLED', 'QuadPlane::QuadPlane',), ('QAUTOTUNE_ENABLED', 'ModeQAutotune::_enter',), ('HAL_SOARING_ENABLED', 'SoaringController::var_info',), @@ -172,6 +174,8 @@ def __init__(self, filename, nm="arm-none-eabi-nm"): ('AP_RPM_ENABLED', 'AP_RPM::AP_RPM',), ('AP_RPM_{type}_ENABLED', r'AP_RPM_(?P.*)::update',), + ('AP_OPENDRONEID_ENABLED', 'AP_OpenDroneID::update',), + ('GPS_MOVING_BASELINE', r'AP_GPS_Backend::calculate_moving_base_yaw\b',), ('AP_DRONECAN_SEND_GPS', r'AP_GPS_DroneCAN::instance_exists\b',), @@ -215,7 +219,7 @@ def __init__(self, filename, nm="arm-none-eabi-nm"): ('AP_MAVLINK_MSG_DEVICE_OP_ENABLED', 'GCS_MAVLINK::handle_device_op_write'), ('AP_MAVLINK_SERVO_RELAY_ENABLED', 'GCS_MAVLINK::handle_servorelay_message'), ('AP_MAVLINK_MSG_SERIAL_CONTROL_ENABLED', 'GCS_MAVLINK::handle_serial_control'), - + ('AP_MAVLINK_MSG_MISSION_REQUEST_ENABLED', 'GCS_MAVLINK::handle_mission_request\b'), ('AP_DRONECAN_HIMARK_SERVO_SUPPORT', 'AP_DroneCAN::SRV_send_himark'), ('AP_DRONECAN_HOBBYWING_ESC_SUPPORT', 'AP_DroneCAN::hobbywing_ESC_update'), ('COMPASS_CAL_ENABLED', 'CompassCalibrator::stop'), diff --git a/Tools/vagrant/initvagrant.sh b/Tools/vagrant/initvagrant.sh index f600e40096e37..08bd7d81c3b0a 100755 --- a/Tools/vagrant/initvagrant.sh +++ b/Tools/vagrant/initvagrant.sh @@ -42,6 +42,8 @@ sudo -u $VAGRANT_USER ln -fs /vagrant/Tools/vagrant/screenrc /home/$VAGRANT_USER perl -pe 's/kernel.yama.ptrace_scope = ./kernel.yama.ptrace_scope = 0/' -i /etc/sysctl.d/10-ptrace.conf echo 0 > /proc/sys/kernel/yama/ptrace_scope +RELEASE_CODENAME=$(lsb_release -c -s) + if [ ${RELEASE_CODENAME} != 'bionic' ]; then # build JSB sim apt-get install -y libtool automake autoconf libexpat1-dev cmake @@ -63,8 +65,6 @@ echo "source $BASHRC_GIT" | # link a half-way decent .mavinit.scr into place: sudo --login -u $VAGRANT_USER ln -sf /vagrant/Tools/vagrant/mavinit.scr /home/$VAGRANT_USER/.mavinit.scr -RELEASE_CODENAME=$(lsb_release -c -s) - # no multipath available, stop mutlipathd complaining about lack of data: if [ ${RELEASE_CODENAME} == 'jammy' ]; then cat >>/etc/multipath.conf < // 6DoF control is extracted from the existing copter code by treating desired angles as thrust angles rather than vehicle attitude. -// Vehicle attitude is then set separately, typically the vehicle would matain 0 roll and pitch. +// Vehicle attitude is then set separately, typically the vehicle would maintain 0 roll and pitch. // rate commands result in the vehicle behaving as a ordinary copter. // run lowest level body-frame rate controller and send outputs to the motors diff --git a/libraries/AC_AttitudeControl/AC_AttitudeControl_Multi_6DoF.h b/libraries/AC_AttitudeControl/AC_AttitudeControl_Multi_6DoF.h index f089f01d4669d..8023985eabb96 100644 --- a/libraries/AC_AttitudeControl/AC_AttitudeControl_Multi_6DoF.h +++ b/libraries/AC_AttitudeControl/AC_AttitudeControl_Multi_6DoF.h @@ -20,10 +20,10 @@ class AC_AttitudeControl_Multi_6DoF : public AC_AttitudeControl_Multi { // Command a Quaternion attitude with feedforward and smoothing // attitude_desired_quat: is updated on each time_step (_dt) by the integral of the angular velocity - // not used anywhere in current code, panic so this implementaiton is not overlooked + // not used anywhere in current code, panic so this implementation is not overlooked void input_quaternion(Quaternion& attitude_desired_quat, Vector3f ang_vel_target) override; /* - override input functions to attitude controller and convert desired angles into thrust angles and substitute for osset angles + override input functions to attitude controller and convert desired angles into thrust angles and substitute for offset angles */ // Command an euler roll and pitch angle and an euler yaw rate with angular velocity feedforward and smoothing diff --git a/libraries/AC_AttitudeControl/AC_CommandModel.cpp b/libraries/AC_AttitudeControl/AC_CommandModel.cpp index 0efe05f36cab9..caf06d826ebce 100644 --- a/libraries/AC_AttitudeControl/AC_CommandModel.cpp +++ b/libraries/AC_AttitudeControl/AC_CommandModel.cpp @@ -1,7 +1,7 @@ #include "AC_CommandModel.h" #include -// The Commmand Model class holds parameters that shape the pilot desired angular rate input. This class can +// The Command Model class holds parameters that shape the pilot desired angular rate input. This class can // be expanded to hold the methods that shape the pilot desired input. extern const AP_HAL::HAL& hal; diff --git a/libraries/AC_AttitudeControl/AC_WeatherVane.cpp b/libraries/AC_AttitudeControl/AC_WeatherVane.cpp index fd6ad741b3e49..087f4b2274c51 100644 --- a/libraries/AC_AttitudeControl/AC_WeatherVane.cpp +++ b/libraries/AC_AttitudeControl/AC_WeatherVane.cpp @@ -23,7 +23,7 @@ const AP_Param::GroupInfo AC_WeatherVane::var_info[] = { // @Param: ENABLE // @DisplayName: Enable - // @Description: Enable weather vaning. When active, the aircraft will automatically yaw into wind when in a VTOL position controlled mode. Pilot yaw commands overide the weathervaning action. + // @Description: Enable weather vaning. When active, the aircraft will automatically yaw into wind when in a VTOL position controlled mode. Pilot yaw commands override the weathervaning action. // @Values: -1:Only use during takeoffs or landing see weathervane takeoff and land override parameters,0:Disabled,1:Nose into wind,2:Nose or tail into wind,3:Side into wind,4:tail into wind // @User: Standard AP_GROUPINFO_FLAGS("ENABLE", 1, AC_WeatherVane, _direction, WVANE_PARAM_ENABLED, AP_PARAM_FLAG_ENABLE), @@ -139,7 +139,7 @@ bool AC_WeatherVane::get_yaw_out(float &yaw_output, const int16_t pilot_yaw, con if (is_positive(_max_vel_xy) || is_positive(_max_vel_z)) { Vector3f vel_ned; if (!AP::ahrs().get_velocity_NED(vel_ned) || // need speed estimate - (is_positive(_max_vel_xy) && (vel_ned.xy().length_squared() > (_max_vel_xy*_max_vel_xy))) || // check xy speeed + (is_positive(_max_vel_xy) && (vel_ned.xy().length_squared() > (_max_vel_xy*_max_vel_xy))) || // check xy speed (is_positive(_max_vel_z) && (fabsf(vel_ned.z) > _max_vel_z))) { // check z speed reset(); return false; diff --git a/libraries/AC_AttitudeControl/AC_WeatherVane.h b/libraries/AC_AttitudeControl/AC_WeatherVane.h index c4585b21c1c65..38d7ecb039dca 100644 --- a/libraries/AC_AttitudeControl/AC_WeatherVane.h +++ b/libraries/AC_AttitudeControl/AC_WeatherVane.h @@ -36,7 +36,7 @@ class AC_WeatherVane { PITCH_ENABLE = (1<<0), }; - // Paramaters + // Parameters AP_Int8 _direction; AP_Float _gain; AP_Float _min_dz_ang_deg; diff --git a/libraries/AC_AutoTune/AC_AutoTune.h b/libraries/AC_AutoTune/AC_AutoTune.h index 206050f702213..e152af499993f 100644 --- a/libraries/AC_AutoTune/AC_AutoTune.h +++ b/libraries/AC_AutoTune/AC_AutoTune.h @@ -158,7 +158,7 @@ class AC_AutoTune AP_AHRS_View *ahrs_view, AP_InertialNav *inertial_nav); - // send intermittant updates to user on status of tune + // send intermittent updates to user on status of tune virtual void do_gcs_announcements() = 0; // send post test updates to user diff --git a/libraries/AC_AutoTune/AC_AutoTune_Heli.cpp b/libraries/AC_AutoTune/AC_AutoTune_Heli.cpp index 346a8143fe511..d72a6db6fe4c0 100644 --- a/libraries/AC_AutoTune/AC_AutoTune_Heli.cpp +++ b/libraries/AC_AutoTune/AC_AutoTune_Heli.cpp @@ -678,7 +678,7 @@ void AC_AutoTune_Heli::report_final_gains(AxisType test_axis) const } } -// report gain formating helper +// report gain formatting helper void AC_AutoTune_Heli::report_axis_gains(const char* axis_string, float rate_P, float rate_I, float rate_D, float rate_ff, float angle_P, float max_accel) const { gcs().send_text(MAV_SEVERITY_NOTICE,"AutoTune: %s complete", axis_string); @@ -1353,7 +1353,7 @@ void AC_AutoTune_Heli::set_gains_post_tune(AxisType test_axis) } // updating_rate_ff_up - adjust FF to ensure the target is reached -// FF is adjusted until rate requested is acheived +// FF is adjusted until rate requested is achieved void AC_AutoTune_Heli::updating_rate_ff_up(float &tune_ff, float rate_target, float meas_rate, float meas_command) { @@ -1565,7 +1565,7 @@ void AC_AutoTune_Heli::updating_angle_p_up(float &tune_p, float *freq, float *ga // once finished with sweep of frequencies, cnt = 12 is used to then tune for max response gain if (freq_cnt >= 12 && is_equal(start_freq,stop_freq)) { if (gain[freq_cnt] < max_resp_gain && tune_p < AUTOTUNE_SP_MAX && !find_peak) { - // keep increasing tuning gain unless phase changes or max response gain is acheived + // keep increasing tuning gain unless phase changes or max response gain is achieved if (phase[freq_cnt]-phase_max > 20.0f && phase[freq_cnt] < 210.0f) { freq[freq_cnt] += 0.5 * test_freq_incr; find_peak = true; @@ -1837,7 +1837,7 @@ void AC_AutoTune_Heli::Log_Write_AutoTuneSweep(float freq, float gain, float pha phase); } -// reset the test vaariables for each vehicle +// reset the test variables for each vehicle void AC_AutoTune_Heli::reset_vehicle_test_variables() { // reset dwell test variables if sweep was interrupted in order to restart sweep diff --git a/libraries/AC_AutoTune/AC_AutoTune_Heli.h b/libraries/AC_AutoTune/AC_AutoTune_Heli.h index cf941737919c9..6329563b02bae 100644 --- a/libraries/AC_AutoTune/AC_AutoTune_Heli.h +++ b/libraries/AC_AutoTune/AC_AutoTune_Heli.h @@ -60,7 +60,7 @@ class AC_AutoTune_Heli : public AC_AutoTune // load test gains void load_test_gains() override; - // reset the test vaariables for heli + // reset the test variables for heli void reset_vehicle_test_variables() override; // reset the update gain variables for heli @@ -111,7 +111,7 @@ class AC_AutoTune_Heli : public AC_AutoTune void Log_AutoTuneSweep() override; void Log_Write_AutoTuneSweep(float freq, float gain, float phase); - // send intermittant updates to user on status of tune + // send intermittent updates to user on status of tune void do_gcs_announcements() override; // send post test updates to user @@ -161,7 +161,7 @@ class AC_AutoTune_Heli : public AC_AutoTune void dwell_test_run(uint8_t freq_resp_input, float start_frq, float stop_frq, float &dwell_gain, float &dwell_phase, DwellType dwell_type); // updating_rate_ff_up - adjust FF to ensure the target is reached - // FF is adjusted until rate requested is acheived + // FF is adjusted until rate requested is achieved void updating_rate_ff_up(float &tune_ff, float rate_target, float meas_rate, float meas_command); // updating_rate_p_up - uses maximum allowable gain determined from max_gain test to determine rate p gain that does not exceed exceed max response gain @@ -185,7 +185,7 @@ class AC_AutoTune_Heli : public AC_AutoTune // exceeded_freq_range - ensures tuning remains inside frequency range bool exceeded_freq_range(float frequency); - // report gain formating helper + // report gain formatting helper void report_axis_gains(const char* axis_string, float rate_P, float rate_I, float rate_D, float rate_ff, float angle_P, float max_accel) const; // updating rate FF variables diff --git a/libraries/AC_AutoTune/AC_AutoTune_Multi.cpp b/libraries/AC_AutoTune/AC_AutoTune_Multi.cpp index 6e414b76d8b91..bf988c187ae9f 100644 --- a/libraries/AC_AutoTune/AC_AutoTune_Multi.cpp +++ b/libraries/AC_AutoTune/AC_AutoTune_Multi.cpp @@ -484,7 +484,7 @@ void AC_AutoTune_Multi::report_final_gains(AxisType test_axis) const } } -// report gain formating helper +// report gain formatting helper void AC_AutoTune_Multi::report_axis_gains(const char* axis_string, float rate_P, float rate_I, float rate_D, float angle_P, float max_accel) const { gcs().send_text(MAV_SEVERITY_NOTICE,"AutoTune: %s complete", axis_string); diff --git a/libraries/AC_AutoTune/AC_AutoTune_Multi.h b/libraries/AC_AutoTune/AC_AutoTune_Multi.h index 5374a432f849a..b2a02fcdc6bce 100644 --- a/libraries/AC_AutoTune/AC_AutoTune_Multi.h +++ b/libraries/AC_AutoTune/AC_AutoTune_Multi.h @@ -53,7 +53,7 @@ class AC_AutoTune_Multi : public AC_AutoTune // load test gains void load_test_gains() override; - // reset the test vaariables for multi + // reset the test variables for multi void reset_vehicle_test_variables() override {}; // reset the update gain variables for multi @@ -62,7 +62,7 @@ class AC_AutoTune_Multi : public AC_AutoTune void test_init() override; void test_run(AxisType test_axis, const float dir_sign) override; - // send intermittant updates to user on status of tune + // send intermittent updates to user on status of tune void do_gcs_announcements() override; // send post test updates to user @@ -160,7 +160,7 @@ class AC_AutoTune_Multi : public AC_AutoTune // P is increased until we achieve our target within a reasonable time void updating_angle_p_up(float &tune_p, float tune_p_max, float tune_p_step_ratio, float angle_target, float meas_angle_max, float meas_rate_min, float meas_rate_max); - // report gain formating helper + // report gain formatting helper void report_axis_gains(const char* axis_string, float rate_P, float rate_I, float rate_D, float angle_P, float max_accel) const; // parameters diff --git a/libraries/AC_Autorotation/AC_Autorotation.cpp b/libraries/AC_Autorotation/AC_Autorotation.cpp index 69f9a6dcbb5cb..7ce790517d942 100644 --- a/libraries/AC_Autorotation/AC_Autorotation.cpp +++ b/libraries/AC_Autorotation/AC_Autorotation.cpp @@ -101,7 +101,7 @@ const AP_Param::GroupInfo AC_Autorotation::var_info[] = { // @Param: FW_V_P // @DisplayName: Velocity (horizontal) P gain - // @Description: Velocity (horizontal) P gain. Determines the propotion of the target acceleration based on the velocity error. + // @Description: Velocity (horizontal) P gain. Determines the proportion of the target acceleration based on the velocity error. // @Range: 0.1 6.0 // @Increment: 0.1 // @User: Advanced @@ -153,7 +153,7 @@ bool AC_Autorotation::update_hs_glide_controller(float dt) _flags.bad_rpm = false; _flags.bad_rpm_warning = false; - // Get current rpm and update healthly signal counters + // Get current rpm and update healthy signal counters _current_rpm = get_rpm(true); if (_unhealthy_rpm_counter <=30) { @@ -220,7 +220,7 @@ float AC_Autorotation::get_rpm(bool update_counter) //Get RPM value uint8_t instance = _param_rpm_instance; - //Check RPM sesnor is returning a healthy status + //Check RPM sensor is returning a healthy status if (!rpm->get_rpm(instance, current_rpm) || current_rpm <= -1) { //unhealthy, rpm unreliable _flags.bad_rpm = true; @@ -322,7 +322,7 @@ void AC_Autorotation::update_forward_speed_controller(void) _delta_speed_fwd = _speed_forward - _speed_forward_last; //(cm/s) _speed_forward_last = _speed_forward; //(cm/s) - // Limitng the target velocity based on the max acceleration limit + // Limiting the target velocity based on the max acceleration limit if (_cmd_vel < _vel_target) { _cmd_vel += _accel_max * _dt; if (_cmd_vel > _vel_target) { diff --git a/libraries/AC_Autorotation/AC_Autorotation.h b/libraries/AC_Autorotation/AC_Autorotation.h index d89fe88dc4237..d5cfa52097b3f 100644 --- a/libraries/AC_Autorotation/AC_Autorotation.h +++ b/libraries/AC_Autorotation/AC_Autorotation.h @@ -32,7 +32,7 @@ class AC_Autorotation float get_last_collective() const { return _collective_out; } bool is_enable(void) { return _param_enable; } void Log_Write_Autorotation(void) const; - void update_forward_speed_controller(void); // Update foward speed controller + void update_forward_speed_controller(void); // Update forward speed controller void set_desired_fwd_speed(void) { _vel_target = _param_target_speed; } // Overloaded: Set desired speed for forward controller to parameter value void set_desired_fwd_speed(float speed) { _vel_target = speed; } // Overloaded: Set desired speed to argument value int32_t get_pitch(void) const { return _pitch_target; } // Get pitch target diff --git a/libraries/AC_Avoidance/AC_Avoid.cpp b/libraries/AC_Avoidance/AC_Avoid.cpp index 7b2e5fdf20f49..8e5067f3be693 100644 --- a/libraries/AC_Avoidance/AC_Avoid.cpp +++ b/libraries/AC_Avoidance/AC_Avoid.cpp @@ -143,7 +143,7 @@ void AC_Avoid::adjust_velocity_fence(float kP, float accel_cmss, Vector3f &desir adjust_velocity_circle_fence(kP, accel_cmss_limited, desired_velocity_xy_cms, backup_vel_fence, dt); find_max_quadrant_velocity(backup_vel_fence, quad_1_back_vel, quad_2_back_vel, quad_3_back_vel, quad_4_back_vel); - // backup_vel_fence is set to zero after each fence incase the velocity is unset from previous methods + // backup_vel_fence is set to zero after each fence in case the velocity is unset from previous methods backup_vel_fence.zero(); adjust_velocity_inclusion_and_exclusion_polygons(kP, accel_cmss_limited, desired_velocity_xy_cms, backup_vel_fence, dt); find_max_quadrant_velocity(backup_vel_fence, quad_1_back_vel, quad_2_back_vel, quad_3_back_vel, quad_4_back_vel); @@ -229,7 +229,7 @@ void AC_Avoid::adjust_velocity(Vector3f &desired_vel_cms, bool &backing_up, floa } // let user take control if they are backing away at a greater speed than what we have calculated - // this has to be done for x,y,z seperately. For eg, user is doing fine in "x" direction but might need backing up in "y". + // this has to be done for x,y,z separately. For eg, user is doing fine in "x" direction but might need backing up in "y". if (!is_zero(desired_backup_vel.x)) { if (is_positive(desired_backup_vel.x)) { desired_vel_cms.x = MAX(desired_vel_cms.x, desired_backup_vel.x); @@ -505,7 +505,7 @@ void AC_Avoid::limit_velocity_3D(float kP, float accel_cmss, Vector3f &desired_v return; } // create a margin_cm length vector in the direction of desired_vel_cms - // this will create larger margin towards the direction vehicle is traveling in + // this will create larger margin towards the direction vehicle is travelling in const Vector3f margin_vector = desired_vel_cms.normalized() * margin_cm; const Vector2f limit_direction_xy{obstacle_vector.x, obstacle_vector.y}; diff --git a/libraries/AC_Avoidance/AC_Avoid.h b/libraries/AC_Avoidance/AC_Avoid.h index 2f9f048dae2a8..6bccfb846d58b 100644 --- a/libraries/AC_Avoidance/AC_Avoid.h +++ b/libraries/AC_Avoidance/AC_Avoid.h @@ -18,7 +18,7 @@ #define AC_AVOID_NONGPS_DIST_MAX_DEFAULT 5.0f // objects over 5m away are ignored (default value for DIST_MAX parameter) #define AC_AVOID_ANGLE_MAX_PERCENT 0.75f // object avoidance max lean angle as a percentage (expressed in 0 ~ 1 range) of total vehicle max lean angle -#define AC_AVOID_ACTIVE_LIMIT_TIMEOUT_MS 500 // if limiting is active if last limit is happend in the last x ms +#define AC_AVOID_ACTIVE_LIMIT_TIMEOUT_MS 500 // if limiting is active if last limit is happened in the last x ms #define AC_AVOID_ACCEL_TIMEOUT_MS 200 // stored velocity used to calculate acceleration will be reset if avoidance is active after this many ms /* @@ -213,7 +213,7 @@ class AC_Avoid { AP_Int8 _behavior; // avoidance behaviour (slide or stop) AP_Float _backup_speed_max; // Maximum speed that will be used to back away (in m/s) AP_Float _alt_min; // alt below which Proximity based avoidance is turned off - AP_Float _accel_max; // maximum accelration while simple avoidance is active + AP_Float _accel_max; // maximum acceleration while simple avoidance is active AP_Float _backup_deadzone; // distance beyond AVOID_MARGIN parameter, after which vehicle will backaway from obstacles bool _proximity_enabled = true; // true if proximity sensor based avoidance is enabled (used to allow pilot to enable/disable) diff --git a/libraries/AC_Avoidance/AP_OABendyRuler.h b/libraries/AC_Avoidance/AP_OABendyRuler.h index b90b7d6cbb8e4..e282e64722194 100644 --- a/libraries/AC_Avoidance/AP_OABendyRuler.h +++ b/libraries/AC_Avoidance/AP_OABendyRuler.h @@ -74,7 +74,7 @@ class AP_OABendyRuler { // BendyRuler parameters AP_Float _lookahead; // object avoidance will look this many meters ahead of vehicle AP_Float _bendy_ratio; // object avoidance will avoid major directional change if change in margin ratio is less than this param - AP_Int16 _bendy_angle; // object avoidance will try avoding change in direction over this much angle + AP_Int16 _bendy_angle; // object avoidance will try avoiding change in direction over this much angle AP_Int8 _bendy_type; // Type of BendyRuler to run // internal variables used by background thread diff --git a/libraries/AC_Avoidance/AP_OADatabase.cpp b/libraries/AC_Avoidance/AP_OADatabase.cpp index cc8dacab1b98d..aeae78098b9ab 100644 --- a/libraries/AC_Avoidance/AP_OADatabase.cpp +++ b/libraries/AC_Avoidance/AP_OADatabase.cpp @@ -230,7 +230,7 @@ uint8_t AP_OADatabase::get_send_to_gcs_flags(const OA_DbItemImportance importanc return 0x0; } -// returns true when there's more work inthe queue to do +// returns true when there's more work in the queue to do bool AP_OADatabase::process_queue() { if (!healthy()) { diff --git a/libraries/AC_Avoidance/AP_OADijkstra.cpp b/libraries/AC_Avoidance/AP_OADijkstra.cpp index a15604c43b538..749cb140ee24a 100644 --- a/libraries/AC_Avoidance/AP_OADijkstra.cpp +++ b/libraries/AC_Avoidance/AP_OADijkstra.cpp @@ -925,7 +925,7 @@ bool AP_OADijkstra::calc_shortest_path(const Location &origin, const Location &d } } } - // report error incase path not found + // report error in case path not found if (!success) { err_id = AP_OADijkstra_Error::DIJKSTRA_ERROR_COULD_NOT_FIND_PATH; } diff --git a/libraries/AC_Avoidance/AP_OADijkstra.h b/libraries/AC_Avoidance/AP_OADijkstra.h index f95405ad711ed..48e91f6cc1269 100644 --- a/libraries/AC_Avoidance/AP_OADijkstra.h +++ b/libraries/AC_Avoidance/AP_OADijkstra.h @@ -197,6 +197,6 @@ class AP_OADijkstra { uint8_t _log_num_points; uint8_t _log_visgraph_version; - // refernce to AP_OAPathPlanner options param + // reference to AP_OAPathPlanner options param AP_Int16 &_options; }; diff --git a/libraries/AC_CustomControl/AC_CustomControl.h b/libraries/AC_CustomControl/AC_CustomControl.h index c11a51fb00833..bf0628302b72a 100644 --- a/libraries/AC_CustomControl/AC_CustomControl.h +++ b/libraries/AC_CustomControl/AC_CustomControl.h @@ -32,7 +32,7 @@ class AC_CustomControl { bool is_safe_to_run(void); void log_switch(void); - // zero index controller type param, only use it to acces _backend or _backend_var_info array + // zero index controller type param, only use it to access _backend or _backend_var_info array uint8_t get_type() { return _controller_type > 0 ? (_controller_type - 1) : 0; }; // User settable parameters diff --git a/libraries/AC_CustomControl/AC_CustomControl_Empty.cpp b/libraries/AC_CustomControl/AC_CustomControl_Empty.cpp index d11caabc7eca5..222510c4f471d 100644 --- a/libraries/AC_CustomControl/AC_CustomControl_Empty.cpp +++ b/libraries/AC_CustomControl/AC_CustomControl_Empty.cpp @@ -8,19 +8,19 @@ const AP_Param::GroupInfo AC_CustomControl_Empty::var_info[] = { // @Param: PARAM1 // @DisplayName: Empty param1 - // @Description: Dumy parameter for empty custom controller backend + // @Description: Dummy parameter for empty custom controller backend // @User: Advanced AP_GROUPINFO("PARAM1", 1, AC_CustomControl_Empty, param1, 0.0f), // @Param: PARAM2 // @DisplayName: Empty param2 - // @Description: Dumy parameter for empty custom controller backend + // @Description: Dummy parameter for empty custom controller backend // @User: Advanced AP_GROUPINFO("PARAM2", 2, AC_CustomControl_Empty, param2, 0.0f), // @Param: PARAM3 // @DisplayName: Empty param3 - // @Description: Dumy parameter for empty custom controller backend + // @Description: Dummy parameter for empty custom controller backend // @User: Advanced AP_GROUPINFO("PARAM3", 3, AC_CustomControl_Empty, param3, 0.0f), @@ -54,7 +54,7 @@ Vector3f AC_CustomControl_Empty::update(void) break; } - // arducopter main attitude controller already runned + // arducopter main attitude controller already ran // we don't need to do anything else gcs().send_text(MAV_SEVERITY_INFO, "empty custom controller working"); diff --git a/libraries/AC_Fence/AC_Fence.cpp b/libraries/AC_Fence/AC_Fence.cpp index d2569877d7936..aaec44932bd4e 100644 --- a/libraries/AC_Fence/AC_Fence.cpp +++ b/libraries/AC_Fence/AC_Fence.cpp @@ -35,7 +35,7 @@ extern const AP_HAL::HAL& hal; #define AC_FENCE_MANUAL_RECOVERY_TIME_MIN 10000 // pilot has 10seconds to recover during which time the autopilot will not attempt to re-take control #if APM_BUILD_TYPE(APM_BUILD_ArduPlane) -#define AC_FENCE_CIRCLE_RADIUS_BACKUP_DISTANCE 100.0 // after fence is broken we recreate the fence 50m further out +#define AC_FENCE_CIRCLE_RADIUS_BACKUP_DISTANCE 100.0 // after fence is broken we recreate the fence 100m further out #else #define AC_FENCE_CIRCLE_RADIUS_BACKUP_DISTANCE 20.0 // after fence is broken we recreate the fence 20m further out #endif @@ -494,7 +494,7 @@ bool AC_Fence::check_fence_polygon() /// check_fence_circle - returns true if the circle fence (defined via /// parameters) has been freshly breached. May also set up a backup /// fence outside the fence and return a fresh breach if that backup -/// fence is breaced. +/// fence is breached. bool AC_Fence::check_fence_circle() { if (!(_enabled_fences & AC_FENCE_TYPE_CIRCLE)) { @@ -518,7 +518,7 @@ bool AC_Fence::check_fence_circle() if (!(_breached_fences & AC_FENCE_TYPE_CIRCLE) || (!is_zero(_circle_radius_backup) && _home_distance >= _circle_radius_backup)) { // new breach - // create a backup fence 20m further out + // create a backup fence 20m or 100m further out record_breach(AC_FENCE_TYPE_CIRCLE); _circle_radius_backup = _home_distance + AC_FENCE_CIRCLE_RADIUS_BACKUP_DISTANCE; return true; diff --git a/libraries/AC_Fence/AC_PolyFence_loader.h b/libraries/AC_Fence/AC_PolyFence_loader.h index 92d8bca51278b..5c87b5b4a78ef 100644 --- a/libraries/AC_Fence/AC_PolyFence_loader.h +++ b/libraries/AC_Fence/AC_PolyFence_loader.h @@ -6,7 +6,7 @@ // CIRCLE_INCLUSION_INT stores the radius an a 32-bit integer in // metres. This was a bug, and CIRCLE_INCLUSION was created to store // as a 32-bit float instead. We save as _INT in the case that the -// radius looks like an integer as a backwards-compatability measure. +// radius looks like an integer as a backwards-compatibility measure. // For 4.2 we might consider only loading _INT and always saving as // float, and in 4.3 considering _INT invalid enum class AC_PolyFenceType { @@ -352,7 +352,7 @@ class AC_PolyFence_loader #if AC_POLYFENCE_FENCE_POINT_PROTOCOL_SUPPORT /* - * FENCE_POINT protocol compatability + * FENCE_POINT protocol compatibility */ void handle_msg_fetch_fence_point(GCS_MAVLINK &link, const mavlink_message_t& msg); void handle_msg_fence_point(GCS_MAVLINK &link, const mavlink_message_t& msg); @@ -380,7 +380,7 @@ class AC_PolyFence_loader bool write_eos_to_storage(uint16_t &offset); // _total - reference to FENCE_TOTAL parameter. This is used - // solely for compatability with the FENCE_POINT protocol + // solely for compatibility with the FENCE_POINT protocol AP_Int8 &_total; const AP_Int16 &_options; uint8_t _old_total; diff --git a/libraries/AC_PID/AC_PID.cpp b/libraries/AC_PID/AC_PID.cpp index e19402034f304..8d3349252c414 100644 --- a/libraries/AC_PID/AC_PID.cpp +++ b/libraries/AC_PID/AC_PID.cpp @@ -172,6 +172,7 @@ float AC_PID::update_all(float target, float measurement, float dt, bool limit, P_out *= boost; D_out *= boost; + _pid_info.PD_limit = false; // Apply PD sum limit if enabled if (is_positive(_kpdmax)) { const float PD_sum_abs = fabsf(P_out + D_out); @@ -205,55 +206,17 @@ float AC_PID::update_error(float error, float dt, bool limit) return 0.0f; } - _target = 0.0f; + // Reuse update all code path, zero target and pass negative error as measurement + // Passing as measurement bypasses any target filtering to maintain behaviour + // Negate as update all calculates error as target - measurement + _target = 0.0; + const float output = update_all(0.0, -error, dt, limit); - // reset input filter to value received - if (_flags._reset_filter) { - _flags._reset_filter = false; - _error = error; - _derivative = 0.0f; - } else { - float error_last = _error; - _error += get_filt_E_alpha(dt) * (error - _error); - - // calculate and filter derivative - if (is_positive(dt)) { - float derivative = (_error - error_last) / dt; - _derivative += get_filt_D_alpha(dt) * (derivative - _derivative); - } - } - - // update I term - update_i(dt, limit); - - float P_out = (_error * _kp); - float D_out = (_derivative * _kd); - - // calculate slew limit modifier for P+D - _pid_info.Dmod = _slew_limiter.modifier((_pid_info.P + _pid_info.D) * _slew_limit_scale, dt); - _pid_info.slew_rate = _slew_limiter.get_slew_rate(); - - P_out *= _pid_info.Dmod; - D_out *= _pid_info.Dmod; + // Make sure logged target and actual are still 0 to maintain behaviour + _pid_info.target = 0.0; + _pid_info.actual = 0.0; - // Apply PD sum limit if enabled - if (is_positive(_kpdmax)) { - const float PD_sum_abs = fabsf(P_out + D_out); - if (PD_sum_abs > _kpdmax) { - const float PD_scale = _kpdmax / PD_sum_abs; - P_out *= PD_scale; - D_out *= PD_scale; - _pid_info.PD_limit = true; - } - } - - _pid_info.target = 0.0f; - _pid_info.actual = 0.0f; - _pid_info.error = _error; - _pid_info.P = P_out; - _pid_info.D = D_out; - - return P_out + D_out + _integrator; + return output; } // update_i - update the integral diff --git a/libraries/AC_PID/AC_PI_2D.h b/libraries/AC_PID/AC_PI_2D.h index 2020134babafa..c031104531b5f 100644 --- a/libraries/AC_PID/AC_PI_2D.h +++ b/libraries/AC_PID/AC_PI_2D.h @@ -87,7 +87,7 @@ class AC_PI_2D { } _flags; // internal variables - float _dt; // timestep in seconds + float _dt; // time step in seconds Vector2f _integrator; // integrator value Vector2f _input; // last input for derivative float _filt_alpha; // input filter alpha diff --git a/libraries/AC_PID/examples/AC_PID_test/AC_PID_test.cpp b/libraries/AC_PID/examples/AC_PID_test/AC_PID_test.cpp index bc641acd80c53..7b7b088e48d24 100644 --- a/libraries/AC_PID/examples/AC_PID_test/AC_PID_test.cpp +++ b/libraries/AC_PID/examples/AC_PID_test/AC_PID_test.cpp @@ -8,7 +8,7 @@ #include #include -// we need a boardconfig created so that the io processor is available +// we need a board config created so that the io processor is available #if HAL_WITH_IO_MCU #include #include diff --git a/libraries/AC_PrecLand/AC_PrecLand.cpp b/libraries/AC_PrecLand/AC_PrecLand.cpp index 7019898b144e9..57223e1f666c9 100644 --- a/libraries/AC_PrecLand/AC_PrecLand.cpp +++ b/libraries/AC_PrecLand/AC_PrecLand.cpp @@ -150,7 +150,7 @@ const AP_Param::GroupInfo AC_PrecLand::var_info[] = { // @Param: TIMEOUT // @DisplayName: PrecLand retry timeout - // @Description: Time for which vehicle continues descend even if target is lost. After this time period, vehicle will attemp a landing retry depending on PLND_STRICT parameter. + // @Description: Time for which vehicle continues descend even if target is lost. After this time period, vehicle will attempt a landing retry depending on PLND_STRICT parameter. // @Range: 0 20 // @Units: s AP_GROUPINFO("TIMEOUT", 13, AC_PrecLand, _retry_timeout_sec, 4), @@ -400,7 +400,7 @@ bool AC_PrecLand::target_acquired() { if ((AP_HAL::millis()-_last_update_ms) > LANDING_TARGET_TIMEOUT_MS) { if (_target_acquired) { - // just lost the landing target, inform the user. This message will only be sent once everytime target is lost + // just lost the landing target, inform the user. This message will only be sent once every time target is lost gcs().send_text(MAV_SEVERITY_CRITICAL, "PrecLand: Target Lost"); } // not had a sensor update since a long time @@ -622,7 +622,7 @@ bool AC_PrecLand::retrieve_los_meas(Vector3f& target_vec_unit_body) } - // rotate vector based on sensor oriention to get correct body frame vector + // rotate vector based on sensor orientation to get correct body frame vector if (_orient != ROTATION_PITCH_270) { // by default, the vector is constructed downwards in body frame // hence, we do not do any rotation if the orientation is downwards diff --git a/libraries/AC_PrecLand/AC_PrecLand.h b/libraries/AC_PrecLand/AC_PrecLand.h index d7d866369d777..a25b30c71f4f4 100644 --- a/libraries/AC_PrecLand/AC_PrecLand.h +++ b/libraries/AC_PrecLand/AC_PrecLand.h @@ -188,7 +188,7 @@ class AC_PrecLand AP_Float _xy_max_dist_desc; // Vehicle doing prec land will only descent vertically when horizontal error (in m) is below this limit AP_Int8 _strict; // PrecLand strictness AP_Int8 _retry_max; // PrecLand Maximum number of retires to a failed landing - AP_Float _retry_timeout_sec; // Time for which vehicle continues descend even if target is lost. After this time period, vehicle will attemp a landing retry depending on PLND_STRICT param. + AP_Float _retry_timeout_sec; // Time for which vehicle continues descend even if target is lost. After this time period, vehicle will attempt a landing retry depending on PLND_STRICT param. AP_Int8 _retry_behave; // Action to do when trying a landing retry AP_Float _sensor_min_alt; // PrecLand minimum height required for detecting target AP_Float _sensor_max_alt; // PrecLand maximum height the sensor can detect target diff --git a/libraries/AC_PrecLand/AC_PrecLand_StateMachine.cpp b/libraries/AC_PrecLand/AC_PrecLand_StateMachine.cpp index c456288ca2d36..0d38584cee777 100644 --- a/libraries/AC_PrecLand/AC_PrecLand_StateMachine.cpp +++ b/libraries/AC_PrecLand/AC_PrecLand_StateMachine.cpp @@ -7,11 +7,11 @@ #include #include -static const float MAX_POS_ERROR_M = 0.75f; // Maximum possition error for retry locations +static const float MAX_POS_ERROR_M = 0.75f; // Maximum position error for retry locations static const uint32_t FAILSAFE_INIT_TIMEOUT_MS = 7000; // Timeout in ms before failsafe measures are started. During this period vehicle is completely stopped to give user the time to take over static const float RETRY_OFFSET_ALT_M = 1.5f; // This gets added to the altitude of the retry location -// Initialize the state machine. This is called everytime vehicle switches mode +// Initialize the state machine. This is called every time vehicle switches mode void AC_PrecLand_StateMachine::init() { AC_PrecLand *_precland = AP::ac_precland(); @@ -24,14 +24,14 @@ void AC_PrecLand_StateMachine::init() // precland is not enabled, prec land state machine methods should not be called! return; } - // init is only called ONCE per mode change. So in a particuar mode we can retry only a finite times. + // init is only called ONCE per mode change. So in a particular mode we can retry only a finite times. // The counter will be reset if the statemachine is called from a different mode _retry_count = 0; // reset every other statemachine reset_failed_landing_statemachine(); } -// Reset the landing statemachines. This needs to be called everytime the landing target is back in sight. +// Reset the landing statemachines. This needs to be called every time the landing target is back in sight. // So that if the landing target goes out of sight again, we can start the failed landing procedure back from the beginning stage void AC_PrecLand_StateMachine::reset_failed_landing_statemachine() { diff --git a/libraries/AC_PrecLand/AC_PrecLand_StateMachine.h b/libraries/AC_PrecLand/AC_PrecLand_StateMachine.h index 8479be3c6abf7..e52e3effc9b0d 100644 --- a/libraries/AC_PrecLand/AC_PrecLand_StateMachine.h +++ b/libraries/AC_PrecLand/AC_PrecLand_StateMachine.h @@ -23,7 +23,7 @@ class AC_PrecLand_StateMachine { // Do not allow copies CLASS_NO_COPY(AC_PrecLand_StateMachine); - // Initialize the state machine. This is called everytime vehicle switches mode + // Initialize the state machine. This is called every time vehicle switches mode void init(); // Current status of the precland state machine @@ -78,7 +78,7 @@ class AC_PrecLand_StateMachine { // Vector3f "retry_pos_m" is filled with the required location. Status retry_landing(Vector3f &retry_pos_m); - // Reset the landing statemachine. This needs to be called everytime the landing target is back in sight. + // Reset the landing statemachine. This needs to be called every time the landing target is back in sight. // So that if the landing target goes out of sight again, we can start the failed landing procedure back from the beginning stage void reset_failed_landing_statemachine(); diff --git a/libraries/AC_Sprayer/AC_Sprayer.cpp b/libraries/AC_Sprayer/AC_Sprayer.cpp index 7eaa91a09bfea..c6b026eb5628d 100644 --- a/libraries/AC_Sprayer/AC_Sprayer.cpp +++ b/libraries/AC_Sprayer/AC_Sprayer.cpp @@ -21,7 +21,7 @@ const AP_Param::GroupInfo AC_Sprayer::var_info[] = { // @Param: PUMP_RATE // @DisplayName: Pump speed - // @Description: Desired pump speed when traveling 1m/s expressed as a percentage + // @Description: Desired pump speed when travelling 1m/s expressed as a percentage // @Units: % // @Range: 0 100 // @User: Standard @@ -174,7 +174,7 @@ void AC_Sprayer::update() _speed_over_min_time = 0; } - // if testing pump output speed as if traveling at 1m/s + // if testing pump output speed as if travelling at 1m/s if (_flags.testing) { ground_speed = 100.0f; should_be_spraying = true; diff --git a/libraries/AC_WPNav/AC_Circle.cpp b/libraries/AC_WPNav/AC_Circle.cpp index 752699a5291cc..ca804a54916c9 100644 --- a/libraries/AC_WPNav/AC_Circle.cpp +++ b/libraries/AC_WPNav/AC_Circle.cpp @@ -174,7 +174,7 @@ bool AC_Circle::update(float climb_rate_cms) _angular_vel = MAX(_angular_vel, _angular_vel_max); } - // update the target angle and total angle traveled + // update the target angle and total angle travelled float angle_change = _angular_vel * dt; _angle += angle_change; _angle = wrap_PI(_angle); diff --git a/libraries/AC_WPNav/AC_Circle.h b/libraries/AC_WPNav/AC_Circle.h index 498241e025230..d76fcc90ce64e 100644 --- a/libraries/AC_WPNav/AC_Circle.h +++ b/libraries/AC_WPNav/AC_Circle.h @@ -153,7 +153,7 @@ class AC_Circle float _rate; // rotation speed of circle in deg/sec. +ve for cw turn float _yaw; // yaw heading (normally towards circle center) float _angle; // current angular position around circle in radians (0=directly north of the center of the circle) - float _angle_total; // total angle traveled in radians + float _angle_total; // total angle travelled in radians float _angular_vel; // angular velocity in radians/sec float _angular_vel_max; // maximum velocity in radians/sec float _angular_accel; // angular acceleration in radians/sec/sec diff --git a/libraries/AC_WPNav/AC_WPNav.cpp b/libraries/AC_WPNav/AC_WPNav.cpp index e63b9fc4450c9..116e85911c0e2 100644 --- a/libraries/AC_WPNav/AC_WPNav.cpp +++ b/libraries/AC_WPNav/AC_WPNav.cpp @@ -482,7 +482,7 @@ bool AC_WPNav::advance_wp_target_along_track(float dt) } // Use vel_scaler_dt to slow down the trajectory time - // vel_scaler_dt scales the velocity and acceleration to be kinematically constent + // vel_scaler_dt scales the velocity and acceleration to be kinematically consistent float vel_scaler_dt = 1.0; if (is_positive(_wp_desired_speed_xy_cms)) { update_vel_accel(_offset_vel, _offset_accel, dt, 0.0, 0.0); diff --git a/libraries/AP_ADSB/AP_ADSB.cpp b/libraries/AP_ADSB/AP_ADSB.cpp index da7cfd5dd5347..9d82e541a4f92 100644 --- a/libraries/AP_ADSB/AP_ADSB.cpp +++ b/libraries/AP_ADSB/AP_ADSB.cpp @@ -103,7 +103,7 @@ const AP_Param::GroupInfo AP_ADSB::var_info[] = { // @Param: OFFSET_LAT // @DisplayName: GPS antenna lateral offset - // @Description: GPS antenna lateral offset. This describes the physical location offest from center of the GPS antenna on the aircraft. + // @Description: GPS antenna lateral offset. This describes the physical location offset from center of the GPS antenna on the aircraft. // @Values: 0:NoData,1:Left2m,2:Left4m,3:Left6m,4:Center,5:Right2m,6:Right4m,7:Right6m // @User: Advanced AP_GROUPINFO("OFFSET_LAT", 7, AP_ADSB, out_state.cfg.gpsOffsetLat, UAVIONIX_ADSB_OUT_CFG_GPS_OFFSET_LAT_RIGHT_0M), diff --git a/libraries/AP_ADSB/AP_ADSB.h b/libraries/AP_ADSB/AP_ADSB.h index 80bb44d033365..f9210a559a6b6 100644 --- a/libraries/AP_ADSB/AP_ADSB.h +++ b/libraries/AP_ADSB/AP_ADSB.h @@ -155,7 +155,7 @@ class AP_ADSB { static uint32_t convert_base_to_decimal(const uint8_t baseIn, uint32_t inputNumber); // Trigger a Mode 3/A transponder IDENT. This should only be done when requested to do so by an Air Traffic Controller. - // See wikipedia for IDENT explaination https://en.wikipedia.org/wiki/Transponder_(aeronautics) + // See wikipedia for IDENT explanation https://en.wikipedia.org/wiki/Transponder_(aeronautics) bool ident_start() { if (!healthy() || ((out_state.cfg.rfSelect & UAVIONIX_ADSB_OUT_RF_SELECT_TX_ENABLED) == 0)) { return false; diff --git a/libraries/AP_ADSB/AP_ADSB_Sagetech.cpp b/libraries/AP_ADSB/AP_ADSB_Sagetech.cpp index ce38edef09d2a..a5ebfea68c2dc 100644 --- a/libraries/AP_ADSB/AP_ADSB_Sagetech.cpp +++ b/libraries/AP_ADSB/AP_ADSB_Sagetech.cpp @@ -514,6 +514,7 @@ void AP_ADSB_Sagetech::send_msg_GPS() hemisphere |= (AP::gps().status() < AP_GPS::GPS_OK_FIX_2D) ? 0x80 : 0; // isInvalid pkt.payload[35] = hemisphere; +#if AP_RTC_ENABLED // time uint64_t time_usec; if (AP::rtc().get_utc_usec(time_usec)) { @@ -526,6 +527,9 @@ void AP_ADSB_Sagetech::send_msg_GPS() } else { memset(&pkt.payload[36],' ', 10); } +#else + memset(&pkt.payload[36],' ', 10); +#endif send_msg(pkt); } diff --git a/libraries/AP_ADSB/AP_ADSB_Sagetech_MXS.cpp b/libraries/AP_ADSB/AP_ADSB_Sagetech_MXS.cpp index a2df7e7e4eb36..fdd8431e3e9e5 100644 --- a/libraries/AP_ADSB/AP_ADSB_Sagetech_MXS.cpp +++ b/libraries/AP_ADSB/AP_ADSB_Sagetech_MXS.cpp @@ -681,6 +681,7 @@ void AP_ADSB_Sagetech_MXS::send_gps_msg() gps.gpsValid = (AP::gps().status() < AP_GPS::GPS_OK_FIX_2D) ? false : true; // If the status is not OK, gpsValid is false. +#if AP_RTC_ENABLED uint64_t time_usec; if (AP::rtc().get_utc_usec(time_usec)) { const time_t time_sec = time_usec * 1E-6; @@ -690,6 +691,9 @@ void AP_ADSB_Sagetech_MXS::send_gps_msg() } else { strncpy(gps.timeOfFix, " . ", 11); } +#else + strncpy(gps.timeOfFix, " . ", 11); +#endif int32_t height; if (_frontend._my_loc.initialised() && _frontend._my_loc.get_alt_cm(Location::AltFrame::ABOVE_TERRAIN, height)) { diff --git a/libraries/AP_ADSB/AP_ADSB_uAvionix_MAVLink.cpp b/libraries/AP_ADSB/AP_ADSB_uAvionix_MAVLink.cpp index 473b34f3475c6..571f265905f7e 100644 --- a/libraries/AP_ADSB/AP_ADSB_uAvionix_MAVLink.cpp +++ b/libraries/AP_ADSB/AP_ADSB_uAvionix_MAVLink.cpp @@ -140,7 +140,7 @@ void AP_ADSB_uAvionix_MAVLink::send_dynamic_out(const mavlink_channel_t chan) co /* * To expand functionality in their HW, uAvionix has extended a few of the unused MAVLink bits to pack in more new features * This function will override the MSB byte of the 24bit ICAO address. To ensure an invalid >24bit ICAO is never broadcasted, - * this function is used to create the encoded verison without ever writing to the actual ICAO number. It's created on-demand + * this function is used to create the encoded version without ever writing to the actual ICAO number. It's created on-demand */ uint32_t AP_ADSB_uAvionix_MAVLink::encode_icao(const uint32_t icao_id) const { diff --git a/libraries/AP_AHRS/AP_AHRS.cpp b/libraries/AP_AHRS/AP_AHRS.cpp index b8855d5c7cc57..cf702b9da423f 100644 --- a/libraries/AP_AHRS/AP_AHRS.cpp +++ b/libraries/AP_AHRS/AP_AHRS.cpp @@ -79,7 +79,7 @@ const AP_Param::GroupInfo AP_AHRS::var_info[] = { // @Param: WIND_MAX // @DisplayName: Maximum wind - // @Description: This sets the maximum allowable difference between ground speed and airspeed. This allows the plane to cope with a failing airspeed sensor. A value of zero means to use the airspeed as is. See ARSPD_OPTIONS and ARSPD_MAX_WIND to disable airspeed sensors. + // @Description: This sets the maximum allowable difference between ground speed and airspeed. A value of zero means to use the airspeed as is. This allows the plane to cope with a failing airspeed sensor by clipping it to groundspeed plus/minus this limit. See ARSPD_OPTIONS and ARSPD_WIND_MAX to disable airspeed sensors. // @Range: 0 127 // @Units: m/s // @Increment: 1 @@ -242,7 +242,7 @@ void AP_AHRS::init() #endif #if !APM_BUILD_TYPE(APM_BUILD_AP_Periph) - // convert to new custom rotaton + // convert to new custom rotation // PARAMETER_CONVERSION - Added: Nov-2021 if (_board_orientation == ROTATION_CUSTOM_OLD) { _board_orientation.set_and_save(ROTATION_CUSTOM_1); @@ -330,7 +330,7 @@ void AP_AHRS::update_state(void) state.primary_core = _get_primary_core_index(); state.wind_estimate_ok = _wind_estimate(state.wind_estimate); state.EAS2TAS = AP_AHRS_Backend::get_EAS2TAS(); - state.airspeed_ok = _airspeed_estimate(state.airspeed); + state.airspeed_ok = _airspeed_estimate(state.airspeed, state.airspeed_estimate_type); state.airspeed_true_ok = _airspeed_estimate_true(state.airspeed_true); state.airspeed_vec_ok = _airspeed_vector_true(state.airspeed_vec); state.quat_ok = _get_quaternion(state.quat); @@ -590,7 +590,7 @@ void AP_AHRS::update_EKF2(void) float &abias = state.accel_bias.z; EKF2.getAccelZBias(abias); - // This EKF is currently using primary_imu, and abias applies to only that IMU + // This EKF is currently using primary_imu, and a bias applies to only that IMU Vector3f accel = _ins.get_accel(primary_accel); accel.z -= abias; state.accel_ef = state.dcm_matrix * get_rotation_autopilot_body_to_vehicle_body() * accel; @@ -653,7 +653,7 @@ void AP_AHRS::update_EKF3(void) // use the same IMU as the primary EKF and correct for gyro drift state.gyro_estimate = _ins.get_gyro(primary_gyro) + state.gyro_drift; - // get 3-axis accel bias festimates for active EKF (this is usually for the primary IMU) + // get 3-axis accel bias estimates for active EKF (this is usually for the primary IMU) Vector3f &abias = state.accel_bias; EKF3.getAccelBias(-1,abias); @@ -821,7 +821,7 @@ bool AP_AHRS::airspeed_sensor_enabled(void) const // special case for when backend is rejecting airspeed data in // an armed fly_forward state and not dead reckoning. Then the // airspeed data is highly suspect and will be rejected. We - // will use the synthentic airspeed instead + // will use the synthetic airspeed instead return false; } return true; @@ -829,9 +829,9 @@ bool AP_AHRS::airspeed_sensor_enabled(void) const // return an airspeed estimate if available. return true // if we have an estimate -bool AP_AHRS::_airspeed_estimate(float &airspeed_ret) const +bool AP_AHRS::_airspeed_estimate(float &airspeed_ret, AirspeedEstimateType &airspeed_estimate_type) const { -#if AP_AIRSPEED_ENABLED +#if AP_AIRSPEED_ENABLED && AP_GPS_ENABLED if (airspeed_sensor_enabled()) { uint8_t idx = get_active_airspeed_index(); airspeed_ret = AP::airspeed()->get_airspeed(idx); @@ -846,12 +846,13 @@ bool AP_AHRS::_airspeed_estimate(float &airspeed_ret) const gnd_speed + _wind_max); airspeed_ret = true_airspeed / get_EAS2TAS(); } - + airspeed_estimate_type = AirspeedEstimateType::AIRSPEED_SENSOR; return true; } #endif if (!get_wind_estimation_enabled()) { + airspeed_estimate_type = AirspeedEstimateType::NO_NEW_ESTIMATE; return false; } @@ -864,17 +865,20 @@ bool AP_AHRS::_airspeed_estimate(float &airspeed_ret) const switch (active_EKF_type()) { #if AP_AHRS_DCM_ENABLED case EKFType::DCM: + airspeed_estimate_type = AirspeedEstimateType::DCM_SYNTHETIC; return dcm.airspeed_estimate(get_active_airspeed_index(), airspeed_ret); #endif #if AP_AHRS_SIM_ENABLED case EKFType::SIM: + airspeed_estimate_type = AirspeedEstimateType::SIM; return sim.airspeed_estimate(airspeed_ret); #endif #if HAL_NAVEKF2_AVAILABLE case EKFType::TWO: #if AP_AHRS_DCM_ENABLED + airspeed_estimate_type = AirspeedEstimateType::DCM_SYNTHETIC; return dcm.airspeed_estimate(get_active_airspeed_index(), airspeed_ret); #else return false; @@ -889,7 +893,8 @@ bool AP_AHRS::_airspeed_estimate(float &airspeed_ret) const #if HAL_EXTERNAL_AHRS_ENABLED case EKFType::EXTERNAL: - return false; + airspeed_estimate_type = AirspeedEstimateType::DCM_SYNTHETIC; + return dcm.airspeed_estimate(get_active_airspeed_index(), airspeed_ret); #endif } @@ -907,11 +912,13 @@ bool AP_AHRS::_airspeed_estimate(float &airspeed_ret) const true_airspeed = MAX(0.0f, true_airspeed); } airspeed_ret = true_airspeed / get_EAS2TAS(); + airspeed_estimate_type = AirspeedEstimateType::EKF3_SYNTHETIC; return true; } #if AP_AHRS_DCM_ENABLED // fallback to DCM + airspeed_estimate_type = AirspeedEstimateType::DCM_SYNTHETIC; return dcm.airspeed_estimate(get_active_airspeed_index(), airspeed_ret); #endif @@ -1500,7 +1507,7 @@ bool AP_AHRS::get_mag_field_correction(Vector3f &vec) const } // Get a derivative of the vertical position which is kinematically consistent with the vertical position is required by some control loops. -// This is different to the vertical velocity from the EKF which is not always consistent with the verical position due to the various errors that are being corrected for. +// This is different to the vertical velocity from the EKF which is not always consistent with the vertical position due to the various errors that are being corrected for. bool AP_AHRS::get_vert_pos_rate_D(float &velocity) const { switch (active_EKF_type()) { @@ -1743,13 +1750,15 @@ void AP_AHRS::get_relative_position_D_home(float &posD) const float originD; if (!get_relative_position_D_origin(originD) || !_get_origin(originLLH)) { +#if AP_GPS_ENABLED const auto &gps = AP::gps(); if (_gps_use == GPSUse::EnableWithHeight && gps.status() >= AP_GPS::GPS_OK_FIX_3D) { posD = (get_home().alt - gps.location().alt) * 0.01; - } else { - posD = -AP::baro().get_altitude(); + return; } +#endif + posD = -AP::baro().get_altitude(); return; } @@ -2109,7 +2118,7 @@ bool AP_AHRS::pre_arm_check(bool requires_position, char *failure_msg, uint8_t f #if HAL_EXTERNAL_AHRS_ENABLED // Always check external AHRS if enabled - // it is a source for IMU data even if not being used as direct AHRS replacment + // it is a source for IMU data even if not being used as direct AHRS replacement if (AP::externalAHRS().enabled() || (ekf_type() == EKFType::EXTERNAL)) { if (!AP::externalAHRS().pre_arm_check(failure_msg, failure_msg_len)) { return false; @@ -2914,7 +2923,7 @@ void AP_AHRS::set_terrain_hgt_stable(bool stable) #endif } -// return the innovations for the primariy EKF +// return the innovations for the primarily EKF // boolean false is returned if innovations are not available bool AP_AHRS::get_innovations(Vector3f &velInnov, Vector3f &posInnov, Vector3f &magInnov, float &tasInnov, float &yawInnov) const { @@ -2978,7 +2987,7 @@ bool AP_AHRS::is_vibration_affected() const // get_variances - provides the innovations normalised using the innovation variance where a value of 0 // indicates prefect consistency between the measurement and the EKF solution and a value of 1 is the maximum -// inconsistency that will be accpeted by the filter +// inconsistency that will be accepted by the filter // boolean false is returned if variances are not available bool AP_AHRS::get_variances(float &velVar, float &posVar, float &hgtVar, Vector3f &magVar, float &tasVar) const { @@ -3387,6 +3396,15 @@ bool AP_AHRS::airspeed_estimate(float &airspeed_ret) const return state.airspeed_ok; } +// return an airspeed estimate if available. return true +// if we have an estimate +bool AP_AHRS::airspeed_estimate(float &airspeed_ret, AP_AHRS::AirspeedEstimateType &type) const +{ + airspeed_ret = state.airspeed; + type = state.airspeed_estimate_type; + return state.airspeed_ok; +} + // return a true airspeed estimate (navigation airspeed) if // available. return true if we have an estimate bool AP_AHRS::airspeed_estimate_true(float &airspeed_ret) const diff --git a/libraries/AP_AHRS/AP_AHRS.h b/libraries/AP_AHRS/AP_AHRS.h index 47089d125ed87..8ab6bca0457cb 100644 --- a/libraries/AP_AHRS/AP_AHRS.h +++ b/libraries/AP_AHRS/AP_AHRS.h @@ -139,6 +139,18 @@ class AP_AHRS { // if we have an estimate bool airspeed_estimate(float &airspeed_ret) const; + enum AirspeedEstimateType : uint8_t { + NO_NEW_ESTIMATE = 0, + AIRSPEED_SENSOR = 1, + DCM_SYNTHETIC = 2, + EKF3_SYNTHETIC = 3, + SIM = 4, + }; + + // return an airspeed estimate if available. return true + // if we have an estimate + bool airspeed_estimate(float &airspeed_ret, AirspeedEstimateType &type) const; + // return a true airspeed estimate (navigation airspeed) if // available. return true if we have an estimate bool airspeed_estimate_true(float &airspeed_ret) const; @@ -833,7 +845,7 @@ class AP_AHRS { // return an airspeed estimate if available. return true // if we have an estimate - bool _airspeed_estimate(float &airspeed_ret) const; + bool _airspeed_estimate(float &airspeed_ret, AirspeedEstimateType &status) const; // return secondary attitude solution if available, as eulers in radians bool _get_secondary_attitude(Vector3f &eulers) const; @@ -926,6 +938,7 @@ class AP_AHRS { float EAS2TAS; bool airspeed_ok; float airspeed; + AirspeedEstimateType airspeed_estimate_type; bool airspeed_true_ok; float airspeed_true; Vector3f airspeed_vec; diff --git a/libraries/AP_AHRS/AP_AHRS_DCM.cpp b/libraries/AP_AHRS/AP_AHRS_DCM.cpp index 3252c4d7896b5..df722c5cc52b0 100644 --- a/libraries/AP_AHRS/AP_AHRS_DCM.cpp +++ b/libraries/AP_AHRS/AP_AHRS_DCM.cpp @@ -271,7 +271,7 @@ AP_AHRS_DCM::renorm(Vector3f const &a, Vector3f &result) // additional error buildup. // Note that we can get significant renormalisation values - // when we have a larger delta_t due to a glitch eleswhere in + // when we have a larger delta_t due to a glitch elsewhere in // APM, such as a I2c timeout or a set of EEPROM writes. While // we would like to avoid these if possible, if it does happen // we don't want to compound the error by making DCM less @@ -428,7 +428,7 @@ bool AP_AHRS_DCM::use_compass(void) return false; } if (!AP::ahrs().get_fly_forward() || !have_gps()) { - // we don't have any alterative to the compass + // we don't have any alternative to the compass return true; } if (AP::gps().ground_speed() < GPS_SPEED_MIN) { @@ -463,7 +463,7 @@ bool AP_AHRS_DCM::get_quaternion(Quaternion &quat) const } // yaw drift correction using the compass or GPS -// this function prodoces the _omega_yaw_P vector, and also +// this function produces the _omega_yaw_P vector, and also // contributes to the _omega_I.z long term yaw drift estimate void AP_AHRS_DCM::drift_correction_yaw(void) @@ -573,8 +573,8 @@ AP_AHRS_DCM::drift_correction_yaw(void) // that depends on the spin rate. See the fastRotations.pdf // paper from Bill Premerlani // We also adjust the gain depending on the rate of change of horizontal velocity which - // is proportional to how observable the heading is from the acceerations and GPS velocity - // The accelration derived heading will be more reliable in turns than compass or GPS + // is proportional to how observable the heading is from the accelerations and GPS velocity + // The acceleration derived heading will be more reliable in turns than compass or GPS _omega_yaw_P.z = error_z * _P_gain(spin_rate) * _kp_yaw * _yaw_gain(); if (use_fast_gains()) { @@ -1061,7 +1061,7 @@ bool AP_AHRS_DCM::airspeed_estimate(float &airspeed_ret) const bool AP_AHRS_DCM::airspeed_estimate(uint8_t airspeed_index, float &airspeed_ret) const { // airspeed_ret: will always be filled-in by get_unconstrained_airspeed_estimate which fills in airspeed_ret in this order: - // airspeed as filled-in by an enabled airsped sensor + // airspeed as filled-in by an enabled airspeed sensor // if no airspeed sensor: airspeed estimated using the GPS speed & wind_speed_estimation // Or if none of the above, fills-in using the previous airspeed estimate // Return false: if we are using the previous airspeed estimate @@ -1085,7 +1085,7 @@ bool AP_AHRS_DCM::airspeed_estimate(uint8_t airspeed_index, float &airspeed_ret) } // airspeed_ret: will always be filled-in by get_unconstrained_airspeed_estimate which fills in airspeed_ret in this order: -// airspeed as filled-in by an enabled airsped sensor +// airspeed as filled-in by an enabled airspeed sensor // if no airspeed sensor: airspeed estimated using the GPS speed & wind_speed_estimation // Or if none of the above, fills-in using the previous airspeed estimate // Return false: if we are using the previous airspeed estimate diff --git a/libraries/AP_AHRS/AP_AHRS_DCM.h b/libraries/AP_AHRS/AP_AHRS_DCM.h index c7baf1634397b..690ef22810bed 100644 --- a/libraries/AP_AHRS/AP_AHRS_DCM.h +++ b/libraries/AP_AHRS/AP_AHRS_DCM.h @@ -172,7 +172,7 @@ class AP_AHRS_DCM : public AP_AHRS_Backend { void reset(bool recover_eulers); // airspeed_ret: will always be filled-in by get_unconstrained_airspeed_estimate which fills in airspeed_ret in this order: - // airspeed as filled-in by an enabled airsped sensor + // airspeed as filled-in by an enabled airspeed sensor // if no airspeed sensor: airspeed estimated using the GPS speed & wind_speed_estimation // Or if none of the above, fills-in using the previous airspeed estimate // Return false: if we are using the previous airspeed estimate diff --git a/libraries/AP_AIS/AP_AIS.cpp b/libraries/AP_AIS/AP_AIS.cpp index 897e3e6679e28..c08a4dea0318f 100644 --- a/libraries/AP_AIS/AP_AIS.cpp +++ b/libraries/AP_AIS/AP_AIS.cpp @@ -141,7 +141,7 @@ void AP_AIS::update() uint8_t msg_parts[_incoming.num - 1]; for (uint8_t i = 0; i < AIVDM_BUFFER_SIZE; i++) { // look for the rest of the message from the start of the buffer - // we assume the mesage has be received in the correct order + // we assume the message has be received in the correct order if (_AIVDM_buffer[i].num == (index + 1) && _AIVDM_buffer[i].total == _incoming.total && _AIVDM_buffer[i].ID == _incoming.ID) { msg_parts[index] = i; index++; @@ -349,11 +349,11 @@ void AP_AIS::clear_list_item(uint16_t index) } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Functions for decoding AIVDM payload mesages +// Functions for decoding AIVDM payload messages bool AP_AIS::payload_decode(const char *payload) { - // the mesage type is defined by the first character + // the message type is defined by the first character const uint8_t type = payload_char_decode(payload[0]); switch (type) { @@ -674,7 +674,7 @@ uint32_t AP_AIS::get_bits(const char *payload, uint16_t low, uint16_t high) } // read the specified bits from the char array each char giving 6 bits -// As the values are a arbitrary length the sign bit is in the wrong place for standard length varables +// As the values are a arbitrary length the sign bit is in the wrong place for standard length variables int32_t AP_AIS::get_bits_signed(const char *payload, uint16_t low, uint16_t high) { uint32_t value = get_bits(payload, low, high); @@ -829,7 +829,7 @@ AP_AIS *AP_AIS::get_singleton() { #else // Dummy methods are required to allow functionality to be enabled for Rover. -// It is not posible to compile in or out the full code based on vehicle type due to limitations +// It is not possible to compile in or out the full code based on vehicle type due to limitations // of the handling of `APM_BUILD_TYPE` define. // These dummy methods minimise flash cost in that case. diff --git a/libraries/AP_AIS/AP_AIS.h b/libraries/AP_AIS/AP_AIS.h index 2707de2bf11fc..d55a08c82f8be 100644 --- a/libraries/AP_AIS/AP_AIS.h +++ b/libraries/AP_AIS/AP_AIS.h @@ -125,7 +125,7 @@ class AP_AIS // decode each term bool decode_latest_term() WARN_IF_UNUSED; - // varables for decoding NMEA sentence + // variables for decoding NMEA sentence char _term[AIVDM_PAYLOAD_SIZE]; // buffer for the current term within the current sentence uint8_t _term_offset; // offset within the _term buffer where the next character should be placed uint8_t _term_number; // term index within the current sentence diff --git a/libraries/AP_AccelCal/AccelCalibrator.cpp b/libraries/AP_AccelCal/AccelCalibrator.cpp index 5e90912bda77e..2cca0cb009f79 100644 --- a/libraries/AP_AccelCal/AccelCalibrator.cpp +++ b/libraries/AP_AccelCal/AccelCalibrator.cpp @@ -36,7 +36,7 @@ _sample_buffer(nullptr) /* Select options, initialise variables and initiate accel calibration Options: - Fit Type: Will assume that if accelerometer static samples around all possible orientatio + Fit Type: Will assume that if accelerometer static samples around all possible orientation are spread in space will cover a surface of AXIS_ALIGNED_ELLIPSOID or any general ELLIPSOID as chosen @@ -173,7 +173,7 @@ bool AccelCalibrator::get_sample(uint8_t i, Vector3f& s) const { return true; } -// returns truen and sample corrected with diag offdiag parameters as calculated by LSq estimation procedure +// returns true and sample corrected with diag offdiag parameters as calculated by LSq estimation procedure // returns false if no correct parameter exists to be applied along with existing sample without corrections bool AccelCalibrator::get_sample_corrected(uint8_t i, Vector3f& s) const { if (_status != ACCEL_CAL_SUCCESS || !get_sample(i,s)) { @@ -199,7 +199,7 @@ void AccelCalibrator::check_for_timeout() { } } -// returns spherical fit paramteters +// returns spherical fit parameters void AccelCalibrator::get_calibration(Vector3f& offset) const { offset = -_param.s.offset; } @@ -288,7 +288,7 @@ void AccelCalibrator::set_status(enum accel_cal_status_t status) { break; case ACCEL_CAL_COLLECTING_SAMPLE: - // Calibrator is waiting on collecting samples from acceleromter for amount of + // Calibrator is waiting on collecting samples from accelerometer for amount of // time as requested by user/GCS if (_status != ACCEL_CAL_WAITING_FOR_ORIENTATION) { break; @@ -309,7 +309,7 @@ void AccelCalibrator::set_status(enum accel_cal_status_t status) { case ACCEL_CAL_FAILED: // Calibration has failed with reasons that can range from - // bad sample data leading to faillure in tolerance test to lack of distinct samples + // bad sample data leading to failure in tolerance test to lack of distinct samples if (_status == ACCEL_CAL_NOT_STARTED) { break; } diff --git a/libraries/AP_AccelCal/AccelCalibrator.h b/libraries/AP_AccelCal/AccelCalibrator.h index df06da578dbfe..3e3a04ffb52bd 100644 --- a/libraries/AP_AccelCal/AccelCalibrator.h +++ b/libraries/AP_AccelCal/AccelCalibrator.h @@ -64,7 +64,7 @@ class AccelCalibrator { // to averaged acc over time bool get_sample(uint8_t i, Vector3f& s) const; - // returns truen and sample corrected with diag offdiag parameters as calculated by LSq estimation procedure + // returns true and sample corrected with diag offdiag parameters as calculated by LSq estimation procedure // returns false if no correct parameter exists to be applied along with existing sample without corrections bool get_sample_corrected(uint8_t i, Vector3f& s) const; diff --git a/libraries/AP_Airspeed/AP_Airspeed.cpp b/libraries/AP_Airspeed/AP_Airspeed.cpp index 341aa7aac9440..a13480b531c7e 100644 --- a/libraries/AP_Airspeed/AP_Airspeed.cpp +++ b/libraries/AP_Airspeed/AP_Airspeed.cpp @@ -156,7 +156,7 @@ const AP_Param::GroupInfo AP_Airspeed::var_info[] = { // @Param: _OFF_PCNT // @DisplayName: Maximum offset cal speed error - // @Description: The maximum percentage speed change in airspeed reports that is allowed due to offset changes between calibraions before a warning is issued. This potential speed error is in percent of ASPD_FBW_MIN. 0 disables. Helps warn of calibrations without pitot being covered. + // @Description: The maximum percentage speed change in airspeed reports that is allowed due to offset changes between calibrations before a warning is issued. This potential speed error is in percent of ASPD_FBW_MIN. 0 disables. Helps warn of calibrations without pitot being covered. // @Range: 0.0 10.0 // @Units: % // @User: Advanced @@ -632,7 +632,7 @@ void AP_Airspeed::read(uint8_t i) if (!prev_healthy) { // if the previous state was not healthy then we should not // use an IIR filter, otherwise a bad reading will last for - // some time after the sensor becomees healthy again + // some time after the sensor becomes healthy again state[i].filtered_pressure = airspeed_pressure; } else { state[i].filtered_pressure = 0.7f * state[i].filtered_pressure + 0.3f * airspeed_pressure; diff --git a/libraries/AP_Airspeed/AP_Airspeed.h b/libraries/AP_Airspeed/AP_Airspeed.h index 564d59981465e..5574f807557a6 100644 --- a/libraries/AP_Airspeed/AP_Airspeed.h +++ b/libraries/AP_Airspeed/AP_Airspeed.h @@ -56,7 +56,7 @@ class Airspeed_Calibration { private: // state of kalman filter for airspeed ratio estimation - Matrix3f P; // covarience matrix + Matrix3f P; // covariance matrix const float Q0; // process noise matrix top left and middle element const float Q1; // process noise matrix bottom right element Vector3f state; // state vector diff --git a/libraries/AP_Airspeed/AP_Airspeed_Backend.h b/libraries/AP_Airspeed/AP_Airspeed_Backend.h index 5836270bf4956..2deeb427c09c3 100644 --- a/libraries/AP_Airspeed/AP_Airspeed_Backend.h +++ b/libraries/AP_Airspeed/AP_Airspeed_Backend.h @@ -42,7 +42,7 @@ class AP_Airspeed_Backend { // return the current temperature in degrees C, if available virtual bool get_temperature(float &temperature) = 0; - // true if sensor reads airspeed directly, not via pressue + // true if sensor reads airspeed directly, not via pressure virtual bool has_airspeed() {return false;} // return airspeed in m/s if available diff --git a/libraries/AP_Airspeed/AP_Airspeed_NMEA.cpp b/libraries/AP_Airspeed/AP_Airspeed_NMEA.cpp index 3da9c968e2f82..c0a8e6aedce1c 100644 --- a/libraries/AP_Airspeed/AP_Airspeed_NMEA.cpp +++ b/libraries/AP_Airspeed/AP_Airspeed_NMEA.cpp @@ -96,7 +96,7 @@ bool AP_Airspeed_NMEA::get_airspeed(float &airspeed) } // return the current temperature in degrees C -// the main update is done in the get_pressue function +// the main update is done in the get_pressure function // this just reports the value bool AP_Airspeed_NMEA::get_temperature(float &temperature) { diff --git a/libraries/AP_Airspeed/AP_Airspeed_SDP3X.cpp b/libraries/AP_Airspeed/AP_Airspeed_SDP3X.cpp index e68fc3cd210f0..bf17969f37fea 100644 --- a/libraries/AP_Airspeed/AP_Airspeed_SDP3X.cpp +++ b/libraries/AP_Airspeed/AP_Airspeed_SDP3X.cpp @@ -261,7 +261,7 @@ float AP_Airspeed_SDP3X::_correct_pressure(float press) flow_SDP3X = 0.0f; } - // diffential pressure through pitot tube + // differential pressure through pitot tube float dp_pitot = 28557670.0f * (1.0f - 1.0f / (1.0f + (float)powf((flow_SDP3X / 5027611.0f), 1.227924f))); // uncorrected pressure diff --git a/libraries/AP_Arming/AP_Arming.cpp b/libraries/AP_Arming/AP_Arming.cpp index ad65f258f9286..898f566d0f272 100644 --- a/libraries/AP_Arming/AP_Arming.cpp +++ b/libraries/AP_Arming/AP_Arming.cpp @@ -873,7 +873,7 @@ bool AP_Arming::mission_checks(bool report) } RallyLocation rally_loc = {}; if (!rally->find_nearest_rally_point(ahrs_loc, rally_loc)) { - check_failed(ARMING_CHECK_MISSION, report, "No sufficently close rally point located"); + check_failed(ARMING_CHECK_MISSION, report, "No sufficiently close rally point located"); return false; } #else diff --git a/libraries/AP_Avoidance/AP_Avoidance.cpp b/libraries/AP_Avoidance/AP_Avoidance.cpp index dfa1c6bf4f1ff..45f28874fc10c 100644 --- a/libraries/AP_Avoidance/AP_Avoidance.cpp +++ b/libraries/AP_Avoidance/AP_Avoidance.cpp @@ -325,11 +325,11 @@ float closest_approach_z(const Location &my_loc, } debug(" time_horizon: (%d)", time_horizon); - debug(" delta pos: (%f) metres", delta_pos_d/100.0f); + debug(" delta pos: (%f) metres", delta_pos_d*0.01f); debug(" delta vel: (%f) m/s", delta_vel_d); - debug(" closest: (%f) metres", ret/100.0f); + debug(" closest: (%f) metres", ret*0.01f); - return ret/100.0f; + return ret*0.01f; } void AP_Avoidance::update_threat_level(const Location &my_loc, @@ -657,7 +657,7 @@ bool AP_Avoidance::get_vector_perpendicular(const AP_Avoidance::Obstacle *obstac Vector3f AP_Avoidance::perpendicular_xyz(const Location &p1, const Vector3f &v1, const Location &p2) { const Vector2f delta_p_2d = p1.get_distance_NE(p2); - Vector3f delta_p_xyz = Vector3f(delta_p_2d[0],delta_p_2d[1],(p2.alt-p1.alt)/100.0f); //check this line + Vector3f delta_p_xyz = Vector3f(delta_p_2d[0],delta_p_2d[1],(p2.alt-p1.alt)*0.01f); //check this line Vector3f v1_xyz = Vector3f(v1[0], v1[1], -v1[2]); Vector3f ret = Vector3f::perpendicular(delta_p_xyz, v1_xyz); return ret; diff --git a/libraries/AP_BLHeli/AP_BLHeli.cpp b/libraries/AP_BLHeli/AP_BLHeli.cpp index 918bd8256ad13..66577622a7cd4 100644 --- a/libraries/AP_BLHeli/AP_BLHeli.cpp +++ b/libraries/AP_BLHeli/AP_BLHeli.cpp @@ -51,7 +51,7 @@ extern const AP_HAL::HAL& hal; // the MSP protocol on hal.console #define BLHELI_UART_LOCK_KEY 0x20180402 -// if no packets are received for this time and motor control is active BLH will disconect (stoping motors) +// if no packets are received for this time and motor control is active BLH will disconnect (stoping motors) #define MOTOR_ACTIVE_TIMEOUT 1000 const AP_Param::GroupInfo AP_BLHeli::var_info[] = { @@ -395,7 +395,7 @@ void AP_BLHeli::msp_process_command(void) break; case MSP_UID: - // MCU identifer + // MCU identifier debug("MSP_UID"); msp_send_reply(msp.cmdMSP, (const uint8_t *)UDID_START, 12); break; @@ -1421,7 +1421,7 @@ void AP_BLHeli::init(uint32_t mask, AP_HAL::RCOutput::output_mode otype) motor_mask = mask; debug("ESC: %u motors mask=0x%08lx", num_motors, mask); - // check if we have a combination of reversable and normal + // check if we have a combination of reversible and normal mixed_type = (mask != (mask & channel_reversible_mask.get())) && (channel_reversible_mask.get() != 0); if (num_motors != 0 && telem_rate > 0) { diff --git a/libraries/AP_BLHeli/AP_BLHeli.h b/libraries/AP_BLHeli/AP_BLHeli.h index 6c00b537bdbb1..ae583262fdaee 100644 --- a/libraries/AP_BLHeli/AP_BLHeli.h +++ b/libraries/AP_BLHeli/AP_BLHeli.h @@ -237,7 +237,7 @@ class AP_BLHeli : public AP_ESC_Telem_Backend { // have we locked the UART? bool uart_locked; - // true if we have a mix of reversable and normal ESC + // true if we have a mix of reversible and normal ESC bool mixed_type; // mapping from BLHeli motor numbers to RC output channels diff --git a/libraries/AP_Baro/AP_Baro.cpp b/libraries/AP_Baro/AP_Baro.cpp index ebb4af139699b..f754889420157 100644 --- a/libraries/AP_Baro/AP_Baro.cpp +++ b/libraries/AP_Baro/AP_Baro.cpp @@ -530,7 +530,7 @@ float AP_Baro::get_external_temperature(const uint8_t instance) const // The reason for not just using the baro temperature is it tends to read high, // often 30 degrees above the actual temperature. That means the // EAS2TAS tends to be off by quite a large margin, as well as - // the calculation of altitude difference betweeen two pressures + // the calculation of altitude difference between two pressures // reporting a high temperature will cause the aircraft to // estimate itself as flying higher then it actually is. return MIN(get_temperature(instance), INTERNAL_TEMPERATURE_CLAMP); @@ -583,7 +583,7 @@ void AP_Baro::init(void) { init_done = true; - // always set field elvation to zero on reboot in the case user + // always set field elevation to zero on reboot in the case user // fails to update. TBD automate sanity checking error bounds on // on previously saved value at new location etc. if (!is_zero(_field_elevation)) { diff --git a/libraries/AP_Baro/AP_Baro.h b/libraries/AP_Baro/AP_Baro.h index a1b4b63242295..4b1055fff9221 100644 --- a/libraries/AP_Baro/AP_Baro.h +++ b/libraries/AP_Baro/AP_Baro.h @@ -294,7 +294,7 @@ class AP_Baro DerivativeFilterFloat_Size7 _climb_rate_filter; AP_Float _specific_gravity; // the specific gravity of fluid for an ROV 1.00 for freshwater, 1.024 for salt water AP_Float _user_ground_temperature; // user override of the ground temperature used for EAS2TAS - float _guessed_ground_temperature; // currently ground temperature estimate using our best abailable source + float _guessed_ground_temperature; // currently ground temperature estimate using our best available source // when did we last notify the GCS of new pressure reference? uint32_t _last_notify_ms; diff --git a/libraries/AP_Baro/AP_Baro_BMP085.cpp b/libraries/AP_Baro/AP_Baro_BMP085.cpp index 9601db80d2c3c..d2fed889da699 100644 --- a/libraries/AP_Baro/AP_Baro_BMP085.cpp +++ b/libraries/AP_Baro/AP_Baro_BMP085.cpp @@ -70,7 +70,7 @@ bool AP_Baro_BMP085::_init() // get pointer to i2c bus semaphore AP_HAL::Semaphore *sem = _dev->get_semaphore(); - // take i2c bus sempahore + // take i2c bus semaphore WITH_SEMAPHORE(sem); if (BMP085_EOC >= 0) { @@ -177,7 +177,7 @@ bool AP_Baro_BMP085::_read_prom(uint16_t *prom) } /* - This is a state machine. Acumulate a new sensor reading. + This is a state machine. Accumulate a new sensor reading. */ void AP_Baro_BMP085::_timer(void) { diff --git a/libraries/AP_Baro/AP_Baro_BMP280.cpp b/libraries/AP_Baro/AP_Baro_BMP280.cpp index 005000b169260..1c89ac0a4b955 100644 --- a/libraries/AP_Baro/AP_Baro_BMP280.cpp +++ b/libraries/AP_Baro/AP_Baro_BMP280.cpp @@ -127,7 +127,7 @@ bool AP_Baro_BMP280::_init() -// acumulate a new sensor reading +// accumulate a new sensor reading void AP_Baro_BMP280::_timer(void) { uint8_t buf[6]; diff --git a/libraries/AP_Baro/AP_Baro_BMP388.cpp b/libraries/AP_Baro/AP_Baro_BMP388.cpp index 25ea7ab41e97b..6b48d9e783167 100644 --- a/libraries/AP_Baro/AP_Baro_BMP388.cpp +++ b/libraries/AP_Baro/AP_Baro_BMP388.cpp @@ -130,7 +130,7 @@ bool AP_Baro_BMP388::init() -// acumulate a new sensor reading +// accumulate a new sensor reading void AP_Baro_BMP388::timer(void) { uint8_t buf[7]; diff --git a/libraries/AP_Baro/AP_Baro_Backend.cpp b/libraries/AP_Baro/AP_Baro_Backend.cpp index 15c75b65a9228..f315bcd2b9726 100644 --- a/libraries/AP_Baro/AP_Baro_Backend.cpp +++ b/libraries/AP_Baro/AP_Baro_Backend.cpp @@ -67,7 +67,7 @@ void AP_Baro_Backend::_copy_to_frontend(uint8_t instance, float pressure, float static constexpr float FILTER_KOEF = 0.1f; /* Check that the baro value is valid by using a mean filter. If the - * value is further than filtrer_range from mean value, it is + * value is further than filter_range from mean value, it is * rejected. */ bool AP_Baro_Backend::pressure_ok(float press) diff --git a/libraries/AP_Baro/AP_Baro_Backend.h b/libraries/AP_Baro/AP_Baro_Backend.h index 476473bf5ddef..94b155e4836bd 100644 --- a/libraries/AP_Baro/AP_Baro_Backend.h +++ b/libraries/AP_Baro/AP_Baro_Backend.h @@ -20,7 +20,7 @@ class AP_Baro_Backend void backend_update(uint8_t instance); // Check that the baro valid by using a mean filter. - // If the value further that filtrer_range from mean value, it is rejected. + // If the value further that filter_range from mean value, it is rejected. bool pressure_ok(float press); uint32_t get_error_count() const { return _error_count; } diff --git a/libraries/AP_Baro/AP_Baro_DPS280.cpp b/libraries/AP_Baro/AP_Baro_DPS280.cpp index 8eef71f3a71cb..fe34ca0bd048f 100644 --- a/libraries/AP_Baro/AP_Baro_DPS280.cpp +++ b/libraries/AP_Baro/AP_Baro_DPS280.cpp @@ -246,7 +246,7 @@ void AP_Baro_DPS280::check_health(void) } } -// acumulate a new sensor reading +// accumulate a new sensor reading void AP_Baro_DPS280::timer(void) { uint8_t buf[6]; diff --git a/libraries/AP_Baro/AP_Baro_DroneCAN.cpp b/libraries/AP_Baro/AP_Baro_DroneCAN.cpp index ee1ee9e427ba9..6812480d7a0ef 100644 --- a/libraries/AP_Baro/AP_Baro_DroneCAN.cpp +++ b/libraries/AP_Baro/AP_Baro_DroneCAN.cpp @@ -88,7 +88,7 @@ AP_Baro_DroneCAN* AP_Baro_DroneCAN::get_dronecan_backend(AP_DroneCAN* ap_droneca if (create_new) { bool already_detected = false; - //Check if there's an empty spot for possible registeration + //Check if there's an empty spot for possible registration for (uint8_t i = 0; i < BARO_MAX_DRIVERS; i++) { if (_detected_modules[i].ap_dronecan == ap_dronecan && _detected_modules[i].node_id == node_id) { //Already Detected diff --git a/libraries/AP_Baro/AP_Baro_FBM320.cpp b/libraries/AP_Baro/AP_Baro_FBM320.cpp index 20b8edcd71076..7ad9a7b0c89ae 100644 --- a/libraries/AP_Baro/AP_Baro_FBM320.cpp +++ b/libraries/AP_Baro/AP_Baro_FBM320.cpp @@ -179,7 +179,7 @@ void AP_Baro_FBM320::calculate_PT(int32_t UT, int32_t UP, int32_t &pressure, int pressure = ((X31 + X32) >> 15) + PP4 + 99880; } -// acumulate a new sensor reading +// accumulate a new sensor reading void AP_Baro_FBM320::timer(void) { uint8_t buf[3]; diff --git a/libraries/AP_Baro/AP_Baro_LPS2XH.cpp b/libraries/AP_Baro/AP_Baro_LPS2XH.cpp index 11016e585ab64..6db9acdc3d544 100644 --- a/libraries/AP_Baro/AP_Baro_LPS2XH.cpp +++ b/libraries/AP_Baro/AP_Baro_LPS2XH.cpp @@ -212,7 +212,7 @@ bool AP_Baro_LPS2XH::_check_whoami(void) return false; } -// acumulate a new sensor reading +// accumulate a new sensor reading void AP_Baro_LPS2XH::_timer(void) { uint8_t status; diff --git a/libraries/AP_Baro/AP_Baro_SPL06.cpp b/libraries/AP_Baro/AP_Baro_SPL06.cpp index 0ceb27dd95534..baca15dee2d20 100644 --- a/libraries/AP_Baro/AP_Baro_SPL06.cpp +++ b/libraries/AP_Baro/AP_Baro_SPL06.cpp @@ -179,7 +179,7 @@ int32_t AP_Baro_SPL06::raw_value_scale_factor(uint8_t oversampling) } } -// acumulate a new sensor reading +// accumulate a new sensor reading void AP_Baro_SPL06::_timer(void) { uint8_t buf[3]; diff --git a/libraries/AP_BattMonitor/AP_BattMonitor.cpp b/libraries/AP_BattMonitor/AP_BattMonitor.cpp index b53fb55465869..ca73aab478e86 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor.cpp @@ -810,7 +810,7 @@ void AP_BattMonitor::check_failsafes(void) #endif state[i].failsafe = type; - // map the desired failsafe action to a prioritiy level + // map the desired failsafe action to a priority level int8_t priority = 0; if (_failsafe_priorities != nullptr) { while (_failsafe_priorities[priority] != -1) { diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_Bebop.cpp b/libraries/AP_BattMonitor/AP_BattMonitor_Bebop.cpp index 75bbebcae6230..9907a798afcb0 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_Bebop.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor_Bebop.cpp @@ -103,7 +103,7 @@ float AP_BattMonitor_Bebop::_filter_voltage(float vbat_raw) _prev_vbat = vbat_raw; only_once = 0; } else if (vbat_raw > 0.0f) { - /* 1st order fitler */ + /* 1st order filter */ vbat = b[0] * vbat_raw + b[1] * _prev_vbat_raw - a[1] * _prev_vbat; _prev_vbat_raw = vbat_raw; diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_DroneCAN.cpp b/libraries/AP_BattMonitor/AP_BattMonitor_DroneCAN.cpp index c7514f8fb333e..d4b7aed2a9cab 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_DroneCAN.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor_DroneCAN.cpp @@ -157,7 +157,6 @@ void AP_BattMonitor_DroneCAN::handle_battery_info_aux(const ardupilot_equipment_ _has_cell_voltages = true; _has_time_remaining = true; - _has_consumed_energy = true; _has_battery_info_aux = true; } diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_DroneCAN.h b/libraries/AP_BattMonitor/AP_BattMonitor_DroneCAN.h index 2b70f5d244bfd..6b6151d4778c7 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_DroneCAN.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor_DroneCAN.h @@ -35,7 +35,8 @@ class AP_BattMonitor_DroneCAN : public AP_BattMonitor_Backend bool has_current() const override { return true; } - bool has_consumed_energy() const override { return _has_consumed_energy; } + // Always have consumed energy, either directly from BatteryInfoAux msg or by cumulative current draw + bool has_consumed_energy() const override { return true; } bool has_time_remaining() const override { return _has_time_remaining; } @@ -99,7 +100,6 @@ class AP_BattMonitor_DroneCAN : public AP_BattMonitor_Backend bool _has_temperature; bool _has_cell_voltages; bool _has_time_remaining; - bool _has_consumed_energy; bool _has_battery_info_aux; uint8_t _instance; // instance of this battery monitor diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_Generator.cpp b/libraries/AP_BattMonitor/AP_BattMonitor_Generator.cpp index f9ee6d2bbf64a..eb292ea6dea55 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_Generator.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor_Generator.cpp @@ -32,7 +32,7 @@ bool AP_BattMonitor_Generator_FuelLevel::has_current(void) const return has_consumed_energy(); } -// This is where we tell the battery monitor 'we have consummed energy' if we want to report a fuel level remaining +// This is where we tell the battery monitor 'we have consumed energy' if we want to report a fuel level remaining bool AP_BattMonitor_Generator_FuelLevel::has_consumed_energy(void) const { // Get pointer to generator singleton @@ -149,7 +149,7 @@ AP_BattMonitor::Failsafe AP_BattMonitor_Generator_Elec::update_failsafes() AP_Generator *generator = AP::generator(); - // Only check for failsafes on the electrical moniter + // Only check for failsafes on the electrical monitor // no point in having the same failsafe on two battery monitors if (generator != nullptr) { failsafe = generator->update_failsafes(); diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_Generator.h b/libraries/AP_BattMonitor/AP_BattMonitor_Generator.h index bacd1e399a9dd..db7d17c4b235c 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_Generator.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor_Generator.h @@ -44,7 +44,7 @@ class AP_BattMonitor_Generator_FuelLevel : public AP_BattMonitor_Backend // This is where we tell the battery monitor 'we have current' if we want to report a fuel level remaining bool has_current(void) const override; - // This is where we tell the battery monitor 'we have consummed energy' if we want to report a fuel level remaining + // This is where we tell the battery monitor 'we have consumed energy' if we want to report a fuel level remaining bool has_consumed_energy(void) const override; }; #endif diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_INA2xx.cpp b/libraries/AP_BattMonitor/AP_BattMonitor_INA2xx.cpp index 0a504132aa83a..cab13b302f191 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_INA2xx.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor_INA2xx.cpp @@ -46,6 +46,10 @@ extern const AP_HAL::HAL& hal; #define DEFAULT_BATTMON_INA2XX_MAX_AMPS 90.0 #endif +#ifndef DEFAULT_BATTMON_INA2XX_SHUNT +#define DEFAULT_BATTMON_INA2XX_SHUNT 0.0005 +#endif + #ifndef HAL_BATTMON_INA2XX_BUS #define HAL_BATTMON_INA2XX_BUS 0 #endif @@ -80,8 +84,15 @@ const AP_Param::GroupInfo AP_BattMonitor_INA2XX::var_info[] = { // @Range: 1 400 // @Units: A // @User: Advanced - // @RebootRequired: True AP_GROUPINFO("MAX_AMPS", 27, AP_BattMonitor_INA2XX, max_amps, DEFAULT_BATTMON_INA2XX_MAX_AMPS), + + // @Param: SHUNT + // @DisplayName: Battery monitor shunt resistor + // @Description: This sets the shunt resistor used in the device + // @Range: 0.0001 0.01 + // @Units: Ohm + // @User: Advanced + AP_GROUPINFO("SHUNT", 28, AP_BattMonitor_INA2XX, rShunt, DEFAULT_BATTMON_INA2XX_SHUNT), AP_GROUPEND }; @@ -114,7 +125,6 @@ bool AP_BattMonitor_INA2XX::configure(DevType dtype) case DevType::INA226: { // configure for MAX_AMPS const uint16_t conf = (0x2<<9) | (0x5<<6) | (0x5<<3) | 0x7; // 2ms conv time, 16x sampling - const float rShunt = 0.0005; current_LSB = max_amps / 32768.0; voltage_LSB = 0.00125; // 1.25mV/bit const uint16_t cal = uint16_t(0.00512 / (current_LSB * rShunt)); @@ -130,7 +140,6 @@ bool AP_BattMonitor_INA2XX::configure(DevType dtype) case DevType::INA228: { // configure for MAX_AMPS voltage_LSB = 195.3125e-6; // 195.3125 uV/LSB - const float rShunt = 0.0005; current_LSB = max_amps / (1<<19); const uint16_t shunt_cal = uint16_t(13107.2e6 * current_LSB * rShunt) & 0x7FFF; if (write_word(REG_228_CONFIG, REG_228_CONFIG_RESET) && // reset @@ -145,7 +154,6 @@ bool AP_BattMonitor_INA2XX::configure(DevType dtype) case DevType::INA238: { // configure for MAX_AMPS voltage_LSB = 3.125e-3; // 3.125mV/LSB - const float rShunt = 0.0005; current_LSB = max_amps / (1<<15); const uint16_t shunt_cal = uint16_t(819.2e6 * current_LSB * rShunt) & 0x7FFF; if (write_word(REG_238_CONFIG, REG_238_CONFIG_RESET) && // reset diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_INA2xx.h b/libraries/AP_BattMonitor/AP_BattMonitor_INA2xx.h index 3175388b40be9..d49e7c82746da 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_INA2xx.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor_INA2xx.h @@ -52,6 +52,7 @@ class AP_BattMonitor_INA2XX : public AP_BattMonitor_Backend AP_Int8 i2c_bus; AP_Int8 i2c_address; AP_Float max_amps; + AP_Float rShunt; uint32_t failed_reads; struct { diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Generic.cpp b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Generic.cpp index 9fc708a9740ed..2cd58b765b0e2 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Generic.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Generic.cpp @@ -88,7 +88,7 @@ void AP_BattMonitor_SMBus_Generic::timer() } } - // we loop over something limted by + // we loop over something limited by // BATTMONITOR_SMBUS_NUM_CELLS_MAX but assign into something // limited by AP_BATT_MONITOR_CELLS_MAX - so make sure we won't // over-write: diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.cpp b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.cpp index 591c8fe521f39..4b4af9c5937ad 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.cpp +++ b/libraries/AP_BattMonitor/AP_BattMonitor_SMBus_Solo.cpp @@ -57,7 +57,7 @@ void AP_BattMonitor_SMBus_Solo::timer() // accumulate the pack voltage out of the total of the cells // because the Solo's I2C bus is so noisy, it's worth not spending the - // time and bus bandwidth to request the pack voltage as a seperate + // time and bus bandwidth to request the pack voltage as a separate // transaction _state.voltage = pack_voltage_mv * 1e-3f; _state.last_time_micros = tnow; @@ -79,7 +79,7 @@ void AP_BattMonitor_SMBus_Solo::timer() _state.voltage = pack_voltage_mv * 1e-3f; _state.last_time_micros = tnow; _state.healthy = true; - // stop reqesting 4-cell packets. + // stop requesting 4-cell packets. _use_extended = true; } diff --git a/libraries/AP_BattMonitor/AP_BattMonitor_Synthetic_Current.h b/libraries/AP_BattMonitor/AP_BattMonitor_Synthetic_Current.h index 212ae607bea59..0a49d0b40538c 100644 --- a/libraries/AP_BattMonitor/AP_BattMonitor_Synthetic_Current.h +++ b/libraries/AP_BattMonitor/AP_BattMonitor_Synthetic_Current.h @@ -26,6 +26,6 @@ class AP_BattMonitor_Synthetic_Current : public AP_BattMonitor_Analog protected: - AP_Float _max_voltage; /// maximum battery voltage used in current caluculation + AP_Float _max_voltage; /// maximum battery voltage used in current calculation }; #endif diff --git a/libraries/AP_Beacon/AP_Beacon_Nooploop.h b/libraries/AP_Beacon/AP_Beacon_Nooploop.h index e903eb47fb7ba..222c7731492ca 100644 --- a/libraries/AP_Beacon/AP_Beacon_Nooploop.h +++ b/libraries/AP_Beacon/AP_Beacon_Nooploop.h @@ -33,7 +33,7 @@ class AP_Beacon_Nooploop : public AP_Beacon_Backend // send setting_frame0 to tag. tag will ack setting_frame0 with anchor position filled void request_setting(); - // pase node_frame2 to get tag position and distance + // parse node_frame2 to get tag position and distance void parse_node_frame2(); // parse setting_frame0 to get anchor position diff --git a/libraries/AP_Beacon/examples/AP_Marvelmind_test/AP_Marvelmind_test.cpp b/libraries/AP_Beacon/examples/AP_Marvelmind_test/AP_Marvelmind_test.cpp index a3dae7a7f163a..550899fbcc08d 100644 --- a/libraries/AP_Beacon/examples/AP_Marvelmind_test/AP_Marvelmind_test.cpp +++ b/libraries/AP_Beacon/examples/AP_Marvelmind_test/AP_Marvelmind_test.cpp @@ -16,7 +16,9 @@ void set_object_value_and_report(const void *object_pointer, const AP_HAL::HAL& hal = AP_HAL::get_HAL(); static AP_SerialManager serial_manager; +#if AP_BEACON_ENABLED AP_Beacon beacon; +#endif // try to set the object value but provide diagnostic if it failed void set_object_value_and_report(const void *object_pointer, @@ -31,14 +33,19 @@ void set_object_value_and_report(const void *object_pointer, void setup(void) { +#if AP_BEACON_ENABLED set_object_value_and_report(&beacon, beacon.var_info, "_TYPE", 2.0f); set_object_value_and_report(&serial_manager, serial_manager.var_info, "0_PROTOCOL", 13.0f); +#endif serial_manager.init(); +#if AP_BEACON_ENABLED beacon.init(); +#endif } void loop(void) { +#if AP_BEACON_ENABLED static int count = 0; beacon.update(); Vector3f pos; @@ -51,6 +58,10 @@ void loop(void) hal.scheduler->delay(1000); if (count == 3) exit(0); +#else + printf("Beacon not available\n"); + hal.scheduler->delay(1000); +#endif } AP_HAL_MAIN(); diff --git a/libraries/AP_BoardConfig/AP_BoardConfig.cpp b/libraries/AP_BoardConfig/AP_BoardConfig.cpp index 829cbf4123e7b..cbd3292236c23 100644 --- a/libraries/AP_BoardConfig/AP_BoardConfig.cpp +++ b/libraries/AP_BoardConfig/AP_BoardConfig.cpp @@ -238,9 +238,11 @@ const AP_Param::GroupInfo AP_BoardConfig::var_info[] = { // @User: Standard AP_GROUPINFO("SAFETYOPTION", 13, AP_BoardConfig, state.safety_option, BOARD_SAFETY_OPTION_DEFAULT), +#if AP_RTC_ENABLED // @Group: RTC // @Path: ../AP_RTC/AP_RTC.cpp AP_SUBGROUPINFO(rtc, "RTC", 14, AP_BoardConfig, AP_RTC), +#endif #if HAL_HAVE_BOARD_VOLTAGE // @Param: VBUS_MIN @@ -278,7 +280,7 @@ const AP_Param::GroupInfo AP_BoardConfig::var_info[] = { #ifdef HAL_GPIO_PWM_VOLT_PIN // @Param: PWM_VOLT_SEL // @DisplayName: Set PWM Out Voltage - // @Description: This sets the voltage max for PWM output pulses. 0 for 3.3V and 1 for 5V output. On boards with an IOMCU that support this parameter this option only affects the 8 main outputs, not the 6 auxilliary outputs. Using 5V output can help to reduce the impact of ESC noise interference corrupting signals to the ESCs. + // @Description: This sets the voltage max for PWM output pulses. 0 for 3.3V and 1 for 5V output. On boards with an IOMCU that support this parameter this option only affects the 8 main outputs, not the 6 auxiliary outputs. Using 5V output can help to reduce the impact of ESC noise interference corrupting signals to the ESCs. // @Values: 0:3.3V,1:5V // @User: Advanced AP_GROUPINFO("PWM_VOLT_SEL", 18, AP_BoardConfig, _pwm_volt_sel, 0), @@ -378,7 +380,9 @@ void AP_BoardConfig::init() board_setup(); +#if AP_RTC_ENABLED AP::rtc().set_utc_usec(hal.util->get_hw_rtc(), AP_RTC::SOURCE_HW); +#endif if (_boot_delay_ms > 0) { uint16_t delay_ms = uint16_t(_boot_delay_ms.get()); diff --git a/libraries/AP_BoardConfig/AP_BoardConfig.h b/libraries/AP_BoardConfig/AP_BoardConfig.h index c6112dfc28986..d0a89c490df4c 100644 --- a/libraries/AP_BoardConfig/AP_BoardConfig.h +++ b/libraries/AP_BoardConfig/AP_BoardConfig.h @@ -278,9 +278,11 @@ class AP_BoardConfig { // direct attached radio AP_Radio _radio; #endif - + +#if AP_RTC_ENABLED // real-time-clock; private because access is via the singleton AP_RTC rtc; +#endif #if HAL_HAVE_BOARD_VOLTAGE AP_Float _vbus_min; diff --git a/libraries/AP_CANManager/AP_CANManager.cpp b/libraries/AP_CANManager/AP_CANManager.cpp index 596ba0ae3c7c7..78be64a97c66c 100644 --- a/libraries/AP_CANManager/AP_CANManager.cpp +++ b/libraries/AP_CANManager/AP_CANManager.cpp @@ -442,7 +442,7 @@ void AP_CANManager::handle_can_frame(const mavlink_message_t &msg) buffer_size /= 2; } if (frame_buffer == nullptr) { - // disard the frames + // discard the frames return; } } diff --git a/libraries/AP_CANManager/AP_CANSensor.cpp b/libraries/AP_CANManager/AP_CANSensor.cpp index 91d0fcb724b61..881eb39ce93c8 100644 --- a/libraries/AP_CANManager/AP_CANSensor.cpp +++ b/libraries/AP_CANManager/AP_CANSensor.cpp @@ -13,7 +13,7 @@ along with this program. If not, see . */ /* - generic CAN sensor class, for easy creation of CAN sensors using prioprietary protocols + generic CAN sensor class, for easy creation of CAN sensors using proprietary protocols */ #include diff --git a/libraries/AP_CANManager/AP_SLCANIface.cpp b/libraries/AP_CANManager/AP_SLCANIface.cpp index f501e46b397de..dcd04dcff12f1 100644 --- a/libraries/AP_CANManager/AP_SLCANIface.cpp +++ b/libraries/AP_CANManager/AP_SLCANIface.cpp @@ -715,7 +715,7 @@ int16_t SLCAN::CANIface::receive(AP_HAL::CANFrame& out_frame, uint64_t& rx_time, } } - // We found nothing in HAL's CANIface recieve, so look in SLCANIface + // We found nothing in HAL's CANIface receive, so look in SLCANIface if (_port == nullptr) { return 0; } diff --git a/libraries/AP_Camera/AP_Camera_SoloGimbal.cpp b/libraries/AP_Camera/AP_Camera_SoloGimbal.cpp index 8041a5fb2c9ce..06ecf6ee3ae26 100644 --- a/libraries/AP_Camera/AP_Camera_SoloGimbal.cpp +++ b/libraries/AP_Camera/AP_Camera_SoloGimbal.cpp @@ -6,7 +6,7 @@ // Toggle the shutter on the GoPro // This is so ArduPilot can toggle the shutter directly, either for mission/GCS commands, or when the -// Solo's gimbal is installed on a vehicle other than a Solo. The usual GoPro controls thorugh the +// Solo's gimbal is installed on a vehicle other than a Solo. The usual GoPro controls through the // Solo app and Solo controller do not use this, as it is done offboard on the companion computer. // entry point to actually take a picture. returns true on success bool AP_Camera_SoloGimbal::trigger_pic() diff --git a/libraries/AP_Camera/AP_RunCam.cpp b/libraries/AP_Camera/AP_RunCam.cpp index 4c9124b6427fc..86e7dee57c6af 100644 --- a/libraries/AP_Camera/AP_RunCam.cpp +++ b/libraries/AP_Camera/AP_RunCam.cpp @@ -34,7 +34,7 @@ const AP_Param::GroupInfo AP_RunCam::var_info[] = { // @Param: TYPE // @DisplayName: RunCam device type - // @Description: RunCam deviee type used to determine OSD menu structure and shutter options. + // @Description: RunCam device type used to determine OSD menu structure and shutter options. // @Values: 0:Disabled, 1:RunCam Split Micro/RunCam with UART, 2:RunCam Split, 3:RunCam Split4 4k, 4:RunCam Hybrid/RunCam Thumb Pro, 5:Runcam 2 4k AP_GROUPINFO_FLAGS("TYPE", 1, AP_RunCam, _cam_type, int(DeviceType::Disabled), AP_PARAM_FLAG_ENABLE), @@ -264,7 +264,7 @@ void AP_RunCam::update_osd() { bool use_armed_state_machine = hal.util->get_soft_armed(); #if OSD_ENABLED - // prevent runcam stick gestures interferring with osd stick gestures + // prevent runcam stick gestures interfering with osd stick gestures if (!use_armed_state_machine) { const AP_OSD* osd = AP::osd(); if (osd != nullptr) { @@ -580,7 +580,7 @@ void AP_RunCam::handle_2_key_simulation_process(Event ev) case Event::IN_MENU_EXIT: // if we are in a sub-menu this will move us out, if we are in the root menu this will - // exit causing the state machine to get out of sync. the OSD menu hierachy is consistently + // exit causing the state machine to get out of sync. the OSD menu hierarchy is consistently // 2 deep so we can count and be reasonably confident of where we are. // the only exception is if someone hits save and exit on the root menu - then we are lost. if (_in_menu > 0) { diff --git a/libraries/AP_Common/Location.cpp b/libraries/AP_Common/Location.cpp index e96130943804d..f466e99db2335 100644 --- a/libraries/AP_Common/Location.cpp +++ b/libraries/AP_Common/Location.cpp @@ -33,6 +33,7 @@ Location::Location(int32_t latitude, int32_t longitude, int32_t alt_in_cm, AltFr set_alt_cm(alt_in_cm, frame); } +#if AP_AHRS_ENABLED Location::Location(const Vector3f &ekf_offset_neu, AltFrame frame) { zero(); @@ -48,6 +49,7 @@ Location::Location(const Vector3f &ekf_offset_neu, AltFrame frame) offset(ekf_offset_neu.x * 0.01, ekf_offset_neu.y * 0.01); } } +#endif // AP_AHRS_ENABLED void Location::set_alt_cm(int32_t alt_cm, AltFrame frame) { @@ -141,12 +143,17 @@ bool Location::get_alt_cm(AltFrame desired_frame, int32_t &ret_alt_cm) const alt_abs = alt; break; case AltFrame::ABOVE_HOME: +#if AP_AHRS_ENABLED if (!AP::ahrs().home_is_set()) { return false; } alt_abs = alt + AP::ahrs().get_home().alt; +#else + return false; +#endif // AP_AHRS_ENABLED break; case AltFrame::ABOVE_ORIGIN: +#if AP_AHRS_ENABLED { // fail if we cannot get ekf origin Location ekf_origin; @@ -156,6 +163,9 @@ bool Location::get_alt_cm(AltFrame desired_frame, int32_t &ret_alt_cm) const alt_abs = alt + ekf_origin.alt; } break; +#else + return false; +#endif // AP_AHRS_ENABLED case AltFrame::ABOVE_TERRAIN: alt_abs = alt + alt_terr_cm; break; @@ -167,12 +177,17 @@ bool Location::get_alt_cm(AltFrame desired_frame, int32_t &ret_alt_cm) const ret_alt_cm = alt_abs; return true; case AltFrame::ABOVE_HOME: +#if AP_AHRS_ENABLED if (!AP::ahrs().home_is_set()) { return false; } ret_alt_cm = alt_abs - AP::ahrs().get_home().alt; +#else + return false; +#endif // AP_AHRS_ENABLED return true; case AltFrame::ABOVE_ORIGIN: +#if AP_AHRS_ENABLED { // fail if we cannot get ekf origin Location ekf_origin; @@ -182,6 +197,9 @@ bool Location::get_alt_cm(AltFrame desired_frame, int32_t &ret_alt_cm) const ret_alt_cm = alt_abs - ekf_origin.alt; return true; } +#else + return false; +#endif // AP_AHRS_ENABLED case AltFrame::ABOVE_TERRAIN: ret_alt_cm = alt_abs - alt_terr_cm; return true; @@ -189,6 +207,7 @@ bool Location::get_alt_cm(AltFrame desired_frame, int32_t &ret_alt_cm) const return false; // LCOV_EXCL_LINE - not reachable } +#if AP_AHRS_ENABLED bool Location::get_vector_xy_from_origin_NE(Vector2f &vec_ne) const { Location ekf_origin; @@ -216,6 +235,7 @@ bool Location::get_vector_from_origin_NEU(Vector3f &vec_neu) const return true; } +#endif // AP_AHRS_ENABLED // return horizontal distance in meters between two locations ftype Location::get_distance(const Location &loc2) const @@ -465,7 +485,7 @@ int32_t Location::diff_longitude(int32_t lon1, int32_t lon2) } /* - limit lattitude to -90e7 to 90e7 + limit latitude to -90e7 to 90e7 */ int32_t Location::limit_lattitude(int32_t lat) { diff --git a/libraries/AP_Common/Location.h b/libraries/AP_Common/Location.h index 61ed03b78e47a..134a27e590af3 100644 --- a/libraries/AP_Common/Location.h +++ b/libraries/AP_Common/Location.h @@ -151,7 +151,7 @@ class Location // wrap longitude at -180e7 to 180e7 static int32_t wrap_longitude(int64_t lon); - // limit lattitude to -90e7 to 90e7 + // limit latitude to -90e7 to 90e7 static int32_t limit_lattitude(int32_t lat); // get lon1-lon2, wrapping at -180e7 to 180e7 diff --git a/libraries/AP_Common/tests/test_location.cpp b/libraries/AP_Common/tests/test_location.cpp index f4bef012efc96..d545c2c754df1 100644 --- a/libraries/AP_Common/tests/test_location.cpp +++ b/libraries/AP_Common/tests/test_location.cpp @@ -371,7 +371,7 @@ TEST(Location, Line) } /* - check if we obey basic euclidian geometry rules of position + check if we obey basic euclidean geometry rules of position addition/subtraction */ TEST(Location, OffsetError) diff --git a/libraries/AP_Common/tests/test_nmea_print.cpp b/libraries/AP_Common/tests/test_nmea_print.cpp index 139e55d6e8c28..36e62134ef240 100644 --- a/libraries/AP_Common/tests/test_nmea_print.cpp +++ b/libraries/AP_Common/tests/test_nmea_print.cpp @@ -30,7 +30,7 @@ static DummyUart test_uart; TEST(NMEA, Printf) { - // test not enought space + // test not enough space test_uart.set_txspace(2); EXPECT_FALSE(nmea_printf(&test_uart, "TEST")); // normal test diff --git a/libraries/AP_Compass/AP_Compass_Backend.cpp b/libraries/AP_Compass/AP_Compass_Backend.cpp index bbca45ddb3a9e..c0a7bf973eeaa 100644 --- a/libraries/AP_Compass/AP_Compass_Backend.cpp +++ b/libraries/AP_Compass/AP_Compass_Backend.cpp @@ -89,7 +89,7 @@ void AP_Compass_Backend::correct_field(Vector3f &mag, uint8_t i) } #if AP_COMPASS_DIAGONALS_ENABLED - // apply eliptical correction + // apply elliptical correction if (!diagonals.is_zero()) { Matrix3f mat( diagonals.x, offdiagonals.x, offdiagonals.y, @@ -123,7 +123,7 @@ void AP_Compass_Backend::correct_field(Vector3f &mag, uint8_t i) } /* - we apply the motor offsets after we apply the eliptical + we apply the motor offsets after we apply the elliptical correction. This is needed to match the way that the motor compensation values are calculated, as they are calculated based on final field outputs, not on the raw outputs @@ -251,7 +251,7 @@ void AP_Compass_Backend::set_rotation(uint8_t instance, enum Rotation rotation) static constexpr float FILTER_KOEF = 0.1f; /* Check that the compass value is valid by using a mean filter. If - * the value is further than filtrer_range from mean value, it is + * the value is further than filter_range from mean value, it is * rejected. */ bool AP_Compass_Backend::field_ok(const Vector3f &field) diff --git a/libraries/AP_Compass/AP_Compass_Backend.h b/libraries/AP_Compass/AP_Compass_Backend.h index 0faae415006f3..779d63f385ec1 100644 --- a/libraries/AP_Compass/AP_Compass_Backend.h +++ b/libraries/AP_Compass/AP_Compass_Backend.h @@ -92,7 +92,7 @@ class AP_Compass_Backend * 2. publish_raw_field - this provides an uncorrected point-sample for * calibration libraries * 3. correct_field - this corrects the measurement in-place for hard iron, - * soft iron, motor interference, and non-orthagonality errors + * soft iron, motor interference, and non-orthogonality errors * 4. publish_filtered_field - legacy filtered magnetic field * * All those functions expect the mag field to be in milligauss. diff --git a/libraries/AP_Compass/AP_Compass_Calibration.cpp b/libraries/AP_Compass/AP_Compass_Calibration.cpp index 8d70f24c6603b..ed8f338e549be 100644 --- a/libraries/AP_Compass/AP_Compass_Calibration.cpp +++ b/libraries/AP_Compass/AP_Compass_Calibration.cpp @@ -464,8 +464,8 @@ bool Compass::get_uncorrected_field(uint8_t instance, Vector3f &field) const field = get_field(instance); #if AP_COMPASS_DIAGONALS_ENABLED - // form eliptical correction matrix and invert it. This is - // needed to remove the effects of the eliptical correction + // form elliptical correction matrix and invert it. This is + // needed to remove the effects of the elliptical correction // when calculating new offsets const Vector3f &diagonals = get_diagonals(instance); if (!diagonals.is_zero()) { diff --git a/libraries/AP_Compass/AP_Compass_DroneCAN.cpp b/libraries/AP_Compass/AP_Compass_DroneCAN.cpp index 30ad57065141f..8563dd480bf9b 100644 --- a/libraries/AP_Compass/AP_Compass_DroneCAN.cpp +++ b/libraries/AP_Compass/AP_Compass_DroneCAN.cpp @@ -93,7 +93,7 @@ AP_Compass_Backend* AP_Compass_DroneCAN::probe(uint8_t index) bool AP_Compass_DroneCAN::init() { - // Adding 1 is necessary to allow backward compatibilty, where this field was set as 1 by default + // Adding 1 is necessary to allow backward compatibility, where this field was set as 1 by default if (!register_compass(_devid, _instance)) { return false; } @@ -120,7 +120,7 @@ AP_Compass_DroneCAN* AP_Compass_DroneCAN::get_dronecan_backend(AP_DroneCAN* ap_d } bool already_detected = false; - // Check if there's an empty spot for possible registeration + // Check if there's an empty spot for possible registration for (uint8_t i = 0; i < COMPASS_MAX_BACKEND; i++) { if (_detected_modules[i].ap_dronecan == ap_dronecan && _detected_modules[i].node_id == node_id && diff --git a/libraries/AP_Compass/AP_Compass_HMC5843.cpp b/libraries/AP_Compass/AP_Compass_HMC5843.cpp index eb304ac9b6a5d..a9c3d4b10c1e6 100644 --- a/libraries/AP_Compass/AP_Compass_HMC5843.cpp +++ b/libraries/AP_Compass/AP_Compass_HMC5843.cpp @@ -38,7 +38,7 @@ extern const AP_HAL::HAL& hal; /* - * Defaul address: 0x1E + * Default address: 0x1E */ #define HMC5843_REG_CONFIG_A 0x00 diff --git a/libraries/AP_Compass/AP_Compass_MMC5xx3.cpp b/libraries/AP_Compass/AP_Compass_MMC5xx3.cpp index 92cf47d442108..d671f3deb5b79 100644 --- a/libraries/AP_Compass/AP_Compass_MMC5xx3.cpp +++ b/libraries/AP_Compass/AP_Compass_MMC5xx3.cpp @@ -70,7 +70,7 @@ AP_Compass_MMC5XX3::AP_Compass_MMC5XX3(AP_HAL::OwnPtr _dev, bool AP_Compass_MMC5XX3::init() { - // take i2c bus sempahore + // take i2c bus semaphore WITH_SEMAPHORE(dev->get_semaphore()); dev->set_retries(10); diff --git a/libraries/AP_Compass/AP_Compass_SITL.cpp b/libraries/AP_Compass/AP_Compass_SITL.cpp index fc0f745287b79..2468721493108 100644 --- a/libraries/AP_Compass/AP_Compass_SITL.cpp +++ b/libraries/AP_Compass/AP_Compass_SITL.cpp @@ -51,7 +51,7 @@ AP_Compass_SITL::AP_Compass_SITL() /* - create correction matrix for diagnonals and off-diagonals + create correction matrix for diagonals and off-diagonals */ void AP_Compass_SITL::_setup_eliptical_correcion(uint8_t i) { diff --git a/libraries/AP_Compass/CompassCalibrator.h b/libraries/AP_Compass/CompassCalibrator.h index 90a3c4e7657ab..3b58159f346ac 100644 --- a/libraries/AP_Compass/CompassCalibrator.h +++ b/libraries/AP_Compass/CompassCalibrator.h @@ -241,7 +241,7 @@ class CompassCalibrator { bool _is_external; // true if compass is external (provided by caller) bool _check_orientation; // true if orientation should be automatically checked bool _fix_orientation; // true if orientation should be fixed if necessary - bool _always_45_deg; // true if orentation should considder 45deg with equal tolerance + bool _always_45_deg; // true if orientation should consider 45deg with equal tolerance float _orientation_confidence; // measure of confidence in automatic orientation detection CompassSample _last_sample; diff --git a/libraries/AP_DAL/AP_DAL.cpp b/libraries/AP_DAL/AP_DAL.cpp index 8942a6e46d170..0e4f309fad0b8 100644 --- a/libraries/AP_DAL/AP_DAL.cpp +++ b/libraries/AP_DAL/AP_DAL.cpp @@ -377,7 +377,7 @@ void AP_DAL::writeExtNavVelData(const Vector3f &vel, float err, uint32_t timeSta } -// log wheel odomotry data +// log wheel odometry data void AP_DAL::writeWheelOdom(float delAng, float delTime, uint32_t timeStamp_ms, const Vector3f &posOffset, float radius) { end_frame(); @@ -478,22 +478,22 @@ void AP_DAL::handle_message(const log_REVH &msg, NavEKF2 &ekf2, NavEKF3 &ekf3) } /* - handle wheel odomotry data + handle wheel odometry data */ void AP_DAL::handle_message(const log_RWOH &msg, NavEKF2 &ekf2, NavEKF3 &ekf3) { _RWOH = msg; - // note that EKF2 does not support wheel odomotry + // note that EKF2 does not support wheel odometry ekf3.writeWheelOdom(msg.delAng, msg.delTime, msg.timeStamp_ms, msg.posOffset, msg.radius); } /* - handle body frame odomotry + handle body frame odometry */ void AP_DAL::handle_message(const log_RBOH &msg, NavEKF2 &ekf2, NavEKF3 &ekf3) { _RBOH = msg; - // note that EKF2 does not support body frame odomotry + // note that EKF2 does not support body frame odometry ekf3.writeBodyFrameOdom(msg.quality, msg.delPos, msg.delAng, msg.delTime, msg.timeStamp_ms, msg.delay_ms, msg.posOffset); } @@ -503,7 +503,7 @@ void AP_DAL::handle_message(const log_RBOH &msg, NavEKF2 &ekf2, NavEKF3 &ekf3) void AP_DAL::handle_message(const log_RSLL &msg, NavEKF2 &ekf2, NavEKF3 &ekf3) { _RSLL = msg; - // note that EKF2 does not support body frame odomotry + // note that EKF2 does not support body frame odometry const Location loc {msg.lat, msg.lng, 0, Location::AltFrame::ABSOLUTE }; ekf3.setLatLng(loc, msg.posAccSD, msg.timestamp_ms); } diff --git a/libraries/AP_DAL/AP_DAL.h b/libraries/AP_DAL/AP_DAL.h index ddf643bcf6e33..671499b547baa 100644 --- a/libraries/AP_DAL/AP_DAL.h +++ b/libraries/AP_DAL/AP_DAL.h @@ -215,7 +215,7 @@ class AP_DAL { void writeExtNavData(const Vector3f &pos, const Quaternion &quat, float posErr, float angErr, uint32_t timeStamp_ms, uint16_t delay_ms, uint32_t resetTime_ms); void writeExtNavVelData(const Vector3f &vel, float err, uint32_t timeStamp_ms, uint16_t delay_ms); - // log wheel odomotry data + // log wheel odometry data void writeWheelOdom(float delAng, float delTime, uint32_t timeStamp_ms, const Vector3f &posOffset, float radius); void writeBodyFrameOdom(float quality, const Vector3f &delPos, const Vector3f &delAng, float delTime, uint32_t timeStamp_ms, uint16_t delay_ms, const Vector3f &posOffset); diff --git a/libraries/AP_DDS/AP_DDS_Client.cpp b/libraries/AP_DDS/AP_DDS_Client.cpp index d5315e829705e..4f962574f7a0e 100644 --- a/libraries/AP_DDS/AP_DDS_Client.cpp +++ b/libraries/AP_DDS/AP_DDS_Client.cpp @@ -300,7 +300,7 @@ void AP_DDS_Client::update_topic(geometry_msgs_msg_PoseStamped& msg) // Z - Up // https://www.ros.org/reps/rep-0103.html#axis-orientation // As a consequence, to follow ROS REP 103, it is necessary to switch X and Y, - // as well as invert Z (NED to ENU convertion) as well as a 90 degree rotation in the Z axis + // as well as invert Z (NED to ENU conversion) as well as a 90 degree rotation in the Z axis // for x to point forward Quaternion orientation; if (ahrs.get_quaternion(orientation)) { @@ -377,7 +377,7 @@ void AP_DDS_Client::update_topic(geographic_msgs_msg_GeoPoseStamped& msg) // Z - Up // https://www.ros.org/reps/rep-0103.html#axis-orientation // As a consequence, to follow ROS REP 103, it is necessary to switch X and Y, - // as well as invert Z (NED to ENU convertion) as well as a 90 degree rotation in the Z axis + // as well as invert Z (NED to ENU conversion) as well as a 90 degree rotation in the Z axis // for x to point forward Quaternion orientation; if (ahrs.get_quaternion(orientation)) { diff --git a/libraries/AP_DDS/AP_DDS_External_Odom.cpp b/libraries/AP_DDS/AP_DDS_External_Odom.cpp index cf121f408521a..8d8563e5e866c 100644 --- a/libraries/AP_DDS/AP_DDS_External_Odom.cpp +++ b/libraries/AP_DDS/AP_DDS_External_Odom.cpp @@ -27,7 +27,7 @@ void AP_DDS_External_Odom::handle_external_odom(const tf2_msgs_msg_TFMessage& ms convert_transform(ros_transform_stamped.transform, ap_position, ap_rotation); // Although ROS convention states quaternions in ROS messages should be normalized, it's not guaranteed. - // Before propogating a potentially inaccurate quaternion to the rest of AP, normalize it here. + // Before propagating a potentially inaccurate quaternion to the rest of AP, normalize it here. // TODO what if the quaternion is NaN? ap_rotation.normalize(); @@ -38,7 +38,7 @@ void AP_DDS_External_Odom::handle_external_odom(const tf2_msgs_msg_TFMessage& ms // https://www.ros.org/reps/rep-0105.html#id16 // Thus, there will not be any resets. const uint8_t reset_counter {0}; - // TODO imlement jitter correction similar to GCS_MAVLINK::correct_offboard_timestamp_usec_to_ms(remote_time_us, sizeof(msg)); + // TODO implement jitter correction similar to GCS_MAVLINK::correct_offboard_timestamp_usec_to_ms(remote_time_us, sizeof(msg)); const uint32_t time_ms {static_cast(remote_time_us * 1E-3)}; visual_odom->handle_pose_estimate(remote_time_us, time_ms, ap_position.x, ap_position.y, ap_position.z, ap_rotation, posErr, angErr, reset_counter); diff --git a/libraries/AP_DDS/README.md b/libraries/AP_DDS/README.md index f4bad30b96633..3e89398599276 100644 --- a/libraries/AP_DDS/README.md +++ b/libraries/AP_DDS/README.md @@ -84,7 +84,7 @@ While DDS support in Ardupilot is mostly through git submodules, another tool ne ``` > :warning: **If you have installed FastDDS or FastDDSGen globally on your system**: -eProsima's libraries and the packaging system in Ardupilot are not determistic in this scenario. +eProsima's libraries and the packaging system in Ardupilot are not deterministic in this scenario. You may experience the wrong version of a library brought in, or runtime segfaults. For now, avoid having simultaneous local and global installs. If you followed the [global install](https://fast-dds.docs.eprosima.com/en/latest/installation/sources/sources_linux.html#global-installation) @@ -139,7 +139,7 @@ Follow the steps to use the microROS Agent sudo apt install ros-humble-geographic-msgs ``` -- Install and run the microROS agent (as descibed here). Make sure to use the `humble` branch. +- Install and run the microROS agent (as described here). Make sure to use the `humble` branch. - Follow [the instructions](https://micro.ros.org/docs/tutorials/core/first_application_linux/) for the following: - Do "Installing ROS 2 and the micro-ROS build system" @@ -200,7 +200,7 @@ You should be able to see the agent here and view the data output. ```bash $ ros2 node list -/Ardupilot_DDS_XRCE_Client +/ardupilot_dds ``` ```bash @@ -321,7 +321,7 @@ provided a few rules are followed when defining the entries in #### ROS 2 message and service interface types -ROS 2 message and interface defintions are mangled by the `rosidl_adapter` when +ROS 2 message and interface definitions are mangled by the `rosidl_adapter` when mapping from ROS 2 to DDS to avoid naming conflicts in the C/C++ libraries. The ROS 2 object `namespace::Struct` is mangled to `namespace::dds_::Struct_` for DDS. The table below provides some example mappings: diff --git a/libraries/AP_DDS/dds_xrce_profile.xml b/libraries/AP_DDS/dds_xrce_profile.xml index 225c8f9610f40..c97e6d9d11af0 100644 --- a/libraries/AP_DDS/dds_xrce_profile.xml +++ b/libraries/AP_DDS/dds_xrce_profile.xml @@ -2,7 +2,7 @@ - Ardupilot_DDS_XRCE_Client + ardupilot_dds diff --git a/libraries/AP_DroneCAN/AP_DroneCAN.cpp b/libraries/AP_DroneCAN/AP_DroneCAN.cpp index 05a175e8cfc72..c980c413cc03e 100644 --- a/libraries/AP_DroneCAN/AP_DroneCAN.cpp +++ b/libraries/AP_DroneCAN/AP_DroneCAN.cpp @@ -130,7 +130,7 @@ const AP_Param::GroupInfo AP_DroneCAN::var_info[] = { // @Param: ESC_OF // @DisplayName: ESC Output channels offset - // @Description: Offset for ESC numbering in DroneCAN ESC RawCommand messages. This allows for more efficient packing of ESC command messages. If your ESCs are on servo functions 5 to 8 and you set this parameter to 4 then the ESC RawCommand will be sent with the first 4 slots filled. This can be used for more efficint usage of CAN bandwidth + // @Description: Offset for ESC numbering in DroneCAN ESC RawCommand messages. This allows for more efficient packing of ESC command messages. If your ESCs are on servo functions 5 to 8 and you set this parameter to 4 then the ESC RawCommand will be sent with the first 4 slots filled. This can be used for more efficient usage of CAN bandwidth // @Range: 0 18 // @User: Advanced AP_GROUPINFO("ESC_OF", 7, AP_DroneCAN, _esc_offset, 0), @@ -391,7 +391,7 @@ void AP_DroneCAN::loop(void) send_node_status(); _dna_server.verify_nodes(); -#if AP_DRONECAN_SEND_GPS +#if AP_DRONECAN_SEND_GPS && AP_GPS_DRONECAN_ENABLED if (option_is_set(AP_DroneCAN::Options::SEND_GNSS) && !AP_GPS_DroneCAN::instance_exists(this)) { // send if enabled and this interface/driver is not used by the AP_GPS driver gnss_send_fix(); diff --git a/libraries/AP_EFI/AP_EFI_Serial_MS.cpp b/libraries/AP_EFI/AP_EFI_Serial_MS.cpp index 29a6000377c83..4c87783b1d0e7 100644 --- a/libraries/AP_EFI/AP_EFI_Serial_MS.cpp +++ b/libraries/AP_EFI/AP_EFI_Serial_MS.cpp @@ -43,12 +43,15 @@ void AP_EFI_Serial_MS::update() const uint32_t expected_bytes = 2 + (RT_LAST_OFFSET - RT_FIRST_OFFSET) + 4; if (port->available() >= expected_bytes && read_incoming_realtime_data()) { - last_response_ms = now; copy_to_frontend(); } - if (now - last_response_ms > 100) { + const uint32_t last_request_delta = (now - last_request_ms); + const uint32_t available = port->available(); + if (((last_request_delta > 150) && (available > 0)) || // nothing in our input buffer 150 ms after request + ((last_request_delta > 90) && (available == 0))) { // we requested something over 90 ms ago, but didn't get any data port->discard_input(); + last_request_ms = now; // Request an update from the realtime table (7). // The data we need start at offset 6 and ends at 129 send_request(7, RT_FIRST_OFFSET, RT_LAST_OFFSET); @@ -59,7 +62,7 @@ bool AP_EFI_Serial_MS::read_incoming_realtime_data() { // Data is parsed directly from the buffer, otherwise we would need to allocate // several hundred bytes for the entire realtime data table or request every - // value individiually + // value individually uint16_t message_length = 0; // reset checksum before reading new data diff --git a/libraries/AP_EFI/AP_EFI_Serial_MS.h b/libraries/AP_EFI/AP_EFI_Serial_MS.h index 533d2dab93df3..89dd018bf0cf9 100644 --- a/libraries/AP_EFI/AP_EFI_Serial_MS.h +++ b/libraries/AP_EFI/AP_EFI_Serial_MS.h @@ -46,7 +46,7 @@ class AP_EFI_Serial_MS: public AP_EFI_Backend { uint8_t step; uint8_t response_flag; uint16_t message_counter; - uint32_t last_response_ms; + uint32_t last_request_ms; // confirmed that last command was ok bool last_command_confirmed; diff --git a/libraries/AP_ESC_Telem/AP_ESC_Telem.h b/libraries/AP_ESC_Telem/AP_ESC_Telem.h index a639e2607e163..503ef43299dfc 100644 --- a/libraries/AP_ESC_Telem/AP_ESC_Telem.h +++ b/libraries/AP_ESC_Telem/AP_ESC_Telem.h @@ -87,7 +87,7 @@ class AP_ESC_Telem { // send telemetry data to mavlink void send_esc_telemetry_mavlink(uint8_t mav_chan); - // udpate at 10Hz to log telemetry + // update at 10Hz to log telemetry void update(); // is rpm telemetry configured for the provided channel mask diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS.cpp b/libraries/AP_ExternalAHRS/AP_ExternalAHRS.cpp index 02a376bbcc3e3..c1769fe2a00a8 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS.cpp +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS.cpp @@ -13,7 +13,7 @@ along with this program. If not, see . */ /* - suppport for serial connected AHRS systems + support for serial connected AHRS systems */ #include "AP_ExternalAHRS_config.h" diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS.h b/libraries/AP_ExternalAHRS/AP_ExternalAHRS.h index 9541db567220e..89e2331cb8618 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS.h +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS.h @@ -13,7 +13,7 @@ along with this program. If not, see . */ /* - suppport for serial connected AHRS systems + support for serial connected AHRS systems */ #pragma once diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.cpp b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.cpp index f10c3b2617d96..abdc63250ec58 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.cpp +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.cpp @@ -11,7 +11,7 @@ along with this program. If not, see . */ /* - suppport for MicroStrain CX5/GX5-45 serially connected AHRS Systems + support for MicroStrain CX5/GX5-45 serially connected AHRS Systems */ #define ALLOW_DOUBLE_MATH_FUNCTIONS diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.h b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.h index 0b0575a608072..e6b2b9e6bdcb1 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.h +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.h @@ -11,7 +11,7 @@ along with this program. If not, see . */ /* - suppport for MicroStrain CX5/GX5-45 serially connected AHRS Systems + support for MicroStrain CX5/GX5-45 serially connected AHRS Systems */ #pragma once diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.cpp b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.cpp index 18a34121b025e..b7c0bf4bff18c 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.cpp +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.cpp @@ -13,7 +13,7 @@ along with this program. If not, see . */ /* - suppport for serial connected AHRS systems + support for serial connected AHRS systems */ #define ALLOW_DOUBLE_MATH_FUNCTIONS @@ -283,8 +283,8 @@ bool AP_ExternalAHRS_VectorNav::check_uart() return true; } -// Send command to read given register number and wait for responce -// Only run from thread! This blocks until a responce is received +// Send command to read given register number and wait for response +// Only run from thread! This blocks until a response is received #define READ_REQUEST_RETRY_MS 500 void AP_ExternalAHRS_VectorNav::wait_register_responce(const uint8_t register_num) { diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.h b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.h index 183184bf24248..3ce1fe7f5e2d5 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.h +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.h @@ -13,7 +13,7 @@ along with this program. If not, see . */ /* - suppport for serial connected AHRS systems + support for serial connected AHRS systems */ #pragma once diff --git a/libraries/AP_ExternalAHRS/MicroStrain_common.cpp b/libraries/AP_ExternalAHRS/MicroStrain_common.cpp index 567ac7d70d300..d5b723cb125c6 100644 --- a/libraries/AP_ExternalAHRS/MicroStrain_common.cpp +++ b/libraries/AP_ExternalAHRS/MicroStrain_common.cpp @@ -11,7 +11,7 @@ along with this program. If not, see . */ /* - suppport for MicroStrain CX5/GX5-45 serially connected AHRS Systems + support for MicroStrain CX5/GX5-45 serially connected AHRS Systems */ #define ALLOW_DOUBLE_MATH_FUNCTIONS diff --git a/libraries/AP_ExternalAHRS/MicroStrain_common.h b/libraries/AP_ExternalAHRS/MicroStrain_common.h index 506063b5831e7..37158d7c70dfa 100644 --- a/libraries/AP_ExternalAHRS/MicroStrain_common.h +++ b/libraries/AP_ExternalAHRS/MicroStrain_common.h @@ -11,7 +11,7 @@ along with this program. If not, see . */ /* - suppport for MicroStrain MIP parsing + support for MicroStrain MIP parsing */ #pragma once diff --git a/libraries/AP_Filesystem/AP_Filesystem_FATFS.cpp b/libraries/AP_Filesystem/AP_Filesystem_FATFS.cpp index f728b3362c392..59cbd35762411 100644 --- a/libraries/AP_Filesystem/AP_Filesystem_FATFS.cpp +++ b/libraries/AP_Filesystem/AP_Filesystem_FATFS.cpp @@ -879,7 +879,7 @@ bool AP_Filesystem_FATFS::format(void) #if FF_USE_MKFS WITH_SEMAPHORE(sem); hal.scheduler->register_io_process(FUNCTOR_BIND_MEMBER(&AP_Filesystem_FATFS::format_handler, void)); - // the format is handled asyncronously, we inform user of success + // the format is handled asynchronously, we inform user of success // via a text message. format_status can be polled for progress format_status = FormatStatus::PENDING; return true; diff --git a/libraries/AP_FlashIface/examples/jedec_test/jedec_test.cpp b/libraries/AP_FlashIface/examples/jedec_test/jedec_test.cpp index f2219e6d7b9ff..28f296e44647e 100644 --- a/libraries/AP_FlashIface/examples/jedec_test/jedec_test.cpp +++ b/libraries/AP_FlashIface/examples/jedec_test/jedec_test.cpp @@ -56,7 +56,7 @@ static UNUSED_FUNCTION void test_page_program() hal.console->printf("Failed to allocate data for read"); } - // fill program data with its own adress + // fill program data with its own address for (uint32_t i = 0; i < jedec_dev.get_page_size(); i++) { data[i] = i; } diff --git a/libraries/AP_FlashStorage/AP_FlashStorage.cpp b/libraries/AP_FlashStorage/AP_FlashStorage.cpp index a8f99670d6d33..b53960f44bb6d 100644 --- a/libraries/AP_FlashStorage/AP_FlashStorage.cpp +++ b/libraries/AP_FlashStorage/AP_FlashStorage.cpp @@ -152,7 +152,7 @@ bool AP_FlashStorage::switch_full_sector(void) } // protected_switch_full_sector is protected by switch_full_sector to -// avoid an infinite recursion problem; switch_full_sectory calls +// avoid an infinite recursion problem; switch_full_sector calls // write() which can call switch_full_sector. This has been seen in // practice, and while it might be caused by corruption... corruption // happens. diff --git a/libraries/AP_FlashStorage/AP_FlashStorage.h b/libraries/AP_FlashStorage/AP_FlashStorage.h index b4cb1afd71a89..0f9b6fe3b776e 100644 --- a/libraries/AP_FlashStorage/AP_FlashStorage.h +++ b/libraries/AP_FlashStorage/AP_FlashStorage.h @@ -236,7 +236,7 @@ class AP_FlashStorage { bool switch_sectors(void) WARN_IF_UNUSED; // _switch_full_sector is protected by switch_full_sector to avoid - // an infinite recursion problem; switch_full_sectory calls + // an infinite recursion problem; switch_full_sector calls // write() which can call switch_full_sector. This has been seen // in practice. bool protected_switch_full_sector(void) WARN_IF_UNUSED; diff --git a/libraries/AP_Follow/AP_Follow.cpp b/libraries/AP_Follow/AP_Follow.cpp index 78e4448064def..bb7dedc03aae7 100644 --- a/libraries/AP_Follow/AP_Follow.cpp +++ b/libraries/AP_Follow/AP_Follow.cpp @@ -30,7 +30,7 @@ extern const AP_HAL::HAL& hal; #define AP_FOLLOW_TIMEOUT_MS 3000 // position estimate timeout after 1 second -#define AP_FOLLOW_SYSID_TIMEOUT_MS 10000 // forget sysid we are following if we haave not heard from them in 10 seconds +#define AP_FOLLOW_SYSID_TIMEOUT_MS 10000 // forget sysid we are following if we have not heard from them in 10 seconds #define AP_FOLLOW_OFFSET_TYPE_NED 0 // offsets are in north-east-down frame #define AP_FOLLOW_OFFSET_TYPE_RELATIVE 1 // offsets are relative to lead vehicle's heading diff --git a/libraries/AP_Frsky_Telem/AP_Frsky_D.cpp b/libraries/AP_Frsky_Telem/AP_Frsky_D.cpp index 45d4edbbb76c2..90047effd583b 100644 --- a/libraries/AP_Frsky_Telem/AP_Frsky_D.cpp +++ b/libraries/AP_Frsky_Telem/AP_Frsky_D.cpp @@ -71,8 +71,8 @@ void AP_Frsky_D::send(void) send_uint16(DATA_ID_GPS_COURS_BP, (uint16_t)((_ahrs.yaw_sensor / 100) % 360)); // send heading in degree based on AHRS and not GPS calc_gps_position(); if (AP::gps().status() >= 3) { - send_uint16(DATA_ID_GPS_LAT_BP, _SPort_data.latdddmm); // send gps lattitude degree and minute integer part - send_uint16(DATA_ID_GPS_LAT_AP, _SPort_data.latmmmm); // send gps lattitude minutes decimal part + send_uint16(DATA_ID_GPS_LAT_BP, _SPort_data.latdddmm); // send gps latitude degree and minute integer part + send_uint16(DATA_ID_GPS_LAT_AP, _SPort_data.latmmmm); // send gps latitude minutes decimal part send_uint16(DATA_ID_GPS_LAT_NS, _SPort_data.lat_ns); // send gps North / South information send_uint16(DATA_ID_GPS_LONG_BP, _SPort_data.londddmm); // send gps longitude degree and minute integer part send_uint16(DATA_ID_GPS_LONG_AP, _SPort_data.lonmmmm); // send gps longitude minutes decimal part diff --git a/libraries/AP_Frsky_Telem/AP_Frsky_MAVlite_SPortToMAVlite.cpp b/libraries/AP_Frsky_Telem/AP_Frsky_MAVlite_SPortToMAVlite.cpp index 26b8b5b2af973..601c7e98d021f 100644 --- a/libraries/AP_Frsky_Telem/AP_Frsky_MAVlite_SPortToMAVlite.cpp +++ b/libraries/AP_Frsky_Telem/AP_Frsky_MAVlite_SPortToMAVlite.cpp @@ -20,7 +20,7 @@ void AP_Frsky_MAVlite_SPortToMAVlite::update_checksum(const uint8_t c) } /* - Parses sport packets and if successfull fills the rxmsg mavlite struct + Parses sport packets and if successful fills the rxmsg mavlite struct */ bool AP_Frsky_MAVlite_SPortToMAVlite::process(AP_Frsky_MAVlite_Message &rxmsg, const AP_Frsky_SPort::sport_packet_t &packet) { diff --git a/libraries/AP_GPS/AP_GPS.cpp b/libraries/AP_GPS/AP_GPS.cpp index 23033fd0b4cd4..a085c021f283c 100644 --- a/libraries/AP_GPS/AP_GPS.cpp +++ b/libraries/AP_GPS/AP_GPS.cpp @@ -53,6 +53,7 @@ #include #include +#include "AP_GPS_FixType.h" #define GPS_RTK_INJECT_TO_ALL 127 #ifndef GPS_MAX_RATE_MS @@ -111,6 +112,16 @@ static_assert((uint32_t)AP_GPS::GPS_Status::GPS_OK_FIX_3D_RTK_FLOAT == (uint32_t static_assert((uint32_t)AP_GPS::GPS_Status::GPS_OK_FIX_3D_RTK_FIXED == (uint32_t)GPS_FIX_TYPE_RTK_FIXED, "FIX_RTK_FIXED incorrect"); #endif +// ensure that our own enum-class status is equivalent to the +// ArduPilot-scoped AP_GPS_FixType enumeration: +static_assert((uint32_t)AP_GPS::GPS_Status::NO_GPS == (uint8_t)AP_GPS_FixType::NO_GPS, "NO_GPS incorrect"); +static_assert((uint32_t)AP_GPS::GPS_Status::NO_FIX == (uint8_t)AP_GPS_FixType::NONE, "NO_FIX incorrect"); +static_assert((uint32_t)AP_GPS::GPS_Status::GPS_OK_FIX_2D == (uint8_t)AP_GPS_FixType::FIX_2D, "FIX_2D incorrect"); +static_assert((uint32_t)AP_GPS::GPS_Status::GPS_OK_FIX_3D == (uint8_t)AP_GPS_FixType::FIX_3D, "FIX_3D incorrect"); +static_assert((uint32_t)AP_GPS::GPS_Status::GPS_OK_FIX_3D_DGPS == (uint8_t)AP_GPS_FixType::DGPS, "FIX_DGPS incorrect"); +static_assert((uint32_t)AP_GPS::GPS_Status::GPS_OK_FIX_3D_RTK_FLOAT == (uint8_t)AP_GPS_FixType::RTK_FLOAT, "FIX_RTK_FLOAT incorrect"); +static_assert((uint32_t)AP_GPS::GPS_Status::GPS_OK_FIX_3D_RTK_FIXED == (uint8_t)AP_GPS_FixType::RTK_FIXED, "FIX_RTK_FIXED incorrect"); + AP_GPS *AP_GPS::_singleton; // table of user settable parameters @@ -1044,17 +1055,17 @@ void AP_GPS::update_instance(uint8_t instance) if (data_should_be_logged && should_log()) { Write_GPS(instance); } +#else + (void)data_should_be_logged; #endif -#ifndef HAL_BUILD_AP_PERIPH +#if AP_RTC_ENABLED if (state[instance].status >= GPS_OK_FIX_3D) { const uint64_t now = time_epoch_usec(instance); if (now != 0) { AP::rtc().set_utc_usec(now, AP_RTC::SOURCE_GPS); } } -#else - (void)data_should_be_logged; #endif } @@ -1153,8 +1164,18 @@ void AP_GPS::update(void) void AP_GPS::update_primary(void) { #if defined(GPS_BLENDED_INSTANCE) - // if blending is requested, attempt to calculate weighting for each GPS - if ((GPSAutoSwitch)_auto_switch.get() == GPSAutoSwitch::BLEND) { + /* + if blending is requested, attempt to calculate weighting for + each GPS + we do not do blending if using moving baseline yaw as the rover is + significant lagged and gives no more information on position or + velocity + */ + const bool using_moving_base = (_type[0] == GPS_TYPE_UAVCAN_RTK_BASE || + _type[0] == GPS_TYPE_UBLOX_RTK_BASE || + _type[1] == GPS_TYPE_UAVCAN_RTK_BASE || + _type[1] == GPS_TYPE_UBLOX_RTK_BASE); + if ((GPSAutoSwitch)_auto_switch.get() == GPSAutoSwitch::BLEND && !using_moving_base) { _output_is_blended = calc_blend_weights(); // adjust blend health counter if (!_output_is_blended) { @@ -1461,7 +1482,7 @@ void AP_GPS::send_mavlink_gps_raw(mavlink_channel_t chan) ground_speed(0)*100, // cm/s ground_course(0)*100, // 1/100 degrees, num_sats(0), - height_elipsoid_mm, // Elipsoid height in mm + height_elipsoid_mm, // Ellipsoid height in mm hacc * 1000, // one-sigma standard deviation in mm vacc * 1000, // one-sigma standard deviation in mm sacc * 1000, // one-sigma standard deviation in mm/s @@ -1504,7 +1525,7 @@ void AP_GPS::send_mavlink_gps2_raw(mavlink_channel_t chan) state[1].rtk_num_sats, state[1].rtk_age_ms, gps_yaw_cdeg(1), - height_elipsoid_mm, // Elipsoid height in mm + height_elipsoid_mm, // Ellipsoid height in mm hacc * 1000, // one-sigma standard deviation in mm vacc * 1000, // one-sigma standard deviation in mm sacc * 1000, // one-sigma standard deviation in mm/s @@ -1682,7 +1703,7 @@ void AP_GPS::Write_AP_Logger_Log_Startup_messages() */ bool AP_GPS::get_lag(uint8_t instance, float &lag_sec) const { - // always enusre a lag is provided + // always ensure a lag is provided lag_sec = 0.1f; if (instance >= GPS_MAX_INSTANCES) { @@ -2134,12 +2155,14 @@ bool AP_GPS::is_healthy(uint8_t instance) const */ /* allow two lost frames before declaring the GPS unhealthy, but - require the average frame rate to be close to 5Hz. We allow for - a bit higher average for a rover due to the packet loss that - happens with the RTCMv3 data + require the average frame rate to be close to 5Hz. + + We allow for a rate of 3Hz average for a moving baseline rover + due to the packet loss that happens with the RTCMv3 data and the + fact that the rate of yaw data is not critical */ const uint8_t delay_threshold = 2; - const float delay_avg_max = ((_type[instance] == GPS_TYPE_UBLOX_RTK_ROVER) || (_type[instance] == GPS_TYPE_UAVCAN_RTK_ROVER))?245:215; + const float delay_avg_max = ((_type[instance] == GPS_TYPE_UBLOX_RTK_ROVER) || (_type[instance] == GPS_TYPE_UAVCAN_RTK_ROVER))?333:215; const GPS_timing &t = timing[instance]; bool delay_ok = (t.delayed_count < delay_threshold) && t.average_delta_ms < delay_avg_max && diff --git a/libraries/AP_GPS/AP_GPS_DroneCAN.cpp b/libraries/AP_GPS/AP_GPS_DroneCAN.cpp index 52f0cd6c066d0..2471d3958019f 100644 --- a/libraries/AP_GPS/AP_GPS_DroneCAN.cpp +++ b/libraries/AP_GPS/AP_GPS_DroneCAN.cpp @@ -800,7 +800,7 @@ void AP_GPS_DroneCAN::inject_data(const uint8_t *data, uint16_t len) { // we only handle this if we are the first DroneCAN GPS or we are // using a different uavcan instance than the first GPS, as we - // send the data as broadcast on all DroneCAN devive ports and we + // send the data as broadcast on all DroneCAN device ports and we // don't want to send duplicates const uint32_t now_ms = AP_HAL::millis(); if (_detected_module == 0 || diff --git a/libraries/AP_GPS/AP_GPS_FixType.h b/libraries/AP_GPS/AP_GPS_FixType.h new file mode 100644 index 0000000000000..e3254551d3bd2 --- /dev/null +++ b/libraries/AP_GPS/AP_GPS_FixType.h @@ -0,0 +1,18 @@ +#pragma once + +// a AP_GPS-library-independent enumeration which lists the commonly +// accepted set of GPS Fix Types which GPSs report. This header can +// be used even if AP_GPS is not compiled in. + +// this is not enum-class as many places in the code want to check for +// "a fix at least this good" using "<". + +enum AP_GPS_FixType { + NO_GPS = 0, ///< No GPS connected/detected + NONE = 1, ///< Receiving valid GPS messages but no lock + FIX_2D = 2, ///< Receiving valid messages and 2D lock + FIX_3D = 3, ///< Receiving valid messages and 3D lock + DGPS = 4, ///< Receiving valid messages and 3D lock with differential improvements + RTK_FLOAT = 5, ///< Receiving valid messages and 3D RTK Float + RTK_FIXED = 6, ///< Receiving valid messages and 3D RTK Fixed +}; diff --git a/libraries/AP_GPS/AP_GPS_NMEA.cpp b/libraries/AP_GPS/AP_GPS_NMEA.cpp index c47828209f94f..1712f6754bcc5 100644 --- a/libraries/AP_GPS/AP_GPS_NMEA.cpp +++ b/libraries/AP_GPS/AP_GPS_NMEA.cpp @@ -629,7 +629,7 @@ bool AP_GPS_NMEA::_term_complete() // case _GPS_SENTENCE_RMC + 7: // Speed (GPRMC) case _GPS_SENTENCE_VTG + 5: // Speed (VTG) - _new_speed = (_parse_decimal_100(_term) * 514) / 1000; // knots-> m/sec, approximiates * 0.514 + _new_speed = (_parse_decimal_100(_term) * 514) / 1000; // knots-> m/sec, approximates * 0.514 break; case _GPS_SENTENCE_HDT + 1: // Course (HDT) _new_gps_yaw = _parse_decimal_100(_term); diff --git a/libraries/AP_GPS/AP_GPS_UBLOX.cpp b/libraries/AP_GPS/AP_GPS_UBLOX.cpp index 9b2be38adb23e..343587c68e55e 100644 --- a/libraries/AP_GPS/AP_GPS_UBLOX.cpp +++ b/libraries/AP_GPS/AP_GPS_UBLOX.cpp @@ -594,11 +594,10 @@ AP_GPS_UBLOX::read(void) for (uint16_t i = 0; i < numc; i++) { // Process bytes received // read the next byte - const int16_t rdata = port->read(); - if (rdata < 0) { + uint8_t data; + if (!port->read(data)) { break; } - const uint8_t data = rdata; #if AP_GPS_DEBUG_LOGGING_ENABLED log_data(&data, 1); #endif @@ -1103,7 +1102,7 @@ AP_GPS_UBLOX::_parse_gps(void) } if(GNSS_GALILEO ==_buffer.gnss.configBlock[i].gnssId) { _buffer.gnss.configBlock[i].resTrkCh = (_buffer.gnss.numTrkChHw - 3) / (gnssCount * 2); - _buffer.gnss.configBlock[i].maxTrkCh = 8; //Per the M8 receiver description UBX-13003221 - R16, 4.1.1.3 it is not recommended to set the number of galileo channels higher then eigh + _buffer.gnss.configBlock[i].maxTrkCh = 8; //Per the M8 receiver description UBX-13003221 - R16, 4.1.1.3 it is not recommended to set the number of galileo channels higher then eight } } _buffer.gnss.configBlock[i].flags = _buffer.gnss.configBlock[i].flags | 0x00000001; diff --git a/libraries/AP_GPS/GPS_Backend.cpp b/libraries/AP_GPS/GPS_Backend.cpp index 300a3bda79194..095bb27366d7a 100644 --- a/libraries/AP_GPS/GPS_Backend.cpp +++ b/libraries/AP_GPS/GPS_Backend.cpp @@ -350,14 +350,14 @@ bool AP_GPS_Backend::calculate_moving_base_yaw(AP_GPS::GPS_State &interim_state, const float min_dist = MIN(offset_dist, reported_distance); if (offset_dist < minimum_antenna_seperation) { - // offsets have to be sufficently large to get a meaningful angle off of them + // offsets have to be sufficiently large to get a meaningful angle off of them Debug("Insufficent antenna offset (%f, %f, %f)", (double)offset.x, (double)offset.y, (double)offset.z); goto bad_yaw; } if (reported_distance < minimum_antenna_seperation) { - // if the reported distance is less then the minimum seperation it's not sufficently robust - Debug("Reported baseline distance (%f) was less then the minimum antenna seperation (%f)", + // if the reported distance is less then the minimum separation it's not sufficiently robust + Debug("Reported baseline distance (%f) was less then the minimum antenna separation (%f)", (double)reported_distance, (double)minimum_antenna_seperation); goto bad_yaw; } diff --git a/libraries/AP_Generator/AP_Generator.cpp b/libraries/AP_Generator/AP_Generator.cpp index d612d00853e49..d5cfca045d2d7 100644 --- a/libraries/AP_Generator/AP_Generator.cpp +++ b/libraries/AP_Generator/AP_Generator.cpp @@ -36,7 +36,7 @@ const AP_Param::GroupInfo AP_Generator::var_info[] = { // @Param: OPTIONS // @DisplayName: Generator Options // @Description: Bitmask of options for generators - // @Bitmask: 0:Supress Maintenance-Required Warnings + // @Bitmask: 0:Suppress Maintenance-Required Warnings // @User: Standard AP_GROUPINFO("OPTIONS", 2, AP_Generator, _options, 0), @@ -91,7 +91,7 @@ void AP_Generator::init() void AP_Generator::update() { - // Return immediatly if not enabled. Don't support run-time disabling of generator + // Return immediately if not enabled. Don't support run-time disabling of generator if (_driver_ptr == nullptr) { return; } @@ -124,7 +124,7 @@ bool AP_Generator::pre_arm_check(char* failmsg, uint8_t failmsg_len) const return true; } // Don't allow arming if we have disabled the generator since boot - strncpy(failmsg, "Generator disabled, reboot reqired", failmsg_len); + strncpy(failmsg, "Generator disabled, reboot required", failmsg_len); return false; } if (_driver_ptr == nullptr) { diff --git a/libraries/AP_Generator/AP_Generator_Backend.cpp b/libraries/AP_Generator/AP_Generator_Backend.cpp index 99de2363366e9..6a74ee53e2c24 100644 --- a/libraries/AP_Generator/AP_Generator_Backend.cpp +++ b/libraries/AP_Generator/AP_Generator_Backend.cpp @@ -16,7 +16,7 @@ #if HAL_GENERATOR_ENABLED -// Base class consructor +// Base class constructor AP_Generator_Backend::AP_Generator_Backend(AP_Generator& frontend) : _frontend(frontend) { diff --git a/libraries/AP_Generator/AP_Generator_IE_650_800.h b/libraries/AP_Generator/AP_Generator_IE_650_800.h index 4107f463fd8c3..94e4c50a2519a 100644 --- a/libraries/AP_Generator/AP_Generator_IE_650_800.h +++ b/libraries/AP_Generator/AP_Generator_IE_650_800.h @@ -46,7 +46,7 @@ class AP_Generator_IE_650_800 : public AP_Generator_IE_FuelCell static const uint32_t ERROR_START_UNDER_PRESS = (1U << 19); // (0x80000), Tank pressure < 6 barg static const uint32_t ERROR_TANK_UNDER_PRESS = (1U << 18); // (0x40000), Tank pressure < 5 barg static const uint32_t ERROR_TANK_LOW_PRESS = (1U << 17); // (0x20000), Tank pressure < 15 barg - static const uint32_t ERROR_SAFETY_FLAG = (1U << 16); // (0x10000), Fuel cell's internal saftey flags not set true + static const uint32_t ERROR_SAFETY_FLAG = (1U << 16); // (0x10000), Fuel cell's internal safety flags not set true static const uint32_t ERROR_DENY_START1 = (1U << 15); // (0x8000), Stack 1 denied start static const uint32_t ERROR_DENY_START2 = (1U << 14); // (0x4000), Stack 2 denied start static const uint32_t ERROR_STACK_UT1 = (1U << 13); // (0x2000), Stack 1 under temperature (<5 degC) @@ -74,7 +74,7 @@ class AP_Generator_IE_650_800 : public AP_Generator_IE_FuelCell | ERROR_START_TIMEOUT // (0x200000), Fuel cell's internal State == start for > 30 s | ERROR_START_UNDER_PRESS // (0x80000), Tank pressure < 6 barg | ERROR_TANK_UNDER_PRESS // (0x40000), Tank pressure < 5 barg - | ERROR_SAFETY_FLAG // (0x10000), Fuel cell's internal saftey flags not set true + | ERROR_SAFETY_FLAG // (0x10000), Fuel cell's internal safety flags not set true | ERROR_DENY_START1 // (0x8000), Stack 1 denied start | ERROR_DENY_START2 // (0x4000), Stack 2 denied start | ERROR_BAT_UV_DENY // (0x400), Battery under voltage (21.6 V) and master denied diff --git a/libraries/AP_Generator/AP_Generator_IE_FuelCell.h b/libraries/AP_Generator/AP_Generator_IE_FuelCell.h index 13a852d9a3186..84395f1125c91 100644 --- a/libraries/AP_Generator/AP_Generator_IE_FuelCell.h +++ b/libraries/AP_Generator/AP_Generator_IE_FuelCell.h @@ -91,7 +91,7 @@ class AP_Generator_IE_FuelCell : public AP_Generator_Backend // Returns true if a complete sentence was successfully decoded or if the buffer is full. bool decode(char c); - // Unit specific decoding to process characters recieved and build sentence + // Unit specific decoding to process characters received and build sentence virtual void decode_latest_term(void) = 0; // Check if we should notify on any change of fuel cell state diff --git a/libraries/AP_Generator/AP_Generator_RichenPower.cpp b/libraries/AP_Generator/AP_Generator_RichenPower.cpp index c021cbd43ee8d..530f8192b371d 100644 --- a/libraries/AP_Generator/AP_Generator_RichenPower.cpp +++ b/libraries/AP_Generator/AP_Generator_RichenPower.cpp @@ -190,7 +190,7 @@ bool AP_Generator_RichenPower::generator_ok_to_run() const constexpr float AP_Generator_RichenPower::heat_required_for_run() { // assume that heat is proportional to RPM. Return a number - // proportial to RPM. Reduce it to account for the cooling some%/s + // proportional to RPM. Reduce it to account for the cooling some%/s // cooling return (45 * IDLE_RPM) * heat_environment_loss_30s; } diff --git a/libraries/AP_Gripper/AP_Gripper.h b/libraries/AP_Gripper/AP_Gripper.h index 29a7c24c447f2..3d412a191a109 100644 --- a/libraries/AP_Gripper/AP_Gripper.h +++ b/libraries/AP_Gripper/AP_Gripper.h @@ -75,7 +75,7 @@ class AP_Gripper { AP_Int16 grab_pwm; // PWM value sent to Gripper to initiate grabbing the cargo AP_Int16 release_pwm; // PWM value sent to Gripper to release the cargo AP_Int16 neutral_pwm; // PWM value sent to gripper when not grabbing or releasing - AP_Int8 regrab_interval; // Time in seconds that EPM gripper will regrab the cargo to ensure grip has not weakend + AP_Int8 regrab_interval; // Time in seconds that EPM gripper will regrab the cargo to ensure grip has not weakened AP_Float autoclose_time; // Automatic close time (in seconds) AP_Int16 uavcan_hardpoint_id; diff --git a/libraries/AP_Gripper/AP_Gripper_Backend.h b/libraries/AP_Gripper/AP_Gripper_Backend.h index 1607289130a90..1508e0ab1bdeb 100644 --- a/libraries/AP_Gripper/AP_Gripper_Backend.h +++ b/libraries/AP_Gripper/AP_Gripper_Backend.h @@ -45,7 +45,7 @@ class AP_Gripper_Backend { // grabbed - returns true if currently in grabbed position virtual bool grabbed() const = 0; - // type-specific intiailisations: + // type-specific initialisations: virtual void init_gripper() = 0; // type-specific periodic updates: diff --git a/libraries/AP_Gripper/AP_Gripper_Servo.h b/libraries/AP_Gripper/AP_Gripper_Servo.h index 3c72effc090d3..e51b729d0b1a9 100644 --- a/libraries/AP_Gripper/AP_Gripper_Servo.h +++ b/libraries/AP_Gripper/AP_Gripper_Servo.h @@ -44,7 +44,7 @@ class AP_Gripper_Servo : public AP_Gripper_Backend { protected: - // type-specific intiailisations: + // type-specific initializations: void init_gripper() override; // type-specific periodic updates: diff --git a/libraries/AP_GyroFFT/AP_GyroFFT.cpp b/libraries/AP_GyroFFT/AP_GyroFFT.cpp index 9b510a4034b60..886baa3749c37 100644 --- a/libraries/AP_GyroFFT/AP_GyroFFT.cpp +++ b/libraries/AP_GyroFFT/AP_GyroFFT.cpp @@ -273,7 +273,7 @@ void AP_GyroFFT::init(uint16_t loop_rate_hz) // check for harmonics across all harmonic notch filters // note that we only allow one harmonic notch filter linked to the FFT code - uint8_t harmonics = 0; + uint32_t harmonics = 0; uint8_t num_notches = 0; for (auto ¬ch : _ins->harmonic_notches) { if (notch.params.enabled()) { @@ -362,8 +362,8 @@ void AP_GyroFFT::init(uint16_t loop_rate_hz) } } -// sample the gyros either by using a gyro window sampled at the gyro rate or making invdividual samples -// called from fast_loop thread - this function does not take out a sempahore to avoid waiting on the FFT thread +// sample the gyros either by using a gyro window sampled at the gyro rate or making individual samples +// called from fast_loop thread - this function does not take out a semaphore to avoid waiting on the FFT thread void AP_GyroFFT::sample_gyros() { if (!analysis_enabled()) { diff --git a/libraries/AP_GyroFFT/AP_GyroFFT.h b/libraries/AP_GyroFFT/AP_GyroFFT.h index c422372970ef2..19b501b719358 100644 --- a/libraries/AP_GyroFFT/AP_GyroFFT.h +++ b/libraries/AP_GyroFFT/AP_GyroFFT.h @@ -190,7 +190,7 @@ class AP_GyroFFT float update_tl_noise_center_bandwidth_hz(FrequencyPeak peak, uint8_t axis, float value) { return (_thread_state._center_bandwidth_hz_filtered[peak][axis] = _center_bandwidth_filter[peak].apply(axis, value)); } - // write single log mesages + // write single log messages void log_noise_peak(uint8_t id, FrequencyPeak peak) const; // calculate the peak noise frequency void calculate_noise(bool calibrating, const EngineConfig& config); diff --git a/libraries/AP_HAL/AP_HAL_Boards.h b/libraries/AP_HAL/AP_HAL_Boards.h index bec7d2ea94324..027b8f4a07bd1 100644 --- a/libraries/AP_HAL/AP_HAL_Boards.h +++ b/libraries/AP_HAL/AP_HAL_Boards.h @@ -1,5 +1,5 @@ /** - * C preprocesor enumeration of the boards supported by the AP_HAL. + * C preprocessor enumeration of the boards supported by the AP_HAL. * This list exists so HAL_BOARD == HAL_BOARD_xxx preprocessor blocks * can be used to exclude HAL boards from the build when appropriate. * It's not an elegant solution but we can improve it in future. diff --git a/libraries/AP_HAL/AP_HAL_Namespace.h b/libraries/AP_HAL/AP_HAL_Namespace.h index 35a8124d615ee..b3e84314ed9ef 100644 --- a/libraries/AP_HAL/AP_HAL_Namespace.h +++ b/libraries/AP_HAL/AP_HAL_Namespace.h @@ -51,7 +51,7 @@ namespace AP_HAL { /* Typdefs for function pointers (Procedure, Member Procedure) For member functions we use the FastDelegate delegates class - which allows us to encapculate a member function as a type + which allows us to encapsulate a member function as a type */ typedef void(*Proc)(void); FUNCTOR_TYPEDEF(MemberProc, void); diff --git a/libraries/AP_HAL/CANIface.h b/libraries/AP_HAL/CANIface.h index ad8a0ead3597c..06b4f7dffbf84 100644 --- a/libraries/AP_HAL/CANIface.h +++ b/libraries/AP_HAL/CANIface.h @@ -179,7 +179,7 @@ class AP_HAL::CANIface // fill read select with true if a frame is available in Rx buffer // fill write select with true if space is available in Tx buffer // Also waits for Rx or Tx event depending on read_select and write_select values - // passed to the method until timeout. Returns true if the Rx/Tx even occured + // passed to the method until timeout. Returns true if the Rx/Tx even occurred // while waiting, false if timedout virtual bool select(bool &read_select, bool &write_select, const CANFrame* const pending_tx, uint64_t timeout) @@ -192,11 +192,11 @@ class AP_HAL::CANIface return true; } - // Put frame in queue to be sent, return negative if error occured, 0 if no space, and 1 if successful + // Put frame in queue to be sent, return negative if error occurred, 0 if no space, and 1 if successful // must be called on child class virtual int16_t send(const CANFrame& frame, uint64_t tx_deadline, CanIOFlags flags); - // Non blocking receive frame that pops the frames received inside the buffer, return negative if error occured, + // Non blocking receive frame that pops the frames received inside the buffer, return negative if error occurred, // 0 if no frame available, 1 if successful // must be called on child class virtual int16_t receive(CANFrame& out_frame, uint64_t& out_ts_monotonic, CanIOFlags& out_flags); diff --git a/libraries/AP_HAL/Device.cpp b/libraries/AP_HAL/Device.cpp index beedb242212b3..8f80bf4bff9fa 100644 --- a/libraries/AP_HAL/Device.cpp +++ b/libraries/AP_HAL/Device.cpp @@ -30,7 +30,7 @@ Periodically (say at 50Hz) you should then call check_next_register(). If that returns false then the sensor has had a corrupted register value. Marking the sensor as unhealthy is - approriate. The bad value will be corrected + appropiate. The bad value will be corrected */ /* diff --git a/libraries/AP_HAL/GPIO.h b/libraries/AP_HAL/GPIO.h index 5dbd753014964..f32a1eb250ede 100644 --- a/libraries/AP_HAL/GPIO.h +++ b/libraries/AP_HAL/GPIO.h @@ -82,7 +82,7 @@ class AP_HAL::GPIO { // ret indicates the functor must return void // pin is the pin which has triggered the interrupt // state is the new state of the pin - // timestamp is the time in microseconds the interrupt occured + // timestamp is the time in microseconds the interrupt occurred FUNCTOR_TYPEDEF(irq_handler_fn_t, void, uint8_t, bool, uint32_t); virtual bool attach_interrupt(uint8_t pin, irq_handler_fn_t fn, diff --git a/libraries/AP_HAL/RCOutput.cpp b/libraries/AP_HAL/RCOutput.cpp index f28a00de4dd48..c998f5c156689 100644 --- a/libraries/AP_HAL/RCOutput.cpp +++ b/libraries/AP_HAL/RCOutput.cpp @@ -30,6 +30,7 @@ const char* AP_HAL::RCOutput::get_output_mode_string(enum output_mode out_mode) case MODE_PWM_DSHOT1200: return "DS1200"; case MODE_NEOPIXEL: + case MODE_NEOPIXELRGB: return "NeoP"; case MODE_PROFILED: return "ProfiLED"; diff --git a/libraries/AP_HAL/RCOutput.h b/libraries/AP_HAL/RCOutput.h index 0bceccec1b71b..366b13963a481 100644 --- a/libraries/AP_HAL/RCOutput.h +++ b/libraries/AP_HAL/RCOutput.h @@ -215,6 +215,7 @@ class AP_HAL::RCOutput { MODE_PWM_DSHOT1200, MODE_NEOPIXEL, // same as MODE_PWM_DSHOT at 800kHz but it's an LED MODE_PROFILED, // same as MODE_PWM_DSHOT using separate clock and data + MODE_NEOPIXELRGB, // same as MODE_NEOPIXEL but RGB ordering }; // true when the output mode is of type dshot // static to allow use in the ChibiOS thread stuff @@ -223,6 +224,7 @@ class AP_HAL::RCOutput { static bool is_led_protocol(const enum output_mode mode) { switch (mode) { case MODE_NEOPIXEL: + case MODE_NEOPIXELRGB: case MODE_PROFILED: return true; default: @@ -330,7 +332,7 @@ class AP_HAL::RCOutput { const static uint32_t ALL_CHANNELS = 255; /* - Send a dshot command, if command timout is 0 then 10 commands are sent + Send a dshot command, if command timeout is 0 then 10 commands are sent chan is the servo channel to send the command to */ virtual void send_dshot_command(uint8_t command, uint8_t chan = ALL_CHANNELS, uint32_t command_timeout_ms = 0, uint16_t repeat_count = 10, bool priority = false) {} @@ -351,7 +353,7 @@ class AP_HAL::RCOutput { and led number. A led number of -1 means all LEDs. LED 0 is the first LED */ virtual void set_serial_led_rgb_data(const uint16_t chan, int8_t led, uint8_t red, uint8_t green, uint8_t blue) {} - + /* trigger send of serial led */ diff --git a/libraries/AP_HAL/WSPIDevice.h b/libraries/AP_HAL/WSPIDevice.h index 08c93f4bfe485..1b4c3a294c5f7 100644 --- a/libraries/AP_HAL/WSPIDevice.h +++ b/libraries/AP_HAL/WSPIDevice.h @@ -143,7 +143,7 @@ class WSPIDevice : public Device virtual bool transfer(const uint8_t *send, uint32_t send_len, uint8_t *recv, uint32_t recv_len) override = 0; - // Set command header for upcomming transfer call(s) + // Set command header for upcoming transfer call(s) virtual void set_cmd_header(const CommandHeader& cmd_hdr) override = 0; virtual bool is_busy() = 0; diff --git a/libraries/AP_HAL/examples/AnalogIn/AnalogIn.cpp b/libraries/AP_HAL/examples/AnalogIn/AnalogIn.cpp index 33689a8fdd2e6..1a177b13bb55b 100644 --- a/libraries/AP_HAL/examples/AnalogIn/AnalogIn.cpp +++ b/libraries/AP_HAL/examples/AnalogIn/AnalogIn.cpp @@ -22,7 +22,7 @@ void loop(); //declaration of the loop() function const AP_HAL::HAL& hal = AP_HAL::get_HAL(); //create a reference to AP_HAL::HAL object to get access to hardware specific functions. For more info see -AP_HAL::AnalogSource* chan; //delare a pointer to AnalogSource object. AnalogSource class can be found in : AP_HAL->AnalogIn.h +AP_HAL::AnalogSource* chan; //declare a pointer to AnalogSource object. AnalogSource class can be found in : AP_HAL->AnalogIn.h // the setup function runs once when the board powers up void setup(void) { diff --git a/libraries/AP_HAL/examples/RCOutput2/RCOutput.cpp b/libraries/AP_HAL/examples/RCOutput2/RCOutput.cpp index ff6e57cb65204..ca8dd7b0b086c 100644 --- a/libraries/AP_HAL/examples/RCOutput2/RCOutput.cpp +++ b/libraries/AP_HAL/examples/RCOutput2/RCOutput.cpp @@ -28,12 +28,12 @@ void drive(uint16_t hz_speed); class Menu_Commands { public: /* Menu commands to drive a SERVO type with - * repective PWM output freq defined by SERVO_HZ + * respective PWM output freq defined by SERVO_HZ */ int8_t menu_servo(uint8_t argc, const Menu::arg *argv); /* Menu commands to drive a ESC type with - * repective PWM output freq defined by ESC_HZ + * respective PWM output freq defined by ESC_HZ */ int8_t menu_esc(uint8_t argc, const Menu::arg *argv); }; @@ -45,7 +45,7 @@ Menu_Commands commands; static uint16_t pwm = 1500; static int8_t delta = 1; -/* Function to drive a RC output TYPE especified */ +/* Function to drive a RC output TYPE specified */ void drive(uint16_t hz_speed) { hal.rcout->set_freq(0xFF, hz_speed); diff --git a/libraries/AP_HAL/examples/Storage/Storage.cpp b/libraries/AP_HAL/examples/Storage/Storage.cpp index 171c423de5b39..e39fd83b1af27 100644 --- a/libraries/AP_HAL/examples/Storage/Storage.cpp +++ b/libraries/AP_HAL/examples/Storage/Storage.cpp @@ -20,7 +20,7 @@ void setup(void) st->init(); /* - Calculate XOR of the full conent of memory + Calculate XOR of the full content of memory Do it by block of 8 bytes */ unsigned char buff[8], XOR_res = 0; @@ -35,7 +35,7 @@ void setup(void) /* print XORed result */ - hal.console->printf("XORed ememory: %u\r\n", (unsigned) XOR_res); + hal.console->printf("XORed memory: %u\r\n", (unsigned) XOR_res); } // In main loop do nothing diff --git a/libraries/AP_HAL/utility/ftoa_engine.cpp b/libraries/AP_HAL/utility/ftoa_engine.cpp index 384f32c2afd25..e2800529082c5 100644 --- a/libraries/AP_HAL/utility/ftoa_engine.cpp +++ b/libraries/AP_HAL/utility/ftoa_engine.cpp @@ -131,7 +131,7 @@ int16_t ftoa_engine(float val, char *buf, uint8_t precision, uint8_t maxDecimals int64_t prod = (int64_t)frac * (int64_t)factorTable[idx]; // The expConvFactorTable are factor are correct iff the lower 3 exponent - // bits are 1 (=7). Else we need to compensate by divding frac. + // bits are 1 (=7). Else we need to compensate by dividing frac. // If the lower 3 bits are 7 we are right. // If the lower 3 bits are 6 we right-shift once // .. diff --git a/libraries/AP_HAL/utility/srxl.cpp b/libraries/AP_HAL/utility/srxl.cpp index 1023daa427d34..14b4e211974b6 100644 --- a/libraries/AP_HAL/utility/srxl.cpp +++ b/libraries/AP_HAL/utility/srxl.cpp @@ -17,7 +17,7 @@ Andrew Tridgell, September 2016 Co author: Roman Kirchner, September 2016 - - 2016.10.23: SRXL variant V1 sucessfully (Testbench and Pixhawk/MissionPlanner) tested with RX-9-DR M-LINK (SW v1.26) + - 2016.10.23: SRXL variant V1 successfully (Testbench and Pixhawk/MissionPlanner) tested with RX-9-DR M-LINK (SW v1.26) */ #include "srxl.h" @@ -49,7 +49,7 @@ #define SRXL_HEADER_V1 0xA1U /* Headerbyte for: Mpx SRXLv1 or XBUS Mode B */ #define SRXL_HEADER_V2 0xA2U /* Headerbyte for: Mpx SRXLv2 */ #define SRXL_HEADER_V5 0xA5U /* Headerbyte for: Spk AR7700 etc. */ -#define SRXL_HEADER_NOT_IMPL 0xFFU /* Headerbyte for non impemented srxl header*/ +#define SRXL_HEADER_NOT_IMPL 0xFFU /* Headerbyte for non implemented srxl header*/ diff --git a/libraries/AP_HAL/utility/st24.cpp b/libraries/AP_HAL/utility/st24.cpp index 80c8643d72667..04cad551020c5 100644 --- a/libraries/AP_HAL/utility/st24.cpp +++ b/libraries/AP_HAL/utility/st24.cpp @@ -125,7 +125,7 @@ typedef struct { */ typedef struct { uint16_t t; ///< packet counter or clock - int32_t lat; ///< lattitude (degrees) +/- 90 deg + int32_t lat; ///< latitude (degrees) +/- 90 deg int32_t lon; ///< longitude (degrees) +/- 180 deg int32_t alt; ///< 0.01m resolution, altitude (meters) int16_t vx, vy, vz; ///< velocity 0.01m res, +/-320.00 North-East- Down diff --git a/libraries/AP_HAL/utility/sumd.h b/libraries/AP_HAL/utility/sumd.h index 22052a20bab87..2c27a310a0dce 100644 --- a/libraries/AP_HAL/utility/sumd.h +++ b/libraries/AP_HAL/utility/sumd.h @@ -50,7 +50,7 @@ * * @param byte current char to read * @param rssi pointer to a byte where the RSSI value is written back to - * @param rx_count pointer to a byte where the receive count of packets signce last wireless frame is written back to + * @param rx_count pointer to a byte where the receive count of packets since last wireless frame is written back to * @param channels pointer to a datastructure of size max_chan_count where channel values (12 bit) are written back to * @param max_chan_count maximum channels to decode - if more channels are decoded, the last n are skipped and success (0) is returned * @return 0 for success (a decoded packet), 1 for no packet yet (accumulating), 2 for unknown packet, 3 for out of sync, 4 for checksum error diff --git a/libraries/AP_HAL_ChibiOS/RCOutput.cpp b/libraries/AP_HAL_ChibiOS/RCOutput.cpp index c19818d68616c..89cf78280bb69 100644 --- a/libraries/AP_HAL_ChibiOS/RCOutput.cpp +++ b/libraries/AP_HAL_ChibiOS/RCOutput.cpp @@ -794,6 +794,7 @@ void RCOutput::push_local(void) if (group.current_mode == MODE_PWM_ONESHOT || group.current_mode == MODE_PWM_ONESHOT125 || group.current_mode == MODE_NEOPIXEL || + group.current_mode == MODE_NEOPIXELRGB || group.current_mode == MODE_PROFILED || is_dshot_protocol(group.current_mode)) { // only control widest pulse for oneshot and dshot @@ -1056,6 +1057,7 @@ void RCOutput::set_group_mode(pwm_group &group) break; case MODE_NEOPIXEL: + case MODE_NEOPIXELRGB: case MODE_PROFILED: #if HAL_SERIALLED_ENABLED { @@ -2413,6 +2415,7 @@ uint32_t RCOutput::protocol_bitrate(const enum output_mode mode) case MODE_PWM_DSHOT1200: return 1200000; case MODE_NEOPIXEL: + case MODE_NEOPIXELRGB: return 800000; case MODE_PROFILED: return 1500000; // experiment winding this up 3000000 max from data sheet @@ -2452,9 +2455,11 @@ bool RCOutput::set_serial_led_num_LEDs(const uint16_t chan, uint8_t num_leds, ou } switch (mode) { - case MODE_NEOPIXEL: { + + case MODE_NEOPIXEL: + case MODE_NEOPIXELRGB: { grp->serial_nleds = MAX(num_leds, grp->serial_nleds); - grp->led_mode = MODE_NEOPIXEL; + grp->led_mode = mode; return true; } case MODE_PROFILED: { @@ -2505,6 +2510,9 @@ void RCOutput::fill_DMA_buffer_serial_led(pwm_group& group) case MODE_NEOPIXEL: _set_neopixel_rgb_data(&group, j, i, led.red, led.green, led.blue); break; + case MODE_NEOPIXELRGB: + _set_neopixel_rgb_data(&group, j, i, led.green, led.red, led.blue); + break; case MODE_PROFILED: { if (i < group.serial_nleds - 2) { _set_profiled_rgb_data(&group, j, i, led.red, led.green, led.blue); @@ -2677,6 +2685,7 @@ void RCOutput::serial_led_set_single_rgb_data(pwm_group& group, uint8_t idx, uin switch (group.current_mode) { case MODE_PROFILED: case MODE_NEOPIXEL: + case MODE_NEOPIXELRGB: group.serial_led_data[idx][led].red = red; group.serial_led_data[idx][led].green = green; group.serial_led_data[idx][led].blue = blue; @@ -2723,9 +2732,10 @@ void RCOutput::timer_info(ExpandingString &str) { // a header to allow for machine parsers to determine format str.printf("TIMERV1\n"); - +#if HAL_DSHOT_ENABLED for (auto &group : pwm_group_list) { uint32_t target_freq; + bool at_least_freq; #if HAL_SERIAL_ESC_COMM_ENABLED if (&group == serial_group) { target_freq = 19200 * 10; @@ -2733,14 +2743,18 @@ void RCOutput::timer_info(ExpandingString &str) #endif // HAL_SERIAL_ESC_COMM_ENABLED if (is_dshot_protocol(group.current_mode)) { target_freq = protocol_bitrate(group.current_mode) * DSHOT_BIT_WIDTH_TICKS; + if (_dshot_esc_type == DSHOT_ESC_BLHELI_S || _dshot_esc_type == DSHOT_ESC_BLHELI_EDT_S) { + at_least_freq = true; + } } else { target_freq = protocol_bitrate(group.current_mode) * NEOP_BIT_WIDTH_TICKS; } - const uint32_t prescaler = calculate_bitrate_prescaler(group.pwm_drv->clock, target_freq, is_dshot_protocol(group.current_mode)); + const uint32_t prescaler = calculate_bitrate_prescaler(group.pwm_drv->clock, target_freq, at_least_freq); str.printf("TIM%-2u CLK=%4uMhz MODE=%5s FREQ=%8u TGT=%8u\n", group.timer_id, unsigned(group.pwm_drv->clock / 1000000), get_output_mode_string(group.current_mode), - unsigned(group.pwm_drv->clock / prescaler), unsigned(target_freq)); + unsigned(group.pwm_drv->clock / (prescaler + 1)), unsigned(target_freq)); } +#endif } #endif // HAL_USE_PWM diff --git a/libraries/AP_HAL_ChibiOS/SPIDevice.cpp b/libraries/AP_HAL_ChibiOS/SPIDevice.cpp index 9b0dd2c3c3c19..48fd7fcff56e1 100644 --- a/libraries/AP_HAL_ChibiOS/SPIDevice.cpp +++ b/libraries/AP_HAL_ChibiOS/SPIDevice.cpp @@ -69,6 +69,7 @@ static const struct SPIDriverInfo { uint8_t busid; // used for device IDs in parameters uint8_t dma_channel_rx; uint8_t dma_channel_tx; + ioline_t sck_line; } spi_devices[] = { HAL_SPI_BUS_LIST }; // device list comes from hwdef.dat @@ -86,6 +87,10 @@ SPIBus::SPIBus(uint8_t _bus) : FUNCTOR_BIND_MEMBER(&SPIBus::dma_allocate, void, Shared_DMA *), FUNCTOR_BIND_MEMBER(&SPIBus::dma_deallocate, void, Shared_DMA *)); + // remember the SCK line for stop_peripheral()/start_peripheral() +#if HAL_SPI_SCK_SAVE_RESTORE + sck_mode = palReadLineMode(spi_devices[bus].sck_line); +#endif } /* @@ -103,10 +108,7 @@ void SPIBus::dma_deallocate(Shared_DMA *ctx) { chMtxLock(&dma_lock); // another non-SPI peripheral wants one of our DMA channels - if (spi_started) { - spiStop(spi_devices[bus].driver); - spi_started = false; - } + stop_peripheral(); chMtxUnlock(&dma_lock); } @@ -339,6 +341,48 @@ bool SPIDevice::adjust_periodic_callback(AP_HAL::Device::PeriodicHandle h, uint3 return bus.adjust_timer(h, period_usec); } +/* + stop the SPI peripheral and set the SCK line as a GPIO to prevent the clock + line floating while we are waiting for the next spiStart() + */ +void SPIBus::stop_peripheral(void) +{ + if (!spi_started) { + return; + } + const auto &sbus = spi_devices[bus]; +#if HAL_SPI_SCK_SAVE_RESTORE + if (spi_mode == SPIDEV_MODE0 || spi_mode == SPIDEV_MODE1) { + // Clock polarity is 0, so we need to set the clock line low before spi reset + palClearLine(sbus.sck_line); + } else { + // Clock polarity is 1, so we need to set the clock line high before spi reset + palSetLine(sbus.sck_line); + } + palSetLineMode(sbus.sck_line, PAL_MODE_OUTPUT_PUSHPULL); +#endif + spiStop(sbus.driver); + spi_started = false; +} + +/* + start the SPI peripheral and restore the IO mode of the SCK line + */ +void SPIBus::start_peripheral(void) +{ + if (spi_started) { + return; + } + + /* start driver and setup transfer parameters */ + spiStart(spi_devices[bus].driver, &spicfg); +#if HAL_SPI_SCK_SAVE_RESTORE + // restore sck pin mode from stop_peripheral() + palSetLineMode(spi_devices[bus].sck_line, sck_mode); +#endif + spi_started = true; +} + /* used to acquire bus and (optionally) assert cs */ @@ -380,12 +424,9 @@ bool SPIDevice::acquire_bus(bool set, bool skip_cs) bus.spicfg.cr1 = (uint16_t)(freq_flag | device_desc.mode); bus.spicfg.cr2 = 0; #endif - if (bus.spi_started) { - spiStop(spi_devices[device_desc.bus].driver); - bus.spi_started = false; - } - spiStart(spi_devices[device_desc.bus].driver, &bus.spicfg); /* Setup transfer parameters. */ - bus.spi_started = true; + bus.spi_mode = device_desc.mode; + bus.stop_peripheral(); + bus.start_peripheral(); if(!skip_cs) { spiSelectI(spi_devices[device_desc.bus].driver); /* Slave Select assertion. */ } diff --git a/libraries/AP_HAL_ChibiOS/SPIDevice.h b/libraries/AP_HAL_ChibiOS/SPIDevice.h index 325fc264604ef..c082b4f7283a2 100644 --- a/libraries/AP_HAL_ChibiOS/SPIDevice.h +++ b/libraries/AP_HAL_ChibiOS/SPIDevice.h @@ -25,6 +25,10 @@ #include "Scheduler.h" #include "Device.h" +#ifndef HAL_SPI_SCK_SAVE_RESTORE +#define HAL_SPI_SCK_SAVE_RESTORE TRUE +#endif + namespace ChibiOS { class SPIBus : public DeviceBus { @@ -35,7 +39,6 @@ class SPIBus : public DeviceBus { SPIConfig spicfg; void dma_allocate(Shared_DMA *ctx); void dma_deallocate(Shared_DMA *ctx); - bool spi_started; uint8_t slowdown; // we need an additional lock in the dma_allocate and @@ -43,6 +46,21 @@ class SPIBus : public DeviceBus { // have two DMA channels that we are handling with the shared_dma // code mutex_t dma_lock; + + // store the last spi mode for stop_peripheral() + uint32_t spi_mode; + + // start and stop the hardware peripheral + void start_peripheral(void); + void stop_peripheral(void); + +private: + bool spi_started; + + // mode line for SCK pin +#if HAL_SPI_SCK_SAVE_RESTORE + iomode_t sck_mode; +#endif }; struct SPIDesc { diff --git a/libraries/AP_HAL_ChibiOS/hwdef/ARKV6X/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/ARKV6X/hwdef.dat index 27ea928b398db..b9f1429dd39fa 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/ARKV6X/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/ARKV6X/hwdef.dat @@ -143,10 +143,14 @@ PF11 SPI5_MOSI SPI5 PG7 FRAM_CS CS # SPI6 - external1 (disabled to save DMA channels) -# PB3 SPI6_SCK SPI6 -# PA6 SPI6_MISO SPI6 -# PG14 SPI6_MOSI SPI6 -# PI10 EXT1_CS CS +#PB3 SPI6_SCK SPI6 +#PA6 SPI6_MISO SPI6 +#PG14 SPI6_MOSI SPI6 +#PI10 EXT1_CS CS +#PD11 DRDY_ADIS16507 INPUT GPIO(93) + +# use GPIO(93) for data ready on ADIS16507 +#define ADIS_DRDY_PIN 93 # PWM output pins PI0 TIM5_CH4 TIM5 PWM(1) GPIO(50) @@ -288,6 +292,7 @@ COMPASS BMM150 I2C:0:0x10 false ROTATION_NONE SPIDEV iim42652 SPI1 DEVID1 IMU1_CS MODE3 2*MHZ 8*MHZ SPIDEV icm42688 SPI2 DEVID1 IMU2_CS MODE3 2*MHZ 8*MHZ SPIDEV icm42688_ext SPI3 DEVID1 IMU3_CS MODE3 2*MHZ 8*MHZ +#SPIDEV adis16507 SPI6 DEVID1 EXT1_CS MODE3 1*MHZ 2*MHZ SPIDEV ramtron SPI5 DEVID1 FRAM_CS MODE3 8*MHZ 8*MHZ @@ -295,6 +300,7 @@ SPIDEV ramtron SPI5 DEVID1 FRAM_CS MODE3 8*MHZ 8*MHZ IMU Invensensev3 SPI:iim42652 ROTATION_ROLL_180_YAW_135 IMU Invensensev3 SPI:icm42688 ROTATION_YAW_45 IMU Invensensev3 SPI:icm42688_ext ROTATION_ROLL_180_YAW_270 +#IMU ADIS1647x SPI:adis16507 ROTATION_NONE ADIS_DRDY_PIN define HAL_DEFAULT_INS_FAST_SAMPLE 7 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/AeroFox-Airspeed-DLVR/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/AeroFox-Airspeed-DLVR/hwdef.dat index e5de5c06aa35a..7a4b5c20f812a 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/AeroFox-Airspeed-DLVR/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/AeroFox-Airspeed-DLVR/hwdef.dat @@ -13,7 +13,7 @@ define AIRSPEED_MAX_SENSORS 1 define HAL_PERIPH_ENABLE_AIRSPEED define HAL_PERIPH_ENABLE_MAG -COMPASS QMC5883L I2C:0:0x0D false ROTATION_NONE +COMPASS QMC5883L I2C:0:0x0D false ROTATION_ROLL_180_YAW_90 COMPASS RM3100 I2C:0:0x20 false ROTATION_NONE COMPASS RM3100 I2C:0:0x21 false ROTATION_NONE COMPASS RM3100 I2C:0:0x22 false ROTATION_NONE diff --git a/libraries/AP_HAL_ChibiOS/hwdef/AeroFox-Airspeed/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/AeroFox-Airspeed/hwdef.dat index fafea28b33811..21d2f807e1d01 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/AeroFox-Airspeed/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/AeroFox-Airspeed/hwdef.dat @@ -13,7 +13,7 @@ define AIRSPEED_MAX_SENSORS 1 define HAL_PERIPH_ENABLE_AIRSPEED define HAL_PERIPH_ENABLE_MAG -COMPASS QMC5883L I2C:0:0x0D false ROTATION_NONE +COMPASS QMC5883L I2C:0:0x0D false ROTATION_ROLL_180_YAW_90 COMPASS RM3100 I2C:0:0x20 false ROTATION_NONE COMPASS RM3100 I2C:0:0x21 false ROTATION_NONE COMPASS RM3100 I2C:0:0x22 false ROTATION_NONE diff --git a/libraries/AP_HAL_ChibiOS/hwdef/AtomRCF405NAVI/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/AtomRCF405NAVI/hwdef.dat index fbf64d1e824ea..fb4eaad060b41 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/AtomRCF405NAVI/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/AtomRCF405NAVI/hwdef.dat @@ -114,11 +114,11 @@ PA12 OTG_FS_DP OTG1 PC8 TIM3_CH3 TIM3 PWM(1) GPIO(50) PC9 TIM3_CH4 TIM3 PWM(2) GPIO(51) PA8 TIM1_CH1 TIM1 PWM(3) GPIO(52) -PB1 TIM1_CH3N TIM1 PWM(4) GPIO(53) +PB1 TIM8_CH3N TIM8 PWM(4) GPIO(53) PA15 TIM2_CH1 TIM2 PWM(5) GPIO(54) PB10 TIM2_CH3 TIM2 PWM(6) GPIO(55) PB11 TIM2_CH4 TIM2 PWM(7) GPIO(56) -PB0 TIM1_CH2N TIM1 PWM(8) GPIO(57) +PB0 TIM8_CH2N TIM8 PWM(8) GPIO(57) PB7 TIM4_CH2 TIM4 PWM(9) GPIO(58) # LED strip define HAL_STORAGE_SIZE 15360 @@ -157,9 +157,10 @@ ROMFS_WILDCARD libraries/AP_OSD/fonts/font0.bin define AP_PARAM_MAX_EMBEDDED_PARAM 256 # save some flash -include ../include/minimal_GPS.inc +include ../include/minimize_fpv_osd.inc include ../include/save_some_flash.inc -define AP_BATTERY_SMBUS_ENABLED 0 + define HAL_PARACHUTE_ENABLED 0 define HAL_SPRAYER_ENABLED 0 -define AP_BATTERY_SYNTHETIC_CURRENT_ENABLED 0 + + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrangePlus-SimOnHardWare/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrangePlus-SimOnHardWare/defaults.parm index 591b7847763ef..12369e97b033c 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrangePlus-SimOnHardWare/defaults.parm +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrangePlus-SimOnHardWare/defaults.parm @@ -1 +1 @@ -@include ../CubeOrangePlus/defaults.parm +@include ../CubeOrange-SimOnHardWare/defaults.parm diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrangePlus-SimOnHardWare/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrangePlus-SimOnHardWare/hwdef.dat index c381b8df35663..9f809f0f3aa75 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrangePlus-SimOnHardWare/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrangePlus-SimOnHardWare/hwdef.dat @@ -3,6 +3,9 @@ include ../CubeOrangePlus/hwdef.dat include ../include/SimOnHW.inc +undef INS_AUX_INSTANCES +define INS_AUX_INSTANCES 0 + # short board name override (23 chars) define CHIBIOS_SHORT_BOARD_NAME "CubeOrange+SimOnHW" diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrangePlus/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrangePlus/hwdef.dat index 12b6caec69e7f..7237ee26c92c9 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrangePlus/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrangePlus/hwdef.dat @@ -48,9 +48,9 @@ SPIDEV icm42688_ext SPI4 DEVID4 ACCEL_EXT_CS MODE3 2*MHZ 8*MHZ SPIDEV icm42688_ext2 SPI4 DEVID5 GYRO_EXT_CS MODE3 2*MHZ 8*MHZ #IMU 2 -SPIDEV icm45686 SPI1 DEVID4 ICM45686_CS MODE1 2*MHZ 8*MHZ +SPIDEV icm45686 SPI1 DEVID4 ICM45686_CS MODE0 2*MHZ 8*MHZ SPIDEV icm20649 SPI1 DEVID4 MPU_CS MODE3 4*MHZ 8*MHZ -SPIDEV icm45686_aux SPI1 DEVID4 ICM45686_CS MODE1 2*MHZ 8*MHZ +SPIDEV icm45686_aux SPI1 DEVID4 ICM45686_CS MODE0 2*MHZ 8*MHZ SPIDEV icm20948_aux SPI4 DEVID1 MPU_EXT_CS MODE3 4*MHZ 8*MHZ # INSTANCE: keyword is used to denote the instance number of the sensor @@ -95,3 +95,6 @@ CHECK_IMU1_PRESENT $CHECK_ICM20948_EXT || $CHECK_ICM42688_EXT2 || $CHECK_IC CHECK_IMU2_PRESENT $CHECK_ICM42688_EXT || $CHECK_ICM45686_EXT BOARD_VALIDATE $CHECK_IMU0_PRESENT $CHECK_IMU1_PRESENT $CHECK_IMU2_PRESENT $CHECK_BARO0_PRESENT $CHECK_BARO1_PRESENT + +# build ABIN for flash-from-bootloader support: +env BUILD_ABIN True diff --git a/libraries/AP_HAL_ChibiOS/hwdef/FlywooF405Pro/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/FlywooF405Pro/hwdef.dat index 31007d5c35b27..7b5af147f8850 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/FlywooF405Pro/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/FlywooF405Pro/hwdef.dat @@ -151,3 +151,6 @@ define HAL_COMPASS_AUTO_ROT_DEFAULT 2 define HAL_DEFAULT_INS_FAST_SAMPLE 3 # Motor order implies Betaflight/X for standard ESCs define HAL_FRAME_TYPE_DEFAULT 12 + +include ../include/minimize_fpv_osd.inc +AUTOBUILD_TARGETS Copter diff --git a/libraries/AP_HAL_ChibiOS/hwdef/HerePro/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/HerePro/hwdef.dat index fb4c2e82451cd..0c8c2b46a8174 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/HerePro/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/HerePro/hwdef.dat @@ -64,6 +64,7 @@ FLASH_RESERVE_START_KB 256 define GPS_UBLOX_MOVING_BASELINE TRUE define HAL_GCS_ENABLED 1 define HAL_LOGGING_ENABLED TRUE +define HAL_PERIPH_ENABLE_RTC 1 define HAL_NO_MONITOR_THREAD @@ -86,6 +87,7 @@ define GPS_MAX_INSTANCES 1 define HAL_COMPASS_MAX_SENSORS 1 # GPS+MAG +define HAL_PERIPH_ENABLE_AHRS define HAL_PERIPH_ENABLE_GPS define HAL_PERIPH_ENABLE_MAG define AP_INERTIALSENSOR_ENABLED 1 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/JFB110/README.md b/libraries/AP_HAL_ChibiOS/hwdef/JFB110/README.md new file mode 100644 index 0000000000000..87f58272ae8af --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/JFB110/README.md @@ -0,0 +1,140 @@ +# JFB-110 Flight Controller + +The JFB-110 flight controller is sold by [JAE](https://www.jae.com/Motion_Sensor_Control/eVTOL/FlightController/) + +## Features + + - STM32H755 microcontroller + - Three IMUs: SCHA63T and IIM42652 x2 + - Two BAROs: MS5611 SPI barometer x2 + - builtin I2C IST8310 magnetometer + - microSD card slot + - 5 UARTs plus USB, RCIN, SBUS_OUT + - 16 PWM outputs + - Four I2C and two CAN ports + - External Buzzer (Open/Drain and 33V Out) + - external safety Switch + - voltage monitoring for servo rail and Vcc + - two dedicated power input ports for external power bricks + +## UART Mapping + + - SERIAL0 -> USB + - SERIAL1 -> UART7 (Telem1) + - SERIAL2 -> UART5 (Telem2) + - SERIAL3 -> USART1 (GPS) + - SERIAL4 -> UART4 (GPS2, marked UART/I2CB) + - SERIAL5 -> USART6 (RCIN) + - SERIAL6 -> UART8 (SBUS_OUT) + - SERIAL7 -> USART3 (debug) + - SERIAL8 -> USB (SLCAN) + + +The Telem1 and Telem2 ports have RTS/CTS pins, the other UARTs do not +have RTS/CTS. + +The USART3 connector is labelled debug, but is available as a general +purpose UART with ArduPilot. + +## RC Input + +RC input is configured on the port marked DSM/SBUS RC. This connector +supports all RC protocols. Two cables are available for this port. To +use software binding of Spektrum satellite receivers you need to use +the Spektrum satellite cable. + +## PWM Output + +The JFB-110 supports up to 16 PWM outputs. +These are directly attached to the STM32H755 and support all +PWM protocols. + +The 16 PWM outputs are in 6 groups: + - PWM 1 and 2 in group1 (TIM15) + - PWM 3 and 4 in group2 (TIM3) + - PWM 5, 11 ,12 and 13 in group3 (TIM4) + - PWM 6 ,9 and 10 in group4 (TIM1) + - PWM 7 ,8 and 15 in group5 (TIM5) + - PWM 14 and 16 in group6 (TIM12) + +Channels within the same group need to use the same output rate. If +any channel in a group uses DShot then all channels in the group need +to use DShot. + +## Battery Monitoring + +The board has two dedicated power monitor ports on 8 pin +connectors. The correct battery setting parameters are dependent on +the type of power brick which is connected. +Recomended input voltage is 4.9 to 5.5 volt. + +## Compass + +The JFB-110 has a builtin IST8310 compass. Due to potential +interference the board is usually used with an external I2C compass as +part of a GPS/Compass combination. + +## GPIOs + +The 16 PWM ports can be used as GPIOs (relays, buttons, RPM etc). To +use them you need to limit the number of these pins that is used for +PWM by setting the BRD_PWM_COUNT to a number less than 6. For example +if you set BRD_PWM_COUNT to 4 then PWM5 and PWM6 will be available for +use as GPIOs. + +The numbering of the GPIOs for PIN variables in ArduPilot is: + - PWM(1) 50 + - PWM(2) 51 + - PWM(3) 52 + - PWM(4) 53 + - PWM(5) 54 + - PWM(6) 55 + - PWM(7) 56 + - PWM(8) 57 + - PWM(9) 58 + - PWM(10) 59 + - PWM(11) 60 + - PWM(12) 61 + - PWM(13) 62 + - PWM(14) 63 + - PWM(15) 64 + - PWM(16) 65 + - FMU_CAP1 66 + - FMU_CAP2 67 + + +## Analog inputs + +The JFB-110 has 9 analog inputs + - ADC Pin16 -> Battery Voltage + - ADC Pin18 -> Battery Current Sensor + - ADC Pin9 -> Battery Voltage 2 + - ADC Pin6 -> Battery Current Sensor 2 + - ADC Pin5 -> ADC 5V Sense + - ADC Pin11 -> ADC 3.3V Sense + - ADC Pin10 -> RSSI voltage monitoring + - ADC Pin12 -> ADC SPARE 1 + - ADC Pin13 -> ADC SPARE 2 + +## I2C Buses + +The JFB-110 has 4 I2C interfaces. +I2C 3 is for internal only. + - the internal I2C port is bus 3 in ArduPilot (I2C3 in hardware) + - the port labelled I2CA is bus 4 in ArduPilot (I2C4 in hardware) + - the port labelled I2CB is bus 2 in ArduPilot (I2C2 in hardware) + - the port labelled GPS is bus 1 in ArduPilot (I2C1 in hardware) + +## CAN + +The JFB-110 has two independent CAN buses, with the following pinouts. + +## Debug + +The JFB-110 supports SWD debugging on the debug port + +## Loading Firmware + +The board comes pre-installed with an ArduPilot compatible bootloader, +allowing the loading of *.apj firmware files with any ArduPilot +compatible ground station. diff --git a/libraries/AP_HAL_ChibiOS/hwdef/JFB110/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/JFB110/defaults.parm new file mode 100644 index 0000000000000..0be0b0db51348 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/JFB110/defaults.parm @@ -0,0 +1,28 @@ +# board setting +BRD_VBUS_MIN 4.9 + +# setup SERIAL4 for BPort +SERIAL4_BAUD 57 +SERIAL4_PROTOCOL -1 +SERIAL4_OPTIONS 0 +# setup SERIAL5 to RCIN +SERIAL5_BAUD 100 +SERIAL5_PROTOCOL 23 +SERIAL5_OPTIONS 3 +# setup SERIAL6 to SBUS OUT +SERIAL6_BAUD 100 +SERIAL6_PROTOCOL 15 +SERIAL6_OPTIONS 3 +# setup SERIAL7 for debug console +SERIAL7_BAUD 921 +SERIAL7_PROTOCOL 0 +SERIAL7_OPTIONS 0 + +#Three IMU Setting +EK3_IMU_MASK 7 +INS_ENABLE_MASK 7 + +#RSSI Setting +RSSI_TYPE 1 +RSSI_ANA_PIN 10 + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/JFB110/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/JFB110/hwdef-bl.dat new file mode 100644 index 0000000000000..6a7b2f739bd48 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/JFB110/hwdef-bl.dat @@ -0,0 +1,139 @@ +# hw definition file for processing by chibios_hwdef.py +# for the JFB110 hardware + +# board ID for firmware load +APJ_BOARD_ID 1110 + +# MCU class and specific type +MCU STM32H7xx STM32H755xx +define CORE_CM7 +#define SMPS_PWR + +# crystal frequency 24MHz +OSCILLATOR_HZ 24000000 + +# the location where the bootloader will put the firmware +# bootloader is installed at zero offset +FLASH_RESERVE_START_KB 0 +# the H755 has 128k sectors +FLASH_BOOTLOADER_LOAD_KB 128 +# with 2M flash we can afford to optimize for speed +FLASH_SIZE_KB 2048 +HAL_STORAGE_SIZE 32768 + +env OPTIMIZE -Os + +# ChibiOS system timer +STM32_ST_USE_TIMER 2 + +# USB setup +# USB_VENDOR 0x0A8E # JAE +# USB_PRODUCT 0x8888 # This is temp Number +USB_STRING_MANUFACTURER "Japan Aviation Electronics Industry Ltd." +USB_STRING_PRODUCT "JFB-110" + +# order of UARTs (and USB) +SERIAL_ORDER OTG1 UART7 UART5 USART3 + +# serial port for stdout, set SERIAL7_PROTOCOL 0(none) when using +# The value for STDOUT_SERIAL is a serial device name, and must be for a +# serial device for which pins are defined in this file. For example, SD3 +# is for USART3 (SD3 == "serial device 3" in ChibiOS). +STDOUT_SERIAL SD3 +STDOUT_BAUDRATE 921600 + +# default to all pins low to avoid ESD issues +DEFAULTGPIO OUTPUT LOW PULLDOWN + +# USB OTG1 SERIAL0 +PA11 OTG_FS_DM OTG1 +PA12 OTG_FS_DP OTG1 + +# pins for SWD debugging +PA13 JTMS-SWDIO SWD +PA14 JTCK-SWCLK SWD + +# CS pins +PH3 SCHA63T_G_CS CS # SPI1_CS1 +PH4 SCHA63T_A_CS CS # SPI1_CS2 +PH5 MS5611_2_CS CS # SPI1_CS3 +PG6 AT25512_CS CS # SPI1_CS4 +PG7 FRAM_CS CS # SPI3_CS1 +PF10 IIM42652_1_CS CS # SPI3_CS2 +PH15 MS5611_1_CS CS # SPI4_CS1 +PG15 IIM42652_2_CS CS # SPI4_CS2 + +# telem1 +PE8 UART7_TX UART7 +PE10 UART7_CTS UART7 +PF6 UART7_RX UART7 +PF8 UART7_RTS UART7 + +# telem2 +PC12 UART5_TX UART5 +PC9 UART5_CTS UART5 +PD2 UART5_RX UART5 +PC8 UART5_RTS UART5 + +# debug uart +PD8 USART3_TX USART3 NODMA +PD9 USART3_RX USART3 NODMA + +# armed indication +PB10 nARMED OUTPUT HIGH # TP8 + +# This defines an output pin which will default to output HIGH. It is +# a pin that enables peripheral power on this board. It starts in the +# off state, then is pulled low to enable peripherals in +# peripheral_power_enable() +PG10 nVDD_5V_HIPOWER_EN OUTPUT HIGH +PG4 nVDD_5V_PERIPH_EN OUTPUT HIGH +PG12 VDD_3V3_SENSORS_EN OUTPUT LOW +PD4 VDD_3V3_SENSORS2_EN OUTPUT LOW +PD3 VDD_3V3_SENSORS3_EN OUTPUT LOW +#VDD_3V3_SENSORS4_EN OUTPUT LOW +#VDD_3V3_SD_CARD_EN OUTPUT LOW + +# PWM output pins +# we need to disable DMA on the last 2 FMU channels +# as timer 12 doesn't have a TIMn_UP DMA option +PA2 PWMOUT1 OUTPUT LOW +PE6 PWMOUT2 OUTPUT LOW +PA7 PWMOUT3 OUTPUT LOW +PA6 PWMOUT4 OUTPUT LOW +PD15 PWMOUT5 OUTPUT LOW +PE9 PWMOUT6 OUTPUT LOW +PH11 PWMOUT7 OUTPUT LOW +PH10 PWMOUT8 OUTPUT LOW +PA10 PWMOUT9 OUTPUT LOW +PA9 PWMOUT10 OUTPUT LOW +PD14 PWMOUT11 OUTPUT LOW +PD13 PWMOUT12 OUTPUT LOW +PD12 PWMOUT13 OUTPUT LOW +PH9 PWMOUT14 OUTPUT LOW +PH12 PWMOUT15 OUTPUT LOW +PH6 PWMOUT16 OUTPUT LOW +PD11 PWM_OE OUTPUT HIGH +PD5 PWM_OE2 OUTPUT HIGH + +# controlled manually +PG13 GPIO_CAN1_SILENT OUTPUT PUSHPULL HIGH +PG8 GPIO_CAN2_SILENT OUTPUT PUSHPULL HIGH + +# Control of Spektrum power pin +PH2 SPEKTRUM_PWR OUTPUT LOW GPIO(69) + +# LEDs +#PE3 LED_RED OUTPUT OPENDRAIN GPIO(70) HIGH +##PE4 LED_GREEN OUTPUT OPENDRAIN GPIO(71) LOW +##PE5 LED_BLUE OUTPUT OPENDRAIN GPIO(72) LOW + +PE4 LED_BOOTLOADER OUTPUT HIGH +PE5 LED_ACTIVITY OUTPUT HIGH +define HAL_LED_ON 0 + +#define HAL_USE_EMPTY_STORAGE 1 +#define HAL_STORAGE_SIZE 32768 + +# enable DFU by default +#ENABLE_DFU_BOOT 1 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/JFB110/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/JFB110/hwdef.dat new file mode 100644 index 0000000000000..6b8189410a301 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/JFB110/hwdef.dat @@ -0,0 +1,352 @@ +# hw definition file for processing by chibios_hwdef.py +# for the JFB110 hardware + +# board ID for firmware load +APJ_BOARD_ID 1110 + +# MCU class and specific type +MCU STM32H7xx STM32H755xx +define CORE_CM7 +#define SMPS_PWR + +# crystal frequency 24MHz +OSCILLATOR_HZ 24000000 + +# the H755 has 128k sectors +# bootloader is installed at 128kb offset +FLASH_BOOTLOADER_LOAD_KB 128 +FLASH_RESERVE_START_KB 128 +FLASH_SIZE_KB 2048 +HAL_STORAGE_SIZE 32768 + +# USB setup +# USB_VENDOR 0x0A8E # JAE +USB_STRING_MANUFACTURER "Japan Aviation Electronics Industry Ltd." +USB_STRING_PRODUCT "JFB-110" + +# ChibiOS system timer +STM32_ST_USE_TIMER 2 + +# enable board sub-type detection +define CONFIG_HAL_BOARD HAL_BOARD_CHIBIOS +#define HAL_CHIBIOS_ARCH_FMUV6 1 +#define AP_FEATURE_BOARD_DETECT 1 +#define CONFIG_HAL_BOARD_SUBTYPE HAL_BOARD_SUBTYPE_CHIBIOS_FMUV5 +#define HAL_CHIBIOS_ARCH_FMUV5 1 + +env OPTIMIZE -O2 + +# order of UARTs (and USB) +# SERIAL | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +SERIAL_ORDER OTG1 UART7 UART5 USART1 UART4 USART6 UART8 USART3 OTG2 +#USART6 is RX only for SBUS_IN +#UART8 is TX only for SBUS_OUT + +# serial port for stdout, set SERIAL7_PROTOCOL 5(GPS) when using +# The value for STDOUT_SERIAL is a serial device name, and must be for a +# serial device for which pins are defined in this file. For example, SD3 +# is for USART3 (SD3 == "serial device 3" in ChibiOS). +STDOUT_SERIAL SD3 +STDOUT_BAUDRATE 921600 + +# default to all pins low to avoid ESD issues +DEFAULTGPIO OUTPUT LOW PULLDOWN + +# USB OTG1 SERIAL0 +PA11 OTG_FS_DM OTG1 +PA12 OTG_FS_DP OTG1 +# default the 2nd interface to MAVLink2 +define HAL_OTG2_PROTOCOL SerialProtocol_MAVLink2 + +# pins for SWD debugging +PA13 JTMS-SWDIO SWD +PA14 JTCK-SWCLK SWD + +# telem1 +PE8 UART7_TX UART7 SPEED_VERYLOW +PE10 UART7_CTS UART7 SPEED_VERYLOW +PF6 UART7_RX UART7 SPEED_VERYLOW +PF8 UART7_RTS UART7 SPEED_VERYLOW + +# telem2 +PC12 UART5_TX UART5 SPEED_VERYLOW +PC9 UART5_CTS UART5 SPEED_VERYLOW +PD2 UART5_RX UART5 SPEED_VERYLOW +PC8 UART5_RTS UART5 SPEED_VERYLOW + +# telem3 for future use +#PD5 TP14 OUTPUT LOW #TP14 + +# GPS1 +PB6 USART1_TX USART1 SPEED_VERYLOW +PB7 USART1_RX USART1 SPEED_VERYLOW + +# uart4 +PH13 UART4_TX UART4 SPEED_VERYLOW +PH14 UART4_RX UART4 SPEED_VERYLOW + +# TX Only, for SBUS OUT +PE0 UART8_RX UART8 SPEED_VERYLOW #TP3 +PE1 UART8_TX UART8 SPEED_VERYLOW + +# RX only, for RC input +#PG14 USART6_TX USART6 SPEED_VERYLOW #TP10 +PC7 USART6_RX USART6 SPEED_VERYLOW + +# debug uart +PD8 USART3_TX USART3 SPEED_VERYLOW NODMA +PD9 USART3_RX USART3 SPEED_VERYLOW NODMA + +# ADC +PA0 BATT_VOLTAGE_SENS ADC1 SCALE(1) # ADC1_16 +PF12 BATT_CURRENT_SENS ADC1 SCALE(1) # ADC1_6 +PB0 BATT2_VOLTAGE_SENS ADC1 SCALE(1) # ADC1_9 +PA4 BATT2_CURRENT_SENS ADC1 SCALE(1) # ADC1_18 + +# setup scaling defaults for supplied power brick +define HAL_BATT_VOLT_SCALE 1 #18.182 +define HAL_BATT_CURR_SCALE 1 #36.364 +define HAL_BATT2_VOLT_SCALE 1 #18.182 +define HAL_BATT2_CURR_SCALE 1 #36.364 +define HAL_BATT_VOLT_PIN 16 +define HAL_BATT_CURR_PIN 6 +define HAL_BATT2_VOLT_PIN 9 +define HAL_BATT2_CURR_PIN 18 + +# Now the VDD sense pin. This is used to sense primary board voltage. +PB1 VDD_5V_SENS ADC1 SCALE(2) # ADC1_5 +define ANALOG_VCC_5V_PIN 5 +define HAL_HAVE_BOARD_VOLTAGE 1 +PB3 VBUS_RESERVED INPUT + +# JFB110 has SERVORAIL ADC +# Set SENSOR_3.3V power signal insted. +PC1 SCALED_V3V3 ADC1 SCALE(2) # ADC1_11 +PA3 FMU_SERVORAIL_VCC ADC1 SCALE(2) # ADC1_15 +define FMU_SERVORAIL_ADC_PIN 15 +define HAL_HAVE_SERVO_VOLTAGE 1 + +PC0 RSSI_IN ADC1 SCALE(1) # ADC1_10 +define RSSI_ANA_PIN 10 + +PC2 ADC1_6V6 ADC1 SCALE(2) # ADC1_12 +PC3 ADC1_3V3 ADC1 SCALE(1) # ADC1_13 + +# This defines an output pin which will default to output HIGH. It is +# a pin that enables peripheral power on this board. It starts in the +# off state, then is pulled low to enable peripherals in +# peripheral_power_enable() +PG10 nVDD_5V_HIPOWER_EN OUTPUT HIGH +PG4 nVDD_5V_PERIPH_EN OUTPUT HIGH +PG12 VDD_3V3_SENSORS_EN OUTPUT LOW +PD4 VDD_3V3_SENSORS2_EN OUTPUT LOW +PD3 VDD_3V3_SENSORS3_EN OUTPUT LOW +#VDD_3V3_SENSORS4_EN OUTPUT LOW +#VDD_3V3_SD_CARD_EN OUTPUT LOW + +# controlled manually +PG13 GPIO_CAN1_SILENT OUTPUT PUSHPULL LOW +PG8 GPIO_CAN2_SILENT OUTPUT PUSHPULL LOW + +# Control of Spektrum power pin +# no SPEKTRUM_RC pin so this is controlled +# manually +PH2 SPEKTRUM_PWR OUTPUT HIGH GPIO(69) +define HAL_GPIO_SPEKTRUM_PWR 69 +define HAL_SPEKTRUM_PWR_ENABLED 1 + +#Checked in Analogin.cpp -> MAV_POWER_STATUS +PG1 VDD_BRICK_nVALID INPUT +PG2 VDD_BRICK2_nVALID INPUT +PG3 VBUS_nVALID INPUT +PE15 VDD_5V_PERIPH_nOC INPUT +PF13 VDD_5V_HIPOWER_nOC INPUT + +# ID pins +PG0 HW_VER_REV_DRIVE OUTPUT LOW SPEED_VERYLOW +PC4 HW_VER_SENS ADC1 SCALE(1) # ADC1_4 +PC5 HW_REV_SENS ADC1 SCALE(1) # ADC1_8 + +# SPI1 - IMU1(murata),MS5611(BARO),EEPROM +PA5 SPI1_SCK SPI1 SPEED_VERYLOW +PB5 SPI1_MOSI SPI1 SPEED_VERYLOW +PG9 SPI1_MISO SPI1 SPEED_VERYLOW +PH3 SCHA63T_A_CS CS SPEED_VERYLOW # SPI1_CS1 +PH4 SCHA63T_G_CS CS SPEED_VERYLOW # SPI1_CS2 +PH5 MS5611_1_CS CS SPEED_VERYLOW # SPI1_CS3 +PG6 AT25512_CS CS SPEED_VERYLOW # SPI1_CS4 + +# SPI2 + +# SPI3 - FRAM,IMU2(42652) +PB2 SPI3_MOSI SPI3 SPEED_VERYLOW +PC10 SPI3_SCK SPI3 SPEED_VERYLOW +PC11 SPI3_MISO SPI3 SPEED_VERYLOW +PG7 FRAM_CS CS SPEED_VERYLOW # SPI3_CS1 +PF10 IIM42652_CS CS SPEED_VERYLOW # SPI3_CS2 + +# SPI4 - MS5611(BARO),IMU3(42652), +PE12 SPI4_SCK SPI4 SPEED_VERYLOW +PE13 SPI4_MISO SPI4 SPEED_VERYLOW +PE14 SPI4_MOSI SPI4 SPEED_VERYLOW +PH15 MS5611_2_CS CS SPEED_VERYLOW # SPI4_CS1 +PG15 IIM42652_2_CS CS SPEED_VERYLOW # SPI4_CS2 + +# SPI5 - External SPI I/F +#PF7 SPI5_SCK SPI5 SPEED_VERYLOW +#PH7 SPI5_MISO SPI5 SPEED_VERYLOW +#PF11 SPI5_MOSI SPI5 SPEED_VERYLOW +#PE2 SPI5_CS1 CS SPEED_VERYLOW + +# IMU Device Ready Signal Input +PF3 DRDY1_IIM42652_1 INPUT +PF2 DRDY2_IIM42652_1 INPUT +PA15 DRDY1_IIM42652_2 INPUT +PA1 DRDY2_IIM42652_2 INPUT + +PE7 SCHA63T_RESET OUTPUT LOW + +# SPI devices +SPIDEV scha63t_g SPI1 DEVID1 SCHA63T_G_CS MODE0 10*MHZ 10*MHZ +SPIDEV scha63t_a SPI1 DEVID2 SCHA63T_A_CS MODE0 10*MHZ 10*MHZ +SPIDEV ms5611_1 SPI1 DEVID3 MS5611_1_CS MODE3 20*MHZ 20*MHZ +SPIDEV at25512 SPI1 DEVID4 AT25512_CS MODE3 2*MHZ 8*MHZ +SPIDEV ramtron SPI3 DEVID1 FRAM_CS MODE3 8*MHZ 8*MHZ +SPIDEV iim42652_1 SPI3 DEVID2 IIM42652_CS MODE3 2*MHZ 8*MHZ +SPIDEV ms5611_2 SPI4 DEVID1 MS5611_2_CS MODE3 20*MHZ 20*MHZ +SPIDEV iim42652_2 SPI4 DEVID2 IIM42652_2_CS MODE3 2*MHZ 8*MHZ +#define HAL_SPI_CHECK_CLOCK_FREQ + +# JFB110 has 3 IMUs +# IMU devices for JFB110. The JFB110 board has a SCHA63T, two ICM42652, +# the SCHA63T and ICM42652_1 are on the same SPI buses and CS pins. +# The IIM42652_2 is on a different bus +IMU SCHA63T SPI:scha63t_a SPI:scha63t_g ROTATION_NONE +IMU Invensensev3 SPI:iim42652_1 ROTATION_NONE +IMU Invensensev3 SPI:iim42652_2 ROTATION_NONE + +# JFB110 has 2 BAROs +BARO MS56XX SPI:ms5611_1 +BARO MS56XX SPI:ms5611_2 + +define HAL_DEFAULT_INS_FAST_SAMPLE 7 + +# PWM output pins +# we need to disable DMA on the last 2 FMU channels +# as timer 12 doesn't have a TIMn_UP DMA option +PA2 TIM15_CH1 TIM15 PWM(1) GPIO(50) SPEED_VERYLOW +PE6 TIM15_CH2 TIM15 PWM(2) GPIO(51) SPEED_VERYLOW +PA7 TIM3_CH2 TIM3 PWM(3) GPIO(52) SPEED_VERYLOW +PA6 TIM3_CH1 TIM3 PWM(4) GPIO(53) SPEED_VERYLOW +PD15 TIM4_CH4 TIM4 PWM(5) GPIO(54) SPEED_VERYLOW +PE9 TIM1_CH1 TIM1 PWM(6) GPIO(55) SPEED_VERYLOW +PH11 TIM5_CH2 TIM5 PWM(7) GPIO(56) SPEED_VERYLOW +PH10 TIM5_CH1 TIM5 PWM(8) GPIO(57) SPEED_VERYLOW +PA10 TIM1_CH3 TIM1 PWM(9) GPIO(58) SPEED_VERYLOW +PA9 TIM1_CH2 TIM1 PWM(10) GPIO(59) SPEED_VERYLOW +PD14 TIM4_CH3 TIM4 PWM(11) GPIO(60) SPEED_VERYLOW +PD13 TIM4_CH2 TIM4 PWM(12) GPIO(61) SPEED_VERYLOW +PD12 TIM4_CH1 TIM4 PWM(13) GPIO(62) SPEED_VERYLOW +PH9 TIM12_CH2 TIM12 PWM(14) GPIO(63) SPEED_VERYLOW NODMA +PH12 TIM5_CH3 TIM5 PWM(15) GPIO(64) SPEED_VERYLOW +PH6 TIM12_CH1 TIM12 PWM(16) GPIO(65) SPEED_VERYLOW NODMA +PD11 PWM_OE OUTPUT HIGH +PD5 PWM_OE2 OUTPUT HIGH + +# GPIOs +PE11 FMU_CAP1 INPUT GPIO(66) +PB11 FMU_CAP2 INPUT GPIO(67) + +# CAN bus +PD0 CAN1_RX CAN1 SPEED_VERYLOW +PD1 CAN1_TX CAN1 SPEED_VERYLOW +PB12 CAN2_RX CAN2 SPEED_VERYLOW +PB13 CAN2_TX CAN2 SPEED_VERYLOW + +# I2C buses +# I2C1, GPS+MAG +PB8 I2C1_SCL I2C1 +PB9 I2C1_SDA I2C1 + +# I2C2, GPS2+MAG +PF1 I2C2_SCL I2C2 +PF0 I2C2_SDA I2C2 + +# I2C3, IST8310 Internal +PA8 I2C3_SCL I2C3 SPEED_VERYLOW +PH8 I2C3_SDA I2C3 SPEED_VERYLOW + +# I2C4 external +PF14 I2C4_SCL I2C4 +PF15 I2C4_SDA I2C4 + +# order of I2C buses +I2C_ORDER I2C3 I2C1 I2C2 I2C4 +define HAL_I2C_INTERNAL_MASK 1 + +# this board is very tight on DMA channels. To allow for more UART DMA +# we disable DMA on I2C. This also prevents a problem with DMA on I2C +# interfering with IMUs +NODMA I2C* +define STM32_I2C_USE_DMA FALSE + +# builtin compass on JAE JFB110 +define HAL_COMPASS_DISABLE_IST8310_INTERNAL_PROBE +define HAL_PROBE_EXTERNAL_I2C_COMPASSES +COMPASS IST8310 I2C:ALL_INTERNAL:0x0E false ROTATION_YAW_270 +COMPASS IST8310 I2C:ALL_EXTERNAL:0x0E true ROTATION_ROLL_180_YAW_90 + +# armed indication +PB10 nARMED OUTPUT HIGH # TP8 + +# microSD support +PD6 SDMMC2_CK SDMMC2 SPEED_VERYLOW +PD7 SDMMC2_CMD SDMMC2 SPEED_VERYLOW +PB14 SDMMC2_D0 SDMMC2 SPEED_VERYLOW +PB15 SDMMC2_D1 SDMMC2 SPEED_VERYLOW +PG11 SDMMC2_D2 SDMMC2 SPEED_VERYLOW +PB4 SDMMC2_D3 SDMMC2 SPEED_VERYLOW +define FATFS_HAL_DEVICE SDCD2 +PC13 SD_CARD_EN INPUT + +# safety +PD10 LED_SAFETY OUTPUT +PF5 SAFETY_IN INPUT PULLDOWN + +# LEDs +PE3 LED_RED OUTPUT OPENDRAIN GPIO(70) HIGH SPEED_VERYLOW +PE4 LED_GREEN OUTPUT OPENDRAIN GPIO(71) LOW SPEED_VERYLOW +PE5 LED_BLUE OUTPUT OPENDRAIN GPIO(72) HIGH SPEED_VERYLOW + +# setup for "AP_BoardLED" RGB LEDs +define HAL_GPIO_A_LED_PIN 72 +define HAL_GPIO_B_LED_PIN 70 +#define HAL_GPIO_C_LED_PIN 71 +define HAL_GPIO_LED_ON 0 + +# PWM output for buzzer +PF9 TIM14_CH1 TIM14 GPIO(73) ALARM SPEED_VERYLOW + +# RC input (PPM) +PC6 TIM8_CH1 TIM8 RCININT PULLDOWN LOW + +# enable RAMTRON parameter storage +define HAL_STORAGE_SIZE 32768 +define HAL_WITH_RAMTRON 1 + +# allow to have a dedicated safety switch pin +define HAL_HAVE_SAFETY_SWITCH 1 + +DMA_PRIORITY SDMMC* UART* USART* ADC* SPI* TIM* + +# enable FAT filesystem support (needs a microSD defined via SDMMC) +define HAL_OS_FATFS_IO 1 + +# enable DFU reboot for installing bootloader +# note that if firmware is build with --secure-bl then DFU is +# disabled +ENABLE_DFU_BOOT 1 + +# External watchdog gpio +PG5 EXT_WDOG OUTPUT SPEED_VERYLOW +define EXT_WDOG_INTERVAL_MS 50 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/KakuteF7Mini/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/KakuteF7Mini/hwdef.dat index b75699ac4cecc..561fc3011616a 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/KakuteF7Mini/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/KakuteF7Mini/hwdef.dat @@ -152,9 +152,6 @@ ROMFS_WILDCARD libraries/AP_OSD/fonts/font0.bin define STM32_PWM_USE_ADVANCED TRUE -# disable SMBUS battery monitors to save flash -define AP_BATTERY_SMBUS_ENABLED 0 - # disable parachute and sprayer to save flash define HAL_PARACHUTE_ENABLED 0 define HAL_SPRAYER_ENABLED 0 @@ -166,3 +163,4 @@ define HAL_MOUNT_ENABLED 0 # save some flash include ../include/save_some_flash.inc +include ../include/minimize_fpv_osd.inc diff --git a/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-TE/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-TE/hwdef.dat index 3df3c125b0cc5..a69d9a94cf9ca 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-TE/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-TE/hwdef.dat @@ -176,9 +176,10 @@ define HAL_GYROFFT_ENABLED 0 # --------------------- save flash ---------------------- # save some flash +include ../include/minimize_fpv_osd.inc include ../include/save_some_flash.inc include ../include/no_bootloader_DFU.inc -define AP_BATTERY_SMBUS_ENABLED 0 + define HAL_PARACHUTE_ENABLED 0 define HAL_SPRAYER_ENABLED 0 define AP_GRIPPER_ENABLED 0 @@ -188,4 +189,4 @@ define HAL_NMEA_OUTPUT_ENABLED 0 define HAL_BUTTON_ENABLED 0 define AP_NOTIFY_OREOLED_ENABLED 0 define HAL_PICCOLO_CAN_ENABLE 0 -define AP_BATTERY_SYNTHETIC_CURRENT_ENABLED 0 + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-Wing/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-Wing/hwdef.dat index bb6c015ff8ca4..089fd07fdfebd 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-Wing/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/MatekF405-Wing/hwdef.dat @@ -182,13 +182,6 @@ ROMFS_WILDCARD libraries/AP_OSD/fonts/font0.bin define STM32_PWM_USE_ADVANCED TRUE -# disable SMBUS battery monitors to save flash -define AP_BATTERY_SMBUS_ENABLED 0 - -# disable parachute and sprayer to save flash -define HAL_PARACHUTE_ENABLED 0 -define HAL_SPRAYER_ENABLED 0 - # reduce max size of embedded params for apj_tool.py define AP_PARAM_MAX_EMBEDDED_PARAM 1024 define HAL_GYROFFT_ENABLED 0 @@ -196,8 +189,6 @@ define HAL_GYROFFT_ENABLED 0 # save some flash include ../include/save_some_flash.inc define AP_GRIPPER_ENABLED 0 -define AP_BATTERY_SYNTHETIC_CURRENT_ENABLED 0 -define AP_BATTERY_SMBUS_ENABLED 0 define HAL_PARACHUTE_ENABLED 0 define HAL_SPRAYER_ENABLED 0 define HAL_RUNCAM_ENABLED 0 @@ -207,6 +198,5 @@ define HAL_BUTTON_ENABLED 0 define AP_NOTIFY_OREOLED_ENABLED 0 define HAL_PICCOLO_CAN_ENABLE 0 -# only include ublox GPS driver -include ../include/minimal_GPS.inc +include ../include/minimize_fpv_osd.inc diff --git a/libraries/AP_HAL_ChibiOS/hwdef/MatekL431-ADSB/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/MatekL431-ADSB/hwdef-bl.dat new file mode 100644 index 0000000000000..b9005f84941a6 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/MatekL431-ADSB/hwdef-bl.dat @@ -0,0 +1,2 @@ +include ../MatekL431/hwdef-bl.inc + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/MatekL431-ADSB/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/MatekL431-ADSB/hwdef.dat new file mode 100644 index 0000000000000..ad595a85b8aa6 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/MatekL431-ADSB/hwdef.dat @@ -0,0 +1,11 @@ +include ../MatekL431/hwdef.inc + +define HAL_USE_ADC FALSE +define STM32_ADC_USE_ADC1 FALSE +define HAL_DISABLE_ADC_DRIVER TRUE + +# ENABLE ADSB +define HAL_PERIPH_ENABLE_ADSB +define HAL_PERIPH_ADSB_PORT_DEFAULT 2 + + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/README.md b/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/README.md index f31370c7e9ce0..4c848bb09a2b3 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/README.md +++ b/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/README.md @@ -1,23 +1,30 @@ -# Serious Pro Racing H6 Extreme Flight Controller +# Serious Pro Racing H7 RF Flight Controller -The SPRacingH7 Extreme is a flight controller produced by [Seriously Pro Racing](http://www.seriouslypro.com/). +The SPRacingH7 RF Extreme is a flight controller produced by [Seriously Pro Racing](http://www.seriouslypro.com/). + +![SPRacingH7 RF Top](spracingh7rf.jpg "SPRacingH7-top") ## Features - - MCU - STM32H750 32-bit processor running at 400 MHz - - 16MByte Serial NOR flash via QuadSPI - - IMUs - 2x ICM20602 + - MCU - STM32H730 32-bit processor running at 520 MHz + - 2MByte Serial NOR flash via QuadSPI for firmware + - IMUs - ICM42688 - Barometer - BMP388 - - OSD - AT7456E + - OSD - Pixel, not supported currently by ArduPilot + - I2C port - Onboard Flash: 128Mbits - - 7x UARTs (1,2,3,4,5,6,8) - - 11x PWM Outputs (10 Motor Output, 1 LED) - - Battery input voltage: 2S-6S - - BEC 5V 1A + - Integrated ELRS receiver, not supported currently by ArduPilot + - microSD card socket + - 5x UARTs (2,3,4,5,8) + - 9x PWM Outputs (8 Motor Output, 1 LED) + - Battery input voltage: 2S-8S + - BEC 5V ?A ## Pinout -![SPRacingH7 Board](SPRacingH7_Board.JPG "SPRacingH7") +![SPRacingH7 RF Top](spracingh7rf_top.jpg "SPRacingH7-top") +![SPRacingH7 RF Bottom](spracingh7rf_bottom.jpg "SPRacingH7-bottom") +![SPRacingH7 RF onnectors](spracingh7rf_connectors.jpg "SPRacingH7-connectors") ## UART Mapping @@ -25,67 +32,65 @@ The UARTs are marked Rn and Tn in the above pinouts. The Rn pin is the receive pin for UARTn. The Tn pin is the transmit pin for UARTn. - SERIAL0 -> USB - - SERIAL1 -> UART1 (DMA-enabled) - - SERIAL2 -> UART2 (RCIN one wire, DMA-enabled) - - SERIAL3 -> UART3 (DMA-enabled) - - SERIAL4 -> UART4 (DMA-enabled) - - SERIAL5 -> UART5 (DMA-enabled) - - SERIAL6 -> UART6 (On motor pads 7/8, with alt config 1, DMA-enabled) - - SERIAL8 -> UART8 (DMA-enabled) + - SERIAL2 -> UART2 (RC input) + - SERIAL3 -> UART3 (DJI) + - SERIAL4 -> UART4 (GPS) + - SERIAL5 -> UART5 (ESC Telemetry, RX only) + - SERIAL8 -> UART8 (USER) + + All UARTS are DMA capable ## RC Input -RC input is configured on the T2 (UART2_TX) pin. It supports all serial RC -protocols. For protocols requiring half-duplex serial to transmit +Ardupilot does not currently support the integrated ELRS chip. + +RC input is configured on the R2 pin. It supports all serial RC +protocols. PPM is not supoorted. For protocols requiring half-duplex serial to transmit telemetry (such as FPort) you should setup SERIAL2 as an RC input serial port, -with half-duplex, pin-swap and inversion enabled. - -## FrSky Telemetry +with half-duplex, pin-swap and inversion enabled. For duplex protocols, like CRSF/ELRS, T2 must also be connected to the receiver. -FrSky Telemetry is supported using the T2 pin (UART2 transmit). You need to set the following parameters to enable support for FrSky S.PORT - - - SERIAL2_PROTOCOL 10 - - SERIAL2_OPTIONS 7 -## OSD Support +## Pixel OSD Support -The SPRacingH7 supports OSD using OSD_TYPE 1 (MAX7456 driver). +Ardupilot does not currently support the integrated OSD chip. UART3 is setup fir use with DisplayPort goggles with OSD. ## PWM Output -The SPRacingH7 supports up to 11 PWM outputs. The pads for motor output -M1 to M4 on the motor connectors and M5 to M8 on separate pads, plus -M11 for LED strip or another PWM output. M9 and M10 are only available on the stacking connector. +The SPRacingH7 RF supports up to 9 PWM outputs. PWM 1-8 support DShot and Bi-Directional DShot. The pads for motor output +M1 to M4 on ESC connector 1, and M5 to M8 on ESC connector 2, plus +M9 for LED strip or another PWM output. The PWM is in 5 groups: - PWM 1-4 in group1 - - PWM 5, 6 in group2 - - PWM 7, 8 in group3 - - PWM 9, 10 in group4 - - PWM 11 in group5 + - PWM 5-8 in group2 + - PWM 9 (LED) in group3 + Channels within the same group need to use the same output rate. If any channel in a group uses DShot then all channels in the group need -to use DShot. Channels 1-4 support bi-directional dshot. +to use DShot. ## Battery Monitoring -The board has a builting voltage and current sensor. The current -sensor can read up to 130 Amps. The voltage sensor can handle up to 6S +The board has a built-in voltage sesnor and current sensor input from the ESC connectors. The voltage sensor can handle up to 8S LiPo batteries. The correct battery setting parameters are: - BATT_MONITOR 4 - - BATT_VOLT_PIN 10 + - BATT_VOLT_PIN 13 - BATT_CURR_PIN 11 - - BATT_VOLT_MULT 11.1 - - BATT_AMP_PERVLT 59.5 + - BATT_VOLT_MULT 10.9 + - BATT_AMP_PERVLT 28.5 (will need adjustment for the current sensor range of the ESC) ## Compass -The SPRacingH7 does not have a builtin compass, but you can attach an external compass using I2C on the SDA and SCL pads. +The SPRacingH7 RF does not have a builtin compass, but you can attach an external compass using I2C on the SDA and SCL pads. + +## User Manual + +http://seriouslypro.com/files/SPRacingH7RF-Manual-latest.pdf ## Loading Firmware diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/SPRacingH7_Board.JPG b/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/SPRacingH7_Board.JPG deleted file mode 100644 index bde98e1a7b5df9cba99b3e57add4616730df46e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146019 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 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/defaults.parm index 39cc0c6d2e3d9..1515538fc9c22 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/defaults.parm +++ b/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/defaults.parm @@ -5,6 +5,13 @@ NTF_LED_TYPES 257 # setup SERIAL2 for RCIN SERIAL2_BAUD 115 SERIAL2_OPTIONS 8 +SERIAL2_PROTOCOL 23 # pinswap UART5 for ESC telemetry SERIAL5_OPTIONS 8 +SERIAL5_PRTOCOL 16 + +# setup SERIAL3 for DJI +SERIAL3_PROTOCOL 42 +OSD_ENABLED 1 +OSD_TYPE 5 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/spracingh7rf.jpg b/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/spracingh7rf.jpg new file mode 100644 index 0000000000000000000000000000000000000000..98a9611e1579d974089c2b33074b80f37b8daa31 GIT binary patch literal 63666 zcmb4qWl&vR%g;Z8XYJ-qDoD!1ituj(AP#_m{sQv_8V2SI z3@j`R90Do=0z5ndCNc^lDh?(tE)FI(Ha-y*2|fV@AvQKCBPj(n4IMol9tjgG6D=zh zEgkKDn?S(A!Xm&SU?3o1(Bfm`)BbfcWy? zRsUBY0FY3h{=&k2YVkfb|H=OijYB5^85}#r%u2`B990XC5?oQWY2BPZ(v@tr{IG60W}OQqAErQ zTJ9cFL`ZOzuCEOXr;Xz^39FwOW4newu?R~YP(&jzgsGouRbf}?OZ*W8AVsz+j8^GG z4Uzg)03Dn~3Q8bcAYb62`t}nZ6;qNNReu39LQY3jxvywr+5!8I`$)xDy#bB%fVIhe zY}hD@s*=r*hXrI2Ce8qA+;d!OUwU6CIrLBUkjW;)r>m^R!1q zfeddjgcz-=)3?O$yT332yCfnlDnUH(#S&<+5WHasq|UbG#ldidgmVXAW7|BcvK-sB z{myQeyTTs%h#T!5oDnspBlrK8%%(od6J&`^JA1w+_0d43<$0|MH+3QB1NTyR!&Hu{WZUfMm|p&5`hLSiB=pmE%617 z5*9ll|C(|aJv6+XDA$+c@2dc-{V`Dsc@g7@t`m3cIL`raTj$RU_ML(3PF{!Y3X_Bd z=g3%pybU^9sXrb+JV9ki^mib7c6h zGWkitVuge-ZMc%PP)WtAU)4e);k11X^GIsXCH0!S9-xARt7dIkR9U1RCh=0-(P^x4_5dt1|VSO>X7uydW5pvN8 z@&P}8iazmGeMroTX{YFKV&tx}ocT16@KJ8OJVnsPU6{wvrPvR;bzZa7s~&s z8Tj@!6PEl}h%|M6Q$oIS@mw1!4Lw|f^?{|k#{<*u%ds4xmM8v=1}bMXnb%S7WWVzk zV*DRpoEg8%o_G!JAs=c`)~Q<3B}K-qd-sf@R)M`a=ecReJ^S80;$UJ`YP*3zTGAI! z!K_Mn8@tXjVBfyeg~bIe$Ed`pY4|r2<}r!u1W|}u2P+8?yBb^s+&_tRwl*#+XRsmY z3525zKgir1(Oe~x;Nb~ZNYN`AIFnp+zRHuRUw0C3fKe)hb?6SATlo#SqY5;gN%Y(2 zT)UUGTKE*S_)-^k)RT&n2xi=BrV7GQxM${;^Z2zp;|MCZ?5uIB!r`AsP7Yddq;y`a zd9C*9;mD8?bRV=I&7@c2)+d{EnLL?`^GgQ#b$Vg!jm(b7K{boMh8g>i9S%Ytn#-o< z3#GH3C+%Hj-|x$l)IXP)OobrHQ)v?d;bk&++!)6%>u^s>TB@%E{!Jp6s?elLREwNPJ4$Z$DNzMPe!G ztf;IZzPTj|;@{09V7}fo$`aPbqZMluwCF2R_yYdWW!RbKwh`M;Q6zOE-XEGUvs**3T$Ub zx@+;z9QeQl${%g`ZO;k;-?l8OT_2yS<~1&W-j36?cCOt-Ml5A3XU;DMLK5u(p-0`= zz!SY~j8g;PT5*Rt?HP_U?+gjw$x{b#?~r}O09&mabmY*!_2+mzbG0aQ!_$Seu);() zI`yM2ImxyioC?lpnHjCT_4k{p%bsfV8Wi(a)OWJ=;p_=i%ADRl+;puo?RaLobj2_= zXmon;3pfTI6U5e{&OI#Z?tV)=u??b>7oT#;FYpkQPtjA`_|s`h>_Eh6Ao{$t&M|v3 zrOsr2Kge}zv-N%JciY*!xp>&Ex6nrZc^$`{9`Dx8QjuJl5Oy(U4u5Xmn7w7$oIVYd znquZG;z_qk{c5$04s>Ei>1qDF43bxoSe{^_s)P?kmLQ8TrLK3>MvAUgeKc+r9R5&xeX7w?Wv;%~ms04Pn{XT_OL27SZ7$xD^lGsIzKO}4T` zRNfs)N?`(M`SL#mH6@wzFlt#8qMOf;7>Yb9X1fO{pIh$Q^)EYfr?)%Do$fn~JN#OG zXXlQU_qc1bC^)>msUPsToUZjty2gH)O@FT-eA;V4a-PcaXl%8UqoA1TtFhDbr{BFi zGoccexUouZ-Zw%VOR|4m6jpIvusPFOcbzV2hu)i9KDlat$)R-FQ@7QqYHq3bJZKcu zX^blA=vs63)O_3i%VU_FqW`Ndyf;rRFuHfd-9Ao*_P@AUFxd2&)cQ~QDwEN zx+e<1>GtL3qIh)uZ|cpKo6D`HqsGn2f}LFaDuK|{b^Gkt>0;#xYwPp9k9jcn&#b)B z7i{9&(f+EuMXc%4RnRisLeVOW=B`ZrJw47qY1_<-u?x=#= zWN0Np`b@u(aCszdF-MzO>pae6lJfY^%*uFLsxLp`M{o3r zp1gjCF|nKkNmMCcRqx-<;%wA zJXbz>E<=aLld}|=MMl$=c3r%j621k*VJdwcJ5z?Q$jy`3n!iurU0vx3h@?owb3L%O ztlNqy2;k`fp>`aL6ESUgoi|plj#+qR%vC&p1%|1+ZdS{WiFE3bxl1w`^^gym-#*qT zl7zXxi|O7#E%P+bUG*zPg6H}fIKvpQ>_QU{ZQLfK6f0~W*e$Fl~ zEOo*La$+_umwg%c;m-T3tP^BFO3g>akW##wzbtWg!&;?AQ((NadK>+8I;(mA55T(3 zM=`Y3Fs)L?s27`ofj7GZrnQ8bX*K1DUJ~qjAY9^9!A4bH?jKNabiwnvRRhgc1laks zpC>B{ObEPl+l+F{Q2sd1imFfNCT%{x(|5OSyEMm30Zx;%2%5Px#UY9(XB43Wk>u|0 zCI`+MUlo86!7G`ws(>VS6kd~6m9ax!t5-Nqxg&aI9R z$4sqDAjoMD4&OdVgyWJ&fqGTQ1Fby<4kMP5lRR&&r6xDWgO>J|9=9vLjDnh+1Qkb; zCe{KEKn8Qk7(ItNO8Jwmtgq=G4Vtj{f1ja-NQ zstTP`dD23&S|kNCd)*U%UG5vYHO{Z5MW3;ki}JE+llnb|&DWcCJYIW-T&73DOr8d6PxO^Oo+Xg~{)9YJL!OWrIH$^5ilax?7J{s#X#+QU_r|-a1+<|GaL? z6WI$1^PKTivTn;P*GLj@t&MG);{Q++K?yhvP6=jw@Zg(eI5(#o}WT(ZQ z={YD~bd8mrPt^W;emX5tT+y5L8_icPnUu} zTj!}6GN)nLPBt4@=E z=aK*|-oJJ+Z2+0Bl6aF`*&2eWXTDLnMjXN*z$=p`PU|I6j{$30cQX`GoR$++N3tYm z;)d2YcPz@dvuBN4xSGAUb&1{z6MTL81t9pM31^lC41<&sJ118x;zk5HxZr%9D+rEy zQtkFOoK|wP>QZZ!OihJyF+EBj4m$m*ytPi*Z;~l66vMn#!@QbL{ZhfVcL%dJP~zp| ze+6ErhQQu$rb^L6bt}oMc?)F}bgl*%Yh^UR$tS(+<>IIS$cJh|^pHsWh~K0s(3M)S zHk9A87qDeReo%)(V2D*8nB9J?1#;f|uf7Ll`Drv=awB#Hq%jm_)itJ_Cctv%>s1z? zFx@WP-rTvaXW zp_aV@rgJmx{D1G+4Q^hZ9^JMbdxd32MrIOta@6s40u11b0sgPhg&ij z$#QC(SOm!w2${#YoOI*~ITGnlBcIOkWaRIEM=ue{$K2KPNTX;vXg>NO*v6SCPnAy# zPl}ySnWdRYWcpK|my~y+TP8kh#;0Ve<=hwZmFa6P0mZl5>^bRTdUjo0N_+LP3YgV) zK_GIidz#IQDPb%T;%&BlPfEotby9torJ20eNa1Y3{In-=^)rhl8$}WS_3Gpt_H9kB zP@X}QxJvim@dg}=LPaYV_Tm`I2((O!PN8s2Eh3g&oTl9eO6oQwWK1{+Q2;7*itK*1 z%&tQ8S9>8Pp|T!9y>qvjGsAy?99d~t>`_@MTuJ;$*)If#ciJ7 z=FsVI8DgZ8WW4(0X-9LnMJ+iaq;WEA$neNE00|WvGB`K@YOD-t+~{J_gb#HXhQ(vS z*8GXUQkuFURr+K>oSSLX_ovMe!v3*JYkA^e@~|TV`h~@+7GjGJ&q51$oy`p>E%fS+ z6rQUfs>M<3x~#lP0xa@be|&cmsiW+Rr%W-YC|>!OrJ$QAxRke0Q6!wSl*nJJN74|IUl_D*sMUI^hqy5?W^&xqY}ID z+TlW!@EBIX@VKK9yakb9JXNcvD%m6An6s7h7qd*xCSE41`T7xy<4cqK+p4w8^SxCE zy)p&KBv2*=vuK0v@f}0YdyM;Vye8K8Pt9IEQ3V{4FN1cSav7P_j;w9fVh}%~MdU=1 ziZg@7rKt;sAV`Bj6`WDGdfYxcCD|7%t;Z`r8fbZ_>XSm?G0l>wXcq{nldyTAp%wG7 zs9d#Cc{4@7q_qT5vRxxuSJj}({}H)RDd$**^~Ka2*yv&hF_ zwVB(4$@9bl5Sv?(nbrPET4gfewJ`xC zB*-YODA6#X(a|B-CS}nHF$rUo>uF7{H8qSdBIis)P)KW5N7KtMS5*5-s3TSxh zV#k$bdSdkBMXhpGxK_y5R#hK9)hz+C*PFp~E6r-(b}%08bi)Fyi({WKAfw<&L&(TJb4GL~b=3TXig{y-Lce&X1SG36%)M9_w3v`447iA6NQ6K1 zY@sq^i&U=rVk_np2;uBf3E@H&pl%~sde;tzc~zV2)2m)h{3feW96bvwyWwaJ@Xfbp zq7YRWiF{fS($py1%(<`v%5_>YN~vGfaFHr--wG&I%A+6;!~6R2 z9nv4|>fO(i*Gs8q_hm)I#sOnIJwW=Rd$vz}{Rq{qMlct}sap zBu)&q$6I2dg4d^vJ7D`ifaHsDzA)O|`l-}gL|G#sjeR(ycyVv-TgrsD34R?)AzT^=ZZSprSW? z^X22>?eU5jc4lNZ1Fw1^ zyR}%%lSNOK$R`^(dC_Mg#{j@v2QjaMdkYwMD}fuu?4H-Xr&oMml!T=YKd<-V{58<1 zj--ybYRe^T7o=UwcV$`bWOJ$r|7uv`A^Pm~?sW)FEUY{C?uoMF6getlR}R|oc~f$J zHGUF@4L~{E%Bbz~S1cX>siyle+nfHJM^b-7!lFiU5UdIg>ng=~R^9~jtyy2vMxD)@ zwB+;WDNl=Kmo^`iE18y_yIvB(zih`i^a=h|^LHn_w5>rOESI5%fCdQ%D8}D^%P88we_+SE=QSp*ja8S#TsivF%0{A&qF zul4=yHLAE#V{HEPZOvbpMAOFrnQ5dE`yb$U+meRryg}8W|9g_LU=pV#=px$xJs9R6 zVBJ6VG|*BiAlkupmo&;9^1-4Y&-CE&o#5l=yHW4vbZ3|pHHINbIi;lKRVg8Nf5RYx zp{k{>)4(>(lGNz_Gcn58n^JuH>#c#^ z^{*l?45I7zKVnsHX)=k%uEFsf9CURg8KuCH!K?(G)J~?n{vILVQjA|%O?jJc-P6Rn zE2tppp+dE}<(D_O*~6#E9A?zl2xZVVQV@5ek7eHy5}8>EOVg0ooA?li zHOn^lt=fi(yp#54TR_&iPbTYw@EMIgV1t)Ba4BTDaP}qgg)$HSjL3HMh`XXsu|Irv zr%$QkDbEL~`Me-q?|0;YVgVWTkcQ=KadAM@v z*SzJKKh&f`JtIMgbKb*i4F6xFLQh1&yzQ0%{PXjX**Ff@zkA(^t@rN+@d?nG&N7kO zMtqsE;WAAuTAGADsTj%?k%khzFi~tSBng*Vanp1awwOFH6P!7CBfj>6saDPO16M5M z6I79oWveItqRaJ>%3~F=kAhqj!H`eGX5wjzR%3_s{pBqSj7Y+3V{fwo+=x(h4|zo& z#mQIT!DAzq-UJ~J0e|u1`-6L7?WgSYlR{2KNui6T)uT z%_2x3mh;^N%S5_ijsg0MCTMyX9^pF0v0rr$EYZkg5HoqEp{wARMTW~ z(1}#XKx(CEA+eA=|LTO$QuUM<)pC0fyqFd1Or}O}(5eI{S&EehwDMgePGmKKHVaLewvD<6&-QSBf_bunVFNXx` zd@N_W|FJHtha?~%W-fzM9`T&ju5|r|VILx|VF4UkZSm4HKH-a$=T$PCn;HKW8=&2j zyF9^mUJ}3v^_3M>zeDuwR8(oNqlKDpg{j>(4t#}teZwQwjrp}5)sAA@P|FksGcd0E z5(ECb|9On=LWk{m;bLk{q`Rl@Z^m;e_qG7o0Ab5Z4?j;Jr^L<=>Mo+l-vK0z2fe~- zk2g+u>^Yb(9=`iJ@d+7NQ(fn17x%rR41$+J$MPTa4jgk=F1QEAT1t00wxDiFHc1UV z*LDQP?sRdUi=dSD>OZe5Dwlt>r0BJ&n5O1`>JnVrw3wOTnp{Z<^c%8Ma+BgN) z>&@4nyS`BUag$|TKi|Swjj%6KI${gb~~oSPhSXaO^qPN@$|4= zgWKOZ{sH14=t}5}PAO@pW+dfjgvambpLr-#k`m3rxC3Nm8N#wu;qtO_7A`{Cb?ts`-*P1zaF(W&sjBKu zpg~}CMETOt} zR#P1gd9tF1c<4lZ<}E)O6E)87(Ev5)nAHOY%vUmFYh7%f)i=#Hb(fyul7`0Iy+>TE z&+>(b$mHE;YQVZOD5ZHsu0D%ix{Ir&$91rU6#J!=X^!X#r9vEhXm8A#hkp}aAtjG; zP~-g;MD2hE!SNtfx`$E3Uf(Y7>!u0cKH*?y7FDtqH@Ce=03t5TAfK2&P_Gk?13OZA!Ir)$Hy<1H%ls%fCYGKKPbJe@4LewP!_uJ$8OO);Id7O5jH4P}sMaz^%G5ex~!_Wfo$H=sVm zQMN}fxHaGa(Kh1if!Dtb1@YrdEkRSm%6g6OhKuyfF#tt5F8?CXK$N3AJ?-Y_WG-FO zQEnHPiJ%~Kpd4beU>nzgS&JQh^FQI-&@Cwa3rz;IlYG1+x{ql|8;ElGxC^52v;~H?uYB6I&6*E%&s#@)L z){UwyhmE}eJ1eNy*B_E6i4_Hy5nI>|I*vLd7vag55PRWNoKD|0VIY~Ry6SFAc^{ZZ zf9Kz883k0IpJJM}sMko^z7Qn~{W0VjtNI6+*M!Xa*D#9Ov?O3I{3=0eQ*;C0HXBDY;b}A2k#^;*Wi6 zsTw;c-hTjarbbBeewAQLakyTMER3RUoANTDqf!v0WXOrxp|pdV#IO7e zMIKZZ`EE1i61J=DksEO=gQQR9K^9-M}OfMkT#TefuXLjx%K(&-u*Z$ns0ImwVh@IBQ2!m2r zfXdMf7i>yhrXMg2YRo>n__NolQKM&a_*LCMHsghvAtRuWrmXDdZxw!a)lI#Bn*>Qf zg$z+mn1IEaEzHPm7i+EG;eK9Gm#cit~)~ z4-iYkms(j5Zc>j{^{W=?cTS`_z@;`63-Lux9iI&ljW$L#=ln2EHSd(-r|(Q(^86_4 z75=sT7O;Ef$u(fF>%gi&jHVr_7nYMUR&wGe5M-0gzVZ)%f#tFT;^0&wA?bYNupJ$f zI|br10fD^bgGuKUybNiFf~7tpuE}S(o+^$vE-uwJ22n+1cU5(RbsV5c9rKx^^WRLG z_~4Otd!-^qa~b#HNd6R!u@Ym6O9?CewW@+qjT?~ltwvc8OWx1a(hKtwbdR}e9I+s1+YsMv{aPl|-FOtQeM%x;L zk6Ma3$MaAeO{}d!<)Fm5%Cm*DTWXE0ee(X={~v!H+Kn3fI)zBebZGe$MLn43@Z?JwTMcoL{iymWM9?1~gm`I6vITs*2~M_1*(r#8nba+Xw#)vUCHQd>}Y zXxTV<{QjMrrv@A>=eNBt zrpW7fBIL)$;TfB&*|YiajrZJTeZ~JMmO7R*sh;QlQQx$bHP`V|YJcmG4MDa19xN35 z)3h%VjlB3PteUH<6WbH*XO;qN|CoCaHi&%2YYlJn3Nok6I!AD4Fg&k>mj0PbRDNQ~4_pP6YtVt&cZA4ccaZ}B@p+%~HR4dRPeUiu~15f_eJWdFLJt}Cdj9@cF z(|oL;TQzD0J}!2QJj}68%!vl^kU6pzj zHHxJcOrGQ#0|u$k4I{1)^nr;^>AdmcffQR|Gvrehs-N*k);rB+?ope)?}3n@zUIS- z9-~i0RA}K3B-|QX1YRSvT+xKD{DUKiZl$_#hc$O~oq(r-aT-1X>6Jxr=?RLlSQ3u*0LtP~)hSCHs zOpRz2!vj+fnNv9f!)0Ym!Bm~O1!9LQay1Ik5w&)9eh3-8xevy@^nyUI1Cuh8qZ%Ea zHF%%Am`%22UR9!RTy24BoyHA>9Rma z`2F}}1kT@o^mFsg`AaS;mK|W|#}!@@^9w2p=oB{L$qh_|1pyRd^?ck*>X*w5xwjZ6?6iKKzp4lWj@%U+5GitsI zf?Jn|9ac1+PHqR{J&b(jDi(vUv&B`fgJ4@KuTuUBgy2K)Qz{fzD;&7>z!jT*UcPiu z&-l0|@(gdp|5u$DIKodgKiCwc`#teeL)T4QBwVAM(B@B3Qw}uFsvbI0dAcmo)o8k|?09)HjU=x5@Pzr?{hSz(z})lZ%SZ zyd>hwdW<2fgSoaKS2l}I!&JPok;C?$8V|4LdKTAZUj>v)Hu+?tbb~JyOlWLlFX;s1 z(Oywdc`1BUAcK~J>>^8hb#{rBuCEP*YB-_qC=P}i4TQbEe(9)XH+I+NqPNAhzBt6r zpmH?>f|3Kmel-c&v)FG)QVxk}D;pwPQ;CX9R{Mfig8}NQl`mH7sVqhZ@b(1XBXtiC zFR?cv$@Z;U(>IS}^Av@Uu?Y@${%%qQtZ_9g$JRtwYPn$wTzCX3`Kkw`gUDW zF+%(7e&GBKqX@8T5!Q=W08<+Bm7BAZAlscEb~DS`zF{+=Ve%_U8*JuAWaW$)QvG;G zuR;~yU6i^gBmn` zSW7vx)l3u~1_kGw8GGD(oI?n97hZHv^i=DMGqkIkr_77P@=fA(t9$(VZmt-d$L^MQp)5Q1X(YW5axYB~xERJs5>jPM2g{OUJ ziq`d9Ip!|88#l(^^%AzoT=20nODUJy9W;9y*|Nf9-SRd&WS0$j3Mgl$%zAQU2P>O% zF&)3U)>vg7&0;mFu3j`OSV|9yMI|*5ddJx5OATBqdMP*cl)*FXnOtS%QU@kI-Q-8B z2444a6%RVi@HKKS-cn?j+9jJ8~kjEto=?))Qwbeii1rovTZp|c`Y#(*X(A-d|&z+J_+iv<*;s;ExghVWvJ(4<#-*eMu)SD#$wf4(p<{a|efr^^klc z1XHkb=Xoep`p6$H^icc(qrl#EX&_95=ExmT3Gau;E<@)go^zwu>Lrr(?bVipG z>>El7qvuplU{;UA&4aVj6Hn-=&z>@h>ul*I3Ls`CRBr= ziOfEW}lQ(YLAYvv$JznwpVDyDB{bS z-+()#Zf6lA`s+&-6skT6s|i75`~+2@_jj+ojiO23(u>u%adC};Vp%#s+g{rf_@BJn zbbdM?6yX2ndGlA7Z$5~6kK8DsoSnTLeIu$Qju^WzRHx=?ITA`Fh-cvQaIm5R?RO#Gj&5kWul!ba5+eqLuG^Tg(iKo8ci9xxiD z8AWjwwtOJL1Q{Y?Z+%fiDxi9xsPgyv9iW@}(ML`xky4BwE`8LSfnkJvtY%?+f=qdv91X?^On`Rm1sYhJpDE zH4bhEhN+7556o#eGBjgU;(S1yg!l-N;{Aj0`Q~r<0)$DN1_9b%WZCjQZO`Q+;wV&% zo`~v9SYKpEElBV~6ar;yKff;MD~@Z7FmY*@hrm7Gb#J`NChf%JrsqzKzGid1^K!-g zftrOUABUP+BUVHXIM@<|2tRl9^miji6!g~|A6evP)3x2&z-i4HNN+HN23-w<$C(*} z-s#S>eEYPKHv)-MTYjnEM@A5Bxc5yHGp5mqN@3#shZ|t-V{7_pXO@DroyJ+cet2+G zHn{FQ_3g}q)PAOnZi7g{#&zGjBJ}$_bRx{M$M<9SECv*(531ML8cuQ>O@708V76kG zZa~(^F|AV25jMTpPkm#7}skbU^_Ll(Gpt&FR(X0h1!|RChGJPJ~^^lvK^5);Ch0M zIzV@a_SWh7I}P3lahaf$b$c(u73bzA6F+-fc+4YL6-*cLp90j#5npH9C{6)8ubt7r zmEIiN5eJy8pR?dcU_~8%W>6W}6XwB#x(xgS1@EKL#DRG4`W^@u>W+_wD;2&=UX3;D z;OiRl6+q4?MgPh7_@My-*@3Nr*Ft|v%jUz??hkSGMhYd`R&oM+yLuu08Gq?<2UUZ} z5It`w)KZ7)i$fV6n`Bgh4P1{W3x08Y64l>Q_uaUc#v6E&B^T>l4U~uD9|ukjG|6g&h+p< zyH<3}-{>Zj+o_@=xS_fT8iT=xoYlK_$1dD^jmeB3uy%&3M1}3_=B^&5(^o@(7xJJr z_YEjpI3r|Vu6WVR-Rl-!=AzD8v4KXh*WB zj&oDsTdBwe#GC3q;f_tpHQ-^kohBByVuRy}V~XaDV|8dLUku>yb{lHG2FjX*{|%@7 zMTDyRXgU;WTIA-L{7!*qW+5OelqF&D#7Qm}5c#CaMELZKY1@~QjTcx&ks=+$k5A0c zpTxF!)+D7A%_(6eW`3V~5G`TGZAqku-s49vT;#^J2FGxV_sUhXZ=52CQsN6QeKm9e zN?)K{0!y+-pW>M7Y?WULed%Cs2L@p6$_|ygqPsANEM+$R14vnoI66pz8>El$j|DSu zRp`p&DJ*KljB+r;#*frJH_(&QAb%xOuq1Uzk(5EDB*wkQ2?wVn-8jhV4ppt&h3Dpu zK0S8j9`-JusCk&=+!ZSAYOjnJ;IV0*R8jP0V73#MZ%gG6)IZ1SdRRzReN6A%U)-23 zc2H~(X`nQ=JFL+ZO_(+y<{FI29`DMz5)O@=#JD2^-=Z{ynNNO!Qplvb2Q|%p{%jI& zK3i|4T5EP>mZ(^yo&L&0mLr%^OIhYirmjJ8Y{HKkK8e5Bfmxk*S}_f;)nPLX8>bof z0Su(^t+lQFrnb638T&1U#lu>>$z)oOeJWSlnLADBzKXpJ+oopBqr6APBb^yGaeS>( zs-5V7ZCXb6RH8ophzG3In++s)T9_t}j3JgK6Bw=b7H+kA{&^_vGa)CjW>B6?}LKZ81#%`j@A0`falH#v{ z^$)=OzlZ?+U-uOh;C~?DKSV(NgalFyR#6pb5prcrc4INs|3L)E{}AEbt$OtzpfZl7 zUTY*N^bTmWIM_{jbfYK5U{=ufOFytwf+&tIH(L?SoLY{^y(CZ+?$XU%`?^*#iQR@K zUku^PDbM=u5$=(H8uhrSP*mMk9PhWlxT>H^)(4BX08eHWl#$JL^g@@~(Oe^FSEE;J z+O^+CS9e<*ghk{sHAd$n$Ofo=X+A0fpCl_C8n}jvXv{0U-fM2RXuP|1oL1}SyS$3R z4cCfXKiP8g1J5fxyo(Y={lHRTuMy#f{;9Msdl!DaL>)uzgnVX7Qf%F!EVIx%7bByW znT9p)rJFQDhK=J6V4kIJ==Y8J=X|Gb3yqzz7vsqH7Q=2+-$elhjBF8 zAzJDb?RWyLTNZ#WwT_({DJm3-8I#@6xm~BM*UYp=UjSMRTTrbH?q@U z*lQ(JM^2VH&+0z&;w!s}hZ24wEzc{P+t3C2&K0*!BDJx%t*X_ojB3QIf zxor3MVrOqqlWPS1WCX8aL}al0(ql7`&>-x` zwHrj&pf77(mp(|YJ{@*r*7bJ?ztF~(C;86%O4Su&N7nzMZ3qWblQZhN(GI(51ivXY%4ci7~$qk4OmU>?SdtUpOF^(ih1SU2;gz$mzJ?>`NkSBk@dHmF*15;TmA zQE8FYlVtcT_BmR2dYXOztAk`~{>oj=){Yh&$+#n7=>xRXXFI6N{qh++MC~e0UNzRI z6*u^iFYYDV^I`VD9b8$Bi#Mv}3 zwV2p~3dVvsFI($vNvcuwr%k}N0J1@1R51I8^pMnh@tB;9Y^We*6sClZ`O}2Dtm(sb zfS}8`f+!vb?`u5<^<7Lf&wTyZCS8>IDP2-pXBuBT+^@~fN99n8dJ$#9faXf#iYW0h z-hhi#DG9?QH-YeS2i&`ce}Mc?7rB#C(hBGQ0ltM8Hc3&Coc;rRLJuD*00J5S4GsMT z5(W|g`x%aWMkQ!upV-4jN-nB`!OCt7E#e%MNFm0dtZGtFk4dTa-6c4wfBye9fx-ww z&MXBU!q4vT?EWZXnBn2lNWFfmT|PHwFFQPEx{%?{R(w`XiqlA(xUD zQI&O4Fd^l6sDzX?gGrXwP~z_zir_)tI%WAccV_~K1sVKjmG*NG`aG>Sr5B|aB5Go8 zLP-*wZ=YH_;dSBpp$?;+*a5nQ@L>vsuXH-9k{jT4^-fD+n82zs0Ck!noE0b=zF}6; z>(zE));)8$Jc$25+UXB4JY(PTHTR|EKcY3iEb0igX~?e7)Ji=|T{9Xp%JUOBmegHy zMDUz+mkx8;U~%_0(y#I>VllrgW_Bo#Fg%+J!E|2OUWzI9+k7r5tL*M9O``lICo+*>Z;SXGt$ z*DF-I)O7Bo8TU|fwCGxKErm%3>WiPhWv32;^?p-b)HV}>F2z-qqU<_)(s!JF zN$t@)4;UihPFgVpcFYsH*NVa)-KTZn;IbJr0lcYAf`JIBQi|=D zL7XUCM;6&~mCQK%`L&!2T-;tKhTVPRA_%1CVF_y1@@Q-mad4f@)G42~O(&JE*=Ye- zl*csLxXO-Ja)z#B_E2U$mZlw8MFK{V?a_ZwP0&pBDW&b?_Cd_d&gZHnpyDu^Em857 z?t`k7Wlv?+7W7s6R*^8a&hx$<_@pa>sZq;*3Q$6$mv1v%@}VI?Cr}mr=!Z3b2({nUYI`JSGpegOwt&01g7IRn-8e$n%0OeT*W`a z9MGMI@d8lC_;E*J*?y^+RwQ(V{oS(VG>BrHLZO06tuFQj5b9i}@;3{jl7y8@bt(}+{?+1Oz&%$`RQ1bVoAy?B z>76W0EGKEjJA0rG8;81<#D!NmtxKhEXnM!jWHDSAO zR=?E$0MjUVZP-9)=)FIJq0)&K7e()#t<|en$FikI>{nvBhE}(c!Fk&D&ed^gXp&4K z-BLm`kS#pDLf5MMEiLKShxD8GLHNA*ioBDEMFd-fnW)JnZ%PNI6t|01!ViV7W-dnG zegNz?jaS<{N~<;)DJx{{VG*DpNphzvA>)(PmcV&Af1~$M@;-!WLQsV&;hq~2h+?4@OUhuhPLtIhD$8tKN>A~EqD$Qi~j#jwtztU`Jmf0m2xIZ7_UrlUM z0Jv-G9TYm8rNjjoRHR+2ptrTktg4Ab2SDzLw^{%Juc1@1{mPt6kd*?;=Qa^w{u$`C zGZq=xuLI$^qjzOxQI%@SL@KI3jR&dg_2U7n4?P#E(&I-w1 zq86+d2Pkk{lPcDx`kI4ZPV%{m-U2a0CrP!;0s5>xKTRu?!0L=N5eT$;+eqNE4S~7OXF8=>-8m|*hO+QkiUjkFe8c_tB!{T+3l2! zsT}pY)K|80gprOhb0Q{~&AKZnlFWGqb2bli=lo^WM9TZ}=dng>E*Pxj1S=}udQ+<`fptST` zWmyS;SFUmzeOxqE?zYPKc3qb;qN!MrrFAQn5!GpSQrb{kDl{#CT*g&p4TUio!>QRp z^#w2GYW*>5#KRV~hKGT;_FAxDH3v2-)1B1sl!eTpuO#+E{O1vU^29iV>;0fBrCDD2 zMjf80I~m%)v8zY{jO;RkAfV^|n?2Vg*LBy1vVydYexdoESJR;xc$ANC{M`zWy^U7^vc&ECpc>KJMgWp{BYLmZVMEv@K)Ja%ap>s)Qt7CEf4i@ z61~?s(z&Gl)Zr8NP~lxdzu}+oxg3jet)%bS2Q}s5^zL8PZp_Lssi$`mPvaH!DxW)PC-&TuD<9JC&%}?szEYSzWuby}Kr1ylE$Q z706siLWK1TK?h&;1aSj?+#aQeB)aBthx9p+8uIy2EGmI`kt!ig3C;M7)1RUrghS4l;wkFcqcVy!#cpoQqm)e$+#i zsGeoA?5lp|R{6V0oI*AV9jn40wG)O2YV759cqa@XOSQkUiLS~3lBXN+yERGKN`b>! zOGG>Us}K}4;UE37y;y8v>d>^{4Nm^0s}kSttAZXr>z@_CeHZR|P~oHd0%*kabXtpx zf6|sx)L--yoH3M0~UZ^V2_@iht3Hb)cT zK*MnTs6XNj_C<{vTa@B*wL=6Ivb*+O6>t?RuHVbcGHijw(59GQ8?D^yTimWmcmqweFyj6yMc)iinV*K@vWzTLcAu zp}5JO7p4<@Epi-;XR-ycBcWQSL;Ejo>PFp=wKA)I!C8UZE?TAk03!oduBvx%9RlTP zKST^C9bcu`^hZbK9L`vuvs@3j?aJ0NFcx6|ss8BsUil`q& zs~O`AB5-j-)&MJ^NuZEq%j4n}><2y(8^5bB(;2aawSxxwO1d*;u^nXKIxdzEl-uvfC~4 zwMAN`Y6_64ZwkP2g2`OXg*uNEpynuRh#in^xy66j#lP)E{{RmCKyU1%Zm%he2!XNy z8w0JOAUWiVS_T;hyN1Z&z8p_oOIvXo?Kh=z#uJA`bjkNmd4SEn z>K(RG`;`URd-hk8T-}ph1MA&Ic`(~@mz=wmsM-bYGCybvTr0BGfFSlzeBJZiTJ)~P zRWEgW(t+>t_Z}Rs@s(Z14*UdMabPt6B81P#0IL&dcMJO?x2PG zl#hlzl;R$4%dk*`v1{2M(K=c^L!xQ)Fj~^l_d$aW{)p*pIjBM}XyhNb?3If(zgP(T)V5^y6%JpwXTXi;E1}ylr!N!X_x_cq5}lMeX**|JHdgBIibO4f-BPiaRlZWDls%6mHeLC_Ku7 z8|BQ=^-^0S*-etRjx8=cs+Nwu*EFeepG#2;*;<{Nw1Wq_j}SPm2keF$-wi#KVFlm) zFB1=Lp+VUP;u`FWT5qx#vjlWOxRTs1x=Qu2{h?^sHAbn0;m?NNr>R;n#5X9KPErc3 z_+`a*Zd#sH4pypEx3vdlOPP3|54U9wrzvrOs8HkI%D7vu%Hu7T(xstHNL5Rkmg*j$ ziE8Cs!Co0$wZ*08vVf;|D=Hc#YQ(dgv=z*Qx-Sb9*G253EdkY(flHLeTQ5k;w#kn^;##Bvb94iRg{g?tIRp2bC`0|g;{ES1*Zyv?sAiqwQ0qrOG|`>sfJj&8xHQJ z#!hwe8!O#f+Cr*a%ew5hP~y3EU5e={S7ia>7by;f5CHlrYN5dm-zXcYb)2IOpyG9L zO~d$xwajskqUFrMFu6jAwFh-dTy*_cs2s0~534`!;jXG(y1E%syHXWytxI`cHY>vT zfVGzmDjQ7y0Dmta%HA^e&X&-r$`0$CDQTao^o47X!iTP3N`X4E=A{gw!3TV!5Vg3S zLzjx@hq!DdO0Yub*+dKNmahyFoc)R>VgdoE2UPb!GX40%9CdC*#?EkZu)JI=3$yZr z{7#%#@-(@E>zB4t7iF~NVNq7MwapNvszXAsB~xj70`6A)Uik)%$^ncI#Og{IKM{uB zY6K_?oTzA(&CLG*^rI~=Z!p;pY`&aKXizp3i^!%IHp4VM|)Mg()!$uvNE{?waAaGNpu1QPeLR z8TQ?R9j_f~3&Y3!tvD8YsU}aCA$C?z zowBN1t=Dz7P0v)t=DzRr&9H2wJx%&QrZu7U=?ju zvY@S;$e%7aXR3l$m>*Sa2i+eLlBLb%_CrXe43bguJF~LX(YV9LAYPR%R;hcd3uW1FAxKiIb+V{dAx`Lu9(0&cB9}kq zdV)IQ7cZyf>XdP9=0VCjE#X>$odvX&=?avBt$LR0WhxDYMQpt)VwWnj3%JSyEp2}O zXp0J1Z?e+1Q1ome^3|5#CA{V8RCCnrmn!#Gse7m^y1FWs$WoP5t!}B-xvg?mQ?lF@ zznQYCA#*@0l#%T#e4{x($?aBjrNY+PY`xXSTdlH)%Sp)QkNkD6oq+NR95Qpp_P?umetl*y0E2fmt`QMIbRJc3t|+g zcbaT@wevKAJFWblnO6qNv$Ck=vh=GSRTXjN$Wa-`m47om7T!(yHmfUCw^J(2c~$1b z0p-qiK4!e@3YDthuQP9vk^H*6+gtHoRIkmw_;(9+U(4%`GvCSEgKsNo^0%+$8+kT3 zw#%7O;;^V^vfIhoZN*>Bx8UE4+b#I(hS#dqWnUw=^Uj|o3V)J+|HJ?&5CH%J0s;a8 z0s;a90RR910096IAu&NwVQ~=MK4rL)Trr}mzd80<5E!n9&C13x;-PqTgHD45_(513a^C*xvBn zdX#SRuo^VXtwk58s=A7gD0w|h+Gj4wo@?A*hCdmeVskE;S;V>P<4?vbF!4ByvZc$d zRNQ_w@|{C4DqnCX6H`Pusa((R=TTP{MNy|n9ym=S8B;w>w}@AtgF`M?Q7#QcmGP_G zIN>FSE#+qtxGszT+DIsei5GLnV5Nq zTrnyb_&yzC4}*K2;6ucyP9`q|zP8Zs^YB*ZRm$;XPR~j_Z%zX$o=Hp9s4sXn}1^Ma=VV-4d&GQ1<;-J0F zQr8WX=ecn5#8)Z024V6Fsg*)Jz*qQ``$bI?9Ig1B<##!QDDS3Z=_RejHJG^FlE>71 z8JcDX1*v6B%JCY8@i#Iu`kRdB5Y}VnI!AvV{yB^zskU?6%IY~V)XH5o6U_B948iUb zCMWAsGpm_`bv;BomZBJCd|rE%XwT_MtV*I}LpzAvWrXI&4|rouVKLTjAX?&Jr%^Rl zFA-oliki#3_YH@sr4;U6TF+!`L8)||F)4YyMQ||%p4%f=>M#PUCo_;LGSud94Y1Tr z;{5r!FL-o7()FnFn0 zp62HhkAoz8C-)M}?q3Gtw;P%*#Li)inM%nxf!3zC@#8s(*s{!V09xzigy=q5iE~G& z@kIQP9S)ut`bE5ztMixmmrf=3Jxhfvl113C7GqzMvMKPqVM&rEH@QFFbqe9xg zWtbP38BjswBhwEsZOSZ7OgJYn?#t~Pcc^~|X7Zygt1o8Xh=5&Ou>xZdmv;#)V9Mdy zz91^RW*sF0wT>nfQQ~+p8g=%;k=o<_qFUz+!0ihh$HNxP$K1Y^>TWj$mwx9H8kh;~ ziJlpC7pQ|ZiNvxr&A`gf$CzhxpiFZ=Nw>vA@XTIiTGK74eB2`|>Uxgxh6Z4o9S*=_ zb6Hv`fGlm?wa%v~#4y1f;sGmjZxHg-Cg3z6Fq@-LVNi&s$yzjqnMX>8gh!ZM2>$>` z-P&q34Sz`Fc^t|JWHSc2(3GjSz@e9!NE+@~qn>Ax#PXJa{7xHlFB`|lV<1Y4Vj)~0 zZviy;_(pa?_^+wP=4(QDpL3bwrbomvhNprbxm?5C)Vr#QpAx%{rC&cfV~8rEH&-Zf zMzIafXERXB_?2!LTNjzUM0lxRm>Kg3Ya*~*@eIRyxPccgP9-47{vr0<(H=6QiOM;L z31e|h#%Fh?8r-cjsB%RYQ2fUDW$8jCk(!LPhQ0ZNu#B);semn08{u3Xqn!s*%gIVt z=2*iV%u5EMsYMet7CB|l2bpT7b$jMurZ3Eh#0|ZeiGk!ARjB31MksS(%u@g5s)pW|c+b#A=Hm&})>Y%nQt; zY~;t#$_=aWG8JzzbTx6Mi&Fu!)NBi=I|rDRj%JyF^3D*YCCpoPfEsD$2H9g+c1xMl zscqRn#ZpABW2u_X=FHSQqeGY_&vB++A)Q2elt9iUeCl$m1zNW&BPx~K5n*gQc#Q!IskU|ED#6JH zlI{j+#Ict!Tmm3z#G$$wYlEK1JTnF+(OJs5i?upfLXPF-_+s-g(LH<_l^ggU4R6Otg#sR25 zabS%Vt|$~^(#0?PN-_2`2_l?~hNRiF612r;8BIUd0Wfi-BYvWB>L}4Rc_+PPQS~Sh zuX1q@C_uKDlmvGuHhP%`y^d!@TvRR++yIAU%x8^a0N4uLFgmzx0OJybOf?%oID)l` zive$z3!9+}re4^*TMH;momrLPelfX|5nGw+JHE)(nxOXy(93HnWNC3@3)RD-Ts2f) z?k&n)#46^#3_6A{;`1KnE;R<&WVQw;Mh0qanb=1m;vA^?f|*kb9I5Fjpl~H4^!F1n zmS9Si!t9kRsoh33je=*DF7nQu1xrh#yHOi_uB*%?cH&mMF9a<>t|1*u_^X z%+um{gIMlqEE#u`;LRDoi~$#ZIDv)`69>ZH-lcG**m!4;Ie;$vNtEe%F#?ud#=9}e z1Y07A#oel2<8U?>UZ50U(E`sf#fRA#e`$p#Wq84c!z^_jL2oZZahv)MqDBzr4jreM z$2aKeEaA9CNDHFasR6d#u|X)4f4k>*ktB%J}fG! zG}Eq`P1M0@J(Eu6`;CsQk7lLxsh3HV))O~orY`SO&Jt@9tbvWd@gFk`$#Bc&KA=;S z^QH&xRvSi#@rBR?0E28JDQCZpa5zC~sDzVbz__cn{LLO2+nOiAnQeyE*gV5JS@$#{ z7($yYO!?frE^H$OoJ)IP=(c}ECHEjzTQFZj@_1o*?%;>2z{6UX`1?PJmouJoYl(7( z+`ard8~h1u?<Qhl25=Mtel_F;*4a6*BTl4Tr=Q?L9F)8O=FQsb%V; zgC(9NiJd($F|o{XWHZz>Z7G!-V1s22C4L}6V;Ezf_Ybsxa?GF1aMrCbF zc+O@e8i%;xx`6n*T&Sw{#ho2@G(Mg^OSu=iIE+hkxtVtL17*ntSL}w>3qq?P=d*Z~ z@lw4Wi_$nYbcy7!d1_V^^NNTVmE;AROT?y9yXrHNFqsflW?O>#GW)<4d3S8bC~(S! zfcs0c#b+^95ah>{6Cs)AE((65MyPh!Wm`@09d%bx6*ud0+>IPDXoSEu3{zSl+fU54 zD80;)RhASeUBJ4x8(`U*%U@|^zzEjkrEi(WwLQzcU?w4sVl)}*G#HF_T@Pf*!b0j% z$M-RYNtMM$;iPKy1jcdPI}kKq<~Kv6azJ!rqn1_iOw%)ZV}x-GSs&C6d5jgZW%54| zqLH46ioq|gX6m^m8Ag;;kZybZBa29Dcq%Nt+8Uu+^6uWqhBq6RU21HVdjb$avGD;<4KQIPrbjOg7Qydt+m1NIPsOLst z<5b0FN??YaO{-8jYEi)rqp8PLMh?;S@*f9VQ4G-S&ml?)T!=XDzhWl^ICuF3TI zdtz>B`61X=oVkN>AzUS0SIo1FZsrq0)cA2e= z&m|z7HSTfJJP@m%6Mo@Af?KgQb5PtjIm8C&n~tYe^A?R^r=JiQ6Rx7qumW#~ZqaU4 zF9L42Eq55xCz!uMzH=Zv&-^tkdtBnyA>nv;4-h7ntuw3lN{gtg7#vQ?j`!v(&z(3~ zdhDPh$cJMqW_d2sR^#-MQibDT)H(fSLuJ>3Y`77xGU(L2-CWf3GXDVF6H$wm`1lacp?SmX zg|U)hi>Gl>ixP)S@-r^lVsI`P#L}NExI>wNX)R95f5foz z`%HEg6ZLW0`X}mip<#b>(xdZlsjqQZ64(4p2R8xAm2McBagsJmvT~5%m-R2Dl$c5} zs`DQLyOtqG1XwU7Q{%*}=3`_aR^q@ym&_cQg37O{#UwO>Tejc|GP0*?`+&FHT-@N? zG!!?GZ)PA+E(886!voAA*$r%y2Q6OD%CL@EgA(Ts~eIEiBZIuD2Z`g{)I|b$tz<1jWZMcL% z+)XgXX6YtjY*#QhEIA9)!|D)UldR06<=Jj6u}g9^ACEqiRPofPRyfLcMqi!L6txCx3nKrYg0_lTHg9d0SFPdnv9wEt=g%2^5?oPzE zAo!RNcJ3FbjLre(U4^!FEEb-v04gZ+30E5N6^7QQ_9hZ|fful@C0qwA%U5-b3@RjO z>B2BDOLJ;`H&>M7gYZ4{u$PVScAgbF_-xpr$8@Rl()y?1dk2EhK{jrqP&rlW|3KV2Cr zwk`Y$=S0z{AWVo%6WpWIFEETcSfER&yxEWLKj@XDVh&TOm<(|edE_42d}e;d%8T$8 zi4pEl{#aVBCNZmveqfuG5REtqPl;Y4_D&cPU}APcs0^Gl6~Q};$O=Q;>QkmB3jQ+r zyM_vsO8b4>O1g8xV?`w}=h-Pdh{}$UgNa8pC*Cw&w=7N}ZXbwppHdQ-BDqQFgpI42 z)J_;tQRbyKS&-mMiaak#c-X2jwmY1{^vgH$f07`8%ysazTP!f0FfnzjF0iC977(oMKU1(=y1UpmTxd zZb9b}V=xpNdrKo!!=$Ave2KWj!^A5t0D;7_Lr<7Vy!8rxhKZu4YFnmJfZ>MXauY^5 z)k`h?WofbWl`OiOh7hw5t+2;1fOZW_Ot3I*lXBuvRV%4(?7ZZv2N#%zr{KW&HtupU z=5n#Ca7{A6hOX5RWbGZz$H>apIav;KDZDY}X`}Cn#02a4;(b15ea)3uz<(6P;TFJ5 zf#rDmls10l+03`S193U7P};b4k_@2NWYgn%IhHdSGSn}8z#5h?4qZng#is6!<^+z* z#&I_Ixl}n}C^L)6O6p%k4Wkh;WXy2YjBozaB_G;mtj^_|GqQQ5;E__6dV(8+Fw4hM ztQzQ@W5m{F8%hx~uzQ`MhGmzTMufH73YL!~BBeX1P@et+nIGKA&(u);5$YcIaHf{~ zWl>H*Kxe(*Py0Y#0jh$ZIW^l)8_kN|pAQt;Rvu%4OntwJXdlj^-;Yg;sth zJjd9aKwH#s#Tu_@myjhZuene8XG50Y52vW%jP6r_r$UfJ1dwAS|DCS!Hs$>4^i(BcqdHZtxy8_yytOR zb@0q=a~)XARm&08S=0b4G=W(vRPb9(`j-LZEN<~2Aj#aYCxM8(Z||mWsySjT=2ZT| zln)HvZV-mXgrzWf2=IOxbMU1JuAbu7E_Vyelt9=G3{+FL*D*ek7M{os=M^bwUCf9? zrA!lVg78EGQI#q&b}@n(;`)b3dxe0+c#LoA17Pr;!d>Iz?rNj$3zQV5P0G?Bdgp$wB*BLv=&FRXDrr&m&^P&gniVUyr*+{Fbo@DUHE@Fj7JfM1hx!#EES zurbmhgA&+N?9`(Q^e-?2TD6wTl<;3@se{VO@9fV|>OUxdsEv&o8%fl1eLtxj` z&uJ^5Vi%uPOG`pS0rh4R z+^TdyP`#0KTrq|Vm<^p&1}}Y(EFOtfZ1*2F-L4Y}<;JH7kKA`Ec|?hv&Shf&-Qq$B*YOTQgL<|PqN@*aa z7ws=we7S}Fr6&FeDltxYln*Z1QZliNfom%RRPPi)D%*$rbKGX?G*dIH=#xG#X@tO| zF*^(Hzcc>;iY2deDOZFp*&rGXoj{H!J)`V>t^G^_)0R+7ZRbQ?&9|TK0A6=w_RN%= zdG!!>_O~ChUy<9#v_{k6gFF`uNxNx#d`d2iz%OWOTf}ifz6xhkdZ!UI;pSDvFQ~{2 zUs|h%!+eksI6f;XVD~Y#TvNHpHoz;mx~t)qs^pps&5Qd>R%Lcf3sO|(R@V`1XIBt$ zyfT2t;^hJ>^$SoxaD))G>?NEV^)jK{kD1F%F)H;d5g2uW)UZT&RZXwNaYni9oDZY{ z=N(+4yP@Yh#eU{Nb#tKf8-qb)yZX4!Ck3>C4A=I{Kc&Rn>#0$%t2rQ>3SXiYDlFhY zxVQ~VYVklRg-uylF9jGMa_V_rrhL~m1i0MItkps0UbEaF@Pn5_C;~9j*^)e=3zx#%)^9--0AvFYfawjgHRZivrLy0{#K8_ct*sVStetn>Gf!iCEwHmA8Jzc5Y{Jqh*xu zQkY`oWF|yV@h@ktqAbL*sfA*klUY~MsfAnI0B?K{7k-3$nVO7e#2j+k(0{nnI5_Oj zOEu+&L{wb-KfyT{hFfIwXcyQ1G0M4@xfB94T&F~)#PtSIH{l3nAB5z?)LWIY+%#0+ zbRye_;`|wVRg;4!lm@#&$3DqcHm6gflMYzkaCmAsRZ)-Il4=F;VOT8na6eHk5*Wv1 z)#-<{I_og?G_fOPZeV;mnCv3F2R9U;2J3s6J;AhE1(ozH;3JS?;cK;OlP?}tg^izJ z{vpzO=hZ>(s6!!vyBI)ba==3dCm2P*w)DyCS>QpP)iw24h~<{;pBjnmrLp)2w*OsRV0 z&%puz0LvLRH1R;7n%2lqXK$5@v9};g;`2=X~<^*Ql%Ww8h2H{2mb5ff{*cQI5qTQ2F0uM~d zF7XAr`tDw6dgdmD6GR(#)Dc6bSe*!1{aVRp0p^tw4jBh8;y4FkvSzM^nP=cIQ=iPJ zLjC2B;vP<5r{gyXDqnKuTq4`lE=Zg%2nCHe&SkneEuwufo~9HmgGvgv@v1D#D{=2T zda1&)c4ZNEA5hI_leu`hLng=!pZ$!vg}!2t{Xq(|sh-pn`Iaqx$MKz_@bT9Kx0mL% zA1gHT4y5?3upI9OW1oe;;_A}UiRGijVOi;ODNc#RHDaNFTub?(nr5g4Gb^*;12GDh zB@()ALEV`8gKp+;6v~6(v0yo2)0L4KYGg7G)Dl`A78}2nE=5S?+-G9TEDr8XZ}4(t|G)!D|`Z0jj=PD zo==%b`OC+daDf**7>gN-;#=Gztw9A0kq%X2v5EUdR%gMQ>2BSACdICq#9R|!#=aID zmo|5IGnrNkDIYTd4nSc93P0{CNX|B|&jPaH~${gy2UU#^FW<+SpFl^B5&o&S4-^%}vAwU%?XA(&r+NEZJ9{ zBm}E)=GOYu>$n=qV4bM*!n(Qjk0U^%n;e9Y5-M*-Rqa)_=_b*@NBpx zxJqCUr7j$%9UbvvCBHDNEUMSfK!MW&vxYy%~{YFvm zCQJm7UO0dq6Ova}_45#^iAxLTkS)1cMXC^j zx;cT#mCFr<<|spY1C)m&;zQ$q+B^RMAen3TDqo9?MY~odTuhp%pJ@Fe)y23Es7|JR z)I6u+P|9F^ysin5KXb7u2;6}Jzo9UfSx5)%mOs?Pl|K@lLPGAX)mV(hFU%DWp=4B} zqufF92XwA?iI7*FMRH$lrsR%K@NU&3A)F#u$}nEpz)M7_ znEY!&$4A`nL42@nT z#0L!naVsOw2<5=>5!|da9rGFmi3A;kxy_GfP(wl{Ao16c;$%*A^FVl*K@N#%e?v1Y z$?+|Be}u8-bsNA-9ghSG0a@I@(T8`qYU=r8g_*l~h6QSk{aUY1OqDaR0=BlR=; zK2I~7huVh4!?lL=*k?S;jq<0MVb;KkY9$-07@W3Mc!t!zNlrc*BN>ih*3g+$_X^6V zEJ1DrCm(E0oHonGiH_9--`WZ=!ZS zA0Z+gO8FUAD2{U}z{~b^D9~8}tNTL2I}(FV4#?>)IT&x0Gq;KkOM$_D(ax}TFxG;d zbstjBtc@sMsc>pLgkMYobJcZGoFc_bLnz#*^#PT9z?2j{*_Cc{J{^a*xUCy*Se3Ih zJj@r|Vs?;C?VYP}pJG_c{-pr@f0=ApGi9wDOZGry>)Ln3LnXfT9 zt)?xb8Y=>kU;0RTo8H)mf0MsGD+i0Jspgkc0+*B$k9zH4{ z%XrQvW4ui+r6MeyF?UEcN~Pvg+{%J$?q;Wxh6-~PDxCE$`E$Y@h(tp4`ik`PA1)x z^dS&%o;563wy3=@V_6-!1in#RRH2FUiZRTuRy1=TaY^8YwTPP+srxg~g6az?DVVUR zED!09Fg?yq0~4nT$012Jnx(so4U@Py1*<8R3bYNLaH}vT6YgT2ej;83ueCihL6pMQ zZe^`%a59-qB$aRiQ@bu^Y*knmfJ^VrF&U=bW=371dYmLujK&`l*j9vCG?!s+`tZt4 z=GKVyiM4}t@!}5#aMog$cQ2>oN8x@x70rAUl@=vT{3~Lf8A6pfR12k@%fxsQ8RqI> z{_tK1Ib|8|`G=tOH(XZ{!9yO+UB<$y>R8n1g61y8+i?@|1hR3kRgiu967#5WmV}##4*20Qw+- zGaNLJ^DgiS?$C@c{jp}D25uE*?lQHwRH%$^{6To2^$kHQQtne7#ZNs?s#L&Rb5RCq z^#_wNhD530Cx$%d+#rR;iv$iouua7sK|2p|J(%h_1q~%nmSQR6h+h`F(K2_3Qu$x( z&Wz$DS@9Xi{h>rglOznHsTKH}H?p>6z%luk3@53vv6cW~2>roh1$H(+Gh_%kX6Wob z9eyC5_TvwrgFWU4mMedY(e4l{DR5aT=2C75JBC+TbV%+W;FY!8EPC+}9zUo&b2<_R zuri#Gset3S#QqtwEmgG@U_l3oPf5{|SqWFnOYT%t)MUm{*W3%-0Ooqk#A;tiU5&;) zf$&7Jhp63G63oJ!Wb5L#0tD3^lH6uppQ=anQ~@go&2l_h_uNS^JN75$x4+r9Uhp8qAh5?=Kg$42(Iai64?bsVjNvW zo8*eJC4qLiQl)%>9LH*6@@ko#mQ1`(QU$4oNlUMk#0{{RFTsLw(2>X7#iesJsOtC+ z_C!)pMughSxP0AdiV2M3B;7tEqmSw#)UvQLXJrK$szUCdI zyP0I7I>J!@00#`h{mH#T5PMH!Nhz7g&oLDkTtlkb8GB9E7w$X~c8b}{+_dIzxkk2# zF__&HPR>ZuRH!lO)Ll?3q5y-)rsehyzuE_SE~<_z5T8oYdD+D)t(qgixS zdP$Cuea!AD;uf(`v$Ye2$8zoM;h&Z&=vS$TJC98#DSzfS7WAM*7N3cI{*qgitfKJ> zjfRLUk#tJ9GDoR{_%LP#uz6wTWT$1~bL9igJ6%-01y@^LxV9VIA$V{r4j}~B;_eOw zio3fL+}(l}Deh1p6e;dftY~p71&Wjch4LQux5xR$IqN4ZdFEVW-uHFQm!k8#%99|L z*ODCB9EY`7(#GFf{Ad=i|_eB?xmO%>7y$43-U z7q%qo#my$7S*pm+@Jej4nd5;EZzHrOkv0r|f8;hw^@SMiEdP0&A@e5E`}^TNx+SU~ zDYB!D_$oQtc4aQfO@3jwtPF-Xi{+3Bdk4bT<~0&GK`_(Dp)MsCRkqB*oipju`72~t zVO(8ic63y=U6s3!)|OiC1&_WZd1K-2v6*_ZTEt9CRNf1ofkjP-Im|CDf{#Y?4GD2* z+XwWBzOgLBQ-wP(O2!(}RHQxfSV_^U?a9<5Pa|j#S;ogHW}+2~T--3MGpLTM-Fh^p z?8BR5rj8i1ZN?Q_5z>1czlO<~9|%J_g1TIVk}B&no!e{g{-z3qe1W#M3t=nbxA~D` z%`|3wQjI5XB0b4a;YK>xR!?@3dyo8Yo;+;1VKkc|Vs|o|Uj;ouUp(W(*He&wh$#SG zD@#|bf!V}U*;i%U)EpT@kei{Io?8H9il3zLna0tWJHk@Bnk{flwKhU9PUp48z6U+< zTRjpACq`)RqI6q5M%s@w9Z5wupOEBh>e4aafy^fY;yt|v6Z49)hK|JfBvdG3;SD1W z8}ERWM8>lURE@){TQ_>sCdSi|==xi{FNfWAQaz5~iubi9JP9uEv{fvf+tEPYI)Ghx zjvQ0W_9a8bGWPrimrW28%luVLNeB8hyY-E#$3U$%CU$pXq>L#ah^X8o21VU6-_Sjt z%H{-5Pp=Gll>odJaf6ySy>lhIC*(n+vF!#`JiQdTqQ*=nNQ@>pB>JY?CrxlVheC8- zhKfnFZ9yGrm|sGXpKa|`DKXeorl~AT5k_VOE(fEttS*wl{k~(YFAaVFFPjnp{QH@BiP5@&Ha!Fb& zuZW(9JK2X#KRJ1uN=!W zCpSaBGb>ZW{0k(SWxZCL`AAl^)|$YSpcvb0vM}Kn;~YAP1kaYkT|oYq%W|AF47G)1;0!R`V{bx*qaKXfw4%VKmPP&ONg%rx z#-`z6PI*SO^eAw4ZDzj=rldY*xCkt}V17W~nJ+D-OP{OO9d{GaYR^ZW@E)h|;cu-R zj{=@Eyxo`ZvmNUNtAL?r_nm@Ma$^pIM~3Ga0JV2eWKPT3pD?IN=d|-N!Yl07DTC7r z`P%7u?9XNja#j%@EXUj(x6$FKsJ|Yq?2P+)Ob%~~G35P_N-fy*eTFj^xE;g&i5_&U z{*#sy;`=_(zHJE)Vmp(TfJ*ot;~B~8-`JUM8@BU}%7dCL531YmP}Mv_JzMBCRF$HH z!#)3!fsW{s$D8nr4t^+aO#2YJvL~h)L-xx-!|X7M9(Mo8u{J5)BA}hNBB=j(uPG_o zWi18Ze2J3vm%+&GyZn&HDsHq4S!1f4ecAHA!@jHkp73c>b_jI93CYiV`|wQ zX>8*h$Wk^YTe9b(+nQveOs0Hw2WVZGuE1QunC|3Bo`N>8X>I_sT?(S1T}$9dJ7?si~q+(PgD}f z8!Lvc1kgevG+Qq@86zO64hInv*<6ro8<%f2ah3b8w$W!a<@nyCbl{Ilhv5jv?j2=z zewf<02lF-QGgS&IIFyjES4os^s~z{4N}=B(in#3BXC09@(aIP;65>uRX=_3cBL0x* zJR)_h?F$rP%+co+$$tJTCkoeOTRAw87=}@$s#uv&jZq|d^@1%-Bk36{;hBA#-_)frrgI)ao%b8 zb-Zd3@M6e5=en`aOij<@MEfQt#P#bGsS9t6h83r$ry}dOAwKX68ac}Te}Jp_g@a

YYv#^jY0jiLkvx+%bZ&t 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 literal 0 HcmV?d00001 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/spracingh7rf_bottom.jpg b/libraries/AP_HAL_ChibiOS/hwdef/SPRacingH7RF/spracingh7rf_bottom.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cd2bc9b772ac3c7f0a4c6268351dcf57cbf01d47 GIT binary patch literal 145513 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

9Wk?wn2sVX=8!DW1f%TUT{(L3zx^$bsQH-?N95N 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�Ca=`G=`hr-Ve^{-)ds;T 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 T$n?2;-Y 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 -=eW{R5v%xmuzdBr`?3cGD0SzaN*8VZ63 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 literal 0 HcmV?d00001 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/Sierra-F9P/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/Sierra-F9P/hwdef.dat index 295bde2cedb5a..e8096fd5c1c4f 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/Sierra-F9P/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/Sierra-F9P/hwdef.dat @@ -131,6 +131,7 @@ define GPS_MOVING_BASELINE 1 # Logging define HAL_LOGGING_ENABLED 1 +define HAL_PERIPH_ENABLE_RTC 1 define HAL_OS_FATFS_IO 1 # SD Card pins diff --git a/libraries/AP_HAL_ChibiOS/hwdef/Sierra-PrecisionPoint/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/Sierra-PrecisionPoint/hwdef.dat index 1a6c3ea56a6c2..70fe852ca5b51 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/Sierra-PrecisionPoint/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/Sierra-PrecisionPoint/hwdef.dat @@ -125,6 +125,7 @@ define GPS_MAX_RATE_MS 200 # Logging define HAL_LOGGING_ENABLED 1 +define HAL_PERIPH_ENABLE_RTC 1 define HAL_OS_FATFS_IO 1 # SD Card pins diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405Mini/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405Mini/hwdef.dat index 9717ab8d56a2a..ac554bd046779 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405Mini/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405Mini/hwdef.dat @@ -150,3 +150,6 @@ define HAL_COMPASS_AUTO_ROT_DEFAULT 2 define HAL_DEFAULT_INS_FAST_SAMPLE 3 # Motor order implies Betaflight/X for standard ESCs define HAL_FRAME_TYPE_DEFAULT 12 + +include ../include/minimize_fpv_osd.inc +AUTOBUILD_TARGETS Copter diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/Readme.md b/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/Readme.md index 7f53b54bd9932..214f68b1eaba7 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/Readme.md +++ b/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/Readme.md @@ -12,7 +12,7 @@ The SpeedyBeeF405WING is a flight controller produced by [SpeedyBee](http://www. Power 2S - 6S Lipo input voltage with voltage monitoring 90A Cont., 215A peak current monitor - 9V/12/5V, 1.8A BEC for powering Video Transmitter + 9V/12/5V, 1.8A BEC for powering Video Transmitter controlled by GPIO 4.9V/6V/7.2V, 4.5A BEC for servos 5V, 2.4A BEC for internal and peripherals Interfaces @@ -90,6 +90,10 @@ The correct battery setting parameters are set by default and are: The SpeedyBeeF405Wing does not have a built-in compass, but you can attach an external compass using I2C on the SDA and SCL pads. +## VTX power control + +GPIO 81 controls the VTX BEC output to pins marked "9V". Setting this GPIO high removes voltage supply to pins. + ## Loading Firmware Firmware for these boards can be found at https://firmware.ardupilot.org in sub-folders labeled “SpeedyBeeF405Wing”. diff --git a/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/hwdef.dat index 1ddb85368e9b3..1ddcd7c9eb8aa 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/SpeedyBeeF405WING/hwdef.dat @@ -164,6 +164,9 @@ define OSD_ENABLED 1 define HAL_OSD_TYPE_DEFAULT 1 ROMFS_WILDCARD libraries/AP_OSD/fonts/font0.bin +#VTX power control +PC13 PINIO1 OUTPUT GPIO(81) LOW + define STM32_PWM_USE_ADVANCED TRUE # reduce max size of embedded params for apj_tool.py diff --git a/libraries/AP_HAL_ChibiOS/hwdef/common/flash.c b/libraries/AP_HAL_ChibiOS/hwdef/common/flash.c index 11c49cf8483ee..1e7fae3d282e9 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/common/flash.c +++ b/libraries/AP_HAL_ChibiOS/hwdef/common/flash.c @@ -235,6 +235,8 @@ static void stm32_flash_clear_errors(void) #if STM32_FLASH_NBANKS > 1 FLASH->CCR2 = ~0; #endif +#elif defined (STM32L4PLUS) + FLASH->SR = 0x0000C3FBU; #else FLASH->SR = 0xF3; #endif diff --git a/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4/hwdef.dat index b62ed7ff9acd6..c7f3eb3e2add1 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4/hwdef.dat @@ -16,5 +16,4 @@ APJ_BOARD_ID 1002 PC8 SBUS_INVERT_RX OUTPUT LOW PC9 SBUS_INVERT_TX OUTPUT LOW -# only include ublox GPS driver -include ../include/minimal_GPS.inc + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4pro/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4pro/hwdef.dat index 887519de6afcb..d3ed1d6f22151 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4pro/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/omnibusf4pro/hwdef.dat @@ -150,9 +150,6 @@ define STM32_PWM_USE_ADVANCED TRUE #font for the osd ROMFS_WILDCARD libraries/AP_OSD/fonts/font0.bin -# disable SMBUS monitors to save flash -define AP_BATTERY_SMBUS_ENABLED 0 - # disable parachute and sprayer to save flash define HAL_PARACHUTE_ENABLED 0 define HAL_SPRAYER_ENABLED 0 @@ -162,7 +159,5 @@ define AP_PARAM_MAX_EMBEDDED_PARAM 1024 # save some flash include ../include/save_some_flash.inc -define AP_BATTERY_SYNTHETIC_CURRENT_ENABLED 0 -# only include ublox GPS driver -include ../include/minimal_GPS.inc +include ../include/minimize_fpv_osd.inc diff --git a/libraries/AP_HAL_ChibiOS/hwdef/revo-mini-i2c/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/revo-mini-i2c/hwdef.dat index 0902d3f9f4a77..b7a2ebc1277a2 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/revo-mini-i2c/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/revo-mini-i2c/hwdef.dat @@ -153,3 +153,5 @@ define HAL_GYROFFT_ENABLED 0 # bootloader embedding / bootloader flashing not available define AP_BOOTLOADER_FLASHING_ENABLED 0 +include ../include/minimize_fpv_osd.inc + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/revo-mini/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/revo-mini/hwdef.dat index 889689d5c84d3..0a9e00e28a25e 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/revo-mini/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/revo-mini/hwdef.dat @@ -129,3 +129,4 @@ define HAL_LOGGING_DATAFLASH_ENABLED 1 define HAL_GYROFFT_ENABLED 0 +include ../include/minimize_fpv_osd.inc diff --git a/libraries/AP_HAL_ChibiOS/hwdef/scripts/STM32H755xx.py b/libraries/AP_HAL_ChibiOS/hwdef/scripts/STM32H755xx.py new file mode 100644 index 0000000000000..2e29865e1cd52 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/scripts/STM32H755xx.py @@ -0,0 +1,1287 @@ +#!/usr/bin/env python +''' +these tables are generated from the STM32 datasheets for the STM32H755 +''' + +# additional build information for ChibiOS +build = { + "CHIBIOS_STARTUP_MK" : "os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32h7xx.mk", + "CHIBIOS_PLATFORM_MK" : "os/hal/ports/STM32/STM32H7xx/platform.mk" + } + +# MCU parameters +mcu = { + # location of MCU serial number + 'UDID_START' : 0x1FF1E800, + + # DMA peripheral capabilities: + # - can't use ITCM or DTCM for any DMA + # - SPI1 to SPI5 can use AXI SRAM, SRAM1 to SRAM3 and SRAM4 for DMA + # - SPI6, I2C4 and ADC3 can use SRAM4 on BDMA + # - UARTS can use AXI SRAM, SRAM1 to SRAM3 and SRAM4 for DMA + # - I2C1, I2C2 and I2C3 can use AXI SRAM, SRAM1 to SRAM3 and SRAM4 with DMA + # - timers can use AXI SRAM, SRAM1 to SRAM3 and SRAM4 with DMA + # - ADC12 can use AXI SRAM, SRAM1 to SRAM3 and SRAM4 + # - SDMMC can use AXI SRAM, SRAM1 to SRAM3 with IDMA (cannot use SRAM4) + + # ram map, as list of (address, size-kb, flags) + # flags of 1 means DMA-capable (DMA and BDMA) + # flags of 2 means faster memory for CPU intensive work + # flags of 4 means memory can be used for SDMMC DMA + 'RAM_MAP' : [ + (0x30000000, 256, 0), # SRAM1, SRAM2 + (0x20000000, 128, 2), # DTCM, tightly coupled, no DMA, fast + (0x24000000, 512, 4), # AXI SRAM. Use this for SDMMC IDMA ops + (0x00000400, 63, 2), # ITCM (first 1k removed, to keep address 0 unused) + (0x30040000, 32, 0), # SRAM3. + (0x38000000, 64, 1), # SRAM4. + ], + 'INSTRUCTION_RAM' : (0x00000400, 63), # ITCM (first 1k removed, to keep address 0 unused) + 'FLASH_RAM' : (0x24020000, 384), # AXI SRAM used for process stack and ram functions + 'DATA_RAM' : (0x20010000, 64), # DTCM, tightly coupled, no DMA, fast + + # avoid a problem in the bootloader by making DTCM first. The DCache init + # when using SRAM1 as primary memory gets a hard fault in bootloader + # we can't use DTCM first for main firmware as some builds overflow the first segment + 'RAM_MAP_BOOTLOADER' : [ + (0x20000000, 128, 2), # DTCM, tightly coupled, no DMA, fast + (0x30000000, 256, 0), # SRAM1, SRAM2 + (0x24000000, 512, 4), # AXI SRAM. Use this for SDMMC IDMA ops + (0x00000400, 63, 2), # ITCM (first 1k removed, to keep address 0 unused) + (0x30040000, 32, 0), # SRAM3. + (0x38000000, 64, 1), # SRAM4. + ], + + 'EXPECTED_CLOCK' : 400000000, + + # this MCU has M7 instructions and hardware double precision + 'CORTEX' : 'cortex-m7', + 'CPU_FLAGS' : '-mcpu=cortex-m7 -mfpu=fpv5-d16 -mfloat-abi=hard', + + 'DEFINES' : { + 'HAL_HAVE_HARDWARE_DOUBLE' : '1', + 'HAL_WITH_MCU_MONITORING' : '1', + 'STM32H7' : '1', + } +} + +pincount = { + 'A': 16, + 'B': 16, + 'C': 16, + 'D': 16, + 'E': 16, + 'F': 16, + 'G': 16, + 'H': 16, + 'I': 16, + 'J': 16, + 'K': 16 +} + +# no DMA map as we will dynamically allocate DMA channels using the DMAMUX +DMA_Map = None + +AltFunction_map = { + # format is PIN:FUNCTION : AFNUM + # extracted from tabula-AF-H743.csv + "PA0:ETH_MII_CRS" : 11, + "PA0:EVENT-OUT" : 15, + "PA0:SAI2_SD_B" : 10, + "PA0:SDMMC2_CMD" : 9, + "PA0:TIM15_BKIN" : 4, + "PA0:TIM2_CH1" : 1, + "PA0:TIM2_ETR" : 1, + "PA0:TIM5_CH1" : 2, + "PA0:TIM8_ETR" : 3, + "PA0:UART4_TX" : 8, + "PA0:USART2_CTS" : 7, + "PA1:ETH_MII_RX_CLK" : 11, + "PA1:ETH_RMII_REF_CLK" : 11, + "PA1:EVENT-OUT" : 15, + "PA1:LCD_R2" : 14, + "PA1:LPTIM3_OUT" : 3, + "PA1:QUADSPI_BK1_IO3" : 9, + "PA1:SAI2_MCK_B" : 10, + "PA1:TIM15_CH1N" : 4, + "PA1:TIM2_CH2" : 1, + "PA1:TIM5_CH2" : 2, + "PA1:UART4_RX" : 8, + "PA1:USART2_RTS" : 7, + "PA2:ETH_MDIO" : 11, + "PA2:EVENT-OUT" : 15, + "PA2:LCD_R1" : 14, + "PA2:LPTIM4_OUT" : 3, + "PA2:MDIOS_MDIO" : 12, + "PA2:SAI2_SCK_B" : 8, + "PA2:TIM15_CH1" : 4, + "PA2:TIM2_CH3" : 1, + "PA2:TIM5_CH3" : 2, + "PA2:USART2_TX" : 7, + "PA3:ETH_MII_COL" : 11, + "PA3:EVENT-OUT" : 15, + "PA3:LCD_B2" : 9, + "PA3:LCD_B5" : 14, + "PA3:LPTIM5_OUT" : 3, + "PA3:OTG_HS_ULPI_D0" : 10, + "PA3:TIM15_CH2" : 4, + "PA3:TIM2_CH4" : 1, + "PA3:TIM5_CH4" : 2, + "PA3:USART2_RX" : 7, + "PA4:DCMI_HSYNC" : 13, + "PA4:EVENT-OUT" : 15, + "PA4:I2S1_WS" : 5, + "PA4:I2S3_WS" : 6, + "PA4:LCD_VSYNC" : 14, + "PA4:OTG_HS_SOF" : 12, + "PA4:SPI1_NSS" : 5, + "PA4:SPI3_NSS" : 6, + "PA4:SPI6_NSS" : 8, + "PA4:TIM5_ETR" : 2, + "PA4:USART2_CK" : 7, + "PA5:EVENT-OUT" : 15, + "PA5:I2S1_CK" : 5, + "PA5:LCD_R4" : 14, + "PA5:OTG_HS_ULPI_CK" : 10, + "PA5:SPI1_SCK" : 5, + "PA5:SPI6_SCK" : 8, + "PA5:TIM2_CH1" : 1, + "PA5:TIM2_ETR" : 1, + "PA5:TIM8_CH1N" : 3, + "PA6:DCMI_PIXCLK" : 13, + "PA6:EVENT-OUT" : 15, + "PA6:I2S1_SDI" : 5, + "PA6:LCD_G2" : 14, + "PA6:MDIOS_MDC" : 11, + "PA6:SPI1_MISO" : 5, + "PA6:SPI6_MISO" : 8, + "PA6:TIM13_CH1" : 9, + "PA6:TIM1_BKIN" : 1, + "PA6:TIM1_BKIN_COMP12" : 12, + "PA6:TIM3_CH1" : 2, + "PA6:TIM8_BKIN" : 3, + "PA6:TIM8_BKIN_COMP12" : 10, + "PA7:ETH_MII_RX_DV" : 11, + "PA7:ETH_RMII_CRS_DV" : 11, + "PA7:EVENT-OUT" : 15, + "PA7:FMC_SDNWE" : 12, + "PA7:I2S1_SDO" : 5, + "PA7:SPI1_MOSI" : 5, + "PA7:SPI6_MOSI" : 8, + "PA7:TIM14_CH1" : 9, + "PA7:TIM1_CH1N" : 1, + "PA7:TIM3_CH2" : 2, + "PA7:TIM8_CH1N" : 3, + "PA8:EVENT-OUT" : 15, + "PA8:HRTIM_CHB2" : 2, + "PA8:I2C3_SCL" : 4, + "PA8:LCD_B3" : 13, + "PA8:LCD_R6" : 14, + "PA8:MCO1" : 0, + "PA8:OTG_FS_SOF" : 10, + "PA8:TIM1_CH1" : 1, + "PA8:TIM8_BKIN2" : 3, + "PA8:TIM8_BKIN2_COMP12" : 12, + "PA8:UART7_RX" : 11, + "PA8:USART1_CK" : 7, + "PA9:DCMI_D0" : 13, + "PA9:EVENT-OUT" : 15, + "PA9:CAN1_RX" : 9, + "PA9:HRTIM_CHC1" : 2, + "PA9:I2C3_SMBA" : 4, + "PA9:I2S2_CK" : 5, + "PA9:LCD_R5" : 14, + "PA9:LPUART1_TX" : 3, + "PA9:SPI2_SCK" : 5, + "PA9:TIM1_CH2" : 1, + "PA9:USART1_TX" : 7, + "PA10:DCMI_D1" : 13, + "PA10:EVENT-OUT" : 15, + "PA10:CAN1_TX" : 9, + "PA10:HRTIM_CHC2" : 2, + "PA10:LCD_B1" : 14, + "PA10:LCD_B4" : 12, + "PA10:LPUART1_RX" : 3, + "PA10:MDIOS_MDIO" : 11, + "PA10:OTG_FS_ID" : 10, + "PA10:TIM1_CH3" : 1, + "PA10:USART1_RX" : 7, + "PA11:EVENT-OUT" : 15, + "PA11:CAN1_RX" : 9, + "PA11:HRTIM_CHD1" : 2, + "PA11:I2S2_WS" : 5, + "PA11:LCD_R4" : 14, + "PA11:LPUART1_CTS" : 3, + "PA11:OTG_FS_DM" : 10, + "PA11:SPI2_NSS" : 5, + "PA11:TIM1_CH4" : 1, + "PA11:UART4_RX" : 6, + "PA11:USART1_CTS_NSS" : 7, + "PA12:EVENT-OUT" : 15, + "PA12:CAN1_TX" : 9, + "PA12:HRTIM_CHD2" : 2, + "PA12:I2S2_CK" : 5, + "PA12:LCD_R5" : 14, + "PA12:LPUART1_RTS" : 3, + "PA12:OTG_FS_DP" : 10, + "PA12:SAI2_FS_B" : 8, + "PA12:SPI2_SCK" : 5, + "PA12:TIM1_ETR" : 1, + "PA12:UART4_TX" : 6, + "PA12:USART1_RTS" : 7, + "PA13:EVENT-OUT" : 15, + "PA13:JTMS-SWDIO" : 0, + "PA14:EVENT-OUT" : 15, + "PA14:JTCK-SWCLK" : 0, + "PA15:EVENT-OUT" : 15, + "PA15:HDMI_CEC" : 4, + "PA15:HRTIM_FLT1" : 2, + "PA15:I2S1_WS" : 5, + "PA15:I2S3_WS" : 6, + "PA15:JTDI" : 0, + "PA15:SPI1_NSS" : 5, + "PA15:SPI3_NSS" : 6, + "PA15:SPI6_NSS" : 7, + "PA15:TIM2_CH1" : 1, + "PA15:TIM2_ETR" : 1, + "PA15:UART4_RTS" : 8, + "PA15:UART7_TX" : 11, + "PB0:DFSDM_CKOUT" : 6, + "PB0:ETH_MII_RXD2" : 11, + "PB0:EVENT-OUT" : 15, + "PB0:LCD_G1" : 14, + "PB0:LCD_R3" : 9, + "PB0:OTG_HS_ULPI_D1" : 10, + "PB0:TIM1_CH2N" : 1, + "PB0:TIM3_CH3" : 2, + "PB0:TIM8_CH2N" : 3, + "PB0:UART4_CTS" : 8, + "PB1:DFSDM_DATIN1" : 6, + "PB1:ETH_MII_RXD3" : 11, + "PB1:EVENT-OUT" : 15, + "PB1:LCD_G0" : 14, + "PB1:LCD_R6" : 9, + "PB1:OTG_HS_ULPI_D2" : 10, + "PB1:TIM1_CH3N" : 1, + "PB1:TIM3_CH4" : 2, + "PB1:TIM8_CH3N" : 3, + "PB2:DFSDM_CKIN1" : 4, + "PB2:EVENT-OUT" : 15, + "PB2:I2S3_SDO" : 7, + "PB2:QUADSPI_CLK" : 9, + "PB2:SAI1_D1" : 2, + "PB2:SAI1_SD_A" : 6, + "PB2:SAI4_D1" : 10, + "PB2:SAI4_SD_A" : 8, + "PB2:SPI3_MOSI" : 7, + "PB3:EVENT-OUT" : 15, + "PB3:HRTIM_FLT4" : 2, + "PB3:I2S1_CK" : 5, + "PB3:I2S3_CK" : 6, + "PB3:JTDO" : 0, + "PB3:SDMMC2_D2" : 9, + "PB3:SPI1_SCK" : 5, + "PB3:SPI3_SCK" : 6, + "PB3:SPI6_SCK" : 8, + "PB3:TIM2_CH2" : 1, + "PB3:TRACESWO" : 0, + "PB3:UART7_RX" : 11, + "PB4:EVENT-OUT" : 15, + "PB4:HRTIM_EEV6" : 3, + "PB4:I2S1_SDI" : 5, + "PB4:I2S2_WS" : 7, + "PB4:I2S3_SDI" : 6, + "PB4:NJTRST" : 0, + "PB4:SDMMC2_D3" : 9, + "PB4:SPI1_MISO" : 5, + "PB4:SPI2_NSS" : 7, + "PB4:SPI3_MISO" : 6, + "PB4:SPI6_MISO" : 8, + "PB4:TIM16_BKIN" : 1, + "PB4:TIM3_CH1" : 2, + "PB4:UART7_TX" : 11, + "PB5:DCMI_D10" : 13, + "PB5:ETH_PPS_OUT" : 11, + "PB5:EVENT-OUT" : 15, + "PB5:CAN2_RX" : 9, + "PB5:FMC_SDCKE1" : 12, + "PB5:HRTIM_EEV7" : 3, + "PB5:I2C1_SMBA" : 4, + "PB5:I2C4_SMBA" : 6, + "PB5:I2S1_SDO" : 5, + "PB5:I2S3_SDO" : 7, + "PB5:OTG_HS_ULPI_D7" : 10, + "PB5:SPI1_MOSI" : 5, + "PB5:SPI3_MOSI" : 7, + "PB5:SPI6_MOSI" : 8, + "PB5:TIM17_BKIN" : 1, + "PB5:TIM3_CH2" : 2, + "PB5:UART5_RX" : 14, + "PB6:DCMI_D5" : 13, + "PB6:DFSDM_DATIN5" : 11, + "PB6:EVENT-OUT" : 15, + "PB6:CAN2_TX" : 9, + "PB6:FMC_SDNE1" : 12, + "PB6:HDMI_CEC" : 5, + "PB6:HRTIM_EEV8" : 3, + "PB6:I2C1_SCL" : 4, + "PB6:I2C4_SCL" : 6, + "PB6:LPUART1_TX" : 8, + "PB6:QUADSPI_BK1_NCS" : 10, + "PB6:TIM16_CH1N" : 1, + "PB6:TIM4_CH1" : 2, + "PB6:UART5_TX" : 14, + "PB6:USART1_TX" : 7, + "PB7:DCMI_VSYNC" : 13, + "PB7:DFSDM_CKIN5" : 11, + "PB7:EVENT-OUT" : 15, + "PB7:CAN2_TX" : 9, + "PB7:FMC_NL" : 12, + "PB7:HRTIM_EEV9" : 3, + "PB7:I2C1_SDA" : 4, + "PB7:I2C4_SDA" : 6, + "PB7:LPUART1_RX" : 8, + "PB7:TIM17_CH1N" : 1, + "PB7:TIM4_CH2" : 2, + "PB7:USART1_RX" : 7, + "PB8:DCMI_D6" : 13, + "PB8:DFSDM_CKIN7" : 3, + "PB8:ETH_MII_TXD3" : 11, + "PB8:EVENT-OUT" : 15, + "PB8:CAN1_RX" : 9, + "PB8:I2C1_SCL" : 4, + "PB8:I2C4_SCL" : 6, + "PB8:LCD_B6" : 14, + "PB8:SDMMC1_CKIN" : 7, + "PB8:SDMMC1_D4" : 12, + "PB8:SDMMC2_D4" : 10, + "PB8:TIM16_CH1" : 1, + "PB8:TIM4_CH3" : 2, + "PB8:UART4_RX" : 8, + "PB9:DCMI_D7" : 13, + "PB9:DFSDM_DATIN7" : 3, + "PB9:EVENT-OUT" : 15, + "PB9:CAN1_TX" : 9, + "PB9:I2C1_SDA" : 4, + "PB9:I2C4_SDA" : 6, + "PB9:I2C4_SMBA" : 11, + "PB9:I2S2_WS" : 5, + "PB9:LCD_B7" : 14, + "PB9:SDMMC1_CDIR" : 7, + "PB9:SDMMC1_D5" : 12, + "PB9:SDMMC2_D5" : 10, + "PB9:SPI2_NSS" : 5, + "PB9:TIM17_CH1" : 1, + "PB9:TIM4_CH4" : 2, + "PB9:UART4_TX" : 8, + "PB10:DFSDM_DATIN7" : 6, + "PB10:ETH_MII_RX_ER" : 11, + "PB10:EVENT-OUT" : 15, + "PB10:HRTIM_SCOUT" : 2, + "PB10:I2C2_SCL" : 4, + "PB10:I2S2_CK" : 5, + "PB10:LCD_G4" : 14, + "PB10:LPTIM2_IN1" : 3, + "PB10:OTG_HS_ULPI_D3" : 10, + "PB10:QUADSPI_BK1_NCS" : 9, + "PB10:SPI2_SCK" : 5, + "PB10:TIM2_CH3" : 1, + "PB10:USART3_TX" : 7, + "PB11:DFSDM_CKIN7" : 6, + "PB11:ETH_MII_TX_EN" : 11, + "PB11:ETH_RMII_TX_EN" : 11, + "PB11:EVENT-OUT" : 15, + "PB11:HRTIM_SCIN" : 2, + "PB11:I2C2_SDA" : 4, + "PB11:LCD_G5" : 14, + "PB11:LPTIM2_ETR" : 3, + "PB11:OTG_HS_ULPI_D4" : 10, + "PB11:TIM2_CH4" : 1, + "PB11:USART3_RX" : 7, + "PB12:DFSDM_DATIN1" : 6, + "PB12:ETH_MII_TXD0" : 11, + "PB12:ETH_RMII_TXD0" : 11, + "PB12:EVENT-OUT" : 15, + "PB12:CAN2_RX" : 9, + "PB12:I2C2_SMBA" : 4, + "PB12:I2S2_WS" : 5, + "PB12:OTG_HS_ID" : 12, + "PB12:OTG_HS_ULPI_D5" : 10, + "PB12:SPI2_NSS" : 5, + "PB12:TIM1_BKIN" : 1, + "PB12:TIM1_BKIN_COMP12" : 13, + "PB12:UART5_RX" : 14, + "PB12:USART3_CK" : 7, + "PB13:DFSDM_CKIN1" : 6, + "PB13:ETH_MII_TXD1" : 11, + "PB13:ETH_RMII_TXD1" : 11, + "PB13:EVENT-OUT" : 15, + "PB13:CAN2_TX" : 9, + "PB13:I2S2_CK" : 5, + "PB13:LPTIM2_OUT" : 3, + "PB13:OTG_HS_ULPI_D6" : 10, + "PB13:SPI2_SCK" : 5, + "PB13:TIM1_CH1N" : 1, + "PB13:UART5_TX" : 14, + "PB13:USART3_CTS_NSS" : 7, + "PB14:DFSDM_DATIN2" : 6, + "PB14:EVENT-OUT" : 15, + "PB14:I2S2_SDI" : 5, + "PB14:OTG_HS_DM" : 12, + "PB14:SDMMC2_D0" : 9, + "PB14:SPI2_MISO" : 5, + "PB14:TIM12_CH1" : 2, + "PB14:TIM1_CH2N" : 1, + "PB14:TIM8_CH2N" : 3, + "PB14:UART4_RTS" : 8, + "PB14:USART1_TX" : 4, + "PB14:USART3_RTS" : 7, + "PB15:DFSDM_CKIN2" : 6, + "PB15:EVENT-OUT" : 15, + "PB15:I2S2_SDO" : 5, + "PB15:OTG_HS_DP" : 12, + "PB15:RTC_REFIN" : 0, + "PB15:SDMMC2_D1" : 9, + "PB15:SPI2_MOSI" : 5, + "PB15:TIM12_CH2" : 2, + "PB15:TIM1_CH3N" : 1, + "PB15:TIM8_CH3N" : 3, + "PB15:UART4_CTS" : 8, + "PB15:USART1_RX" : 4, + "PC0:DFSDM_CKIN0" : 3, + "PC0:DFSDM_DATIN4" : 6, + "PC0:EVENT-OUT" : 15, + "PC0:FMC_SDNWE" : 12, + "PC0:LCD_R5" : 14, + "PC0:OTG_HS_ULPI_STP" : 10, + "PC0:SAI2_FS_B" : 8, + "PC1:DFSDM_CKIN4" : 4, + "PC1:DFSDM_DATIN0" : 3, + "PC1:ETH_MDC" : 11, + "PC1:EVENT-OUT" : 15, + "PC1:I2S2_SDO" : 5, + "PC1:MDIOS_MDC" : 12, + "PC1:SAI1_D1" : 2, + "PC1:SAI1_SD_A" : 6, + "PC1:SAI4_D1" : 10, + "PC1:SAI4_SD_A" : 8, + "PC1:SDMMC2_CK" : 9, + "PC1:SPI2_MOSI" : 5, + "PC1:TRACED0" : 0, + "PC2:DFSDM_CKIN1" : 3, + "PC2:DFSDM_CKOUT" : 6, + "PC2:ETH_MII_TXD2" : 11, + "PC2:EVENT-OUT" : 15, + "PC2:FMC_SDNE0" : 12, + "PC2:I2S2_SDI" : 5, + "PC2:OTG_HS_ULPI_DIR" : 10, + "PC2:SPI2_MISO" : 5, + "PC3:DFSDM_DATIN1" : 3, + "PC3:ETH_MII_TX_CLK" : 11, + "PC3:EVENT-OUT" : 15, + "PC3:FMC_SDCKE0" : 12, + "PC3:I2S2_SDO" : 5, + "PC3:OTG_HS_ULPI_NXT" : 10, + "PC3:SPI2_MOSI" : 5, + "PC4:DFSDM_CKIN2" : 3, + "PC4:ETH_MII_RXD0" : 11, + "PC4:ETH_RMII_RXD0" : 11, + "PC4:EVENT-OUT" : 15, + "PC4:FMC_SDNE0" : 12, + "PC4:I2S1_MCK" : 5, + "PC4:SPDIFRX_IN2" : 9, + "PC5:COMP_1_OUT" : 13, + "PC5:DFSDM_DATIN2" : 3, + "PC5:ETH_MII_RXD1" : 11, + "PC5:ETH_RMII_RXD1" : 11, + "PC5:EVENT-OUT" : 15, + "PC5:FMC_SDCKE0" : 12, + "PC5:SAI1_D3" : 2, + "PC5:SAI4_D3" : 10, + "PC5:SPDIFRX_IN3" : 9, + "PC6:DCMI_D0" : 13, + "PC6:DFSDM_CKIN3" : 4, + "PC6:EVENT-OUT" : 15, + "PC6:FMC_NWAIT" : 9, + "PC6:HRTIM_CHA1" : 1, + "PC6:I2S2_MCK" : 5, + "PC6:LCD_HSYNC" : 14, + "PC6:SDMMC1_D0DIR" : 8, + "PC6:SDMMC1_D6" : 12, + "PC6:SDMMC2_D6" : 10, + "PC6:TIM3_CH1" : 2, + "PC6:TIM8_CH1" : 3, + "PC6:USART6_TX" : 7, + "PC7:DCMI_D1" : 13, + "PC7:DFSDM_DATIN3" : 4, + "PC7:EVENT-OUT" : 15, + "PC7:FMC_NE1" : 9, + "PC7:HRTIM_CHA2" : 1, + "PC7:I2S3_MCK" : 6, + "PC7:LCD_G6" : 14, + "PC7:SDMMC1_D123DIR" : 8, + "PC7:SDMMC1_D7" : 12, + "PC7:SDMMC2_D7" : 10, + "PC7:SWPMI_TX" : 11, + "PC7:TIM3_CH2" : 2, + "PC7:TIM8_CH2" : 3, + "PC7:TRGIO" : 0, + "PC7:USART6_RX" : 7, + "PC8:DCMI_D2" : 13, + "PC8:EVENT-OUT" : 15, + "PC8:FMC_NCE" : 9, + "PC8:FMC_NE2" : 9, + "PC8:HRTIM_CHB1" : 1, + "PC8:SDMMC1_D0" : 12, + "PC8:SWPMI_RX" : 11, + "PC8:TIM3_CH3" : 2, + "PC8:TIM8_CH3" : 3, + "PC8:TRACED1" : 0, + "PC8:UART5_RTS" : 8, + "PC8:USART6_CK" : 7, + "PC9:DCMI_D3" : 13, + "PC9:EVENT-OUT" : 15, + "PC9:I2C3_SDA" : 4, + "PC9:I2S_CKIN" : 5, + "PC9:LCD_B2" : 14, + "PC9:LCD_G3" : 10, + "PC9:MCO2" : 0, + "PC9:QUADSPI_BK1_IO0" : 9, + "PC9:SDMMC1_D1" : 12, + "PC9:SWPMI_SUSPEND" : 11, + "PC9:TIM3_CH4" : 2, + "PC9:TIM8_CH4" : 3, + "PC9:UART5_CTS" : 8, + "PC10:DCMI_D8" : 13, + "PC10:DFSDM_CKIN5" : 3, + "PC10:EVENT-OUT" : 15, + "PC10:HRTIM_EEV1" : 2, + "PC10:I2S3_CK" : 6, + "PC10:LCD_R2" : 14, + "PC10:QUADSPI_BK1_IO1" : 9, + "PC10:SDMMC1_D2" : 12, + "PC10:SPI3_SCK" : 6, + "PC10:UART4_TX" : 8, + "PC10:USART3_TX" : 7, + "PC11:DCMI_D4" : 13, + "PC11:DFSDM_DATIN5" : 3, + "PC11:EVENT-OUT" : 15, + "PC11:HRTIM_FLT2" : 2, + "PC11:I2S3_SDI" : 6, + "PC11:QUADSPI_BK2_NCS" : 9, + "PC11:SDMMC1_D3" : 12, + "PC11:SPI3_MISO" : 6, + "PC11:UART4_RX" : 8, + "PC11:USART3_RX" : 7, + "PC12:DCMI_D9" : 13, + "PC12:EVENT-OUT" : 15, + "PC12:HRTIM_EEV2" : 2, + "PC12:I2S3_SDO" : 6, + "PC12:SDMMC1_CK" : 12, + "PC12:SPI3_MOSI" : 6, + "PC12:TRACED3" : 0, + "PC12:UART5_TX" : 8, + "PC12:USART3_CK" : 7, + "PC13:EVENT-OUT" : 15, + "PC14:EVENT-OUT" : 15, + "PC15:EVENT-OUT" : 15, + "PD0:DFSDM_CKIN6" : 3, + "PD0:EVENT-OUT" : 15, + "PD0:CAN1_RX" : 9, + "PD0:FMC_D2" : 12, + "PD0:FMC_DA2" : 12, + "PD0:SAI3_SCK_A" : 6, + "PD0:UART4_RX" : 8, + "PD1:DFSDM_DATIN6" : 3, + "PD1:EVENT-OUT" : 15, + "PD1:CAN1_TX" : 9, + "PD1:FMC_D3" : 12, + "PD1:FMC_DA3" : 12, + "PD1:SAI3_SD_A" : 6, + "PD1:UART4_TX" : 8, + "PD2:DCMI_D11" : 13, + "PD2:EVENT-OUT" : 15, + "PD2:SDMMC1_CMD" : 12, + "PD2:TIM3_ETR" : 2, + "PD2:TRACED2" : 0, + "PD2:UART5_RX" : 8, + "PD3:DCMI_D5" : 13, + "PD3:DFSDM_CKOUT" : 3, + "PD3:EVENT-OUT" : 15, + "PD3:FMC_CLK" : 12, + "PD3:I2S2_CK" : 5, + "PD3:LCD_G7" : 14, + "PD3:SPI2_SCK" : 5, + "PD3:USART2_CTS" : 7, + "PD4:EVENT-OUT" : 15, + "PD4:CAN1_RX" : 9, + "PD4:FMC_NOE" : 12, + "PD4:HRTIM_FLT3" : 2, + "PD4:SAI3_FS_A" : 6, + "PD4:USART2_RTS" : 7, + "PD5:EVENT-OUT" : 15, + "PD5:CAN1_TX" : 9, + "PD5:FMC_NWE" : 12, + "PD5:HRTIM_EEV3" : 2, + "PD5:USART2_TX" : 7, + "PD6:DCMI_D10" : 13, + "PD6:DFSDM_CKIN4" : 3, + "PD6:DFSDM_DATIN1" : 4, + "PD6:EVENT-OUT" : 15, + "PD6:CAN2_RX" : 9, + "PD6:FMC_NWAIT" : 12, + "PD6:I2S3_SDO" : 5, + "PD6:LCD_B2" : 14, + "PD6:SAI1_D1" : 2, + "PD6:SAI1_SD_A" : 6, + "PD6:SAI4_D1" : 10, + "PD6:SAI4_SD_A" : 8, + "PD6:SDMMC2_CK" : 11, + "PD6:SPI3_MOSI" : 5, + "PD6:USART2_RX" : 7, + "PD7:DFSDM_CKIN1" : 6, + "PD7:DFSDM_DATIN4" : 3, + "PD7:EVENT-OUT" : 15, + "PD7:FMC_NE1" : 12, + "PD7:I2S1_SDO" : 5, + "PD7:SDMMC2_CMD" : 11, + "PD7:SPDIFRX_IN0" : 9, + "PD7:SPI1_MOSI" : 5, + "PD7:USART2_CK" : 7, + "PD8:DFSDM_CKIN3" : 3, + "PD8:EVENT-OUT" : 15, + "PD8:FMC_D13" : 12, + "PD8:FMC_DA13" : 12, + "PD8:SAI3_SCK_B" : 6, + "PD8:SPDIFRX_IN1" : 9, + "PD8:USART3_TX" : 7, + "PD9:DFSDM_DATIN3" : 3, + "PD9:EVENT-OUT" : 15, + "PD9:CAN2_RX" : 9, + "PD9:FMC_D14" : 12, + "PD9:FMC_DA14" : 12, + "PD9:SAI3_SD_B" : 6, + "PD9:USART3_RX" : 7, + "PD10:DFSDM_CKOUT" : 3, + "PD10:EVENT-OUT" : 15, + "PD10:CAN2_TX" : 9, + "PD10:FMC_D15" : 12, + "PD10:FMC_DA15" : 12, + "PD10:LCD_B3" : 14, + "PD10:SAI3_FS_B" : 6, + "PD10:USART3_CK" : 7, + "PD11:EVENT-OUT" : 15, + "PD11:FMC_A16" : 12, + "PD11:I2C4_SMBA" : 4, + "PD11:LPTIM2_IN2" : 3, + "PD11:QUADSPI_BK1_IO0" : 9, + "PD11:SAI2_SD_A" : 10, + "PD11:USART3_CTS" : 7, + "PD12:EVENT-OUT" : 15, + "PD12:FMC_A17" : 12, + "PD12:I2C4_SCL" : 4, + "PD12:LPTIM1_IN1" : 1, + "PD12:LPTIM2_IN1" : 3, + "PD12:QUADSPI_BK1_IO1" : 9, + "PD12:SAI2_FS_A" : 10, + "PD12:TIM4_CH1" : 2, + "PD12:USART3_RTS" : 7, + "PD13:EVENT-OUT" : 15, + "PD13:FMC_A18" : 12, + "PD13:I2C4_SDA" : 4, + "PD13:LPTIM1_OUT" : 1, + "PD13:QUADSPI_BK1_IO3" : 9, + "PD13:SAI2_SCK_A" : 10, + "PD13:TIM4_CH2" : 2, + "PD14:EVENT-OUT" : 15, + "PD14:FMC_D0" : 12, + "PD14:FMC_DA0" : 12, + "PD14:SAI3_MCLK_B" : 6, + "PD14:TIM4_CH3" : 2, + "PD14:UART8_CTS" : 8, + "PD15:EVENT-OUT" : 15, + "PD15:FMC_D1" : 12, + "PD15:FMC_DA1" : 12, + "PD15:SAI3_MCLK_A" : 6, + "PD15:TIM4_CH4" : 2, + "PD15:UART8_RTS" : 8, + "PE0:DCMI_D2" : 13, + "PE0:EVENT-OUT" : 15, + "PE0:CAN1_RX" : 9, + "PE0:FMC_NBL0" : 12, + "PE0:HRTIM_SCIN" : 3, + "PE0:LPTIM1_ETR" : 1, + "PE0:LPTIM2_ETR" : 4, + "PE0:SAI2_MCK_A" : 10, + "PE0:TIM4_ETR" : 2, + "PE0:UART8_RX" : 8, + "PE1:DCMI_D3" : 13, + "PE1:EVENT-OUT" : 15, + "PE1:CAN1_TX" : 9, + "PE1:FMC_NBL1" : 12, + "PE1:HRTIM_SCOUT" : 3, + "PE1:LPTIM1_IN2" : 1, + "PE1:UART8_TX" : 8, + "PE2:ETH_MII_TXD3" : 11, + "PE2:EVENT-OUT" : 15, + "PE2:FMC_A23" : 12, + "PE2:QUADSPI_BK1_IO2" : 9, + "PE2:SAI1_CK1" : 2, + "PE2:SAI1_MCLK_A" : 6, + "PE2:SAI4_CK1" : 10, + "PE2:SAI4_MCLK_A" : 8, + "PE2:SPI4_SCK" : 5, + "PE2:TRACECLK" : 0, + "PE3:EVENT-OUT" : 15, + "PE3:FMC_A19" : 12, + "PE3:SAI1_SD_B" : 6, + "PE3:SAI4_SD_B" : 8, + "PE3:TIM15_BKIN" : 4, + "PE3:TRACED0" : 0, + "PE4:DCMI_D4" : 13, + "PE4:DFSDM_DATIN3" : 3, + "PE4:EVENT-OUT" : 15, + "PE4:FMC_A20" : 12, + "PE4:LCD_B0" : 14, + "PE4:SAI1_D2" : 2, + "PE4:SAI1_FS_A" : 6, + "PE4:SAI4_D2" : 10, + "PE4:SAI4_FS_A" : 8, + "PE4:SPI4_NSS" : 5, + "PE4:TIM15_CH1N" : 4, + "PE4:TRACED1" : 0, + "PE5:DCMI_D6" : 13, + "PE5:DFSDM_CKIN3" : 3, + "PE5:EVENT-OUT" : 15, + "PE5:FMC_A21" : 12, + "PE5:LCD_G0" : 14, + "PE5:SAI1_CK2" : 2, + "PE5:SAI1_SCK_A" : 6, + "PE5:SAI4_CK2" : 10, + "PE5:SAI4_SCK_A" : 8, + "PE5:SPI4_MISO" : 5, + "PE5:TIM15_CH1" : 4, + "PE5:TRACED2" : 0, + "PE6:DCMI_D7" : 13, + "PE6:EVENT-OUT" : 15, + "PE6:FMC_A22" : 12, + "PE6:LCD_G1" : 14, + "PE6:SAI1_D1" : 2, + "PE6:SAI1_SD_A" : 6, + "PE6:SAI2_MCK_B" : 10, + "PE6:SAI4_D1" : 9, + "PE6:SAI4_SD_A" : 8, + "PE6:SPI4_MOSI" : 5, + "PE6:TIM15_CH2" : 4, + "PE6:TIM1_BKIN2" : 1, + "PE6:TIM1_BKIN2_COMP12" : 11, + "PE6:TRACED3" : 0, + "PE7:DFSDM_DATIN2" : 3, + "PE7:EVENT-OUT" : 15, + "PE7:FMC_D4" : 12, + "PE7:FMC_DA4" : 12, + "PE7:QUADSPI_BK2_IO0" : 10, + "PE7:TIM1_ETR" : 1, + "PE7:UART7_RX" : 7, + "PE8:COMP_2_OUT" : 13, + "PE8:DFSDM_CKIN2" : 3, + "PE8:EVENT-OUT" : 15, + "PE8:FMC_D5" : 12, + "PE8:FMC_DA5" : 12, + "PE8:QUADSPI_BK2_IO1" : 10, + "PE8:TIM1_CH1N" : 1, + "PE8:UART7_TX" : 7, + "PE9:DFSDM_CKOUT" : 3, + "PE9:EVENT-OUT" : 15, + "PE9:FMC_D6" : 12, + "PE9:FMC_DA6" : 12, + "PE9:QUADSPI_BK2_IO2" : 10, + "PE9:TIM1_CH1" : 1, + "PE9:UART7_RTS" : 7, + "PE10:DFSDM_DATIN4" : 3, + "PE10:EVENT-OUT" : 15, + "PE10:FMC_D7" : 12, + "PE10:FMC_DA7" : 12, + "PE10:QUADSPI_BK2_IO3" : 10, + "PE10:TIM1_CH2N" : 1, + "PE10:UART7_CTS" : 7, + "PE11:DFSDM_CKIN4" : 3, + "PE11:EVENT-OUT" : 15, + "PE11:FMC_D8" : 12, + "PE11:FMC_DA8" : 12, + "PE11:LCD_G3" : 14, + "PE11:SAI2_SD_B" : 10, + "PE11:SPI4_NSS" : 5, + "PE11:TIM1_CH2" : 1, + "PE12:COMP_1_OUT" : 13, + "PE12:DFSDM_DATIN5" : 3, + "PE12:EVENT-OUT" : 15, + "PE12:FMC_D9" : 12, + "PE12:FMC_DA9" : 12, + "PE12:LCD_B4" : 14, + "PE12:SAI2_SCK_B" : 10, + "PE12:SPI4_SCK" : 5, + "PE12:TIM1_CH3N" : 1, + "PE13:COMP_2_OUT" : 13, + "PE13:DFSDM_CKIN5" : 3, + "PE13:EVENT-OUT" : 15, + "PE13:FMC_D10" : 12, + "PE13:FMC_DA10" : 12, + "PE13:LCD_DE" : 14, + "PE13:SAI2_FS_B" : 10, + "PE13:SPI4_MISO" : 5, + "PE13:TIM1_CH3" : 1, + "PE14:EVENT-OUT" : 15, + "PE14:FMC_D11" : 12, + "PE14:FMC_DA11" : 12, + "PE14:LCD_CLK" : 14, + "PE14:SAI2_MCK_B" : 10, + "PE14:SPI4_MOSI" : 5, + "PE14:TIM1_CH4" : 1, + "PE15:EVENT-OUT" : 15, + "PE15:FMC_D12" : 12, + "PE15:FMC_DA12" : 12, + "PE15:HDMI__TIM1_BKIN" : 5, + "PE15:LCD_R7" : 14, + "PE15:TIM1_BKIN" : 1, + "PE15:TIM1_BKIN_COMP12" : 13, + "PF0:EVENT-OUT" : 15, + "PF0:FMC_A0" : 12, + "PF0:I2C2_SDA" : 4, + "PF1:EVENT-OUT" : 15, + "PF1:FMC_A1" : 12, + "PF1:I2C2_SCL" : 4, + "PF2:EVENT-OUT" : 15, + "PF2:FMC_A2" : 12, + "PF2:I2C2_SMBA" : 4, + "PF3:EVENT-OUT" : 15, + "PF3:FMC_A3" : 12, + "PF4:EVENT-OUT" : 15, + "PF4:FMC_A4" : 12, + "PF5:EVENT-OUT" : 15, + "PF5:FMC_A5" : 12, + "PF6:EVENT-OUT" : 15, + "PF6:QUADSPI_BK1_IO3" : 9, + "PF6:SAI1_SD_B" : 6, + "PF6:SAI4_SD_B" : 8, + "PF6:SPI5_NSS" : 5, + "PF6:TIM16_CH1" : 1, + "PF6:UART7_RX" : 7, + "PF7:EVENT-OUT" : 15, + "PF7:QUADSPI_BK1_IO2" : 9, + "PF7:SAI1_MCLK_B" : 6, + "PF7:SAI4_MCLK_B" : 8, + "PF7:SPI5_SCK" : 5, + "PF7:TIM17_CH1" : 1, + "PF7:UART7_TX" : 7, + "PF8:EVENT-OUT" : 15, + "PF8:QUADSPI_BK1_IO0" : 10, + "PF8:SAI1_SCK_B" : 6, + "PF8:SAI4_SCK_B" : 8, + "PF8:SPI5_MISO" : 5, + "PF8:TIM13_CH1" : 9, + "PF8:TIM16_CH1N" : 1, + "PF8:UART7_RTS" : 7, + "PF9:EVENT-OUT" : 15, + "PF9:QUADSPI_BK1_IO1" : 10, + "PF9:SAI1_FS_B" : 6, + "PF9:SAI4_FS_B" : 8, + "PF9:SPI5_MOSI" : 5, + "PF9:TIM14_CH1" : 9, + "PF9:TIM17_CH1N" : 1, + "PF9:UART7_CTS" : 7, + "PF10:DCMI_D11" : 13, + "PF10:EVENT-OUT" : 15, + "PF10:LCD_DE" : 14, + "PF10:QUADSPI_CLK" : 9, + "PF10:SAI1_D3" : 2, + "PF10:SAI4_D3" : 10, + "PF10:TIM16_BKIN" : 1, + "PF11:DCMI_D12" : 13, + "PF11:EVENT-OUT" : 15, + "PF11:FMC_SDNRAS" : 12, + "PF11:SAI2_SD_B" : 10, + "PF11:SPI5_MOSI" : 5, + "PF12:EVENT-OUT" : 15, + "PF12:FMC_A6" : 12, + "PF13:DFSDM_DATIN6" : 3, + "PF13:EVENT-OUT" : 15, + "PF13:FMC_A7" : 12, + "PF13:I2C4_SMBA" : 4, + "PF14:DFSDM_CKIN6" : 3, + "PF14:EVENT-OUT" : 15, + "PF14:FMC_A8" : 12, + "PF14:I2C4_SCL" : 4, + "PF15:EVENT-OUT" : 15, + "PF15:FMC_A9" : 12, + "PF15:I2C4_SDA" : 4, + "PG0:EVENT-OUT" : 15, + "PG0:FMC_A10" : 12, + "PG1:EVENT-OUT" : 15, + "PG1:FMC_A11" : 12, + "PG2:EVENT-OUT" : 15, + "PG2:FMC_A12" : 12, + "PG2:TIM8_BKIN" : 3, + "PG2:TIM8_BKIN_COMP12" : 11, + "PG3:EVENT-OUT" : 15, + "PG3:FMC_A13" : 12, + "PG3:TIM8_BKIN2" : 3, + "PG3:TIM8_BKIN2_COMP12" : 11, + "PG4:EVENT-OUT" : 15, + "PG4:FMC_A14" : 12, + "PG4:FMC_BA0" : 12, + "PG4:TIM1_BKIN2" : 1, + "PG4:TIM1_BKIN2_COMP12" : 11, + "PG5:EVENT-OUT" : 15, + "PG5:FMC_A15" : 12, + "PG5:FMC_BA1" : 12, + "PG5:TIM1_ETR" : 1, + "PG6:DCMI_D12" : 13, + "PG6:EVENT-OUT" : 15, + "PG6:FMC_NE3" : 12, + "PG6:HRTIM_CHE1" : 2, + "PG6:LCD_R7" : 14, + "PG6:QUADSPI_BK1_NCS" : 10, + "PG6:TIM17_BKIN" : 1, + "PG7:DCMI_D13" : 13, + "PG7:EVENT-OUT" : 15, + "PG7:FMC_INT" : 12, + "PG7:HRTIM_CHE2" : 2, + "PG7:LCD_CLK" : 14, + "PG7:SAI1_MCLK_A" : 6, + "PG7:USART6_CK" : 7, + "PG8:ETH_PPS_OUT" : 11, + "PG8:EVENT-OUT" : 15, + "PG8:FMC_SDCLK" : 12, + "PG8:LCD_G7" : 14, + "PG8:SPDIFRX_IN2" : 8, + "PG8:SPI6_NSS" : 5, + "PG8:TIM8_ETR" : 3, + "PG8:USART6_RTS" : 7, + "PG9:DCMI_VSYNC" : 13, + "PG9:EVENT-OUT" : 15, + "PG9:FMC_NCE" : 12, + "PG9:FMC_NE2" : 12, + "PG9:I2S1_SDI" : 5, + "PG9:QUADSPI_BK2_IO2" : 9, + "PG9:SAI2_FS_B" : 10, + "PG9:SPDIFRX_IN3" : 8, + "PG9:SPI1_MISO" : 5, + "PG9:USART6_RX" : 7, + "PG10:DCMI_D2" : 13, + "PG10:EVENT-OUT" : 15, + "PG10:FMC_NE3" : 12, + "PG10:HRTIM_FLT5" : 2, + "PG10:I2S1_WS" : 5, + "PG10:LCD_B2" : 14, + "PG10:LCD_G3" : 9, + "PG10:SAI2_SD_B" : 10, + "PG10:SPI1_NSS" : 5, + "PG11:DCMI_D3" : 13, + "PG11:ETH_MII_TX_EN" : 11, + "PG11:ETH_RMII_TX_EN" : 11, + "PG11:EVENT-OUT" : 15, + "PG11:HRTIM_EEV4" : 2, + "PG11:I2S1_CK" : 5, + "PG11:LCD_B3" : 14, + "PG11:SDMMC2_D2" : 10, + "PG11:SPDIFRX_IN0" : 8, + "PG11:SPI1_SCK" : 5, + "PG12:ETH_MII_TXD1" : 11, + "PG12:ETH_RMII_TXD1" : 11, + "PG12:EVENT-OUT" : 15, + "PG12:FMC_NE4" : 12, + "PG12:HRTIM_EEV5" : 2, + "PG12:LCD_B1" : 14, + "PG12:LCD_B4" : 9, + "PG12:LPTIM1_IN1" : 1, + "PG12:SPDIFRX_IN1" : 8, + "PG12:SPI6_MISO" : 5, + "PG12:USART6_RTS" : 7, + "PG13:ETH_MII_TXD0" : 11, + "PG13:ETH_RMII_TXD0" : 11, + "PG13:EVENT-OUT" : 15, + "PG13:FMC_A24" : 12, + "PG13:HRTIM_EEV10" : 2, + "PG13:LCD_R0" : 14, + "PG13:LPTIM1_OUT" : 1, + "PG13:SPI6_SCK" : 5, + "PG13:TRACED0" : 0, + "PG13:USART6_CTS" : 7, + "PG14:ETH_MII_TXD1" : 11, + "PG14:ETH_RMII_TXD1" : 11, + "PG14:EVENT-OUT" : 15, + "PG14:FMC_A25" : 12, + "PG14:LCD_B0" : 14, + "PG14:LPTIM1_ETR" : 1, + "PG14:QUADSPI_BK2_IO3" : 9, + "PG14:SPI6_MOSI" : 5, + "PG14:TRACED1" : 0, + "PG14:USART6_TX" : 7, + "PG15:DCMI_D13" : 13, + "PG15:EVENT-OUT" : 15, + "PG15:FMC_SDNCAS" : 12, + "PG15:USART6_CTS" : 7, + "PH0:EVENT-OUT" : 15, + "PH1:EVENT-OUT" : 15, + "PH2:ETH_MII_CRS" : 11, + "PH2:EVENT-OUT" : 15, + "PH2:FMC_SDCKE0" : 12, + "PH2:LCD_R0" : 14, + "PH2:LPTIM1_IN2" : 1, + "PH2:QUADSPI_BK2_IO0" : 9, + "PH2:SAI2_SCK_B" : 10, + "PH3:ETH_MII_COL" : 11, + "PH3:EVENT-OUT" : 15, + "PH3:FMC_SDNE0" : 12, + "PH3:LCD_R1" : 14, + "PH3:QUADSPI_BK2_IO1" : 9, + "PH3:SAI2_MCK_B" : 10, + "PH4:EVENT-OUT" : 15, + "PH4:I2C2_SCL" : 4, + "PH4:LCD_G4" : 14, + "PH4:LCD_G5" : 9, + "PH4:OTG_HS_ULPI_NXT" : 10, + "PH5:EVENT-OUT" : 15, + "PH5:FMC_SDNWE" : 12, + "PH5:I2C2_SDA" : 4, + "PH5:SPI5_NSS" : 5, + "PH6:DCMI_D8" : 13, + "PH6:ETH_MII_RXD2" : 11, + "PH6:EVENT-OUT" : 15, + "PH6:FMC_SDNE1" : 12, + "PH6:I2C2_SMBA" : 4, + "PH6:SPI5_SCK" : 5, + "PH6:TIM12_CH1" : 2, + "PH7:DCMI_D9" : 13, + "PH7:ETH_MII_RXD3" : 11, + "PH7:EVENT-OUT" : 15, + "PH7:FMC_SDCKE1" : 12, + "PH7:I2C3_SCL" : 4, + "PH7:SPI5_MISO" : 5, + "PH8:DCMI_HSYNC" : 13, + "PH8:EVENT-OUT" : 15, + "PH8:FMC_D16" : 12, + "PH8:I2C3_SDA" : 4, + "PH8:LCD_R2" : 14, + "PH8:TIM5_ETR" : 2, + "PH9:DCMI_D0" : 13, + "PH9:EVENT-OUT" : 15, + "PH9:FMC_D17" : 12, + "PH9:I2C3_SMBA" : 4, + "PH9:LCD_R3" : 14, + "PH9:TIM12_CH2" : 2, + "PH10:DCMI_D1" : 13, + "PH10:EVENT-OUT" : 15, + "PH10:FMC_D18" : 12, + "PH10:I2C4_SMBA" : 4, + "PH10:LCD_R4" : 14, + "PH10:TIM5_CH1" : 2, + "PH11:DCMI_D2" : 13, + "PH11:EVENT-OUT" : 15, + "PH11:FMC_D19" : 12, + "PH11:I2C4_SCL" : 4, + "PH11:LCD_R5" : 14, + "PH11:TIM5_CH2" : 2, + "PH12:DCMI_D3" : 13, + "PH12:EVENT-OUT" : 15, + "PH12:FMC_D20" : 12, + "PH12:I2C4_SDA" : 4, + "PH12:LCD_R6" : 14, + "PH12:TIM5_CH3" : 2, + "PH13:EVENT-OUT" : 15, + "PH13:CAN1_TX" : 9, + "PH13:FMC_D21" : 12, + "PH13:LCD_G2" : 14, + "PH13:TIM8_CH1N" : 3, + "PH13:UART4_TX" : 8, + "PH14:DCMI_D4" : 13, + "PH14:EVENT-OUT" : 15, + "PH14:CAN1_RX" : 9, + "PH14:FMC_D22" : 12, + "PH14:LCD_G3" : 14, + "PH14:TIM8_UCH2N" : 3, + "PH14:UART4_RX" : 8, + "PH15:DCMI_D11" : 13, + "PH15:EVENT-OUT" : 15, + "PH15:CAN1_TX" : 9, + "PH15:FMC_D23" : 12, + "PH15:LCD_G4" : 14, + "PH15:TIM8_CH3N" : 3, + "PI0:DCMI_D13" : 13, + "PI0:EVENT-OUT" : 15, + "PI0:CAN1_RX" : 9, + "PI0:FMC_D24" : 12, + "PI0:I2S2_WS" : 5, + "PI0:LCD_G5" : 14, + "PI0:SPI2_NSS" : 5, + "PI0:TIM5_CH4" : 2, + "PI1:DCMI_D8" : 13, + "PI1:EVENT-OUT" : 15, + "PI1:FMC_D25" : 12, + "PI1:I2S2_CK" : 5, + "PI1:LCD_G6" : 14, + "PI1:SPI2_SCK" : 5, + "PI1:TIM8_BKIN2" : 3, + "PI1:TIM8_BKIN2_COMP12" : 11, + "PI2:DCMI_D9" : 13, + "PI2:EVENT-OUT" : 15, + "PI2:FMC_D26" : 12, + "PI2:I2S2_SDI" : 5, + "PI2:LCD_G7" : 14, + "PI2:SPI2_MISO" : 5, + "PI2:TIM8_CH4" : 3, + "PI3:DCMI_D10" : 13, + "PI3:EVENT-OUT" : 15, + "PI3:FMC_D27" : 12, + "PI3:I2S2_SDO" : 5, + "PI3:SPI2_MOSI" : 5, + "PI3:TIM8_ETR" : 3, + "PI4:DCMI_D5" : 13, + "PI4:EVENT-OUT" : 15, + "PI4:FMC_NBL2" : 12, + "PI4:LCD_B4" : 14, + "PI4:SAI2_MCK_A" : 10, + "PI4:TIM8_BKIN" : 3, + "PI4:TIM8_BKIN_COMP12" : 11, + "PI5:DCMI_VSYNC" : 13, + "PI5:EVENT-OUT" : 15, + "PI5:FMC_NBL3" : 12, + "PI5:LCD_B5" : 14, + "PI5:SAI2_SCK_A" : 10, + "PI5:TIM8_CH1" : 3, + "PI6:DCMI_D6" : 13, + "PI6:EVENT-OUT" : 15, + "PI6:FMC_D28" : 12, + "PI6:LCD_B6" : 14, + "PI6:SAI2_SD_A" : 10, + "PI6:TIM8_CH2" : 3, + "PI7:DCMI_D7" : 13, + "PI7:EVENT-OUT" : 15, + "PI7:FMC_D29" : 12, + "PI7:LCD_B7" : 14, + "PI7:SAI2_FS_A" : 10, + "PI7:TIM8_CH3" : 3, + "PI8:EVENT-OUT" : 15, + "PI9:EVENT-OUT" : 15, + "PI9:CAN1_RX" : 9, + "PI9:FMC_D30" : 12, + "PI9:LCD_VSYNC" : 14, + "PI9:UART4_RX" : 8, + "PI10:ETH_MII_RX_ER" : 11, + "PI10:EVENT-OUT" : 15, + "PI10:CAN1_RX" : 9, + "PI10:FMC_D31" : 12, + "PI10:LCD_HSYNC" : 14, + "PI11:EVENT-OUT" : 15, + "PI11:LCD_G6" : 9, + "PI11:OTG_HS_ULPI_DIR" : 10, + "PI12:EVENT-OUT" : 15, + "PI12:LCD_HSYNC" : 14, + "PI13:EVENT-OUT" : 15, + "PI13:LCD_VSYNC" : 14, + "PI14:EVENT-OUT" : 15, + "PI14:LCD_CLK" : 14, + "PI15:EVENT-OUT" : 15, + "PI15:LCD_G2" : 9, + "PI15:LCD_R0" : 14, + "PJ0:EVENT-OUT" : 15, + "PJ0:LCD_R1" : 14, + "PJ0:LCD_R7" : 9, + "PJ1:EVENT-OUT" : 15, + "PJ1:LCD_R2" : 14, + "PJ2:EVENT-OUT" : 15, + "PJ2:LCD_R3" : 14, + "PJ3:EVENT-OUT" : 15, + "PJ3:LCD_R4" : 14, + "PJ4:EVENT-OUT" : 15, + "PJ4:LCD_R5" : 14, + "PJ5:EVENT-OUT" : 15, + "PJ5:LCD_R6" : 14, + "PJ6:EVENT-OUT" : 15, + "PJ6:LCD_R7" : 14, + "PJ6:TIM8_CH2" : 3, + "PJ7:EVENT-OUT" : 15, + "PJ7:LCD_G0" : 14, + "PJ7:TIM8_CH2N" : 3, + "PJ7:TRGIN" : 0, + "PJ8:EVENT-OUT" : 15, + "PJ8:LCD_G1" : 14, + "PJ8:TIM1_CH3N" : 1, + "PJ8:TIM8_CH1" : 3, + "PJ8:UART8_TX" : 8, + "PJ9:EVENT-OUT" : 15, + "PJ9:LCD_G2" : 14, + "PJ9:TIM1_CH3" : 1, + "PJ9:TIM8_CH1N" : 3, + "PJ9:UART8_RX" : 8, + "PJ10:EVENT-OUT" : 15, + "PJ10:LCD_G3" : 14, + "PJ10:SPI5_MOSI" : 5, + "PJ10:TIM1_CH2N" : 1, + "PJ10:TIM8_CH2" : 3, + "PJ11:EVENT-OUT" : 15, + "PJ11:LCD_G4" : 14, + "PJ11:SPI5_MISO" : 5, + "PJ11:TIM1_CH2" : 1, + "PJ11:TIM8_CH2N" : 3, + "PJ12:EVENT-OUT" : 15, + "PJ12:LCD_B0" : 14, + "PJ12:LCD_G3" : 9, + "PJ12:TRGOUT" : 0, + "PJ13:EVENT-OUT" : 15, + "PJ13:LCD_B1" : 14, + "PJ13:LCD_B4" : 9, + "PJ14:EVENT-OUT" : 15, + "PJ14:LCD_B2" : 14, + "PJ15:EVENT-OUT" : 15, + "PJ15:LCD_B3" : 14, + "PK0:EVENT-OUT" : 15, + "PK0:LCD_G5" : 14, + "PK0:SPI5_SCK" : 5, + "PK0:TIM1_CH1N" : 1, + "PK0:TIM8_CH3" : 3, + "PK1:EVENT-OUT" : 15, + "PK1:LCD_G6" : 14, + "PK1:SPI5_NSS" : 5, + "PK1:TIM1_CH1" : 1, + "PK1:TIM8_CH3N" : 3, + "PK2:EVENT-OUT" : 15, + "PK2:LCD_G7" : 14, + "PK2:TIM1_BKIN" : 1, + "PK2:TIM1_BKIN_COMP12" : 11, + "PK2:TIM8_BKIN" : 3, + "PK2:TIM8_BKIN_COMP12" : 10, + "PK3:EVENT-OUT" : 15, + "PK3:LCD_B4" : 14, + "PK4:EVENT-OUT" : 15, + "PK4:LCD_B5" : 14, + "PK5:EVENT-OUT" : 15, + "PK5:LCD_B6" : 14, + "PK6:EVENT-OUT" : 15, + "PK6:LCD_B7" : 14, + "PK7:EVENT-OUT" : 15, + "PK7:LCD_DE" : 14, +} + +ADC1_map = { + # format is PIN : ADC1_CHAN + "PF11" : 2, + "PA6" : 3, + "PC4" : 4, + "PB1" : 5, + "PF12" : 6, + "PA7" : 7, + "PC5" : 8, + "PB0" : 9, + "PC0" : 10, + "PC1" : 11, + "PC2" : 12, + "PC3" : 13, + "PA2" : 14, + "PA3" : 15, + "PA0" : 16, + "PA1" : 17, + "PA4" : 18, + "PA5" : 19, +} diff --git a/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py b/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py index 8cb3f1fbfc1f9..17a6094fed58c 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py +++ b/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py @@ -1523,9 +1523,11 @@ def write_SPI_config(self, f): for dev in self.spi_list: n = int(dev[3:]) devlist.append('HAL_SPI%u_CONFIG' % n) + sck_pin = self.bylabel['SPI%s_SCK' % n] + sck_line = 'PAL_LINE(GPIO%s,%uU)' % (sck_pin.port, sck_pin.pin) f.write( - '#define HAL_SPI%u_CONFIG { &SPID%u, %u, STM32_SPI_SPI%u_DMA_STREAMS }\n' - % (n, n, n, n)) + '#define HAL_SPI%u_CONFIG { &SPID%u, %u, STM32_SPI_SPI%u_DMA_STREAMS, %s }\n' + % (n, n, n, n, sck_line)) f.write('#define HAL_SPI_BUS_LIST %s\n\n' % ','.join(devlist)) self.write_SPI_table(f) diff --git a/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_bootloader.h b/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_bootloader.h index 4aaa673729a07..c002446c74b43 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_bootloader.h +++ b/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_bootloader.h @@ -27,10 +27,6 @@ #define HAL_ENABLE_SAVE_PERSISTENT_PARAMS 0 #endif -#ifndef HAL_GCS_ENABLED -#define HAL_GCS_ENABLED 0 -#endif - // make diagnosing Faults (e.g. HardFault) harder, but save bytes: #ifndef AP_FAULTHANDLER_DEBUG_VARIABLES_ENABLED #define AP_FAULTHANDLER_DEBUG_VARIABLES_ENABLED 0 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_periph.h b/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_periph.h index ba6a4b895e67f..476217512d5fb 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_periph.h +++ b/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_periph.h @@ -320,6 +320,7 @@ #define AP_GPS_ENABLED 1 // FIXME: should be defined(HAL_PERIPH_ENABLE_GPS) #define AP_RPM_ENABLED defined(HAL_PERIPH_ENABLE_RPM) #define AP_RCPROTOCOL_ENABLED defined(HAL_PERIPH_ENABLE_RCIN) +#define AP_RTC_ENABLED defined(HAL_PERIPH_ENABLE_RTC) #ifndef AP_BOOTLOADER_ALWAYS_ERASE #define AP_BOOTLOADER_ALWAYS_ERASE 1 @@ -341,9 +342,46 @@ #define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN" #endif +#ifndef HAL_MAVLINK_BINDINGS_ENABLED +#define HAL_MAVLINK_BINDINGS_ENABLED defined(HAL_PERIPH_ENABLE_ADSB) || HAL_GCS_ENABLED +#endif + // for boards other than AP_Periph we are always expecting delays when // not initialised. We can't afford that on AP_Periph as you may end // up with a bricked node if you write a bad firmware to it. #ifndef AP_HAL_CHIBIOS_IN_EXPECTED_DELAY_WHEN_NOT_INITIALISED #define AP_HAL_CHIBIOS_IN_EXPECTED_DELAY_WHEN_NOT_INITIALISED 0 #endif + +#ifndef AP_SERIALLED_ENABLED +#define AP_SERIALLED_ENABLED 0 +#endif + +#ifndef AP_OPTICALFLOW_ENABLED +#define AP_OPTICALFLOW_ENABLED 0 +#endif + +#ifndef HAL_BUTTON_ENABLED +#define HAL_BUTTON_ENABLED 0 +#endif + +#ifndef AP_NOTIFY_SCRIPTING_LED_ENABLED +#define AP_NOTIFY_SCRIPTING_LED_ENABLED 0 +#endif + +#ifndef AP_PARAM_DYNAMIC_ENABLED +#define AP_PARAM_DYNAMIC_ENABLED 0 +#endif + +#ifndef HAL_MOUNT_ENABLED +#define HAL_MOUNT_ENABLED 0 +#endif + +#ifndef AP_CAMERA_ENABLED +#define AP_CAMERA_ENABLED 0 +#endif + +#ifndef AP_TERRAIN_AVAILABLE +#define AP_TERRAIN_AVAILABLE 0 +#endif + diff --git a/libraries/AP_HAL_Linux/RCInput.cpp b/libraries/AP_HAL_Linux/RCInput.cpp index 9b4b5d135efbb..b4e933d096450 100644 --- a/libraries/AP_HAL_Linux/RCInput.cpp +++ b/libraries/AP_HAL_Linux/RCInput.cpp @@ -15,9 +15,9 @@ #include #include #include +#include #include "RCInput.h" -#include "sbus.h" #define MIN_NUM_CHANNELS 5 @@ -182,10 +182,10 @@ void RCInput::_process_sbus_pulse(uint16_t width_s0, uint16_t width_s1) } uint16_t values[LINUX_RC_INPUT_NUM_CHANNELS]; uint16_t num_values=0; - bool sbus_failsafe=false, sbus_frame_drop=false; - if (sbus_decode(bytes, values, &num_values, - &sbus_failsafe, &sbus_frame_drop, - LINUX_RC_INPUT_NUM_CHANNELS) && + bool sbus_failsafe=false; + if (AP_RCProtocol_SBUS::sbus_decode(bytes, values, &num_values, + sbus_failsafe, + LINUX_RC_INPUT_NUM_CHANNELS) && num_values >= MIN_NUM_CHANNELS) { for (i=0; i= MIN_NUM_CHANNELS) { for (uint8_t i=0; i - -#include "sbus.h" - -#define SBUS_FRAME_SIZE 25 -#define SBUS_INPUT_CHANNELS 16 -#define SBUS_FLAGS_BYTE 23 -#define SBUS_FAILSAFE_BIT 3 -#define SBUS_FRAMELOST_BIT 2 - -/* define range mapping here, -+100% -> 1000..2000 */ -#define SBUS_RANGE_MIN 200.0f -#define SBUS_RANGE_MAX 1800.0f - -#define SBUS_TARGET_MIN 1000.0f -#define SBUS_TARGET_MAX 2000.0f - -/* pre-calculate the floating point stuff as far as possible at compile time */ -#define SBUS_SCALE_FACTOR ((SBUS_TARGET_MAX - SBUS_TARGET_MIN) / (SBUS_RANGE_MAX - SBUS_RANGE_MIN)) -#define SBUS_SCALE_OFFSET (int)(SBUS_TARGET_MIN - (SBUS_SCALE_FACTOR * SBUS_RANGE_MIN + 0.5f)) - -/* - * S.bus decoder matrix. - * - * Each channel value can come from up to 3 input bytes. Each row in the - * matrix describes up to three bytes, and each entry gives: - * - * - byte offset in the data portion of the frame - * - right shift applied to the data byte - * - mask for the data byte - * - left shift applied to the result into the channel value - */ -struct sbus_bit_pick { - uint8_t byte; - uint8_t rshift; - uint8_t mask; - uint8_t lshift; -}; -static const struct sbus_bit_pick sbus_decoder[SBUS_INPUT_CHANNELS][3] = { - /* 0 */ { { 0, 0, 0xff, 0}, { 1, 0, 0x07, 8}, { 0, 0, 0x00, 0} }, - /* 1 */ { { 1, 3, 0x1f, 0}, { 2, 0, 0x3f, 5}, { 0, 0, 0x00, 0} }, - /* 2 */ { { 2, 6, 0x03, 0}, { 3, 0, 0xff, 2}, { 4, 0, 0x01, 10} }, - /* 3 */ { { 4, 1, 0x7f, 0}, { 5, 0, 0x0f, 7}, { 0, 0, 0x00, 0} }, - /* 4 */ { { 5, 4, 0x0f, 0}, { 6, 0, 0x7f, 4}, { 0, 0, 0x00, 0} }, - /* 5 */ { { 6, 7, 0x01, 0}, { 7, 0, 0xff, 1}, { 8, 0, 0x03, 9} }, - /* 6 */ { { 8, 2, 0x3f, 0}, { 9, 0, 0x1f, 6}, { 0, 0, 0x00, 0} }, - /* 7 */ { { 9, 5, 0x07, 0}, {10, 0, 0xff, 3}, { 0, 0, 0x00, 0} }, - /* 8 */ { {11, 0, 0xff, 0}, {12, 0, 0x07, 8}, { 0, 0, 0x00, 0} }, - /* 9 */ { {12, 3, 0x1f, 0}, {13, 0, 0x3f, 5}, { 0, 0, 0x00, 0} }, - /* 10 */ { {13, 6, 0x03, 0}, {14, 0, 0xff, 2}, {15, 0, 0x01, 10} }, - /* 11 */ { {15, 1, 0x7f, 0}, {16, 0, 0x0f, 7}, { 0, 0, 0x00, 0} }, - /* 12 */ { {16, 4, 0x0f, 0}, {17, 0, 0x7f, 4}, { 0, 0, 0x00, 0} }, - /* 13 */ { {17, 7, 0x01, 0}, {18, 0, 0xff, 1}, {19, 0, 0x03, 9} }, - /* 14 */ { {19, 2, 0x3f, 0}, {20, 0, 0x1f, 6}, { 0, 0, 0x00, 0} }, - /* 15 */ { {20, 5, 0x07, 0}, {21, 0, 0xff, 3}, { 0, 0, 0x00, 0} } -}; - - -bool -sbus_decode(const uint8_t frame[25], uint16_t *values, uint16_t *num_values, - bool *sbus_failsafe, bool *sbus_frame_drop, uint16_t max_values) -{ - /* check frame boundary markers to avoid out-of-sync cases */ - if ((frame[0] != 0x0f)) { - return false; - } - - switch (frame[24]) { - case 0x00: - /* this is S.BUS 1 */ - break; - case 0x03: - /* S.BUS 2 SLOT0: RX battery and external voltage */ - break; - case 0x83: - /* S.BUS 2 SLOT1 */ - break; - case 0x43: - case 0xC3: - case 0x23: - case 0xA3: - case 0x63: - case 0xE3: - break; - default: - /* we expect one of the bits above, but there are some we don't know yet */ - break; - } - - unsigned chancount = (max_values > SBUS_INPUT_CHANNELS) ? - SBUS_INPUT_CHANNELS : max_values; - - /* use the decoder matrix to extract channel data */ - for (unsigned channel = 0; channel < chancount; channel++) { - unsigned value = 0; - - for (unsigned pick = 0; pick < 3; pick++) { - const struct sbus_bit_pick *decode = &sbus_decoder[channel][pick]; - - if (decode->mask != 0) { - unsigned piece = frame[1 + decode->byte]; - piece >>= decode->rshift; - piece &= decode->mask; - piece <<= decode->lshift; - - value |= piece; - } - } - - - /* convert 0-2048 values to 1000-2000 ppm encoding in a not too sloppy fashion */ - values[channel] = (uint16_t)(value * SBUS_SCALE_FACTOR +.5f) + SBUS_SCALE_OFFSET; - } - - /* decode switch channels if data fields are wide enough */ - if (max_values > 17 && chancount > 15) { - chancount = 18; - - /* channel 17 (index 16) */ - values[16] = (frame[SBUS_FLAGS_BYTE] & (1 << 0)) * 1000 + 998; - /* channel 18 (index 17) */ - values[17] = (frame[SBUS_FLAGS_BYTE] & (1 << 1)) * 1000 + 998; - } - - /* note the number of channels decoded */ - *num_values = chancount; - - /* decode and handle failsafe and frame-lost flags */ - if (frame[SBUS_FLAGS_BYTE] & (1 << SBUS_FAILSAFE_BIT)) { /* failsafe */ - /* report that we failed to read anything valid off the receiver */ - *sbus_failsafe = true; - *sbus_frame_drop = true; - } - else if (frame[SBUS_FLAGS_BYTE] & (1 << SBUS_FRAMELOST_BIT)) { /* a frame was lost */ - /* set a special warning flag - * - * Attention! This flag indicates a skipped frame only, not a total link loss! Handling this - * condition as fail-safe greatly reduces the reliability and range of the radio link, - * e.g. by prematurely issuing return-to-launch!!! */ - - *sbus_failsafe = false; - *sbus_frame_drop = true; - } else { - *sbus_failsafe = false; - *sbus_frame_drop = false; - } - - return true; -} diff --git a/libraries/AP_HAL_Linux/sbus.h b/libraries/AP_HAL_Linux/sbus.h deleted file mode 100644 index 41e1fbccdd523..0000000000000 --- a/libraries/AP_HAL_Linux/sbus.h +++ /dev/null @@ -1,6 +0,0 @@ -/* - declarations for sbus.h - */ -bool sbus_decode(const uint8_t frame[25], uint16_t *values, uint16_t *num_values, - bool *sbus_failsafe, bool *sbus_frame_drop, uint16_t max_values); - diff --git a/libraries/AP_HAL_SITL/HAL_SITL_Class.cpp b/libraries/AP_HAL_SITL/HAL_SITL_Class.cpp index c157472f8c920..8a7537ab9730f 100644 --- a/libraries/AP_HAL_SITL/HAL_SITL_Class.cpp +++ b/libraries/AP_HAL_SITL/HAL_SITL_Class.cpp @@ -64,11 +64,11 @@ static UARTDriver sitlUart7Driver(7, &sitlState); static UARTDriver sitlUart8Driver(8, &sitlState); static UARTDriver sitlUart9Driver(9, &sitlState); +static I2CDeviceManager i2c_mgr_instance; + #if defined(HAL_BUILD_AP_PERIPH) -static Empty::I2CDeviceManager i2c_mgr_instance; static Empty::SPIDeviceManager spi_mgr_instance; #else -static I2CDeviceManager i2c_mgr_instance; static SPIDeviceManager spi_mgr_instance; #endif static Util utilInstance(&sitlState); diff --git a/libraries/AP_HAL_SITL/I2CDevice.cpp b/libraries/AP_HAL_SITL/I2CDevice.cpp index e4f789ffe0aa8..7b7b2d5914fb8 100644 --- a/libraries/AP_HAL_SITL/I2CDevice.cpp +++ b/libraries/AP_HAL_SITL/I2CDevice.cpp @@ -17,7 +17,7 @@ #include "I2CDevice.h" #include -#if CONFIG_HAL_BOARD == HAL_BOARD_SITL && !defined(HAL_BUILD_AP_PERIPH) +#if CONFIG_HAL_BOARD == HAL_BOARD_SITL #include @@ -217,4 +217,4 @@ bool I2CDevice::adjust_periodic_callback(Device::PeriodicHandle h, uint32_t peri return false; } -#endif //#if CONFIG_HAL_BOARD == HAL_BOARD_SITL && !defined(HAL_BUILD_AP_PERIPH) +#endif //#if CONFIG_HAL_BOARD == HAL_BOARD_SITL diff --git a/libraries/AP_HAL_SITL/I2CDevice.h b/libraries/AP_HAL_SITL/I2CDevice.h index 2a414bcf6986a..828fd3efd48a8 100644 --- a/libraries/AP_HAL_SITL/I2CDevice.h +++ b/libraries/AP_HAL_SITL/I2CDevice.h @@ -19,7 +19,7 @@ #include #include -#if CONFIG_HAL_BOARD == HAL_BOARD_SITL && !defined(HAL_BUILD_AP_PERIPH) +#if CONFIG_HAL_BOARD == HAL_BOARD_SITL #include #include @@ -128,4 +128,4 @@ class HALSITL::I2CDeviceManager : public AP_HAL::I2CDeviceManager { #define NUM_SITL_I2C_BUSES 4 static I2CBus buses[]; }; -#endif //#if CONFIG_HAL_BOARD == HAL_BOARD_SITL && !defined(HAL_BUILD_AP_PERIPH) +#endif //#if CONFIG_HAL_BOARD == HAL_BOARD_SITL diff --git a/libraries/AP_HAL_SITL/SITL_Periph_State.cpp b/libraries/AP_HAL_SITL/SITL_Periph_State.cpp index c53f84623fe6f..4d2cb796a0116 100644 --- a/libraries/AP_HAL_SITL/SITL_Periph_State.cpp +++ b/libraries/AP_HAL_SITL/SITL_Periph_State.cpp @@ -117,6 +117,9 @@ void SITL_State::init(int argc, char * const argv[]) { sitl_model = new SimMCast(""); _sitl = AP::sitl(); + + _sitl->i2c_sim.init(); + sitl_model->set_i2c(&_sitl->i2c_sim); } void SITL_State::wait_clock(uint64_t wait_time_usec) @@ -267,6 +270,12 @@ void SimMCast::multicast_read(void) base_time_us += (_sitl->state.timestamp_us - state.timestamp_us); } _sitl->state = state; + location.lat = state.latitude*1.0e7; + location.lng = state.longitude*1.0e7; + location.alt = state.altitude*1.0e2; + if (home.is_zero()) { + home = location; + } hal.scheduler->stop_clock(_sitl->state.timestamp_us + base_time_us); HALSITL::Scheduler::timer_event(); if (servo_fd == -1) { @@ -285,6 +294,12 @@ SimMCast::SimMCast(const char *frame_str) : void SimMCast::update(const struct sitl_input &input) { multicast_read(); + update_external_payload(input); + + auto *_sitl = AP::sitl(); + if (_sitl != nullptr) { + battery_voltage = _sitl->batt_voltage; + } } #endif //CONFIG_HAL_BOARD == HAL_BOARD_SITL && defined(HAL_BUILD_AP_PERIPH) diff --git a/libraries/AP_HAL_SITL/SITL_Periph_State.h b/libraries/AP_HAL_SITL/SITL_Periph_State.h index 17bf1c8615246..0aca46d29b89f 100644 --- a/libraries/AP_HAL_SITL/SITL_Periph_State.h +++ b/libraries/AP_HAL_SITL/SITL_Periph_State.h @@ -51,7 +51,7 @@ class HALSITL::SITL_State : public SITL_State_Common { friend class HALSITL::Util; friend class HALSITL::GPIO; public: - void init(int argc, char * const argv[]); + void init(int argc, char * const argv[]) override; bool use_rtscts(void) const { return _use_rtscts; @@ -66,7 +66,7 @@ class HALSITL::SITL_State : public SITL_State_Common { "none:0", "GPS1", "none:1", - "none:2", + "sim:adsb", "none:3", "none:4", "none:5", diff --git a/libraries/AP_HAL_SITL/SITL_State.h b/libraries/AP_HAL_SITL/SITL_State.h index 1bb57e161b42c..8ca5afd4526af 100644 --- a/libraries/AP_HAL_SITL/SITL_State.h +++ b/libraries/AP_HAL_SITL/SITL_State.h @@ -17,7 +17,7 @@ class HALSITL::SITL_State : public SITL_State_Common { friend class HALSITL::Util; friend class HALSITL::GPIO; public: - void init(int argc, char * const argv[]); + void init(int argc, char * const argv[]) override; void loop_hook(void); uint16_t base_port(void) const { diff --git a/libraries/AP_HAL_SITL/SITL_State_common.h b/libraries/AP_HAL_SITL/SITL_State_common.h index 1d4555ccd9b67..b1105ecc35ba1 100644 --- a/libraries/AP_HAL_SITL/SITL_State_common.h +++ b/libraries/AP_HAL_SITL/SITL_State_common.h @@ -73,7 +73,7 @@ class HALSITL::SITL_State_Common { friend class HALSITL::Util; friend class HALSITL::GPIO; public: - void init(int argc, char * const argv[]); + virtual void init(int argc, char * const argv[]) = 0; enum vehicle_type { NONE, diff --git a/libraries/AP_HAL_SITL/Scheduler.cpp b/libraries/AP_HAL_SITL/Scheduler.cpp index ba04d6af2d209..2531722d71014 100644 --- a/libraries/AP_HAL_SITL/Scheduler.cpp +++ b/libraries/AP_HAL_SITL/Scheduler.cpp @@ -276,10 +276,8 @@ void Scheduler::_run_io_procs() } hal.storage->_timer_tick(); -#ifndef HAL_BUILD_AP_PERIPH // in lieu of a thread-per-bus: ((HALSITL::I2CDeviceManager*)(hal.i2c_mgr))->_timer_tick(); -#endif #if SITL_STACK_CHECKING_ENABLED check_thread_stacks(); diff --git a/libraries/AP_Hott_Telem/AP_Hott_Telem.cpp b/libraries/AP_Hott_Telem/AP_Hott_Telem.cpp index 05911a67e4c58..98bff2d86ecba 100644 --- a/libraries/AP_Hott_Telem/AP_Hott_Telem.cpp +++ b/libraries/AP_Hott_Telem/AP_Hott_Telem.cpp @@ -289,12 +289,14 @@ void AP_Hott_Telem::send_GPS(void) msg.home_direction = degrees(atan2f(home_vec.y, home_vec.x)) * 0.5 + 0.5; +#if AP_RTC_ENABLED AP_RTC &rtc = AP::rtc(); { WITH_SEMAPHORE(rtc.get_semaphore()); uint16_t ms; rtc.get_system_clock_utc(msg.gps_time_h, msg.gps_time_m, msg.gps_time_s, ms); } +#endif send_packet((const uint8_t *)&msg, sizeof(msg)); } diff --git a/libraries/AP_ICEngine/AP_ICEngine.cpp b/libraries/AP_ICEngine/AP_ICEngine.cpp index 1b9173482492f..b5b85d38dd4c7 100644 --- a/libraries/AP_ICEngine/AP_ICEngine.cpp +++ b/libraries/AP_ICEngine/AP_ICEngine.cpp @@ -142,8 +142,8 @@ const AP_Param::GroupInfo AP_ICEngine::var_info[] = { // @Param: OPTIONS // @DisplayName: ICE options - // @Description: Options for ICE control. The DisableIgnitionRCFailsafe option will cause the ignition to be set off on any R/C failsafe. If ThrottleWhileDisarmed is set then throttle control will be allowed while disarmed for planes when in MANUAL mode. - // @Bitmask: 0:DisableIgnitionRCFailsafe,1:DisableRedineGovernor,2:ThrottleWhileDisarmed + // @Description: Options for ICE control. The Disable ignition in RC failsafe option will cause the ignition to be set off on any R/C failsafe. If Throttle while disarmed is set then throttle control will be allowed while disarmed for planes when in MANUAL mode. If disable while disarmed is set the engine will not start while the vehicle is disarmed. + // @Bitmask: 0:Disable ignition in RC failsafe,1:Disable redline governor,2:Throttle while disarmed,3:Disable while disarmed AP_GROUPINFO("OPTIONS", 15, AP_ICEngine, options, 0), // @Param: STARTCHN_MIN @@ -247,6 +247,11 @@ void AP_ICEngine::update(void) should_run = false; } + if (option_set(Options::NO_RUNNING_WHILE_DISARMED) && !hal.util->get_soft_armed()) { + // disable the engine if disarmed + should_run = false; + } + #if HAL_PARACHUTE_ENABLED // Stop on parachute deployment AP_Parachute *parachute = AP::parachute(); @@ -558,7 +563,7 @@ void AP_ICEngine::update_idle_governor(int8_t &min_throttle) // Calculate the change per loop to achieve the desired slew rate of 1 percent per second static const float idle_setpoint_step = idle_slew * AP::scheduler().get_loop_period_s(); - // Update Integrator + // Update Integrator if (underspeed) { idle_governor_integrator += idle_setpoint_step; } else { diff --git a/libraries/AP_ICEngine/AP_ICEngine.h b/libraries/AP_ICEngine/AP_ICEngine.h index b9cd3d44dec41..1c243dd88fa2c 100644 --- a/libraries/AP_ICEngine/AP_ICEngine.h +++ b/libraries/AP_ICEngine/AP_ICEngine.h @@ -142,9 +142,10 @@ class AP_ICEngine { float idle_governor_integrator; enum class Options : uint16_t { - DISABLE_IGNITION_RC_FAILSAFE=(1U<<0), - DISABLE_REDLINE_GOVERNOR = (1U << 1), - THROTTLE_WHILE_DISARMED = (1U << 2), + DISABLE_IGNITION_RC_FAILSAFE = (1U << 0), + DISABLE_REDLINE_GOVERNOR = (1U << 1), + THROTTLE_WHILE_DISARMED = (1U << 2), + NO_RUNNING_WHILE_DISARMED = (1U << 3), }; AP_Int16 options; diff --git a/libraries/AP_InertialSensor/AP_InertialSensor.cpp b/libraries/AP_InertialSensor/AP_InertialSensor.cpp index 7c80d92066024..c83bd987d3fb7 100644 --- a/libraries/AP_InertialSensor/AP_InertialSensor.cpp +++ b/libraries/AP_InertialSensor/AP_InertialSensor.cpp @@ -674,6 +674,13 @@ const AP_Param::GroupInfo AP_InertialSensor::var_info[] = { AP_SUBGROUPINFO(params[1], "5_", 55, AP_InertialSensor, AP_InertialSensor_Params), #endif + // @Param: _RAW_LOG_OPT + // @DisplayName: Raw logging options + // @Description: Raw logging options bitmask + // @Bitmask: 0:Log primary gyro only, 1:Log all gyros, 2:Post filter, 3: Pre and post filter + // @User: Advanced + AP_GROUPINFO("_RAW_LOG_OPT", 56, AP_InertialSensor, raw_logging_options, 0), + /* NOTE: parameter indexes have gaps above. When adding new parameters check for conflicts carefully @@ -888,6 +895,11 @@ AP_InertialSensor::init(uint16_t loop_rate) // cause divergence of state estimators _loop_delta_t_max = 10 * _loop_delta_t; + // Initialize notch params + for (auto ¬ch : harmonic_notches) { + notch.params.init(); + } + if (_gyro_count == 0 && _accel_count == 0) { _start_backends(); } diff --git a/libraries/AP_InertialSensor/AP_InertialSensor.h b/libraries/AP_InertialSensor/AP_InertialSensor.h index 1f00247aba8b2..27d21e1137d16 100644 --- a/libraries/AP_InertialSensor/AP_InertialSensor.h +++ b/libraries/AP_InertialSensor/AP_InertialSensor.h @@ -766,6 +766,18 @@ class AP_InertialSensor : AP_AccelCal_Client AP_Int32 tcal_options; bool tcal_learning; #endif + + // Raw logging options bitmask and parameter + enum class RAW_LOGGING_OPTION { + PRIMARY_GYRO_ONLY = (1U<<0), + ALL_GYROS = (1U<<1), + POST_FILTER = (1U<<2), + PRE_AND_POST_FILTER = (1U<<3), + }; + AP_Int16 raw_logging_options; + bool raw_logging_option_set(RAW_LOGGING_OPTION option) const { + return (raw_logging_options.get() & int32_t(option)) != 0; + } }; namespace AP { diff --git a/libraries/AP_InertialSensor/AP_InertialSensor_BMI088.cpp b/libraries/AP_InertialSensor/AP_InertialSensor_BMI088.cpp index dcbbf22046e23..aa839b6b4e6bb 100644 --- a/libraries/AP_InertialSensor/AP_InertialSensor_BMI088.cpp +++ b/libraries/AP_InertialSensor/AP_InertialSensor_BMI088.cpp @@ -400,7 +400,7 @@ void AP_InertialSensor_BMI088::read_fifo_gyro(void) } const float scale = radians(2000.0f) / 32767.0f; const uint8_t max_frames = 8; - const Vector3i bad_frame{int16_t(0xffff), int16_t(0xffff), int16_t(0xffff)}; + const Vector3i bad_frame{INT16_MIN,INT16_MIN,INT16_MIN}; Vector3i data[max_frames]; if (num_frames & 0x80) { diff --git a/libraries/AP_InertialSensor/AP_InertialSensor_Backend.cpp b/libraries/AP_InertialSensor/AP_InertialSensor_Backend.cpp index 88b780964e791..9b2954ef86a49 100644 --- a/libraries/AP_InertialSensor/AP_InertialSensor_Backend.cpp +++ b/libraries/AP_InertialSensor/AP_InertialSensor_Backend.cpp @@ -343,17 +343,7 @@ void AP_InertialSensor_Backend::_notify_new_gyro_raw_sample(uint8_t instance, } // 5us -#if AP_INERTIALSENSOR_BATCHSAMPLER_ENABLED - if (!_imu.batchsampler.doing_post_filter_logging()) { - log_gyro_raw(instance, sample_us, gyro); - } - else { - log_gyro_raw(instance, sample_us, _imu._gyro_filtered[instance]); - } -#else - // assume pre-filter logging if batchsampler is not enabled - log_gyro_raw(instance, sample_us, gyro); -#endif + log_gyro_raw(instance, sample_us, gyro, _imu._gyro_filtered[instance]); } /* @@ -440,20 +430,10 @@ void AP_InertialSensor_Backend::_notify_new_delta_angle(uint8_t instance, const _imu._new_gyro_data[instance] = true; } -#if AP_INERTIALSENSOR_BATCHSAMPLER_ENABLED - if (!_imu.batchsampler.doing_post_filter_logging()) { - log_gyro_raw(instance, sample_us, gyro); - } - else { - log_gyro_raw(instance, sample_us, _imu._gyro_filtered[instance]); - } -#else - // assume we're doing pre-filter logging: - log_gyro_raw(instance, sample_us, gyro); -#endif + log_gyro_raw(instance, sample_us, gyro, _imu._gyro_filtered[instance]); } -void AP_InertialSensor_Backend::log_gyro_raw(uint8_t instance, const uint64_t sample_us, const Vector3f &gyro) +void AP_InertialSensor_Backend::log_gyro_raw(uint8_t instance, const uint64_t sample_us, const Vector3f &raw_gyro, const Vector3f &filtered_gyro) { #if HAL_LOGGING_ENABLED AP_Logger *logger = AP_Logger::get_singleton(); @@ -461,12 +441,30 @@ void AP_InertialSensor_Backend::log_gyro_raw(uint8_t instance, const uint64_t sa // should not have been called return; } - if (should_log_imu_raw()) { - Write_GYR(instance, sample_us, gyro); + + if (_imu.raw_logging_option_set(AP_InertialSensor::RAW_LOGGING_OPTION::ALL_GYROS) || + (_imu.raw_logging_option_set(AP_InertialSensor::RAW_LOGGING_OPTION::PRIMARY_GYRO_ONLY) && (instance == AP::ahrs().get_primary_gyro_index())) || + should_log_imu_raw()) { + + if (_imu.raw_logging_option_set(AP_InertialSensor::RAW_LOGGING_OPTION::PRE_AND_POST_FILTER)) { + // Both pre and post, offset post instance as batch sampler does + Write_GYR(instance, sample_us, raw_gyro); + Write_GYR(instance + _imu._gyro_count, sample_us, filtered_gyro); + + } else if (_imu.raw_logging_option_set(AP_InertialSensor::RAW_LOGGING_OPTION::POST_FILTER)) { + // Just post + Write_GYR(instance, sample_us, filtered_gyro); + + } else { + // Just pre + Write_GYR(instance, sample_us, raw_gyro); + + } } else { #if AP_INERTIALSENSOR_BATCHSAMPLER_ENABLED if (!_imu.batchsampler.doing_sensor_rate_logging()) { - _imu.batchsampler.sample(instance, AP_InertialSensor::IMU_SENSOR_TYPE_GYRO, sample_us, gyro); + _imu.batchsampler.sample(instance, AP_InertialSensor::IMU_SENSOR_TYPE_GYRO, sample_us, + !_imu.batchsampler.doing_post_filter_logging() ? raw_gyro : filtered_gyro); } #endif } diff --git a/libraries/AP_InertialSensor/AP_InertialSensor_Backend.h b/libraries/AP_InertialSensor/AP_InertialSensor_Backend.h index c49356a85ffc9..a9bd7bb411808 100644 --- a/libraries/AP_InertialSensor/AP_InertialSensor_Backend.h +++ b/libraries/AP_InertialSensor/AP_InertialSensor_Backend.h @@ -315,7 +315,7 @@ class AP_InertialSensor_Backend bool should_log_imu_raw() const ; void log_accel_raw(uint8_t instance, const uint64_t sample_us, const Vector3f &accel) __RAMFUNC__; - void log_gyro_raw(uint8_t instance, const uint64_t sample_us, const Vector3f &gryo) __RAMFUNC__; + void log_gyro_raw(uint8_t instance, const uint64_t sample_us, const Vector3f &raw_gyro, const Vector3f &filtered_gyro) __RAMFUNC__; // logging void Write_ACC(const uint8_t instance, const uint64_t sample_us, const Vector3f &accel) const __RAMFUNC__; // Write ACC data packet: raw accel data diff --git a/libraries/AP_Logger/AP_Logger_Backend.cpp b/libraries/AP_Logger/AP_Logger_Backend.cpp index 2a3e98ecee954..f432328a16049 100644 --- a/libraries/AP_Logger/AP_Logger_Backend.cpp +++ b/libraries/AP_Logger/AP_Logger_Backend.cpp @@ -573,6 +573,7 @@ bool AP_Logger_Backend::Write_VER() patch: fwver.patch, fw_type: fwver.fw_type, git_hash: fwver.fw_hash, + build_type: fwver.vehicle_type, }; strncpy(pkt.fw_string, fwver.fw_string, ARRAY_SIZE(pkt.fw_string)-1); diff --git a/libraries/AP_Logger/AP_Logger_File.cpp b/libraries/AP_Logger/AP_Logger_File.cpp index 22e088cf979e9..99e76bb97a229 100644 --- a/libraries/AP_Logger/AP_Logger_File.cpp +++ b/libraries/AP_Logger/AP_Logger_File.cpp @@ -583,11 +583,15 @@ uint32_t AP_Logger_File::_get_log_time(const uint16_t log_num) // it is the file we are currently writing free(fname); write_fd_semaphore.give(); +#if AP_RTC_ENABLED uint64_t utc_usec; if (!AP::rtc().get_utc_usec(utc_usec)) { return 0; } return utc_usec / 1000000U; +#else + return 0; +#endif } write_fd_semaphore.give(); } @@ -840,8 +844,10 @@ void AP_Logger_File::start_new_log(void) #if CONFIG_HAL_BOARD == HAL_BOARD_CHIBIOS // remember if we had utc time when we opened the file +#if AP_RTC_ENABLED uint64_t utc_usec; _need_rtc_update = !AP::rtc().get_utc_usec(utc_usec); +#endif #endif // create the log directory if need be @@ -1034,7 +1040,7 @@ void AP_Logger_File::io_timer(void) last_io_operation = ""; #endif -#if CONFIG_HAL_BOARD == HAL_BOARD_CHIBIOS +#if AP_RTC_ENABLED && CONFIG_HAL_BOARD == HAL_BOARD_CHIBIOS // ChibiOS does not update mtime on writes, so if we opened // without knowing the time we should update it later if (_need_rtc_update) { diff --git a/libraries/AP_Logger/AP_Logger_File.h b/libraries/AP_Logger/AP_Logger_File.h index dbfe61f807a9e..07709d3e9350c 100644 --- a/libraries/AP_Logger/AP_Logger_File.h +++ b/libraries/AP_Logger/AP_Logger_File.h @@ -72,7 +72,7 @@ class AP_Logger_File : public AP_Logger_Backend char *_write_filename; bool last_log_is_marked_discard; uint32_t _last_write_ms; -#if CONFIG_HAL_BOARD == HAL_BOARD_CHIBIOS +#if AP_RTC_ENABLED bool _need_rtc_update; #endif diff --git a/libraries/AP_Logger/LogStructure.h b/libraries/AP_Logger/LogStructure.h index f819e89838096..cfbfbbb178031 100644 --- a/libraries/AP_Logger/LogStructure.h +++ b/libraries/AP_Logger/LogStructure.h @@ -467,6 +467,7 @@ struct PACKED log_RFND { uint16_t dist; uint8_t status; uint8_t orient; + int8_t quality; }; /* @@ -669,6 +670,7 @@ struct PACKED log_VER { uint32_t git_hash; char fw_string[64]; uint16_t _APJ_BOARD_ID; + uint8_t build_type; }; @@ -1046,6 +1048,7 @@ struct PACKED log_VER { // @Field: Stat: Sensor state // @FieldValueEnum: Stat: RangeFinder::Status // @Field: Orient: Sensor orientation +// @Field: Quality: Signal quality. -1 means invalid, 0 is no signal, 100 is perfect signal // @LoggerMessage: RSSI // @Description: Received Signal Strength Indicator for RC receiver @@ -1239,7 +1242,7 @@ LOG_STRUCTURE_FROM_MOUNT \ { LOG_MODE_MSG, sizeof(log_Mode), \ "MODE", "QMBB", "TimeUS,Mode,ModeNum,Rsn", "s---", "F---" }, \ { LOG_RFND_MSG, sizeof(log_RFND), \ - "RFND", "QBCBB", "TimeUS,Instance,Dist,Stat,Orient", "s#m--", "F-B--", true }, \ + "RFND", "QBCBBb", "TimeUS,Instance,Dist,Stat,Orient,Quality", "s#m--%", "F-B---", true }, \ { LOG_MAV_STATS, sizeof(log_MAV_Stats), \ "DMS", "QIIIIBBBBBBBBB", "TimeUS,N,Dp,RT,RS,Fa,Fmn,Fmx,Pa,Pmn,Pmx,Sa,Smn,Smx", "s-------------", "F-------------" }, \ LOG_STRUCTURE_FROM_BEACON \ @@ -1315,7 +1318,7 @@ LOG_STRUCTURE_FROM_AIS \ { LOG_SCRIPTING_MSG, sizeof(log_Scripting), \ "SCR", "QNIii", "TimeUS,Name,Runtime,Total_mem,Run_mem", "s#sbb", "F-F--", true }, \ { LOG_VER_MSG, sizeof(log_VER), \ - "VER", "QBHBBBBIZH", "TimeUS,BT,BST,Maj,Min,Pat,FWT,GH,FWS,APJ", "s---------", "F---------", false }, \ + "VER", "QBHBBBBIZHB", "TimeUS,BT,BST,Maj,Min,Pat,FWT,GH,FWS,APJ,BU", "s----------", "F----------", false }, \ { LOG_MOTBATT_MSG, sizeof(log_MotBatt), \ "MOTB", "QfffffB", "TimeUS,LiftMax,BatVolt,ThLimit,ThrAvMx,ThrOut,FailFlags", "s------", "F------" , true } diff --git a/libraries/AP_MSP/AP_MSP_Telem_Backend.cpp b/libraries/AP_MSP/AP_MSP_Telem_Backend.cpp index db694f82824ac..ee01834cb19d6 100644 --- a/libraries/AP_MSP/AP_MSP_Telem_Backend.cpp +++ b/libraries/AP_MSP/AP_MSP_Telem_Backend.cpp @@ -989,10 +989,12 @@ MSPCommandResult AP_MSP_Telem_Backend::msp_process_out_rtc(sbuf_t *dst) { tm localtime_tm {}; // year is relative to 1900 uint64_t time_usec = 0; +#if AP_RTC_ENABLED if (AP::rtc().get_utc_usec(time_usec)) { // may fail, leaving time_unix at 0 const time_t time_sec = time_usec / 1000000; localtime_tm = *gmtime(&time_sec); } +#endif const struct PACKED { uint16_t year; uint8_t mon; @@ -1150,10 +1152,14 @@ void AP_MSP_Telem_Backend::hide_osd_items(void) BIT_SET(osd_hidden_items_bitmask, OSD_MAIN_BATT_VOLTAGE); } // flash rtc if no time available +#if AP_RTC_ENABLED uint64_t time_usec; if (!AP::rtc().get_utc_usec(time_usec)) { BIT_SET(osd_hidden_items_bitmask, OSD_RTC_DATETIME); } +#else + BIT_SET(osd_hidden_items_bitmask, OSD_RTC_DATETIME); +#endif // flash rssi if disabled float rssi; if (!get_rssi(rssi)) { diff --git a/libraries/AP_Math/crc.cpp b/libraries/AP_Math/crc.cpp index 9835f49595ad0..bc059535daefc 100644 --- a/libraries/AP_Math/crc.cpp +++ b/libraries/AP_Math/crc.cpp @@ -92,6 +92,16 @@ uint8_t crc_crc8(const uint8_t *p, uint8_t len) return crc & 0xFF; } +// CRC8 that does not use a lookup table: for generic polynomials +uint8_t crc8_generic(const uint8_t *buf, const uint16_t buf_len, const uint8_t polynomial) +{ + uint8_t crc = 0; + for (uint16_t i = 0; i < buf_len; i++) { + crc = crc8_dvb(buf[i], crc, polynomial); + } + return crc; +} + // crc8 from betaflight uint8_t crc8_dvb_s2(uint8_t crc, uint8_t a) { diff --git a/libraries/AP_Math/crc.h b/libraries/AP_Math/crc.h index 7cd9d380e4ba6..6850445b66bc6 100644 --- a/libraries/AP_Math/crc.h +++ b/libraries/AP_Math/crc.h @@ -21,6 +21,7 @@ uint16_t crc_crc4(uint16_t *data); uint8_t crc_crc8(const uint8_t *p, uint8_t len); +uint8_t crc8_generic(const uint8_t *buf, const uint16_t buf_len, const uint8_t polynomial); // CRC8 that does not use a lookup table for generic polynomials uint8_t crc8_dvb_s2(uint8_t crc, uint8_t a); uint8_t crc8_dvb(uint8_t crc, uint8_t a, uint8_t seed); uint8_t crc8_dvb_s2_update(uint8_t crc, const void *data, uint32_t length); diff --git a/libraries/AP_Motors/AP_MotorsMulticopter.cpp b/libraries/AP_Motors/AP_MotorsMulticopter.cpp index 675e7fd566786..5359ad16e7040 100644 --- a/libraries/AP_Motors/AP_MotorsMulticopter.cpp +++ b/libraries/AP_Motors/AP_MotorsMulticopter.cpp @@ -165,7 +165,7 @@ const AP_Param::GroupInfo AP_MotorsMulticopter::var_info[] = { // @Param: SPOOL_TIME // @DisplayName: Spool up time // @Description: Time in seconds to spool up the motors from zero to min throttle. - // @Range: 0 2 + // @Range: 0.05 2 // @Units: s // @Increment: 0.1 // @User: Advanced @@ -222,6 +222,15 @@ const AP_Param::GroupInfo AP_MotorsMulticopter::var_info[] = { // @User: Advanced AP_GROUPINFO("OPTIONS", 43, AP_MotorsMulticopter, _options, 0), + // @Param: SPOOL_TIM_DN + // @DisplayName: Spool down time + // @Description: Time taken to spool down the motors from min to zero throttle. If set to 0 then SPOOL_TIME is used instead. + // @Range: 0 2 + // @Units: s + // @Increment: 0.001 + // @User: Advanced + AP_GROUPINFO("SPOOL_TIM_DN", 44, AP_MotorsMulticopter, _spool_down_time, 0), + AP_GROUPEND }; @@ -477,6 +486,7 @@ void AP_MotorsMulticopter::update_throttle_hover(float dt) // run spool logic void AP_MotorsMulticopter::output_logic() { + const constexpr float minimum_spool_time = 0.05f; if (armed()) { if (_disarm_disable_pwm && (_disarm_safe_timer < _safe_time)) { _disarm_safe_timer += _dt; @@ -493,12 +503,11 @@ void AP_MotorsMulticopter::output_logic() _spool_state = SpoolState::SHUT_DOWN; } - if (_spool_up_time < 0.05) { + if (_spool_up_time < minimum_spool_time) { // prevent float exception - _spool_up_time.set(0.05); + _spool_up_time.set(minimum_spool_time); } - const float spool_step = _dt / _spool_up_time; switch (_spool_state) { case SpoolState::SHUT_DOWN: // Motors should be stationary. @@ -539,7 +548,9 @@ void AP_MotorsMulticopter::output_logic() // set and increment ramp variables switch (_spool_desired) { - case DesiredSpoolState::SHUT_DOWN: + case DesiredSpoolState::SHUT_DOWN: { + const float spool_time = _spool_down_time > minimum_spool_time ? _spool_down_time : _spool_up_time; + const float spool_step = _dt / spool_time; _spin_up_ratio -= spool_step; // constrain ramp value and update mode if (_spin_up_ratio <= 0.0f) { @@ -547,8 +558,10 @@ void AP_MotorsMulticopter::output_logic() _spool_state = SpoolState::SHUT_DOWN; } break; + } - case DesiredSpoolState::THROTTLE_UNLIMITED: + case DesiredSpoolState::THROTTLE_UNLIMITED: { + const float spool_step = _dt / _spool_up_time; _spin_up_ratio += spool_step; // constrain ramp value and update mode if (_spin_up_ratio >= 1.0f) { @@ -559,15 +572,19 @@ void AP_MotorsMulticopter::output_logic() } } break; - - case DesiredSpoolState::GROUND_IDLE: + } + case DesiredSpoolState::GROUND_IDLE: { + const float spool_up_step = _dt / _spool_up_time; + const float spool_down_time = _spool_down_time > minimum_spool_time ? _spool_down_time : _spool_up_time; + const float spool_down_step = _dt / spool_down_time; float spin_up_armed_ratio = 0.0f; if (thr_lin.get_spin_min() > 0.0f) { spin_up_armed_ratio = _spin_arm / thr_lin.get_spin_min(); } - _spin_up_ratio += constrain_float(spin_up_armed_ratio - _spin_up_ratio, -spool_step, spool_step); + _spin_up_ratio += constrain_float(spin_up_armed_ratio - _spin_up_ratio, -spool_down_step, spool_up_step); break; } + } _throttle_thrust_max = 0.0f; // initialise motor failure variables @@ -575,7 +592,8 @@ void AP_MotorsMulticopter::output_logic() _thrust_boost_ratio = 0.0f; break; } - case SpoolState::SPOOLING_UP: + case SpoolState::SPOOLING_UP: { + const float spool_step = _dt / _spool_up_time; // Maximum throttle should move from minimum to maximum. // Servos should exhibit normal flight behavior. @@ -608,8 +626,10 @@ void AP_MotorsMulticopter::output_logic() _thrust_boost = false; _thrust_boost_ratio = MAX(0.0, _thrust_boost_ratio - spool_step); break; + } - case SpoolState::THROTTLE_UNLIMITED: + case SpoolState::THROTTLE_UNLIMITED: { + const float spool_step = _dt / _spool_up_time; // Throttle should exhibit normal flight behavior. // Servos should exhibit normal flight behavior. @@ -636,6 +656,7 @@ void AP_MotorsMulticopter::output_logic() _thrust_boost_ratio = MAX(0.0, _thrust_boost_ratio - spool_step); } break; + } case SpoolState::SPOOLING_DOWN: // Maximum throttle should move from maximum to minimum. @@ -656,6 +677,8 @@ void AP_MotorsMulticopter::output_logic() // set and increment ramp variables _spin_up_ratio = 1.0f; + const float spool_time = _spool_down_time > minimum_spool_time ? _spool_down_time : _spool_up_time; + const float spool_step = _dt / spool_time; _throttle_thrust_max -= spool_step; // constrain ramp value and update mode diff --git a/libraries/AP_Motors/AP_MotorsMulticopter.h b/libraries/AP_Motors/AP_MotorsMulticopter.h index f2b8b1dc036ab..f6e07e204a74c 100644 --- a/libraries/AP_Motors/AP_MotorsMulticopter.h +++ b/libraries/AP_Motors/AP_MotorsMulticopter.h @@ -169,6 +169,7 @@ class AP_MotorsMulticopter : public AP_Motors { // time to spool motors to min throttle AP_Float _spool_up_time; + AP_Float _spool_down_time; // scaling for booster motor throttle AP_Float _boost_scale; diff --git a/libraries/AP_Mount/AP_Mount_Viewpro.cpp b/libraries/AP_Mount/AP_Mount_Viewpro.cpp index 3b03d7c8a5700..07608d689bfff 100644 --- a/libraries/AP_Mount/AP_Mount_Viewpro.cpp +++ b/libraries/AP_Mount/AP_Mount_Viewpro.cpp @@ -668,6 +668,7 @@ bool AP_Mount_Viewpro::send_m_ahrs() return false; } +#if AP_RTC_ENABLED // get date and time uint16_t year, ms; uint8_t month, day, hour, min, sec; @@ -676,6 +677,10 @@ bool AP_Mount_Viewpro::send_m_ahrs() } uint16_t date = ((year-2000) & 0x7f) | (((month+1) & 0x0F) << 7) | ((day & 0x1F) << 11); uint64_t second_hundredths = (((hour * 60 * 60) + (min * 60) + sec) * 100) + (ms * 0.1); +#else + const uint16_t date = 0; + const uint64_t second_hundredths = 0; +#endif // get vehicle velocity in m/s in NED Frame Vector3f vel_NED; diff --git a/libraries/AP_Mount/AP_Mount_Xacti.cpp b/libraries/AP_Mount/AP_Mount_Xacti.cpp index 455038749c0b0..9f210993d4350 100644 --- a/libraries/AP_Mount/AP_Mount_Xacti.cpp +++ b/libraries/AP_Mount/AP_Mount_Xacti.cpp @@ -12,18 +12,11 @@ extern const AP_HAL::HAL& hal; #define LOG_TAG "Mount" -#define XACTI_PARAM_SINGLESHOT "SingleShot" -#define XACTI_PARAM_RECORDING "Recording" -#define XACTI_PARAM_FOCUSMODE "FocusMode" -#define XACTI_PARAM_SENSORMODE "SensorMode" -#define XACTI_PARAM_DIGITALZOOM "DigitalZoomMagnification" -#define XACTI_PARAM_FIRMWAREVERSION "FirmwareVersion" -#define XACTI_PARAM_STATUS "Status" -#define XACTI_PARAM_DATETIME "DateTime" - #define XACTI_MSG_SEND_MIN_MS 20 // messages should not be sent to camera more often than 20ms -#define XACTI_ZOOM_RATE_UPDATE_INTERVAL_MS 500 // zoom rate control increments zoom by 10% up or down every 0.5sec +#define XACTI_DIGITAL_ZOOM_RATE_UPDATE_INTERVAL_MS 500 // digital zoom rate control updates 11% up or down every 0.5sec +#define XACTI_OPTICAL_ZOOM_RATE_UPDATE_INTERVAL_MS 250 // optical zoom rate control updates 6.6% up or down every 0.25sec #define XACTI_STATUS_REQ_INTERVAL_MS 3000 // request status every 3 seconds +#define XACTI_SET_PARAM_QUEUE_SIZE 3 // three set-param requests may be queued #define AP_MOUNT_XACTI_DEBUG 0 #define debug(fmt, args ...) do { if (AP_MOUNT_XACTI_DEBUG) { GCS_SEND_TEXT(MAV_SEVERITY_INFO, "Xacti: " fmt, ## args); } } while (0) @@ -33,6 +26,10 @@ AP_Mount_Xacti::DetectedModules AP_Mount_Xacti::_detected_modules[]; HAL_Semaphore AP_Mount_Xacti::_sem_registry; const char* AP_Mount_Xacti::send_text_prefix = "Xacti:"; const char* AP_Mount_Xacti::sensor_mode_str[] = { "RGB", "IR", "PIP", "NDVI" }; +const char* AP_Mount_Xacti::_param_names[] = {"SingleShot", "Recording", "FocusMode", + "SensorMode", "DigitalZoomMagnification", + "FirmwareVersion", "Status", "DateTime", + "OpticalZoomMagnification"}; // Constructor AP_Mount_Xacti::AP_Mount_Xacti(class AP_Mount &frontend, class AP_Mount_Params ¶ms, uint8_t instance) : @@ -43,11 +40,20 @@ AP_Mount_Xacti::AP_Mount_Xacti(class AP_Mount &frontend, class AP_Mount_Params & param_int_cb = FUNCTOR_BIND_MEMBER(&AP_Mount_Xacti::handle_param_get_set_response_int, bool, AP_DroneCAN*, const uint8_t, const char*, int32_t &); param_string_cb = FUNCTOR_BIND_MEMBER(&AP_Mount_Xacti::handle_param_get_set_response_string, bool, AP_DroneCAN*, const uint8_t, const char*, AP_DroneCAN::string &); param_save_cb = FUNCTOR_BIND_MEMBER(&AP_Mount_Xacti::handle_param_save_response, void, AP_DroneCAN*, const uint8_t, bool); + + // static assert that Param enum matches parameter names array + static_assert((uint8_t)AP_Mount_Xacti::Param::LAST+1 == ARRAY_SIZE(AP_Mount_Xacti::_param_names), "AP_Mount_Xacti::_param_names array must match Param enum"); } // init - performs any required initialisation for this instance void AP_Mount_Xacti::init() { + // instantiate parameter queue, return on failure so init fails + _set_param_int32_queue = new ObjectArray(XACTI_SET_PARAM_QUEUE_SIZE); + if (_set_param_int32_queue == nullptr) { + GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s init failed", send_text_prefix); + return; + } _initialised = true; } @@ -70,9 +76,16 @@ void AP_Mount_Xacti::update() return; } - // set date and time - if (_firmware_version.received && set_datetime(now_ms)) { - return; + // additional initial setup + if (_firmware_version.received) { + // set date and time + if (set_datetime(now_ms)) { + return; + } + // request camera capabilities + if (request_capabilities(now_ms)) { + return; + } } // request status @@ -80,6 +93,11 @@ void AP_Mount_Xacti::update() return; } + // process queue of set parameter items + if (process_set_param_int32_queue()) { + return; + } + // periodically send copter attitude and GPS status if (send_copter_att_status(now_ms)) { // if message sent avoid sending other messages @@ -188,19 +206,20 @@ bool AP_Mount_Xacti::healthy() const // take a picture. returns true on success bool AP_Mount_Xacti::take_picture() { - if (_detected_modules[_instance].ap_dronecan == nullptr) { + // fail if camera errored + if (_camera_error) { + GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s unable to take pic", send_text_prefix); return false; } - // set SingleShot parameter - return set_param_int32(XACTI_PARAM_SINGLESHOT, 0); + return set_param_int32(Param::SingleShot, 0); } // start or stop video recording. returns true on success // set start_recording = true to start record, false to stop recording bool AP_Mount_Xacti::record_video(bool start_recording) { - return set_param_int32(XACTI_PARAM_RECORDING, start_recording ? 1 : 0); + return set_param_int32(Param::Recording, start_recording ? 1 : 0); } // set zoom specified as a rate or percentage @@ -214,17 +233,35 @@ bool AP_Mount_Xacti::set_zoom(ZoomType zoom_type, float zoom_value) } else { // zoom in or out _zoom_rate_control.enabled = true; - _zoom_rate_control.increment = (zoom_value < 0) ? -100 : 100; + _zoom_rate_control.dir = (zoom_value < 0) ? -1 : 1; } return true; } // zoom percentage if (zoom_type == ZoomType::PCT) { + if (capabilities.optical_zoom == Capability::True) { + // optical zoom capable cameras use combination of optical and digital zoom + // convert zoom percentage (0 ~ 100) to zoom times using linear interpolation + // optical zoom covers 1x to 2.5x, param values are in 100 to 250 + // digital zoom covers 2.5x to 25x, param values are 100 to 1000 + const float zoom_times = linear_interpolate(1, 25, zoom_value, 0, 100); + const uint16_t optical_zoom_param = constrain_uint16(uint16_t(zoom_times * 10) * 10, 100, 250); + const uint16_t digital_zoom_param = constrain_uint16(uint16_t(zoom_times * 0.4) * 100, 100, 1000); + bool ret = true; + if (optical_zoom_param != _last_optical_zoom_param_value) { + ret = set_param_int32(Param::OpticalZoomMagnification, optical_zoom_param); + } + if (digital_zoom_param != _last_digital_zoom_param_value) { + ret &= set_param_int32(Param::DigitalZoomMagnification, digital_zoom_param); + } + return ret; + } + // digital only zoom // convert zoom percentage (0 ~ 100) to zoom parameter value (100, 200, 300, ... 1000) - // 0~9pct:100, 10~19pct:200, ... 90~100pct:1000 - uint16_t zoom_param_value = constrain_uint16(uint16_t(zoom_value * 0.1) * 10, 100, 1000); - return set_param_int32(XACTI_PARAM_DIGITALZOOM, zoom_param_value); + // 0~11pct:100, 12~22pct:200, 23~33pct:300, 34~44pct:400, 45~55pct:500, 56~66pct:600, 67~77pct:700, 78~88pct:800, 89~99pct:900, 100:1000 + const uint16_t zoom_param_value = uint16_t(linear_interpolate(1, 10, zoom_value, 0, 100)) * 100; + return set_param_int32(Param::DigitalZoomMagnification, zoom_param_value); } // unsupported zoom type @@ -254,7 +291,7 @@ SetFocusResult AP_Mount_Xacti::set_focus(FocusType focus_type, float focus_value } // set FocusMode parameter - return set_param_int32(XACTI_PARAM_FOCUSMODE, focus_param_value) ? SetFocusResult::ACCEPTED : SetFocusResult::FAILED; + return set_param_int32(Param::FocusMode, focus_param_value) ? SetFocusResult::ACCEPTED : SetFocusResult::FAILED; } // set camera lens as a value from 0 to 5 @@ -265,7 +302,7 @@ bool AP_Mount_Xacti::set_lens(uint8_t lens) return false; } - return set_param_int32(XACTI_PARAM_SENSORMODE, lens); + return set_param_int32(Param::SensorMode, lens); } // send camera information message to GCS @@ -350,7 +387,7 @@ void AP_Mount_Xacti::subscribe_msgs(AP_DroneCAN* ap_dronecan) { // return immediately if DroneCAN is unavailable if (ap_dronecan == nullptr) { - gcs().send_text(MAV_SEVERITY_CRITICAL, "%s DroneCAN subscribe failed", send_text_prefix); + GCS_SEND_TEXT(MAV_SEVERITY_CRITICAL, "%s DroneCAN subscribe failed", send_text_prefix); return; } @@ -465,9 +502,14 @@ void AP_Mount_Xacti::handle_gnss_status_req(AP_DroneCAN* ap_dronecan, const Cana // get date and time uint16_t year, ms; uint8_t month, day, hour, min, sec; +#if AP_RTC_ENABLED if (!AP::rtc().get_date_and_time_utc(year, month, day, hour, min, sec, ms)) { year = month = day = hour = min = sec = 0; } +#else + year = month = day = hour = min = sec = 0; + (void)ms; +#endif // send xacti specific gnss status message com_xacti_GnssStatus xacti_gnss_status_msg {}; @@ -489,63 +531,88 @@ void AP_Mount_Xacti::handle_gnss_status_req(AP_DroneCAN* ap_dronecan, const Cana // handle param get/set response bool AP_Mount_Xacti::handle_param_get_set_response_int(AP_DroneCAN* ap_dronecan, uint8_t node_id, const char* name, int32_t &value) { - // display errors + // error string prefix to save on flash const char* err_prefix_str = "Xacti: failed to"; - if (strcmp(name, XACTI_PARAM_SINGLESHOT) == 0) { + + // take picture + if (strcmp(name, get_param_name_str(Param::SingleShot)) == 0) { if (value < 0) { - gcs().send_text(MAV_SEVERITY_ERROR, "%s take pic", err_prefix_str); + GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s take pic", err_prefix_str); } return false; } - if (strcmp(name, XACTI_PARAM_RECORDING) == 0) { + + // recording + if (strcmp(name, get_param_name_str(Param::Recording)) == 0) { if (value < 0) { _recording_video = false; - gcs().send_text(MAV_SEVERITY_ERROR, "%s record", err_prefix_str); + GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s record", err_prefix_str); } else { _recording_video = (value == 1); - gcs().send_text(MAV_SEVERITY_INFO, "%s recording %s", send_text_prefix, _recording_video ? "ON" : "OFF"); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s recording %s", send_text_prefix, _recording_video ? "ON" : "OFF"); } return false; } - if (strcmp(name, XACTI_PARAM_FOCUSMODE) == 0) { + + // focus + if (strcmp(name, get_param_name_str(Param::FocusMode)) == 0) { if (value < 0) { - gcs().send_text(MAV_SEVERITY_ERROR, "%s change focus", err_prefix_str); + GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s change focus", err_prefix_str); } else { - gcs().send_text(MAV_SEVERITY_INFO, "%s %s focus", send_text_prefix, value == 0 ? "manual" : "auto"); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s %s focus", send_text_prefix, value == 0 ? "manual" : "auto"); } return false; } - if (strcmp(name, XACTI_PARAM_SENSORMODE) == 0) { + + // camera lens (aka sensor mode) + if (strcmp(name, get_param_name_str(Param::SensorMode)) == 0) { if (value < 0) { - gcs().send_text(MAV_SEVERITY_ERROR, "%s change lens", err_prefix_str); + GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s change lens", err_prefix_str); } else if ((uint32_t)value < ARRAY_SIZE(sensor_mode_str)) { - gcs().send_text(MAV_SEVERITY_INFO, "%s %s", send_text_prefix, sensor_mode_str[(uint8_t)value]); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s %s", send_text_prefix, sensor_mode_str[(uint8_t)value]); } return false; } - if (strcmp(name, XACTI_PARAM_DIGITALZOOM) == 0) { + + // digital zoom + if (strcmp(name, get_param_name_str(Param::DigitalZoomMagnification)) == 0) { if (value < 0) { - gcs().send_text(MAV_SEVERITY_ERROR, "%s change zoom", err_prefix_str); + GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s change zoom", err_prefix_str); // disable zoom rate control (if active) to avoid repeated failures _zoom_rate_control.enabled = false; } else if (value >= 100 && value <= 1000) { - _last_zoom_param_value = value; + _last_digital_zoom_param_value = value; + } + return false; + } + + // optical zoom + if (strcmp(name, get_param_name_str(Param::OpticalZoomMagnification)) == 0) { + if (value < 0) { + GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s change optical zoom", err_prefix_str); + // disable zoom rate control (if active) to avoid repeated failures + _zoom_rate_control.enabled = false; + } else if (value >= 100 && value <= 250) { + capabilities.optical_zoom = Capability::True; + capabilities.received = true; + _last_optical_zoom_param_value = value; } return false; } + // unhandled parameter get or set - gcs().send_text(MAV_SEVERITY_INFO, "%s get/set %s res:%ld", send_text_prefix, name, (long int)value); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s get/set %s res:%ld", send_text_prefix, name, (long int)value); return false; } // handle param get/set response bool AP_Mount_Xacti::handle_param_get_set_response_string(AP_DroneCAN* ap_dronecan, uint8_t node_id, const char* name, AP_DroneCAN::string &value) { - if (strcmp(name, XACTI_PARAM_FIRMWAREVERSION) == 0) { + if (strcmp(name, get_param_name_str(Param::FirmwareVersion)) == 0) { _firmware_version.received = true; const uint8_t len = MIN(value.len, ARRAY_SIZE(_firmware_version.str)-1); memcpy(_firmware_version.str, (const char*)value.data, len); - gcs().send_text(MAV_SEVERITY_INFO, "Mount: Xacti fw:%s", _firmware_version.str); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "Mount: Xacti fw:%s", _firmware_version.str); // firmware str from gimbal is of the format YYMMDD[b]xx. Convert to uint32 for reporting to GCS if (len >= 9) { @@ -560,11 +627,11 @@ bool AP_Mount_Xacti::handle_param_get_set_response_string(AP_DroneCAN* ap_dronec _firmware_version.mav_ver = UINT32_VALUE(dev_ver_num, patch_ver_num, minor_ver_num, major_ver_num); } return false; - } else if (strcmp(name, XACTI_PARAM_DATETIME) == 0) { + } else if (strcmp(name, get_param_name_str(Param::DateTime)) == 0) { // display when time and date have been set - gcs().send_text(MAV_SEVERITY_INFO, "%s datetime set %s", send_text_prefix, (const char*)value.data); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s datetime set %s", send_text_prefix, (const char*)value.data); return false; - } else if (strcmp(name, XACTI_PARAM_STATUS) == 0) { + } else if (strcmp(name, get_param_name_str(Param::Status)) == 0) { // check for expected length const char* error_str = "error"; if (value.len != sizeof(_status)) { @@ -579,38 +646,40 @@ bool AP_Mount_Xacti::handle_param_get_set_response_string(AP_DroneCAN* ap_dronec // report change in status uint32_t changed_bits = last_error_status ^ _status.error_status; const char* ok_str = "OK"; - if (changed_bits & (uint32_t)ErrorStatus::CANNOT_TAKE_PIC) { - gcs().send_text(MAV_SEVERITY_INFO, "%s %s take pic", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::CANNOT_TAKE_PIC ? "cannot" : "can"); - } if (changed_bits & (uint32_t)ErrorStatus::TIME_NOT_SET) { - gcs().send_text(MAV_SEVERITY_INFO, "%s time %sset", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::TIME_NOT_SET ? "not " : " "); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s time %sset", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::TIME_NOT_SET ? "not " : ""); + if (_status.error_status & (uint32_t)ErrorStatus::TIME_NOT_SET) { + // try to set time again + _datetime.set = false; + } } if (changed_bits & (uint32_t)ErrorStatus::MEDIA_ERROR) { - gcs().send_text(MAV_SEVERITY_INFO, "%s media %s", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::MEDIA_ERROR ? error_str : ok_str); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s media %s", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::MEDIA_ERROR ? error_str : ok_str); } if (changed_bits & (uint32_t)ErrorStatus::LENS_ERROR) { - gcs().send_text(MAV_SEVERITY_INFO, "%s lens %s", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::LENS_ERROR ? error_str : ok_str); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s lens %s", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::LENS_ERROR ? error_str : ok_str); } if (changed_bits & (uint32_t)ErrorStatus::MOTOR_INIT_ERROR) { - gcs().send_text(MAV_SEVERITY_INFO, "%s motor %s", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::MOTOR_INIT_ERROR ? "init error" : ok_str); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s motor %s", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::MOTOR_INIT_ERROR ? "init error" : ok_str); } if (changed_bits & (uint32_t)ErrorStatus::MOTOR_OPERATION_ERROR) { - gcs().send_text(MAV_SEVERITY_INFO, "%s motor op %s", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::MOTOR_OPERATION_ERROR ? error_str : ok_str); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s motor op %s", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::MOTOR_OPERATION_ERROR ? error_str : ok_str); } if (changed_bits & (uint32_t)ErrorStatus::GIMBAL_CONTROL_ERROR) { - gcs().send_text(MAV_SEVERITY_INFO, "%s control %s", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::GIMBAL_CONTROL_ERROR ? error_str : ok_str); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s control %s", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::GIMBAL_CONTROL_ERROR ? error_str : ok_str); } if (changed_bits & (uint32_t)ErrorStatus::TEMP_WARNING) { - gcs().send_text(MAV_SEVERITY_INFO, "%s temp %s", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::TEMP_WARNING ? "warning" : ok_str); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s temp %s", send_text_prefix, _status.error_status & (uint32_t)ErrorStatus::TEMP_WARNING ? "warning" : ok_str); } // set motor error for health reporting _motor_error = _status.error_status & ((uint32_t)ErrorStatus::MOTOR_INIT_ERROR | (uint32_t)ErrorStatus::MOTOR_OPERATION_ERROR | (uint32_t)ErrorStatus::GIMBAL_CONTROL_ERROR); + _camera_error = _status.error_status & ((uint32_t)ErrorStatus::LENS_ERROR | (uint32_t)ErrorStatus::MEDIA_ERROR); return false; } // unhandled parameter get or set - gcs().send_text(MAV_SEVERITY_INFO, "%s get/set string %s res:%s", send_text_prefix, name, (const char*)value.data); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s get/set string %s res:%s", send_text_prefix, name, (const char*)value.data); return false; } @@ -618,47 +687,85 @@ void AP_Mount_Xacti::handle_param_save_response(AP_DroneCAN* ap_dronecan, const { // display failure to save parameter if (!success) { - gcs().send_text(MAV_SEVERITY_ERROR, "%s CAM%u failed to set param", send_text_prefix, (int)_instance+1); + GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s CAM%u failed to set param", send_text_prefix, (int)_instance+1); } } +// get parameter name for a particular param enum value +// returns an empty string if not found (which should never happen) +const char* AP_Mount_Xacti::get_param_name_str(Param param) const +{ + // check to avoid reading beyond end of array. This should never happen + if ((uint8_t)param > ARRAY_SIZE(_param_names)) { + INTERNAL_ERROR(AP_InternalError::error_t::invalid_arg_or_result); + return ""; + } + return _param_names[(uint8_t)param]; +} + // helper function to set integer parameters -bool AP_Mount_Xacti::set_param_int32(const char* param_name, int32_t param_value) +bool AP_Mount_Xacti::set_param_int32(Param param, int32_t param_value) +{ + if (_set_param_int32_queue == nullptr) { + return false; + } + + // set param request added to queue to be sent. throttling requests improves reliability + return _set_param_int32_queue->push(SetParamQueueItem{param, param_value}); +} + +// helper function to set string parameters +bool AP_Mount_Xacti::set_param_string(Param param, const AP_DroneCAN::string& param_value) { if (_detected_modules[_instance].ap_dronecan == nullptr) { return false; } - if (_detected_modules[_instance].ap_dronecan->set_parameter_on_node(_detected_modules[_instance].node_id, param_name, param_value, ¶m_int_cb)) { + // convert param to string + const char* param_name_str = get_param_name_str(param); + if (param_name_str == nullptr) { + return false; + } + + if (_detected_modules[_instance].ap_dronecan->set_parameter_on_node(_detected_modules[_instance].node_id, param_name_str, param_value, ¶m_string_cb)) { last_send_getset_param_ms = AP_HAL::millis(); return true; } return false; } -bool AP_Mount_Xacti::set_param_string(const char* param_name, const AP_DroneCAN::string& param_value) +// helper function to get string parameters +bool AP_Mount_Xacti::get_param_string(Param param) { if (_detected_modules[_instance].ap_dronecan == nullptr) { return false; } - if (_detected_modules[_instance].ap_dronecan->set_parameter_on_node(_detected_modules[_instance].node_id, param_name, param_value, ¶m_string_cb)) { + // convert param to string + const char* param_name_str = get_param_name_str(param); + if (_detected_modules[_instance].ap_dronecan->get_parameter_on_node(_detected_modules[_instance].node_id, param_name_str, ¶m_string_cb)) { last_send_getset_param_ms = AP_HAL::millis(); return true; } return false; } -// helper function to get string parameters -bool AP_Mount_Xacti::get_param_string(const char* param_name) +// process queue of set parameter items +bool AP_Mount_Xacti::process_set_param_int32_queue() { - if (_detected_modules[_instance].ap_dronecan == nullptr) { + if ((_set_param_int32_queue == nullptr) || (_detected_modules[_instance].ap_dronecan == nullptr)) { return false; } - if (_detected_modules[_instance].ap_dronecan->get_parameter_on_node(_detected_modules[_instance].node_id, param_name, ¶m_string_cb)) { - last_send_getset_param_ms = AP_HAL::millis(); - return true; + SetParamQueueItem param_to_set; + if (_set_param_int32_queue->pop(param_to_set)) { + // convert param to string + const char* param_name_str = get_param_name_str(param_to_set.param); + if (_detected_modules[_instance].ap_dronecan->set_parameter_on_node(_detected_modules[_instance].node_id, param_name_str, param_to_set.value, ¶m_int_cb)) { + last_send_getset_param_ms = AP_HAL::millis(); + return true; + } + return false; } return false; } @@ -732,23 +839,42 @@ bool AP_Mount_Xacti::update_zoom_rate_control(uint32_t now_ms) return false; } - // update only every 0.5 sec - if (now_ms - _zoom_rate_control.last_update_ms < XACTI_ZOOM_RATE_UPDATE_INTERVAL_MS) { + // we are controlling optical zoom if the camera has it and we are below the optical zoom upper limit + // or at the optical zoom upper limit, the lower digital zoom limit and are zooming out + bool optical_zoom_control = (capabilities.optical_zoom == Capability::True) && + ((_last_optical_zoom_param_value < 250) || + ((_last_optical_zoom_param_value == 250) && (_last_digital_zoom_param_value == 100) && (_zoom_rate_control.dir < 0))); + + // update every 0.25 or 0.5 sec + const uint32_t update_interval_ms = optical_zoom_control ? XACTI_OPTICAL_ZOOM_RATE_UPDATE_INTERVAL_MS : XACTI_DIGITAL_ZOOM_RATE_UPDATE_INTERVAL_MS; + if (now_ms - _zoom_rate_control.last_update_ms < update_interval_ms) { return false; } _zoom_rate_control.last_update_ms = now_ms; - // increment zoom - const uint16_t zoom_value = _last_zoom_param_value + _zoom_rate_control.increment; + // optical zoom + if (optical_zoom_control) { + const uint16_t optical_zoom_value = _last_optical_zoom_param_value + _zoom_rate_control.dir * 10; + // if reached lower limit of optical zoom, disable zoom control + if (optical_zoom_value < 100) { + _zoom_rate_control.enabled = false; + return false; + } + // send desired optical zoom to camera + return set_param_int32(Param::OpticalZoomMagnification, MIN(optical_zoom_value, 250)); + } + + // digital zoom + const uint16_t digital_zoom_value = _last_digital_zoom_param_value + _zoom_rate_control.dir * 100; // if reached limit then disable zoom - if ((zoom_value < 100) || (zoom_value > 1000)) { + if (((capabilities.optical_zoom != Capability::True) && (digital_zoom_value < 100)) || (digital_zoom_value > 1000)) { _zoom_rate_control.enabled = false; return false; } - // send desired zoom to camera - return set_param_int32(XACTI_PARAM_DIGITALZOOM, zoom_value); + // send desired digital zoom to camera + return set_param_int32(Param::DigitalZoomMagnification, digital_zoom_value); } // request firmware version. now_ms should be current system time (reduces calls to AP_HAL::millis) @@ -765,7 +891,39 @@ bool AP_Mount_Xacti::request_firmware_version(uint32_t now_ms) return false; } _firmware_version.last_request_ms = now_ms; - return get_param_string(XACTI_PARAM_FIRMWAREVERSION); + return get_param_string(Param::FirmwareVersion); +} + +// request parameters used to determine camera capabilities. now_ms is current system time +// returns true if a param get/set was sent so that we avoid sending other messages +bool AP_Mount_Xacti::request_capabilities(uint32_t now_ms) +{ + // return immediately if we have already determined this models capabilities + if (capabilities.received) { + return false; + } + + // send requests once per second until received + if (now_ms - capabilities.last_request_ms < 1000) { + return false; + } + capabilities.last_request_ms = now_ms; + + // record start time + if (capabilities.first_request_ms == 0) { + capabilities.first_request_ms = now_ms; + } + + // timeout after 10 seconds + if (now_ms - capabilities.first_request_ms > 10000) { + capabilities.optical_zoom = Capability::False; + capabilities.received = true; + return false; + } + + // optical zoom: try setting optical zoom to 1x + // return is handled in handle_param_get_set_response_int + return set_param_int32(Param::OpticalZoomMagnification, 100); } // set date and time. now_ms is current system time @@ -785,9 +943,14 @@ bool AP_Mount_Xacti::set_datetime(uint32_t now_ms) // get date and time uint16_t year, ms; uint8_t month, day, hour, min, sec; +#if AP_RTC_ENABLED if (!AP::rtc().get_date_and_time_utc(year, month, day, hour, min, sec, ms)) { return false; } +#else + (void)ms; + return false; +#endif // date time is of the format YYYYMMDDHHMMSS (14 bytes) // convert month from 0~11 to 1~12 range @@ -800,9 +963,9 @@ bool AP_Mount_Xacti::set_datetime(uint32_t now_ms) return false; } datetime_string.len = num_bytes; - _datetime.set = set_param_string(XACTI_PARAM_DATETIME, datetime_string); + _datetime.set = set_param_string(Param::DateTime, datetime_string); if (!_datetime.set) { - gcs().send_text(MAV_SEVERITY_ERROR, "%s failed to set date/time", send_text_prefix); + GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s failed to set date/time", send_text_prefix); } return _datetime.set; @@ -818,7 +981,7 @@ bool AP_Mount_Xacti::request_status(uint32_t now_ms) } _status_report.last_request_ms = now_ms; - return get_param_string(XACTI_PARAM_STATUS); + return get_param_string(Param::Status); } // check if safe to send message (if messages sent too often camera will not respond) diff --git a/libraries/AP_Mount/AP_Mount_Xacti.h b/libraries/AP_Mount/AP_Mount_Xacti.h index 06749f8852110..247a66bac1cbb 100644 --- a/libraries/AP_Mount/AP_Mount_Xacti.h +++ b/libraries/AP_Mount/AP_Mount_Xacti.h @@ -16,6 +16,7 @@ #include #include #include +#include #include "AP_Mount.h" class AP_Mount_Xacti : public AP_Mount_Backend @@ -118,10 +119,32 @@ class AP_Mount_Xacti : public AP_Mount_Backend bool handle_param_get_set_response_string(AP_DroneCAN* ap_dronecan, const uint8_t node_id, const char* name, AP_DroneCAN::string &value); void handle_param_save_response(AP_DroneCAN* ap_dronecan, const uint8_t node_id, bool success); + // param enum. If enum is updated also update _param_names definition in cpp + enum class Param : uint8_t { + SingleShot = 0, + Recording, + FocusMode, + SensorMode, + DigitalZoomMagnification, + FirmwareVersion, + Status, + DateTime, + OpticalZoomMagnification, + LAST = OpticalZoomMagnification, // this should be equal to the final parameter enum + }; + static const char* _param_names[]; // array of Xacti parameter strings + + // get parameter name for a particular param enum value + // returns an empty string if not found (which should never happen) + const char* get_param_name_str(Param param) const; + // helper function to get and set parameters - bool set_param_int32(const char* param_name, int32_t param_value); - bool set_param_string(const char* param_name, const AP_DroneCAN::string& param_value); - bool get_param_string(const char* param_name); + bool set_param_int32(Param param, int32_t param_value); + bool set_param_string(Param param, const AP_DroneCAN::string& param_value); + bool get_param_string(Param param); + + // process queue of set parameter items. returns true if set-parameter message was sent + bool process_set_param_int32_queue(); // send gimbal control message via DroneCAN // mode is 2:angle control or 3:rate control @@ -141,6 +164,10 @@ class AP_Mount_Xacti : public AP_Mount_Backend // returns true if sent so that we avoid immediately trying to also send other messages bool request_firmware_version(uint32_t now_ms); + // request parameters used to determine camera capabilities. now_ms is current system time + // returns true if a param get/set was sent so that we avoid sending other messages + bool request_capabilities(uint32_t now_ms); + // set date and time. now_ms is current system time bool set_datetime(uint32_t now_ms); @@ -159,10 +186,11 @@ class AP_Mount_Xacti : public AP_Mount_Backend Quaternion _current_attitude_quat; // current attitude as a quaternion uint32_t _last_current_attitude_quat_ms; // system time _current_angle_rad was updated bool _recording_video; // true if recording video - uint16_t _last_zoom_param_value = 100; // last digital zoom parameter value sent to camera. 100 ~ 1000 (interval 100) + uint16_t _last_digital_zoom_param_value = 100; // last digital zoom parameter value sent to camera. 100 ~ 1000 (interval 100) + uint16_t _last_optical_zoom_param_value = 100; // last optical zoom parameter value sent to camera. 100 ~ 250 (interval 10) struct { bool enabled; // true if zoom rate control is enabled - int8_t increment; // zoom increment on each update (+100 or -100) + int8_t dir; // zoom direction (-1 to zoom out, +1 to zoom in) uint32_t last_update_ms; // system time that zoom rate control last updated zoom } _zoom_rate_control; @@ -180,6 +208,19 @@ class AP_Mount_Xacti : public AP_Mount_Backend bool set; // true once date/time has been set } _datetime; + // capability handling + enum class Capability : uint8_t { + False = 0, + True = 1, + Unknown = 2, + }; + struct { + bool received; // true if we have determined cameras capabilities + uint32_t first_request_ms; // system time of first request for capabilities (used to timeout) + uint32_t last_request_ms; // system time of last capability related parameter check + Capability optical_zoom; // Yes if camera has optical zoom + } capabilities = {false, 0, 0, Capability::Unknown}; + // gimbal status handling enum class ErrorStatus : uint32_t { TAKING_PICTURE = 0x04, // currently taking a picture @@ -217,6 +258,7 @@ class AP_Mount_Xacti : public AP_Mount_Backend uint32_t last_error_status; // last error status reported to user } _status_report; bool _motor_error; // true if status reports motor or control error (used for health reporting) + bool _camera_error; // true if status reports camera error // DroneCAN related variables static bool _subscribed; // true once subscribed to receive DroneCAN messages @@ -229,6 +271,13 @@ class AP_Mount_Xacti : public AP_Mount_Backend uint32_t last_send_gimbal_control_ms; // system time that send_gimbal_control was last called (used to slow down sends to 5hz) uint32_t last_send_copter_att_status_ms; // system time that send_copter_att_status was last called (used to slow down sends to 10hz) uint32_t last_send_getset_param_ms; // system time that a get or set parameter message was sent + + // queue of set parameter int32 items. set-parameter requests to camera are throttled to improve reliability + struct SetParamQueueItem { + Param param; // parameter (name) + int32_t value; // parameter value + }; + ObjectArray *_set_param_int32_queue; // queue of set-parameter items }; #endif // HAL_MOUNT_XACTI_ENABLED diff --git a/libraries/AP_NMEA_Output/AP_NMEA_Output.cpp b/libraries/AP_NMEA_Output/AP_NMEA_Output.cpp index b50e4d96e7a9f..bc7d0ff2ef898 100644 --- a/libraries/AP_NMEA_Output/AP_NMEA_Output.cpp +++ b/libraries/AP_NMEA_Output/AP_NMEA_Output.cpp @@ -96,9 +96,13 @@ void AP_NMEA_Output::update() // get time and date uint64_t time_usec; +#if AP_RTC_ENABLED if (!AP::rtc().get_utc_usec(time_usec)) { return; } +#else + time_usec = 0; +#endif uint32_t space_required = 0; diff --git a/libraries/AP_Notify/AP_Notify.cpp b/libraries/AP_Notify/AP_Notify.cpp index a4d3cd0b6e50d..c24defb495332 100644 --- a/libraries/AP_Notify/AP_Notify.cpp +++ b/libraries/AP_Notify/AP_Notify.cpp @@ -207,7 +207,7 @@ const AP_Param::GroupInfo AP_Notify::var_info[] = { // @Param: LED_TYPES // @DisplayName: LED Driver Types // @Description: Controls what types of LEDs will be enabled - // @Bitmask: 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:DroneCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot, 12:ProfiLED_SPI, 13:LP5562 External, 14: LP5562 Internal, 17: DiscreteRGB + // @Bitmask: 0:Built-in LED, 1:Internal ToshibaLED, 2:External ToshibaLED, 3:External PCA9685, 4:Oreo LED, 5:DroneCAN, 6:NCP5623 External, 7:NCP5623 Internal, 8:NeoPixel, 9:ProfiLED, 10:Scripting, 11:DShot, 12:ProfiLED_SPI, 13:LP5562 External, 14: LP5562 Internal, 17: DiscreteRGB, 18: NeoPixelRGB // @User: Advanced AP_GROUPINFO("LED_TYPES", 6, AP_Notify, _led_type, DEFAULT_NTF_LED_TYPES), @@ -339,6 +339,7 @@ void AP_Notify::add_backends(void) #endif #if AP_NOTIFY_NEOPIXEL_ENABLED case Notify_LED_NeoPixel: + case Notify_LED_NeoPixelRGB: ADD_BACKEND(new NeoPixel()); break; #endif diff --git a/libraries/AP_Notify/AP_Notify.h b/libraries/AP_Notify/AP_Notify.h index 8ca1e2e76c617..0db8c825bb8ce 100644 --- a/libraries/AP_Notify/AP_Notify.h +++ b/libraries/AP_Notify/AP_Notify.h @@ -96,6 +96,9 @@ class AP_Notify #endif #if AP_NOTIFY_DISCRETE_RGB_ENABLED Notify_LED_DiscreteRGB = (1 << 17), // DiscreteRGB +#endif +#if AP_NOTIFY_NEOPIXEL_ENABLED + Notify_LED_NeoPixelRGB = (1 << 18), // NeoPixel AdaFruit 4544 Worldsemi WS2811 #endif Notify_LED_MAX }; @@ -213,6 +216,7 @@ class AP_Notify uint8_t get_buzz_level() const { return _buzzer_level; } uint8_t get_buzz_volume() const { return _buzzer_volume; } uint8_t get_led_len() const { return _led_len; } + uint32_t get_led_type() const { return _led_type; } int8_t get_rgb_led_brightness_percent() const; #if CONFIG_HAL_BOARD == HAL_BOARD_SITL diff --git a/libraries/AP_Notify/NeoPixel.cpp b/libraries/AP_Notify/NeoPixel.cpp index 08a3fd16a5862..3e5b495215641 100644 --- a/libraries/AP_Notify/NeoPixel.cpp +++ b/libraries/AP_Notify/NeoPixel.cpp @@ -61,7 +61,11 @@ uint16_t NeoPixel::init_ports() for (uint16_t chan=0; chan<16; chan++) { if ((1U<set_num_neopixel(chan+1, (pNotify->get_led_len())); + if (pNotify->get_led_type() & AP_Notify::Notify_LED_NeoPixel) { + led->set_num_neopixel(chan+1, pNotify->get_led_len()); + } else if (pNotify->get_led_type() & AP_Notify::Notify_LED_NeoPixelRGB) { + led->set_num_neopixel_rgb(chan+1, pNotify->get_led_len()); + } } } diff --git a/libraries/AP_OLC/AP_OLC.cpp b/libraries/AP_OLC/AP_OLC.cpp index 25b4a0228e2ce..8faa5db431412 100644 --- a/libraries/AP_OLC/AP_OLC.cpp +++ b/libraries/AP_OLC/AP_OLC.cpp @@ -16,50 +16,51 @@ */ #include "AP_OLC.h" - -#include +#include #include #if HAL_PLUSCODE_ENABLE // This is a port of https://github.com/google/open-location-code/blob/master/c/olc.c // to avoid double floating point math and use integer math as much as possible. -#define SEPARATOR_CHAR '+' -#define SEPARATOR_POS 8U -#define PADDING_CHAR '0' +static constexpr char SEPARATOR_CHAR = '+'; +static constexpr uint8_t SEPARATOR_POS = 8U; +static constexpr char PADDING_CHAR = '0'; -#define ENCODING_BASE 20U -#define PAIR_CODE_LEN 10U -#define CODE_LEN_MAX 15U +static constexpr uint8_t ENCODING_BASE = 20U; +static constexpr uint8_t PAIR_CODE_LEN = 10U; +static constexpr uint8_t CODE_LEN_MAX = 15U; -#define GRID_COLS 4U -#define GRID_ROWS (ENCODING_BASE / GRID_COLS) +static constexpr uint8_t GRID_COLS = 4U; +static constexpr uint8_t GRID_ROWS = (ENCODING_BASE / GRID_COLS); -#define OLC_DEG_MULTIPLIER 10000000U // 1e7 +static constexpr uint32_t OLC_DEG_MULTIPLIER = 10000000U; // 1e7 -#define LAT_MAX int32_t(90 * OLC_DEG_MULTIPLIER) -#define LON_MAX int32_t(180 * OLC_DEG_MULTIPLIER) +static constexpr int32_t LAT_MAX = static_cast(90 * OLC_DEG_MULTIPLIER); +static constexpr int32_t LON_MAX = static_cast(180 * OLC_DEG_MULTIPLIER); -const int32_t AP_OLC::initial_exponent = floorf(logf(2 * (LON_MAX / OLC_DEG_MULTIPLIER)) / logf(ENCODING_BASE)); -const int32_t AP_OLC::grid_size = (1 / powf(ENCODING_BASE, PAIR_CODE_LEN / 2 - (initial_exponent + 1))) * OLC_DEG_MULTIPLIER; -const int32_t AP_OLC::initial_resolution = powf(ENCODING_BASE, initial_exponent) * OLC_DEG_MULTIPLIER; +const int32_t AP_OLC::INITIAL_EXPONENT = floorf(logf(2 * (LON_MAX / OLC_DEG_MULTIPLIER)) / logf(ENCODING_BASE)); +// Work out the enclosing resolution (in degrees) for the grid algorithm. +const int32_t AP_OLC::GRID_SIZE = (1 / powf(ENCODING_BASE, PAIR_CODE_LEN / 2 - (INITIAL_EXPONENT + 1))) * OLC_DEG_MULTIPLIER; +// Work out the initial resolution +const int32_t AP_OLC::INITIAL_RESOLUTION = powf(ENCODING_BASE, INITIAL_EXPONENT) * OLC_DEG_MULTIPLIER; constexpr char AP_OLC::olc_alphabet[]; // Compute the latitude precision value for a given code length. Lengths <= 10 // have the same precision for latitude and longitude, but lengths > 10 have // different precisions due to the grid method having fewer columns than rows. -float AP_OLC::compute_precision_for_length(int length) +float AP_OLC::compute_precision_for_length(uint8_t length) { // Magic numbers! - if (length <= (int)PAIR_CODE_LEN) { + if (length <= PAIR_CODE_LEN) { return powf(ENCODING_BASE, floorf((length / -2) + 2)); } - return powf(ENCODING_BASE, -3) / powf(5, length - (int)PAIR_CODE_LEN); + return powf(ENCODING_BASE, -3) / powf(5, length - PAIR_CODE_LEN); } -int32_t AP_OLC::adjust_latitude(int32_t lat, size_t code_len) +int32_t AP_OLC::adjust_latitude(int32_t lat, uint8_t code_len) { lat = constrain_int32(lat, -LAT_MAX, LAT_MAX); @@ -89,24 +90,23 @@ int32_t AP_OLC::normalize_longitude(int32_t lon) // uses pairs of characters (latitude and longitude in that order) to represent // each step in a 20x20 grid. Each code, therefore, has 1/400th the area of // the previous code. -unsigned AP_OLC::encode_pairs(uint32_t lat, uint32_t lon, size_t length, char *buf, size_t bufsize) +uint32_t AP_OLC::encode_pairs(uint32_t lat, uint32_t lon, uint8_t length, char *buf, uint8_t bufsize) { if ((length + 1) >= bufsize) { buf[0] = '\0'; return 0; } - unsigned pos = 0; - int32_t resolution = initial_resolution; + uint32_t pos = 0; + int32_t resolution = INITIAL_RESOLUTION; // Add two digits on each pass. - for (size_t digit_count = 0; + for (uint8_t digit_count = 0; digit_count < length; digit_count += 2, resolution /= ENCODING_BASE) { - size_t digit_value; // Do the latitude - gets the digit for this place and subtracts that // for the next digit. - digit_value = lat / resolution; + auto digit_value = lat / resolution; lat -= digit_value * resolution; buf[pos++] = olc_alphabet[digit_value]; @@ -144,8 +144,8 @@ unsigned AP_OLC::encode_pairs(uint32_t lat, uint32_t lon, size_t length, char *b // // This allows default accuracy OLC codes to be refined with just a single // character. -int AP_OLC::encode_grid(uint32_t lat, uint32_t lon, size_t length, - char *buf, size_t bufsize) +int32_t AP_OLC::encode_grid(uint32_t lat, uint32_t lon, uint8_t length, + char *buf, uint8_t bufsize) { if ((length + 1) >= bufsize) { buf[0] = '\0'; @@ -154,13 +154,13 @@ int AP_OLC::encode_grid(uint32_t lat, uint32_t lon, size_t length, int pos = 0; - int32_t lat_grid_size = grid_size; - int32_t lon_grid_size = grid_size; + int32_t lat_grid_size = GRID_SIZE; + int32_t lon_grid_size = GRID_SIZE; lat %= lat_grid_size; lon %= lon_grid_size; - for (size_t i = 0; i < length; i++) { + for (uint8_t i = 0; i < length; i++) { int32_t lat_div = lat_grid_size / GRID_ROWS; int32_t lon_div = lon_grid_size / GRID_COLS; @@ -171,8 +171,8 @@ int AP_OLC::encode_grid(uint32_t lat, uint32_t lon, size_t length, } // Work out the row and column. - size_t row = lat / lat_div; - size_t col = lon / lon_div; + auto row = lat / lat_div; + auto col = lon / lon_div; lat_grid_size /= GRID_ROWS; lon_grid_size /= GRID_COLS; lat -= row * lat_grid_size; @@ -183,9 +183,9 @@ int AP_OLC::encode_grid(uint32_t lat, uint32_t lon, size_t length, return pos; } -int AP_OLC::olc_encode(int32_t lat, int32_t lon, size_t length, char *buf, size_t bufsize) +uint32_t AP_OLC::olc_encode(int32_t lat, int32_t lon, uint8_t length, char *buf, uint8_t bufsize) { - int pos = 0; + uint32_t pos = 0; length = MIN(length, CODE_LEN_MAX); diff --git a/libraries/AP_OLC/AP_OLC.h b/libraries/AP_OLC/AP_OLC.h index 061e3918f2527..2c34ed7ad7d5a 100644 --- a/libraries/AP_OLC/AP_OLC.h +++ b/libraries/AP_OLC/AP_OLC.h @@ -32,22 +32,22 @@ class AP_OLC // olc_encodes the given coordinates in lat and lon (deg * OLC_DEG_MULTIPLIER) // as an OLC code of the given length. It returns the number of characters // written to buf. - static int olc_encode(int32_t lat, int32_t lon, size_t length, char *buf, size_t bufsize); + static uint32_t olc_encode(int32_t lat, int32_t lon, uint8_t length, char *buf, uint8_t bufsize); private: - static const int32_t initial_exponent; + static const int32_t INITIAL_EXPONENT; // Work out the enclosing resolution (in degrees) for the grid algorithm. - static const int32_t grid_size; + static const int32_t GRID_SIZE; // Work out the initial resolution - static const int32_t initial_resolution; + static const int32_t INITIAL_RESOLUTION; static constexpr char olc_alphabet[] = "23456789CFGHJMPQRVWX"; - static float compute_precision_for_length(int length); - static int32_t adjust_latitude(int32_t lat, size_t code_len); + static float compute_precision_for_length(uint8_t length); + static int32_t adjust_latitude(int32_t lat, uint8_t code_len); static int32_t normalize_longitude(int32_t lon); - static unsigned encode_pairs(uint32_t lat, uint32_t lon, size_t length, char *buf, size_t bufsize); - static int encode_grid(uint32_t lat, uint32_t lon, size_t length, char *buf, size_t bufsize); + static uint32_t encode_pairs(uint32_t lat, uint32_t lon, uint8_t length, char *buf, uint8_t bufsize); + static int32_t encode_grid(uint32_t lat, uint32_t lon, uint8_t length, char *buf, uint8_t bufsize); }; diff --git a/libraries/AP_OLC/tests/test_olc.cpp b/libraries/AP_OLC/tests/test_olc.cpp new file mode 100644 index 0000000000000..75405309ac5fa --- /dev/null +++ b/libraries/AP_OLC/tests/test_olc.cpp @@ -0,0 +1,52 @@ +#include +#include "AP_Math/AP_Math.h" +#include "AP_OLC/AP_OLC.h" + +AP_OLC olc; +const AP_HAL::HAL& hal = AP_HAL::get_HAL(); + +// Test the olc_encode function of AP_OLC +TEST(AP_OLCTest, OLC_EncodeTest) { + // Test cases + struct TestCase { + int32_t lat; + int32_t lon; + size_t length; + std::string expectedCode; + }; + + // Define the test cases + std::vector testCases = { + {500000000, 1000000000, 6, "9P2222"}, + {900000000, 2000000000, 8, "C3X2X2X2"}, + {000000000, 500000000, 9, "6HGG2222+"}, + {300000000, 500000000, 10, "8H2G2222+2"}, + {300000000, 500000000, 11, "8H2G2222+22"}, + {300000000, 500000000, 12, "8H2G2222+22"}, + {300000000, -1000000000, 10, "86222222+2"}, + {950000000, -1900000000, 12, "CVXGX2X2+X2"}, + // Add more test cases as needed + }; + // Run the test cases + for (const auto& testCase : testCases) { + std::string buf(testCase.length + 2, '\0'); // buf should be > length +1 as the coding add \0 + uint32_t result = olc.olc_encode(testCase.lat, testCase.lon, testCase.length, &buf[0], buf.size()); + if (testCase.length < 9) { + EXPECT_EQ(result, 9u); // 9 is separator min position + } else { + EXPECT_EQ(result, 11u); // length max is 11 + } + EXPECT_EQ(buf.substr(0, MIN(testCase.length, 11u)), testCase.expectedCode); + } + std::string buf(2, '\0'); + uint32_t result = olc.olc_encode(testCases[0].lat, testCases[0].lon, testCases[0].length, &buf[0], buf.size()); + EXPECT_EQ(result, 0u); + std::string empty_code(2, '\0'); + EXPECT_EQ(buf, empty_code); + std::string buf2(16, '\0'); // buf should be > length +1 as the coding add \0 + result = olc.olc_encode(testCases[0].lat, testCases[0].lon, 11, &buf2[0], buf2.size()); + EXPECT_EQ(result, 12u); + EXPECT_EQ(buf2.substr(0, 12), "9P222222+222"); +} + +AP_GTEST_MAIN() diff --git a/libraries/AP_OLC/tests/wscript b/libraries/AP_OLC/tests/wscript new file mode 100644 index 0000000000000..cd3e5e3ce7c9d --- /dev/null +++ b/libraries/AP_OLC/tests/wscript @@ -0,0 +1,7 @@ +#!/usr/bin/env python +# encoding: utf-8 + +def build(bld): + bld.ap_find_tests( + use='ap', + ) diff --git a/libraries/AP_OSD/AP_OSD_Screen.cpp b/libraries/AP_OSD/AP_OSD_Screen.cpp index 11d2cbbbad929..3a76f5b577d11 100644 --- a/libraries/AP_OSD/AP_OSD_Screen.cpp +++ b/libraries/AP_OSD/AP_OSD_Screen.cpp @@ -1354,7 +1354,7 @@ void AP_OSD_Screen::draw_bat_volt(uint8_t instance, VoltageType type, uint8_t x, case VoltageType::RESTING_CELL: { blinkvolt = osd->warn_avgcellrestvolt; v = battery.voltage_resting_estimate(instance); - FALLTHROUGH; + FALLTHROUGH; } case VoltageType::AVG_CELL: { if (type == VoltageType::AVG_CELL) { //for fallthrough of RESTING_CELL @@ -1376,10 +1376,18 @@ void AP_OSD_Screen::draw_bat_volt(uint8_t instance, VoltageType type, uint8_t x, } if (!show_remaining_pct) { // Do not show battery percentage - backend->write(x,y, v < blinkvolt, "%2.1f%c", (double)v, SYMBOL(SYM_VOLT)); + if (type == VoltageType::RESTING_CELL || type == VoltageType::AVG_CELL) { + backend->write(x,y, v < blinkvolt, "%1.2f%c", (double)v, SYMBOL(SYM_VOLT)); + } else { + backend->write(x,y, v < blinkvolt, "%2.1f%c", (double)v, SYMBOL(SYM_VOLT)); + } return; } - backend->write(x,y, v < blinkvolt, "%c%2.1f%c", SYMBOL(SYM_BATT_FULL) + p, (double)v, SYMBOL(SYM_VOLT)); + if (type == VoltageType::RESTING_CELL || type == VoltageType::AVG_CELL) { + backend->write(x,y, v < blinkvolt, "%c%1.2f%c", SYMBOL(SYM_BATT_FULL) + p, (double)v, SYMBOL(SYM_VOLT)); + } else { + backend->write(x,y, v < blinkvolt, "%c%2.1f%c", SYMBOL(SYM_BATT_FULL) + p, (double)v, SYMBOL(SYM_VOLT)); + } } void AP_OSD_Screen::draw_bat_volt(uint8_t x, uint8_t y) @@ -2141,6 +2149,7 @@ void AP_OSD_Screen::draw_aspd2(uint8_t x, uint8_t y) #endif } +#if AP_RTC_ENABLED void AP_OSD_Screen::draw_clk(uint8_t x, uint8_t y) { AP_RTC &rtc = AP::rtc(); @@ -2152,6 +2161,7 @@ void AP_OSD_Screen::draw_clk(uint8_t x, uint8_t y) backend->write(x, y, false, "%c%02u:%02u", SYMBOL(SYM_CLK), hour, min); } } +#endif #if HAL_PLUSCODE_ENABLE void AP_OSD_Screen::draw_pluscode(uint8_t x, uint8_t y) @@ -2321,7 +2331,9 @@ void AP_OSD_Screen::draw(void) DRAW_SETTING(atemp); DRAW_SETTING(hdop); DRAW_SETTING(flightime); +#if AP_RTC_ENABLED DRAW_SETTING(clk); +#endif #if AP_VIDEOTX_ENABLED DRAW_SETTING(vtx_power); #endif diff --git a/libraries/AP_OpenDroneID/AP_OpenDroneID.cpp b/libraries/AP_OpenDroneID/AP_OpenDroneID.cpp index f43289d248380..9aa153706ab3e 100644 --- a/libraries/AP_OpenDroneID/AP_OpenDroneID.cpp +++ b/libraries/AP_OpenDroneID/AP_OpenDroneID.cpp @@ -27,10 +27,11 @@ * and DroneCAN */ -#include "AP_OpenDroneID.h" +#include "AP_OpenDroneID_config.h" #if AP_OPENDRONEID_ENABLED +#include "AP_OpenDroneID.h" #include #include #include @@ -132,9 +133,6 @@ void AP_OpenDroneID::set_basic_id() { if (pkt_basic_id.id_type != MAV_ODID_ID_TYPE_NONE) { return; } - if (id_len == 0) { - load_UAS_ID_from_persistent_memory(); - } if (id_len > 0) { // prepare basic id pkt uint8_t val = gcs().sysid_this_mav(); @@ -209,10 +207,12 @@ void AP_OpenDroneID::update() if ((pkt_basic_id.id_type == MAV_ODID_ID_TYPE_SERIAL_NUMBER) && (_options & LockUASIDOnFirstBasicIDRx) - && id_len == 0) { + && id_len == 0 + && !bootloader_flashed) { hal.util->flash_bootloader(); // reset the basic id on next set_basic_id call pkt_basic_id.id_type = MAV_ODID_ID_TYPE_NONE; + bootloader_flashed = true; } set_basic_id(); diff --git a/libraries/AP_OpenDroneID/AP_OpenDroneID.h b/libraries/AP_OpenDroneID/AP_OpenDroneID.h index 735bf358c7688..3ed65244acca3 100644 --- a/libraries/AP_OpenDroneID/AP_OpenDroneID.h +++ b/libraries/AP_OpenDroneID/AP_OpenDroneID.h @@ -27,14 +27,8 @@ #pragma once -#include #include "AP_OpenDroneID_config.h" -#ifndef AP_OPENDRONEID_ENABLED -// default to off. Enabled in hwdef.dat -#define AP_OPENDRONEID_ENABLED 0 -#endif - #if AP_OPENDRONEID_ENABLED #include @@ -117,7 +111,7 @@ class AP_OpenDroneID char id_type[3]; size_t id_len; char id_str[21]; - + bool bootloader_flashed; enum Options : int16_t { EnforceArming = (1U << 0U), AllowNonGPSPosition = (1U << 1U), diff --git a/libraries/AP_Param/AP_Param.h b/libraries/AP_Param/AP_Param.h index d40a7a30f86e5..db8fbde15f460 100644 --- a/libraries/AP_Param/AP_Param.h +++ b/libraries/AP_Param/AP_Param.h @@ -54,7 +54,9 @@ #endif // allow for dynamically added tables when scripting enabled +#ifndef AP_PARAM_DYNAMIC_ENABLED #define AP_PARAM_DYNAMIC_ENABLED AP_SCRIPTING_ENABLED +#endif // maximum number of dynamically created tables (from scripts) #ifndef AP_PARAM_MAX_DYNAMIC diff --git a/libraries/AP_Proximity/AP_Proximity.cpp b/libraries/AP_Proximity/AP_Proximity.cpp index a74ba8f995834..ac1d6786e6c6b 100644 --- a/libraries/AP_Proximity/AP_Proximity.cpp +++ b/libraries/AP_Proximity/AP_Proximity.cpp @@ -29,6 +29,7 @@ #include "AP_Proximity_Cygbot_D1.h" #include "AP_Proximity_DroneCAN.h" #include "AP_Proximity_Scripting.h" +#include "AP_Proximity_LD06.h" #include @@ -216,6 +217,15 @@ void AP_Proximity::init() state[instance].instance = instance; drivers[instance] = new AP_Proximity_AirSimSITL(*this, state[instance], params[instance]); break; +#endif +#if AP_PROXIMITY_LD06_ENABLED + case Type::LD06: + if (AP_Proximity_LD06::detect(serial_instance)) { + state[instance].instance = instance; + drivers[instance] = new AP_Proximity_LD06(*this, state[instance], params[instance], serial_instance); + serial_instance++; + } + break; #endif } diff --git a/libraries/AP_Proximity/AP_Proximity.h b/libraries/AP_Proximity/AP_Proximity.h index a07f5f3abe4e1..0363fea8f4da9 100644 --- a/libraries/AP_Proximity/AP_Proximity.h +++ b/libraries/AP_Proximity/AP_Proximity.h @@ -83,6 +83,9 @@ class AP_Proximity #endif #if AP_PROXIMITY_SCRIPTING_ENABLED Scripting = 15, +#endif +#if AP_PROXIMITY_LD06_ENABLED + LD06 = 16, #endif }; diff --git a/libraries/AP_Proximity/AP_Proximity_LD06.cpp b/libraries/AP_Proximity/AP_Proximity_LD06.cpp new file mode 100644 index 0000000000000..409a3352e3a2c --- /dev/null +++ b/libraries/AP_Proximity/AP_Proximity_LD06.cpp @@ -0,0 +1,198 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +/* + * ArduPilot device driver for Inno-Maker LD06 LiDAR + * + * ALL INFORMATION REGARDING PROTOCOL WAS DERIVED FROM InnoMaker DATASHEET: + * + * http://wiki.inno-maker.com/display/HOMEPAGE/LD06?preview=/6949506/6949511/LDROBOT_LD06_Development%20manual_v1.0_en.pdf + * + * Author: Adithya Patil, Georgia Institute of Technology + * Based on the SLAMTEC RPLiDAR code written by Steven Josefs, IAV GmbH and CYGBOT D1 LiDAR code + * + */ + +#include "AP_Proximity_config.h" + +#if AP_PROXIMITY_LD06_ENABLED +#include "AP_Proximity_LD06.h" + +#define LD_START_CHAR 0x54 +#define PROXIMITY_LD06_TIMEOUT_MS 50 + +// Indices in data array where each value starts being recorded +// See comment below about data payload for more info about formatting +#define START_BEGIN_CHARACTER 0 +#define START_DATA_LENGTH 1 +#define START_RADAR_SPEED 2 +#define START_BEGIN_ANGLE 4 +#define START_PAYLOAD 6 +#define START_END_ANGLE 42 +#define START_CHECK_SUM 46 +#define MEASUREMENT_PAYLOAD_LENGTH 3 +#define PAYLOAD_COUNT 12 + + /* ------------------------------------------ + Data Packet Structure: + Start Character : 1 Byte + Data Length : 1 Byte + Radar Speed : 2 Bytes + Start Angle : 2 Bytes + Data Measurements : 36 Bytes + Contains 12 measurements of 3 Bytes each + Each measurement has 2 Bytes for distance to closest object + Each measurement has the 3rd Byte as measurement Confidence + End Angle : 2 Bytes + Timestamp : 2 Bytes + Checksum : 1 Byte + ------------------------------------------ */ +// ----> 47 data bytes in total for one packet + +// Update the sensor readings +void AP_Proximity_LD06::update(void) +{ + // Escape if no connection detected/supported while running + if (_uart == nullptr) { + return; + } + + // Begin getting sensor readings + // Calls method that repeatedly reads through UART channel + get_readings(); + + // Check if the data is being received correctly and sets Proximity Status + if (_last_distance_received_ms == 0 || (AP_HAL::millis() - _last_distance_received_ms > PROXIMITY_LD06_TIMEOUT_MS)) { + set_status(AP_Proximity::Status::NoData); + } else { + set_status(AP_Proximity::Status::Good); + } +} + +// Called repeatedly to get the readings at the current instant +void AP_Proximity_LD06::get_readings() +{ + if (_uart == nullptr) { + return; + } + + // Store the number of bytes available on the UART input + uint32_t nbytes = MIN((uint16_t) 4000, _uart->available()); + + // Loops through all bytes that were received + while (nbytes-- > 0) { + + // Gets and logs the current byte being read + const uint8_t c = _uart->read(); + + // Stores the byte in an array if the byte is a start byte or we have already read a start byte + if (c == LD_START_CHAR || _response_data) { + + // Sets to true if a start byte has been read, default false otherwise + _response_data = true; + + // Stores the next byte in an array + _response[_byte_count] = c; + _byte_count++; + + if (_byte_count == _response[START_DATA_LENGTH] + 3) { + + const uint32_t current_ms = AP_HAL::millis(); + + // Stores the last distance taken, used to reduce number of readings taken + if (_last_distance_received_ms != current_ms) { + _last_distance_received_ms = current_ms; + } + + // Updates the temporary boundary and passes off the completed data + parse_response_data(); + _temp_boundary.update_3D_boundary(state.instance, frontend.boundary); + _temp_boundary.reset(); + + // Resets the bytes read and whether or not we are reading data to accept a new payload + _byte_count = 0; + _response_data = false; + } + } + } +} + +// Parses the data packet received from the LiDAR +void AP_Proximity_LD06::parse_response_data() +{ + + // Data interpretation based on: + // http://wiki.inno-maker.com/display/HOMEPAGE/LD06?preview=/6949506/6949511/LDROBOT_LD06_Development%20manual_v1.0_en.pdf + + // Second byte in array stores length of data - not used but stored for debugging + // const uint8_t data_length = _response[START_DATA_LENGTH]; + + // Respective bits store the radar speed, start/end angles + // Use bitwise operations to correctly obtain correct angles + // Divide angles by 100 as per manual + const float start_angle = float(UINT16_VALUE(_response[START_BEGIN_ANGLE + 1], _response[START_BEGIN_ANGLE])) * 0.01; + const float end_angle = float(UINT16_VALUE(_response[START_END_ANGLE + 1], _response[START_END_ANGLE])) * 0.01; + + // Verify the checksum that is stored in the last element of the response array + // Return if checksum is incorrect - i.e. bad data, bad readings, etc. + const uint8_t check_sum = _response[START_CHECK_SUM]; + if (check_sum != crc8_generic(&_response[0], sizeof(_response) / sizeof(_response[0]) - 1, 0x4D)) { + return; + } + + // Calculates the angle that this point was sampled at + float sampled_counts = 0; + const float angle_step = (end_angle - start_angle) / (PAYLOAD_COUNT - 1); + float uncorrected_angle = start_angle + (end_angle - start_angle) * 0.5; + + // Handles the case that the angles read went from 360 to 0 (jumped) + if (angle_step < 0) { + uncorrected_angle = wrap_360(start_angle + (end_angle + 360 - start_angle) * 0.5); + } + + // Takes the angle in the middle of the readings to be pushed to the database + const float push_angle = correct_angle_for_orientation(uncorrected_angle); + + float distance_avg = 0.0; + + // Each recording point is three bytes long, goes through all of that and updates database + for (uint16_t i = START_PAYLOAD; i < START_PAYLOAD + MEASUREMENT_PAYLOAD_LENGTH * PAYLOAD_COUNT; i += MEASUREMENT_PAYLOAD_LENGTH) { + + // Gets the distance recorded and converts to meters + const float distance_meas = UINT16_VALUE(_response[i + 1], _response[i]) * 0.001; + + // Validates data and checks if it should be included + if (distance_meas > distance_min() && distance_meas < distance_max()) { + if (ignore_reading(push_angle, distance_meas)) { + continue; + } + + sampled_counts ++; + distance_avg += distance_meas; + } + } + + // Convert angle to appropriate face and adds to database + // Since angle increments are only about 3 degrees, ignore readings if there were only 1 or 2 measurements + // (likely outliers) recorded in the range + if (sampled_counts > 2) { + // Gets the average distance read + distance_avg /= sampled_counts; + + // Pushes the average distance and angle to the obstacle avoidance database + const AP_Proximity_Boundary_3D::Face face = frontend.boundary.get_face(push_angle); + _temp_boundary.add_distance(face, push_angle, distance_avg); + database_push(push_angle, distance_avg); + } +} +#endif // AP_PROXIMITY_LD06_ENABLED diff --git a/libraries/AP_Proximity/AP_Proximity_LD06.h b/libraries/AP_Proximity/AP_Proximity_LD06.h new file mode 100644 index 0000000000000..c51adbb102e82 --- /dev/null +++ b/libraries/AP_Proximity/AP_Proximity_LD06.h @@ -0,0 +1,69 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +/* + * ArduPilot device driver for Inno-Maker LD06 LiDAR + * + * ALL INFORMATION REGARDING PROTOCOL WAS DERIVED FROM LD06 DATASHEET: + * + * http://wiki.inno-maker.com/display/HOMEPAGE/LD06?preview=/6949506/6949511/LDROBOT_LD06_Development%20manual_v1.0_en.pdf + * + * Author: Adithya Patil, Georgia Institute of Technology + * Based on the SLAMTEC RPLiDAR code written by Steven Josefs, IAV GmbH + * + */ + +#pragma once +#include "AP_Proximity_config.h" + +#if AP_PROXIMITY_LD06_ENABLED + +#include "AP_Proximity_Backend_Serial.h" + +#define MESSAGE_LENGTH_LD06 47 + +// Minimum and maximum distance that the sensor can read in meters +#define MAX_READ_DISTANCE_LD06 12.0f +#define MIN_READ_DISTANCE_LD06 0.02f + +class AP_Proximity_LD06 : public AP_Proximity_Backend_Serial +{ +public: + + using AP_Proximity_Backend_Serial::AP_Proximity_Backend_Serial; + + // Update the state of the sensor + void update(void) override; + + // Get the max and min distances for the sensor being used + float distance_max() const override { return MAX_READ_DISTANCE_LD06; } + float distance_min() const override { return MIN_READ_DISTANCE_LD06; } + +private: + + // Get and parse the sensor data + void parse_response_data(); + void get_readings(); + + // Store and keep track of the bytes being read from the sensor + uint8_t _response[MESSAGE_LENGTH_LD06]; + bool _response_data; + uint16_t _byte_count; + + // Store for error-tracking purposes + uint32_t _last_distance_received_ms; + + // Boundary to store the measurements + AP_Proximity_Temp_Boundary _temp_boundary; +}; +#endif // AP_PROXIMITY_LD06_ENABLED diff --git a/libraries/AP_Proximity/AP_Proximity_Params.cpp b/libraries/AP_Proximity/AP_Proximity_Params.cpp index d9f9f78211fb7..046a29c3b7181 100644 --- a/libraries/AP_Proximity/AP_Proximity_Params.cpp +++ b/libraries/AP_Proximity/AP_Proximity_Params.cpp @@ -8,7 +8,7 @@ const AP_Param::GroupInfo AP_Proximity_Params::var_info[] = { // @Param: _TYPE // @DisplayName: Proximity type // @Description: What type of proximity sensor is connected - // @Values: 0:None,7:LightwareSF40c,2:MAVLink,3:TeraRangerTower,4:RangeFinder,5:RPLidarA2,6:TeraRangerTowerEvo,8:LightwareSF45B,10:SITL,12:AirSimSITL,13:CygbotD1, 14:DroneCAN, 15:Scripting + // @Values: 0:None,7:LightwareSF40c,2:MAVLink,3:TeraRangerTower,4:RangeFinder,5:RPLidarA2,6:TeraRangerTowerEvo,8:LightwareSF45B,10:SITL,12:AirSimSITL,13:CygbotD1, 14:DroneCAN, 15:Scripting, 16:LD06 // @RebootRequired: True // @User: Standard AP_GROUPINFO_FLAGS("_TYPE", 1, AP_Proximity_Params, type, 0, AP_PARAM_FLAG_ENABLE), diff --git a/libraries/AP_Proximity/AP_Proximity_config.h b/libraries/AP_Proximity/AP_Proximity_config.h index 403634f773bbc..a2130b0b5c4f2 100644 --- a/libraries/AP_Proximity/AP_Proximity_config.h +++ b/libraries/AP_Proximity/AP_Proximity_config.h @@ -24,6 +24,11 @@ #define AP_PROXIMITY_DRONECAN_ENABLED AP_PROXIMITY_BACKEND_DEFAULT_ENABLED && HAL_ENABLE_DRONECAN_DRIVERS #endif + +#ifndef AP_PROXIMITY_LD06_ENABLED +#define AP_PROXIMITY_LD06_ENABLED AP_PROXIMITY_BACKEND_DEFAULT_ENABLED +#endif + #ifndef AP_PROXIMITY_LIGHTWARE_SF40C_ENABLED #define AP_PROXIMITY_LIGHTWARE_SF40C_ENABLED AP_PROXIMITY_BACKEND_DEFAULT_ENABLED #endif @@ -59,3 +64,7 @@ #ifndef AP_PROXIMITY_TERARANGERTOWEREVO_ENABLED #define AP_PROXIMITY_TERARANGERTOWEREVO_ENABLED AP_PROXIMITY_BACKEND_DEFAULT_ENABLED #endif + +#ifndef AP_PROXIMITY_LD06_ENABLED +#define AP_PROXIMITY_LD06_ENABLED AP_PROXIMITY_BACKEND_DEFAULT_ENABLED +#endif diff --git a/libraries/AP_RCProtocol/AP_RCProtocol_Backend.cpp b/libraries/AP_RCProtocol/AP_RCProtocol_Backend.cpp index 9575ab22f7475..7c61f5355d373 100644 --- a/libraries/AP_RCProtocol/AP_RCProtocol_Backend.cpp +++ b/libraries/AP_RCProtocol/AP_RCProtocol_Backend.cpp @@ -178,7 +178,8 @@ void AP_RCProtocol_Backend::configure_vtx(uint8_t band, uint8_t channel, uint8_t */ void AP_RCProtocol_Backend::log_data(AP_RCProtocol::rcprotocol_t prot, uint32_t timestamp, const uint8_t *data, uint8_t len) const { -#if HAL_LOGGING_ENABLED +#if HAL_LOGGING_ENABLED && AP_RC_CHANNEL_ENABLED + #if (CONFIG_HAL_BOARD == HAL_BOARD_SITL || CONFIG_HAL_BOARD == HAL_BOARD_LINUX) if (&rc() == nullptr) { // allow running without RC_Channels if we are doing the examples return; @@ -214,7 +215,7 @@ void AP_RCProtocol_Backend::log_data(AP_RCProtocol::rcprotocol_t prot, uint32_t u32[0], u32[1], u32[2], u32[3], u32[4], u32[5], u32[6], u32[7], u32[8], u32[9]); } -#endif // HAL_LOGGING_ENABLED +#endif // HAL_LOGGING_ENABLED && AP_RC_CHANNEL_ENABLED } #endif // AP_RCPROTOCOL_ENABLED diff --git a/libraries/AP_RCProtocol/AP_RCProtocol_Backend.h b/libraries/AP_RCProtocol/AP_RCProtocol_Backend.h index 474a3ab20c580..cbb0b1135be71 100644 --- a/libraries/AP_RCProtocol/AP_RCProtocol_Backend.h +++ b/libraries/AP_RCProtocol/AP_RCProtocol_Backend.h @@ -122,7 +122,7 @@ class AP_RCProtocol_Backend { void log_data(AP_RCProtocol::rcprotocol_t prot, uint32_t timestamp, const uint8_t *data, uint8_t len) const; // decode channels from the standard 11bit format (used by CRSF and SBUS) - void decode_11bit_channels(const uint8_t* data, uint8_t nchannels, uint16_t *values, uint16_t mult, uint16_t div, uint16_t offset); + static void decode_11bit_channels(const uint8_t* data, uint8_t nchannels, uint16_t *values, uint16_t mult, uint16_t div, uint16_t offset); private: uint32_t rc_input_count; diff --git a/libraries/AP_RCProtocol/AP_RCProtocol_SBUS.cpp b/libraries/AP_RCProtocol/AP_RCProtocol_SBUS.cpp index 7b860f66810eb..b3d30b27bfe00 100644 --- a/libraries/AP_RCProtocol/AP_RCProtocol_SBUS.cpp +++ b/libraries/AP_RCProtocol/AP_RCProtocol_SBUS.cpp @@ -88,7 +88,7 @@ AP_RCProtocol_SBUS::AP_RCProtocol_SBUS(AP_RCProtocol &_frontend, bool _inverted, // decode a full SBUS frame bool AP_RCProtocol_SBUS::sbus_decode(const uint8_t frame[25], uint16_t *values, uint16_t *num_values, - bool *sbus_failsafe, bool *sbus_frame_drop, uint16_t max_values) + bool &sbus_failsafe, uint16_t max_values) { /* check frame boundary markers to avoid out-of-sync cases */ if ((frame[0] != 0x0f)) { @@ -97,7 +97,7 @@ bool AP_RCProtocol_SBUS::sbus_decode(const uint8_t frame[25], uint16_t *values, uint16_t chancount = SBUS_INPUT_CHANNELS; - decode_11bit_channels((const uint8_t*)(&frame[1]), SBUS_INPUT_CHANNELS, values, + decode_11bit_channels((const uint8_t*)(&frame[1]), max_values, values, SBUS_TARGET_RANGE, SBUS_RANGE_RANGE, SBUS_SCALE_OFFSET); /* decode switch channels if data fields are wide enough */ @@ -113,11 +113,25 @@ bool AP_RCProtocol_SBUS::sbus_decode(const uint8_t frame[25], uint16_t *values, /* note the number of channels decoded */ *num_values = chancount; + /* + as SBUS is such a weak protocol we additionally check if any of + the first 4 channels are at or below the minimum value of + 875. We consider the frame as a failsafe in that case, which + means we log the data but won't use it + */ + bool invalid_data = false; + for (uint8_t i=0; i<4; i++) { + if (values[i] <= SBUS_SCALE_OFFSET) { + invalid_data = true; + } + } + /* decode and handle failsafe and frame-lost flags */ if (frame[SBUS_FLAGS_BYTE] & (1 << SBUS_FAILSAFE_BIT)) { /* failsafe */ /* report that we failed to read anything valid off the receiver */ - *sbus_failsafe = true; - *sbus_frame_drop = true; + sbus_failsafe = true; + } else if (invalid_data) { + sbus_failsafe = true; } else if (frame[SBUS_FLAGS_BYTE] & (1 << SBUS_FRAMELOST_BIT)) { /* a frame was lost */ /* set a special warning flag * @@ -125,11 +139,9 @@ bool AP_RCProtocol_SBUS::sbus_decode(const uint8_t frame[25], uint16_t *values, * condition as fail-safe greatly reduces the reliability and range of the radio link, * e.g. by prematurely issuing return-to-launch!!! */ - *sbus_failsafe = false; - *sbus_frame_drop = true; + sbus_failsafe = false; } else { - *sbus_failsafe = false; - *sbus_frame_drop = false; + sbus_failsafe = false; } return true; @@ -181,9 +193,8 @@ void AP_RCProtocol_SBUS::_process_byte(uint32_t timestamp_us, uint8_t b) uint16_t values[SBUS_INPUT_CHANNELS]; uint16_t num_values=0; bool sbus_failsafe = false; - bool sbus_frame_drop = false; if (sbus_decode(byte_input.buf, values, &num_values, - &sbus_failsafe, &sbus_frame_drop, SBUS_INPUT_CHANNELS) && + sbus_failsafe, SBUS_INPUT_CHANNELS) && num_values >= MIN_RCIN_CHANNELS) { add_input(num_values, values, sbus_failsafe); } diff --git a/libraries/AP_RCProtocol/AP_RCProtocol_SBUS.h b/libraries/AP_RCProtocol/AP_RCProtocol_SBUS.h index c9c43a052b38e..c830372e21a60 100644 --- a/libraries/AP_RCProtocol/AP_RCProtocol_SBUS.h +++ b/libraries/AP_RCProtocol/AP_RCProtocol_SBUS.h @@ -30,10 +30,11 @@ class AP_RCProtocol_SBUS : public AP_RCProtocol_Backend { void process_pulse(uint32_t width_s0, uint32_t width_s1) override; void process_byte(uint8_t byte, uint32_t baudrate) override; + static bool sbus_decode(const uint8_t frame[25], uint16_t *values, uint16_t *num_values, + bool &sbus_failsafe, uint16_t max_values); + private: void _process_byte(uint32_t timestamp_us, uint8_t byte); - bool sbus_decode(const uint8_t frame[25], uint16_t *values, uint16_t *num_values, - bool *sbus_failsafe, bool *sbus_frame_drop, uint16_t max_values); bool inverted; SoftSerial ss; diff --git a/libraries/AP_RCProtocol/tests/test_sbus.cpp b/libraries/AP_RCProtocol/tests/test_sbus.cpp new file mode 100644 index 0000000000000..9908d1b18e6ec --- /dev/null +++ b/libraries/AP_RCProtocol/tests/test_sbus.cpp @@ -0,0 +1,46 @@ +/* + test that SBUS decoding matches SBUS encoding + */ +#include +#include +#include +#include + +#define SBUS_RANGE_MIN 200 +#define SBUS_RANGE_MAX 1800 +#define SBUS_RANGE_RANGE (SBUS_RANGE_MAX - SBUS_RANGE_MIN) + +#define SBUS_TARGET_MIN 1000 +#define SBUS_TARGET_MAX 2000 +#define SBUS_TARGET_RANGE (SBUS_TARGET_MAX - SBUS_TARGET_MIN) + +// this is 875 +#define SBUS_SCALE_OFFSET (SBUS_TARGET_MIN - ((SBUS_TARGET_RANGE * SBUS_RANGE_MIN / SBUS_RANGE_RANGE))) + +TEST(SBUSEncodeDecode, test_sbus_encode_decode) +{ + const uint8_t num_channels = 8; + uint16_t values_in[num_channels]; + uint16_t values_out[num_channels]; + uint8_t frame[25]; + + for (uint16_t v=875;v<2155; v++) { + for (uint8_t i=0; iis_dma_enabled()) { - gcs().send_text(MAV_SEVERITY_WARNING, "%s: running on non-DMA serial port", get_protocol_string()); + GCS_SEND_TEXT(MAV_SEVERITY_WARNING, "%s: running on non-DMA serial port", get_protocol_string()); } #endif // note if option was set to show LQ in place of RSSI bool current_lq_as_rssi_active = rc().option_is_enabled(RC_Channels::Option::USE_CRSF_LQ_AS_RSSI); if(_telem_bootstrap_msg_pending || _noted_lq_as_rssi_active != current_lq_as_rssi_active){ _noted_lq_as_rssi_active = current_lq_as_rssi_active; - gcs().send_text(MAV_SEVERITY_INFO, "%s: RSSI now displays %s", get_protocol_string(), current_lq_as_rssi_active ? " as LQ" : "normally"); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s: RSSI now displays %s", get_protocol_string(), current_lq_as_rssi_active ? " as LQ" : "normally"); } _telem_bootstrap_msg_pending = false; @@ -210,7 +210,7 @@ bool AP_CRSF_Telem::process_rf_mode_changes() if ((now - _telem_last_report_ms > 5000)) { // report an RF mode change or a change in telemetry rate if we haven't done so in the last 5s if (!rc().option_is_enabled(RC_Channels::Option::SUPPRESS_CRSF_MESSAGE) && (_telem_rf_mode != current_rf_mode || abs(int16_t(_telem_last_avg_rate) - int16_t(_scheduler.avg_packet_rate)) > 25)) { - gcs().send_text(MAV_SEVERITY_INFO, "%s: Link rate %dHz, Telemetry rate %dHz", + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s: Link rate %dHz, Telemetry rate %dHz", get_protocol_string(), crsf->get_link_rate(_crsf_version.protocol), get_telemetry_rate()); } // tune the scheduler based on telemetry speed high/low transitions @@ -465,10 +465,10 @@ void AP_CRSF_Telem::process_packet(uint8_t idx) _crsf_version.minor = 0; _crsf_version.major = 0; disable_scheduler_entry(VERSION_PING); - gcs().send_text(MAV_SEVERITY_DEBUG,"%s: RX device ping failed", get_protocol_string()); + GCS_SEND_TEXT(MAV_SEVERITY_DEBUG,"%s: RX device ping failed", get_protocol_string()); } else { calc_device_ping(AP_RCProtocol_CRSF::CRSF_ADDRESS_CRSF_RECEIVER); - gcs().send_text(MAV_SEVERITY_DEBUG,"%s: requesting RX device info", get_protocol_string()); + GCS_SEND_TEXT(MAV_SEVERITY_DEBUG,"%s: requesting RX device info", get_protocol_string()); } break; case DEVICE_PING: diff --git a/libraries/AP_RCTelemetry/AP_Spektrum_Telem.cpp b/libraries/AP_RCTelemetry/AP_Spektrum_Telem.cpp index c1d81848a94e5..3e669206ec847 100644 --- a/libraries/AP_RCTelemetry/AP_Spektrum_Telem.cpp +++ b/libraries/AP_RCTelemetry/AP_Spektrum_Telem.cpp @@ -544,7 +544,15 @@ void AP_Spektrum_Telem::calc_gps_status() _telem.gpsstat.speed = ((knots % 10000 / 1000) << 12) | ((knots % 1000 / 100) << 8) | ((knots % 100 / 10) << 4) | (knots % 10); // BCD, knots, format 3.1 uint16_t ms; uint8_t h, m, s; +#if AP_RTC_ENABLED AP::rtc().get_system_clock_utc(h, m, s, ms); // BCD, format HH:MM:SS.S, format 6.1 + // FIXME: the above call can fail! +#else + h = 0; + m = 0; + s = 0; + ms = 0; +#endif _telem.gpsstat.UTC = ((((h / 10) << 4) | (h % 10)) << 20) | ((((m / 10) << 4) | (m % 10)) << 12) | ((((s / 10) << 4) | (s % 10)) << 4) | (ms / 100) ; uint8_t nsats = AP::gps().num_sats(); _telem.gpsstat.numSats = ((nsats / 10) << 4) | (nsats % 10); // BCD, 0-99 diff --git a/libraries/AP_RTC/AP_RTC.cpp b/libraries/AP_RTC/AP_RTC.cpp index aa2c80be7754e..d695e57420ad9 100644 --- a/libraries/AP_RTC/AP_RTC.cpp +++ b/libraries/AP_RTC/AP_RTC.cpp @@ -1,3 +1,7 @@ +#include "AP_RTC_config.h" + +#if AP_RTC_ENABLED + #include "AP_RTC.h" #include @@ -240,3 +244,5 @@ AP_RTC &rtc() } } + +#endif // AP_RTC_ENABLED diff --git a/libraries/AP_RTC/AP_RTC.h b/libraries/AP_RTC/AP_RTC.h index 7772011350256..d03846bf6f29b 100644 --- a/libraries/AP_RTC/AP_RTC.h +++ b/libraries/AP_RTC/AP_RTC.h @@ -1,5 +1,9 @@ #pragma once +#include "AP_RTC_config.h" + +#if AP_RTC_ENABLED + #include #include @@ -71,3 +75,5 @@ class AP_RTC { namespace AP { AP_RTC &rtc(); }; + +#endif // AP_RTC_ENABLED diff --git a/libraries/AP_RTC/AP_RTC_config.h b/libraries/AP_RTC/AP_RTC_config.h new file mode 100644 index 0000000000000..caea31bcccbf3 --- /dev/null +++ b/libraries/AP_RTC/AP_RTC_config.h @@ -0,0 +1,7 @@ +#pragma once + +#include + +#ifndef AP_RTC_ENABLED +#define AP_RTC_ENABLED 1 +#endif diff --git a/libraries/AP_RangeFinder/AP_RangeFinder.cpp b/libraries/AP_RangeFinder/AP_RangeFinder.cpp index 7376069717e8e..9651b919a4433 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder.cpp +++ b/libraries/AP_RangeFinder/AP_RangeFinder.cpp @@ -768,6 +768,10 @@ void RangeFinder::Log_RFND() const continue; } + int8_t signal_quality; + if (!s->get_signal_quality_pct(signal_quality)) { + signal_quality = -1; + } const struct log_RFND pkt = { LOG_PACKET_HEADER_INIT(LOG_RFND_MSG), time_us : AP_HAL::micros64(), @@ -775,6 +779,7 @@ void RangeFinder::Log_RFND() const dist : s->distance_cm(), status : (uint8_t)s->status(), orient : s->orientation(), + quality : signal_quality, }; AP::logger().WriteBlock(&pkt, sizeof(pkt)); } diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_BLPing.cpp b/libraries/AP_RangeFinder/AP_RangeFinder_BLPing.cpp index 54036e2bba05c..42e64add72e82 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder_BLPing.cpp +++ b/libraries/AP_RangeFinder/AP_RangeFinder_BLPing.cpp @@ -83,6 +83,15 @@ bool AP_RangeFinder_BLPing::get_reading(float &reading_m) return false; } +bool AP_RangeFinder_BLPing::get_signal_quality_pct(int8_t &quality_pct) const +{ + if (status() != RangeFinder::Status::Good) { + return false; + } + quality_pct = protocol.get_confidence(); + return true; +} + uint8_t PingProtocol::get_confidence() const { return msg.payload[4]; diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_BLPing.h b/libraries/AP_RangeFinder/AP_RangeFinder_BLPing.h index 3a64e8f0b1f1d..e61386bf4249e 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder_BLPing.h +++ b/libraries/AP_RangeFinder/AP_RangeFinder_BLPing.h @@ -133,6 +133,13 @@ class AP_RangeFinder_BLPing : public AP_RangeFinder_Backend_Serial */ void update(void) override; + /** + * @brief Get the reading confidence + * 100 is best quality, 0 is worst + * + */ + bool get_signal_quality_pct(int8_t &quality_pct) const override WARN_IF_UNUSED; + protected: /** * @brief Return the sensor type diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_Backend.h b/libraries/AP_RangeFinder/AP_RangeFinder_Backend.h index 27694752e9eac..5ae14f0d5b96d 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder_Backend.h +++ b/libraries/AP_RangeFinder/AP_RangeFinder_Backend.h @@ -74,7 +74,7 @@ class AP_RangeFinder_Backend // 0 is no return value, 100 is perfect. false means signal // quality is not available - virtual bool get_signal_quality_pct(uint8_t &quality_pct) const { return false; } + virtual bool get_signal_quality_pct(int8_t &quality_pct) const { return false; } // return the actual type of the rangefinder, as opposed to the // parameter value which may be changed at runtime. diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_LightWareSerial.h b/libraries/AP_RangeFinder/AP_RangeFinder_LightWareSerial.h index 17b5ef46eaede..cbdfe5d6a52f2 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder_LightWareSerial.h +++ b/libraries/AP_RangeFinder/AP_RangeFinder_LightWareSerial.h @@ -26,7 +26,7 @@ class AP_RangeFinder_LightWareSerial : public AP_RangeFinder_Backend_Serial return MAV_DISTANCE_SENSOR_LASER; } - bool get_signal_quality_pct(uint8_t &quality_pct) const override { + bool get_signal_quality_pct(int8_t &quality_pct) const override { quality_pct = no_signal ? 0 : 100; return true; } diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_MAVLink.cpp b/libraries/AP_RangeFinder/AP_RangeFinder_MAVLink.cpp index 5e52a9a2223bc..66ad7aebada8f 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder_MAVLink.cpp +++ b/libraries/AP_RangeFinder/AP_RangeFinder_MAVLink.cpp @@ -27,13 +27,21 @@ void AP_RangeFinder_MAVLink::handle_msg(const mavlink_message_t &msg) mavlink_distance_sensor_t packet; mavlink_msg_distance_sensor_decode(&msg, &packet); - // only accept distances for the configured orentation + // only accept distances for the configured orientation if (packet.orientation == orientation()) { state.last_reading_ms = AP_HAL::millis(); distance_cm = packet.current_distance; _max_distance_cm = packet.max_distance; _min_distance_cm = packet.min_distance; sensor_type = (MAV_DISTANCE_SENSOR)packet.type; + signal_quality = packet.signal_quality; + if (signal_quality == 0) { + // MAVLink's 0 means invalid/unset, so we map it to -1 + signal_quality = -1; + } else if (signal_quality == 1) { + // Map 1 to 0 as that is what ardupilot uses as the worst signal quality + signal_quality = 0; + } } } @@ -77,4 +85,13 @@ void AP_RangeFinder_MAVLink::update(void) } } +bool AP_RangeFinder_MAVLink::get_signal_quality_pct(int8_t &quality_pct) const +{ + if (status() != RangeFinder::Status::Good) { + return false; + } + quality_pct = signal_quality; + return true; +} + #endif diff --git a/libraries/AP_RangeFinder/AP_RangeFinder_MAVLink.h b/libraries/AP_RangeFinder/AP_RangeFinder_MAVLink.h index b38c6fcc49475..e2140260d1907 100644 --- a/libraries/AP_RangeFinder/AP_RangeFinder_MAVLink.h +++ b/libraries/AP_RangeFinder/AP_RangeFinder_MAVLink.h @@ -31,6 +31,10 @@ class AP_RangeFinder_MAVLink : public AP_RangeFinder_Backend int16_t max_distance_cm() const override; int16_t min_distance_cm() const override; + // Get the reading confidence + // 100 is best quality, 0 is worst + WARN_IF_UNUSED bool get_signal_quality_pct(int8_t &quality_pct) const override; + protected: MAV_DISTANCE_SENSOR _get_mav_distance_sensor_type() const override { @@ -43,6 +47,7 @@ class AP_RangeFinder_MAVLink : public AP_RangeFinder_Backend uint16_t distance_cm; uint16_t _max_distance_cm; uint16_t _min_distance_cm; + int8_t signal_quality; // start a reading static bool start_reading(void); diff --git a/libraries/AP_SBusOut/AP_SBusOut.cpp b/libraries/AP_SBusOut/AP_SBusOut.cpp index 35d9d2e044511..a49df6d018938 100644 --- a/libraries/AP_SBusOut/AP_SBusOut.cpp +++ b/libraries/AP_SBusOut/AP_SBusOut.cpp @@ -51,13 +51,9 @@ extern const AP_HAL::HAL& hal; #define SBUS_DEBUG 0 -// SBUS1 constant definitions -// pulse widths measured using FrSky Sbus/PWM converter -#define SBUS_BSIZE 25 +#define SBUS_BSIZE 25 #define SBUS_CHANNELS 16 -#define SBUS_MIN 880.0f -#define SBUS_MAX 2156.0f -#define SBUS_SCALE (2048.0f / (SBUS_MAX - SBUS_MIN)) +#define SBUS_MIN 875 const AP_Param::GroupInfo AP_SBusOut::var_info[] = { // @Param: RATE @@ -91,11 +87,12 @@ void AP_SBusOut::sbus_format_frame(uint16_t *channels, uint8_t num_channels, uin buffer[0] = 0x0f; /* construct sbus frame representing channels 1 through 16 (max) */ - uint8_t nchan = MIN(num_channels, SBUS_CHANNELS); + const uint8_t nchan = MIN(num_channels, SBUS_CHANNELS); for (unsigned i = 0; i < nchan; ++i) { /*protect from out of bounds values and limit to 11 bits*/ - uint16_t pwmval = MAX(channels[i], SBUS_MIN); - uint16_t value = (uint16_t)((pwmval - SBUS_MIN) * SBUS_SCALE); + const uint16_t pwmval = MAX(channels[i], SBUS_MIN); + const uint32_t v1 = uint32_t(pwmval - SBUS_MIN) * 1600U; + uint16_t value = uint16_t(v1 / 1000U) + 1; if (value > 0x07ff) { value = 0x07ff; } diff --git a/libraries/AP_Scripting/AP_Scripting.cpp b/libraries/AP_Scripting/AP_Scripting.cpp index 1e1bfc96f9f1b..a31ba85f86450 100644 --- a/libraries/AP_Scripting/AP_Scripting.cpp +++ b/libraries/AP_Scripting/AP_Scripting.cpp @@ -304,6 +304,7 @@ void AP_Scripting::thread(void) { void AP_Scripting::handle_mission_command(const AP_Mission::Mission_Command& cmd_in) { +#if AP_MISSION_ENABLED if (!_enable) { return; } @@ -328,6 +329,7 @@ void AP_Scripting::handle_mission_command(const AP_Mission::Mission_Command& cmd AP_HAL::millis()}; mission_data->push(cmd); +#endif } bool AP_Scripting::arming_checks(size_t buflen, char *buffer) const diff --git a/libraries/AP_Scripting/AP_Scripting.h b/libraries/AP_Scripting/AP_Scripting.h index 2895aafe64b97..bc057eb7335a7 100644 --- a/libraries/AP_Scripting/AP_Scripting.h +++ b/libraries/AP_Scripting/AP_Scripting.h @@ -84,12 +84,13 @@ class AP_Scripting uint8_t num_i2c_devices; AP_HAL::OwnPtr *_i2c_dev[SCRIPTING_MAX_NUM_I2C_DEVICE]; -#if HAL_MAX_CAN_PROTOCOL_DRIVERS +#if AP_SCRIPTING_CAN_SENSOR_ENABLED // Scripting CAN sensor ScriptingCANSensor *_CAN_dev; ScriptingCANSensor *_CAN_dev2; #endif +#if AP_MISSION_ENABLED // mission item buffer static const int mission_cmd_queue_size = 5; struct scripting_mission_cmd { @@ -100,6 +101,7 @@ class AP_Scripting uint32_t time_ms; }; ObjectBuffer * mission_data; +#endif // PWMSource storage uint8_t num_pwm_source; diff --git a/libraries/AP_Scripting/AP_Scripting_CANSensor.cpp b/libraries/AP_Scripting/AP_Scripting_CANSensor.cpp index c0d8cdc0e565e..d3b0ab2375653 100644 --- a/libraries/AP_Scripting/AP_Scripting_CANSensor.cpp +++ b/libraries/AP_Scripting/AP_Scripting_CANSensor.cpp @@ -17,7 +17,7 @@ */ #include "AP_Scripting_CANSensor.h" -#if HAL_MAX_CAN_PROTOCOL_DRIVERS +#if AP_SCRIPTING_CAN_SENSOR_ENABLED // handler for outgoing frames, using uint32 bool ScriptingCANSensor::write_frame(AP_HAL::CANFrame &out_frame, const uint32_t timeout_us) @@ -79,4 +79,4 @@ void ScriptingCANBuffer::add_buffer(ScriptingCANBuffer* new_buff) { next->add_buffer(new_buff); } -#endif // HAL_MAX_CAN_PROTOCOL_DRIVERS +#endif // AP_SCRIPTING_CAN_SENSOR_ENABLED diff --git a/libraries/AP_Scripting/AP_Scripting_CANSensor.h b/libraries/AP_Scripting/AP_Scripting_CANSensor.h index 7f7b5ecd3b013..b6f19d28d83e7 100644 --- a/libraries/AP_Scripting/AP_Scripting_CANSensor.h +++ b/libraries/AP_Scripting/AP_Scripting_CANSensor.h @@ -18,9 +18,19 @@ #pragma once +#include + +#if defined(HAL_BUILD_AP_PERIPH) + // Must have at least two CAN ports on Periph + #define AP_SCRIPTING_CAN_SENSOR_ENABLED (HAL_MAX_CAN_PROTOCOL_DRIVERS > 1) +#else + #define AP_SCRIPTING_CAN_SENSOR_ENABLED HAL_MAX_CAN_PROTOCOL_DRIVERS +#endif + +#if AP_SCRIPTING_CAN_SENSOR_ENABLED + #include -#if HAL_MAX_CAN_PROTOCOL_DRIVERS class ScriptingCANBuffer; class ScriptingCANSensor : public CANSensor { public: @@ -76,4 +86,4 @@ class ScriptingCANBuffer { }; -#endif // HAL_MAX_CAN_PROTOCOL_DRIVERS +#endif // AP_SCRIPTING_CAN_SENSOR_ENABLED diff --git a/libraries/AP_Scripting/AP_Scripting_config.h b/libraries/AP_Scripting/AP_Scripting_config.h index 6eb4a7b59d1a8..a58d83062b9d3 100644 --- a/libraries/AP_Scripting/AP_Scripting_config.h +++ b/libraries/AP_Scripting/AP_Scripting_config.h @@ -3,5 +3,12 @@ #include #ifndef AP_SCRIPTING_ENABLED -#define AP_SCRIPTING_ENABLED BOARD_FLASH_SIZE > 1024 +#define AP_SCRIPTING_ENABLED (BOARD_FLASH_SIZE > 1024) +#endif + +#if AP_SCRIPTING_ENABLED + #include + #if !AP_FILESYSTEM_FILE_READING_ENABLED + #error "Scripting requires a filesystem" + #endif #endif diff --git a/libraries/AP_Scripting/applets/revert_param.lua b/libraries/AP_Scripting/applets/revert_param.lua index 6124d8353b413..b6cedcd227feb 100644 --- a/libraries/AP_Scripting/applets/revert_param.lua +++ b/libraries/AP_Scripting/applets/revert_param.lua @@ -57,6 +57,8 @@ local PID_prefixes = { "_RAT_RLL_", "_RAT_PIT_", "_RAT_YAW_" } local PID_suffixes = { "FF", "P", "I", "D", "IMAX", "FLTD", "FLTE", "FLTT", "SMAX" } local angle_axes = { "RLL", "PIT", "YAW" } local PSC_types = { "ACCZ", "VELZ", "POSZ", "VELXY", "POSXY" } +local OTHER_PARAMS = { "INS_GYRO_FILTER", "INS_ACCEL_FILTER" } + if PREV_ENABLE:get() == 0 then return end @@ -103,6 +105,11 @@ for _, psc in ipairs(PSC_prefixes) do end end +-- add in other parameters +for _, p in ipairs(OTHER_PARAMS) do + add_param(p) +end + local function revert_parameters() local count = 0 diff --git a/libraries/AP_Scripting/examples/winch-test.lua b/libraries/AP_Scripting/applets/winch-control.lua similarity index 95% rename from libraries/AP_Scripting/examples/winch-test.lua rename to libraries/AP_Scripting/applets/winch-control.lua index 590a937efe60c..12496f8891f5d 100644 --- a/libraries/AP_Scripting/examples/winch-test.lua +++ b/libraries/AP_Scripting/applets/winch-control.lua @@ -1,4 +1,4 @@ --- mount-test.lua: allows the winch to be deployed or retracted at a fixed speed using an auxiliary switch +-- winch-control.lua: allows the winch to be deployed or retracted at a fixed speed using an auxiliary switch -- -- How To Use -- 1. set RCx_OPTION to 300 to enable controlling the winch rate from an auxiliary switch @@ -47,7 +47,7 @@ local WINCH_RATE_UP = bind_add_param('RATE_UP', 1, 0.5) // @Range: 0.1 5.0 // @User: Standard --]] -local WINCH_RATE_DN = bind_add_param('RATE_UP', 2, 2.0) +local WINCH_RATE_DN = bind_add_param('RATE_DN', 2, 2.0) --[[ // @Param: WINCH_RC_FUNC diff --git a/libraries/AP_Scripting/applets/winch-control.md b/libraries/AP_Scripting/applets/winch-control.md new file mode 100644 index 0000000000000..9238faf7f3e6d --- /dev/null +++ b/libraries/AP_Scripting/applets/winch-control.md @@ -0,0 +1,20 @@ +# Winch Control + +Allows the winch to be deployed or retracted at a fixed speed using an auxiliary switch + +# Parameters + +WINCH_RATE_UP : rate (in m/s) when retracting line +WINCH_RATE_DN : rate (in m/s) when deploying line +WINCH_RC_FUNC : RCn_OPTION number to use to control winch rate. Default is 300 (Scripting1) + +# How To Use + +1. set RCx_OPTION to 300 to enable controlling the winch rate from an auxiliary switch +2. set WINCH_RATE_UP to the fixed retract speed (in m/s) +3. set WINCH_RATE_DN to the fixed release speed (in m/s) +4. raise the RC auxiliary switch to retract the winch's line +5. lower the RC auxiliary switch to deploy the winch's line +6. center the RC auxiliary switch to stop the winch + +Alternatively Mission Planner's Aux Function screen can be used in place of an actual RC switch diff --git a/libraries/AP_Scripting/docs/docs.lua b/libraries/AP_Scripting/docs/docs.lua index c7ca5c51e446f..67e9812074b2f 100644 --- a/libraries/AP_Scripting/docs/docs.lua +++ b/libraries/AP_Scripting/docs/docs.lua @@ -45,6 +45,11 @@ function micros() end ---@return number|nil -- command param 4 function mission_receive() end +-- Print text, if MAVLink is available the value will be sent with debug severity +-- If no MAVLink the value will be sent over can +-- equivalent to gcs:send_text(7, text) or periph:can_printf(text) +---@param text string|number|integer +function print(text) end -- data flash logging to SD card ---@class logger @@ -1968,6 +1973,11 @@ function serialLED:set_num_profiled(chan, num_leds) end ---@return boolean function serialLED:set_num_neopixel(chan, num_leds) end +-- desc +---@param chan integer +---@param num_leds integer +---@return boolean +function serialLED:set_num_neopixel_rgb(chan, num_leds) end -- desc ---@class vehicle diff --git a/libraries/AP_Scripting/drivers/EFI_Halo6000.lua b/libraries/AP_Scripting/drivers/EFI_Halo6000.lua index dc6cd075b1f45..4bb457b6f8059 100644 --- a/libraries/AP_Scripting/drivers/EFI_Halo6000.lua +++ b/libraries/AP_Scripting/drivers/EFI_Halo6000.lua @@ -199,8 +199,11 @@ local function engine_control() efi_state:last_updated_ms(millis()) - -- Set the EFI_State into the EFI scripting driver - efi_backend:handle_scripting(efi_state) + -- Set the EFI_State into the EFI scripting driver + efi_backend:handle_scripting(efi_state) + + logger.write('H6K','Curr,Volt,CoolT,CylT,FuelPct', 'fffff', + out_current, out_volt, cool_temp, cyl_temp, fuel_pct) end -- update telemetry output for extra telemetry values diff --git a/libraries/AP_Scripting/drivers/Generator_SVFFI.lua b/libraries/AP_Scripting/drivers/Generator_SVFFI.lua new file mode 100644 index 0000000000000..a5267b4a099c6 --- /dev/null +++ b/libraries/AP_Scripting/drivers/Generator_SVFFI.lua @@ -0,0 +1,246 @@ +--[[ + SVFFI serial protocol for generator support + See http://www.svffi.com/en/ +--]] + +local PARAM_TABLE_KEY = 42 +local PARAM_TABLE_PREFIX = "EFI_SVF_" + +local MAV_SEVERITY = {EMERGENCY=0, ALERT=1, CRITICAL=2, ERROR=3, WARNING=4, NOTICE=5, INFO=6, DEBUG=7} + +-- bind a parameter to a variable given +local function bind_param(name) + local p = Parameter() + assert(p:init(name), string.format('could not find %s parameter', name)) + return p +end + +-- add a parameter and bind it to a variable +local function bind_add_param(name, idx, default_value) + assert(param:add_param(PARAM_TABLE_KEY, idx, name, default_value), string.format('could not add param %s', name)) + return bind_param(PARAM_TABLE_PREFIX .. name) +end + +-- setup script specific parameters +assert(param:add_table(PARAM_TABLE_KEY, PARAM_TABLE_PREFIX, 8), 'could not add param table') + +--[[ + // @Param: EFI_SVF_ENABLE + // @DisplayName: Generator SVFFI enable + // @Description: Enable SVFFI generator support + // @Values: 0:Disabled,1:Enabled + // @User: Standard +--]] +EFI_SVF_ENABLE = bind_add_param("ENABLE", 1, 0) + +--[[ + // @Param: EFI_SVF_ARMCHECK + // @DisplayName: Generator SVFFI arming check + // @Description: Check for Generator ARM state before arming + // @Values: 0:Disabled,1:Enabled + // @User: Standard +--]] +EFI_SVF_ARMCHECK = bind_add_param("ARMCHECK", 2, 1) + +if EFI_SVF_ENABLE:get() ~= 1 then + return +end + +local auth_id = arming:get_aux_auth_id() +arming:set_aux_auth_failed(auth_id, "GEN: not in ARM state") + + +local uart = serial:find_serial(0) -- first scripting serial +if not uart then + gcs:send_text(MAV_SEVERITY.ERROR, "GEN_SVF: unable to find serial port") + return +end +uart:begin(115200) + +local efi_backend = efi:get_backend(0) +if not efi_backend then + gcs:send_text(MAV_SEVERITY.ERROR, "GEN_SVF: unable to find EFI backend") + return +end + +local function read_bytes(n) + local ret = "" + for _ = 1, n do + ret = ret .. string.char(uart:read()) + end + return ret +end + +local auchCRCHi = { + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, + 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40 +} + +local auchCRCLo = { + 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, + 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, + 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, + 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, + 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, + 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, + 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, + 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, + 0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, + 0x2D, 0xED, 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, + 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, + 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, + 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, + 0x69, 0xA9, 0xA8, 0x68, 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, + 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, + 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, + 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, + 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, + 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, + 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, + 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, + 0x41, 0x81, 0x80, 0x40 +} + +--[[ + calculate crc16 +--]] +local function get_crc16(s) + local uchCRCHi = 0xFF + local uchCRCLo = 0xFF + for i = 1, #s do + local b = string.byte(string.sub(s, i, i)) + local uIndex = uchCRCLo ~ b + --gcs:send_text(MAV_SEVERITY.INFO, string.format("uIndex=%u", uIndex)) + uchCRCLo = uchCRCHi ~ auchCRCHi[uIndex+1] + uchCRCHi = auchCRCLo[uIndex+1] + end + return (uchCRCHi << 8 | uchCRCLo) +end + +local state = {} +state.last_read_us = uint32_t(0) +state.last_status = -1 + + +--[[ + check for input and parse data +--]] +local function check_input() + local n_bytes = uart:available():toint() + --gcs:send_text(MAV_SEVERITY.INFO, string.format("n_bytes=%u %.2f", n_bytes, millis():tofloat()*0.001)) + if n_bytes < 31 then + return + end + + local s = read_bytes(n_bytes) + local prefix, len = string.unpack(" 83 then + discard_pending() + return + end + + local tus = micros() + state.chk0 = 0 + state.chk1 = 0 + + -- look for basic data table 2 + header0, header1, source, target, dtype, num, id, ack = string.unpack("num_instances() singleton AP_BattMonitor method voltage float uint8_t 0 ud->num_instances() @@ -89,6 +93,7 @@ singleton AP_BattMonitor method reset_remaining boolean uint8_t 0 ud->num_instan include AP_GPS/AP_GPS.h +singleton AP_GPS depends (AP_GPS_ENABLED && (!defined(HAL_BUILD_AP_PERIPH) || defined(HAL_PERIPH_ENABLE_GPS))) singleton AP_GPS rename gps singleton AP_GPS enum NO_GPS NO_FIX GPS_OK_FIX_2D GPS_OK_FIX_3D GPS_OK_FIX_3D_DGPS GPS_OK_FIX_3D_RTK_FLOAT GPS_OK_FIX_3D_RTK_FIXED singleton AP_GPS method num_sensors uint8_t @@ -145,6 +150,7 @@ userdata Vector2f operator + userdata Vector2f operator - userdata Vector2f method copy Vector2f +userdata Quaternion depends AP_AHRS_ENABLED userdata Quaternion field q1 float'skip_check read write userdata Quaternion field q2 float'skip_check read write userdata Quaternion field q3 float'skip_check read write @@ -164,6 +170,7 @@ userdata Quaternion method from_angular_velocity void Vector3f float'skip_check include AP_Notify/AP_Notify.h singleton AP_Notify rename notify +singleton AP_Notify depends (!defined(HAL_BUILD_AP_PERIPH) || defined(HAL_PERIPH_ENABLE_NOTIFY)) singleton AP_Notify method play_tune void string singleton AP_Notify method handle_rgb void uint8_t'skip_check uint8_t'skip_check uint8_t'skip_check uint8_t'skip_check singleton AP_Notify method handle_rgb_id void uint8_t'skip_check uint8_t'skip_check uint8_t'skip_check uint8_t'skip_check @@ -190,12 +197,14 @@ singleton AP_Proximity method get_backend AP_Proximity_Backend uint8_t'skip_chec include AP_RangeFinder/AP_RangeFinder.h include AP_RangeFinder/AP_RangeFinder_Backend.h +ap_object AP_RangeFinder_Backend depends (!defined(HAL_BUILD_AP_PERIPH) || defined(HAL_PERIPH_ENABLE_RANGEFINDER)) ap_object AP_RangeFinder_Backend method distance float ap_object AP_RangeFinder_Backend method orientation Rotation'enum ap_object AP_RangeFinder_Backend method type uint8_t ap_object AP_RangeFinder_Backend method status uint8_t ap_object AP_RangeFinder_Backend method handle_script_msg boolean float'skip_check +singleton RangeFinder depends (!defined(HAL_BUILD_AP_PERIPH) || defined(HAL_PERIPH_ENABLE_RANGEFINDER)) singleton RangeFinder rename rangefinder singleton RangeFinder method num_sensors uint8_t singleton RangeFinder method has_orientation boolean Rotation'enum ROTATION_NONE ROTATION_MAX-1 @@ -254,6 +263,7 @@ singleton AP_ONVIF method get_pan_tilt_limit_min Vector2f singleton AP_ONVIF method get_pan_tilt_limit_max Vector2f include AP_Vehicle/AP_Vehicle.h +singleton AP_Vehicle depends (!defined(HAL_BUILD_AP_PERIPH)) singleton AP_Vehicle rename vehicle singleton AP_Vehicle scheduler-semaphore singleton AP_Vehicle method set_mode boolean uint8_t'skip_check ModeReason::SCRIPTING'literal @@ -298,16 +308,19 @@ include AP_SerialLED/AP_SerialLED.h singleton AP_SerialLED rename serialLED singleton AP_SerialLED depends AP_SERIALLED_ENABLED singleton AP_SerialLED method set_num_neopixel boolean uint8_t 1 16 uint8_t 0 AP_SERIALLED_MAX_LEDS +singleton AP_SerialLED method set_num_neopixel_rgb boolean uint8_t 1 16 uint8_t 0 AP_SERIALLED_MAX_LEDS singleton AP_SerialLED method set_num_profiled boolean uint8_t 1 16 uint8_t 0 AP_SERIALLED_MAX_LEDS singleton AP_SerialLED method set_RGB void uint8_t 1 16 int8_t -1 INT8_MAX uint8_t'skip_check uint8_t'skip_check uint8_t'skip_check singleton AP_SerialLED method send void uint8_t 1 16 include SRV_Channel/SRV_Channel.h +singleton SRV_Channels depends (!defined(HAL_BUILD_AP_PERIPH) || defined(HAL_PERIPH_ENABLE_RC_OUT)) singleton SRV_Channels rename SRV_Channels singleton SRV_Channels method find_channel boolean SRV_Channel::Aux_servo_function_t'enum SRV_Channel::k_none SRV_Channel::k_nr_aux_servo_functions-1 uint8_t'Null singleton SRV_Channels method set_output_pwm void SRV_Channel::Aux_servo_function_t'enum SRV_Channel::k_none SRV_Channel::k_nr_aux_servo_functions-1 uint16_t'skip_check singleton SRV_Channels method set_output_pwm_chan void uint8_t 0 NUM_SERVO_CHANNELS-1 uint16_t'skip_check singleton SRV_Channels method set_output_pwm_chan_timeout void uint8_t 0 NUM_SERVO_CHANNELS-1 uint16_t'skip_check uint16_t'skip_check +singleton SRV_Channels method set_output_pwm_chan_timeout depends (!defined(HAL_BUILD_AP_PERIPH)) singleton SRV_Channels method set_output_scaled void SRV_Channel::Aux_servo_function_t'enum SRV_Channel::k_none SRV_Channel::k_nr_aux_servo_functions-1 float'skip_check singleton SRV_Channels method get_output_pwm boolean SRV_Channel::Aux_servo_function_t'enum SRV_Channel::k_none SRV_Channel::k_nr_aux_servo_functions-1 uint16_t'Null singleton SRV_Channels method get_output_scaled float SRV_Channel::Aux_servo_function_t'enum SRV_Channel::k_none SRV_Channel::k_nr_aux_servo_functions-1 @@ -338,6 +351,7 @@ singleton RC_Channels method get_aux_cached boolean RC_Channel::AUX_FUNC'enum 0 include AP_SerialManager/AP_SerialManager.h +ap_object AP_HAL::UARTDriver depends HAL_GCS_ENABLED ap_object AP_HAL::UARTDriver method begin void uint32_t 1U UINT32_MAX ap_object AP_HAL::UARTDriver method read int16_t ap_object AP_HAL::UARTDriver method write uint32_t uint8_t'skip_check @@ -345,9 +359,11 @@ ap_object AP_HAL::UARTDriver method available uint32_t ap_object AP_HAL::UARTDriver method set_flow_control void AP_HAL::UARTDriver::flow_control'enum AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE AP_HAL::UARTDriver::FLOW_CONTROL_AUTO singleton AP_SerialManager rename serial +singleton AP_SerialManager depends HAL_GCS_ENABLED singleton AP_SerialManager method find_serial AP_HAL::UARTDriver AP_SerialManager::SerialProtocol_Scripting'literal uint8_t'skip_check include AP_Baro/AP_Baro.h +singleton AP_Baro depends (!defined(HAL_BUILD_AP_PERIPH) || defined(HAL_PERIPH_ENABLE_BARO)) singleton AP_Baro rename baro singleton AP_Baro method get_pressure float singleton AP_Baro method get_temperature float @@ -385,7 +401,9 @@ singleton AP_Param method set_and_save_by_name rename set_and_save singleton AP_Param method set_default_by_name boolean string float'skip_check singleton AP_Param method set_default_by_name rename set_default singleton AP_Param method add_table boolean uint8_t 0 200 string uint8_t 1 63 +singleton AP_Param method add_table depends AP_PARAM_DYNAMIC_ENABLED singleton AP_Param method add_param boolean uint8_t 0 200 uint8_t 1 63 string float'skip_check +singleton AP_Param method add_param depends AP_PARAM_DYNAMIC_ENABLED include AP_Scripting/AP_Scripting_helpers.h userdata Parameter creation lua_new_Parameter 1 @@ -402,6 +420,7 @@ singleton AP_Scripting rename scripting singleton AP_Scripting method restart_all void include AP_Mission/AP_Mission.h +singleton AP_Mission depends AP_MISSION_ENABLED singleton AP_Mission rename mission singleton AP_Mission scheduler-semaphore singleton AP_Mission enum MISSION_STOPPED MISSION_RUNNING MISSION_COMPLETE @@ -421,6 +440,7 @@ singleton AP_Mission method get_index_of_jump_tag uint16_t uint16_t 0 UINT16_MAX singleton AP_Mission method get_last_jump_tag boolean uint16_t'Null uint16_t'Null +userdata mavlink_mission_item_int_t depends AP_MISSION_ENABLED userdata mavlink_mission_item_int_t field param1 float'skip_check read write userdata mavlink_mission_item_int_t field param2 float'skip_check read write userdata mavlink_mission_item_int_t field param3 float'skip_check read write @@ -504,6 +524,7 @@ ap_object AP_HAL::I2CDevice manual read_registers AP_HAL__I2CDevice_read_registe ap_object AP_HAL::I2CDevice method set_address void uint8_t'skip_check +ap_object AP_HAL::AnalogSource depends !defined(HAL_DISABLE_ADC_DRIVER) ap_object AP_HAL::AnalogSource method set_pin boolean uint8_t'skip_check ap_object AP_HAL::AnalogSource method voltage_average float ap_object AP_HAL::AnalogSource method voltage_latest float @@ -522,6 +543,7 @@ singleton hal.gpio method write void uint8_t'skip_check uint8_t 0 1 singleton hal.gpio method toggle void uint8_t'skip_check singleton hal.gpio method pinMode void uint8_t'skip_check uint8_t 0 1 +singleton hal.analogin depends !defined(HAL_DISABLE_ADC_DRIVER) singleton hal.analogin rename analog singleton hal.analogin literal singleton hal.analogin method channel AP_HAL::AnalogSource ANALOG_INPUT_NONE'literal @@ -541,6 +563,7 @@ userdata AP_MotorsMatrix_Scripting_Dynamic::factor_table field yaw'array AP_MOTO userdata AP_MotorsMatrix_Scripting_Dynamic::factor_table field throttle'array AP_MOTORS_MAX_NUM_MOTORS float'skip_check read write include AP_InertialSensor/AP_InertialSensor.h +singleton AP_InertialSensor depends AP_INERTIALSENSOR_ENABLED singleton AP_InertialSensor rename ins singleton AP_InertialSensor method get_temperature float uint8_t 0 INS_MAX_INSTANCES singleton AP_InertialSensor method get_gyro_health boolean uint8_t'skip_check @@ -548,12 +571,12 @@ singleton AP_InertialSensor method get_accel_health boolean uint8_t'skip_check singleton CAN manual get_device lua_get_CAN_device 1 singleton CAN manual get_device2 lua_get_CAN_device2 1 -singleton CAN depends HAL_MAX_CAN_PROTOCOL_DRIVERS +singleton CAN depends AP_SCRIPTING_CAN_SENSOR_ENABLED -include AP_Scripting/AP_Scripting_CANSensor.h depends HAL_MAX_CAN_PROTOCOL_DRIVERS +include AP_Scripting/AP_Scripting_CANSensor.h include AP_HAL/AP_HAL.h -userdata AP_HAL::CANFrame depends HAL_MAX_CAN_PROTOCOL_DRIVERS +userdata AP_HAL::CANFrame depends AP_SCRIPTING_CAN_SENSOR_ENABLED userdata AP_HAL::CANFrame rename CANFrame userdata AP_HAL::CANFrame field id uint32_t'skip_check read write userdata AP_HAL::CANFrame field data'array int(ARRAY_SIZE(ud->data)) uint8_t'skip_check read write @@ -563,7 +586,7 @@ userdata AP_HAL::CANFrame method isExtended boolean userdata AP_HAL::CANFrame method isRemoteTransmissionRequest boolean userdata AP_HAL::CANFrame method isErrorFrame boolean -ap_object ScriptingCANBuffer depends HAL_MAX_CAN_PROTOCOL_DRIVERS +ap_object ScriptingCANBuffer depends AP_SCRIPTING_CAN_SENSOR_ENABLED ap_object ScriptingCANBuffer method write_frame boolean AP_HAL::CANFrame uint32_t'skip_check ap_object ScriptingCANBuffer method read_frame boolean AP_HAL::CANFrame'Null @@ -644,13 +667,13 @@ singleton AP_Mount method get_location_target boolean uint8_t'skip_check Locatio singleton AP_Mount method set_attitude_euler void uint8_t'skip_check float'skip_check float'skip_check float'skip_check include AP_Camera/AP_Camera.h -singleton AP_Camera depends AP_CAMERA_SCRIPTING_ENABLED == 1 +singleton AP_Camera depends AP_CAMERA_ENABLED && (AP_CAMERA_SCRIPTING_ENABLED == 1) singleton AP_Camera rename camera singleton AP_Camera semaphore singleton AP_Camera method take_picture void uint8_t'skip_check singleton AP_Camera method record_video boolean uint8_t'skip_check boolean singleton AP_Camera method set_trigger_distance void uint8_t'skip_check float'skip_check -userdata AP_Camera::camera_state_t depends (AP_CAMERA_SCRIPTING_ENABLED == 1) +userdata AP_Camera::camera_state_t depends AP_CAMERA_ENABLED && (AP_CAMERA_SCRIPTING_ENABLED == 1) userdata AP_Camera::camera_state_t field take_pic_incr uint16_t'skip_check read userdata AP_Camera::camera_state_t field recording_video boolean read userdata AP_Camera::camera_state_t field zoom_type uint8_t'skip_check read @@ -678,6 +701,7 @@ singleton AP_IOMCU method healthy boolean include AP_Compass/AP_Compass.h singleton Compass rename compass +singleton Compass depends (!defined(HAL_BUILD_AP_PERIPH) || defined(HAL_PERIPH_ENABLE_MAG)) singleton Compass method healthy boolean uint8_t'skip_check -- ----EFI Library---- @@ -730,12 +754,13 @@ singleton AP_Logger depends HAL_LOGGING_ENABLED singleton AP_Logger rename logger singleton AP_Logger manual write AP_Logger_Write 7 singleton AP_Logger method log_file_content void string +singleton AP_Logger method log_file_content depends HAL_LOGGER_FILE_CONTENTS_ENABLED singleton i2c manual get_device lua_get_i2c_device 4 global manual millis lua_millis 0 global manual micros lua_micros 0 -global manual mission_receive lua_mission_receive 0 +global manual mission_receive lua_mission_receive 0 depends AP_MISSION_ENABLED userdata uint32_t creation lua_new_uint32_t 1 userdata uint32_t manual_operator __add uint32_t___add @@ -759,6 +784,7 @@ userdata uint32_t manual tofloat uint32_t_tofloat 0 global manual dirlist lua_dirlist 1 global manual remove lua_removefile 1 +global manual print lua_print 1 singleton mavlink depends HAL_GCS_ENABLED singleton mavlink manual init lua_mavlink_init 2 diff --git a/libraries/AP_Scripting/generator/src/main.c b/libraries/AP_Scripting/generator/src/main.c index 9959af32398bd..b414f45546c10 100644 --- a/libraries/AP_Scripting/generator/src/main.c +++ b/libraries/AP_Scripting/generator/src/main.c @@ -368,6 +368,7 @@ struct method_alias { int line; int num_args; enum alias_type type; + char *dependency; }; struct userdata_field { @@ -887,6 +888,20 @@ void handle_manual(struct userdata *node, enum alias_type type) { } alias->num_args = atoi(num_args); } + + char *depends_keyword = next_token(); + if (depends_keyword != NULL) { + if (strcmp(depends_keyword, keyword_depends) != 0) { + error(ERROR_SINGLETON, "Expected depends keyword for manual method %s %s, got: %s", node->name, name, depends_keyword); + } else { + char *dependency = strtok(NULL, ""); + if (dependency == NULL) { + error(ERROR_USERDATA, "Expected dependency string for global %s on line", name, state.line_num); + } + string_copy(&(alias->dependency), dependency); + } + } + alias->next = node->method_aliases; node->method_aliases = alias; } @@ -2132,6 +2147,8 @@ void emit_operators(struct userdata *data) { assert(data->ud_type == UD_USERDATA); + start_dependency(source, data->dependency); + for (uint32_t i = 1; i < OP_LAST; i = (i << 1)) { const char * op_name = get_name_for_operation((data->operations) & i); if (op_name == NULL) { @@ -2171,6 +2188,8 @@ void emit_operators(struct userdata *data) { fprintf(source, "}\n\n"); } + + end_dependency(source, data->dependency); } void emit_methods(struct userdata *node) { @@ -2410,7 +2429,9 @@ void emit_sandbox(void) { if (manual_aliases->type != ALIAS_TYPE_MANUAL) { error(ERROR_GLOBALS, "Globals only support manual methods"); } + start_dependency(source, manual_aliases->dependency); fprintf(source, " {\"%s\", %s},\n", manual_aliases->alias, manual_aliases->name); + end_dependency(source, manual_aliases->dependency); manual_aliases = manual_aliases->next; } } @@ -2772,6 +2793,11 @@ void emit_index_helpers(void) { fprintf(source, " return false;\n"); fprintf(source, "}\n\n"); + // If enough stuff is defined out we can end up with no enums. + // Rather than work out which defines we would need, just ignore the unused function error. + fprintf(source, "#pragma GCC diagnostic push\n"); + fprintf(source, "#pragma GCC diagnostic ignored \"-Wunused-function\"\n"); + fprintf(source, "static bool load_enum(lua_State *L, const userdata_enum *list, const uint8_t length, const char* name) {\n"); fprintf(source, " for (uint8_t i = 0; i < length; i++) {\n"); fprintf(source, " if (strcmp(name,list[i].name) == 0) {\n"); @@ -2780,7 +2806,10 @@ void emit_index_helpers(void) { fprintf(source, " }\n"); fprintf(source, " }\n"); fprintf(source, " return false;\n"); - fprintf(source, "}\n\n"); + fprintf(source, "}\n"); + + fprintf(source, "#pragma GCC diagnostic pop\n\n"); + } void emit_structs(void) { diff --git a/libraries/AP_Scripting/lua_bindings.cpp b/libraries/AP_Scripting/lua_bindings.cpp index d734e9f13cadf..1ff491ed74078 100644 --- a/libraries/AP_Scripting/lua_bindings.cpp +++ b/libraries/AP_Scripting/lua_bindings.cpp @@ -215,6 +215,7 @@ int lua_mavlink_block_command(lua_State *L) { } #endif // HAL_GCS_ENABLED +#if AP_MISSION_ENABLED int lua_mission_receive(lua_State *L) { binding_argcheck(L, 0); @@ -242,6 +243,7 @@ int lua_mission_receive(lua_State *L) { return 5; } +#endif // AP_MISSION_ENABLED #if HAL_LOGGING_ENABLED int AP_Logger_Write(lua_State *L) { @@ -630,7 +632,7 @@ int AP_HAL__I2CDevice_read_registers(lua_State *L) { return success; } -#if HAL_MAX_CAN_PROTOCOL_DRIVERS +#if AP_SCRIPTING_CAN_SENSOR_ENABLED int lua_get_CAN_device(lua_State *L) { // Allow : and . access @@ -680,7 +682,7 @@ int lua_get_CAN_device2(lua_State *L) { return 1; } -#endif // HAL_MAX_CAN_PROTOCOL_DRIVERS +#endif // AP_SCRIPTING_CAN_SENSOR_ENABLED /* directory listing, return table of files in a directory @@ -759,4 +761,14 @@ int lua_get_current_ref() return scripting->get_current_ref(); } +// Simple print to GCS or over CAN +int lua_print(lua_State *L) { + // Only support a single argument + binding_argcheck(L, 1); + + GCS_SEND_TEXT(MAV_SEVERITY_DEBUG, "%s", luaL_checkstring(L, 1)); + + return 0; +} + #endif // AP_SCRIPTING_ENABLED diff --git a/libraries/AP_Scripting/lua_bindings.h b/libraries/AP_Scripting/lua_bindings.h index 07b5403ec32d5..8eef08bca35ac 100644 --- a/libraries/AP_Scripting/lua_bindings.h +++ b/libraries/AP_Scripting/lua_bindings.h @@ -19,3 +19,4 @@ int lua_mavlink_receive_chan(lua_State *L); int lua_mavlink_register_rx_msgid(lua_State *L); int lua_mavlink_send_chan(lua_State *L); int lua_mavlink_block_command(lua_State *L); +int lua_print(lua_State *L); diff --git a/libraries/AP_Scripting/lua_scripts.cpp b/libraries/AP_Scripting/lua_scripts.cpp index 02ab51d2c2c5e..e4a7568e4c658 100644 --- a/libraries/AP_Scripting/lua_scripts.cpp +++ b/libraries/AP_Scripting/lua_scripts.cpp @@ -132,6 +132,7 @@ void lua_scripts::update_stats(const char *name, uint32_t run_time, int total_me (int)total_mem, (int)run_mem); } +#if HAL_LOGGING_ENABLED if ((_debug_options.get() & uint8_t(DebugLevel::LOG_RUNTIME)) != 0) { struct log_Scripting pkt { LOG_PACKET_HEADER_INIT(LOG_SCRIPTING_MSG), @@ -149,6 +150,7 @@ void lua_scripts::update_stats(const char *name, uint32_t run_time, int total_me } AP::logger().WriteBlock(&pkt, sizeof(pkt)); } +#endif // HAL_LOGGING_ENABLED } lua_scripts::script_info *lua_scripts::load_script(lua_State *L, char *filename) { diff --git a/libraries/AP_SerialLED/AP_SerialLED.cpp b/libraries/AP_SerialLED/AP_SerialLED.cpp index ca1d837796e12..fafccd2af2fbe 100644 --- a/libraries/AP_SerialLED/AP_SerialLED.cpp +++ b/libraries/AP_SerialLED/AP_SerialLED.cpp @@ -36,6 +36,15 @@ bool AP_SerialLED::set_num_neopixel(uint8_t chan, uint8_t num_leds) return false; } +// set number of NeoPixels per pin in RGB mode +bool AP_SerialLED::set_num_neopixel_rgb(uint8_t chan, uint8_t num_leds) +{ + if (chan >= 1 && chan <= 16 && num_leds <= AP_SERIALLED_MAX_LEDS) { + return hal.rcout->set_serial_led_num_LEDs(chan-1, num_leds, AP_HAL::RCOutput::MODE_NEOPIXELRGB); + } + return false; +} + // set number of ProfiLEDs per pin bool AP_SerialLED::set_num_profiled(uint8_t chan, uint8_t num_leds) { diff --git a/libraries/AP_SerialLED/AP_SerialLED.h b/libraries/AP_SerialLED/AP_SerialLED.h index 8f83c887abf6a..4ec45ab8d5809 100644 --- a/libraries/AP_SerialLED/AP_SerialLED.h +++ b/libraries/AP_SerialLED/AP_SerialLED.h @@ -18,6 +18,7 @@ #pragma once #include +#include #include "AP_SerialLED_config.h" @@ -34,13 +35,15 @@ class AP_SerialLED { // set number of LEDs per pin bool set_num_neopixel(uint8_t chan, uint8_t num_leds); bool set_num_profiled(uint8_t chan, uint8_t num_leds); + // set number of LEDs per pin in RGB mode + bool set_num_neopixel_rgb(uint8_t chan, uint8_t num_leds); // set RGB value on mask of LEDs. chan is PWM output, 1..16 void set_RGB_mask(uint8_t chan, uint32_t ledmask, uint8_t red, uint8_t green, uint8_t blue); // set RGB value on LED. LED -1 is all LEDs. LED 0 is first LED. chan is PWM output, 1..16 void set_RGB(uint8_t chan, int8_t led, uint8_t red, uint8_t green, uint8_t blue); - + // trigger sending of LED changes to LEDs void send(uint8_t chan); diff --git a/libraries/AP_ServoRelayEvents/AP_ServoRelayEvents.cpp b/libraries/AP_ServoRelayEvents/AP_ServoRelayEvents.cpp index 849d7376bb873..a840a8bd649df 100644 --- a/libraries/AP_ServoRelayEvents/AP_ServoRelayEvents.cpp +++ b/libraries/AP_ServoRelayEvents/AP_ServoRelayEvents.cpp @@ -44,6 +44,14 @@ bool AP_ServoRelayEvents::do_set_servo(uint8_t _channel, uint16_t pwm) case SRV_Channel::k_gripper: case SRV_Channel::k_rcin1 ... SRV_Channel::k_rcin16: // rc pass-thru break; + case SRV_Channel::k_rcin1_mapped ... SRV_Channel::k_rcin16_mapped: { + // mapped channels are set up with a -/+ 4500 angle range by + // SRV_Channel::aux_servo_function_setup + int16_t angle_scaled = constrain_uint16(pwm, 1000, 2000); + angle_scaled = (angle_scaled - 1500) * 9; // 1000 ... 2000 -> -500 ... 500 -> -4500 ... 4500 + pwm = c->pwm_from_scaled_value(angle_scaled); + break; + } default: GCS_SEND_TEXT(MAV_SEVERITY_INFO, "ServoRelayEvent: Channel %d is already in use", _channel); return false; @@ -101,6 +109,14 @@ bool AP_ServoRelayEvents::do_repeat_servo(uint8_t _channel, uint16_t _servo_valu case SRV_Channel::k_gripper: case SRV_Channel::k_rcin1 ... SRV_Channel::k_rcin16: // rc pass-thru break; + case SRV_Channel::k_rcin1_mapped ... SRV_Channel::k_rcin16_mapped: { + // mapped channels are set up with a -/+ 4500 angle range by + // SRV_Channel::aux_servo_function_setup + int16_t angle_scaled = constrain_uint16(_servo_value, 1000, 2000); + angle_scaled = (angle_scaled - 1500) * 9; // 1000 ... 2000 -> -500 ... 500 -> -4500 ... 4500 + _servo_value = c->pwm_from_scaled_value(angle_scaled); + break; + } default: GCS_SEND_TEXT(MAV_SEVERITY_INFO, "ServoRelayEvent: Channel %d is already in use", _channel); return false; diff --git a/libraries/AP_Stats/AP_Stats.cpp b/libraries/AP_Stats/AP_Stats.cpp index 9c82a0e32e84e..13992983a487d 100644 --- a/libraries/AP_Stats/AP_Stats.cpp +++ b/libraries/AP_Stats/AP_Stats.cpp @@ -108,6 +108,7 @@ void AP_Stats::update() params.flttime.set_and_save_ifchanged(0); params.runtime.set_and_save_ifchanged(0); uint32_t system_clock = 0; // in seconds +#if AP_RTC_ENABLED uint64_t rtc_clock_us; if (AP::rtc().get_utc_usec(rtc_clock_us)) { system_clock = rtc_clock_us / 1000000; @@ -115,6 +116,7 @@ void AP_Stats::update() // time base to Jan 1st 2016: system_clock -= 1451606400; } +#endif params.reset.set_and_save_ifchanged(system_clock); copy_variables_from_parameters(); } diff --git a/libraries/AP_TECS/AP_TECS.cpp b/libraries/AP_TECS/AP_TECS.cpp index d8e60c9eb9357..5787c019063e6 100644 --- a/libraries/AP_TECS/AP_TECS.cpp +++ b/libraries/AP_TECS/AP_TECS.cpp @@ -831,6 +831,9 @@ float AP_TECS::_get_i_gain(void) */ void AP_TECS::_update_throttle_without_airspeed(int16_t throttle_nudge) { + // reset clip status after possible use of synthetic airspeed + _thr_clip_status = clipStatus::NONE; + // Calculate throttle demand by interpolating between pitch and throttle limits float nomThr; //If landing and we don't have an airspeed sensor and we have a non-zero @@ -1088,6 +1091,7 @@ void AP_TECS::_initialise_states(int32_t ptchMinCO_cd, float hgt_afe) _lag_comp_hgt_offset = 0.0f; _post_TO_hgt_offset = 0.0f; _takeoff_start_ms = 0; + _use_synthetic_airspeed_once = false; _flags.underspeed = false; _flags.badDescent = false; diff --git a/libraries/AP_TemperatureSensor/AP_TemperatureSensor.cpp b/libraries/AP_TemperatureSensor/AP_TemperatureSensor.cpp index 3bcdb614bd29a..68ac7027abe3c 100644 --- a/libraries/AP_TemperatureSensor/AP_TemperatureSensor.cpp +++ b/libraries/AP_TemperatureSensor/AP_TemperatureSensor.cpp @@ -28,6 +28,7 @@ #include "AP_TemperatureSensor_TSYS03.h" #include "AP_TemperatureSensor_MCP9600.h" #include "AP_TemperatureSensor_MAX31865.h" +#include "AP_TemperatureSensor_Analog.h" #include #include @@ -51,53 +52,95 @@ const AP_Param::GroupInfo AP_TemperatureSensor::var_info[] = { // @Path: AP_TemperatureSensor_Params.cpp AP_SUBGROUPINFO(_params[0], "1_", 10, AP_TemperatureSensor, AP_TemperatureSensor_Params), + // @Group: 1_ + // @Path: AP_TemperatureSensor_Analog.cpp + AP_SUBGROUPVARPTR(drivers[0], "1_", 19, AP_TemperatureSensor, backend_var_info[0]), + #if AP_TEMPERATURE_SENSOR_MAX_INSTANCES >= 2 // @Group: 2_ // @Path: AP_TemperatureSensor_Params.cpp AP_SUBGROUPINFO(_params[1], "2_", 11, AP_TemperatureSensor, AP_TemperatureSensor_Params), + + // @Group: 2_ + // @Path: AP_TemperatureSensor_Analog.cpp + AP_SUBGROUPVARPTR(drivers[1], "2_", 20, AP_TemperatureSensor, backend_var_info[1]), #endif #if AP_TEMPERATURE_SENSOR_MAX_INSTANCES >= 3 // @Group: 3_ // @Path: AP_TemperatureSensor_Params.cpp AP_SUBGROUPINFO(_params[2], "3_", 12, AP_TemperatureSensor, AP_TemperatureSensor_Params), + + // @Group: 3_ + // @Path: AP_TemperatureSensor_Analog.cpp + AP_SUBGROUPVARPTR(drivers[2], "3_", 21, AP_TemperatureSensor, backend_var_info[2]), #endif #if AP_TEMPERATURE_SENSOR_MAX_INSTANCES >= 4 // @Group: 4_ // @Path: AP_TemperatureSensor_Params.cpp AP_SUBGROUPINFO(_params[3], "4_", 13, AP_TemperatureSensor, AP_TemperatureSensor_Params), + + // @Group: 4_ + // @Path: AP_TemperatureSensor_Analog.cpp + AP_SUBGROUPVARPTR(drivers[3], "4_", 22, AP_TemperatureSensor, backend_var_info[3]), #endif #if AP_TEMPERATURE_SENSOR_MAX_INSTANCES >= 5 // @Group: 5_ // @Path: AP_TemperatureSensor_Params.cpp AP_SUBGROUPINFO(_params[4], "5_", 14, AP_TemperatureSensor, AP_TemperatureSensor_Params), + + // @Group: 5_ + // @Path: AP_TemperatureSensor_Analog.cpp + AP_SUBGROUPVARPTR(drivers[4], "5_", 23, AP_TemperatureSensor, backend_var_info[4]), #endif + #if AP_TEMPERATURE_SENSOR_MAX_INSTANCES >= 6 // @Group: 6_ // @Path: AP_TemperatureSensor_Params.cpp AP_SUBGROUPINFO(_params[5], "6_", 15, AP_TemperatureSensor, AP_TemperatureSensor_Params), + + // @Group: 6_ + // @Path: AP_TemperatureSensor_Analog.cpp + AP_SUBGROUPVARPTR(drivers[5], "6_", 24, AP_TemperatureSensor, backend_var_info[5]), #endif + #if AP_TEMPERATURE_SENSOR_MAX_INSTANCES >= 7 // @Group: 7_ // @Path: AP_TemperatureSensor_Params.cpp AP_SUBGROUPINFO(_params[6], "7_", 16, AP_TemperatureSensor, AP_TemperatureSensor_Params), + + // @Group: 7_ + // @Path: AP_TemperatureSensor_Analog.cpp + AP_SUBGROUPVARPTR(drivers[6], "7_", 25, AP_TemperatureSensor, backend_var_info[6]), #endif + #if AP_TEMPERATURE_SENSOR_MAX_INSTANCES >= 8 // @Group: 8_ // @Path: AP_TemperatureSensor_Params.cpp AP_SUBGROUPINFO(_params[7], "8_", 17, AP_TemperatureSensor, AP_TemperatureSensor_Params), + + // @Group: 8_ + // @Path: AP_TemperatureSensor_Analog.cpp + AP_SUBGROUPVARPTR(drivers[7], "8_", 26, AP_TemperatureSensor, backend_var_info[7]), #endif + #if AP_TEMPERATURE_SENSOR_MAX_INSTANCES >= 9 // @Group: 9_ // @Path: AP_TemperatureSensor_Params.cpp AP_SUBGROUPINFO(_params[8], "9_", 18, AP_TemperatureSensor, AP_TemperatureSensor_Params), + + // @Group: 9_ + // @Path: AP_TemperatureSensor_Analog.cpp + AP_SUBGROUPVARPTR(drivers[8], "9_", 26, AP_TemperatureSensor, backend_var_info[8]), #endif AP_GROUPEND }; +const AP_Param::GroupInfo *AP_TemperatureSensor::backend_var_info[AP_TEMPERATURE_SENSOR_MAX_INSTANCES]; + // Default Constructor AP_TemperatureSensor::AP_TemperatureSensor() { @@ -147,6 +190,11 @@ void AP_TemperatureSensor::init() case AP_TemperatureSensor_Params::Type::TSYS03: drivers[instance] = new AP_TemperatureSensor_TSYS03(*this, _state[instance], _params[instance]); break; +#endif +#if AP_TEMPERATURE_SENSOR_ANALOG_ENABLED + case AP_TemperatureSensor_Params::Type::ANALOG: + drivers[instance] = new AP_TemperatureSensor_Analog(*this, _state[instance], _params[instance]); + break; #endif case AP_TemperatureSensor_Params::Type::NONE: default: @@ -155,6 +203,12 @@ void AP_TemperatureSensor::init() // call init function for each backend if (drivers[instance] != nullptr) { + if (_state[instance].var_info != nullptr) { + // Load backend specific params + backend_var_info[instance] = _state[instance].var_info; + AP_Param::load_object_from_eeprom(drivers[instance], backend_var_info[instance]); + } + drivers[instance]->init(); // _num_instances is actually the index for looping over instances // the user may have TEMP_TYPE=0 and TEMP2_TYPE=7, in which case diff --git a/libraries/AP_TemperatureSensor/AP_TemperatureSensor.h b/libraries/AP_TemperatureSensor/AP_TemperatureSensor.h index ca0abed8b62bf..1a4bffa656ccb 100644 --- a/libraries/AP_TemperatureSensor/AP_TemperatureSensor.h +++ b/libraries/AP_TemperatureSensor/AP_TemperatureSensor.h @@ -26,6 +26,7 @@ class AP_TemperatureSensor_TSYS01; class AP_TemperatureSensor_MCP9600; class AP_TemperatureSensor_MAX31865; class AP_TemperatureSensor_TSYS03; +class AP_TemperatureSensor_Analog; class AP_TemperatureSensor { @@ -34,6 +35,7 @@ class AP_TemperatureSensor friend class AP_TemperatureSensor_MCP9600; friend class AP_TemperatureSensor_MAX31865; friend class AP_TemperatureSensor_TSYS03; + friend class AP_TemperatureSensor_Analog; public: @@ -63,6 +65,7 @@ class AP_TemperatureSensor int32_t get_source_id(const uint8_t instance = AP_TEMPERATURE_SENSOR_PRIMARY_INSTANCE) const; static const struct AP_Param::GroupInfo var_info[]; + static const struct AP_Param::GroupInfo *backend_var_info[AP_TEMPERATURE_SENSOR_MAX_INSTANCES]; protected: // parameters @@ -76,6 +79,7 @@ class AP_TemperatureSensor uint32_t last_time_ms; // time when the sensor was last read in milliseconds float temperature; // temperature (deg C) uint8_t instance; // instance number + const struct AP_Param::GroupInfo *var_info; }; TemperatureSensor_State _state[AP_TEMPERATURE_SENSOR_MAX_INSTANCES]; diff --git a/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Analog.cpp b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Analog.cpp new file mode 100644 index 0000000000000..e2871ca14615e --- /dev/null +++ b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Analog.cpp @@ -0,0 +1,97 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#include "AP_TemperatureSensor_config.h" + +#if AP_TEMPERATURE_SENSOR_ANALOG_ENABLED + +#include "AP_TemperatureSensor_Analog.h" + + +extern const AP_HAL::HAL &hal; + +const AP_Param::GroupInfo AP_TemperatureSensor_Analog::var_info[] = { + + // @Param: PIN + // @DisplayName: Temperature sensor analog voltage sensing pin + // @Description: Sets the analog input pin that should be used for temprature monitoring. + // @Values: -1:Disabled, 2:Pixhawk/Pixracer/Navio2/Pixhawk2_PM1, 5:Navigator, 13:Pixhawk2_PM2/CubeOrange_PM2, 14:CubeOrange, 16:Durandal, 100:PX4-v1 + // @User: Standard + AP_GROUPINFO("PIN", 1, AP_TemperatureSensor_Analog, _pin, -1), + + // @Param: A0 + // @DisplayName: Temperature sensor analog 0th polynomial coefficient + // @Description: a0 in polynomial of form temperature in deg = a0 + a1*voltage + a2*voltage^2 + a3*voltage^3 + a4*voltage^4 + AP_GROUPINFO("A0", 2, AP_TemperatureSensor_Analog, _a[0], 0), + + // @Param: A1 + // @DisplayName: Temperature sensor analog 1st polynomial coefficient + // @Description: a1 in polynomial of form temperature in deg = a0 + a1*voltage + a2*voltage^2 + a3*voltage^3 + a4*voltage^4 + AP_GROUPINFO("A1", 3, AP_TemperatureSensor_Analog, _a[1], 0), + + // @Param: A2 + // @DisplayName: Temperature sensor analog 2nd polynomial coefficient + // @Description: a2 in polynomial of form temperature in deg = a0 + a1*voltage + a2*voltage^2 + a3*voltage^3 + a4*voltage^4 + AP_GROUPINFO("A2", 4, AP_TemperatureSensor_Analog, _a[2], 0), + + // @Param: A3 + // @DisplayName: Temperature sensor analog 3rd polynomial coefficient + // @Description: a3 in polynomial of form temperature in deg = a0 + a1*voltage + a2*voltage^2 + a3*voltage^3 + a4*voltage^4 + AP_GROUPINFO("A3", 5, AP_TemperatureSensor_Analog, _a[3], 0), + + // @Param: A4 + // @DisplayName: Temperature sensor analog 4th polynomial coefficient + // @Description: a4 in polynomial of form temperature in deg = a0 + a1*voltage + a2*voltage^2 + a3*voltage^3 + a4*voltage^4 + AP_GROUPINFO("A4", 6, AP_TemperatureSensor_Analog, _a[4], 0), + + AP_GROUPEND +}; + +AP_TemperatureSensor_Analog::AP_TemperatureSensor_Analog(AP_TemperatureSensor &front, + AP_TemperatureSensor::TemperatureSensor_State &state, + AP_TemperatureSensor_Params ¶ms) : + AP_TemperatureSensor_Backend(front, state, params) +{ + AP_Param::setup_object_defaults(this, var_info); + _state.var_info = var_info; + _analog_source = hal.analogin->channel(_pin); +} + +// Update function called at 5Hz +void AP_TemperatureSensor_Analog::update() +{ + if ((_analog_source == nullptr) || !_analog_source->set_pin(_pin)) { + // Invalid pln + return; + } + + // Use ratiometric voltage, measured voltage is relative to supply + const float voltage = _analog_source->voltage_average_ratiometric(); + + // Evaluate polynomial + // temperature (deg) = a0 + a1*voltage + a2*voltage^2 + a3*voltage^3 + a4*voltage^4 + float temp = 0.0; + float poly = 1.0; + for (uint8_t i = 0; i < ARRAY_SIZE(_a); i++) { + temp += _a[i] * poly; + poly *= voltage; + } + + // update state + set_temperature(temp); +} + +#endif // AP_TEMPERATURE_SENSOR_ANALOG_ENABLED + diff --git a/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Analog.h b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Analog.h new file mode 100644 index 0000000000000..a342c165332e9 --- /dev/null +++ b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Analog.h @@ -0,0 +1,45 @@ +/* + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + +#pragma once + +#include "AP_TemperatureSensor_config.h" + +#if AP_TEMPERATURE_SENSOR_ANALOG_ENABLED + +#include "AP_TemperatureSensor_Backend.h" +#include + +class AP_TemperatureSensor_Analog : public AP_TemperatureSensor_Backend { +public: + AP_TemperatureSensor_Analog(AP_TemperatureSensor &front, AP_TemperatureSensor::TemperatureSensor_State &state, AP_TemperatureSensor_Params ¶ms); + + void update(void) override; + + static const struct AP_Param::GroupInfo var_info[]; + +private: + + AP_HAL::AnalogSource *_analog_source; + + // Pin used to measure voltage + AP_Int8 _pin; + + // Polynomial coefficients to calculate temperature from voltage + AP_Float _a[5]; + +}; + +#endif // AP_TEMPERATURE_SENSOR_ANALOG_ENABLED diff --git a/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Params.cpp b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Params.cpp index 10f83389358f2..361eaf9c13f1e 100644 --- a/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Params.cpp +++ b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Params.cpp @@ -34,7 +34,7 @@ const AP_Param::GroupInfo AP_TemperatureSensor_Params::var_info[] = { // @Param: TYPE // @DisplayName: Temperature Sensor Type // @Description: Enables temperature sensors - // @Values: 0:Disabled, 1:TSYS01, 2:MCP9600, 3:MAX31865, 4:TSYS03 + // @Values: 0:Disabled, 1:TSYS01, 2:MCP9600, 3:MAX31865, 4:TSYS03, 5:Analog // @User: Standard // @RebootRequired: True AP_GROUPINFO_FLAGS("TYPE", 1, AP_TemperatureSensor_Params, type, (float)Type::NONE, AP_PARAM_FLAG_ENABLE), diff --git a/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Params.h b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Params.h index 1cda825d64e1b..46d41e8c659ad 100644 --- a/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Params.h +++ b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_Params.h @@ -32,6 +32,7 @@ class AP_TemperatureSensor_Params { MCP9600 = 2, MAX31865 = 3, TSYS03 = 4, + ANALOG = 5, }; // option to map to another system component diff --git a/libraries/AP_TemperatureSensor/AP_TemperatureSensor_config.h b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_config.h index 8e5bd97b1776a..b34ac029c3867 100644 --- a/libraries/AP_TemperatureSensor/AP_TemperatureSensor_config.h +++ b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_config.h @@ -20,6 +20,9 @@ #define AP_TEMPERATURE_SENSOR_MAX31865_ENABLED AP_TEMPERATURE_SENSOR_ENABLED #endif +#ifndef AP_TEMPERATURE_SENSOR_ANALOG_ENABLED + #define AP_TEMPERATURE_SENSOR_ANALOG_ENABLED AP_TEMPERATURE_SENSOR_ENABLED +#endif // maximum number of Temperature Sensors diff --git a/libraries/AP_Winch/AP_Winch.cpp b/libraries/AP_Winch/AP_Winch.cpp index 9cfc4f1e84e5b..5a5a7bc9b9074 100644 --- a/libraries/AP_Winch/AP_Winch.cpp +++ b/libraries/AP_Winch/AP_Winch.cpp @@ -36,9 +36,9 @@ const AP_Param::GroupInfo AP_Winch::var_info[] = { // @Param: _OPTIONS // @DisplayName: Winch options // @Description: Winch options - // @Bitmask: 0:Spin freely on startup, 1:Verbose output + // @Bitmask: 0:Spin freely on startup, 1:Verbose output, 2:Retry if stuck (Daiwa only) // @User: Standard - AP_GROUPINFO("_OPTIONS", 4, AP_Winch, config.options, 3.0f), + AP_GROUPINFO("_OPTIONS", 4, AP_Winch, config.options, 7.0f), // 4 was _RATE_PID diff --git a/libraries/AP_Winch/AP_Winch.h b/libraries/AP_Winch/AP_Winch.h index 34d2db1a4395a..df1ecf9c896c8 100644 --- a/libraries/AP_Winch/AP_Winch.h +++ b/libraries/AP_Winch/AP_Winch.h @@ -84,8 +84,9 @@ class AP_Winch { // enum for OPTIONS parameter enum class Options : int16_t { - SpinFreelyOnStartup = (1U << 0), - VerboseOutput = (1U << 1), + SpinFreelyOnStartup = (1U << 0), // winch allows line to be manually pulled out soon after startup + VerboseOutput = (1U << 1), // verbose output of winch state sent to GCS + RetryIfStuck = (1U << 2), // retries to raise or lower if winch stops }; // winch states diff --git a/libraries/AP_Winch/AP_Winch_Daiwa.cpp b/libraries/AP_Winch/AP_Winch_Daiwa.cpp index 97e5f99e9a21b..21da2625214b4 100644 --- a/libraries/AP_Winch/AP_Winch_Daiwa.cpp +++ b/libraries/AP_Winch/AP_Winch_Daiwa.cpp @@ -6,6 +6,11 @@ #include #include +#define AP_WINCH_DAIWA_STUCK_TIMEOUT_MS 1000 // winch is considered stuck if unmoving for this many milliseconds +#define AP_WINCH_DAIWA_STUCK_CENTER_MS 1000 // stuck protection outputs zero rate for this many milliseconds +#define AP_WINCH_DAIWA_STUCK_LENGTH_MIN 0.1 // stuck protection active when line length is more than this many meters +#define AP_WINCH_DAIWA_STUCK_RATE_MIN 0.2 // stuck protection active when desired rate is at least this value (+ve or -ve) + extern const AP_HAL::HAL& hal; const char* AP_Winch_Daiwa::send_text_prefix = "Winch:"; @@ -217,7 +222,10 @@ void AP_Winch_Daiwa::control_winch() } // apply acceleration limited to rate - const float rate_limited = get_rate_limited_by_accel(config.rate_desired, dt); + float rate_limited = get_rate_limited_by_accel(config.rate_desired, dt); + + // apply stuck protection to rate + rate_limited = get_stuck_protected_rate(now_ms, rate_limited); // use linear interpolation to calculate output to move winch at desired rate float scaled_output = 0; @@ -227,6 +235,78 @@ void AP_Winch_Daiwa::control_winch() SRV_Channels::set_output_scaled(SRV_Channel::k_winch, scaled_output); } +// returns the rate which may be modified to unstick the winch +// if the winch stops, the rate is temporarily set to zero +// now_ms should be set to the current system time +// rate should be the rate used to calculate the final PWM output to the winch +float AP_Winch_Daiwa::get_stuck_protected_rate(uint32_t now_ms, float rate) +{ + // exit immediately if stuck protection disabled + if (!option_enabled(AP_Winch::Options::RetryIfStuck)) { + return rate; + } + + // check for timeout + bool timeout = (now_ms - stuck_protection.last_update_ms) > 1000; + stuck_protection.last_update_ms = now_ms; + + // check if winch is nearly fully pulled in + const bool near_thread_start = (latest.line_length < AP_WINCH_DAIWA_STUCK_LENGTH_MIN) && is_negative(rate); + + // check if rate is near zero (winch may not move with very low desired rates) + const bool rate_near_zero = fabsf(rate) < AP_WINCH_DAIWA_STUCK_RATE_MIN; + + // return rate unchanged if this protection has not been called recently or winch is unhealthy + // or if winch is moving, desired rate is near zero or winch has stopped at thread start or thread end + if (timeout || !healthy() || latest.moving || rate_near_zero || near_thread_start || latest.thread_end) { + // notify user when winch becomes unstuck + if (option_enabled(AP_Winch::Options::VerboseOutput) && (stuck_protection.stuck_start_ms != 0) && (stuck_protection.user_notified)) { + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s unstuck", send_text_prefix); + } + // reset stuck protection state + stuck_protection.stuck_start_ms = 0; + return rate; + } + + // winch is healthy, with non-zero requested rate but not moving + // record when winch became stuck + if (stuck_protection.stuck_start_ms == 0) { + stuck_protection.stuck_start_ms = now_ms; + stuck_protection.user_notified = false; + } + + // if stuck for between 1 to 2 seconds return zero rate + const uint32_t stuck_time_ms = (now_ms - stuck_protection.stuck_start_ms); + if (stuck_time_ms > AP_WINCH_DAIWA_STUCK_TIMEOUT_MS) { + // notify user + if (!stuck_protection.user_notified) { + stuck_protection.user_notified = true; + if (option_enabled(AP_Winch::Options::VerboseOutput)) { + GCS_SEND_TEXT(MAV_SEVERITY_WARNING, "%s stuck", send_text_prefix); + } + } + + // return zero rate for 1 second + if (stuck_time_ms <= (AP_WINCH_DAIWA_STUCK_TIMEOUT_MS+AP_WINCH_DAIWA_STUCK_CENTER_MS)) { + return 0; + } + + // rate has been set to zero for 1 sec so release and restart stuck detection + stuck_protection.stuck_start_ms = 0; + + // rate used for acceleration limiting also reset to zero + set_previous_rate(0.0f); + + // update user + if (option_enabled(AP_Winch::Options::VerboseOutput)) { + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s retrying", send_text_prefix); + } + } + + // give winch more time to start moving + return rate; +} + // update user with changes to winch state via send text messages void AP_Winch_Daiwa::update_user() { @@ -246,7 +326,7 @@ void AP_Winch_Daiwa::update_user() const bool now_healthy = healthy(); if (user_update.healthy != now_healthy) { user_update.healthy = now_healthy; - GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s %s", send_text_prefix, now_healthy ? "healthy" : "not healthy"); + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s %shealthy", send_text_prefix, now_healthy ? "" : "not "); update_sent = true; } diff --git a/libraries/AP_Winch/AP_Winch_Daiwa.h b/libraries/AP_Winch/AP_Winch_Daiwa.h index 2abf08682d129..301a73d9e9b07 100644 --- a/libraries/AP_Winch/AP_Winch_Daiwa.h +++ b/libraries/AP_Winch/AP_Winch_Daiwa.h @@ -63,6 +63,12 @@ class AP_Winch_Daiwa : public AP_Winch_Backend { // update pwm outputs to control winch void control_winch(); + // returns the rate which may be modified to unstick the winch + // if the winch stops, the rate is temporarily set to zero + // now_ms should be set to the current system time + // rate should be the rate used to calculate the final PWM output to the winch + float get_stuck_protected_rate(uint32_t now_ms, float rate); + static const uint8_t buff_len_max = 20; // buffer maximum length static const int16_t output_dz = 100; // output deadzone in scale of -1000 to +1000 const float line_length_correction_factor = 0.003333f; // convert winch counter to meters @@ -118,6 +124,13 @@ class AP_Winch_Daiwa : public AP_Winch_Backend { uint8_t moving; // 0:stopped, 1:retracting line, 2:extending line, 3:clutch engaged, 4:zero reset uint8_t clutch; // 0:clutch off, 1:clutch engaged weakly, 2:clutch engaged strongly, motor can spin freely } user_update; + + // stuck protection + struct { + uint32_t last_update_ms; // system time that stuck protection was last called + uint32_t stuck_start_ms; // system time that winch became stuck (0 if not stuck) + bool user_notified; // true if user has been notified that winch is stuck + } stuck_protection; }; #endif // AP_WINCH_DAIWA_ENABLED diff --git a/libraries/Filter/HarmonicNotchFilter.cpp b/libraries/Filter/HarmonicNotchFilter.cpp index 3047cafd45135..82ae789ba5d97 100644 --- a/libraries/Filter/HarmonicNotchFilter.cpp +++ b/libraries/Filter/HarmonicNotchFilter.cpp @@ -22,7 +22,6 @@ #include #define HNF_MAX_FILTERS HAL_HNF_MAX_FILTERS // must be even for double-notch filters -#define HNF_MAX_HARMONICS 8 // table of user settable parameters const AP_Param::GroupInfo HarmonicNotchFilterParams::var_info[] = { @@ -61,7 +60,22 @@ const AP_Param::GroupInfo HarmonicNotchFilterParams::var_info[] = { // @Param: HMNCS // @DisplayName: Harmonic Notch Filter harmonics // @Description: Bitmask of harmonic frequencies to apply Harmonic Notch Filter to. This option takes effect on the next reboot. A value of 0 disables this filter. The first harmonic refers to the base frequency. - // @Bitmask: 0:1st harmonic,1:2nd harmonic,2:3rd harmonic,3:4th hamronic,4:5th harmonic,5:6th harmonic,6:7th harmonic,7:8th harmonic + // @Bitmask: 0: 1st harmonic + // @Bitmask: 1: 2nd harmonic + // @Bitmask: 2: 3rd harmonic + // @Bitmask: 3: 4th harmonic + // @Bitmask: 4: 5th harmonic + // @Bitmask: 5: 6th harmonic + // @Bitmask: 6: 7th harmonic + // @Bitmask: 7: 8th harmonic + // @Bitmask: 8: 9th harmonic + // @Bitmask: 9: 10th harmonic + // @Bitmask: 10: 11th harmonic + // @Bitmask: 11: 12th harmonic + // @Bitmask: 12: 13th harmonic + // @Bitmask: 13: 14th harmonic + // @Bitmask: 14: 15th harmonic + // @Bitmask: 15: 16th harmonic // @User: Advanced // @RebootRequired: True AP_GROUPINFO("HMNCS", 5, HarmonicNotchFilterParams, _harmonics, 3), @@ -143,7 +157,7 @@ void HarmonicNotchFilter::init(float sample_freq_hz, float center_freq_hz, fl allocate a collection of, at most HNF_MAX_FILTERS, notch filters to be managed by this harmonic notch filter */ template -void HarmonicNotchFilter::allocate_filters(uint8_t num_notches, uint8_t harmonics, uint8_t composite_notches) +void HarmonicNotchFilter::allocate_filters(uint8_t num_notches, uint32_t harmonics, uint8_t composite_notches) { _composite_notches = MIN(composite_notches, 3); _num_harmonics = __builtin_popcount(harmonics); @@ -327,6 +341,11 @@ HarmonicNotchFilterParams::HarmonicNotchFilterParams(void) AP_Param::setup_object_defaults(this, var_info); } +void HarmonicNotchFilterParams::init() +{ + _harmonics.convert_parameter_width(AP_PARAM_INT8); +} + /* save changed parameters */ diff --git a/libraries/Filter/HarmonicNotchFilter.h b/libraries/Filter/HarmonicNotchFilter.h index 064365f0b2771..7de4df799df4e 100644 --- a/libraries/Filter/HarmonicNotchFilter.h +++ b/libraries/Filter/HarmonicNotchFilter.h @@ -19,7 +19,7 @@ #include #include "NotchFilter.h" -#define HNF_MAX_HARMONICS 8 +#define HNF_MAX_HARMONICS 16 /* a filter that manages a set of notch filters targetted at a fundamental center frequency @@ -30,7 +30,7 @@ class HarmonicNotchFilter { public: ~HarmonicNotchFilter(); // allocate a bank of notch filters for this harmonic notch filter - void allocate_filters(uint8_t num_notches, uint8_t harmonics, uint8_t composite_notches); + void allocate_filters(uint8_t num_notches, uint32_t harmonics, uint8_t composite_notches); // expand filter bank with new filters void expand_filter_count(uint8_t num_notches); // initialize the underlying filters using the provided filter parameters @@ -56,7 +56,7 @@ class HarmonicNotchFilter { // quality factor of each filter float _Q; // a bitmask of the harmonics to use - uint8_t _harmonics; + uint32_t _harmonics; // number of notches that make up a composite notch uint8_t _composite_notches; // number of allocated filters @@ -95,16 +95,19 @@ class HarmonicNotchFilterParams : public NotchFilterParams { }; HarmonicNotchFilterParams(void); + + void init(); + // set the fundamental center frequency of the harmonic notch void set_center_freq_hz(float center_freq) { _center_freq_hz.set(center_freq); } // set the bandwidth of the harmonic notch void set_bandwidth_hz(float bandwidth_hz) { _bandwidth_hz.set(bandwidth_hz); } // harmonics enabled on the harmonic notch - uint8_t harmonics(void) const { return _harmonics; } + uint32_t harmonics(void) const { return _harmonics; } // set the harmonics value - void set_harmonics(uint8_t hmncs) { _harmonics.set(hmncs); } + void set_harmonics(uint32_t hmncs) { _harmonics.set(hmncs); } // has the user set the harmonics value - void set_default_harmonics(uint8_t hmncs) { _harmonics.set_default(hmncs); } + void set_default_harmonics(uint32_t hmncs) { _harmonics.set_default(hmncs); } // reference value of the harmonic notch float reference(void) const { return _reference; } void set_reference(float ref) { _reference.set(ref); } @@ -125,7 +128,7 @@ class HarmonicNotchFilterParams : public NotchFilterParams { private: // configured notch harmonics - AP_Int8 _harmonics; + AP_Int32 _harmonics; // notch reference value AP_Float _reference; // notch dynamic tracking mode diff --git a/libraries/Filter/LowPassFilter2p.cpp b/libraries/Filter/LowPassFilter2p.cpp index 8154ab002d00e..7749387700502 100644 --- a/libraries/Filter/LowPassFilter2p.cpp +++ b/libraries/Filter/LowPassFilter2p.cpp @@ -17,13 +17,12 @@ DigitalBiquadFilter::DigitalBiquadFilter() { template T DigitalBiquadFilter::apply(const T &sample, const struct biquad_params ¶ms) { - if(is_zero(params.cutoff_freq) || is_zero(params.sample_freq)) { + if(!is_positive(params.cutoff_freq) || !is_positive(params.sample_freq)) { return sample; } if (!initialised) { reset(sample, params); - initialised = true; } T delay_element_0 = sample - _delay_element_1 * params.a1 - _delay_element_2 * params.a2; @@ -37,7 +36,6 @@ T DigitalBiquadFilter::apply(const T &sample, const struct biquad_params &par template void DigitalBiquadFilter::reset() { - _delay_element_1 = _delay_element_2 = T(); initialised = false; } @@ -49,14 +47,15 @@ void DigitalBiquadFilter::reset(const T &value, const struct biquad_params &p template void DigitalBiquadFilter::compute_params(float sample_freq, float cutoff_freq, biquad_params &ret) { - ret.cutoff_freq = cutoff_freq; + // Keep well under Nyquist limit + ret.cutoff_freq = MIN(cutoff_freq, sample_freq * 0.4); ret.sample_freq = sample_freq; if (!is_positive(ret.cutoff_freq)) { // zero cutoff means pass-thru return; } - float fr = sample_freq/cutoff_freq; + float fr = ret.sample_freq / ret.cutoff_freq; float ohm = tanf(M_PI/fr); float c = 1.0f+2.0f*cosf(M_PI/4.0f)*ohm + ohm*ohm; @@ -103,10 +102,6 @@ float LowPassFilter2p::get_sample_freq(void) const { template T LowPassFilter2p::apply(const T &sample) { - if (!is_positive(_params.cutoff_freq)) { - // zero cutoff means pass-thru - return sample; - } return _filter.apply(sample, _params); } diff --git a/libraries/Filter/NotchFilter.cpp b/libraries/Filter/NotchFilter.cpp index db9e2e234b7f6..ea2a77d80faab 100644 --- a/libraries/Filter/NotchFilter.cpp +++ b/libraries/Filter/NotchFilter.cpp @@ -77,9 +77,18 @@ void NotchFilter::init_with_A_and_Q(float sample_freq_hz, float center_freq_h b0 = 1.0 + alpha*sq(A); b1 = -2.0 * cosf(omega); b2 = 1.0 - alpha*sq(A); - a0_inv = 1.0/(1.0 + alpha); a1 = b1; a2 = 1.0 - alpha; + + const float a0_inv = 1.0/(1.0 + alpha); + + // Pre-multiply to save runtime calc + b0 *= a0_inv; + b1 *= a0_inv; + b2 *= a0_inv; + a1 *= a0_inv; + a2 *= a0_inv; + _center_freq_hz = new_center_freq; _sample_freq_hz = sample_freq_hz; initialised = true; @@ -100,16 +109,17 @@ T NotchFilter::apply(const T &sample) // sample as output and update delayed samples signal1 = sample; signal2 = sample; - ntchsig = sample; ntchsig1 = sample; ntchsig2 = sample; need_reset = false; return sample; } + + T output = sample*b0 + ntchsig1*b1 + ntchsig2*b2 - signal1*a1 - signal2*a2; + ntchsig2 = ntchsig1; - ntchsig1 = ntchsig; - ntchsig = sample; - T output = (ntchsig*b0 + ntchsig1*b1 + ntchsig2*b2 - signal1*a1 - signal2*a2) * a0_inv; + ntchsig1 = sample; + signal2 = signal1; signal1 = output; return output; diff --git a/libraries/Filter/NotchFilter.h b/libraries/Filter/NotchFilter.h index 39ed64d4f2fae..dd6f319f784ff 100644 --- a/libraries/Filter/NotchFilter.h +++ b/libraries/Filter/NotchFilter.h @@ -41,9 +41,9 @@ class NotchFilter { protected: bool initialised, need_reset; - float b0, b1, b2, a1, a2, a0_inv; + float b0, b1, b2, a1, a2; float _center_freq_hz, _sample_freq_hz; - T ntchsig, ntchsig1, ntchsig2, signal2, signal1; + T ntchsig1, ntchsig2, signal2, signal1; }; /* diff --git a/libraries/Filter/examples/TransferFunctionCheck/TransferFunctionCheck.cpp b/libraries/Filter/examples/TransferFunctionCheck/TransferFunctionCheck.cpp index d1518719f0f02..320f0b44562a4 100644 --- a/libraries/Filter/examples/TransferFunctionCheck/TransferFunctionCheck.cpp +++ b/libraries/Filter/examples/TransferFunctionCheck/TransferFunctionCheck.cpp @@ -61,7 +61,7 @@ class NotchHelper : public NotchFilterFloat { hal.console->printf("NotchFilterFloat\n"); hal.console->printf("Sample rate: %.9f Hz, Center: %.9f Hz\n", _sample_freq_hz, _center_freq_hz); hal.console->printf("Notch filter in the form: H(z) = (b0 + b1*z^-1 + b2*z^-2)/(a0 + a1*z^-1 + a2*z^-2)\n"); - hal.console->printf("a0: %.9f, a1: %.9f, a2: %.9f, b0: %.9f, b1: %.9f, b2: %.9f\n", 1.0/a0_inv, a1, a2, b0, b1, b2); + hal.console->printf("a0: %.9f, a1: %.9f, a2: %.9f, b0: %.9f, b1: %.9f, b2: %.9f\n", 1.0, a1, a2, b0, b1, b2); } }; diff --git a/libraries/GCS_MAVLink/GCS.h b/libraries/GCS_MAVLink/GCS.h index fd61ca440615d..a2b2d3ba4c6f4 100644 --- a/libraries/GCS_MAVLink/GCS.h +++ b/libraries/GCS_MAVLink/GCS.h @@ -522,10 +522,12 @@ class GCS_MAVLINK virtual bool set_home(const Location& loc, bool lock) = 0; virtual MAV_RESULT handle_command_component_arm_disarm(const mavlink_command_int_t &packet); - MAV_RESULT handle_command_do_aux_function(const mavlink_command_long_t &packet); + MAV_RESULT handle_command_do_aux_function(const mavlink_command_int_t &packet); MAV_RESULT handle_command_storage_format(const mavlink_command_int_t &packet, const mavlink_message_t &msg); void handle_mission_request_list(const mavlink_message_t &msg); +#if AP_MAVLINK_MSG_MISSION_REQUEST_ENABLED void handle_mission_request(const mavlink_message_t &msg); +#endif void handle_mission_request_int(const mavlink_message_t &msg); void handle_mission_clear_all(const mavlink_message_t &msg); @@ -580,14 +582,14 @@ class GCS_MAVLINK void deadlock_sem(void); // reset a message interval via mavlink: - MAV_RESULT handle_command_set_message_interval(const mavlink_command_long_t &packet); - MAV_RESULT handle_command_get_message_interval(const mavlink_command_long_t &packet); + MAV_RESULT handle_command_set_message_interval(const mavlink_command_int_t &packet); + MAV_RESULT handle_command_get_message_interval(const mavlink_command_int_t &packet); bool get_ap_message_interval(ap_message id, uint16_t &interval_ms) const; - MAV_RESULT handle_command_request_message(const mavlink_command_long_t &packet); + MAV_RESULT handle_command_request_message(const mavlink_command_int_t &packet); MAV_RESULT handle_rc_bind(const mavlink_command_long_t &packet); - virtual MAV_RESULT handle_flight_termination(const mavlink_command_long_t &packet); + virtual MAV_RESULT handle_flight_termination(const mavlink_command_int_t &packet); #if AP_MAVLINK_AUTOPILOT_VERSION_REQUEST_ENABLED void handle_send_autopilot_version(const mavlink_message_t &msg); @@ -638,7 +640,7 @@ class GCS_MAVLINK MAV_RESULT handle_command_battery_reset(const mavlink_command_long_t &packet); void handle_command_long(const mavlink_message_t &msg); - MAV_RESULT handle_command_accelcal_vehicle_pos(const mavlink_command_long_t &packet); + MAV_RESULT handle_command_accelcal_vehicle_pos(const mavlink_command_int_t &packet); #if HAL_MOUNT_ENABLED virtual MAV_RESULT handle_command_mount(const mavlink_command_int_t &packet, const mavlink_message_t &msg); @@ -650,16 +652,15 @@ class GCS_MAVLINK MAV_RESULT try_command_long_as_command_int(const mavlink_command_long_t &packet, const mavlink_message_t &msg); virtual MAV_RESULT handle_command_long_packet(const mavlink_command_long_t &packet, const mavlink_message_t &msg); MAV_RESULT handle_command_camera(const mavlink_command_long_t &packet); - MAV_RESULT handle_command_do_send_banner(const mavlink_command_long_t &packet); MAV_RESULT handle_command_do_set_roi(const mavlink_command_int_t &packet); virtual MAV_RESULT handle_command_do_set_roi(const Location &roi_loc); MAV_RESULT handle_command_do_gripper(const mavlink_command_long_t &packet); MAV_RESULT handle_command_do_sprayer(const mavlink_command_long_t &packet); - MAV_RESULT handle_command_do_set_mode(const mavlink_command_long_t &packet); - MAV_RESULT handle_command_get_home_position(const mavlink_command_long_t &packet); + MAV_RESULT handle_command_do_set_mode(const mavlink_command_int_t &packet); + MAV_RESULT handle_command_get_home_position(const mavlink_command_int_t &packet); MAV_RESULT handle_command_do_fence_enable(const mavlink_command_long_t &packet); - MAV_RESULT handle_command_debug_trap(const mavlink_command_long_t &packet); - MAV_RESULT handle_command_set_ekf_source_set(const mavlink_command_long_t &packet); + MAV_RESULT handle_command_debug_trap(const mavlink_command_int_t &packet); + MAV_RESULT handle_command_set_ekf_source_set(const mavlink_command_int_t &packet); MAV_RESULT handle_command_airframe_configuration(const mavlink_command_int_t &packet); /* diff --git a/libraries/GCS_MAVLink/GCS_Common.cpp b/libraries/GCS_MAVLink/GCS_Common.cpp index 78ba42fb6c421..b328cb1293611 100644 --- a/libraries/GCS_MAVLink/GCS_Common.cpp +++ b/libraries/GCS_MAVLink/GCS_Common.cpp @@ -394,7 +394,7 @@ void GCS_MAVLINK::send_distance_sensor(const AP_RangeFinder_Backend *sensor, con return; } - uint8_t quality_pct = 0; + int8_t quality_pct; uint8_t quality; if (sensor->get_signal_quality_pct(quality_pct)) { // mavlink defines this field as 0 is unknown, 1 is invalid, 100 is perfect @@ -608,6 +608,7 @@ void GCS_MAVLINK::handle_mission_request_int(const mavlink_message_t &msg) prot->handle_mission_request_int(*this, packet, msg); } +#if AP_MAVLINK_MSG_MISSION_REQUEST_ENABLED void GCS_MAVLINK::handle_mission_request(const mavlink_message_t &msg) { // decode @@ -620,6 +621,7 @@ void GCS_MAVLINK::handle_mission_request(const mavlink_message_t &msg) } prot->handle_mission_request(*this, packet, msg); } +#endif // returns a MISSION_STATE numeration value best describing out // current mission state. @@ -1777,7 +1779,7 @@ GCS_MAVLINK::update_receive(uint32_t max_time_us) bool parsed_packet = false; // Try to get a new message - if (mavlink_parse_char(chan, c, &msg, &status)) { + if (mavlink_frame_char_buffer(channel_buffer(), channel_status(), c, &msg, &status) == MAVLINK_FRAMING_OK) { hal.util->persistent_data.last_mavlink_msgid = msg.msgid; packetReceived(status, msg); parsed_packet = true; @@ -1931,7 +1933,9 @@ void GCS_MAVLINK::log_mavlink_stats() void GCS_MAVLINK::send_system_time() const { uint64_t time_unix = 0; +#if AP_RTC_ENABLED AP::rtc().get_utc_usec(time_unix); // may fail, leaving time_unix at 0 +#endif mavlink_msg_system_time_send( chan, @@ -2756,6 +2760,7 @@ void GCS_MAVLINK::send_named_float(const char *name, float value) const mavlink_msg_named_value_float_send(chan, AP_HAL::millis(), float_name, value); } +#if AP_AHRS_ENABLED void GCS_MAVLINK::send_home_position() const { if (!AP::ahrs().home_is_set()) { @@ -2801,6 +2806,7 @@ void GCS_MAVLINK::send_gps_global_origin() const ekf_origin.alt * 10, AP_HAL::micros64()); } +#endif // AP_AHRS_ENABLED MAV_STATE GCS_MAVLINK::system_status() const { @@ -2832,7 +2838,7 @@ void GCS_MAVLINK::send_heartbeat() const system_status()); } -MAV_RESULT GCS_MAVLINK::handle_command_do_aux_function(const mavlink_command_long_t &packet) +MAV_RESULT GCS_MAVLINK::handle_command_do_aux_function(const mavlink_command_int_t &packet) { if (packet.param2 > 2) { return MAV_RESULT_DENIED; @@ -2847,7 +2853,7 @@ MAV_RESULT GCS_MAVLINK::handle_command_do_aux_function(const mavlink_command_lon return MAV_RESULT_ACCEPTED; } -MAV_RESULT GCS_MAVLINK::handle_command_set_message_interval(const mavlink_command_long_t &packet) +MAV_RESULT GCS_MAVLINK::handle_command_set_message_interval(const mavlink_command_int_t &packet) { return set_message_interval((uint32_t)packet.param1, (int32_t)packet.param2); } @@ -2917,7 +2923,7 @@ uint8_t GCS::get_channel_from_port_number(uint8_t port_num) return UINT8_MAX; } -MAV_RESULT GCS_MAVLINK::handle_command_request_message(const mavlink_command_long_t &packet) +MAV_RESULT GCS_MAVLINK::handle_command_request_message(const mavlink_command_int_t &packet) { const uint32_t mavlink_id = (uint32_t)packet.param1; const ap_message id = mavlink_id_to_ap_message_id(mavlink_id); @@ -2949,7 +2955,7 @@ bool GCS_MAVLINK::get_ap_message_interval(ap_message id, uint16_t &interval_ms) return false; } -MAV_RESULT GCS_MAVLINK::handle_command_get_message_interval(const mavlink_command_long_t &packet) +MAV_RESULT GCS_MAVLINK::handle_command_get_message_interval(const mavlink_command_int_t &packet) { if (txspace() < PAYLOAD_SIZE(chan, MESSAGE_INTERVAL) + PAYLOAD_SIZE(chan, COMMAND_ACK)) { return MAV_RESULT_TEMPORARILY_REJECTED; @@ -3260,7 +3266,7 @@ void GCS_MAVLINK::deadlock_sem(void) /* handle a flight termination request */ -MAV_RESULT GCS_MAVLINK::handle_flight_termination(const mavlink_command_long_t &packet) +MAV_RESULT GCS_MAVLINK::handle_flight_termination(const mavlink_command_int_t &packet) { #if AP_ADVANCEDFAILSAFE_ENABLED AP_AdvancedFailsafe *failsafe = AP::advancedfailsafe(); @@ -3433,6 +3439,7 @@ void GCS_MAVLINK::handle_named_value(const mavlink_message_t &msg) const msg.compid); } +#if AP_RTC_ENABLED void GCS_MAVLINK::handle_system_time_message(const mavlink_message_t &msg) { mavlink_system_time_t packet; @@ -3440,6 +3447,7 @@ void GCS_MAVLINK::handle_system_time_message(const mavlink_message_t &msg) AP::rtc().set_utc_usec(packet.time_unix_usec, AP_RTC::SOURCE_MAVLINK_SYSTEM_TIME); } +#endif #if AP_CAMERA_ENABLED MAV_RESULT GCS_MAVLINK::handle_command_camera(const mavlink_command_long_t &packet) @@ -4062,9 +4070,11 @@ void GCS_MAVLINK::handle_common_message(const mavlink_message_t &msg) break; #endif // HAL_VISUALODOM_ENABLED +#if AP_RTC_ENABLED case MAVLINK_MSG_ID_SYSTEM_TIME: handle_system_time_message(msg); break; +#endif case MAVLINK_MSG_ID_RC_CHANNELS_OVERRIDE: handle_rc_channels_override(msg); @@ -4171,9 +4181,12 @@ void GCS_MAVLINK::handle_common_mission_message(const mavlink_message_t &msg) case MAVLINK_MSG_ID_MISSION_REQUEST_INT: handle_mission_request_int(msg); break; + +#if AP_MAVLINK_MSG_MISSION_REQUEST_ENABLED case MAVLINK_MSG_ID_MISSION_REQUEST: handle_mission_request(msg); break; +#endif #if AP_MAVLINK_MISSION_SET_CURRENT_ENABLED case MAVLINK_MSG_ID_MISSION_SET_CURRENT: // MAV ID: 41 @@ -4495,14 +4508,7 @@ MAV_RESULT GCS_MAVLINK::handle_command_request_autopilot_capabilities(const mavl } #endif - -MAV_RESULT GCS_MAVLINK::handle_command_do_send_banner(const mavlink_command_long_t &packet) -{ - send_banner(); - return MAV_RESULT_ACCEPTED; -} - -MAV_RESULT GCS_MAVLINK::handle_command_do_set_mode(const mavlink_command_long_t &packet) +MAV_RESULT GCS_MAVLINK::handle_command_do_set_mode(const mavlink_command_int_t &packet) { const MAV_MODE _base_mode = (MAV_MODE)packet.param1; const uint32_t _custom_mode = (uint32_t)packet.param2; @@ -4510,7 +4516,8 @@ MAV_RESULT GCS_MAVLINK::handle_command_do_set_mode(const mavlink_command_long_t return _set_mode_common(_base_mode, _custom_mode); } -MAV_RESULT GCS_MAVLINK::handle_command_get_home_position(const mavlink_command_long_t &packet) +#if AP_AHRS_ENABLED +MAV_RESULT GCS_MAVLINK::handle_command_get_home_position(const mavlink_command_int_t &packet) { if (!AP::ahrs().home_is_set()) { return MAV_RESULT_FAILED; @@ -4526,8 +4533,9 @@ MAV_RESULT GCS_MAVLINK::handle_command_get_home_position(const mavlink_command_l return MAV_RESULT_ACCEPTED; } +#endif // AP_AHRS_ENABLED -MAV_RESULT GCS_MAVLINK::handle_command_debug_trap(const mavlink_command_long_t &packet) +MAV_RESULT GCS_MAVLINK::handle_command_debug_trap(const mavlink_command_int_t &packet) { // magic number must be supplied to trap; you must *really* mean it. if (uint32_t(packet.param1) != 32451) { @@ -4539,7 +4547,7 @@ MAV_RESULT GCS_MAVLINK::handle_command_debug_trap(const mavlink_command_long_t & return MAV_RESULT_UNSUPPORTED; } -MAV_RESULT GCS_MAVLINK::handle_command_set_ekf_source_set(const mavlink_command_long_t &packet) +MAV_RESULT GCS_MAVLINK::handle_command_set_ekf_source_set(const mavlink_command_int_t &packet) { // source set must be between 1 and 3 uint32_t source_set = uint32_t(packet.param1); @@ -4627,7 +4635,7 @@ MAV_RESULT GCS_MAVLINK::handle_command_airframe_configuration(const mavlink_comm #endif #if HAL_INS_ACCELCAL_ENABLED -MAV_RESULT GCS_MAVLINK::handle_command_accelcal_vehicle_pos(const mavlink_command_long_t &packet) +MAV_RESULT GCS_MAVLINK::handle_command_accelcal_vehicle_pos(const mavlink_command_int_t &packet) { if (AP::ins().get_acal() == nullptr || !AP::ins().get_acal()->gcs_vehicle_position(packet.param1)) { @@ -4719,20 +4727,6 @@ MAV_RESULT GCS_MAVLINK::handle_command_long_packet(const mavlink_command_long_t switch (packet.command) { -#if HAL_INS_ACCELCAL_ENABLED - case MAV_CMD_ACCELCAL_VEHICLE_POS: - result = handle_command_accelcal_vehicle_pos(packet); - break; -#endif - - case MAV_CMD_DO_SET_MODE: - result = handle_command_do_set_mode(packet); - break; - - case MAV_CMD_DO_SEND_BANNER: - result = handle_command_do_send_banner(packet); - break; - #if AP_FENCE_ENABLED case MAV_CMD_DO_FENCE_ENABLE: result = handle_command_do_fence_enable(packet); @@ -4816,46 +4810,6 @@ MAV_RESULT GCS_MAVLINK::handle_command_long_packet(const mavlink_command_long_t break; } - case MAV_CMD_GET_HOME_POSITION: - result = handle_command_get_home_position(packet); - break; - - case MAV_CMD_DEBUG_TRAP: - result = handle_command_debug_trap(packet); - break; - - case MAV_CMD_SET_EKF_SOURCE_SET: - result = handle_command_set_ekf_source_set(packet); - break; - - case MAV_CMD_PREFLIGHT_STORAGE: - if (is_equal(packet.param1, 2.0f)) { - AP_Param::erase_all(); - send_text(MAV_SEVERITY_WARNING, "All parameters reset, reboot board"); - result= MAV_RESULT_ACCEPTED; - } - break; - - case MAV_CMD_DO_AUX_FUNCTION: - result = handle_command_do_aux_function(packet); - break; - - case MAV_CMD_SET_MESSAGE_INTERVAL: - result = handle_command_set_message_interval(packet); - break; - - case MAV_CMD_GET_MESSAGE_INTERVAL: - result = handle_command_get_message_interval(packet); - break; - - case MAV_CMD_REQUEST_MESSAGE: - result = handle_command_request_message(packet); - break; - - case MAV_CMD_DO_FLIGHTTERMINATION: - result = handle_flight_termination(packet); - break; - default: result = try_command_long_as_command_int(packet, msg); break; @@ -4913,6 +4867,21 @@ bool GCS_MAVLINK::command_long_stores_location(const MAV_CMD command) return false; } +// returns a value suitable for COMMAND_INT.x or y based on a value +// coming in from COMMAND_LONG.p5 or p6: +static int32_t convert_COMMAND_LONG_loc_param(float param, bool stores_location) +{ + if (isnan(param)) { + return 0; + } + + if (stores_location) { + return param *1e7; + } + + return param; +} + void GCS_MAVLINK::convert_COMMAND_LONG_to_COMMAND_INT(const mavlink_command_long_t &in, mavlink_command_int_t &out, MAV_FRAME frame) { out = {}; @@ -4926,13 +4895,9 @@ void GCS_MAVLINK::convert_COMMAND_LONG_to_COMMAND_INT(const mavlink_command_long out.param2 = in.param2; out.param3 = in.param3; out.param4 = in.param4; - if (command_long_stores_location((MAV_CMD)in.command)) { - out.x = in.param5 *1e7; - out.y = in.param6 *1e7; - } else { - out.x = in.param5; - out.y = in.param6; - } + const bool stores_location = command_long_stores_location((MAV_CMD)in.command); + out.x = convert_COMMAND_LONG_loc_param(in.param5, stores_location); + out.y = convert_COMMAND_LONG_loc_param(in.param6, stores_location); out.z = in.param7; } @@ -5100,6 +5065,11 @@ MAV_RESULT GCS_MAVLINK::handle_command_storage_format(const mavlink_command_int_ MAV_RESULT GCS_MAVLINK::handle_command_int_packet(const mavlink_command_int_t &packet, const mavlink_message_t &msg) { switch (packet.command) { +#if HAL_INS_ACCELCAL_ENABLED + case MAV_CMD_ACCELCAL_VEHICLE_POS: + return handle_command_accelcal_vehicle_pos(packet); +#endif + #if AP_LANDINGGEAR_ENABLED case MAV_CMD_AIRFRAME_CONFIGURATION: return handle_command_airframe_configuration(packet); @@ -5108,6 +5078,19 @@ MAV_RESULT GCS_MAVLINK::handle_command_int_packet(const mavlink_command_int_t &p case MAV_CMD_CAN_FORWARD: return handle_can_forward(packet, msg); #endif + + case MAV_CMD_DEBUG_TRAP: + return handle_command_debug_trap(packet); + + case MAV_CMD_DO_AUX_FUNCTION: + return handle_command_do_aux_function(packet); + + case MAV_CMD_DO_FLIGHTTERMINATION: + return handle_flight_termination(packet); + + case MAV_CMD_DO_SET_MODE: + return handle_command_do_set_mode(packet); + case MAV_CMD_DO_SET_ROI: case MAV_CMD_DO_SET_ROI_LOCATION: return handle_command_do_set_roi(packet); @@ -5120,6 +5103,11 @@ MAV_RESULT GCS_MAVLINK::handle_command_int_packet(const mavlink_command_int_t &p case MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE: return handle_command_mount(packet, msg); #endif // HAL_MOUNT_ENABLED + + case MAV_CMD_DO_SEND_BANNER: + send_banner(); + return MAV_RESULT_ACCEPTED; + case MAV_CMD_DO_SET_HOME: return handle_command_do_set_home(packet); #if AP_AHRS_POSITION_RESET_ENABLED @@ -5138,9 +5126,22 @@ MAV_RESULT GCS_MAVLINK::handle_command_int_packet(const mavlink_command_int_t &p return handle_command_mag_cal(packet); #endif +#if AP_AHRS_ENABLED + case MAV_CMD_GET_HOME_POSITION: + return handle_command_get_home_position(packet); +#endif + case MAV_CMD_PREFLIGHT_CALIBRATION: return handle_command_preflight_calibration(packet, msg); + case MAV_CMD_PREFLIGHT_STORAGE: + if (is_equal(packet.param1, 2.0f)) { + AP_Param::erase_all(); + send_text(MAV_SEVERITY_WARNING, "All parameters reset, reboot board"); + return MAV_RESULT_ACCEPTED; + } + return MAV_RESULT_DENIED; + case MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN: return handle_preflight_reboot(packet, msg); @@ -5163,10 +5164,25 @@ MAV_RESULT GCS_MAVLINK::handle_command_int_packet(const mavlink_command_int_t &p } #endif // AP_SCRIPTING_ENABLED + case MAV_CMD_SET_EKF_SOURCE_SET: + return handle_command_set_ekf_source_set(packet); + #if AP_FILESYSTEM_FORMAT_ENABLED case MAV_CMD_STORAGE_FORMAT: return handle_command_storage_format(packet, msg); #endif + + // support for dealing with streamrate for a specific message and + // requesting a message instance: + case MAV_CMD_SET_MESSAGE_INTERVAL: + return handle_command_set_message_interval(packet); + + case MAV_CMD_GET_MESSAGE_INTERVAL: + return handle_command_get_message_interval(packet); + + case MAV_CMD_REQUEST_MESSAGE: + return handle_command_request_message(packet); + } return MAV_RESULT_UNSUPPORTED; @@ -5652,6 +5668,7 @@ bool GCS_MAVLINK::try_send_message(const enum ap_message id) send_global_position_int(); break; +#if AP_AHRS_ENABLED case MSG_HOME: CHECK_PAYLOAD_SIZE(HOME_POSITION); send_home_position(); @@ -5661,6 +5678,7 @@ bool GCS_MAVLINK::try_send_message(const enum ap_message id) CHECK_PAYLOAD_SIZE(GPS_GLOBAL_ORIGIN); send_gps_global_origin(); break; +#endif // AP_AHRS_ENABLED #if AP_RPM_ENABLED case MSG_RPM: diff --git a/libraries/GCS_MAVLink/GCS_MAVLink.cpp b/libraries/GCS_MAVLink/GCS_MAVLink.cpp index 3a061656b4c22..436a26f5f6e1a 100644 --- a/libraries/GCS_MAVLink/GCS_MAVLink.cpp +++ b/libraries/GCS_MAVLink/GCS_MAVLink.cpp @@ -22,7 +22,7 @@ This provides some support code and variables for MAVLink enabled sketches #include "GCS_config.h" -#if HAL_GCS_ENABLED +#if HAL_MAVLINK_BINDINGS_ENABLED #include "GCS.h" #include "GCS_MAVLink.h" @@ -41,6 +41,10 @@ extern const AP_HAL::HAL& hal; #pragma GCC diagnostic pop #endif +#endif // HAL_MAVLINK_BINDINGS_ENABLED + +#if HAL_GCS_ENABLED + AP_HAL::UARTDriver *mavlink_comm_port[MAVLINK_COMM_NUM_BUFFERS]; bool gcs_alternative_active[MAVLINK_COMM_NUM_BUFFERS]; diff --git a/libraries/GCS_MAVLink/GCS_config.h b/libraries/GCS_MAVLink/GCS_config.h index e3bb5ed7b01f4..2b981702f7ecd 100644 --- a/libraries/GCS_MAVLink/GCS_config.h +++ b/libraries/GCS_MAVLink/GCS_config.h @@ -7,6 +7,10 @@ #define HAL_GCS_ENABLED 1 #endif +#ifndef HAL_MAVLINK_BINDINGS_ENABLED +#define HAL_MAVLINK_BINDINGS_ENABLED HAL_GCS_ENABLED +#endif + // BATTERY2 is slated to be removed: #ifndef AP_MAVLINK_BATTERY2_ENABLED #define AP_MAVLINK_BATTERY2_ENABLED 1 @@ -74,3 +78,11 @@ #ifndef AP_MAVLINK_MSG_SERIAL_CONTROL_ENABLED #define AP_MAVLINK_MSG_SERIAL_CONTROL_ENABLED HAL_GCS_ENABLED #endif + +// GCS should be using MISSION_REQUEST_INT instead; this is a waste of +// flash. MISSION_REQUEST was deprecated in June 2020. We started +// sending warnings to the GCS in Sep 2022 if this command was used. +// Copter 4.4.0 sends this warning. +#ifndef AP_MAVLINK_MSG_MISSION_REQUEST_ENABLED +#define AP_MAVLINK_MSG_MISSION_REQUEST_ENABLED 1 +#endif diff --git a/libraries/GCS_MAVLink/MAVLink_routing.cpp b/libraries/GCS_MAVLink/MAVLink_routing.cpp index 2c05833e617b3..39d7975062589 100644 --- a/libraries/GCS_MAVLink/MAVLink_routing.cpp +++ b/libraries/GCS_MAVLink/MAVLink_routing.cpp @@ -94,6 +94,15 @@ routing table. */ bool MAVLink_routing::check_and_forward(GCS_MAVLINK &in_link, const mavlink_message_t &msg) { +#if HAL_SOLO_GIMBAL_ENABLED + // check if a Gopro is connected. If yes, we allow the routing + // of mavlink messages to a private channel (Solo Gimbal case) + if (!gopro_status_check && (msg.msgid == MAVLINK_MSG_ID_GOPRO_HEARTBEAT)) { + gopro_status_check = true; + gcs().send_text(MAV_SEVERITY_NOTICE, "GoPro in Solo gimbal detected"); + } +#endif // HAL_SOLO_GIMBAL_ENABLED + // handle the case of loopback of our own messages, due to // incorrect serial configuration. if (msg.sysid == mavlink_system.sysid && @@ -139,7 +148,14 @@ bool MAVLink_routing::check_and_forward(GCS_MAVLINK &in_link, const mavlink_mess bool process_locally = match_system && match_component; // don't ever forward data from a private channel - if (from_private_channel) { + // unless a Gopro camera is connected to a Solo gimbal + bool should_process_locally = from_private_channel; +#if HAL_SOLO_GIMBAL_ENABLED + if (gopro_status_check) { + should_process_locally = false; + } +#endif + if (should_process_locally) { return process_locally; } diff --git a/libraries/GCS_MAVLink/MAVLink_routing.h b/libraries/GCS_MAVLink/MAVLink_routing.h index 0f9fcc4299676..b680f405a2031 100644 --- a/libraries/GCS_MAVLink/MAVLink_routing.h +++ b/libraries/GCS_MAVLink/MAVLink_routing.h @@ -73,4 +73,7 @@ class MAVLink_routing void handle_heartbeat(GCS_MAVLINK &link, const mavlink_message_t &msg); void send_to_components(const char *pkt, const mavlink_msg_entry_t *entry, uint8_t pkt_len); + + // check for Gopro in Solo gimbal status + bool gopro_status_check; // default is none }; diff --git a/libraries/GCS_MAVLink/MissionItemProtocol.cpp b/libraries/GCS_MAVLink/MissionItemProtocol.cpp index 302f9dd833704..d29faaa7f6e8a 100644 --- a/libraries/GCS_MAVLink/MissionItemProtocol.cpp +++ b/libraries/GCS_MAVLink/MissionItemProtocol.cpp @@ -159,6 +159,7 @@ void MissionItemProtocol::handle_mission_request_int(GCS_MAVLINK &_link, _link.send_message(MAVLINK_MSG_ID_MISSION_ITEM_INT, (const char*)&ret_packet); } +#if AP_MAVLINK_MSG_MISSION_REQUEST_ENABLED void MissionItemProtocol::handle_mission_request(GCS_MAVLINK &_link, const mavlink_mission_request_t &packet, const mavlink_message_t &msg @@ -202,6 +203,7 @@ void MissionItemProtocol::handle_mission_request(GCS_MAVLINK &_link, // buffer space is checked by send_message _link.send_message(MAVLINK_MSG_ID_MISSION_ITEM, (const char*)&ret_packet); } +#endif // AP_MAVLINK_MSG_MISSION_REQUEST_ENABLED void MissionItemProtocol::send_mission_item_warning() { diff --git a/libraries/GCS_MAVLink/examples/routing/routing.cpp b/libraries/GCS_MAVLink/examples/routing/routing.cpp index c89abeb5a56b7..7ebb9103a7271 100644 --- a/libraries/GCS_MAVLink/examples/routing/routing.cpp +++ b/libraries/GCS_MAVLink/examples/routing/routing.cpp @@ -24,6 +24,7 @@ const AP_Param::GroupInfo GCS_MAVLINK_Parameters::var_info[] = { }; static MAVLink_routing routing; +static mavlink_status_t status; void setup(void) { @@ -40,7 +41,7 @@ void loop(void) mavlink_message_t msg; mavlink_heartbeat_t heartbeat = {0}; - mavlink_msg_heartbeat_encode(3, 1, &msg, &heartbeat); + mavlink_msg_heartbeat_encode_status(3, 1, &status, &msg, &heartbeat); GCS_MAVLINK *dummy_link = gcs().chan(0); @@ -51,7 +52,7 @@ void loop(void) // incoming non-targetted message mavlink_attitude_t attitude = {0}; - mavlink_msg_attitude_encode(3, 1, &msg, &attitude); + mavlink_msg_attitude_encode_status(3, 1, &status, &msg, &attitude); if (!routing.check_and_forward(*dummy_link, msg)) { hal.console->printf("attitude should be processed locally\n"); err_count++; @@ -61,7 +62,7 @@ void loop(void) mavlink_param_set_t param_set = {0}; param_set.target_system = mavlink_system.sysid+1; param_set.target_component = mavlink_system.compid; - mavlink_msg_param_set_encode(3, 1, &msg, ¶m_set); + mavlink_msg_param_set_encode_status(3, 1, &status, &msg, ¶m_set); if (routing.check_and_forward(*dummy_link, msg)) { hal.console->printf("param set 1 should not be processed locally\n"); err_count++; @@ -70,7 +71,7 @@ void loop(void) // incoming targeted message for us param_set.target_system = mavlink_system.sysid; param_set.target_component = mavlink_system.compid; - mavlink_msg_param_set_encode(3, 1, &msg, ¶m_set); + mavlink_msg_param_set_encode_status(3, 1, &status, &msg, ¶m_set); if (!routing.check_and_forward(*dummy_link, msg)) { hal.console->printf("param set 2 should be processed locally\n"); err_count++; @@ -80,7 +81,7 @@ void loop(void) // should be processed locally param_set.target_system = mavlink_system.sysid; param_set.target_component = mavlink_system.compid+1; - mavlink_msg_param_set_encode(3, 1, &msg, ¶m_set); + mavlink_msg_param_set_encode_status(3, 1, &status, &msg, ¶m_set); if (!routing.check_and_forward(*dummy_link, msg)) { hal.console->printf("param set 3 should be processed locally\n"); err_count++; @@ -89,7 +90,7 @@ void loop(void) // incoming broadcast message should be processed locally param_set.target_system = 0; param_set.target_component = mavlink_system.compid+1; - mavlink_msg_param_set_encode(3, 1, &msg, ¶m_set); + mavlink_msg_param_set_encode_status(3, 1, &status, &msg, ¶m_set); if (!routing.check_and_forward(*dummy_link, msg)) { hal.console->printf("param set 4 should be processed locally\n"); err_count++; diff --git a/libraries/SITL/SIM_ADSB.cpp b/libraries/SITL/SIM_ADSB.cpp index 82cfe6173e3c9..4e2d4be70936a 100644 --- a/libraries/SITL/SIM_ADSB.cpp +++ b/libraries/SITL/SIM_ADSB.cpp @@ -171,17 +171,10 @@ void ADSB::send_report(const class Aircraft &aircraft) heartbeat.mavlink_version = 0; heartbeat.custom_mode = 0; - /* - save and restore sequence number for chan0, as it is used by - generated encode functions - */ - mavlink_status_t *chan0_status = mavlink_get_channel_status(MAVLINK_COMM_0); - uint8_t saved_seq = chan0_status->current_tx_seq; - chan0_status->current_tx_seq = mavlink.seq; - len = mavlink_msg_heartbeat_encode(vehicle_system_id, - vehicle_component_id, - &msg, &heartbeat); - chan0_status->current_tx_seq = saved_seq; + len = mavlink_msg_heartbeat_encode_status(vehicle_system_id, + vehicle_component_id, + &mavlink.status, + &msg, &heartbeat); write_to_autopilot((char*)&msg.magic, len); @@ -235,14 +228,11 @@ void ADSB::send_report(const class Aircraft &aircraft) adsb_vehicle.squawk = 1200; - mavlink_status_t *chan0_status = mavlink_get_channel_status(MAVLINK_COMM_0); - uint8_t saved_seq = chan0_status->current_tx_seq; - chan0_status->current_tx_seq = mavlink.seq; - len = mavlink_msg_adsb_vehicle_encode(vehicle_system_id, + len = mavlink_msg_adsb_vehicle_encode_status(vehicle_system_id, MAV_COMP_ID_ADSB, + &mavlink.status, &msg, &adsb_vehicle); - chan0_status->current_tx_seq = saved_seq; - + uint8_t msgbuf[len]; len = mavlink_msg_to_send_buffer(msgbuf, &msg); if (len > 0) { @@ -255,17 +245,11 @@ void ADSB::send_report(const class Aircraft &aircraft) if (_sitl->adsb_tx && now - last_tx_report_ms > 1000) { last_tx_report_ms = now; - mavlink_status_t *chan0_status = mavlink_get_channel_status(MAVLINK_COMM_0); - uint8_t saved_seq = chan0_status->current_tx_seq; - uint8_t saved_flags = chan0_status->flags; - chan0_status->flags &= ~MAVLINK_STATUS_FLAG_OUT_MAVLINK1; - chan0_status->current_tx_seq = mavlink.seq; const mavlink_uavionix_adsb_transceiver_health_report_t health_report = {UAVIONIX_ADSB_RF_HEALTH_OK}; - len = mavlink_msg_uavionix_adsb_transceiver_health_report_encode(vehicle_system_id, - MAV_COMP_ID_ADSB, - &msg, &health_report); - chan0_status->current_tx_seq = saved_seq; - chan0_status->flags = saved_flags; + len = mavlink_msg_uavionix_adsb_transceiver_health_report_encode_status(vehicle_system_id, + MAV_COMP_ID_ADSB, + &mavlink.status, + &msg, &health_report); uint8_t msgbuf[len]; len = mavlink_msg_to_send_buffer(msgbuf, &msg); diff --git a/libraries/SITL/SIM_Aircraft.cpp b/libraries/SITL/SIM_Aircraft.cpp index 6ad31a1173952..1632e5d9e969c 100644 --- a/libraries/SITL/SIM_Aircraft.cpp +++ b/libraries/SITL/SIM_Aircraft.cpp @@ -1084,6 +1084,13 @@ float Aircraft::get_local_updraft(const Vector3d ¤tPos) thermals_x[0] = -180.0; thermals_y[0] = -260.0; break; + case 4: + n_thermals = 1; + thermals_w[0] = 5.0; + thermals_r[0] = 30.0; + thermals_x[0] = 0; + thermals_y[0] = 0; + break; default: AP_BoardConfig::config_error("Bad thermal scenario"); } diff --git a/libraries/SITL/SIM_GPS.cpp b/libraries/SITL/SIM_GPS.cpp index eff6c112613fc..67cc25b31db3c 100644 --- a/libraries/SITL/SIM_GPS.cpp +++ b/libraries/SITL/SIM_GPS.cpp @@ -1546,7 +1546,7 @@ void GPS::update() // add an altitude error controlled by a slow sine wave d.altitude = altitude + _sitl->gps_noise[idx] * sinf(now_ms * 0.0005f) + _sitl->gps_alt_offset[idx]; - // Add offet to c.g. velocity to get velocity at antenna and add simulated error + // Add offset to c.g. velocity to get velocity at antenna and add simulated error Vector3f velErrorNED = _sitl->gps_vel_err[idx]; d.speedN = speedN + (velErrorNED.x * rand_float()); d.speedE = speedE + (velErrorNED.y * rand_float()); @@ -1554,12 +1554,12 @@ void GPS::update() d.have_lock = have_lock; if (_sitl->gps_drift_alt[idx] > 0) { - // slow altitude drift + // add slow altitude drift controlled by a slow sine wave d.altitude += _sitl->gps_drift_alt[idx]*sinf(now_ms*0.001f*0.02f); } // correct the latitude, longitude, height and NED velocity for the offset between - // the vehicle c.g. and GPs antenna + // the vehicle c.g. and GPS antenna Vector3f posRelOffsetBF = _sitl->gps_pos_offset[idx]; if (!posRelOffsetBF.is_zero()) { // get a rotation matrix following DCM conventions (body to earth) diff --git a/libraries/SITL/SIM_Gimbal.cpp b/libraries/SITL/SIM_Gimbal.cpp index 0fc8607f48a90..a1997dd00fbd1 100644 --- a/libraries/SITL/SIM_Gimbal.cpp +++ b/libraries/SITL/SIM_Gimbal.cpp @@ -236,13 +236,10 @@ void Gimbal::param_send(const struct gimbal_param *p) param_value.param_index = 0; param_value.param_type = MAV_PARAM_TYPE_REAL32; - mavlink_status_t *chan0_status = mavlink_get_channel_status(MAVLINK_COMM_0); - uint8_t saved_seq = chan0_status->current_tx_seq; - chan0_status->current_tx_seq = mavlink.seq; - uint16_t len = mavlink_msg_param_value_encode(vehicle_system_id, - vehicle_component_id, - &msg, ¶m_value); - chan0_status->current_tx_seq = saved_seq; + uint16_t len = mavlink_msg_param_value_encode_status(vehicle_system_id, + vehicle_component_id, + &mavlink.status, + &msg, ¶m_value); uint8_t msgbuf[len]; len = mavlink_msg_to_send_buffer(msgbuf, &msg); @@ -366,17 +363,10 @@ void Gimbal::send_report(void) heartbeat.mavlink_version = 0; heartbeat.custom_mode = 0; - /* - save and restore sequence number for chan0, as it is used by - generated encode functions - */ - mavlink_status_t *chan0_status = mavlink_get_channel_status(MAVLINK_COMM_0); - uint8_t saved_seq = chan0_status->current_tx_seq; - chan0_status->current_tx_seq = mavlink.seq; - len = mavlink_msg_heartbeat_encode(vehicle_system_id, - vehicle_component_id, - &msg, &heartbeat); - chan0_status->current_tx_seq = saved_seq; + len = mavlink_msg_heartbeat_encode_status(vehicle_system_id, + vehicle_component_id, + &mavlink.status, + &msg, &heartbeat); mav_socket.send(&msg.magic, len); last_heartbeat_ms = now; @@ -403,13 +393,10 @@ void Gimbal::send_report(void) gimbal_report.joint_el = joint_angles.y; gimbal_report.joint_az = joint_angles.z; - mavlink_status_t *chan0_status = mavlink_get_channel_status(MAVLINK_COMM_0); - uint8_t saved_seq = chan0_status->current_tx_seq; - chan0_status->current_tx_seq = mavlink.seq; - len = mavlink_msg_gimbal_report_encode(vehicle_system_id, - vehicle_component_id, - &msg, &gimbal_report); - chan0_status->current_tx_seq = saved_seq; + len = mavlink_msg_gimbal_report_encode_status(vehicle_system_id, + vehicle_component_id, + &mavlink.status, + &msg, &gimbal_report); uint8_t msgbuf[len]; len = mavlink_msg_to_send_buffer(msgbuf, &msg); diff --git a/libraries/SITL/SIM_Morse.cpp b/libraries/SITL/SIM_Morse.cpp index d4303b87ee4fa..81ba8ce34972f 100644 --- a/libraries/SITL/SIM_Morse.cpp +++ b/libraries/SITL/SIM_Morse.cpp @@ -656,14 +656,11 @@ void Morse::send_report(void) } mavlink_message_t msg; - mavlink_status_t *chan0_status = mavlink_get_channel_status(MAVLINK_COMM_0); - uint8_t saved_seq = chan0_status->current_tx_seq; - chan0_status->current_tx_seq = mavlink.seq; - uint16_t len = mavlink_msg_obstacle_distance_encode( + uint16_t len = mavlink_msg_obstacle_distance_encode_status( mavlink_system.sysid, 13, + &mavlink.status, &msg, &packet); - chan0_status->current_tx_seq = saved_seq; uint8_t msgbuf[len]; len = mavlink_msg_to_send_buffer(msgbuf, &msg); diff --git a/libraries/SITL/SIM_RF_MAVLink.cpp b/libraries/SITL/SIM_RF_MAVLink.cpp index f7384bb63a529..651eb66d5a7f1 100644 --- a/libraries/SITL/SIM_RF_MAVLink.cpp +++ b/libraries/SITL/SIM_RF_MAVLink.cpp @@ -43,10 +43,11 @@ uint32_t RF_MAVLink::packet_for_alt(uint16_t alt_cm, uint8_t *buffer, uint8_t bu .vertical_fov = 0, // 0 is unknown vertical fov .quaternion = {0,0,0,0} // unknown/unused quat }; - const uint16_t len = mavlink_msg_distance_sensor_encode(system_id, - component_id, - &msg, - &distance_sensor); + const uint16_t len = mavlink_msg_distance_sensor_encode_status(system_id, + component_id, + &mav_status, + &msg, + &distance_sensor); if (len > buflen) { AP_HAL::panic("Insufficient buffer passed in"); } diff --git a/libraries/SITL/SIM_RF_MAVLink.h b/libraries/SITL/SIM_RF_MAVLink.h index cc5c284cb4ad2..23b04bdaf0ea0 100644 --- a/libraries/SITL/SIM_RF_MAVLink.h +++ b/libraries/SITL/SIM_RF_MAVLink.h @@ -39,7 +39,7 @@ class RF_MAVLink : public SerialRangeFinder { uint32_t packet_for_alt(uint16_t alt_cm, uint8_t *buffer, uint8_t buflen) override; private: - + mavlink_status_t mav_status; }; } diff --git a/libraries/SITL/SIM_Ship.cpp b/libraries/SITL/SIM_Ship.cpp index 9e095f146e694..f0bf379a133e6 100644 --- a/libraries/SITL/SIM_Ship.cpp +++ b/libraries/SITL/SIM_Ship.cpp @@ -178,9 +178,10 @@ void ShipSim::send_report(void) 0, 0}; mavlink_message_t msg; - mavlink_msg_heartbeat_encode( + mavlink_msg_heartbeat_encode_status( sys_id.get(), component_id, + &mav_status, &msg, &heartbeat); uint8_t buf[300]; @@ -221,9 +222,10 @@ void ShipSim::send_report(void) uint16_t(ship.heading_deg*100) }; mavlink_message_t msg; - mavlink_msg_global_position_int_encode( + mavlink_msg_global_position_int_encode_status( sys_id, component_id, + &mav_status, &msg, &global_position_int); uint8_t buf[300]; @@ -240,9 +242,10 @@ void ShipSim::send_report(void) 0, 0, ship.yaw_rate }; mavlink_message_t msg; - mavlink_msg_attitude_encode( + mavlink_msg_attitude_encode_status( sys_id, component_id, + &mav_status, &msg, &attitude); uint8_t buf[300]; diff --git a/libraries/SITL/SIM_Ship.h b/libraries/SITL/SIM_Ship.h index a9c4449b0a449..cbb91ccba4055 100644 --- a/libraries/SITL/SIM_Ship.h +++ b/libraries/SITL/SIM_Ship.h @@ -85,6 +85,7 @@ class ShipSim { SocketAPM mav_socket { false }; bool mavlink_connected; + mavlink_status_t mav_status; void send_report(void); }; diff --git a/libraries/SITL/SIM_Vicon.cpp b/libraries/SITL/SIM_Vicon.cpp index dc7bb50422e06..b54374baf8752 100644 --- a/libraries/SITL/SIM_Vicon.cpp +++ b/libraries/SITL/SIM_Vicon.cpp @@ -164,9 +164,10 @@ void Vicon::update_vicon_position_estimate(const Location &loc, pitch, yaw }; - mavlink_msg_vision_position_estimate_encode( + mavlink_msg_vision_position_estimate_encode_status( system_id, component_id, + &mav_status, &msg_buf[msg_buf_index].obs_msg, &vision_position_estimate ); @@ -184,9 +185,10 @@ void Vicon::update_vicon_position_estimate(const Location &loc, pitch, yaw }; - mavlink_msg_vicon_position_estimate_encode( + mavlink_msg_vicon_position_estimate_encode_status( system_id, component_id, + &mav_status, &msg_buf[msg_buf_index].obs_msg, &vicon_position_estimate); msg_buf[msg_buf_index].time_send_us = time_send_us; @@ -200,9 +202,10 @@ void Vicon::update_vicon_position_estimate(const Location &loc, vel_corrected.y, vel_corrected.z }; - mavlink_msg_vision_speed_estimate_encode( + mavlink_msg_vision_speed_estimate_encode_status( system_id, component_id, + &mav_status, &msg_buf[msg_buf_index].obs_msg, &vicon_speed_estimate ); @@ -232,9 +235,10 @@ void Vicon::update_vicon_position_estimate(const Location &loc, 0, MAV_ESTIMATOR_TYPE_VIO }; - mavlink_msg_odometry_encode( + mavlink_msg_odometry_encode_status( system_id, component_id, + &mav_status, &msg_buf[msg_buf_index].obs_msg, &odometry); msg_buf[msg_buf_index].time_send_us = time_send_us; @@ -270,9 +274,10 @@ void Vicon::update_vicon_position_estimate(const Location &loc, }, {pos_delta.x, pos_delta.y, pos_delta.z} }; - mavlink_msg_vision_position_delta_encode( + mavlink_msg_vision_position_delta_encode_status( system_id, component_id, + &mav_status, &msg_buf[msg_buf_index].obs_msg, &vision_position_delta); msg_buf[msg_buf_index].time_send_us = time_send_us; diff --git a/libraries/SITL/SIM_Vicon.h b/libraries/SITL/SIM_Vicon.h index e7eb27ca425a5..5cb9aadce4d3a 100644 --- a/libraries/SITL/SIM_Vicon.h +++ b/libraries/SITL/SIM_Vicon.h @@ -77,6 +77,8 @@ class Vicon : public SerialDevice { // position delta message Quaternion _attitude_prev; // Rotation to previous MAV_FRAME_BODY_FRD from MAV_FRAME_LOCAL_NED Vector3d _position_prev; // previous position from origin (m) MAV_FRAME_LOCAL_NED + + mavlink_status_t mav_status; }; } diff --git a/libraries/SITL/SIM_config.h b/libraries/SITL/SIM_config.h index bf0ebe588ba6e..92521f0b7f83c 100644 --- a/libraries/SITL/SIM_config.h +++ b/libraries/SITL/SIM_config.h @@ -3,7 +3,7 @@ #include #ifndef HAL_SIM_ADSB_ENABLED -#define HAL_SIM_ADSB_ENABLED (CONFIG_HAL_BOARD == HAL_BOARD_SITL) && !defined(HAL_BUILD_AP_PERIPH) +#define HAL_SIM_ADSB_ENABLED (CONFIG_HAL_BOARD == HAL_BOARD_SITL) #endif #ifndef HAL_SIM_SERIALPROXIMITYSENSOR_ENABLED diff --git a/libraries/SITL/SITL.cpp b/libraries/SITL/SITL.cpp index dd3486b4f2b84..3d3add9002385 100644 --- a/libraries/SITL/SITL.cpp +++ b/libraries/SITL/SITL.cpp @@ -160,6 +160,11 @@ const AP_Param::GroupInfo SIM::var_info[] = { // @Range: 1 10 // @User: Advanced AP_GROUPINFO("SPEEDUP", 52, SIM, speedup, -1), + // @Param: IMU_POS + // @DisplayName: IMU Offsets + // @Description: XYZ position of the IMU accelerometer relative to the body frame origin + // @Units: m + // @Vector3Parameter: 1 AP_GROUPINFO("IMU_POS", 53, SIM, imu_pos_offset, 0), AP_SUBGROUPEXTENSION("", 54, SIM, var_ins), AP_GROUPINFO("SONAR_POS", 55, SIM, rngfnd_pos_offset, 0), @@ -353,7 +358,9 @@ const AP_Param::GroupInfo SIM::var_info3[] = { AP_GROUPINFO("RATE_HZ", 22, SIM, loop_rate_hz, SIM_RATE_HZ_DEFAULT), - // count of simulated IMUs + // @Param: IMU_COUNT + // @DisplayName: IMU count + // @Description: Number of simulated IMUs to create AP_GROUPINFO("IMU_COUNT", 23, SIM, imu_count, 2), // @Path: ./SIM_FETtecOneWireESC.cpp @@ -432,9 +439,13 @@ const AP_Param::GroupInfo SIM::var_info3[] = { // @User: Advanced AP_GROUPINFO("UART_LOSS", 42, SIM, uart_byte_loss_pct, 0), - AP_SUBGROUPINFO(airspeed[0], "ARSPD_", 50, SIM, SIM::AirspeedParm), + // @Group: ARSPD_ + // @Path: ./SITL_Airspeed.cpp + AP_SUBGROUPINFO(airspeed[0], "ARSPD_", 50, SIM, AirspeedParm), #if AIRSPEED_MAX_SENSORS > 1 - AP_SUBGROUPINFO(airspeed[1], "ARSPD2_", 51, SIM, SIM::AirspeedParm), + // @Group: ARSPD2_ + // @Path: ./SITL_Airspeed.cpp + AP_SUBGROUPINFO(airspeed[1], "ARSPD2_", 51, SIM, AirspeedParm), #endif @@ -464,24 +475,6 @@ const AP_Param::GroupInfo SIM::BaroParm::var_info[] = { AP_GROUPEND }; -// user settable parameters for airspeed sensors -const AP_Param::GroupInfo SIM::AirspeedParm::var_info[] = { - // user settable parameters for the 1st airspeed sensor - AP_GROUPINFO("RND", 1, SIM::AirspeedParm, noise, 2.0), - AP_GROUPINFO("OFS", 2, SIM::AirspeedParm, offset, 2013), - // @Param: ARSPD_FAIL - // @DisplayName: Airspeed sensor failure - // @Description: Simulates Airspeed sensor 1 failure - // @Values: 0:Disabled, 1:Enabled - // @User: Advanced - AP_GROUPINFO("FAIL", 3, SIM::AirspeedParm, fail, 0), - AP_GROUPINFO("FAILP", 4, SIM::AirspeedParm, fail_pressure, 0), - AP_GROUPINFO("PITOT", 5, SIM::AirspeedParm, fail_pitot_pressure, 0), - AP_GROUPINFO("SIGN", 6, SIM::AirspeedParm, signflip, 0), - AP_GROUPINFO("RATIO", 7, SIM::AirspeedParm, ratio, 1.99), - AP_GROUPEND -}; - #if HAL_SIM_GPS_ENABLED // GPS SITL parameters const AP_Param::GroupInfo SIM::var_gps[] = { @@ -1144,7 +1137,9 @@ void SIM::sim_state_send(mavlink_channel_t chan) const 0.0, state.speedN, state.speedE, - state.speedD); + state.speedD, + (int32_t)(state.latitude*1.0e7), + (int32_t)(state.longitude*1.0e7)); } /* report SITL state to AP_Logger */ diff --git a/libraries/SITL/SITL_Airspeed.cpp b/libraries/SITL/SITL_Airspeed.cpp new file mode 100644 index 0000000000000..ea1289386bb1e --- /dev/null +++ b/libraries/SITL/SITL_Airspeed.cpp @@ -0,0 +1,44 @@ +#include "SITL.h" + +#if AP_SIM_ENABLED + +namespace SITL { +// user settable parameters for airspeed sensors +const AP_Param::GroupInfo SIM::AirspeedParm::var_info[] = { + // user settable parameters for the 1st airspeed sensor + AP_GROUPINFO("RND", 1, AirspeedParm, noise, 2.0), + AP_GROUPINFO("OFS", 2, AirspeedParm, offset, 2013), + // @Param: FAIL + // @DisplayName: Airspeed sensor failure + // @Description: Simulates Airspeed sensor 1 failure + // @Values: 0:Disabled, 1:Enabled + // @User: Advanced + AP_GROUPINFO("FAIL", 3, AirspeedParm, fail, 0), + // @Param: FAILP + // @DisplayName: Airspeed sensor failure pressure + // @Description: Simulated airspeed sensor failure pressure + // @Units: Pa + // @User: Advanced + AP_GROUPINFO("FAILP", 4, AirspeedParm, fail_pressure, 0), + // @Param: PITOT + // @DisplayName: Airspeed pitot tube failure pressure + // @Description: Simulated airspeed sensor pitot tube failure pressure + // @Units: Pa + // @User: Advanced + AP_GROUPINFO("PITOT", 5, AirspeedParm, fail_pitot_pressure, 0), + // @Param: SIGN + // @DisplayName: Airspeed signflip + // @Description: Simulated airspeed sensor with reversed pitot/static connections + // @Values: 0:Disabled, 1:Enabled + // @User: Advanced + AP_GROUPINFO("SIGN", 6, AirspeedParm, signflip, 0), + // @Param: RATIO + // @DisplayName: Airspeed ratios + // @Description: Simulated airspeed sensor ratio + // @User: Advanced + AP_GROUPINFO("RATIO", 7, AirspeedParm, ratio, 1.99), + AP_GROUPEND +}; +} + +#endif // AP_SIM_ENABLED \ No newline at end of file diff --git a/libraries/SRV_Channel/SRV_Channel.cpp b/libraries/SRV_Channel/SRV_Channel.cpp index a3246a58a9038..1cfccbd8bdb29 100644 --- a/libraries/SRV_Channel/SRV_Channel.cpp +++ b/libraries/SRV_Channel/SRV_Channel.cpp @@ -201,6 +201,15 @@ uint16_t SRV_Channel::pwm_from_angle(float scaled_value) const } } +uint16_t SRV_Channel::pwm_from_scaled_value(float scaled_value) const +{ + if (type_angle) { + return pwm_from_angle(scaled_value); + } else { + return pwm_from_range(scaled_value); + } +} + void SRV_Channel::calc_pwm(float output_scaled) { if (have_pwm_mask & (1U<