diff --git a/.github/workflows/cygwin_build.yml b/.github/workflows/cygwin_build.yml index 39b10515775262..36a76dd1d6674d 100644 --- a/.github/workflows/cygwin_build.yml +++ b/.github/workflows/cygwin_build.yml @@ -188,8 +188,8 @@ jobs: shell: C:\cygwin\bin\bash.exe -eo pipefail '{0}' run: >- ln -sf /usr/bin/python3.7 /usr/bin/python && ln -sf /usr/bin/pip3.7 /usr/bin/pip && - python -m pip install --progress-bar off empy==3.3.4 pexpect && - python -m pip install --progress-bar off dronecan --upgrade && + python3 -m pip install --progress-bar off empy==3.3.4 pexpect && + python3 -m pip install --progress-bar off dronecan --upgrade && cp /usr/bin/ccache /usr/local/bin/ && cd /usr/local/bin && ln -s ccache /usr/local/bin/gcc && ln -s ccache /usr/local/bin/g++ && diff --git a/.github/workflows/esp32_build.yml b/.github/workflows/esp32_build.yml index d503ca6ca9498b..e8101d34b1a051 100644 --- a/.github/workflows/esp32_build.yml +++ b/.github/workflows/esp32_build.yml @@ -178,7 +178,7 @@ jobs: sudo apt-get install git wget libncurses-dev flex bison gperf python3 python3-pip python3-venv python3-setuptools python3-serial python3-gevent python3-cryptography python3-future python3-pyparsing python3-pyelftools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 update-alternatives --query python - python --version + python3 --version pip3 install gevent # we actualy want 3.11 .. but the above only gave us 3.10, not ok with esp32 builds. @@ -188,7 +188,7 @@ jobs: sudo apt-get install python3 python3-pip python3-venv python3-setuptools python3-serial python3-cryptography python3-future python3-pyparsing python3-pyelftools update-alternatives --query python pip3 install gevent - python --version + python3 --version python3.11 --version which python3.11 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.11 11 @@ -229,7 +229,7 @@ jobs: ./install.sh source ./export.sh cd ../.. - python -m pip install --progress-bar off future lxml pymavlink MAVProxy pexpect flake8 geocoder empy==3.3.4 dronecan + python3 -m pip install --progress-bar off future lxml pymavlink MAVProxy pexpect flake8 geocoder empy==3.3.4 dronecan which cmake ./waf configure --board ${{matrix.config}} echo './waf configure --board ${{matrix.config}}' >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/qurt_build.yml b/.github/workflows/qurt_build.yml index 6d89e14c3bd6ba..9120c9f683c2fd 100644 --- a/.github/workflows/qurt_build.yml +++ b/.github/workflows/qurt_build.yml @@ -157,6 +157,9 @@ jobs: cp -a build/QURT/bin/arducopter build/QURT/ArduPilot_Copter.so cp -a build/QURT/bin/arduplane build/QURT/ArduPilot_Plane.so cp -a build/QURT/bin/ardurover build/QURT/ArduPilot_Rover.so + libraries/AP_HAL_QURT/packaging/make_package.sh ArduCopter arducopter + libraries/AP_HAL_QURT/packaging/make_package.sh ArduPlane arduplane + libraries/AP_HAL_QURT/packaging/make_package.sh Rover ardurover - name: Archive build uses: actions/upload-artifact@v4 @@ -168,4 +171,5 @@ jobs: build/QURT/ArduPilot_Plane.so build/QURT/ArduPilot_Rover.so build/QURT/ArduPilot.so + libraries/AP_HAL_QURT/packaging/*.deb retention-days: 7 diff --git a/AntennaTracker/ReleaseNotes.txt b/AntennaTracker/ReleaseNotes.txt index ff6c49b158d241..972964d76c3e7d 100644 --- a/AntennaTracker/ReleaseNotes.txt +++ b/AntennaTracker/ReleaseNotes.txt @@ -1,5 +1,11 @@ Antenna Tracker Release Notes: ------------------------------------------------------------------ +Release 4.5.7 08 Oct 2024 + +Changes from 4.5.7-beta1 + +1) Reverted Septentrio GPS sat count correctly drops to zero when 255 received +------------------------------------------------------------------ Release 4.5.7-beta1 26 Sep 2024 Changes from 4.5.6 diff --git a/ArduCopter/Copter.h b/ArduCopter/Copter.h index 5718fc11f4398c..9915885060a689 100644 --- a/ArduCopter/Copter.h +++ b/ArduCopter/Copter.h @@ -390,7 +390,6 @@ class Copter : public AP_Vehicle { // This is the state of the flight control system // There are multiple states defined such as STABILIZE, ACRO, Mode *flightmode; - Mode::Number prev_control_mode; RCMapper rcmap; diff --git a/ArduCopter/ReleaseNotes.txt b/ArduCopter/ReleaseNotes.txt index 870aa8a30f7762..2179e053b3c9b6 100644 --- a/ArduCopter/ReleaseNotes.txt +++ b/ArduCopter/ReleaseNotes.txt @@ -1,5 +1,11 @@ ArduPilot Copter Release Notes: ------------------------------------------------------------------ +Release 4.5.7 08 Oct 2024 + +Changes from 4.5.7-beta1 + +1) Reverted Septentrio GPS sat count correctly drops to zero when 255 received +------------------------------------------------------------------ Release 4.5.7-beta1 26 Sep 2024 Changes from 4.5.6 diff --git a/ArduCopter/heli.cpp b/ArduCopter/heli.cpp index 7b4870de5a0cc7..bff2a3de170419 100644 --- a/ArduCopter/heli.cpp +++ b/ArduCopter/heli.cpp @@ -189,29 +189,25 @@ void Copter::heli_update_rotor_speed_targets() // to autorotation flight mode if manual collective is not being used. void Copter::heli_update_autorotation() { - // check if flying and interlock disengaged - if (!ap.land_complete && !motors->get_interlock()) { + bool in_autorotation_mode = false; #if MODE_AUTOROTATE_ENABLED - if (g2.arot.is_enable()) { - if (!flightmode->has_manual_throttle()) { - // set autonomous autorotation flight mode - set_mode(Mode::Number::AUTOROTATE, ModeReason::AUTOROTATION_START); - } - // set flag to facilitate both auto and manual autorotations - motors->set_in_autorotation(true); - motors->set_enable_bailout(true); - } + in_autorotation_mode = flightmode == &mode_autorotate; #endif - if (flightmode->has_manual_throttle() && motors->arot_man_enabled()) { - // set flag to facilitate both auto and manual autorotations - motors->set_in_autorotation(true); - motors->set_enable_bailout(true); - } - } else { - motors->set_in_autorotation(false); - motors->set_enable_bailout(false); + + // If we have landed then we do not want to be in autorotation and we do not want to via the bailout state + if (ap.land_complete || ap.land_complete_maybe) { + motors->force_deactivate_autorotation(); + return; } + // if we got this far we are flying, check for conditions to set autorotation state + if (!motors->get_interlock() && (flightmode->has_manual_throttle() || in_autorotation_mode)) { + // set state in motors to facilitate manual and assisted autorotations + motors->set_autorotation_active(true); + } else { + // deactivate the autorotation state via the bailout case + motors->set_autorotation_active(false); + } } // update collective low flag. Use a debounce time of 400 milliseconds. diff --git a/ArduCopter/mode.cpp b/ArduCopter/mode.cpp index 74e3cbb3c043a5..5d8fc5a9e40bbb 100644 --- a/ArduCopter/mode.cpp +++ b/ArduCopter/mode.cpp @@ -292,20 +292,9 @@ bool Copter::set_mode(Mode::Number mode, ModeReason reason) #if FRAME_CONFIG == HELI_FRAME // do not allow helis to enter a non-manual throttle mode if the // rotor runup is not complete - if (!ignore_checks && !new_flightmode->has_manual_throttle() && - (motors->get_spool_state() == AP_Motors::SpoolState::SPOOLING_UP || motors->get_spool_state() == AP_Motors::SpoolState::SPOOLING_DOWN)) { - #if MODE_AUTOROTATE_ENABLED - //if the mode being exited is the autorotation mode allow mode change despite rotor not being at - //full speed. This will reduce altitude loss on bail-outs back to non-manual throttle modes - bool in_autorotation_check = (flightmode != &mode_autorotate || new_flightmode != &mode_autorotate); - #else - bool in_autorotation_check = false; - #endif - - if (!in_autorotation_check) { - mode_change_failed(new_flightmode, "runup not complete"); - return false; - } + if (!ignore_checks && !new_flightmode->has_manual_throttle() && !motors->rotor_runup_complete()) { + mode_change_failed(new_flightmode, "runup not complete"); + return false; } #endif @@ -369,9 +358,6 @@ bool Copter::set_mode(Mode::Number mode, ModeReason reason) // perform any cleanup required by previous flight mode exit_mode(flightmode, new_flightmode); - // store previous flight mode (only used by tradeheli's autorotation) - prev_control_mode = flightmode->mode_number(); - // update flight mode flightmode = new_flightmode; control_mode_reason = reason; diff --git a/ArduCopter/mode.h b/ArduCopter/mode.h index 98f01449c51f01..faf22b0180f45c 100644 --- a/ArduCopter/mode.h +++ b/ArduCopter/mode.h @@ -2015,18 +2015,14 @@ class ModeAutorotate : public Mode { int32_t _pitch_target; // Target pitch attitude to pass to attitude controller uint32_t _entry_time_start_ms; // Time remaining until entry phase moves on to glide phase float _hs_decay; // The head accerleration during the entry phase - float _bail_time; // Timer for exiting the bail out phase (s) - uint32_t _bail_time_start_ms; // Time at start of bail out - float _target_climb_rate_adjust;// Target vertical acceleration used during bail out phase - float _target_pitch_adjust; // Target pitch rate used during bail out phase enum class Autorotation_Phase { ENTRY, SS_GLIDE, FLARE, TOUCH_DOWN, - BAIL_OUT } phase_switch; - + LANDED } phase_switch; + enum class Navigation_Decision { USER_CONTROL_STABILISED, STRAIGHT_AHEAD, @@ -2039,10 +2035,10 @@ class ModeAutorotate : public Mode { bool ss_glide_initial : 1; bool flare_initial : 1; bool touch_down_initial : 1; + bool landed_initial : 1; bool straight_ahead_initial : 1; bool level_initial : 1; bool break_initial : 1; - bool bail_out_initial : 1; bool bad_rpm : 1; } _flags; diff --git a/ArduCopter/mode_autorotate.cpp b/ArduCopter/mode_autorotate.cpp index cc97d75f308f33..e13bc52516251e 100644 --- a/ArduCopter/mode_autorotate.cpp +++ b/ArduCopter/mode_autorotate.cpp @@ -14,8 +14,8 @@ #if MODE_AUTOROTATE_ENABLED #define AUTOROTATE_ENTRY_TIME 2.0f // (s) number of seconds that the entry phase operates for -#define BAILOUT_MOTOR_RAMP_TIME 1.0f // (s) time set on bailout ramp up timer for motors - See AC_MotorsHeli_Single #define HEAD_SPEED_TARGET_RATIO 1.0f // Normalised target main rotor head speed (unit: -) +#define AUTOROTATION_MIN_MOVING_SPEED 100.0 // (cm/s) minimum speed used for "is moving" check bool ModeAutorotate::init(bool ignore_checks) { @@ -24,15 +24,16 @@ bool ModeAutorotate::init(bool ignore_checks) return false; #endif - // Check that mode is enabled + // Check that mode is enabled, make sure this is the first check as this is the most + // important thing for users to fix if they are planning to use autorotation mode if (!g2.arot.is_enable()) { - gcs().send_text(MAV_SEVERITY_INFO, "Autorot Mode Not Enabled"); + gcs().send_text(MAV_SEVERITY_WARNING, "Autorot Mode Not Enabled"); return false; } - // Check that interlock is disengaged - if (motors->get_interlock()) { - gcs().send_text(MAV_SEVERITY_INFO, "Autorot Mode Change Fail: Interlock Engaged"); + // Must be armed to use mode, prevent triggering state machine on the ground + if (!motors->armed() || copter.ap.land_complete || copter.ap.land_complete_maybe) { + gcs().send_text(MAV_SEVERITY_WARNING, "Autorot: Must be Armed and Flying"); return false; } @@ -52,10 +53,10 @@ bool ModeAutorotate::init(bool ignore_checks) _flags.ss_glide_initial = true; _flags.flare_initial = true; _flags.touch_down_initial = true; + _flags.landed_initial = true; _flags.level_initial = true; _flags.break_initial = true; _flags.straight_ahead_initial = true; - _flags.bail_out_initial = true; _msg_flags.bad_rpm = true; // Setting default starting switches @@ -74,20 +75,9 @@ bool ModeAutorotate::init(bool ignore_checks) void ModeAutorotate::run() { - // Check if interlock becomes engaged - if (motors->get_interlock() && !copter.ap.land_complete) { - phase_switch = Autorotation_Phase::BAIL_OUT; - } else if (motors->get_interlock() && copter.ap.land_complete) { - // Aircraft is landed and no need to bail out - set_mode(copter.prev_control_mode, ModeReason::AUTOROTATION_BAILOUT); - } - // Current time uint32_t now = millis(); //milliseconds - // Initialise internal variables - float curr_vel_z = inertial_nav.get_velocity_z_up_cms(); // Current vertical descent - //---------------------------------------------------------------- // State machine logic //---------------------------------------------------------------- @@ -97,12 +87,22 @@ void ModeAutorotate::run() // Timer from entry phase to progress to glide phase if (phase_switch == Autorotation_Phase::ENTRY){ - if ((now - _entry_time_start_ms)/1000.0f > AUTOROTATE_ENTRY_TIME) { // Flight phase can be progressed to steady state glide phase_switch = Autorotation_Phase::SS_GLIDE; } + } + + // Check if we believe we have landed. We need the landed state to zero all controls and make sure that the copter landing detector will trip + bool speed_check = inertial_nav.get_velocity_z_up_cms() < AUTOROTATION_MIN_MOVING_SPEED && + inertial_nav.get_speed_xy_cms() < AUTOROTATION_MIN_MOVING_SPEED; + if (motors->get_below_land_min_coll() && AP::ins().is_still() && speed_check) { + phase_switch = Autorotation_Phase::LANDED; + } + // Check if we are bailing out and need to re-set the spool state + if (motors->autorotation_bailout()) { + motors->set_desired_spool_state(AP_Motors::DesiredSpoolState::THROTTLE_UNLIMITED); } @@ -199,79 +199,22 @@ void ModeAutorotate::run() { break; } - - case Autorotation_Phase::BAIL_OUT: + case Autorotation_Phase::LANDED: { - if (_flags.bail_out_initial == true) { - // Functions and settings to be done once are done here. + // Entry phase functions to be run only once + if (_flags.landed_initial == true) { #if CONFIG_HAL_BOARD == HAL_BOARD_SITL - gcs().send_text(MAV_SEVERITY_INFO, "Bailing Out of Autorotation"); + gcs().send_text(MAV_SEVERITY_INFO, "Landed"); #endif - - // Set bail out timer remaining equal to the parameter value, bailout time - // cannot be less than the motor spool-up time: BAILOUT_MOTOR_RAMP_TIME. - _bail_time = MAX(g2.arot.get_bail_time(),BAILOUT_MOTOR_RAMP_TIME+0.1f); - - // Set bail out start time - _bail_time_start_ms = now; - - // Set initial target vertical speed - _desired_v_z = curr_vel_z; - - // Initialise position and desired velocity - if (!pos_control->is_active_z()) { - pos_control->relax_z_controller(g2.arot.get_last_collective()); - } - - // Get pilot parameter limits - const float pilot_spd_dn = -get_pilot_speed_dn(); - const float pilot_spd_up = g.pilot_speed_up; - - float pilot_des_v_z = get_pilot_desired_climb_rate(channel_throttle->get_control_in()); - pilot_des_v_z = constrain_float(pilot_des_v_z, pilot_spd_dn, pilot_spd_up); - - // Calculate target climb rate adjustment to transition from bail out descent speed to requested climb rate on stick. - _target_climb_rate_adjust = (curr_vel_z - pilot_des_v_z)/(_bail_time - BAILOUT_MOTOR_RAMP_TIME); //accounting for 0.5s motor spool time - - // Calculate pitch target adjustment rate to return to level - _target_pitch_adjust = _pitch_target/_bail_time; - - // set vertical speed and acceleration limits - pos_control->set_max_speed_accel_z(curr_vel_z, pilot_spd_up, fabsf(_target_climb_rate_adjust)); - pos_control->set_correction_speed_accel_z(curr_vel_z, pilot_spd_up, fabsf(_target_climb_rate_adjust)); - - motors->set_desired_spool_state(AP_Motors::DesiredSpoolState::THROTTLE_UNLIMITED); - - _flags.bail_out_initial = false; + _flags.landed_initial = false; } - - if ((now - _bail_time_start_ms)/1000.0f >= BAILOUT_MOTOR_RAMP_TIME) { - // Update desired vertical speed and pitch target after the bailout motor ramp timer has completed - _desired_v_z -= _target_climb_rate_adjust*G_Dt; - _pitch_target -= _target_pitch_adjust*G_Dt; - } - // Set position controller - pos_control->set_pos_target_z_from_climb_rate_cm(_desired_v_z); - - // Update controllers - pos_control->update_z_controller(); - - if ((now - _bail_time_start_ms)/1000.0f >= _bail_time) { - // Bail out timer complete. Change flight mode. Do not revert back to auto. Prevent aircraft - // from continuing mission and potentially flying further away after a power failure. - if (copter.prev_control_mode == Mode::Number::AUTO) { - set_mode(Mode::Number::ALT_HOLD, ModeReason::AUTOROTATION_BAILOUT); - } else { - set_mode(copter.prev_control_mode, ModeReason::AUTOROTATION_BAILOUT); - } - } - - break; + // don't allow controller to continually ask for more pitch to build speed when we are on the ground, decay to zero smoothly + _pitch_target *= 0.95; + break; } } - switch (nav_pos_switch) { case Navigation_Decision::USER_CONTROL_STABILISED: diff --git a/ArduPlane/GCS_Mavlink.h b/ArduPlane/GCS_Mavlink.h index da77d1b357d566..9e039408827133 100644 --- a/ArduPlane/GCS_Mavlink.h +++ b/ArduPlane/GCS_Mavlink.h @@ -83,8 +83,6 @@ class GCS_MAVLINK_Plane : public GCS_MAVLINK MAV_MODE base_mode() const override; MAV_STATE vehicle_system_status() const override; - uint8_t radio_in_rssi() const; - float vfr_hud_airspeed() const override; int16_t vfr_hud_throttle() const override; float vfr_hud_climbrate() const override; diff --git a/ArduPlane/Plane.h b/ArduPlane/Plane.h index 66df996ec698e8..64b5ba6d956471 100644 --- a/ArduPlane/Plane.h +++ b/ArduPlane/Plane.h @@ -943,7 +943,6 @@ class Plane : public AP_Vehicle { void Log_Write_RC(void); void Log_Write_Vehicle_Startup_Messages(); void Log_Write_AETR(); - void log_init(); #endif // Parameters.cpp diff --git a/ArduPlane/ReleaseNotes.txt b/ArduPlane/ReleaseNotes.txt index 22dae4c23ce749..e8699fa5c9320f 100644 --- a/ArduPlane/ReleaseNotes.txt +++ b/ArduPlane/ReleaseNotes.txt @@ -1,5 +1,11 @@ ArduPilot Plane Release Notes: ------------------------------------------------------------------ +Release 4.5.7 08 Oct 2024 + +Changes from 4.5.7-beta1 + +1) Reverted Septentrio GPS sat count correctly drops to zero when 255 received +------------------------------------------------------------------ Release 4.5.7-beta1 26 Sep 2024 Changes from 4.5.6 diff --git a/ArduPlane/mode.cpp b/ArduPlane/mode.cpp index d9fec93dff4f8e..e4f97acc2c089b 100644 --- a/ArduPlane/mode.cpp +++ b/ArduPlane/mode.cpp @@ -255,6 +255,9 @@ void Mode::reset_controllers() // reset steering controls plane.steer_state.locked_course = false; plane.steer_state.locked_course_err = 0; + + // reset TECS + plane.TECS_controller.reset(); } bool Mode::is_taking_off() const diff --git a/ArduPlane/mode.h b/ArduPlane/mode.h index c26a1233a87b73..230b372499ff40 100644 --- a/ArduPlane/mode.h +++ b/ArduPlane/mode.h @@ -81,7 +81,7 @@ class Mode // returns true if the vehicle can be armed in this mode bool pre_arm_checks(size_t buflen, char *buffer) const; - // Reset rate and steering controllers + // Reset rate and steering and TECS controllers void reset_controllers(); // diff --git a/ArduPlane/quadplane.cpp b/ArduPlane/quadplane.cpp index eb6a16b47c76c4..de820ee42091cb 100644 --- a/ArduPlane/quadplane.cpp +++ b/ArduPlane/quadplane.cpp @@ -4374,9 +4374,20 @@ bool SLT_Transition::allow_update_throttle_mix() const bool SLT_Transition::active_frwd() const { - return quadplane.assisted_flight && // We need to be in assisted flight... - ((transition_state == TRANSITION_AIRSPEED_WAIT) || (transition_state == TRANSITION_TIMER)) // ... and a transition must be active... - && !quadplane.in_vtol_airbrake(); // ... but not executing an QPOS_AIRBRAKE maneuver during an automated landing. + // We need to be in assisted flight... + if (!quadplane.assisted_flight) { + return false; + } + // ... and a transition must be active... + if (!((transition_state == TRANSITION_AIRSPEED_WAIT) || (transition_state == TRANSITION_TIMER))) { + return false; + } + // ... but not executing a QPOS_AIRBRAKE maneuver during an automated landing. + if (quadplane.in_vtol_airbrake()) { + return false; + } + + return true; } /* diff --git a/ArduPlane/system.cpp b/ArduPlane/system.cpp index b5d412d5fc9401..5aabf77331ca0f 100644 --- a/ArduPlane/system.cpp +++ b/ArduPlane/system.cpp @@ -16,6 +16,7 @@ void Plane::init_ardupilot() pitchController.convert_pid(); // initialise rc channels including setting mode + // CONVERSION: Added for upgrade to ArduPlane 4.2, Sep 2021 #if HAL_QUADPLANE_ENABLED rc().convert_options(RC_Channel::AUX_FUNC::ARMDISARM_UNUSED, (quadplane.enabled() && quadplane.option_is_set(QuadPlane::OPTION::AIRMODE_UNUSED) && (rc().find_channel_for_option(RC_Channel::AUX_FUNC::AIRMODE) == nullptr)) ? RC_Channel::AUX_FUNC::ARMDISARM_AIRMODE : RC_Channel::AUX_FUNC::ARMDISARM); #else diff --git a/ArduSub/Sub.h b/ArduSub/Sub.h index 52cd205175f4e9..9c6e621bc45f10 100644 --- a/ArduSub/Sub.h +++ b/ArduSub/Sub.h @@ -536,8 +536,6 @@ class Sub : public AP_Vehicle { #endif bool verify_nav_delay(const AP_Mission::Mission_Command& cmd); - void log_init(void); - void failsafe_leak_check(); void failsafe_internal_pressure_check(); void failsafe_internal_temperature_check(); diff --git a/ArduSub/mode.cpp b/ArduSub/mode.cpp index d445dd5c8c16d5..cb3b10c53c1f88 100644 --- a/ArduSub/mode.cpp +++ b/ArduSub/mode.cpp @@ -112,7 +112,7 @@ bool Sub::set_mode(Mode::Number mode, ModeReason reason) // perform any cleanup required by previous flight mode exit_mode(flightmode, new_flightmode); - // store previous flight mode (only used by tradeheli's autorotation) + // store previous flight mode prev_control_mode = control_mode; // update flight mode diff --git a/Rover/ReleaseNotes.txt b/Rover/ReleaseNotes.txt index 4566f6d0bbacd9..792f86077d3b0a 100644 --- a/Rover/ReleaseNotes.txt +++ b/Rover/ReleaseNotes.txt @@ -1,5 +1,11 @@ Rover Release Notes: ------------------------------------------------------------------ +Release 4.5.7 08 Oct 2024 + +Changes from 4.5.7-beta1 + +1) Reverted Septentrio GPS sat count correctly drops to zero when 255 received +------------------------------------------------------------------ Release 4.5.7-beta1 26 Sep 2024 Changes from 4.5.6 diff --git a/Tools/AP_Bootloader/board_types.txt b/Tools/AP_Bootloader/board_types.txt index 5ef848b60b9d0a..6997d9df795081 100644 --- a/Tools/AP_Bootloader/board_types.txt +++ b/Tools/AP_Bootloader/board_types.txt @@ -194,7 +194,7 @@ AP_HW_SKYSTARSH7HD 1075 AP_HW_PixSurveyA1 1076 AP_HW_AEROFOX_AIRSPEED 1077 AP_HW_ATOMRCF405 1078 -AP_HW_CUBEPILOT_CANMOD 1079 +AP_HW_CUBENODE 1079 AP_HW_AEROFOX_PMU 1080 AP_HW_JHEMCUGF16F405 1081 AP_HW_SPEEDYBEEF4V3 1082 @@ -359,6 +359,10 @@ AP_HW_UAV-DEV-UM982-G4 5224 AP_HW_UAV-DEV-M20D-G4 5225 AP_HW_UAV-DEV-Sensorboard-G4 5226 +# IDs 5250-5269 reserved for Team Black Sheep +AP_HW_TBS_LUCID_H7 5250 +AP_HW_TBS_LUCID_PRO 5251 + #IDs 5301-5399 reserved for Sierra Aerospace AP_HW_Sierra-TrueNavPro-G4 5301 AP_HW_Sierra-TrueNavIC 5302 diff --git a/Tools/AP_Periph/AP_Periph.cpp b/Tools/AP_Periph/AP_Periph.cpp index b952d7ae2495cb..2ab0e4437a6163 100644 --- a/Tools/AP_Periph/AP_Periph.cpp +++ b/Tools/AP_Periph/AP_Periph.cpp @@ -168,6 +168,15 @@ void AP_Periph_FW::init() baro.init(); #endif +#ifdef HAL_PERIPH_ENABLE_IMU + if (g.imu_sample_rate) { + imu.init(g.imu_sample_rate); + if (imu.get_accel_count() > 0 || imu.get_gyro_count() > 0) { + hal.scheduler->thread_create(FUNCTOR_BIND_MEMBER(&AP_Periph_FW::can_imu_update, void), "IMU_UPDATE", 16384, AP_HAL::Scheduler::PRIORITY_CAN, 0); + } + } +#endif + #ifdef HAL_PERIPH_ENABLE_BATTERY battery_lib.init(); #endif diff --git a/Tools/AP_Periph/AP_Periph.h b/Tools/AP_Periph/AP_Periph.h index dc3f6754e4be3d..0cbf5f419e792d 100644 --- a/Tools/AP_Periph/AP_Periph.h +++ b/Tools/AP_Periph/AP_Periph.h @@ -6,6 +6,7 @@ #include #include #include +#include #include "SRV_Channel/SRV_Channel.h" #include #include @@ -173,6 +174,10 @@ class AP_Periph_FW { void send_relposheading_msg(); void can_baro_update(); void can_airspeed_update(); +#ifdef HAL_PERIPH_ENABLE_IMU + void can_imu_update(); +#endif + #ifdef HAL_PERIPH_ENABLE_RANGEFINDER void can_rangefinder_update(); #endif @@ -230,6 +235,10 @@ class AP_Periph_FW { AP_Baro baro; #endif +#ifdef HAL_PERIPH_ENABLE_IMU + AP_InertialSensor imu; +#endif + #ifdef HAL_PERIPH_ENABLE_RPM AP_RPM rpm_sensor; uint32_t rpm_last_update_ms; diff --git a/Tools/AP_Periph/Parameters.cpp b/Tools/AP_Periph/Parameters.cpp index e0196045a972f8..21826edd675fdb 100644 --- a/Tools/AP_Periph/Parameters.cpp +++ b/Tools/AP_Periph/Parameters.cpp @@ -723,6 +723,20 @@ const AP_Param::Info AP_Periph_FW::var_info[] = { GSCALAR(esc_extended_telem_rate, "ESC_EXT_TLM_RATE", AP_PERIPH_ESC_TELEM_RATE_DEFAULT / 10), #endif + +#ifdef HAL_PERIPH_ENABLE_IMU + // @Param: IMU_SAMPLE_RATE + // @DisplayName: IMU Sample Rate + // @Description: IMU Sample Rate + // @Range: 0 1000 + // @User: Standard + GSCALAR(imu_sample_rate, "INS_SAMPLE_RATE", 0), + + // @Group: INS_ + // @Path: ../libraries/AP_InertialSensor/AP_InertialSensor.cpp + GOBJECT(imu, "INS", AP_InertialSensor), +#endif + AP_VAREND }; diff --git a/Tools/AP_Periph/Parameters.h b/Tools/AP_Periph/Parameters.h index 6479b511687b78..c2df5d27f0d5ea 100644 --- a/Tools/AP_Periph/Parameters.h +++ b/Tools/AP_Periph/Parameters.h @@ -97,6 +97,8 @@ class Parameters { k_param_rpm_msg_rate, k_param_esc_rate, k_param_esc_extended_telem_rate, + k_param_imu_sample_rate, + k_param_imu, }; AP_Int16 format_version; @@ -211,6 +213,10 @@ class Parameters { AP_Int8 efi_port; #endif +#ifdef HAL_PERIPH_ENABLE_IMU + AP_Int16 imu_sample_rate; +#endif + #if HAL_PERIPH_CAN_MIRROR AP_Int8 can_mirror_ports; #endif // HAL_PERIPH_CAN_MIRROR diff --git a/Tools/AP_Periph/imu.cpp b/Tools/AP_Periph/imu.cpp new file mode 100644 index 00000000000000..c0c5aaf40128d7 --- /dev/null +++ b/Tools/AP_Periph/imu.cpp @@ -0,0 +1,50 @@ +#include "AP_Periph.h" + +#ifdef HAL_PERIPH_ENABLE_IMU +#include + +extern const AP_HAL::HAL &hal; + +/* + update CAN magnetometer + */ +void AP_Periph_FW::can_imu_update(void) +{ + while (true) { + // sleep for a bit to avoid flooding the CPU + hal.scheduler->delay_microseconds(100); + + imu.update(); + + if (!imu.healthy()) { + continue; + } + + uavcan_equipment_ahrs_RawIMU pkt {}; + + Vector3f tmp; + imu.get_delta_velocity(tmp, pkt.integration_interval); + pkt.accelerometer_integral[0] = tmp.x; + pkt.accelerometer_integral[1] = tmp.y; + pkt.accelerometer_integral[2] = tmp.z; + + imu.get_delta_angle(tmp, pkt.integration_interval); + pkt.rate_gyro_integral[0] = tmp.x; + pkt.rate_gyro_integral[1] = tmp.y; + pkt.rate_gyro_integral[2] = tmp.z; + + tmp = imu.get_accel(); + pkt.accelerometer_latest[0] = tmp.x; + pkt.accelerometer_latest[1] = tmp.y; + pkt.accelerometer_latest[2] = tmp.z; + + uint8_t buffer[UAVCAN_EQUIPMENT_AHRS_RAWIMU_MAX_SIZE]; + uint16_t total_size = uavcan_equipment_ahrs_RawIMU_encode(&pkt, buffer, !canfdout()); + canard_broadcast(UAVCAN_EQUIPMENT_AHRS_RAWIMU_SIGNATURE, + UAVCAN_EQUIPMENT_AHRS_RAWIMU_ID, + CANARD_TRANSFER_PRIORITY_HIGH, + &buffer[0], + total_size); + } +} +#endif // HAL_PERIPH_ENABLE_IMU diff --git a/Tools/Frame_params/ModalAI/Starling2Max.parm b/Tools/Frame_params/ModalAI/Starling2Max.parm new file mode 100644 index 00000000000000..7e06a8e3bd4627 --- /dev/null +++ b/Tools/Frame_params/ModalAI/Starling2Max.parm @@ -0,0 +1,48 @@ +# Parameters for Starling 2 Max drone +# https://www.modalai.com/products/starling-2-max?variant=48172375310640 + +# IMU orientation is ROLL_180 +AHRS_ORIENT 8 + +# Mag orientation is ROLL_180 +COMPASS_ORIENT 8 + +# Pitch control is backwards? +RC2_REVERSED 1 + +# Left 3-pos switch is RC6 +FLTMODE_CH 6 + +# Flight mode channel mapping +FLTMODE1 0 +FLTMODE3 2 +FLTMODE6 5 + +# Motor mapping +SERVO1_FUNCTION 34 +SERVO2_FUNCTION 35 +SERVO3_FUNCTION 33 +SERVO4_FUNCTION 36 + +# Motor spin +MOT_SPIN_ARM 0.05 +MOT_SPIN_MIN 0.15 + +# Visual Inertial Odometry setup +VISO_TYPE 3 +EK3_SRC1_POSXY 6 +EK3_SRC1_VELXY 6 +EK3_SRC1_POSZ 6 +EK3_SRC1_VELZ 6 +EK3_SRC1_YAW 6 + +# To improve Mavlink connection disable forwarding from camera/viso +SERIAL2_OPTIONS 1024 + +# PID tuning +ATC_RAT_RLL_P 0.07 +ATC_RAT_RLL_I 0.07 +ATC_RAT_RLL_D 0.0015 +ATC_RAT_PIT_P 0.07 +ATC_RAT_PIT_I 0.07 +ATC_RAT_PIT_D 0.0015 \ No newline at end of file diff --git a/Tools/GIT_Test/GIT_Success.txt b/Tools/GIT_Test/GIT_Success.txt index c20eb0bb4cf0ee..13d517d005c22b 100644 --- a/Tools/GIT_Test/GIT_Success.txt +++ b/Tools/GIT_Test/GIT_Success.txt @@ -203,3 +203,5 @@ Amr Tsuyoshi Arakawa Naveen Kumar Kilaparthi Amr Attia +Alessandro Martini +Eren Mert YİĞİT diff --git a/Tools/autotest/Generic_Missions/QuadPlaneDalbyRTL.txt b/Tools/autotest/Generic_Missions/QuadPlaneDalbyRTL.txt index e88bb0c7fd6c0a..73ee0544116dc8 100644 --- a/Tools/autotest/Generic_Missions/QuadPlaneDalbyRTL.txt +++ b/Tools/autotest/Generic_Missions/QuadPlaneDalbyRTL.txt @@ -1,6 +1,6 @@ QGC WPL 110 0 0 0 16 0.000000 0.000000 0.000000 0.000000 -27.274439 151.290064 343.209991 1 1 0 3 189 0.000000 0.000000 0.000000 0.000000 -27.270617 151.283268 28.590000 1 -2 0 3 16 0.000000 0.000000 0.000000 0.000000 -27.272859 151.286018 28.789999 1 +2 0 3 16 0.000000 0.000000 0.000000 0.000000 -27.272632 151.284895 29.029999 1 3 0 3 16 0.000000 0.000000 0.000000 0.000000 -27.273316 151.288023 30.000000 1 4 0 3 85 0.000000 0.000000 0.000000 0.000000 -27.273771 151.289905 0.000000 1 diff --git a/Tools/autotest/bisect-helper.py b/Tools/autotest/bisect-helper.py index 3858a53fb6b3a8..90f74dec69ed1a 100755 --- a/Tools/autotest/bisect-helper.py +++ b/Tools/autotest/bisect-helper.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 '''A helper script for bisecting common problems when working with ArduPilot diff --git a/Tools/autotest/helicopter.py b/Tools/autotest/helicopter.py index 9f04327e4d1170..9f3f57cc4ddaf0 100644 --- a/Tools/autotest/helicopter.py +++ b/Tools/autotest/helicopter.py @@ -302,11 +302,15 @@ def SplineWaypoint(self, timeout=600): self.progress("Lowering rotor speed") self.set_rc(8, 1000) - def AutoRotation(self, timeout=600): + def Autorotation(self, timeout=600): """Check engine-out behaviour""" - self.set_parameter("AROT_ENABLE", 1) + self.context_push() start_alt = 100 # metres - self.set_parameter("PILOT_TKOFF_ALT", start_alt * 100) + self.set_parameters({ + "AROT_ENABLE": 1, + "H_RSC_AROT_ENBL": 1, + }) + bail_out_time = self.get_parameter('H_RSC_AROT_RUNUP') self.change_mode('POSHOLD') self.set_rc(3, 1000) self.set_rc(8, 1000) @@ -322,85 +326,169 @@ def AutoRotation(self, timeout=600): relative=True, timeout=timeout) self.context_collect('STATUSTEXT') - self.progress("Triggering autorotate by raising interlock") - self.set_rc(3, 1000) + + # Reset collective to enter hover + self.set_rc(3, 1500) + + # Change to the autorotation flight mode + self.progress("Triggering autorotate mode") + self.change_mode('AUTOROTATE') + self.delay_sim_time(2) + + # Disengage the interlock to remove power self.set_rc(8, 1000) + # Ensure we have progressed through the mode's state machine self.wait_statustext("SS Glide Phase", check_context=True) - self.change_mode('STABILIZE') + self.progress("Testing bailout from autorotation") + self.set_rc(8, 2000) + # See if the output ramps to a value close to expected with the prescribed time + self.wait_servo_channel_value(8, 1659, timeout=bail_out_time+1, comparator=operator.ge) + + # Successfully bailed out, disengage the interlock and allow autorotation to progress + self.set_rc(8, 1000) self.wait_statustext(r"SIM Hit ground at ([0-9.]+) m/s", check_context=True, regex=True) speed = float(self.re_match.group(1)) if speed > 30: raise NotAchievedException("Hit too hard") + + # Set throttle low to trip auto disarm + self.set_rc(3, 1000) + self.wait_disarmed() + self.context_pop() - def ManAutoRotation(self, timeout=600): + def ManAutorotation(self, timeout=600): """Check autorotation power recovery behaviour""" - RAMP_TIME = 4 - AROT_RAMP_TIME = 2 - start_alt = 100 # metres - self.set_parameters({ - "H_RSC_AROT_MN_EN": 1, - "H_RSC_AROT_ENG_T": AROT_RAMP_TIME, - "H_RSC_AROT_IDLE": 20, - "H_RSC_RAMP_TIME": RAMP_TIME, - "H_RSC_IDLE": 0, - "PILOT_TKOFF_ALT": start_alt * 100, - }) - self.change_mode('POSHOLD') - self.set_rc(3, 1000) - self.set_rc(8, 1000) - self.wait_ready_to_arm() - self.arm_vehicle() - self.set_rc(8, 2000) - self.progress("wait for rotor runup to complete") - self.wait_servo_channel_value(8, 1659, timeout=10) - self.delay_sim_time(20) - self.set_rc(3, 2000) - self.wait_altitude(start_alt - 1, - (start_alt + 5), - relative=True, - timeout=timeout) - self.context_collect('STATUSTEXT') - self.change_mode('STABILIZE') - self.progress("Triggering manual autorotation by disabling interlock") - self.set_rc(3, 1000) - self.set_rc(8, 1000) - self.wait_servo_channel_value(8, 1199, timeout=3) - self.progress("channel 8 set to autorotation window") + RSC_CHAN = 8 + + def check_rsc_output(self, throttle, timeout): + # Check we get a sensible throttle output + expected_pwm = int(throttle * 0.01 * 1000 + 1000) + + # Help out the detection by accepting some margin + margin = 2 + + # See if the output ramps to a value close to expected with the prescribed time + self.wait_servo_channel_in_range(RSC_CHAN, expected_pwm-margin, expected_pwm+margin, timeout=timeout) + + def TestAutorotationConfig(self, rsc_idle, arot_ramp_time, arot_idle, cool_down): + RAMP_TIME = 10 + RUNUP_TIME = 15 + AROT_RUNUP_TIME = arot_ramp_time + 4 + RSC_SETPOINT = 66 + self.set_parameters({ + "H_RSC_AROT_ENBL": 1, + "H_RSC_AROT_RAMP": arot_ramp_time, + "H_RSC_AROT_RUNUP": AROT_RUNUP_TIME, + "H_RSC_AROT_IDLE": arot_idle, + "H_RSC_RAMP_TIME": RAMP_TIME, + "H_RSC_RUNUP_TIME": RUNUP_TIME, + "H_RSC_IDLE": rsc_idle, + "H_RSC_SETPOINT": RSC_SETPOINT, + "H_RSC_CLDWN_TIME": cool_down + }) - # wait to establish autorotation - self.delay_sim_time(2) + # Check the RSC config so we know what to expect on the throttle output + if self.get_parameter("H_RSC_MODE") != 2: + self.set_parameter("H_RSC_MODE", 2) + self.reboot_sitl() - self.set_rc(8, 2000) - self.wait_servo_channel_value(8, 1659, timeout=AROT_RAMP_TIME * 1.1) + self.change_mode('POSHOLD') + self.set_rc(3, 1000) + self.set_rc(8, 1000) + self.wait_ready_to_arm() + self.arm_vehicle() + self.set_rc(8, 2000) + self.progress("wait for rotor runup to complete") + check_rsc_output(self, RSC_SETPOINT, RUNUP_TIME+1) + + self.delay_sim_time(20) + self.set_rc(3, 2000) + self.wait_altitude(100, + 105, + relative=True, + timeout=timeout) + self.context_collect('STATUSTEXT') + self.change_mode('STABILIZE') - # give time for engine to power up - self.set_rc(3, 1400) - self.delay_sim_time(2) + self.progress("Triggering manual autorotation by disabling interlock") + self.set_rc(3, 1000) + self.set_rc(8, 1000) - self.progress("in-flight power recovery") - self.set_rc(3, 1500) - self.delay_sim_time(5) + self.wait_statustext(r"RSC: In Autorotation", check_context=True) - # initiate autorotation again - self.set_rc(3, 1000) - self.set_rc(8, 1000) + # Check we are using the correct throttle output. This should happen instantly on ramp down. + idle_thr = rsc_idle + if (arot_idle > 0): + idle_thr = arot_idle - self.wait_statustext(r"SIM Hit ground at ([0-9.]+) m/s", - check_context=True, - regex=True) - speed = float(self.re_match.group(1)) - if speed > 30: - raise NotAchievedException("Hit too hard") + check_rsc_output(self, idle_thr, 1) - self.set_rc(3, 1000) - # verify servo 8 resets to RSC_IDLE after land complete - self.wait_servo_channel_value(8, 1000, timeout=3) - self.wait_disarmed() + self.progress("RSC is outputting correct idle throttle") + + # Wait to establish autorotation. + self.delay_sim_time(2) + + # Re-engage interlock to start bailout sequence + self.set_rc(8, 2000) + + # Ensure we see the bailout state + self.wait_statustext("RSC: Bailing Out", check_context=True) + + # Check we are back up to flight throttle. Autorotation ramp up time should be used + check_rsc_output(self, RSC_SETPOINT, arot_ramp_time+1) + + # Give time for engine to power up + self.set_rc(3, 1400) + self.delay_sim_time(2) + + self.progress("in-flight power recovery") + self.set_rc(3, 1500) + self.delay_sim_time(5) + + # Initiate autorotation again + self.set_rc(3, 1000) + self.set_rc(8, 1000) + + self.wait_statustext(r"SIM Hit ground at ([0-9.]+) m/s", + check_context=True, + regex=True) + speed = float(self.re_match.group(1)) + if speed > 30: + raise NotAchievedException("Hit too hard") + + # Check that cool down is still used correctly if set + # First wait until we are out of the autorotation state + self.wait_statustext("RSC: Autorotation Stopped") + if (cool_down > 0): + check_rsc_output(self, rsc_idle*1.5, cool_down) + + # Verify RSC output resets to RSC_IDLE after land complete + check_rsc_output(self, rsc_idle, 20) + self.wait_disarmed() + + # We test the bailout behavior of two different configs + # First we test config with a regular throttle curve + self.progress("testing autorotation with throttle curve config") + self.context_push() + TestAutorotationConfig(self, rsc_idle=5.0, arot_ramp_time=2.0, arot_idle=0, cool_down=0) + + # Now we test a config that would be used with an ESC with internal governor and an autorotation window + self.progress("testing autorotation with ESC autorotation window config") + TestAutorotationConfig(self, rsc_idle=0.0, arot_ramp_time=0.0, arot_idle=20.0, cool_down=0) + + # Check rsc output behavior when using the cool down feature + self.progress("testing autorotation with cool down enabled and zero autorotation idle") + TestAutorotationConfig(self, rsc_idle=5.0, arot_ramp_time=2.0, arot_idle=0, cool_down=5.0) + + self.progress("testing that H_RSC_AROT_IDLE is used over RSC_IDLE when cool down is enabled") + TestAutorotationConfig(self, rsc_idle=5.0, arot_ramp_time=2.0, arot_idle=10, cool_down=5.0) + + self.context_pop() def mission_item_home(self, target_system, target_component): '''returns a mission_item_int which can be used as home in a mission''' @@ -700,25 +788,27 @@ def check_airspeeds(mav, m): def TurbineCoolDown(self, timeout=200): """Check Turbine Cool Down Feature""" + self.context_push() # set option for Turbine RAMP_TIME = 4 SETPOINT = 66 IDLE = 15 COOLDOWN_TIME = 5 - self.set_parameter("RC6_OPTION", 161) - self.set_parameter("H_RSC_RAMP_TIME", RAMP_TIME) - self.set_parameter("H_RSC_SETPOINT", SETPOINT) - self.set_parameter("H_RSC_IDLE", IDLE) - self.set_parameter("H_RSC_CLDWN_TIME", COOLDOWN_TIME) + self.set_parameters({"RC6_OPTION": 161, + "H_RSC_RAMP_TIME": RAMP_TIME, + "H_RSC_SETPOINT": SETPOINT, + "H_RSC_IDLE": IDLE, + "H_RSC_CLDWN_TIME": COOLDOWN_TIME}) self.set_rc(3, 1000) self.set_rc(8, 1000) self.progress("Starting turbine") self.wait_ready_to_arm() + self.context_collect("STATUSTEXT") self.arm_vehicle() self.set_rc(6, 2000) - self.wait_statustext('Turbine startup') + self.wait_statustext('Turbine startup', check_context=True) # Engage interlock to run up to head speed self.set_rc(8, 2000) @@ -743,6 +833,7 @@ def TurbineCoolDown(self, timeout=200): self.set_rc(6, 1000) self.wait_disarmed(timeout=20) + self.context_pop() def TurbineStart(self, timeout=200): """Check Turbine Start Feature""" @@ -1021,8 +1112,8 @@ def tests(self): self.PosHoldTakeOff, self.StabilizeTakeOff, self.SplineWaypoint, - self.AutoRotation, - self.ManAutoRotation, + self.Autorotation, + self.ManAutorotation, self.governortest, self.FlyEachFrame, self.AirspeedDrivers, diff --git a/Tools/autotest/sim_vehicle.py b/Tools/autotest/sim_vehicle.py index babd1b3cd7936e..19dbbb5ee7cd3a 100755 --- a/Tools/autotest/sim_vehicle.py +++ b/Tools/autotest/sim_vehicle.py @@ -986,6 +986,17 @@ def start_mavproxy(opts, stuff): run_cmd_blocking("Run MavProxy", cmd, env=env) progress("MAVProxy exited") + if opts.gdb: + # in the case that MAVProxy exits (as opposed to being + # killed), restart it if we are running under GDB. This + # allows ArduPilot to stop (eg. via a very early panic call) + # and have you debugging session not be killed. + while True: + progress("Running under GDB; restarting MAVProxy") + run_cmd_blocking("Run MavProxy", cmd, env=env) + progress("MAVProxy exited; sleeping 10") + time.sleep(10) + vehicle_options_string = '|'.join(vinfo.options.keys()) diff --git a/Tools/autotest/vehicle_test_suite.py b/Tools/autotest/vehicle_test_suite.py index 08b179380d4c2e..3cab908b5951cc 100644 --- a/Tools/autotest/vehicle_test_suite.py +++ b/Tools/autotest/vehicle_test_suite.py @@ -7962,6 +7962,28 @@ def wait_servo_channel_value(self, channel, value, timeout=2, comparator=operato if comparator(m_value, value): return m_value + def wait_servo_channel_in_range(self, channel, v_min, v_max, timeout=2): + """wait for channel value to be within acceptable range""" + channel_field = "servo%u_raw" % channel + tstart = self.get_sim_time() + while True: + remaining = timeout - (self.get_sim_time_cached() - tstart) + if remaining <= 0: + raise NotAchievedException("Channel value condition not met") + m = self.mav.recv_match(type='SERVO_OUTPUT_RAW', + blocking=True, + timeout=remaining) + if m is None: + continue + m_value = getattr(m, channel_field, None) + if m_value is None: + raise ValueError("message (%s) has no field %s" % + (str(m), channel_field)) + self.progress("want %u <= SERVO_OUTPUT_RAW.%s <= %u, got value = %u" % + (v_min, channel_field, v_max, m_value)) + if (v_min <= m_value) and (m_value <= v_max): + return m_value + def assert_servo_channel_value(self, channel, value, comparator=operator.eq): """assert channel value (default condition is equality)""" channel_field = "servo%u_raw" % channel diff --git a/Tools/bootloaders/CubeNode-ETH_bl.bin b/Tools/bootloaders/CubeNode-ETH_bl.bin new file mode 100755 index 00000000000000..b27eaea5fd6d51 Binary files /dev/null and b/Tools/bootloaders/CubeNode-ETH_bl.bin differ diff --git a/Tools/bootloaders/CubeNode-ETH_bl.hex b/Tools/bootloaders/CubeNode-ETH_bl.hex new file mode 100644 index 00000000000000..99d6c28ea6cb27 --- /dev/null +++ b/Tools/bootloaders/CubeNode-ETH_bl.hex @@ -0,0 +1,6331 @@ +:020000040800F2 +:1000000000070020F102000849CB000801CB0008DE +:1000100029CB000801CB000821CB0008F30200081F +:10002000F3020008F3020008F302000869F7000871 +:10003000F3020008F3020008F3020008F3020008CC +:10004000F3020008F3020008F3020008F3020008BC +:10005000F3020008F3020008053F0108313F0108E0 +:100060005D3F0108893F0108B53F0108E1FC000838 +:1000700009FD000835FD000861FD00088DFD000840 +:10008000B5FD0008E1FD0008F3020008E5C900081D +:10009000F3020008F5C90008F3020008E13F010877 +:1000A000F3020008F3020008F3020008F30200085C +:1000B000F3020008F3020008F3020008F30200084C +:1000C000F3020008F3020008F3020008F30200083C +:1000D000F3020008F3020008F3020008F30200082C +:1000E00045400108F3020008F3020008F30200088B +:1000F000F3020008F3020008F30200080DFE0008F6 +:10010000F3020008F3020008CD400108F3020008E2 +:10011000F3020008F3020008F3020008F3020008EB +:1001200039FE000861FE00088DFE0008B9FE0008D7 +:10013000E5FE0008C1010108F3020008F30200080F +:10014000F3020008F3020008F3020008F3020008BB +:100150000DFF000839FF000865FF0008F3020008E2 +:10016000F3020008F3020008F3020008F30200089B +:10017000F30200084D330108F3020008F3020008FF +:10018000F3020008F3020008B9400108F302000876 +:10019000F3020008F3020008F3020008F30200086B +:1001A000F3020008F3020008F3020008F30200085B +:1001B000F3020008F3020008F3020008F30200084B +:1001C000F3020008F3020008F3020008F30200083B +:1001D000F302000839330108F3020008F3020008B3 +:1001E000F3020008F3020008F3020008F30200081B +:1001F000F3020008F3020008F3020008F30200080B +:10020000F3020008F3020008F3020008F3020008FA +:10021000F3020008F3020008F3020008F3020008EA +:10022000F3020008F3020008F3020008F3020008DA +:10023000F3020008F3020008F3020008F3020008CA +:10024000F3020008F3020008F3020008F3020008BA +:10025000F3020008F3020008F3020008F3020008AA +:10026000F3020008F3020008F3020008F30200089A +:10027000F3020008F3020008F3020008F30200088A +:10028000F3020008F3020008F3020008F30200087A +:10029000F3020008F3020008F3020008F30200086A +:1002A000F3020008F3020008F3020008F30200085A +:1002B000F3020008F3020008F3020008F30200084A +:1002C000F3020008F3020008F3020008F30200083A +:1002D000F3020008F3020008F3020008F30200082A +:1002E000D5050008B918000845B90008000000004D +:1002F00002E000F000F8FEE772B6374880F30888A5 +:10030000364880F3098836483649086040F20000D4 +:10031000CCF200004EF63471CEF200010860BFF35B +:100320004F8FBFF36F8F40F20000C0F2F0004EF627 +:100330008851CEF200010860BFF34F8FBFF36F8F7B +:100340004FF00000E1EE100A4EF63C71CEF20001D3 +:100350000860062080F31488BFF36F8F12F06CFAE8 +:1003600013F09CFB4FF055301F491B4A91423CBF94 +:1003700041F8040BFAE71D49184A91423CBF41F885 +:10038000040BFAE71A491B4A1B4B9A423EBF51F82D +:10039000040B42F8040BF8E700201849184A914270 +:1003A0003CBF41F8040BFAE712F084FA13F0FCFBAF +:1003B000144C154DAC4203DA54F8041B8847F9E796 +:1003C00000F094F8114C124DAC4203DA54F8041BBF +:1003D0008847F9E712F06CBA0007002000230020DC +:1003E0000000000808ED00E00001002000070020E8 +:1003F000908A010800230020F0230020F023002031 +:1004000020800020E0020008EC020008EC02000856 +:10041000EC0200082DE9F04F2DED108AC1F80CD048 +:10042000D0F80CD0BDEC108ABDE8F08F002383F328 +:1004300011882846A047002011F0B0FBFEE711F01C +:1004400079FA00DFFEE7000001F0FF01102A2BDB44 +:1004500010F0070F08D010F8013B013A8B422DD065 +:1004600010F0070F42B3F6D1F0B441EA012141EA9E +:10047000014122F007047FF000070023F0E8025654 +:10048000083C85EA010586EA010685FA47F5A3FAE4 +:1004900087F586FA47F6A5FA87F68EB9EED1F0BC55 +:1004A00001F0FF0102F0070232B110F8013B013AFE +:1004B00083EA010313B1F8D1002070470138704777 +:1004C000002D06BF35460338073815F0010F07D158 +:1004D000013015F4807F02BF013015F4C03F0130B8 +:1004E000F0BC0138704700BF704700002DE9F341B0 +:1004F00001F06CFE02F02AF8304801F04BFC12F0DB +:10050000F7F8074612F08EF9054600283ED12C4B2D +:100510009F423BD001339F423BD027F0FF02294B43 +:100520009A4239D12E4642F21074F8B200F0C8FF58 +:1005300000F0CCFF08B10024264602F0FFFA804606 +:1005400070B30024032000F0ADF8424626461E4951 +:100550001A4801F02FFC35B11C4B9F4203D00024F8 +:1005600012F058F92646002012F0CCF80EB100F037 +:10057000AFF801F089FF00F0DDFF104801F0E4FB67 +:10058000204600F057F900F0A3F8F9E72E460024C2 +:10059000CEE704460126CBE7064641F28834C7E79A +:1005A00002F04AFB0028D6D04169437E027E0091CA +:1005B0000248074901F0FEFBCDE700BFF023002011 +:1005C000010007B0000008B06C530108263A09B0DA +:1005D0008053010810B5084C04F108000CF076FABD +:1005E00004F134000CF072FA2046044A0449BDE8D4 +:1005F000104013F0BFBD00BFF0230020045A0020BC +:10060000E904000808B501F0ADFDA0F1200358424F +:10061000584108BD07B541F21203022101A8ADF807 +:10062000043001F0BDFD03B05DF804FB38B53023A4 +:1006300083F31188174803680BB111F07BFB00238B +:10064000154A4FF47A71134811F06AFB002383F3C3 +:100650001188124C236813B12368013B236063683F +:1006600013B16368013B63600D4D2B7833B9636848 +:100670007BB9022001F05EFE322363602B78032BEE +:1006800007D163682BB9022001F054FE4FF47A734E +:10069000636038BD3C2500202D0600085C26002044 +:1006A00054250020084B187003280CD8DFE800F010 +:1006B00008050208022001F03BBE022001F036BE10 +:1006C000024B00225A607047542500205C2600200F +:1006D000F8B502F033FA30B14D4B03221A70002204 +:1006E0004C4B5A60F8BD4C4B4C4A1C4619680131C2 +:1006F000F8D004339342F9D16268494B9A42F1D958 +:10070000484B9B6803F1006303F580239A42E9D2CA +:1007100012F054F812F066F8002001F07DFD02207E +:10072000FFF7C0FF404B00219A6C99641A6F19675C +:100730001A6FDA6CD9645A6F59675A6F1A6D196556 +:100740009A6F99679B6F394BD3F8802042F0006213 +:10075000C3F88020D3F8802022F00062C3F8802004 +:10076000D3F88020D3F8802042F00072C3F88020B4 +:10077000D3F8802022F00072C3F88020D3F88030B4 +:1007800072B64FF0E023C3F8084DD4E90004BFF37C +:100790004F8FBFF36F8F264AC2F88410BFF34F8F7D +:1007A000536923F480335361BFF34F8FD2F8803005 +:1007B00043F6E076C3F3C905C3F34E335B0103EAA6 +:1007C000060C29464CEA81770139C2F87472F9D2D5 +:1007D000203B13F1200FF2D1BFF34F8FBFF36F8F88 +:1007E000BFF34F8FBFF36F8F536923F4003353610F +:1007F0000023C2F85032BFF34F8FBFF36F8F302307 +:1008000083F31188854680F3088820476AE700BF94 +:10081000542500205C260020000004082000040865 +:10082000FFFF03080023002000450258004402583F +:1008300000ED00E02DE9F04F93B0B74B2022FF21EF +:1008400000900AA89D6801F0C9FDB44A1378A3B9C5 +:100850000121B34811700360302383F311880368CA +:100860000BB111F067FA0023AE4A4FF47A71AC482D +:1008700011F056FA002383F31188009B13B1AA4BA1 +:10088000009A1A60A94A1378032B03D0002313702F +:10089000A54A53604FF0000A009CD3465646D14605 +:1008A000012001F045FD24B19F4B1B68002B00F097 +:1008B0002C82002001F056FC0390039B002B01DAF0 +:1008C00000F080FE039B002BEDDB012001F02EFDEC +:1008D000039B213B1F2BE3D801A252F823F000BF5A +:1008E00061090008890900081D0A0008A10800081C +:1008F000A1080008A1080008AF0A00087F0C000842 +:10090000990B0008FB0B0008230C0008490C000899 +:10091000A10800085B0C0008A1080008CD0C000825 +:10092000010A0008A1080008110D00086D0900085F +:10093000010A0008A1080008FB0B0008A108000834 +:10094000A1080008A1080008A1080008A1080008E3 +:10095000A1080008A1080008A10800081D0A000855 +:100960000220FFF74FFE002840F0F981009B022192 +:1009700005A8BAF1000F08BF1C4641F21233ADF8CA +:10098000143001F00DFC8BE74FF47A7001F0EAFBB4 +:10099000071EEBDB0220FFF735FE0028E6D0013F03 +:1009A000052F00F2DE81DFE807F0030A0D10133691 +:1009B0000523042105A8059301F0F2FB17E00421AB +:1009C0005548F9E704215A48F6E704215948F3E766 +:1009D0004FF01C08404608F1040801F01FFC0421F8 +:1009E000059005A801F0DCFBB8F12C0FF2D1012035 +:1009F0004FF0000900FA07F747EA0B0B5FFA8BFB91 +:100A000001F038FD26B10BF00B030B2B08BF0024BF +:100A1000FFF700FE44E704214748CDE7002EA5D0AC +:100A20000BF00B030B2BA1D10220FFF7EBFD0746C8 +:100A300000289BD00120002601F0EEFB0220FFF7EA +:100A400031FE1FFA86F8404601F0F6FB0446B0B1CD +:100A5000039940460136A1F140025142514101F053 +:100A600003FC0028EDD1BA46044641F212130221DC +:100A700005A83E46ADF8143001F092FB10E725467C +:100A80000120FFF70FFE244B9B68AB4207D9284695 +:100A900001F0C4FB013040F067810435F3E7002525 +:100AA000224BBA463E461D701F4B5D60A8E7002EE4 +:100AB0003FF45CAF0BF00B030B2B7FF457AF02201E +:100AC000FFF7F0FD322001F04DFBB0F10008FFF61A +:100AD0004DAF18F003077FF449AF0F4A08EB050349 +:100AE000926893423FF642AFB8F5807F3FF73EAF42 +:100AF000124BB845019323DD4FF47A7001F032FBBD +:100B00000390039A002AFFF631AF039A0137019B45 +:100B100003F8012BEDE700BF00230020582600203A +:100B20003C2500202D0600085C26002054250020CE +:100B300004230020082300200C2300205825002037 +:100B4000C820FFF75FFD074600283FF40FAF1F2DB9 +:100B500011D8C5F120020AAB25F0030084494245B3 +:100B6000184428BF4246019201F006FC019AFF2179 +:100B70007F4801F033FC4FEAA803C8F387027C49A1 +:100B80002846019301F032FC064600283FF46DAF81 +:100B9000019B05EB830533E70220FFF733FD0028B7 +:100BA0003FF4E4AE01F072FB00283FF4DFAE002713 +:100BB000B846704B9B68BB4218D91F2F11D80A9BAF +:100BC00001330ED027F0030312AA134453F8203C3C +:100BD00005934046042205A9043701F085FF8046AD +:100BE000E7E7384601F01AFB0590F2E7CDF81480EC +:100BF000042105A801F0D4FA02E70023642104A827 +:100C0000049301F0C3FA00287FF4B0AE0220FFF78E +:100C1000F9FC00283FF4AAAE049801F02DFB0590E2 +:100C2000E6E70023642104A8049301F0AFFA00284A +:100C30007FF49CAE0220FFF7E5FC00283FF496AE5F +:100C4000049801F01BFBEAE70220FFF7DBFC002819 +:100C50003FF48CAE01F02AFBE1E70220FFF7D2FC63 +:100C600000283FF483AE05A9142001F025FB0746B8 +:100C70000421049004A801F093FA3946B9E7322020 +:100C800001F070FA071EFFF671AEBB077FF46EAE7F +:100C9000384A07EB0903926893423FF667AE022099 +:100CA000FFF7B0FC00283FF461AE27F003074F4484 +:100CB000B9453FF4A5AE484609F1040901F0AEFA82 +:100CC0000421059005A801F06BFAF1E74FF47A7062 +:100CD000FFF798FC00283FF449AE01F0D7FA00284E +:100CE00044D00A9B01330BD008220AA9002001F04E +:100CF0007DFB00283AD02022FF210AA801F06EFBDC +:100D0000FFF788FC1C4810F04FFF13B0BDE8F08FD0 +:100D1000002E3FF42BAE0BF00B030B2B7FF426AE13 +:100D20000023642105A8059301F030FA0746002846 +:100D30007FF41CAE0220FFF765FC804600283FF4DC +:100D400015AEFFF767FC41F2883010F02DFF0598D3 +:100D500001F0DAFB46463C4601F08CFBA0E5064676 +:100D60004EE64FF0000901E6BA467EE637467CE6DD +:100D70005825002000230020A0860100094A49F2DE +:100D80006900136899B21B0C00FB013344F25061F7 +:100D90001360054B186882B2000C01FB020018605A +:100DA00080B27047142300201023002070470000F9 +:100DB0000021102210B5044601F010FB034B03CBB9 +:100DC000206061601868A06010BD00BF00E8F11FDE +:100DD000F0B5ADF54F7D4FF4C47207460D466CACCF +:100DE0000021204601F0FAFA0BF0BCFE4FF47A72B3 +:100DF000254BB0FBF2F0186093E80700022384E86B +:100E000007000DF5E9702382FFF7D2FF43F2047368 +:100E10001E4906A8238413F049FA1A230DF2E3228F +:100E20000DF1300C84F8323106AB1E46083203CE89 +:100E3000664542F8080C42F8041C3346F5D1338865 +:100E40000DAE204631461380012201F0DFFB002366 +:100E500080B2E97E0393AB7E029305F119030193FF +:100E60000123009306A3D3E90023CDE904603846AB +:100E70000EF04AF80DF54F7DF0BD00BFAFF30080D6 +:100E80009E6AC421818A46EE642600209C53010894 +:100E90002DE9F0412C4CDAB080460D46237A5BBB3D +:100EA00027A9284601F02AFD0746002842D19DF8CF +:100EB0009D60C82E3ED801464FF4A662204601F040 +:100EC0008DFA4FF4807332460DF19E01C4F8F8316B +:100ED0004FF4007304F109002644C4F80C334FF4B6 +:100EE0004073C4F8203401F047FA9DF89C307772C3 +:100EF00023720BB9EB7E237206AC8122002127A856 +:100F000001F06CFA0122214627A801F03DFD0023E3 +:100F100080B2E97E0393AB7E029305F1190301933E +:100F20002823CDE904400093404605A3D3E90023DC +:100F30000DF0EAFF5AB0BDE8F08100BFAFF30080CA +:100F400026417272DF25D7B7C4360020F0B5254E92 +:100F50004FF48A75F1B0002405FB006596F8D8308F +:100F6000D822214685F8DC303AA885F8E84006AF5B +:100F700001F034FA06F1090001F028FAD5F8E4305E +:100F8000C2B206F109018DF8F0000DF1F100CDE9D2 +:100F90003A3401F0F1F9394601223AA801F02AFD6C +:100FA000082380B2317ACDE9047001270E48CDE9DB +:100FB000023706F1D80301933023009307A3D3E946 +:100FC00000230DF0A1FFA04206DD0BF0CBFDC5F81C +:100FD000E000384671B0F0BD2046FBE778F6339F5D +:100FE00093CACD8DC43600207C3600202DE9F04117 +:100FF0001D4D86B01D4E1E4F28460DF0B1FF034615 +:1010000058B30024DFF86C80ADF814400294CDE9A9 +:101010000344027B8DF8142003AA9968406803C238 +:101020001B6843F0004302930BF09EFD821900946D +:10103000384641F1000302A90AF03CFDA04205DD5B +:1010400028460DF091FF88F80040D5E798F8003069 +:10105000072B05D8013388F8003006B0BDE8F081D1 +:1010600001480DF081FFF8E77C36002040420F0078 +:10107000003C0020FA3B002070B50D4614461E4689 +:101080000DF09EFE50B9022E10D1012C0ED112A3EC +:10109000D3E900230120C5E9002307E0282C10D064 +:1010A00005D8012C09D0052C0FD0002070BD302CA4 +:1010B000FBD10BA3D3E90023ECE70BA3D3E9002377 +:1010C000E8E70BA3D3E90023E4E70BA3D3E900236C +:1010D000E0E700BFAFF30080401DA12026812A0B6E +:1010E00078F6339F93CACD8D9E6AC421818A46EEDD +:1010F00026417272DF25D7B7F017304A39059E5660 +:1011000038B505460E4C0021013501F0ADF8A4F8C4 +:101110002C55B4F82C0501F08FF878B1B4F82C05F3 +:1011200001F09AF8014648B9B4F82C0501F09CF892 +:10113000B4F82C350133A4F82C35EAE738BD00BFEC +:10114000C4360020F0B589B005460C4616460D4958 +:1011500040F2872207A81F4601F084FDBDF83C300D +:101160002A46009604930E9B074803931823CDE963 +:10117000017323460DF06AFE07A801F07DFD09B05A +:10118000F0BD00BFAC3600207C3600200A4B0B4A75 +:1011900010B51A6003F5805393F850203AB9DC6C0F +:1011A0002CB1204601F082FD20460AF03FFC0448A5 +:1011B000BDE8104001F07ABD003C0020B07B010882 +:1011C000384C00202DE9F04F8FB005460C4600AF9B +:1011D0000DF0F6FD00284BD1237E022B1BD1E38AB4 +:1011E000012B18D10BF0BEFC0646FFF7C7FD0346E6 +:1011F0004FF4C87006F51676DFF8C082B3FBF0F244 +:1012000002FB103316FA83F3C8F80030E37E33B9DB +:10121000A34B00221A703C37BD46BDE8F08F07F1A2 +:101220002401204601F01EFB0028F4D107F1140030 +:10123000FFF7BEFD97F8264007F1140107F12700DC +:10124000224612F0B5FF0028E2D10F2C08D8944BAB +:101250001C70D8F80030A3F51673C8F80030DAE730 +:1012600097F824100029D6D028460DF0A1FDD2E72A +:10127000E38A282B2BD010D8012B23D0052BCAD1E1 +:10128000BFF34F8F8749884BCA6802F4E06213436B +:10129000CB60BFF34F8F00BFFDE7302BBBD1834E38 +:1012A000E17E327A9142B6D1607E3146002291F8D9 +:1012B000DC50854200F0A580013201F58A71042AD4 +:1012C000F5D1A8E721462846FFF782FDA3E721468E +:1012D0002846FFF7DDFD9EE7B2F8EC507B6005F194 +:1012E00003094FEA99094FEA8902D11DC908A8EB01 +:1012F000C10300219D46EB46584601F06FF804F10A +:10130000EE012A465846314401F036F87B6813B99D +:10131000012000F081FF96F8D20000F08DFF044616 +:1013200030B9307200F0B2FF204600F075FFB0E037 +:10133000D6F8D4203AB996F8D200B6F82C258242D5 +:1013400001D8FFF7DDFED6F8D4202A44944208D213 +:1013500096F8D200B6F82C250130824201D8FFF76A +:10136000CFFE5FFA89F25946706801F03FF808B97C +:10137000C54679E0726896F8D2002A447260D6F8C1 +:10138000D42005EB0209C6F8D49000F055FF814542 +:1013900009D396F8D220D6F8D4000132001B86F883 +:1013A000D220C6F8D400FF2D0FD80024347200F0EC +:1013B0006DFF204600F030FF01F0C0FB3C4B188170 +:1013C00008B9FFF785F9C54625E7BB6896F8D90047 +:1013D0000AFB0362FB68D2F8E41082F8E83001F5FA +:1013E0008061C2F8E030C2F8E410FFF7AFFDFFF70C +:1013F000FDFD96F8D920013202F0030286F8D920CB +:10140000B6E74FF48A7A20460AFB02F505F1EA01B5 +:10141000314401F023FBF86000287FF4FCAE012288 +:10142000354485F8E8200BF09DFBD5F8E020D6ED9B +:10143000007A801A40F6B832B8EE677ADFED1D6A9E +:10144000192838BF1920904228BF104607EE900A8D +:10145000F8EEE77A67EEA67ADFED176AE7EE267A0E +:10146000FCEEE77AC6ED007A96F8D93071680AFB8F +:1014700003F4BB60321992F8E8505DB1D2F8E43061 +:10148000E8468B423FF428AF002182F8E810C2F80A +:10149000E010C5467368064A9B0A01331381BAE619 +:1014A0007536002000ED00E00400FA05C436002087 +:1014B00064260020CDCCCC3D6666663F78360020A1 +:1014C000014B1870704700BF7026002038B54FF0F0 +:1014D0000054144B22689A4222D1607DF8B1124B1D +:1014E0000025C922114918701148237D0930C0F820 +:1014F000DB5000F8013C4FF48073C0F8EF314FF43B +:101500000073C0F803334FF44073C0F8173400F091 +:1015100033FFE0222946204600F060FF012038BD5D +:101520000020FCE79AAD44C570260020160000207C +:10153000C436002037B501F001FB194D022300220B +:10154000184928816B71012317480AF043FE0023D4 +:1015500016494FF480520193154B16480093164BD1 +:101560000DF0FEFB154B197811B112480DF020FC5F +:101570000BF0F8FA0446FFF701FC4FF4C873B0FB18 +:10158000F3F202FB130304F5167010FA83F00C4B10 +:10159000186011F047F908B10F232B8103B030BD5B +:1015A0006426002040420F00003C002074260020EA +:1015B000791000087C360020C51100087026002034 +:1015C000783600202DE9F04F884D2DED028B81A754 +:1015D000D7E9006791B00FF20429D9E900899FED9E +:1015E000818BFFF703FD09AC0023DFF814B20893E9 +:1015F000ADF82C300993636000234FF0010A0DF120 +:10160000150205A958468DF815308DF814A08DEDFA +:10161000008B0BF08BF99DF814200023002A40F07A +:10162000A58028460DF0CCFB0446002843D1DFF806 +:10163000D4B10BF097FADBF8003098423BD30BF0B3 +:1016400091FA0390FFF79AFB4FF4C873039AB0FB2B +:10165000F3F101FB130302F5167010FA83F0CBF8D7 +:1016600000000CA8DFF8A0B19BF80010002914BFFF +:101670002346534603918DF82030FFF799FB0399D9 +:101680000CAB0DF12100C1F110021944D2B2062AAF +:1016900028BF0622039200F06FFE039A08AB304683 +:1016A000394601320093524BD2B201925246FFF7B3 +:1016B00049FD8BF800400BF055FA4E4A4E4C13682A +:1016C000C31AB3F57A7F2DD310600BF04DFA0246A2 +:1016D0000B4628460DF052FC28460DF071FB08B36E +:1016E000237A0DF1300BDFF824A1002B14BF032364 +:1016F00002238AF805300BF035FA4FF47A73012291 +:101700005946B0FBF3F0CAF80000504601F02EF83D +:101710003A4B80B240F255124946CDE900B04046FE +:10172000FFF710FD237AABB10BF01CFA4FF0000A63 +:1017300083464FF48A7294F8D900504400F00300B5 +:1017400002FB004393F8E81071B30AF1010ABAF101 +:10175000040FF0D1C82010F027FA237A002B7FF471 +:101760003EAF11B0BDEC028BBDE8F08F19461022E0 +:101770000CA800F033FE0DF1160306AA08A958467E +:101780000AF0B6FB0DAB94E8030083E803009DF874 +:101790002C300CA928468DF83C30089B0C93DDE9D1 +:1017A00006230DF0BFFD27E7D3F8E01049B1236809 +:1017B000ABEB0101FA2B38BFFA230533B1EB430F32 +:1017C000C3D3FFF7C3FB4FF48A720028BDD1C1E732 +:1017D000AFF30080401DA12026812A0BF1C6A7C1CE +:1017E000D068080F00000000000000007C360020D8 +:1017F00074360020F43B0020C4360020F93B002062 +:10180000003C002078360020753600206426002039 +:1018100010B5C2B004467C22039123A8002100F039 +:10182000DDFD039B22465A210DF1AE0004AC0BF006 +:1018300065F95A2821464FF0010228BF5A208DF839 +:10184000AD0023A800F0BAFF094B80B243F6FF7247 +:10185000CDE9004004A1D1E90001FFF773FC42B0DB +:1018600010BD00BFAFF30080759D040C8EA454D64C +:10187000F83B00200FB407B504A951F8040B0191FF +:10188000FFF7C6FF03B05DF804EB04B0704700003B +:101890000EB403B503A951F8040B0191FFF7B8FF8B +:1018A00002B05DF804EB03B07047000010B50446C9 +:1018B0000AF0BCF8204610BD10B50948094C0AF0E2 +:1018C000C1FB094A0020094912F054FC20460BF0E4 +:1018D000FDF82046044A0649BDE8104012F04ABC13 +:1018E000003C0020AC360020045A00208D11000876 +:1018F000AD0D000870470000064A00230261064A49 +:101900000362426140F2DC520285044A02631846D7 +:10191000704700BFDD89000851190008062A6D7361 +:101920001FB50368186801F0CBFE1022694601F06C +:101930002FFC01460448FFF79DFF0121034801F0F9 +:1019400039FD05B05DF804FBB8530108C85000200C +:101950001FB50C464CF2503201A90A480FF00CF8A2 +:1019600068B934B1628901A861680EF085FE246807 +:10197000F7E701A80EF0D6FD204604B010BD6FF0C9 +:101980000200FAE7A85A002030B585B00D460022C3 +:101990000E4801A90FF008F8A8B94FF4C172BDF8BC +:1019A000081002F079F90446286034B1628901A870 +:1019B00061680EF077FE2468F7E701A80EF002FEDA +:1019C000012005B030BD0020FBE700BFA85A002071 +:1019D00000212DE9F04104469EB0084609F072FD51 +:1019E000642000F0A9FC21684F482A3101F0AAFCCC +:1019F000606A48BB4D4801F0DBFB01F061FE0790D7 +:101A00004B4801F0D5FB01F05BFE0890494801F01E +:101A1000CFFB01F055FE099023680AA946482A33F6 +:101A20000A930EF09BFF454B09AA07A92068029371 +:101A3000434B01930023009308AB08F085FA02465C +:101A400070B140480BF082F801F03AFE0790E06A6E +:101A500001F036FE0990A06A01F032FE0890DBE743 +:101A600039490590206808F091FA059A37492068AD +:101A700008F08CFA364916A82F4E09F097FF16A8E1 +:101A800009F09CFF4FF0FF3301220CA91CA8314F35 +:101A90000FF098FD022311A92F481A46DFF8C480E1 +:101AA0000FF090FD03200FF0A1FD4FF0FF300FF07D +:101AB000D5FDC207054611D530460EF08DFF2168D1 +:101AC00091F83130C3F38003984207D030B32348F4 +:101AD00009F0B6FC2146224809F0B2FCAB07E4D578 +:101AE00040F606050BA92068FFF74EFF0028DCD062 +:101AF0000B9B002BF6D05B68988901F0DDFDB0F5FB +:101B0000006F01D0A84205D121680B98CB68984797 +:101B10000028E7D00B9802F05DF8E3E7384609F0BB +:101B20008FFC21464046D7E7C0530108D253010835 +:101B3000E0530108EC530108A85A002025B400081E +:101B4000F9180008FA53010875370008BD39000874 +:101B5000404B4C00413A0008C05A0020013A0008AE +:101B600021190008F518000808B5FFF731FF00003B +:101B70002DE9F74F8046009100F028FC00F58060C9 +:101B800010F0BCFC054600284AD00446C14699F92D +:101B900000B0BBF1000F41D0A9EB0803009A9342BB +:101BA0003CD2BBF17B0F09F1010703D004F801BB64 +:101BB000B946ECE77D21384612F06AFB064600285C +:101BC000F4D0A0EB09024FF0030BDFF85C9002F1B8 +:101BD000FF3AD9F800301846019300F0F7FB504562 +:101BE000019B11D152463946184600F0CFFB58B937 +:101BF000D9F804702046394612F058FB384600F0F8 +:101C0000E5FB771C0444D3E7BBF1010B09F108099C +:101C1000DFD14FF07B0304F8013BC9E700232370B9 +:101C2000284603B0BDE8F08F18230020F7B54FF425 +:101C300080600E460E4F10F061FC0446054664239A +:101C400001220DF10701304601F000FA01280CD104 +:101C50009DF8073005F8013B2B1B032BEFDD3946C0 +:101C6000281F00F0A7FB0028E9D1204603B0F0BDF3 +:101C70001F5501082DE9FF410446202009F0D0FE40 +:101C8000054610B1002101F061F95022274928468C +:101C9000274FDFF8A88001F03DFB1421284601F012 +:101CA0002DFA1421284601F035FA94F83030064612 +:101CB0007BB1002384F83030BFF34F8F1D491E4B9A +:101CC000CA6802F4E0621343CB60BFF34F8F00BFDA +:101CD000FDE794F831203AB14FF47A7084F831304E +:101CE00000F02AFBFEF7F4FC002EDAD0082009F001 +:101CF00097FE3C2241463B46C0E90046009040F634 +:101D0000F81010F03FFC40F2552204F1080103A83E +:101D100000F0A8FF206A20B1C36B23620FF0FCFE25 +:101D2000F8E703A800F0A8FFBBE700BF18540108BC +:101D3000BD20000800ED00E00400FA052054010871 +:101D400008B5FFF797FF000013B5044601F04EFCFD +:101D50000EF0EEFD3C2009F063FE0A4B20603C22B1 +:101D6000094940F6F810009410F00CFC074B3C2297 +:101D70000749606040F6F810009410F003FC02B0D0 +:101D800010BD00BF691B00082C540108411D00084C +:101D9000345401084FF00053054A1968914206D1A6 +:101DA0005A6822B142629A68C262DB6883627047F5 +:101DB0009AAD44C50EB477B5044607AD00F13401C1 +:101DC0004FF4227255F8046B4C34684600F04AFF19 +:101DD0002B4632464FF48071204601950AF08EFE64 +:101DE00021460548FFF746FD684600F045FF03B071 +:101DF000BDE8704003B07047BB5301082DE9F04FB8 +:101E00000746ADF5037D884614460025642301226C +:101E100002A9404601F01AF9012840F0A8809DF976 +:101E20000830013C0D2B04D1022D0CBF03250125E8 +:101E3000ECE70A2BE9D105F0FD06012EE5D10135CD +:101E4000EDB2042DE2D14E493846FFF7B3FF3046DC +:101E5000002600F0E1F9304600F0EEF990B10021E3 +:101E6000304600F001FA68B101360A2000F064FA49 +:101E7000304610F0CDF90546002010F0C9F9281AB7 +:101E8000A042E8D324F003044FF000094FF0640BA4 +:101E9000DFF8FCA0B4F5001F4E4628BF4FF4001435 +:101EA000A6423ED2A21B42F2107302A94046B2F5EE +:101EB000007F28BF4FF40072019201F0C7F8051EA1 +:101EC0002FDD15F003010ED0019A95420BD2C1F11E +:101ED000040202A942F210734046294401F0B6F808 +:101EE0000028C8BF2D1830462E44C5F3870202A92A +:101EF0000BFB06F500F07AFA0A22B5FBF4F5EDB219 +:101F0000B5FBF2F302FB1353DBB23BB9A94506D094 +:101F10002A4651463846FFF74DFF00E04D46A94698 +:101F2000BEE716F01F040DD04FF40072FF2102A887 +:101F300000F054FAC4F1200202A93046C2F387022D +:101F400000F054FA00F0A2F9002000F065F900F06A +:101F5000F5FD024678B901230A49384687F8313041 +:101F6000FFF728FF66220849404601F027F80DF5E3 +:101F7000037DBDE8F08F05493846FFF71BFFF6E704 +:101F8000405401085A54010869540108D05401080A +:101F90004C540108F0B50C4685B00646FFF746FEE6 +:101FA00005463F223D49204601F008F807223C49FA +:101FB000284600F0EBF9F8B93A49284612F092F9B0 +:101FC00020B93949284612F08DF9A8B1113012F024 +:101FD000D7F8214602463046FFF710FF284609F0A1 +:101FE00025FD002C49D0204600F0C4FF204605B056 +:101FF000BDE8F04009F01ABD1B222C49284600F02C +:10200000C5F9A8B94FF4017206F1340103A800F034 +:1020100029FE06F14C010846019100F0D7F901991B +:102020000246204600F0CAFF03A800F025FED5E7CF +:102030000B221F49284600F0A9F910B9012386F8A0 +:102040003030002303A91B48039309F0DDFC96F808 +:10205000303007469BB148221749204600F0AEFFBA +:10206000284609F0E3FC2CB1204600F083FF20460F +:1020700009F0DCFC384609F0D1FC05B0F0BD03994D +:10208000FFF776FD064600F0A1F9024631462046EC +:1020900000F094FF304609F0C9FCE1E7E454010880 +:1020A000245501082C5501083E55010850550108DA +:1020B0006C550108785501088355010873B504462D +:1020C000D0E90001FFF766FF25680A4B2046DE686D +:1020D00009F0ACFC40F22E2205F1080101A800F045 +:1020E000C1FD2B6A01A8F3632E6200F0C5FD02B0AA +:1020F00070BD00BF485F00202DE9F84F4FF47A73A0 +:1021000006460D46002402FB03F7DFF85080DFF897 +:10211000509098F900305FFA84FA5A1C01D0A3421B +:1021200012D159F824002A4631460368D3F820B06A +:102130003B46D847854207D1074B012083F800A0D2 +:10214000BDE8F88F0124E4E7002CFBD04FF4FA70CF +:102150000FF02AFD0020F3E7145100203023002067 +:1021600034230020002307B5024601210DF10700AA +:102170008DF80730FFF7C0FF20B19DF8070003B0CE +:102180005DF804FB4FF0FF30F9E700000A46042138 +:1021900008B5FFF7B1FF80F00100C0B2404208BDB2 +:1021A000074B0A4630B41978064B53F821400146D4 +:1021B00023682046DD69044BAC4630BC604700BF55 +:1021C0001451002034230020A086010070B5104C6B +:1021D0000025104E10F028F82080306823888342B4 +:1021E0000CD800252088013810F01AF823880544FF +:1021F000013BB5F5802F2380F4D370BD10F010F8AB +:10220000336805440133B5F5802F3360E5D3E8E743 +:1022100016510020D050002010F0D4B800F100601A +:1022200000F580200068704700F10060920000F522 +:10223000802010F055B80000054B1A68054B1B882C +:102240009B1A834202D910440FF0EABF0020704766 +:10225000D050002016510020024B1B6818440FF08C +:10226000E5BF00BFD0500020024B1B6818440FF0A0 +:10227000EFBF00BFD05000200020704700F1FF509A +:1022800000F58F10D0F8000870470000064991F85B +:10229000243033B100230822086A81F82430FFF784 +:1022A000C3BF0120704700BFD4500020014B186805 +:1022B000704700BF0010005C194B0138032208442E +:1022C00070B51D68174BC5F30B042D0C1E88A64274 +:1022D0000BD15C680A46013C824213460FD214F9C6 +:1022E000016F4EB102F8016BF6E7013A03F1080302 +:1022F000ECD181420B4602D22C2203F8012B04249C +:10230000094A1688AE4204D1984284BF967803F8F1 +:10231000016B013C02F10402F3D1581A70BD00BFF9 +:102320000010005C3C230020245601087047000088 +:10233000704700007047000070B504464FF47A768D +:102340004CB1412C254628BF412506FB05F0641BF6 +:102350000FF02AFCF4E770BD70B5044641F6641630 +:1023600044B1B442254628BF35462846641B0FF0C9 +:102370001BFCF5E770BD0000002310B5934203D0AD +:10238000CC5CC4540133F9E710BD0000013810B52E +:1023900010F9013F3BB191F900409C4203D11AB1C1 +:1023A0000131013AF4E71AB191F90020981A10BDF1 +:1023B0001046FCE70138013910F9013F11F9012FEE +:1023C0000BB19342F8D0981A7047000003460246BA +:1023D000D01A12F9011B0029FAD1704702440346B2 +:1023E000934202D003F8011BFAE770472DE9F84346 +:1023F0001F4D14460746884695F8242052BBDFF847 +:1024000070909CB395F824302BB92022FF214846C8 +:102410002F62FFF7E3FF95F824004146C0F1080260 +:1024200005EB8000A24228BF2246D6B29200FFF7F9 +:10243000A3FF95F82430A41B17441E449044E4B233 +:10244000F6B2082E85F82460DBD1FFF71FFF0028C5 +:10245000D7D108E02B6A03EB82038342CFD0FFF78A +:1024600015FF0028CBD10020BDE8F8830120FBE751 +:10247000D4500020024B1A78024B1A70704700BFEC +:10248000145100203023002038B51A4C1A4D204634 +:102490000EF0D4FC294620460EF0FCFC2D684FF4CB +:1024A0007A70D5F89020D2F8043843F00203C2F8CD +:1024B0000438FFF741FF114928460EF0F9FDD5F821 +:1024C00090200F4DD2F80438286823F002030D49FC +:1024D000A042C2F804384FF4E1330B6001D00EF093 +:1024E00013FC6868A04204D00649BDE838400EF0ED +:1024F0000BBC38BD08620020A0850108A885010832 +:1025000034230020FC5000200C4B70B50C4D0446C9 +:102510001E780C4B55F826209A420DD00A4B00210C +:1025200018221846FFF75AFF0460014655F82600A6 +:10253000BDE870400EF0E8BB70BD00BF1451002034 +:102540003423002008620020FC500020F8B571B64A +:10255000002301201A4619460DF0A2FD04468020F2 +:102560000FF0D0FF002849D00025254A80274FF4DE +:10257000D06C3D26136913F0C06F26D1D2F810310C +:1025800013F0C06F21D1236805F1006199602368C1 +:10259000D86023685F602368C3F800C021680B68B7 +:1025A00043F001030B6021680B6823F01E030B60EE +:1025B00021680B68DB07FCD4237B8035616806FA51 +:1025C00003F3B5F5001F0B60D4D120460DF09EFD3E +:1025D000B5F5001F11D000240A4E0B4D01200FF05D +:1025E000F1FE3388A34205D92868204401340FF056 +:1025F0002FFEF6E700200FF0E5FE61B6F8BD00BF44 +:102600000020005216510020D05000202DE9F34741 +:102610000D46044600219046284640F27912FFF705 +:10262000DDFE234620220021284604F122070CF07B +:102630001BFE231D022220212846C0260CF014FE7A +:10264000631D0322222128460CF00EFEA31D032247 +:10265000252128460CF008FE04F108031022282149 +:1026600028460CF001FE04F1100308223821284608 +:102670000CF0FAFD04F111030822402128460CF069 +:10268000F3FD04F112030822482128460CF0ECFD6A +:1026900004F114032022502128460CF0E5FD04F13A +:1026A00018034022702128460CF0DEFD04F12003BF +:1026B0000822B02128460CF0D7FD04F1210308229E +:1026C000B82128460CF0D0FD314608363B4608229A +:1026D000284601370CF0C8FDB6F5A07FF4D194F878 +:1026E0003230314604F1330A00268DF807300822D3 +:1026F0000DF1070328460CF0B7FD9DF807304FEAAF +:10270000C6099E4209F5A47720D394F83231502BA4 +:1027100028BF50238DF80730B8F1000F08D1394693 +:1027200009F24F170DF10703072228460CF09CFD14 +:10273000002604F233149DF8073007EBC6019E42D1 +:102740000DD30731C80802B0BDE8F0870AEB0603D5 +:1027500008223946284601360CF086FDCDE7A3193C +:102760000822284601360CF07FFDE4E713B5044645 +:10277000084600212022234601900160C0F8031082 +:102780000CF072FD231D0198022220210CF06CFD3B +:10279000631D0198032222210CF066FDA31D019800 +:1027A000032225210CF060FD019804F1080310229A +:1027B00028210CF059FD072002B010BD2DE9F3418E +:1027C0000D4604460021164628467B22FFF706FEEA +:1027D00023460322002128460CF046FD637805229B +:1027E00003211F2B284628BF1F238DF806300DF12B +:1027F00006030CF039FD0123DF0003F101089DF809 +:102800000620013B9A421CD894F821305A2B28BF4D +:102810005A238DF807303EB9394607370DF10703C3 +:10282000072228460CF020FD002622349DF80730B0 +:1028300007EBC6019E420DD30731C80802B0BDE8C0 +:10284000F08104EB08030822394628460CF00CFD01 +:102850004346D1E7A3190822284601360CF004FDAF +:10286000E4E70000F7B5047F05460E462CB1838AE5 +:10287000122B02D9012003B0F0BD00230722284605 +:10288000009619460CF0B4FB731C0122072100933B +:10289000284600230CF0ACFBD4B9B31C0522082158 +:1028A0002846009323460D240CF0A2FBB378102B8E +:1028B000E0D83746BB1BB278934210D307342B7F46 +:1028C000A88AE408B3B9844294BF00200120D2E76B +:1028D000AB8A0824DB00083BDB08B370E6E7FB1C8F +:1028E00021460822284600930023083401370CF0C3 +:1028F0007FFBDFE7201A18BF0120BCE7F7B5047F94 +:1029000005460E462CB1838ACA2B02D9012003B09A +:10291000F0BD002308222846009619460CF068FBFB +:10292000731CD4B90822009323461024114628466C +:102930000CF05EFB7378C82BE8D801235F1C72781B +:10294000013B934210D307342B7FA88AE408B3B924 +:10295000844294BF00200120D9E7AB8A0824DB0021 +:10296000083BDB087370E5E7F31921460822284687 +:10297000009300230CF03CFB08343B46DEE7201AB2 +:1029800018BF0120C3E70000F7B50D46044600213B +:10299000164628468122FFF721FD23460822002102 +:1029A00028460CF061FC94F901206378002AB8BF36 +:1029B0007F238DF807309EB90F270DF107030722FB +:1029C000082128460CF050FC002602349DF8073000 +:1029D00007EBC6019E4205D30731C80803B0F0BD1E +:1029E0000827F1E7A3190822284601360CF03CFC21 +:1029F000ECE70000F7B50E460546002114463046C8 +:102A0000CE22FFF7EBFC2B462822002130460CF0AB +:102A10002BFC2B7AC82B28BFC8238DF807308CB924 +:102A200030240DF107030822282130460CF01CFC4D +:102A30002F467B1B9DF80720934205D3E01DC0085D +:102A400003B0F0BD2824F3E707F10903214608226B +:102A50003046083401370CF007FCEAE7F7B5047F8D +:102A600005460E4634B1838AB3F5827F02D9012030 +:102A700003B0F0BD012310220021284600960CF07F +:102A8000B7FADCB9B31C092210212846009323466B +:102A900019240CF0ADFA7388B3F5807FE7D8374678 +:102AA000BB1B7288934210D307342B7FA88AE4089B +:102AB000B3B9844294BF00200120D9E7AB8A102427 +:102AC000DB00103BDB087380E5E73B1D2146082255 +:102AD000284600930023083401370CF089FADFE719 +:102AE000201A18BF0120C3E730B50A44084D9142AF +:102AF0000DD011F8013B5840082340F30004013B7E +:102B00002C4013F0FF0384EA5000F6D1EFE730BD0C +:102B10002083B8ED10B50144074C884209D010F865 +:102B2000013B83EA122334F8133083EA022292B283 +:102B3000F3E7104610BD00BF34560108F7B5384A18 +:102B40006B46106851686A4603C308233549364806 +:102B500011F03EFB0446002833D10A25334A6B4668 +:102B6000106851686A4603C3082331492E4811F0A2 +:102B70002FFB0446002849D00369B3F5E01F45D870 +:102B8000B0F8661040F2374291423FD1294A0244E0 +:102B900002F15C018B4239D35C3B234900209E1A31 +:102BA000FFF7A2FF04F16401074632460020FFF759 +:102BB0009BFFA3689F4229D1E368984208BF002584 +:102BC00024E00369B3F5E01F27D8418B40F2374278 +:102BD000914220D1174A024402F110018B4218D3CE +:102BE000103B114900209D1AFFF77EFF04F11801E8 +:102BF00006462A460020FFF777FFA3689E4202D1CF +:102C0000E368984201D00D25A8E70025284603B0C7 +:102C1000F0BD1025A2E70C25A0E70B259EE700BF1D +:102C200034580108DCFF1B00000004083D5801086F +:102C300090FF1B000800FCF707B5074A6B461068B9 +:102C400051686A4603C308230449054811F0C0FAD5 +:102C500003B05DF804FB00BF34580108DCFF1B0023 +:102C60000000040810B50B68044608469B68216004 +:102C70009847204610BD000010B504460068036860 +:102C8000DB689847204610BD70B5002604460D4607 +:102C9000C0E9026601200FF06DFCB04220602046C2 +:102CA00008BF35462674656070BD000010B5037C12 +:102CB000044613B900680FF061FC204610BD000007 +:102CC0000023BFF35B8FC360BFF35B8FBFF35B8FEA +:102CD0008360BFF35B8F7047BFF35B8F0068BFF308 +:102CE0005B8F704770B505460C30FFF7F5FF044663 +:102CF00005F108063046FFF7EFFFA04206D96D68E0 +:102D00003046FFF7E9FF2544281A70BD3046FFF72B +:102D1000E3FF201AF9E7000070B505464068A0B14E +:102D200005F10C0605F10800FFF7D6FF0446304612 +:102D3000FFF7D2FF844204F1FF34304694BF6D6840 +:102D40000025FFF7C9FF2C44201A70BD38B50C468A +:102D50000546FFF7C7FFA04210D305F10800FFF7B3 +:102D6000BBFF04446868BFF35B8FB4FBF0F100FB6A +:102D700011440120AC60BFF35B8F38BD0020FCE73D +:102D80002DE9F041144607460D46FFF7C5FF844282 +:102D900028BF0446D4B1B84658F80C6B4046FFF73C +:102DA0009BFF3044286040467E68FFF795FF331A4A +:102DB0009C4203D801206C60BDE8F081A41B6B60CD +:102DC0003B682044AB60E8600220F5E72046F3E76B +:102DD00038B50C460546FFF79FFFA04210D305F11A +:102DE0000C00FFF779FF04446868BFF35B8FB4FB06 +:102DF000F0F100FB11440120EC60BFF35B8F38BDA4 +:102E00000020FCE72DE9FF418846694607466C46ED +:102E1000FFF7B6FF002506B204EBC606B4420AD09F +:102E2000626808EB050120680834FFF7A5FA54F83A +:102E3000043C1D44F2E729463846FFF7C9FF2846FF +:102E400004B0BDE8F0810000F8B505460C300F462F +:102E5000FFF742FF05F1080604463046FFF73CFF46 +:102E6000A042304688BF6C68FFF736FF201A3860F2 +:102E700020B12C683046FFF72FFF2044F8BD00003A +:102E800073B5144606460D46FFF72CFF84420190A9 +:102E900028BF0446DCB101A93046FFF7D5FF019BEE +:102EA00033B93268C5E90233C5E9002401200CE0DA +:102EB0009C42286038BF0194019884426860F5D92B +:102EC0003368241A0220AB60EC6002B070BD20466B +:102ED000FBE700002DE9FF410F4669466C46FFF70E +:102EE000CFFF00B2002604EBC005AC4209D0D4F8F5 +:102EF0000480B81954F8081B42464644FFF73CFAD0 +:102F0000F3E7304604B0BDE8F081000038B505466F +:102F1000FFF7E0FF044601462846FFF717FF20466B +:102F200038BD00001FB504464FF0FF331046217036 +:102F30006261A36139B9042301220621009303AB26 +:102F4000039207F0D3FF204604B010BD38B50D1E24 +:102F500004464FF000024FF0020014BF022101218D +:102F600007F028FE294602462046FFF7DBFF2046F1 +:102F700038BD000010B504464069421C01D007F07E +:102F80003DFCA069431C01D007F038FC204610BD71 +:102F90001FB54069431C0ED00123042240F6FF7187 +:102FA000039303AB009207F0A1FF013018BF01208B +:102FB00005B05DF804FB0020FAE700004069431CFF +:102FC00002D0202307F0B8BD704700001FB540694C +:102FD000411C09D00123202240F6FF7103930423F2 +:102FE000009303AB07F082FF05B05DF804FB00001F +:102FF00010B5846988B00023621CCDE9023302D188 +:103000004469621C20D008AA630904F01F0002EB87 +:1030100083030122824043F8182C4FF47A72002374 +:10302000B1FBF2F002FB1011514304AACDE90403F5 +:103030000691601C009202A91A4607F0F5FD431E96 +:103040005842584108B010BD1846FBE72DE9F04141 +:103050000F468CB0194604469046FFF7C9FF30B9B9 +:1030600011F0A0F80B2303604FF0FF3542E0A56993 +:10307000102304AE102202936B1C4FF00001304667 +:1030800008BF6569FFF7AAF902AB424628463946F0 +:10309000CDE90063082307F079FC051E24DD221D1D +:1030A00008AF3346083203CBBB4242F8080C42F863 +:1030B000041C1E46F5D1A36901331BD0102303AABB +:1030C00039466069039307F00DFF0028CCD163688F +:1030D00023F0FF02089B23F0FF039A420AD1A26863 +:1030E000099B9A4206D1BFE723781BB9237F0BB116 +:1030F00005B9257728460CB0BDE8F08108B54069D0 +:10310000431C05D007F018FCB0FA80F0400908BD58 +:103110000020FCE77FB543690446013303D1002456 +:10312000204604B070BDFFF763FF0028F7D01023DE +:1031300002AA211D6069029307F078FA431C054634 +:10314000EDD0202008F06CFC04460028E8D00023D5 +:1031500001264561062103704FF0FF333246039686 +:10316000836104232846009303AB07F0BFFE20468B +:103170002677FFF70DFFD3E708B5486800F0A0FAFF +:1031800000F10050B0F1805F2CBF0020012008BD8D +:1031900013B50C460092019000F092FA009B224673 +:1031A00001A90190022008F085F802B010BD0000CE +:1031B000002307B5014601AA0220019308F096F802 +:1031C000019800F07DFA03B05DF804FB70B5164677 +:1031D000184610220D4600211C46FFF7FFF8304626 +:1031E00000F06AFA0223608028466370FFF7E0FF70 +:1031F00000F066FA606070BD2DE9F04143698EB061 +:103200000446013304D1002528460EB0BDE8F08104 +:10321000012306AD03932B46FFF7D8FF2378002B3D +:1032200040D029462046FFF7A7FF80B302210022A5 +:10323000084607F0BFFC431C0746A061E3D00AAE76 +:103240004FF0000895E80F0086E80F00042203AB5A +:1032500040F6FF7138460092CDE9048807F046FE3B +:1032600010223146A06907F08FFA013049D0079B40 +:103270004046049300F024FA0823059003224146B7 +:10328000009304ABA06907F031FE013039D02378F8 +:1032900043B1079B013305D12046FFF797FE204637 +:1032A000FFF776FE10222946606907F005FB064607 +:1032B0000028A8D10123257823774DB3079B01333C +:1032C000A2D110270AA960690DEB0702049707F045 +:1032D00009FE02213246084607F06CFC0346A06155 +:1032E00001330ED0042203AB40F6FF71009207F0C9 +:1032F000FDFD3A460AA9A0690B9607F045FA013090 +:1033000082D1A06907F07AFA4FF0FF33A3617AE720 +:103310001D4679E71FB54369044601330FD06B465C +:10332000FFF754FF2046FFF733FE1022694660691D +:1033300007F02AFAB0FA80F0400904B010BD00206E +:10334000FBE7000070B586B005460C46FFF73EF877 +:103350001128024621D1294601A810F0AFFF651EB1 +:10336000002305340E4E6A460D4901A88DF815302C +:10337000009310F0F5FF80B11022002111F0F2F857 +:10338000FF280AD805F8010F6A463146002010F0E0 +:10339000E7FFAC42EFD1012000E0002006B070BD95 +:1033A0003C55010808B50B460146014809F0CEFB23 +:1033B0004858010807B5064B3C22017105490090A9 +:1033C00042F2F8100FF0DEF803B05DF804FB00BF26 +:1033D000E53500085858010870B5064694B0154602 +:1033E00021BB036813B34A2201A8FEF7F7FF42F698 +:1033F0003413287BADF804302B68CDF80A3009F07F +:103400006BFC04460246291D0DF10E00FEF7B4FFC9 +:103410004FF6FF72A11D02A8FFF77CFB04F10A0220 +:10342000ADF8060001A93068FFF7C8FD14B070BD03 +:10343000FFF7D2BF2DE9F04105469CB06049062058 +:10344000FEF726FA2B79DB076AD5202008F0E8FA88 +:10345000044610B10121FFF779FD2C60002C5FD1EB +:10346000224658490320FEF713FA574F6420FEF70F +:1034700073FF28680028F9D000234A2209A9FFF722 +:10348000E5FDA0F10B0306463F2B26D8BDF824200E +:1034900042F634139A42E9D1011F4FF6FF720AA88F +:1034A000FFF738FBBDF826308342DFD1A6F10A03CF +:1034B0000022DDF82A1005A8DBB200920DF12E02E1 +:1034C00009F0EAFB26683046FFF726FC0F2804D9EE +:1034D000102205A93046FFF795FC00230593ADF8AF +:1034E0002030CDE90633D4F80080102205A94046EB +:1034F000FFF7F0FC10280646B8D109F035FB04238D +:1035000010F5FA623846009341F1000305A908F06E +:10351000D1FA0028AAD031464046FFF717FCE2E76F +:103520002A4A09AB1068516803C3906818600023E9 +:1035300009A88DF81430FEF749FF1CAB4EF2841237 +:1035400009A91844302300F84D3C2868FFF754FEC1 +:10355000024670B91E490320FEF79AF92C682CB177 +:103560002046FFF707FD204608F060FA00242C6093 +:103570007BE7184B2946174A049305AB124803957D +:1035800009F01CFB024608B91349E4E7134A082076 +:10359000936843F01003936008F042FA044660B168 +:1035A000142008F03DFA064618B14FF4A871FFF751 +:1035B0006BFB00232660237157E702460849CAE7E0 +:1035C0006458010878580108003C00200C59010893 +:1035D0009F58010831340008C0580108008002409B +:1035E000E258010808B5FFF725FF0000F8B50120F3 +:1035F000002301334000DBB20E2BFAD10EF0B6FFF0 +:1036000000284CD0264A0623C2F89830254BC2F831 +:103610009C00C2F8A0300523C2F89430536A43F4EA +:10362000803353620023C2F88430BFF34F8FD2F847 +:10363000803043F6E075C3F3C904C3F34E335B0136 +:1036400003EA0507214647EA81760139C2F8746228 +:10365000F9D2203B13F1200FF2D1BFF34F8FBFF30C +:103660006F8F114B00F140021860104B1A6000F18F +:1036700060020F4B1A6000F254625A6000F6484232 +:103680009A6000F591521C32DA6000F5C15300F5E2 +:10369000F150084A10330430136050600120F8BD27 +:1036A00000ED00E01B000C032851002034510020E5 +:1036B000185100202C51002040BA80B27047000001 +:1036C00000BA70476FF00B007047000010B5044659 +:1036D00028B90F4A40F299310E48FFF763FE94F87B +:1036E000313003F00502052A10D1226872B11A07A1 +:1036F00003D52146204605F01FF894F831309B068B +:1037000004D52046BDE8104005F092BB10BD00BFB7 +:10371000185901083C59010873B5044616460D4670 +:1037200029B9114A4FF4EE711048FFF73BFE2368A8 +:103730002A689A4201D1002014E0336001A9304682 +:10374000019201F04FF901A9304604F021FE2B68E7 +:10375000012120462360FFF7B9FFA3690BB1204682 +:103760009847012002B070BD18590108605901083E +:103770007047000010B5044607F0A2FF014B1C6023 +:1037800010BD00BF3C51002010B5044607F098FF63 +:1037900054B1064B186830B190F834300133DBB2C5 +:1037A000A34218BF002010BD2046FCE73C5100207A +:1037B00010B5044607F084FF0CB9002010BDA01C12 +:1037C00010F0DEFC10F0FF0303D194F90220302A40 +:1037D000F3D10A4A10680028EFD090F834209A42BA +:1037E000EBD194F9002090F932309A42E5D194F966 +:1037F000012090F933309A42DFD1DFE73C510020BD +:103800000C4B2DE9F0410E4617461C68054628B9B9 +:10381000094A40F247710948FFF7C4FD0CB9BDE8F9 +:10382000F081D4E900383A46314628464446984764 +:10383000F4E700BF385100201859010870590108F9 +:103840002DE9F04387B099460E469046054607F0AD +:1038500037FF2C4B002E08BF1E46B8F1000F08BFE3 +:103860009846B9F1000F08BF99463368002B45D13F +:1038700002AF314628463A46FFF74EFF044688B36A +:103880000397102401276A68D8F8003093421EBFBE +:10389000009244F040046B60AA68D9F8003018BF69 +:1038A000CDF810D093421FD0AB6001AB44F02004A0 +:1038B000019205935FB90DF108083146284642464A +:1038C000FFF72AFFA8B144F01004CDF80C8044F0B3 +:1038D000800487B103AA21462846FFF791FF07B06D +:1038E000BDE8F0830127CEE7002FE4D0002CF6D00E +:1038F000EDE7002CEBD144F48064EBE700273C4675 +:10390000C1E700BF807001082DE9F843DDF824907D +:10391000984604460E46174607F0D2FE224B1D6815 +:103920004DB10025214A40F22D112148FFF73AFD03 +:103930002846BDE8F883002CFAD0B9F1000FF7D083 +:103940001C4B20461C492361089B002F14BF3A469C +:103950000A46A56023620A9B2585E360B8F1000F43 +:1039600014BF43460B4684F83150002E18BF314631 +:103970006562A56384F83450C4E90055C4E906556E +:10398000FFF75EFF2046C8470028D1D194F83130B8 +:103990009B0602D5204605F09BFA00220121204615 +:1039A0002546FFF72DFFC3E73C51002018590108B9 +:1039B00088590108C5360008807001081FB5044603 +:1039C00007F07EFED4B194F83130DA0716D443F014 +:1039D000010384F83130A3690BB1204698470123D5 +:1039E000204601AA08218DF80430FFF709FF0321C2 +:1039F000204604B0BDE81040FFF768BE04B010BD1B +:103A00001FB5044607F05CFEBCB194F831305A078C +:103A100013D443F004030321204684F83130FFF728 +:103A200055FEE3690BB120469847012301AA042102 +:103A300020468DF80430FFF7E3FE04B010BD00000F +:103A40001FB5044607F03CFE9CB194F831305A078C +:103A50000FD523F0040384F83130E3690BB120461D +:103A60009847002301AA042120468DF80430FFF76F +:103A7000C7FE04B010BD000008B507F055FF084BA5 +:103A800000221A7007F058FF064B186800B908BDED +:103A9000436F1BB1BDE8084000F06ABEC068F5E79F +:103AA000405100204451002038B560B9144A4FF409 +:103AB000F1711448FFF776FC01201FE0002AFBD0CB +:103AC0004268511A14E0B1F5803FF5D2A9B10389DB +:103AD0008CB213FA81F39BB29C42EDD890F90C5052 +:103AE000002DEBDA4268511A00F110029142E3D343 +:103AF00042894160144403814481002038BD00BFE5 +:103B0000A4590108865A010822F04003012B70B520 +:103B100006460D46144605D0094A4FF4A5710948DA +:103B2000FFF740FC0D2009F081FA40B10023058128 +:103B3000458143730473C0E900360123C38170BD1E +:103B4000A4590108C8590108033020F0030070B5DA +:103B50000E18BDF81450049CAE420DD804B10444B4 +:103B600018460023C0E900340223018141814373D8 +:103B700001230273C38170BD0020FCE70022FFF720 +:103B800093BF000010B538B90C4A40F24E210C48E2 +:103B9000FFF708FC012010E0B1F5803FFAD259B1DF +:103BA0008AB243899A42F5D89B1A446843812144DA +:103BB000038941609B1A0381002010BDA4590108AC +:103BC000865A01080B1E02DA5942FFF7DBBF0122B9 +:103BD000FFF76ABF2DE9F047044648B92546294A50 +:103BE00040F2DE212848FFF7DDFB2846BDE8F087DC +:103BF0000025244FDFF89880DFF8989007F094FEB6 +:103C0000A37B82462BB93A4640F2F3214046FFF7A8 +:103C1000C9FBA67B5046013EF6B2A67307F08CFEA8 +:103C2000002EE2D1637B26689B0710D523692BB950 +:103C30003A4640F201311548FFF7B4FB23692046AC +:103C400098470135EDB2002ECFD03446D6E7237B1E +:103C500003F00F03022B04D121460E2009F0F2F9E4 +:103C6000EFE7012B02D121460D20F7E71BB92046D3 +:103C700009F088F9E5E73A4640F211314846FFF786 +:103C800091FBDEE7A4590108865A0108F2590108A0 +:103C9000DC590108135A0108B2F5C17F2DE9F84F2C +:103CA00004460F4613D008D822F04003012B07D159 +:103CB0000020BDE8F84FFFF727BFB2F5207F5BD0AB +:103CC0003B4A40F227113B48FFF76CFB21E00026FE +:103CD00084B2DFF8DC903546DFF8ECA00E20B34666 +:103CE00009F0A4F90646D0B9334C07F01DFE0123B4 +:103CF00027782370FFB207F01FFE4FB931462F48D7 +:103D000007F09EFB20B107F00FFE267007F014FEAF +:103D10000DB900252BE02846FFF75CFFF9E7E31C0F +:103D200004440021264A23F0030313340160C3F541 +:103D3000807824F0030407811FFA88F84460C26089 +:103D4000B84528BFB846B3F5807FA0F80A8005D1F2 +:103D50004A464FF481715046FFF724FB55B1CBF82A +:103D60000060A7EB08070024BFB2002FB6D1284699 +:103D7000BDE8F88F3546F4E7CB1C033023F003038E +:103D800020F00300184410308342C2D809F0E0F854 +:103D900005460028EBD00444002307811334036058 +:103DA000084B24F003044781C3604460DFE700BF91 +:103DB000A45901085C5A010840510020793A0008D2 +:103DC0008200010080000100285A01082DE9F0411D +:103DD0000D46044628B9234A4FF4CC712248FFF718 +:103DE000E1FA2389AB423BD9EE1A1E4FDFF88480FB +:103DF0006389AB421BD3227B120729D1AB4227D068 +:103E0000637B9B0724D461682046091B294409F081 +:103E10009DF8D8B9134A40F2BD111448FFF7C2FA11 +:103E2000104A40F2BF111248FFF7BCFA10E0ED1A39 +:103E300023893344ADB223812468002CD8D13A467B +:103E400040F2AF114046FFF7ADFAD1E78442E7D127 +:103E500020686581258108B1FFF7BCFE002323603F +:103E6000BDE8F081A4590108785A0108A85A010850 +:103E7000C45A0108905A0108F8B50D4604460026B8 +:103E800085B17CB16189A94208D827686D1A20469E +:103E90002660ADB23C46FFF79DFEF1E7294620467D +:103EA000FFF770FE2046F8BD0346002290B20132B3 +:103EB00003B970471B68F9E710B5044680B107F0F5 +:103EC00033FDA37B0133A37307F036FDA37B3BB91E +:103ED000044A4FF451710448BDE81040FFF762BA3C +:103EE00010BD00BFA4590108E05A010838B50D46BD +:103EF000044600B121B938BD29890B4423811446F9 +:103F000022682389002AF7D162899A420DD00A4A91 +:103F10004FF459710948FFF745FA23682BB1064A57 +:103F200040F265310648FFF73DFA2A89238925606A +:103F300013442381DFE700BFA4590108F45A0108A4 +:103F4000215B010810B50C46FFF7D0FF2046BDE805 +:103F50001040FFF7B1BF00002DE9F84F05461646A7 +:103F60001F460C46002947D00B89934244D30028B2 +:103F700042D00289BB199A423EDB4FF00008DFF8BD +:103F8000C090DFF8C0A0B5F80AB06289ABEB070BB0 +:103F90006868A2EB0802616838449345414428BF31 +:103FA0009346B34528BFB3465A465F44FEF7E4F94B +:103FB0006B89A6EB0B06D844BB42B6B205D24A4683 +:103FC00040F2F7311D48FFF7EDF96389434505D20B +:103FD0004A464FF47E715046FFF7E4F96389434542 +:103FE00004D8246804B93EB94FF000086B89BB427D +:103FF00020D12D68EDB9C6B16FF00F0010E0374643 +:10400000628923899A4201D123685BB92DB16A89FB +:104010002B899A4201D12B6823B9002EB3D13046A7 +:10402000BDE8F88F6FF00500FAE7002CE7D12046D5 +:10403000F6E70027002CE3D1E9E700BF345B010875 +:10404000A45901084B5B010819B100230A89FFF745 +:1040500083BF6FF00F0070472DE9F0410F46904687 +:10406000054618B321B30026B8F1000F00D015B9EA +:104070003046BDE8F0816C892BB1A34203D31B1BF2 +:104080009BB22D68F0E7E41A6968B819A4B2194424 +:10409000444528BF444622462644A8EB0404FEF7C4 +:1040A0006BF9B6B200231FFA84F8EAE70646DFE7A9 +:1040B0000E46DDE738B515460A462989FFF7ECFDBF +:1040C000044648B12946FFF7BFFF28B1034A40F232 +:1040D00043510348FFF766F9204638BDA45901084B +:1040E000685B0108F0B5124C4FF480404FF6FF7644 +:1040F000238801330F4D04229BB2B34208BF4FF413 +:10410000404355F8041B096831B9013A12F0FF0227 +:10411000F7D11846238007E0CF8A9F4205D10138A6 +:1041200080B20028E5D12380F0BDC968ECE700BF6C +:10413000582300208C60010808B507F089FA6FEA5F +:104140008040024B6FEA9040188008BD5823002041 +:1041500010B5037D0446012B04D1054AD42105483E +:10416000FFF720F921460120BDE8104008F06ABFA2 +:104170007C5B01089E5B010810B5044628B90F4A14 +:104180004FF494710E48FFF70DF907F099FA638B1D +:104190009B0511D4E36F7BB15A7F01325A77E36FED +:1041A0005B7F2BB9054A40F22D110648FFF7FAF85C +:1041B000638B43F40073638310BD00BF7C5B010815 +:1041C000B05B0108BC5B010810B5044628B90F4A72 +:1041D00040F23F110E48FFF7E5F807F071FA638BE4 +:1041E0009B0511D5E36F7BB15B7F2BB9074A40F28A +:1041F00043110848FFF7D6F8E26F537F013B53772E +:10420000638B23F40073638310BD00BF7C5B0108E4 +:10421000B05B0108BC5B010810B5044628B9174A19 +:104220004FF4CE711648FFF7BDF8237D042B11D053 +:10423000072B1BD0032B0BD1204603F0FBF870B9E2 +:104240002046FFF7C1FF05232046237503F038FA07 +:10425000002010BD204603F0EDF80028F3D0431CE9 +:10426000F7D1638B43F008036383F1E7204603F043 +:10427000E1F80028F3D10923E6E700BF7C5B0108E1 +:10428000B05B0108F8B50E460546144607F018FA6B +:104290001B4B002E08BF1E4645B32B7D4BBB34B9CC +:1042A000FFF720FF044650B96FF0010012E01549F6 +:1042B00051F8042B126872B90133042BF8D133681A +:1042C00003B12B60104BEC821A681D60EA6003F0AA +:1042D000C1FC0020F8BDD08AA04205D117685FB1AB +:1042E000306848B1874207D0D268E4E76FF00F002A +:1042F000F0E76FF00500EDE76FF00700EAE700BFB9 +:10430000807001088C6001084C51002038B50C46C3 +:10431000054607F0D5F91CB194F834400134E4B2F5 +:104320002C7238BDF8B505460E46174607F0C8F999 +:10433000002D4CD02B7D002B4DD1022008F076FEB5 +:10434000044600284BD02B690361EB8AC38201230A +:1043500003756B7D43756B7A43722B7A0372EB7A2C +:10436000C372AB7A83722B680360EB8A3BB11D4A40 +:104370001368AB4223D1EB6813600023EB6028463F +:10438000FFF7E6FE184BA36100236377237D012B23 +:1043900005D0164A4FF465711548FFF703F8154B21 +:1043A000012E1A6838BF01261C602677E26003F0F0 +:1043B00051FC002307B13B702046F8BD1346002B8B +:1043C000DBD0DA68AA42F9D1EA68DA60D5E72C4690 +:1043D0006FF00F03EEE76FF00E030024EAE74FF0F3 +:1043E000FF33E7E74C510020894900087C5B010856 +:1043F000D45B010850510020F8B5044628B9134A8F +:1044000040F2AA311248FEF7CDFF228D41F27076BC +:10441000E36A678E656AD01AB742284494BFC11B0D +:10442000811B002901DB6285F8BD5D1B02D50020E0 +:104430006085F9E7B5F5803F05D3044A40F2BA310B +:104440000448FEF7AFFF00206585EDE77C5B0108BF +:10445000045C0108285C010838B505460C4607F0E5 +:104460002FF92DB32B7D012B05D1124A40F2D63105 +:104470001148FEF797FF2A8D42F6E063111989B2C1 +:10448000994213D88A4288BF194628462985FFF7E2 +:10449000B3FF40F6B73398420AD96B8B284643F0F6 +:1044A00002036B83BDE8384003F00AB91946ECE714 +:1044B00038BD00BF7C5B0108445C010810B50446B0 +:1044C00048B1406808B1FFF785FB21460320BDE8ED +:1044D000104008F0B7BD10BD10B500B910BD04689C +:1044E000FFF7ECFF2046F8E738B5044628B90D4A37 +:1044F00040F286610C48FEF755FF032008F096FD58 +:10450000054660B12346024604F1100153F8040B3E +:104510008B4242F8040BF9D16868FFF7CDFC2846BE +:1045200038BD00BF7C5B01086C5C010838B50446EF +:104530000D4607F0C5F804B1256138BD38B504460D +:104540000D4607F0BDF854B1237D012B05D1044A77 +:104550004FF4FD610348FEF725FFC4F8845038BDD1 +:104560007C5B0108885C010838B504460D4607F0FD +:10457000A7F854B1237D012B05D1044A40F2FC7108 +:104580000348FEF70FFFC4F8805038BD7C5B01087C +:10459000B05C010838B504460D4607F091F854B1F7 +:1045A000237D012B05D1044A40F616010348FEF78E +:1045B000F9FEC4F8905038BD7C5B0108D85C010856 +:1045C00038B504460D4607F07BF81CB1237D012B5E +:1045D00008BFA56138BD000070B504460E461546FB +:1045E00007F06EF85CB1237D012B05D1044A40F63B +:1045F00048010448FEF7D6FEC4F88C60657770BDAC +:104600007C5B0108005D010808B528B9064A40F640 +:10461000B9010648FEF7C6FE054B064A186812683F +:104620001044186008BD00BF7C5B0108205D0108D4 +:10463000542300205451002038B504460D462AB9B1 +:10464000094A40F6CF010948FEF7ACFE4DB12B8D6B +:104650003BB1282B8ABF283B00239BB29C4228BF3A +:104660001C46204638BD00BF7C5B01083C5D01084C +:10467000F8B504460D4616461F4607F021F8002CF3 +:1046800065D0002D63D0237D002B63D12B68207A69 +:104690006360268380B3FFF777F8054600285CD077 +:1046A00023680BB903682360E68A4EB32046FFF700 +:1046B000ABFF00232A4A294620650138E362606483 +:1046C000C4E90932C4E9160042F6E0634FF406700B +:1046D000221DA4F860306086FFF7AEFF01236086DC +:1046E00002212046A4F84830C4F8887002F016FE73 +:1046F000054668B12846F8BD201D04F043FDCCE70F +:10470000FFF7F0FCE0820028D0D16FF00105F1E75F +:10471000022323752EB1134A1368A3420FD1E36815 +:104720001360114B1A681C60E26003F093FA0F4BA0 +:10473000012220461A7002F0C3FFDBE71346002B6C +:10474000EFD0DA68A242F9D1E268DA60E9E76FF007 +:104750000F05CFE76FF00905CCE76FF00305C9E758 +:10476000E02EE02E4C510020445100204851002002 +:1047700010B50446406F18B1FFF7AEFE0023636723 +:1047800010BD000010B50446F8B1037D012B1CD903 +:104790000A2B1AD0FFF718FDA06F18B1FFF71AFA0D +:1047A0000023A367636F13B12046FFF7E1FF4FF6C5 +:1047B000FF73E06E2386FFF78FFE206FFFF78CFEFE +:1047C0000023C4E91B33A4F8683010BD38B5054692 +:1047D0000C4629B9274A40F68D012748FEF7E2FD2D +:1047E0002DB9244A40F68E012448FEF7DBFD2B68E4 +:1047F000A3421DD1E3682B6000232046E360FFF74E +:10480000C1FF237D0A2B1BD1E36E5BBB236F2BB152 +:10481000184A40F69E011A48FEF7C4FD636FEBB1DB +:10482000144A4FF40A611748FEF7BCFD16E0134620 +:10483000002BE1D0DA68A242F9D1E268DA60DBE766 +:10484000012B0BD0638BDA07DED543F00203204641 +:10485000638302F035FF237D012BD5D1002323751F +:10486000E38238BD034A40F69D010748FEF79AFDF2 +:10487000CCE700BF7C5B0108645D0108805D010836 +:10488000B85D0108D15D0108A05D01082DE9FF4771 +:1048900004460E4606F014FF002C61D0237D012B48 +:1048A00005D1314A4FF410713048FEF77BFD237D6E +:1048B0000A2B09D121462E48FFF788FF204604B075 +:1048C000BDE8F047FFF744BCD4F85090D4F824A0DA +:1048D000D4F89070D4F81080E58A9BB93DB1254A90 +:1048E0001368A34206D1E36813600025E5602E46F5 +:1048F0000FE01346002BF8D0DA68A242F9D1E26843 +:10490000DA60F2E721461C48FFF760FF1B4B0122EB +:104910001A70206F08B1FFF7DFFDE06E08B1FFF7F6 +:10492000DBFD606F08B1FFF7D7FD2046FFF74CFCB9 +:1049300056B1238B524649462046CDE90153231DEB +:104940000093234602F050FE2046FFF701FC3FB1E2 +:104950006FF00C0140463B4604B0BDE8F0471847F5 +:1049600004B0BDE8F08700BF7C5B0108E85D01088A +:104970005C5100204C51002044510020485100203F +:104980000121FFF783BF000010B50C4629B9064A84 +:104990004FF444710548FEF705FD2046FFF7F0FF90 +:1049A0006FF00C0010BD00BF7C5B01081C5E0108AD +:1049B00070B50C46054628B9084A40F60A11084861 +:1049C000FEF7F0FC04B970BD22682B68E6689A42D5 +:1049D00002D12046FFF7D4FF3446F3E77C5B0108A1 +:1049E0003C5E010838B50D46044680B1036873B1DA +:1049F0000B4B1968FFF7DCFF0A4B20461968FFF7DD +:104A0000D7FF25B12B6813B1074B1B6803B938BD1D +:104A100019682268914204BF2A681A60DB68F5E7CA +:104A2000445100204C510020505100200C4B0022DA +:104A300030B4196804460B4B10461D6819B968B1AB +:104A400030BCFFF723BF0B7DA34205D10B6AEB1AE5 +:104A5000934224BF1A460846C968EFE730BC704746 +:104A60004451002054510020F8B5044606F028FEB9 +:104A7000012008F0DBFA0346002836D13F4E3068AB +:104A8000002857D13E4B01463E4D1B682F68002B36 +:104A90005BD108B1FFF774FF012008F0C7FA0346A5 +:104AA00018BB0920FFF7C2FF012008F0BFFA034638 +:104AB000D8B90820FFF7BAFF012008F0B7FA03467B +:104AC00098B9220649D45CB12146013932680020E8 +:104AD0002E68C9B2002A42D113B11846FFF750FF21 +:104AE000012008F0A3FA034610B39C2218460021C7 +:104AF000FDF774FC42F6E06203464475A0F86420BA +:104B0000214A8262FF22C2720622A0F84020C28798 +:104B10001E4A02631B4A126802621D4A127882779B +:104B20001C4A82641C4AC0F884201C4AC0F89420A5 +:104B30001846F8BD438BC568190704D523F0080350 +:104B40004383FFF769FB28469AE71A6ABA1A8A4232 +:104B500024BF18461146DB6899E77F21B5E7577DEA +:104B60008F4204D307D1156A751B854203D3106A9F +:104B700039461346301AD268ACE700BF44510020D2 +:104B80005C51002054510020E02EE02EFFFF18025F +:104B9000595100200100E02E314D000800DD6D006C +:104BA0004020FFF761BF000030B50D4685B00446D8 +:104BB00028B94A4A4FF4AF714948FEF7F3FB237D09 +:104BC000002D3FD0042B01D0072B3BD1A26F22B97F +:104BD000218D42F6E062914234D0638BDB0605D42E +:104BE0003E4A4FF4B2713F48FEF7DCFB238B204670 +:104BF0000293E38A0193231D00932346626A216D89 +:104C000002F0F2FC2046FFF7BDFD374A1368A342CD +:104C100010D1E368136000230122E360334B1A7064 +:104C2000334B1B68A3421DD101F060FE002005B08C +:104C300030BD1346002BEED0DA68A242F9D1E2680B +:104C4000DA60E8E7012B1AD0022B38D0002B3ED1D6 +:104C5000E38A3BB1274A1368A34208D1E368136093 +:104C60000023E3602046FFF773FADFE71346002BCB +:104C7000F6D0DA68A242F9D1E268DA60F0E71E49BC +:104C8000002051F8232012689AB90133042BF8D17F +:104C900021461A48FFF79AFD237D012B04D10F4AC4 +:104CA000DF211748FEF77EFB2146022008F0CAF9F3 +:104CB000BCE7D56FAC4208BFD067D268E4E72146B5 +:104CC0000948FFF783FD094B01221A70CAE7204605 +:104CD00005B0BDE83040FFF79FBA00BF7C5B01081C +:104CE000705E0108905E0108445100204851002088 +:104CF000885100204C5100208C6001085051002048 +:104D0000A95E010810B5044606F0DAFC64B1237D03 +:104D100020460121012B1EBF638B43F010036383E8 +:104D2000BDE81040FFF740BF6FF00F0010BD00005E +:104D300010B50846144669B13AB11189FFF78CFBEA +:104D40002046FEF747FF002010BD33B9BDE81040F4 +:104D5000FFF7D8BF6FF00F00F6E71046F4E700004A +:104D6000F8B5044680B3866F0023D0F88450777B73 +:104D70008367E5B1014632460069A8470546E8B9B0 +:104D8000BB0612D5238D42F6E062D4F884609342CC +:104D90001CBF0133238546B10023214620691A46F2 +:104DA000B0470D3001D16FF00C052846F8BD014623 +:104DB0002B4632462846FFF7BBFFDFE70D35F2D022 +:104DC0006FF00405A667F0E76FF00F05EDE7000050 +:104DD0002DE9F8431B4D1C4F2B781C4E01332B70D3 +:104DE0003C684FF000080CB9BDE8F8832B78A27F2F +:104DF0009A4224D0A377638BD90709D543F00203E5 +:104E00002046638302F05CFC638B23F0030363831F +:104E1000638B1A0705D523F0080320466383FFF749 +:104E2000FBF9A36FD4F80C903BB1204686F80080C4 +:104E3000FFF796FF3378002BD2D14C46D3E7D4F856 +:104E40000C90FAE7595100204451002048510020AD +:104E500070B505460E46144606F032FC1DB32B7D98 +:104E6000012B19D096B16B8B43F010036B832CB1DF +:104E700001212846BDE87040FFF796BEA86F08B92B +:104E8000002070BDFEF7A6FEAC67F9E7002CF7D056 +:104E9000042B04D8022B04D86FF00A00F1E7072B8B +:104EA000FAD10021E5E76FF00F00EAE72DE9F04FB6 +:104EB0009E4D87B0DFF89C922B68DFF89C8201330F +:104EC0009B4E2B6099F80030013389F80030D8F8F8 +:104ED00000B00027BBF1000F0CD1964E944F346800 +:104EE000DFF87882DFF87892002C40F0DE8107B09E +:104EF000BDE8F08F9BF814202AB9324640F2C24137 +:104F00008D48FEF74FFA9BF81420012A05D132464E +:104F100040F2C3418948FEF745FA9BF814200A2A5B +:104F200005D1324640F2C4418548FEF73BFA99F874 +:104F300000209BF81E10914204D1DBF80C405F4624 +:104F4000A346C7E79BF814108BF81E2002299BF894 +:104F5000422040F09D80032A40F29C804FF0010ADD +:104F60009BF814C0BCF1060F0DD1BBF81A20D30674 +:104F700009D52A68DBF82010521A282A84BF0AF1C2 +:104F8000010A5FFA8AFA9BF8094014F008041CD061 +:104F9000BCF1040F03D0BCF1070F40F04981DBF8EE +:104FA00020204FF4FA742868801ADBF8942002F568 +:104FB000242101F6B841B1FBF4F1884240F2268188 +:104FC0000AF1010A01245FFA8AFADBF874206AB157 +:104FD0002A68DBF82010511ABBF9402002EB42028C +:104FE000B1EB420F02D35846FFF7C2FB9BF81420E7 +:104FF000032A40F01F812A68DBF82010521A282A61 +:1050000003D8BAF1000F00F02B815846DBF890A0CE +:10501000FFF7B8FBD8F80020002F00F014815A45A4 +:1050200005D1324640F271514648FEF7BBF9DBF834 +:105030000C20FA6084B1BBF818205B4658460292F7 +:10504000BBF8162001920BF104020092DBF8242039 +:10505000DBF8501002F0C8FADBF810205846DBF8F5 +:105060000C400592FFF774F8DFF8F8B000218BF8D8 +:105070000010BAF1000F09D0059A6FF00C0110462C +:10508000D0479BF80030002B7FF421AFBB4656E79A +:105090000B2A61E79BF899A0BAF1000F64D0DBF806 +:1050A00070202AB132464FF49B612748FEF77AF907 +:1050B000DBF86C202AB9324640F2D9412348FEF78A +:1050C00071F99BF89A200B2A3FF648AF9BF899108C +:1050D0001F4A0A4412F8011C9BF898208A420BD3FD +:1050E000BBF8601089B1584602F052F890B95846A2 +:1050F00002F0E6FA30B10DE00132D2B28A428BF80A +:105100009820EDD24FF0000A2AE7584602F0DCFC66 +:105110000028F7D19BF899204FF0000A062A8BF857 +:1051200098A0EFD801328BF8992019E7545100204C +:105130007C5B01085C510020C45E0108ED5E010843 +:10514000165F0108A95F0108425F0108745F01084A +:105150009C6001085951002044510020FE5F010865 +:105160005460010848510020BBF8302047F6FE711A +:105170008A429CBF0132ABF83020BBF94020BBF91A +:1051800030109142BEDB584602F082F938B1DBF8AC +:105190007020002AB6D1DBF86C20002AB2D09BF830 +:1051A0001420022A14D0BBF93C10BBF93E205A4807 +:1051B00002EBE1029BF842100C2928BF0C21415C54 +:1051C0008A4047F6FF718A42A8BF0A46ABF84020E2 +:1051D000BBF860100024BBF84820BBF832C09142F5 +:1051E000ABF83040ABF848C028BF11464FEA4C023C +:1051F000ABF86A4092B24808B2EB510F98BF024632 +:105200005846ABF84A2002F007FCA9E69BF89B1031 +:10521000424B03FB0122B2FBF4F2904208D95846FC +:1052200002F02CFC20B99BF89B2001328BF89B20CC +:105230000024CAE6092A7FF4E4AE2A68DBF82010CD +:10524000521AF02ADCE65A4505D0324640F2755132 +:105250003348FEF7A7F8DBF80C20C8F80020E9E691 +:105260009BF81C209BF81D100132DBF80C40D2B2D9 +:1052700091428BF81C203FF662AE2A4FDBF88C205F +:105280008BF81CA087F800A01AB9584602F018FA4B +:1052900055E65946DBF8100090473A78002A7FF42B +:1052A00016AE00287FF44BAEEFE7227D0A2A05D028 +:1052B0003A4640F2A5514046FEF774F82A68216A42 +:1052C000521AF02A11D92046FFF75CFABBF1000F01 +:1052D0000ED13268A24205D03A4640F2B751484654 +:1052E000FEF760F8E26832600EE0A346E468FBE592 +:1052F0003268A24205D13A4640F2B3510A48FEF75D +:1053000051F8E268CBF80C20D4F80CA02046FEF748 +:105310001FFF5446E8E500BF7C600108F824010047 +:10532000D45F0108485100202D60010808B5FFF73F +:105330004FFD064A13780133DBB21370DB0703D548 +:10534000BDE80840FFF7B2BD08BD00BF58510020BE +:10535000094A1388591C1180084A12681AB1084971 +:1053600009888B4204D2074A12681344187D70479B +:105370005B1ADBB2D05C70478C5100209851002042 +:105380009451002090510020F8B50C46054628B9EC +:105390001D4A40F22C411D48FEF704F8EB6898893D +:1053A000FEF78AF9C20714D4194EE76830682B89D2 +:1053B0007968228903440A449A1A002A0FDACB1A20 +:1053C000002B0ADA091A686889B22981FEF7FEFC07 +:1053D00003E020460024FFF77FF82C60F8BDB88971 +:1053E000FEF76AF9C30707D5EB6801209F89FEF72E +:1053F00063F9EB683843988127682046FFF75EF829 +:105400003C46002FD1D1E8E7A4600108C96001083B +:1054100084510020F8B5064628B91C4A40F2837131 +:105420001B48FDF7BFFF1B4B1F8867B11A4D0023B8 +:105430002B802B88BB4206D2FFF78AFF0128F8D0C9 +:10544000022801D0C8B9F8BDFFF782FF0428FAD1BD +:105450002B880133BB42F6DAFFF77AFF0402FFF72D +:1054600077FFA4B244EA00039BB25A1EB2F5806FE4 +:1054700028BF4FF480637386DBE7FFF769FF0128DD +:10548000E1D92B88023B18442880D2E7A4600108A8 +:10549000F06001089C5100208C51002010B504469A +:1054A00028B90F4A40F25A210E48FDF77BFF0E4BF8 +:1054B000187810F0100011D0638BDB0606D4D4F8F6 +:1054C00090301BB16FF00E012069984721460748C4 +:1054D000FFF77CF92046FEF73BFE012010BD00BF20 +:1054E000A46001080C610108805100204451002093 +:1054F0002DE9F84F064617460C46DFF8A490DFF872 +:10550000A8A0002C3AD0244B1D68E3685868FEF729 +:10551000D7F8E268B4F8088083469089FEF7CCF8A3 +:10552000A5EB080310F00300A3EB0B0518BF012047 +:105530002D1A002D23DBD4E900B0FEF7B5FCB6F838 +:1055400066300546834205D24A4640F264415046E1 +:10555000FDF728FFB6F86600104A451B2046118863 +:10556000A6F8665023890B441380FEF7A7FFB6F810 +:10557000663073B1BBF1000F0BD11FB10024204680 +:10558000BDE8F88F064A40F26E410648FDF70AFF73 +:10559000F4E75C46B5E700BF605100207851002079 +:1055A000A46001085C610108346101082DE9F84F2D +:1055B000044628B9374A40F287413748FDF7F2FEE2 +:1055C000237D032B05D8334A4FF491613348FDF70F +:1055D000E9FE334B334E1B78334F13F0100F00F0BE +:1055E00095803268314DB4F860102B68D4E9150EFF +:1055F000A0EB020CBCF1000F0CDB904203D1AEEB30 +:105600000300002806DB9E4513D129480068C089A5 +:1056100088420ED92648B4F862800068C0891FFA13 +:1056200080FCA4F86000E045C4E9152338BFA4F865 +:105630006200626CD01A0028C0F2698138880028A4 +:1056400039D1B4F860C07144A06D6044884232D151 +:10565000B4F9301000292EDB9A422CD194F8433053 +:10566000FF2B1CBF013384F8433094F84330032BE5 +:1056700020D9B4F848204FF6FF71638E13449BB2D3 +:105680009A4288BF0B46A4F84830204601F07CFFC0 +:1056900011E000BFA46001087C6101089561010868 +:1056A00064510020845100209E5100206051002050 +:1056B00090510020E9D0616B41B3A36B2A689B1A1B +:1056C000002B23DAB34B89B2B3F800C0B4F93C30F5 +:1056D000ACEB0102C3F3CF00121A15B213FA82F237 +:1056E000B4F93E30002D12B2A3EBA303B8BFA1EB77 +:1056F0000C01A287BCBF09180DB22B449BB2E387F3 +:1057000003EBE203A4F84030002363633888336876 +:10571000626A002800F04483217D062900F240835C +:10572000D51A012D00F19A81591E0144891A0029C8 +:10573000C0F29481DFF87092D9F80480B8F1000FBC +:1057400005D1954A40F29A519448FDF72BFE4FF649 +:10575000FE739D4205D9904A40F29B519048FDF757 +:1057600021FED9F80430ADB21B89AB4205D28A4A7A +:1057700040F29D518B48FDF715FEB9F80830002125 +:105780005B1BA9F80830D9F804301B895B1B9BB25E +:10579000B8F80A20AA42C0F0588129464046FEF7D0 +:1057A000F1F9636AD9F80C20336053603368626A98 +:1057B000991A0029C0F224826FEA030C208D02EBB3 +:1057C0000C01C84200F11C82934240F01382764DD6 +:1057D000EB68B5F808809889FDF76EFF10F00300BC +:1057E000238D18BF0120404480B28342388040D2CC +:1057F000EB689889FDF760FFC20710D5EB68B3F836 +:105800000C80404628F47C58FDF756FF00F03E001F +:10581000FDF752FFEB6848EA0008A3F80C80238DDF +:105820002B81EB689889FDF747FF8307686842BFC3 +:105830002B8903F1FF332B812989FEF7C7FAEB6827 +:10584000B5F808809889FDF737FF10F0030033683A +:1058500018BF0120626A404480B238801844238D0A +:105860001344984205D04C4A40F2D1514F48FDF7BD +:1058700099FD636F002B00F00081EB689889FDF7BC +:105880001BFFC00700F1F680D4F8748030683B88B5 +:105890000344B8F1000F37D0D8F80CC0B8F808109E +:1058A000DCF804201144591A002980F21281D31A1D +:1058B000002B29DAEB68121A2A819889FDF7FCFE81 +:1058C0008307686842BF2B8903F1FF332B81298945 +:1058D000FEF77CFAEB68B5F808909889FDF7ECFEC6 +:1058E00010F00300336818BF0120484480B23880AC +:1058F0001844D8F80C305B68984205D0264A40F22C +:1059000002612B48FDF74EFDC4F87480B5E0D14329 +:10591000D94200F19680216DC91A0029C0F2918008 +:10592000618B480709D521F004016183B4F84A105E +:10593000A4F848100021A4F86A10B4F93C00E18FE3 +:10594000636401EBE001A4F840100021A4F84210C8 +:10595000217D032938D99B1AB4F84A10B4F848209D +:105960009BB2914226D9618B11F4006F618E14BFF6 +:105970000120022011FB00F189B2994294BF501816 +:10598000D01883B29A4201D94FF6FF73A4F8483079 +:105990001AE000BF54510020A4600108AE61010864 +:1059A000BE610108CD61010868510020DD61010878 +:1059B00013620108B4F86A100B449BB299422CD8C8 +:1059C0009A422CD9A4F86A302046D4E91B21FFF76B +:1059D0008FFDE16E024620672046FFF789FD226FAA +:1059E000E066B2FA82F35B095B42238600232377E9 +:1059F00008B9A4F868009A49B4F8643009880B44DF +:105A0000A4F86430638B19057FF555AEBAB968B94F +:105A1000638B23F4006363834DE64FF6FF739B1A99 +:105A2000A4F86A30638E13449BB2ABE7C36858682E +:105A3000FDF746FEE36CC01A0028E9DA3BE6D368BE +:105A4000F5E7204601F00CFE35E6AD1AA8F808305F +:105A5000A8F80A10ADB2D8F8008099E69B1A002B7E +:105A6000BEBF638B43F0020363839FE603686367F3 +:105A7000FEF724FD606F0028F8D13A88336813449C +:105A80006362238D934205D2764A40F20D617648D7 +:105A9000FDF788FC238D20463A889B1A2385FEF764 +:105AA000ABFC6B681A891AB1704A136000236B60F3 +:105AB000EB689889FDF700FEC50704D56C4A13789A +:105AC00043F020031370DFF89C81DFF8AC91674F3F +:105AD0007AE0BCF80C00FDF7EFFDC1071BD5EB68C1 +:105AE0009889FDF7E9FD820715D4EB680120B3F82A +:105AF0000C90FDF7E1FDEB6849EA0000B5F808906D +:105B00009881EB689889FDF7D7FD10F0030018BF66 +:105B1000012048443880D8F800904046FEF7CEFC7B +:105B2000C846B3E633609089B5F808A0FDF7C4FD18 +:105B3000636A10F003009A4418BF01205044B4F87F +:105B400028A06062EB68B5F808B09889FDF7B4FD4D +:105B500010F0030018BF01205844824505D2424688 +:105B600040F231614846FDF71DFCEB68B5F808A02E +:105B70009889FDF7A1FD10F00300238D18BF0120C7 +:105B80005044181A20852046FEF736FC69680B89B8 +:105B90002BB1386838B3FEF7A9F900236B60EB68C6 +:105BA0009889FDF789FDC00709D5314A137843F07C +:105BB00020031370237D042B04BF072323752B6858 +:105BC00028466367FEF77AFC656F25B1EA68616A6B +:105BD00053688B42A6D0638BD90706D523F0010307 +:105BE00043F0020303E03960D7E743F00103638326 +:105BF000BDE8F88F656F45B91E48FEF775FC606714 +:105C00002046BDE8F84F01F02BBD4FF0000803F12E +:105C1000FF3EE8684268934215D116482B890289F5 +:105C20009A42EDD9FEF760FC0028E9D0B8F1000FE8 +:105C300007D0C8F800002946FFF7A6FBE0E70D46AD +:105C4000E7E76067F7E7B8F1000F17D1991A002965 +:105C50003BDA0848FEF748FC0028D1D06067EAE745 +:105C600078510020A46001084D6201087C51002099 +:105C700080510020685100206B620108D8F80C1098 +:105C80004968AEEB010100291FDB12EB0C0F1CD49D +:105C90004948FEF729FC07460028B1D0D8F80C3057 +:105CA00031685A68B8F808301344CB1A002B07DA69 +:105CB000891AD8F8040089B2A8F80810FEF786F807 +:105CC00029463846C8F80070B6E72968A846002972 +:105CD000B5D1D31A002B93DA8089FDF7EDFCC2070A +:105CE0008ED43548FEF700FC2860002888D0EB6889 +:105CF00031685A682B891344CB1A002B05DA891AAC +:105D0000686889B22981FEF761F83B8832681A44D5 +:105D1000636A9B1A228DD3427FF572AF2B68DB68D2 +:105D20009889FDF7C9FCC30712D52B68DB68B3F867 +:105D30000C80404628F47C58FDF7BEFC00F03E0085 +:105D4000FDF7BAFC2B6848EA0008DB68A3F80C8072 +:105D50003168238D2A685B1A616A0B4413812B68B2 +:105D600019895868FEF732F82B681D89DB68988915 +:105D7000FDF7A2FC10F00300336818BF0120626A2F +:105D8000284480B238801844238D134498423FF44D +:105D900037AF0A4A40F2FE610948FDF703FB2FE7DF +:105DA000991A002905DBDB431344228DD3427FF58A +:105DB0001FAF638B14E700BF68510020A460010887 +:105DC000DD6101082DE9F04F054687B005F078FC4C +:105DD00025B9674A83216748FDF7E4FA6B68664E88 +:105DE00033606B89132B40F2BC80DFF8B481D8F8A4 +:105DF0000010D8F8140003F0B1FB002840F0B18087 +:105E0000D8F8143003F0F003E02B00F0AA8008F17A +:105E1000140306212846009308F110032A8906F08E +:105E2000E9FF0446002840F09C8033689889FDF71C +:105E300043FC810A01F0FC01132940F292802B8976 +:105E40008AB28B42C0F08D80A2F114036889DFF81A +:105E500054919BB2494F9042DFF84CA1A9F8003011 +:105E60003C6040D32846AAF80030FDF78BFE34682A +:105E7000DFF838B12088FDF71FFC20803468404FE0 +:105E80006088FDF719FC608034686068FDF718FCD5 +:105E900060603468CBF80000A068FDF711FCA060DA +:105EA00034683860E089FDF707FC3368E081988941 +:105EB000FDF702FC334A00F03F03137083072A8981 +:105EC00049D1314B1A80314B4FF00009284A1C68E8 +:105ED000DFF8DCA0002C6FD12D4BDFF894A01C68FC +:105EE000DFF8D0905AE12B6823B9214AC221294812 +:105EF000FDF758FA14212846FDF744FE6C89B9F8DD +:105F0000009028462146AAF80040FDF73BFEA9EB89 +:105F1000040A28681FFA8AFA4389534521D3436843 +:105F200051463B60FDF72EFE2B891C446B89A4EB88 +:105F300009042C8123B10E4ADF211748FDF732FAFC +:105F40002B682A891B899A4291D0094AE02113487B +:105F5000FDF728FA8BE7531C0B499BB29A420B8042 +:105F6000B1D9284607B0BDE8F04FFDF733BE00BFFA +:105F7000A46001089062010890510020985100200F +:105F800060510020645100209E51002044510020A7 +:105F90005C510020A8620108B8620108C4620108CF +:105FA000085A00209C510020945100208451002068 +:105FB0000A630108B0630108237D23B9FB21A548CA +:105FC000FDF7F0F9A44A237D0A2B04D1FC215046A9 +:105FD000FDF7E8F9A04A237D012B04D1FD219F485C +:105FE000FDF7E0F99C4A217A39B1D8F8043093F8EA +:105FF00034300133DBB2994274D13368208B198875 +:1060000088426FD1E18A5B8899426BD16168D8F888 +:106010001030994266D12168D8F81430994261D184 +:10602000E368A34240F054848B4A40F20D118C483F +:10603000FDF7B8F9B9F1000F06D0E368C9F80C30E4 +:10604000884B1A681C60E260E368A34205D1824A6B +:1060500040F215118448FDF7A5F9DFF82C920023D2 +:106060002A89DFF828A2A9F808203268DFF8208200 +:10607000C9F80C207D4AC9F80030CAF8003088F809 +:10608000003013807A4BC9F804501B781B0703D5E6 +:106090006B7B43F001036B73A36F002B00F0578100 +:1060A0002046FEF75DFE0D3008D0A36F002B00F0F8 +:1060B0004E81704B1B88002B00F04981638D13B912 +:1060C000204601F0CDFA00246B4BD9F804001C6087 +:1060D000CAF8004018B1FDF77DFDC9F8044007B0CB +:1060E000BDE8F08FA146E468F4E6237D0A2B05D0D5 +:1060F000524640F21F114846FDF754F9227A3AB150 +:10610000D8F8043093F834300133DBB29A4244D1EA +:106110003368208B1A8890423FD15B88E18A99428C +:106120003BD16268D8F810309A4236D12268D8F84C +:1061300014309A4231D14E4B1B785E073FF511AFB8 +:106140004C4A16889A0718D5DBF80020636AA2EB40 +:10615000030CBCF1000F15DBB4F828C09B1A1CEB34 +:10616000030F0FD4454B324400930433CDE90110A3 +:106170002046396801F038FAF3E6DF0742BF404BAA +:106180001B682362002E3FF4ECAE638B204643F085 +:106190000203638301F094FAE3E6E468002CA4D1DF +:1061A000384BD8F804001A683168D8F814E09146E2 +:1061B000B9F1000F16D18889FDF77EFA42073FF545 +:1061C000D0AE33682B4A1888118802905B88DBF8C0 +:1061D00000200193294B0A44009304333968D8F80E +:1061E000040071E399F808C0BCF1000F05D090F8E5 +:1061F00034300133DBB29C450CD1B9F816C04B8862 +:106200009C4507D1D9F80030734500F03E83002B40 +:1062100000F03B834C46D9F80C90C9E798077FF50E +:10622000A0AE99F81D2099F81C309A42BFF499AE9F +:1062300099F81500FEF718FC074658BBD9F8183036 +:10624000002B3FF48EAE01464FF0FF32D9F810001C +:10625000984786E6E3620108A460010834630108F8 +:106260005B630108445100208663010878510020D7 +:10627000645100209E51002088510020185A0020AF +:106280005451002050510020685100207C510020C2 +:106290008051002099F81D30013389F81D30438B5F +:1062A00043F400734383D8F814300360D8F81030F7 +:1062B0004360B9F81630C38233681B880383032315 +:1062C0000375DBF8003001334362C362FEF79CF9CB +:1062D000DBF80030B865013B38657864F8657B65AC +:1062E000D9F81030C7F87C903B6199F8093003F079 +:1062F0000C037B7299F808303B72A24B1A681F603E +:10630000FA6001F0A7FCA04B012238461A70FFF793 +:1063100081F833683A1D7E8EDB8910460592A7F816 +:106320006030A7F8623002F02DFF059A0146304632 +:10633000FEF782F912217886384600F0EFFF20B18F +:1063400021463846FEF7A2FA0BE6384622E78F4B85 +:106350001C608F4B1A7851073BD5217D022921D132 +:10636000226D3B689A4209D198F8003043F0080347 +:1063700088F80030638B23F00103638398F80030C2 +:10638000180740F10382D4F890301BB16FF00D0173 +:106390002069984721467B48FEF718FA2046FDF70A +:1063A000D7FE90E6636ADBF80020934208D0D11A4A +:1063B0000029E3DB9B1A228DD342DFD4638B0FE0ED +:1063C0000029D1D1734A40F23B317348FCF7EAFF10 +:1063D000CAE79207638B06D5227D023A012A02D9C9 +:1063E00043F00203C9E7DD0620465EBF6B4B1B6826 +:1063F00023620023A4F89A30FFF70CF8644B1B7853 +:1064000013F0020103D0227D023A012AB6D8227D80 +:10641000023A072AB2D8DFE812F0080095001B0103 +:106420001F0168011B018201A10103F01202122A5F +:1064300069D1626C396801328A4264D1DBF800307C +:106440006264591C3268013B658E6162E162D289E7 +:1064500063650423A4F86020A4F86220E218237581 +:106460001046059202F08EFE059A01462846FEF778 +:10647000E3F841F21C134200608681009A421546FF +:1064800038BF1D46B5EB800F31D98BB2A4F8483028 +:10649000B4F866302BB93F4A40F277314048FCF7F8 +:1064A00081FFB4F86630256F013BA4F8663015BB58 +:1064B000E56E2DB9374A40F27F313A48FCF772FF5A +:1064C0002B68E3662846FDF7F9FF236FB3B94FF653 +:1064D000FF732386D4F88830002B3FF46FAF00227F +:1064E0002146206998470D307FF468AFEBE59A426A +:1064F00088BF93B2CAE72B682367E3E700232386AC +:1065000084F84230E6E7D8067FF538AF3368264A8C +:1065100018881188029020465B88DBF800200193E0 +:10652000224B0A4400930433396801F05DF894F873 +:106530004230032B3FF622AF00232046238601F092 +:1065400085FA1BE751B1636ADBF80020013B9342F7 +:106550007FF414AF204600F0DBFF0FE7D9067FF58C +:106560000DAF636C3968DB43CB4260D4236D5B1A9B +:10657000002B5CDB04232375E36FCBB92046FEF7C9 +:10658000FFF9A0E544510020485100208851002027 +:1065900064510020A4600108DD630108545100200B +:1065A000FD630108136401089E510020185A002061 +:1065B0009B692BB9A04A4FF46E71A048FCF7F2FE1C +:1065C0002046FDF701FEE36F9B69002BD6D0002229 +:1065D00021462069984718B10D303FF474ADCDE7DE +:1065E0002046FEF7E3FF964A13880BB1013B138068 +:1065F000618E41F21C134A0088009A42154638BF4A +:106600001D46B5EB810F0ED983B2A4F8483098F837 +:1066100000309A067FF5B2AE638B43F002036383CA +:1066200007232375AAE69A4288BF93B2EDE7336841 +:10663000844A1D88108802955B88DBF8002001934E +:10664000814B024420460093043300F0CDFF95E6D1 +:106650002046FEF7ABFFDAE72046FEF7A7FF98F8E3 +:10666000003013F0200F794B1B7830D013F0100F4F +:10667000638B27D0216D3A68914223D1E26E0ABB29 +:1066800043F0020320466383FEF77CF8704A1368E8 +:106690009C4209D1E368136008E0DA68944202D1B1 +:1066A000E268DA6002E01346002BF6D1694B012262 +:1066B0001A700A232375684B1A681C60E26001F0A7 +:1066C000C9FA5BE643F0020363830823A9E7DB060C +:1066D0007FF554AE226D3B689A427FF44FAEE36E75 +:1066E000002B7FF44BAE06239BE72046FEF75EFFB0 +:1066F00098F800309F067FF541AE638B204643F04B +:1067000002036383FEF73EF8514A13689C42C1D0EE +:10671000002BCBD0DA689442C2D01346F8E720466B +:10672000FEF744FF494B1B78DE067FF527AE226D4E +:106730003B689A427FF422AEE36E002B7FF41EAEDC +:106740002046FEF71FF8424A13689C42A2D0002B55 +:10675000ACD0DA689442A3D01346F8E72046FEF79F +:1067600025FF3A4B1B78DD067FF508AE226D3B68AE +:106770009A427FF403AEE36E002B7FF4FFAD98F8EE +:10678000003043F0100388F80030F7E52C4B1A88EE +:106790002AB1D4F88030EBB90023294A138020466F +:1067A000FEF77CFE00287FF48EACDAF800302BB3C5 +:1067B000A36F2BB1204A4FF4F3712848FCF7F2FD88 +:1067C000638BDAF8002013F0100309D01046FDF7B0 +:1067D00001FAD3E62146206998470D30DCD172E4F6 +:1067E000D4F884500DB321462069A84710F10D0F4D +:1067F0003FF469AC10B1DAF80030A36798F80030C4 +:10680000990605D5A36F6BB35A7B42F020025A73E9 +:10681000134B002220461A60FEF740FE00287FF44A +:1068200052AC204600F04CFF4DE42B462146284652 +:10683000FEF77EFADAE700BFA460010826640108CB +:10684000785100209E510020185A002064510020E9 +:1068500044510020485100205C510020446401084C +:1068600088510020238D42F6E062D4F88450934290 +:106870001CBF01332385002DCAD000232146206987 +:106880001A46A8470D30C3D11DE43CB1D9F80C30ED +:10689000E360124BC9F80C20C3F80090104B1B7832 +:1068A0005C073FF55EAB13F010043FF4B7AC0D4B43 +:1068B000DBF800201C880B88224402934B8801934C +:1068C000094B00930433396800F0AAFEFFF749BB77 +:1068D000B9F1000F7FF4B1ABFFF7BFBB50510020FF +:1068E000645100209E510020185A0020024A13785B +:1068F00043F01003137070478051002010B5044618 +:1069000028B9064A40F29E510548FCF74BFD6368E2 +:10691000987B013818BF012010BD00BF60640108DA +:10692000866401082DE9F843089D80460C46174609 +:106930001E469DF8289025B91B4AEC211B48FCF700 +:1069400031FDBC422DD29DF824309A0709D46B8BBF +:106950005B0626D4B9F1000F03D0EB6E0BB92B6F99 +:10696000FBB104F2034525F00301B9420A4628BFF2 +:106970003A4691B24FF420724046FDF78DF9054634 +:1069800060B103682BB1084A4FF487710848FCF7DF +:1069900009FD6B891B1B33802C816C812846BDE867 +:1069A000F8832146E6E700BF60640108AC64010893 +:1069B000CB6401082DE9F0470E46904699469DF8B4 +:1069C00020A0074620B92D4AA6212D48FCF7EAFC55 +:1069D00026B92A4AA7212B48FCF7E4FC4FEA8A058E +:1069E000032006F023FB044605F0040528B93046D1 +:1069F000FDF7F0F82046BDE8F087002380F80AA0F4 +:106A00001FFA85FAC0E900363389AB4204D21B4A2B +:106A1000B3211D48FCF7C6FC338930461421A3EB93 +:106A20000A032381FDF7AAF8064620B12046002478 +:106A3000FDF744FDDEE76368AD02D3F804A005F579 +:106A4000A045C4F80CA0F88AFCF736FEAAF80000AE +:106A5000D4F80CA0388BFCF72FFEAAF80200E768E8 +:106A60004846FCF72DFE786045EA0800E768FCF729 +:106A700023FEB881E3689E74DE74BBE7606401089E +:106A8000E064010800650108216501082DE9F04373 +:106A900085B004460D461646DDF830801F46B8F135 +:106AA000000F05D1134A40F2A1711348FCF77AFC9C +:106AB000D5F8049033462A8906212846009706F027 +:106AC00099F9A9F810009CB1E37AA47A062231461C +:106AD0002846CDF80880CDE900423A4602F01AFD7A +:106AE00004462846FDF776F8204605B0BDE8F08359 +:106AF000FF23EBE7606401083865010814312DE9D4 +:106B0000F04189B20646174624204FF42072984679 +:106B1000FDF7C2F8054640B34389132B05D8144A44 +:106B200040F227711348FCF73DFC6C684046FCF7C7 +:106B3000C3FD2080BDF81800FCF7BEFD67606080D3 +:106B40003046FCF7BDFDA0609DF81C0040F4A0405D +:106B5000FCF7B2FDA081BDF82000FCF7ADFD0023DD +:106B6000E08123746374A374E3742846BDE8F08164 +:106B7000606401086C6501087FB50D461646044641 +:106B800028B90C4A40F246710B48FCF70BFC638DA8 +:106B900032462946029310230193238B0093E38A04 +:106BA000606AFFF7ABFF18B1628D636A1344E3625A +:106BB00004B070BD606401089C65010828B9034AEF +:106BC00040F25A710248FCF7EDBB7047606401085F +:106BD000C46501087FB505460C461E462AB9134A0E +:106BE00040F2C4711248FCF7DDFB2EB90F4A40F2A7 +:106BF000C5711048FCF7D6FB2846FCF761FD14234D +:106C00004EF22E0102462046CDE90131BDF8243076 +:106C100000210093BDF82030FFF770FF044608B153 +:106C2000FFF7CCFF204604B070BD00BF60640108D0 +:106C3000EC65010806660108F7B5044617461E46CE +:106C40000D4629B90F4A40F28A710F48FCF7AAFB9A +:106C50005CB1207A48B1FCF797FD50B92846FCF7A3 +:106C6000B9FF6FF0030003B0F0BD304602F08AFABE +:106C7000F3E7009033463A4629462046FFF706FFE1 +:106C8000F1E700BF60640108246601082DE9F04FB8 +:106C90002DED028B8FB004460893002307910492D8 +:106CA000ADF8363030B96FF00F000FB0BDEC028B8D +:106CB000BDE8F08FB0F86230428E5B08934228BF87 +:106CC0001346002B08BF1346069304F0F9FC079BFC +:106CD000002BE8D0237D072B03D0023B022B00F2D0 +:106CE0004A82049BD3B1B4F86430049A934206D22A +:106CF000638B43F0800363834FF0FF30D5E7B4F834 +:106D000066202D2AF4D8236FF2B13BB9E36E2BB97C +:106D1000AB4A4FF4AC71AB48FCF744FBB4F86630B7 +:106D2000E66E0593D6B9B4F86870002F00F0AE8116 +:106D3000A34A40F24D21A448B046B246B14635467A +:106D40003746FCF72FFB86E013B9E36E002BE5D046 +:106D50009B4A40F25B119D48DEE75646D6F800A0FC +:106D6000B046BAF1000FF8D1B57A3389AD00069A72 +:106D700005F004052B449A4205DA914A40F2E911E4 +:106D80009348FCF70FFB3789069BDF1B7F1BB4F88A +:106D90006850BFB2ADF83650002D65D0BD4205D960 +:106DA000874A40F2FB118B48FCF7FCFABDF83630FD +:106DB000049A9A4228BF1A46BA42154628BF3D4651 +:106DC0005B1B7F1B9BB2BFB2ADF836304BB1049B4F +:106DD000AB4200F060817A4A40F203217E48FCF722 +:106DE000E1FA049B9D4280F05681002F00F04B8118 +:106DF000B8F80890B9F1000F00F04681A3EB05093F +:106E0000089BB945A8BFB946DB071FFA89F62DD5FF +:106E100001233A46314600200293089BCDE9004306 +:106E20000DF13603FFF77EFD8346002800F0A081B8 +:106E3000079B324640685919FBF79EFA5846FDF702 +:106E400033F8059B4FF0000903449BB20593AF193B +:106E5000DA464646BFB2089B4FF0000B03F0010331 +:106E6000CDF824B00A93DEE02E46BAE7D8F804B095 +:106E70005A46DBF800B0BBF1000FF9D1137B13F0D9 +:106E8000C00F0ED151895368079A0B449A4208D11A +:106E90002DB14B4A4FF40D715048FCF783FAB146BF +:106EA000D5E7012231460020FCF7F6FE8346002894 +:106EB00000F05E81079B2B444360C0E7049B069A69 +:106EC000DB1B9BB2934228BF13469BB208EE103ADD +:106ED0000A9B6BB3BBFA8BF318EE101A38205B09D0 +:106EE0000293089BCDE900430DF13603FFF71AFD2D +:106EF000064600283CD0438918EE102A934205D25A +:106F00002F4A40F269213648FCF74CFA079B18EEED +:106F1000102A7068D919FBF72FFA3046FCF7C4FF26 +:106F2000059B03449BB22E2B05935FD930461DE091 +:106F3000BDF836302BB1224A4FF41D712948FCF7B9 +:106F400031FA012218EE101A3820FCF7A5FE78B1AC +:106F5000079A00210B903A4442604FF42072382087 +:106F6000FCF79AFE0B9B064630BB1846FCF732FE38 +:106F7000638B43F080036383BAF1000F02D0504665 +:106F8000FCF728FEBBF1000F02D05846FDF7A4FA2B +:106F9000B4F86630002B3FF4AFAE236F002B7FF4C4 +:106FA000ABAEE36E002B7FF4A7AE054A40F22A3168 +:106FB0000D48FCF7F7F99FE61946FCF797FFACE799 +:106FC00060640108506601083A6701088A66010892 +:106FD000BC660108D3660108F36601081167010861 +:106FE00069670108A767010833680108E36D00229B +:106FF000314620463B440092FFF7DCFC0646002861 +:10700000B6D0BBF1000F3CD0099B2BB95B4A40F2D4 +:10701000AE215B48FCF7C6F9099B1E6018EE103ADA +:1070200009961F44BFB2049B9F42FFF447AF5746E7 +:10703000DA464DB1D8F804B0BBF1000F2ED1B8F844 +:1070400008301D44A8F80850BDF83630A4F8683060 +:10705000002F3CD0B8F1000F05D1484A40F2E3219F +:107060004848FCF79FF93946D8F80400FCF73EFF82 +:10707000B8F808303A891344A8F80830C8F800A0D6 +:107080004CE08346CAE7B9462F46E4E6B9463D469A +:10709000B846BA46DFE60027B946CAE7BBF808306B +:1070A0002B44ABF80830DBF800306BB9DBF8043068 +:1070B0002A46BBF80A0007991844FBF75DF9BBF8AC +:1070C0000A302B44ABF80A30DBF800B0B4E7B9F172 +:1070D000000F1ED0B8F1000F02D0D8F804302BB941 +:1070E000264A40F2E9212848FCF75CF9D8F8043038 +:1070F0001A8919684A4492B21A8141B95A894A4494 +:107100005A81B8F808309944A8F80890B6E70B46B9 +:10711000EEE7B8F1000FB1D1C4F86CA0E36D049AAA +:107120001344B4F86420E365049BD21A059BA4F8C9 +:107130006420A4F866304BB1236F3BB9E36E2BB9E2 +:107140000E4A40F215311148FCF72CF976B1F0687F +:1071500000283FF4AAAD089B13F0020406D18589EC +:107160000820FCF7A9FAF3682843988100209CE5E1 +:107170004FF0000BFCE66FF00A0096E56064010832 +:10718000B5670108C6670108FE6701083368010892 +:107190002DE9F74F0D46064628B95B4A40F24E31BD +:1071A0005A48FCF7FFF8F46E14B94FF0FF3008E0CE +:1071B00055B9574840F25631534AFCF7F3F86FF08F +:1071C000050003B0BDE8F08F2389AB4201D8002051 +:1071D000F7E7738EAB420DD24B4A40F25E314D4819 +:1071E000FCF7E0F823892BB9474A40F25F314A485F +:1071F000FCF7D8F894F80AB04FF42072B4F808A05D +:1072000038204FEA8B07AAEB050107F004071FFAA5 +:1072100081F817FA81F189B2FCF73EFD814600281A +:10722000C3D0606822890389D9F804109B1A4246AA +:1072300039442B449BB2FCF70FFF404560D1E36813 +:107240009889FCF739FA10F00808C7B216BF4FF05A +:10725000080807F03F0707F03707FB07E36848BF58 +:1072600048F00108586848BF07F0FE07FCF728FA05 +:1072700042462B1849463046CDF800B0FFF79AFB3E +:107280008046002891D06068A5EB0A05FCF70CFE4B +:10729000B6F866301FFA85F9181AA6F86600606815 +:1072A000018911FA85F189B2FCF790FD23893846EE +:1072B0009944E368A4F808909D89FCF7FDF9E36818 +:1072C000284398816068FCF7EFFDB6F866301844F3 +:1072D000A6F86600D8F80400FCF7E6FDB6F86630BC +:1072E0001844A6F866002368C8F80030C4F8008087 +:1072F000D8F8000000287FF46AAFA6F8680060E7BD +:107300004846FCF767FC50E76064010854680108D0 +:107310007668010898680108A56801082DE9F74317 +:1073200011F0030804460E4605D13B4A40F21341D2 +:107330003A48FCF737F82CB9374A40F2154138483B +:10734000FCF730F8C6F340074FF4207238204FEABC +:1073500087094946FCF7A0FC054640B9638B4FF00E +:10736000FF3043F08003638303B0BDE8F0834389BB +:107370004B4505D2284A40F23D412A48FCF712F815 +:10738000294600973246E36D2046FFF713FB05467A +:107390000028E3D0C3689A0705D01F4A40F246414F +:1073A0002148FBF7FFFF2B892BB11B4A40F24741D5 +:1073B0001E48FBF7F7FFE36E3BBBE5660023A4F82E +:1073C0006830B8F1000F02D0E36D0133E365F307D5 +:1073D00042BF638B43F0200363836868FCF764FD5E +:1073E000B4F86630184480B2A4F866000028BBD018 +:1073F000206F40B9E46E002CB6D1074A40F26941D3 +:107400000B48FBF7CFFF0020AEE71A461B68002BA6 +:10741000FBD11560D2E700BF60640108B4680108C1 +:107420000969010828690108616901087969010889 +:10743000A3690108F8B5044628B9134A40F2EF31B0 +:107440001248FBF7AFFFE56E4DB12F462D68002DBA +:10745000FBD1FB689889FCF72FF9430705D020463C +:107460000121BDE8F840FFF759BFFB6801209E8964 +:10747000FCF722F9FB68304398812846638B43F080 +:1074800020036383F8BD00BF60640108CC69010874 +:107490002DE9F041044628B91B4A40F267611B48B8 +:1074A000FBF780FF256F45B96FF00500BDE8F0815F +:1074B000FFF724FA0028F7D12D682B682846002B07 +:1074C000F6D1FFF71BFA06460028EDD1E36E2B60DC +:1074D000236FC4E91B30638B43F400636383EB6861 +:1074E0005868FCF7EDF8EB680746B5F8088098890E +:1074F000FCF7E2F810F003034744304618BF0123BD +:1075000066633B44E364D1E760640108E86901080D +:10751000F8B5044628B91A4A40F2C5611948FBF784 +:1075200041FF256F15B96FF00500F8BD2846FFF73C +:10753000E5F90028F7D12B6804F16C06236733685E +:1075400083B933682B6035602B680BB9A4F86830B9 +:1075500094F842300020FF2B60631CBF013384F895 +:107560004230E2E7DB685868FCF7AAF8EB680746A8 +:107570005868FCF7A5F8381A0028E2DA3668DEE722 +:10758000606401080C6A010838B5044628B9144A39 +:1075900040F2FD611348FBF705FF236FFBB1638BDE +:1075A0005B071CD42046FFF7B3FFC0B9B4F86010E6 +:1075B000B4F848302086994228BF1946638E5D0092 +:1075C0004A10B5EB510F2B4488BF2A461344A4F848 +:1075D0004A20A4F84830638B43F00403638338BD2A +:1075E00060640108246A01087FB5BDF82450044690 +:1075F000BDF82860084611461A46089BCDE900569A +:10760000CDE90223FFF7E6FA014638B12046DDE96D +:10761000022304B0BDE87040FFF70EBB04B070BD9C +:10762000F0B585B00D4604461146BDF82C601A46EB +:10763000BDF830700A9B88B12846CDE90067CDE9D6 +:107640000223FFF7C7FA014640B100200A94DDE9A2 +:10765000022305B0BDE8F040FFF718BA05B0F0BD51 +:1076600038B5044628B9144A40F62D011348FBF7F3 +:1076700099FE206DFCF724F8002102462046FFF712 +:107680007BFA054630B9638B6FF0010043F00303CA +:10769000638338BDFFF792FA231D22462946204610 +:1076A000FFF7CAFA638B18B143F003036383F0E773 +:1076B00023F00303FAE700BF60640108446A01088D +:1076C0002DE9F04F044687B003F0FAFF2CB9904A39 +:1076D00040F2E5418F48FBF765FE237D012B05D184 +:1076E0008B4A40F2E7418C48FBF75CFE8B4B1B68F2 +:1076F000A34200F07281E56E4DB9638B990740F1AA +:107700006881204607B0BDE8F04FFFF7A9BF207A97 +:1077100004F10409B4F84880B4F8606040B3FCF7A1 +:1077200033F80746002800F0718123680BB903681D +:107730002360EB68B045586828BFB046FBF7C0FF30 +:107740002B89626C9B1A1844404515D9B4F86030F7 +:107750004345D2D1236F002BCFD194F89930002B21 +:10776000CBD14FF4807284F89A30A4F89820C4E703 +:10777000484601F007FDD4E70023266F84F89930CE +:1077800026B133463668002EFBD11E46DFF880A1B5 +:10779000E2E0237D022B09D0EB681020B3F80CB097 +:1077A000FBF78AFFEB684BEA000098812846FFF759 +:1077B000A5F8002877D1D5F80CB0606AFBF780FFF8 +:1077C000CBF80800D5F80CB0608DFBF775FFABF86F +:1077D0000E00628D636A1344E362AB7AD5F80CB095 +:1077E000DB0751D40BF1140BB4F93030002BBCBFC4 +:1077F00000232386636B3BB9494B1B686363EB68CB +:107800005868FBF75DFFA0636968EB684A689B1ADC +:107810004A899BB2D21A4A8169680A89D31A0B81B4 +:107820006A68EB68536000221A745A74AB7AEA688B +:107830009B0003F00403143313449B4505D05246C8 +:107840004FF4C4613748FBF7ADFD68682346D5F8AF +:107850000CB006210289CDF8009005F0CBFA062382 +:10786000ABF810004A4601932146A37A0297009391 +:10787000E37A686801F04EFEA8B1638B43F08003A1 +:10788000638307B0BDE8F08F4A4639464FF4806005 +:107890000BF1180BFCF7D0FE40F00170FBF710FF66 +:1078A0004BF8040CA0E72B68E366237D022B1EBF78 +:1078B000638B23F003036383EB685868FBF700FFD7 +:1078C0002A89EB68834605929889FBF7F5FE059AAD +:1078D00010F003035A4418BF01231344226DD21A37 +:1078E000002AB8BF2365EB68B5F808B09889FBF7A4 +:1078F000E3FE10F0030018BF012010EB0B0F00F0A7 +:10790000818000232B60236F73B925672E4620E00A +:1079100060640108646A01087C6A010888510020DB +:1079200054510020B96A0108EB685868FBF7C8FE9B +:10793000F36883465868FBF7C3FEABEB00000028F2 +:107940005EDA04F170031A68002A48D11A682A60C6 +:107950001D60E56E002D39D0EB685868FBF7B0FE6E +:10796000636CC01A2B89184440452DD8EB68988960 +:10797000FBF7A2FE420705D5524640F23A51254890 +:10798000FBF710FD236F002B3FF403AF628B12F067 +:10799000440F7FF4FEAEE36E43B1196800297FF413 +:1079A000F8AE1989638E9942BFF4F3AEB4F864302F +:1079B000002B3FF4EEAEB4F866302D2B3FF6E9AE67 +:1079C00012F0A00F7FF4E5AEE36E13B90023A4F824 +:1079D0006830638B23F080036383002051E7D26813 +:1079E00005935068FBF76CFEEA6883465068FBF726 +:1079F00067FEABEB0000059B0028A7DA1B68A2E737 +:107A0000356083E72846FCF759FDA2E76FF00300D5 +:107A100037E700BFA26A010810B5044628B9094A31 +:107A200040F29C610848FBF7BDFC94F842302046C8 +:107A3000FF2B1CBF013384F84230BDE81040FFF734 +:107A40003FBE00BF60640108CC6A010810B504465F +:107A500028B9084A40F2B1610748FBF7A3FC204669 +:107A6000FFF716FD20B92046BDE81040FFF7D4BF50 +:107A700010BD00BF60640108F06A010870B50446DB +:107A800028B90F4A40F667010E48FBF78BFC206DC2 +:107A90000138FBF715FE002102462046FFF76CF87F +:107AA000054648B1FFF78AF8231D2246294620469D +:107AB000BDE87040FFF7C0B84FF0FF3070BD00BFA9 +:107AC000606401080C6B01082DE9F041064628B9F5 +:107AD0002B4A40F692012B48FBF764FCF56E002D13 +:107AE00048D096F89A30FF2B1CBF013386F89A30A5 +:107AF000EB689889FBF7E0FD10F00104EB68304675 +:107B000018BF2C895A681CBFB4FA84F4640984F045 +:107B10000101FFF731F8074678B3D0F80480F4B1DB +:107B2000B8F90C401120FBF7C7FD24F47C54204326 +:107B3000A8F80C00EB685868FBF7C2FD336D013004 +:107B40001B1A002BB8BF30653846FFF737F8331DD6 +:107B5000324639463046BDE8F041FFF76DB86868F7 +:107B600008F114012A8903899B1A01229BB2FCF7B0 +:107B700073FADFE72846BDE8F0814FF0FF30FAE7FF +:107B800060640108286B010870B504460C200E469D +:107B9000154605F04BFA30B9104ABE211048BDE831 +:107BA0007040FBF7FFBB00230E4A4460036013687C +:107BB000C0E902650BB9106070BD5968611A0029EF +:107BC00001DA0360F7E719461B681BB15A68A21A6D +:107BD000002AF8DA03600860EEE700BF4C6B01088A +:107BE000736B0108A451002038B5436804469847D8 +:107BF00003F094FE074B25681B6807492B441A1AAB +:107C0000002A2246B4BF40191846BDE83840FFF7A5 +:107C1000BBBF00BFA0510020E97B000870B504463F +:107C20000D46164603F04CFDB4F1804F05D3074ACC +:107C300040F229110648FBF7B5FB03F06FFE324610 +:107C400029462044BDE87040FFF79EBF4C6B0108F9 +:107C5000B06B010808B503F033FD094B1A6872B91F +:107C6000084A126812B9084A126842B1012207494B +:107C7000FA201A600022BDE80840FFF7CFBF08BD18 +:107C8000A8510020445100205C510020917C000844 +:107C900008B5FDF74BFB084B1B6813B9074B1B6876 +:107CA00033B100220649FA20BDE80840FFF7B6BF0D +:107CB000044A136008BD00BF445100205C510020FD +:107CC000917C0008A851002010B50B4C4FF47A703D +:107CD0000A4904F10802FFF7A1FF04F11002074965 +:107CE0004FF47A70FFF79AFF04F1180203496420F9 +:107CF000BDE81040FFF792BFE86B0108E97B000880 +:107D00002DE9F04103F0DCFC0D4E03F007FEDFF837 +:107D100034800446316889B14B68E21A002A0DDBD1 +:107D20000A680C20C8F800303260D1E9025705F02B +:107D300089F9002DEED03846A847EBE7BDE8F08181 +:107D4000A4510020A051002010B5084C03F0B8FC4D +:107D500023683BB103F0E2FD23685B68181A48BF53 +:107D6000002010BD4FF0FF30FBE700BFA451002002 +:107D700008B503F06DFC6FEA8040024B6FEA90405B +:107D8000188008BD5A2300202DE9F04F044685B025 +:107D9000884603F095FC24B9704ACF217048FBF760 +:107DA00001FBB8F1000F04D16C4AD0216D48FBF7FC +:107DB000F9FA6389072B05D8204605B0BDE8F04FD6 +:107DC000FBF708BF684F0026D4F804A03968B34613 +:107DD000786901F0C3FB8146BAF80000FBF76CFC40 +:107DE0000290BAF80200FBF767FC604B03901D6835 +:107DF0005F485DBB26B9D8F800207B699A42DBD189 +:107E0000BB685B7A882B77D1BAF80400FBF754FC87 +:107E1000072802D80028CFD12089564B88212289F3 +:107E20000193043B00930346204605F04DF80028DB +:107E3000C2D108212046FBF7A5FE002869D0474A99 +:107E40004FF4B8714C48FBF7ADFAB5E76A8A03996D +:107E50008A424CD1B8F1000F05D1404A8821FBF786 +:107E6000A1FA424B4248297A31B17A6892F834201B +:107E70000132D2B291423AD12A68B9F1000F31D021 +:107E800052B17969B1F1FF3F06D082EA010CD8F80E +:107E900004101CEA010F2AD1297C49070ED44EB3E5 +:107EA000B9F1000F0AD07969013107D1D8F800C0C3 +:107EB0003168614502D0944508BF2E46AA8A0299CE +:107EC0008A4214D1696811B13A6991420FD1BBF16C +:107ED000000F05D0EA68CBF80C201A681D60EA6034 +:107EE0002E468DE7002AD7D079698A42D4D0AB4696 +:107EF000ED687EE72E46E1E7BAF80630002B98D011 +:107F00001C4B1121228920460093043B04F072FF90 +:107F10008DE76EB1756A002D3FF44EAF029B22468D +:107F200031460093154BB06AA84705B0BDE8F08F05 +:107F3000B9F1000F7FF440AF7B6903F0F003E02B51 +:107F40003FF43AAFB9892046083109B2FBF73AFE4F +:107F50000321204600F0DEFE2EE700BF086C01087A +:107F60002A6C0108426C0108085A0020AC5100201C +:107F70005B6C01081C5A0020806C0108185A002014 +:107F80002DE9F04188460746164603F099FB284B39 +:107F9000B8F1000F08BF9846002F44D025490B6860 +:107FA0001D46D5B9002E3BD123484FF480444FF6EF +:107FB000FF7C068866451A4616BF01364FF44046D8 +:107FC000B6B282B90680D8F800307E823B6015B91F +:107FD0000B680F60FB60002027E0BD4201D0ED6818 +:107FE000DFE70125DEE7B2F812E0B64507D1013C34 +:107FF000A4B2002CDED106806FF0070015E0D26835 +:10800000DFE7BB420BD05A8AB24208D1D8F8000051 +:108010001A688242F0D00028EED0002AECD0DB684B +:10802000002BEED1CFE76FF00F00BDE8F08100BF6D +:1080300080700108AC5100205A2300202DE9F04F38 +:10804000054685B00F4690469A46DDE90EB903F025 +:1080500037FB002D00F0AB80002F00F0A880B8F1B6 +:10806000000F00F0A480B9F1000F00F0A080BBF178 +:10807000000F00F09C806A8A3AB13A894FF6F77394 +:108080009A420DD94FF0FF3606E029462846FFF701 +:1080900077FF06460028F0D0304605B0BDE8F08FE7 +:1080A00008213846FBF76AFD002860D04FF42072A3 +:1080B00008212420FBF7F0FD04460028E2D03B898C +:1080C00013B13946FBF73EFF6389072B05D8394AC0 +:1080D00040F20D313848FBF765F96668688AFBF7AE +:1080E000EBFA30805046FBF7E7FA00237080B3715B +:1080F000F3712B7C190709D5D8F8003003F0F00391 +:10810000E02B02BF637B43F0040363732B7CB4F862 +:1081100008A09A0734D5288C07282AD9504528D892 +:108120008246FBF7C9FA5346B0808821228920464F +:10813000CDE9009804F0C8FEE8B1F0808822D8F8B4 +:1081400000304946204603F0F003CDE9012BE02B37 +:10815000AA7A0CBF6B7FEB7A0092424601F0ECF9F1 +:10816000BC42064698D02046FBF734FD94E73C46D7 +:10817000AAE70020D5E74FF0FF33B371F371DDE7D5 +:108180005046FBF799FAB0802B7CDB070DD422898F +:108190004B4611212046CDF8008004F02BFE4FF60F +:1081A000FF73002818BF0346F3801122C7E76FF062 +:1081B0000F0671E7086C01089C6C010873B5069CFA +:1081C000A0B199B192B18CB105681DB105F0F0066E +:1081D000E02E06D12546CDE90045FFF72FFF02B07E +:1081E00070BD2668B54204D10546F4E76FF00F0074 +:1081F000F5E76FF00300F2E7F7B50D4617461E46A8 +:10820000044668B361B35AB3007A28B1FBF7BCFAED +:1082100088B96FF0030015E0136803F0F003E02B5A +:1082200003D0384600F0AEFFF2E7207F60B1FBF7E5 +:10823000ABFA0028F5D0009033463A46294620464E +:10824000FFF7BCFF03B0F0BDA369002BE9D0064ADD +:1082500012689342E5D004F1180000F093FFE8E7BC +:108260006FF00F00EEE700BF84700108024620B1F6 +:1082700019B1838A0432FFF7BFBF6FF00F00704758 +:1082800038B50C46054603F01BFA1CB194F834408F +:108290000134E4B22C7238BD70B504460D46164662 +:1082A00003F00EFADCB1D5B1628A6AB12B680E4ACE +:1082B00063601168237C0846A68243F0040323749C +:1082C00048B9E160146005E021462046FFF758FEFA +:1082D0000028EBD070BDA04204D0C068F0E76FF07A +:1082E0000F00F7E70020F5E7AC51002010B5044679 +:1082F00003F0E6F93CB100236360A3822372237C80 +:1083000023F00403237410BD70B504460E461546D1 +:1083100003F0D6F90CB1C4E9096570BD10B5044687 +:1083200003F0CEF9B4B10C4A1368A34208D1E36854 +:10833000136021460020BDE8104004F083BE1346C0 +:10834000002BF6D0DA68002AF3D0A242F7D1E26817 +:10835000DA60EEE710BD00BFAC51002010B503F0AD +:10836000AFF9002004F062FE044630B12C22002157 +:10837000FAF734F8FF23E3726377204610BD00005C +:1083800008B503F09DF9BDE80840FFF7E7BF00001E +:1083900010B538B103682BB121B10B6813B1064B8E +:1083A0001B6803B910BD1C680268944204BF0A68C8 +:1083B0001A60DB68F5E700BFAC5100202DE9F843F7 +:1083C0001823124D06464343EC58C4B1DFF84080F1 +:1083D000DFF84090274624687B6823B942469B21FA +:1083E0004846FAF7DFFF7868FBF7F4FB39460A20C6 +:1083F00004F028FE002CEDD118237343EC50182014 +:10840000002300FB06552B75BDE8F883B051002012 +:10841000CC6C0108F66C01082DE9F347DDF82CA0BF +:10842000884691461E46074628B92C4A40F26941C3 +:108430002B48FAF7B7FF4FF420721C211020FBF7EE +:108440002BFC0546002845D043891B2B05D8234A21 +:1084500040F274412348FAF7A5FF6C68BDF8340078 +:10846000FBF72AF9E08097F83030062B05D01B4A3D +:1084700040F27B411C48FAF795FF33684246294693 +:108480003846A360B3880026A381DAF80030C4F828 +:108490001230BAF80430E3820A9B1B68C4F80E302D +:1084A0000C9B1B682670A3610123E6706370082390 +:1084B000A370062323710423637140F6060300931F +:1084C0004B4603F08BF82846FBF784FB304602B09E +:1084D000BDE8F0874FF0FF30F9E700BFCC6C010832 +:1084E000046D0108126D0108436D01082DE9F74F75 +:1084F00000234FF00A0C3C4A80466546E6469A4601 +:10850000994664461646019100930A2C18B292F8D7 +:1085100014B017D1BBF1000F57D0B8F1000F04D041 +:10852000D8F8007051688F4242D0BBF1010F578AD2 +:1085300046D1116800293ED000998F4205D3844668 +:10854000009702E0BBF1000FE7D1013318320A2B8C +:10855000DBD1019B012B40D10A2C0FD10A2D36D043 +:1085600018236B43F3582BB1204A4FF4B7712048BE +:10857000FAF718FF2C462846FFF720FF182303FBC5 +:1085800004631B7D2BB1194A40F285111948FAF793 +:1085900009FFB8F1000F05D01823D8F8002003FB1D +:1085A00004635A601823204603FB04660023738289 +:1085B00003B0BDE8F08F4F45C7D3B9468646C4E740 +:1085C0005745C2D3BA460546BFE70446BDE7BEF1EC +:1085D0000A0F05D1BCF10A0F04D14FF0FF30E7E7D5 +:1085E0007546C7E76546C5E7B0510020CC6C010869 +:1085F000846D01089B6D01082DE9F04F0C4687B092 +:10860000804603F05DF8002C4AD0D8F804502B883F +:10861000B3F5807F08D12B79062B05D16B79042B1C +:1086200002D16B88082B05D0404607B0BDE8F04F5B +:10863000FBF7D0BAD5F80E3005F1080AAF69266805 +:10864000049305977EB3F21BF11A574257414E42ED +:10865000C7F102094E415FFA89F994F83030062BD0 +:1086600005D0324A4FF4D5713148FAF79BFE049891 +:10867000E8B9EB88B3F5807F0FD177B16EB90222EC +:1086800004F12A032046039204AA1946CDE901A267 +:1086900005AA00925246FFF7BFFE4046FBF79AFA42 +:1086A00007B0BDE8F08F37464FF00209D5E7214605 +:1086B00000F054FF83460028DBD1049B03F0F00355 +:1086C000E02BD6D0494604A8FFF710FF031ED0DBED +:1086D000184A1820022100FB032989F814100C21E4 +:1086E000C9F8084013FB0013A868D118D050BAF895 +:1086F00004308B80A9F812B0D9F800100029B8D046 +:108700000B680A20C9F80030D1F804B004F09AFCD4 +:108710004FF4006304F12A02594620460093534661 +:1087200002F05CFF5846FBF755FAE5E7CC6C010810 +:10873000E46D0108B05100201FB5012400F12A03A7 +:10874000054ACDE902140549CDE900011946FFF7B4 +:1087500063FE04B010BD00BFE8740108F0740108A6 +:10876000F8B5134C002502260427227D6AB1638ADE +:1087700001339BB2B3F5967F638203D2012A09D1FC +:10878000042B0FD92846FFF719FE013518340A2D9E +:10879000EBD1F8BD032A01D12775F6E7042AF4D1FD +:1087A0002675F2E7211DA068FFF7C6FFEDE700BFC1 +:1087B000B05100202DE9FF47234F18230646884675 +:1087C00003FB027314461B7D012B05D81F4A4FF48F +:1087D0003E711F48FAF7E6FD182204EB440506F146 +:1087E0002A0902FB0474ED00237D05F10C0A022B1B +:1087F000BA440BD1638AB3F58E7F13D90435304662 +:108800007919FFF799FF08B9032323754FF4006323 +:108810004A46414630460093534602F0DFFE04B01C +:10882000BDE8F087B3F5877FF0D3012304355246C6 +:1088300049463D440393074B30460295CDE900631A +:108840004B46FFF7E9FDDEE7B0510020CC6C010894 +:10885000086E0108F07401082DE9F7438946804647 +:1088600001461546D9F8000000F078FE002840F0D7 +:108870008980D9F8003003F0F002E02A00F082800D +:10888000002B7FD001214846FFF730FE071E03DA98 +:1088900078B203B0BDE8F0837E2F05DD4A4A40F28E +:1088A000CB314A48FAF77EFDFFB2494E182303FB4D +:1088B00007631A7D002A40F081800124C3F80880F4 +:1088C0001C7549464046FFF737FF38B9182303FBAC +:1088D00007631A7D012A01D104B95882002DD8D02E +:1088E000182303FB0762127D012A10D9394A03FBC2 +:1088F00007632946404617704FF400620C3300921C +:1089000008F12A0202F06AFEC3E72C46D9E7C0D17B +:108910002C46DFF8B480DFF8C090628923899A4240 +:1089200007D123682BB1424640F203414846FAF78B +:1089300039FD237B5B0628D42468002CEDD1284622 +:10894000FBF7BAFA2AE0013223461C68002CFAD160 +:10895000022A186003D820469BE70122F5E7182376 +:108960005F43F5592B68F3516868FBF733F92946E3 +:108970000A2004F067FBEEE72846FBF72BF94FF0DF +:10898000FF3086E76FF00F0083E72A464FF420712F +:108990001020FBF78FFB05460028F0D00A2004F0DA +:1089A00045FB0028E8D0182200237A43C0E90035AF +:1089B000B358002BD1D1B05018466AE7002DA4D08F +:1089C0004FF0FF308CE700BFCC6C0108386E010817 +:1089D000B0510020A0520020466E0108F0B50446B8 +:1089E00085B00E46154602F06BFE2CB93F4A4FF497 +:1089F0004A713F48FAF7D6FC2EB93C4A40F2293179 +:108A00003C48FAF7CFFC2DB9384A40F22A313A48AF +:108A1000FAF7C8FC2146286800F0A0FD002860D1C4 +:108A20002B6803F0F002E02A1ED101238DF8090023 +:108A30008DF808305E238DF80A306B7803F07F03E1 +:108A40008DF80B30AB788DF80C30EB788DF80D305D +:108A500002AB4FF4006231462046009204F12A0234 +:108A600002F0BCFD05B0F0BD226861685A400A42C0 +:108A700008D09BB24FF6A962934203D0A36893B388 +:108A800004F10805DFF87CC018211C4B9CF800207D +:108A900001FB0233197D01290AD929685B689942D3 +:108AA00006D13146204605B0BDE8F040FFF782BE52 +:108AB000124900230F7DDAB2012F06D948682F68CA +:108AC000874202D18CF80020EBE7013318310A2BE2 +:108AD000F0D132462946204605B0BDE8F040FFF708 +:108AE000BBBE074BB5E76FF00300BBE7CC6C0108DA +:108AF000046D01089E5A0108C46D0108B0510020A0 +:108B0000E8740108A05200202DE9F047B0F8088071 +:108B100086B007468946B8F11C0F16464FF0240070 +:108B20004FF4207228BF4FF01C0808F10804A4B2CB +:108B30002146FBF7B1F80546A8B34389A34205D205 +:108B40001A4A40F26D111A48FAF72CFC6C68394643 +:108B5000D7F804A00823667000264246284684F809 +:108B6000009026716671A671E671FBF7F5F9DAF8E7 +:108B70000C3005A8059300F005FB074680B1A670F0 +:108B80002046E670698904F0A1F90123608005AAF6 +:108B9000314628460297CDE90063FF2300F0BAFC76 +:108BA0002846FBF717F806B0BDE8F087606E0108AD +:108BB000886E01082DE9F047DFF8549186B004462D +:108BC0000F46D9F808A09AF8005005F00F05AD003F +:108BD000132D18D94389032B15D943681B78082B0B +:108BE00011D1D9F8140000F0F003E02B0BD0D9F824 +:108BF000001000F0B3FC30B92389072B03D92046BD +:108C000004F06AF928B1204606B0BDE8F047FAF74B +:108C1000E1BF05F1100120461FFA85F80591FAF72A +:108C2000ADFF059900285FD0238903EB080189B2C5 +:108C30008B42E8D84FF420721020FBF72DF806463F +:108C40000028E0D0428905F108039A4203D2304659 +:108C5000FAF7C0FFD7E751462A464068F9F78CFB80 +:108C600029463046FAF78EFF28B1254AB621254815 +:108C7000FAF798FBEBE721463046FBF7E5F90028C9 +:108C8000E5D120463446FAF7A5FF29462046666816 +:108C9000FAF774FF0028B6D165684FF6F772D9F875 +:108CA00014304146EB60D9F810304FF0FF092B61CA +:108CB00073883070284693428CBF093308339BB2C7 +:108CC0007380002685F80890AE72EE7204F0FEF80C +:108CD0000123688132460C4920460297CDE90063A2 +:108CE0004B4600F017FC8EE72046FAF74BFF0028B2 +:108CF000CBD0034AC7210548FAF754FB83E700BFEE +:108D0000606E0108B46E01081C5A0020E86E01086C +:108D1000085A00200A460321FFF7F6BE0A460B2137 +:108D2000FFF7F2BE284B2DE9F0431B6889B00746D8 +:108D30000E46904608214FF4207238200693FAF729 +:108D4000ABFF054600283CD043894468072B05D873 +:108D50001E4A40F202311E48FAF724FB3B68B8F184 +:108D6000160F4FF008012046069308BF06F10409CC +:108D7000736813BFDFF85C9063600123636008BF12 +:108D80003372002684F800806670A670E67004F0E6 +:108D90009DF840F2944360804A46ADF81C300423AD +:108DA00006A92846049307ABADF81E60CDE902730F +:108DB0000223CDE90063012300F092FB2846FAF775 +:108DC00009FF09B0BDE8F083807001081C6F01083D +:108DD000446F0108A452002038B5437A04460D467A +:108DE000022B05D0012B09D143890BB18B4205D948 +:108DF000022D04D8012363810123637238BD02F080 +:108E000027FCB0FBF5F101FB15056581002DF1D0C4 +:108E1000F2E70000034B044A1A6002F18072034B30 +:108E20001A607047A8520020E0000001A452002000 +:108E300010B5436A0BB11C6804B910BD204605216A +:108E4000FFF7CAFF2468F7E7406A00B97047426835 +:108E50000B689A42FAD00068F7E70000F8B50646BA +:108E60000D46FFF7F1FF0446D0B90B20776A04F0F6 +:108E7000DDF80446A0B10023A5B12A682373C4E934 +:108E800001230F4B2A681B6877B99A4205D00D4A17 +:108E90004FF486710C48FAF785FA00232360746258 +:108EA0002046F8BD2A46E9E79A4205D1054A4FF423 +:108EB00089710648FAF776FA3B6823603C60EFE771 +:108EC000A85200201C6F0108806F0108B26F0108D2 +:108ED00010B50B490446FFF7C1FF60B1022343728E +:108EE000037B01330373A36B43B101220449204682 +:108EF0009847002010BD4FF0FF30FBE71846F9E718 +:108F0000A8520020F7B50E464189054617460729A5 +:108F100005D8284603B0BDE8F040FAF75BBE4468C8 +:108F2000204603F0D3FF0028F3D139463046FFF73F +:108F30008BFF0028EDD02378112B08D0162BE8D119 +:108F4000437A012B04BF4FF400738360E1E7124AB8 +:108F500039681268636891421BD17BB963780BB999 +:108F60000A236370736A002BD3D01E68002ED0D002 +:108F700030466178FFF730FF3668F7E701A93046E1 +:108F80000193FFF761FF0028C3D06178FFF724FF4A +:108F9000BFE7002BBDD0F8E7A852002037B5054643 +:108FA000019102F08DFB01990B6803F0F002E02AB9 +:108FB0002ED11A4A126893422AD095F831309B0676 +:108FC00026D52846FFF74AFF044620B3437ACBB99B +:108FD000037B2BB9AB6B1BB1012201992846984743 +:108FE000162221462846FFF79DFE02F031FB05239D +:108FF0000122B0FBF3F303EB83036272C01A08BFD4 +:1090000010466081237B00200133237303B030BD01 +:109010006FF00500FAE74FF0FF30F7E7A8520020A5 +:1090200038B50C46054602F04BFB236803F0F0020E +:10903000E02A15D10C4A1268934211D00B4B1868E4 +:1090400070B190F831309B060AD525B12B6813B169 +:109050000268934204D12146BDE83840FFF79EBF25 +:109060006FF0050038BD00BFA85200203C51002021 +:1090700070B50E46054602F023FB336803F0F0029C +:10908000E02A2FD1194A126893422BD095F831303B +:109090009B0627D531462846FFF7D6FE044608B37F +:1090A000037B012B1BD86B6A23B11A68944214D13D +:1090B00022681A60237A23B1172221462846FFF737 +:1090C00031FEAB6B1BB10022314628469847214642 +:1090D0000B2003F0B7FF002070BD1346E4E7013B0F +:1090E0000373F8E76FF00500F6E700BFA852002011 +:1090F00038B50C46054602F0E3FA236803F0F002A7 +:10910000E02A15D10C4A1268934211D00B4B186813 +:1091100070B190F831309B060AD525B12B6813B198 +:109120000268934204D12146BDE83840FFF7A0BF52 +:109130006FF0050038BD00BFA85200203C51002050 +:10914000F8B50E4B1D681DB16C6A02270C4E04B9B0 +:10915000F8BD638983B1013B9BB2638163B9637AD4 +:10916000012B09D1626833689A4205D01622214644 +:1091700028466772FFF7D6FD2468E8E73C510020D7 +:10918000A85200200A4A0346106878B190F83120AE +:1091900002F00502052A06D1026832B11B787F2B46 +:1091A00008BF00207047002070471046704700BF7E +:1091B0003C5100202DE9F84304460E4602F080FAA7 +:1091C00067683D782B09042B05D02046FAF702FD8D +:1091D0000020BDE8F883788805F00F05FAF76CFAEF +:1091E00023894FEA8509804683424D4603D90146CB +:1091F0002046FAF7EBFD6389AB42E6D3238943456A +:10920000E3D3132DE1D92946384603F05FFE002849 +:10921000DBD13869474D00F0F0026861E02AFB6855 +:109220002B6196F8313055D19A0644D44FF000089E +:109230003146286900F092F90028C6D12B6903F065 +:10924000F003E02BC1D0B8F1000FBED0FB8823F0B3 +:10925000C00333B1204600F097FB04460028B7D086 +:109260004768AF6049462046C5E900863B7803F071 +:109270000F039B00AB81FAF785FC7B7A062B48D065 +:1092800037D8012B4AD0022B4DD04146686900F0F7 +:1092900065F960B96B6903F0F003E02B07D049462C +:1092A0002046FAF78FFC02212046FFF733FD2046C7 +:1092B000FAF790FC25E005F114013046FFF7C4FDF4 +:1092C0000028B3D06A691C4B9A4201D12B6973B153 +:1092D000B046ADE7DB07A9D53368002BA6D098428E +:1092E000F6D0314600F03AF900289FD0F0E7B046BA +:1092F000ACE7112B01D0882BC7D131462046FEF7B1 +:1093000043FD0023C5E90033AB60AB81C5E90433FD +:109310005EE731462046FCF755FDF2E73146204630 +:10932000FFF748FCEDE7054A31462046FFF7EAFD26 +:10933000E7E700BF085A0020E00000011C5A0020A7 +:109340002DE9F04F87B004469B4690469DF840308B +:109350009DF844900293DDF848A0BDF8505001916B +:1093600002F0AEF9A37B012B05D0584A40F27631CA +:109370005748FAF717F8B8F1000F00F09380002D66 +:1093800000F08C80282D00F29E80EE1C204626F0F6 +:109390000306B6B206F114073146BFB2FAF7EEFB88 +:1093A00020B16FF0010007B0BDE8F08F03902A46AE +:1093B00013996068F8F7E0FFB542039B05D2606837 +:1093C000721B19462844F9F709F8002361687608EA +:1093D0001D4631F8132001339E421544F9DC142157 +:1093E0002046FAF7CBFB0028DBD163896668132B94 +:1093F00005D8364A40F2AA313648F9F7D3FF86F845 +:10940000099049EA0B2986F808B0C7F38707D8F80E +:1094100000204FEA292347F0400743EA092332613D +:109420004FEA1249377019FA82F212FA83F31D4497 +:10943000029B43EA0727737020893B1243EA072304 +:10944000254F15FA83F5FAF737F9002370800544A4 +:109450003888B371F371FAF72FF93A884319B0805D +:1094600001323A80019ADAB91C4A126813FA82F37F +:10947000F26003EB12439AB202EB134303EB134384 +:10948000DB437381BAF82830B3B122899A4213D9E9 +:1094900042465146204600F04DFC84E714279EE7E3 +:1094A000019AE2E76389132B7FF67BAF63680DF1C6 +:1094B00014081B690593E5E7DAF8103042462146A7 +:1094C000504698476FE76FF005006CE7F46F0108AE +:1094D0001B70010827700108AC5200208070010841 +:1094E000F0B59C469DF814509DF81860BDF824E036 +:1094F000DDE907471AB109B10B6803B921460595A3 +:109500006346CDE9087ECDE90664BDE8F040FFF78B +:1095100017BF000010B5002486B0CDE903440A9CB3 +:1095200002949DF8244001949DF820400094FFF798 +:10953000D7FF06B010BD000010B5002486B0CDE9FD +:1095400003440A9C02949DF8244001949DF8204015 +:109550000094FFF7F5FE06B010BD0000431E024662 +:10956000033312D891F8313013F0020010D00B6899 +:1095700093420CD048685340034208D1C34322EAC7 +:109580000000C31A5842584170470120704700201C +:10959000704700002DE9F04385B00D4690F900209A +:1095A00004236E46DFF838C13746D1B211F80C10EB +:1095B00011F0040100F08B80302A27D190F90120AE +:1095C00022F0200158290DBF90F9022001304FF000 +:1095D000080E023008BF4FF0100E01300024D1B247 +:1095E00000F1FF381CF8011011F0040F11D0BEF18A +:1095F000080F04D1A2F13009B9F1070F1AD804FB02 +:109600000E24303C90F900200130E8E74FF00A0EBC +:10961000E3E7BEF1100F0DD111F0440F0AD001F0B5 +:1096200003010A3202290CBF61214121521A42EA88 +:109630000414E7E72E2A08D1013B48D008F10100C5 +:1096400098F9012046F8044BAFE712B111F0080079 +:109650003ED0F01B80100130042832D8DFE800F043 +:10966000380B03122000B4F1807F30D2009BFF2B17 +:109670002DD844EA03641DB12046FAF721F828608A +:10968000012025E0B4F5803F21D2009AFF2A1ED8A0 +:10969000019BFF2B1BD81B0443EA02631C43EAE730 +:1096A000FF2C14D80099FF2911D8019BFF2B0ED84D +:1096B000029AFF2A0BD81B0443EA016343EA022300 +:1096C000ECE7054AFB210548F9F76CFED3E70020DB +:1096D00005B0BDE8F08300BF547001084F81010858 +:1096E0002D8801082DE9F74F0D4603680DF1040C94 +:1096F000042000264FF00A0E4FF02E0801931CF8AC +:10970000014B0027A2460DF1080BB4FBFEF30EFB44 +:109710001349DCB23B46BAF1090F07F1010709F121 +:1097200030099B44FFB20BF8089CEBD80CF8014CB5 +:1097300037462C46FF2B06F101060DD1974218DA69 +:109740000138254610F0FF0005F8018BD7D12070B5 +:10975000084603B0BDE8F08F5D1E9742EDB208DA0F +:1097600002AF3B44374613F8083C04F8013B2B4654 +:10977000E0E70020EDE7000038B50C4B04460D464D +:109780001A68824207D102681A6021460420BDE8A7 +:10979000384003F057BC29B9054A40F24511054845 +:1097A000F9F700FE23682B60EFE700BFB0520020FE +:1097B00088700108B470010881422DE9F047044621 +:1097C0000E4604D12C4AAB212C48F9F7EBFD3EB1F3 +:1097D0003368A34204D0284AAD212948F9F7E2FDB5 +:1097E00067687B689A8882BB1B6804F11C01636010 +:1097F00004F108037A6853F8040B8B4242F8040B17 +:10980000F9D101213846FFF789FA3846FAF74CFBBF +:1098100005463846FAF7DEF96768DFF85C80DFF85E +:109820006C90A7B92046174C3146FFF7A5FF238857 +:10983000AB4204D2104AD2211348F9F7B3FD238872 +:1098400028465B1B2380BDE8F0870025E4E77B68A2 +:109850003846D3F800A0FAF727FB0544B5F5803F5A +:1098600004DB4246CC214846F9F79CFD3846ADB2B0 +:109870005746FAF7AFF9D4E788700108D0700108AD +:10988000DC700108AE5200200B710108EE70010877 +:109890002DE9F04105460F460026DFF868800024D8 +:1098A000D8F800302146A446204653B910B1FFF73E +:1098B00083FF0644BE4201DA012CF0DC3046BDE8ED +:1098C000F081D5F80CE05A69724509D1D5F810E05D +:1098D0009A69724504D1B3F80CE0AA88964508D07D +:1098E000013460B1C27F93F81FE096459CBF61468A +:1098F00018461A68002A18BF9C461346D5E76146E9 +:109900001846F6E7B052002010B5044628B9064ABA +:109910004FF431710548F9F745FD21460520BDE8B2 +:10992000104003F08FBB00BF88700108865A010801 +:1099300010B5044628B9074A40F2CE210648F9F787 +:1099400031FD606908B1FAF745F92046BDE81040DD +:10995000FFF7DABF887001083071010838B5094B8C +:109960000024186800B938BDC37F056823B1013BE6 +:10997000C37704462846F5E72146FFF71DFF20463A +:10998000F7E700BFB05200202DE9F74F4568804649 +:109990002B7803F00F03052B40F09F80E888F9F740 +:1099A0008BFE07466888F9F787FE2A7802F00F02D7 +:1099B000B0EB820F4FEA8203C0F08F80C31AB74C1E +:1099C00040469BB20193FAF76FFA2388814603441D +:1099D0003C2B78DCB24E3468002C40F083800420AD +:1099E00003F024FB044658B949462846FFF750FFC8 +:1099F000814572DC042003F019FB044600286CD07A +:109A00001C220021201DF8F7E9FC0F2304F10802B5 +:109A100005F11401E3773368346023602B4653F873 +:109A2000040B8B4242F8040BF9D1B5F806A0C7F33A +:109A30000C071AF0200A4FEAC7070AD1019BFB184E +:109A40009BB29F4200F23A814FF6EB72934200F2D2 +:109A50003581D8F804506888F9F72EFE2B7803F08A +:109A60000F03B0EB830F4FEA8302C0F02781801A07 +:109A70001FFA80FBE888F9F71FFEC0F30C00D8F846 +:109A800004600025C30035700BEB03027570B570E0 +:109A900090B2F570B3808342F28000F20F81D4F867 +:109AA00004C04FF0010B614659BB002D40F0B1805E +:109AB000BCF1000F00F09D807A4A4FF4DF717A48C4 +:109AC000F9F770FC95E001462846FFF7E1FE20B16A +:109AD00023884B443C2B7FF77DAF4046FAF77AF85A +:109AE00000277FE0EB6862699A4208D12B69A2697E +:109AF0009A4204D1A289AB889A4200F0F28024688D +:109B00006AE74A68B2F804E0734575D23160002D07 +:109B10006CD0E9888B42C0F0D18093888342C0F03A +:109B2000CD80C5F80080B3888B4240F0F680BAF152 +:109B3000000F04D0A37F13F0010300F09E80BBF15F +:109B4000000F75D14FF0000B544E30888144A6F8B9 +:109B50000090BAF1000F06D1019B1F44A37F43F090 +:109B60000103A783A377BBF1010FB9D1636804F1A7 +:109B70001C01A08B5F6804F1080314303D683A466D +:109B800080B253F804CB8B4242F804CBF9D1F9F7F9 +:109B900093FD0023788014213846BB71FB71BB72A2 +:109BA000FB7203F093F978816768002D67D13C4B15 +:109BB0001B68A34202D01D46002B6DD120462946CA +:109BC000FFF7DAFD3846FAF76FF933880446834227 +:109BD00005D2344A40F29B213448F9F7E3FB308840 +:109BE000041B3480384603B0BDE8F08F938883426D +:109BF00064D3C4F804809AE760D0D18899425DD8D4 +:109C000025B1E988714518BF4FF0000B1168154662 +:109C10004AE7EA889A4205D9224A4FF4DB71244880 +:109C2000F9F7C0FBEA88C5F80080B3889A427CE760 +:109C30006368002B86D059688B88002B82D13368EB +:109C400093B9B14205D1174A4FF4F0711948F9F7A9 +:109C5000A9FB3368002B3FF477AF124A4FF4F17140 +:109C60001548F9F79FFB6FE75A68F0889388984288 +:109C70007FF468AF13681646E2E79B4664E7D5F8C1 +:109C8000048014212846F9F77DFF29463846FAF763 +:109C90002DF9D8F8005088E72B688AE7AE520020EB +:109CA000B0520020887001085A710108C071010883 +:109CB0003C710108917101089E7101086368002BD5 +:109CC0007FF40BAF184B1B68A34205D0174A40F234 +:109CD000AB211748F9F766FB00212046FFF74CFD42 +:109CE000FBE6E888F9F7E8FCC0F30C0000287FF4F5 +:109CF0009CAEE089F9F7E0FCC0F30C0000283FF4CB +:109D000094AE2B4604F1080205F1140153F8040B3C +:109D10008B4242F8040BF9D187E6BAF1000F3FF409 +:109D200011AF4FF0000B05E7B0520020887001081A +:109D3000DB7101082DE9F04F2DED028B0B8D08EE44 +:109D4000102A8BB00546B3F114028A4648BFA3F12E +:109D50000D02C2F3CF030593436802931B7803F00F +:109D60000F03052B4FEA830740F0BE804389132B76 +:109D700040F2BA80029B0026D888F9F79DFCC0F318 +:109D80000C032C89039300F40053143C0793059BA8 +:109D9000A4B2DB009BB206932CB920460BB0BDECFD +:109DA000028BBDE8F08F069B4FF420721421102027 +:109DB000A34228BF23460493F9F76EFF8046A0B361 +:109DC0004389132B05D84A4A4FF449714948F9F79A +:109DD000E9FA029BD8F804201946143153F8040B11 +:109DE0008B4242F8040BF9D1D8F804B0DDF810909A +:109DF000B9F1000F40D06B89DE1BBB42B6B205D271 +:109E00003B4A40F22D313C48F9F7CCFA4E4528BF89 +:109E10004E4616B92D680027EAE7052003F006F93B +:109E2000034628B94046F9F7D5FE4FF0FF30B5E7B5 +:109E3000019631466A68089000203A440092412217 +:109E4000F9F782FE089B18B91846FFF75DFDE9E7B0 +:109E5000CDE90803A9EB06092846FAF72DF8099B76 +:109E6000264A1FFA89F9089940465D611A61FAF796 +:109E70003DF8B9F1000FCDD1039B3744C3F30C007B +:109E8000BAF82830BFB2133BA34201DD079B0BB1E8 +:109E900040F40050F9F710FC049BABF8060003F106 +:109EA000140080B2F9F708FC00231421ABF802007B +:109EB0008BF80A3058468BF80B3003F007F818EE91 +:109EC000102AABF80A004146DAF81030504698479D +:109ED0004046F9F77FFE049B059AE41A039B13445E +:109EE000A4B29BB2039357E76FF0050056E700BF9B +:109EF00088700108FC7101081C7201083199000882 +:109F00001FB5C36902938369019343690093D0E944 +:109F10000323D0E90101F9F7F7FC00280CBF6FF02B +:109F20000B00002005B05DF804FB000010B5C4680C +:109F3000034640681CB12346BDE8104018479B68A3 +:109F40009847204610BD000030B50E4C89B000295E +:109F500014BF0D462546002A14BF11462146002B8A +:109F600018BF1C460C9B05930D9BCDE9031406936B +:109F700069460E9BCDE901050348079301F094FA69 +:109F800009B030BD80700108019F000800B589B09C +:109F9000CDE9010169460348039201F085FA09B051 +:109FA0005DF804FB2D9F00082DE9F04707460E469B +:109FB0000025DFF868802C0101F0B6FC54F808A0F9 +:109FC000BAF1000F1ED108EB040948F8047001F043 +:109FD000B3FC99F80E30C9F804A02BB10D4A40F239 +:109FE00035210D48F9F7DEF94444002222813B78FF +:109FF000A28103F0F003102B18BF012666812846CA +:10A00000BDE8F087013501F097FC402DD3D14FF02A +:10A01000FF35F4E72C72010851720108B855002091 +:10A020002DE9F04F00248BB083460F4690469946A9 +:10A03000504E25464FF0010ACDE90444CDE90644CF +:10A04000CDE908445D4510DBDDE90401149B83E89C +:10A050000300DDE90601159B83E803000AAB13E961 +:10A060000300169B83E8030080E047B16A0905F00E +:10A070001F0357F822200AFA03F3134217D1B8F14D +:10A08000000F08D06A0905F01F0358F822200AFAC9 +:10A0900003F313420BD1B9F1000F60D06A0905F048 +:10A0A0001F0359F822200AFA03F3134257D001F094 +:10A0B0003BFC3F2D56D873897168B6F9082001938F +:10A0C000B38903910093029201F036FC019BCFB15A +:10A0D0004FEA551E05F01F0C57F82E000AFA0CFC2B +:10A0E0001CEA000F0ED0DDE9022109B9002A09DDC2 +:10A0F0000AAA013402EB8E0151F8182C42EA0C0234 +:10A1000041F8182CB8F1000F12D0680905F01F01B2 +:10A1100058F820200AFA01F1114209D043B10AABE4 +:10A12000013403EB800252F8103C0B4342F8103C20 +:10A13000B9F1000F13D06B0905F01F0159F8232066 +:10A140000AFA01F111420AD0009A42B10AAA013476 +:10A1500002EB830252F8083C0B4342F8083C0135FD +:10A1600010366FE74FF0FF3401F0E6FB20460BB0EE +:10A17000BDE8F08FB85500202DE9F04F002A85B0DA +:10A1800098460746ACBF16466FF00046019128B9C5 +:10A19000484A4FF471714848F9F704F93B681B7855 +:10A1A00003F0F003102B05D0424A40F2C53143487A +:10A1B000F9F7F8F818F0080F4FF00005DFF8F49001 +:10A1C0000CBF08220C22DFF8FCA0DFF8FCB07B6893 +:10A1D000002B3DD0039303986FF00043019904894D +:10A1E0002944B442A8BFB4B21B1BAB424FF00003DA +:10A1F000BCBFEC43A4B222462544F9F72DFFB4427C +:10A2000005DD4A4640F203415846F9F7CBF818F00D +:10A21000010F4AD1039B1B89A34205D24A4640F253 +:10A2200009412748F9F7BEF8039803891B1B002B47 +:10A2300036DD2146F9F720FE7860361B1C22002E01 +:10A24000C5DC002D33D02946386802F0F9FF09E05B +:10A2500003A9386803F0B0F90446B0B135B118F07D +:10A26000010FF0D0284605B0BDE8F08F04F092FA57 +:10A2700030B109F097FF0546204604F08BFA2860BC +:10A280000F3418BF01246542ECE7039B2BB94A4603 +:10A2900040F2EB315046F9F785F8039B7B609AE773 +:10A2A00000237B60F9F796FCC7E7002DDAD1002583 +:10A2B000D8E700BF2C720108707201088072010893 +:10A2C000C7720108865A0108A27201083F2808B522 +:10A2D00005D8064B020103EB00109B5823B909F087 +:10A2E00061FF09230360002008BD00BFB8550020AE +:10A2F00070B588B00E4615460193FFF7E7FF019B46 +:10A3000018B94FF0FF3008B070BD0DF10A0203A973 +:10A31000006802F029FF044658B104F03BFA002817 +:10A32000EFD009F03FFF0546204604F033FA2860DD +:10A33000E7E74FF40473BDF80A00ADF81030F9F701 +:10A34000BBF9039B04A9ADF8120030460794CDE990 +:10A3500005342B68102B84BF10232B602A68F8F774 +:10A360000BF80020CFE700002DE9F0470F46054627 +:10A37000002843D08469002C0FDA01F0D5FAAC69CB +:10A380000346002C07DA0FB9013CAC611846BDE862 +:10A39000F04701F0D1BA01F0CFFA2046FFF796FF5F +:10A3A000054658B301F0C0FA0646042F3AD8DFE854 +:10A3B00007F003272C3336002B8901331BB2012B06 +:10A3C0002B81CCBF00230123AA7B002A56D0002B6F +:10A3D00054D03046B5F90870B5F80A806609B5F86A +:10A3E0000C9004F01F0401F0A7FA4FF0010A01F0ED +:10A3F00067F9234B0AFA04F41D68DDB9BDE8F0875C +:10A400002B89013B2B810023DEE76B890122B3FA04 +:10A4100083F36A815B09D7E700236B81D4E70123CB +:10A42000AB81D1E7174A40F61D211748F8F7BAFF6C +:10A430000123C9E76B69FBB9002F05DDAB681BB1D0 +:10A4400053F826301C4211D1B8F1000F05D0EB684B +:10A450001BB153F826301C4208D1B9F1000F0BD0C4 +:10A460002B694BB153F826301C4205D005F118007A +:10A47000C5F814A001F038FA2D68BEE7304686E72B +:10A48000B45200202C720108D8720108082808B5BF +:10A490000AD0202808D0042806D0044840F66631A7 +:10A4A000034AF8F77FFF002008BD00BFE8720108EB +:10A4B0002C720108F0B5064685B00F461C461546BD +:10A4C0002AB9134A40F22E411248F8F76BFF2CB913 +:10A4D0000F4A40F22F411048F8F764FF4FF404731D +:10A4E0003846ADF80030F9F7E7F833686946ADF85B +:10A4F0000200284601930023CDE902332368102B84 +:10A5000084BF102323602268F7F736FF05B0F0BD43 +:10A510002C720108007301080D7301082DE9F74F33 +:10A520009846936807460E46144613B9D368002B25 +:10A5300056DC16F0080F7B6814BF0422002201933A +:10A540007BB901A9386802F0D9FF00284AD1019BE4 +:10A550002BB9264A40F284412548F8F723FF019B96 +:10A560007B60019B4FF000091B68CB46B3F808A045 +:10A57000E368994501DADA4519D822683AB1636887 +:10A580002BB10198231D81890830FFF793FF002329 +:10A590002269A36102B1636116F0010603D101983B +:10A5A0007E6004F005F90020A8F800A01AE0A16878 +:10A5B000AAEB0B054FEAC90001EBC90309F1010938 +:10A5C000ADB209585B680198AB42006898BF9DB274 +:10A5D0005B462A465D44F9F73FFD1FFA85FBC7E756 +:10A5E0006FF00F0003B0BDE8F08F00BF2C720108C0 +:10A5F00020730108F8B504460E4601F095F90023D2 +:10A60000656827686360236001F096F91DB12846EC +:10A610003EB1F9F7DFFA3FB13846BDE8F84002F045 +:10A6200095BD04F0C5F8F6E7F8BD0000F0B50023CD +:10A6300089B00F461646ADF80630FFF747FE0546CF +:10A6400020B94FF0FF34204609B0F0BD02A90068E0 +:10A6500002F092FE0446E8B12B681B7803F0F00389 +:10A66000102B04D009F09EFD5F230360E9E710F191 +:10A670000F0F03D109F096FD1623F6E704F08AF8D0 +:10A680000028DED009F08EFD0546204604F082F851 +:10A690002860D6E7029B2BB9374A40F2B2213748EF +:10A6A000F8F780FE01210298FFF77EFC431C044668 +:10A6B00007D1029802F04AFD09F074FD17230360E8 +:10A6C000C1E73F2805D92C4A40F2BB212C48F8F7B6 +:10A6D00069FE01F029F9029B9D699C6101F02CF94A +:10A6E000029B1B6B3BB1ED432DB200F0D9FF002D57 +:10A6F00021DC00F0DDFF002FA5D0002EA3D0002329 +:10A700000DF1060203A9029802F02EFD0546C8B11C +:10A710001C48012100EB0410FFF76CFF284604F0F1 +:10A7200039F800288DD009F03DFD0446284604F094 +:10A7300031F8206085E702980022013D036B114645 +:10A740009847D4E74FF40473BDF80600ADF8103015 +:10A75000F8F7B2FF039B04A9ADF81200384607953D +:10A76000CDE905353368102B84BF10233360326880 +:10A77000F7F702FE67E700BF2C7201082C7301088F +:10A780003C730108B855002073B50C461646FFF718 +:10A790009DFD054618B94FF0FF3002B070BD102E78 +:10A7A00004D16378022B01D1A3070ED06FF00F0004 +:10A7B00003F0F0FF0028EED009F0F4FC04466FF03F +:10A7C0000F0003F0E7FF2060E5E76368608801930E +:10A7D000F8F772FF01A90246286802F0DBFC044684 +:10A7E0000028DAD003F0D6FF0028D4D009F0DAFC34 +:10A7F0000546204603F0CEFF2860CCE72DE9F7435D +:10A800000546FFF763FD064620B94FF0FF3003B061 +:10A81000BDE8F0830468002C37D0247804F0F004FD +:10A82000A4F110035C425C412846FFF74FFD074648 +:10A83000D0B11E4D4FF040084FF000092B689F42E9 +:10A840000DD1AB6801AAC5F80890694600936B6802 +:10A8500001930123C5E90099386802F0B9FEB8F107 +:10A86000010805F10C05E9D1306802F05FFC0546EE +:10A87000B0B103F08FFF0028C7D009F093FC044665 +:10A88000284603F087FF2060BFE7436833B1084ADA +:10A8900040F23A310748F8F785FDC5E71C46C3E7A3 +:10A8A00030462146FFF7A6FE2846B0E7B852002002 +:10A8B0002C7201085473010873B50C461646FFF755 +:10A8C00005FD054618B94FF0FF3002B070BD637842 +:10A8D0008BB9006802F092FC04460028F5D003F022 +:10A8E00059FF0028EFD009F05DFC0546204603F033 +:10A8F00051FF2860E7E7102E03D1022B01D1A307F7 +:10A900000ED06FF00F0003F045FF0028DBD009F0F8 +:10A9100049FC04466FF00F0003F03CFF2060D2E7D3 +:10A92000636860880193F8F7C7FE01A902462868AA +:10A9300002F04AFCD0E7000038B50C46FFF7C6FC31 +:10A94000054610B94FF0FF3038BD84F308010068A8 +:10A95000C9B202F063FC04460028F5D02B681B78CE +:10A9600003F0F003102B04D009F01CFC5F230360FC +:10A97000E8E703F00FFF0028E4D009F013FC0546D8 +:10A98000204603F007FF2860DCE700002DE9F041D6 +:10A990008CB00C4617460193DDE91285FFF796FC53 +:10A9A0000646002844D0036801991B7803F0F003A1 +:10A9B000102B1AD10B463A462146FFF7DDFB044621 +:10A9C000B8F1000F0DD065B1002303AA05A93068C6 +:10A9D00002F0CAFB2B464246BDF80C1005A8FFF753 +:10A9E00069FD20460CB0BDE8F0810023CDF814804D +:10A9F000ADF80A300B93CDE9093303AB079301237C +:10AA0000CDE903470893B5B12B68069305AA0DF16C +:10AA10000A033046FFF782FD044670B103F0BAFE28 +:10AA200030B109F0BFFB0546204603F0B3FE2860B5 +:10AA30004FF0FF34D5E72B46E7E7BDF80A40BC42AC +:10AA400028BF3C46002DCCD0069B2B60C9E70000F8 +:10AA50002DE9F04186B00746154601910093DDE9E6 +:10AA60000C48FFF733FC0646DDE9003120B94FF012 +:10AA7000FF3006B0BDE8F0810268127802F0F00203 +:10AA8000102A06D12A46384606B0BDE8F04100F04B +:10AA900053B8B5F5803F04D309F084FB7A230360F3 +:10AAA000E5E7AAB284BBB8F1000F35D10023CDE9A8 +:10AAB00002333CB3636860880493CDE90021F8F762 +:10AAC000FBFD0446DDE9002102A8ADF8144003F0C7 +:10AAD0008DFE044620B902A9306802F0C7FB044687 +:10AAE00002A803F077FE204603F054FE30B109F0CF +:10AAF00059FB0646204603F04DFE3060002CB6D1CF +:10AB00002846B6E70494DFE7B8F1100F04D1637864 +:10AB1000022B01D1A307C9D06FF00F0003F03AFE5A +:10AB20000028A4D009F03EFB04466FF00F0003F0AC +:10AB300031FE20609BE7000030B587B005461C461B +:10AB4000CDE90221FFF7C2FBDDE9022118B94FF080 +:10AB5000FF3007B030BD03681B7803F0F003102B03 +:10AB600007D000232846CDE900332346FFF770FFC6 +:10AB7000EFE714F0100F4FF000054FEA640414BF24 +:10AB800003230123059504F0040405AD2343009538 +:10AB9000006802F0D5FB044603F0FCFD30B109F07B +:10ABA00001FB0546204603F0F5FD2860002CCED1C0 +:10ABB0000598CEE7022938B5134612D0032905D0EF +:10ABC000012916D1174A0021102002E0154AD9B2F6 +:10ABD000402002F05FFA044698B909F0E3FA6923CD +:10ABE0000AE0882A4FF000010E4A0CBF21202020E5 +:10ABF000EFE709F0D7FA16234FF0FF350360284638 +:10AC000038BD0021FFF7D0F9431C054607D1204687 +:10AC100002F09CFA09F0C6FA17230360EFE7A0617F +:10AC2000EDE700BF69A300082DE9F04F402895B07B +:10AC30008A46914698461E9E049009D909F0B2FAB8 +:10AC4000162303604FF0FF34204615B0BDE8F08FA7 +:10AC50000BAC029409AC019407AC0094FFF7E0F947 +:10AC6000051E03DA09F09EFA0923EAE740F02C8179 +:10AC70003EB1D6E90023134303D1B468002C00F0A1 +:10AC8000BE800DAC00211C222046F7F7A7FB002157 +:10AC900013A8CDF84480CDE90FA900F0FFFD18B14D +:10ACA00009F080FA0C23CCE700F0FAFC874A13681D +:10ACB0000D9303B15C60DFF818B22F46146000F00A +:10ACC000F7FC5C460121049B9F4212D10BAB4A4624 +:10ACD00051463846029309AB019307AB00934346B4 +:10ACE000FFF79EF9041E45DA09F05CFA09230360B8 +:10ACF00038E0BAF1000F08D0780907F01F035AF8BE +:10AD0000200001FA03F3034217D1B9F1000F08D074 +:10AD1000780907F01F0359F8200001FA03F30342F2 +:10AD20000BD1B8F1000F22D0780907F01F0358F8B3 +:10AD3000200001FA03F3034219D000F0F5FDA37BD4 +:10AD40000133DBB2A3737BB90593FF22604B03EBA6 +:10AD50000714A2734FF0FF3400F0EEFD09F022FA61 +:10AD60001022026000261AE000F0E6FD0121013702 +:10AD70001034A8E7F6D1002E5AD0B1684FF47A7398 +:10AD8000326801F5FA7191FBF3F103FB021101291D +:10AD9000B8BF012113A800F095FD049F0646BD42EF +:10ADA00048D100F07DFC0D9B0BB10E9A5A60474DC7 +:10ADB0000DAA0E9B296891427BD12BB1454A40F2E6 +:10ADC00033714548F8F7EEFA0D9B2B6000F070FCEC +:10ADD00013A800F08DFD002CFFF634AF01360ED025 +:10ADE0000BAB4A4651460498029309AB019307AB5B +:10ADF00000934346FFF714F9041EFFF633AFBAF190 +:10AE0000000F03D0DDE907018AE80300B9F1000F64 +:10AE100004D009AB93E8030089E80300B8F1000F00 +:10AE20003FF412AF0BAB93E8030088E803000BE795 +:10AE30002146AFE7BAF1000F08D06A0905F01F01FB +:10AE400001235AF822208B40134217D1B9F1000F89 +:10AE500008D06A0905F01F01012359F822208B4010 +:10AE600013420BD1B8F1000F1FD06A0905F01F0182 +:10AE7000012358F822208B40134216D000F054FDD5 +:10AE80009BF80E2003463AB9059040F66501114A39 +:10AE90001248F8F787FA059B9BF80E2012B1013A89 +:10AEA0008BF80E20184600F047FD01350BF1100B12 +:10AEB00075E72BB9074A40F236710948F8F772FA7C +:10AEC000DDE90D231A6081E72C4698E7B452002093 +:10AED000B85500202C720108857301086C730108B5 +:10AEE0009D7301080123FFF703BA00002DE9F34722 +:10AEF0000A9F82460C4616461D46FFF7E7F920B129 +:10AF000035B909F04FF90E2303604FF0FF3472E0BA +:10AF100000F0C6FBBAF13F0F06D9092400F0C8FBC8 +:10AF200009F040F90460F0E7DFF884934FEA0A186B +:10AF300059F80830002BF0D0882C00F08D8109DC06 +:10AF4000002C00F0B180062C00F061816D2400F02F +:10AF5000AFFBE5E740F6FF729442F7D141F20B02F6 +:10AF60009642F3DC41F20102964211DC082E06D033 +:10AF7000202EEBD11B7803F0F003202BE6D13046D6 +:10AF8000FFF784FA032F1FD8162400F091FBC7E7C0 +:10AF9000A6F58056023E092ED8D801A252F826F016 +:10AFA0001BB000084DAF00084DAF00084DAF0008C2 +:10AFB000FFAF00084DAF00084DAF00084DAF0008CF +:10AFC00025B000085DB0000859F80830002BDBD030 +:10AFD0005B68002BD8D02C6840B293F909202CB1C3 +:10AFE00010435872002400F063FB04E022EA0000E2 +:10AFF000587200F05DFB204602B0BDE8F0870F2FCD +:10B00000C2D94FF47A71AA68286892FBF1F201FB69 +:10B010000022002AB8DBDA61E4E7032FB4D92A68FA +:10B020001A62DFE7032FAFD95A68002AACD01B7829 +:10B0300003F0F003202B89D1137C13F0020603D018 +:10B040006A2400F035FB6BE72C681CB143F0010368 +:10B050001374C7E723F001031374CAE7052F93D9CC +:10B0600095F9001041B12846F8F7A2FB014618B93E +:10B07000132400F01DFB53E759F80820137803F060 +:10B08000F003102B08D0202B0AD0864A40F6AA5194 +:10B090008548F8F787F9A5E75068F9F737F9A1E788 +:10B0A0005068FDF7EDF89DE7721E062A3FF64EAF99 +:10B0B000DFE802F00E044E4E18283800032F7FF60A +:10B0C00063AF5B68002B3FF45FAF2A68DA7290E7EA +:10B0D000032F7FF659AF5B68002B3FF455AF2A680A +:10B0E0009A7286E7002F3FF44FAF5A68002A3FF468 +:10B0F0004BAF1B7803F0F003202B7FF427AF2B78A6 +:10B10000537776E7032F7FF63FAF5A68002A3FF464 +:10B110003BAF1B7803F0F003202B7FF417AF2B68B5 +:10B12000936166E7002F3FF42FAF5A68002A3FF47F +:10B130002BAF1B7803F0F003202B7FF407AF2978A7 +:10B14000137C11B143F0080386E723F0080383E77B +:10B15000072F58D95A68002A55D01B7803F0F003FE +:10B16000202B52D16B68032E00932B68019323D1BF +:10B170005046FFF7ABF8E8B100234C4A0C2505FB1D +:10B1800003F18E589EB953185050009A01A9684691 +:10B190005A60019A9A60FDF743FF0546002D18BFDB +:10B1A0007D2400F085FA002C3FF425AFB8E601338A +:10B1B000402BE4D10C24F4E701A96846FDF798FF81 +:10B1C00005465046FFF782F80028E7D0374A0023AB +:10B1D000DDE900679446116888420FD15168B14299 +:10B1E0000CD19168B94209D10C22534300220CEBD7 +:10B1F00003004CF80320C0E90122CFE701330C32F1 +:10B20000402BE8D1CAE71624CBE76D24C9E7032F0A +:10B210007FF6BAAE5A68002A3FF4B6AE1B7803F048 +:10B22000F003102B7FF492AE137D012B3FF4ACAEF4 +:10B23000012E06D0022E7FF489AE2B68C2F894301E +:10B24000D0E62C68538B1CB143F040035383C9E60E +:10B2500023F040035383CCE6032F7FF695AE5A6864 +:10B26000002A3FF491AE1B78212B7FF46FAE012EA4 +:10B270000DD0022E7FF46AAE2B6833B1A3F1080023 +:10B280004FF6F771884288BF0823D383AAE62B685C +:10B2900033B1A3F108004FF6F771884288BF082345 +:10B2A00013849FE62C720108B8730108B85200207D +:10B2B000B855002010B50446084611461A1E05DA96 +:10B2C00008F070FF1C230024036009E0022C09D160 +:10B2D000FEF708FA044618B908F064FF1C2303605F +:10B2E000204610BD08F05EFF6A23ECE708B5034670 +:10B2F00008461146022B03D1BDE80840FEF74AB9C3 +:10B3000008F050FF6A2303604FF0FF3008BD0000D3 +:10B3100007B500F0D3F900F0C3F9284B1B6813B14F +:10B32000274A10689847274D00F0CAF9FCF70CFD32 +:10B33000431C044610D100F0BBF9002201A92846A5 +:10B3400000F05CFA00F0ACF9019CB4B91E4A9121FE +:10B350001E48F8F727F8E7E710B9FCF7D1FCE3E758 +:10B3600000F0A6F9224601A9284600F047FA044653 +:10B3700000F096F90134F0D0E6E72378012B0FD0E6 +:10B38000022B13D0B3B96068D4E90213984710B107 +:10B390006068F8F71FFC2146092001F053FEC3E75F +:10B3A000D4E90130984721460820F6E7D4E9013076 +:10B3B0009847B9E7044AD421CAE700BFBC59002026 +:10B3C000C0590020C4590020E47301080774010823 +:10B3D000F8B5114B07460E4615461B682BB90F4AA8 +:10B3E00040F201110E48F7F7DDFF092001F01EFEC3 +:10B3F000044668B100230146C5600370C0E90176C8 +:10B40000054800F093F928B12146092001F01AFE01 +:10B410004FF0FF30F8BD00BFC4590020E4730108AD +:10B420002874010891F8313013F0180F14BF024A44 +:10B43000024AFFF7CDBF00BF39B50008B59100083B +:10B44000104B70B51B6806460D462BB90E4A4FF4DB +:10B45000B1710E48F7F7A6FF082001F0E7FD04469A +:10B4600060B1012301460370C0E90165054800F0A1 +:10B470005DF928B12146082001F0E4FD4FF0FF30CE +:10B4800070BD00BFC4590020E4730108287401088E +:10B4900013B50446019100F003F90198A04700F0AC +:10B4A00007F9002002B010BD13B50446019100F069 +:10B4B000F7F80198A047019000F0FAF8019802B05F +:10B4C00010BD000037B505460C4601F027FD114BB5 +:10B4D000002111481D60114B1C6000F0F3F828B1E9 +:10B4E0000F4A40F291210F48F7F75CFF0E4800F039 +:10B4F00005FA28B10A4A40F295210C48F7F752FFA5 +:10B5000001230B490B48009300231A4600F0A2F8D0 +:10B5100003B030BDBC590020C4590020C0590020E0 +:10B52000E473010838740108B85900205B740108FD +:10B5300011B300087C74010870B504460D4600F094 +:10B54000BFF863890E2B1AD96068E37B86891BB923 +:10B5500095F834300133E3730378D9070AD5012B0A +:10B5600011D1437833B983785E2B03D1637B43F0E9 +:10B5700010036373082E10D0B6F5C16F1DD020469E +:10B58000F8F728FB17E00622134908F011FE0028FF +:10B59000F0D1637B43F00803EBE795F831301A07ED +:10B5A000EDD50E212046F8F7EDFA0028E7D129461F +:10B5B0002046FDF7FFFD002070BD95F831301B07D8 +:10B5C000DDD50E212046F8F7DDFA0028D7D129462F +:10B5D0002046FDF711F8EEE7E87401082DE9F04187 +:10B5E0000D460446BDF8180016461F46F8F764F8E5 +:10B5F0000E2180462846F8F7C1FAE8B900F060F855 +:10B600006968A1F80C803B680B60BB888B8033684D +:10B61000C1F80630B3884B8194F83030062B05D042 +:10B62000074A4FF49D710748F7F7BCFE6369294646 +:10B630002046BDE8F04118476FF00100BDE8F081F9 +:10B640008C740108B4740108036800211B68184752 +:10B6500008F0E0BD2DE9F34105460820884617466D +:10B660001E4600F0DDF9044608B1C0E900876368B2 +:10B67000B6F5006F30464FF03C02B8BF4FF40060A3 +:10B6800000932946236806F07DFF18B92946034830 +:10B6900001F05CFA204602B0BDE8F081F8740108C0 +:10B6A000024808B5FFF7D0FF08BD00BFC859002009 +:10B6B000014801F0ADB900BFC85900207047000033 +:10B6C00070470000F8B506464FF4157000F0A8F971 +:10B6D0000446D0B1002104F50E7700F50270002574 +:10B6E00001F000FA002104F5087001F0FBF90021D7 +:10B6F000384601F0F7F93846C4E9005501F0A6F9DB +:10B700002846C4F850523460F8BD4FF0FF30FBE7D4 +:10B7100010B550B1046844B104F50E7001F08EF913 +:10B720002046BDE8104000F081B910BD70B50E464E +:10B73000044608B1036823B9174A96211748F7F75A +:10B7400031FE246804F50E75284601F077F9D4E936 +:10B75000000300F17E029A4205DA284601F076F9EC +:10B760004FF0FF3070BD594203F07F0201F07F01BE +:10B7700058BF4A42984202F1020244F8226003F1A3 +:10B780000102626003D104F5027001F05FF92846FE +:10B7900001F05CF90020E5E7187501085175010812 +:10B7A00070B504680D4604F50E76304601F046F992 +:10B7B000D4E90032934205D1304601F047F94FF009 +:10B7C000FF3070BD55B15A4203F07F0302F07F0293 +:10B7D00058BF5342023354F823302B60236801339F +:10B7E0002360D4F850321BB104F5087001F02EF933 +:10B7F000304601F02BF90020E3E700002DE9F84383 +:10B800000E461746044608B1036823B9214AFD21B4 +:10B810002148F7F7C7FD24684FF47A7804F50E75D0 +:10B8200008FB07F804F50279284601F007F9D4E986 +:10B830000032934213D1284601F008F947B141463E +:10B84000484601F019F930B94FF0FF30BDE8F883F0 +:10B85000484601F0F3F8284601F0F0F8E7E756B162 +:10B860005A4203F07F0302F07F0258BF5342023373 +:10B8700054F823303360236801332360D4F8503206 +:10B880001BB104F5087001F0E1F8284601F0DEF87C +:10B890000020DBE7187501085175010870B50546F1 +:10B8A00018200E4600F0BCF8044620B1311E18BF27 +:10B8B000012101F017F9B4FA84F02C6040094042EC +:10B8C00070BD000008B50068036831B95B6898472F +:10B8D00080F00100C0B2404208BD4FF47A721B688C +:10B8E00051439847F4E7000000680368DB68184795 +:10B8F000006810B103689B691847704738B5054662 +:10B90000182000F08DF8044608B101F0DFF8B4FA11 +:10B9100084F02C604009404238BD000001F022B99B +:10B9200001F01AB970470000024808B5FFF78CFE15 +:10B93000002008BDE0590020014801F069B800BFAF +:10B94000E059002010B50A4C204601F0BFF820460F +:10B95000084C094A094908F00DFC204601F0B6F8E8 +:10B960002046054A0549BDE8104008F003BC00BF69 +:10B97000E0590020C8590020045A0020AD0D0008ED +:10B9800010B530230C4683F31188002104F1180010 +:10B9900005F050FE2346044A2046E16906F0C0F94E +:10B9A000002383F3118810BD81B9000800F118034A +:10B9B000C1618361002303607047000013B5302329 +:10B9C0000446C16983F3118803681BB1019106F035 +:10B9D000B1F901992346044A204606F0A1F9002353 +:10B9E00083F3118802B010BD81B90008044908B57D +:10B9F000F6F7E0FC0028034818BF002008BD00BF90 +:10BA0000785501085C7B010810B50C46FFF7EEFF86 +:10BA100010B183682360006910BD0000704700000A +:10BA20000121884238BF084606F0A4BD08B106F0DF +:10BA3000A5BD70477047000010B413460268146833 +:10BA40000022A4465DF8044B6047000000F58050DA +:10BA500090F861047047000000F5805090F85A0497 +:10BA60007047000000F5805090F9600470470000B6 +:10BA70004E207047302383F3118800F58052D2F8AE +:10BA8000A434D2F8A0041844D2F89C341844D2F854 +:10BA900084341844D2F894341844D2F890341844BA +:10BAA000002383F31188704700F58050C0F85C14C0 +:10BAB000012070472DE9FF47054600F580500C46F0 +:10BAC000BDF830A090F85A1499B1D0F88014013123 +:10BAD000C0F8801421688E0006D4217B08290BD978 +:10BAE000667B0EB10F2907D9D0F884340133C0F832 +:10BAF00084344FF0FF30A5E0302181F31188696B69 +:10BB0000D1F8C46016F4001813D0D0F888140131AD +:10BB1000C0F88814D0F88C14002940F09680214693 +:10BB20002846CDF800A001F065F8002383F31188C2 +:10BB300088E026684FF04809D1F8C470002EE96A01 +:10BB4000C7F30447B4BF46F08046B60419FB071993 +:10BB5000C9F80060216849004FEA076144BF46F018 +:10BB60000056C9F80060267B41EA06417E01C9F80B +:10BB7000041094F80DC0BCF1000F27D041F440111F +:10BB8000C9F80410D0F8B8140131C0F8B814A919D4 +:10BB900001F58351087D40F020000875207BCDE938 +:10BBA000022301F099F80330DDE9022380105FFAE7 +:10BBB00088F108F1010881420FDA04EB810C09EBEE +:10BBC0008101DCF804C0C1F808C0F0E7A91901F54B +:10BBD0008351087D6CF34510DFE70120696B04F1A8 +:10BBE0000C0CB840C1F8D000A919204601F58251CB +:10BBF000C1E90623A7F17D01C9B205EB411150F857 +:10BC000004EB604541F804EBF9D100882E4408802C +:10BC100041F27001775006F580560AF0030196F85C +:10BC2000740041F0100120F01F00014386F87410E9 +:10BC3000002181F3118821462846CDF800A000F0AC +:10BC4000D9FF012004B0BDE8F08700206DE70000B7 +:10BC50002DE9F04700F58056044696F85A54002D19 +:10BC600040F00381037E032B40F0948028462B464E +:10BC70002F465FFA80FC944510DA01EBCC0E51F8A8 +:10BC80003CC0BCF1000F04DBDEF804C0BCF1000FC7 +:10BC900002DB01370130ECE70133FBE7302080F3B2 +:10BCA0001188606BF3B9D0F8803043F00203C0F81C +:10BCB00080304E23606B002F6FD1D0F8803043F07E +:10BCC0000103C0F880306A4B6A4A1B6803F1805355 +:10BCD00003F52C539B009342236340F2B0806648E7 +:10BCE00000F034FF4D2B42D8DFF884814FEA034E39 +:10BCF000DFF88891D8F800C04EEA8C0EC0F884E0D6 +:10BD00000CF1805000F52C508000E06103EB0C003A +:10BD1000D4F834C0C3F14E03C8F80000DCF880004A +:10BD200040F03000CCF880004FF0000CD4F81C80BC +:10BD3000E6465FFA8CF08242BCDD01EBC00A51F8A6 +:10BD40003000002810DBDAF804A0BAF1000F0BDA9B +:10BD500009EA00400AF07F0A40EA0A0040F0084081 +:10BD600048F82E000EF1010E0CF1010CE1E7836999 +:10BD700023F00103836100F0F5FE0646636B9B69C7 +:10BD8000D90704D500F0EEFE831BFA2BF6D9002369 +:10BD900083F311882846BDE8F087B7EB530F3DD2F7 +:10BDA000DFF8CCE04FEA074CDEF800304CEA830CB9 +:10BDB000C0F888C003F1805003EB4703002700F56B +:10BDC0002C50CEF80030BC4680002062606BD0F86A +:10BDD000803043F00C03C0F88030D4F820E0FBB290 +:10BDE0009A427FF770AF51F8330001EBC308002887 +:10BDF000D8F8043001DB002B0EDB20F0604023F08C +:10BE0000604340F0005043F000434EF83C000EEB1E +:10BE1000CC000CF1010C43600137E0E7836923F0AB +:10BE20000103836100F09EFE0646636B9B69DA079F +:10BE3000ADD500F097FE831BFA2BF6D9A7E7626B0E +:10BE4000936923F00103936100F08CFE0746636B56 +:10BE50009B69DB0705D500F085FEC31BFA2BF6D9DD +:10BE600095E7012586F85A5491E7002592E700BF2F +:10BE7000005A0020FCB50040707B01080000FF075D +:10BE800013B500F580540191E06CF6F745FF1F28CB +:10BE90000AD920220199E06CF6F7B4FFA0F1200343 +:10BEA0005842584102B010BD0020FBE708B53023CE +:10BEB00083F3118800F58050C06CF6F701FF002372 +:10BEC00083F3118808BD0000002202608281426075 +:10BED000826070470022002310B5C0E900230023D0 +:10BEE00004460C3020F8043CFFF7EEFF204610BD5E +:10BEF0002DE9F0479A4688B0074688469146302398 +:10BF000083F3118807F580546846FFF7E3FFE06C80 +:10BF1000F6F7E8FE1F282ED920226946E06CF6F7D6 +:10BF2000F5FF202827D194F85A3423B303AD4446B3 +:10BF300005AB2E46083403CE9E4244F8080C44F864 +:10BF4000041C3546F5D130682060B388A380DDE954 +:10BF50000023C9E90023BDF80830AAF80030002307 +:10BF600083F3118853464A464146384608B0BDE837 +:10BF7000F04700F005BE002080F3118808B0BDE84E +:10BF8000F08700002DE9F84F064688461022002170 +:10BF900004303546F6F722FA06F58157264B183756 +:10BFA00045F8383B2C4620462034FFF793FFA74244 +:10BFB000F9D106F580544FF4805306F5A3594FF09C +:10BFC000000AA5630025E76406F5835709F11809FF +:10BFD0004FF0000B18376564C4E90F35012384F86E +:10BFE000483084F85030A7F11800203747E910ABEB +:10BFF000FFF76AFF47F8285C4F45F4D184F8608466 +:10C00000A4F86254A4F86454A4F8665484F86854FC +:10C01000A4F86A54A4F86C54A4F86E5484F87054CC +:10C02000B8F1000F02D0054800F090FD044B3046F7 +:10C030007363BDE8F88F00BFB07B0108947B0108F3 +:10C0400000A00040044B10B5197804464A1C1A7031 +:10C05000FFF798FF204610BDFD5900202DE9F04361 +:10C0600000295AD02E4E2F48B6FBF1F481428CBFE6 +:10C070000A201120431EB4FBF0F700FB1740DDB28D +:10C0800020B1022B1846F5D8002032E07B1EB3F514 +:10C09000806F2ED2C5EBC5084FF47A7308F1030404 +:10C0A0004FEAE40EC4F3C7040EF10109281B0EFB8E +:10C0B000033E5FFA80FC59FA80F0BEFBF0F0B0F569 +:10C0C000617F18DC83B2601C5CFA80F07843B6FBB9 +:10C0D000F0F08142D8D1611E0F29D5D80CF1FF3183 +:10C0E0000729D1D80120138057801071547182F82C +:10C0F00006C0BDE8F08308F1FF34E010C4F3C704C4 +:10C1000000F1010E2D1B00FB03335FFA85FC5EFA84 +:10C1100085F5B3FBF5F39BB2D5E70846E9E700BF29 +:10C1200000B4C4043F420F0030B50D4B05200D4D47 +:10C130001C786C438C420ED159780120518099783B +:10C140005171D9789171197911715B7903EB83037E +:10C150005B00138030BD013803F10603E8D1F9E735 +:10C16000F47B010840420F0038B540F27772436B10 +:10C17000154CC3F8BC200722436BC3F8C8202268C3 +:10C18000416B930043F4C023C1F8A03002F1805307 +:10C1900002F16C01456B03F52C53EA3289009B00D8 +:10C1A000226041F0E061094A4362C5F8C01003F51E +:10C1B000D87103F56A73C1629342036302D90448DC +:10C1C00000F0C4FC38BD00BF005A0020FCB50040A0 +:10C1D000707B01082DE9F04F00F580551F4689B0AE +:10C1E000044695F8603489469046012B04D9002610 +:10C1F000304609B0BDE8F08FA04A52F8231009B9C3 +:10C2000042F823009E48C4F8149001782776C9B9F3 +:10C21000302383F311889B4BD3F8EC2042F48072D7 +:10C22000C3F8EC20D3F8942042F48072C3F8942031 +:10C23000D3F8942022F48072C3F894200123037071 +:10C2400081F3118895F859647EB9302383F31188FE +:10C250000321132004F040FB0321152004F03CFBD4 +:10C26000012385F8593486F31188302383F311882C +:10C27000626B936923F01003936100F073FC8246B4 +:10C28000636B9E6916F0080609D000F06BFCA0EB0A +:10C290000A03FA2BF4D9002686F31188A8E79A69D5 +:10C2A00042F001029A6100F05DFC8246636B9A697C +:10C2B000D00706D400F056FCA0EB0A03FA2BF5D900 +:10C2C000E9E79A694FF0000A42F002029A61636B53 +:10C2D000C3F854A08AF3118804F5825BE86CF6F782 +:10C2E000EFFC0BF1180B202200216846F6F776F8D8 +:10C2F00002A8FFF7E9FD6A460BEB06030DF1180EE5 +:10C30000CDF818A094460833BCE80300F44543F880 +:10C31000080C43F8041C6246F4D1DCF80000203617 +:10C320001860B6F5806F9CF804201A71DBD10023E9 +:10C3300004F5A35249462046023285F8583485F860 +:10C340005B34FFF78BFE064690B9626B936923F06E +:10C350000103936100F006FC0546636B9B69D907F6 +:10C360007FF545AF00F0FEFB431BFA2BF5D93EE706 +:10C3700095F86634C5F87494591E95F86734626B65 +:10C38000013B1B0243EA416395F8681401390B43F2 +:10C39000B5F86414013943EA0143D361B8F1000FE1 +:10C3A00036D004F5A352414620460A32FFF7BCFEC0 +:10C3B00090B9626B936923F00103936100F0D2FBA3 +:10C3C0000546636B9B69DA077FF511AF00F0CAFB86 +:10C3D000431BFA2BF5D90AE795F86F24C5F8788442 +:10C3E000511E95F87024636B013A120142EA012252 +:10C3F00095F86E1401390A43B5F86C14013942EA14 +:10C40000014242F40002DA604FF42062636B9A64E6 +:10C41000636B4FF000082046C3F8BC80FFF7A4FE12 +:10C4200085F861846FF04042636B1A65164A636B4E +:10C430005A654FF00222636B9A654FF0FF32636BCF +:10C44000C3F8E0200322636B9742DA653FF4D0AE75 +:10C45000626B936923F00103936100F083FB07464D +:10C46000636B9B69DB0705D500F07CFBC31BFA2BD4 +:10C47000F6D9BCE6012385F85A34B9E6F85900200C +:10C48000FC59002000440258550200022DE9F04FEB +:10C4900000F5A5578BB00446904699464FF0000B27 +:10C4A00041F2700A1037636BD3F8D83023FA0BF3DC +:10C4B000DD0752D504EB4B114FEA4B1251440B7977 +:10C4C00018074AD404F58056D6F88C340133C6F8E0 +:10C4D0008C3447E902890B79990604EB020148BFC5 +:10C4E000D6F8BC34514444BF0133C6F8BC340B7990 +:10C4F00043F008030B71DB0724D596F85B340BB3CC +:10C5000002A8019204F58355FFF7E4FC019A05ABFC +:10C51000154405F1080C2868083555F8041C1A461E +:10C52000654503C21346F6D1286802A9106020466B +:10C53000AA889A800123ADF810302368CDE90289DA +:10C540001B6C9847D6F8B034D6F85C040133C6F8B3 +:10C55000B03410B103681B6998470BF1010BBBF1B4 +:10C56000200FA0D10BB0BDE8F08F00002DE9F04FF7 +:10C570000F468DB0044600F0F7FA82468946002F38 +:10C580005BD1636BD3F8A02012F4FE0F03D100201F +:10C590000DB0BDE8F08FD3F8A420920141BF04F59F +:10C5A0008051D1F8A0240132C1F8A024D3F8A420EE +:10C5B0005606ECD0D3F8A450666AC5F30525482387 +:10C5C000E8464FF0000B03FB05664046FFF77CFC96 +:10C5D000326851004ABF22F06043C2F38A4343F0FD +:10C5E0000043920048BF43F080430093736813F404 +:10C5F00000131BBF012304F580528DF80D308DF818 +:10C600000D301EBFD2F8C0340133C2F8C034F388F5 +:10C6100003F00F038DF80C309DF80C0000F05CFB6C +:10C620005FFA8BF3984225D9F2180CA90BF1010B94 +:10C63000127A0B4403F82C2CEEE7012FA7D1636B81 +:10C64000D3F8B02012F4FE0FA1D0D3F8B420950196 +:10C6500041BF04F58051D1F8A0240132C1F8A024D3 +:10C66000D3F8B420500692D0D3F8B450A66AC5F3DC +:10C670000525A4E7EFB9636BC3F8A85004A807AD7C +:10C68000FFF728FC98E80F0007C52B800023204601 +:10C6900004A9ADF81830236804F580541B6CCDE96B +:10C6A00004A9984758B1D4F898340133C4F89834A1 +:10C6B0006EE7012FE2D1636BC3F8B850DEE7D4F820 +:10C6C0009C3401200133C4F89C3461E72DE9F0412A +:10C6D00005460F4600F58054012639462846FFF7E7 +:10C6E00045FF10B184F85B64F7E7D4F8B034D4F8B0 +:10C6F0005C040133C4F8B03420B10368BDE8F041F4 +:10C700001B691847BDE8F081436BF0B51A6C12F451 +:10C710007F0F2BD01B6C00F5805441F270054FF059 +:10C72000010CC4F8B4340023471900EB43125E0136 +:10C730002A44117911F0020F15D0490713D4B959C1 +:10C74000466B0CFA01F1D6F8CCE011EA0E0F0AD0D4 +:10C75000C6F8D410117941F004011171D4F8942471 +:10C760000132C4F894240133202BDED1F0BD000047 +:10C7700010B5264C264B22680AB340B31A6D9205B9 +:10C780000FD54FF400721A6500F0EEF950EA01027D +:10C790000B4602D0013861F1000302462068FFF722 +:10C7A00075FE1B4A136D9B012AD523684FF000715B +:10C7B00003F580531165012283F8612420E00122F2 +:10C7C0001A6510221A654FF480521A6510BD196D52 +:10C7D000C80702D4196D490705D50521104619650A +:10C7E0000021FFF773FF0A4B1A6DD00602D41A6DB1 +:10C7F000510605D5502201211A652068FFF766FF12 +:10C800002068BDE81040FFF77FBF00BFF859002047 +:10C8100000A0004008B5302383F31188FFF774FFB0 +:10C82000002383F3118808BD436BD3F8C00010F0D8 +:10C830007C5005D0D3F8C40080F40010C0F3405001 +:10C840007047000008B5302383F3118800F580504D +:10C85000C06CF6F747FA002383F3118843090CBF35 +:10C860000120002008BD000000F5805393F86124EA +:10C8700062B1416B8A6922F001028A61D3F8A42473 +:10C880000132C3F8A424002283F861247047000019 +:10C890002DE9F743302181F3118800F582510025FD +:10C8A00041F2700E4FF00108183100F5805C00EB8A +:10C8B00045147444267977071CD4F6061AD58E6978 +:10C8C000D0F8349008FA06F6D9F8CC703E4211D070 +:10C8D0004F6801970F689742019F9F410AD2C9F89C +:10C8E000D460267946F004062671DCF890440134C1 +:10C8F000CCF8904401352031202DD8D1002383F38A +:10C90000118803B0BDE8F083F8B51E4600230F463A +:10C91000054613701446FFF795FF80F0010038704C +:10C920001EB12846FFF780FF2070F8BD2DE9F04FBB +:10C9300085B099460D468046164691F800B0DDE96F +:10C940000EA302931378019300F00EF92B7804469E +:10C950000F4613B93378002B41D022463B46404660 +:10C96000FFF796FFFFF756FFFFF77EFF4B46324675 +:10C970002946FFF7C9FF2B7833B1BBF1000F03D075 +:10C98000012005B0BDE8F08F337813B1019B002B77 +:10C99000F6D108F5805303935445029B77EB0303CC +:10C9A0001DD2039BD3F85C04C8B10368AAEB040151 +:10C9B0001B6898474B46324629464046FFF7A4FF7E +:10C9C0002B7813B1BBF1000FDAD1337813B1019B8F +:10C9D000002BD5D100F0C8F804460F46DCE7002054 +:10C9E000CFE7000008B50020FFF7C2FEBDE8084011 +:10C9F00002F0F2BE08B50120FFF7BAFEBDE808401C +:10CA000002F0EABE036800211B6818477047000067 +:10CA1000043008B504F0ACFE012008BD10B521B10A +:10CA20000368BDE810405B681847043004F074FEEA +:10CA3000012010BD043004F091BE000008B50430A0 +:10CA400004F0B6FFB0FA80F0400908BD08B5302305 +:10CA500083F31188C368002B02DC043004F0DAFF92 +:10CA600004F07EFF002383F3118808BD10B504464F +:10CA7000FEF7DCFF204610BDF8B5051D0C4671B170 +:10CA80004EF66027BC422646284628BF3E46314621 +:10CA900004F0B6FF50B1A41BF4D1204605E02846AF +:10CAA00004F0AEFFB0FA80F04009F8BD0120FCE7C9 +:10CAB00008B5302383F31188C368002B02DC0430EF +:10CAC00004F0A8FF002383F3118808BD044B10B5C0 +:10CAD000044640F8043B04F0DDFD204610BD00BFD5 +:10CAE000407C0108044B10B5044640F8043B04F0B8 +:10CAF00043FF204610BD00BF1C7C010803F078B83E +:10CB000000B59BB0EFF3098168226846F5F734FC65 +:10CB1000EFF30583014B9B6BFEE700BF00ED00E0E8 +:10CB200008B5FFF7EDFF000000B59BB0EFF30981FA +:10CB300068226846F5F720FCEFF30583014B5B6B39 +:10CB4000FEE700BF00ED00E0FEE700000FB408B50F +:10CB5000029804F089FFFEE7014B586A704700BF56 +:10CB6000000C004005F066BD05F048BD0139C9B2B2 +:10CB700001299EBF00EBC1000023C0E901337047CB +:10CB8000F8B51B8805460E465B0715D4044600F130 +:10CB90001007BC4210D0636853B12B682846DB6B8A +:10CBA0009847A368C1B23246606898470834F0E7F6 +:10CBB000A368002BF1D1F9E70120F8BD37B56D4628 +:10CBC00085E8060042680AB9846824B1C26872B96F +:10CBD000026962B9012400EBC4000134021D95E82A +:10CBE000030082E8030001201C7003B030BD002068 +:10CBF000FBE700002DE9F04F89B004460E460546DC +:10CC0000BDF8487000F110084FF000094FF0000A1D +:10CC100007F004074FF0000BA84539D06B680BB93B +:10CC2000AB684BB157B923682046DB6B9847AB68BC +:10CC3000C1B23246686898470835EDE7B9F1000F90 +:10CC4000FAD1334603AA06F1080EADF80890CDE9F3 +:10CC500000AB1868083353F8041C94467345ACE8DD +:10CC600003006246F5D118684FF00109CCF80000C6 +:10CC70009B88ACF80430FFF777FF0423ADF8083049 +:10CC80002368CDE900011B6C694620469847D3E72D +:10CC9000012009B0BDE8F08F38B51D469DF8103071 +:10CCA0000160044643731146043012B16B1E072B1A +:10CCB00005D90023237363604360204638BD2A46AC +:10CCC000F5F75AFB281DC5F1080200212044F5F7AD +:10CCD00085FB2573F1E70000082817D909280CD037 +:10CCE0000A280CD00B280CD00C280CD00D280CD006 +:10CCF0000E2814BF4020302070470C2070471020B1 +:10CD0000704714207047182070472020704700009B +:10CD100013B5002310F00104ADF8063007D0994296 +:10CD2000C2BF10F8013B01F1FF318DF8073000223E +:10CD3000012915DC04BF03788DF80630BDF80630F4 +:10CD4000134498B200EB134398B200EB134024B1A4 +:10CD50000302C0F307209BB2184380B202B010BD9B +:10CD600030F8023B02391A44E2E700002DE9F041B5 +:10CD70001C680746069B884616461D682B0C13FA4E +:10CD800085F3002513FA84F303EB14439CB204EB00 +:10CD900013439CB204EB1344C7B925B12302C4F377 +:10CDA00007249BB21C434046F6F786FC05463046F6 +:10CDB000F6F782FC28440444A0B200EB1444A0B26D +:10CDC00000EB1440C04380B2BDE8F08179897868F7 +:10CDD000FFF79EFF7B892044DB0784B204EB1044FD +:10CDE00006D52302C4F3072485F001059BB21C433A +:10CDF0003F68D1E7FFF7BABF2DE9F74F16460D9A06 +:10CE000099460C9B156807461B6888462C0CDFF872 +:10CE1000B0A0DFF8B0B014FA85F4002514FA83F45A +:10CE200004EB1344A3B203EB1444A3B203EB144486 +:10CE3000AFB9002D3DD14046F6F73EFC05463046E1 +:10CE4000F6F73AFC28440444A0B200EB1444A0B224 +:10CE500000EB1440C04380B203B0BDE8F08FB9F1DD +:10CE6000000FE6D079897868494528BF4946019185 +:10CE7000FFF74EFF019947F6FE730444A9EB010941 +:10CE80001FFA89F9994505D952464FF4D071584691 +:10CE9000F6F788FAA3B203EB14447B89DB0706D5C7 +:10CEA0002302C4F3072485F001059BB21C433F68AD +:10CEB000BEE72302C4F307249BB21C43BBE700BFB9 +:10CEC000587C0108827C0108FFF796BF08B5FFF780 +:10CED0001FFFC04380B208BD70B50026054634462A +:10CEE00045B926B12302C4F307249BB21C43E04397 +:10CEF00080B270BD69896868FFF70AFF6B890444D6 +:10CF0000DB07A0B200EB144406D52302C4F30724C8 +:10CF100086F001069BB21C432D68E1E708B5FEF7D9 +:10CF200001FD00F011F800F07FF8F6F721FCFAF7A8 +:10CF30001FFFF7F701F9FBF76DFF01F077FCBDE884 +:10CF40000840FAF7C1BE00007047000070470000BB +:10CF500010B505F0D3FA044628B9FEF7E5FCFEF754 +:10CF6000EBFC204610BDC31C23F003039842F8D00D +:10CF7000024AD5210248F6F715FAF2E78C7C01083F +:10CF8000AE7C010810B5044648B9094AE6210948B3 +:10CF9000F6F708FA2046BDE8104005F0EFBAC31CCA +:10CFA00023F003039842F5D0014AE7210248EFE756 +:10CFB0008C7C0108D47C0108E17C0108830710B552 +:10CFC000044605D0074A4FF4B6710748F6F7EAF968 +:10CFD000FEF7AAFCFEF7B0FC2046BDE81040FFF7C4 +:10CFE000D1BF00BFFC7C01081F7D0108033038B5AC +:10CFF00020F00300FFF7ACFF0446FEF795FC054662 +:10D0000044B1A30705D0054A4FF48C710448F6F7E4 +:10D01000C9F92846FEF790FC204638BDFC7C010883 +:10D02000407D010870470000704700000E2805D8B9 +:10D03000034B53F820301888FFF7D8BF0020704703 +:10D04000A07D01080E2803D811B10846FFF7B6BF2E +:10D05000704700000A6810B50C320C46FEF718FA4B +:10D0600008B994F9040010BD00B589B060B1292356 +:10D0700000908DF80810694605488DF80930FFF7D3 +:10D08000E9FF09B05DF804FB6FF00F00F9E700BF9E +:10D09000B5E6000870B50D4688B0114600F07AFF7D +:10D0A0000446002832D0009069461A488DF808508E +:10D0B000FFF7D0FF50B3636823B1174AA321174885 +:10D0C000F6F770F9236904F1100523B9124AA42177 +:10D0D0001348F6F767F9636923B10F4AA62111488F +:10D0E000F6F760F9E36804F10C0623B90A4AA921AE +:10D0F0000D48F6F757F93046FEF7FAFB2846FEF7DB +:10D1000007FB214600240720FFF79CFF204608B0BC +:10D1100070BD00BF21DF0008DC7D0108017E010831 +:10D12000227E0108377E0108587E010800B589B0CB +:10D1300038B129230090694603488DF80930FFF77C +:10D1400089FF09B05DF804FBF5E1000838B5054634 +:10D1500040B1FFF7EBFF044610B9284600F05EFF30 +:10D16000204638BD0446FBE700B589B068B161B11F +:10D170005AB1009006488DF81030CDE90212694688 +:10D18000FFF768FF09B05DF804FB6FF00F00F9E7E7 +:10D1900041E6000800B589B070B1094B0090002944 +:10D1A00008BF19460748ADF80C2002916946FFF701 +:10D1B00051FF09B05DF804FB6FF00F00F9E700BF05 +:10D1C00080700108F1E2000800B589B070B1094B28 +:10D1D0000090002908BF19460748ADF80C200291BD +:10D1E0006946FFF737FF09B05DF804FB6FF00F00E9 +:10D1F000F9E700BF8070010825E3000800B589B099 +:10D2000038B1009069460448FFF724FF09B05DF883 +:10D2100004FB6FF00F00F9E701E4000800B589B0E6 +:10D2200048B100908DF8081069460448FFF712FFD6 +:10D2300009B05DF804FB6FF00F00F9E721E4000886 +:10D2400000B589B068B1037803F0F003102B08D162 +:10D250000090029169460448FFF7FCFE09B05DF8B2 +:10D2600004FB6FF00F00F9E731E5000800B589B065 +:10D2700040B10090029169460448FFF7EBFE09B007 +:10D280005DF804FB6FF00F00F9E700BFF5E400085C +:10D29000F0B589B09E460E9F002845D0047804F072 +:10D2A000F004102C43D190F8285003F0040405F04A +:10D2B0000205254302D0002F39D00125002401F1B9 +:10D2C000040C264604E05CF834309E192FD2013459 +:10D2D000A242F8DC002E03D10024204609B0F0BDA4 +:10D2E00002DA27B36FF00046ADF80C200022009060 +:10D2F000029169460F4804928DF81CE0CDE9056261 +:10D30000FFF7A8FE04460028E7D10FB1069B3B605B +:10D31000002DE1D1069BB342DED0074A4FF486616F +:10D320000648F6F73FF8D8E76FF00F04D5E76FF03F +:10D330000504D2E785E50008DC7D0108747E01085C +:10D340001FB5CDE90212069A02A900920122FFF749 +:10D350009FFF05B05DF804FB38B5044648B1FEF701 +:10D36000E3FA002394F908502372FEF7E5FA284601 +:10D3700038BD0546FBE7000070B505468AB00E468D +:10D3800021B96FF00F0420460AB070BD00230B6076 +:10D390000028F6D0FFF7E0FF04468DF803000028D0 +:10D3A000F1D16B6905F1140013B96FF00E04EAE7CF +:10D3B00095F82830DA07F8D49B070FD501A9FEF7B6 +:10D3C000EFF9013022D02B6B8BB90DF103010198DD +:10D3D00000F080FD80B19DF90340D4E7EA6901A91E +:10D3E000FEF70CFA0130EED16FF00204CBE7002219 +:10D3F000012128469847E8E7019D002DD5D002A9D4 +:10D4000004480295FFF726FE3560BCE76FF006047E +:10D41000B9E700BF69E50008002373B504460D466F +:10D42000019319B96FF00F0002B070BD0B600028B6 +:10D43000F8D0036900F1100633B9FFF78DFF00281B +:10D44000F2D16FF00A00EFE790F8283002F0040202 +:10D4500003F00303134302D190F908301BB301A971 +:10D460003046FEF79DF9013011D02378019803F082 +:10D47000F003102B34D10DF1030100F02BFDE0B1CE +:10D480009DF9030010F10F0F08BF0020CCE72046E4 +:10D49000FFF762FF0028C7D194F82830DB07D0D40B +:10D4A0006FF00600C0E7C26901A93046FEF7A6F991 +:10D4B0000130DAD16FF00200B6E7019B1E89FEF75A +:10D4C00033FA636A9B1B6362FEF736FA236B1BB168 +:10D4D0003246012120469847019B00202B60A3E79C +:10D4E00028B9044A40F291210348F5F75BFF019BFC +:10D4F0001B68E3E7DC7D01082073010830B1037885 +:10D5000003F0F003102B01D0FFF786BF6FF00F0080 +:10D5100070470000F0B5036989B004460F4616460F +:10D52000002B44D090F9285090F82830002D13DAC1 +:10D5300003F07F0380F82830236B1BB10022012108 +:10D540002046984763685BBB2046FFF705FF051E32 +:10D5500008BF6FF00D051EE0FFF75EFF0546D0B96E +:10D5600032073F680CD4CFB13A89237803F0F00337 +:10D57000102B05D169460F4800940292FFF76AFD0F +:10D580004FB9F306D8D594F828306FF0060563F04C +:10D590007F0384F82830284609B0F0BD0122E4E773 +:10D5A000012120466FF00E05FFF75EFDF3E76FF0F7 +:10D5B0000A05F0E731E5000830B1037803F0F00325 +:10D5C000102B01D1FFF7A6BF6FF00F0070470000CE +:10D5D00010B588B088B10A4C0090002908BF2146D8 +:10D5E000002A08BF224607488DF81130CDE9021203 +:10D5F0006946FFF72FFD08B010BD6FF00F00FAE786 +:10D600008070010861E700082DE9F04104461646E4 +:10D610001F46BDF818800D4621B9294AE621294840 +:10D62000F5F7C0FECCB9264AE7212748F5F7BAFE40 +:10D630003046BDE8F041F6F7CDBAFEF775F9636AFA +:10D640003B446362FEF778F9236B002B35D03A46F2 +:10D6500031462046BDE8F04118476368AB4204D02C +:10D66000174AEF211948F5F79DFEFEF75DF9656A47 +:10D67000FEF762F92369002BDAD03389226A2B4442 +:10D680009342D5DC0620FFF7D1FC05460028CFD019 +:10D69000C0E9006607B13F68AF602946A5F80C8075 +:10D6A00004F110003789FEF741F806460028C4D07F +:10D6B0002846BDE8F04101F07BB8BDE8F08100BF2D +:10D6C000987E0108BD7E0108DF7E0108FE7E01080C +:10D6D00007B5014640680190F6F728FF019809490F +:10D6E000F6F72CFF01980849F6F73EFF0198022251 +:10D6F0000649F6F771FF0649019803B05DF804EB9F +:10D70000F6F748BFEDDC000881DC000809DC000802 +:10D71000B1DD000870B515460446002844D04378B2 +:10D72000032B05D0224A40F227512248F5F73AFE52 +:10D73000E36A4BB994F828305B0705D41C4A4FF4D0 +:10D74000A5611D48F5F72EFEE66A1EB13571E36A44 +:10D750001E680C36237803F0F003102B03D115B9A3 +:10D760002046FFF7B5FF94F8280020F0040310F0DE +:10D77000040584F8283007D146B90D4A40F23451E7 +:10D780000E48F5F70FFE01E0002EF6D10022236BC4 +:10D79000E262627013B102212046984715B9304603 +:10D7A000FEF7A2F8002001E06FF0050070BD00BF99 +:10D7B000987E01081C7F01083B7F0108787F0108E3 +:10D7C0002DE9F84F0F46044628B9914A40F2776197 +:10D7D0009048F5F7E7FD6378012B05D08C4A4FF4AC +:10D7E000CF618D48F5F7DEFDE36A2BB9884A40F238 +:10D7F00079618A48F5F7D6FD63682BB9844A40F20F +:10D800007A618748F5F7CEFDE36AD3E905329A429B +:10D8100005D37F4A40F27B618248F5F7C3FDE36A96 +:10D820009B892BB97A4A40F27D617F48F5F7BAFDB2 +:10D83000E36A94F8285093F81CA005F00205DFF87D +:10D84000ECB10AF004021543D4F82CE0DEF808002D +:10D85000DEF8102043680168A3EB0208606801EB62 +:10D860000209B8F5803FB0F864602ABF4FF6FF7137 +:10D870001FFA88F14AF0020AB14240F28780002D77 +:10D880003FD0002E3FD1DEF81830002B0CBF6FF0D8 +:10D8900006094FF00009E36AD3E905329A4280F0A5 +:10D8A0008380236B1BB1002203212046984794F804 +:10D8B000283043F0100384F82830B9F1000F40F00D +:10D8C0008A80E36AD3E905329A4200F08280003D03 +:10D8D00018BF01256068F9F7F3FE043040F08F802F +:10D8E0006FF00309E36A0025186883F80490E56285 +:10D8F0006570002F00F089800C30FDF7F5FF284699 +:10D9000075E04AF0020A3244934205D2404A40F29E +:10D91000A7615846F5F746FD4FF6FF739E4202D1C8 +:10D92000B8F5803F07D21FFA88F8B04530D1E26AD7 +:10D930009289012A2CD94AF0020A4FF0010849467F +:10D94000534632466068F9F7A1F9814618BBE16A8F +:10D950008A6932448A61E16A0A6932440A61E26A88 +:10D9600091681069496888420BD191890139918188 +:10D97000E26A918929B1916808319160E26AC2F83E +:10D980001090B8F1000F7FF45FAF0AE00E46BAE7DF +:10D990004FF00008D3E7431CDBB2012BA2D84FF0B5 +:10D9A000FF39002D7FF477AF636841F27072B3F8EE +:10D9B0006410914204D9B3F86630162B7FF67DAF20 +:10D9C000236B002B3FF479AF0022032120469847B8 +:10D9D00073E701257EE7B9F1FF3F83D16068F9F76E +:10D9E0006FFE04303FF47CAF1DB94FF0FF30BDE84F +:10D9F000F88FE36A9B692BB14FF0000972E7002DA5 +:10DA0000FAD1F2E76FF006096CE73846EFE700BF9E +:10DA1000987E01082F730108987F0108B57F0108DF +:10DA2000CF7F0108E57F0108248001084C800108B0 +:10DA30002DE9F84F8946044628B9694A40F2A631D3 +:10DA40006848F5F7AFFC237803F0F003102B05D0FE +:10DA5000634A40F2A7316448F5F7A4FC6378042BCD +:10DA600005D05F4A4FF46A716048F5F79BFC636824 +:10DA70002BB95B4A40F2A9315D48F5F793FCE36AA4 +:10DA80002BB9574A40F2AA315A48F5F78BFCE36AA2 +:10DA900065681B7A032B03F0010A03F002080FD01C +:10DAA000BAF1000F05D02B7D5A1F012A08D9082B87 +:10DAB00006D0B8F1000F16D06F8B17F0100704D006 +:10DAC000012700212846F6F731FD2B7D012B0CD1D3 +:10DAD00000212846F6F774FD27BB424651462846EA +:10DAE000F7F7B6F921E04746EFE7BAF1000F07D0A4 +:10DAF00000212846F6F722FD00212846F6F760FDB2 +:10DB0000B8F1000F03D000212846F6F72DFD002FB5 +:10DB1000E3D0002228461146F6F75EFD0021284694 +:10DB2000F6F738FD2846F7F7EDF8064660B1431CD6 +:10DB30000AD1E36A93F809B0BBF1000F30D11FB1ED +:10DB40005E462846F6F71CFFE36A1D681E71002337 +:10DB5000E3626370CEB937B1236B66601BB13246A6 +:10DB6000042120469847BAF1000F05D0236B1BB162 +:10DB70000022204611469847B8F1000F05D0236BCC +:10DB80001BB10022022120469847B9F1000F25D091 +:10DB9000002605F10C00FDF7A7FE3046BDE8F88F22 +:10DBA0002B7D012B05D10E4A40F245411248F5F775 +:10DBB000F9FBB8F1000F03D010492846F6F7D4FC62 +:10DBC000012228460E49F6F707FD28460D49F6F7CB +:10DBD000E1FC21462846F6F7A9FCDEE74E46DCE7E5 +:10DBE000987E01087880010885800108A3800108DB +:10DBF000C7800108B57F0108DA80010881DC0008D0 +:10DC000009DC0008B1DD000810B5044628B91A4A3D +:10DC100040F26D111948F5F7C5FB617801291ED155 +:10DC20002046FFF7CDFD94F82830DA0615D5626856 +:10DC30009AB1B2F8640041F2707188420DD9B2F81D +:10DC40006620162A09D823F0100384F82830236BA5 +:10DC50001BB10022022120469847002010BD042954 +:10DC6000E1D1E26A1AB1537A0BB1013B537201213F +:10DC70002046FFF7DDFED6E7987E01082F730108E6 +:10DC800038B51546044668B9164A4FF4CB711648A4 +:10DC9000F5F788FB002038BD042908D10121FFF7E2 +:10DCA000C7FE04E041780129F6D1FFF789FD6368DA +:10DCB000002BEFD0B3F8641041F270729142E9D9B1 +:10DCC000B3F86630162BE5D894F8283023F010030B +:10DCD00084F82830236B002BDCD02A460221204612 +:10DCE0009847D7E7987E01082F730108F8B50546D5 +:10DCF00016461C460F4629B9274A40F22F112748DD +:10DD0000F5F750FB6DBB244A4FF498712448F5F7A2 +:10DD100049FB3CBB6FF005042046F8BD384631890D +:10DD2000F6F79AFB3046F5F755FFF5E79EB13789D0 +:10DD30003146FDF7FBFC044680B9FDF7F5FD6B6A43 +:10DD40003B446B62FDF7F8FD2B6B1BB33A46214653 +:10DD500028469847E0E7134E0027E9E74FF0FF34E5 +:10DD6000DAE73CB10C4A40F231110F48F5F71AFBE3 +:10DD7000002DCFD06B68BB4205D0074A4FF49C7191 +:10DD80000A48F5F70FFB2C6905F11000002CCDD1E6 +:10DD9000002EC3D10024BFE7987E0108008101084E +:10DDA000228101083083010841810108598101085D +:10DDB000F8B50D46044628B93F4A40F2BB113F482A +:10DDC000F5F7F0FAFDF7B0FD94F8283000266778F3 +:10DDD00043F001032572666084F828306670FDF711 +:10DDE000ABFD236B1BB13246042120469847236BC1 +:10DDF0001BB10022204611469847236B1BB100221D +:10DE000002212046984705F10F03DBB2022B3ED8D2 +:10DE10002B4A52F82360236923B1314604F11000E4 +:10DE2000FDF784FC636923B1314604F11400FDF76A +:10DE30007DFC012F02D0FB1E012B32D894F8283034 +:10DE400023F004025B0784F8282034D4E36A2BB95A +:10DE5000194A40F2E9111B48F5F7A4FA042FE36AC6 +:10DE60000ABF00221D711A71E36A1B6803F10C05D9 +:10DE7000DB682BB9104A4FF4F9711348F5F792FAA1 +:10DE800000232846E362BDE8F840FDF72DBD35B11B +:10DE9000094A7D210D480026F5F784FABBE72E4696 +:10DEA000B9E7E36A3BB1044A4FF4FD710848BDE8A5 +:10DEB000F840F5F777BAF8BD987E01082F7301088E +:10DEC00020830108B57F0108888101087881010855 +:10DED000A181010838B505460C4621B90B4A8521B8 +:10DEE0000B48F5F75FFA0B4B9D4203D1F32301205A +:10DEF000237038BD084B9D4201D1F223F7E7074B51 +:10DF00009D4201D1F123F2E70020F2E7987E01085B +:10DF1000BC8101082C830108348301083083010887 +:10DF200038B50023056804460371686800282ED1BF +:10DF30002B7803F0F003102B1DD0202B25D1FAF7FE +:10DF40001FFA6860226853689BB112781049212A31 +:10DF500004BF02221A7423681A78222A02BF0122FF +:10DF60005B681A7422685068FAF7CEF923685B6818 +:10DF70006BB9FF230AE0F6F713FE68602068436878 +:10DF8000002BF6D0FFF7A4FBF0E7FA23237138BD8E +:10DF900009D6000870B5054607200E46FFF746F87B +:10DFA0000446A8B3057005F0F0050023102D037298 +:10DFB00043600DD0202D0BD0164A40F2EB211648BD +:10DFC000F5F7F0F9214607200024FFF73BF81FE0A2 +:10DFD00004F1100500212846FDF774FB01460028D6 +:10DFE000F0D104F10C00FDF759FC18B12846FDF7FB +:10DFF0008FFBE7E74FF0FF3360616070A3616FF064 +:10E000000043E06184F82800C4E90B06C4E9083045 +:10E01000204670BD987E0108C881010810B543688C +:10E0200004462BB1104A4FF448711048F5F7BAF97D +:10E0300023692BB10C4A40F227310D48F5F7B2F9AC +:10E0400063692BB1084A40F22A310A48F5F7AAF968 +:10E0500004F10C00FDF74CFC002321460720E3608F +:10E06000BDE81040FEF7EEBF987E0108F081010880 +:10E070001E82010858820108F7B50369044663B19E +:10E0800000F1100501A92846FDF78AFB013015D1E2 +:10E090002846FDF73DFB00232361636963B104F16A +:10E0A000140701A93846FDF77BFB013019D138462A +:10E0B000FDF72EFB0023636103B0F0BD23780198C8 +:10E0C00003F0F003102B09D10DF10301FFF702FF5C +:10E0D0000028D7D10198F5F77DFDD3E700F068FB64 +:10E0E000D0E70DF103010198FFF7F4FE0646002882 +:10E0F000D7D1019D2846FFF7BFFF686810B1F6F73A +:10E100003FFC6E602846FFF789FFCAE7F7B50D466A +:10E11000044620B96FF00505284603B0F0BD4369F9 +:10E1200000F11407002BF5D069B92F493846FDF7E7 +:10E13000FDFA02460028EDD1236B002BEAD0014600 +:10E1400020469847E6E72AB1284A40F22D21284880 +:10E15000F5F728F9216B2078FFF71CFF064668B910 +:10E1600021493846FDF7E2FA024620B9236B13B184 +:10E170000146204698474FF0FF35CDE74560FFF751 +:10E18000A7FA2846F5F7F8FF31463846FDF7CEFAEC +:10E19000054600B37068002100240190F6F7C6F927 +:10E1A00001980021F6F7CAF901980021F6F7DCF989 +:10E1B000002201981146F6F70FFA00210198F6F7B0 +:10E1C000E9F906F110007460FDF7A2FA30463461F7 +:10E1D000FFF724FFCFE7236B002B9DD002460146BB +:10E1E0002046984798E700BF2C830108987E0108D5 +:10E1F0009482010870B5036804465D7865B11B78A8 +:10E2000003F0F003102B05D0354A40F26241354847 +:10E21000F5F7C8F8022D24D1002520682571FFF7F5 +:10E220002BFF2268516871B1137803F0F003102BB3 +:10E2300021D0202B04D18D6223685868FAF76EF83C +:10E24000236800225A602068036B13B10022114634 +:10E2500098472068036B6BB100220221BDE8704033 +:10E260001847032D04D1236893F828305B07D3D4D3 +:10E27000FB23237170BDD36A2BB1194A4FF493610C +:10E280001948F5F78FF82368042200215A700323F8 +:10E2900023722368DC622068FFF7CAFB0028E9D0FC +:10E2A00023685B78042B05D00D4A40F29E410F484D +:10E2B000F5F778F8FDF7FCF9206800210C30FDF740 +:10E2C00001FBFDF7EDF923685B78002BD2D0044AFF +:10E2D00040F2A2410548BDE87040F5F763B800BFC1 +:10E2E000987E0108BC820108D0820108EB820108F7 +:10E2F00010B503680446586888B11B7803F0F00332 +:10E30000102B07D0202B0AD1A289A168F9F738FE7B +:10E31000207110BDA289A168F5F7B4FFF8E76FF08E +:10E320000500F5E710B5036804465868002854D086 +:10E330001A7802F0F002102A07D0202A50D1A289C0 +:10E34000A168F9F7A9FF207110BD5A78032A4AD0B5 +:10E35000002A4BD11846FFF7BBF92068254BA2894C +:10E36000A1684068F6F784F90028ECD123680321FE +:10E3700093F82820597012F0020F236893F8282090 +:10E3800006D042F004026FF0040083F82820DAE798 +:10E3900022F0040283F828202368DC6223685B787B +:10E3A000032B05D0144A40F274511448F4F7FAFFD5 +:10E3B000FDF77EF9206800210C30FDF783FAFDF7A8 +:10E3C0006FF923685B78032BBED10B4A4FF4AF6122 +:10E3D0000A48BDE81040F4F7E5BF6FF00E00B2E761 +:10E3E0006FF00500AFE76FF00800ACE76FF00900D1 +:10E3F000A9E700BF15D70008987E0108EB82010845 +:10E4000010B502680446137803F0F003202B05D101 +:10E410005068F9F76BFF0023237110BDFA23FBE767 +:10E4200073B5036804465868002859D01A7802F07A +:10E43000F002102A56D15B78002B3BD1067D1EB12D +:10E44000FA238DF8073022E00DF10702217AF5F763 +:10E4500069FF0546D8B12068036923B11030FDF784 +:10E4600057F923681E612068002346698DF807303C +:10E4700096B1236802225A7023685D60216848685B +:10E48000F6F754F8236818495868F6F799F89DF894 +:10E490000730237102B070BD14210844FDF712F952 +:10E4A0008DF807000028E4D02846F6F72BFC2368F7 +:10E4B0005E60ECE7022B13D100238DF80730037D5B +:10E4C000012B05D0094A40F2EA510948F4F76AFFE6 +:10E4D00023685A68237A012B38BF01231377D6E7C4 +:10E4E000F523AEE7F023ACE70DE10008987E0108C4 +:10E4F000D45B010810B504460068FEF72DFF68B92B +:10E500002368586888B11B7803F0F003202B0CD1E6 +:10E51000A268936811681BB9F9F7A8FE207110BDB5 +:10E5200093890832F9F768FEF8E76FF00A00F5E71B +:10E53000F8B500230446037103685A6892B11B784A +:10E5400003F0F003102B0DD185684FF6FF77BD4225 +:10E550002E46236828BF3E465868B1B2F5F77CFFC7 +:10E56000AD1BF4D1F8BD00000023037103685868A7 +:10E5700030B11B7803F0F003102B01D1F5F724BE66 +:10E580007047000010B504460068FEF7E5FE00285D +:10E5900046D123681A7802F0F002102A3ED15A7848 +:10E5A000002A3FD15A68002A3FD001225A702368BE +:10E5B000DB6A2BB11E4A40F227711E48F4F7F2FEC7 +:10E5C00063692BB91A4A4FF4E5611B48F4F7EAFE78 +:10E5D00023680021DC622068FFF7F2F808B32368A3 +:10E5E0005B78012B05D0124A40F22C711348F4F7E6 +:10E5F000D9FEFDF75DF8206800210C30FDF762F9C7 +:10E60000FDF74EF823685B78012B0AD1084A4FF4D6 +:10E61000E6610A48BDE81040F4F7C4BE6FF005009B +:10E62000207110BD6FF00400FAE76FF00A00F7E701 +:10E63000987E0108D0820108F4820108EB8201086B +:10E6400003685B68D3B1017C826891B11B68136079 +:10E65000002302680371137803F0F003102B13D02A +:10E66000202B1CD15368027C2AB1C2685B8A1380BC +:10E6700070475B68EBE71A7C520702D4F5230371FD +:10E680007047C2689B8AF2E75368027C22B91A7D00 +:10E69000012AF3D91B8B00E0DB8AC268E7E7034A53 +:10E6A00040F281710248F4F77DBE00BF987E0108F8 +:10E6B0000883010810B504460068436863B1037815 +:10E6C00003F0F003102B07D1227A4378032A01D0FC +:10E6D000022B01D0032B02D1F523237110BD012B96 +:10E6E00001D1FB23F9E7D30701D5FFF7C5FC236868 +:10E6F000DB6A2BB1174A40F2C1711748F4F752FE9A +:10E700002368042200215A702368DC622068FFF726 +:10E710008FF90028E2D023685B78042B05D00D4ADE +:10E7200040F2C6710D48F4F73DFEFCF7C1FF2068CA +:10E7300000210C30FDF7C6F8FCF7B2FF23685B78C8 +:10E74000002BCBD0034A40F2CA710448BDE8104008 +:10E75000F4F728BE987E0108D0820108EB820108F8 +:10E76000F52310B50371044603685A685AB11B7843 +:10E7700003F0F003202B0AD1637CD0E902101BB90F +:10E78000FAF74EFC207110BDFAF7B2FCFAE7FA2353 +:10E790000371F8E700F11003DBB2102B9DBF40427C +:10E7A000024B53F820000520704700BF3883010852 +:10E7B00010B5044660B1006820B1F5F70BFA0023EC +:10E7C000C4E9003321460620BDE81040FEF73ABCFC +:10E7D00010BD000010B5044630B1006808B1F5F76F +:10E7E000F9F90023C4E9003310BD000070B50E46EE +:10E7F00015460446B8B1006808B1F5F7EBF94122B7 +:10E8000000213820F5F748FA206018B960604FF011 +:10E81000FF3070BD4660002023681D8123685D8144 +:10E8200023686360F5E76FF00F00F2E708B505486D +:10E83000FEF7F8FB0448FEF7F5FB00F007F80020B0 +:10E8400008BD00BF808301087C83010808B5FDF77F +:10E8500067F8024A13681844106008BD205A002067 +:10E860002DE9F041456A15B94162BDE8F0814B6878 +:10E87000AC4623F06047C3F38A464FEAD37EC3F326 +:10E88000807816EA230638BF3E462B465A68BEEB10 +:10E89000D27F22F060440AD0002A18DAA40CB442D5 +:10E8A00017D19D420FD10D60DEE71346EEE7A74278 +:10E8B00007D102F08044C2F3807242450BD054B1BC +:10E8C000EFE708D2EDE7CCF800100B60CDE7B442DB +:10E8D00001D0B442E5D81A689C46002AE5D11960F7 +:10E8E000C3E700002DE9F047089D01F0070400EBA5 +:10E8F000D1004FF47F494FEAD508224405F00705BF +:10E90000944201D1BDE8F08704F0070705F0070A3B +:10E91000111B08EBD50E57453E4613F80EC038BF05 +:10E920005646C6F108068E4228BF0E46E108415CF5 +:10E9300034443544B94029FA06F721FA0AF1FFB206 +:10E940008CEA010147FA0AF739408CEA010C03F816 +:10E950000EC0D5E780EA0120082341F2210201B26E +:10E96000013B4000002980B2B8BF504013F0FF03C4 +:10E97000F5D1704738B50C468D18A54200D138BD89 +:10E9800014F8011BFFF7E6FFF7E7000042684AB101 +:10E99000136881894360438901339BB29942438163 +:10E9A00038BF83811046704770B588B00446202276 +:10E9B0000D4668460021F3F711FD20460495FFF748 +:10E9C000E5FF024660B16B46054608AE1C460835B9 +:10E9D00003CCB44245F8080C45F8041C2346F5D195 +:10E9E000104608B070BD0000082817D909280CD0BF +:10E9F0000A280CD00B280CD00C280CD00D280CD0D9 +:10EA00000E2814BF4020302070470C207047102083 +:10EA1000704714207047182070472020704700006E +:10EA2000082817D90C280CD910280CD914280CD96F +:10EA300018280CD920280CD930288CBF0F200E2084 +:10EA40007047092070470A2070470B2070470C2040 +:10EA500070470D20704700002DE9F843078C0446ED +:10EA6000072F1ED900254FF6FF73D0E90298C5F194 +:10EA70002006A5F1200029FA05F1083508FA06F666 +:10EA800028FA00F0314301431846C9B2FFF762FF8C +:10EA9000402D0346EBD13A46E169BDE8F843FFF764 +:10EAA00069BF4FF6FF70BDE8F883000010B54B68F2 +:10EAB00023B9CA8A63F30902CA8210BD04691A68BD +:10EAC0001C600361C38A013BC3824A60EFE7000018 +:10EAD0002DE9F84F1D46CB8A0F468146C3F3090145 +:10EAE000924605290B4630D00020AAB207F11A043D +:10EAF0009EB21FFA80F8042E0FD8904503F101034F +:10EB000006D30A44FB8A62F309030120FB821AE060 +:10EB10001AF800600130E654EAE79045F1D2A1F11D +:10EB2000050B1C237C68BBFBF3F203FB12BB1FFA33 +:10EB30008BF6002C45D14846FFF728FF044638B92C +:10EB400078606FF00200BDE8F88F4FF00008E6E74C +:10EB5000002606607860ADB24FF0000B454510D935 +:10EB60000AEB0803221D13F8011B08F10108915557 +:10EB7000B1B21FFA88F81B292BD0454506F10106D2 +:10EB8000F1D8FB8AC3F30902154465F30903BCE716 +:10EB900001321C4692B22368002BF9D16B1F0B4443 +:10EBA0001C21B3FBF1F301339BB29A42D3D2BBF1E8 +:10EBB000000FD0D14846FFF7E9FE20B9C4F800B0F5 +:10EBC000BFE70122E7E7C0F800B05E4620600446D8 +:10EBD000C1E74545D5D94846FFF7D8FE08B92060BA +:10EBE000AFE7C0F800B0002620600446B6E700009A +:10EBF0002DE9F04F1C46074688462DED028B83B069 +:10EC00005B690192002B00F0A780238C2BB1E26995 +:10EC1000002A00F0A180072B35D807F10C00FFF780 +:10EC2000B5FE054638B96FF00205284603B0BDECC5 +:10EC3000028BBDE8F08F14220021F3F7CFFB228C6A +:10EC4000E16905F10800F3F797FB208C48F00041DB +:10EC5000013080B2FFF7E4FEFFF7C6FE013880B254 +:10EC600020840130287438466369228C1B782A443A +:10EC700003F01F0363F03F03137269602946FFF737 +:10EC8000EFFD0125D1E702330722C18A9BB206338B +:10EC9000B3FBF2F3828A9BB2521A92B29342C2D869 +:10ECA0004FF0000900F10C034FF0800A4E464D462C +:10ECB00008EE103A18EE100AFFF768FE83460028A7 +:10ECC000B1D014220021F3F789FB002E3AD1019B29 +:10ECD0000222ABF808300BF1080E1FFA82FC218CDF +:10ECE0000CF10100BCF1060F80B201D88E422BD38B +:10ECF000FFF796FE8E4208BF4FF0400AFFF774FE02 +:10ED000062690138013512781BFA80F1013002F096 +:10ED10001F022DB242EA491289F001094AEA020AA9 +:10ED200048F0004281F808A059468BF81000384698 +:10ED3000CBF804204FF0000AFFF792FD238CB3427A +:10ED4000B8D172E70022C6E7E169895D01360EF8A5 +:10ED50000210B6B20132C0E76FF0010565E70000AE +:10ED6000F8B515460E463022002104461F46F3F73B +:10ED700035FB069BB5F5001FA760636004F110002A +:10ED8000079B34BF6A094FF6FF72E661A362002356 +:10ED900097B29A4206D800230360A782E3822383B6 +:10EDA000E360F8BD0660013330462036F1E700002D +:10EDB00003781BB94BB2002BC8BF0170704700002D +:10EDC00000787047F8B50C46C969074611B9238C1D +:10EDD000002B37D1257E1F2D34D8387828BB228CC4 +:10EDE000072A2CD8268A36F003032BD14FF6FF7062 +:10EDF000FFF7C0FD20F0010031024FF6FF72400422 +:10EE000041EA0561400C41EA40252346294638463F +:10EE1000FFF7EEFE002807DD626913780133DBB2ED +:10EE20001F2B88BF00231370F8BD218A2D0645EAE9 +:10EE3000012505432046FFF70FFE0246E5E76FF088 +:10EE40000300F1E76FF00100EEE7000070B58AB053 +:10EE5000044616460021282268461D46F3F7BEFAEE +:10EE6000BDF8383069462046ADF810300F9B059349 +:10EE70009DF840308DF81830119B0793BDF848304D +:10EE8000CDE90265ADF82030FFF79CFF0AB070BDF8 +:10EE90002DE9F041D36905460C4616460BB9138C93 +:10EEA0005BBB377E1F2F28D895F80080B8F1000F84 +:10EEB00026D03046FFF7D0FD33782102024628469F +:10EEC00041EAC331338A41EA080141EA076141EA74 +:10EED0000341334641F08001FFF78AFE00280ADD36 +:10EEE0003378012B07D1726913780133DBB21F2B02 +:10EEF00088BF00231370BDE8F0816FF00100FAE7CE +:10EF00006FF00300F7E70000F0B58BB004460D4644 +:10EF100017460021282268461E46F3F75FFA9DF83F +:10EF20004C30294620465A1E534253416A468DF8BA +:10EF300000309DF84030ADF81030119B05939DF8DE +:10EF400048308DF81830149B0793BDF85430CDE944 +:10EF50000276ADF82030FFF79BFF0BB0F0BD00004C +:10EF6000406A00B104307047436A1A68426202691D +:10EF70001A600361C38A013BC38270472DE9F041E7 +:10EF8000D0F8208014461D46184E4146002709B986 +:10EF9000BDE8F081D1E90223A21A65EB0303964292 +:10EFA00077EB03031ED2036A8B420DD1FFF77EFD80 +:10EFB000036A1B68036203690B60C38A0161013B3A +:10EFC000016AC3828846E2E7FFF770FD0B68C8F864 +:10EFD000003003690B60C38A0161013BC382D8F82A +:10EFE0000010D4E788460968D1E700BF80841E007E +:10EFF0002DE9F04F8BB00D4614469B46DDF850903E +:10F000008046002800F01881B9F1000F00F014814B +:10F01000531E3F2B00F21081012A03D1BBF1000FD8 +:10F0200040F00A810023CDE90833B8F81430B5EB7D +:10F03000C30F4FEAC30703D300200BB0BDE8F08F26 +:10F040002B199F42D8F80C3036BF7F1B2746FFB2E2 +:10F050001BB9D8F81030002B7AD0272D4DD8C5F128 +:10F06000280600232946B742009308ABD8F80800C9 +:10F070002CBFF6B23E46A7EB060A354432465FFA8D +:10F080008AFAFFF72FFCB8F81430282103F1005357 +:10F09000053BDB000493D8F80C300393039B13B1BA +:10F0A000BAF1000F2CD1D8F8100040B1BAF1000F1E +:10F0B00005D008AB5246691A0096FFF713FC38B228 +:10F0C000002FB9D066070AD00AAB624203EBD40125 +:10F0D00002F0070211F8083C134101F8083C082C23 +:10F0E0003DD9102C40F2B580202C40F2B780BBF106 +:10F0F000000F00F09C80082335E0BA460026C2E7E6 +:10F10000049BE02B28BFE02306930B44AB420593FE +:10F1100015D95A1B0398691A0096924508AB00F15D +:10F12000040034BF5246D2B20792FFF7DBFB079AC6 +:10F130001644AAEB020A1544F6B25FFA8AFA049B57 +:10F14000069A05999B1A0493039B1B680393A5E7F2 +:10F1500000933A4608AB2946D8F80800ADE7BBF162 +:10F16000000F13D00123B4EBC30F6BD0082C12D8BF +:10F170009DF82030621E23FA02F2D50706D54FF023 +:10F18000FF3202FA04F423438DF820309DF820303A +:10F1900089F8003051E7102C12D8BDF82030621EDB +:10F1A00023FA02F2D10706D54FF0FF3202FA04F437 +:10F1B0002343ADF82030BDF82030A9F800303CE7FB +:10F1C000202C0FD80899631E21FA03F3DA0705D51E +:10F1D0004FF0FF3202FA04F40C430894089BC9F87C +:10F1E00000302AE7402C2AD0611EC4F12102A4F18C +:10F1F0002103DDE9086526FA01F105FA02F225FA94 +:10F2000003F311431943CB0711D50122A4F12003C5 +:10F21000C4F1200102FA03F322FA01F1A2400B43E8 +:10F22000524263EB430332432B43CDE90823DDE92C +:10F230000823C9E9002300E76FF00100FDE66FF045 +:10F240000800FAE6082CA1D9102CB4D9202CEED84D +:10F25000C4E7BBF1000FAED0022384E7BBF1000F7F +:10F26000BCD004237FE70000012A30B5144638BF24 +:10F27000012485B00025402C28BF4024012ACDE977 +:10F28000025518D81B788DF8083063070AD004ABF4 +:10F29000624203EBD40502F0070215F8083C9340E4 +:10F2A00005F8083C034600912246002102A8FFF71A +:10F2B00019FB05B030BD082AE4D9102A03D81B88F1 +:10F2C000ADF80830E1E7202A95BF1B68D3E9002399 +:10F2D0000293CDE90223D8E710B5CB681BB98B6048 +:10F2E0000B618B8210BD04691A681C600361C38ABC +:10F2F000013BC382CA60F0E703064CBFC0F3C030D5 +:10F300000220704708B50246FFF7F6FF022806D133 +:10F310005306C2F30F2001D100F0030008BDC2F371 +:10F320000740FBE72DE9F04F93B004460D46CDE9C9 +:10F3300003230A681046FFF7DFFF0228824614BF46 +:10F34000C2F306260026002A80F2F88112F0C04996 +:10F3500040F0F481097B002900F0F081022803D0FD +:10F360002378B34240F0ED81C2F304631046294490 +:10F37000069302F07F030593FFF7C4FF059B00226D +:10F3800083464FEA8348002348EA0A4848EA466829 +:10F39000CE78CDE90823F30948EA0008029368D043 +:10F3A000059B024608A92046009353466768B84764 +:10F3B000002800F0C981276A4FB9414604F10C00CA +:10F3C000FFF7F2FA074690B96FF0020055E03B698B +:10F3D00098450DD03F68002FF9D1414604F10C004B +:10F3E000FFF7E2FA07460028EED0236A3B60276267 +:10F3F00097F817C006F01F08CCF3840CACEB08009C +:10F40000A8EB0C031FFA80FE0028B8BF0EF1200005 +:10F410001FFA83FEB8BF00B2002B0793B8BF0EF1EE +:10F420002003D7E90221BCBF1BB2079352EA0103B4 +:10F4300038D0039B4FF0000CDFF81CE39A1A049BB2 +:10F4400063EB010196457CEB01032BD36B7B97F8B3 +:10F450001AE0734519D1029B002B78D0012821DCDA +:10F460007868F8B9DFF8ECC2944570EB010316D365 +:10F4700037E0276A27B96FF00C0013B0BDE8F08FB2 +:10F480003B699845B4D03F68F4E7B24890427CEBC2 +:10F49000010301D30020F0E7029B002BFAD0079B69 +:10F4A0000F2B17DCFA7DB3003946204602F0030229 +:10F4B00003F07C031343FB75FFF7F8FA6B7BBB7615 +:10F4C000029B3BB9FB7DC3F38402013262F38603E6 +:10F4D000FB75D0E76A7BBB7E9A42DBD1029B002B97 +:10F4E00035D0B309022B32D0039B142200210DA882 +:10F4F000BB60049BFB60F2F771FF039B0AA92046E7 +:10F500000A93049BADF83EB00B932B1D8DF840A0E1 +:10F510000C932B7B8DF84180013BDBB2ADF83C3086 +:10F52000069B8DF84230059B8DF8433094F82C30C3 +:10F5300083F001038DF84430A3689847FB7DC3F343 +:10F540008403013303F01F039B02FB82A2E7FB7DD0 +:10F55000C6F34012B2EBD31F40F0F980C3F384032B +:10F56000434540F0FB80029AB6092B7B002A52D01B +:10F5700016F0010661D1032B40F2F380039B39465C +:10F5800004F10C00BB60049BFB60FB8A66F309037B +:10F59000AE1DFB8232462B7B033BDBB2FFF798FAB2 +:10F5A00000280CDA39462046FFF780FAFB7DC3F3CA +:10F5B0008403013303F01F039B02FB8204E7AB8843 +:10F5C000DDE908843B834FF6FF73C9F12000A9F100 +:10F5D000200228FA09F109F1080904FA00F024FAD6 +:10F5E00002F2014318461143C9B2FFF7B3F9B9F16A +:10F5F000400F0346E9D1B88231462A7B033AD2B2A2 +:10F60000FFF7B8F9FB7DB882DA43C2F3C01262F3A8 +:10F61000C713FB753EE786B92E1D013B394604F141 +:10F620000C00DBB23246FFF753FA0028BADB2A7B24 +:10F630003146B88A013AD2B2E2E7F98A013BC1F316 +:10F640000901DAB204295BD8281D002307F11B0643 +:10F650009A4208D910F801CB013306F801C00131F4 +:10F66000DBB20529F4D1039993420A9138BF0433E0 +:10F6700004992CBF002355FA83F30B9107F11B016A +:10F680000C9179680E930D91291DFB8AADF83EB05F +:10F69000C3F309038DF840A08DF841801A44069BFE +:10F6A0008DF84230059BADF83C208DF8433094F83E +:10F6B0002C3083F001038DF844300023B88A7B603E +:10F6C0002A7B013AFFF756F93B8BB882834203D17C +:10F6D000A3680AA92046984720460AA9FFF7FCFD1F +:10F6E000FB7DBA8AC3F38403013303F01F039B023B +:10F6F000FB823B8B9A420CBF00206FF01000BCE6EF +:10F700007B68002BAFD0052001E01C3033461E681B +:10F71000002EFAD1091A2E1D081D184401EB090C00 +:10F720005FFA89F3BCF11B0F9DD89A429BD916F85A +:10F73000013B09F1010900F8013BEFE76FF0090017 +:10F740009BE66FF00A0098E66FF00B0095E66FF00D +:10F750000D0092E640420F0080841E006FF00E0004 +:10F760008BE66FF00F0088E6EFF3098305496833F5 +:10F770004A6B22F001024A6383F30988002383F372 +:10F780001188704700EF00E0302080F3118862B6E6 +:10F790000D4B0E4AD96821F4E0610904090C0A43B3 +:10F7A0000B49DA60D3F8FC2042F08072C3F8FC20E9 +:10F7B000084AC2F8B01F116841F00101116020220F +:10F7C000DA7783F82200704700ED00E00003FA05C5 +:10F7D00055CEACC5001000E0302310B583F311887E +:10F7E0000E4B5B6813F4006314D0F1EE103AEFF3A4 +:10F7F00009844FF08073683CE361094BDB6B23663F +:10F8000084F3098802F08AF810B1064BA36110BD99 +:10F81000054BFBE783F31188F9E700BF00ED00E03B +:10F8200000EF00E03F04000842040008F0B500F1DA +:10F830000B0423460D46B1FBF2F102FB115707F111 +:10F840003006392EC8BF07F13706954203F8016D1F +:10F85000F0D2421EE11A13F8015B9C4202F8015FEC +:10F86000F9D10844F0BD00002DE9F04F804687B083 +:10F8700015464FF000090C4614F8013B002B3BD015 +:10F88000252B08D0D8F800201946404609F1010977 +:10F89000D268904749E14B782D2B06BF8C1C012381 +:10F8A0000023019323782B2B06BF01340127002767 +:10F8B00094F800A0BAF1300F0CBF01344FF0200AC9 +:10F8C00023782A2B1CD16178023455F804BB2E29E9 +:10F8D00043D1217881B12A2921D0661C0020A1F1D1 +:10F8E00030023446D2B2092A1DD80A2316F8011B69 +:10F8F00003FB00200029F2D1484607B0BDE8F08F95 +:10F900004FF0000B14F8011B0029F5D0A1F13002D3 +:10F91000D2B2092ADBD80A2303FB0B2BF2E761786A +:10F92000023455F8040B01F0DF024C2A17D121787C +:10F930000029E1D0782904F101041FD8622900F2DE +:10F94000008158291AD84E2900F23081442900F04C +:10F950009180492900F08E8010E00020E3E7A1F1BA +:10F9600041027829D2B209D862290BD8582905D882 +:10F970004E293BD8442978D0492976D02E468DF897 +:10F980000C1056E0A1F16306152EF7D80FF2040C07 +:10F990005CF826F025FA00086BFA00087DF90008EB +:10F9A0007DF900087DF900087DF900086BFA000870 +:10F9B0007DF900087DF900087DF900087DF900084F +:10F9C0007DF90008FBFA0008E9FB00087DF9000852 +:10F9D0007DF900083BFA00087DF90008E5FB000806 +:10F9E0007DF900087DF90008E9FB0008A1F14F024C +:10F9F000092AC3D801A050F822F000BFFBFA000882 +:10FA0000E9FB00087DF900087DF900087DF9000890 +:10FA10007DF90008E5FB00087DF900087DF9000884 +:10FA2000E9FB00082E464FF0200A56F8042B8DF80B +:10FA30000C2003AD0DF10D002BE02E4647F6FF72B2 +:10FA40006A4B56F8045B002808BF1046002D08BF1B +:10FA50001D462A462F18104612F8011B11B1B91A7B +:10FA60000029F8DA4FF0200A13E02E46192A56F83A +:10FA7000041B02D82E4656F8041B002936DA2D2224 +:10FA800049428DF80C200DF10D000A2203ADFFF75D +:10FA9000CDFE471B0199ABEB070323EAE372002974 +:10FAA00045D1002BC2F1000B1EDD29782D2901D094 +:10FAB0002B290DD1BAF1300F0AD1D8F800304046C9 +:10FAC000019209F10109DB68013F98470135019A6C +:10FAD000D8F80030514640460192DB6898471BF148 +:10FAE000010B019AF4D191443B4615E01FB12B2242 +:10FAF0008DF80C20C7E703A8C7E708222E4603A805 +:10FB000056F8041BC2E7D8F80020404615F8011B40 +:10FB1000D26801939047019B013BF4D5002FA8BF09 +:10FB2000B9445D462DB9D94435462146A3E69346EE +:10FB3000DAE7D8F8003051464046013DDB68984787 +:10FB4000F0E7A1F16302152A3FF618AF01A353F8BD +:10FB500022F000BF25FA000875FA00087DF90008B8 +:10FB60007DF900087DF900087DF9000875FA0008A4 +:10FB70007DF900087DF900087DF900087DF900088D +:10FB80007DF90008FBFA0008E9FB00087DF9000890 +:10FB90007DF900083BFA00087DF90008E5FB000844 +:10FBA0007DF900087DF90008E9FB0008A1F14F028A +:10FBB000092A3FF6E3AE01A353F822F0FBFA00084E +:10FBC000E9FB00087DF900087DF900087DF90008CF +:10FBD0007DF90008E5FB00087DF900087DF90008C3 +:10FBE000E9FB00080A2289E7102287E784830108DD +:10FBF000F0B5054687B016461F460C4689B14A1E29 +:10FC00000023294601A800F05FF83A46314601A8D2 +:10FC1000FFF72AFE049BA3423CBF0022EA5407B030 +:10FC2000F0BD0A46ECE70000D0E902239A421FBF6C +:10FC30004268D154C36801331ABFC36000206FF01B +:10FC400001007047D0E903239A421FBF4268D25C8B +:10FC50000133036114BF10466FF0010070470000CC +:10FC600003692BB1013B426803610020D154704706 +:10FC70006FF001007047000038B504460846D4E92B +:10FC800003315B1A934228BF13461D4663682A4618 +:10FC90001944F2F771FB236928462B44236138BDD0 +:10FCA00038B50446D0E902301B1A934228BF1346E8 +:10FCB0001D4663682A461844F2F75EFBE36828464F +:10FCC0002B44E36038BD000010B5C0E90223034CAB +:10FCD0000023C0E90041036110BD00BF8C8301080F +:10FCE00008B5074B074A196801F03D019960536850 +:10FCF0000BB190689847BDE80840FFF76DBD00BFA5 +:10FD000000000240245A002008B5084B19688909F0 +:10FD100001F03D018A019A60054AD3680BB1106970 +:10FD20009847BDE80840FFF757BD00BF00000240FC +:10FD3000245A002008B5084B1968090C01F03D0150 +:10FD40000A049A60054A53690BB190699847BDE867 +:10FD50000840FFF741BD00BF00000240245A0020C8 +:10FD600008B5084B1968890D01F03D018A059A60B4 +:10FD7000054AD3690BB1106A9847BDE80840FFF700 +:10FD80002BBD00BF00000240245A002008B5074BDD +:10FD9000074A596801F03D01D960536A0BB1906A76 +:10FDA0009847BDE80840FFF717BD00BF00000240BC +:10FDB000245A002008B5084B5968890901F03D0113 +:10FDC0008A01DA60054AD36A0BB1106B9847BDE827 +:10FDD0000840FFF701BD00BF00000240245A002088 +:10FDE00008B5084B5968090C01F03D010A04DA60B6 +:10FDF000054A536B0BB1906B9847BDE80840FFF77D +:10FE0000EBBC00BF00000240245A002008B5084B9C +:10FE10005968890D01F03D018A05DA60054AD36B06 +:10FE20000BB1106C9847BDE80840FFF7D5BC00BF88 +:10FE300000000240245A002008B5074B074A196801 +:10FE400001F03D019960536C0BB1906C9847BDE88F +:10FE50000840FFF7C1BC00BF00040240245A002044 +:10FE600008B5084B1968890901F03D018A019A60BB +:10FE7000054AD36C0BB1106D9847BDE80840FFF7F9 +:10FE8000ABBC00BF00040240245A002008B5084B58 +:10FE90001968090C01F03D010A049A60054A536D86 +:10FEA0000BB1906D9847BDE80840FFF795BC00BFC7 +:10FEB00000040240245A002008B5084B1968890D37 +:10FEC00001F03D018A059A60054AD36D0BB1106EB1 +:10FED0009847BDE80840FFF77FBC00BF0004024020 +:10FEE000245A002008B5074B074A596801F03D0124 +:10FEF000D960536E0BB1906E9847BDE80840FFF78C +:10FF00006BBC00BF00040240245A002008B5084B17 +:10FF10005968890901F03D018A01DA60054AD36E0A +:10FF20000BB1106F9847BDE80840FFF755BC00BF04 +:10FF300000040240245A002008B5084B5968090CF7 +:10FF400001F03D010A04DA60054A536F0BB1906F6E +:10FF50009847BDE80840FFF73FBC00BF00040240DF +:10FF6000245A002008B5084B5968890D01F03D015D +:10FF70008A05DA60054AD36F13B1D2F8800098473A +:10FF8000BDE80840FFF728BC00040240245A0020C6 +:10FF900000230C4910B51A460B4C0B6054F8230093 +:10FFA000026001EB430004334260402BF6D1074A64 +:10FFB0004FF0FF339360D360C2F80834C2F80C34BA +:10FFC00010BD00BF245A0020A48301080000024095 +:10FFD0000F28F8B510D9102810D0112811D01228E8 +:10FFE00008D10F240720DFF8B4E00126DEF8005026 +:10FFF000A04208D9002649E00446F4E70F24002077 +:020000040801F1 +:10000000F1E70724FBE706FA00F73D4240D1214C17 +:100010004FEA001C3D4304EB00160EEBC000CEF887 +:100020000050C0E90123FBB24BB11B48836B43F086 +:1000300001038363036E43F001030366036E17F449 +:100040007F4F09D01448836B43F002038363036E30 +:1000500043F002030366036E54F80C00036823F0B8 +:100060001F030360056815F00105FBD104EB0C03C9 +:100070003D2493F80CC05F6804FA0CF43C60212422 +:100080000560446112B1987B00F026FC3046F8BD53 +:100090000130ADE7A483010800450258245A00202E +:1000A00010B5302484F31188FFF792FF002383F307 +:1000B000118810BD10B50446807B00F023FC01239D +:1000C0001049627B03FA02F20B6823EA0203DAB2F8 +:1000D0000B604AB90C4A916B21F001019163116EDA +:1000E00021F001011166126E13F47F4F09D1064B06 +:1000F0009A6B22F002029A631A6E22F002021A66CA +:100100001B6E10BD245A00200045025808B530234C +:1001100083F31188FFF7CEFF002383F3118808BD16 +:1001200082880B4BC3F800230268C3F80423002223 +:10013000C3F80823C3F80C23C3F81023C3F814230F +:10014000C3F81823C3F81C231A615A61704700BF13 +:1001500000800240054B9A6B22F460329A631A6E5B +:1001600022F460321A661B6E704700BF00450258C9 +:1001700010B5084CC4F80422C36A43EA014141F4B3 +:10018000806141F00501C4F80012D4F80032DB07A9 +:10019000FBD410BD00800240C36A43EA0141074B13 +:1001A00041F4816141F00501C3F80012D3F8002247 +:1001B000D207FBD4D3F80402704700BF008002408E +:1001C00038B51E4BD3F8605115F0410FC3F860519C +:1001D0002FD015F0010F1A4C13D0302383F3118860 +:1001E000002104F1080001F007FDE369012104F199 +:1001F000180043F00103E36101F01CFA002383F3CC +:1002000011886B0611D5302383F3118800210D4826 +:1002100001F0F2FCE36902210B4843F00203E361C1 +:1002200001F008FA002383F31188236A0BB1044814 +:100230009847BDE83840FFF7CFBA00BF00900240B2 +:10024000A85A0020B85A0020C05A00202DE9F341D6 +:100250004C4F3868002800F091804B4D00242868EE +:10026000002800F08B80494E304600F063FB3B686D +:10027000474A4FF0414003F1400186F8284052F8C8 +:10028000047B103343F8107C43F80C4C43F8084CC3 +:1002900043F8040C9942F2D12B683E4A1C605C6022 +:1002A0009C60DC601C615C619C61DC61642453685F +:1002B000394F43F00073DFF8D4805360536823F460 +:1002C000600343F400035360344BD3F8802042F4BE +:1002D0000042C3F88020D3F8802022F40042C3F803 +:1002E0008020D3F880302E4B9A6B42F460329A63B0 +:1002F0001A6E42F460321A661B6E00256B010221F1 +:100300004046F36245F48063C7F80032C7F8043210 +:10031000FFF742FF07280AD005F58035B5F5001F25 +:10032000ECD1013CE9D12046FFF714FF26E0032180 +:100330004046FFF731FF20F00F004CF2F0030004BD +:10034000000C9842E8D111484FF4004200210446C5 +:10035000FFF70EFF00212046FFF71EFF10F40041BB +:10036000F8D10A480191FFF717FF019940F40062A4 +:100370000648FFF7FDFE0120FFF7ECFE02B0BDE8E6 +:10038000F08100BF2851002034510020A85A0020DD +:100390001851002000040058008002400044025818 +:1003A00000450258F8B5414E4FF04142404F0025FC +:1003B000336804460D21DA60DA61DA62DA633B6899 +:1003C0000563DD60DD613B4B45633D209A6B42F484 +:1003D00060329A631A6E42F460321A661B6E00F045 +:1003E0007BFA29462046FFF7D7FE294620F4006213 +:1003F0002046FFF7BDFE3049304A0B6843F0010349 +:100400000B600B6813F00103FBD14FF480611160A6 +:1004100093601367C2F8903013656368186800B979 +:100420002748FFF77DFE254A4FF480513068136856 +:1004300043F003031360234BC2F81037A3F5F51301 +:10044000A3F5FD53C2F80C371B4B59600021C3F8CC +:1004500000114FF4F04119603968C3F814110121FB +:10046000C3F82C11C3F81C010320C3F830014FF46A +:100470000040C3F8600148F24100C3F83401C2F8FB +:10048000001DD2F8003DDB07FBD46023C2F8303DED +:100490000223C2F8003D4FF00112074BC3F80421BC +:1004A00002F6E432C3F80821F8BD00BF285100204D +:1004B0003451002000450258009002400080024064 +:1004C000A484010800C0200C90F82830F0B513B3C4 +:1004D000124B426B1C68160104EB0215EB686F6847 +:1004E00003F00043002F18BF43F001039BB90C4FEA +:1004F00057F822700132A7516C6801346C60012AF0 +:1005000094BF14461C4640F2F252446318460B60F6 +:10051000C1E90125F0BD4FF0FF30FBE73451002069 +:100520002C510020302383F3118803680022816856 +:10053000C3F30D034A6043F000438B604FF0304338 +:10054000CB60BFF34F8F074BD96801F47041B1F511 +:10055000C04F02D10421C3F86011C3F8202182F3F7 +:100560001188704700900240154B70B51A684FF023 +:100570004145046B02EB0412D368002B02DA4FF002 +:10058000FF301AE0D3681B0418D4936813F40053A7 +:1005900014D1D668B60011D5D668F6000ED5D56848 +:1005A00001340B60C5F30E05032CA5F10205C1E96A +:1005B000015294BF04630363184670BDD560DBE746 +:1005C00028510020302383F311884FF04142836883 +:1005D000DA60BFF34F8F084BDA6802F47062B2F54D +:1005E000806F02D18022C3F860210022C3F8282145 +:1005F00082F31188704700BF0090024070B51D4B18 +:10060000054601211C68FFF7C7FD01212846FFF7B9 +:10061000C3FD002106462846FFF7BEFDC1041DD5D7 +:1006200006F03406242E03D0002085F8280070BD83 +:1006300005212846FFF7B0FD10F4607F14BF44F495 +:10064000804424F4804410F4A07F14BF44F4005488 +:1006500024F40054074B01201C60E6E77207E3D541 +:1006600083044CBF44F4804424F4804410F4807F1D +:10067000EBE700BF0080024038B50546D0E9000333 +:100680001B1A934228BF13461C4643B1AB6822464F +:100690001B681844F1F770FE2B6823442B6020463A +:1006A00038BD000038B505460846D5E900135B1A89 +:1006B000934228BF13461C4643B1AB6822461B68D1 +:1006C0001944F1F759FE2B6823442B60204638BDAE +:1006D000024A136843F0C00313607047007800407B +:1006E00013B50E4C204600F005FB04F10C0000236E +:1006F0004FF400720A49009400F0CAF9094B4FF414 +:100700000072094904F13000009400F043FA074AEE +:10071000074BC4E9152302B010BD00BFE05A00200A +:10072000445B0020D1060108445D002000780040B1 +:1007300000E1F505037A30B5214C002918BF0C46BD +:10074000012B0CD11F4B984209D11F4B9A6C42F0E0 +:1007500080429A641A6F42F080421A671B6F2268C7 +:10076000836D416D03EB52030466B3FBF2F36268E1 +:10077000150442BF23F0070503F0070343EA4503CE +:10078000CB60A36843F040034B60E36843F0010390 +:100790008B6042F4967343F001030B604FF0FF331C +:1007A0000B62510505D512F0102205D0B2F1805F21 +:1007B00004D080F85C3030BD7F23FAE73F23F8E7B0 +:1007C000AC840108E05A0020004502582DE9F047AA +:1007D000466D05463768F469210734621AD014F073 +:1007E000080118BF4FF48071E20748BF41F02001B3 +:1007F000A3074FF0300348BF41F04001600748BFF6 +:1008000041F0800183F31188281D00F013FF0023BD +:1008100083F31188E2050AD5302383F311884FF45E +:100820008061281D00F006FF002383F311884FF03C +:1008300030094FF0000A14F0200838D13B0616D5D5 +:100840004FF0300905EB090A200610D589F311880D +:10085000504600F0D3F9002836DA0821281D00F0B0 +:10086000E9FE27F080033360002383F311887906C3 +:1008700014D5620612D5302383F31188D5E91123EC +:100880009A4208D1AB6B33B127F040071021281DE5 +:1008900000F0D0FE3760002383F31188E30618D5FB +:1008A0002A6E1369ABB15069BDE8F047184789F368 +:1008B0001188736A284695F85C10194000F032FAE6 +:1008C0008AF31188F469B6E7B06288F31188F46995 +:1008D000BAE7BDE8F0870000090100F1604301229A +:1008E00003F56143C9B283F8001300F01F039A4077 +:1008F00043099B0003F1604303F56143C3F8802182 +:100900001A60704700F01F0301229A40430900F16A +:1009100060409B0000F5614003F1604303F56143D3 +:10092000C3F88020C3F88021002380F8003370478B +:10093000FFF78CBC01230370002343604362C0E9CE +:10094000073300F10803C0E9023300F11003C0E9E6 +:10095000043300F1180383617047000010B53023A1 +:10096000044683F311884160FFF71CFD0223002039 +:10097000237080F3118810BDF8B504460D46164665 +:10098000302383F3118800F1080729462046FFF73A +:100990009BFD28B13146384601F012F9431CF4D1D1 +:1009A000002383F31188F8BDF8B504460D461646BA +:1009B000302383F3118800F1100729462046FFF702 +:1009C000D3FD28B13146384601F0FAF8431CF4D182 +:1009D000002383F31188F8BDFFF710BEF8B5154664 +:1009E000826804460B46AA4200D28568A16926693E +:1009F000761AB5420BD218462A46F1F7BDFCA36918 +:100A00002B44A3612846A3685B1BA360F8BD0CD9E7 +:100A1000AF1B18463246F1F7AFFC3A46E168304466 +:100A2000F1F7AAFCE3683B44EBE718462A46F1F7E6 +:100A3000A3FCE368E5E7000083689342F7B504464A +:100A4000154600D28568D4E90460361AB5420BD247 +:100A50002A46F1F791FC63692B4463612846A36839 +:100A60005B1BA36003B0F0BD0DD93246AF1B0191F3 +:100A7000F1F782FC01993A46E0683144F1F77CFCD9 +:100A8000E3683B44E9E72A46F1F776FCE368E4E7EC +:100A900010B50A440024C361029B8460C1600261F6 +:100AA0000362C0E90000C0E9051110BD08B5D0E936 +:100AB0000532934201D1826882B982680132826034 +:100AC0005A1C426119700021D0E904329A4224BFB5 +:100AD000C368436101F084F8002008BD4FF0FF3087 +:100AE000FBE7000070B5302304460E4683F31188FF +:100AF000A568A5B1A368A269013BA360531CA361CB +:100B000015782269934224BFE368A361E3690BB1BE +:100B100020469847002383F31188284607E0314692 +:100B2000204601F04DF80028E2DA85F3118870BD07 +:100B30002DE9F74F04460E4617469846D0F81C900C +:100B40004FF0300A8AF311884FF0000B154665B15B +:100B50002A4631462046FFF741FF034660B9414629 +:100B6000204601F02DF80028F1D0002383F31188EE +:100B7000781B03B0BDE8F08FB9F1000F03D00190EE +:100B80002046C847019B8BF31188ED1A1E448AF357 +:100B90001188DCE7C160C361009B82600362C0E929 +:100BA00005111144C0E9000001617047F8B5044621 +:100BB0000D461646302383F31188A768A7B1A368B2 +:100BC000013BA36063695A1C62611D70D4E9043261 +:100BD0009A4224BFE3686361E3690BB120469847FA +:100BE000002080F3118807E03146204600F0E8FF3E +:100BF0000028E2DA87F31188F8BD0000D0E9052368 +:100C000010B59A4201D182687AB982680021013216 +:100C100082605A1C82611C7803699A4224BFC368AF +:100C2000836100F0DDFF204610BD4FF0FF30FBE791 +:100C30002DE9F74F04460E4617469846D0F81C900B +:100C40004FF0300A8AF311884FF0000B154665B15A +:100C50002A4631462046FFF7EFFE034660B941467B +:100C6000204600F0ADFF0028F1D0002383F3118867 +:100C7000781B03B0BDE8F08FB9F1000F03D00190ED +:100C80002046C847019B8BF31188ED1A1E448AF356 +:100C90001188DCE70C30FFF74BBF00004FF0FF334B +:100CA0000C30FFF745BF00003030FFF7C1BF000038 +:100CB0004FF0FF333030FFF7BBBF00000C30FFF7C1 +:100CC00011BF00004FF0FF310C30FFF70BBF0000E9 +:100CD0003030FFF76BBF00004FF0FF323030FFF7CE +:100CE00065BF0000012914BF6FF01300002070479A +:100CF000FFF7F6BC0346034A43F8042B4360012385 +:100D000003727047C484010810B53023044683F38E +:100D10001188FFF70FFD02230020237280F3118852 +:100D200010BD000038B5436904460D461BB90421C7 +:100D3000084400F07FFC294604F10C00FFF7B6FEE2 +:100D4000002806DA201D4FF40061BDE8384000F0AD +:100D500071BC38BD13B5406B00F58054D4F89C3895 +:100D60001A681178042914D1017A022911D119794C +:100D7000012312898B4013420BD101A9443002F0A8 +:100D800017FCD4F89C480246019B2179206800F0AA +:100D9000DFF902B010BD00000C3002F099BB00007A +:100DA0004FF0FF330C3002F093BB0000443002F0F0 +:100DB0006BBC00004FF0FF33443002F065BC000014 +:100DC0000C3002F067BB00004FF0FF310C3002F036 +:100DD00061BB0000443002F037BC00004FF0FF322E +:100DE000443002F031BC00000020704710B500F51F +:100DF0008054D4F89C381A681178042917D1017AE4 +:100E0000022914D15979012352898B4013420ED102 +:100E10000C3002F0F9FA024648B1D4F89C484FF47D +:100E2000407361792068BDE8104000F07FB910BDC3 +:100E3000406BFFF7DBBF0000704700007FB5034643 +:100E4000114A0125042643F8042B0446436000F1AF +:100E50007C020E4B2946057202900C3001934FF430 +:100E60004073009602F0ACFA094B04F68C42294616 +:100E700004F144000294CDE900634FF4407302F0A2 +:100E800073FB04B070BD00BFEC840108310E010893 +:100E9000550D01080A68302383F311880B790B3351 +:100EA00042F823004B79133342F823008B7913B1B6 +:100EB0000B3342F8230000F58053C3F89C1802233B +:100EC0000372002080F311887047000038B5037D5D +:100ED000044613B190F84C30ABB90125201D022116 +:100EE00000F0A8FB04F10C006FF00101257500F083 +:100EF00083FE04F1440084F84C506FF00101BDE81A +:100F0000384000F079BE38BD10B5012104460430E8 +:100F100000F090FB0023237584F84C3010BD0000D6 +:100F200038B5044600250C3002F062FA04F14400A2 +:100F3000257502F031FB201D84F84C50012100F092 +:100F400079FB2046BDE83840FFF750BF90F880306D +:100F500003F06003202B06D190F881200023212A82 +:100F600003D81F2A06D800207047222AFBD1C0E9E7 +:100F70001D3303E0034A426707228267C3670120EB +:100F8000704700BF5C23002037B500F58055D5F8C9 +:100F90009C381A68117804291AD1017A022917D1CC +:100FA0001979012312898B40134211D100F14404B5 +:100FB000204602F0B1FB58B101A9204602F0F8FA30 +:100FC000D5F89C480246019B2179206800F0C0F8C2 +:100FD00003B030BD01F10B03F0B550F8236085B0CC +:100FE00004460D46FEB1302383F3118804EB8507D8 +:100FF000301D082100F01EFBFB6806F144005B6910 +:101000001B681BB1019002F0E1FA019803A902F0FC +:10101000CFFA024648B1039B2946204600F098F8D3 +:10102000002383F3118805B0F0BDFB685A6912688C +:10103000002AF5D01B8A013B1340F1D104F1800254 +:10104000EAE70000133138B550F82140ECB1302305 +:1010500083F3118804F58053D3F89C2813685279E0 +:1010600003EB8203DB689B695D6845B1042160186E +:1010700000F0E0FA294604F10C0002F0CFF9204616 +:10108000FFF7B4FE002383F3118838BD70470000DA +:1010900001F0A2BC01234022002110B5044600F853 +:1010A000303BF1F79BF90023C4E9013310BD000088 +:1010B00010B53023044683F31188242241600021B7 +:1010C0000C30F1F78BF9204601F0A8FC0223002038 +:1010D000237080F3118810BD70B500EB81030546C5 +:1010E00050690E461446DA6018B110220021F1F75B +:1010F00075F9A06918B110220021F1F76FF9314696 +:101100002846BDE8704001F089BD000083682022B8 +:10111000002103F0011310B5044683601030F1F78D +:101120005DF92046BDE8104001F004BEF0B4012591 +:1011300000EB810447898D40E4683D43A469458103 +:1011400023600023A2606360F0BC01F021BE0000B8 +:10115000F0B4012500EB810407898D40E4683D432C +:101160006469058123600023A2606360F0BC01F024 +:1011700097BE000070B502230025044624220370A8 +:101180002946C0F888500C3040F8045CF1F726F985 +:10119000204684F8705001F0D5FC63681B6823B1C9 +:1011A00029462046BDE87040184770BD0378052BDE +:1011B00010B504460AD080F88C30052303704368CC +:1011C0001B680BB1042198470023A36010BD0000E9 +:1011D0000178052906D190F88C20436802701B68BD +:1011E00003B118477047000070B590F8703004469E +:1011F00013B1002380F8703004F18002204601F022 +:10120000BDFD63689B68B3B994F8803013F0600546 +:1012100035D00021204602F0AFF80021204602F030 +:101220009FF863681B6813B1062120469847062380 +:1012300084F8703070BD204698470028E4D0B4F898 +:101240008630A26F9A4288BFA36794F98030A56F59 +:10125000002B4FF0300380F20381002D00F0F2806C +:10126000092284F8702083F3118800212046D4E9F4 +:101270001D23FFF76DFF002383F31188DAE794F84D +:10128000812003F07F0343EA022340F202329342BB +:1012900000F0C58021D8B3F5807F48D00DD8012B50 +:1012A0003FD0022B00F09380002BB2D104F18802D2 +:1012B00062670222A267E367C1E7B3F5817F00F0AE +:1012C0009B80B3F5407FA4D194F88230012BA0D14C +:1012D000B4F8883043F0020332E0B3F5006F4DD02C +:1012E00017D8B3F5A06F31D0A3F5C063012B90D808 +:1012F0006368204694F882205E6894F88310B4F8FE +:101300008430B047002884D0436863670368A367CC +:101310001AE0B3F5106F36D040F6024293427FF4E4 +:1013200078AF5C4B63670223A3670023C3E794F89D +:101330008230012B7FF46DAFB4F8883023F00203C4 +:10134000A4F88830C4E91D55E56778E7B4F8803023 +:10135000B3F5A06F0ED194F88230204684F88A301D +:1013600001F04EFC63681B6813B1012120469847C9 +:10137000032323700023C4E91D339CE704F18B038E +:1013800063670123C3E72378042B10D1302383F351 +:1013900011882046FFF7BAFE85F3118803216368A0 +:1013A00084F88B5021701B680BB12046984794F845 +:1013B0008230002BDED084F88B30042323706368E6 +:1013C0001B68002BD6D0022120469847D2E794F81C +:1013D000843020461D0603F00F010AD501F0C0FC41 +:1013E000012804D002287FF414AF2B4B9AE72B4B33 +:1013F00098E701F0A7FCF3E794F88230002B7FF424 +:1014000008AF94F8843013F00F01B3D01A062046C9 +:1014100002D501F0C9FFADE701F0BAFFAAE794F8E1 +:101420008230002B7FF4F5AE94F8843013F00F0176 +:10143000A0D01B06204602D501F09EFF9AE701F0DE +:101440008FFF97E7142284F8702083F311882B46CE +:101450002A4629462046FFF769FE85F31188E9E60A +:101460005DB1152284F8702083F311880021204695 +:10147000D4E91D23FFF75AFEFDE60B2284F8702005 +:1014800083F311882B462A4629462046FFF760FE43 +:10149000E3E700BF1C8501081485010818850108D1 +:1014A00038B590F870300446002B3ED0063BDAB2D7 +:1014B0000F2A34D80F2B32D8DFE803F03731310848 +:1014C000223231313131313131313737856FB0F836 +:1014D00086309D4214D2C3681B8AB5FBF3F203FB2E +:1014E00012556DB9302383F311882B462A462946BD +:1014F000FFF72EFE85F311880A2384F870300EE082 +:10150000142384F87030302383F31188002320469D +:101510001A461946FFF70AFE002383F3118838BDE7 +:10152000C36F03B198470023E7E70021204601F08D +:1015300023FF0021204601F013FF63681B6813B1ED +:101540000621204698470623D7E7000010B590F8FB +:1015500070300446142B29D017D8062B05D001D89B +:101560001BB110BD093B022BFBD80021204601F026 +:1015700003FF0021204601F0F3FE63681B6813B1EE +:10158000062120469847062319E0152BE9D10B23A5 +:1015900080F87030302383F3118800231A461946EF +:1015A000FFF7D6FD002383F31188DAE7C3689B6950 +:1015B0005B68002BD5D1C36F03B19847002384F833 +:1015C0007030CEE730B5302484F31188064C0568BE +:1015D000E4680D600160C1E901420022C1E9032312 +:1015E00082F3118830BD00BF485F0020302383F3B1 +:1015F0001188044BDB681A6B10431863002383F3D4 +:1016000011887047485F0020036B194390F824301D +:101610000A2B016303D1836A194205D170470B2B52 +:1016200006D1836A8B4303D10023836200F02AB979 +:101630007047000070B506460D460468B44200D1FC +:1016400070BDE3682B43E36015B123691D4203D0ED +:10165000D4E90101FFF7D8FF2468EFE738B50C4B58 +:101660000446DD68302383F311882B6B184006D1C4 +:101670000A20AC6200F008F92B6B04EA03002B6B24 +:1016800023EA00032B63002383F3118838BD00BFD6 +:10169000485F00200023C0E90000836003617047B9 +:1016A00070B51C4B05468468DE685CB3B44213D148 +:1016B00003690133036170BDA36094F8243083B1E2 +:1016C000062B15D1A06A2146D4E9003213605A6076 +:1016D00000F0C8F8A36A9C68B368A2689A42EBD38A +:1016E00006E0D4E90032204613605A6000F0CAF8E0 +:1016F0002846314600F0B6F8B5620620BDE87040D5 +:1017000000F0C2B80369866001330361736BC36084 +:101710007063D0E7485F002008B5302383F3118859 +:10172000FFF7BEFF002383F3118808BD0A4B8268D0 +:10173000DB6832B19A420CD10369013303610120A5 +:10174000704702698360013202615A6BC26058635C +:10175000F5E70020704700BF485F002008B5302340 +:1017600083F31188FFF7E2FF002383F3118808BD9C +:10177000194BD96883688B4210B520D1302383F38D +:1017800011880269013A0261B2B90468C368A042D3 +:101790004B631ED08A6B9BB901238A600361036887 +:1017A0001A68026050605A6B8360C26058631846C2 +:1017B00000F068F800F0D4F8002383F3118810BD1E +:1017C0001C68A34203D0A468A24238BF2246DB684B +:1017D000E1E78260F0E700BF485F002000238268F5 +:1017E00080F8243083691B6899689142FBD25A685B +:1017F00003604260106058607047000000238268F8 +:1018000080F8243083691B6899689142FBD85A6834 +:1018100003604260106058607047000008B50846D9 +:10182000302383F3118891F824200023052A06D859 +:10183000DFE802F00B050503120E826A13604FF019 +:10184000FF338362FFF7CAFF002383F3118808BDCB +:10185000826A936801339360D0E9003213605A6062 +:10186000EDE70000034610B51B68984203D09C6862 +:101870008A689442F8D25A680B604A6011605960D5 +:1018800010BD0000FFF7AABF064BD96881F82400FD +:101890001868026853601A600122D86080F824201A +:1018A000EEF7B8BD485F00200C4B30B5DD684B1C2F +:1018B00087B004460FD02B46094A684600F030FA3C +:1018C0002046FFF7E1FF009B13B1684600F032FAB3 +:1018D000A86A07B030BDFFF7D7FFF9E7485F0020DF +:1018E0001D18010838B50C4D04468162EB6881680B +:1018F0009A68914203D8BDE83840FFF76FBF184699 +:10190000FFF77CFF01230146EC60204684F8243079 +:10191000BDE83840EEF77EBD485F0020044B1A68F2 +:10192000DB6890689B68984294BF00200120704754 +:10193000485F0020094B10B51C68D86822685360C6 +:101940001A600122DC6084F82420FFF757FF01466B +:101950002046BDE81040EEF75DBD00BF485F0020A7 +:10196000044B1A68DB6892689B689A4201D9FFF7BA +:10197000E1BF7047485F0020C0E900008160704708 +:101980008368013B002B10B583600CDA074BDC68E1 +:101990004368A062206063601C6044600520FFF71C +:1019A00073FFA06A10BD0020FCE700BF485F002065 +:1019B00008B5302383F31188FFF7E2FF002383F398 +:1019C000118808BD826810B4541E002C846013DA9C +:1019D00029B982604FF0FF305DF8044B7047074B28 +:1019E0004268DB685DF8044B986218605A601360C7 +:1019F00043600520FFF758BF0020EDE7485F002057 +:101A000008B5302383F31188FFF7DCFF002383F34D +:101A1000118808BD83680133002B836008DC0368EC +:101A20001A6802605060002218469A62FFF72ABFC7 +:101A30007047000038B50123084C0025237065600D +:101A400001F0A6FE01F0CCFE0549064801F0C8FFF2 +:101A50000223237085F3118838BD00BF0062002087 +:101A600024850108485F002008B572B6044BD8678A +:101A700000F0AEFD00F078FE024B03221A70FEE784 +:101A8000485F00200062002000F08AB9034A5168D4 +:101A900053685B1A9842FBD8704700BF001000E003 +:101AA0008B608B630023CA6100F1280288610A61A0 +:101AB000C1E90C3302238B84012381F8263001F124 +:101AC0001003C26A4A611360C36201F12C03084625 +:101AD000CB627047D0E90131026841F8203CA1F1A6 +:101AE000A4034039CB60036941F8243C436941F8C1 +:101AF000203C034B41F8043CC3680248FFF7D0BFC9 +:101B00002D040008485F002008B5FFF7E3FFBDE89B +:101B10000840FFF7B7BE0000302383F3118890F828 +:101B20002630013B80F82630436A03F0FF130F2B69 +:101B30000FD1D0E9043213605A60002383F3118877 +:101B400090F8253003F00303012B05D1006A01F062 +:101B5000DBBE002383F311887047000038B50E4BBD +:101B6000DC6804F12C05A062E06AA8420FD194F869 +:101B700026303BB994F825309B0702BFD4E90432E4 +:101B800013605A600F20BDE83840FFF77DBE036840 +:101B9000E362FFF777FEE7E7485F0020302383F337 +:101BA0001188FFF7DBBF000008B50146302383F33F +:101BB00011880820FFF778FE002383F3118808BD01 +:101BC000064BDB6839B1426818605A6013604360A5 +:101BD0000420FFF769BE4FF0FF307047485F0020D8 +:101BE0000368984206D01A680260506018469962ED +:101BF000FFF748BE7047000038B504460D46206820 +:101C0000844200D138BD036823605C608562FFF7C1 +:101C100039FEF4E7036810B59C68A2420CD85C68F2 +:101C20008A600B604C602160596099688A1A9A60DA +:101C30004FF0FF33836010BD121B1B68ECE7000000 +:101C40000A2938BF0A2170B504460D460A266019D4 +:101C500001F098FD01F080FD041BA54203D8751C1E +:101C600004462E46F3E70A2E04D90120BDE8704051 +:101C700001F0FCBE70BD0000F8B5144B0D460A2AF9 +:101C80004FF00A07D96103F11001826038BF0A22C0 +:101C9000416019691446016048601861A81801F094 +:101CA00061FD01F059FD431B0646A34206D37C1C8F +:101CB00028192746354601F065FDF2E70A2F04D9B9 +:101CC0000120BDE8F84001F0D1BEF8BD485F00201A +:101CD000F8B506460D4601F03FFD0F4A134653F88E +:101CE000107F9F4206D12A4601463046BDE8F840A3 +:101CF000FFF7C2BFD169BB68441A2C1928BF2C4614 +:101D0000A34202D92946FFF79BFF224631460348EA +:101D1000BDE8F840FFF77EBF485F0020585F002015 +:101D2000C0E90323002310B45DF8044B4361FFF7BF +:101D3000CFBF000010B5194C236998420DD08168BF +:101D4000D0E9003213605A609A680A449A6000230E +:101D500003604FF0FF33A36110BD0268234643F8D0 +:101D6000102F53600022026022699A4203D1BDE81D +:101D7000104001F001BD936881680B44936001F04D +:101D8000EBFC2269E1699268441AA242E4D9114449 +:101D9000BDE81040091AFFF753BF00BF485F00209D +:101DA0002DE9F047DFF8BC8008F110072C4ED8F879 +:101DB000105001F0D1FCD8F81C40AA68031B9A42CD +:101DC0003ED814444FF00009D5E90032C8F81C4051 +:101DD00013605A60C5F80090D8F81030B34201D1B2 +:101DE00001F0CAFC89F31188D5E9033128469847E8 +:101DF000302383F311886B69002BD8D001F0ACFC41 +:101E00006A69A0EB040982464A450DD2022001F01E +:101E10002DFE0022D8F81030B34208D15146284692 +:101E2000BDE8F047FFF728BF121A2244F2E712EB91 +:101E300009092946384638BF4A46FFF7EBFEB5E7A1 +:101E4000D8F81030B34208D01444C8F81C00211A46 +:101E5000A960BDE8F047FFF7F3BEBDE8F08700BF1B +:101E6000585F0020485F002038B501F075FC054A36 +:101E7000D2E90845031B181945F10001C2E9080120 +:101E800038BD00BF485F00204FF0FF3070470000B2 +:101E9000002070474FF0FF3070470000002070476F +:101EA0004FF0FF307047000001207047002070475E +:101EB000FEE70000704700004FF0FF307047000061 +:101EC00002290CD0032904D00129074818BF00209B +:101ED0007047032A05D8054800EBC2007047044844 +:101EE00070470020704700BF048601086C23002063 +:101EF000B885010870B59AB005460846144601A990 +:101F000000F0C2F801A8F0F761FA431C0022C6B243 +:101F10005B001046C5E9003423700323023404F843 +:101F2000013C01ABD1B202348E4201D81AB070BD6F +:101F300013F8011B013204F8010C04F8021CF1E74C +:101F400008B5302383F311880348FFF71DF80023F9 +:101F500083F3118808BD00BF0862002090F880302C +:101F600003F01F02012A07D190F881200B2A03D128 +:101F70000023C0E91D3315E003F06003202B08D1D6 +:101F8000B0F884302BB990F88120212A03D81F2A79 +:101F900004D8FEF7DBBF222AEBD0FAE7034A4267F8 +:101FA00007228267C3670120704700BF63230020B8 +:101FB00007B5052917D8DFE801F01916031919200C +:101FC000302383F31188104A01210190FFF784F830 +:101FD000019802210D4AFFF77FF80D48FEF7A0FF98 +:101FE000002383F3118803B05DF804FB302383F3EF +:101FF00011880748FEF76AFFF2E7302383F3118860 +:102000000348FEF781FFEBE7588501087C8501084E +:102010000862002038B50C4D0C4C2A460C4904F1DE +:102020000800FFF767FF05F1CA0204F11000094933 +:10203000FFF760FF05F5CA7204F118000649BDE814 +:102040003840FFF757BF00BFD87A00206C2300202C +:1020500038850108428501084D85010870B50446A0 +:1020600008460D46F0F7B2F9C6B2204601340378AF +:102070000BB9184670BD32462946F0F787F900289B +:10208000F3D10120F6E700002DE9F84F05460C4694 +:10209000F0F79CF92C49C6B22846FFF7DFFF08B1DC +:1020A0000536F6B229492846FFF7D8FF08B11036A1 +:1020B000F6B2632E0DD8DFF89080DFF89090244FB1 +:1020C000DFF894A0DFF894B02E7846B92670BDE80A +:1020D000F88F29462046BDE8F84F02F0E7B8252ED4 +:1020E0002ED1072241462846F0F750F970B9DBF8A7 +:1020F000003007350C3444F80C3CDBF8043044F86D +:10210000083CDBF8083044F8043CDDE70822494687 +:102110002846F0F73BF998B9A21C0E4B1978023209 +:102120000909C95D02F8041C13F8011B01F00F0135 +:102130005345C95D02F8031CF0D118340835C3E7D4 +:10214000013504F8016BBFE7248601084D850108BD +:102150002C86010800E8F11F0CE8F11FAA530108C2 +:10216000BFF34F8F044B1A695107FCD1D3F81021EC +:102170005207F8D1704700BF0020005208B50D4B40 +:102180001B78ABB9FFF7ECFF0B4BDA68D10704D52E +:102190000A4A5A6002F188325A60D3F80C21D207F9 +:1021A00006D5064AC3F8042102F18832C3F8042197 +:1021B00008BD00BF367D0020002000522301674586 +:1021C00008B5114B1B78F3B9104B1A69510703D5A9 +:1021D000DA6842F04002DA60D3F81021520705D5E0 +:1021E000D3F80C2142F04002C3F80C21FFF7B8FFEE +:1021F000064BDA6842F00102DA60D3F80C2142F0B3 +:102200000102C3F80C2108BD367D002000200052D9 +:102210000F289ABF00F5806040040020704700003E +:102220004FF4003070470000102070470F2808B5A9 +:102230000BD8FFF7EDFF00F500330268013204D13F +:1022400004308342F9D1012008BD0020FCE70000E2 +:102250000F2838B505463FD8FFF782FF1F4CFFF720 +:102260008DFF4FF0FF3307286361C4F814311DD888 +:102270002361FFF775FF030243F02403E360E36883 +:1022800043F08003E36023695A07FCD42846FFF734 +:1022900067FFFFF7BDFF4FF4003100F041FA284619 +:1022A000FFF78EFFBDE83840FFF7C0BFC4F810311C +:1022B000FFF756FFA0F108031B0243F02403C4F804 +:1022C0000C31D4F80C3143F08003C4F80C31D4F84D +:1022D00010315B07FBD4D9E7002038BD0020005245 +:1022E0002DE9F84F05460C46104645EA0203DE0686 +:1022F00002D00020BDE8F88F20F01F00DFF8BCB04E +:10230000DFF8BCA0FFF73AFF04EB0008444503D117 +:102310000120FFF755FFEDE720222946204601F076 +:1023200047FF10B920352034F0E72B4605F1200295 +:102330001F68791CDDD104339A42F9D105F1784345 +:102340001B481C4EB3F5801F1B4B38BF184603F1CA +:10235000F80332BFD946D1461E46FFF701FF07609A +:10236000A5EB040C336804F11C0143F00203336055 +:10237000231FD9F8007017F00507FAD153F8042F7E +:102380008B424CF80320F4D1BFF34F8FFFF7E8FEE8 +:102390004FF0FF332022214603602846336823F0A4 +:1023A0000203336001F004FF0028BBD03846B0E7D9 +:1023B000142100520C200052142000521020005210 +:1023C0001021005210B5084C237828B11BB9FFF733 +:1023D000D5FE0123237010BD002BFCD02070BDE87A +:1023E0001040FFF7EDBE00BF367D00202DE9F04F15 +:1023F0000D4685B0814658B111F00D0614BF20225C +:10240000082211F00803019304D0431E034269D04F +:10241000002435E0002E37D009F11F0121F01F09FB +:102420004FF00108314F05F00403DFF8CCA005EAB6 +:10243000080BBBF1000F32D07869C0072FD408F128 +:1024400001080C37B8F1060FF3D19EB9284D494663 +:10245000A819019201F0E6F90446002839D1203686 +:10246000019AA02EF3D1494601F0DCF90446002878 +:102470002FD1019A49461F4801F0D4F9044660BBA8 +:10248000204605B0BDE8F08F0029C9D10146284695 +:10249000029201F0C7F90446D8B9029AC0E713B115 +:1024A00078694107CBD5AC0702D578698007C6D5D6 +:1024B000019911B178690107C1D549460AEB481065 +:1024C000CDE9022301F0AEF90446DDE9022300283C +:1024D000B5D04A460021204601E04A460021EFF7E8 +:1024E0007DFFCDE70246002E96D199E74086010890 +:1024F000787D0020387D0020587D00200021FFF7E6 +:1025000075BF00000121FFF771BF000070B5144DC9 +:102510000124144E40F2FF3200210120EFF75EFF4C +:1025200006EB441001342A6955F80C1F01F066F9D6 +:10253000062CF5D137254FF4C0542046FFF7E2FFB3 +:10254000014628B122460848BDE8704001F056B95E +:10255000C4EBC404013D4FEAD404EED170BD00BF0A +:1025600040860108587D0020387D00200821FFF7B3 +:102570003DBF00004843FFF7C1BF000008B101F0B4 +:10258000C3B970472DE9F347DDF8289005460E469C +:1025900017469846CDE9003913460A460146002001 +:1025A00001F0F6F978B90446DFF820A03B46324640 +:1025B00029460AEB0400CDE9008901F0E9F910B9D8 +:1025C0002034A02CF2D102B0BDE8F087787D002045 +:1025D00038B5054D00240334696855F80C0B00F03C +:1025E000B1F8122CF7D138BD408601080846FFF734 +:1025F00085BF00000846FFF7C1BF000038B5EFF304 +:1026000011859DB9EFF30584C4F30804302334B178 +:1026100083F31188FFF728FC85F3118838BD83F315 +:102620001188FFF721FC84F3118838BDBDE83840DC +:10263000FFF71ABC10B5FFF7E1FF104CC008104AB5 +:10264000002340EA4170C908A0FB04ECA0FB020E85 +:102650001CEB0000A1FB044CA1FB02125B41001922 +:1026600043EB0C0011EB0E0142F10002411842F164 +:102670000000090941EA007010BD00BFCFF753E325 +:10268000A59BC4200244074BD2B210B5904200D1A2 +:1026900010BD441C00B253F8200041F8040BE0B216 +:1026A000F4E700BF504000580E4B30B51C6F2404B7 +:1026B00005D41C6F1C671C6F44F400441C670A4C53 +:1026C00002442368D2B243F480732360074B9042E4 +:1026D00000D130BD441C51F8045B00B243F82050D7 +:1026E000E0B2F4E700440258004802585040005855 +:1026F00007B5012201A90020FFF7C4FF019803B02C +:102700005DF804FB13B50446FFF7F2FFA04205D0C5 +:10271000012201A900200194FFF7C6FF02B010BDFD +:102720000144BFF34F8F064B884204D3BFF34F8F52 +:10273000BFF36F8F7047C3F85C022030F4E700BF2F +:1027400000ED00E00144BFF34F8F064B884204D3F5 +:10275000BFF34F8FBFF36F8F7047C3F87002203005 +:10276000F4E700BF00ED00E070470000114BDA69AC +:1027700052021ED59A69D00704D50F4A9A6002F119 +:1027800044329A600B4BDA69D107FCD41A6A22F4FE +:1027900080021A629A6942F002029A61DA69D207EB +:1027A000FCD49A6942F001029A61024AD369DB07BC +:1027B000FCD47047002000523B2A1908074B45F211 +:1027C00055521A6003225A6040F2FF729A604CF62A +:1027D000CC421A600122024B1A7070470048005820 +:1027E0001C7E0020034B1B781BB1034B4AF6AA2228 +:1027F0001A6070471C7E002000480058034B1A687E +:102800001AB9034AD2F8D0241A607047187E002003 +:1028100000400258024B4FF48032C3F8D024704776 +:102820000040025808B5FFF7E9FF024B1868C0F3F3 +:10283000806008BD187E002070B5BFF34F8FBFF3D6 +:102840006F8F1A4A0021C2F85012BFF34F8FBFF3A7 +:102850006F8F536943F400335361BFF34F8FBFF35E +:102860006F8FC2F88410BFF34F8FD2F8803043F6D9 +:10287000E074C3F3C900C3F34E335B0103EA0406FB +:10288000014646EA81750139C2F86052F9D2203B0F +:1028900013F1200FF2D1BFF34F8F536943F480330C +:1028A0005361BFF34F8FBFF36F8F70BD00ED00E03A +:1028B000FEE70000214B2248224A70B5904237D3F0 +:1028C000214BC11EDA1C121A22F003028B4238BFC0 +:1028D00000220021EFF782FD1C4A0023C2F8843059 +:1028E000BFF34F8FD2F8803043F6E074C3F3C900D2 +:1028F000C3F34E335B0103EA0406014646EA8175E1 +:102900000139C2F86C52F9D2203B13F1200FF2D1F9 +:10291000BFF34F8FBFF36F8FBFF34F8FBFF36F8F37 +:102920000023C2F85032BFF34F8FBFF36F8F70BDDB +:1029300053F8041B40F8041BC0E700BF808B01085C +:1029400020800020208000202080002000ED00E07A +:10295000054B996B21EA000199631A6E22EA000285 +:102960001A661B6E704700BF0045025870B5D0E96B +:10297000244300224FF0FF359E6804EB42135101BF +:10298000D3F80009002805DAD3F8000940F08040A8 +:10299000C3F80009D3F8000B002805DAD3F8000BC0 +:1029A00040F08040C3F8000B013263189642C3F830 +:1029B0000859C3F8085BE0D24FF00113C4F81C3883 +:1029C00070BD0000890141F02001016103699B068F +:1029D000FCD41220FFF75AB810B50A4C2046FEF777 +:1029E00059FB094BC4F89030084BC4F89430084C9C +:1029F0002046FEF74FFB074BC4F89030064BC4F857 +:102A0000943010BD207E002000000840AC860108F4 +:102A1000BC7E002000000440B886010870B5037831 +:102A20000546012B58D13F4BD0F89040984254D1E5 +:102A30003D4B0E2165209A6B42F000629A631A6E3C +:102A400042F000621A661B6E384BD3F8802042F0C9 +:102A50000062C3F88020D3F8802022F00062C3F81F +:102A60008020D3F88030FDF737FF314BE360314BE6 +:102A7000C4F800380023D5F89060C4F8003EC023A5 +:102A800023604FF40413A3633369002BFCDA0123A2 +:102A90000C203361FEF7FAFF3369DB07FCD4122008 +:102AA000FEF7F4FF3369002BFCDA00262846A66007 +:102AB000FFF75CFF6B68C4F81068DB68C4F8146843 +:102AC000C4F81C6863BB1C4BA3614FF0FF33636108 +:102AD000A36843F00103A36070BD184B9842C9D1AD +:102AE000114B4FF080609A6B42F000729A631A6E3D +:102AF00042F000721A661B6E0C4BD3F8802042F035 +:102B00000072C3F88020D3F8802022F00072C3F84E +:102B10008020D3F88030FFF71BFF0E214D20A2E765 +:102B2000074BD1E7207E00200045025800440258A0 +:102B30004014004003002002003C30C0BC7E002056 +:102B4000083C30C0F8B5D0F89040054600214FF061 +:102B500000662046FFF736FFD5F8941000234FF0AB +:102B600001128F684FF0FF30C4F83438C4F81C28C5 +:102B700004EB431201339F42C2F80069C2F8006BB4 +:102B8000C2F80809C2F8080BF2D20B68D5F89020F9 +:102B9000C5F89830636210231361166916F01006A9 +:102BA000FBD11220FEF772FFD4F8003823F4FE6345 +:102BB000C4F80038A36943F4402343F01003A36131 +:102BC0000923C4F81038C4F814380B4BEB604FF0ED +:102BD000C043C4F8103B094BC4F8003BC4F810696B +:102BE000C4F80039D5F8983003F1100243F480138B +:102BF000C5F89820A362F8BD8886010840800010BF +:102C0000D0F8902090F88A10D2F8003823F4FE63B0 +:102C100043EA0113C2F80038704700002DE9F84379 +:102C200000EB8103D0F890500C468046DA680FFA2A +:102C300081F94801166806F00306731E022B05EBA6 +:102C400041134FF0000194BFB604384EC3F8101B77 +:102C50004FF0010104F1100398BF06F1805601FA0C +:102C600003F3916998BF06F5004600293AD0578AC8 +:102C700004F15801374349016F50D5F81C180B4334 +:102C80000021C5F81C382B180127C3F81019A740DC +:102C90005369611E9BB3138A928B9B08012A88BFDC +:102CA0005343D8F89820981842EA034301F14002B0 +:102CB0002146C8F89800284605EB82025360FFF7CA +:102CC00081FE08EB8900C3681B8A43EA84534834B9 +:102CD0001E4364012E51D5F81C381F43C5F81C78DB +:102CE000BDE8F88305EB4917D7F8001B21F4004134 +:102CF000C7F8001BD5F81C1821EA0303C0E704F14C +:102D00003F030B4A2846214605EB83035A60FFF731 +:102D100059FE05EB4910D0F8003923F40043C0F800 +:102D20000039D5F81C3823EA0707D7E700800010E0 +:102D300000040002D0F894201268C0F89820FFF731 +:102D400015BE00005831D0F8903049015B5813F49B +:102D5000004004D013F4001F0CBF02200120704774 +:102D60004831D0F8903049015B5813F4004004D04A +:102D700013F4001F0CBF02200120704700EB8101FB +:102D8000CB68196A0B6813604B685360704700008A +:102D900000EB810330B5DD68AA691368D36019B907 +:102DA000402B84BF402313606B8A1468D0F89020B6 +:102DB0001C4402EB4110013C09B2B4FBF3F4634341 +:102DC000033323F0030343EAC44343F0C043C0F892 +:102DD000103B2B6803F00303012B0ED1D2F8083807 +:102DE00002EB411013F4807FD0F8003B14BF43F096 +:102DF000805343F00053C0F8003B02EB4112D2F87D +:102E0000003B43F00443C2F8003B30BD2DE9F041E4 +:102E1000D0F8906005460C4606EB4113D3F8087BCA +:102E20003A07C3F8087B08D5D6F814381B0704D531 +:102E300000EB8103DB685B689847FA071FD5D6F87B +:102E40001438DB071BD505EB8403D968CCB98B6933 +:102E5000488A5A68B2FBF0F600FB16228AB9186855 +:102E6000DA6890420DD2121AC3E90024302383F3AA +:102E7000118821462846FFF78BFF84F31188BDE8AF +:102E8000F081012303FA04F26B8923EA02036B81C8 +:102E9000CB68002BF3D021462846BDE8F041184707 +:102EA00000EB81034A0170B5DD68D0F890306C69A1 +:102EB0002668E66056BB1A444FF40020C2F8100999 +:102EC0002A6802F00302012A0AB20ED1D3F80808D8 +:102ED00003EB421410F4807FD4F8000914BF40F0D3 +:102EE000805040F00050C4F8000903EB4212D2F8C1 +:102EF000000940F00440C2F800090122D3F8340868 +:102F000002FA01F10143C3F8341870BD19B9402E1B +:102F100084BF4020206020681A442E8A8419013C16 +:102F2000B4FBF6F440EAC44040F00050C6E70000AD +:102F30002DE9F843D0F8906005460C464F0106EBAA +:102F40004113D3F8088918F0010FC3F808891CD081 +:102F5000D6F81038DB0718D500EB8103D3F80CC086 +:102F6000DCF81430D3F800E0DA68964530D2A2EBF2 +:102F70000E024FF000091A60C3F80490302383F367 +:102F80001188FFF78DFF89F3118818F0800F1DD08D +:102F9000D6F834380126A640334217D005EB840317 +:102FA0000134D5F89050D3F80CC0E4B22F44DCF8CB +:102FB000142005EB0434D2F800E05168714514D3B5 +:102FC000D5F8343823EA0606C5F83468BDE8F88336 +:102FD000012303FA01F2038923EA02030381DCF8E7 +:102FE0000830002BD1D09847CFE7AEEB0103BCF8F7 +:102FF0001000834228BF0346D7F8180980B2B3EB0C +:10300000800FE3D89068A0F1040959F8048FC4F840 +:103010000080A0EB09089844B8F1040FF5D81844D3 +:103020000B4490605360C8E72DE9F84FD0F89050FA +:1030300004466E69AB691E4016F480586E6103D079 +:10304000BDE8F84FFEF796B8002E12DAD5F8003E2C +:103050009B0705D0D5F8003E23F00303C5F8003EDA +:10306000D5F80438204623F00103C5F80438FEF7EC +:10307000AFF8370505D52046FFF778FC2046FEF768 +:1030800095F8B0040CD5D5F8083813F0060FEB68A6 +:1030900023F470530CBF43F4105343F4A053EB607C +:1030A00031071BD56368DB681BB9AB6923F00803E4 +:1030B000AB612378052B0CD1D5F8003E9A0705D0DB +:1030C000D5F8003E23F00303C5F8003E2046FEF786 +:1030D0007FF86368DB680BB120469847F30200F184 +:1030E000BA80B70226D5D4F8909000274FF0010A95 +:1030F00009EB4712D2F8003B03F44023B3F5802FCD +:1031000011D1D2F8003B002B0DDA62890AFA07F3DD +:1031100022EA0303638104EB8703DB68DB6813B1F6 +:103120003946204698470137D4F89430FFB29B685F +:103130009F42DDD9F00619D5D4F89000026AC2F397 +:103140000A1702F00F0302F4F012B2F5802F00F01C +:10315000CA80B2F5402F09D104EB8303002200F5A9 +:103160008050DB681B6A974240F0B0803003D5F88E +:10317000185835D5E90303D500212046FFF746FE50 +:10318000AA0303D501212046FFF740FE6B0303D5B8 +:1031900002212046FFF73AFE2F0303D503212046E4 +:1031A000FFF734FEE80203D504212046FFF72EFE88 +:1031B000A90203D505212046FFF728FE6A0203D5A0 +:1031C00006212046FFF722FE2B0203D507212046C9 +:1031D000FFF71CFEEF0103D508212046FFF716FE7E +:1031E000700340F1A780E90703D500212046FFF7CF +:1031F0009FFEAA0703D501212046FFF799FE6B0722 +:1032000003D502212046FFF793FE2F0703D50321A4 +:103210002046FFF78DFEEE0603D504212046FFF77A +:1032200087FEA80603D505212046FFF781FE690623 +:1032300003D506212046FFF77BFE2A0603D507218A +:103240002046FFF775FEEB0574D520460821BDE842 +:10325000F84FFFF76DBED4F890904FF0000B4FF091 +:10326000010AD4F894305FFA8BF79B689F423FF6CF +:1032700038AF09EB4713D3F8002902F44022B2F526 +:10328000802F20D1D3F80029002A1CDAD3F8002996 +:1032900042F09042C3F80029D3F80029002AFBDB52 +:1032A0003946D4F89000FFF78DFB22890AFA07F31C +:1032B00022EA0303238104EB8703DB689B6813B1D5 +:1032C0003946204698470BF1010BCAE7910701D117 +:1032D000D0F80080072A02F101029CBF03F8018B9D +:1032E0004FEA18283FE704EB830300F58050DA68C3 +:1032F000D2F818C0DCF80820DCE9001CA1EB0C0CAB +:1033000000218F4208D1DB689B699A683A449A6031 +:103310005A683A445A6029E711F0030F01D1D0F8F6 +:1033200000808C4501F1010184BF02F8018B4FEA56 +:103330001828E6E7BDE8F88F08B50348FFF774FEE4 +:10334000BDE80840FCF748BA207E002008B50348D5 +:10335000FFF76AFEBDE80840FCF73EBABC7E0020DD +:10336000D0F8903003EB4111D1F8003B43F4001347 +:10337000C1F8003B70470000D0F8903003EB4111DA +:10338000D1F8003943F40013C1F800397047000048 +:10339000D0F8903003EB4111D1F8003B23F4001337 +:1033A000C1F8003B70470000D0F8903003EB4111AA +:1033B000D1F8003923F40013C1F800397047000038 +:1033C00030B50433039C0172002104FB0325C16066 +:1033D000C0E90653049B0363059BC0E90000C0E9F4 +:1033E0000422C0E90842C0E90A11436330BD00006D +:1033F0000022416AC260C0E90411C0E90A226FF0EC +:103400000101FEF7F9BB0000D0E90432934201D17B +:10341000C2680AB9181D7047002070470369196017 +:103420000021C2680132C260C269134482699342BA +:10343000036124BF436A0361FEF7D2BB38B504467B +:103440000D46E3683BB162690020131D1268A36258 +:103450001344E36207E0237A33B929462046FEF796 +:10346000AFFB0028EDDA38BD6FF00100FBE700008C +:10347000C368C269013BC3604369134482699342D4 +:10348000436124BF436A436100238362036B03B13A +:103490001847704770B53023044683F31188866A55 +:1034A0003EB9FFF7CBFF054618B186F311882846D1 +:1034B00070BDA36AE26A13F8015B9342A36202D370 +:1034C0002046FFF7D5FF002383F31188EFE70000C4 +:1034D0002DE9F84F04460E46174698464FF030093E +:1034E00089F311880025AA46D4F828B0BBF1000F53 +:1034F00009D141462046FFF7A1FF20B18BF3118887 +:103500002846BDE8F88FD4E90A12A7EB050B521A3A +:10351000934528BF9346BBF1400F1BD9334601F1B9 +:10352000400251F8040B914243F8040BF9D1A36A0D +:10353000403640354033A362D4E90A239A4202D38D +:103540002046FFF795FF8AF31188BD42D8D289F350 +:103550001188C9E730465A46EEF70EFFA36A5E446B +:103560005D445B44A362E7E710B5029C043301723B +:1035700003FB0421C460C0E906130023C0E90A3339 +:10358000039B0363049BC0E90000C0E90422C0E977 +:103590000842436310BD0000026A6FF00101C2607F +:1035A000426AC0E904220022C0E90A22FEF724BBD5 +:1035B000D0E904239A4201D1C26822B9184650F8D2 +:1035C000043B0B60704700231846FAE7C3680021EC +:1035D000C2690133C3604369134482699342436102 +:1035E00024BF436A4361FEF7FBBA000038B50446C6 +:1035F0000D46E3683BB1236900201A1DA262E2690F +:103600001344E36207E0237A33B929462046FEF7E4 +:10361000D7FA0028EDDA38BD6FF00100FBE70000B3 +:1036200003691960C268013AC260C26913448269C1 +:103630009342036124BF436A036100238362036BE7 +:1036400003B118477047000070B530230D4604469B +:10365000114683F31188866A2EB9FFF7C7FF10B1B0 +:1036600086F3118870BDA36A1D70A36AE26A0133F4 +:103670009342A36204D3E16920460439FFF7D0FFE7 +:10368000002080F31188EDE72DE9F84F04460D4640 +:10369000904699464FF0300A8AF311880026B346C7 +:1036A000A76A4FB949462046FFF7A0FF20B187F32C +:1036B00011883046BDE8F88FD4E90A073A1AA8EB1A +:1036C0000607974228BF1746402F1BD905F1400334 +:1036D00055F8042B9D4240F8042BF9D1A36A4036DB +:1036E0004033A362D4E90A239A4204D3E169204615 +:1036F0000439FFF795FF8BF311884645D9D28AF339 +:103700001188CDE729463A46EEF736FEA36A3D44D6 +:103710003E443B44A362E5E7D0E904239A4217D133 +:10372000C3689BB1836A8BB1043B9B1A0ED01360B4 +:10373000C368013BC360C3691A4483699A4202614A +:1037400024BF436A03610023836201231846704744 +:103750000023FBE700F04EBA014B586A704700BFE8 +:10376000000C0040034B002258631A610222DA6009 +:10377000704700BF000C0040014B0022DA60704728 +:10378000000C0040014B5863704700BF000C004024 +:10379000024B034A1A60034A5A607047707F002048 +:1037A0002080002000000220074B494210B55C68D1 +:1037B000201A08401968821A8A4203D3A24201D80B +:1037C0005A6010BD0020FCE7707F002008B5302350 +:1037D00083F31188FFF7E8FF002383F3118808BD06 +:1037E0000448054B03600023C0E901330C30FDF7AA +:1037F00051BF00BF787F0020CD370108CB1D083AAC +:1038000023F00703591A521A10B4D2080024C0E951 +:10381000004384600C301C605A605DF8044BFDF777 +:1038200039BF00002DE9F74F364FCD1D88460028DF +:1038300018BF0746082A4FEAD50538BF082207F106 +:103840000C003C1D91460190FDF766FF019809F1BF +:103850000701C9F1000E2246246864B9FDF788FF0C +:103860003B68CBB308224946E8009847044698B322 +:1038700040E9027830E004EB010CD4F804A00CEA33 +:103880000E0C0AF10106ACF1080304EBC6069E42D9 +:10389000E1D9A6EB0C0CB5EBEC0F4FEAEC0BDAD848 +:1038A0009C421DD204F10802AB45A3EB02024FEA91 +:1038B000E202626009D9691CED4303EBC1025D4479 +:1038C0005560256843F8315022601C46C3F80480D7 +:1038D00044F8087BFDF74CFF204603B0BDE8F08FAD +:1038E000AA45216802D111602346EEE7013504EBB9 +:1038F000C50344F8351003F10801761AF6105E602E +:103900001360F1E7787F002073B50446A0F1080545 +:1039100050F8080C54F8043C061D0C300733019095 +:10392000DB0844F8043CFDF7F7FE334601989E425D +:103930001A6801D0AB4228D20AB1954225D244F888 +:10394000082C54F8042C1D60013254F8081C05EBB7 +:10395000C206B14206D14E68324444F8042C0A68CB +:1039600044F8082C5E68711C03EBC1018D4207D13D +:1039700054F8042C013232445A6054F8082C1A606E +:1039800002B0BDE87040FDF7F3BE1346CFE700007C +:10399000F0B5174687B008220E461D46FFF742FFD6 +:1039A0000446C0B10C9B344404930D9BCDE90070D8 +:1039B00005933023CDE9024583F311886846FEF76D +:1039C00089F801230021044680F82530FDF78AFF9D +:1039D000002383F31188204607B0F0BDFEE7000006 +:1039E00070B51E4B0025044686B058600E46056330 +:1039F0008163FBF7C9FE04F12803A5606563C4E990 +:103A00000A3304F11003C4E904334FF0FF33C4E96F +:103A10000044C4E90635FFF79FFE2B46024604F139 +:103A20003C012046C4E9082380230D4AE567FEF7E0 +:103A300037F87368E0600B4A03620123009280F854 +:103A400024306846F26801923269CDE90223064BC0 +:103A5000CDE90435FEF758F806B070BD00620020CD +:103A6000CC860108C4860108DD390108024A536B7F +:103A700018435063704700BF485F00204B684360A5 +:103A80008B688360CB68C3600B6943614B690362D9 +:103A90008B6943620B6803607047000008B53C4BBC +:103AA00040F2FF713B48D3F888200A43C3F88820CE +:103AB000D3F8882022F4FF6222F00702C3F888209E +:103AC000D3F88830344B1A6C0A431A649A6E0A434E +:103AD0009A66324A9B6E1146FFF7D0FF00F5806070 +:103AE00002F11C01FFF7CAFF00F5806002F1380106 +:103AF000FFF7C4FF00F5806002F15401FFF7BEFF3D +:103B000000F5806002F17001FFF7B8FF00F58060FA +:103B100002F18C01FFF7B2FF00F5806002F1A8010D +:103B2000FFF7ACFF00F5806002F1C401FFF7A6FFCC +:103B300000F5806002F1E001FFF7A0FF00F5806072 +:103B400002F1FC01FFF79AFF02F58C7100F580602D +:103B5000FFF794FF00F010F9114BD3F8902242F0D8 +:103B60000102C3F89022D3F8942242F00102C3F874 +:103B700094220522C3F898204FF06052C3F89C208D +:103B8000084AC3F8A020BDE80840FEF7EFBD00BF1B +:103B9000004402580000025800450258F886010807 +:103BA00000ED00E01F00080308B500F0C3FAFDF7C0 +:103BB00041FF0D4BDA6B42F04002DA635A6E22F09D +:103BC00040025A665B6E094B1A6842F008021A609E +:103BD0001A6842F004021A60FEF710FEFEF796FC27 +:103BE000BDE80840FEF716BA004502580018024822 +:103BF000704700000E4B9A6C42F008029A641A6FEC +:103C000042F008021A670B4A1B6FD36B43F008039C +:103C1000D363C722084B9A624FF0FF32DA62002268 +:103C20009A615A63DA605A6001225A611A607047D9 +:103C3000004502580010005C000C0040094A08B51D +:103C40001169D3680B40D9B29B076FEA010111617A +:103C500007D5302383F31188FDF716FF002383F384 +:103C6000118808BD000C0040044BDA6B0243DA6394 +:103C70005A6E104358665B6E704700BF004502588D +:103C800008B53C4B4FF0FF31D3F8802062F0004282 +:103C9000C3F88020D3F8802002F00042C3F88020CF +:103CA000D3F88020D3F88420C3F88410D3F884207C +:103CB0000022C3F88420D3F88400D86F40F0FF407E +:103CC00040F4FF0040F4DF4040F07F00D867D86F39 +:103CD00020F0FF4020F4FF0020F4DF4020F07F00C0 +:103CE000D867D86FD3F888006FEA40506FEA505019 +:103CF000C3F88800D3F88800C0F30A00C3F888002E +:103D0000D3F88800D3F89000C3F89010D3F890004F +:103D1000C3F89020D3F89000D3F89400C3F894101F +:103D2000D3F89400C3F89420D3F89400D3F8980003 +:103D3000C3F89810D3F89800C3F89820D3F89800E7 +:103D4000D3F88C00C3F88C10D3F88C00C3F88C2007 +:103D5000D3F88C00D3F89C00C3F89C10D3F89C10C7 +:103D6000C3F89C20D3F89C30FCF712F9BDE808405A +:103D700000F0B4B90044025808B50122504BC3F812 +:103D80000821504B5A6D42F002025A65DA6F42F038 +:103D90000202DA670422DB6F4B4BDA605A68910447 +:103DA000FCD54A4A1A6001229A60494ADA60002228 +:103DB0001A614FF440429A61434B9A699204FCD5D0 +:103DC0001A6842F480721A60424B1A6F12F4407FF4 +:103DD00004D04FF480321A6700221A671A6842F042 +:103DE00001021A603B4B1A685007FCD500221A6189 +:103DF0001A6912F03802FBD1012119604FF080419D +:103E000059605A67344ADA62344A1A611A6842F4CD +:103E100080321A602F4B1A689103FCD51A6842F45D +:103E200080521A601A689204FCD52D4A2D499A6274 +:103E300000225A63196301F57C01DA6301F5E77129 +:103E400099635A64284A1A64284ADA621A6842F066 +:103E5000A8521A601F4B1A6802F02852B2F1285F6C +:103E6000F9D148229A614FF48862DA6140221A62DD +:103E70001F4ADA641F4A1A651F4A5A651F4A9A6523 +:103E800032231F4A1360136803F00F03022BFAD189 +:103E9000104A136943F003031361136903F03803F5 +:103EA000182BFAD14FF00050FFF7DEFE4FF08040A4 +:103EB000FFF7DAFE4FF00040BDE80840FFF7D4BE40 +:103EC00000800051004502580048025800C000F030 +:103ED00004000001004402580000FF01008890081F +:103EE0003220600063020901470E0508DD0BBF01A7 +:103EF00020000020000001100910E0000001011066 +:103F0000002000524FF0B04208B5D2F8883003F0DC +:103F10000103C2F8883023B1044A13680BB150681A +:103F20009847BDE80840FBF757BC00BF987F0020CA +:103F30004FF0B04208B5D2F8883003F00203C2F85F +:103F4000883023B1044A93680BB1D0689847BDE824 +:103F50000840FBF741BC00BF987F00204FF0B04203 +:103F600008B5D2F8883003F00403C2F8883023B1D2 +:103F7000044A13690BB150699847BDE80840FBF744 +:103F80002BBC00BF987F00204FF0B04208B5D2F89C +:103F9000883003F00803C2F8883023B1044A9369DB +:103FA0000BB1D0699847BDE80840FBF715BC00BFCE +:103FB000987F00204FF0B04208B5D2F8883003F067 +:103FC0001003C2F8883023B1044A136A0BB1506A57 +:103FD0009847BDE80840FBF7FFBB00BF987F002073 +:103FE0004FF0B04310B5D3F8884004F47872C3F8AA +:103FF0008820A30604D5124A936A0BB1D06A984769 +:10400000600604D50E4A136B0BB1506B984721061E +:1040100004D50B4A936B0BB1D06B9847E20504D5DE +:10402000074A136C0BB1506C9847A30504D5044A9A +:10403000936C0BB1D06C9847BDE81040FBF7CCBB3C +:10404000987F00204FF0B04310B5D3F8884004F4B7 +:104050007C42C3F88820620504D5164A136D0BB163 +:10406000506D9847230504D5124A936D0BB1D06D5E +:104070009847E00404D50F4A136E0BB1506E984771 +:10408000A10404D50B4A936E0BB1D06E984762041D +:1040900004D5084A136F0BB1506F9847230404D519 +:1040A000044A936F0BB1D06F9847BDE81040FBF7FF +:1040B00093BB00BF987F002008B50348FCF786FB40 +:1040C000BDE80840FBF788BBE05A002008B5FFF7C1 +:1040D000B5FDBDE80840FBF77FBB0000062108B531 +:1040E0000846FCF7F9FB06210720FCF7F5FB062143 +:1040F0000820FCF7F1FB06210920FCF7EDFB062167 +:104100000A20FCF7E9FB06211720FCF7E5FB062156 +:104110002820FCF7E1FB09217A20FCF7DDFB0721D1 +:104120003220FCF7D9FB0C215220BDE80840FCF7F7 +:10413000D3BB000008B5FFF7A3FD00F00DF8FCF7B6 +:10414000D7FDFCF7A5FFFCF777FEFFF751FDBDE8B3 +:104150000840FFF7FFBA00000023054A1946013363 +:10416000102BC2E9001102F10802F8D1704700BF1C +:10417000987F00200B460146184600F005B8000065 +:104180000A22002100F072B910B5054C13462CB17B +:104190000A4601460220AFF3008010BD2046FCE72E +:1041A00000000000014B1868704700BF8C230020FE +:1041B00010B501390244904201D1002005E0037896 +:1041C00011F8014FA34201D0181B10BD0130F2E7D6 +:1041D0002DE9F041A3B1C91A17780144044603F14F +:1041E000FF3C8C42204601D9002009E00578BD4201 +:1041F00004F10104F5D10CEB0405D618A54201D158 +:10420000BDE8F08115F8018D16F801EDF045F5D007 +:10421000E7E70000164B10B51C68A36BB3B9182074 +:10422000FEF76CF9A06328B90246124B12484E21E2 +:1042300000F0A2F9114A124BC0E90023114B836030 +:104240000B23838101220023C0E90423A46B0E4ABF +:10425000206963690D49424301FB0322A0FB010170 +:10426000431C42EB0100C4E9043020F0004010BDC3 +:104270008C230020348901084B8901080E33CDAB13 +:1042800034126DE6ECDE05002DF451582D7F954C6F +:10429000C9B2034610F8012B1AB18A42F9D1184667 +:1042A0007047002918BF0023F9E70000034611F802 +:1042B000012B03F8012B002AF9D1704710B5013901 +:1042C000034632B111F8014F03F8014B013A002CBB +:1042D000F7D11A440021934200D110BD03F8011B0D +:1042E000F9E700000A7870B56AB970BD9A4209D141 +:1042F0000C46054614F8013F002BF6D015F8016F67 +:104300009E42F7D001300378002BEFD11846ECE73E +:10431000F0B508B9106888B10446204614F8015B6E +:104320000F4617F8016B1EB965B91560284605E000 +:10433000B542F6D1002BF0D114600370F0BD1C46DD +:104340000CE015B914F8013B0E4616F8015BAB42C0 +:10435000F7D1002BF3D0002304F8013C1460EDE703 +:104360000123FFF7D5BF0000012B2DE9F04701D055 +:10437000242B06D9FFF716FF162303600020BDE8A3 +:10438000F087DFF8E4C00D462E4615F8014B14F80F +:104390000C7017F00807F7D12D2C32D12C7801279B +:1043A000B51C002B5BD0102B09D1302C07D12C78F9 +:1043B00004F0DF04582C4DD16C781023023507F13E +:1043C000004808F1FF384FF0000CB8FBF3F96646DF +:1043D00003FB198AA4F1300EBEF1090F16D87446FA +:1043E000A34224DDBCF1000F1EDBB1451CD301D17B +:1043F000A24519DB06FB03464FF0010C15F8014BF3 +:10440000E8E72B2C04BF2C78B51CCAE7A4F1410EB9 +:10441000BEF1190F01D8373CE2E7A4F1610EBEF1FD +:10442000190F04D8573CDBE74FF0FF3CE6E7BCF13F +:10443000000F05DA22230360464642B930469EE764 +:1044400007B17642002AF9D0BCF1000F00D0691EF6 +:104450001160F3E73024002BB1D10823AFE7302CF3 +:10446000A5D00A23ABE700BF2D88010813460A46F2 +:10447000014602480068FFF777BF00BF8C23002089 +:104480002DE9F043364F86460D46284615F8014B78 +:10449000E65D16F00806F8D12D2C2FD12C780126D8 +:1044A000851C002B57D0102B09D1302C07D1287830 +:1044B00000F0DF00582849D16C78102302354FF006 +:1044C000FF380027B8FBF3F803FB08F96FEA090986 +:1044D0003846A4F1300CBCF1090F14D86446A3424D +:1044E00022DD002F1DDB80451BD301D1A14518DB48 +:1044F00000FB0340012715F8014BEAE72B2C04BF12 +:104500002C78851CCDE7A4F1410CBCF1190F01D822 +:10451000373CE4E7A4F1610CBCF1190F04D8573C17 +:10452000DDE74FF0FF37E6E7002F07DA2223CEF86A +:1045300000304FF0FF3032B9BDE8F08306B14042A1 +:10454000002AF9D007B1691E1160F5E73024002B6D +:10455000B5D10823B3E7302CA9D00A23AFE700BFB9 +:104560002D88010813460A46014602480068FFF7F5 +:1045700087BF00BF8C2300201FB514461A46094B85 +:104580001B680546D8684CB1074B0091CDE9013452 +:1045900006492B4600F00EF800F0CCFB044B1C46FD +:1045A000F3E700BF8C230020C8890108D5890108E2 +:1045B0003C5801080EB403B5014603AB054853F857 +:1045C000042B0068019300F031F802B05DF804EBB1 +:1045D00003B070478C2300209368013B002B10B47C +:1045E000936008DA9469A34201DB0A2903D15DF8DC +:1045F000044B00F0DFBA1368581C106019700846AD +:104600005DF8044B70470000F8B506460F461446A7 +:10461000D518AC4201D1002007E014F8011B3A463E +:104620003046FFF7D9FF431CF3D1F8BD2DE9F04F19 +:104630000D469DB014469846064618B183690BB9DD +:1046400000F09AFC894B9D421BD175686B6ED907AF +:1046500005D4AB899A0502D4A86D00F02DFDAB8975 +:104660001B0701D52B69EBB92946304600F0F4FA57 +:10467000C0B16B6EDC070ED54FF0FF301DB0BDE84A +:10468000F08F7B4B9D4201D1B568DFE7794B9D42AE +:1046900008BFF568DAE7AB899805EDD4A86D00F09E +:1046A0000DFDE9E70023099320238DF82930CDF88B +:1046B0000C803023DFF8C0818DF82A304FF00109DB +:1046C00023469A4613F8012B0AB1252AF9D1BAEBF1 +:1046D000040B0BD05B46224629463046FFF794FF79 +:1046E000013000F0AA80099A5A4409929AF80030E1 +:1046F000002B00F0A28000234FF0FF32CDE905230C +:104700000AF1010A049307938DF853301A93544623 +:10471000052214F8011B5848EBF796FE049AD8B905 +:10472000D10644BF20238DF85330130744BF2B23F9 +:104730008DF853309AF800302A2B15D0079A54463A +:1047400000204FF00A0C214611F8013B303B092BA9 +:104750004ED9B0B1079214E0A0EB080309FA03F3B5 +:1047600013430493A246D2E7039B191D1B680391D0 +:10477000002BBBBF5B4242F0020207930793B8BF16 +:10478000049223782E2B0CD163782A2B35D1039BEE +:104790001A1D1B680392002BB8BF4FF0FF33023481 +:1047A0000593DFF8E4A0217803225046EBF74CFE96 +:1047B00040B14023A0EB0A0003FA00F0049B03433E +:1047C0000134049314F8011B2C488DF8281006229C +:1047D000EBF73AFE00283FD0294B1BBB039B073366 +:1047E00023F0070308330393099B3B44099367E7CE +:1047F0000CFB02320C460120A5E70023013405938F +:1048000019464FF00A0C204610F8012B303A092ABD +:1048100003D9002BC5D00591C3E70CFB0121044649 +:104820000123F0E703AB00932A46164B04A9304658 +:10483000AFF300800746781CD6D16B6ED90705D43C +:10484000AB899A0502D4A86D00F038FCAB895B06F1 +:104850003FF512AF099811E703AB00932A46094BC5 +:1048600004A9304600F080F8E4E700BF4C8A010854 +:104870006C8A01082C8A0108048A01080E8A010842 +:1048800000000000094601080A8A01082DE9F047E6 +:10489000164699468A680B69DDF820809342B8BFB6 +:1048A0001346336091F8432007460C460AB10133A2 +:1048B00033602368990642BF33680233336025684A +:1048C00015F0060506D104F1190AE36832689B1A4F +:1048D000AB4226DC94F84320131E226818BF012344 +:1048E00092062BD404F1430249463846C0470130B2 +:1048F0001ED02368E568326803F00603042B08BF66 +:10490000AD1AA36822690CBF25EAE575002593421C +:10491000C4BF9B1AED1800261A34B5421AD10020E4 +:1049200008E00123524649463846C047013003D1CA +:104930004FF0FF30BDE8F0870135C6E7E1185A1C9B +:10494000302081F84300224494F8451082F8431047 +:104950000233C7E70123224649463846C0470130A3 +:10496000E6D00136D9E700002DE9FF470F7E0C9D08 +:10497000782F914680460C469A4601F1430207D8AB +:10498000622F0AD8002F00F0D880582F00F0A380A3 +:1049900004F1420584F842703AE0A7F16303152B55 +:1049A000F6D801A151F823F0014A0108154A01087F +:1049B000914901089149010891490108914901086B +:1049C000154A0108914901089149010891490108D6 +:1049D00091490108214B0108454A0108034B010890 +:1049E0009149010891490108434B01089149010887 +:1049F000454A010891490108914901080B4B0108FA +:104A00002B681A1D1B682A6004F1420584F84230A5 +:104A10000123A3E020682968060601F104030AD5F2 +:104A20000E682B60002E03DA2D23764284F8433083 +:104A30005E480A2319E00E682B6010F0400F18BF83 +:104A400036B2EFE72B682068191D2960010601D5F1 +:104A50001E6802E04606FBD51E8854486F2F0CBF27 +:104A600008230A23002184F843106568A560002DFF +:104A7000A2BF216821F0040121600EB9002D4DD0A4 +:104A80001546B6FBF3F103FB1167C75D05F8017D21 +:104A90003746BB420E46F4D9082B0BD12368DE07FC +:104AA00008D5236961689942DEBF302305F8013CCF +:104AB00005F1FF35521B2261CDF800A04B4603AA39 +:104AC00021464046FFF7E2FE01304CD14FF0FF3067 +:104AD00004B0BDE8F087354881F84570296823683F +:104AE00051F8046B29601D0614D5DF0744BF43F05D +:104AF000200323601EB9236823F0200323601023C2 +:104B0000B0E7236843F0200323607823284884F823 +:104B10004530E3E7590648BFB6B2E6E71546BBE7BE +:104B20002B6826686169181D286035061B6801D549 +:104B3000196002E07006FBD5198000232361154639 +:104B4000BAE72B681A1D2A601D6862680021284692 +:104B5000EBF77AFC08B1401B6060636823610023B7 +:104B600084F84330A8E723692A4649464046D0479F +:104B70000130ABD023689B0713D4E068039B9842B5 +:104B8000B8BF1846A4E70123324649464046D047FD +:104B900001309BD00135E36803995B1AAB42F2DC2C +:104BA000EBE7002504F11906F5E700BF2C860108A4 +:104BB000188A0108F8B50E461446054618B18369EF +:104BC0000BB900F0D9F9214B9C422BD16C68A36939 +:104BD000A360A3891A072FD523696BB323692068C3 +:104BE000C01A6369F6B28342374604DC2146284680 +:104BF00000F02EF930BBA368013BA36023685A1C68 +:104C000022601E7063690130834204D0A389DB07F0 +:104C100006D50A2E04D12146284600F019F988B994 +:104C20003846F8BD0A4B9C4201D1AC68CFE7094B2E +:104C30009C4208BFEC68CAE72146284600F00CF801 +:104C40000028CBD04FF0FF37EAE700BF4C8A0108BD +:104C50006C8A01082C8A0108324B70B51D68064623 +:104C60000C4625B1AB6913B9284600F085F92E4BE7 +:104C70009C420FD16C68A389B4F90C2019072CD47D +:104C8000DD0611D40923336042F04003A3814FF0C5 +:104C9000FF303EE0254B9C4201D1AC68EBE7244B52 +:104CA0009C4208BFEC68E6E7580712D5616B41B13A +:104CB00004F14403994202D03046FDF79BFC0023E7 +:104CC0006363A38923F02403A38100236360236922 +:104CD0002360A38943F00803A38123694BB9A38907 +:104CE00003F42073B3F5007F03D02146304600F073 +:104CF0000DFAA089B4F90C2010F001030AD00023AA +:104D0000A36063695B42A361236943B910F080002B +:104D1000BAD170BD810758BF6369A360F4E7002072 +:104D2000F7E700BF8C2300204C8A01086C8A010839 +:104D30002C8A010808B5062000F050FA0120FDF782 +:104D4000B7F800008A892DE9F041054610070C46A6 +:104D500058D44B68002B05DC0B6C002B02DC0020C8 +:104D6000BDE8F081E66A002EF9D0002312F48052EB +:104D70002F682B6032D0606DA3895A0705D5636810 +:104D8000C01A636B0BB1236CC01A00230246E66A9B +:104D9000216A2846B047431CA38906D129681D29EA +:104DA0002CD82A4ACA40D60728D500226260D904E6 +:104DB0002269226004D5421C01D12B6803B96065C9 +:104DC000616B2F600029CAD004F14403994202D0DC +:104DD0002846FDF70FFC00206063C1E7216A01232C +:104DE0002846B047411CC7D12B68002BC4D01D2BCF +:104DF00001D0162B01D12F60B1E7A38943F0400306 +:104E0000A381ADE70F69002FA9D093070E6808BFF3 +:104E10004B690F6018BF0023A6EB07088B60B8F141 +:104E2000000F9CDD216AA66A43463A462846B047F1 +:104E3000002806DCA38943F04003A3814FF0FF3034 +:104E40008EE70744A8EB0008E9E700BF0100402017 +:104E500038B50B6905460C4613B90025284638BD00 +:104E600018B183690BB900F087F8144B9C421BD131 +:104E70006C68B4F90C30002BEFD0626ED00704D40C +:104E8000990502D4A06D00F017F928462146FFF7D6 +:104E900059FF636EDA070546E0D4A3899B05DDD48C +:104EA000A06D00F00BF9D9E7054B9C4201D1AC682D +:104EB000DFE7044B9C4208BFEC68DAE74C8A010844 +:104EC0006C8A01082C8A0108002310B50446C0E949 +:104ED0000033C0E90433836081814366C28183610A +:104EE000194608225C30EDF779FA054B6362054BF1 +:104EF000A362054BE362054B2462236310BD00BF30 +:104F000015520108395201087152010895520108E1 +:104F1000014900F0AFB800BF514E010870B56822DA +:104F20004D1E55430E4605F17401FDF75FFB044627 +:104F300040B10021C0E900160C30A06005F1680204 +:104F4000EDF74CFA204670BD014800F0B5B800BF3F +:104F500018800020014800F0B1B800BF1880002080 +:104F6000014800F0A9B800BF19800020014800F0F6 +:104F7000A5B800BF1980002010B50446FFF7F0FF68 +:104F8000A3691BB1BDE81040FFF7F0BFC4E91233BD +:104F90002365134B134A1B68A262A34204BF01237B +:104FA000A361204600F020F86060204600F01CF865 +:104FB000A060204600F018F80022E060042160683C +:104FC000FFF782FFA06801220921FFF77DFFE0685B +:104FD00002221221FFF778FF0123A361D2E700BF6D +:104FE00030890108114F0108F8B50746FFF7ACFFFB +:104FF0001E4B1E68B36913B93046FFF7BDFF483634 +:10500000D6E90134013B03D533680BB33668F7E7C3 +:10501000B4F90C50D5B9164BE36004F1580065663D +:1050200000F048F8FFF796FFC4E90155C4E90455BC +:105030002560A5610822294604F15C00EDF7CEF950 +:10504000C4E90D55C4E912552046F8BD6834D9E7C6 +:1050500004213846FFF762FF044630600028D5D1AE +:10506000FFF778FF0C233B60EEE700BF30890108B3 +:105070000100FFFF2DE9F8430646884600F1480489 +:105080000027D4E90195B9F1010905D52468002C60 +:10509000F7D13846BDE8F883AB89012B07D9B5F9BC +:1050A0000E30013303D029463046C04707436835E8 +:1050B000E9E70000704700007047000070470000FB +:1050C00070B50E46B1F90E10002996B014461D4673 +:1050D00008DAB6F90C3000222A601A0610D44FF410 +:1050E00080630EE06A4600F0FBF80028F1DB019ACD +:1050F00002F47042A2F500535A425A412A60EEE788 +:1051000040230020236016B070BD00008B8973B56A +:105110009D0706460C4607D504F14703236023612B +:105120000123636102B070BD01AB6A46FFF7C8FF9F +:10513000009905463046FDF759FA48B9B4F90C30E4 +:105140009A05EFD423F0030343F00203A381E3E7BE +:105150000D4BB362A389206043F08003A381009BC1 +:105160006361019B20615BB1B4F90E10304600F021 +:10517000C9F828B1A38923F0030343F00103A381F5 +:10518000A0890543A581CDE7114F01081F2938B536 +:1051900004460D4604D9162303604FF0FF3038BD96 +:1051A000426C12B152F821304BB9204600F030F871 +:1051B0002A4601462046BDE8384000F017B8012BCA +:1051C0000AD0591C03D1162303600120E7E700240D +:1051D00042F82540284698470020E0E7024B014668 +:1051E0001868FFF7D3BF00BF8C23002038B5074DE8 +:1051F00000230446084611462B60FCF75DFE431C65 +:1052000002D12B6803B1236038BD00BF1C80002091 +:10521000FCF74CBE10B50C46B1F90E1000F094F836 +:105220000028ABBF636DA3891B1823F48053ACBF68 +:105230006365A38110BD00002DE9F0411F468B89F5 +:10524000DB0505460C46164605D5B1F90E100223BE +:10525000002200F067F8A389B4F90E1023F48053FC +:10526000A38132463B462846BDE8F04100F016B81F +:1052700010B50C46B1F90E1000F054F8431CA38988 +:1052800015BF606523F4805343F48053A38118BF96 +:10529000A38110BDB1F90E1000F012B838B5074D5A +:1052A00004460846114600222A601A46FCF7F2FD21 +:1052B000431C02D12B6803B1236038BD1C80002041 +:1052C00038B5064D0023044608462B60FCF7E6FD82 +:1052D000431C02D12B6803B1236038BD1C80002021 +:1052E00038B5074D00230446084611462B60FCF7ED +:1052F000D7FD431C02D12B6803B1236038BD00BF2A +:105300001C80002038B5064D0023044608462B605B +:10531000FCF7CAFD431C02D12B6803B1236038BDE2 +:105320001C80002038B5074D04460846114600226F +:105330002A601A46FCF7ACFD431C02D12B6803B16E +:10534000236038BD1C80002038B5074D0446084650 +:10535000114600222A601A46FCF796FD431C02D132 +:105360002B6803B1236038BD1C8000204669726D34 +:1053700077617265204572726F723A2025640A0067 +:105380004669726D77617265204F4B3A20256C64D7 +:105390002E256C642E256C780A0000006F72672E33 +:1053A0006172647570696C6F742E437562654E6FBF +:1053B00064652D45544800004950202573000000C5 +:1053C00043323A41463A35313A30333A43463A3439 +:1053D00036003139322E3136382E312E3130300010 +:1053E0003139322E3136382E312E31003235352ECC +:1053F0003235352E3235352E30004661696C6564A4 +:1054000020746F20696E697469616C697365206EC0 +:105410006574696600000000302E302E302E30009A +:105420007765625F72657175657374006E65747718 +:105430006F726B007765625F7365727665720000EC +:1054400045726173696E67202E2E2E00466C617363 +:1054500068696E67202575252500466C6173682094 +:10546000646F6E653A204F4B003C68746D6C3E3C37 +:10547000686561643E3C6D65746120687474702D6C +:1054800065717569763D2272656672657368222062 +:10549000636F6E74656E743D22343B2075726C3D93 +:1054A0002F223E3C2F686561643E3C626F64793E0A +:1054B000466C617368204F4B2C20626F6F74696E6D +:1054C000673C2F626F64793E3C2F68746D6C3E00C0 +:1054D000466C61736820646F6E653A204552523A9B +:1054E00025750000485454502F312E312032303071 +:1054F000204F4B0D0A436F6E74656E742D54797096 +:10550000653A20746578742F68746D6C0D0A436F6A +:105510006E6E656374696F6E3A20636C6F73650DB0 +:105520000A0D0A00504F5354202F20000D0A436FDC +:105530006E74656E742D4C656E6774683A000D0A62 +:10554000636F6E74656E742D6C656E6774683A0077 +:10555000474554202F626F6F746C6F616465725F92 +:105560007374617475732E68746D6C0047455420B4 +:105570002F5245424F4F5400696E6465782E68740F +:105580006D6C003C68746D6C3E3C686561643E3CCB +:105590006D65746120687474702D65717569763DF0 +:1055A00022726566726573682220636F6E74656E21 +:1055B000743D22323B2075726C3D2F223E3C2F6899 +:1055C0006561643E3C2F68746D6C3E00424F4152F1 +:1055D000445F4E414D4500424F4152445F494400B3 +:1055E0003130373900464C4153485F53495A4500E2 +:1055F000323034380000000053544D333248373FC6 +:105600003F3F0053544D3332483733782F37327889 +:105610000053544D3332483734332F3735332F3717 +:105620003530000001105A000310590001205800C5 +:105630000320560000002110422063308440A55012 +:10564000C660E770088129914AA16BB18CC1ADD1C8 +:10565000CEE1EFF13112100273325222B552944270 +:10566000F772D662399318837BB35AA3BDD39CC318 +:10567000FFF3DEE36224433420040114E664C774BC +:10568000A44485546AA54BB528850995EEE5CFF568 +:10569000ACC58DD55336722611163006D776F66610 +:1056A0009556B4465BB77AA719973887DFF7FEE7B8 +:1056B0009DD7BCC7C448E5588668A77840086118DC +:1056C00002282338CCC9EDD98EE9AFF94889699908 +:1056D0000AA92BB9F55AD44AB77A966A711A500AB0 +:1056E000333A122AFDDBDCCBBFFB9EEB799B588B58 +:1056F0003BBB1AABA66C877CE44CC55C222C033CFC +:10570000600C411CAEED8FFDECCDCDDD2AAD0BBDA7 +:10571000688D499D977EB66ED55EF44E133E322E4F +:10572000511E700E9FFFBEEFDDDFFCCF1BBF3AAFF7 +:10573000599F788F8891A981CAB1EBA10CD12DC155 +:105740004EF16FE18010A100C230E32004502540EB +:1057500046706760B9839893FBA3DAB33DC31CD34B +:105760007FE35EF3B1029012F322D232354214523B +:1057700077625672EAB5CBA5A89589856EF54FE597 +:105780002CD50DC5E234C324A0148104667447648B +:1057900024540544DBA7FAB79987B8975FE77EF7EB +:1057A0001DC73CD7D326F2369106B01657667676DB +:1057B000154634564CD96DC90EF92FE9C899E989B7 +:1057C0008AB9ABA94458654806782768C018E1082B +:1057D0008238A3287DCB5CDB3FEB1EFBF98BD89B8B +:1057E000BBAB9ABB754A545A376A167AF10AD01A7B +:1057F000B32A923A2EFD0FED6CDD4DCDAABD8BADD7 +:10580000E89DC98D267C076C645C454CA23C832CCA +:10581000E01CC10C1FEF3EFF5DCF7CDF9BAFBABF2A +:10582000D98FF89F176E367E554E745E932EB23E1A +:10583000D10EF01E40A2E4F1646891060041A3E598 +:10584000F2656992070000004C5749503A202573D1 +:105850003A2025733A25750043414E5F4D4341532D +:105860005400000043414E5F4D434153543A20736E +:1058700074617274696E670043414E5F4D434153DA +:10588000545B25755D3A206661696C656420746FB0 +:105890002063726561746520736F636B6574004388 +:1058A000414E5F4D434153545B25755D3A2066611F +:1058B000696C656420746F20636F6E6E656374003D +:1058C00043414E5F4D434153545B25755D3A20661D +:1058D00061696C656420746F2072656769737465B3 +:1058E000720043414E5F4D434153545B25755D3A11 +:1058F000206661696C656420746F20616C6C6F63F5 +:105900006174652062756666657273003233392E84 +:1059100036352E38322E30002E2E2F2E2E2F6D6F34 +:1059200064756C65732F6C7769702F7372632F6366 +:105930006F72652F6E657469662E63006E6574699B +:10594000665F69737375655F7265706F7274733AC1 +:1059500020696E76616C6964206E6574696600000A +:10596000696E76616C696420706F696E746572002F +:105970006E65746966206D75737420626520213DC3 +:10598000204E554C4C00000073696E676C65206EAC +:105990006574696620616C726561647920736574F1 +:1059A000000000002E2E2F2E2E2F6D6F64756C655B +:1059B000732F6C7769702F7372632F636F72652F0B +:1059C000706275662E630000696E76616C69642092 +:1059D000706275665F74797065000000706275664C +:1059E0005F667265653A20702D3E726566203E20C6 +:1059F000300070632D3E637573746F6D5F66726502 +:105A0000655F66756E6374696F6E20213D204E552B +:105A10004C4C00696E76616C69642070627566201A +:105A20007479706500000000504255465F504F4F3A +:105A30004C5F42554653495A45206D757374206238 +:105A40006520626967676572207468616E204D45E4 +:105A50004D5F414C49474E4D454E5400706275664E +:105A60005F616C6C6F633A206572726F6E656F7503 +:105A70007320747970650000706275665F7265618D +:105A80006C6C6F633A207020213D204E554C4C00C9 +:105A9000706275665F7265616C6C6F633A2071202D +:105AA000213D204E554C4C006D656D5F7472696DE3 +:105AB0002072657475726E65642072203D3D204EC3 +:105AC000554C4C006D656D5F7472696D2072657424 +:105AD00075726E6564207220213D20710000000007 +:105AE0007062756620726566206F766572666C6F8F +:105AF00077000000702D3E746F745F6C656E203D02 +:105B00003D20702D3E6C656E20286F66206C6173A1 +:105B100074207062756620696E20636861696E2901 +:105B200000702D3E6E657874203D3D204E554C4CE6 +:105B3000000000006F66667365745F746F203C3D03 +:105B400020705F746F2D3E6C656E006F66667365C6 +:105B5000745F66726F6D203C3D20705F66726F6D82 +:105B60002D3E6C656E000000706275665F636F703D +:105B700079206661696C6564000000002E2E2F2E6E +:105B80002E2F6D6F64756C65732F6C7769702F7332 +:105B900072632F636F72652F7463702E630074637A +:105BA000705F667265653A204C495354454E00005B +:105BB00070636220213D204E554C4C00616363654B +:105BC0007074735F70656E64696E6720213D20306C +:105BD000000000007063622D3E7374617465203DA7 +:105BE0003D204C495354454E202863616C6C6564DC +:105BF00020666F722077726F6E67207063623F2934 +:105C0000000000007463705F7570646174655F729A +:105C100063765F616E6E5F776E643A20696E76615F +:105C20006C696420706362006E65775F7263765F93 +:105C3000616E6E5F776E64203C3D203078666666EC +:105C400066000000646F6E27742063616C6C2074C2 +:105C500063705F72656376656420666F72206C693D +:105C60007374656E2D706362730000007463705FFF +:105C70007365675F636F70793A20696E76616C69EE +:105C80006420736567000000696E76616C6964204A +:105C9000736F636B657420737461746520666F72D3 +:105CA00020726563762063616C6C6261636B0000D7 +:105CB000696E76616C696420736F636B65742073C1 +:105CC0007461746520666F722073656E7420636101 +:105CD0006C6C6261636B0000696E76616C69642054 +:105CE000736F636B657420737461746520666F7283 +:105CF000206572722063616C6C6261636B000000EE +:105D0000696E76616C696420736F636B6574207370 +:105D10007461746520666F7220706F6C6C00000097 +:105D20007463705F6E6578745F6973733A20696E2F +:105D300076616C6964207063620000007463705F58 +:105D40006566665F73656E645F6D73735F6E6574C1 +:105D500069663A20696E76616C6964206473745F69 +:105D6000697000007463705F7063625F72656D6F6D +:105D700076653A20696E76616C69642070636200B2 +:105D80007463705F7063625F72656D6F76653A20F1 +:105D9000696E76616C6964207063626C697374000B +:105DA000756E73656E74207365676D656E747320B0 +:105DB0006C65616B696E6700756E61636B6564200D +:105DC0007365676D656E7473206C65616B696E6772 +:105DD000006F6F736571207365676D656E747320F6 +:105DE0006C65616B696E6700646F6E277420636118 +:105DF0006C6C207463705F61626F72742F74637077 +:105E00005F6162616E646F6E20666F72206C697391 +:105E100074656E2D70636273000000007463705FC0 +:105E20006163636570745F6E756C6C3A20696E7641 +:105E3000616C696420706362000000007463705FCD +:105E40006E657469665F69705F616464725F6368E0 +:105E5000616E6765645F7063626C6973743A206930 +:105E60006E76616C6964206F6C645F61646472005B +:105E70007463705F636C6F73655F73687574646F70 +:105E8000776E3A20696E76616C6964207063620097 +:105E90007063622D3E666C61677320262054465FF6 +:105EA0005258434C4F534544007463705F667265AB +:105EB000655F6C697374656E3A20214C4953544593 +:105EC0004E0000007463705F736C6F77746D723A8C +:105ED00020616374697665207063622D3E7374611E +:105EE000746520213D20434C4F534544007463703A +:105EF0005F736C6F77746D723A2061637469766555 +:105F0000207063622D3E737461746520213D204CC6 +:105F1000495354454E007463705F736C6F77746DB2 +:105F2000723A20616374697665207063622D3E73F6 +:105F30007461746520213D2054494D452D574149D8 +:105F400054007463705F736C6F7774696D723A207C +:105F500070657273697374207469636B696E67200E +:105F60007769746820696E2D666C6967687420644F +:105F7000617461007463705F736C6F7774696D72C4 +:105F80003A2070657273697374207469636B696E0B +:105F900067207769746820656D7074792073656E09 +:105FA0006420627566666572007463705F736C6FFF +:105FB00077746D723A206D6964646C6520746370E7 +:105FC00020213D207463705F6163746976655F7042 +:105FD000636273007463705F736C6F77746D723A91 +:105FE00020666972737420706362203D3D20746383 +:105FF000705F6163746976655F7063627300746378 +:10600000705F736C6F77746D723A2054494D452DF3 +:1060100057414954207063622D3E7374617465204A +:106020003D3D2054494D452D5741495400746370FE +:106030005F736C6F77746D723A206D6964646C6520 +:106040002074637020213D207463705F74775F70EB +:10605000636273007463705F736C6F77746D723A10 +:1060600020666972737420706362203D3D20746302 +:10607000705F74775F706362730000000102030455 +:106080000506070707070707070000005051002013 +:106090004C510020445100205C51002003060C1894 +:1060A000306078002E2E2F2E2E2F6D6F64756C654C +:1060B000732F6C7769702F7372632F636F72652F04 +:1060C0007463705F696E2E63007463705F6F6F73CB +:1060D0005F696E736572745F7365676D656E743A40 +:1060E00020696E76616C69642063736567000000E7 +:1060F0007463705F70617273656F70743A20696E5B +:1061000076616C6964207063620000007463705F84 +:10611000696E7075745F64656C617965645F636CEA +:106120006F73653A20696E76616C69642070636292 +:10613000000000007063622D3E736E645F717565D0 +:1061400075656C656E203E3D20706275665F636CA0 +:10615000656E286E6578742D3E7029007463705FDB +:10616000726563656976653A2076616C6964207151 +:1061700075657565206C656E677468007463705F23 +:10618000726563656976653A20696E76616C6964EB +:1061900020706362007463705F7265636569766521 +:1061A0003A2077726F6E6720737461746500696E50 +:1061B0007365672E7020213D204E554C4C00696E52 +:1061C00073616E65206F6666736574210070627519 +:1061D0006620746F6F2073686F727421007463702F +:1061E0005F726563656976653A207365676D656E94 +:1061F00074206E6F74207472696D6D656420636FB6 +:1062000072726563746C7920746F207263765F7745 +:106210006E64007463705F726563656976653A20C9 +:106220007365676D656E74206E6F74207472696D2E +:106230006D656420636F72726563746C7920746F2E +:10624000206F6F736571207175657565007463707B +:106250005F726563656976653A207463706C656E1C +:10626000203E207263765F776E64007463705F72A5 +:106270006563656976653A206F6F73657120746335 +:10628000706C656E203E207263765F776E640000EE +:106290007463705F696E7075743A20696E76616CB4 +:1062A0006964207062756600702D3E6E657874209A +:1062B000213D204E554C4C00702D3E6C656E203DAE +:1062C0003D203000702D3E746F745F6C656E203D14 +:1062D0003D20702D3E6E6578742D3E746F745F6C3A +:1062E000656E007463705F696E7075743A206163E7 +:1062F00074697665207063622D3E737461746520E5 +:10630000213D20434C4F534544007463705F696ED8 +:106310007075743A20616374697665207063622DCC +:106320003E737461746520213D2054494D452D57BD +:10633000414954007463705F696E7075743A2061EE +:106340006374697665207063622D3E737461746551 +:1063500020213D204C495354454E007463705F69C1 +:106360006E7075743A207063622D3E6E657874208D +:10637000213D2070636220286265666F726520632C +:106380006163686529007463705F696E7075743A43 +:10639000207063622D3E6E65787420213D2070630D +:1063A00062202861667465722063616368652900F4 +:1063B0007463705F696E7075743A2054494D452D51 +:1063C00057414954207063622D3E73746174652097 +:1063D0003D3D2054494D452D57414954007463704B +:1063E0005F696E7075743A207063622D3E737461DC +:1063F000746520213D20434C4F5345440070636237 +:106400002D3E736E645F71756575656C656E203EBB +:106410002030006E6F207365676D656E7420746F39 +:106420002066726565007063622D3E6C69737465E9 +:106430006E65722D3E61636365707420213D204E50 +:10644000554C4C007063622D3E72656675736564D1 +:106450005F64617461203D3D204E554C4C0000004E +:106460002E2E2F2E2E2F6D6F64756C65732F6C770B +:1064700069702F7372632F636F72652F7463705F1F +:106480006F75742E63007463705F6F7574707574CC +:106490005F7365676D656E745F627573793A2069C5 +:1064A0006E76616C69642073656700007463705F69 +:1064B000706275665F707265616C6C6F633A2069BB +:1064C0006E76616C696420706362006E656564203D +:1064D000756E636861696E65642070627566000040 +:1064E0007463705F6372656174655F7365676D6522 +:1064F0006E743A20696E76616C6964207063620024 +:106500007463705F6372656174655F7365676D6501 +:106510006E743A20696E76616C696420706275668B +:1065200000702D3E746F745F6C656E203E3D206F71 +:1065300070746C656E0000007463705F6F757470CA +:1065400075745F636F6E74726F6C5F7365676D6592 +:106550006E745F6E657469663A206E6F206E657446 +:10656000696620676976656E000000006368656390 +:106570006B20746861742066697273742070627530 +:10658000662063616E20686F6C642073747275633B +:1065900074207463705F6864720000007463705FDD +:1065A0006F75747075745F616C6C6F635F68656143 +:1065B0006465723A20696E76616C6964207063620A +:1065C000000000007463705F6F75747075745F66AF +:1065D000696C6C5F6F7074696F6E733A20696E7668 +:1065E000616C696420706275660000007463705F9E +:1065F0007273743A20696E76616C6964206C6F63A3 +:10660000616C5F6970007463705F7273743A2069C3 +:106610006E76616C69642072656D6F74655F697018 +:10662000000000007463705F6F75747075745F6351 +:106630006F6E74726F6C5F7365676D656E743A2010 +:10664000696E76616C696420706275660000000096 +:106650007463705F77726974653A207062756673EF +:10666000206F6E207175657565203D3E2061742038 +:106670006C65617374206F6E65207175657565203A +:106680006E6F6E2D656D707479007463705F7772D4 +:106690006974653A206E6F207062756673206F6E44 +:1066A000207175657565203D3E20626F74682071AC +:1066B000756575657320656D707479006D73735FB2 +:1066C0006C6F63616C20697320746F6F20736D61F0 +:1066D0006C6C00696E636F6E73697374656E7420A1 +:1066E0006F76657273697A652076732E2073706198 +:1066F000636500696E636F6E73697374656E742091 +:106700006F76657273697A652076732E206C656E7C +:10671000007463705F77726974653A20524F4D2040 +:1067200070627566732063616E6E6F74206265209F +:106730006F76657273697A656400756E73656E74E1 +:106740005F6F76657273697A65206D69736D6174C8 +:10675000636820287063622D3E756E73656E7420C9 +:106760006973204E554C4C29007463705F777269D1 +:1067700074653A20636865636B2074686174206691 +:106780006972737420706275662063616E20686F31 +:106790006C642074686520636F6D706C657465202F +:1067A0007365676C656E006F76657273697A6520D4 +:1067B0003D3D203000707265765F73656720213D36 +:1067C000204E554C4C007463705F77726974653A63 +:1067D0002063616E6E6F7420636F6E636174656EAB +:1067E000617465207768656E207063622D3E756EFA +:1067F00073656E7420697320656D707479007463BD +:10680000705F77726974653A20657874656E736934 +:106810006F6E206F66207265666572656E636520B7 +:106820007265717569726573207265666572656EF1 +:106830006365007463705F77726974653A2076618E +:106840006C6964207175657565206C656E67746828 +:10685000000000007463705F73706C69745F756E24 +:1068600073656E745F7365673A20696E76616C69F3 +:1068700064207063620043616E27742073706C69DA +:1068800074207365676D656E7420696E746F206C1B +:10689000656E67746820300073706C6974203C3DCD +:1068A000206D737300757365672D3E6C656E203EB9 +:1068B000203000007463705F656E71756575655F8B +:1068C000666C6167733A206E6565642065697468FB +:1068D0006572205443505F53594E206F72205443C9 +:1068E000505F46494E20696E20666C6167732028B0 +:1068F00070726F6772616D6D65722076696F6C6121 +:106900007465732041504929007463705F656E712E +:10691000756575655F666C6167733A20696E76614F +:106920006C696420706362007463705F656E71757A +:106930006575655F666C6167733A20636865636B54 +:106940002074686174206669727374207062756661 +:106950002063616E20686F6C64206F70746C656E6C +:10696000007365672D3E746370686472206E6F7487 +:1069700020616C69676E6564007463705F656E7139 +:10698000756575655F666C6167733A20696E7661DF +:106990006C6964207365676D656E74206C656E67E5 +:1069A0007468007463705F656E71756575655F66A8 +:1069B0006C6167733A20696E76616C6964207175E9 +:1069C000657565206C656E67746800007463705F40 +:1069D00073656E645F66696E3A20696E76616C6994 +:1069E00064207063620000007463705F7265786D8C +:1069F00069745F72746F5F707265706172653A205E +:106A0000696E76616C696420706362007463705FA4 +:106A10007265786D69743A20696E76616C6964207C +:106A2000706362007463705F7265786D69745F662D +:106A30006173743A20696E76616C69642070636278 +:106A4000000000007463705F73656E645F656D7055 +:106A500074795F61636B3A20696E76616C6964205A +:106A6000706362007463705F6F75747075743A2040 +:106A7000696E76616C69642070636200646F6E2772 +:106A8000742063616C6C207463705F6F75747075D3 +:106A90007420666F72206C697374656E2D7063620A +:106AA0007300525354206E6F742065787065637460 +:106AB0006564206865726521006F7074696F6E731C +:106AC000206E6F742066696C6C6564007463705F1F +:106AD0007265786D69745F72746F5F636F6D6D69F5 +:106AE000743A20696E76616C69642070636200009C +:106AF0007463705F7265786D69745F72746F3A2049 +:106B0000696E76616C696420706362007463705FA3 +:106B10006B656570616C6976653A20696E76616C4B +:106B200069642070636200007463705F7A65726FDD +:106B30005F77696E646F775F70726F62653A206924 +:106B40006E76616C69642070636200002E2E2F2EB9 +:106B50002E2F6D6F64756C65732F6C7769702F7352 +:106B600072632F636F72652F74696D656F757473CF +:106B70002E63007379735F74696D656F75743A2065 +:106B800074696D656F757420213D204E554C4C2CF9 +:106B900020706F6F6C204D454D505F5359535F54BB +:106BA000494D454F555420697320656D70747900C7 +:106BB00054696D656F75742074696D6520746F6FAD +:106BC000206C6F6E672C206D6178206973204C57A4 +:106BD00049505F55494E5433325F4D41582F342050 +:106BE0006D73656373000000FA0000002D53000808 +:106BF000E80300005D990008E803000061870008D1 +:106C000064000000419100082E2E2F2E2E2F6D6F54 +:106C100064756C65732F6C7769702F7372632F6363 +:106C20006F72652F7564702E63007564705F696E96 +:106C30007075743A20696E76616C69642070627553 +:106C400066007564705F696E7075743A20696E765F +:106C5000616C6964206E65746966007564705F6953 +:106C60006E7075745F6C6F63616C5F6D6174636887 +:106C70003A20696E76616C6964206E65746966009D +:106C8000706275665F72656D6F76655F6865616479 +:106C90006572206661696C65640000006368656305 +:106CA0006B207468617420666972737420706275F9 +:106CB000662063616E20686F6C6420737472756304 +:106CC00074207564705F6864720000002E2E2F2E91 +:106CD0002E2F6D6F64756C65732F6C7769702F73D1 +:106CE00072632F636F72652F697076342F657468D5 +:106CF0006172702E6300722D3E7020213D204E5532 +:106D00004C4C00006E6574696620213D204E554C48 +:106D10004C00636865636B207468617420666972F7 +:106D2000737420706275662063616E20686F6C6496 +:106D300020737472756374206574686172705F6823 +:106D40006472006E657469662D3E68776164647272 +:106D50005F6C656E206D7573742062652074686564 +:106D60002073616D65206173204554485F48574129 +:106D70004444525F4C454E20666F722065746861D2 +:106D8000727021006172705F7461626C655B695D35 +:106D90002E71203D3D204E554C4C006172705F7449 +:106DA00061626C655B695D2E7374617465203D3D45 +:106DB000204554484152505F53544154455F454D1E +:106DC0005054590069706164647220213D204E5511 +:106DD0004C4C006574685F72657420213D204E55EF +:106DE0004C4C00006E657469662D3E687761646482 +:106DF000725F6C656E203D3D204554485F485741A9 +:106E00004444525F4C454E006172705F7461626C25 +:106E1000655B6172705F6964785D2E73746174651F +:106E2000203E3D204554484152505F535441544503 +:106E30005F535441424C450074797065206F76650C +:106E400072666C6F77006E6F207061636B65742083 +:106E500071756575657320616C6C6F776564210071 +:106E60002E2E2F2E2E2F6D6F64756C65732F6C7701 +:106E700069702F7372632F636F72652F6970763438 +:106E80002F69636D702E6300636865636B2074689F +:106E90006174206669727374207062756620636124 +:106EA0006E20686F6C642069636D70206D6573730C +:106EB0006167650069636D705F696E7075743A2013 +:106EC0006D6F76696E6720722D3E7061796C6F61AF +:106ED0006420746F2069636D7020686561646572F9 +:106EE000206661696C65640069636D705F696E70CE +:106EF00075743A20726573746F72696E67206F7271 +:106F00006967696E616C20702D3E7061796C6F618C +:106F100064206661696C6564000000002E2E2F2ECF +:106F20002E2F6D6F64756C65732F6C7769702F737E +:106F300072632F636F72652F697076342F69676D86 +:106F4000702E630069676D705F73656E643A2063CD +:106F50006865636B2074686174206669727374205D +:106F6000706275662063616E20686F6C6420737454 +:106F7000727563742069676D705F6D7367000000E0 +:106F800069676D705F6C6F6F6B75705F67726F753F +:106F9000703A2066697273742067726F7570206D25 +:106FA00075737420626520616C6C73797374656DA0 +:106FB000730069676D705F6C6F6F6B75705F677280 +:106FC0006F75703A20616C6C206578636570742011 +:106FD00066697273742067726F7570206D75737453 +:106FE000206E6F7420626520616C6C7379737465B8 +:106FF0006D7300002E2E2F2E2E2F6D6F64756C6515 +:10700000732F6C7769702F7372632F636F72652FA4 +:10701000697076342F6970342E6300702D3E72656E +:1070200066203D3D203100636865636B20746861B4 +:107030007420666972737420706275662063616E75 +:1070400020686F6C64207374727563742069705F5C +:10705000686472002E2E2F2E2E2F6D6F64756C6556 +:10706000732F6C7769702F7372632F636F72652F44 +:10707000697076342F6970345F616464722E6300C6 +:1070800000000000FFFFFFFF2E2E2F2E2E2F6D6F12 +:1070900064756C65732F6C7769702F7372632F63DF +:1070A0006F72652F697076342F6970345F66726114 +:1070B000672E630073616E69747920636865636B22 +:1070C000206C696E6B6564206C697374000000004D +:1070D0007072657620213D2069707200707265764D +:1070E0002D3E6E657874203D3D206970720070629F +:1070F0007566735F6672656564202B20636C656ED0 +:10710000203C3D203078666666660069705F726577 +:107110006173735F70627566636F756E74203E3D58 +:107120002070627566735F667265656400000000BA +:1071300070637220213D204E554C4C00636865639E +:107140006B20667261676D656E747320646F6E2765 +:1071500074206F7665726C6170006E6F207072655E +:1071600076696F757320667261676D656E742C2029 +:1071700074686973206D7573742062652074686526 +:1071800020666972737420667261676D656E742122 +:107190000073616E69747920636865636B00766162 +:1071A0006C69646174655F646174616772616D3A92 +:1071B0006E6578745F70627566213D4E554C4C006B +:1071C00069705F72656173735F70627566636F7516 +:1071D0006E74203E3D20636C656E006E6F74206699 +:1071E00069727374616C74686F756768206A75730F +:1071F0007420656E717565756564000074686973E7 +:10720000206E656564732061207062756620696E0A +:10721000206F6E652070696563652100702D3E6C7E +:10722000656E203E3D20706F666600002E2E2F2E6C +:107230002E2F6D6F64756C65732F6C7769702F736B +:1072400072632F6170692F736F636B6574732E6344 +:1072500000736F636B6574735B695D2E73656C653A +:1072600063745F77616974696E67203D3D2030000B +:107270006E6F20736F636B657420676976656E004F +:10728000746869732073686F756C6420626520632D +:107290006865636B656420696E7465726E616C6CA1 +:1072A0007900696E76616C696420636F70796C65D2 +:1072B0006E2C206C656E20776F756C6420756E6423 +:1072C0006572666C6F7700696E76616C69642063C5 +:1072D0006F70796C656E0000756E6B6E6F776E20E7 +:1072E0006576656E74000000556E6B6E6F776E206C +:1072F000736F636B6574206F7074696F6E0000004C +:1073000066726F6D20213D204E554C4C0066726FA9 +:107310006D6C656E20213D204E554C4C00000000E8 +:1073200062756620213D204E554C4C006E6577639A +:107330006F6E6E20213D204E554C4C00696E76617B +:107340006C696420736F636B657420696E64657823 +:1073500000000000736F636B2D3E6C617374646199 +:107360007461203D3D204E554C4C0000736F636BA3 +:107370002D3E73656C6563745F77616974696E67D0 +:10738000203E20300073656C6563745F63622D3E40 +:1073900070726576203D3D204E554C4C0073656CF7 +:1073A0006563745F63622D3E7072657620213D20B7 +:1073B0004E554C4C00000000556E68616E646C6563 +:1073C00064206E6574636F6E6E20747970652069D9 +:1073D0006E20534F5F42494E44544F4445564943F3 +:1073E000450000002E2E2F2E2E2F6D6F64756C65BC +:1073F000732F6C7769702F7372632F6170692F74AC +:10740000637069702E630074637069705F74687272 +:107410006561643A20696E76616C6964206D65739C +:107420007361676500000000496E76616C696420D5 +:107430006D626F78000000006661696C656420749D +:107440006F206372656174652074637069705F7426 +:107450006872656164206D626F78006661696C6551 +:107460006420746F20637265617465206C6F636B58 +:107470005F74637069705F636F72650074637069D5 +:10748000705F746872656164000000002E2E2F2EFC +:107490002E2F6D6F64756C65732F6C7769702F7309 +:1074A00072632F6E657469662F65746865726E65A8 +:1074B000742E63006E657469662D3E68776164643E +:1074C000725F6C656E206D75737420626520362066 +:1074D000666F722065746865726E65745F6F75742F +:1074E0007075742100000000FFFFFFFFFFFF000028 +:1074F00000000000000000006C7769703A204661CF +:10750000696C656420746F20737461727420746890 +:1075100072656164202573002E2E2F2E2E2F6C692C +:10752000627261726965732F41505F4E6574776F47 +:10753000726B696E672F6C7769705F68616C2F6121 +:107540007263682F7379735F617263682E63707002 +:1075500000696E76616C6964206D626F780000006E +:107560003C48544D4C3E0A203C484541443E0A208C +:10757000203C5449544C453E41505F426F6F746CFF +:107580006F616465723C2F5449544C453E0A203C5F +:107590002F484541443E0A0A203C73637269707467 +:1075A0003E0A20202066756E6374696F6E206479D0 +:1075B0006E616D69635F6C6F6164286469765F6991 +:1075C000642C207572692C20706572696F645F6D20 +:1075D0007329207B0A202020202020207661722021 +:1075E000786872203D206E657720584D4C48747441 +:1075F000705265717565737428293B0A202020201C +:107600002020207868722E6F70656E2827474554B9 +:10761000272C20757269293B0A2020202020202059 +:107620000A202020202020207868722E7365745252 +:10763000657175657374486561646572282243617C +:107640006368652D436F6E74726F6C222C20226EFE +:107650006F2D63616368652C206E6F2D73746F727C +:10766000652C206D61782D6167653D3022293B0ACC +:10767000202020202020207868722E7365745265A7 +:107680007175657374486561646572282245787008 +:1076900069726573222C20225475652C20303120AC +:1076A0004A616E203139383020313A30303A30304A +:1076B00020474D5422293B0A2020202020202078DA +:1076C00068722E736574526571756573744865616F +:1076D0006465722822507261676D61222C20226ECF +:1076E0006F2D636163686522293B0A2020202020DA +:1076F00020200A202020202020207868722E6F6E03 +:107700006C6F6164203D2066756E6374696F6E20D6 +:107710002829207B0A202020202020202020202013 +:10772000696620287868722E737461747573203DC1 +:107730003D3D2032303029207B0A2020202020208F +:10774000202020202020202020766172206F757458 +:10775000707574203D20646F63756D656E742E675F +:107760006574456C656D656E744279496428646919 +:10777000765F6964293B0A202020202020202020D9 +:10778000202020202020696620287572692E656ED1 +:1077900064735769746828272E7368746D6C272981 +:1077A000207C7C207572692E656E647357697468DD +:1077B00028272E68746D6C272929207B0A20202019 +:1077C00020202020202020202020202020202020B9 +:1077D0006F75747075742E696E6E657248544D4C79 +:1077E000203D207868722E726573706F6E736554D9 +:1077F0006578743B0A202020202020202020202093 +:10780000202020207D20656C7365207B0A202020AD +:107810002020202020202020202020202020202068 +:107820006F75747075742E74657874436F6E7465BB +:107830006E74203D207868722E726573706F6E735F +:1078400065546578743B0A202020202020202020C9 +:107850002020202020207D0A2020202020202020E1 +:107860002020207D0A2020202020202020202020D1 +:1078700073657454696D656F75742866756E63748D +:10788000696F6E2829207B2064796E616D69635F62 +:107890006C6F6164286469765F69642C7572692C09 +:1078A00020706572696F645F6D73293B207D2C20A9 +:1078B000706572696F645F6D73293B0A2020202018 +:1078C0002020207D0A202020202020207868722E71 +:1078D00073656E6428293B0A2020207D0A203C2FF6 +:1078E0007363726970743E0A0A3C68313E426F6F7E +:1078F000746C6F616465723C2F68313E0A0A3C7497 +:1079000061626C653E0A20203C74723E3C74643EA9 +:10791000426F61726420547970653C2F74643E3C00 +:1079200074643E7B424F4152445F4E414D457D3C25 +:107930002F74643E3C2F74723E0A20203C74723EC9 +:107940003C74643E426F6172642049443C2F74640D +:107950003E3C74643E7B424F4152445F49447D3C0F +:107960002F74643E3C2F74723E0A20203C74723E99 +:107970003C74643E466C6173682053697A653C2FA1 +:1079800074643E3C74643E7B464C4153485F5349AB +:107990005A457D3C2F74643E3C2F74723E0A3C2F46 +:1079A0007461626C653E0A0A3C68313E4669726DDC +:1079B00077617265205570646174653C2F68313E53 +:1079C0000A0A3C666F726D20616374696F6E3D22B6 +:1079D00022206D6574686F643D22706F737422207D +:1079E000656E63747970653D226D756C7469706144 +:1079F00072742F666F726D2D64617461223E0A206D +:107A0000203C696E70757420747970653D226669DA +:107A10006C6522206E616D653D2266696C65546FF0 +:107A200055706C6F6164222069643D2266696C65E3 +:107A3000546F55706C6F6164223E0A20203C696E61 +:107A400070757420747970653D227375626D697408 +:107A5000222076616C75653D2255706C6F616422E1 +:107A6000206E616D653D227375626D6974223E0AF8 +:107A700020203C696E70757420747970653D2262B7 +:107A80007574746F6E22206F6E636C69636B3D2238 +:107A90006C6F636174696F6E2E687265663D272F27 +:107AA0005245424F4F54273B222076616C75653D0D +:107AB000225265626F6F7422202F3E0A3C2F666F40 +:107AC000726D3E0A0A3C68723E0A3C626F6479201D +:107AD0006F6E6C6F61643D226A6176617363726977 +:107AE00070743A2064796E616D69635F6C6F616474 +:107AF0002827626F6F746C6F616465725F73746165 +:107B0000747573272C272F626F6F746C6F616465B7 +:107B1000725F7374617475732E68746D6C272C3189 +:107B2000303029223E0A3C6469762069643D226235 +:107B30006F6F746C6F616465725F73746174757379 +:107B4000223E3C2F6469763E0A0A203C2F424F4475 +:107B5000593E0A3C2F48544D4C3E0A0078550108C6 +:107B6000FC050000FB050000BDC150D56075010893 +:107B700043414E464449666163653A204D657373DF +:107B80006167652052414D204F766572666C6F7754 +:107B9000210000004261642043414E4966616365F3 +:107BA00020696E6465782E0000000000000000006F +:107BB000D5C1000839BA00082DC90008A9BA0008C3 +:107BC000B5BA0008F1BE000851BC000871BA00083F +:107BD00075BA00084DBA000835BA0008ADBE0008F5 +:107BE00059BA0008BDCB00086DCB000865BA000883 +:107BF00081BE000801040E05054B02020E05054B6F +:107C000004010E05054B05010B04044B0801060396 +:107C100003460000000000000000000079CA0008D0 +:107C20003DCA000805CA00084DCA0008B1CA0008CC +:107C30000DCA00086DCA0008000000000000000026 +:107C40001DCA000835CA000849B6000811CA000854 +:107C5000AD0D0008AD1800082E2E2F2E2E2F6D6FA3 +:107C600064756C65732F6C7769702F7372632F6303 +:107C70006F72652F696E65745F63686B73756D2EC7 +:107C8000630064656C657465206D65002E2E2F2E73 +:107C90002E2F6D6F64756C65732F6C7769702F7301 +:107CA00072632F636F72652F6D656D2E63006D615A +:107CB0006C6C6F632829206D757374207265747500 +:107CC000726E20616C69676E6564206D656D6F72A0 +:107CD00079000000726D656D20213D204E554C4CA1 +:107CE00000726D656D203D3D204D454D5F414C4915 +:107CF000474E28726D656D29000000002E2E2F2E34 +:107D00002E2F6D6F64756C65732F6C7769702F7390 +:107D100072632F636F72652F6D656D702E63006DDA +:107D2000656D705F667265653A206D656D20707275 +:107D30006F7065726C7920616C69676E65640000B4 +:107D40006D656D705F6D616C6C6F633A206D656D14 +:107D5000702070726F7065726C7920616C69676EEB +:107D6000656400000800000018000000100000001A +:107D7000100000003400000010000000100100009E +:107D800020000000100000001000000010000000A3 +:107D90009C00000020000000100000002C000000EB +:107DA0009C7D0108907D0108947D0108987D010863 +:107DB000807D0108687D0108707D0108747D0108DF +:107DC000887D01088C7D0108647D01086C7D0108B7 +:107DD000847D0108787D01087C7D01082E2E2F2EE0 +:107DE0002E2F6D6F64756C65732F6C7769702F73B0 +:107DF00072632F6170692F6170695F6C69622E63B5 +:107E00000066726565696E6720636F6E6E207769C4 +:107E100074686F75742066726565696E672070633B +:107E20006200636F6E6E20686173206E6F207265F2 +:107E300063766D626F7800636F6E6E2D3E61636373 +:107E40006570746D626F782073686F756C646E27EF +:107E50007420657869737400636F6E6E2068617357 +:107E6000206E6F206F705F636F6D706C65746564FA +:107E700000000000646F5F77726974652066616955 +:107E80006C656420746F20777269746520616C6C16 +:107E900020627974657300002E2E2F2E2E2F6D6FA9 +:107EA00064756C65732F6C7769702F7372632F61C3 +:107EB00070692F6170695F6D73672E63007265630F +:107EC000765F756470206D757374206861766520C7 +:107ED000612070636220617267756D656E740072F7 +:107EE0006563765F756470206D7573742068617664 +:107EF0006520616E20617267756D656E74007265D4 +:107F000063765F7564703A207265637620666F727F +:107F10002077726F6E67207063622100636F6E6EF0 +:107F20002D3E7374617465203D3D204E4554434F92 +:107F30004E4E5F434F4E4E4543540028636F6E6E66 +:107F40002D3E63757272656E745F6D736720213D9F +:107F5000204E554C4C29207C7C20636F6E6E2D3E4C +:107F6000696E5F6E6F6E5F626C6F636B696E675F89 +:107F7000636F6E6E65637400626C6F636B696E67CE +:107F800020636F6E6E656374207374617465206521 +:107F900072726F7200000000636F6E6E2D3E73741C +:107FA000617465203D3D204E4554434F4E4E5F5712 +:107FB0005249544500636F6E6E2D3E637572726553 +:107FC0006E745F6D736720213D204E554C4C0063ED +:107FD0006F6E6E2D3E7063622E74637020213D20A3 +:107FE0004E554C4C00636F6E6E2D3E63757272651C +:107FF0006E745F6D73672D3E6D73672E772E6F669F +:1080000066736574203C20636F6E6E2D3E637572DF +:1080100072656E745F6D73672D3E6D73672E772E7C +:108020006C656E00636F6E6E2D3E63757272656E69 +:10803000745F6D73672D3E6D73672E772E76656363 +:10804000746F725F636E74203E2030006C776970CD +:108050005F6E6574636F6E6E5F646F5F7772697475 +:10806000656D6F72653A20696E76616C6964206C2B +:10807000656E677468210000696E76616C696420C2 +:10808000636F6E6E007468697320697320666F7227 +:1080900020746370206E6574636F6E6E73206F6EF4 +:1080A0006C7900636F6E6E206D757374206265204D +:1080B000696E207374617465204E4554434F4E4E73 +:1080C0005F434C4F53450070636220616C72656181 +:1080D000647920636C6F73656400436C6F73696EC1 +:1080E000672061206C697374656E20706362206D17 +:1080F0006179206E6F74206661696C210000000058 +:10810000726563765F746370206D75737420686147 +:10811000766520612070636220617267756D656E9F +:108120007400726563765F746370206D757374207C +:108130006861766520616E20617267756D656E7429 +:108140000065727220213D204552525F4F4B2075D1 +:108150006E68616E646C656400726563765F7463FB +:10816000703A207265637620666F722077726F6E48 +:108170006720706362210000756E68616E646C65D3 +:1081800064206572726F7200696E76616C6964203A +:108190006F705F636F6D706C657465645F73656D40 +:1081A00000636F6E6E2D3E63757272656E745F6DE7 +:1081B0007367203D3D204E554C4C00006572722087 +:1081C000213D204E554C4C006E6574636F6E6E5FA2 +:1081D000616C6C6F633A20756E646566696E656488 +:1081E000206E6574636F6E6E5F7479706500000059 +:1081F000504342206D757374206265206465616C24 +:108200006C6F6361746564206F7574736964652055 +:10821000746869732066756E6374696F6E00726549 +:1082200063766D626F78206D75737420626520646B +:1082300065616C6C6F6361746564206265666F7202 +:10824000652063616C6C696E672074686973206671 +:10825000756E6374696F6E006163636570746D62DF +:108260006F78206D757374206265206465616C6C35 +:108270006F6361746564206265666F726520636117 +:108280006C6C696E6720746869732066756E6374C0 +:10829000696F6E00657870656374206E65777063D2 +:1082A00062203D3D204E554C4C206F72206572720D +:1082B000203D3D204552525F4F4B00006E65746378 +:1082C0006F6E6E207374617465206572726F7200D8 +:1082D000616C72656164792077726974696E672078 +:1082E0006F7220636C6F73696E670073746174657D +:1082F000210000006D73672D3E6D73672E772E6C25 +:10830000656E20213D203000696E76616C696420C5 +:108310006E6574636F6E6E5F747970650000000047 +:1083200030830108348301082C8301080000000019 +:108330000000000000000000000000000C00000031 +:10834000690000000B0000007600000077000000CC +:10835000160000000B000000700000007800000014 +:108360007F00000080000000FFFFFFFF71000000A1 +:1083700068000000800000000500000024010000EB +:1083800060000000286E756C6C2900000000000081 +:10839000A1FC000879FC000829FC000845FC000845 +:1083A00061FC000810000240080002400008024082 +:1083B00000000B00280002400800024004080240B0 +:1083C00006010C004000024008000240080802407C +:1083D00010020D0058000240080002400C08024044 +:1083E00016030E00700002400C000240100802400C +:1083F00000040F00880002400C00024014080240F4 +:1084000006051000A00002400C00024018080240BF +:1084100010061100B80002400C0002401C08024087 +:1084200016072F00100402400804024020080240F2 +:1084300000083800280402400804024024080240D2 +:10844000060939004004024008040240280802409E +:10845000100A3A0058040240080402402C08024066 +:10846000160B3B00700402400C040240300802402E +:10847000000C3C00880402400C0402403408024016 +:10848000060D4400A00402400C04024038080240DB +:10849000100E4500B80402400C0402403C080240A3 +:1084A000160F4600AA551337011000000096000071 +:1084B00000000000000000000000000000000000BC +:1084C0000000000000000000B10C01089D0C010834 +:1084D000D90C0108C50C0108D10C0108BD0C01081C +:1084E000A90C0108950C0108E50C0108000000002A +:1084F000B50D0108A10D0108DD0D0108C90D010828 +:10850000D50D0108C10D0108AD0D0108990D010837 +:10851000E90D01080000000001000000000000005B +:10852000633000002085010800000000000000000A +:10853000C85F0020006200204172647550696C6F52 +:10854000740025424F415244252D424C002553458D +:108550005249414C250000000200000000000000CC +:10856000D50F01084510010840004000A87A0020FE +:10857000B87A0020020000000000000003000000A4 +:10858000000000008D100108000000001000000035 +:10859000C87A002000000000010000000000000078 +:1085A000207E002001010200B11F0108C11E010848 +:1085B0005D1F0108411F010843000000C08501083C +:1085C00009024300020100C0320904000001020256 +:1085D0000100052400100105240100010424020209 +:1085E0000524060001070582030800FF09040100B5 +:1085F000020A000000070501024000000705810291 +:1086000040000000120000000C8601081201100159 +:10861000020000400912415700020102030100005C +:108620000403090425424F415244250030313233BE +:10863000343536373839414243444546000000005E +:108640000001002000FF01000200000000000030D7 +:1086500000000400080000000000002400000800E2 +:10866000040000000004000000FC00000200000004 +:108670000000043000800000080000000000003806 +:10868000000001000100000000000000E9110108E5 +:10869000A11401084D15010840004000587F00203A +:1086A000587F002001000000687F0020800000004B +:1086B0004001000008000000000100000010000060 +:1086C0000800000069646C65000000006D61696E5F +:1086D000002C0438040440080C10141C2024252607 +:1086E000000000000000640401000400000000001D +:1086F000000C0010283034002880802A0000000080 +:10870000AAAAAAAA00000024FFFF0000B00B00B034 +:1087100000A00A000000800A00000000AAAAAAAA7D +:1087200000000000FFFF00000000000000B0BB00E0 +:10873000080A000000000000AAAAAAAA000000007F +:10874000FFFF0000B000BB00000000000A000000B6 +:1087500000000000AAAAAAAA00000000FFFF000073 +:1087600099000000000000000080020000000000EE +:10877000AAAAAAAA00400100FFFF000000000070A2 +:10878000070000000000000000000000AAAAAAAA3A +:1087900000000000FFFF00000000000000000000DB +:1087A0000500000000000000A5AAAAAA0000000021 +:1087B000FCFF0000000000000000000000000000BE +:1087C00000000000AAAAAAAA00000000FFFF000003 +:1087D0000000000000000000000000000000000099 +:1087E000AAAAAAAA00000000FFFF000000000000E3 +:1087F000000000000000000000000000AAAAAAAAD1 +:1088000000000000FFFF000000000000000000006A +:108810000000000000000000AAAAAAAA00000000B0 +:10882000FFFF0000000000000000000000202020EA +:108830002020202020202828282828202020202010 +:1088400020202020202020202020202020881010E0 +:10885000101010101010101010101010100404043C +:1088600004040404040404101010101010104141FA +:1088700041414141010101010101010101010101E8 +:1088800001010101010101011010101010104242FC +:1088900042424242020202020202020202020202B8 +:1088A0000202020202020202101010102000000058 +:1088B00000000000000000000000000000000000B8 +:1088C00000000000000000000000000000000000A8 +:1088D0000000000000000000000000000000000098 +:1088E0000000000000000000000000000000000088 +:1088F0000000000000000000000000000000000078 +:108900000000000000000000000000000000000067 +:108910000000000000000000000000000000000057 +:108920000000000000000000000000000000000047 +:10893000902300205245454E54206D616C6C6F634E +:1089400020737563636565646564002F6D6E742FB5 +:10895000776F726B73706163652F776F726B737073 +:108960006163652F4743432D31302D706970656C0D +:10897000696E652F6A656E6B696E732D4743432D73 +:1089800031302D706970656C696E652D34385F32D9 +:10899000303230313132345F313630363138303682 +:1089A00034312F7372632F6E65776C69622F6E6539 +:1089B000776C69622F6C6962632F7374646C69628F +:1089C0002F72616E642E63002C2066756E6374696D +:1089D0006F6E3A2000617373657274696F6E202246 +:1089E000257322206661696C65643A2066696C654E +:1089F00020222573222C206C696E65202564257346 +:108A000025730A00232D302B2000686C4C0065660E +:108A10006745464700000000303132333435363781 +:108A20003839616263646566000000000000000080 +:108A30000000000000000000000000000000000036 +:108A40000000000000000000000000000000000026 +:108A50000000000000000000000000000000000016 +:108A60000000000000000000000000000000000006 +:108A700000000000000000000000000000000000F6 +:108A800000000000000000000000000000000000E6 +:108A90003704000000000000000018000000000083 +:108AA000FE2A0100D2040000CC550108AA53010897 +:108AB000D7550108E0550108E5550108F0550108B2 +:108AC000FF00000008620020E05A002000000000C3 +:108AD000F855010883040000035601085004000003 +:108AE000115601086E19000000C000C00096000079 +:108AF00000000800960000000008000004000000CC +:108B000020860108000000000000000000000000B6 +:108B10000000000000000000000000009023002082 +:108B2000000000004C8A01086C8A01082C8A0108A8 +:108B30000000000000000000000000000000000035 +:108B40000000000000000000000000000000000025 +:108B50000000000000000000000000000000000015 +:108B60000000000000000000000000000000000005 +:108B700000000000000000000000000000000000F5 +:00000001FF diff --git a/Tools/bootloaders/CubeNode_bl.bin b/Tools/bootloaders/CubeNode_bl.bin new file mode 100755 index 00000000000000..20a33af6a70ba9 Binary files /dev/null and b/Tools/bootloaders/CubeNode_bl.bin differ diff --git a/Tools/bootloaders/CubeNode_bl.hex b/Tools/bootloaders/CubeNode_bl.hex new file mode 100644 index 00000000000000..1ac9ba815851e1 --- /dev/null +++ b/Tools/bootloaders/CubeNode_bl.hex @@ -0,0 +1,2140 @@ +:020000040800F2 +:1000000000070020F1020008B1330008693300083E +:10001000913300086933000889330008F3020008AF +:10002000F3020008F3020008F30200083544000858 +:10003000F3020008F3020008F3020008F3020008CC +:10004000F3020008F3020008F3020008F3020008BC +:10005000F3020008F3020008C97C0008F57C0008E0 +:10006000217D00084D7D0008797D0008F9440008D5 +:10007000214500084D45000879450008A5450008C0 +:10008000CD450008F9450008F3020008493300088F +:10009000F302000859330008F3020008A57D0008A8 +:1000A000F3020008F3020008F3020008F30200085C +:1000B000F3020008F3020008F3020008F30200084C +:1000C000F3020008F3020008F3020008F30200083C +:1000D000F3020008F3020008F3020008F30200082C +:1000E000097E0008F3020008F3020008F30200088A +:1000F000F3020008F3020008F30200082546000896 +:10010000F3020008F3020008917E0008F3020008E1 +:10011000F3020008F3020008F3020008F3020008EB +:100120005146000879460008A5460008D146000857 +:10013000FD460008F3020008F3020008F30200087D +:10014000F3020008F3020008F3020008F3020008BB +:1001500025470008514700087D470008F3020008C2 +:10016000F3020008F3020008F3020008F30200089B +:10017000F3020008F5700008F3020008F30200081B +:10018000F3020008F30200087D7E0008F302000875 +:10019000F3020008F3020008F3020008F30200086B +:1001A000F3020008F3020008F3020008F30200085B +:1001B000F3020008F3020008F3020008F30200084B +:1001C000F3020008F3020008F3020008F30200083B +:1001D000F3020008E1700008F3020008F3020008CF +:1001E000F3020008F3020008F3020008F30200081B +:1001F000F3020008F3020008F3020008F30200080B +:10020000F3020008F3020008F3020008F3020008FA +:10021000F3020008F3020008F3020008F3020008EA +:10022000F3020008F3020008F3020008F3020008DA +:10023000F3020008F3020008F3020008F3020008CA +:10024000F3020008F3020008F3020008F3020008BA +:10025000F3020008F3020008F3020008F3020008AA +:10026000F3020008F3020008F3020008F30200089A +:10027000F3020008F3020008F3020008F30200088A +:10028000F3020008F3020008F3020008F30200087A +:10029000F3020008F3020008F3020008F30200086A +:1002A000F3020008F3020008F3020008F30200085A +:1002B000F3020008F3020008F3020008F30200084A +:1002C000F3020008F3020008F3020008F30200083A +:1002D000F3020008F3020008F3020008F30200082A +:1002E000BD16000800000000000000000000000033 +:1002F00002E000F000F8FEE772B6374880F30888A5 +:10030000364880F3098836483649086040F20000D4 +:10031000CCF200004EF63471CEF200010860BFF35B +:100320004F8FBFF36F8F40F20000C0F2F0004EF627 +:100330008851CEF200010860BFF34F8FBFF36F8F7B +:100340004FF00000E1EE100A4EF63C71CEF20001D3 +:100350000860062080F31488BFF36F8F06F040F921 +:1003600007F07EFA4FF055301F491B4A91423CBFBF +:1003700041F8040BFAE71D49184A91423CBF41F885 +:10038000040BFAE71A491B4A1B4B9A423EBF51F82D +:10039000040B42F8040BF8E700201849184A914270 +:1003A0003CBF41F8040BFAE706F058F907F0DEFA13 +:1003B000144C154DAC4203DA54F8041B8847F9E796 +:1003C00000F042F8114C124DAC4203DA54F8041B11 +:1003D0008847F9E706F040B9000700200023002015 +:1003E0000000000808ED00E00001002000070020E8 +:1003F00030850008002300206C230020702300209B +:1004000070740020E0020008E4020008E402000822 +:10041000E40200082DE9F04F2DED108AC1F80CD050 +:10042000D0F80CD0BDEC108ABDE8F08F002383F328 +:1004300011882846A047002005F0D2FAFEE705F013 +:100440004DFA00DFFEE70000F8B501F0B3F901F066 +:1004500055FB06F021F8074606F0B8F80546A8BB9C +:100460001F4B9F4232D001339F4232D027F0FF0210 +:100470001C4B9A4230D12E4642F21074F8B200F072 +:100480006DFF00F071FF08B10024264601F0C6FDA3 +:1004900020B10024032000F079F8264635B1124B34 +:1004A0009F4203D0002406F089F82646002005F07C +:1004B000FDFF0EB100F080F801F0BEFA00F088FFF9 +:1004C000204600F02BF900F077F8F9E72E460024DB +:1004D000D7E704460126D4E7064641F28834D0E740 +:1004E000010007B0000008B0263A09B008B501F0D5 +:1004F0002DF9A0F120035842584108BD07B541F23B +:100500001203022101A8ADF8043001F03DF903B057 +:100510005DF804FB38B5302383F31188174803686E +:100520000BB105F029FB0023154A4FF47A711348EB +:1005300005F018FB002383F31188124C236813B1D4 +:100540002368013B2360636813B16368013B636008 +:100550000D4D2B7833B963687BB9022001F0DEF9C9 +:10056000322363602B78032B07D163682BB90220F9 +:1005700001F0D4F94FF47A73636038BD7023002022 +:10058000150500089024002088230020084B1870CF +:1005900003280CD8DFE800F008050208022001F06B +:1005A000BBB9022001F0B6B9024B00225A60704775 +:1005B0008823002090240020F8B501F02FFD30B1F1 +:1005C0004D4B03221A7000224C4B5A60F8BD4C4B25 +:1005D0004C4A1C4619680131F8D004339342F9D1D2 +:1005E0006268494B9A42F1D9484B9B6803F100631A +:1005F00003F580239A42E9D205F0B4FF05F0C6FF67 +:10060000002001F0FDF80220FFF7C0FF404B002161 +:100610009A6C99641A6F19671A6FDA6CD9645A6FF9 +:1006200059675A6F1A6D19659A6F99679B6F394BA5 +:10063000D3F8802042F00062C3F88020D3F88020F5 +:1006400022F00062C3F88020D3F88020D3F8802005 +:1006500042F00072C3F88020D3F8802022F00072AC +:10066000C3F88020D3F8803072B64FF0E023C3F88F +:10067000084DD4E90004BFF34F8FBFF36F8F264AB4 +:10068000C2F88410BFF34F8F536923F48033536152 +:10069000BFF34F8FD2F8803043F6E076C3F3C9053D +:1006A000C3F34E335B0103EA060C29464CEA81771B +:1006B0000139C2F87472F9D2203B13F1200FF2D144 +:1006C000BFF34F8FBFF36F8FBFF34F8FBFF36F8FAA +:1006D000536923F4003353610023C2F85032BFF34F +:1006E0004F8FBFF36F8F302383F31188854680F3DC +:1006F000088820476AE700BF882300209024002054 +:100700000000040820000408FFFF03080023002065 +:10071000004502580044025800ED00E02DE9F04F7A +:1007200093B0B74B2022FF2100900AA89D6801F0EA +:100730002DF9B44A1378A3B90121B34811700360AD +:10074000302383F3118803680BB105F015FA0023F9 +:10075000AE4A4FF47A71AC4805F004FA002383F3F3 +:100760001188009B13B1AA4B009A1A60A94A13780A +:10077000032B03D000231370A54A53604FF0000AE7 +:10078000009CD3465646D146012001F0C5F824B15D +:100790009F4B1B68002B00F02C82002000F0D6FF3E +:1007A0000390039B002B01DA00F05AFE039B002B01 +:1007B000EDDB012001F0AEF8039B213B1F2BE3D8BA +:1007C00001A252F823F000BF490800087108000890 +:1007D000050900088907000889070008890700083B +:1007E00097090008670B0008810A0008E30A00085F +:1007F0000B0B0008310B000889070008430B0008A9 +:1008000089070008B50B0008E908000889070008F7 +:10081000F90B000855080008E908000889070008D6 +:10082000E30A00088907000889070008890700080B +:100830008907000889070008890700088907000858 +:1008400089070008050900080220FFF74FFE00286D +:1008500040F0F981009B022105A8BAF1000F08BF02 +:100860001C4641F21233ADF8143000F08DFF8BE7D7 +:100870004FF47A7000F06AFF071EEBDB0220FFF7EF +:1008800035FE0028E6D0013F052F00F2DE81DFE8CB +:1008900007F0030A0D1013360523042105A805935C +:1008A00000F072FF17E004215548F9E704215A4887 +:1008B000F6E704215948F3E74FF01C08404608F1D9 +:1008C000040800F09FFF0421059005A800F05CFFDC +:1008D000B8F12C0FF2D101204FF0000900FA07F710 +:1008E00047EA0B0B5FFA8BFB01F09CF826B10BF08B +:1008F0000B030B2B08BF0024FFF700FE44E7042185 +:100900004748CDE7002EA5D00BF00B030B2BA1D150 +:100910000220FFF7EBFD074600289BD001200026B0 +:1009200000F06EFF0220FFF731FE1FFA86F8404606 +:1009300000F076FF0446B0B1039940460136A1F1BC +:1009400040025142514100F083FF0028EDD1BA46E8 +:10095000044641F21213022105A83E46ADF81430B8 +:1009600000F012FF10E725460120FFF70FFE244B91 +:100970009B68AB4207D9284600F044FF013040F0A5 +:1009800067810435F3E70025224BBA463E461D70C9 +:100990001F4B5D60A8E7002E3FF45CAF0BF00B032C +:1009A0000B2B7FF457AF0220FFF7F0FD322000F051 +:1009B000CDFEB0F10008FFF64DAF18F003077FF44D +:1009C00049AF0F4A08EB0503926893423FF642AFE6 +:1009D000B8F5807F3FF73EAF124BB845019323DD5A +:1009E0004FF47A7000F0B2FE0390039A002AFFF6EB +:1009F00031AF039A0137019B03F8012BEDE700BFEC +:100A0000002300208C2400207023002015050008FE +:100A100090240020882300200423002008230020A5 +:100A20000C2300208C230020C820FFF75FFD074621 +:100A300000283FF40FAF1F2D11D8C5F120020AABDB +:100A400025F0030084494245184428BF42460192DC +:100A500000F076FF019AFF217F4800F097FF4FEAF0 +:100A6000A803C8F387027C492846019300F096FF4B +:100A7000064600283FF46DAF019B05EB830533E785 +:100A80000220FFF733FD00283FF4E4AE00F0F2FE51 +:100A900000283FF4DFAE0027B846704B9B68BB428E +:100AA00018D91F2F11D80A9B01330ED027F003034A +:100AB00012AA134453F8203C05934046042205A98A +:100AC000043701F095FA8046E7E7384600F09AFED1 +:100AD0000590F2E7CDF81480042105A800F054FE3B +:100AE00002E70023642104A8049300F043FE0028D9 +:100AF0007FF4B0AE0220FFF7F9FC00283FF4AAAE65 +:100B0000049800F0ADFE0590E6E70023642104A8F8 +:100B1000049300F02FFE00287FF49CAE0220FFF724 +:100B2000E5FC00283FF496AE049800F09BFEEAE74F +:100B30000220FFF7DBFC00283FF48CAE00F0AAFE99 +:100B4000E1E70220FFF7D2FC00283FF483AE05A9BD +:100B5000142000F0A5FE07460421049004A800F02C +:100B600013FE3946B9E7322000F0F0FD071EFFF60C +:100B700071AEBB077FF46EAE384A07EB090392688B +:100B800093423FF667AE0220FFF7B0FC00283FF427 +:100B900061AE27F003074F44B9453FF4A5AE484680 +:100BA00009F1040900F02EFE0421059005A800F0CB +:100BB000EBFDF1E74FF47A70FFF798FC00283FF463 +:100BC00049AE00F057FE002844D00A9B01330BD0F9 +:100BD00008220AA9002000F0E1FE00283AD02022D5 +:100BE000FF210AA800F0D2FEFFF788FC1C4804F0A1 +:100BF000FDFE13B0BDE8F08F002E3FF42BAE0BF0DE +:100C00000B030B2B7FF426AE0023642105A805936C +:100C100000F0B0FD074600287FF41CAE0220FFF76D +:100C200065FC804600283FF415AEFFF767FC41F2F3 +:100C3000883004F0DBFE059800F03EFF46463C4657 +:100C400000F0F0FEA0E506464EE64FF0000901E692 +:100C5000BA467EE637467CE68C230020002300203F +:100C6000A0860100094A49F26900136899B21B0C79 +:100C700000FB013344F250611360054B186882B2E7 +:100C8000000C01FB0200186080B2704714230020A2 +:100C9000102300200021102210B5044600F076FE3B +:100CA000034B03CB206061601868A06010BD00BFDB +:100CB00000E8F11FF0B5ADF54F7D4FF4C472074663 +:100CC0000D466CAC0021204600F060FE02F078FB7F +:100CD0004FF47A72254BB0FBF2F0186093E80700EE +:100CE000022384E807000DF5E9702382FFF7D2FFA5 +:100CF00043F204731E4907A8238407F063F91623FF +:100D00000DF2E3220DF12C0C84F8323107AB1E46B4 +:100D1000083203CE664542F8080C42F8041C3346FC +:100D2000F5D1306810602046B3880DAE938031460F +:100D3000012200F043FF002380B2E97E0393AB7EE3 +:100D4000029305F1190301930123009305A3D3E94D +:100D50000023CDE90460384602F03CFF0DF54F7DDD +:100D6000F0BD00BF9E6AC421818A46EE982400200F +:100D7000D47F00082DE9F0412C4CDAB080460D46B6 +:100D8000237A5BBB27A9284601F03CF807460028D8 +:100D900042D19DF89D60C82E3ED801464FF4A66210 +:100DA000204600F0F3FD4FF4807332460DF19E01B2 +:100DB000C4F8F8314FF4007304F109002644C4F874 +:100DC0000C334FF44073C4F8203400F0B9FD9DF8A3 +:100DD0009C30777223720BB9EB7E237206AC8122B2 +:100DE000002127A800F0D2FD0122214627A801F00A +:100DF0004FF8002380B2E97E0393AB7E029305F1A6 +:100E0000190301932823CDE904400093404605A32C +:100E1000D3E9002302F0DEFE5AB0BDE8F08100BF46 +:100E2000AFF3008026417272DF25D7B7E03400208F +:100E3000F0B5254E4FF48A75F1B0002405FB00652E +:100E400096F8D830D822214685F8DC303AA885F8C3 +:100E5000E84006AF00F09AFD06F1090000F08EFDB3 +:100E6000D5F8E430C2B206F109018DF8F0000DF1B9 +:100E7000F100CDE93A3400F063FD394601223AA889 +:100E800001F03CF8082380B2317ACDE904700127E3 +:100E90000E48CDE9023706F1D803019330230093C1 +:100EA00007A3D3E9002302F095FEA04206DD02F07D +:100EB00087FAC5F8E000384671B0F0BD2046FBE780 +:100EC00078F6339F93CACD8DE0340020B0340020F3 +:100ED0002DE9F0411D4D86B01D4E1E4F284602F0F3 +:100EE000A5FE034658B30024DFF86C80ADF814402B +:100EF0000294CDE90344027B8DF8142003AA99687B +:100F0000406803C21B6843F00043029302F05AFAA0 +:100F100082190094384641F1000302A901F07CFADD +:100F2000A04205DD284602F085FE88F80040D5E79E +:100F300098F80030072B05D8013388F8003006B048 +:100F4000BDE8F081014802F075FEF8E7B0340020FA +:100F500040420F00183A0020153A002070B50D46A7 +:100F600014461E4602F092FD50B9022E10D1012CFB +:100F70000ED112A3D3E900230120C5E9002307E025 +:100F8000282C10D005D8012C09D0052C0FD000201A +:100F900070BD302CFBD10BA3D3E90023ECE70BA3EE +:100FA000D3E90023E8E70BA3D3E90023E4E70BA38D +:100FB000D3E90023E0E700BFAFF30080401DA1208C +:100FC00026812A0B78F6339F93CACD8D9E6AC42161 +:100FD000818A46EE26417272DF25D7B7F017304A74 +:100FE00039059E5638B505460E4C0021013500F0F6 +:100FF0002FFCA4F82C55B4F82C0500F011FC78B1A6 +:10100000B4F82C0500F01CFC014648B9B4F82C05D6 +:1010100000F01EFCB4F82C350133A4F82C35EAE7B7 +:1010200038BD00BFE03400200A4B0B4A10B51A60EF +:1010300003F5805393F850203AB9DC6C2CB120466C +:1010400001F06AF8204601F0A3F90448BDE8104019 +:1010500001F062B8183A00207C800008504A002055 +:101060002DE9F04F8FB005460C4600AF02F00EFDA3 +:1010700000284BD1237E022B1BD1E38A012B18D1F0 +:1010800002F09EF90646FFF7EDFD03464FF4C870E7 +:1010900006F51676DFF8C082B3FBF0F202FB1033E0 +:1010A00016FA83F3C8F80030E37E33B9A34B00226D +:1010B0001A703C37BD46BDE8F08F07F12401204689 +:1010C00000F054FE0028F4D107F11400FFF7E2FD10 +:1010D00097F8264007F1140107F12700224606F091 +:1010E0003FFF0028E2D10F2C08D8944B1C70D8F891 +:1010F0000030A3F51673C8F80030DAE797F824102B +:101100000029D6D0284602F0B9FCD2E7E38A282B82 +:101110002BD010D8012B23D0052BCAD1BFF34F8F72 +:101120008749884BCA6802F4E0621343CB60BFF37F +:101130004F8F00BFFDE7302BBBD1834EE17E327A6B +:101140009142B6D1607E3146002291F8DC50854252 +:1011500000F0A580013201F58A71042AF5D1A8E7D3 +:1011600021462846FFF7A6FDA3E721462846FFF7BC +:1011700001FE9EE7B2F8EC507B6005F103094FEAEF +:1011800099094FEA8902D11DC908A8EBC1030021C2 +:101190009D46EB46584600F0F9FB04F1EE012A4665 +:1011A0005846314400F0CCFB7B6813B9012000F0B5 +:1011B00027FB96F8D20000F033FB044630B93072BA +:1011C00000F058FB204600F01BFBB0E0D6F8D4201E +:1011D0003AB996F8D200B6F82C25824201D8FFF72A +:1011E00001FFD6F8D4202A44944208D296F8D200BF +:1011F000B6F82C250130824201D8FFF7F3FE5FFAE2 +:1012000089F25946706800F0C9FB08B9C54679E013 +:10121000726896F8D2002A447260D6F8D42005EBA2 +:101220000209C6F8D49000F0FBFA814509D396F87C +:10123000D220D6F8D4000132001B86F8D220C6F89E +:10124000D400FF2D0FD80024347200F013FB204689 +:1012500000F0D6FA00F0E2FE3C4B188108B9FFF727 +:10126000ABF9C54625E7BB6896F8D9000AFB0362CF +:10127000FB68D2F8E41082F8E83001F58061C2F82A +:10128000E030C2F8E410FFF7D3FDFFF721FE96F837 +:10129000D920013202F0030286F8D920B6E74FF4D4 +:1012A0008A7A20460AFB02F505F1EA01314400F092 +:1012B00059FEF86000287FF4FCAE0122354485F821 +:1012C000E82002F07DF8D5F8E020D6ED007A801A0B +:1012D00040F6B832B8EE677ADFED1D6A192838BFDC +:1012E0001920904228BF104607EE900AF8EEE77AE0 +:1012F00067EEA67ADFED176AE7EE267AFCEEE77A6C +:10130000C6ED007A96F8D93071680AFB03F4BB6029 +:10131000321992F8E8505DB1D2F8E430E8468B42D9 +:101320003FF428AF002182F8E810C2F8E010C5466B +:101330007368064A9B0A01331381BAE6A934002078 +:1013400000ED00E00400FA05E034002098240020BD +:10135000CDCCCC3D6666663FAC340020014B1870A6 +:10136000704700BFA424002038B54FF00054144B40 +:1013700022689A4222D1607DF8B1124B0025C92221 +:10138000114918701148237D0930C0F8DB5000F86E +:10139000013C4FF48073C0F8EF314FF40073C0F894 +:1013A00003334FF44073C0F8173400F0C9FAE02259 +:1013B0002946204600F0EAFA012038BD0020FCE76B +:1013C0009AAD44C5A424002016000020E03400207B +:1013D00037B500F023FE194D022300221849288159 +:1013E0006B710123174801F0A7FB002316494FF446 +:1013F00080520193154B16480093164B02F016FBD2 +:10140000154B197811B1124802F038FB01F0D8FFE2 +:101410000446FFF727FC4FF4C873B0FBF3F202FB5E +:10142000130304F5167010FA83F00C4B186005F0E6 +:10143000CDF808B10F232B8103B030BD98240020D4 +:1014400040420F00183A0020A82400205D0F000839 +:10145000B034002061100008A4240020AC34002027 +:101460002DE9F04F8C4C2DED028B85A7D7E9006755 +:1014700095B00FF21429D9E900899FED858BFFF70C +:1014800027FD0DAD0023DFF824B20C93ADF83C30FE +:101490000D936B6000234FF0010A0DF1250209A99D +:1014A00058468DF825308DF824A08DED008B01F085 +:1014B000EFFE9DF824200023002A40F0AE80204655 +:1014C00002F0E4FA0546002847D1DFF8E4B101F064 +:1014D00077FFDBF8003098423FD301F071FF0790AF +:1014E000FFF7C0FB4FF4C873079AB0FBF3F101FBA1 +:1014F000130302F5167010FA83F0CBF8000010A861 +:10150000DFF8B0B19BF80010002914BF2B465346FA +:1015100007918DF83030FFF7BDFB079910AB0DF147 +:101520003100C1F110021944D2B2062A28BF0622A6 +:10153000079200F005FA079A0CAB2046039301329C +:101540001823D2B20293554B04923246CDE900A340 +:101550003B4602F0E1FA8BF8005001F031FF504AAF +:10156000504D1368C31AB3F57A7F32D3106001F07F +:1015700029FF02460B46204602F066FB204602F099 +:1015800085FA30B32B7A0DF1400BDFF82CA1002B3C +:1015900014BF032302238AF8053001F011FF4FF432 +:1015A0007A7301225946B0FBF3F0CAF800005046A6 +:1015B00000F0B4FB182380B2424602933A4B0193E9 +:1015C00040F25513CDE903B0009320464B4602F09C +:1015D000A3FA2B7AABB101F0F3FE4FF0000A834679 +:1015E0004FF48A7295F8D900504400F0030002FBD2 +:1015F000005393F8E81071B30AF1010ABAF1040F2D +:10160000F0D1C82004F0F2F92B7A002B7FF435AF2B +:1016100015B0BDEC028BBDE8F08F1946102210A862 +:1016200000F0B4F90DF126030AAA0CA9584601F0FE +:1016300011F911AB95E8030083E803009DF83C30F5 +:1016400010A920468DF84C300C9B1093DDE90A233D +:1016500002F0CEFC1EE7D3F8E01049B12B68ABEBEB +:101660000101FA2B38BFFA230533B1EB430FC3D383 +:10167000FFF7DEFB4FF48A720028BDD1C1E700BF3F +:10168000401DA12026812A0BF1C6A7C1D068080FF2 +:101690000000000000000000B0340020A83400204A +:1016A000103A0020E0340020143A0020183A0020BC +:1016B000AC340020A93400209824002008B5054847 +:1016C00001F072F9044A05490020BDE8084006F01F +:1016D00033BC00BF183A0020344F00202910000806 +:1016E0002DE9F84F4FF47A7306460D46002402FBAD +:1016F00003F7DFF85080DFF8509098F900305FFA78 +:1017000084FA5A1C01D0A34212D159F824002A4667 +:1017100031460368D3F820B03B46D847854207D10D +:10172000074B012083F800A0BDE8F88F0124E4E70F +:10173000002CFBD04FF4FA7004F058F90020F3E7C6 +:10174000244F0020182300201C230020002307B56D +:10175000024601210DF107008DF80730FFF7C0FFA9 +:1017600020B19DF8070003B05DF804FB4FF0FF3097 +:10177000F9E700000A46042108B5FFF7B1FF80F041 +:101780000100C0B2404208BD074B0A4630B4197888 +:10179000064B53F82140014623682046DD69044B7F +:1017A000AC4630BC604700BF244F00201C23002003 +:1017B000A086010070B5104C0025104E04F040FCCE +:1017C00020803068238883420CD800252088013887 +:1017D00004F032FC23880544013BB5F5802F2380BB +:1017E000F4D370BD04F028FC336805440133B5F52B +:1017F000802F3360E5D3E8E7264F0020E04E00203D +:1018000004F0ECBC00F1006000F580200068704737 +:1018100000F10060920000F5802004F06DBC000033 +:10182000054B1A68054B1B889B1A834202D910444A +:1018300004F002BC00207047E04E0020264F00203C +:10184000024B1B68184404F0FDBB00BFE04E0020B3 +:10185000024B1B68184404F007BC00BFE04E002098 +:101860000020704700F1FF5000F58F10D0F80008FD +:1018700070470000064991F8243033B10023082254 +:10188000086A81F82430FFF7C3BF0120704700BF0A +:10189000E44E0020014B1868704700BF0010005C48 +:1018A000194B01380322084470B51D68174BC5F366 +:1018B0000B042D0C1E88A6420BD15C680A46013C25 +:1018C000824213460FD214F9016F4EB102F8016B38 +:1018D000F6E7013A03F10803ECD181420B4602D24C +:1018E0002C2203F8012B0424094A1688AE4204D1A5 +:1018F000984284BF967803F8016B013C02F1040220 +:10190000F3D1581A70BD00BF0010005C24230020E2 +:101910001880000870470000704700007047000002 +:1019200070B504464FF47A764CB1412C254628BF59 +:10193000412506FB05F0641B04F058F8F4E770BD80 +:10194000002310B5934203D0CC5CC4540133F9E7B3 +:1019500010BD0000013810B510F9013F3BB191F9FD +:1019600000409C4203D11AB10131013AF4E71AB1A7 +:1019700091F90020981A10BD1046FCE70346024674 +:10198000D01A12F9011B0029FAD17047024403460C +:10199000934202D003F8011BFAE770472DE9F843A0 +:1019A0001F4D14460746884695F8242052BBDFF8A1 +:1019B00070909CB395F824302BB92022FF21484623 +:1019C0002F62FFF7E3FF95F824004146C0F10802BB +:1019D00005EB8000A24228BF2246D6B29200FFF754 +:1019E000AFFF95F82430A41B17441E449044E4B282 +:1019F000F6B2082E85F82460DBD1FFF73BFF002804 +:101A0000D7D108E02B6A03EB82038342CFD0FFF7E4 +:101A100031FF0028CBD10020BDE8F8830120FBE78F +:101A2000E44E0020024B1A78024B1A70704700BF38 +:101A3000244F00201823002038B51A4C1A4D204698 +:101A400003F0F4FA2946204603F01CFB2D684FF4FE +:101A50007A70D5F89020D2F8043843F00203C2F827 +:101A60000438FFF75DFF1149284603F019FCD5F84B +:101A700090200F4DD2F80438286823F002030D4956 +:101A8000A042C2F804384FF4E1330B6001D003F0F8 +:101A90002BFA6868A04204D00649BDE8384003F03C +:101AA00023BA38BD98560020CC820008D4820008A2 +:101AB0001C2300200C4F00200C4B70B50C4D04462D +:101AC0001E780C4B55F826209A420DD00A4B002167 +:101AD00018221846FFF75AFF0460014655F8260001 +:101AE000BDE8704003F000BA70BD00BF244F002075 +:101AF0001C230020985600200C4F0020F8B571B62A +:101B0000002301201A46194602F0D6FE0446802022 +:101B100004F002FC002849D00025254A80274FF414 +:101B2000D06C3D26136913F0C06F26D1D2F8103166 +:101B300013F0C06F21D1236805F10061996023681B +:101B4000D86023685F602368C3F800C021680B6811 +:101B500043F001030B6021680B6823F01E030B6048 +:101B600021680B68DB07FCD4237B8035616806FAAB +:101B700003F3B5F5001F0B60D4D1204602F0D2FE6E +:101B8000B5F5001F11D000240A4E0B4D012004F0C2 +:101B900025FB3388A34205D928682044013404F08A +:101BA00063FAF6E7002004F019FB61B6F8BD00BF48 +:101BB00000200052264F0020E04E00202DE9F34780 +:101BC0000D46044600219046284640F27912FFF760 +:101BD000DDFE234620220021284604F1220702F0E0 +:101BE000A9F9231D022220212846C02602F0A2F9CD +:101BF000631D03222221284602F09CF9A31D032223 +:101C00002521284602F096F904F108031022282124 +:101C1000284602F08FF904F11003082238212846E3 +:101C200002F088F904F1110308224021284602F04D +:101C300081F904F1120308224821284602F07AF9BA +:101C400004F1140320225021284602F073F904F114 +:101C5000180340227021284602F06CF904F1200399 +:101C60000822B021284602F065F904F12103082278 +:101C7000B821284602F05EF9314608363B46082274 +:101C80002846013702F056F9B6F5A07FF4D194F852 +:101C90003230314604F1330A00268DF8073008222D +:101CA0000DF10703284602F045F99DF807304FEA89 +:101CB000C6099E4209F5A47720D394F83231502BFF +:101CC00028BF50238DF80730B8F1000F08D13946EE +:101CD00009F24F170DF107030722284602F02AF9EF +:101CE000002604F233149DF8073007EBC6019E422C +:101CF0000DD30731C80802B0BDE8F0870AEB060330 +:101D0000082239462846013602F014F9CDE7A31916 +:101D100008222846013602F00DF9E4E713B504461F +:101D2000084600212022234601900160C0F80310DC +:101D300002F000F9231D01980222202102F0FAF896 +:101D4000631D01980322222102F0F4F8A31D0198DB +:101D50000322252102F0EEF8019804F10803102275 +:101D6000282102F0E7F8072002B010BDF7B5047F84 +:101D700005460E462CB1838A122B02D9012003B0EE +:101D8000F0BD0023072228460096194601F096FF71 +:101D9000731C0122072100932846002301F08EFFC7 +:101DA000D4B9B31C052208212846009323460D24EC +:101DB00001F084FFB378102BE0D83746BB1BB27814 +:101DC000934210D307342B7FA88AE408B3B9844226 +:101DD00094BF00200120D2E7AB8A0824DB00083B37 +:101DE000DB08B370E6E7FB1C214608222846009377 +:101DF00000230834013701F061FFDFE7201A18BF24 +:101E00000120BCE7F7B5047F05460E462CB1838A56 +:101E1000CA2B02D9012003B0F0BD002308222846B6 +:101E20000096194601F04AFF731CD4B908220093AA +:101E3000234610241146284601F040FF7378C82B32 +:101E4000E8D801235F1C7278013B934210D307341A +:101E50002B7FA88AE408B3B9844294BF00200120F4 +:101E6000D9E7AB8A0824DB00083BDB087370E5E7A1 +:101E7000F3192146082228460093002301F01EFF93 +:101E800008343B46DEE7201A18BF0120C3E70000F4 +:101E9000F7B50D4604460021164628468122FFF775 +:101EA00075FD234608220021284602F043F894F9E4 +:101EB00001206378002AB8BF7F238DF807309EB9D0 +:101EC0000F270DF1070307220821284602F032F8F8 +:101ED000002602349DF8073007EBC6019E4205D369 +:101EE0000731C80803B0F0BD0827F1E7A31908229D +:101EF0002846013602F01EF8ECE70000F7B50E4662 +:101F00000546002114463046CE22FFF73FFD2B4602 +:101F100028220021304602F00DF82B7AC82B28BF6A +:101F2000C8238DF807308CB930240DF1070308223F +:101F30002821304601F0FEFF2F467B1B9DF807202D +:101F4000934205D3E01DC00803B0F0BD2824F3E799 +:101F500007F109032146082230460834013701F011 +:101F6000E9FFEAE7F7B5047F05460E4634B1838AF8 +:101F7000B3F5827F02D9012003B0F0BD0123102206 +:101F800000212846009601F099FEDCB9B31C092215 +:101F90001021284600932346192401F08FFE7388F0 +:101FA000B3F5807FE7D83746BB1B7288934210D3C6 +:101FB00007342B7FA88AE408B3B9844294BF002079 +:101FC0000120D9E7AB8A1024DB00103BDB087380CB +:101FD000E5E73B1D214608222846009300230834EC +:101FE000013701F06BFEDFE7201A18BF0120C3E7BD +:101FF00030B50A44084D91420DD011F8013B5840CC +:10200000082340F30004013B2C4013F0FF0384EA53 +:102010005000F6D1EFE730BD2083B8EDF7B5384A70 +:102020006B46106851686A4603C308233549364831 +:1020300005F0A6FF0446002833D10A25334A6B4633 +:10204000106851686A4603C3082331492E4805F0D9 +:1020500097FF0446002849D00369B3F5E01F45D82F +:10206000B0F8661040F2374291423FD1294A02440B +:1020700002F15C018B4239D35C3B234900209E1A5C +:10208000FFF7B6FF04F16401074632460020FFF770 +:10209000AFFFA3689F4229D1E368984208BF00259B +:1020A00024E00369B3F5E01F27D8418B40F23742A3 +:1020B000914220D1174A024402F110018B4218D3F9 +:1020C000103B114900209D1AFFF792FF04F11801FF +:1020D00006462A460020FFF78BFFA3689E4202D1E6 +:1020E000E368984201D00D25A8E70025284603B0F3 +:1020F000F0BD1025A2E70C25A0E70B259EE700BF49 +:1021000028800008DCFF1B00000004083180000864 +:1021100090FF1B000800FCF710B5037C044613B9C0 +:10212000006804F02DF9204610BD00000023BFF325 +:102130005B8FC360BFF35B8FBFF35B8F8360BFF3C5 +:102140005B8F7047BFF35B8F0068BFF35B8F704797 +:1021500070B505460C30FFF7F5FF044605F108069B +:102160003046FFF7EFFFA04206D96D683046FFF713 +:10217000E9FF2544281A70BD3046FFF7E3FF201A17 +:10218000F9E7000070B505464068A0B105F10C06FE +:1021900005F10800FFF7D6FF04463046FFF7D2FFEF +:1021A000844204F1FF34304694BF6D680025FFF788 +:1021B000C9FF2C44201A70BD38B50C460546FFF700 +:1021C000C7FFA04210D305F10800FFF7BBFF04448E +:1021D0006868BFF35B8FB4FBF0F100FB1144012092 +:1021E000AC60BFF35B8F38BD0020FCE72DE9F04108 +:1021F000144607460D46FFF7C5FF844228BF044634 +:10220000D4B1B84658F80C6B4046FFF79BFF3044FA +:10221000286040467E68FFF795FF331A9C4203D83A +:1022200001206C60BDE8F081A41B6B603B6820441A +:10223000AB60E8600220F5E72046F3E738B50C46CE +:102240000546FFF79FFFA04210D305F10C00FFF7F2 +:1022500079FF04446868BFF35B8FB4FBF0F100FBC7 +:1022600011440120EC60BFF35B8F38BD0020FCE718 +:102270002DE9FF418846694607466C46FFF7B6FFE1 +:10228000002506B204EBC606B4420AD0626808EB29 +:10229000050120680834FFF753FB54F8043C1D4443 +:1022A000F2E729463846FFF7C9FF284604B0BDE8E3 +:1022B000F0810000F8B505460C300F46FFF742FFED +:1022C00005F1080604463046FFF73CFFA0423046C1 +:1022D00088BF6C68FFF736FF201A386020B12C6881 +:1022E0003046FFF72FFF2044F8BD000073B51446B9 +:1022F00006460D46FFF72CFF8442019028BF044696 +:10230000DCB101A93046FFF7D5FF019B33B9326834 +:10231000C5E90233C5E9002401200CE09C42286095 +:1023200038BF0194019884426860F5D93368241A53 +:102330000220AB60EC6002B070BD2046FBE70000FD +:102340002DE9FF410F4669466C46FFF7CFFF00B20B +:10235000002604EBC005AC4209D0D4F80480B819BB +:1023600054F8081B42464644FFF7EAFAF3E73046C2 +:1023700004B0BDE8F081000038B50546FFF7E0FF86 +:10238000044601462846FFF717FF204638BD0000E7 +:1023900008B103F0F5BF70477047000010B4134652 +:1023A000026814680022A4465DF8044B60470000F0 +:1023B00000F5805090F861047047000000F58050EF +:1023C00090F85A047047000000F5805090F96004BE +:1023D000704700004E207047302383F3118800F5CA +:1023E0008052D2F8A434D2F8A0041844D2F89C3415 +:1023F0001844D2F884341844D2F894341844D2F8EB +:1024000090341844002383F31188704700F58050FE +:10241000C0F85C14012070472DE9FF47054600F520 +:1024200080500C46BDF830A090F85A1499B1D0F8FD +:1024300080140131C0F8801421688E0006D4217BFD +:1024400008290BD9667B0EB10F2907D9D0F884343F +:102450000133C0F884344FF0FF30A5E0302181F320 +:102460001188696BD1F8C46016F4001813D0D0F845 +:1024700088140131C0F88814D0F88C14002940F079 +:10248000968021462846CDF800A000F0E1FF002309 +:1024900083F3118888E026684FF04809D1F8C470AA +:1024A000002EE96AC7F30447B4BF46F08046B6047D +:1024B00019FB0719C9F80060216849004FEA076154 +:1024C00044BF46F00056C9F80060267B41EA064149 +:1024D0007E01C9F8041094F80DC0BCF1000F27D09C +:1024E00041F44011C9F80410D0F8B8140131C0F813 +:1024F000B814A91901F58351087D40F02000087532 +:10250000207BCDE9022300F0F5FF0330DDE9022353 +:1025100080105FFA88F108F1010881420FDA04EBBC +:10252000810C09EB8101DCF804C0C1F808C0F0E7B8 +:10253000A91901F58351087D6CF34510DFE70120EF +:10254000696B04F10C0CB840C1F8D000A919204601 +:1025500001F58251C1E90623A7F17D01C9B205EB5E +:10256000411150F804EB604541F804EBF9D10088C3 +:102570002E44088041F27001775006F580560AF02B +:10258000030196F8740041F0100120F01F00014390 +:1025900086F87410002181F3118821462846CDF871 +:1025A00000A000F055FF012004B0BDE8F087002036 +:1025B0006DE700002DE9F04700F58056044696F8D7 +:1025C0005A54002D40F00381037E032B40F0948089 +:1025D00028462B462F465FFA80FC944510DA01EB23 +:1025E000CC0E51F83CC0BCF1000F04DBDEF804C097 +:1025F000BCF1000F02DB01370130ECE70133FBE7F0 +:10260000302080F31188606BF3B9D0F8803043F04C +:102610000203C0F880304E23606B002F6FD1D0F8DA +:10262000803043F00103C0F880306A4B6A4A1B686F +:1026300003F1805303F52C539B009342236340F234 +:10264000B080664800F0B6FE4D2B42D8DFF884819A +:102650004FEA034EDFF88891D8F800C04EEA8C0E9E +:10266000C0F884E00CF1805000F52C508000E0614F +:1026700003EB0C00D4F834C0C3F14E03C8F80000DB +:10268000DCF8800040F03000CCF880004FF0000C07 +:10269000D4F81C80E6465FFA8CF08242BCDD01EB88 +:1026A000C00A51F83000002810DBDAF804A0BAF1B3 +:1026B000000F0BDA09EA00400AF07F0A40EA0A003C +:1026C00040F0084048F82E000EF1010E0CF1010C0C +:1026D000E1E7836923F00103836100F071FE0646A0 +:1026E000636B9B69D90704D500F06AFE831BFA2B44 +:1026F000F6D9002383F311882846BDE8F087B7EBAD +:10270000530F3DD2DFF8CCE04FEA074CDEF8003043 +:102710004CEA830CC0F888C003F1805003EB4703F8 +:10272000002700F52C50CEF80030BC468000206217 +:10273000606BD0F8803043F00C03C0F88030D4F8E0 +:1027400020E0FBB29A427FF770AF51F8330001EB03 +:10275000C3080028D8F8043001DB002B0EDB20F082 +:10276000604023F0604340F0005043F000434EF8D7 +:102770003C000EEBCC000CF1010C43600137E0E7AC +:10278000836923F00103836100F01AFE0646636B40 +:102790009B69DA07ADD500F013FE831BFA2BF6D93F +:1027A000A7E7626B936923F00103936100F008FED1 +:1027B0000746636B9B69DB0705D500F001FEC31B71 +:1027C000FA2BF6D995E7012586F85A5491E70025AA +:1027D00092E700BF304F0020FCB500403C8000086D +:1027E0000000FF0713B500F580540191E06CFFF77E +:1027F000C9FC1F280AD920220199E06CFFF738FD97 +:10280000A0F120035842584102B010BD0020FBE760 +:1028100008B5302383F3118800F58050C06CFFF7B2 +:1028200085FC002383F3118808BD000000220260AC +:1028300082814260826070470022002310B5C0E9A7 +:102840000023002304460C3020F8043CFFF7EEFF81 +:10285000204610BD2DE9F0479A4688B007468846C5 +:102860009146302383F3118807F580546846FFF7BB +:10287000E3FFE06CFFF76CFC1F282ED9202269468D +:10288000E06CFFF779FD202827D194F85A3423B360 +:1028900003AD444605AB2E46083403CE9E4244F8B1 +:1028A000080C44F8041C3546F5D130682060B38824 +:1028B000A380DDE90023C9E90023BDF80830AAF8A8 +:1028C0000030002383F3118853464A464146384678 +:1028D00008B0BDE8F04700F081BD002080F311880A +:1028E00008B0BDE8F08700002DE9F84F064688469D +:1028F0001022002104303546FFF748F806F58157CD +:10290000264B183745F8383B2C4620462034FFF735 +:1029100093FFA742F9D106F580544FF4805306F592 +:10292000A3594FF0000AA5630025E76406F5835715 +:1029300009F118094FF0000B18376564C4E90F3529 +:10294000012384F8483084F85030A7F1180020376C +:1029500047E910ABFFF76AFF47F8285C4F45F4D111 +:1029600084F86084A4F86254A4F86454A4F866540B +:1029700084F86854A4F86A54A4F86C54A4F86E540B +:1029800084F87054B8F1000F02D0054800F012FD31 +:10299000044B30467363BDE8F88F00BF7C800008AD +:1029A0006080000800A00040044B10B51978044670 +:1029B0004A1C1A70FFF798FF204610BD2D4F0020CB +:1029C0002DE9F04300295AD02E4E2F48B6FBF1F4E2 +:1029D00081428CBF0A201120431EB4FBF0F700FB9C +:1029E0001740DDB220B1022B1846F5D8002032E0A6 +:1029F0007B1EB3F5806F2ED2C5EBC5084FF47A73FA +:102A000008F103044FEAE40EC4F3C7040EF1010910 +:102A1000281B0EFB033E5FFA80FC59FA80F0BEFBD8 +:102A2000F0F0B0F5617F18DC83B2601C5CFA80F0D6 +:102A30007843B6FBF0F08142D8D1611E0F29D5D87A +:102A40000CF1FF310729D1D8012013805780107174 +:102A5000547182F806C0BDE8F08308F1FF34E0103D +:102A6000C4F3C70400F1010E2D1B00FB03335FFA12 +:102A700085FC5EFA85F5B3FBF5F39BB2D5E7084616 +:102A8000E9E700BF00B4C4043F420F0030B50D4B6E +:102A900005200D4D1C786C438C420ED159780120D5 +:102AA000518099785171D9789171197911715B7947 +:102AB00003EB83035B00138030BD013803F1060391 +:102AC000E8D1F9E7C080000840420F0038B540F275 +:102AD0007772436B154CC3F8BC200722436BC3F8D5 +:102AE000C8202268416B930043F4C023C1F8A03092 +:102AF00002F1805302F16C01456B03F52C53EA326D +:102B000089009B00226041F0E061094A4362C5F8F8 +:102B1000C01003F5D87103F56A73C1629342036371 +:102B200002D9044800F046FC38BD00BF304F0020F9 +:102B3000FCB500403C8000082DE9F04F00F58055C1 +:102B40001F4689B0044695F8603489469046012BAB +:102B500004D90026304609B0BDE8F08FA04A52F8EB +:102B6000231009B942F823009E48C4F81490017854 +:102B70002776C9B9302383F311889B4BD3F8EC2017 +:102B800042F48072C3F8EC20D3F8942042F48072AF +:102B9000C3F89420D3F8942022F48072C3F89420D0 +:102BA0000123037081F3118895F859647EB93023AD +:102BB00083F311880321132001F0CAFF032115209C +:102BC00001F0C6FF012385F8593486F311883023BC +:102BD00083F31188626B936923F01003936100F013 +:102BE000EFFB8246636B9E6916F0080609D000F081 +:102BF000E7FBA0EB0A03FA2BF4D9002686F3118831 +:102C0000A8E79A6942F001029A6100F0D9FB824676 +:102C1000636B9A69D00706D400F0D2FBA0EB0A03DD +:102C2000FA2BF5D9E9E79A694FF0000A42F002025F +:102C30009A61636BC3F854A08AF3118804F5825B30 +:102C4000E86CFFF773FA0BF1180B2022002168469D +:102C5000FEF79CFE02A8FFF7E9FD6A460BEB0603B0 +:102C60000DF1180ECDF818A094460833BCE8030007 +:102C7000F44543F8080C43F8041C6246F4D1DCF830 +:102C8000000020361860B6F5806F9CF804201A7199 +:102C9000DBD1002304F5A35249462046023285F8D1 +:102CA000583485F85B34FFF78BFE064690B9626BAB +:102CB000936923F00103936100F082FB0546636B87 +:102CC0009B69D9077FF545AF00F07AFB431BFA2BD0 +:102CD000F5D93EE795F86634C5F87494591E95F811 +:102CE0006734626B013B1B0243EA416395F8681449 +:102CF00001390B43B5F86414013943EA0143D36148 +:102D0000B8F1000F36D004F5A352414620460A32EE +:102D1000FFF7BCFE90B9626B936923F001039361E6 +:102D200000F04EFB0546636B9B69DA077FF511AF38 +:102D300000F046FB431BFA2BF5D90AE795F86F2400 +:102D4000C5F87884511E95F87024636B013A12011E +:102D500042EA012295F86E1401390A43B5F86C1461 +:102D6000013942EA014242F40002DA604FF4206283 +:102D7000636B9A64636B4FF000082046C3F8BC8015 +:102D8000FFF7A4FE85F861846FF04042636B1A651B +:102D9000164A636B5A654FF00222636B9A654FF0D7 +:102DA000FF32636BC3F8E0200322636B9742DA655E +:102DB0003FF4D0AE626B936923F00103936100F09E +:102DC000FFFA0746636B9B69DB0705D500F0F8FA4D +:102DD000C31BFA2BF6D9BCE6012385F85A34B9E6B1 +:102DE000284F00202C4F00200044025855020002BA +:102DF0002DE9F04F00F5A5578BB004469046994653 +:102E00004FF0000B41F2700A1037636BD3F8D830E3 +:102E100023FA0BF3DD0752D504EB4B114FEA4B12AB +:102E200051440B7918074AD404F58056D6F88C34EF +:102E30000133C6F88C3447E902890B79990604EB13 +:102E4000020148BFD6F8BC34514444BF0133C6F830 +:102E5000BC340B7943F008030B71DB0724D596F8DB +:102E60005B340BB302A8019204F58355FFF7E4FC31 +:102E7000019A05AB154405F1080C2868083555F88A +:102E8000041C1A46654503C21346F6D1286802A9F8 +:102E900010602046AA889A800123ADF8103023687C +:102EA000CDE902891B6C9847D6F8B034D6F85C049B +:102EB0000133C6F8B03410B103681B6998470BF1B1 +:102EC000010BBBF1200FA0D10BB0BDE8F08F0000CB +:102ED0002DE9F04F0F468DB0044600F073FA82469C +:102EE0008946002F5BD1636BD3F8A02012F4FE0F4C +:102EF00003D100200DB0BDE8F08FD3F8A4209201DB +:102F000041BF04F58051D1F8A0240132C1F8A024BA +:102F1000D3F8A4205606ECD0D3F8A450666AC5F3C3 +:102F200005254823E8464FF0000B03FB05664046A5 +:102F3000FFF77CFC326851004ABF22F06043C2F3C5 +:102F40008A4343F00043920048BF43F0804300931C +:102F5000736813F400131BBF012304F580528DF82E +:102F60000D308DF80D301EBFD2F8C0340133C2F8D9 +:102F7000C034F38803F00F038DF80C309DF80C007B +:102F800000F0B8FA5FFA8BF3984225D9F2180CA931 +:102F90000BF1010B127A0B4403F82C2CEEE7012FF6 +:102FA000A7D1636BD3F8B02012F4FE0FA1D0D3F8F1 +:102FB000B420950141BF04F58051D1F8A02401321D +:102FC000C1F8A024D3F8B420500692D0D3F8B4505E +:102FD000A66AC5F30525A4E7EFB9636BC3F8A8504B +:102FE00004A807ADFFF728FC98E80F0007C52B8061 +:102FF0000023204604A9ADF81830236804F5805456 +:103000001B6CCDE904A9984758B1D4F89834013322 +:10301000C4F898346EE7012FE2D1636BC3F8B8505F +:10302000DEE7D4F89C3401200133C4F89C3461E716 +:103030002DE9F04105460F4600F58054012639463A +:103040002846FFF745FF10B184F85B64F7E7D4F832 +:10305000B034D4F85C040133C4F8B03420B1036850 +:10306000BDE8F0411B691847BDE8F081436BF0B53E +:103070001A6C12F47F0F2BD01B6C00F5805441F2B8 +:1030800070054FF0010CC4F8B4340023471900EB6D +:1030900043125E012A44117911F0020F15D049073D +:1030A00013D4B959466B0CFA01F1D6F8CCE011EA09 +:1030B0000E0F0AD0C6F8D410117941F00401117135 +:1030C000D4F894240132C4F894240133202BDED1A7 +:1030D000F0BD000010B5264C264B22680AB340B361 +:1030E0001A6D92050FD54FF400721A6500F06AF957 +:1030F00050EA01020B4602D0013861F1000302469A +:103100002068FFF775FE1B4A136D9B012AD52368C3 +:103110004FF0007103F580531165012283F861249B +:1031200020E001221A6510221A654FF480521A65B8 +:1031300010BD196DC80702D4196D490705D50521C1 +:10314000104619650021FFF773FF0A4B1A6DD00670 +:1031500002D41A6D510605D5502201211A65206846 +:10316000FFF766FF2068BDE81040FFF77FBF00BF94 +:10317000284F002000A0004008B5302383F31188B9 +:10318000FFF774FF002383F3118808BD436BD3F866 +:10319000C00010F07C5005D0D3F8C40080F40010BB +:1031A000C0F340507047000008B5302383F3118806 +:1031B00000F58050C06CFEF7CBFF002383F311882D +:1031C00043090CBF0120002008BD000000F580531A +:1031D00093F8612462B1416B8A6922F001028A612D +:1031E000D3F8A4240132C3F8A424002283F8612474 +:1031F000704700002DE9F743302181F3118800F575 +:103200008251002541F2700E4FF00108183100F58F +:10321000805C00EB45147444267977071CD4F606CD +:103220001AD58E69D0F8349008FA06F6D9F8CC7021 +:103230003E4211D04F6801970F689742019F9F410E +:103240000AD2C9F8D460267946F004062671DCF863 +:1032500090440134CCF8904401352031202DD8D150 +:10326000002383F3118803B0BDE8F083F8B51E4650 +:1032700000230F46054613701446FFF795FF80F0B4 +:10328000010038701EB12846FFF780FF2070F8BD9E +:103290002DE9F04F85B099460D468046164691F8C7 +:1032A00000B0DDE90EA302931378019300F08AF8D1 +:1032B0002B7804460F4613B93378002B41D02246B1 +:1032C0003B464046FFF796FFFFF756FFFFF77EFFAE +:1032D0004B4632462946FFF7C9FF2B7833B1BBF185 +:1032E000000F03D0012005B0BDE8F08F337813B193 +:1032F000019B002BF6D108F5805303935445029BA4 +:1033000077EB03031DD2039BD3F85C04C8B10368B9 +:10331000AAEB04011B6898474B46324629464046B3 +:10332000FFF7A4FF2B7813B1BBF1000FDAD133788C +:1033300013B1019B002BD5D100F044F804460F4691 +:10334000DCE70020CFE7000008B50020FFF7C2FE51 +:10335000BDE8084001F0A6B808B50120FFF7BAFEA5 +:10336000BDE8084001F09EB800B59BB0EFF30981BD +:1033700068226846FEF7E4FAEFF30583014B9B6B86 +:10338000FEE700BF00ED00E008B5FFF7EDFF00002D +:1033900000B59BB0EFF3098168226846FEF7D0FACA +:1033A000EFF30583014B5B6BFEE700BF00ED00E030 +:1033B000FEE700000FB408B5029802F0BDFAFEE780 +:1033C00003F00CB802F0EEBF0139C9B201299EBF6B +:1033D00000EBC1000023C0E901337047F8B51B883A +:1033E00005460E465B0715D4044600F11007BC42A3 +:1033F00010D0636853B12B682846DB6B9847A368ED +:10340000C1B23246606898470834F0E7A368002BE1 +:10341000F1D1F9E70120F8BD37B56D4685E8060022 +:1034200042680AB9846824B1C26872B9026962B993 +:10343000012400EBC4000134021D95E8030082E87A +:10344000030001201C7003B030BD0020FBE700002A +:103450002DE9F04F89B004460E460546BDF8487088 +:1034600000F110084FF000094FF0000A07F00407C0 +:103470004FF0000BA84539D06B680BB9AB684BB166 +:1034800057B923682046DB6B9847AB68C1B2324618 +:10349000686898470835EDE7B9F1000FFAD133466F +:1034A00003AA06F1080EADF80890CDE900AB186844 +:1034B000083353F8041C94467345ACE80300624695 +:1034C000F5D118684FF00109CCF800009B88ACF8E2 +:1034D0000430FFF777FF0423ADF808302368CDE907 +:1034E00000011B6C694620469847D3E7012009B0CC +:1034F000BDE8F08F082817D909280CD00A280CD06D +:103500000B280CD00C280CD00D280CD00E2814BF82 +:103510004020302070470C20704710207047142046 +:103520007047182070472020704700002DE9F041B7 +:10353000456A15B94162BDE8F0814B68AC4623F09D +:103540006047C3F38A464FEAD37EC3F3807816EA16 +:10355000230638BF3E462B465A68BEEBD27F22F088 +:1035600060440AD0002A18DAA40CB44217D19D4254 +:103570000FD10D60DEE71346EEE7A74207D102F058 +:103580008044C2F3807242450BD054B1EFE708D2B9 +:10359000EDE7CCF800100B60CDE7B44201D0B442A7 +:1035A000E5D81A689C46002AE5D11960C3E70000F7 +:1035B0002DE9F047089D01F0070400EBD1004FF41E +:1035C0007F494FEAD508224405F00705944201D10E +:1035D000BDE8F08704F0070705F0070A111B08EBA8 +:1035E000D50E57453E4613F80EC038BF5646C6F1B5 +:1035F00008068E4228BF0E46E108415C344435443B +:10360000B94029FA06F721FA0AF1FFB28CEA010162 +:1036100047FA0AF739408CEA010C03F80EC0D5E7E7 +:1036200080EA0120082341F2210201B2013B40005F +:10363000002980B2B8BF504013F0FF03F5D17047A6 +:1036400038B50C468D18A54200D138BD14F8011BC1 +:10365000FFF7E6FFF7E7000042684AB11368818987 +:103660004360438901339BB29942438138BF8381D0 +:103670001046704770B588B0044620220D46684653 +:103680000021FEF783F920460495FFF7E5FF024687 +:1036900060B16B46054608AE1C46083503CCB44203 +:1036A00045F8080C45F8041C2346F5D1104608B02F +:1036B00070BD0000082817D909280CD00A280CD0A2 +:1036C0000B280CD00C280CD00D280CD00E2814BFC1 +:1036D0004020302070470C20704710207047142085 +:1036E000704718207047202070470000082817D91D +:1036F0000C280CD910280CD914280CD918280CD94E +:1037000020280CD930288CBF0F200E2070470920AC +:1037100070470A2070470B2070470C2070470D201F +:10372000704700002DE9F843078C0446072F1ED987 +:1037300000254FF6FF73D0E90298C5F12006A5F1E8 +:10374000200029FA05F1083508FA06F628FA00F0F3 +:10375000314301431846C9B2FFF762FF402D0346CB +:10376000EBD13A46E169BDE8F843FFF769BF4FF690 +:10377000FF70BDE8F883000010B54B6823B9CA8A12 +:1037800063F30902CA8210BD04691A681C600361F0 +:10379000C38A013BC3824A60EFE700002DE9F84F7E +:1037A0001D46CB8A0F468146C3F30901924605297F +:1037B0000B4630D00020AAB207F11A049EB21FFABD +:1037C00080F8042E0FD8904503F1010306D30A4474 +:1037D000FB8A62F309030120FB821AE01AF80060F9 +:1037E0000130E654EAE79045F1D2A1F1050B1C2324 +:1037F0007C68BBFBF3F203FB12BB1FFA8BF6002CB9 +:1038000045D14846FFF728FF044638B978606FF085 +:103810000200BDE8F88F4FF00008E6E700260660DA +:103820007860ADB24FF0000B454510D90AEB0803A4 +:10383000221D13F8011B08F101089155B1B21FFABE +:1038400088F81B292BD0454506F10106F1D8FB8AE3 +:10385000C3F30902154465F30903BCE701321C46B2 +:1038600092B22368002BF9D16B1F0B441C21B3FBD0 +:10387000F1F301339BB29A42D3D2BBF1000FD0D106 +:103880004846FFF7E9FE20B9C4F800B0BFE70122BF +:10389000E7E7C0F800B05E4620600446C1E7454552 +:1038A000D5D94846FFF7D8FE08B92060AFE7C0F881 +:1038B00000B0002620600446B6E700002DE9F04F76 +:1038C0001C46074688462DED028B83B05B6901924A +:1038D000002B00F0A780238C2BB1E269002A00F0B6 +:1038E000A180072B35D807F10C00FFF7B5FE054680 +:1038F00038B96FF00205284603B0BDEC028BBDE875 +:10390000F08F14220021FEF741F8228CE16905F1C5 +:103910000800FEF715F8208C48F00041013080B215 +:10392000FFF7E4FEFFF7C6FE013880B220840130C5 +:10393000287438466369228C1B782A4403F01F03DD +:1039400063F03F03137269602946FFF7EFFD01251D +:10395000D1E702330722C18A9BB20633B3FBF2F3ED +:10396000828A9BB2521A92B29342C2D84FF0000997 +:1039700000F10C034FF0800A4E464D4608EE103A17 +:1039800018EE100AFFF768FE83460028B1D0142213 +:103990000021FDF7FBFF002E3AD1019B0222ABF87C +:1039A00008300BF1080E1FFA82FC218C0CF101008B +:1039B000BCF1060F80B201D88E422BD3FFF796FEE2 +:1039C0008E4208BF4FF0400AFFF774FE626901386B +:1039D000013512781BFA80F1013002F01F022DB27E +:1039E00042EA491289F001094AEA020A48F0004213 +:1039F00081F808A059468BF810003846CBF804200F +:103A00004FF0000AFFF792FD238CB342B8D172E762 +:103A10000022C6E7E169895D01360EF80210B6B2F0 +:103A20000132C0E76FF0010565E70000F8B5154603 +:103A30000E463022002104461F46FDF7A7FF069BD5 +:103A4000B5F5001FA760636004F11000079B34BF49 +:103A50006A094FF6FF72E661A362002397B29A42A9 +:103A600006D800230360A782E3822383E360F8BDC6 +:103A70000660013330462036F1E7000003781BB9B9 +:103A80004BB2002BC8BF0170704700000078704730 +:103A9000F8B50C46C969074611B9238C002B37D1FC +:103AA000257E1F2D34D8387828BB228C072A2CD8A5 +:103AB000268A36F003032BD14FF6FF70FFF7C0FDC7 +:103AC00020F0010031024FF6FF72400441EA056127 +:103AD000400C41EA4025234629463846FFF7EEFED2 +:103AE000002807DD626913780133DBB21F2B88BF22 +:103AF00000231370F8BD218A2D0645EA01250543F0 +:103B00002046FFF70FFE0246E5E76FF00300F1E7FE +:103B10006FF00100EEE7000070B58AB0044616466B +:103B20000021282268461D46FDF730FFBDF83830D9 +:103B300069462046ADF810300F9B05939DF8403044 +:103B40008DF81830119B0793BDF84830CDE9026518 +:103B5000ADF82030FFF79CFF0AB070BD2DE9F041B1 +:103B6000D36905460C4616460BB9138C5BBB377EF2 +:103B70001F2F28D895F80080B8F1000F26D03046C6 +:103B8000FFF7D0FD337821020246284641EAC331CF +:103B9000338A41EA080141EA076141EA03413346B9 +:103BA00041F08001FFF78AFE00280ADD3378012BFF +:103BB00007D1726913780133DBB21F2B88BF002352 +:103BC0001370BDE8F0816FF00100FAE76FF00300B9 +:103BD000F7E70000F0B58BB004460D46174600210C +:103BE000282268461E46FDF7D1FE9DF84C30294636 +:103BF00020465A1E534253416A468DF800309DF8C4 +:103C00004030ADF81030119B05939DF848308DF889 +:103C10001830149B0793BDF85430CDE90276ADF807 +:103C20002030FFF79BFF0BB0F0BD0000406A00B1F1 +:103C300004307047436A1A68426202691A6003617D +:103C4000C38A013BC38270472DE9F041D0F8208040 +:103C500014461D46184E4146002709B9BDE8F081BB +:103C6000D1E90223A21A65EB0303964277EB030323 +:103C70001ED2036A8B420DD1FFF77EFD036A1B68DB +:103C8000036203690B60C38A0161013B016AC3825D +:103C90008846E2E7FFF770FD0B68C8F8003003695B +:103CA0000B60C38A0161013BC382D8F80010D4E7DE +:103CB00088460968D1E700BF80841E002DE9F04FD7 +:103CC0008BB00D4614469B46DDF850908046002888 +:103CD00000F01881B9F1000F00F01481531E3F2B42 +:103CE00000F21081012A03D1BBF1000F40F00A81DC +:103CF0000023CDE90833B8F81430B5EBC30F4FEA11 +:103D0000C30703D300200BB0BDE8F08F2B199F42EF +:103D1000D8F80C3036BF7F1B2746FFB21BB9D8F846 +:103D20001030002B7AD0272D4DD8C5F1280600235E +:103D30002946B742009308ABD8F808002CBFF6B26A +:103D40003E46A7EB060A354432465FFA8AFAFFF789 +:103D50002FFCB8F81430282103F10053053BDB0099 +:103D60000493D8F80C300393039B13B1BAF1000FFE +:103D70002CD1D8F8100040B1BAF1000F05D008AB33 +:103D80005246691A0096FFF713FC38B2002FB9D0DB +:103D900066070AD00AAB624203EBD40102F00702C5 +:103DA00011F8083C134101F8083C082C3DD9102CAF +:103DB00040F2B580202C40F2B780BBF1000F00F03C +:103DC0009C80082335E0BA460026C2E7049BE02B1E +:103DD00028BFE02306930B44AB42059315D95A1B29 +:103DE0000398691A0096924508AB00F1040034BFAD +:103DF0005246D2B20792FFF7DBFB079A1644AAEBB2 +:103E0000020A1544F6B25FFA8AFA049B069A0599EB +:103E10009B1A0493039B1B680393A5E700933A4600 +:103E200008AB2946D8F80800ADE7BBF1000F13D066 +:103E30000123B4EBC30F6BD0082C12D89DF82030AF +:103E4000621E23FA02F2D50706D54FF0FF3202FABE +:103E500004F423438DF820309DF8203089F8003099 +:103E600051E7102C12D8BDF82030621E23FA02F25E +:103E7000D10706D54FF0FF3202FA04F42343ADF820 +:103E80002030BDF82030A9F800303CE7202C0FD8B6 +:103E90000899631E21FA03F3DA0705D54FF0FF32C4 +:103EA00002FA04F40C430894089BC9F800302AE78E +:103EB000402C2AD0611EC4F12102A4F12103DDE9C6 +:103EC000086526FA01F105FA02F225FA03F3114317 +:103ED0001943CB0711D50122A4F12003C4F120011D +:103EE00002FA03F322FA01F1A2400B43524263EBC0 +:103EF000430332432B43CDE90823DDE90823C9E915 +:103F0000002300E76FF00100FDE66FF00800FAE61D +:103F1000082CA1D9102CB4D9202CEED8C4E7BBF1C1 +:103F2000000FAED0022384E7BBF1000FBCD0042306 +:103F30007FE70000012A30B5144638BF012485B060 +:103F40000025402C28BF4024012ACDE9025518D86D +:103F50001B788DF8083063070AD004AB624203EB8C +:103F6000D40502F0070215F8083C934005F8083C18 +:103F7000034600912246002102A8FFF719FB05B075 +:103F800030BD082AE4D9102A03D81B88ADF80830C0 +:103F9000E1E7202A95BF1B68D3E900230293CDE90E +:103FA0000223D8E710B5CB681BB98B600B618B82FD +:103FB00010BD04691A681C600361C38A013BC38297 +:103FC000CA60F0E703064CBFC0F3C0300220704760 +:103FD00008B50246FFF7F6FF022806D15306C2F3E2 +:103FE0000F2001D100F0030008BDC2F30740FBE73A +:103FF0002DE9F04F93B004460D46CDE903230A683E +:104000001046FFF7DFFF0228824614BFC2F30626E0 +:104010000026002A80F2F88112F0C04940F0F481B5 +:10402000097B002900F0F081022803D02378B342F5 +:1040300040F0ED81C2F3046310462944069302F078 +:104040007F030593FFF7C4FF059B002283464FEAD9 +:104050008348002348EA0A4848EA4668CE78CDE912 +:104060000823F30948EA0008029368D0059B02463A +:1040700008A92046009353466768B847002800F017 +:10408000C981276A4FB9414604F10C00FFF7F2FAE3 +:10409000074690B96FF0020055E03B6998450DD096 +:1040A0003F68002FF9D1414604F10C00FFF7E2FA16 +:1040B00007460028EED0236A3B60276297F817C0B6 +:1040C00006F01F08CCF3840CACEB0800A8EB0C0343 +:1040D0001FFA80FE0028B8BF0EF120001FFA83FEF1 +:1040E000B8BF00B2002B0793B8BF0EF12003D7E989 +:1040F0000221BCBF1BB2079352EA010338D0039BD5 +:104100004FF0000CDFF81CE39A1A049B63EB0101EB +:1041100096457CEB01032BD36B7B97F81AE0734534 +:1041200019D1029B002B78D0012821DC7868F8B9DE +:10413000DFF8ECC2944570EB010316D337E0276A31 +:1041400027B96FF00C0013B0BDE8F08F3B699845BC +:10415000B4D03F68F4E7B24890427CEB010301D34E +:104160000020F0E7029B002BFAD0079B0F2B17DCF7 +:10417000FA7DB3003946204602F0030203F07C03C7 +:104180001343FB75FFF7F8FA6B7BBB76029B3BB9D9 +:10419000FB7DC3F38402013262F38603FB75D0E733 +:1041A0006A7BBB7E9A42DBD1029B002B35D0B309E0 +:1041B000022B32D0039B142200210DA8BB60049B6C +:1041C000FB60FDF7E3FB039B0AA920460A93049BCF +:1041D000ADF83EB00B932B1D8DF840A00C932B7BBC +:1041E0008DF84180013BDBB2ADF83C30069B8DF889 +:1041F0004230059B8DF8433094F82C3083F0010356 +:104200008DF84430A3689847FB7DC3F384030133E2 +:1042100003F01F039B02FB82A2E7FB7DC6F3401263 +:10422000B2EBD31F40F0F980C3F38403434540F061 +:10423000FB80029AB6092B7B002A52D016F00106A9 +:1042400061D1032B40F2F380039B394604F10C004B +:10425000BB60049BFB60FB8A66F30903AE1DFB8217 +:1042600032462B7B033BDBB2FFF798FA00280CDACF +:1042700039462046FFF780FAFB7DC3F38403013300 +:1042800003F01F039B02FB8204E7AB88DDE908848F +:104290003B834FF6FF73C9F12000A9F1200228FAF1 +:1042A00009F109F1080904FA00F024FA02F20143C5 +:1042B00018461143C9B2FFF7B3F9B9F1400F0346ED +:1042C000E9D1B88231462A7B033AD2B2FFF7B8F976 +:1042D000FB7DB882DA43C2F3C01262F3C713FB75E9 +:1042E0003EE786B92E1D013B394604F10C00DBB2D6 +:1042F0003246FFF753FA0028BADB2A7B3146B88AE8 +:10430000013AD2B2E2E7F98A013BC1F30901DAB21C +:1043100004295BD8281D002307F11B069A4208D9FF +:1043200010F801CB013306F801C00131DBB20529D9 +:10433000F4D1039993420A9138BF043304992CBFF6 +:10434000002355FA83F30B9107F11B010C91796857 +:104350000E930D91291DFB8AADF83EB0C3F30903FE +:104360008DF840A08DF841801A44069B8DF84230AC +:10437000059BADF83C208DF8433094F82C3083F049 +:1043800001038DF844300023B88A7B602A7B013A10 +:10439000FFF756F93B8BB882834203D1A3680AA981 +:1043A0002046984720460AA9FFF7FCFDFB7DBA8A04 +:1043B000C3F38403013303F01F039B02FB823B8B97 +:1043C0009A420CBF00206FF01000BCE67B68002B07 +:1043D000AFD0052001E01C3033461E68002EFAD114 +:1043E000091A2E1D081D184401EB090C5FFA89F308 +:1043F000BCF11B0F9DD89A429BD916F8013B09F1DD +:10440000010900F8013BEFE76FF009009BE66FF050 +:104410000A0098E66FF00B0095E66FF00D0092E64B +:1044200040420F0080841E006FF00E008BE66FF09C +:104430000F0088E6EFF30983054968334A6B22F0E1 +:1044400001024A6383F30988002383F311887047CC +:1044500000EF00E0302080F3118862B60D4B0E4A69 +:10446000D96821F4E0610904090C0A430B49DA60B8 +:10447000D3F8FC2042F08072C3F8FC20084AC2F84E +:10448000B01F116841F0010111602022DA7783F832 +:104490002200704700ED00E00003FA0555CEACC5E0 +:1044A000001000E0302310B583F311880E4B5B68D9 +:1044B00013F4006314D0F1EE103AEFF309844FF0D7 +:1044C0008073683CE361094BDB6B236684F30988E6 +:1044D00001F0F8F910B1064BA36110BD054BFBE7E5 +:1044E00083F31188F9E700BF00ED00E000EF00E082 +:1044F0003F0400084204000808B5074B074A196842 +:1045000001F03D01996053680BB190689847BDE890 +:104510000840FFF7C7BF00BF00000240384F00202F +:1045200008B5084B1968890901F03D018A019A60B4 +:10453000054AD3680BB110699847BDE80840FFF7FA +:10454000B1BF00BF00000240384F002008B5084B43 +:104550001968090C01F03D010A049A60054A536983 +:104560000BB190699847BDE80840FFF79BBF00BFBB +:1045700000000240384F002008B5084B1968890D2B +:1045800001F03D018A059A60054AD3690BB1106AB2 +:104590009847BDE80840FFF785BF00BF0000024014 +:1045A000384F002008B5074B074A596801F03D0114 +:1045B000D960536A0BB1906A9847BDE80840FFF78D +:1045C00071BF00BF00000240384F002008B5084B03 +:1045D0005968890901F03D018A01DA60054AD36A08 +:1045E0000BB1106B9847BDE80840FFF75BBF00BFF9 +:1045F00000000240384F002008B5084B5968090CEC +:1046000001F03D010A04DA60054A536B0BB1906B6F +:104610009847BDE80840FFF745BF00BF00000240D3 +:10462000384F002008B5084B5968890D01F03D014D +:104630008A05DA60054AD36B0BB1106C9847BDE868 +:104640000840FFF72FBF00BF00000240384F002096 +:1046500008B5074B074A196801F03D019960536C92 +:104660000BB1906C9847BDE80840FFF71BBF00BF37 +:1046700000040240384F002008B5084B196889092A +:1046800001F03D018A019A60054AD36C0BB1106DAF +:104690009847BDE80840FFF705BF00BF000402408F +:1046A000384F002008B5084B1968090C01F03D018E +:1046B0000A049A60054A536D0BB1906D9847BDE8A6 +:1046C0000840FFF7EFBE00BF00040240384F002053 +:1046D00008B5084B1968890D01F03D018A059A60FB +:1046E000054AD36D0BB1106E9847BDE80840FFF73F +:1046F000D9BE00BF00040240384F002008B5074B68 +:10470000074A596801F03D01D960536E0BB1906EB4 +:104710009847BDE80840FFF7C5BE00BF000402404F +:10472000384F002008B5084B5968890901F03D0150 +:104730008A01DA60054AD36E0BB1106F9847BDE865 +:104740000840FFF7AFBE00BF00040240384F002012 +:1047500008B5084B5968090C01F03D010A04DA60FC +:10476000054A536F0BB1906F9847BDE80840FFF7BB +:1047700099BE00BF00040240384F002008B5084B26 +:104780005968890D01F03D018A05DA60054AD36F49 +:1047900013B1D2F880009847BDE80840FFF782BE09 +:1047A00000040240384F002000230C4910B51A467F +:1047B0000B4C0B6054F82300026001EB4300043300 +:1047C0004260402BF6D1074A4FF0FF339360D3602D +:1047D000C2F80834C2F80C3410BD00BF384F0020B6 +:1047E000E0800008000002400F28F8B510D910281A +:1047F00010D0112811D0122808D10F240720DFF87B +:10480000B4E00126DEF80050A04208D9002649E0B5 +:104810000446F4E70F240020F1E70724FBE706FA3B +:1048200000F73D4240D1214C4FEA001C3D4304EBD0 +:1048300000160EEBC000CEF80050C0E90123FBB219 +:104840004BB11B48836B43F001038363036E43F05A +:1048500001030366036E17F47F4F09D01448836B7E +:1048600043F002038363036E43F002030366036EA7 +:1048700054F80C00036823F01F030360056815F06B +:104880000105FBD104EB0C033D2493F80CC05F68D9 +:1048900004FA0CF43C6021240560446112B1987B59 +:1048A00000F056F93046F8BD0130ADE7E080000871 +:1048B00000450258384F002010B5302484F3118889 +:1048C000FFF792FF002383F3118810BD10B5044653 +:1048D000807B00F053F901231049627B03FA02F256 +:1048E0000B6823EA0203DAB20B604AB90C4A916BF7 +:1048F00021F001019163116E21F001011166126E28 +:1049000013F47F4F09D1064B9A6B22F002029A638F +:104910001A6E22F002021A661B6E10BD384F00207C +:104920000045025808B5302383F31188FFF7CEFF06 +:10493000002383F3118808BD0268436811430160B6 +:1049400003B1184770470000024A136843F0C003E0 +:10495000136070470078004013B50E4C204600F0FD +:10496000B7FA04F1140000234FF400720A490094CE +:1049700000F074F9094B4FF40072094904F1380052 +:10498000009400F0EDF9074A074BC4E9172302B081 +:1049900010BD00BFBC4F002028500020494900082E +:1049A000285200200078004000E1F505037C30B576 +:1049B000214C002918BF0C46012B0CD11F4B9842EB +:1049C00009D11F4B9A6C42F080429A641A6F42F0F0 +:1049D00080421A671B6F2268036EC16D03EB52039E +:1049E0008466B3FBF2F36268150442BF23F0070547 +:1049F00003F0070343EA4503CB60A36843F0400399 +:104A00004B60E36843F001038B6042F4967343F01C +:104A100001030B604FF0FF330B62510505D512F017 +:104A2000102205D0B2F1805F04D080F8643030BD30 +:104A30007F23FAE73F23F8E7E0810008BC4F00201E +:104A4000004502582DE9F047C66D05463768F46900 +:104A5000210734621AD014F0080118BF4FF4807196 +:104A6000E20748BF41F02001A3074FF0300348BFE1 +:104A700041F04001600748BF41F0800183F3118895 +:104A8000281DFFF759FF002383F31188E2050AD59B +:104A9000302383F311884FF48061281DFFF74CFF0A +:104AA000002383F311884FF030094FF0000A14F00F +:104AB000200838D13B0616D54FF0300905F1380AE9 +:104AC000200610D589F31188504600F07DF90028A2 +:104AD00036DA0821281DFFF72FFF27F08003336007 +:104AE000002383F31188790614D5620612D530238A +:104AF00083F31188D5E913239A4208D12B6C33B183 +:104B000027F040071021281DFFF716FF376000230C +:104B100083F31188E30618D5AA6E1369ABB1506907 +:104B2000BDE8F047184789F31188736A284695F85D +:104B30006410194000F0E6F98AF31188F469B6E7C9 +:104B4000B06288F31188F469BAE7BDE8F087000025 +:104B5000090100F16043012203F56143C9B283F802 +:104B6000001300F01F039A4043099B0003F16043C8 +:104B700003F56143C3F880211A60704700F01F03FA +:104B800001229A40430900F160409B0000F561401A +:104B900003F1604303F56143C3F88020C3F880212B +:104BA000002380F800337047F8B515468268044644 +:104BB0000B46AA4200D28568A1692669761AB542D9 +:104BC0000BD218462A46FCF7BBFEA3692B44A3610F +:104BD0002846A3685B1BA360F8BD0CD9AF1B184621 +:104BE0003246FCF7ADFE3A46E1683044FCF7A8FED9 +:104BF000E3683B44EBE718462A46FCF7A1FEE3686E +:104C0000E5E7000083689342F7B50446154600D2F5 +:104C10008568D4E90460361AB5420BD22A46FCF7FF +:104C20008FFE63692B4463612846A3685B1BA36006 +:104C300003B0F0BD0DD93246AF1B0191FCF780FEE9 +:104C400001993A46E0683144FCF77AFEE3683B4458 +:104C5000E9E72A46FCF774FEE368E4E710B50A4486 +:104C60000024C361029B8460C16002610362C0E9E9 +:104C70000000C0E9051110BD08B5D0E90532934226 +:104C800001D1826882B98268013282605A1C426115 +:104C900019700021D0E904329A4224BFC3684361ED +:104CA00000F0C0FE002008BD4FF0FF30FBE7000021 +:104CB00070B5302304460E4683F31188A568A5B16C +:104CC000A368A269013BA360531CA3611578226904 +:104CD000934224BFE368A361E3690BB12046984780 +:104CE000002383F31188284607E03146204600F070 +:104CF00089FE0028E2DA85F3118870BD2DE9F74FAF +:104D000004460E4617469846D0F81C904FF0300ADD +:104D10008AF311884FF0000B154665B12A463146DB +:104D20002046FFF741FF034660B94146204600F0A8 +:104D300069FE0028F1D0002383F31188781B03B0AB +:104D4000BDE8F08FB9F1000F03D001902046C847AD +:104D5000019B8BF31188ED1A1E448AF31188DCE75E +:104D6000C160C361009B82600362C0E90511114408 +:104D7000C0E9000001617047F8B504460D461646CB +:104D8000302383F31188A768A7B1A368013BA36010 +:104D900063695A1C62611D70D4E904329A4224BFCF +:104DA000E3686361E3690BB120469847002080F314 +:104DB000118807E03146204600F024FE0028E2DAA0 +:104DC00087F31188F8BD0000D0E9052310B59A4299 +:104DD00001D182687AB982680021013282605A1C4E +:104DE00082611C7803699A4224BFC368836100F022 +:104DF00019FE204610BD4FF0FF30FBE72DE9F74FBD +:104E000004460E4617469846D0F81C904FF0300ADC +:104E10008AF311884FF0000B154665B12A463146DA +:104E20002046FFF7EFFE034660B94146204600F0FA +:104E3000E9FD0028F1D0002383F31188781B03B02B +:104E4000BDE8F08FB9F1000F03D001902046C847AC +:104E5000019B8BF31188ED1A1E448AF31188DCE75D +:104E6000026843681143016003B1184770470000AE +:104E70001430FFF743BF00004FF0FF331430FFF74B +:104E80003DBF00003830FFF7B9BF00004FF0FF33DF +:104E90003830FFF7B3BF00001430FFF709BF000040 +:104EA0004FF0FF311430FFF703BF00003830FFF739 +:104EB00063BF00004FF0FF323830FFF75DBF0000E6 +:104EC000012914BF6FF0130000207047FFF744BDA5 +:104ED000044B036000234360C0E9023301230374E1 +:104EE000704700BFF881000810B53023044683F3F3 +:104EF0001188FFF75BFD02230020237480F31188E3 +:104F000010BD000038B5C36904460D461BB9042125 +:104F10000844FFF7A5FF294604F11400FFF7ACFE93 +:104F2000002806DA201D4FF40061BDE83840FFF785 +:104F300097BF38BD026843681143016003B1184749 +:104F40007047000013B5406B00F58054D4F8A438C6 +:104F50001A681178042914D1017C022911D1197918 +:104F6000012312898B4013420BD101A94C3002F06E +:104F7000F3F9D4F8A4480246019B2179206800F097 +:104F8000DFF902B010BD0000143002F075B9000066 +:104F90004FF0FF33143002F06FB900004C3002F0D4 +:104FA00047BA00004FF0FF334C3002F041BA000026 +:104FB000143002F043B900004FF0FF31143002F01A +:104FC0003DB900004C3002F013BA00004FF0FF3240 +:104FD0004C3002F00DBA00000020704710B500F50B +:104FE0008054D4F8A4381A681178042917D1017CA8 +:104FF000022914D15979012352898B4013420ED1D1 +:10500000143002F0D5F8024648B1D4F8A4484FF461 +:10501000407361792068BDE8104000F07FB910BD91 +:10502000406BFFF7DBBF0000704700007FB5124BFD +:1050300001250426044603600023057400F1840260 +:1050400043602946C0E902330C4B029014300193AF +:105050004FF44073009602F087F8094B04F694422F +:10506000294604F14C000294CDE900634FF44073EB +:1050700002F04EF904B070BD2082000821500008F3 +:10508000454F00080A68302383F311880B790B33EE +:1050900042F823004B79133342F823008B7913B184 +:1050A0000B3342F8230000F58053C3F8A418022301 +:1050B0000374002080F311887047000038B5037F27 +:1050C000044613B190F85430ABB90125201D0221DC +:1050D000FFF730FF04F114006FF00101257700F0B5 +:1050E000ADFC04F14C0084F854506FF00101BDE8B0 +:1050F000384000F0A3BC38BD10B50121044604308F +:10510000FFF718FF0023237784F8543010BD000008 +:1051100038B504460025143002F03EF804F14C0086 +:10512000257702F00DF9201D84F854500121FFF776 +:1051300001FF2046BDE83840FFF750BF90F88030AF +:1051400003F06003202B06D190F881200023212A50 +:1051500003D81F2A06D800207047222AFBD1C0E9B5 +:105160001D3303E0034A426707228267C3670120B9 +:10517000704700BF3C23002037B500F58055D5F8B7 +:10518000A4381A68117804291AD1017C022917D190 +:105190001979012312898B40134211D100F14C047B +:1051A000204602F08DF958B101A9204602F0D4F84A +:1051B000D5F8A4480246019B2179206800F0C0F888 +:1051C00003B030BD01F10B03F0B550F8236085B09A +:1051D00004460D46FEB1302383F3118804EB8507A6 +:1051E000301D0821FFF7A6FEFB6806F14C005B6945 +:1051F0001B681BB1019002F0BDF8019803A902F0F1 +:10520000ABF8024648B1039B2946204600F098F8C7 +:10521000002383F3118805B0F0BDFB685A6912685A +:10522000002AF5D01B8A013B1340F1D104F1800222 +:10523000EAE70000133138B550F82140ECB13023D3 +:1052400083F3118804F58053D3F8A42813685279A6 +:1052500003EB8203DB689B695D6845B1042160183C +:10526000FFF768FE294604F1140001F0ABFF204669 +:10527000FFF7B4FE002383F3118838BD70470000A8 +:1052800001F07EBA01234022002110B5044600F847 +:10529000303BFCF77BFB0023C4E9013310BD000069 +:1052A00010B53023044683F3118824224160002185 +:1052B0000C30FCF76BFB204601F084FA022300203F +:1052C000237080F3118810BD70B500EB8103054693 +:1052D00050690E461446DA6018B110220021FCF71E +:1052E00055FBA06918B110220021FCF74FFB314695 +:1052F0002846BDE8704001F065BB000083682022AD +:10530000002103F0011310B5044683601030FCF750 +:105310003DFB2046BDE8104001F0E0BBF0B40125A4 +:1053200000EB810447898D40E4683D43A4694581D1 +:1053300023600023A2606360F0BC01F0FDBB0000AD +:10534000F0B4012500EB810407898D40E4683D43FA +:105350006469058123600023A2606360F0BC01F0F2 +:1053600073BC000070B5022300250446242203709C +:105370002946C0F888500C3040F8045CFCF706FB66 +:10538000204684F8705001F0B1FA63681B6823B1BD +:1053900029462046BDE87040184770BD0378052BAC +:1053A00010B504460AD080F88C300523037043689A +:1053B0001B680BB1042198470023A36010BD0000B7 +:1053C0000178052906D190F88C20436802701B688B +:1053D00003B118477047000070B590F8703004466C +:1053E00013B1002380F8703004F18002204601F0F0 +:1053F00099FB63689B68B3B994F8803013F060053B +:1054000035D00021204601F08BFE0021204601F01E +:105410007BFE63681B6813B106212046984706236C +:1054200084F8703070BD204698470028E4D0B4F866 +:105430008630A26F9A4288BFA36794F98030A56F27 +:10544000002B4FF0300380F20381002D00F0F2803A +:10545000092284F8702083F3118800212046D4E9C2 +:105460001D23FFF76DFF002383F31188DAE794F81B +:10547000812003F07F0343EA022340F20232934289 +:1054800000F0C58021D8B3F5807F48D00DD8012B1E +:105490003FD0022B00F09380002BB2D104F18802A0 +:1054A00062670222A267E367C1E7B3F5817F00F07C +:1054B0009B80B3F5407FA4D194F88230012BA0D11A +:1054C000B4F8883043F0020332E0B3F5006F4DD0FA +:1054D00017D8B3F5A06F31D0A3F5C063012B90D8D6 +:1054E0006368204694F882205E6894F88310B4F8CC +:1054F0008430B047002884D0436863670368A3679B +:105500001AE0B3F5106F36D040F6024293427FF4B2 +:1055100078AF5C4B63670223A3670023C3E794F86B +:105520008230012B7FF46DAFB4F8883023F0020392 +:10553000A4F88830C4E91D55E56778E7B4F88030F1 +:10554000B3F5A06F0ED194F88230204684F88A30EB +:1055500001F02AFA63681B6813B1012120469847BD +:10556000032323700023C4E91D339CE704F18B035C +:1055700063670123C3E72378042B10D1302383F31F +:1055800011882046FFF7BAFE85F31188032163686E +:1055900084F88B5021701B680BB12046984794F813 +:1055A0008230002BDED084F88B30042323706368B4 +:1055B0001B68002BD6D0022120469847D2E794F8EA +:1055C000843020461D0603F00F010AD501F09CFA35 +:1055D000012804D002287FF414AF2B4B9AE72B4B01 +:1055E00098E701F083FAF3E794F88230002B7FF418 +:1055F00008AF94F8843013F00F01B3D01A06204698 +:1056000002D501F0A5FDADE701F096FDAAE794F8FB +:105610008230002B7FF4F5AE94F8843013F00F0144 +:10562000A0D01B06204602D501F07AFD9AE701F0D2 +:105630006BFD97E7142284F8702083F311882B46C2 +:105640002A4629462046FFF769FE85F31188E9E6D8 +:105650005DB1152284F8702083F311880021204663 +:10566000D4E91D23FFF75AFEFDE60B2284F87020D3 +:1056700083F311882B462A4629462046FFF760FE11 +:10568000E3E700BF50820008488200084C8200080F +:1056900038B590F870300446002B3ED0063BDAB2A5 +:1056A0000F2A34D80F2B32D8DFE803F03731310816 +:1056B000223231313131313131313737856FB0F804 +:1056C00086309D4214D2C3681B8AB5FBF3F203FBFC +:1056D00012556DB9302383F311882B462A4629468B +:1056E000FFF72EFE85F311880A2384F870300EE050 +:1056F000142384F87030302383F31188002320466C +:105700001A461946FFF70AFE002383F3118838BDB5 +:10571000C36F03B198470023E7E70021204601F05B +:10572000FFFC0021204601F0EFFC63681B6813B109 +:105730000621204698470623D7E7000010B590F8C9 +:1057400070300446142B29D017D8062B05D001D869 +:105750001BB110BD093B022BFBD80021204601F0F4 +:10576000DFFC0021204601F0CFFC63681B6813B109 +:10577000062120469847062319E0152BE9D10B2373 +:1057800080F87030302383F3118800231A461946BD +:10579000FFF7D6FD002383F31188DAE7C3689B691E +:1057A0005B68002BD5D1C36F03B19847002384F801 +:1057B0007030CEE700238268037503691B6899681F +:1057C0009142FBD25A680360426010605860704793 +:1057D00000238268037503691B6899689142FBD8AE +:1057E0005A680360426010605860704708B5084608 +:1057F000302383F311880A7D0023052A06D8DFE8C9 +:1058000002F00B050503120E826913604FF0FF339F +:105810008361FFF7CFFF002383F3118808BD8269FE +:10582000936801339360D0E9003213605A60EDE76A +:10583000FFF7C0BF054BD968087518680268536048 +:105840001A600122D8600275FAF7E4BD28540020DE +:105850000C4B30B5DD684B1C87B004460FD02B468F +:10586000094A684600F07EF92046FFF7E3FF009BF7 +:1058700013B1684600F080F9A86907B030BDFFF7A2 +:10588000D9FFF9E728540020ED57000838B50C4D32 +:1058900004468161EB6881689A68914203D8BDE84B +:1058A0003840FFF787BF1846FFF792FF01230146F4 +:1058B000EC6020462375BDE83840FAF7ABBD00BF69 +:1058C00028540020044B1A68DB6890689B68984253 +:1058D00094BF00200120704728540020084B10B5C9 +:1058E0001C68D868226853601A600122DC60227547 +:1058F000FFF76EFF01462046BDE81040FAF78ABD6B +:105900002854002038B50123084C00252370656019 +:1059100001F012FE01F038FE0549064801F00CFFC7 +:105920000223237085F3118838BD00BF90560020F4 +:10593000588200082854002008B572B6044B186538 +:1059400000F022FD00F0E4FD024B03221A70FEE796 +:10595000285400209056002000F044B9034A5168B2 +:1059600053685B1A9842FBD8704700BF001000E0F4 +:105970008B600223086108468B8270478368A3F11D +:10598000840243F8142C026943F8442C426943F81A +:10599000402C094A43F8242CC268A3F1200043F8A4 +:1059A000182C022203F80C2C002203F80B2C034ABB +:1059B00043F8102C704700BF2D0400082854002025 +:1059C00008B5FFF7DBFFBDE80840FFF731BF000077 +:1059D000024BDB6898610F20FFF72CBF2854002092 +:1059E000302383F31188FFF7F3BF000008B50146A9 +:1059F000302383F311880820FFF72AFF002383F365 +:105A0000118808BD064BDB6839B1426818605A60DE +:105A1000136043600420FFF71BBF4FF0FF30704757 +:105A2000285400200368984206D01A68026050602B +:105A300018469961FFF7FCBE7047000038B5044670 +:105A40000D462068844200D138BD036823605C6045 +:105A50008561FFF7EDFEF4E7036810B59C68A2428C +:105A60000CD85C688A600B604C6021605960996852 +:105A70008A1A9A604FF0FF33836010BD121B1B68B7 +:105A8000ECE700000A2938BF0A2170B504460D462C +:105A90000A26601901F04AFD01F032FD041BA542FF +:105AA00003D8751C04462E46F3E70A2E04D90120BC +:105AB000BDE8704001F080BE70BD0000F8B5144B29 +:105AC0000D460A2A4FF00A07D96103F110018260DE +:105AD00038BF0A22416019691446016048601861A4 +:105AE000A81801F013FD01F00BFD431B0646A3426D +:105AF00006D37C1C28192746354601F017FDF2E72E +:105B00000A2F04D90120BDE8F84001F055BEF8BDC8 +:105B100028540020F8B506460D4601F0F1FC0F4A66 +:105B2000134653F8107F9F4206D12A46014630465D +:105B3000BDE8F840FFF7C2BFD169BB68441A2C1911 +:105B400028BF2C46A34202D92946FFF79BFF2246D5 +:105B500031460348BDE8F840FFF77EBF28540020D7 +:105B600038540020C0E90323002310B45DF8044B2F +:105B70004361FFF7CFBF000010B5194C236998426D +:105B80000DD08168D0E9003213605A609A680A44E7 +:105B90009A60002303604FF0FF33A36110BD0268D9 +:105BA000234643F8102F53600022026022699A4274 +:105BB00003D1BDE8104001F0B3BC936881680B4489 +:105BC000936001F09DFC2269E1699268441AA24247 +:105BD000E4D91144BDE81040091AFFF753BF00BFD4 +:105BE000285400202DE9F047DFF8BC8008F11007A9 +:105BF0002C4ED8F8105001F083FCD8F81C40AA684D +:105C0000031B9A423ED814444FF00009D5E90032F4 +:105C1000C8F81C4013605A60C5F80090D8F81030DE +:105C2000B34201D101F07CFC89F31188D5E903313D +:105C300028469847302383F311886B69002BD8D00E +:105C400001F05EFC6A69A0EB040982464A450DD268 +:105C5000022001F0B1FD0022D8F81030B34208D183 +:105C600051462846BDE8F047FFF728BF121A2244E4 +:105C7000F2E712EB09092946384638BF4A46FFF7D2 +:105C8000EBFEB5E7D8F81030B34208D01444C8F89A +:105C90001C00211AA960BDE8F047FFF7F3BEBDE87C +:105CA000F08700BF385400202854002038B501F098 +:105CB00027FC054AD2E90845031B181945F10001E4 +:105CC000C2E9080138BD00BF2854002000207047F9 +:105CD000FEE70000704700004FF0FF307047000003 +:105CE00002290CD0032904D00129074818BF00203D +:105CF0007047032A05D8054800EBC20070470448E6 +:105D000070470020704700BF308300084C230020FC +:105D1000E482000870B59AB005460846144601A909 +:105D200000F0C2F801A8FBF729FE431C0022C6B20E +:105D30005B001046C5E9003423700323023404F8E5 +:105D4000013C01ABD1B202348E4201D81AB070BD11 +:105D500013F8011B013204F8010C04F8021CF1E7EE +:105D600008B5302383F311880348FFF705FA0023B1 +:105D700083F3118808BD00BF9856002090F880304A +:105D800003F01F02012A07D190F881200B2A03D1CA +:105D90000023C0E91D3315E003F06003202B08D178 +:105DA000B0F884302BB990F88120212A03D81F2A1B +:105DB00004D8FFF7C3B9222AEBD0FAE7034A4267B7 +:105DC00007228267C3670120704700BF432300207A +:105DD00007B5052917D8DFE801F0191603191920AE +:105DE000302383F31188104A01210190FFF76CFAE8 +:105DF000019802210D4AFFF767FA0D48FFF788F96D +:105E0000002383F3118803B05DF804FB302383F390 +:105E100011880748FFF752F9F2E7302383F311881E +:105E20000348FFF769F9EBE784820008A8820008BD +:105E30009856002038B50C4D0C4C2A460C4904F1FC +:105E40000800FFF767FF05F1CA0204F110000949D5 +:105E5000FFF760FF05F5CA7204F118000649BDE8B6 +:105E60003840FFF757BF00BF706F00204C23002061 +:105E7000648200086E8200087982000870B50446CA +:105E800008460D46FBF77AFDC6B22046013403787A +:105E90000BB9184670BD32462946FBF75BFD00285A +:105EA000F3D10120F6E700002DE9F84F05460C4636 +:105EB000FBF764FD2A49C6B22846FFF7DFFF08B1A9 +:105EC0000136F6B227492846FFF7D8FF08B1103649 +:105ED000F6B2632E0DD8DFF88890DFF888A0224F45 +:105EE000DFF88CB0DFF88C802E7846B92670BDE8DC +:105EF000F88F29462046BDE8F84F02F063B8252EFA +:105F00002AD1072249462846FBF724FD50B9D8F884 +:105F100000300735083444F8083CD8F8043044F819 +:105F2000043CE1E7082251462846FBF713FD98B9E7 +:105F3000A21C0E4B197802320909C95D02F8041C33 +:105F400013F8011B01F00F015B45C95D02F8031C4A +:105F5000F0D118340835C7E7013504F8016BC3E701 +:105F600050830008798200085883000800E8F11F78 +:105F70000CE8F11FE27F0008BFF34F8F044B1A6952 +:105F80005107FCD1D3F810215207F8D1704700BF58 +:105F90000020005208B50D4B1B78ABB9FFF7ECFFA2 +:105FA0000B4BDA68D10704D50A4A5A6002F18832ED +:105FB0005A60D3F80C21D20706D5064AC3F804214B +:105FC00002F18832C3F8042108BD00BFCE71002061 +:105FD000002000522301674508B5114B1B78F3B927 +:105FE000104B1A69510703D5DA6842F04002DA60B3 +:105FF000D3F81021520705D5D3F80C2142F0400206 +:10600000C3F80C21FFF7B8FF064BDA6842F0010233 +:10601000DA60D3F80C2142F00102C3F80C2108BD6C +:10602000CE710020002000520F289ABF00F580603A +:1060300040040020704700004FF40030704700001B +:10604000102070470F2808B50BD8FFF7EDFF00F5BB +:1060500000330268013204D104308342F9D10120B7 +:1060600008BD0020FCE700000F2838B505463FD8E2 +:10607000FFF782FF1F4CFFF78DFF4FF0FF3307281C +:106080006361C4F814311DD82361FFF775FF030263 +:1060900043F02403E360E36843F08003E360236993 +:1060A0005A07FCD42846FFF767FFFFF7BDFF4FF400 +:1060B000003100F009FA2846FFF78EFFBDE83840AE +:1060C000FFF7C0BFC4F81031FFF756FFA0F1080377 +:1060D0001B0243F02403C4F80C31D4F80C3143F014 +:1060E0008003C4F80C31D4F810315B07FBD4D9E736 +:1060F000002038BD002000522DE9F84F05460C461F +:10610000104645EA0203DE0602D00020BDE8F88F03 +:1061100020F01F00DFF8BCB0DFF8BCA0FFF73AFFAB +:1061200004EB0008444503D10120FFF755FFEDE7DC +:1061300020222946204601F013FF10B920352034D3 +:10614000F0E72B4605F120021F68791CDDD10433EE +:106150009A42F9D105F178431B481C4EB3F5801FD4 +:106160001B4B38BF184603F1F80332BFD946D1465E +:106170001E46FFF701FF0760A5EB040C336804F12E +:106180001C0143F002033360231FD9F8007017F09D +:106190000507FAD153F8042F8B424CF80320F4D1B1 +:1061A000BFF34F8FFFF7E8FE4FF0FF332022214669 +:1061B00003602846336823F00203336001F0D0FE09 +:1061C0000028BBD03846B0E7142100520C20005202 +:1061D00014200052102000521021005210B5084C1B +:1061E000237828B11BB9FFF7D5FE0123237010BD1A +:1061F000002BFCD02070BDE81040FFF7EDBE00BFC3 +:10620000CE7100202DE9F04F0D4685B0814658B182 +:1062100011F00D0614BF2022082211F0080301938B +:1062200004D0431E03426AD0002435E0002E37D04C +:1062300009F11F0121F01F094FF00108324F05F04D +:106240000403DFF8D0A005EA080BBBF1000F32D041 +:106250007869C0072FD408F101080C37B8F1060F90 +:10626000F3D19EB9294D4946A819019201F0AEF922 +:10627000044600283AD11836019A782EF3D14946BF +:1062800001F0A4F90446002830D1019A494620487B +:1062900001F09CF9044668BB204605B0BDE8F08FCC +:1062A0000029C9D101462846029201F08FF904461F +:1062B000E0B9029AC0E713B178694107CBD5AC07C2 +:1062C00002D578698007C6D5019911B178690107AF +:1062D000C1D51820494600FB08A0CDE9022301F0F2 +:1062E00075F90446DDE902230028B4D04A460021AE +:1062F000204601E04A460021FBF748FBCCE7024676 +:10630000002E95D198E700BF6C8300080072002032 +:10631000D0710020E87100200121FFF773BF000059 +:10632000F8B5144D01241827134E40F2FF32002116 +:106330000120FBF72BFB07FB046001342A6955F8A9 +:106340000C1F01F02FF9062CF5D137254FF4C0545E +:106350002046FFF7E1FF014628B122460748BDE885 +:10636000F84001F01FB9C4EBC404013D4FEAD40466 +:10637000EED1F8BD6C830008E8710020D0710020D8 +:1063800008B101F095B9704738B5054D00240334C4 +:10639000696855F80C0B00F0A9F8122CF7D138BD3C +:1063A0006C83000838B5EFF311859DB9EFF30584D0 +:1063B000C4F30804302334B183F31188FFF776FC6B +:1063C00085F3118838BD83F31188FFF76FFC84F3E0 +:1063D000118838BDBDE83840FFF768BC10B5FFF73D +:1063E000E1FF104CC008104A002340EA4170C90880 +:1063F000A0FB04ECA0FB020E1CEB0000A1FB044C74 +:10640000A1FB02125B41001943EB0C0011EB0E01E2 +:1064100042F10002411842F10000090941EA00700E +:1064200010BD00BFCFF753E3A59BC4200244074B28 +:10643000D2B210B5904200D110BD441C00B253F846 +:10644000200041F8040BE0B2F4E700BF50400058D0 +:106450000E4B30B51C6F240405D41C6F1C671C6FD9 +:1064600044F400441C670A4C02442368D2B243F44B +:1064700080732360074B904200D130BD441C51F81B +:10648000045B00B243F82050E0B2F4E70044025845 +:10649000004802585040005807B5012201A90020C9 +:1064A000FFF7C4FF019803B05DF804FB13B5044681 +:1064B000FFF7F2FFA04205D0012201A900200194BC +:1064C000FFF7C6FF02B010BD0144BFF34F8F064B6C +:1064D000884204D3BFF34F8FBFF36F8F7047C3F869 +:1064E0005C022030F4E700BF00ED00E00144BFF3A0 +:1064F0004F8F064B884204D3BFF34F8FBFF36F8F8C +:106500007047C3F870022030F4E700BF00ED00E0F0 +:1065100070470000114BDA6952021ED59A69D00704 +:1065200004D50F4A9A6002F144329A600B4BDA6943 +:10653000D107FCD41A6A22F480021A629A6942F0E6 +:1065400002029A61DA69D207FCD49A6942F0010228 +:106550009A61024AD369DB07FCD4704700200052DD +:106560003B2A1908074B45F255521A6003225A601C +:1065700040F2FF729A604CF6CC421A600122024B44 +:106580001A707047004800587C720020034B1B783B +:106590001BB1034B4AF6AA221A6070477C72002096 +:1065A00000480058034B1A681AB9034AD2F8D0249D +:1065B0001A6070477872002000400258024B4FF476 +:1065C0008032C3F8D02470470040025808B5FFF766 +:1065D000E9FF024B1868C0F3806008BD78720020A4 +:1065E00070B5BFF34F8FBFF36F8F1A4A0021C2F807 +:1065F0005012BFF34F8FBFF36F8F536943F40033D3 +:106600005361BFF34F8FBFF36F8FC2F88410BFF396 +:106610004F8FD2F8803043F6E074C3F3C900C3F360 +:106620004E335B0103EA0406014646EA81750139EF +:10663000C2F86052F9D2203B13F1200FF2D1BFF320 +:106640004F8F536943F480335361BFF34F8FBFF3D0 +:106650006F8F70BD00ED00E0FEE70000214B224887 +:10666000224A70B5904237D3214BC11EDA1C121A50 +:1066700022F003028B4238BF00220021FBF786F98B +:106680001C4A0023C2F88430BFF34F8FD2F8803009 +:1066900043F6E074C3F3C900C3F34E335B0103EA6E +:1066A0000406014646EA81750139C2F86C52F9D2F6 +:1066B000203B13F1200FF2D1BFF34F8FBFF36F8F49 +:1066C000BFF34F8FBFF36F8F0023C2F85032BFF379 +:1066D0004F8FBFF36F8F70BD53F8041B40F8041B3E +:1066E000C0E700BF9C850008707400207074002013 +:1066F0007074002000ED00E0054B996B21EA000169 +:1067000099631A6E22EA00021A661B6E704700BF78 +:106710000045025870B5D0E9244300224FF0FF3500 +:106720009E6804EB42135101D3F80009002805DAF2 +:10673000D3F8000940F08040C3F80009D3F8000BFB +:10674000002805DAD3F8000B40F08040C3F8000BB6 +:10675000013263189642C3F80859C3F8085BE0D2C7 +:106760004FF00113C4F81C3870BD0000890141F0DE +:106770002001016103699B06FCD41220FFF7EEB8EB +:1067800010B50A4C2046FEF77DFD094BC4F8903049 +:10679000084BC4F89430084C2046FEF773FD074BB5 +:1067A000C4F89030064BC4F8943010BD80720020BD +:1067B00000000840D88300081C730020000004403B +:1067C000E483000870B503780546012B58D13F4B90 +:1067D000D0F89040984254D13D4B0E2165209A6BE1 +:1067E00042F000629A631A6E42F000621A661B6EF3 +:1067F000384BD3F8802042F00062C3F88020D3F8F1 +:10680000802022F00062C3F88020D3F88030FEF7A9 +:106810009FF9314BE360314BC4F800380023D5F8C1 +:106820009060C4F8003EC02323604FF40413A363B8 +:106830003369002BFCDA01230C203361FFF78EF85B +:106840003369DB07FCD41220FFF788F83369002B8B +:10685000FCDA00262846A660FFF75CFF6B68C4F8E8 +:106860001068DB68C4F81468C4F81C6863BB1C4B70 +:10687000A3614FF0FF336361A36843F00103A3609A +:1068800070BD184B9842C9D1114B4FF080609A6B84 +:1068900042F000729A631A6E42F000721A661B6E22 +:1068A0000C4BD3F8802042F00072C3F88020D3F85C +:1068B000802022F00072C3F88020D3F88030FFF7E8 +:1068C0001BFF0E214D20A2E7074BD1E7807200206D +:1068D00000450258004402584014004003002002C2 +:1068E000003C30C01C730020083C30C0F8B5D0F824 +:1068F0009040054600214FF000662046FFF736FF26 +:10690000D5F8941000234FF001128F684FF0FF303C +:10691000C4F83438C4F81C2804EB431201339F42F6 +:10692000C2F80069C2F8006BC2F80809C2F8080B87 +:10693000F2D20B68D5F89020C5F898306362102326 +:106940001361166916F01006FBD11220FFF706F846 +:10695000D4F8003823F4FE63C4F80038A36943F484 +:10696000402343F01003A3610923C4F81038C4F88E +:1069700014380B4BEB604FF0C043C4F8103B094B8D +:10698000C4F8003BC4F81069C4F80039D5F8983051 +:1069900003F1100243F48013C5F89820A362F8BDF8 +:1069A000B483000840800010D0F8902090F88A103E +:1069B000D2F8003823F4FE6343EA0113C2F800382A +:1069C000704700002DE9F84300EB8103D0F89050A8 +:1069D0000C468046DA680FFA81F94801166806F01D +:1069E0000306731E022B05EB41134FF0000194BF09 +:1069F000B604384EC3F8101B4FF0010104F1100328 +:106A000098BF06F1805601FA03F3916998BF06F525 +:106A1000004600293AD0578A04F15801374349010A +:106A20006F50D5F81C180B430021C5F81C382B18E3 +:106A30000127C3F81019A7405369611E9BB3138A3D +:106A4000928B9B08012A88BF5343D8F89820981846 +:106A500042EA034301F140022146C8F89800284663 +:106A600005EB82025360FFF781FE08EB8900C368E3 +:106A70001B8A43EA845348341E4364012E51D5F8DF +:106A80001C381F43C5F81C78BDE8F88305EB49178F +:106A9000D7F8001B21F40041C7F8001BD5F81C18DB +:106AA00021EA0303C0E704F13F030B4A28462146CD +:106AB00005EB83035A60FFF759FE05EB4910D0F848 +:106AC000003923F40043C0F80039D5F81C3823EA14 +:106AD0000707D7E70080001000040002D0F89420D8 +:106AE0001268C0F89820FFF715BE00005831D0F8A2 +:106AF000903049015B5813F4004004D013F4001F98 +:106B00000CBF0220012070474831D0F89030490175 +:106B10005B5813F4004004D013F4001F0CBF022094 +:106B20000120704700EB8101CB68196A0B68136084 +:106B30004B6853607047000000EB810330B5DD689F +:106B4000AA691368D36019B9402B84BF402313602E +:106B50006B8A1468D0F890201C4402EB4110013C71 +:106B600009B2B4FBF3F46343033323F0030343EAB2 +:106B7000C44343F0C043C0F8103B2B6803F0030349 +:106B8000012B0ED1D2F8083802EB411013F4807FAC +:106B9000D0F8003B14BF43F0805343F00053C0F8DB +:106BA000003B02EB4112D2F8003B43F00443C2F831 +:106BB000003B30BD2DE9F041D0F8906005460C4611 +:106BC00006EB4113D3F8087B3A07C3F8087B08D5D6 +:106BD000D6F814381B0704D500EB8103DB685B682B +:106BE0009847FA071FD5D6F81438DB071BD505EBF5 +:106BF0008403D968CCB98B69488A5A68B2FBF0F62D +:106C000000FB16228AB91868DA6890420DD2121A6F +:106C1000C3E90024302383F3118821462846FFF777 +:106C20008BFF84F31188BDE8F081012303FA04F29D +:106C30006B8923EA02036B81CB68002BF3D02146DA +:106C40002846BDE8F041184700EB81034A0170B5C2 +:106C5000DD68D0F890306C692668E66056BB1A444F +:106C60004FF40020C2F810092A6802F00302012A3A +:106C70000AB20ED1D3F8080803EB421410F4807F57 +:106C8000D4F8000914BF40F0805040F00050C4F820 +:106C9000000903EB4212D2F8000940F00440C2F8A8 +:106CA00000090122D3F8340802FA01F10143C3F8C4 +:106CB000341870BD19B9402E84BF40202060206870 +:106CC0001A442E8A8419013CB4FBF6F440EAC4400D +:106CD00040F00050C6E700002DE9F843D0F890607E +:106CE00005460C464F0106EB4113D3F8088918F00E +:106CF000010FC3F808891CD0D6F81038DB0718D567 +:106D000000EB8103D3F80CC0DCF81430D3F800E0BA +:106D1000DA68964530D2A2EB0E024FF000091A60F5 +:106D2000C3F80490302383F31188FFF78DFF89F3B4 +:106D3000118818F0800F1DD0D6F834380126A640EF +:106D4000334217D005EB84030134D5F89050D3F8C3 +:106D50000CC0E4B22F44DCF8142005EB0434D2F864 +:106D600000E05168714514D3D5F8343823EA06069B +:106D7000C5F83468BDE8F883012303FA01F20389FA +:106D800023EA02030381DCF80830002BD1D09847B6 +:106D9000CFE7AEEB0103BCF81000834228BF0346E7 +:106DA000D7F8180980B2B3EB800FE3D89068A0F150 +:106DB000040959F8048FC4F80080A0EB090898442E +:106DC000B8F1040FF5D818440B4490605360C8E73D +:106DD0002DE9F84FD0F8905004466E69AB691E401B +:106DE00016F480586E6103D0BDE8F84FFEF7BABACA +:106DF000002E12DAD5F8003E9B0705D0D5F8003EEC +:106E000023F00303C5F8003ED5F80438204623F0EC +:106E10000103C5F80438FEF7D3FA370505D5204637 +:106E2000FFF778FC2046FEF7B9FAB0040CD5D5F888 +:106E3000083813F0060FEB6823F470530CBF43F4CB +:106E4000105343F4A053EB6031071BD56368DB6834 +:106E50001BB9AB6923F00803AB612378052B0CD178 +:106E6000D5F8003E9A0705D0D5F8003E23F003037D +:106E7000C5F8003E2046FEF7A3FA6368DB680BB155 +:106E800020469847F30200F1BA80B70226D5D4F81D +:106E9000909000274FF0010A09EB4712D2F8003B0F +:106EA00003F44023B3F5802F11D1D2F8003B002B1F +:106EB0000DDA62890AFA07F322EA0303638104EB1D +:106EC0008703DB68DB6813B13946204698470137F2 +:106ED000D4F89430FFB29B689F42DDD9F00619D5F3 +:106EE000D4F89000026AC2F30A1702F00F0302F40A +:106EF000F012B2F5802F00F0CA80B2F5402F09D110 +:106F000004EB8303002200F58050DB681B6A974284 +:106F100040F0B0803003D5F8185835D5E90303D5D3 +:106F200000212046FFF746FEAA0303D50121204693 +:106F3000FFF740FE6B0303D502212046FFF73AFE20 +:106F40002F0303D503212046FFF734FEE80203D5C3 +:106F500004212046FFF72EFEA90203D50521204675 +:106F6000FFF728FE6A0203D506212046FFF722FE1E +:106F70002B0203D507212046FFF71CFEEF0103D5A6 +:106F800008212046FFF716FE700340F1A780E907AD +:106F900003D500212046FFF79FFEAA0703D5012154 +:106FA0002046FFF799FE6B0703D502212046FFF725 +:106FB00093FE2F0703D503212046FFF78DFEEE0633 +:106FC00003D504212046FFF787FEA80603D5052137 +:106FD0002046FFF781FE690603D506212046FFF70C +:106FE0007BFE2A0603D507212046FFF775FEEB0539 +:106FF00074D520460821BDE8F84FFFF76DBED4F8E0 +:1070000090904FF0000B4FF0010AD4F894305FFAE3 +:107010008BF79B689F423FF638AF09EB4713D3F8D5 +:10702000002902F44022B2F5802F20D1D3F80029A4 +:10703000002A1CDAD3F8002942F09042C3F8002954 +:10704000D3F80029002AFBDB3946D4F89000FFF77B +:107050008DFB22890AFA07F322EA0303238104EB5A +:107060008703DB689B6813B13946204698470BF1CC +:10707000010BCAE7910701D1D0F80080072A02F17D +:1070800001029CBF03F8018B4FEA18283FE704EB8D +:10709000830300F58050DA68D2F818C0DCF80820C5 +:1070A000DCE9001CA1EB0C0C00218F4208D1DB684D +:1070B0009B699A683A449A605A683A445A6029E748 +:1070C00011F0030F01D1D0F800808C4501F10101CE +:1070D00084BF02F8018B4FEA1828E6E7BDE8F88F75 +:1070E00008B50348FFF774FEBDE80840FDF7DAB9BC +:1070F0008072002008B50348FFF76AFEBDE808402B +:10710000FDF7D0B91C730020D0F8903003EB41118B +:10711000D1F8003B43F40013C1F8003B7047000076 +:10712000D0F8903003EB4111D1F8003943F400134B +:10713000C1F8003970470000D0F8903003EB4111DE +:10714000D1F8003B23F40013C1F8003B7047000066 +:10715000D0F8903003EB4111D1F8003923F400133B +:10716000C1F800397047000030B50433039C017248 +:10717000002104FB0325C160C0E90653049B03639F +:10718000059BC0E90000C0E90422C0E90842C0E94B +:107190000A11436330BD00000022416AC260C0E9A9 +:1071A0000411C0E90A226FF00101FEF747BC00009C +:1071B000D0E90432934201D1C2680AB9181D704760 +:1071C00000207047036919600021C2680132C26063 +:1071D000C269134482699342036124BF436A036115 +:1071E000FEF720BC38B504460D46E3683BB1626942 +:1071F0000020131D1268A3621344E36207E0237AA0 +:1072000033B929462046FEF7FDFB0028EDDA38BDEC +:107210006FF00100FBE70000C368C269013BC36077 +:107220004369134482699342436124BF436A4361C3 +:1072300000238362036B03B11847704770B5302396 +:10724000044683F31188866A3EB9FFF7CBFF0546F3 +:1072500018B186F31188284670BDA36AE26A13F854 +:10726000015B9342A36202D32046FFF7D5FF0023C0 +:1072700083F31188EFE700002DE9F84F04460E462E +:10728000174698464FF0300989F311880025AA4621 +:10729000D4F828B0BBF1000F09D141462046FFF7D2 +:1072A000A1FF20B18BF311882846BDE8F88FD4E9FF +:1072B0000A12A7EB050B521A934528BF9346BBF160 +:1072C000400F1BD9334601F1400251F8040B9142A3 +:1072D00043F8040BF9D1A36A403640354033A3622A +:1072E000D4E90A239A4202D32046FFF795FF8AF396 +:1072F0001188BD42D8D289F31188C9E730465A4671 +:10730000FAF71EFBA36A5E445D445B44A362E7E7B1 +:1073100010B5029C0433017203FB0421C460C0E970 +:1073200006130023C0E90A33039B0363049BC0E9EF +:107330000000C0E90422C0E90842436310BD000018 +:10734000026A6FF00101C260426AC0E904220022B1 +:10735000C0E90A22FEF772BBD0E904239A4201D1A8 +:10736000C26822B9184650F8043B0B6070470023EE +:107370001846FAE7C3680021C2690133C360436954 +:10738000134482699342436124BF436A4361FEF719 +:1073900049BB000038B504460D46E3683BB123699C +:1073A00000201A1DA262E2691344E36207E0237A17 +:1073B00033B929462046FEF725FB0028EDDA38BD13 +:1073C0006FF00100FBE7000003691960C268013A31 +:1073D000C260C269134482699342036124BF436A55 +:1073E000036100238362036B03B1184770470000F9 +:1073F00070B530230D460446114683F31188866A22 +:107400002EB9FFF7C7FF10B186F3118870BDA36ACC +:107410001D70A36AE26A01339342A36204D3E16957 +:1074200020460439FFF7D0FF002080F31188EDE7F4 +:107430002DE9F84F04460D46904699464FF0300A24 +:107440008AF311880026B346A76A4FB949462046F9 +:10745000FFF7A0FF20B187F311883046BDE8F88F11 +:10746000D4E90A073A1AA8EB0607974228BF17463D +:10747000402F1BD905F1400355F8042B9D4240F8DD +:10748000042BF9D1A36A40364033A362D4E90A231E +:107490009A4204D3E16920460439FFF795FF8BF344 +:1074A00011884645D9D28AF31188CDE729463A4654 +:1074B000FAF746FAA36A3D443E443B44A362E5E73B +:1074C000D0E904239A4217D1C3689BB1836A8BB178 +:1074D000043B9B1A0ED01360C368013BC360C369B1 +:1074E0001A4483699A42026124BF436A03610023FC +:1074F00083620123184670470023FBE700F05CBA63 +:10750000014B586A704700BF000C0040034B00223B +:1075100058631A610222DA60704700BF000C004015 +:10752000014B0022DA607047000C0040014B5863A9 +:10753000704700BF000C0040024B034A1A60034A28 +:107540005A607047D0730020707400200000022041 +:10755000074B494210B55C68201A08401968821A26 +:107560008A4203D3A24201D85A6010BD0020FCE732 +:10757000D073002008B5302383F31188FFF7E8FFAC +:10758000002383F3118808BD04480121044B0360E4 +:107590000023C0E901330C3000F016B9D873002085 +:1075A00075750008CB1D083A23F00703591A521AC3 +:1075B000012110B4D2080024C0E9004384600C30DB +:1075C0001C605A605DF8044B00F0FEB82DE9F84FDE +:1075D000364ECD1D0F46002818BF0646082A4FEA32 +:1075E000D50538BF082206F10C08341D91464046E7 +:1075F00000F006F909F10701C9F1000E22462468DE +:107600006CB9404600F006F93368CBB3082249460E +:10761000E8009847044698B340E9026730E004EB7D +:10762000010CD4F804A00CEA0E0C0AF10100ACF134 +:10763000080304EBC0009842E0D9A0EB0C0CB5EBBA +:10764000EC0F4FEAEC0BD9D89C421CD204F1080293 +:10765000AB45A3EB02024FEAE202626009D9691C62 +:10766000ED43206803EBC1025D44556043F83100EF +:1076700022601C465F60404644F8086B00F0CAF880 +:107680002046BDE8F88FAA45216802D11160234643 +:10769000EFE7013504EBC50344F8351003F10801A9 +:1076A000401AC01058601360F1E700BFD873002083 +:1076B000F8B550F8043C044650F8085CA0F1080600 +:1076C00007332F1D0C35DB0840F8043C284600F03A +:1076D00097F83B469F421A6801D0B34228D20AB1BC +:1076E000964225D244F8082C54F8042C1E6001322E +:1076F00054F8081C06EBC200814206D148680244D7 +:1077000044F8042C0A6844F8082C5868411C03EB20 +:10771000C1018E4207D154F8042C013202445A6050 +:1077200054F8082C1A602846BDE8F84000F072B8FA +:107730001346CFE7FEE7000070B51B4B002504465B +:1077400086B058600E4685620163FCF783FE04F143 +:107750001003A560E562C4E904334FF0FF33C4E9C8 +:107760000044C4E90635FFF7CBFE2B46024604F180 +:1077700034012046C4E9082380230C4A2565FEF71E +:10778000F7F801230A4AE0600092037568467268C0 +:107790000192B268CDE90223064BCDE90435FEF72C +:1077A0000FF906B070BD00BF90560020F0830008AE +:1077B000F583000835770008024AD36A1843D0627F +:1077C000704700BF28540020C0E900008160704766 +:1077D0008368013B002B10B583600CDA074BDC6833 +:1077E0004368A061206063601C6044600520FEF770 +:1077F00021F8A06910BD0020FCE700BF285400203C +:1078000008B5302383F31188FFF7E2FF002383F3E9 +:10781000118808BD08B5302383F3118883680133CC +:10782000002B836007DC036800211A680260506047 +:107830001846FEF72BF8002383F3118808BD0000DB +:107840004B6843608B688360CB68C3600B6943619E +:107850004B6903628B6943620B68036070470000E9 +:1078600008B53C4B40F2FF713B48D3F888200A43EF +:10787000C3F88820D3F8882022F4FF6222F00702A0 +:10788000C3F88820D3F88830344B1A6C0A431A6442 +:107890009A6E0A439A66324A9B6E1146FFF7D0FFF2 +:1078A00000F5806002F11C01FFF7CAFF00F580605F +:1078B00002F13801FFF7C4FF00F5806002F15401C6 +:1078C000FFF7BEFF00F5806002F17001FFF7B8FF1F +:1078D00000F5806002F18C01FFF7B2FF00F58060D7 +:1078E00002F1A801FFF7ACFF00F5806002F1C401CE +:1078F000FFF7A6FF00F5806002F1E001FFF7A0FFAF +:1079000000F5806002F1FC01FFF79AFF02F58C712F +:1079100000F58060FFF794FF00F010F9114BD3F8E9 +:10792000902242F00102C3F89022D3F8942242F050 +:107930000102C3F894220522C3F898204FF0605248 +:10794000C3F89C20084AC3F8A020BDE80840FEF711 +:10795000E1BD00BF00440258000002580045025833 +:10796000FC83000800ED00E01F00080308B500F0EC +:10797000C3FAFDF7C7FF0D4BDA6B42F04002DA6342 +:107980005A6E22F040025A665B6E094B1A6842F04A +:1079900008021A601A6842F004021A60FEF702FE3A +:1079A000FEF7BEFCBDE80840FEF744BA00450258A9 +:1079B00000180248704700000E4B9A6C42F0080213 +:1079C0009A641A6F42F008021A670B4A1B6FD36B56 +:1079D00043F00803D363C722084B9A624FF0FF328B +:1079E000DA6200229A615A63DA605A6001225A61AF +:1079F0001A607047004502580010005C000C0040FF +:107A0000094A08B51169D3680B40D9B29B076FEAE0 +:107A10000101116107D5302383F31188FDF79CFF25 +:107A2000002383F3118808BD000C0040044BDA6B7F +:107A30000243DA635A6E104358665B6E704700BFAC +:107A40000045025808B53C4B4FF0FF31D3F8802079 +:107A500062F00042C3F88020D3F8802002F0004298 +:107A6000C3F88020D3F88020D3F88420C3F8841092 +:107A7000D3F884200022C3F88420D3F88400D86F80 +:107A800040F0FF4040F4FF0040F4DF4040F07F0052 +:107A9000D867D86F20F0FF4020F4FF0020F4DF40CB +:107AA00020F07F00D867D86FD3F888006FEA405085 +:107AB0006FEA5050C3F88800D3F88800C0F30A007A +:107AC000C3F88800D3F88800D3F89000C3F890106A +:107AD000D3F89000C3F89020D3F89000D3F8940026 +:107AE000C3F89410D3F89400C3F89420D3F894000A +:107AF000D3F89800C3F89810D3F89800C3F89820EA +:107B0000D3F89800D3F88C00C3F88C10D3F88C000D +:107B1000C3F88C20D3F88C00D3F89C00C3F89C10D9 +:107B2000D3F89C10C3F89C20D3F89C30FCF73CFEA3 +:107B3000BDE8084000F0B4B90044025808B501227D +:107B4000504BC3F80821504B5A6D42F002025A655F +:107B5000DA6F42F00202DA670422DB6F4B4BDA6025 +:107B60005A689104FCD54A4A1A6001229A60494A2F +:107B7000DA6000221A614FF440429A61434B9A69DD +:107B80009204FCD51A6842F480721A60424B1A6F54 +:107B900012F4407F04D04FF480321A6700221A6733 +:107BA0001A6842F001021A603B4B1A685007FCD574 +:107BB00000221A611A6912F03802FBD10121196002 +:107BC0004FF0804159605A67344ADA62344A1A6188 +:107BD0001A6842F480321A602F4B1A689103FCD560 +:107BE0001A6842F480521A601A689204FCD52D4A31 +:107BF0002D499A6200225A63196301F57C01DA6308 +:107C000001F5E77199635A64284A1A64284ADA62CE +:107C10001A6842F0A8521A601F4B1A6802F02852E4 +:107C2000B2F1285FF9D148229A614FF48862DA6193 +:107C300040221A621F4ADA641F4A1A651F4A5A65AF +:107C40001F4A9A6532231F4A1360136803F00F031B +:107C5000022BFAD1104A136943F00303136113692D +:107C600003F03803182BFAD14FF00050FFF7DEFE77 +:107C70004FF08040FFF7DAFE4FF00040BDE80840CB +:107C8000FFF7D4BE0080005100450258004802585A +:107C900000C000F004000001004402580000FF0191 +:107CA000008890083220600063020901470E050831 +:107CB000DD0BBF0120000020000001100910E000D2 +:107CC00000010110002000524FF0B04208B5D2F878 +:107CD000883003F00103C2F8883023B1044A1368E6 +:107CE0000BB150689847BDE80840FCF7DBBB00BF0C +:107CF000F07300204FF0B04208B5D2F8883003F09E +:107D00000203C2F8883023B1044A93680BB1D068EB +:107D10009847BDE80840FCF7C5BB00BFF0730020E2 +:107D20004FF0B04208B5D2F8883003F00403C2F82F +:107D3000883023B1044A13690BB150699847BDE8F4 +:107D40000840FCF7AFBB00BFF07300204FF0B0421B +:107D500008B5D2F8883003F00803C2F8883023B1A0 +:107D6000044A93690BB1D0699847BDE80840FCF715 +:107D700099BB00BFF07300204FF0B04208B5D2F8B5 +:107D8000883003F01003C2F8883023B1044A136A24 +:107D90000BB1506A9847BDE80840FCF783BB00BFB1 +:107DA000F07300204FF0B04310B5D3F8884004F4CE +:107DB0007872C3F88820A30604D5124A936A0BB1DF +:107DC000D06A9847600604D50E4A136B0BB1506B0E +:107DD0009847210604D50B4A936B0BB1D06B98479B +:107DE000E20504D5074A136C0BB1506C9847A30504 +:107DF00004D5044A936C0BB1D06C9847BDE8104091 +:107E0000FCF750BBF07300204FF0B04310B5D3F82F +:107E1000884004F47C42C3F88820620504D5164AE1 +:107E2000136D0BB1506D9847230504D5124A936D1D +:107E30000BB1D06D9847E00404D50F4A136E0BB117 +:107E4000506E9847A10404D50B4A936E0BB1D06EC7 +:107E50009847620404D5084A136F0BB1506F9847D6 +:107E6000230404D5044A936F0BB1D06F9847BDE843 +:107E70001040FCF717BB00BFF073002008B50348A3 +:107E8000FCF7E0FDBDE80840FCF70CBBBC4F002050 +:107E900008B5FFF7B5FDBDE80840FCF703BB0000DF +:107EA000062108B50846FCF753FE06210720FCF71B +:107EB0004FFE06210820FCF74BFE06210920FCF7A7 +:107EC00047FE06210A20FCF743FE06211720FCF797 +:107ED0003FFE06212820FCF73BFE09217A20FCF713 +:107EE00037FE07213220FCF733FE0C215220BDE87B +:107EF0000840FCF72DBE000008B5FFF7A3FD00F019 +:107F00000DF8FCF7E3FFFDF7BBF9FDF78DF8FFF780 +:107F100051FDBDE80840FFF7F1BA00000023054A13 +:107F200019460133102BC2E9001102F10802F8D101 +:107F3000704700BFF07300200B460146184600F062 +:107F400001B8000010B5054C13462CB10A46014695 +:107F50000220AFF3008010BD2046FCE700000000C7 +:107F600010B501390244904201D1002005E00378A8 +:107F700011F8014FA34201D0181B10BD0130F2E7E8 +:107F80002DE9F041A3B1C91A17780144044603F161 +:107F9000FF3C8C42204601D9002009E00578BD4213 +:107FA00004F10104F5D10CEB0405D618A54201D16A +:107FB000BDE8F08115F8018D16F801EDF045F5D01A +:107FC000E7E70000034611F8012B03F8012B002A14 +:107FD000F9D170476F72672E6172647570696C6F4A +:107FE000742E437562654E6F6465000053544D33C3 +:107FF0003248373F3F3F0053544D33324837337890 +:108000002F3732780053544D3332483734332F37BB +:1080100035332F373530000001105A000310590056 +:10802000012058000320560040A2E4F16468910644 +:108030000041A3E5F26569920700000043414E4606 +:108040004449666163653A204D65737361676520D5 +:1080500052414D204F766572666C6F7721000000AB +:108060004261642043414E496661636520696E64E4 +:1080700065782E000000000000000000392B000889 +:108080009D230008913200080D24000819240008DF +:1080900055280008B5250008D5230008D923000875 +:1080A000B12300089923000811280008BD23000807 +:1080B00019340008C9330008C9230008E52700085F +:1080C00001040E05054B02020E05054B04010E05C9 +:1080D000054B05010B04044B080106030346000091 +:1080E00010000240080002400008024000000B009F +:1080F00028000240080002400408024006010C006B +:1081000040000240080002400808024010020D0032 +:1081100058000240080002400C08024016030E00FE +:10812000700002400C0002401008024000040F00E2 +:10813000880002400C0002401408024006051000AE +:10814000A00002400C000240180802401006110076 +:10815000B80002400C0002401C08024016072F0025 +:1081600010040240080402402008024000083800C1 +:10817000280402400804024024080240060939008D +:10818000400402400804024028080240100A3A0055 +:1081900058040240080402402C080240160B3B0021 +:1081A000700402400C04024030080240000C3C0005 +:1081B000880402400C04024034080240060D4400CA +:1081C000A00402400C04024038080240100E450092 +:1081D000B80402400C0402403C080240160F46005E +:1081E00000960000000000000000000000000000F9 +:1081F0000000000000000000000000008D4E00089C +:10820000794E0008B54E0008A14E0008AD4E00089A +:10821000994E0008854E0008714E0008C14E0008B6 +:1082200000000000A54F0008914F0008CD4F000846 +:10823000B94F0008C54F0008B14F00089D4F000816 +:10824000894F0008D94F000800000000010000001D +:1082500000000000633000005482000880540020B9 +:10826000905600204172647550696C6F740025420D +:108270004F415244252D424C002553455249414C13 +:10828000250000000200000000000000C5510008A9 +:108290003552000840004000406F0020506F002021 +:1082A00002000000000000000300000000000000C9 +:1082B0007D5200080000000010000000606F0020E8 +:1082C000000000000100000000000000807200209B +:1082D00001010200D15D0008E15C00087D5D00083D +:1082E000615D000843000000EC82000809024300C1 +:1082F000020100C03209040000010202010005244D +:1083000000100105240100010424020205240600D6 +:1083100001070582030800FF09040100020A0000AA +:10832000000705010240000007058102400000002F +:108330001200000038830008120110010200004002 +:10834000091241570002010203010000040309045D +:1083500025424F41524425003031323334353637CF +:1083600038394142434445460000000000010020E6 +:1083700000FF0100020000000000003000000400C7 +:1083800008000000000000240000080004000000B5 +:108390000004000000FC00000200000000000430A7 +:1083A000008000000800000000000038000001000C +:1083B0000100000000000000D95300089156000899 +:1083C0003D57000840004000B8730020B8730020FB +:1083D00001000000C8730020800000004001000080 +:1083E000080000000001000000100000080000006C +:1083F0006D61696E0069646C650000000000802A90 +:1084000000000000AAAAAAAA00000024FFFF0000A2 +:108410000000000000A00A000000000000000000B2 +:10842000AAAAAAAA00000000FFFF000000000000A6 +:10843000000000000000000000000000AAAAAAAA94 +:1084400000000000FFFF000000000000000000002E +:108450000A00000000000000AAAAAAAA000000006A +:10846000FFFF0000990000000000000000800200F3 +:1084700000000000AAAAAAAA00400100FFFF000015 +:108480000000007007000000000000000000000075 +:10849000AAAAAAAA00000000FFFF00000000000036 +:1084A000000000000500000000000000A5AAAAAA24 +:1084B00000000000FCFF00000000000000000000C1 +:1084C0000000000000000000AAAAAAAA0000000004 +:1084D000FFFF00000000000000000000000000009E +:1084E00000000000AAAAAAAA00000000FFFF0000E6 +:1084F000000000000000000000000000000000007C +:10850000AAAAAAAA00000000FFFF000000000000C5 +:10851000000000000000000000000000AAAAAAAAB3 +:1085200000000000FFFF000000000000000000004D +:1085300037040000000000000000180000000000E8 +:10854000FE2A0100D2040000FF000000985600201F +:10855000BC4F002000000000EC7F000883040000F6 +:10856000F77F000850040000058000080096000016 +:108570000000080096000000000800000400000051 +:108580004C83000800000000000000000000000014 +:0C859000000000000000000000000000DF +:00000001FF diff --git a/Tools/bootloaders/CubePilot-CANMod_bl.bin b/Tools/bootloaders/CubePilot-CANMod_bl.bin deleted file mode 100755 index abd206d7b89c4d..00000000000000 Binary files a/Tools/bootloaders/CubePilot-CANMod_bl.bin and /dev/null differ diff --git a/Tools/bootloaders/CubePilot-CANMod_bl.hex b/Tools/bootloaders/CubePilot-CANMod_bl.hex deleted file mode 100644 index bdd4d6c5d03ba2..00000000000000 --- a/Tools/bootloaders/CubePilot-CANMod_bl.hex +++ /dev/null @@ -1,2128 +0,0 @@ -:020000040800F2 -:1000000000070020F1020008853300083D33000896 -:10001000653300083D3300085D330008F302000833 -:10002000F3020008F3020008F3020008714300081D -:10003000F3020008F3020008F3020008F3020008CC -:10004000F3020008F3020008F3020008F3020008BC -:10005000F3020008F3020008057C0008317C000868 -:100060005D7C0008897C0008B57C000835440008E8 -:100070005D44000889440008B5440008E1440008D4 -:100080000945000835450008F30200081D33000843 -:10009000F30200082D330008F3020008E17C000899 -:1000A000F3020008F3020008F3020008F30200085C -:1000B000F3020008F3020008F3020008F30200084C -:1000C000F3020008F3020008F3020008F30200083C -:1000D000F3020008F3020008F3020008F30200082C -:1000E000457D0008F3020008F3020008F30200084F -:1000F000F3020008F3020008F3020008614500085B -:10010000F3020008F3020008CD7D0008F3020008A6 -:10011000F3020008F3020008F3020008F3020008EB -:100120008D450008B5450008E14500080D4600086A -:1001300039460008F3020008F3020008F302000841 -:10014000F3020008F3020008F3020008F3020008BB -:10015000614600088D460008B9460008F302000811 -:10016000F3020008F3020008F3020008F30200089B -:10017000F302000831700008F3020008F3020008DF -:10018000F3020008F3020008B97D0008F30200083A -:10019000F3020008F3020008F3020008F30200086B -:1001A000F3020008F3020008F3020008F30200085B -:1001B000F3020008F3020008F3020008F30200084B -:1001C000F3020008F3020008F3020008F30200083B -:1001D000F30200081D700008F3020008F302000893 -:1001E000F3020008F3020008F3020008F30200081B -:1001F000F3020008F3020008F3020008F30200080B -:10020000F3020008F3020008F3020008F3020008FA -:10021000F3020008F3020008F3020008F3020008EA -:10022000F3020008F3020008F3020008F3020008DA -:10023000F3020008F3020008F3020008F3020008CA -:10024000F3020008F3020008F3020008F3020008BA -:10025000F3020008F3020008F3020008F3020008AA -:10026000F3020008F3020008F3020008F30200089A -:10027000F3020008F3020008F3020008F30200088A -:10028000F3020008F3020008F3020008F30200087A -:10029000F3020008F3020008F3020008F30200086A -:1002A000F3020008F3020008F3020008F30200085A -:1002B000F3020008F3020008F3020008F30200084A -:1002C000F3020008F3020008F3020008F30200083A -:1002D000F3020008F3020008F3020008F30200082A -:1002E000D51600080000000000000000000000001B -:1002F00002E000F000F8FEE772B6374880F30888A5 -:10030000364880F3098836483649086040F20000D4 -:10031000CCF200004EF63471CEF200010860BFF35B -:100320004F8FBFF36F8F40F20000C0F2F0004EF627 -:100330008851CEF200010860BFF34F8FBFF36F8F7B -:100340004FF00000E1EE100A4EF63C71CEF20001D3 -:100350000860062080F31488BFF36F8F06F0DEF884 -:1003600007F01CFA4FF055301F491B4A91423CBF21 -:1003700041F8040BFAE71D49184A91423CBF41F885 -:10038000040BFAE71A491B4A1B4B9A423EBF51F82D -:10039000040B42F8040BF8E700201849184A914270 -:1003A0003CBF41F8040BFAE706F0F6F807F07CFAD8 -:1003B000144C154DAC4203DA54F8041B8847F9E796 -:1003C00000F042F8114C124DAC4203DA54F8041B11 -:1003D0008847F9E706F0DEB8000700200023002078 -:1003E0000000000808ED00E00001002000070020E8 -:1003F00070840008002300206C230020702300205C -:1004000068740020E0020008E4020008E40200082A -:10041000E40200082DE9F04F2DED108AC1F80CD050 -:10042000D0F80CD0BDEC108ABDE8F08F002383F328 -:1004300011882846A047002005F070FAFEE705F075 -:10044000EBF900DFFEE70000F8B501F0BFF901F0BD -:1004500061FB05F0BFFF074606F056F80546A8BB4E -:100460001F4B9F4232D001339F4232D027F0FF0210 -:100470001C4B9A4230D12E4642F21074F8B200F072 -:1004800079FF00F07DFF08B10024264601F0CAFD87 -:1004900020B10024032000F079F8264635B1124B34 -:1004A0009F4203D0002406F027F82646002005F0DE -:1004B0009BFF0EB100F080F801F0CAFA00F094FF43 -:1004C000204600F02BF900F077F8F9E72E460024DB -:1004D000D7E704460126D4E7064641F28834D0E740 -:1004E000010007B0000008B0263A09B008B501F0D5 -:1004F00039F9A0F120035842584108BD07B541F22F -:100500001203022101A8ADF8043001F049F903B04B -:100510005DF804FB38B5302383F31188174803686E -:100520000BB105F0C7FA0023154A4FF47A7113484E -:1005300005F0B6FA002383F31188124C236813B137 -:100540002368013B2360636813B16368013B636008 -:100550000D4D2B7833B963687BB9022001F0EAF9BD -:10056000322363602B78032B07D163682BB90220F9 -:1005700001F0E0F94FF47A73636038BD7023002016 -:10058000150500089024002088230020084B1870CF -:1005900003280CD8DFE800F008050208022001F06B -:1005A000C7B9022001F0C2B9024B00225A6070475D -:1005B0008823002090240020F8B501F033FD30B1ED -:1005C0004D4B03221A7000224C4B5A60F8BD4C4B25 -:1005D0004C4A1C4619680131F8D004339342F9D1D2 -:1005E0006268494B9A42F1D9484B9B6803F100631A -:1005F00003F580239A42E9D205F052FF05F064FF2B -:10060000002001F009F90220FFF7C0FF404B002154 -:100610009A6C99641A6F19671A6FDA6CD9645A6FF9 -:1006200059675A6F1A6D19659A6F99679B6F394BA5 -:10063000D3F8802042F00062C3F88020D3F88020F5 -:1006400022F00062C3F88020D3F88020D3F8802005 -:1006500042F00072C3F88020D3F8802022F00072AC -:10066000C3F88020D3F8803072B64FF0E023C3F88F -:10067000084DD4E90004BFF34F8FBFF36F8F264AB4 -:10068000C2F88410BFF34F8F536923F48033536152 -:10069000BFF34F8FD2F8803043F6E076C3F3C9053D -:1006A000C3F34E335B0103EA060C29464CEA81771B -:1006B0000139C2F87472F9D2203B13F1200FF2D144 -:1006C000BFF34F8FBFF36F8FBFF34F8FBFF36F8FAA -:1006D000536923F4003353610023C2F85032BFF34F -:1006E0004F8FBFF36F8F302383F31188854680F3DC -:1006F000088820476AE700BF882300209024002054 -:100700000000040820000408FFFF03080023002065 -:10071000004502580044025800ED00E02DE9F04F7A -:1007200093B0B74B2022FF2100900AA89D6801F0EA -:1007300039F9B44A1378A3B90121B34811700360A1 -:10074000302383F3118803680BB105F0B3F900235C -:10075000AE4A4FF47A71AC4805F0A2F9002383F356 -:100760001188009B13B1AA4B009A1A60A94A13780A -:10077000032B03D000231370A54A53604FF0000AE7 -:10078000009CD3465646D146012001F0D1F824B151 -:100790009F4B1B68002B00F02C82002000F0E2FF32 -:1007A0000390039B002B01DA00F066FE039B002BF5 -:1007B000EDDB012001F0BAF8039B213B1F2BE3D8AE -:1007C00001A252F823F000BF490800087108000890 -:1007D000050900088907000889070008890700083B -:1007E00097090008670B0008810A0008E30A00085F -:1007F0000B0B0008310B000889070008430B0008A9 -:1008000089070008B50B0008E908000889070008F7 -:10081000F90B000855080008E908000889070008D6 -:10082000E30A00088907000889070008890700080B -:100830008907000889070008890700088907000858 -:1008400089070008050900080220FFF74FFE00286D -:1008500040F0F981009B022105A8BAF1000F08BF02 -:100860001C4641F21233ADF8143000F099FF8BE7CB -:100870004FF47A7000F076FF071EEBDB0220FFF7E3 -:1008800035FE0028E6D0013F052F00F2DE81DFE8CB -:1008900007F0030A0D1013360523042105A805935C -:1008A00000F07EFF17E004215548F9E704215A487B -:1008B000F6E704215948F3E74FF01C08404608F1D9 -:1008C000040800F0ABFF0421059005A800F068FFC4 -:1008D000B8F12C0FF2D101204FF0000900FA07F710 -:1008E00047EA0B0B5FFA8BFB01F0A8F826B10BF07F -:1008F0000B030B2B08BF0024FFF700FE44E7042185 -:100900004748CDE7002EA5D00BF00B030B2BA1D150 -:100910000220FFF7EBFD074600289BD001200026B0 -:1009200000F07AFF0220FFF731FE1FFA86F84046FA -:1009300000F082FF0446B0B1039940460136A1F1B0 -:1009400040025142514100F08FFF0028EDD1BA46DC -:10095000044641F21213022105A83E46ADF81430B8 -:1009600000F01EFF10E725460120FFF70FFE244B85 -:100970009B68AB4207D9284600F050FF013040F099 -:1009800067810435F3E70025224BBA463E461D70C9 -:100990001F4B5D60A8E7002E3FF45CAF0BF00B032C -:1009A0000B2B7FF457AF0220FFF7F0FD322000F051 -:1009B000D9FEB0F10008FFF64DAF18F003077FF441 -:1009C00049AF0F4A08EB0503926893423FF642AFE6 -:1009D000B8F5807F3FF73EAF124BB845019323DD5A -:1009E0004FF47A7000F0BEFE0390039A002AFFF6DF -:1009F00031AF039A0137019B03F8012BEDE700BFEC -:100A0000002300208C2400207023002015050008FE -:100A100090240020882300200423002008230020A5 -:100A20000C2300208C230020C820FFF75FFD074621 -:100A300000283FF40FAF1F2D11D8C5F120020AABDB -:100A400025F0030084494245184428BF42460192DC -:100A500000F082FF019AFF217F4800F0A3FF4FEAD8 -:100A6000A803C8F387027C492846019300F0A2FF3F -:100A7000064600283FF46DAF019B05EB830533E785 -:100A80000220FFF733FD00283FF4E4AE00F0FEFE45 -:100A900000283FF4DFAE0027B846704B9B68BB428E -:100AA00018D91F2F11D80A9B01330ED027F003034A -:100AB00012AA134453F8203C05934046042205A98A -:100AC000043701F099FA8046E7E7384600F0A6FEC1 -:100AD0000590F2E7CDF81480042105A800F060FE2F -:100AE00002E70023642104A8049300F04FFE0028CD -:100AF0007FF4B0AE0220FFF7F9FC00283FF4AAAE65 -:100B0000049800F0B9FE0590E6E70023642104A8EC -:100B1000049300F03BFE00287FF49CAE0220FFF718 -:100B2000E5FC00283FF496AE049800F0A7FEEAE743 -:100B30000220FFF7DBFC00283FF48CAE00F0B6FE8D -:100B4000E1E70220FFF7D2FC00283FF483AE05A9BD -:100B5000142000F0B1FE07460421049004A800F020 -:100B60001FFE3946B9E7322000F0FCFD071EFFF6F4 -:100B700071AEBB077FF46EAE384A07EB090392688B -:100B800093423FF667AE0220FFF7B0FC00283FF427 -:100B900061AE27F003074F44B9453FF4A5AE484680 -:100BA00009F1040900F03AFE0421059005A800F0BF -:100BB000F7FDF1E74FF47A70FFF798FC00283FF457 -:100BC00049AE00F063FE002844D00A9B01330BD0ED -:100BD00008220AA9002000F0EDFE00283AD02022C9 -:100BE000FF210AA800F0DEFEFFF788FC1C4804F095 -:100BF0009BFE13B0BDE8F08F002E3FF42BAE0BF040 -:100C00000B030B2B7FF426AE0023642105A805936C -:100C100000F0BCFD074600287FF41CAE0220FFF761 -:100C200065FC804600283FF415AEFFF767FC41F2F3 -:100C3000883004F079FE059800F04AFF46463C46AD -:100C400000F0FCFEA0E506464EE64FF0000901E686 -:100C5000BA467EE637467CE68C230020002300203F -:100C6000A0860100094A49F26900136899B21B0C79 -:100C700000FB013344F250611360054B186882B2E7 -:100C8000000C01FB0200186080B2704714230020A2 -:100C9000102300200021102210B5044600F082FE2F -:100CA000034B03CB206061601868A06010BD00BFDB -:100CB00000E8F11F2DE9F041ADF5507D0D46002112 -:100CC00040F275126EAC074610A80F9100F06AFE54 -:100CD0004FF4C4720021204600F064FE0DF13C0880 -:100CE00002F058FB4FF47A72264BB0FBF2F018601A -:100CF00093E80700022384E807000DF5ED702382D6 -:100D0000FFF7C8FF43F204731F4907A8238407F0C5 -:100D1000F7F81E230DF2EB220DF1340C84F832317A -:100D200007AB1E46083203CE664542F8080C42F86F -:100D3000041C3346F5D13068414610602046B38824 -:100D40009380012200F042FF002380B2E97E0393EA -:100D5000AB7E029305F1190301930123009307A3CE -:100D6000D3E90023CDE90480384602F0D1FE0DF529 -:100D7000507DBDE8F08100BFAFF300809E6AC421C2 -:100D8000818A46EE98240020107F00082DE9F0416A -:100D90002C4CDAB080460D46237A5BBB27A9284647 -:100DA00001F036F80746002842D19DF89D60C82E14 -:100DB0003ED801464FF4A662204600F0F3FD4FF402 -:100DC000807332460DF19E01C4F8F8314FF4007380 -:100DD00004F109002644C4F80C334FF44073C4F8FE -:100DE000203400F0B9FD9DF89C30777223720BB966 -:100DF000EB7E237206AC8122002127A800F0D2FDF1 -:100E00000122214627A801F049F8002380B2E97E9B -:100E10000393AB7E029305F1190301932823CDE9D7 -:100E200004400093404605A3D3E9002302F070FE7E -:100E30005AB0BDE8F08100BFAFF300802641727266 -:100E4000DF25D7B7A0490020F0B5254E4FF48A75AD -:100E5000F1B0002405FB006596F8D830D822214671 -:100E600085F8DC303AA885F8E84006AF00F09AFD36 -:100E700006F1090000F08EFDD5F8E430C2B206F1AB -:100E800009018DF8F0000DF1F100CDE93A3400F0E0 -:100E900063FD394601223AA801F036F8082380B2F2 -:100EA000317ACDE9047001270E48CDE9023706F109 -:100EB000D80301933023009307A3D3E9002302F062 -:100EC00027FEA04206DD02F065FAC5F8E0003846CC -:100ED00071B0F0BD2046FBE778F6339F93CACD8D05 -:100EE000A0490020B03400202DE9F0411D4D86B00E -:100EF0001D4E1E4F284602F037FE034658B300240D -:100F0000DFF86C80ADF814400294CDE90344027B15 -:100F10008DF8142003AA9968406803C21B6843F047 -:100F20000043029302F038FA82190094384641F1E6 -:100F3000000302A901F074FAA04205DD284602F080 -:100F400017FE88F80040D5E798F80030072B05D841 -:100F5000013388F8003006B0BDE8F081014802F0A6 -:100F600007FEF8E7B034002040420F00E0340020D4 -:100F7000D54E002070B50D4614461E4602F024FDE5 -:100F800050B9022E10D1012C0ED112A3D3E90023A7 -:100F90000120C5E9002307E0282C10D005D8012C3A -:100FA00009D0052C0FD0002070BD302CFBD10BA335 -:100FB000D3E90023ECE70BA3D3E90023E8E70BA375 -:100FC000D3E90023E4E70BA3D3E90023E0E700BF64 -:100FD000AFF30080401DA12026812A0B78F6339FB5 -:100FE00093CACD8D9E6AC421818A46EE26417272D3 -:100FF000DF25D7B7F017304A39059E5638B5054674 -:101000000E4C0021013500F02FFCA4F82C55B4F84B -:101010002C0500F011FC78B1B4F82C0500F01CFC94 -:10102000014648B9B4F82C0500F01EFCB4F82C3584 -:101030000133A4F82C35EAE738BD00BFA0490020F1 -:101040000A4B0B4A10B51A6003F5805393F84820F9 -:101050003AB95C6C2CB1204601F062F8204601F0F0 -:101060009BF90448BDE8104001F05AB8E034002074 -:10107000C07F0008104500202DE9F04F8FB00546D5 -:101080000C4600AF02F0A0FC002849D1237E022BC1 -:101090001BD1E38A012B18D102F07CF90646FFF739 -:1010A000E1FD03464FF4C87006F51676DFF8C082FE -:1010B000B3FBF0F202FB103316FA83F3C8F80030EA -:1010C000E37E33B9A34B00221A703C37BD46BDE81E -:1010D000F08F07F12401204600F04EFE0028F4D1E5 -:1010E00007F11400FFF7D6FD97F8264007F1140129 -:1010F00007F12700224606F0D1FE0028E2D10F2C8E -:1011000008D8944B1C70D8F80030A3F51673C8F8B3 -:101110000030DAE797F82410284602F04DFCD4E7B7 -:10112000E38A282B2BD010D8012B23D0052BCCD130 -:10113000BFF34F8F8849894BCA6802F4E0621343BA -:10114000CB60BFF34F8F00BFFDE7302BBDD1844E86 -:10115000E17E327A9142B8D1607E3146002291F828 -:10116000DC50854200F0A580013201F58A71042A25 -:10117000F5D1AAE721462846FFF79CFDA5E72146C1 -:101180002846FFF703FEA0E7B2F8EC507B6005F1BC -:1011900003094FEA99094FEA8902D11DC908A8EB52 -:1011A000C10300219D46EB46584600F0FBFB04F1CD -:1011B000EE012A465846314400F0CEFB7B6813B955 -:1011C000012000F029FB96F8D20000F035FB044620 -:1011D00030B9307200F05AFB204600F01DFBB1E040 -:1011E000D6F8D4203AB996F8D200B6F82C25824227 -:1011F00001D8FFF703FFD6F8D4202A44944208D23E -:1012000096F8D200B6F82C250130824201D8FFF7BB -:10121000F5FE5FFA89F25946706800F0CBFB08B919 -:10122000C54679E0726896F8D2002A447260D6F812 -:10123000D42005EB0209C6F8D49000F0FDFA8145F0 -:1012400009D396F8D220D6F8D4000132001B86F8D4 -:10125000D220C6F8D400FF2D0FD80024347200F03D -:1012600015FB204600F0D8FA00F0DCFE3D4B18815B -:1012700008B9FFF7A1F9C54627E7BB6896F8D9007A -:101280000AFB0362FB68D2F8E41082F8E83001F54B -:101290008061C2F8E030C2F8E410FFF7D5FDFFF737 -:1012A00023FE96F8D920013202F0030286F8D920F5 -:1012B000B6E74FF48A7A20460AFB02F505F1EA0107 -:1012C000314400F053FEF86000287FF4FEAE0122A6 -:1012D000354485F8E82002F05DF8D5F8E020D6ED39 -:1012E000007A801A40F6B832B8EE677ADFED1E6AEF -:1012F000192838BF1920904228BF104607EE900ADF -:10130000F8EEE77A67EEA67ADFED186AE7EE267A5E -:10131000FCEEE77AC6ED007A96F8D930BB60BA6881 -:1013200073680AFB02F4321992F8E81059B1D2F846 -:10133000E410E8468B423FF427AF002182F8E81022 -:10134000C2F8E010C5467368064A9B0A0133138150 -:10135000BBE600BFA934002000ED00E00400FA0560 -:10136000A049002098240020CDCCCC3D6666663F85 -:10137000AC340020014B1870704700BFA42400203B -:1013800038B54FF00054144B22689A4221D1627D47 -:101390000025124B12481A70C922237D09301149C9 -:1013A00000F8013C4FF48073C0F8DB50C0F8EF3117 -:1013B0004FF40073C0F803334FF44073C0F8173490 -:1013C00000F0CAFAE0222946204600F0EBFA01209C -:1013D00038BD0020FCE700BF9AAD44C5A42400201E -:1013E000A04900201600002037B500F01BFE194D63 -:1013F00002230022184928816B710123174801F04C -:101400008BFB002316494FF480520193154B16486D -:101410000093164B02F0A8FA154B197811B1124837 -:1014200002F0CAFA01F0B6FF0446FFF71BFC4FF4C6 -:10143000C873B0FBF3F202FB130304F5167010FA45 -:1014400083F00C4B186005F05FF808B10F232B8177 -:1014500003B030BD9824002040420F00E03400204B -:10146000A8240020750F0008B0340020791000086F -:10147000A4240020AC3400202DE9F04F8C4C2DED3D -:10148000028B85A7D7E9006795B00FF21429D9E937 -:1014900000899FED858BFFF727FD0DAD0023DFF859 -:1014A00024B20C93ADF83C300D936B6000234FF0E9 -:1014B000010A0DF1250209A958468DF825308DF84D -:1014C00024A08DED008B01F0CDFE9DF8242000239B -:1014D000002A40F0AE80204602F076FA0546002849 -:1014E00047D1DFF8E4B101F055FFDBF80030984256 -:1014F0003FD301F04FFF0790FFF7B4FB4FF4C873E1 -:10150000079AB0FBF3F101FB130302F5167010FA12 -:1015100083F0CBF8000010A8DFF8B0B19BF8001002 -:10152000002914BF2B46534607918DF83030FFF742 -:10153000B1FB079910AB0DF13100C1F11002194454 -:10154000D2B2062A28BF0622079200F005FA079AAF -:101550000CAB2046039301321823D2B20293554BB1 -:1015600004923246CDE900A33B4602F073FA8BF8B1 -:10157000005001F00FFF504A504D1368C31AB3F5E5 -:101580007A7F32D3106001F007FF02460B462046F7 -:1015900002F0F8FA204602F017FA30B32B7A0DF178 -:1015A000400BDFF82CA1002B14BF032302238AF881 -:1015B000053001F0EFFE4FF47A7301225946B0FB7B -:1015C000F3F0CAF80000504600F0AEFB182380B2DA -:1015D000424602933A4B019340F25513CDE903B0D2 -:1015E000009320464B4602F035FA2B7AABB101F05E -:1015F000D1FE4FF0000A83464FF48A7295F8D90065 -:10160000504400F0030002FB005393F8E81071B35C -:101610000AF1010ABAF1040FF0D1C82004F084F9EC -:101620002B7A002B7FF435AF15B0BDEC028BBDE8F3 -:10163000F08F1946102210A800F0B4F90DF126031E -:101640000AAA0CA9584601F0F7F811AB95E8030077 -:1016500083E803009DF83C3010A920468DF84C30FB -:101660000C9B1093DDE90A2302F060FC1EE7D3F81F -:10167000E01049B12B68ABEB0101FA2B38BFFA231C -:101680000533B1EB430FC3D3FFF7DEFB4FF48A7290 -:101690000028BDD1C1E700BF401DA12026812A0B33 -:1016A000F1C6A7C1D068080F0000000000000000CC -:1016B000B0340020A8340020D04E0020A0490020E3 -:1016C000D44E0020E0340020AC340020A9340020A7 -:1016D0009824002008B5054801F056F9044A054948 -:1016E0000020BDE8084006F0C5BB00BFE034002084 -:1016F0002C4F0020411000082DE9F84F4FF47A7369 -:1017000006460D46002402FB03F7DFF85080DFF8A1 -:10171000509098F900305FFA84FA5A1C01D0A34225 -:1017200012D159F824002A4631460368D3F820B074 -:101730003B46D847854207D1074B012083F800A0DC -:10174000BDE8F88F0124E4E7002CFBD04FF4FA70D9 -:1017500004F0EAF80020F3E71C4F002018230020D3 -:101760001C230020002307B5024601210DF10700CC -:101770008DF80730FFF7C0FF20B19DF8070003B0D8 -:101780005DF804FB4FF0FF30F9E700000A46042142 -:1017900008B5FFF7B1FF80F00100C0B2404208BDBC -:1017A000074B0A4630B41978064B53F821400146DE -:1017B00023682046DD69044BAC4630BC604700BF5F -:1017C0001C4F00201C230020A086010070B5104C87 -:1017D0000025104E04F0D2FB20803068238883421D -:1017E0000CD800252088013804F0C4FB2388054468 -:1017F000013BB5F5802F2380F4D370BD04F0BAFB14 -:10180000336805440133B5F5802F3360E5D3E8E74D -:101810001E4F0020D84E002004F07EBC00F1006076 -:1018200000F580200068704700F10060920000F52C -:10183000802004F0FFBB0000054B1A68054B1B8895 -:101840009B1A834202D9104404F094BB00207047D5 -:10185000D84E00201E4F0020024B1B68184404F095 -:101860008FBB00BFD84E0020024B1B68184404F009 -:1018700099BB00BFD84E00200020704700F1FF50F8 -:1018800000F58F10D0F8000870470000064991F865 -:10189000243033B100230822086A81F82430FFF78E -:1018A000C3BF0120704700BFDC4E0020014B186809 -:1018B000704700BF0010005C194B01380322084438 -:1018C00070B51D68174BC5F30B042D0C1E88A6427E -:1018D0000BD15C680A46013C824213460FD214F9D0 -:1018E000016F4EB102F8016BF6E7013A03F108030C -:1018F000ECD181420B4602D22C2203F8012B0424A6 -:10190000094A1688AE4204D1984284BF967803F8FB -:10191000016B013C02F10402F3D1581A70BD00BF03 -:101920000010005C242300205C7F0008704700004A -:10193000704700007047000070B504464FF47A7697 -:101940004CB1412C254628BF412506FB05F0641B00 -:1019500003F0EAFFF4E770BD002310B5934203D013 -:10196000CC5CC4540133F9E710BD0000013810B558 -:1019700010F9013F3BB191F900409C4203D11AB1EB -:101980000131013AF4E71AB191F90020981A10BD1B -:101990001046FCE703460246D01A12F9011B002943 -:1019A000FAD1704702440346934202D003F8011B68 -:1019B000FAE770472DE9F8431F4D1446074688465D -:1019C00095F8242052BBDFF870909CB395F8243032 -:1019D0002BB92022FF2148462F62FFF7E3FF95F83D -:1019E00024004146C0F1080205EB8000A24228BF56 -:1019F0002246D6B29200FFF7AFFF95F82430A41B21 -:101A000017441E449044E4B2F6B2082E85F82460D0 -:101A1000DBD1FFF73BFF0028D7D108E02B6A03EBAF -:101A200082038342CFD0FFF731FF0028CBD10020C3 -:101A3000BDE8F8830120FBE7DC4E0020024B1A785A -:101A4000024B1A70704700BF1C4F00201823002063 -:101A500038B51A4C1A4D204603F086FA294620461E -:101A600003F0AEFA2D684FF47A70D5F89020D2F8D2 -:101A7000043843F00203C2F80438FFF75DFF114950 -:101A8000284603F0ABFBD5F890200F4DD2F8043870 -:101A9000286823F002030D49A042C2F804384FF42D -:101AA000E1330B6001D003F0BDF96868A04204D0B7 -:101AB0000649BDE8384003F0B5B938BD905600205E -:101AC0000C820008148200081C230020044F002010 -:101AD0000C4B70B50C4D04461E780C4B55F8262067 -:101AE0009A420DD00A4B002118221846FFF75AFFE0 -:101AF0000460014655F82600BDE8704003F092B935 -:101B000070BD00BF1C4F00201C23002090560020F9 -:101B1000044F0020F8B571B6002301201A4619467B -:101B200002F068FE0446802004F094FB002845D0B3 -:101B30000025234A80274FF4D06C3D26136923BB30 -:101B4000D2F810310BBB236805F10061996023685E -:101B5000D86023685F602368C3F800C021680B6801 -:101B600043F001030B6021680B6823F01E030B6038 -:101B700021680B68DB07FCD4237B8035616806FA9B -:101B800003F3B5F5001F0B60D8D1204602F068FEC4 -:101B9000B5F5001F11D000240A4E0B4D012004F0B2 -:101BA000BBFA3388A34205D928682044013404F0E5 -:101BB000F9F9F6E7002004F0AFFA61B6F8BD00BF0E -:101BC000002000521E4F0020D84E00202DE9F8437F -:101BD0000D46044600219046284640F27912FFF750 -:101BE000E1FE234620220021284604F1220702F0CC -:101BF0003FF9231D022220212846C02602F038F991 -:101C0000631D03222221284602F032F9A31D03227C -:101C10002521284602F02CF904F10803102228217E -:101C2000284602F025F904F110030822382128463D -:101C300002F01EF904F1110308224021284602F0A7 -:101C400017F904F1120308224821284602F010F97E -:101C500004F1140320225021284602F009F904F16E -:101C6000180340227021284602F002F904F12003F3 -:101C70000822B021284602F0FBF804F121030822D3 -:101C8000B821284602F0F4F8314608363B460822CF -:101C90002846013702F0ECF8B6F5A07FF4D13146C2 -:101CA00004F132030822284602F0E2F8002794F8F3 -:101CB000326004F13309F900BE4201F5A4711FD866 -:101CC000F70007F5A476B8F1000F08D1314607F206 -:101CD0004F1604F599730722284602F0C9F894F8C4 -:101CE0003201B046502828BF5020074604EB0009B7 -:101CF000A1450DD106EBC7000730C008BDE8F88349 -:101D000009EB070308222846013702F0B1F8D2E7B1 -:101D100004F2331341460822284608F1080801342A -:101D200002F0A6F8E4E7000013B5044608460021D7 -:101D30002022234601900160C0F8031002F098F8B9 -:101D4000231D01980222202102F092F8631D0198C0 -:101D50000322222102F08CF8A31D019803222521E1 -:101D600002F086F8019804F108031022282102F0FD -:101D70007FF8072002B010BDF7B5047F05460E4678 -:101D80002CB1838A122B02D9012003B0F0BD0023AD -:101D9000072228460096194601F02EFF731C0122E7 -:101DA000072100932846002301F026FFD4B9B31C75 -:101DB000052208212846009323460D2401F01CFF2C -:101DC000B378102BE0D83746BB1BB278934210D3C0 -:101DD00007342B7FA88AE408B3B9844294BF00205B -:101DE0000120D2E7AB8A0824DB00083BDB08B37094 -:101DF000E6E7FB1C2146082228460093002308340E -:101E0000013701F0F9FEDFE7201A18BF0120BCE717 -:101E1000F7B5047F05460E462CB1838ACA2B02D93A -:101E2000012003B0F0BD0023082228460096194681 -:101E300001F0E2FE731CD4B908220093234610245B -:101E40001146284601F0D8FE7378C82BE8D8012344 -:101E50005F1C7278013B934210D307342B7FA88A12 -:101E6000E408B3B9844294BF00200120D9E7AB8ACB -:101E70000824DB00083BDB087370E5E7F319214613 -:101E8000082228460093002301F0B6FE08343B46A2 -:101E9000DEE7201A18BF0120C3E700002DE9F84350 -:101EA0000D4604461646002181222846FFF77AFD9A -:101EB000234608220021284601F0DAFFC6B90F2682 -:101EC000631C07220821284601F0D2FF94F9013053 -:101ED000B0466778002BB8BF7F2704EB07094C4555 -:101EE00008D10736082010FB0760C008BDE8F8835A -:101EF0000826EBE7A31C41460822284608F10808FB -:101F0000013401F0B5FFEAE72DE9F0410D46044642 -:101F100016460021CE222846FFF744FD23462822FC -:101F20000021284601F0A4FFBEB9302604F10803C1 -:101F300008222821284601F09BFF14F8080F0027EB -:101F4000C82828BFC8208046B84506EBC70106D878 -:101F500006EBC800C008BDE8F0812826EDE7013790 -:101F600008222846E31901F083FFEDE7F7B5047F67 -:101F700005460E4634B1838AB3F5827F02D901202B -:101F800003B0F0BD0123102200212846009601F085 -:101F900033FEDCB9B31C09221021284600932346E6 -:101FA000192401F029FE7388B3F5807FE7D83746FE -:101FB000BB1B7288934210D307342B7FA88AE40896 -:101FC000B3B9844294BF00200120D9E7AB8A102422 -:101FD000DB00103BDB087380E5E73B1D2146082250 -:101FE0002846009300230834013701F005FEDFE79F -:101FF000201A18BF0120C3E730B50A44084D9142AA -:102000000DD011F8013B5840082340F30004013B78 -:102010002C4013F0FF0384EA5000F6D1EFE730BD07 -:102020002083B8EDF7B5384A6B46106851686A46A8 -:1020300003C308233549364805F040FF044600280D -:1020400033D10A25334A6B46106851686A4603C388 -:10205000082331492E4805F031FF0446002849D0B5 -:102060000369B3F5E01F45D8B0F8661040F2374277 -:1020700091423FD1294A024402F15C018B4239D39B -:102080005C3B234900209E1AFFF7B6FF04F1640170 -:10209000074632460020FFF7AFFFA3689F4229D1D1 -:1020A000E368984208BF002524E00369B3F5E01F08 -:1020B00027D8418B40F23742914220D1174A02443F -:1020C00002F110018B4218D3103B114900209D1AD8 -:1020D000FFF792FF04F1180106462A460020FFF799 -:1020E0008BFFA3689E4202D1E368984201D00D2580 -:1020F000A8E70025284603B0F0BD1025A2E70C256F -:10210000A0E70B259EE700BF6C7F0008DCFF1B00EB -:1021100000000408757F000890FF1B000800FCF712 -:1021200010B5037C044613B9006804F0C7F82046D4 -:1021300010BD00000023BFF35B8FC360BFF35B8F54 -:10214000BFF35B8F8360BFF35B8F7047BFF35B8F21 -:102150000068BFF35B8F704770B505460C30FFF722 -:10216000F5FF044605F108063046FFF7EFFFA042F1 -:1021700006D96D683046FFF7E9FF2544281A70BD7F -:102180003046FFF7E3FF201AF9E7000070B5054677 -:102190004068A0B105F10C0605F10800FFF7D6FF75 -:1021A00004463046FFF7D2FF844204F1FF34304644 -:1021B00094BF6D680025FFF7C9FF2C44201A70BD3D -:1021C00038B50C460546FFF7C7FFA04210D305F10E -:1021D0000800FFF7BBFF04446868BFF35B8FB4FBE4 -:1021E000F0F100FB11440120AC60BFF35B8F38BD00 -:1021F0000020FCE72DE9F041144607460D46FFF7A5 -:10220000C5FF844228BF0446D4B1B84658F80C6BC9 -:102210004046FFF79BFF3044286040467E68FFF74A -:1022200095FF331A9C4203D801206C60BDE8F08111 -:10223000A41B6B603B682044AB60E8600220F5E7BC -:102240002046F3E738B50C460546FFF79FFFA0424E -:1022500010D305F10C00FFF779FF04446868BFF361 -:102260005B8FB4FBF0F100FB11440120EC60BFF385 -:102270005B8F38BD0020FCE72DE9FF4188466946A9 -:1022800007466C46FFF7B6FF002506B204EBC6060C -:10229000B4420AD0626808EB050120680834FFF7F1 -:1022A0005BFB54F8043C1D44F2E729463846FFF72F -:1022B000C9FF284604B0BDE8F0810000F8B5054626 -:1022C0000C300F46FFF742FF05F108060446304682 -:1022D000FFF73CFFA042304688BF6C68FFF736FF2F -:1022E000201A386020B12C683046FFF72FFF2044B9 -:1022F000F8BD000073B5144606460D46FFF72CFFE7 -:102300008442019028BF0446DCB101A93046FFF7A2 -:10231000D5FF019B33B93268C5E90233C5E9002412 -:1023200001200CE09C42286038BF0194019884424F -:102330006860F5D93368241A0220AB60EC6002B003 -:1023400070BD2046FBE700002DE9FF410F466946BE -:102350006C46FFF7CFFF00B2002604EBC005AC428D -:1023600009D0D4F80480B81954F8081B42464644F2 -:10237000FFF7F2FAF3E7304604B0BDE8F081000061 -:1023800038B50546FFF7E0FF044601462846FFF74B -:1023900017FF204638BD000008B103F08FBF70471B -:1023A0007047000010B41346026814680022A44667 -:1023B0005DF8044B6047000000F5805090F8590428 -:1023C0007047000000F5805090F8520470470000FC -:1023D00000F5805090F95804704700004E20704777 -:1023E000302383F3118800F58052D2F89C34D2F860 -:1023F00098041844D2F894341844D2F87C34184421 -:10240000D2F88C341844D2F888341844002383F36B -:102410001188704700F58050C0F8541401207047AF -:102420002DE9F04F0C4600F5805185B01F4691F81C -:10243000523405469046BDF838909BB1D1F87834B7 -:102440000133C1F878342368980006D4237B082B25 -:102450000BD9627B0AB10F2B07D9D1F87C34013339 -:10246000C1F87C344FF0FF3010E0302383F3118843 -:10247000EB6AD3F8C42012F4001B0AD0D1F88034E0 -:1024800000200133C1F8803480F3118805B0BDE825 -:10249000F08F20684822D3F8C4300028C3F3044AE0 -:1024A0006B6AB4BF40F08040800412FB0A334FEAED -:1024B0004A161860226852004FEA0A6244BF40F090 -:1024C00000501860207B42EA00425A60607B10B3E3 -:1024D00042F440125A60D1F8B0240132C1F8B0245D -:1024E000AA1902F58352117B41F020011173207B60 -:1024F000039300F0ABFF0330039B80105FFA8BF275 -:102500000BF1010B82420DDA04EB820103EB820234 -:1025100049689160F2E7AA1902F58352117B60F3D2 -:102520004511E3E70122EB6A05EB4A1102FA0AF2D0 -:1025300001F58251C3F8D020AB19183104F10C0217 -:1025400003F58253C3E90487234653F8040B9342EF -:1025500041F8040BF9D11B882E440B8041F268032B -:1025600046F803A006F5805609F0030396F86C20A0 -:1025700043F0100322F01F02134386F86C3000234F -:1025800083F3118842463B4621462846CDF8009009 -:1025900000F022FF012079E72DE9F04700F5805691 -:1025A000044696F85254002D40F00381037C032B1F -:1025B00040F0948028462B462F465FFA80FC9445D5 -:1025C00010DA01EBCC0E51F83CC0BCF1000F04DB7B -:1025D000DEF804C0BCF1000F02DB01370130ECE78C -:1025E0000133FBE7302080F31188E06AF3B9D0F8BB -:1025F000803043F00203C0F880304E23E06A002FA1 -:102600006FD1D0F8803043F00103C0F880306A4BBE -:102610006A4A1B6803F1805303F52C539B009342D5 -:10262000A36240F2B080664800F0AEFE4D2B42D867 -:10263000DFF884814FEA034EDFF88891D8F800C0B4 -:102640004EEA8C0EC0F884E00CF1805000F52C505E -:102650008000606103EB0C00D4F82CC0C3F14E0382 -:10266000C8F80000DCF8800040F03000CCF88000B2 -:102670004FF0000CD4F81480E6465FFA8CF08242EA -:10268000BCDD01EBC00A51F83000002810DBDAF89D -:1026900004A0BAF1000F0BDA09EA00400AF07F0A41 -:1026A00040EA0A0040F0084048F82E000EF1010E02 -:1026B0000CF1010CE1E7836923F00103836100F071 -:1026C00069FE0646E36A9B69D90704D500F062FEFD -:1026D000831BFA2BF6D9002383F311882846BDE823 -:1026E000F087B7EB530F3DD2DFF8CCE04FEA074C51 -:1026F000DEF800304CEA830CC0F888C003F180504B -:1027000003EB4703002700F52C50CEF80030BC4601 -:102710008000A061E06AD0F8803043F00C03C0F87C -:102720008030D4F818E0FBB29A427FF770AF51F8CE -:10273000330001EBC3080028D8F8043001DB002B7C -:102740000EDB20F0604023F0604340F0005043F087 -:1027500000434EF83C000EEBCC000CF1010C436042 -:102760000137E0E7836923F00103836100F012FE83 -:102770000646E36A9B69DA07ADD500F00BFE831BC2 -:10278000FA2BF6D9A7E7E26A936923F00103936174 -:1027900000F000FE0746E36A9B69DB0705D500F001 -:1027A000F9FDC31BFA2BF6D995E7012586F852549B -:1027B00091E7002592E700BF284F0020FCB50040BC -:1027C000807F00080000FF0713B500F580540191D9 -:1027D000606CFFF7DBFC1F280AD920220199606C8E -:1027E000FFF74AFDA0F120035842584102B010BD46 -:1027F0000020FBE708B5302383F3118800F58050F3 -:10280000406CFFF797FC002383F3118808BD00009C -:1028100000220260828142608260704700220023B1 -:1028200010B5C0E90023002304460C3020F8043C16 -:10283000FFF7EEFF204610BD2DE9F0479A4688B01D -:10284000074688469146302383F3118807F5805464 -:102850006846FFF7E3FF606CFFF77EFC1F282ED968 -:1028600020226946606CFFF78BFD202827D194F861 -:10287000523423B303AD444605AB2E46083403CE91 -:102880009E4244F8080C44F8041C3546F5D13068E3 -:102890002060B388A380DDE90023C9E90023BDF8E7 -:1028A0000830AAF80030002383F3118853464A46C3 -:1028B0004146384608B0BDE8F04700F07BBD002037 -:1028C00080F3118808B0BDE8F08700002DE9F84FCB -:1028D0000023064600F58154054688461034C0E9B9 -:1028E0000133264B46F8303B374638462037FFF752 -:1028F00095FFA742F9D105F580544FF4805305F5B3 -:10290000A3594FF0000A26630026676405F5835734 -:1029100009F110094FF0000B1037E663C4E90D36DA -:10292000012384F8403084F84830A7F1180020379C -:1029300047E910ABFFF76CFF47F8286C4F45F4D11F -:1029400084F85884A4F85A64A4F85C64A4F85E641B -:1029500084F86064A4F86264A4F86464A4F866640B -:1029600084F86864B8F1000F02D0054800F00CFD4F -:10297000044B2846EB62BDE8F88F00BFC07F00081B -:10298000A47F000800A00040044B10B5197804464D -:102990004A1C1A70FFF79AFF204610BD254F0020F1 -:1029A0002DE9F04300295AD02E4E2F48B6FBF1F402 -:1029B00081428CBF0A201120431EB4FBF0F700FBBC -:1029C0001740DDB220B1022B1846F5D8002032E0C6 -:1029D0007B1EB3F5806F2ED2C5EBC5084FF47A731A -:1029E00008F103044FEAE40EC4F3C7040EF1010931 -:1029F000281B0EFB033E5FFA80FC59FA80F0BEFBF9 -:102A0000F0F0B0F5617F18DC83B2601C5CFA80F0F6 -:102A10007843B6FBF0F08142D8D1611E0F29D5D89A -:102A20000CF1FF310729D1D8012013805780107194 -:102A3000547182F806C0BDE8F08308F1FF34E0105D -:102A4000C4F3C70400F1010E2D1B00FB03335FFA32 -:102A500085FC5EFA85F5B3FBF5F39BB2D5E7084636 -:102A6000E9E700BF00B4C4043F420F0030B50D4B8E -:102A700005200D4D1C786C438C420ED159780120F5 -:102A8000518099785171D9789171197911715B7967 -:102A900003EB83035B00138030BD013803F10603B1 -:102AA000E8D1F9E70080000840420F0038B540F255 -:102AB0007772C36A154CC3F8BC200722C36AC3F8F7 -:102AC000C8202268C16A930043F4C023C1F8A03033 -:102AD00002F1805302F16C01C56A03F52C53EA320E -:102AE00089009B00226041F0E061094AC361C5F89A -:102AF000C01003F5D87103F56A7341629342836293 -:102B000002D9044800F040FC38BD00BF284F002027 -:102B1000FCB50040807F00082DE9F04F00F580559E -:102B20001F4689B0044695F8583489469046012BD3 -:102B300004D90026304609B0BDE8F08FA04A52F80B -:102B4000231009B942F823009E48C4F80C9001787C -:102B50002774C9B9302383F311889B4BD3F8EC2039 -:102B600042F48072C3F8EC20D3F8942042F48072CF -:102B7000C3F89420D3F8942022F48072C3F89420F0 -:102B80000123037081F3118895F851647EB93023D5 -:102B900083F311880321132001F078FF032115200E -:102BA00001F074FF012385F8513486F31188302336 -:102BB00083F31188E26A936923F01003936100F0B4 -:102BC000E9FB8246E36A9E6916F0080609D000F028 -:102BD000E1FBA0EB0A03FA2BF4D9002686F3118857 -:102BE000A8E79A6942F001029A6100F0D3FB82469D -:102BF000E36A9A69D00706D400F0CCFBA0EB0A0385 -:102C0000FA2BF5D9E9E79A694FF0000A42F002027F -:102C10009A61E36AC3F854A08AF3118804F5825BD1 -:102C2000686CFFF787FA0BF1100B20220021684631 -:102C3000FEF7B8FE02A8FFF7EBFD6A460BEB0603B2 -:102C40000DF1180ECDF818A094460833BCE8030027 -:102C5000F44543F8080C43F8041C6246F4D1DCF850 -:102C6000000020361860B6F5806F9CF804201A71B9 -:102C7000DBD1002304F5A252494620461A3285F8DA -:102C8000503485F85334FFF78BFE064690B9E26A5C -:102C9000936923F00103936100F07CFB0546E36A2E -:102CA0009B69D9077FF545AF00F074FB431BFA2BF6 -:102CB000F5D93EE795F85E34C5F86C94591E95F841 -:102CC0005F34E26A013B1B0243EA416395F86014FA -:102CD00001390B43B5F85C14013943EA0143D36170 -:102CE000B8F1000F36D004F5A35241462046023217 -:102CF000FFF7BCFE90B9E26A936923F00103936188 -:102D000000F048FB0546E36A9B69DA077FF511AFDF -:102D100000F040FB431BFA2BF5D90AE795F867242E -:102D2000C5F87084511E95F86824E36A013A1201CF -:102D300042EA012295F8661401390A43B5F8641491 -:102D4000013942EA014242F40002DA604FF42062A3 -:102D5000E36A9A64E36A4FF000082046C3F8BC8037 -:102D6000FFF7A4FE85F859846FF04042E36A1A65C4 -:102D7000164AE36A5A654FF00222E36A9A654FF0F9 -:102D8000FF32E36AC3F8E0200322E36A9742DA6580 -:102D90003FF4D0AEE26A936923F00103936100F03F -:102DA000F9FA0746E36A9B69DB0705D500F0F2FAFA -:102DB000C31BFA2BF6D9BCE6012385F85234B9E6D9 -:102DC000204F0020244F00200044025855020002EA -:102DD0002DE9F04F054689B090469946002741F20B -:102DE000680A00F58056EB6AD3F8D830FB40D80764 -:102DF00051D505EB47124FEA471B52441379190787 -:102E000049D4D6F884340133C6F8843405F5A55383 -:102E1000C3E9008913799A0605EB0B0248BFD6F87F -:102E2000B434524444BF0133C6F8B434137943F088 -:102E300008031371DB0723D596F8533403B305F564 -:102E400082546846FFF7EAFC03AB18345C4404F193 -:102E5000080C2068083454F8041C1A46644503C260 -:102E60001346F6D12068694610602846A2889A80E9 -:102E70000123ADF808302B68CDE90089DB6B98475A -:102E8000D6F8A834D6F854040133C6F8A83410B1E3 -:102E900003681B6998470137202FA4D109B0BDE80A -:102EA000F08F00002DE9F04F0F468DB0044600F082 -:102EB00073FA82468946002F5BD1E36AD3F8A020DB -:102EC00012F4FE0F03D100200DB0BDE8F08FD3F84F -:102ED000A420920141BF04F58051D1F89824013219 -:102EE000C1F89824D3F8A4205606ECD0D3F8A45007 -:102EF000E669C5F305254823E8464FF0000B03FBC0 -:102F000005664046FFF784FC326851004ABF22F054 -:102F10006043C2F38A4343F00043920048BF43F04A -:102F200080430093736813F400131BBF012304F55F -:102F300080528DF80D308DF80D301EBFD2F8B834A8 -:102F40000133C2F8B834F38803F00F038DF80C3066 -:102F50009DF80C0000F07AFA5FFA8BF3984225D9BD -:102F6000F2180CA90BF1010B127A0B4403F82C2C6C -:102F7000EEE7012FA7D1E36AD3F8B02012F4FE0FD9 -:102F8000A1D0D3F8B420950141BF04F58051D1F808 -:102F900098240132C1F89824D3F8B420500692D076 -:102FA000D3F8B450266AC5F30525A4E7EFB9E36A60 -:102FB000C3F8A85004A807ADFFF730FC98E80F004D -:102FC00007C52B800023204604A9ADF818302368DC -:102FD00004F58054DB6BCDE904A9984758B1D4F8C7 -:102FE00090340133C4F890346EE7012FE2D1E36AE4 -:102FF000C3F8B850DEE7D4F8943401200133C4F8A4 -:10300000943461E72DE9F04105460F4600F5805400 -:10301000012639462846FFF745FF10B184F853646E -:10302000F7E7D4F8A834D4F854040133C4F8A8342A -:1030300020B10368BDE8F0411B691847BDE8F08185 -:10304000C36AF0B51A6C12F47F0F2BD01B6C00F51D -:10305000805441F268054FF0010CC4F8AC340023F1 -:10306000471900EB43125E012A44117911F0020F57 -:1030700015D0490713D4B959C66A0CFA01F1D6F82C -:10308000CCE011EA0E0F0AD0C6F8D410117941F045 -:1030900004011171D4F88C240132C4F88C2401335A -:1030A000202BDED1F0BD000010B5264C264B226847 -:1030B0000AB340B31A6D92050FD54FF400721A652A -:1030C00000F06AF950EA01020B4602D0013861F1C2 -:1030D000000302462068FFF77BFE1B4A136D9B012D -:1030E0002AD523684FF0007103F580531165012242 -:1030F00083F8592420E001221A6510221A654FF442 -:1031000080521A6510BD196DC80702D4196D4907A0 -:1031100005D50521104619650021FFF773FF0A4BFD -:103120001A6DD00602D41A6D510605D55022012120 -:103130001A652068FFF766FF2068BDE81040FFF7BA -:103140007FBF00BF204F002000A0004008B5302303 -:1031500083F31188FFF774FF002383F3118808BD00 -:10316000C36AD3F8C00010F07C5005D0D3F8C40077 -:1031700080F40010C0F340507047000008B53023C1 -:1031800083F3118800F58050406CFEF7E5FF0023C3 -:1031900083F3118843090CBF0120002008BD000003 -:1031A00000F5805393F8592462B1C16A8A6922F00C -:1031B00001028A61D3F89C240132C3F89C240022C6 -:1031C00083F85924704700002DE9F743302181F33B -:1031D000118800F58251002541F2680E4FF0010878 -:1031E000103100F5805C00EB4514744426797707B4 -:1031F0001CD4F6061AD58E69D0F82C9008FA06F67B -:10320000D9F8CC703E4211D04F6801970F689742B1 -:10321000019F9F410AD2C9F8D460267946F004067E -:103220002671DCF888440134CCF88844013520311B -:10323000202DD8D1002383F3118803B0BDE8F0839B -:10324000F8B51E4600230F46054613701446FFF7D7 -:1032500095FF80F0010038701EB12846FFF780FF0F -:103260002070F8BD2DE9F04F85B099460D46804697 -:10327000164691F800B0DDE90EA30293137801938E -:1032800000F08AF82B7804460F4613B93378002BE8 -:1032900041D022463B464046FFF796FFFFF756FFD8 -:1032A000FFF77EFF4B4632462946FFF7C9FF2B78D2 -:1032B00033B1BBF1000F03D0012005B0BDE8F08FA2 -:1032C000337813B1019B002BF6D108F5805303939B -:1032D0005445029B77EB03031DD2039BD3F85404A0 -:1032E000C8B10368AAEB04011B6898474B463246F5 -:1032F00029464046FFF7A4FF2B7813B1BBF1000F1E -:10330000DAD1337813B1019B002BD5D100F044F80A -:1033100004460F46DCE70020CFE7000008B5002098 -:10332000FFF7C2FEBDE8084001F05AB808B5012019 -:10333000FFF7BAFEBDE8084001F052B800B59BB0F7 -:10334000EFF3098168226846FEF706FBEFF3058379 -:10335000014B9B6BFEE700BF00ED00E008B5FFF7F7 -:10336000EDFF000000B59BB0EFF3098168226846CD -:10337000FEF7F2FAEFF30583014B5B6BFEE700BF4C -:1033800000ED00E0FEE700000FB408B5029802F07F -:1033900071FAFEE702F0C0BF02F0A2BF13B56C469F -:1033A000031D84E8060094E8030083E8050001207B -:1033B00002B010BD73B58568019155B11B885B07DC -:1033C00007D4D0E900369B6B9847019AC1B23046CA -:1033D000A847012002B070BDF0B5866889B00546E7 -:1033E0000C465EB1BDF838305B070AD4D0E900372F -:1033F0009B6B98472246C1B23846B047012009B0BE -:10340000F0BD0022002301F10806CDE900230023CE -:103410000A46ADF8083003AB1068083252F8041CB5 -:103420001C46B24203C42346F6D11068206092883D -:10343000A280FFF7B1FF0423ADF808302B68CDE977 -:103440000001DB6B694628469847D7E7082817D95B -:1034500009280CD00A280CD00B280CD00C280CD032 -:103460000D280CD00E2814BF4020302070470C20AF -:103470007047102070471420704718207047202094 -:10348000704700002DE9F041456A15B94162BDE879 -:10349000F0814B68AC4623F06047C3F38A464FEA9D -:1034A000D37EC3F3807816EA230638BF3E462B4608 -:1034B0005A68BEEBD27F22F060440AD0002A18DAA4 -:1034C000A40CB44217D19D420FD10D60DEE7134624 -:1034D000EEE7A74207D102F08044C2F38072424572 -:1034E0000BD054B1EFE708D2EDE7CCF800100B6039 -:1034F000CDE7B44201D0B442E5D81A689C46002A10 -:10350000E5D11960C3E700002DE9F047089D01F0FF -:10351000070400EBD1004FF47F494FEAD50822445D -:1035200005F00705944201D1BDE8F08704F00707D4 -:1035300005F0070A111B08EBD50E57453E4613F858 -:103540000EC038BF5646C6F108068E4228BF0E464A -:10355000E108415C34443544B94029FA06F721FAC0 -:103560000AF1FFB28CEA010147FA0AF739408CEA06 -:10357000010C03F80EC0D5E780EA0120082341F2D0 -:10358000210201B2013B4000002980B2B8BF504087 -:1035900013F0FF03F5D1704738B50C468D18A542DE -:1035A00000D138BD14F8011BFFF7E6FFF7E7000074 -:1035B00042684AB1136881894360438901339BB2F1 -:1035C0009942438138BF83811046704770B588B0F7 -:1035D000044620220D4668460021FEF7E3F9204606 -:1035E0000495FFF7E5FF024660B16B46054608AE5D -:1035F0001C46083503CCB44245F8080C45F8041CB9 -:103600002346F5D1104608B070BD0000082817D930 -:1036100009280CD00A280CD00B280CD00C280CD070 -:103620000D280CD00E2814BF4020302070470C20ED -:1036300070471020704714207047182070472020D2 -:1036400070470000082817D90C280CD910280CD96D -:1036500014280CD918280CD920280CD930288CBF54 -:103660000F200E207047092070470A2070470B205A -:1036700070470C2070470D20704700002DE9F8437B -:10368000078C0446072F1ED900254FF6FF73D0E99B -:103690000298C5F12006A5F1200029FA05F10835A8 -:1036A00008FA06F628FA00F0314301431846C9B279 -:1036B000FFF762FF402D0346EBD13A46E169BDE8D2 -:1036C000F843FFF769BF4FF6FF70BDE8F8830000CD -:1036D00010B54B6823B9CA8A63F30902CA8210BDC8 -:1036E00004691A681C600361C38A013BC3824A6093 -:1036F000EFE700002DE9F84F1D46CB8A0F468146C3 -:10370000C3F30901924605290B4630D00020AAB226 -:1037100007F11A049EB21FFA80F8042E0FD89045C4 -:1037200003F1010306D30A44FB8A62F30903012073 -:10373000FB821AE01AF800600130E654EAE790458F -:10374000F1D2A1F1050B1C237C68BBFBF3F203FB58 -:1037500012BB1FFA8BF6002C45D14846FFF728FF15 -:10376000044638B978606FF00200BDE8F88F4FF07A -:103770000008E6E7002606607860ADB24FF0000B67 -:10378000454510D90AEB0803221D13F8011B08F167 -:1037900001089155B1B21FFA88F81B292BD0454575 -:1037A00006F10106F1D8FB8AC3F30902154465F35B -:1037B0000903BCE701321C4692B22368002BF9D101 -:1037C0006B1F0B441C21B3FBF1F301339BB29A42F4 -:1037D000D3D2BBF1000FD0D14846FFF7E9FE20B9A4 -:1037E000C4F800B0BFE70122E7E7C0F800B05E46CA -:1037F00020600446C1E74545D5D94846FFF7D8FEC5 -:1038000008B92060AFE7C0F800B000262060044689 -:10381000B6E700002DE9F04F1C46074688462DED1F -:10382000028B83B05B690192002B00F09A80238C9D -:103830002BB1E269002A00F09480072B35D807F1FC -:103840000C00FFF7B5FE054638B96FF002052846B3 -:1038500003B0BDEC028BBDE8F08F14220021FEF70F -:10386000A1F8228CE16905F10800FEF775F8208CBB -:1038700048F00041013080B2FFF7E4FEFFF7C6FEDA -:10388000013880B220840130287438466369228C64 -:103890001B782A4403F01F0363F03F03137269602F -:1038A0002946FFF7EFFD0125D1E74FF0000900F1B0 -:1038B0000C034FF0800A4E464D4608EE103A18EEC3 -:1038C000100AFFF775FE83460028BED0142200219F -:1038D000FEF768F8002E3AD1019B0222ABF80830BF -:1038E0000BF1080E1FFA82FC218C0CF10100BCF1D7 -:1038F000060F80B201D88E422BD3FFF7A3FE8E4273 -:1039000008BF4FF0400AFFF781FE626901380135B8 -:1039100012781BFA80F1013002F01F022DB242EA48 -:10392000491289F001094AEA020A48F0004281F886 -:1039300008A059468BF810003846CBF804204FF009 -:10394000000AFFF79FFD238CB342B8D17FE7002226 -:10395000C6E7E169895D01360EF80210B6B20132A0 -:10396000C0E76FF0010572E7F8B515460E46302244 -:10397000002104461F46FEF715F8069BB5F5001F0B -:10398000A760636004F11000079B34BF6A094FF61B -:10399000FF72E661A362002397B29A4206D8002321 -:1039A0000360A782E3822383E360F8BD06600133EE -:1039B00030462036F1E7000003781BB94BB2002BEC -:1039C000C8BF01707047000000787047F8B50C461A -:1039D000C969074611B9238C002B37D1257E1F2DCD -:1039E00034D8387828BB228C072A2CD8268A36F07F -:1039F00003032BD14FF6FF70FFF7CEFD20F001003F -:103A000031024FF6FF72400441EA0561400C41EA81 -:103A10004025234629463846FFF7FCFE002807DDEF -:103A2000626913780133DBB21F2B88BF0023137048 -:103A3000F8BD218A2D0645EA012505432046FFF7FA -:103A40001DFE0246E5E76FF00300F1E76FF00100AD -:103A5000EEE7000070B58AB0044616460021282221 -:103A600068461D46FDF79EFFBDF838306946204682 -:103A7000ADF810300F9B05939DF840308DF818304D -:103A8000119B0793BDF84830CDE90265ADF82030B1 -:103A9000FFF79CFF0AB070BD2DE9F041D3690546E0 -:103AA0000C4616460BB9138C5BBB377E1F2F28D8EC -:103AB00095F80080B8F1000F26D03046FFF7DEFD04 -:103AC000337821020246284641EAC331338A41EA6B -:103AD000080141EA076141EA0341334641F08001B0 -:103AE000FFF798FE00280ADD3378012B07D17269B1 -:103AF00013780133DBB21F2B88BF00231370BDE89E -:103B0000F0816FF00100FAE76FF00300F7E70000C3 -:103B1000F0B58BB004460D461746002128226846B2 -:103B20001E46FDF73FFF9DF84C30294620465A1EA1 -:103B3000534253416A468DF800309DF84030ADF84D -:103B40001030119B05939DF848308DF81830149B68 -:103B50000793BDF85430CDE90276ADF82030FFF779 -:103B60009BFF0BB0F0BD0000406A00B1043070470D -:103B7000436A1A68426202691A600361C38A013BA0 -:103B8000C38270472DE9F041D0F8208014461D46CD -:103B9000184E4146002709B9BDE8F081D1E902235A -:103BA000A21A65EB0303964277EB03031ED2036A66 -:103BB0008B420DD1FFF78CFD036A1B68036203691A -:103BC0000B60C38A0161013B016AC3828846E2E758 -:103BD000FFF77EFD0B68C8F8003003690B60C38AED -:103BE0000161013BC382D8F80010D4E78846096818 -:103BF000D1E700BF80841E002DE9F04F8BB00D4649 -:103C000014469B46DDF850908046002800F018814D -:103C1000B9F1000F00F01481531E3F2B00F2108108 -:103C2000012A03D1BBF1000F40F00A810023CDE946 -:103C30000833B8F81430B5EBC30F4FEAC30703D30A -:103C400000200BB0BDE8F08F2B199F42D8F80C3044 -:103C500036BF7F1B2746FFB21BB9D8F81030002BA8 -:103C60007AD0272D4DD8C5F1280600232946B74222 -:103C7000009308ABD8F808002CBFF6B23E46A7EB7D -:103C8000060A354432465FFA8AFAFFF73DFCB8F877 -:103C90001430282103F10053053BDB000493D8F8CE -:103CA0000C300393039B13B1BAF1000F2CD1D8F859 -:103CB000100040B1BAF1000F05D008AB5246691AA6 -:103CC0000096FFF721FC38B2002FB9D066070AD062 -:103CD0000AAB624203EBD40102F0070211F8083C80 -:103CE000134101F8083C082C3DD9102C40F2B58056 -:103CF000202C40F2B780BBF1000F00F09C8008231D -:103D000035E0BA460026C2E7049BE02B28BFE0233B -:103D100006930B44AB42059315D95A1B0398691AB5 -:103D20000096924508AB00F1040034BF5246D2B26F -:103D30000792FFF7E9FB079A1644AAEB020A15441B -:103D4000F6B25FFA8AFA049B069A05999B1A0493C5 -:103D5000039B1B680393A5E700933A4608AB2946EB -:103D6000D8F80800ADE7BBF1000F13D00123B4EB86 -:103D7000C30F6BD0082C12D89DF82030621E23FA96 -:103D800002F2D50706D54FF0FF3202FA04F42343BE -:103D90008DF820309DF8203089F8003051E7102C44 -:103DA00012D8BDF82030621E23FA02F2D10706D5E0 -:103DB0004FF0FF3202FA04F42343ADF82030BDF88F -:103DC0002030A9F800303CE7202C0FD80899631E5A -:103DD00021FA03F3DA0705D54FF0FF3202FA04F4B3 -:103DE0000C430894089BC9F800302AE7402C2AD0DD -:103DF000611EC4F12102A4F12103DDE9086526FA60 -:103E000001F105FA02F225FA03F311431943CB0736 -:103E100011D50122A4F12003C4F1200102FA03F319 -:103E200022FA01F1A2400B43524263EB43033243B7 -:103E30002B43CDE90823DDE90823C9E9002300E786 -:103E40006FF00100FDE66FF00800FAE6082CA1D93A -:103E5000102CB4D9202CEED8C4E7BBF1000FAED0A3 -:103E6000022384E7BBF1000FBCD004237FE70000EE -:103E7000012A30B5144638BF012485B00025402CF6 -:103E800028BF4024012ACDE9025518D81B788DF8A7 -:103E9000083063070AD004AB624203EBD40502F09A -:103EA000070215F8083C934005F8083C03460091CA -:103EB0002246002102A8FFF727FB05B030BD082AE3 -:103EC000E4D9102A03D81B88ADF80830E1E7202A8E -:103ED00095BF1B68D3E900230293CDE90223D8E7FD -:103EE00010B5CB681BB98B600B618B8210BD046968 -:103EF0001A681C600361C38A013BC382CA60F0E791 -:103F000003064CBFC0F3C0300220704708B502461C -:103F1000FFF7F6FF022806D15306C2F30F2001D1A6 -:103F200000F0030008BDC2F30740FBE72DE9F04FA6 -:103F300093B004460D46CDE903230A681046FFF707 -:103F4000DFFF0228824614BFC2F306260026002A9D -:103F500080F2F88112F0C04940F0F481097B002919 -:103F600000F0F081022803D02378B34240F0ED81C5 -:103F7000C2F3046310462944069302F07F030593BD -:103F8000FFF7C4FF059B002283464FEA83480023C6 -:103F900048EA0A4848EA4668CE78CDE90823F3099A -:103FA00048EA0008029368D0059B024608A920460B -:103FB000009353466768B847002800F0C981276A14 -:103FC0004FB9414604F10C00FFF700FB074690B9DA -:103FD0006FF0020055E03B6998450DD03F68002F17 -:103FE000F9D1414604F10C00FFF7F0FA074600282A -:103FF000EED0236A3B60276297F817C006F01F08CF -:10400000CCF3840CACEB0800A8EB0C031FFA80FE89 -:104010000028B8BF0EF120001FFA83FEB8BF00B21F -:10402000002B0793B8BF0EF12003D7E90221BCBFD4 -:104030001BB2079352EA010338D0039B4FF0000CE8 -:10404000DFF81CE39A1A049B63EB010196457CEBB5 -:1040500001032BD36B7B97F81AE0734519D1029BB0 -:10406000002B78D0012821DC7868F8B9DFF8ECC2A1 -:10407000944570EB010316D337E0276A27B96FF038 -:104080000C0013B0BDE8F08F3B699845B4D03F6891 -:10409000F4E7B24890427CEB010301D30020F0E743 -:1040A000029B002BFAD0079B0F2B17DCFA7DB30085 -:1040B0003946204602F0030203F07C031343FB75EC -:1040C000FFF706FB6B7BBB76029B3BB9FB7DC3F323 -:1040D0008402013262F38603FB75D0E76A7BBB7E04 -:1040E0009A42DBD1029B002B35D0B309022B32D090 -:1040F000039B142200210DA8BB60049BFB60FDF70D -:1041000051FC039B0AA920460A93049BADF83EB0DC -:104110000B932B1D8DF840A00C932B7B8DF84180C9 -:10412000013BDBB2ADF83C30069B8DF84230059B7D -:104130008DF8433094F82C3083F001038DF844302F -:10414000A3689847FB7DC3F38403013303F01F0387 -:104150009B02FB82A2E7FB7DC6F34012B2EBD31FAA -:1041600040F0F980C3F38403434540F0FB80029A9A -:10417000B6092B7B002A52D016F0010661D1032B21 -:1041800040F2F380039B394604F10C00BB60049BB2 -:10419000FB60FB8A66F30903AE1DFB8232462B7B74 -:1041A000033BDBB2FFF7A6FA00280CDA39462046BB -:1041B000FFF78EFAFB7DC3F38403013303F01F0383 -:1041C0009B02FB8204E7AB88DDE908843B834FF662 -:1041D000FF73C9F12000A9F1200228FA09F109F1C1 -:1041E000080904FA00F024FA02F2014318461143C8 -:1041F000C9B2FFF7C1F9B9F1400F0346E9D1B8825E -:1042000031462A7B033AD2B2FFF7C6F9FB7DB8826A -:10421000DA43C2F3C01262F3C713FB753EE786B9F7 -:104220002E1D013B394604F10C00DBB23246FFF78C -:1042300061FA0028BADB2A7B3146B88A013AD2B249 -:10424000E2E7F98A013BC1F30901DAB204295BD83C -:10425000281D002307F11B069A4208D910F801CB4C -:10426000013306F801C00131DBB20529F4D103990D -:1042700093420A9138BF043304992CBF002355FAA6 -:1042800083F30B9107F11B010C9179680E930D914B -:10429000291DFB8AADF83EB0C3F309038DF840A099 -:1042A0008DF841801A44069B8DF84230059BADF88D -:1042B0003C208DF8433094F82C3083F001038DF8C6 -:1042C00044300023B88A7B602A7B013AFFF764F907 -:1042D0003B8BB882834203D1A3680AA92046984742 -:1042E00020460AA9FFF7FCFDFB7DBA8AC3F38403CD -:1042F000013303F01F039B02FB823B8B9A420CBFEE -:1043000000206FF01000BCE67B68002BAFD00520CA -:1043100001E01C3033461E68002EFAD1091A2E1D0A -:10432000081D184401EB090C5FFA89F3BCF11B0F5F -:104330009DD89A429BD916F8013B09F1010900F872 -:10434000013BEFE76FF009009BE66FF00A0098E68B -:104350006FF00B0095E66FF00D0092E640420F0003 -:1043600080841E006FF00E008BE66FF00F0088E671 -:10437000EFF30983054968334A6B22F001024A636F -:1043800083F30988002383F31188704700EF00E06E -:10439000302080F3118862B60D4B0E4AD96821F4A3 -:1043A000E0610904090C0A430B49DA60D3F8FC20E8 -:1043B00042F08072C3F8FC20084AC2F8B01F1168AE -:1043C00041F0010111602022DA7783F82200704762 -:1043D00000ED00E00003FA0555CEACC5001000E08A -:1043E000302310B583F311880E4B5B6813F4006320 -:1043F00014D0F1EE103AEFF309844FF08073683C6B -:10440000E361094BDB6B236684F3098801F0F8F95B -:1044100010B1064BA36110BD054BFBE783F3118878 -:10442000F9E700BF00ED00E000EF00E03F04000806 -:104430004204000808B5074B074A196801F03D011E -:10444000996053680BB190689847BDE80840FFF742 -:10445000C7BF00BF00000240304F002008B5084B26 -:104460001968890901F03D018A019A60054AD368FB -:104470000BB110699847BDE80840FFF7B1BF00BF16 -:1044800000000240304F002008B5084B1968090CA5 -:1044900001F03D010A049A60054A53690BB1906925 -:1044A0009847BDE80840FFF79BBF00BF00000240EF -:1044B000304F002008B5084B1968890D01F03D0107 -:1044C0008A059A60054AD3690BB1106A9847BDE81E -:1044D0000840FFF785BF00BF00000240304F0020BA -:1044E00008B5074B074A596801F03D01D960536A86 -:1044F0000BB1906A9847BDE80840FFF771BF00BF55 -:1045000000000240304F002008B5084B5968890967 -:1045100001F03D018A01DA60054AD36A0BB1106BE4 -:104520009847BDE80840FFF75BBF00BF00000240AE -:10453000304F002008B5084B5968090C01F03D01C7 -:104540000A04DA60054A536B0BB1906B9847BDE8DB -:104550000840FFF745BF00BF00000240304F002079 -:1045600008B5084B5968890D01F03D018A05DA60EC -:10457000054AD36B0BB1106C9847BDE80840FFF7B4 -:104580002FBF00BF00000240304F002008B5074B8E -:10459000074A196801F03D019960536C0BB1906CAA -:1045A0009847BDE80840FFF71BBF00BF000402406A -:1045B000304F002008B5084B1968890901F03D010A -:1045C0008A019A60054AD36C0BB1106D9847BDE81B -:1045D0000840FFF705BF00BF00040240304F002035 -:1045E00008B5084B1968090C01F03D010A049A60EE -:1045F000054A536D0BB1906D9847BDE80840FFF731 -:10460000EFBE00BF00040240304F002008B5084B49 -:104610001968890D01F03D018A059A60054AD36D3C -:104620000BB1106E9847BDE80840FFF7D9BE00BF38 -:1046300000040240304F002008B5074B074A596874 -:1046400001F03D01D960536E0BB1906E9847BDE803 -:104650000840FFF7C5BE00BF00040240304F0020F5 -:1046600008B5084B5968890901F03D018A01DA60F3 -:10467000054AD36E0BB1106F9847BDE80840FFF7AD -:10468000AFBE00BF00040240304F002008B5084B09 -:104690005968090C01F03D010A04DA60054A536FBC -:1046A0000BB1906F9847BDE80840FFF799BE00BF77 -:1046B00000040240304F002008B5084B5968890DAE -:1046C00001F03D018A05DA60054AD36F13B1D2F8D3 -:1046D00080009847BDE80840FFF782BE0004024012 -:1046E000304F002000230C4910B51A460B4C0B60CC -:1046F00054F82300026001EB430004334260402B76 -:10470000F6D1074A4FF0FF339360D360C2F8083404 -:10471000C2F80C3410BD00BF304F002020800008CC -:10472000000002400F28F8B510D9102810D0112829 -:1047300011D0122808D10F240720DFF8B4E0012699 -:10474000DEF80050A04208D9002649E00446F4E70C -:104750000F240020F1E70724FBE706FA00F73D42AB -:1047600040D1214C4FEA001C3D4304EB00160EEBF8 -:10477000C000CEF80050C0E90123FBB24BB11B488A -:10478000836B43F001038363036E43F0010303660D -:10479000036E17F47F4F09D01448836B43F0020374 -:1047A0008363036E43F002030366036E54F80C0048 -:1047B000036823F01F030360056815F00105FBD1B2 -:1047C00004EB0C033D2493F80CC05F6804FA0CF46E -:1047D0003C6021240560446112B1987B00F056F9D9 -:1047E0003046F8BD0130ADE7208000080045025892 -:1047F000304F002010B5302484F31188FFF792FF6A -:10480000002383F3118810BD10B50446807B00F0AF -:1048100053F901231049627B03FA02F20B6823EA81 -:104820000203DAB20B604AB90C4A916B21F0010124 -:104830009163116E21F001011166126E13F47F4F26 -:1048400009D1064B9A6B22F002029A631A6E22F08B -:1048500002021A661B6E10BD304F00200045025840 -:1048600008B5302383F31188FFF7CEFF002383F3CD -:10487000118808BD026843681143016003B11847FD -:1048800070470000024A136843F0C003136070478A -:104890000078004013B50E4C204600F0B7FA04F142 -:1048A000140000234FF400720A49009400F074F9D8 -:1048B000094B4FF40072094904F13800009400F0EC -:1048C000EDF9074A074BC4E9172302B010BD00BF3A -:1048D000B44F0020205000208548000820520020BE -:1048E0000078004000E1F505037C30B5214C00293B -:1048F00018BF0C46012B0CD11F4B984209D11F4BFE -:104900009A6C42F080429A641A6F42F080421A67B1 -:104910001B6F2268036EC16D03EB52038466B3FB09 -:10492000F2F36268150442BF23F0070503F00703A2 -:1049300043EA4503CB60A36843F040034B60E36860 -:1049400043F001038B6042F4967343F001030B6064 -:104950004FF0FF330B62510505D512F0102205D040 -:10496000B2F1805F04D080F8643030BD7F23FAE775 -:104970003F23F8E720810008B44F0020004502588B -:104980002DE9F047C66D05463768F46921073462A2 -:104990001AD014F0080118BF4FF48071E20748BF25 -:1049A00041F02001A3074FF0300348BF41F0400120 -:1049B000600748BF41F0800183F31188281DFFF78D -:1049C00059FF002383F31188E2050AD5302383F3CE -:1049D00011884FF48061281DFFF74CFF002383F3FB -:1049E00011884FF030094FF0000A14F0200838D138 -:1049F0003B0616D54FF0300905F1380A200610D5D0 -:104A000089F31188504600F07DF9002836DA082134 -:104A1000281DFFF72FFF27F080033360002383F367 -:104A20001188790614D5620612D5302383F31188D4 -:104A3000D5E913239A4208D12B6C33B127F04007F4 -:104A40001021281DFFF716FF3760002383F311881C -:104A5000E30618D5AA6E1369ABB15069BDE8F047FB -:104A6000184789F31188736A284695F8641019402D -:104A700000F0E6F98AF31188F469B6E7B06288F3CA -:104A80001188F469BAE7BDE8F0870000090100F178 -:104A90006043012203F56143C9B283F8001300F0BB -:104AA0001F039A4043099B0003F1604303F56143F0 -:104AB000C3F880211A60704700F01F0301229A405A -:104AC000430900F160409B0000F5614003F1604341 -:104AD00003F56143C3F88020C3F88021002380F8E8 -:104AE00000337047F8B51546826804460B46AA4263 -:104AF00000D28568A1692669761AB5420BD218469C -:104B00002A46FCF729FFA3692B44A3612846A36822 -:104B10005B1BA360F8BD0CD9AF1B18463246FCF7EF -:104B20001BFF3A46E1683044FCF716FFE3683B445C -:104B3000EBE718462A46FCF70FFFE368E5E70000BD -:104B400083689342F7B50446154600D28568D4E9D8 -:104B50000460361AB5420BD22A46FCF7FDFE6369A3 -:104B60002B4463612846A3685B1BA36003B0F0BDC0 -:104B70000DD93246AF1B0191FCF7EEFE01993A4682 -:104B8000E0683144FCF7E8FEE3683B44E9E72A4685 -:104B9000FCF7E2FEE368E4E710B50A440024C361D1 -:104BA000029B8460C16002610362C0E90000C0E949 -:104BB000051110BD08B5D0E90532934201D18268D4 -:104BC00082B98268013282605A1C426119700021E8 -:104BD000D0E904329A4224BFC368436100F0C0FEAA -:104BE000002008BD4FF0FF30FBE7000070B5302318 -:104BF00004460E4683F31188A568A5B1A368A2698F -:104C0000013BA360531CA36115782269934224BF22 -:104C1000E368A361E3690BB120469847002383F35F -:104C20001188284607E03146204600F089FE00281A -:104C3000E2DA85F3118870BD2DE9F74F04460E4680 -:104C400017469846D0F81C904FF0300A8AF3118826 -:104C50004FF0000B154665B12A4631462046FFF756 -:104C600041FF034660B94146204600F069FE002836 -:104C7000F1D0002383F31188781B03B0BDE8F08FD7 -:104C8000B9F1000F03D001902046C847019B8BF378 -:104C90001188ED1A1E448AF31188DCE7C160C361F4 -:104CA000009B82600362C0E905111144C0E9000065 -:104CB00001617047F8B504460D461646302383F36C -:104CC0001188A768A7B1A368013BA36063695A1C58 -:104CD00062611D70D4E904329A4224BFE3686361C3 -:104CE000E3690BB120469847002080F3118807E064 -:104CF0003146204600F024FE0028E2DA87F31188CE -:104D0000F8BD0000D0E9052310B59A4201D18268B0 -:104D10007AB982680021013282605A1C82611C7853 -:104D200003699A4224BFC368836100F019FE2046DC -:104D300010BD4FF0FF30FBE72DE9F74F04460E465C -:104D400017469846D0F81C904FF0300A8AF3118825 -:104D50004FF0000B154665B12A4631462046FFF755 -:104D6000EFFE034660B94146204600F0E9FD002809 -:104D7000F1D0002383F31188781B03B0BDE8F08FD6 -:104D8000B9F1000F03D001902046C847019B8BF377 -:104D90001188ED1A1E448AF31188DCE70268436823 -:104DA0001143016003B11847704700001430FFF74A -:104DB00043BF00004FF0FF331430FFF73DBF00004A -:104DC0003830FFF7B9BF00004FF0FF333830FFF73E -:104DD000B3BF00001430FFF709BF00004FF0FF31F0 -:104DE0001430FFF703BF00003830FFF763BF000047 -:104DF0004FF0FF323830FFF75DBF0000012914BFCC -:104E00006FF0130000207047FFF744BD044B0360B0 -:104E100000234360C0E9023301230374704700BFDD -:104E20003881000810B53023044683F31188FFF75A -:104E30005BFD02230020237480F3118810BD000065 -:104E400038B5C36904460D461BB904210844FFF771 -:104E5000A5FF294604F11400FFF7ACFE002806DA8E -:104E6000201D4FF40061BDE83840FFF797BF38BD03 -:104E7000026843681143016003B11847704700009E -:104E800013B5406B00F58054D4F8A4381A68117833 -:104E9000042914D1017C022911D119790123128925 -:104EA0008B4013420BD101A94C3002F0F3F9D4F836 -:104EB000A4480246019B2179206800F0DFF902B086 -:104EC00010BD0000143002F075B900004FF0FF3340 -:104ED000143002F06FB900004C3002F047BA000005 -:104EE0004FF0FF334C3002F041BA0000143002F0B2 -:104EF00043B900004FF0FF31143002F03DB900001B -:104F00004C3002F013BA00004FF0FF324C3002F088 -:104F10000DBA00000020704710B500F58054D4F899 -:104F2000A4381A681178042917D1017C022914D1F8 -:104F30005979012352898B4013420ED1143002F06B -:104F4000D5F8024648B1D4F8A4484FF440736179CB -:104F50002068BDE8104000F07FB910BD406BFFF73E -:104F6000DBBF0000704700007FB5124B012504260F -:104F7000044603600023057400F18402436029465F -:104F8000C0E902330C4B0290143001934FF440738C -:104F9000009602F087F8094B04F69442294604F182 -:104FA0004C000294CDE900634FF4407302F04EF9D7 -:104FB00004B070BD608100085D4F0008814E00089C -:104FC0000A68302383F311880B790B3342F82300EE -:104FD0004B79133342F823008B7913B10B3342F82A -:104FE000230000F58053C3F8A418022303740020A3 -:104FF00080F311887047000038B5037F044613B171 -:1050000090F85430ABB90125201D0221FFF730FF85 -:1050100004F114006FF00101257700F0ADFC04F1FC -:105020004C0084F854506FF00101BDE8384000F0A6 -:10503000A3BC38BD10B5012104460430FFF718FFAA -:105040000023237784F8543010BD000038B504469F -:105050000025143002F03EF804F14C00257702F0F0 -:105060000DF9201D84F854500121FFF701FF20465F -:10507000BDE83840FFF750BF90F8803003F0600380 -:10508000202B06D190F881200023212A03D81F2A43 -:1050900006D800207047222AFBD1C0E91D3303E067 -:1050A000034A426707228267C3670120704700BF37 -:1050B0003C23002037B500F58055D5F8A4381A6890 -:1050C000117804291AD1017C022917D119790123F9 -:1050D00012898B40134211D100F14C04204602F09A -:1050E0008DF958B101A9204602F0D4F8D5F8A448AA -:1050F0000246019B2179206800F0C0F803B030BD62 -:1051000001F10B03F0B550F8236085B004460D465D -:10511000FEB1302383F3118804EB8507301D08218D -:10512000FFF7A6FEFB6806F14C005B691B681BB12C -:10513000019002F0BDF8019803A902F0ABF8024615 -:1051400048B1039B2946204600F098F8002383F3DA -:10515000118805B0F0BDFB685A691268002AF5D0C5 -:105160001B8A013B1340F1D104F18002EAE7000001 -:10517000133138B550F82140ECB1302383F3118856 -:1051800004F58053D3F8A4281368527903EB820303 -:10519000DB689B695D6845B104216018FFF768FE14 -:1051A000294604F1140001F0ABFF2046FFF7B4FEDE -:1051B000002383F3118838BD7047000001F07EBAE8 -:1051C00001234022002110B5044600F8303BFCF7D3 -:1051D000E9FB0023C4E9013310BD000010B5302302 -:1051E000044683F311882422416000210C30FCF72F -:1051F000D9FB204601F084FA02230020237080F3BB -:10520000118810BD70B500EB8103054650690E464C -:105210001446DA6018B110220021FCF7C3FBA06924 -:1052200018B110220021FCF7BDFB31462846BDE82D -:10523000704001F065BB000083682022002103F06C -:10524000011310B5044683601030FCF7ABFB204619 -:10525000BDE8104001F0E0BBF0B4012500EB810493 -:1052600047898D40E4683D43A4694581236000235C -:10527000A2606360F0BC01F0FDBB0000F0B401254A -:1052800000EB810407898D40E4683D436469058132 -:1052900023600023A2606360F0BC01F073BC0000D7 -:1052A00070B5022300250446242203702946C0F865 -:1052B00088500C3040F8045CFCF774FB204684F8FE -:1052C000705001F0B1FA63681B6823B1294620468B -:1052D000BDE87040184770BD0378052B10B5044633 -:1052E0000AD080F88C300523037043681B680BB12B -:1052F000042198470023A36010BD00000178052910 -:1053000006D190F88C20436802701B6803B11847DF -:105310007047000070B590F87030044613B1002358 -:1053200080F8703004F18002204601F099FB636838 -:105330009B68B3B994F8803013F0600535D0002134 -:10534000204601F08BFE0021204601F07BFE6368C1 -:105350001B6813B1062120469847062384F8703055 -:1053600070BD204698470028E4D0B4F88630A26F7C -:105370009A4288BFA36794F98030A56F002B4FF045 -:10538000300380F20381002D00F0F280092284F8BE -:10539000702083F3118800212046D4E91D23FFF7F4 -:1053A0006DFF002383F31188DAE794F8812003F07E -:1053B0007F0343EA022340F20232934200F0C580A9 -:1053C00021D8B3F5807F48D00DD8012B3FD0022BD8 -:1053D00000F09380002BB2D104F1880262670222B0 -:1053E000A267E367C1E7B3F5817F00F09B80B3F567 -:1053F000407FA4D194F88230012BA0D1B4F888303A -:1054000043F0020332E0B3F5006F4DD017D8B3F587 -:10541000A06F31D0A3F5C063012B90D863682046FC -:1054200094F882205E6894F88310B4F88430B04712 -:10543000002884D0436863670368A3671AE0B3F564 -:10544000106F36D040F6024293427FF478AF5C4B47 -:1054500063670223A3670023C3E794F88230012B1C -:105460007FF46DAFB4F8883023F00203A4F88830DD -:10547000C4E91D55E56778E7B4F88030B3F5A06F4F -:105480000ED194F88230204684F88A3001F02AFA4E -:1054900063681B6813B101212046984703232370DA -:1054A0000023C4E91D339CE704F18B0363670123E8 -:1054B000C3E72378042B10D1302383F311882046CF -:1054C000FFF7BAFE85F311880321636884F88B50D7 -:1054D00021701B680BB12046984794F88230002B4E -:1054E000DED084F88B300423237063681B68002BA4 -:1054F000D6D0022120469847D2E794F8843020463F -:105500001D0603F00F010AD501F09CFA012804D012 -:1055100002287FF414AF2B4B9AE72B4B98E701F04E -:1055200083FAF3E794F88230002B7FF408AF94F805 -:10553000843013F00F01B3D01A06204602D501F0D3 -:10554000A5FDADE701F096FDAAE794F88230002BA7 -:105550007FF4F5AE94F8843013F00F01A0D01B0651 -:10556000204602D501F07AFD9AE701F06BFD97E73E -:10557000142284F8702083F311882B462A4629468A -:105580002046FFF769FE85F31188E9E65DB1152233 -:1055900084F8702083F3118800212046D4E91D236C -:1055A000FFF75AFEFDE60B2284F8702083F3118882 -:1055B0002B462A4629462046FFF760FEE3E700BF58 -:1055C00090810008888100088C81000838B590F827 -:1055D00070300446002B3ED0063BDAB20F2A34D896 -:1055E0000F2B32D8DFE803F0373131082232313166 -:1055F0003131313131313737856FB0F886309D42E6 -:1056000014D2C3681B8AB5FBF3F203FB12556DB9C4 -:10561000302383F311882B462A462946FFF72EFEB6 -:1056200085F311880A2384F870300EE0142384F87F -:105630007030302383F31188002320461A46194620 -:10564000FFF70AFE002383F3118838BDC36F03B14F -:1056500098470023E7E70021204601F0FFFC0021E6 -:10566000204601F0EFFC63681B6813B10621204659 -:1056700098470623D7E7000010B590F8703004462D -:10568000142B29D017D8062B05D001D81BB110BD7B -:10569000093B022BFBD80021204601F0DFFC002152 -:1056A000204601F0CFFC63681B6813B10621204639 -:1056B0009847062319E0152BE9D10B2380F87030A9 -:1056C000302383F3118800231A461946FFF7D6FDCD -:1056D000002383F31188DAE7C3689B695B68002BBA -:1056E000D5D1C36F03B19847002384F87030CEE75B -:1056F00000238268037503691B6899689142FBD295 -:105700005A680360426010605860704700238268E6 -:10571000037503691B6899689142FBD85A68036056 -:10572000426010605860704708B50846302383F324 -:1057300011880A7D0023052A06D8DFE802F00B0550 -:105740000503120E826913604FF0FF338361FFF788 -:10575000CFFF002383F3118808BD8269936801336A -:105760009360D0E9003213605A60EDE7FFF7C0BFE5 -:10577000054BD96808751868026853601A600122E1 -:10578000D8600275FAF746BE205400200C4B30B5A5 -:10579000DD684B1C87B004460FD02B46094A68468B -:1057A00000F07EF92046FFF7E3FF009B13B1684647 -:1057B00000F080F9A86907B030BDFFF7D9FFF9E71D -:1057C000205400202957000838B50C4D044681614B -:1057D000EB6881689A68914203D8BDE83840FFF7CA -:1057E00087BF1846FFF792FF01230146EC60204671 -:1057F0002375BDE83840FAF70DBE00BF20540020E5 -:10580000044B1A68DB6890689B68984294BF00203C -:105810000120704720540020084B10B51C68D86840 -:10582000226853601A600122DC602275FFF76EFF68 -:1058300001462046BDE81040FAF7ECBD2054002098 -:1058400038B50123084C00252370656001F012FE75 -:1058500001F038FE0549064801F00CFF02232370D1 -:1058600085F3118838BD00BF885600209881000854 -:105870002054002008B572B6044B186500F022FDD4 -:1058800000F0E4FD024B03221A70FEE720540020D2 -:105890008856002000F044B9034A516853685B1AE7 -:1058A0009842FBD8704700BF001000E08B600223D5 -:1058B000086108468B8270478368A3F1840243F82D -:1058C000142C026943F8442C426943F8402C094ADD -:1058D00043F8242CC268A3F1200043F8182C0222BC -:1058E00003F80C2C002203F80B2C034A43F8102C6D -:1058F000704700BF2D0400082054002008B5FFF7B2 -:10590000DBFFBDE80840FFF731BF0000024BDB685A -:1059100098610F20FFF72CBF20540020302383F321 -:105920001188FFF7F3BF000008B50146302383F369 -:1059300011880820FFF72AFF002383F3118808BD90 -:10594000064BDB6839B1426818605A6013604360E7 -:105950000420FFF71BBF4FF0FF307047205400209A -:105960000368984206D01A68026050601846996130 -:10597000FFF7FCBE7047000038B504460D462068AE -:10598000844200D138BD036823605C608561FFF705 -:10599000EDFEF4E7036810B59C68A2420CD85C6881 -:1059A0008A600B604C602160596099688A1A9A601D -:1059B0004FF0FF33836010BD121B1B68ECE7000043 -:1059C0000A2938BF0A2170B504460D460A26601917 -:1059D00001F04AFD01F032FD041BA54203D8751CFD -:1059E00004462E46F3E70A2E04D90120BDE8704094 -:1059F00001F080BE70BD0000F8B5144B0D460A2AB8 -:105A00004FF00A07D96103F11001826038BF0A2202 -:105A1000416019691446016048601861A81801F0D6 -:105A200013FD01F00BFD431B0646A34206D37C1C6D -:105A300028192746354601F017FDF2E70A2F04D949 -:105A40000120BDE8F84001F055BEF8BD205400200B -:105A5000F8B506460D4601F0F1FC0F4A134653F81F -:105A6000107F9F4206D12A4601463046BDE8F840E5 -:105A7000FFF7C2BFD169BB68441A2C1928BF2C4656 -:105A8000A34202D92946FFF79BFF2246314603482D -:105A9000BDE8F840FFF77EBF2054002030540020BE -:105AA000C0E90323002310B45DF8044B4361FFF702 -:105AB000CFBF000010B5194C236998420DD0816802 -:105AC000D0E9003213605A609A680A449A60002351 -:105AD00003604FF0FF33A36110BD0268234643F813 -:105AE000102F53600022026022699A4203D1BDE860 -:105AF000104001F0B3BC936881680B44936001F0DF -:105B00009DFC2269E1699268441AA242E4D91144D9 -:105B1000BDE81040091AFFF753BF00BF2054002012 -:105B20002DE9F047DFF8BC8008F110072C4ED8F8BB -:105B3000105001F083FCD8F81C40AA68031B9A425D -:105B40003ED814444FF00009D5E90032C8F81C4093 -:105B500013605A60C5F80090D8F81030B34201D1F4 -:105B600001F07CFC89F31188D5E903312846984778 -:105B7000302383F311886B69002BD8D001F05EFCD1 -:105B80006A69A0EB040982464A450DD2022001F061 -:105B9000B1FD0022D8F81030B34208D15146284652 -:105BA000BDE8F047FFF728BF121A2244F2E712EBD4 -:105BB00009092946384638BF4A46FFF7EBFEB5E7E4 -:105BC000D8F81030B34208D01444C8F81C00211A89 -:105BD000A960BDE8F047FFF7F3BEBDE8F08700BF5E -:105BE000305400202054002038B501F027FC054A2D -:105BF000D2E90845031B181945F10001C2E9080163 -:105C000038BD00BF2054002000207047FEE7000090 -:105C1000704700004FF0FF307047000002290CD0A1 -:105C2000032904D00129074818BF00207047032A20 -:105C300005D8054800EBC2007047044870470020B3 -:105C4000704700BF708200084C23002024820008A7 -:105C500070B59AB005460846144601A900F0C2F88E -:105C600001A8FBF797FE431C0022C6B25B0010465A -:105C7000C5E9003423700323023404F8013C01AB6E -:105C8000D1B202348E4201D81AB070BD13F8011B94 -:105C9000013204F8010C04F8021CF1E708B53023C6 -:105CA00083F311880348FFF705FA002383F3118873 -:105CB00008BD00BF9056002090F8803003F01F020E -:105CC000012A07D190F881200B2A03D10023C0E9D3 -:105CD0001D3315E003F06003202B08D1B0F88430A9 -:105CE0002BB990F88120212A03D81F2A04D8FFF766 -:105CF000C3B9222AEBD0FAE7034A42670722826738 -:105D0000C3670120704700BF4323002007B5052962 -:105D100017D8DFE801F0191603191920302383F38F -:105D20001188104A01210190FFF76CFA01980221B5 -:105D30000D4AFFF767FA0D48FFF788F9002383F350 -:105D4000118803B05DF804FB302383F31188074802 -:105D5000FFF752F9F2E7302383F311880348FFF786 -:105D600069F9EBE7C4810008E8810008905600203B -:105D700038B50C4D0C4C2A460C4904F10800FFF7CD -:105D800067FF05F1CA0204F110000949FFF760FF3F -:105D900005F5CA7204F118000649BDE83840FFF75E -:105DA00057BF00BF686F00204C230020A48100086B -:105DB000AE810008B981000870B5044608460D465A -:105DC000FBF7E8FDC6B22046013403780BB918464C -:105DD00070BD32462946FBF7C9FD0028F3D10120EA -:105DE000F6E700002DE9F04705460C46FBF7D2FD2B -:105DF0002A49C6B22846FFF7DFFF08B10936F6B2D6 -:105E000027492846FFF7D8FF08B11036F6B2632EAF -:105E10000BD8DFF88880DFF88890224FDFF890A059 -:105E20002E7846B92670BDE8F08729462046BDE8A1 -:105E3000F04702F065B8252E2CD1072241462846AE -:105E4000FBF794FD60B9184B224603F1100153F89B -:105E5000040B8B4242F8040BF9D107351034DFE70D -:105E6000082249462846FBF781FD98B9A21C0F4B32 -:105E7000197802320909C95D02F8041C13F8011BE4 -:105E800001F00F015345C95D02F8031CF0D118342D -:105E90000835C5E7013504F8016BC1E790820008B9 -:105EA000B9810008988200081E7F000800E8F11FF1 -:105EB0000CE8F11FBFF34F8F044B1A695107FCD157 -:105EC000D3F810215207F8D1704700BF00200052CC -:105ED00008B50D4B1B78ABB9FFF7ECFF0B4BDA683D -:105EE000D10704D50A4A5A6002F188325A60D3F8C1 -:105EF0000C21D20706D5064AC3F8042102F18832E4 -:105F0000C3F8042108BD00BFC67100200020005264 -:105F10002301674508B5114B1B78F3B9104B1A697B -:105F2000510703D5DA6842F04002DA60D3F8102155 -:105F3000520705D5D3F80C2142F04002C3F80C21DA -:105F4000FFF7B8FF064BDA6842F00102DA60D3F8D7 -:105F50000C2142F00102C3F80C2108BDC6710020DB -:105F6000002000520F289ABF00F5806040040020F6 -:105F7000704700004FF40030704700001020704759 -:105F80000F2808B50BD8FFF7EDFF00F500330268C6 -:105F9000013204D104308342F9D1012008BD002030 -:105FA000FCE700000F2838B505463FD8FFF782FF11 -:105FB0001F4CFFF78DFF4FF0FF3307286361C4F8D4 -:105FC00014311DD82361FFF775FF030243F024034A -:105FD000E360E36843F08003E36023695A07FCD47D -:105FE0002846FFF767FFFFF7BDFF4FF4003100F0D1 -:105FF00009FA2846FFF78EFFBDE83840FFF7C0BF1B -:10600000C4F81031FFF756FFA0F108031B0243F05C -:106010002403C4F80C31D4F80C3143F08003C4F8E5 -:106020000C31D4F810315B07FBD4D9E7002038BD20 -:10603000002000522DE9F84F05460C46104645EA6F -:106040000203DE0602D00020BDE8F88F20F01F001A -:10605000DFF8BCB0DFF8BCA0FFF73AFF04EB0008A4 -:10606000444503D10120FFF755FFEDE720222946E3 -:10607000204601F013FF10B920352034F0E72B46FD -:1060800005F120021F68791CDDD104339A42F9D151 -:1060900005F178431B481C4EB3F5801F1B4B38BFDE -:1060A000184603F1F80332BFD946D1461E46FFF722 -:1060B00001FF0760A5EB040C336804F11C0143F0F9 -:1060C00002033360231FD9F8007017F00507FAD1D7 -:1060D00053F8042F8B424CF80320F4D1BFF34F8FB9 -:1060E000FFF7E8FE4FF0FF332022214603602846E9 -:1060F000336823F00203336001F0D0FE0028BBD0E8 -:106100003846B0E7142100520C20005214200052EF -:10611000102000521021005210B5084C237828B1ED -:106120001BB9FFF7D5FE0123237010BD002BFCD057 -:106130002070BDE81040FFF7EDBE00BFC671002023 -:106140002DE9F04F0D4685B0814658B111F00D068E -:1061500014BF2022082211F00803019304D0431E2B -:1061600003426AD0002435E0002E37D009F11F0128 -:1061700021F01F094FF00108324F05F00403DFF84A -:10618000D0A005EA080BBBF1000F32D07869C00738 -:106190002FD408F101080C37B8F1060FF3D19EB9DE -:1061A000294D4946A819019201F0AEF9044600288C -:1061B0003AD11836019A782EF3D1494601F0A4F964 -:1061C0000446002830D1019A4946204801F09CF944 -:1061D000044668BB204605B0BDE8F08F0029C9D150 -:1061E00001462846029201F08FF90446E0B9029A6E -:1061F000C0E713B178694107CBD5AC0702D5786900 -:106200008007C6D5019911B178690107C1D5182059 -:10621000494600FB08A0CDE9022301F075F90446C8 -:10622000DDE902230028B4D04A460021204601E0DF -:106230004A460021FBF7B6FBCCE70246002E95D17B -:1062400098E700BFAC820008F8710020C8710020F8 -:10625000E07100200121FFF773BF0000F8B5144D75 -:1062600001241827134E40F2FF3200210120FBF7D2 -:1062700099FB07FB046001342A6955F80C1F01F0F3 -:106280002FF9062CF5D137254FF4C0542046FFF7DF -:10629000E1FF014628B122460748BDE8F84001F079 -:1062A0001FB9C4EBC404013D4FEAD404EED1F8BDDC -:1062B000AC820008E0710020C871002008B101F034 -:1062C00095B9704738B5054D00240334696855F811 -:1062D0000C0B00F0A9F8122CF7D138BDAC820008E5 -:1062E00038B5EFF311859DB9EFF30584C4F30804C5 -:1062F000302334B183F31188FFF776FC85F31188DE -:1063000038BD83F31188FFF76FFC84F3118838BD23 -:10631000BDE83840FFF768BC10B5FFF7E1FF104C4F -:10632000C008104A002340EA4170C908A0FB04ECF1 -:10633000A0FB020E1CEB0000A1FB044CA1FB02120F -:106340005B41001943EB0C0011EB0E0142F100021E -:10635000411842F10000090941EA007010BD00BF78 -:10636000CFF753E3A59BC4200244074BD2B210B52C -:10637000904200D110BD441C00B253F8200041F8F7 -:10638000040BE0B2F4E700BF504000580E4B30B5AC -:106390001C6F240405D41C6F1C671C6F44F400445C -:1063A0001C670A4C02442368D2B243F48073236012 -:1063B000074B904200D130BD441C51F8045B00B241 -:1063C00043F82050E0B2F4E7004402580048025875 -:1063D0005040005807B5012201A90020FFF7C4FF73 -:1063E000019803B05DF804FB13B50446FFF7F2FF14 -:1063F000A04205D0012201A900200194FFF7C6FFA9 -:1064000002B010BD0144BFF34F8F064B884204D346 -:10641000BFF34F8FBFF36F8F7047C3F85C0220301C -:10642000F4E700BF00ED00E00144BFF34F8F064BDF -:10643000884204D3BFF34F8FBFF36F8F7047C3F809 -:1064400070022030F4E700BF00ED00E0704700006C -:10645000114BDA6952021ED59A69D00704D50F4A4A -:106460009A6002F144329A600B4BDA69D107FCD48E -:106470001A6A22F480021A629A6942F002029A6150 -:10648000DA69D207FCD49A6942F001029A61024AA1 -:10649000D369DB07FCD47047002000523B2A19085F -:1064A000074B45F255521A6002225A6040F6FF72BD -:1064B0009A604CF6CC421A600122024B1A70704767 -:1064C0000048005874720020034B1B781BB1034B2B -:1064D0004AF6AA221A6070477472002000480058D9 -:1064E000034B1A681AB9034AD2F8D0241A607047CD -:1064F0007072002000400258024B4FF48032C3F803 -:10650000D02470470040025808B5FFF7E9FF024B5E -:106510001868C0F3806008BD7072002070B5BFF3CA -:106520004F8FBFF36F8F1A4A0021C2F85012BFF38A -:106530004F8FBFF36F8F536943F400335361BFF341 -:106540004F8FBFF36F8FC2F88410BFF34F8FD2F815 -:10655000803043F6E074C3F3C900C3F34E335B01EC -:1065600003EA0406014646EA81750139C2F8605221 -:10657000F9D2203B13F1200FF2D1BFF34F8F5369B3 -:1065800043F480335361BFF34F8FBFF36F8F70BD00 -:1065900000ED00E0FEE70000214B2248224A70B5E2 -:1065A000904237D3214BC11EDA1C121A22F003028B -:1065B0008B4238BF00220021FBF7F4F91C4A00236C -:1065C000C2F88430BFF34F8FD2F8803043F6E074C6 -:1065D000C3F3C900C3F34E335B0103EA040601466B -:1065E00046EA81750139C2F86C52F9D2203B13F1A9 -:1065F000200FF2D1BFF34F8FBFF36F8FBFF34F8FD9 -:10660000BFF36F8F0023C2F85032BFF34F8FBFF339 -:106610006F8F70BD53F8041B40F8041BC0E700BF28 -:10662000DC8400086874002068740020687400200E -:1066300000ED00E0054B996B21EA000199631A6EA9 -:1066400022EA00021A661B6E704700BF004502581E -:1066500070B5D0E9244300224FF0FF359E6804EB6B -:1066600042135101D3F80009002805DAD3F80009D4 -:1066700040F08040C3F80009D3F8000B002805DA89 -:10668000D3F8000B40F08040C3F8000B01326318D0 -:106690009642C3F80859C3F8085BE0D24FF00113E3 -:1066A000C4F81C3870BD0000890141F0200101616F -:1066B00003699B06FCD41220FFF7EEB810B50A4C14 -:1066C0002046FEF77DFD094BC4F89030084BC4F816 -:1066D0009430084C2046FEF773FD074BC4F8903009 -:1066E000064BC4F8943010BD7872002000000840BA -:1066F000188300081473002000000440248300085D -:1067000070B503780546012B58D13F4BD0F8904027 -:10671000984254D13D4B0E2165209A6B42F00062A5 -:106720009A631A6E42F000621A661B6E384BD3F8F9 -:10673000802042F00062C3F88020D3F8802022F04D -:106740000062C3F88020D3F88030FEF79FF9314B08 -:10675000E360314BC4F800380023D5F89060C4F8EA -:10676000003EC02323604FF40413A3633369002B5E -:10677000FCDA01230C203361FFF78EF83369DB0765 -:10678000FCD41220FFF788F83369002BFCDA0026CE -:106790002846A660FFF75CFF6B68C4F81068DB68EA -:1067A000C4F81468C4F81C6863BB1C4BA3614FF0A9 -:1067B000FF336361A36843F00103A36070BD184B0E -:1067C0009842C9D1114B4FF080609A6B42F0007231 -:1067D0009A631A6E42F000721A661B6E0C4BD3F865 -:1067E000802042F00072C3F88020D3F8802022F08D -:1067F0000072C3F88020D3F88030FFF71BFF0E2112 -:106800004D20A2E7074BD1E77872002000450258DF -:10681000004402584014004003002002003C30C0F5 -:1068200014730020083C30C0F8B5D0F890400546FD -:1068300000214FF000662046FFF736FFD5F8941090 -:1068400000234FF001128F684FF0FF30C4F8343846 -:10685000C4F81C2804EB431201339F42C2F80069BC -:10686000C2F8006BC2F80809C2F8080BF2D20B6834 -:10687000D5F89020C5F8983063621023136116692B -:1068800016F01006FBD11220FFF706F8D4F80038F6 -:1068900023F4FE63C4F80038A36943F4402343F0B3 -:1068A0001003A3610923C4F81038C4F814380B4B43 -:1068B000EB604FF0C043C4F8103B094BC4F8003BF9 -:1068C000C4F81069C4F80039D5F8983003F1100203 -:1068D00043F48013C5F89820A362F8BDF482000841 -:1068E00040800010D0F8902090F88A10D2F800383C -:1068F00023F4FE6343EA0113C2F800387047000036 -:106900002DE9F84300EB8103D0F890500C46804607 -:10691000DA680FFA81F94801166806F00306731E5B -:10692000022B05EB41134FF0000194BFB604384E23 -:10693000C3F8101B4FF0010104F1100398BF06F1DA -:10694000805601FA03F3916998BF06F500460029C5 -:106950003AD0578A04F15801374349016F50D5F8AE -:106960001C180B430021C5F81C382B180127C3F84D -:106970001019A7405369611E9BB3138A928B9B0821 -:10698000012A88BF5343D8F89820981842EA034355 -:1069900001F140022146C8F89800284605EB820222 -:1069A0005360FFF781FE08EB8900C3681B8A43EA46 -:1069B000845348341E4364012E51D5F81C381F43BC -:1069C000C5F81C78BDE8F88305EB4917D7F8001B1C -:1069D00021F40041C7F8001BD5F81C1821EA030375 -:1069E000C0E704F13F030B4A2846214605EB830329 -:1069F0005A60FFF759FE05EB4910D0F8003923F42F -:106A00000043C0F80039D5F81C3823EA0707D7E758 -:106A10000080001000040002D0F894201268C0F832 -:106A20009820FFF715BE00005831D0F8903049018A -:106A30005B5813F4004004D013F4001F0CBF022075 -:106A4000012070474831D0F8903049015B5813F469 -:106A5000004004D013F4001F0CBF02200120704737 -:106A600000EB8101CB68196A0B6813604B685360B7 -:106A70007047000000EB810330B5DD68AA69136838 -:106A8000D36019B9402B84BF402313606B8A14680C -:106A9000D0F890201C4402EB4110013C09B2B4FB39 -:106AA000F3F46343033323F0030343EAC44343F0A3 -:106AB000C043C0F8103B2B6803F00303012B0ED139 -:106AC000D2F8083802EB411013F4807FD0F8003B75 -:106AD00014BF43F0805343F00053C0F8003B02EB77 -:106AE0004112D2F8003B43F00443C2F8003B30BDF2 -:106AF0002DE9F041D0F8906005460C4606EB4113B5 -:106B0000D3F8087B3A07C3F8087B08D5D6F81438C1 -:106B10001B0704D500EB8103DB685B689847FA0725 -:106B20001FD5D6F81438DB071BD505EB8403D968CD -:106B3000CCB98B69488A5A68B2FBF0F600FB162282 -:106B40008AB91868DA6890420DD2121AC3E9002493 -:106B5000302383F3118821462846FFF78BFF84F307 -:106B60001188BDE8F081012303FA04F26B8923EA5E -:106B700002036B81CB68002BF3D021462846BDE889 -:106B8000F041184700EB81034A0170B5DD68D0F889 -:106B900090306C692668E66056BB1A444FF40020BA -:106BA000C2F810092A6802F00302012A0AB20ED1C3 -:106BB000D3F8080803EB421410F4807FD4F80009DE -:106BC00014BF40F0805040F00050C4F8000903EBBF -:106BD0004212D2F8000940F00440C2F80009012234 -:106BE000D3F8340802FA01F10143C3F8341870BD38 -:106BF00019B9402E84BF4020206020681A442E8A94 -:106C00008419013CB4FBF6F440EAC44040F0005063 -:106C1000C6E700002DE9F843D0F8906005460C4621 -:106C20004F0106EB4113D3F8088918F0010FC3F8A0 -:106C300008891CD0D6F81038DB0718D500EB810383 -:106C4000D3F80CC0DCF81430D3F800E0DA689645CD -:106C500030D2A2EB0E024FF000091A60C3F8049084 -:106C6000302383F31188FFF78DFF89F3118818F023 -:106C7000800F1DD0D6F834380126A640334217D0F5 -:106C800005EB84030134D5F89050D3F80CC0E4B27E -:106C90002F44DCF8142005EB0434D2F800E05168EE -:106CA000714514D3D5F8343823EA0606C5F834689C -:106CB000BDE8F883012303FA01F2038923EA020302 -:106CC0000381DCF80830002BD1D09847CFE7AEEB3A -:106CD0000103BCF81000834228BF0346D7F8180907 -:106CE00080B2B3EB800FE3D89068A0F1040959F8A3 -:106CF000048FC4F80080A0EB09089844B8F1040F91 -:106D0000F5D818440B4490605360C8E72DE9F84F5C -:106D1000D0F8905004466E69AB691E4016F4805856 -:106D20006E6103D0BDE8F84FFEF7BABA002E12DA52 -:106D3000D5F8003E9B0705D0D5F8003E23F00303AD -:106D4000C5F8003ED5F80438204623F00103C5F805 -:106D50000438FEF7D3FA370505D52046FFF778FC4F -:106D60002046FEF7B9FAB0040CD5D5F8083813F070 -:106D7000060FEB6823F470530CBF43F4105343F435 -:106D8000A053EB6031071BD56368DB681BB9AB69A7 -:106D900023F00803AB612378052B0CD1D5F8003E16 -:106DA0009A0705D0D5F8003E23F00303C5F8003E4E -:106DB0002046FEF7A3FA6368DB680BB120469847CC -:106DC000F30200F1BA80B70226D5D4F890900027DC -:106DD0004FF0010A09EB4712D2F8003B03F44023BD -:106DE000B3F5802F11D1D2F8003B002B0DDA628968 -:106DF0000AFA07F322EA0303638104EB8703DB68E3 -:106E0000DB6813B13946204698470137D4F89430EF -:106E1000FFB29B689F42DDD9F00619D5D4F89000E7 -:106E2000026AC2F30A1702F00F0302F4F012B2F57D -:106E3000802F00F0CA80B2F5402F09D104EB830304 -:106E4000002200F58050DB681B6A974240F0B0805A -:106E50003003D5F8185835D5E90303D5002120466D -:106E6000FFF746FEAA0303D501212046FFF740FEA7 -:106E70006B0303D502212046FFF73AFE2F0303D50B -:106E800003212046FFF734FEE80203D50421204603 -:106E9000FFF72EFEA90203D505212046FFF728FEA5 -:106EA0006A0203D506212046FFF722FE2B0203D5F6 -:106EB00007212046FFF71CFEEF0103D508212046DD -:106EC000FFF716FE700340F1A780E90703D5002104 -:106ED0002046FFF79FFEAA0703D501212046FFF7B2 -:106EE00099FE6B0703D502212046FFF793FE2F077B -:106EF00003D503212046FFF78DFEEE0603D50421BE -:106F00002046FFF787FEA80603D505212046FFF798 -:106F100081FE690603D506212046FFF77BFE2A067F -:106F200003D507212046FFF775FEEB0574D52046F3 -:106F30000821BDE8F84FFFF76DBED4F890904FF0F0 -:106F4000000B4FF0010AD4F894305FFA8BF79B687E -:106F50009F423FF638AF09EB4713D3F8002902F4FC -:106F60004022B2F5802F20D1D3F80029002A1CDA64 -:106F7000D3F8002942F09042C3F80029D3F8002941 -:106F8000002AFBDB3946D4F89000FFF78DFB2289FD -:106F90000AFA07F322EA0303238104EB8703DB6881 -:106FA0009B6813B13946204698470BF1010BCAE79D -:106FB000910701D1D0F80080072A02F101029CBF9D -:106FC00003F8018B4FEA18283FE704EB830300F531 -:106FD0008050DA68D2F818C0DCF80820DCE9001C20 -:106FE000A1EB0C0C00218F4208D1DB689B699A68E9 -:106FF0003A449A605A683A445A6029E711F0030FFC -:1070000001D1D0F800808C4501F1010184BF02F864 -:10701000018B4FEA1828E6E7BDE8F88F08B503486A -:10702000FFF774FEBDE80840FDF7DAB9787200207A -:1070300008B50348FFF76AFEBDE80840FDF7D0B980 -:1070400014730020D0F8903003EB4111D1F8003BCD -:1070500043F40013C1F8003B70470000D0F89030B3 -:1070600003EB4111D1F8003943F40013C1F80039A2 -:1070700070470000D0F8903003EB4111D1F8003B8D -:1070800023F40013C1F8003B70470000D0F89030A3 -:1070900003EB4111D1F8003923F40013C1F8003992 -:1070A0007047000030B50433039C0172002104FBDB -:1070B0000325C160C0E90653049B0363059BC0E937 -:1070C0000000C0E90422C0E90842C0E90A11436394 -:1070D00030BD00000022416AC260C0E90411C0E96D -:1070E0000A226FF00101FEF747BC0000D0E904322C -:1070F000934201D1C2680AB9181D70470020704739 -:10710000036919600021C2680132C260C269134478 -:1071100082699342036124BF436A0361FEF720BC86 -:1071200038B504460D46E3683BB162690020131D83 -:107130001268A3621344E36207E0237A33B9294655 -:107140002046FEF7FDFB0028EDDA38BD6FF00100A8 -:10715000FBE70000C368C269013BC3604369134495 -:1071600082699342436124BF436A4361002383627F -:10717000036B03B11847704770B53023044683F39F -:107180001188866A3EB9FFF7CBFF054618B186F332 -:107190001188284670BDA36AE26A13F8015B934226 -:1071A000A36202D32046FFF7D5FF002383F31188A3 -:1071B000EFE700002DE9F84F04460E4617469846C3 -:1071C0004FF0300989F311880025AA46D4F828B079 -:1071D000BBF1000F09D141462046FFF7A1FF20B1C6 -:1071E0008BF311882846BDE8F88FD4E90A12A7EB83 -:1071F000050B521A934528BF9346BBF1400F1BD98C -:10720000334601F1400251F8040B914243F8040B5C -:10721000F9D1A36A403640354033A362D4E90A234A -:107220009A4202D32046FFF795FF8AF31188BD42A8 -:10723000D8D289F31188C9E730465A46FAF78CFB51 -:10724000A36A5E445D445B44A362E7E710B5029C19 -:107250000433017203FB0421C460C0E90613002358 -:10726000C0E90A33039B0363049BC0E90000C0E943 -:107270000422C0E90842436310BD0000026A6FF0B7 -:107280000101C260426AC0E904220022C0E90A2268 -:10729000FEF772BBD0E904239A4201D1C26822B939 -:1072A000184650F8043B0B60704700231846FAE775 -:1072B000C3680021C2690133C36043691344826912 -:1072C0009342436124BF436A4361FEF749BB000018 -:1072D00038B504460D46E3683BB1236900201A1D0A -:1072E000A262E2691344E36207E0237A33B92946D4 -:1072F0002046FEF725FB0028EDDA38BD6FF00100CF -:10730000FBE7000003691960C268013AC260C26904 -:10731000134482699342036124BF436A03610023DB -:107320008362036B03B118477047000070B53023C8 -:107330000D460446114683F31188866A2EB9FFF77D -:10734000C7FF10B186F3118870BDA36A1D70A36AD0 -:10735000E26A01339342A36204D3E169204604390F -:10736000FFF7D0FF002080F31188EDE72DE9F84FFB -:1073700004460D46904699464FF0300A8AF311882C -:107380000026B346A76A4FB949462046FFF7A0FF3B -:1073900020B187F311883046BDE8F88FD4E90A0799 -:1073A0003A1AA8EB0607974228BF1746402F1BD969 -:1073B00005F1400355F8042B9D4240F8042BF9D108 -:1073C000A36A40364033A362D4E90A239A4204D325 -:1073D000E16920460439FFF795FF8BF31188464594 -:1073E000D9D28AF31188CDE729463A46FAF7B4FA9A -:1073F000A36A3D443E443B44A362E5E7D0E904234D -:107400009A4217D1C3689BB1836A8BB1043B9B1A24 -:107410000ED01360C368013BC360C3691A4483691B -:107420009A42026124BF436A0361002383620123FD -:10743000184670470023FBE700F05CBA014B586A1E -:10744000704700BF000C0040034B002258631A61D4 -:107450000222DA60704700BF000C0040014B00229E -:10746000DA607047000C0040014B5863704700BF62 -:10747000000C0040024B034A1A60034A5A607047EE -:10748000C87300206874002000000220074B4942A6 -:1074900010B55C68201A08401968821A8A4203D322 -:1074A000A24201D85A6010BD0020FCE7C87300203A -:1074B00008B5302383F31188FFF7E8FF002383F337 -:1074C000118808BD04480121044B03600023C0E972 -:1074D00001330C3000F016B9D0730020B1740008ED -:1074E000CB1D083A23F00703591A521A012110B490 -:1074F000D2080024C0E9004384600C301C605A604C -:107500005DF8044B00F0FEB82DE9F84F364ECD1D66 -:107510000F46002818BF0646082A4FEAD50538BF8F -:10752000082206F10C08341D9146404600F006F989 -:1075300009F10701C9F1000E224624686CB94046E2 -:1075400000F006F93368CBB308224946E8009847B3 -:10755000044698B340E9026730E004EB010CD4F82C -:1075600004A00CEA0E0C0AF10100ACF1080304EBD4 -:10757000C0009842E0D9A0EB0C0CB5EBEC0F4FEA41 -:10758000EC0BD9D89C421CD204F10802AB45A3EB0A -:1075900002024FEAE202626009D9691CED432068E9 -:1075A00003EBC1025D44556043F8310022601C4684 -:1075B0005F60404644F8086B00F0CAF82046BDE81A -:1075C000F88FAA45216802D111602346EFE7013503 -:1075D00004EBC50344F8351003F10801401AC0104C -:1075E00058601360F1E700BFD0730020F8B550F881 -:1075F000043C044650F8085CA0F1080607332F1D30 -:107600000C35DB0840F8043C284600F097F83B4670 -:107610009F421A6801D0B34228D20AB1964225D2BD -:1076200044F8082C54F8042C1E60013254F8081C4D -:1076300006EBC200814206D14868024444F8042C9B -:107640000A6844F8082C5868411C03EBC1018E42BB -:1076500007D154F8042C013202445A6054F8082C23 -:107660001A602846BDE8F84000F072B81346CFE72C -:10767000FEE7000070B51B4B0025044686B058603D -:107680000E4685620163FCF783FE04F11003A560DA -:10769000E562C4E904334FF0FF33C4E90044C4E9B0 -:1076A0000635FFF7CBFE2B46024604F13401204697 -:1076B000C4E9082380230C4A2565FEF7F7F8012367 -:1076C0000A4AE06000920375684672680192B268E7 -:1076D000CDE90223064BCDE90435FEF70FF906B0DC -:1076E00070BD00BF88560020308300083583000835 -:1076F00071760008024AD36A1843D062704700BF0F -:1077000020540020C0E90000816070478368013B7D -:10771000002B10B583600CDA074BDC684368A0616E -:10772000206063601C6044600520FEF721F8A069BA -:1077300010BD0020FCE700BF2054002008B5302316 -:1077400083F31188FFF7E2FF002383F3118808BD5C -:1077500008B5302383F3118883680133002B8360DD -:1077600007DC036800211A68026050601846FEF7C3 -:107770002BF8002383F3118808BD00004B68436099 -:107780008B688360CB68C3600B6943614B6903629C -:107790008B6943620B6803607047000008B53C4B7F -:1077A00040F2FF713B48D3F888200A43C3F8882091 -:1077B000D3F8882022F4FF6222F00702C3F8882061 -:1077C000D3F88830344B1A6C0A431A649A6E0A4311 -:1077D0009A66324A9B6E1146FFF7D0FF00F5806033 -:1077E00002F11C01FFF7CAFF00F5806002F13801C9 -:1077F000FFF7C4FF00F5806002F15401FFF7BEFF00 -:1078000000F5806002F17001FFF7B8FF00F58060BD -:1078100002F18C01FFF7B2FF00F5806002F1A801D0 -:10782000FFF7ACFF00F5806002F1C401FFF7A6FF8F -:1078300000F5806002F1E001FFF7A0FF00F5806035 -:1078400002F1FC01FFF79AFF02F58C7100F58060F0 -:10785000FFF794FF00F010F9114BD3F8902242F09B -:107860000102C3F89022D3F8942242F00102C3F837 -:1078700094220522C3F898204FF06052C3F89C2050 -:10788000084AC3F8A020BDE80840FEF7E1BD00BFEC -:107890000044025800000258004502583C8300088A -:1078A00000ED00E01F00080308B500F0C3FAFDF783 -:1078B000C7FF0D4BDA6B42F04002DA635A6E22F0DA -:1078C00040025A665B6E094B1A6842F008021A6061 -:1078D0001A6842F004021A60FEF702FEFEF7BEFCD0 -:1078E000BDE80840FEF744BA0045025800180248B7 -:1078F000704700000E4B9A6C42F008029A641A6FAF -:1079000042F008021A670B4A1B6FD36B43F008035F -:10791000D363C722084B9A624FF0FF32DA6200222B -:107920009A615A63DA605A6001225A611A6070479C -:10793000004502580010005C000C0040094A08B5E0 -:107940001169D3680B40D9B29B076FEA010111613D -:1079500007D5302383F31188FDF79CFF002383F3C1 -:10796000118808BD000C0040044BDA6B0243DA6357 -:107970005A6E104358665B6E704700BF0045025850 -:1079800008B53C4B4FF0FF31D3F8802062F0004245 -:10799000C3F88020D3F8802002F00042C3F8802092 -:1079A000D3F88020D3F88420C3F88410D3F884203F -:1079B0000022C3F88420D3F88400D86F40F0FF4041 -:1079C00040F4FF0040F4DF4040F07F00D867D86FFC -:1079D00020F0FF4020F4FF0020F4DF4020F07F0083 -:1079E000D867D86FD3F888006FEA40506FEA5050DC -:1079F000C3F88800D3F88800C0F30A00C3F88800F1 -:107A0000D3F88800D3F89000C3F89010D3F8900012 -:107A1000C3F89020D3F89000D3F89400C3F89410E2 -:107A2000D3F89400C3F89420D3F89400D3F89800C6 -:107A3000C3F89810D3F89800C3F89820D3F89800AA -:107A4000D3F88C00C3F88C10D3F88C00C3F88C20CA -:107A5000D3F88C00D3F89C00C3F89C10D3F89C108A -:107A6000C3F89C20D3F89C30FCF73CFEBDE80840EE -:107A700000F0B4B90044025808B50122504BC3F8D5 -:107A80000821504B5A6D42F002025A65DA6F42F0FB -:107A90000202DA670422DB6F4B4BDA605A6891040A -:107AA000FCD54A4A1A6001229A60494ADA600022EB -:107AB0001A614FF440429A61434B9A699204FCD593 -:107AC0001A6842F480721A60424B1A6F12F4407FB7 -:107AD00004D04FF480321A6700221A671A6842F005 -:107AE00001021A603B4B1A685007FCD500221A614C -:107AF0001A6912F03802FBD1012119604FF0804160 -:107B000059605A67344ADA62344A1A611A6842F490 -:107B100080321A602F4B1A689103FCD51A6842F420 -:107B200080521A601A689204FCD52D4A2D499A6237 -:107B300000225A63196301F57C01DA6301F5E771EC -:107B400099635A64284A1A64284ADA621A6842F029 -:107B5000A8521A601F4B1A6802F02852B2F1285F2F -:107B6000F9D148229A614FF48862DA6140221A62A0 -:107B70001F4ADA641F4A1A651F4A5A651F4A9A65E6 -:107B800032231F4A1360136803F00F03022BFAD14C -:107B9000104A136943F003031361136903F03803B8 -:107BA000182BFAD14FF00050FFF7DEFE4FF0804067 -:107BB000FFF7DAFE4FF00040BDE80840FFF7D4BE03 -:107BC00000800051004502580048025800C000F0F3 -:107BD00004000001004402580000FF0100889008E2 -:107BE0003220600063020901470E0508DD0BBF016A -:107BF00020000020000001100910E0000001011029 -:107C0000002000524FF0B04208B5D2F8883003F09F -:107C10000103C2F8883023B1044A13680BB15068DD -:107C20009847BDE80840FCF7DBBB00BFE8730020C5 -:107C30004FF0B04208B5D2F8883003F00203C2F822 -:107C4000883023B1044A93680BB1D0689847BDE8E7 -:107C50000840FCF7C5BB00BFE87300204FF0B042FE -:107C600008B5D2F8883003F00403C2F8883023B195 -:107C7000044A13690BB150699847BDE80840FCF706 -:107C8000AFBB00BFE87300204FF0B04208B5D2F898 -:107C9000883003F00803C2F8883023B1044A93699E -:107CA0000BB1D0699847BDE80840FCF799BB00BF0D -:107CB000E87300204FF0B04208B5D2F8883003F0E6 -:107CC0001003C2F8883023B1044A136A0BB1506A1A -:107CD0009847BDE80840FCF783BB00BFE87300206D -:107CE0004FF0B04310B5D3F8884004F47872C3F86D -:107CF0008820A30604D5124A936A0BB1D06A98472C -:107D0000600604D50E4A136B0BB1506B98472106E1 -:107D100004D50B4A936B0BB1D06B9847E20504D5A1 -:107D2000074A136C0BB1506C9847A30504D5044A5D -:107D3000936C0BB1D06C9847BDE81040FCF750BB7A -:107D4000E87300204FF0B04310B5D3F8884004F436 -:107D50007C42C3F88820620504D5164A136D0BB126 -:107D6000506D9847230504D5124A936D0BB1D06D21 -:107D70009847E00404D50F4A136E0BB1506E984734 -:107D8000A10404D50B4A936E0BB1D06E98476204E0 -:107D900004D5084A136F0BB1506F9847230404D5DC -:107DA000044A936F0BB1D06F9847BDE81040FCF7C1 -:107DB00017BB00BFE873002008B50348FCF7E0FDDF -:107DC000BDE80840FCF70CBBB44F002008B5FFF736 -:107DD000B5FDBDE80840FCF703BB0000062108B56F -:107DE0000846FCF753FE06210720FCF74FFE06214C -:107DF0000820FCF74BFE06210920FCF747FE062170 -:107E00000A20FCF743FE06211720FCF73FFE06215F -:107E10002820FCF73BFE09217A20FCF737FE0721DA -:107E20003220FCF733FE0C215220BDE80840FCF75D -:107E30002DBE000008B5FFF7A3FD00F00DF8FCF71C -:107E4000E3FFFDF7BBF9FDF78DF8FFF751FDBDE846 -:107E50000840FFF7F1BA00000023054A1946013334 -:107E6000102BC2E9001102F10802F8D1704700BFDF -:107E7000E87300200B460146184600F001B80000E8 -:107E800010B5054C13462CB10A4601460220AFF34B -:107E9000008010BD2046FCE70000000010B501394D -:107EA0000244904201D1002005E0037811F8014F0F -:107EB000A34201D0181B10BD0130F2E72DE9F041BB -:107EC000A3B1C91A17780144044603F1FF3C8C4260 -:107ED000204601D9002009E00578BD4204F10104E3 -:107EE000F5D10CEB0405D618A54201D1BDE8F0810F -:107EF00015F8018D16F801EDF045F5D0E7E7000023 -:107F0000034611F8012B03F8012B002AF9D1704721 -:107F10006F72672E6172647570696C6F742E437531 -:107F2000626550696C6F742D43414E4D6F64000063 -:107F300053544D333248373F3F3F0053544D333253 -:107F4000483733782F3732780053544D333248371F -:107F500034332F3735332F373530000001105A00B6 -:107F600003105900012058000320560040A2E4F1FC -:107F7000646891060041A3E5F2656992070000007C -:107F800043414E464449666163653A204D657373CB -:107F90006167652052414D204F766572666C6F7740 -:107FA000210000004261642043414E4966616365DF -:107FB00020696E6465782E0000000000000000005B -:107FC000192B0008A52300086532000815240008B5 -:107FD000212400083928000899250008DD2300081D -:107FE000E1230008B9230008A1230008F5270008B1 -:107FF000C52300089D330008D1230008C9270008C5 -:1080000001040E05054B02020E05054B04010E0589 -:10801000054B05010B04044B080106030346000051 -:1080200010000240080002400008024000000B005F -:1080300028000240080002400408024006010C002B -:1080400040000240080002400808024010020D00F3 -:1080500058000240080002400C08024016030E00BF -:10806000700002400C0002401008024000040F00A3 -:10807000880002400C00024014080240060510006F -:10808000A00002400C000240180802401006110037 -:10809000B80002400C0002401C08024016072F00E6 -:1080A0001004024008040240200802400008380082 -:1080B000280402400804024024080240060939004E -:1080C000400402400804024028080240100A3A0016 -:1080D00058040240080402402C080240160B3B00E2 -:1080E000700402400C04024030080240000C3C00C6 -:1080F000880402400C04024034080240060D44008B -:10810000A00402400C04024038080240100E450052 -:10811000B80402400C0402403C080240160F46001E -:1081200000960000000000000000000000000000B9 -:10813000000000000000000000000000C94D000821 -:10814000B54D0008F14D0008DD4D0008E94D00086F -:10815000D54D0008C14D0008AD4D0008FD4D00088B -:1081600000000000E14E0008CD4E0008094F000855 -:10817000F54E0008014F0008ED4E0008D94E0008EA -:10818000C54E0008154F0008000000000100000067 -:108190000000000063300000948100087854002043 -:1081A000885600204172647550696C6F74002542D6 -:1081B0004F415244252D424C002553455249414CD4 -:1081C000250000000200000000000000015100082E -:1081D0007151000840004000386F0020486F0020B7 -:1081E000020000000000000003000000000000008A -:1081F000B95100080000000010000000586F002076 -:108200000000000001000000000000007872002063 -:10821000010102000D5D00081D5C0008B95C00084A -:108220009D5C0008430000002C8200080902430006 -:10823000020100C03209040000010202010005240D -:108240000010010524010001042402020524060097 -:1082500001070582030800FF09040100020A00006B -:1082600000070501024000000705810240000000F0 -:108270001200000078820008120110010200004084 -:10828000091241570002010203010000040309041E -:1082900025424F4152442500303132333435363790 -:1082A00038394142434445460000000000010020A7 -:1082B00000FF010002000000000000300000040088 -:1082C0000800000000000024000008000400000076 -:1082D0000004000000FC0000020000000000043068 -:1082E00000800000080000000000003800000100CD -:1082F000010000000000000015530008CD550008E3 -:108300007956000840004000B0730020B073002090 -:1083100001000000C0730020800000004001000048 -:10832000080000000001000000100000080000002C -:108330006D61696E0069646C650000000000802A50 -:1083400000000000AAAAAAAA00000024FFFF000063 -:108350000000000000A00A00000000000000000073 -:10836000AAAAAAAA00000000FFFF00000000000067 -:10837000000000000000000000000000AAAAAAAA55 -:1083800000000000FFFF00000000000000000000EF -:108390000A00000000000000AAAAAAAA000000002B -:1083A000FFFF0000990000000000000000800200B4 -:1083B00000000000AAAAAAAA00400100FFFF0000D6 -:1083C0000000007007000000000000000000000036 -:1083D000AAAAAAAA00000000FFFF000000000000F7 -:1083E000000000000500000000000000A5AAAAAAE5 -:1083F00000000000FCFF0000000000000000000082 -:108400000000000000000000AAAAAAAA00000000C4 -:10841000FFFF00000000000000000000000000005E -:1084200000000000AAAAAAAA00000000FFFF0000A6 -:10843000000000000000000000000000000000003C -:10844000AAAAAAAA00000000FFFF00000000000086 -:10845000000000000000000000000000AAAAAAAA74 -:1084600000000000FFFF000000000000000000000E -:1084700037040000000000000000180000000000A9 -:10848000FE2A0100D2040000FF00000090560020E8 -:10849000B44F002000000000307F0008830400007B -:1084A0003B7F000850040000497F00080096000050 -:1084B0000000080096000000000800000400000012 -:1084C0008C82000800000000000000000000000096 -:0C84D000000000000000000000000000A0 -:00000001FF diff --git a/Tools/bootloaders/CubePilot-PPPGW_bl.bin b/Tools/bootloaders/CubePilot-PPPGW_bl.bin deleted file mode 100755 index f74f5368bad592..00000000000000 Binary files a/Tools/bootloaders/CubePilot-PPPGW_bl.bin and /dev/null differ diff --git a/Tools/environment_install/install-prereqs-mac.sh b/Tools/environment_install/install-prereqs-mac.sh index 7c0701b38a161c..0703782d2e5b37 100755 --- a/Tools/environment_install/install-prereqs-mac.sh +++ b/Tools/environment_install/install-prereqs-mac.sh @@ -106,7 +106,7 @@ find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete # brew update randomly failing on CI, so ignore errors: brew update -brew install --force --overwrite gawk curl coreutils wget +brew install --force --overwrite gawk coreutils wget PIP=pip if maybe_prompt_user "Install python using pyenv [N/y]?" ; then diff --git a/Tools/environment_install/install-prereqs-windows-andAPMSource.ps1 b/Tools/environment_install/install-prereqs-windows-andAPMSource.ps1 index 2076ce1f588d6b..5cc7735a5b0f24 100644 --- a/Tools/environment_install/install-prereqs-windows-andAPMSource.ps1 +++ b/Tools/environment_install/install-prereqs-windows-andAPMSource.ps1 @@ -19,7 +19,7 @@ Start-Process -wait -FilePath "C:\cygwin64\bin\bash" -ArgumentList "--login -i - Start-Process -wait -FilePath "C:\cygwin64\bin\bash" -ArgumentList "--login -i -c 'ln -sf /usr/bin/pip3.7 /usr/bin/pip'" Write-Output "Downloading extra Python packages (5/8)" -Start-Process -wait -FilePath "C:\cygwin64\bin\bash" -ArgumentList "--login -i -c 'pip install empy==3.3.4 pyserial pymavlink intelhex dronecan pexpect'" +Start-Process -wait -FilePath "C:\cygwin64\bin\bash" -ArgumentList "--login -i -c 'python3.7 -m pip install empy==3.3.4 pyserial pymavlink intelhex dronecan pexpect'" Write-Output "Downloading APM source (6/8)" Copy-Item "APM_install.sh" -Destination "C:\cygwin64\home" diff --git a/Tools/environment_install/install-prereqs-windows.ps1 b/Tools/environment_install/install-prereqs-windows.ps1 index 15bac628949e85..543f1370c9d0be 100644 --- a/Tools/environment_install/install-prereqs-windows.ps1 +++ b/Tools/environment_install/install-prereqs-windows.ps1 @@ -19,7 +19,7 @@ Start-Process -wait -FilePath "C:\cygwin64\bin\bash" -ArgumentList "--login -i - Start-Process -wait -FilePath "C:\cygwin64\bin\bash" -ArgumentList "--login -i -c 'ln -sf /usr/bin/pip3.7 /usr/bin/pip'" Write-Output "Downloading extra Python packages (5/7)" -Start-Process -wait -FilePath "C:\cygwin64\bin\bash" -ArgumentList "--login -i -c 'pip install empy==3.3.4 pyserial pymavlink intelhex dronecan pexpect'" +Start-Process -wait -FilePath "C:\cygwin64\bin\bash" -ArgumentList "--login -i -c 'python3.7 -m pip install empy==3.3.4 pyserial pymavlink intelhex dronecan pexpect'" Write-Output "Installing ARM GCC Compiler 10-2020-Q4-Major (6/7)" & $PSScriptRoot\gcc-arm-none-eabi-10-2020-q4-major-win32.exe /S /P /R diff --git a/Tools/ros2/ardupilot_dds_tests/test/ardupilot_dds_tests/test_battery_msg_received.py b/Tools/ros2/ardupilot_dds_tests/test/ardupilot_dds_tests/test_battery_msg_received.py new file mode 100644 index 00000000000000..50a5a517c1df5b --- /dev/null +++ b/Tools/ros2/ardupilot_dds_tests/test/ardupilot_dds_tests/test_battery_msg_received.py @@ -0,0 +1,173 @@ +# Copyright 2023 ArduPilot.org. +# +# 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 . + +""" +Bring up ArduPilot SITL and check the BatteryState message is being published. + +Checks whether a message is received and that only frame_id = '0' is received, +as SITL has only one battery available. + +colcon test --packages-select ardupilot_dds_tests \ +--event-handlers=console_cohesion+ --pytest-args -k test_battery_msg_received + +""" + +import launch_pytest +import pytest +import rclpy +import rclpy.node +import threading + +from launch import LaunchDescription + +from launch_pytest.tools import process as process_tools + +from rclpy.qos import QoSProfile +from rclpy.qos import QoSReliabilityPolicy +from rclpy.qos import QoSHistoryPolicy + +from sensor_msgs.msg import BatteryState + +TOPIC = "ap/battery" + + +class BatteryListener(rclpy.node.Node): + """Subscribe to BatteryState messages.""" + + def __init__(self): + """Initialise the node.""" + super().__init__("battery_listener") + self.msg_event_object = threading.Event() + self.frame_id_correct_object = threading.Event() + self.frame_id_incorrect_object = threading.Event() + + # Declare and acquire `topic` parameter + self.declare_parameter("topic", TOPIC) + self.topic = self.get_parameter("topic").get_parameter_value().string_value + + def start_subscriber(self): + """Start the subscriber.""" + qos_profile = QoSProfile( + reliability=QoSReliabilityPolicy.BEST_EFFORT, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ) + + self.subscription = self.create_subscription(BatteryState, self.topic, self.subscriber_callback, qos_profile) + + # Add a spin thread. + self.ros_spin_thread = threading.Thread(target=lambda node: rclpy.spin(node), args=(self,)) + self.ros_spin_thread.start() + + def subscriber_callback(self, msg): + """Process a BatteryState message.""" + self.msg_event_object.set() + + self.get_logger().info("From AP : ID {} Voltage {}".format(msg.header.frame_id, msg.voltage)) + + if msg.header.frame_id == '0': + self.frame_id_correct_object.set() + + if msg.header.frame_id == '1': + self.frame_id_incorrect_object.set() + + +@launch_pytest.fixture +def launch_sitl_copter_dds_serial(sitl_copter_dds_serial): + """Fixture to create the launch description.""" + sitl_ld, sitl_actions = sitl_copter_dds_serial + + ld = LaunchDescription( + [ + sitl_ld, + launch_pytest.actions.ReadyToTest(), + ] + ) + actions = sitl_actions + yield ld, actions + + +@launch_pytest.fixture +def launch_sitl_copter_dds_udp(sitl_copter_dds_udp): + """Fixture to create the launch description.""" + sitl_ld, sitl_actions = sitl_copter_dds_udp + + ld = LaunchDescription( + [ + sitl_ld, + launch_pytest.actions.ReadyToTest(), + ] + ) + actions = sitl_actions + yield ld, actions + + +@pytest.mark.launch(fixture=launch_sitl_copter_dds_serial) +def test_dds_serial_battery_msg_recv(launch_context, launch_sitl_copter_dds_serial): + """Test battery messages are published by AP_DDS.""" + _, actions = launch_sitl_copter_dds_serial + virtual_ports = actions["virtual_ports"].action + micro_ros_agent = actions["micro_ros_agent"].action + mavproxy = actions["mavproxy"].action + sitl = actions["sitl"].action + + # Wait for process to start. + process_tools.wait_for_start_sync(launch_context, virtual_ports, timeout=2) + process_tools.wait_for_start_sync(launch_context, micro_ros_agent, timeout=2) + process_tools.wait_for_start_sync(launch_context, mavproxy, timeout=2) + process_tools.wait_for_start_sync(launch_context, sitl, timeout=2) + + rclpy.init() + try: + node = BatteryListener() + node.start_subscriber() + msgs_received_flag = node.msg_event_object.wait(timeout=10.0) + assert msgs_received_flag, f"Did not receive '{TOPIC}' msgs." + battery_correct_flag = node.frame_id_correct_object.wait(timeout=10.0) + assert battery_correct_flag, f"Did not receive correct battery ID." + battery_incorrect_flag = not node.frame_id_incorrect_object.wait(timeout=10.0) + assert battery_correct_flag, f"Did received incorrect battery ID." + finally: + rclpy.shutdown() + yield + + +@pytest.mark.launch(fixture=launch_sitl_copter_dds_udp) +def test_dds_udp_battery_msg_recv(launch_context, launch_sitl_copter_dds_udp): + """Test battery messages are published by AP_DDS.""" + _, actions = launch_sitl_copter_dds_udp + micro_ros_agent = actions["micro_ros_agent"].action + mavproxy = actions["mavproxy"].action + sitl = actions["sitl"].action + + # Wait for process to start. + process_tools.wait_for_start_sync(launch_context, micro_ros_agent, timeout=2) + process_tools.wait_for_start_sync(launch_context, mavproxy, timeout=2) + process_tools.wait_for_start_sync(launch_context, sitl, timeout=2) + + rclpy.init() + try: + node = BatteryListener() + node.start_subscriber() + msgs_received_flag = node.msg_event_object.wait(timeout=10.0) + assert msgs_received_flag, f"Did not receive '{TOPIC}' msgs." + battery_correct_flag = node.frame_id_correct_object.wait(timeout=10.0) + assert battery_correct_flag, f"Did not receive correct battery ID." + battery_incorrect_flag = not node.frame_id_incorrect_object.wait(timeout=10.0) + assert battery_correct_flag, f"Did received incorrect battery ID." + + finally: + rclpy.shutdown() + yield diff --git a/Tools/scripts/build_appveyor.sh b/Tools/scripts/build_appveyor.sh index d392bbe4e041db..e06ef2591ac52b 100755 --- a/Tools/scripts/build_appveyor.sh +++ b/Tools/scripts/build_appveyor.sh @@ -18,7 +18,7 @@ cd /cygdrive/c/work ./waf configure --board sitl - /usr/bin/python waf -j4 copter plane rover heli sub + python3 waf -j4 copter plane rover heli sub # map to the names that MissionPlanner expects cp /cygdrive/c/work/build/sitl/bin/ardurover.exe /cygdrive/c/work/sitl/Rover.elf diff --git a/Tools/scripts/filter_size_compare_branches_csv.py b/Tools/scripts/filter_size_compare_branches_csv.py index 8030608c5e7475..aa42fa2a097dc2 100755 --- a/Tools/scripts/filter_size_compare_branches_csv.py +++ b/Tools/scripts/filter_size_compare_branches_csv.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python3 import argparse import csv diff --git a/Tools/scripts/solution_status_change.py b/Tools/scripts/solution_status_change.py index 4a052aa0e4d4a1..4431b576eb8bc4 100755 --- a/Tools/scripts/solution_status_change.py +++ b/Tools/scripts/solution_status_change.py @@ -17,8 +17,11 @@ class SolutionStatusChange(object): - def __init__(self, master): + def __init__(self, master, core=None): self.master = master + self.core = core + if self.core is not None: + self.core = set(self.core) def progress(self, text): '''emit text with possible timestamps etc''' @@ -53,13 +56,13 @@ def run(self): old_message_per_core = {} while True: m = self.conn.recv_match(type=desired_type) - if m.C != 0: - continue if m is None: break if m.C not in old_message_per_core: old_message_per_core[m.C] = m continue + if self.core is not None and m.C not in self.core: + continue current = old_message_per_core[m.C] if m.SS == current.SS: continue @@ -86,6 +89,9 @@ def run(self): if __name__ == '__main__': parser = optparse.OptionParser("solution-status-change.py [options]") + parser.add_option("", "--core", action="append", type="int", + default=[], help="core to show (default is all)") + (opts, args) = parser.parse_args() if len(args) < 1: @@ -94,5 +100,8 @@ def run(self): master = args[0] - tester = SolutionStatusChange(master) + if len(opts.core) == 0: + opts.core = None + + tester = SolutionStatusChange(master, core=opts.core) tester.run() diff --git a/libraries/AC_AttitudeControl/AC_AttitudeControl_Heli.cpp b/libraries/AC_AttitudeControl/AC_AttitudeControl_Heli.cpp index 3b5028ad4be52e..f44a7bca2d4d71 100644 --- a/libraries/AC_AttitudeControl/AC_AttitudeControl_Heli.cpp +++ b/libraries/AC_AttitudeControl/AC_AttitudeControl_Heli.cpp @@ -540,7 +540,7 @@ void AC_AttitudeControl_Heli::set_throttle_out(float throttle_in, bool apply_ang update_althold_lean_angle_max(throttle_in); _motors.set_throttle_filter_cutoff(filter_cutoff); - if (apply_angle_boost && !((AP_MotorsHeli&)_motors).get_in_autorotation()) { + if (apply_angle_boost && !((AP_MotorsHeli&)_motors).in_autorotation()) { // Apply angle boost throttle_in = get_throttle_boosted(throttle_in); } else { diff --git a/libraries/AC_Autorotation/AC_Autorotation.cpp b/libraries/AC_Autorotation/AC_Autorotation.cpp index 627dd7894ec317..1dbcccd29423ad 100644 --- a/libraries/AC_Autorotation/AC_Autorotation.cpp +++ b/libraries/AC_Autorotation/AC_Autorotation.cpp @@ -3,9 +3,7 @@ #include #include -//Autorotation controller defaults -#define AROT_BAIL_OUT_TIME 2.0f // Default time for bail out controller to run (unit: s) - +// Autorotation controller defaults // Head Speed (HS) controller specific default definitions #define HS_CONTROLLER_COLLECTIVE_CUTOFF_FREQ 2.0f // low-pass filter on accel error (unit: hz) #define HS_CONTROLLER_HEADSPEED_P 0.7f // Default P gain for head speed controller (unit: -) @@ -81,15 +79,6 @@ const AP_Param::GroupInfo AC_Autorotation::var_info[] = { // @User: Advanced AP_GROUPINFO("AS_ACC_MAX", 7, AC_Autorotation, _param_accel_max, FWD_SPD_CONTROLLER_MAX_ACCEL), - // @Param: BAIL_TIME - // @DisplayName: Bail Out Timer - // @Description: Time in seconds from bail out initiated to the exit of autorotation flight mode. - // @Units: s - // @Range: 0.5 4 - // @Increment: 0.1 - // @User: Advanced - AP_GROUPINFO("BAIL_TIME", 8, AC_Autorotation, _param_bail_time, AROT_BAIL_OUT_TIME), - // @Param: HS_SENSOR // @DisplayName: Main Rotor RPM Sensor // @Description: Allocate the RPM sensor instance to use for measuring head speed. RPM1 = 0. RPM2 = 1. @@ -97,7 +86,7 @@ const AP_Param::GroupInfo AC_Autorotation::var_info[] = { // @Range: 0.5 3 // @Increment: 0.1 // @User: Advanced - AP_GROUPINFO("HS_SENSOR", 9, AC_Autorotation, _param_rpm_instance, 0), + AP_GROUPINFO("HS_SENSOR", 8, AC_Autorotation, _param_rpm_instance, 0), // @Param: FW_V_P // @DisplayName: Velocity (horizontal) P gain @@ -105,7 +94,7 @@ const AP_Param::GroupInfo AC_Autorotation::var_info[] = { // @Range: 0.1 6.0 // @Increment: 0.1 // @User: Advanced - AP_SUBGROUPINFO(_p_fw_vel, "FW_V_", 10, AC_Autorotation, AC_P), + AP_SUBGROUPINFO(_p_fw_vel, "FW_V_", 9, AC_Autorotation, AC_P), // @Param: FW_V_FF // @DisplayName: Velocity (horizontal) feed forward @@ -113,7 +102,7 @@ const AP_Param::GroupInfo AC_Autorotation::var_info[] = { // @Range: 0 1 // @Increment: 0.01 // @User: Advanced - AP_GROUPINFO("FW_V_FF", 11, AC_Autorotation, _param_fwd_k_ff, AP_FW_VEL_FF), + AP_GROUPINFO("FW_V_FF", 10, AC_Autorotation, _param_fwd_k_ff, AP_FW_VEL_FF), AP_GROUPEND }; diff --git a/libraries/AC_Autorotation/AC_Autorotation.h b/libraries/AC_Autorotation/AC_Autorotation.h index d5cfa52097b3f1..612986662ecf47 100644 --- a/libraries/AC_Autorotation/AC_Autorotation.h +++ b/libraries/AC_Autorotation/AC_Autorotation.h @@ -28,7 +28,6 @@ class AC_Autorotation int16_t get_hs_set_point(void) { return _param_head_speed_set_point; } float get_col_entry_freq(void) { return _param_col_entry_cutoff_freq; } float get_col_glide_freq(void) { return _param_col_glide_cutoff_freq; } - float get_bail_time(void) { return _param_bail_time; } float get_last_collective() const { return _collective_out; } bool is_enable(void) { return _param_enable; } void Log_Write_Autorotation(void) const; @@ -81,7 +80,6 @@ class AC_Autorotation AP_Float _param_col_entry_cutoff_freq; AP_Float _param_col_glide_cutoff_freq; AP_Int16 _param_accel_max; - AP_Float _param_bail_time; AP_Int8 _param_rpm_instance; AP_Float _param_fwd_k_ff; diff --git a/libraries/AC_Autorotation/RSC_Autorotation.cpp b/libraries/AC_Autorotation/RSC_Autorotation.cpp new file mode 100644 index 00000000000000..53992de1a0467e --- /dev/null +++ b/libraries/AC_Autorotation/RSC_Autorotation.cpp @@ -0,0 +1,159 @@ +#include "RSC_Autorotation.h" +#include +#include + +#define RSC_AROT_RAMP_TIME_DEFAULT 2 // time in seconds to ramp motors when bailing out of autorotation + +extern const AP_HAL::HAL& hal; + +// RSC autorotation state specific parameters +const AP_Param::GroupInfo RSC_Autorotation::var_info[] = { + + // @Param: ENBL + // @DisplayName: Enable autorotation handling in RSC + // @Description: Allows you to enable (1) or disable (0) the autorotation functionality within the Rotor Speed Controller. + // @Values: 0:Disabled,1:Enabled + // @User: Standard + AP_GROUPINFO_FLAGS("ENBL", 1, RSC_Autorotation, enable, 0, AP_PARAM_FLAG_ENABLE), + + // @Param: RAMP + // @DisplayName: Time for in-flight power re-engagement when exiting autorotations + // @Description: When exiting an autorotation in a bailout manoeuvre, this is the time in seconds for the throttle output (HeliRSC servo) to ramp from idle (H_RSC_AROT_IDLE) to flight throttle setting when motor interlock is re-enabled. When using an ESC with an autorotation bailout function, this parameter should be set to 0.1 (minimum value). + // @Range: 0.1 10 + // @Units: s + // @Increment: 0.1 + // @User: Standard + AP_GROUPINFO("RAMP", 2, RSC_Autorotation, bailout_throttle_time, RSC_AROT_RAMP_TIME_DEFAULT), + + // @Param: IDLE + // @DisplayName: Idle throttle percentage during autorotation + // @Description: Idle throttle used for during autotoration. For external governors, this would be set to a value that is within the autorotation window of the governer/ESC to enable fast spool-up, when bailing out of an autorotation. Set 0 to disable. + // @Range: 0 40 + // @Units: % + // @Increment: 1 + // @User: Standard + AP_GROUPINFO("IDLE", 3, RSC_Autorotation, idle_output, 0.0), + + // @Param: RUNUP + // @DisplayName: Time allowed for in-flight power re-engagement + // @Description: When exiting an autorotation in a bailout manoeuvre, this is the expected time in seconds for the main rotor to reach full speed after motor interlock is enabled. Must be at least one second longer than the H_RSC_AROT_RAMP time that is set. This timer should be set for at least the amount of time it takes to get your helicopter to full flight power. Failure to heed this warning could result in early entry into autonomously controlled collective modes (e.g. alt hold, loiter, etc), whereby the collective could be raised before the engine has reached full power, with a subsequently dangerous slowing of head speed. + // @Range: 1 10 + // @Units: s + // @Increment: 0.1 + // @User: Standard + AP_GROUPINFO("RUNUP", 4, RSC_Autorotation, bailout_runup_time, RSC_AROT_RAMP_TIME_DEFAULT+1), + + AP_GROUPEND +}; + +RSC_Autorotation::RSC_Autorotation(void) +{ + AP_Param::setup_object_defaults(this, var_info); +} + +// set the desired autorotation state +// this state machine handles the transition from active to deactivated via the bailout logic +// to force the state to be immediately deactivated, then the force_state bool is used +void RSC_Autorotation::set_active(bool active, bool force_state) +{ + if (enable.get() != 1) { + return; + } + + // set the desired state based on the bool. We only set either ACTIVE or DEACTIVATED + // here and let the autorotation state machine and RSC runup code handle the bail out case + RSC_Autorotation::State desired_state = active ? RSC_Autorotation::State::ACTIVE : RSC_Autorotation::State::DEACTIVATED; + + // don't do anything if desired state is already set + if (desired_state == state) { + return; + } + + // Handle the transition from the ACTIVE to DEACTIVATED states via the BAILING_OUT case + // set the bailout case if deactivated has just been requested + if ((state == State::ACTIVE) && (desired_state == State::DEACTIVATED) && !force_state) { + desired_state = State::BAILING_OUT; + bail_out_started_ms = AP_HAL::millis(); + } + + // Wait for allocated autorotation run up time before we allow progression of state to deactivated + if ((state == State::BAILING_OUT) && + (desired_state == State::DEACTIVATED) && + (bail_out_started_ms > 0) && + (AP_HAL::millis() - bail_out_started_ms < uint32_t(get_runup_time()*1000))) + { + return; + } + + // handle GCS messages + switch (desired_state) + { + case State::DEACTIVATED: + GCS_SEND_TEXT(MAV_SEVERITY_NOTICE, "RSC: Autorotation Stopped"); + break; + + case State::BAILING_OUT: + GCS_SEND_TEXT(MAV_SEVERITY_NOTICE, "RSC: Bailing Out"); + break; + + case State::ACTIVE: + GCS_SEND_TEXT(MAV_SEVERITY_NOTICE, "RSC: In Autorotation"); + break; + + default: + // do nothing + break; + } + + // Actually set the state + state = desired_state; +} + +bool RSC_Autorotation::get_idle_throttle(float& idle_throttle) +{ + if (state != State::ACTIVE) { + // We do not want to use autorotation idle throttle + return false; + } + + if (idle_output.get() <= 0) { + // If autorotation idle is not set, do not modify idle throttle as we just use H_RSC_IDLE + // Heli with an ICE engine is an example of this type of config + return true; + } + + // if we are autorotating and the autorotation idle throttle param is set we want to + // to output this as the idle throttle for ESCs with an autorotation window + idle_throttle = constrain_float(idle_output.get()*0.01, 0.0, 0.4); + + return true; +} + +float RSC_Autorotation::get_bailout_ramp(void) const +{ + // Allow ramp times as quick as 0.1 of a second for ESCs with autorotation windows + return MAX(float(bailout_throttle_time.get()), 0.1); +} + +float RSC_Autorotation::get_runup_time(void) const +{ + // If we are in the autorotation state we want the rotor speed model to ramp down rapidly to zero, ensuring we get past + // the critical rotor speed, and therefore triggering a proper bailout should we re-engage the interlock at any point + if (state == State::ACTIVE) { + return 0.1; + } + + // Never let the runup timer be less than the throttle ramp time + return (float) MAX(bailout_throttle_time.get() + 1, bailout_runup_time.get()); +} + +// sanity check of parameters, should be called only whilst disarmed +bool RSC_Autorotation::arming_checks(size_t buflen, char *buffer) const +{ + // throttle runup must be larger than ramp, keep the params up to date to not confuse users + if (bailout_throttle_time.get() + 1 > bailout_runup_time.get()) { + hal.util->snprintf(buffer, buflen, "H_RSC_AROT_RUNUP must be > H_RSC_AROT_RAMP"); + return false; + } + return true; +} diff --git a/libraries/AC_Autorotation/RSC_Autorotation.h b/libraries/AC_Autorotation/RSC_Autorotation.h new file mode 100644 index 00000000000000..8c0bd230a7849f --- /dev/null +++ b/libraries/AC_Autorotation/RSC_Autorotation.h @@ -0,0 +1,52 @@ +// Class supporting autorotation state within the heli rotor speed controller + +#pragma once + +#include + +// helper class to manage autorotation state and variables within RSC +class RSC_Autorotation +{ +public: + + RSC_Autorotation(void); + + enum class State { + DEACTIVATED, + BAILING_OUT, + ACTIVE, + }; + + // state accessors + bool active(void) const { return state == State::ACTIVE; } + bool bailing_out(void) const { return state == State::BAILING_OUT; } + + // update idle throttle when in autorotation + bool get_idle_throttle(float& idle_throttle); + + // get the throttle ramp rate needed when bailing out of autorotation + float get_bailout_ramp(void) const; + + // get the allowed run-up time that we expect the rotor to need to complete a bailout + float get_runup_time(void) const; + + // request changes in autorotation state + void set_active(bool active, bool force_state); + + // sanity check of parameters, should be called only whilst disarmed + bool arming_checks(size_t buflen, char *buffer) const; + + // var_info for holding Parameter information + static const struct AP_Param::GroupInfo var_info[]; + +private: + + AP_Int8 idle_output; // (percent) rsc output used when in autorotation, used for setting autorotation window on ESCs + AP_Int8 bailout_throttle_time; // (seconds) time for in-flight power re-engagement when bailing-out of an autorotation + AP_Int8 bailout_runup_time; // (seconds) expected time for the motor to fully engage and for the rotor to regain safe head speed if necessary + AP_Int8 enable; // enables autorotation state within the RSC + + State state; + uint32_t bail_out_started_ms; // (milliseconds) time that bailout started, used to time transition from "bailing out" to "autorotation stopped" + +}; diff --git a/libraries/AP_AHRS/AP_AHRS.cpp b/libraries/AP_AHRS/AP_AHRS.cpp index c773be6fadb269..945ad67d414b6e 100644 --- a/libraries/AP_AHRS/AP_AHRS.cpp +++ b/libraries/AP_AHRS/AP_AHRS.cpp @@ -3164,7 +3164,7 @@ bool AP_AHRS::get_variances(float &velVar, float &posVar, float &hgtVar, Vector3 #if AP_AHRS_EXTERNAL_ENABLED case EKFType::EXTERNAL: - return false; + return external.get_variances(velVar, posVar, hgtVar, magVar, tasVar); #endif } diff --git a/libraries/AP_AHRS/AP_AHRS_DCM.cpp b/libraries/AP_AHRS/AP_AHRS_DCM.cpp index eb10db1b458807..d7aa5c7cd3da50 100644 --- a/libraries/AP_AHRS/AP_AHRS_DCM.cpp +++ b/libraries/AP_AHRS/AP_AHRS_DCM.cpp @@ -434,7 +434,7 @@ AP_AHRS_DCM::_yaw_gain(void) const // return true if we have and should use GPS bool AP_AHRS_DCM::have_gps(void) const { - if (AP::gps().status() <= AP_GPS::NO_FIX || _gps_use == GPSUse::Disable) { + if (_gps_use == GPSUse::Disable || AP::gps().status() <= AP_GPS::NO_FIX) { return false; } return true; diff --git a/libraries/AP_DAL/LogStructure.h b/libraries/AP_DAL/LogStructure.h index 873251c7dd63ea..c8ef3435844384 100644 --- a/libraries/AP_DAL/LogStructure.h +++ b/libraries/AP_DAL/LogStructure.h @@ -40,19 +40,24 @@ LOG_RWOH_MSG, \ LOG_RBOH_MSG -// Replay Data Structures +// @LoggerMessage: RFRH +// @Description: Replay FRame Header struct log_RFRH { uint64_t time_us; uint32_t time_flying_ms; uint8_t _end; }; +// @LoggerMessage: RFRF +// @Description: Replay FRame data - Finished frame struct log_RFRF { uint8_t frame_types; uint8_t core_slow; uint8_t _end; }; +// @LoggerMessage: RFRN +// @Description: Replay FRame - aNother frame header struct log_RFRN { int32_t lat; int32_t lng; @@ -73,7 +78,8 @@ struct log_RFRN { uint8_t _end; }; -// Replay Data Structure - Inertial Sensor header +// @LoggerMessage: RISH +// @Description: Replay Inertial Sensor header struct log_RISH { uint16_t loop_rate_hz; uint8_t first_usable_gyro; @@ -84,7 +90,8 @@ struct log_RISH { uint8_t _end; }; -// Replay Data Structure - Inertial Sensor instance data +// @LoggerMessage: RISI +// @Description: Replay Inertial Sensor instance data struct log_RISI { Vector3f delta_velocity; Vector3f delta_angle; @@ -99,14 +106,14 @@ struct log_RISI { }; // @LoggerMessage: REV2 -// @Description: Replay Event +// @Description: Replay Event (EKF2) struct log_REV2 { uint8_t event; uint8_t _end; }; // @LoggerMessage: RSO2 -// @Description: Replay Set Origin event +// @Description: Replay Set Origin event (EKF2) struct log_RSO2 { int32_t lat; int32_t lng; @@ -115,7 +122,7 @@ struct log_RSO2 { }; // @LoggerMessage: RWA2 -// @Description: Replay set-default-airspeed event +// @Description: Replay set-default-airspeed event (EKF2) struct log_RWA2 { float airspeed; float uncertainty; @@ -123,8 +130,14 @@ struct log_RWA2 { }; // same structures for EKF3 +// @LoggerMessage: REV3 +// @Description: Replay Event (EKF3) #define log_REV3 log_REV2 +// @LoggerMessage: RSO3 +// @Description: Replay Set Origin event (EKF3) #define log_RSO3 log_RSO2 +// @LoggerMessage: RWA3 +// @Description: Replay set-default-airspeed event (EKF3) #define log_RWA3 log_RWA2 // @LoggerMessage: REY3 @@ -220,14 +233,16 @@ struct log_RGPJ { uint8_t _end; }; -// Replay Data Structure - Airspeed Sensor header +// @LoggerMessage: RASH +// @Description: Replay Airspeed Sensor Header struct log_RASH { uint8_t num_sensors; uint8_t primary; uint8_t _end; }; -// Replay Data Structure - Airspeed Sensor instance +// @LoggerMessage: RASI +// @Description: Replay Airspeed Sensor Instance data struct log_RASI { float airspeed; uint32_t last_update_ms; diff --git a/libraries/AP_DDS/AP_DDS_Client.cpp b/libraries/AP_DDS/AP_DDS_Client.cpp index 5ef37ca24895b8..fca7d2f6146871 100644 --- a/libraries/AP_DDS/AP_DDS_Client.cpp +++ b/libraries/AP_DDS/AP_DDS_Client.cpp @@ -1,5 +1,6 @@ #include +#include "AP_DDS_config.h" #if AP_DDS_ENABLED #include @@ -12,16 +13,22 @@ #include #include #include +#if AP_DDS_ARM_SERVER_ENABLED #include +# endif // AP_DDS_ARM_SERVER_ENABLED #include #include +#if AP_DDS_ARM_SERVER_ENABLED #include "ardupilot_msgs/srv/ArmMotors.h" +#endif // AP_DDS_ARM_SERVER_ENABLED +#if AP_DDS_MODE_SWITCH_SERVER_ENABLED #include "ardupilot_msgs/srv/ModeSwitch.h" +#endif // AP_DDS_MODE_SWITCH_SERVER_ENABLED #if AP_EXTERNAL_CONTROL_ENABLED #include "AP_DDS_ExternalControl.h" -#endif +#endif // AP_EXTERNAL_CONTROL_ENABLED #include "AP_DDS_Frames.h" #include "AP_DDS_Client.h" @@ -32,31 +39,31 @@ // Enable DDS at runtime by default static constexpr uint8_t ENABLED_BY_DEFAULT = 1; #if AP_DDS_TIME_PUB_ENABLED -static constexpr uint16_t DELAY_TIME_TOPIC_MS = 10; +static constexpr uint16_t DELAY_TIME_TOPIC_MS = AP_DDS_DELAY_TIME_TOPIC_MS; #endif // AP_DDS_TIME_PUB_ENABLED #if AP_DDS_BATTERY_STATE_PUB_ENABLED -static constexpr uint16_t DELAY_BATTERY_STATE_TOPIC_MS = 1000; +static constexpr uint16_t DELAY_BATTERY_STATE_TOPIC_MS = AP_DDS_DELAY_BATTERY_STATE_TOPIC_MS; #endif // AP_DDS_BATTERY_STATE_PUB_ENABLED #if AP_DDS_IMU_PUB_ENABLED -static constexpr uint16_t DELAY_IMU_TOPIC_MS = 5; +static constexpr uint16_t DELAY_IMU_TOPIC_MS = AP_DDS_DELAY_IMU_TOPIC_MS; #endif // AP_DDS_IMU_PUB_ENABLED #if AP_DDS_LOCAL_POSE_PUB_ENABLED -static constexpr uint16_t DELAY_LOCAL_POSE_TOPIC_MS = 33; +static constexpr uint16_t DELAY_LOCAL_POSE_TOPIC_MS = AP_DDS_DELAY_LOCAL_POSE_TOPIC_MS; #endif // AP_DDS_LOCAL_POSE_PUB_ENABLED #if AP_DDS_LOCAL_VEL_PUB_ENABLED -static constexpr uint16_t DELAY_LOCAL_VELOCITY_TOPIC_MS = 33; +static constexpr uint16_t DELAY_LOCAL_VELOCITY_TOPIC_MS = AP_DDS_DELAY_LOCAL_VELOCITY_TOPIC_MS; #endif // AP_DDS_LOCAL_VEL_PUB_ENABLED #if AP_DDS_AIRSPEED_PUB_ENABLED -static constexpr uint16_t DELAY_AIRSPEED_TOPIC_MS = 33; +static constexpr uint16_t DELAY_AIRSPEED_TOPIC_MS = AP_DDS_DELAY_AIRSPEED_TOPIC_MS; #endif // AP_DDS_AIRSPEED_PUB_ENABLED #if AP_DDS_GEOPOSE_PUB_ENABLED -static constexpr uint16_t DELAY_GEO_POSE_TOPIC_MS = 33; +static constexpr uint16_t DELAY_GEO_POSE_TOPIC_MS = AP_DDS_DELAY_GEO_POSE_TOPIC_MS; #endif // AP_DDS_GEOPOSE_PUB_ENABLED #if AP_DDS_CLOCK_PUB_ENABLED -static constexpr uint16_t DELAY_CLOCK_TOPIC_MS = 10; +static constexpr uint16_t DELAY_CLOCK_TOPIC_MS =AP_DDS_DELAY_CLOCK_TOPIC_MS; #endif // AP_DDS_CLOCK_PUB_ENABLED #if AP_DDS_GPS_GLOBAL_ORIGIN_PUB_ENABLED -static constexpr uint16_t DELAY_GPS_GLOBAL_ORIGIN_TOPIC_MS = 1000; +static constexpr uint16_t DELAY_GPS_GLOBAL_ORIGIN_TOPIC_MS = AP_DDS_DELAY_GPS_GLOBAL_ORIGIN_TOPIC_MS; #endif // AP_DDS_GPS_GLOBAL_ORIGIN_PUB_ENABLED static constexpr uint16_t DELAY_PING_MS = 500; @@ -301,8 +308,11 @@ void AP_DDS_Client::update_topic(sensor_msgs_msg_BatteryState& msg, const uint8_ if (instance >= AP_BATT_MONITOR_MAX_INSTANCES) { return; } + static_assert(AP_BATT_MONITOR_MAX_INSTANCES <= 99, "AP_BATT_MONITOR_MAX_INSTANCES is greater than 99"); update_topic(msg.header.stamp); + hal.util->snprintf(msg.header.frame_id, 2, "%u", instance); + auto &battery = AP::battery(); if (!battery.healthy(instance)) { @@ -664,7 +674,7 @@ void AP_DDS_Client::on_topic(uxrSession* uxr_session, uxrObjectId object_id, uin break; } #endif // AP_DDS_JOY_SUB_ENABLED -#if AP_DDS_DYNAMIC_TF_SUB +#if AP_DDS_DYNAMIC_TF_SUB_ENABLED case topics[to_underlying(TopicIndex::DYNAMIC_TRANSFORMS_SUB)].dr_id.id: { const bool success = tf2_msgs_msg_TFMessage_deserialize_topic(ub, &rx_dynamic_transforms_topic); if (success == false) { @@ -681,7 +691,7 @@ void AP_DDS_Client::on_topic(uxrSession* uxr_session, uxrObjectId object_id, uin } break; } -#endif // AP_DDS_DYNAMIC_TF_SUB +#endif // AP_DDS_DYNAMIC_TF_SUB_ENABLED #if AP_DDS_VEL_CTRL_ENABLED case topics[to_underlying(TopicIndex::VELOCITY_CONTROL_SUB)].dr_id.id: { const bool success = geometry_msgs_msg_TwistStamped_deserialize_topic(ub, &rx_velocity_control_topic); @@ -729,6 +739,7 @@ void AP_DDS_Client::on_request(uxrSession* uxr_session, uxrObjectId object_id, u (void) request_id; (void) length; switch (object_id.id) { +#if AP_DDS_ARM_SERVER_ENABLED case services[to_underlying(ServiceIndex::ARMING_MOTORS)].rep_id: { ardupilot_msgs_srv_ArmMotors_Request arm_motors_request; ardupilot_msgs_srv_ArmMotors_Response arm_motors_response; @@ -758,6 +769,8 @@ void AP_DDS_Client::on_request(uxrSession* uxr_session, uxrObjectId object_id, u GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s Request for Arming/Disarming : %s", msg_prefix, arm_motors_response.result ? "SUCCESS" : "FAIL"); break; } +#endif // AP_DDS_ARM_SERVER_ENABLED +#if AP_DDS_MODE_SWITCH_SERVER_ENABLED case services[to_underlying(ServiceIndex::MODE_SWITCH)].rep_id: { ardupilot_msgs_srv_ModeSwitch_Request mode_switch_request; ardupilot_msgs_srv_ModeSwitch_Response mode_switch_response; @@ -786,6 +799,7 @@ void AP_DDS_Client::on_request(uxrSession* uxr_session, uxrObjectId object_id, u GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s Request for Mode Switch : %s", msg_prefix, mode_switch_response.status ? "SUCCESS" : "FAIL"); break; } +#endif // AP_DDS_MODE_SWITCH_SERVER_ENABLED } } @@ -1262,10 +1276,13 @@ void AP_DDS_Client::update() #endif // AP_DDS_NAVSATFIX_PUB_ENABLED #if AP_DDS_BATTERY_STATE_PUB_ENABLED if (cur_time_ms - last_battery_state_time_ms > DELAY_BATTERY_STATE_TOPIC_MS) { - constexpr uint8_t battery_instance = 0; - update_topic(battery_state_topic, battery_instance); + for (uint8_t battery_instance = 0; battery_instance < AP_BATT_MONITOR_MAX_INSTANCES; battery_instance++) { + update_topic(battery_state_topic, battery_instance); + if (battery_state_topic.present) { + write_battery_state_topic(); + } + } last_battery_state_time_ms = cur_time_ms; - write_battery_state_topic(); } #endif // AP_DDS_BATTERY_STATE_PUB_ENABLED #if AP_DDS_LOCAL_POSE_PUB_ENABLED diff --git a/libraries/AP_DDS/AP_DDS_Client.h b/libraries/AP_DDS/AP_DDS_Client.h index 005b87f30aa213..92bdbf2a4bd30c 100644 --- a/libraries/AP_DDS/AP_DDS_Client.h +++ b/libraries/AP_DDS/AP_DDS_Client.h @@ -195,10 +195,10 @@ class AP_DDS_Client // incoming REP147 goal interface global position static ardupilot_msgs_msg_GlobalPosition rx_global_position_control_topic; #endif // AP_DDS_GLOBAL_POS_CTRL_ENABLED -#if AP_DDS_DYNAMIC_TF_SUB +#if AP_DDS_DYNAMIC_TF_SUB_ENABLED // incoming transforms static tf2_msgs_msg_TFMessage rx_dynamic_transforms_topic; -#endif // AP_DDS_DYNAMIC_TF_SUB +#endif // AP_DDS_DYNAMIC_TF_SUB_ENABLED HAL_Semaphore csem; // connection parametrics diff --git a/libraries/AP_DDS/AP_DDS_Service_Table.h b/libraries/AP_DDS/AP_DDS_Service_Table.h index 22f6716beffd0a..0e86496dd57779 100644 --- a/libraries/AP_DDS/AP_DDS_Service_Table.h +++ b/libraries/AP_DDS/AP_DDS_Service_Table.h @@ -1,8 +1,13 @@ #include "uxr/client/client.h" +#include enum class ServiceIndex: uint8_t { +#if AP_DDS_ARM_SERVER_ENABLED ARMING_MOTORS, +#endif // #if AP_DDS_ARM_SERVER_ENABLED +#if AP_DDS_MODE_SWITCH_SERVER_ENABLED MODE_SWITCH +#endif // AP_DDS_MODE_SWITCH_SERVER_ENABLED }; static inline constexpr uint8_t to_underlying(const ServiceIndex index) @@ -12,6 +17,7 @@ static inline constexpr uint8_t to_underlying(const ServiceIndex index) } constexpr struct AP_DDS_Client::Service_table AP_DDS_Client::services[] = { +#if AP_DDS_ARM_SERVER_ENABLED { .req_id = to_underlying(ServiceIndex::ARMING_MOTORS), .rep_id = to_underlying(ServiceIndex::ARMING_MOTORS), @@ -28,6 +34,8 @@ constexpr struct AP_DDS_Client::Service_table AP_DDS_Client::services[] = { .depth = 5, }, }, +#endif // AP_DDS_ARM_SERVER_ENABLED +#if AP_DDS_MODE_SWITCH_SERVER_ENABLED { .req_id = to_underlying(ServiceIndex::MODE_SWITCH), .rep_id = to_underlying(ServiceIndex::MODE_SWITCH), @@ -38,4 +46,5 @@ constexpr struct AP_DDS_Client::Service_table AP_DDS_Client::services[] = { .request_topic_name = "rq/ap/mode_switchRequest", .reply_topic_name = "rr/ap/mode_switchReply", }, +#endif // AP_DDS_MODE_SWITCH_SERVER_ENABLED }; diff --git a/libraries/AP_DDS/AP_DDS_Topic_Table.h b/libraries/AP_DDS/AP_DDS_Topic_Table.h index 05d68e0c78e3ff..8e3823bc238eac 100644 --- a/libraries/AP_DDS/AP_DDS_Topic_Table.h +++ b/libraries/AP_DDS/AP_DDS_Topic_Table.h @@ -51,9 +51,9 @@ enum class TopicIndex: uint8_t { #if AP_DDS_JOY_SUB_ENABLED JOY_SUB, #endif // AP_DDS_JOY_SUB_ENABLED -#if AP_DDS_DYNAMIC_TF_SUB +#if AP_DDS_DYNAMIC_TF_SUB_ENABLED DYNAMIC_TRANSFORMS_SUB, -#endif // AP_DDS_DYNAMIC_TF_SUB +#endif // AP_DDS_DYNAMIC_TF_SUB_ENABLED #if AP_DDS_VEL_CTRL_ENABLED VELOCITY_CONTROL_SUB, #endif // AP_DDS_VEL_CTRL_ENABLED @@ -132,7 +132,7 @@ constexpr struct AP_DDS_Client::Topic_table AP_DDS_Client::topics[] = { .dw_id = uxrObjectId{.id=to_underlying(TopicIndex::BATTERY_STATE_PUB), .type=UXR_DATAWRITER_ID}, .dr_id = uxrObjectId{.id=to_underlying(TopicIndex::BATTERY_STATE_PUB), .type=UXR_DATAREADER_ID}, .topic_rw = Topic_rw::DataWriter, - .topic_name = "rt/ap/battery/battery0", + .topic_name = "rt/ap/battery", .type_name = "sensor_msgs::msg::dds_::BatteryState_", .qos = { .durability = UXR_DURABILITY_VOLATILE, @@ -286,7 +286,7 @@ constexpr struct AP_DDS_Client::Topic_table AP_DDS_Client::topics[] = { }, }, #endif // AP_DDS_JOY_SUB_ENABLED -#if AP_DDS_DYNAMIC_TF_SUB +#if AP_DDS_DYNAMIC_TF_SUB_ENABLED { .topic_id = to_underlying(TopicIndex::DYNAMIC_TRANSFORMS_SUB), .pub_id = to_underlying(TopicIndex::DYNAMIC_TRANSFORMS_SUB), @@ -303,7 +303,7 @@ constexpr struct AP_DDS_Client::Topic_table AP_DDS_Client::topics[] = { .depth = 5, }, }, -#endif // AP_DDS_DYNAMIC_TF_SUB +#endif // AP_DDS_DYNAMIC_TF_SUB_ENABLED #if AP_DDS_VEL_CTRL_ENABLED { .topic_id = to_underlying(TopicIndex::VELOCITY_CONTROL_SUB), diff --git a/libraries/AP_DDS/AP_DDS_config.h b/libraries/AP_DDS/AP_DDS_config.h index 2e0d3d6264f8c5..b8f31e368c8a40 100644 --- a/libraries/AP_DDS/AP_DDS_config.h +++ b/libraries/AP_DDS/AP_DDS_config.h @@ -26,10 +26,18 @@ #define AP_DDS_IMU_PUB_ENABLED AP_DDS_EXPERIMENTAL_ENABLED #endif +#ifndef AP_DDS_DELAY_IMU_TOPIC_MS +#define AP_DDS_DELAY_IMU_TOPIC_MS 5 +#endif + #ifndef AP_DDS_TIME_PUB_ENABLED #define AP_DDS_TIME_PUB_ENABLED 1 #endif +#ifndef AP_DDS_DELAY_TIME_TOPIC_MS +#define AP_DDS_DELAY_TIME_TOPIC_MS 10 +#endif + #ifndef AP_DDS_NAVSATFIX_PUB_ENABLED #define AP_DDS_NAVSATFIX_PUB_ENABLED 1 #endif @@ -42,30 +50,58 @@ #define AP_DDS_GPS_GLOBAL_ORIGIN_PUB_ENABLED 1 #endif +#ifndef AP_DDS_DELAY_GPS_GLOBAL_ORIGIN_TOPIC_MS +#define AP_DDS_DELAY_GPS_GLOBAL_ORIGIN_TOPIC_MS 1000 +#endif + #ifndef AP_DDS_GEOPOSE_PUB_ENABLED #define AP_DDS_GEOPOSE_PUB_ENABLED 1 #endif +#ifndef AP_DDS_DELAY_GEO_POSE_TOPIC_MS +#define AP_DDS_DELAY_GEO_POSE_TOPIC_MS 33 +#endif + #ifndef AP_DDS_LOCAL_POSE_PUB_ENABLED #define AP_DDS_LOCAL_POSE_PUB_ENABLED 1 #endif +#ifndef AP_DDS_DELAY_LOCAL_POSE_TOPIC_MS +#define AP_DDS_DELAY_LOCAL_POSE_TOPIC_MS 33 +#endif + #ifndef AP_DDS_LOCAL_VEL_PUB_ENABLED #define AP_DDS_LOCAL_VEL_PUB_ENABLED 1 #endif +#ifndef AP_DDS_DELAY_LOCAL_VELOCITY_TOPIC_MS +#define AP_DDS_DELAY_LOCAL_VELOCITY_TOPIC_MS 33 +#endif + #ifndef AP_DDS_AIRSPEED_PUB_ENABLED #define AP_DDS_AIRSPEED_PUB_ENABLED 1 #endif +#ifndef AP_DDS_DELAY_AIRSPEED_TOPIC_MS +#define AP_DDS_DELAY_AIRSPEED_TOPIC_MS 33 +#endif + #ifndef AP_DDS_BATTERY_STATE_PUB_ENABLED #define AP_DDS_BATTERY_STATE_PUB_ENABLED 1 #endif +#ifndef AP_DDS_DELAY_BATTERY_STATE_TOPIC_MS +#define AP_DDS_DELAY_BATTERY_STATE_TOPIC_MS 1000 +#endif + #ifndef AP_DDS_CLOCK_PUB_ENABLED #define AP_DDS_CLOCK_PUB_ENABLED 1 #endif +#ifndef AP_DDS_DELAY_CLOCK_TOPIC_MS +#define AP_DDS_DELAY_CLOCK_TOPIC_MS 10 +#endif + #ifndef AP_DDS_JOY_SUB_ENABLED #define AP_DDS_JOY_SUB_ENABLED 1 #endif @@ -78,15 +114,23 @@ #define AP_DDS_GLOBAL_POS_CTRL_ENABLED 1 #endif -#ifndef AP_DDS_DYNAMIC_TF_SUB -#define AP_DDS_DYNAMIC_TF_SUB 1 +#ifndef AP_DDS_DYNAMIC_TF_SUB_ENABLED +#define AP_DDS_DYNAMIC_TF_SUB_ENABLED 1 +#endif + +#ifndef AP_DDS_ARM_SERVER_ENABLED +#define AP_DDS_ARM_SERVER_ENABLED 1 +#endif + +#ifndef AP_DDS_MODE_SWITCH_SERVER_ENABLED +#define AP_DDS_MODE_SWITCH_SERVER_ENABLED 1 #endif // Whether to include Twist support #define AP_DDS_NEEDS_TWIST AP_DDS_VEL_CTRL_ENABLED || AP_DDS_LOCAL_VEL_PUB_ENABLED // Whether to include Transform support -#define AP_DDS_NEEDS_TRANSFORMS AP_DDS_DYNAMIC_TF_SUB || AP_DDS_STATIC_TF_PUB_ENABLED +#define AP_DDS_NEEDS_TRANSFORMS AP_DDS_DYNAMIC_TF_SUB_ENABLED || AP_DDS_STATIC_TF_PUB_ENABLED #ifndef AP_DDS_DEFAULT_UDP_IP_ADDR #if CONFIG_HAL_BOARD == HAL_BOARD_CHIBIOS diff --git a/libraries/AP_DDS/README.md b/libraries/AP_DDS/README.md index 3a037f9b9782d0..02848565979d20 100644 --- a/libraries/AP_DDS/README.md +++ b/libraries/AP_DDS/README.md @@ -173,7 +173,7 @@ $ ros2 node list $ ros2 topic list -v Published topics: * /ap/airspeed [geometry_msgs/msg/Vector3] 1 publisher - * /ap/battery/battery0 [sensor_msgs/msg/BatteryState] 1 publisher + * /ap/battery [sensor_msgs/msg/BatteryState] 1 publisher * /ap/clock [rosgraph_msgs/msg/Clock] 1 publisher * /ap/geopose/filtered [geographic_msgs/msg/GeoPoseStamped] 1 publisher * /ap/gps_global_origin/filtered [geographic_msgs/msg/GeoPointStamped] 1 publisher diff --git a/libraries/AP_DroneCAN/AP_DroneCAN.cpp b/libraries/AP_DroneCAN/AP_DroneCAN.cpp index 59174a778b7feb..49aace09526315 100644 --- a/libraries/AP_DroneCAN/AP_DroneCAN.cpp +++ b/libraries/AP_DroneCAN/AP_DroneCAN.cpp @@ -844,9 +844,9 @@ void AP_DroneCAN::SRV_send_esc(void) // if at least one is active (update) we need to send to all if (active_esc_num > 0) { k = 0; - + const bool armed = hal.util->get_soft_armed(); for (uint8_t i = esc_offset; i < max_esc_num && k < 20; i++) { - if ((((uint32_t) 1) << i) & _ESC_armed_mask) { + if (armed && ((((uint32_t) 1U) << i) & _ESC_armed_mask)) { esc_msg.cmd.data[k] = scale_esc_output(i); } else { esc_msg.cmd.data[k] = static_cast(0); @@ -897,9 +897,9 @@ void AP_DroneCAN::SRV_send_esc_hobbywing(void) // if at least one is active (update) we need to send to all if (active_esc_num > 0) { k = 0; - + const bool armed = hal.util->get_soft_armed(); for (uint8_t i = esc_offset; i < max_esc_num && k < 20; i++) { - if ((((uint32_t) 1) << i) & _ESC_armed_mask) { + if (armed && ((((uint32_t) 1U) << i) & _ESC_armed_mask)) { esc_msg.command.data[k] = scale_esc_output(i); } else { esc_msg.command.data[k] = static_cast(0); diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS.cpp b/libraries/AP_ExternalAHRS/AP_ExternalAHRS.cpp index 9abbfff0d1a97c..07d875e57de959 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS.cpp +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS.cpp @@ -289,6 +289,17 @@ void AP_ExternalAHRS::get_filter_status(nav_filter_status &status) const } } +/* + get estimated variances, return false if not implemented + */ +bool AP_ExternalAHRS::get_variances(float &velVar, float &posVar, float &hgtVar, Vector3f &magVar, float &tasVar) const +{ + if (backend != nullptr) { + return backend->get_variances(velVar, posVar, hgtVar, magVar, tasVar); + } + return false; +} + bool AP_ExternalAHRS::get_gyro(Vector3f &gyro) { WITH_SEMAPHORE(state.sem); @@ -312,9 +323,56 @@ bool AP_ExternalAHRS::get_accel(Vector3f &accel) // send an EKF_STATUS message to GCS void AP_ExternalAHRS::send_status_report(GCS_MAVLINK &link) const { - if (backend) { - backend->send_status_report(link); + float velVar, posVar, hgtVar, tasVar; + Vector3f magVar; + if (backend == nullptr || !backend->get_variances(velVar, posVar, hgtVar, magVar, tasVar)) { + return; + } + + uint16_t flags = 0; + nav_filter_status filterStatus {}; + get_filter_status(filterStatus); + + if (filterStatus.flags.attitude) { + flags |= EKF_ATTITUDE; + } + if (filterStatus.flags.horiz_vel) { + flags |= EKF_VELOCITY_HORIZ; } + if (filterStatus.flags.vert_vel) { + flags |= EKF_VELOCITY_VERT; + } + if (filterStatus.flags.horiz_pos_rel) { + flags |= EKF_POS_HORIZ_REL; + } + if (filterStatus.flags.horiz_pos_abs) { + flags |= EKF_POS_HORIZ_ABS; + } + if (filterStatus.flags.vert_pos) { + flags |= EKF_POS_VERT_ABS; + } + if (filterStatus.flags.terrain_alt) { + flags |= EKF_POS_VERT_AGL; + } + if (filterStatus.flags.const_pos_mode) { + flags |= EKF_CONST_POS_MODE; + } + if (filterStatus.flags.pred_horiz_pos_rel) { + flags |= EKF_PRED_POS_HORIZ_REL; + } + if (filterStatus.flags.pred_horiz_pos_abs) { + flags |= EKF_PRED_POS_HORIZ_ABS; + } + if (!filterStatus.flags.initalized) { + flags |= EKF_UNINITIALIZED; + } + + const float mag_var = MAX(magVar.x, MAX(magVar.y, magVar.z)); + mavlink_msg_ekf_status_report_send(link.get_chan(), flags, + velVar, + posVar, + hgtVar, + mag_var, 0, 0); } void AP_ExternalAHRS::update(void) @@ -357,6 +415,28 @@ void AP_ExternalAHRS::update(void) state.velocity.x, state.velocity.y, state.velocity.z, state.location.lat, state.location.lng, state.location.alt*0.01, filterStatus.value); + + // @LoggerMessage: EAHV + // @Description: External AHRS variances + // @Field: TimeUS: Time since system startup + // @Field: Vel: velocity variance + // @Field: Pos: position variance + // @Field: Hgt: height variance + // @Field: MagX: magnetic variance, X + // @Field: MagY: magnetic variance, Y + // @Field: MagZ: magnetic variance, Z + // @Field: TAS: true airspeed variance + + float velVar, posVar, hgtVar, tasVar; + Vector3f magVar; + if (backend != nullptr && backend->get_variances(velVar, posVar, hgtVar, magVar, tasVar)) { + AP::logger().WriteStreaming("EAHV", "TimeUS,Vel,Pos,Hgt,MagX,MagY,MagZ,TAS", + "Qfffffff", + AP_HAL::micros64(), + velVar, posVar, hgtVar, + magVar.x, magVar.y, magVar.z, + tasVar); + } } #endif // HAL_LOGGING_ENABLED } diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS.h b/libraries/AP_ExternalAHRS/AP_ExternalAHRS.h index b617a18e0507d0..c5913baa8c6dbb 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS.h +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS.h @@ -120,6 +120,7 @@ class AP_ExternalAHRS { bool get_gyro(Vector3f &gyro); bool get_accel(Vector3f &accel); void send_status_report(class GCS_MAVLINK &link) const; + bool get_variances(float &velVar, float &posVar, float &hgtVar, Vector3f &magVar, float &tasVar) const; // update backend void update(); diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_InertialLabs.cpp b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_InertialLabs.cpp index 0d2eac1629071a..fb057d000fde15 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_InertialLabs.cpp +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_InertialLabs.cpp @@ -1110,57 +1110,14 @@ void AP_ExternalAHRS_InertialLabs::get_filter_status(nav_filter_status &status) status.flags.rejecting_airspeed = (state2.air_data_status & ILABS_AIRDATA_AIRSPEED_FAIL); } -// send an EKF_STATUS message to GCS -void AP_ExternalAHRS_InertialLabs::send_status_report(GCS_MAVLINK &link) const +// get variances +bool AP_ExternalAHRS_InertialLabs::get_variances(float &velVar, float &posVar, float &hgtVar, Vector3f &magVar, float &tasVar) const { - // prepare flags - uint16_t flags = 0; - nav_filter_status filterStatus; - get_filter_status(filterStatus); - if (filterStatus.flags.attitude) { - flags |= EKF_ATTITUDE; - } - if (filterStatus.flags.horiz_vel) { - flags |= EKF_VELOCITY_HORIZ; - } - if (filterStatus.flags.vert_vel) { - flags |= EKF_VELOCITY_VERT; - } - if (filterStatus.flags.horiz_pos_rel) { - flags |= EKF_POS_HORIZ_REL; - } - if (filterStatus.flags.horiz_pos_abs) { - flags |= EKF_POS_HORIZ_ABS; - } - if (filterStatus.flags.vert_pos) { - flags |= EKF_POS_VERT_ABS; - } - if (filterStatus.flags.terrain_alt) { - flags |= EKF_POS_VERT_AGL; - } - if (filterStatus.flags.const_pos_mode) { - flags |= EKF_CONST_POS_MODE; - } - if (filterStatus.flags.pred_horiz_pos_rel) { - flags |= EKF_PRED_POS_HORIZ_REL; - } - if (filterStatus.flags.pred_horiz_pos_abs) { - flags |= EKF_PRED_POS_HORIZ_ABS; - } - if (!filterStatus.flags.initalized) { - flags |= EKF_UNINITIALIZED; - } - - // send message - const float vel_gate = 5; - const float pos_gate = 5; - const float hgt_gate = 5; - const float mag_var = 0; - mavlink_msg_ekf_status_report_send(link.get_chan(), flags, - state2.kf_vel_covariance.length()/vel_gate, - state2.kf_pos_covariance.xy().length()/pos_gate, - state2.kf_pos_covariance.z/hgt_gate, - mag_var, 0, 0); + velVar = state2.kf_vel_covariance.length() * vel_gate_scale; + posVar = state2.kf_pos_covariance.xy().length() * pos_gate_scale; + hgtVar = state2.kf_pos_covariance.z * hgt_gate_scale; + tasVar = 0; + return true; } #endif // AP_EXTERNAL_AHRS_INERTIALLABS_ENABLED diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_InertialLabs.h b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_InertialLabs.h index d2ffcf17173550..0db51358e79b34 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_InertialLabs.h +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_InertialLabs.h @@ -37,7 +37,7 @@ class AP_ExternalAHRS_InertialLabs : public AP_ExternalAHRS_backend { bool initialised(void) const override; bool pre_arm_check(char *failure_msg, uint8_t failure_msg_len) const override; void get_filter_status(nav_filter_status &status) const override; - void send_status_report(class GCS_MAVLINK &link) const override; + bool get_variances(float &velVar, float &posVar, float &hgtVar, Vector3f &magVar, float &tasVar) const override; // check for new data void update() override { diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.cpp b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.cpp index a5e4d41c4ced1b..0e500bc403a896 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.cpp +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.cpp @@ -268,55 +268,14 @@ void AP_ExternalAHRS_MicroStrain5::get_filter_status(nav_filter_status &status) } } -void AP_ExternalAHRS_MicroStrain5::send_status_report(GCS_MAVLINK &link) const +// get variances +bool AP_ExternalAHRS_MicroStrain5::get_variances(float &velVar, float &posVar, float &hgtVar, Vector3f &magVar, float &tasVar) const { - // prepare flags - uint16_t flags = 0; - nav_filter_status filterStatus; - get_filter_status(filterStatus); - if (filterStatus.flags.attitude) { - flags |= EKF_ATTITUDE; - } - if (filterStatus.flags.horiz_vel) { - flags |= EKF_VELOCITY_HORIZ; - } - if (filterStatus.flags.vert_vel) { - flags |= EKF_VELOCITY_VERT; - } - if (filterStatus.flags.horiz_pos_rel) { - flags |= EKF_POS_HORIZ_REL; - } - if (filterStatus.flags.horiz_pos_abs) { - flags |= EKF_POS_HORIZ_ABS; - } - if (filterStatus.flags.vert_pos) { - flags |= EKF_POS_VERT_ABS; - } - if (filterStatus.flags.terrain_alt) { - flags |= EKF_POS_VERT_AGL; - } - if (filterStatus.flags.const_pos_mode) { - flags |= EKF_CONST_POS_MODE; - } - if (filterStatus.flags.pred_horiz_pos_rel) { - flags |= EKF_PRED_POS_HORIZ_REL; - } - if (filterStatus.flags.pred_horiz_pos_abs) { - flags |= EKF_PRED_POS_HORIZ_ABS; - } - if (!filterStatus.flags.initalized) { - flags |= EKF_UNINITIALIZED; - } - - // send message - const float vel_gate = 4; // represents hz value data is posted at - const float pos_gate = 4; // represents hz value data is posted at - const float hgt_gate = 4; // represents hz value data is posted at - const float mag_var = 0; //we may need to change this to be like the other gates, set to 0 because mag is ignored by the ins filter in vectornav - mavlink_msg_ekf_status_report_send(link.get_chan(), flags, - gnss_data[gnss_instance].speed_accuracy/vel_gate, gnss_data[gnss_instance].horizontal_position_accuracy/pos_gate, gnss_data[gnss_instance].vertical_position_accuracy/hgt_gate, - mag_var, 0, 0); - + velVar = gnss_data[gnss_instance].speed_accuracy * vel_gate_scale; + posVar = gnss_data[gnss_instance].horizontal_position_accuracy * pos_gate_scale; + hgtVar = gnss_data[gnss_instance].vertical_position_accuracy * hgt_gate_scale; + tasVar = 0; + return true; } diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.h b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.h index 7d5c199eb1365e..a311af5089f241 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.h +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain5.h @@ -42,7 +42,7 @@ class AP_ExternalAHRS_MicroStrain5: public AP_ExternalAHRS_backend, public AP_Mi bool initialised(void) const override; bool pre_arm_check(char *failure_msg, uint8_t failure_msg_len) const override; void get_filter_status(nav_filter_status &status) const override; - void send_status_report(class GCS_MAVLINK &link) const override; + bool get_variances(float &velVar, float &posVar, float &hgtVar, Vector3f &magVar, float &tasVar) const override; // check for new data void update() override { diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain7.cpp b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain7.cpp index 43c961a57d6f46..31082aea9b2e51 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain7.cpp +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain7.cpp @@ -317,63 +317,14 @@ void AP_ExternalAHRS_MicroStrain7::get_filter_status(nav_filter_status &status) } } -void AP_ExternalAHRS_MicroStrain7::send_status_report(GCS_MAVLINK &link) const +// get variances +bool AP_ExternalAHRS_MicroStrain7::get_variances(float &velVar, float &posVar, float &hgtVar, Vector3f &magVar, float &tasVar) const { - // prepare flags - uint16_t flags = 0; - nav_filter_status filterStatus; - get_filter_status(filterStatus); - if (filterStatus.flags.attitude) { - flags |= EKF_ATTITUDE; - } - if (filterStatus.flags.horiz_vel) { - flags |= EKF_VELOCITY_HORIZ; - } - if (filterStatus.flags.vert_vel) { - flags |= EKF_VELOCITY_VERT; - } - if (filterStatus.flags.horiz_pos_rel) { - flags |= EKF_POS_HORIZ_REL; - } - if (filterStatus.flags.horiz_pos_abs) { - flags |= EKF_POS_HORIZ_ABS; - } - if (filterStatus.flags.vert_pos) { - flags |= EKF_POS_VERT_ABS; - } - if (filterStatus.flags.terrain_alt) { - flags |= EKF_POS_VERT_AGL; - } - if (filterStatus.flags.const_pos_mode) { - flags |= EKF_CONST_POS_MODE; - } - if (filterStatus.flags.pred_horiz_pos_rel) { - flags |= EKF_PRED_POS_HORIZ_REL; - } - if (filterStatus.flags.pred_horiz_pos_abs) { - flags |= EKF_PRED_POS_HORIZ_ABS; - } - if (!filterStatus.flags.initalized) { - flags |= EKF_UNINITIALIZED; - } - - // send message - const float vel_gate = 4; // represents hz value data is posted at - const float pos_gate = 4; // represents hz value data is posted at - const float hgt_gate = 4; // represents hz value data is posted at - const float mag_var = 0; //we may need to change this to be like the other gates, set to 0 because mag is ignored by the ins filter in vectornav - - const float velocity_variance {filter_data.ned_velocity_uncertainty.length() / vel_gate}; - const float pos_horiz_variance {filter_data.ned_position_uncertainty.xy().length() / pos_gate}; - const float pos_vert_variance {filter_data.ned_position_uncertainty.z / hgt_gate}; - // No terrain alt sensor on MicroStrain7. - const float terrain_alt_variance {0}; - // No airspeed sensor on MicroStrain7. - const float airspeed_variance {0}; - mavlink_msg_ekf_status_report_send(link.get_chan(), flags, - velocity_variance, pos_horiz_variance, pos_vert_variance, - mag_var, terrain_alt_variance, airspeed_variance); - + velVar = filter_data.ned_velocity_uncertainty.length() * vel_gate_scale; + posVar = filter_data.ned_position_uncertainty.xy().length() * pos_gate_scale; + hgtVar = filter_data.ned_position_uncertainty.z * hgt_gate_scale; + tasVar = 0; + return true; } bool AP_ExternalAHRS_MicroStrain7::times_healthy() const diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain7.h b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain7.h index f278289d15fb4b..27fcd19d00eb1d 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain7.h +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_MicroStrain7.h @@ -42,7 +42,7 @@ class AP_ExternalAHRS_MicroStrain7: public AP_ExternalAHRS_backend, public AP_Mi bool initialised(void) const override; bool pre_arm_check(char *failure_msg, uint8_t failure_msg_len) const override; void get_filter_status(nav_filter_status &status) const override; - void send_status_report(class GCS_MAVLINK &link) const override; + bool get_variances(float &velVar, float &posVar, float &hgtVar, Vector3f &magVar, float &tasVar) const override; // check for new data void update() override diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.cpp b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.cpp index 92e4147fe8a476..4a502624021a1b 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.cpp +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.cpp @@ -788,59 +788,15 @@ void AP_ExternalAHRS_VectorNav::get_filter_status(nav_filter_status &status) con } } -// send an EKF_STATUS message to GCS -void AP_ExternalAHRS_VectorNav::send_status_report(GCS_MAVLINK &link) const +// get variances +bool AP_ExternalAHRS_VectorNav::get_variances(float &velVar, float &posVar, float &hgtVar, Vector3f &magVar, float &tasVar) const { - if (!latest_ins_ekf_packet) { - return; - } - // prepare flags - uint16_t flags = 0; - nav_filter_status filterStatus; - get_filter_status(filterStatus); - if (filterStatus.flags.attitude) { - flags |= EKF_ATTITUDE; - } - if (filterStatus.flags.horiz_vel) { - flags |= EKF_VELOCITY_HORIZ; - } - if (filterStatus.flags.vert_vel) { - flags |= EKF_VELOCITY_VERT; - } - if (filterStatus.flags.horiz_pos_rel) { - flags |= EKF_POS_HORIZ_REL; - } - if (filterStatus.flags.horiz_pos_abs) { - flags |= EKF_POS_HORIZ_ABS; - } - if (filterStatus.flags.vert_pos) { - flags |= EKF_POS_VERT_ABS; - } - if (filterStatus.flags.terrain_alt) { - flags |= EKF_POS_VERT_AGL; - } - if (filterStatus.flags.const_pos_mode) { - flags |= EKF_CONST_POS_MODE; - } - if (filterStatus.flags.pred_horiz_pos_rel) { - flags |= EKF_PRED_POS_HORIZ_REL; - } - if (filterStatus.flags.pred_horiz_pos_abs) { - flags |= EKF_PRED_POS_HORIZ_ABS; - } - if (!filterStatus.flags.initalized) { - flags |= EKF_UNINITIALIZED; - } - - // send message const struct VN_INS_ekf_packet &pkt = *(struct VN_INS_ekf_packet *)latest_ins_ekf_packet; - const float vel_gate = 5; - const float pos_gate = 5; - const float hgt_gate = 5; - const float mag_var = 0; - mavlink_msg_ekf_status_report_send(link.get_chan(), flags, - pkt.velU / vel_gate, pkt.posU / pos_gate, pkt.posU / hgt_gate, - mag_var, 0, 0); + velVar = pkt.velU * vel_gate_scale; + posVar = pkt.posU * pos_gate_scale; + hgtVar = pkt.posU * hgt_gate_scale; + tasVar = 0; + return true; } #endif // AP_EXTERNAL_AHRS_VECTORNAV_ENABLED diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.h b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.h index e500a0d8b3a819..c6665bb59bc48c 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.h +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_VectorNav.h @@ -37,7 +37,7 @@ class AP_ExternalAHRS_VectorNav : public AP_ExternalAHRS_backend { bool initialised(void) const override; bool pre_arm_check(char *failure_msg, uint8_t failure_msg_len) const override; void get_filter_status(nav_filter_status &status) const override; - void send_status_report(class GCS_MAVLINK &link) const override; + bool get_variances(float &velVar, float &posVar, float &hgtVar, Vector3f &magVar, float &tasVar) const override; // check for new data void update() override { diff --git a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_backend.h b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_backend.h index e5a22a87cbe44b..8ee9af82ce5944 100644 --- a/libraries/AP_ExternalAHRS/AP_ExternalAHRS_backend.h +++ b/libraries/AP_ExternalAHRS/AP_ExternalAHRS_backend.h @@ -41,7 +41,7 @@ class AP_ExternalAHRS_backend { virtual bool initialised(void) const = 0; virtual bool pre_arm_check(char *failure_msg, uint8_t failure_msg_len) const = 0; virtual void get_filter_status(nav_filter_status &status) const {} - virtual void send_status_report(class GCS_MAVLINK &link) const {} + virtual bool get_variances(float &velVar, float &posVar, float &hgtVar, Vector3f &magVar, float &tasVar) const { return false; } // Check for new data. // This is used when there's not a separate thread for EAHRS. @@ -73,6 +73,13 @@ class AP_ExternalAHRS_backend { */ bool in_fly_forward(void) const; + /* + scale factors for get_variances() to return normalised values from SI units + */ + const float vel_gate_scale = 0.2; + const float pos_gate_scale = 0.2; + const float hgt_gate_scale = 0.2; + private: AP_ExternalAHRS &frontend; }; diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubePilot-PPPGW/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/CubeNode-ETH/defaults.parm similarity index 100% rename from libraries/AP_HAL_ChibiOS/hwdef/CubePilot-PPPGW/defaults.parm rename to libraries/AP_HAL_ChibiOS/hwdef/CubeNode-ETH/defaults.parm diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubePilot-PPPGW/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeNode-ETH/hwdef-bl.dat similarity index 90% rename from libraries/AP_HAL_ChibiOS/hwdef/CubePilot-PPPGW/hwdef-bl.dat rename to libraries/AP_HAL_ChibiOS/hwdef/CubeNode-ETH/hwdef-bl.dat index 183c98b57b6a7b..6e6f3b172a874a 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubePilot-PPPGW/hwdef-bl.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeNode-ETH/hwdef-bl.dat @@ -1,4 +1,4 @@ -include ../CubePilot-CANMod/hwdef-bl.dat +include ../CubeNode/hwdef-bl.dat # Ethernet PC1 ETH_MDC ETH1 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubePilot-PPPGW/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeNode-ETH/hwdef.dat similarity index 87% rename from libraries/AP_HAL_ChibiOS/hwdef/CubePilot-PPPGW/hwdef.dat rename to libraries/AP_HAL_ChibiOS/hwdef/CubeNode-ETH/hwdef.dat index abf8516ffb6e17..6da6a16c7a131e 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubePilot-PPPGW/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeNode-ETH/hwdef.dat @@ -1,8 +1,10 @@ -include ../CubePilot-CANMod/hwdef.dat +include ../CubeNode/hwdef.dat # we need RTS/CTS for the PPP link undef PE0 undef PE1 +undef PC11 +undef HAL_PERIPH_ENABLE_IMU # need to use UART8 to get RTS/CTS PE1 UART8_TX UART8 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubePilot-CANMod/CubeNode_PinOut.pdf b/libraries/AP_HAL_ChibiOS/hwdef/CubeNode/CubeNode_PinOut.pdf similarity index 100% rename from libraries/AP_HAL_ChibiOS/hwdef/CubePilot-CANMod/CubeNode_PinOut.pdf rename to libraries/AP_HAL_ChibiOS/hwdef/CubeNode/CubeNode_PinOut.pdf diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubePilot-CANMod/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeNode/hwdef-bl.dat similarity index 100% rename from libraries/AP_HAL_ChibiOS/hwdef/CubePilot-CANMod/hwdef-bl.dat rename to libraries/AP_HAL_ChibiOS/hwdef/CubeNode/hwdef-bl.dat diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubePilot-CANMod/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeNode/hwdef.dat similarity index 88% rename from libraries/AP_HAL_ChibiOS/hwdef/CubePilot-CANMod/hwdef.dat rename to libraries/AP_HAL_ChibiOS/hwdef/CubeNode/hwdef.dat index f0d426ad8e10be..58464c44be7781 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubePilot-CANMod/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeNode/hwdef.dat @@ -70,12 +70,26 @@ define BOARD_PHY_ID MII_LAN8720_ID define BOARD_PHY_RMII define HAL_PERIPH_ENABLE_NETWORKING +# IMU +PC10 SPI3_SCK SPI3 +PC11 SPI3_MISO SPI3 +PC12 SPI3_MOSI SPI3 +PG15 IMU_CS CS + +SPIDEV icm45686 SPI3 DEVID4 IMU_CS MODE0 24*MHZ 24*MHZ + +IMU Invensensev3 SPI:icm45686 ROTATION_NONE + +define HAL_PERIPH_ENABLE_IMU + +# Periph GCS +define HAL_GCS_ENABLED 1 + ################################# # AP_Periph - configurations specific to this App ################################# define HAL_BARO_ALLOW_INIT_NO_BARO -define AP_INERTIALSENSOR_ENABLED 0 define AP_NETWORKING_MAX_INSTANCES 4 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-periph-heavy/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-periph-heavy/hwdef.dat index b2dfc2a1cf47ea..2aeea2620be870 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-periph-heavy/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-periph-heavy/hwdef.dat @@ -22,10 +22,9 @@ define HAL_PERIPH_ENABLE_MAG define HAL_PERIPH_ENABLE_BARO define HAL_PERIPH_ENABLE_RC_OUT define HAL_PERIPH_ENABLE_NOTIFY +define HAL_PERIPH_ENABLE_IMU define HAL_LOGGING_ENABLED TRUE -define AP_INERTIALSENSOR_ENABLED 1 - # single GPS and compass for peripherals define GPS_MAX_RECEIVERS 1 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-periph/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-periph/hwdef.dat index 1d094e4ebd2b5b..8afdcc21f1f2a4 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-periph/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange-periph/hwdef.dat @@ -22,8 +22,8 @@ define HAL_PERIPH_ENABLE_MAG define HAL_PERIPH_ENABLE_BARO define HAL_PERIPH_ENABLE_RC_OUT define HAL_PERIPH_ENABLE_NOTIFY +define HAL_PERIPH_ENABLE_IMU -define AP_INERTIALSENSOR_ENABLED 1 define AP_KDECAN_ENABLED 1 # single GPS and compass for peripherals diff --git a/libraries/AP_HAL_ChibiOS/hwdef/KakuteH7Mini/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/KakuteH7Mini/hwdef.dat index 0c2d49296f1464..434d61bdb3ea21 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/KakuteH7Mini/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/KakuteH7Mini/hwdef.dat @@ -136,6 +136,7 @@ DMA_NOSHARE SPI1* SPI4* # spi devices SPIDEV mpu6000 SPI4 DEVID1 MPU6000_CS MODE3 1*MHZ 4*MHZ +SPIDEV icm42688 SPI4 DEVID1 MPU6000_CS MODE3 2*MHZ 16*MHZ SPIDEV dataflash SPI1 DEVID1 FLASH_CS MODE3 32*MHZ 32*MHZ SPIDEV osd SPI2 DEVID4 MAX7456_CS MODE0 10*MHZ 10*MHZ @@ -146,8 +147,9 @@ define HAL_PROBE_EXTERNAL_I2C_COMPASSES define HAL_I2C_INTERNAL_MASK 0 define HAL_COMPASS_AUTO_ROT_DEFAULT 2 -# one IMU +# one IMU v1.1 mpu6000, v1.5 icm42688 IMU Invensense SPI:mpu6000 ROTATION_YAW_180 +IMU Invensensev3 SPI:icm42688 ROTATION_PITCH_180_YAW_90 # one BARO BARO BMP280 I2C:0:0x76 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/ZeroOneX6/README.md b/libraries/AP_HAL_ChibiOS/hwdef/ZeroOneX6/README.md index ff9a42c1f4e205..0c34e35e269be7 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/ZeroOneX6/README.md +++ b/libraries/AP_HAL_ChibiOS/hwdef/ZeroOneX6/README.md @@ -1,5 +1,7 @@ ## ZeroOneX6 Flight Controller The ZeroOne X6 is a flight controller manufactured by ZeroOne, which is based on the open-source FMU v6X architecture and Pixhawk Autopilot Bus open source specifications. +![Uploading ZeroOneX6.jpg…]() + ## Features: - Separate flight control core design. diff --git a/libraries/AP_HAL_ChibiOS/hwdef/ZeroOneX6/ZeroOneX6.jpg b/libraries/AP_HAL_ChibiOS/hwdef/ZeroOneX6/ZeroOneX6.jpg new file mode 100644 index 00000000000000..60a0558f1753b9 Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/ZeroOneX6/ZeroOneX6.jpg differ diff --git a/libraries/AP_HAL_ChibiOS/hwdef/ZeroOneX6/ZeroOneX6.png b/libraries/AP_HAL_ChibiOS/hwdef/ZeroOneX6/ZeroOneX6.png new file mode 100644 index 00000000000000..a2060ec4a1b70e Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/ZeroOneX6/ZeroOneX6.png differ diff --git a/libraries/AP_HAL_ChibiOS/hwdef/common/crashdump.c b/libraries/AP_HAL_ChibiOS/hwdef/common/crashdump.c index 8c60109e8b0cad..49e3d9f131a116 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/common/crashdump.c +++ b/libraries/AP_HAL_ChibiOS/hwdef/common/crashdump.c @@ -97,7 +97,7 @@ const CrashCatcherMemoryRegion* CrashCatcher_GetMemoryRegions(void); const CrashCatcherMemoryRegion* CrashCatcher_GetMemoryRegions(void) { // do a full dump if on serial - static CrashCatcherMemoryRegion regions[60] = { + static CrashCatcherMemoryRegion regions[80] = { {(uint32_t)&__ram0_start__, (uint32_t)&__ram0_end__, CRASH_CATCHER_BYTE}, {(uint32_t)&ch_system, (uint32_t)&ch_system + sizeof(ch_system), CRASH_CATCHER_BYTE}}; uint32_t total_dump_size = dump_size + buf_off + REMAINDER_MEM_REGION_SIZE; @@ -138,7 +138,7 @@ const CrashCatcherMemoryRegion* CrashCatcher_GetMemoryRegions(void) // log statically alocated memory int32_t bss_size = ((uint32_t)&__bss_end__) - ((uint32_t)&__bss_base__); int32_t available_space = stm32_crash_dump_max_size() - total_dump_size; - if (available_space < 0) { + if (available_space < 0 || curr_region >= (ARRAY_SIZE(regions) - 1)) { // we can't log anymore than this goto finalise; } @@ -157,7 +157,7 @@ const CrashCatcherMemoryRegion* CrashCatcher_GetMemoryRegions(void) // dump the Heap as well as much as we can int32_t heap_size = ((uint32_t)&__heap_end__) - ((uint32_t)&__heap_base__); available_space = stm32_crash_dump_max_size() - total_dump_size; - if (available_space < 0) { + if (available_space < 0 || curr_region >= (ARRAY_SIZE(regions) - 1)) { // we can't log anymore than this goto finalise; } diff --git a/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py b/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py index 674ea794b89071..935db8536f8bba 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py +++ b/libraries/AP_HAL_ChibiOS/hwdef/scripts/chibios_hwdef.py @@ -2404,6 +2404,8 @@ def write_GPIO_config(self, f): gpioset = set() for label in self.bylabel: p = self.bylabel[label] + if 'SPI' in label and ('RX' in label or 'TX' in label): + continue gpio = p.extra_value('GPIO', type=int) if gpio is None: continue diff --git a/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_bootloader.h b/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_bootloader.h index c3d8aa22c26b56..205a2002304d26 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_bootloader.h +++ b/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_bootloader.h @@ -15,11 +15,6 @@ #define HAL_GCS_ENABLED 0 #endif -// by default bootloaders don't use INS: -#ifndef AP_INERTIALSENSOR_ENABLED -#define AP_INERTIALSENSOR_ENABLED 0 -#endif - #define HAL_MAX_CAN_PROTOCOL_DRIVERS 0 // bootloader does not save temperature cals etc: diff --git a/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_periph.h b/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_periph.h index 77dd2b5262cc1c..4954c9be656eb5 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_periph.h +++ b/libraries/AP_HAL_ChibiOS/hwdef/scripts/defaults_periph.h @@ -114,10 +114,6 @@ #endif #endif -#ifndef AP_STATS_ENABLED -#define AP_STATS_ENABLED 0 -#endif - #ifndef AP_BATTERY_ESC_ENABLED #define AP_BATTERY_ESC_ENABLED 0 #endif @@ -270,9 +266,12 @@ #define RANGEFINDER_MAX_INSTANCES 1 #endif -// by default AP_Periphs don't use INS: -#ifndef AP_INERTIALSENSOR_ENABLED -#define AP_INERTIALSENSOR_ENABLED 0 +#ifndef HAL_ADSB_ENABLED +#define HAL_ADSB_ENABLED 0 +#endif + +#ifndef AP_AIS_ENABLED +#define AP_AIS_ENABLED 0 #endif // no fence by default in AP_Periph: @@ -351,6 +350,9 @@ #define AP_RCPROTOCOL_ENABLED defined(HAL_PERIPH_ENABLE_RCIN) #define AP_RTC_ENABLED defined(HAL_PERIPH_ENABLE_RTC) #define HAL_VISUALODOM_ENABLED defined(HAL_PERIPH_ENABLE_VISUALODOM) +#define AP_INERTIALSENSOR_ENABLED defined(HAL_PERIPH_ENABLE_IMU) +#define AP_INERTIALSENSOR_ALLOW_NO_SENSORS defined(HAL_PERIPH_ENABLE_IMU) +#define AP_INERTIALSENSOR_HARMONICNOTCH_ENABLED 0 #ifndef AP_BOOTLOADER_ALWAYS_ERASE #define AP_BOOTLOADER_ALWAYS_ERASE 1 diff --git a/libraries/AP_HAL_ESP32/RCOutput.cpp b/libraries/AP_HAL_ESP32/RCOutput.cpp index c456b3d8edad48..2c6a7ac5307432 100644 --- a/libraries/AP_HAL_ESP32/RCOutput.cpp +++ b/libraries/AP_HAL_ESP32/RCOutput.cpp @@ -12,7 +12,7 @@ * You should have received a copy of the GNU General Public License along * with this program. If not, see . * - * Code by Charles "Silvanosky" Villard and David "Buzz" Bussenschutt + * Code by Charles "Silvanosky" Villard, David "Buzz" Bussenschutt and Andrey "ARg" Romanov * */ @@ -27,6 +27,13 @@ #include +#include "esp_log.h" + +#define SERVO_TIMEBASE_RESOLUTION_HZ 1000000 // 1MHz, 1us per tick +#define SERVO_TIMEBASE_PERIOD 20000 // 20000 ticks, 20ms + +#define TAG "RCOut" + extern const AP_HAL::HAL& hal; using namespace ESP32; @@ -50,63 +57,90 @@ void RCOutput::init() { _max_channels = MAX_CHANNELS; - - //32 and 33 are special as they dont default to gpio, but can be if u disable their rtc setup: +#ifdef CONFIG_IDF_TARGET_ESP32 + // only on plain esp32 + // 32 and 33 are special as they dont default to gpio, but can be if u disable their rtc setup: rtc_gpio_deinit(GPIO_NUM_32); rtc_gpio_deinit(GPIO_NUM_33); +#endif printf("oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n"); printf("RCOutput::init() - channels available: %d \n",(int)MAX_CHANNELS); printf("oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n"); - static const mcpwm_io_signals_t signals[] = { - MCPWM0A, - MCPWM0B, - MCPWM1A, - MCPWM1B, - MCPWM2A, - MCPWM2B - }; - static const mcpwm_timer_t timers[] = { - MCPWM_TIMER_0, - MCPWM_TIMER_1, - MCPWM_TIMER_2 - - }; - static const mcpwm_unit_t units[] = { - MCPWM_UNIT_0, - MCPWM_UNIT_1 - }; - static const mcpwm_operator_t operators[] = { - MCPWM_OPR_A, - MCPWM_OPR_B - }; - - for (uint8_t i = 0; i < MAX_CHANNELS; ++i) { - auto unit = units[i/6]; - auto signal = signals[i % 6]; - auto timer = timers[i/2]; + const int MCPWM_CNT = SOC_MCPWM_OPERATORS_PER_GROUP*SOC_MCPWM_GENERATORS_PER_OPERATOR; + + for (int i = 0; i < MAX_CHANNELS; ++i) { + + mcpwm_timer_handle_t h_timer; + mcpwm_oper_handle_t h_oper; + + ESP_LOGI(TAG, "Initialize CH%02d", i+1); //Save struct infos pwm_out &out = pwm_group_list[i]; + out.group_id = i/MCPWM_CNT; out.gpio_num = outputs_pins[i]; - out.unit_num = unit; - out.timer_num = timer; - out.io_signal = signal; - out.op = operators[i%2]; out.chan = i; - //Setup gpio - mcpwm_gpio_init(unit, signal, outputs_pins[i]); - //Setup MCPWM module - mcpwm_config_t pwm_config; - pwm_config.frequency = 50; //frequency = 50Hz, i.e. for every servo motor time period should be 20ms - pwm_config.cmpr_a = 0; //duty cycle of PWMxA = 0 - pwm_config.cmpr_b = 0; //duty cycle of PWMxb = 0 - pwm_config.counter_mode = MCPWM_UP_COUNTER; - pwm_config.duty_mode = MCPWM_DUTY_MODE_0; - mcpwm_init(unit, timer, &pwm_config); - mcpwm_start(unit, timer); + if (0 == i % MCPWM_CNT) { + + mcpwm_timer_config_t timer_config = { + .group_id = out.group_id, + .clk_src = MCPWM_TIMER_CLK_SRC_DEFAULT, + .resolution_hz = SERVO_TIMEBASE_RESOLUTION_HZ, + .count_mode = MCPWM_TIMER_COUNT_MODE_UP, + .period_ticks = SERVO_TIMEBASE_PERIOD, + }; + + ESP_LOGI(TAG, "Initialize timer"); + ESP_ERROR_CHECK(mcpwm_new_timer(&timer_config, &h_timer)); + + out.freq = timer_config.resolution_hz/timer_config.period_ticks; + + ESP_LOGI(TAG, "Enable and start timer"); + ESP_ERROR_CHECK(mcpwm_timer_enable(h_timer)); + ESP_ERROR_CHECK(mcpwm_timer_start_stop(h_timer, MCPWM_TIMER_START_NO_STOP)); + } + out.h_timer = h_timer; + + + if (0 == i % SOC_MCPWM_GENERATORS_PER_OPERATOR) { + + ESP_LOGI(TAG, "Initialize operator"); + + mcpwm_operator_config_t operator_config = { + .group_id = out.group_id, // operator must be in the same group to the timer + }; + ESP_ERROR_CHECK(mcpwm_new_operator(&operator_config, &h_oper)); + } + out.h_oper = h_oper; + + ESP_LOGI(TAG, "Connect timer and operator"); + ESP_ERROR_CHECK(mcpwm_operator_connect_timer(out.h_oper, out.h_timer)); + + ESP_LOGI(TAG, "Create comparator and generator from the operator"); + mcpwm_comparator_config_t comparator_config = {}; + comparator_config.flags.update_cmp_on_tez = true; + + ESP_ERROR_CHECK(mcpwm_new_comparator(out.h_oper, &comparator_config, &out.h_cmpr)); + + mcpwm_generator_config_t generator_config = { + .gen_gpio_num = out.gpio_num, + }; + ESP_ERROR_CHECK(mcpwm_new_generator(out.h_oper, &generator_config, &out.h_gen)); + + ESP_ERROR_CHECK(mcpwm_comparator_set_compare_value(out.h_cmpr, 1500)); + out.value = 1500; + + ESP_LOGI(TAG, "Set generator action on timer and compare event"); + // go high on counter empty + ESP_ERROR_CHECK(mcpwm_generator_set_action_on_timer_event(out.h_gen, + MCPWM_GEN_TIMER_EVENT_ACTION(MCPWM_TIMER_DIRECTION_UP, MCPWM_TIMER_EVENT_EMPTY, MCPWM_GEN_ACTION_HIGH))); + // go low on compare threshold + ESP_ERROR_CHECK(mcpwm_generator_set_action_on_compare_event(out.h_gen, + MCPWM_GEN_COMPARE_EVENT_ACTION(MCPWM_TIMER_DIRECTION_UP, out.h_cmpr, MCPWM_GEN_ACTION_LOW))); + } _initialized = true; @@ -123,7 +157,8 @@ void RCOutput::set_freq(uint32_t chmask, uint16_t freq_hz) for (uint8_t i = 0; i < MAX_CHANNELS; i++) { if (chmask & 1 << i) { pwm_out &out = pwm_group_list[i]; - mcpwm_set_frequency(out.unit_num, out.timer_num, freq_hz); + ESP_ERROR_CHECK(mcpwm_timer_set_period( out.h_timer, SERVO_TIMEBASE_RESOLUTION_HZ/freq_hz)); + out.freq = freq_hz; } } } @@ -143,7 +178,7 @@ uint16_t RCOutput::get_freq(uint8_t chan) } pwm_out &out = pwm_group_list[chan]; - return mcpwm_get_frequency(out.unit_num, out.timer_num); + return out.freq; } void RCOutput::enable_ch(uint8_t chan) @@ -153,7 +188,7 @@ void RCOutput::enable_ch(uint8_t chan) } pwm_out &out = pwm_group_list[chan]; - mcpwm_start(out.unit_num, out.timer_num); + ESP_ERROR_CHECK(mcpwm_timer_start_stop(out.h_timer, MCPWM_TIMER_START_NO_STOP)); } void RCOutput::disable_ch(uint8_t chan) @@ -164,7 +199,7 @@ void RCOutput::disable_ch(uint8_t chan) write(chan, 0); pwm_out &out = pwm_group_list[chan]; - mcpwm_stop(out.unit_num, out.timer_num); + ESP_ERROR_CHECK(mcpwm_timer_start_stop(out.h_timer, MCPWM_TIMER_STOP_EMPTY)); } void RCOutput::write(uint8_t chan, uint16_t period_us) @@ -189,9 +224,7 @@ uint16_t RCOutput::read(uint8_t chan) } pwm_out &out = pwm_group_list[chan]; - double freq = mcpwm_get_frequency(out.unit_num, out.timer_num); - double dprc = mcpwm_get_duty(out.unit_num, out.timer_num, out.op); - return (1000000.0 * (dprc / 100.)) / freq; + return out.value; } void RCOutput::read(uint16_t *period_us, uint8_t len) @@ -248,7 +281,8 @@ void RCOutput::write_int(uint8_t chan, uint16_t period_us) } pwm_out &out = pwm_group_list[chan]; - mcpwm_set_duty_in_us(out.unit_num, out.timer_num, out.op, period_us); + ESP_ERROR_CHECK(mcpwm_comparator_set_compare_value(out.h_cmpr, period_us)); + out.value = period_us; } /* diff --git a/libraries/AP_HAL_ESP32/RCOutput.h b/libraries/AP_HAL_ESP32/RCOutput.h index cf70a8fb89d4e4..bdaf4f348322a9 100644 --- a/libraries/AP_HAL_ESP32/RCOutput.h +++ b/libraries/AP_HAL_ESP32/RCOutput.h @@ -12,7 +12,7 @@ * You should have received a copy of the GNU General Public License along * with this program. If not, see . * - * Code by Charles "Silvanosky" Villard and David "Buzz" Bussenschutt + * Code by Charles "Silvanosky" Villard, David "Buzz" Bussenschutt and Andrey "ARg" Romanov * */ @@ -21,10 +21,12 @@ #include #include "HAL_ESP32_Namespace.h" -#include "driver/mcpwm.h" #define HAL_PARAM_DEFAULTS_PATH nullptr #include +#include "driver/gpio.h" +#include "driver/mcpwm_prelude.h" + namespace ESP32 { @@ -96,13 +98,19 @@ class RCOutput : public AP_HAL::RCOutput private: + struct pwm_out { - int gpio_num; - mcpwm_unit_t unit_num; - mcpwm_timer_t timer_num; - mcpwm_io_signals_t io_signal; - mcpwm_operator_t op; - uint8_t chan; + + uint8_t chan; + uint8_t gpio_num; + uint8_t group_id; + int freq; + int value; + + mcpwm_timer_handle_t h_timer; + mcpwm_oper_handle_t h_oper; + mcpwm_cmpr_handle_t h_cmpr; + mcpwm_gen_handle_t h_gen; }; diff --git a/libraries/AP_HAL_ESP32/WiFiDriver.cpp b/libraries/AP_HAL_ESP32/WiFiDriver.cpp index f1c7eb9e972765..fbc9e85ddb8391 100644 --- a/libraries/AP_HAL_ESP32/WiFiDriver.cpp +++ b/libraries/AP_HAL_ESP32/WiFiDriver.cpp @@ -56,10 +56,10 @@ void WiFiDriver::_begin(uint32_t b, uint16_t rxS, uint16_t txS) #define FASTCPU 0 #define SLOWCPU 1 - if (xTaskCreatePinnedToCore(_wifi_thread, "APM_WIFI1", Scheduler::WIFI_SS1, this, Scheduler::WIFI_PRIO1, &_wifi_task_handle,FASTCPU) != pdPASS) { - hal.console->printf("FAILED to create task _wifi_thread on FASTCPU\n"); + if (xTaskCreatePinnedToCore(_wifi_thread, "APM_WIFI1", Scheduler::WIFI_SS1, this, Scheduler::WIFI_PRIO1, &_wifi_task_handle, SLOWCPU) != pdPASS) { + hal.console->printf("FAILED to create task _wifi_thread on SLOWCPU\n"); } else { - hal.console->printf("OK created task _wifi_thread for TCP with PORT 5760 on FASTCPU\n"); + hal.console->printf("OK created task _wifi_thread for TCP with PORT 5760 on SLOWCPU\n"); } _readbuf.set_size(RX_BUF_SIZE); diff --git a/libraries/AP_HAL_ESP32/WiFiUdpDriver.cpp b/libraries/AP_HAL_ESP32/WiFiUdpDriver.cpp index d6a247e13c5d63..2d97b4f4910081 100644 --- a/libraries/AP_HAL_ESP32/WiFiUdpDriver.cpp +++ b/libraries/AP_HAL_ESP32/WiFiUdpDriver.cpp @@ -59,10 +59,10 @@ void WiFiUdpDriver::_begin(uint32_t b, uint16_t rxS, uint16_t txS) #define FASTCPU 0 #define SLOWCPU 1 - if (xTaskCreatePinnedToCore(_wifi_thread2, "APM_WIFI2", Scheduler::WIFI_SS2, this, Scheduler::WIFI_PRIO2, &_wifi_task_handle,FASTCPU) != pdPASS) { - hal.console->printf("FAILED to create task _wifi_thread2 on FASTCPU\n"); + if (xTaskCreatePinnedToCore(_wifi_thread2, "APM_WIFI2", Scheduler::WIFI_SS2, this, Scheduler::WIFI_PRIO2, &_wifi_task_handle, SLOWCPU) != pdPASS) { + hal.console->printf("FAILED to create task _wifi_thread2 on SLOWCPU\n"); } else { - hal.console->printf("OK created task _wifi_thread2 for UDP on port 14550 on FASTCPU\n"); //UDP_PORT + hal.console->printf("OK created task _wifi_thread2 for UDP on port 14550 on SLOWCPU\n"); //UDP_PORT } _readbuf.set_size(RX_BUF_SIZE); diff --git a/libraries/AP_HAL_QURT/packaging/.gitignore b/libraries/AP_HAL_QURT/packaging/.gitignore new file mode 100644 index 00000000000000..eaa90ca25d79ca --- /dev/null +++ b/libraries/AP_HAL_QURT/packaging/.gitignore @@ -0,0 +1,5 @@ +*.deb +pkg/DEB +pkg/data +pkg/control/control + diff --git a/libraries/AP_HAL_QURT/packaging/make_package.sh b/libraries/AP_HAL_QURT/packaging/make_package.sh new file mode 100755 index 00000000000000..241f4e93c2f3ac --- /dev/null +++ b/libraries/AP_HAL_QURT/packaging/make_package.sh @@ -0,0 +1,100 @@ +#!/bin/bash + +set -e # exit on error to prevent bad ipk from being generated + +[ $# -eq 2 ] || { + echo "Usage: make_package.sh VEHICLETYPE VEHICLE_BINARY" + exit 1 +} + +VEHICLETYPE="$1" +VEHICLE_BINARY="$2" + +[ -d $VEHICLETYPE ] || { + echo "Vehicle directory $VEHICLETYPE not found" + exit 1 +} + +# get version numbers +FW_MAJOR=$(grep FW_MAJOR $VEHICLETYPE/version.h | cut -d' ' -f3) +FW_MINOR=$(grep FW_MINOR $VEHICLETYPE/version.h | cut -d' ' -f3) +FW_PATCH=$(grep FW_PATCH $VEHICLETYPE/version.h | cut -d' ' -f3) +GIT_VERSION=$(git rev-parse HEAD | cut -c1-8) + +VERSION="${FW_MAJOR}.${FW_MINOR}.${FW_PATCH}-${GIT_VERSION}" + +cd libraries/AP_HAL_QURT/packaging + +cat pkg/control/control.in | sed "s/FW_VERSION/$VERSION/g" > pkg/control/control + +echo "Package Name: " $PACKAGE +echo "version Number: " $VERSION + +################################################################################ +# variables +################################################################################ +PACKAGE=$(cat pkg/control/control | grep "Package" | cut -d' ' -f 2) + +DATA_DIR=pkg/data +CONTROL_DIR=pkg/control +DEB_DIR=pkg/DEB + +################################################################################ +# start with a little cleanup to remove old files +################################################################################ +# remove data directory where 'make install' installed to +rm -rf $DATA_DIR +mkdir $DATA_DIR + +# remove deb packaging folders +rm -rf $DEB_DIR + +################################################################################ +## install compiled stuff into data directory +################################################################################ + +if [ -f ../../../build/QURT/ardupilot ] && \ + [ -f ../../../build/QURT/bin/$VEHICLE_BINARY ]; then + + # Copy the SLPI DSP AP library + mkdir -p $DATA_DIR/usr/lib/rfsa/adsp + cp ../../../build/QURT/bin/$VEHICLE_BINARY $DATA_DIR/usr/lib/rfsa/adsp/ArduPilot.so + + # Install executables + mkdir -p $DATA_DIR/usr/bin + cp ../../../build/QURT/ardupilot $DATA_DIR/usr/bin + cp ../ap_host/service/voxl-ardupilot $DATA_DIR/usr/bin + chmod a+x $DATA_DIR/usr/bin/ardupilot + chmod a+x $DATA_DIR/usr/bin/voxl-ardupilot + + # Create necessary directories for ArduPilot operation + mkdir -p $DATA_DIR/data/APM + + # Install default parameter files + cp ../../../Tools/Frame_params/ModalAI/*.parm $DATA_DIR/data/APM + + mkdir -p $DATA_DIR/etc/systemd/system/ + cp ../ap_host/service/voxl-ardupilot.service $DATA_DIR/etc/systemd/system/ + +else + echo "Error: Build artifacts not found" + exit 1 +fi + +################################################################################ +# make a DEB package +################################################################################ + +echo "starting building Debian Package" + +## make a folder dedicated to Deb building and copy the requires debian-binary file in +mkdir $DEB_DIR + +## copy the control stuff in +cp -rf $CONTROL_DIR/ $DEB_DIR/DEBIAN +cp -rf $DATA_DIR/* $DEB_DIR + +DEB_NAME="${PACKAGE}_${VEHICLETYPE}_${VERSION}_arm64.deb" +dpkg-deb --root-owner-group --build "${DEB_DIR}" "${DEB_NAME}" + +echo "DONE" diff --git a/libraries/AP_HAL_QURT/packaging/pkg/control/control.in b/libraries/AP_HAL_QURT/packaging/pkg/control/control.in new file mode 100644 index 00000000000000..1ad0196bdf57b2 --- /dev/null +++ b/libraries/AP_HAL_QURT/packaging/pkg/control/control.in @@ -0,0 +1,8 @@ +Package: voxl-ardupilot +Version: FW_VERSION +Section: devel +Priority: optional +Architecture: arm64 +Depends: modalai-slpi(>=1.1.19), libslpi-link +Maintainer: Eric Katzfey +Description: ModalAI ArduPilot flight controller diff --git a/libraries/AP_HAL_QURT/packaging/pkg/control/postinst b/libraries/AP_HAL_QURT/packaging/pkg/control/postinst new file mode 100755 index 00000000000000..04f668085e805a --- /dev/null +++ b/libraries/AP_HAL_QURT/packaging/pkg/control/postinst @@ -0,0 +1,39 @@ +#!/bin/bash + +# Create directory for APM use +cd /data +mkdir -p APM +chown system:system APM + +# Make sure the run scripts are executable +cd /usr/bin +chmod a+x voxl-ardupilot + +# Check to see if a DSP test signature exists +if /bin/ls /usr/lib/rfsa/adsp/testsig-*.so &> /dev/null; then + /bin/echo "Found DSP signature file" +else + /bin/echo "Could not find DSP signature file" + # Look for the DSP signature generation script + if [ -f /share/modalai/qrb5165-slpi-test-sig/generate-test-sig.sh ]; then + /bin/echo "Attempting to generate the DSP signature file" + # Automatically generate the test signature so that px4 can run on SLPI DSP + /share/modalai/qrb5165-slpi-test-sig/generate-test-sig.sh + else + /bin/echo "Could not find the DSP signature file generation script" + fi +fi + +# Always flush all changes to disk +/bin/sync + +cd - + +# try to reload services, but don't fail if it can't +set +e +if [ -f /bin/systemctl ]; then + systemctl daemon-reload +fi + +# exit 0 even if systemctl failed +exit 0 diff --git a/libraries/AP_InertialSensor/AP_InertialSensor.cpp b/libraries/AP_InertialSensor/AP_InertialSensor.cpp index f717d23b81d693..8c6f05fd1e6789 100644 --- a/libraries/AP_InertialSensor/AP_InertialSensor.cpp +++ b/libraries/AP_InertialSensor/AP_InertialSensor.cpp @@ -854,9 +854,11 @@ void AP_InertialSensor::_start_backends() _backends[i]->start(); } +#if AP_INERTIALSENSOR_ALLOW_NO_SENSORS if (_gyro_count == 0 || _accel_count == 0) { AP_HAL::panic("INS needs at least 1 gyro and 1 accel"); } +#endif // clear IDs for unused sensor instances for (uint8_t i=get_accel_count(); i 0) { init_gyro(); } @@ -1324,8 +1326,10 @@ AP_InertialSensor::detect_backends(void) #else DEV_PRINTF("INS: unable to initialise driver\n"); GCS_SEND_TEXT(MAV_SEVERITY_DEBUG, "INS: unable to initialise driver"); + #if !AP_INERTIALSENSOR_ALLOW_NO_SENSORS AP_BoardConfig::config_error("INS: unable to initialise driver"); #endif + #endif } } diff --git a/libraries/AP_InertialSensor/AP_InertialSensor_config.h b/libraries/AP_InertialSensor/AP_InertialSensor_config.h index d4775b7219133a..5ad27d03003346 100644 --- a/libraries/AP_InertialSensor/AP_InertialSensor_config.h +++ b/libraries/AP_InertialSensor/AP_InertialSensor_config.h @@ -51,6 +51,10 @@ #define AP_INERTIALSENSOR_HARMONICNOTCH_ENABLED AP_INERTIALSENSOR_ENABLED #endif +#ifndef AP_INERTIALSENSOR_ALLOW_NO_SENSORS +#define AP_INERTIALSENSOR_ALLOW_NO_SENSORS 0 +#endif + #if AP_INERTIALSENSOR_HARMONICNOTCH_ENABLED #ifndef HAL_INS_NUM_HARMONIC_NOTCH_FILTERS #define HAL_INS_NUM_HARMONIC_NOTCH_FILTERS 2 diff --git a/libraries/AP_KDECAN/AP_KDECAN.cpp b/libraries/AP_KDECAN/AP_KDECAN.cpp index bf3272519c71bd..521489abbf4edd 100644 --- a/libraries/AP_KDECAN/AP_KDECAN.cpp +++ b/libraries/AP_KDECAN/AP_KDECAN.cpp @@ -235,14 +235,14 @@ void AP_KDECAN_Driver::loop() for (uint8_t i=0; i= TELEMETRY_INTERVAL_MS) { - if (send_packet(TELEMETRY_OBJ_ADDR, BROADCAST_NODE_ID, 10)) { + if (send_packet(TELEMETRY_OBJ_ADDR, BROADCAST_NODE_ID, 10000)) { _telemetry.timer_ms = now_ms; } } @@ -256,7 +256,7 @@ void AP_KDECAN_Driver::loop() broadcast_esc_info_next_interval_ms = 1000; } - if (send_packet(ESC_INFO_OBJ_ADDR, BROADCAST_NODE_ID, 100)) { + if (send_packet(ESC_INFO_OBJ_ADDR, BROADCAST_NODE_ID, 100000)) { _init.detected_bitmask_ms = now_ms; } } @@ -264,13 +264,13 @@ void AP_KDECAN_Driver::loop() } // while true } -bool AP_KDECAN_Driver::send_packet_uint16(const uint8_t address, const uint8_t dest_id, const uint32_t timeout_ms, const uint16_t data) +bool AP_KDECAN_Driver::send_packet_uint16(const uint8_t address, const uint8_t dest_id, const uint32_t timeout_us, const uint16_t data) { const uint16_t data_be16 = htobe16(data); - return send_packet(address, dest_id, timeout_ms, (uint8_t*)&data_be16, 2); + return send_packet(address, dest_id, timeout_us, (uint8_t*)&data_be16, 2); } -bool AP_KDECAN_Driver::send_packet(const uint8_t address, const uint8_t dest_id, const uint32_t timeout_ms, const uint8_t *data, const uint8_t data_len) +bool AP_KDECAN_Driver::send_packet(const uint8_t address, const uint8_t dest_id, const uint32_t timeout_us, const uint8_t *data, const uint8_t data_len) { // broadcast telemetry request frame const frame_id_t id { @@ -285,7 +285,6 @@ bool AP_KDECAN_Driver::send_packet(const uint8_t address, const uint8_t dest_id, AP_HAL::CANFrame frame = AP_HAL::CANFrame((id.value | AP_HAL::CANFrame::FlagEFF), data, data_len, false); - const uint64_t timeout_us = uint64_t(timeout_ms) * 1000UL; return write_frame(frame, timeout_us); } diff --git a/libraries/AP_KDECAN/AP_KDECAN.h b/libraries/AP_KDECAN/AP_KDECAN.h index 635b100bbd990e..70ba23d984a274 100644 --- a/libraries/AP_KDECAN/AP_KDECAN.h +++ b/libraries/AP_KDECAN/AP_KDECAN.h @@ -56,8 +56,8 @@ class AP_KDECAN_Driver : public CANSensor // handler for incoming frames void handle_frame(AP_HAL::CANFrame &frame) override; - bool send_packet_uint16(const uint8_t address, const uint8_t dest_id, const uint32_t timeout_ms, const uint16_t data); - bool send_packet(const uint8_t address, const uint8_t dest_id, const uint32_t timeout_ms, const uint8_t *data = nullptr, const uint8_t data_len = 0); + bool send_packet_uint16(const uint8_t address, const uint8_t dest_id, const uint32_t timeout_us, const uint16_t data); + bool send_packet(const uint8_t address, const uint8_t dest_id, const uint32_t timeout_us, const uint8_t *data = nullptr, const uint8_t data_len = 0); void loop(); diff --git a/libraries/AP_Logger/LogStructure.h b/libraries/AP_Logger/LogStructure.h index a4f853e2402574..ae5197297c373e 100644 --- a/libraries/AP_Logger/LogStructure.h +++ b/libraries/AP_Logger/LogStructure.h @@ -1218,7 +1218,7 @@ LOG_STRUCTURE_FROM_AVOIDANCE \ "TERR","QBLLHffHHf","TimeUS,Status,Lat,Lng,Spacing,TerrH,CHeight,Pending,Loaded,ROfs", "s-DU-mm--m", "F-GG-00--0", true }, \ LOG_STRUCTURE_FROM_ESC_TELEM \ { LOG_CSRV_MSG, sizeof(log_CSRV), \ - "CSRV","QBfffBfffffB","TimeUS,Id,Pos,Force,Speed,Pow,PosCmd,V,A,MotT,PCBT,Err", "s#---%dvAOO-", "F-000000000-", true }, \ + "CSRV","QBfffBfffffB","TimeUS,Id,Pos,Force,Speed,Pow,PosCmd,V,A,MotT,PCBT,Err", "s#---%dvAOO-", "F-000000000-", false }, \ { LOG_PIDR_MSG, sizeof(log_PID), \ "PIDR", PID_FMT, PID_LABELS, PID_UNITS, PID_MULTS, true }, \ { LOG_PIDP_MSG, sizeof(log_PID), \ diff --git a/libraries/AP_Motors/AP_MotorsHeli.cpp b/libraries/AP_Motors/AP_MotorsHeli.cpp index d81da48b1a9222..506e4af32073bc 100644 --- a/libraries/AP_Motors/AP_MotorsHeli.cpp +++ b/libraries/AP_Motors/AP_MotorsHeli.cpp @@ -18,6 +18,7 @@ #include "AP_MotorsHeli.h" #include #include +#include extern const AP_HAL::HAL& hal; @@ -147,6 +148,10 @@ const AP_Param::GroupInfo AP_MotorsHeli::var_info[] = { // @User: Standard AP_GROUPINFO("COL_LAND_MIN", 32, AP_MotorsHeli, _collective_land_min_deg, AP_MOTORS_HELI_COLLECTIVE_LAND_MIN), + // @Group: RSC_AROT_ + // @Path: ../AC_Autorotation/RSC_Autorotation.cpp + AP_SUBGROUPINFO(_main_rotor.autorotation, "RSC_AROT_", 33, AP_MotorsHeli, RSC_Autorotation), + AP_GROUPEND }; @@ -554,6 +559,10 @@ bool AP_MotorsHeli::arming_checks(size_t buflen, char *buffer) const return false; } + if (!_main_rotor.autorotation.arming_checks(buflen, buffer)) { + return false; + } + return true; } @@ -606,7 +615,7 @@ void AP_MotorsHeli::set_rotor_runup_complete(bool new_value) #if HAL_LOGGING_ENABLED if (!_heliflags.rotor_runup_complete && new_value) { LOGGER_WRITE_EVENT(LogEvent::ROTOR_RUNUP_COMPLETE); - } else if (_heliflags.rotor_runup_complete && !new_value && !_heliflags.in_autorotation) { + } else if (_heliflags.rotor_runup_complete && !new_value && !_main_rotor.in_autorotation()) { LOGGER_WRITE_EVENT(LogEvent::ROTOR_SPEED_BELOW_CRITICAL); } #endif @@ -623,3 +632,19 @@ float AP_MotorsHeli::get_cyclic_angle_scaler(void) const { return ((float)(_collective_max-_collective_min))*1e-3 * (_collective_max_deg.get() - _collective_min_deg.get()) * 2.0; } #endif + +// Helper function for param conversions to be done in motors class +void AP_MotorsHeli::heli_motors_param_conversions(void) +{ + // PARAMETER_CONVERSION - Added: Sep-2024 + // move autorotation related parameters within the RSC into their own class + const AP_Param::ConversionInfo rsc_arot_conversion_info[] = { + { 90, 108096, AP_PARAM_INT8, "H_RSC_AROT_ENBL" }, + { 90, 104000, AP_PARAM_INT8, "H_RSC_AROT_RAMP" }, + { 90, 112192, AP_PARAM_INT16, "H_RSC_AROT_IDLE" }, + }; + uint8_t table_size = ARRAY_SIZE(rsc_arot_conversion_info); + for (uint8_t i=0; i #include +// default main rotor speed (ch8 out) as a number from 0 ~ 100 +#define AP_MOTORS_HELI_RSC_SETPOINT 70 + +// default main rotor critical speed +#define AP_MOTORS_HELI_RSC_CRITICAL 50 + +// RSC output defaults +#define AP_MOTORS_HELI_RSC_IDLE_DEFAULT 0 + +// default main rotor ramp up time in seconds +#define AP_MOTORS_HELI_RSC_RAMP_TIME 1 // 1 second to ramp output to main rotor ESC to setpoint +#define AP_MOTORS_HELI_RSC_RUNUP_TIME 10 // 10 seconds for rotor to reach full speed + +// Throttle Curve Defaults +#define AP_MOTORS_HELI_RSC_THRCRV_0_DEFAULT 25 +#define AP_MOTORS_HELI_RSC_THRCRV_25_DEFAULT 32 +#define AP_MOTORS_HELI_RSC_THRCRV_50_DEFAULT 38 +#define AP_MOTORS_HELI_RSC_THRCRV_75_DEFAULT 50 +#define AP_MOTORS_HELI_RSC_THRCRV_100_DEFAULT 100 + +// RSC governor defaults +#define AP_MOTORS_HELI_RSC_GOVERNOR_RANGE_DEFAULT 100 + + extern const AP_HAL::HAL& hal; const AP_Param::GroupInfo AP_MotorsHeli_RSC::var_info[] = { @@ -194,30 +218,11 @@ const AP_Param::GroupInfo AP_MotorsHeli_RSC::var_info[] = { // @User: Standard AP_GROUPINFO("GOV_TORQUE", 24, AP_MotorsHeli_RSC, _governor_torque, 30), - // @Param: AROT_ENG_T - // @DisplayName: Time for in-flight power re-engagement - // @Description: amount of seconds to move throttle output from idle to throttle curve position during manual autorotations - // @Range: 0 10 - // @Units: % - // @Increment: 0.5 - // @User: Standard - AP_GROUPINFO("AROT_ENG_T", 25, AP_MotorsHeli_RSC, _rsc_arot_engage_time, AP_MOTORS_HELI_RSC_AROT_ENGAGE_TIME), + // 25 was AROT_ENG_T, has been moved to AROT_RAMP in RSC autorotation sub group - // @Param: AROT_MN_EN - // @DisplayName: Enable Manual Autorotations - // @Description: Allows you to enable (1) or disable (0) the manual autorotation capability. - // @Values: 0:Disabled,1:Enabled - // @User: Standard - AP_GROUPINFO("AROT_MN_EN", 26, AP_MotorsHeli_RSC, _rsc_arot_man_enable, 0), + // 26 was AROT_MN_EN, moved to H_RSC_AROT_ENBL in RSC autorotation sub group - // @Param: AROT_IDLE - // @DisplayName: Idle Throttle Percentage during Autorotation - // @Description: Idle throttle used for all RSC modes. For external governors, this would be set to signal it to enable fast spool-up, when bailing out of an autorotation. Set 0 to disable. If also using a tail rotor of type DDVP with external governor then this value must lie within the autorotation window of both governors. - // @Range: 0 40 - // @Units: % - // @Increment: 1 - // @User: Standard - AP_GROUPINFO("AROT_IDLE", 27, AP_MotorsHeli_RSC, _arot_idle_output, AP_MOTORS_HELI_RSC_AROT_IDLE), + // 27 was AROT_IDLE, moved to RSC autorotation sub group AP_GROUPEND }; @@ -247,6 +252,8 @@ void AP_MotorsHeli_RSC::set_throttle_curve() // output - update value to send to ESC/Servo void AP_MotorsHeli_RSC::output(RotorControlState state) { + // Store rsc state for logging + _rsc_state = state; // _rotor_RPM available to the RSC output #if AP_RPM_ENABLED const AP_RPM *rpm = AP_RPM::get_singleton(); @@ -289,9 +296,9 @@ void AP_MotorsHeli_RSC::output(RotorControlState state) _governor_fault = false; //turbine start flag on _starting = true; - _autorotating = false; - _bailing_out = false; - _gov_bailing_out = false; + + // ensure we always deactivate the autorotation state if we disarm + autorotation.set_active(false, true); // ensure _idle_throttle not set to invalid value _idle_throttle = get_idle_output(); @@ -309,44 +316,36 @@ void AP_MotorsHeli_RSC::output(RotorControlState state) governor_reset(); _autothrottle = false; _governor_fault = false; - if (_in_autorotation) { - // if in autorotation, set the output to idle for autorotation. This will tell an external governor to use fast ramp for spool up. - // if autorotation idle is set to zero then default to the RSC idle value. - if (_arot_idle_output == 0) { - _idle_throttle = get_idle_output(); - } else { - _idle_throttle = constrain_float( get_arot_idle_output(), 0.0f, 0.4f); - } - if (!_autorotating) { - GCS_SEND_TEXT(MAV_SEVERITY_CRITICAL, "Autorotation"); - _autorotating =true; - } - } else { - if (_autorotating) { - GCS_SEND_TEXT(MAV_SEVERITY_CRITICAL, "Autorotation Stopped"); - _autorotating =false; - } - // set rotor control speed to idle speed parameter, this happens instantly and ignores ramping - if (_turbine_start && _starting == true ) { - _idle_throttle += 0.001f; - if (_control_output >= 1.0f) { - _idle_throttle = get_idle_output(); - GCS_SEND_TEXT(MAV_SEVERITY_INFO, "Turbine startup"); - _starting = false; - } - } else { + + // turbine start sequence + if (_turbine_start && _starting == true ) { + _idle_throttle += 0.001f; + if (_control_output >= 1.0f) { _idle_throttle = get_idle_output(); - if (_fast_idle_timer > 0.0) { - // running at fast idle for engine cool down - _idle_throttle *= 1.5; - _fast_idle_timer -= dt; - } + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "Turbine startup"); + _starting = false; } - // this resets the bailout feature if the aircraft has landed. - _use_bailout_ramp = false; - _bailing_out = false; - _gov_bailing_out = false; + _control_output = _idle_throttle; + break; + } + + // all other idle throttle functions below this require idle throttle to be reset to H_RSC_IDLE on each call + _idle_throttle = get_idle_output(); + + // check if we need to use autorotation idle throttle + if (autorotation.get_idle_throttle(_idle_throttle)) { + // if we are here then we are autorotating + _control_output = _idle_throttle; + break; } + + // check if we need to use engine cooldown + if (_fast_idle_timer > 0.0) { + // running at fast idle for engine cool down + _idle_throttle *= 1.5; + _fast_idle_timer -= dt; + } + _control_output = _idle_throttle; break; @@ -365,7 +364,6 @@ void AP_MotorsHeli_RSC::output(RotorControlState state) } // if turbine engine started without using start sequence, set starting flag just to be sure it can't be triggered when back in idle _starting = false; - _autorotating = false; if ((_control_mode == ROTOR_CONTROL_MODE_PASSTHROUGH) || (_control_mode == ROTOR_CONTROL_MODE_SETPOINT)) { // set control rotor speed to ramp slewed value between idle and desired speed @@ -396,38 +394,20 @@ void AP_MotorsHeli_RSC::output(RotorControlState state) // update_rotor_ramp - slews rotor output scalar between 0 and 1, outputs float scalar to _rotor_ramp_output void AP_MotorsHeli_RSC::update_rotor_ramp(float rotor_ramp_input, float dt) { - int8_t ramp_time; - int8_t bailout_time; - // sanity check ramp time and enable bailout if set - if (_ramp_time <= 0) { - ramp_time = 1; - } else { - ramp_time = _ramp_time; - } + float ramp_time = MAX(float(_ramp_time.get()), 1.0); - if (_rsc_arot_engage_time <= 0) { - bailout_time = 1; - } else { - bailout_time = _rsc_arot_engage_time; + // check if we need to use the bailout ramp up rate for the autorotation case + if (autorotation.bailing_out()) { + ramp_time = autorotation.get_bailout_ramp(); } // ramp output upwards towards target if (_rotor_ramp_output < rotor_ramp_input) { - if (_use_bailout_ramp) { - if (!_bailing_out) { - GCS_SEND_TEXT(MAV_SEVERITY_CRITICAL, "bailing_out"); - _bailing_out = true; - if (_control_mode == ROTOR_CONTROL_MODE_AUTOTHROTTLE) {_gov_bailing_out = true;} - } - _rotor_ramp_output += (dt / bailout_time); - } else { - _rotor_ramp_output += (dt / ramp_time); - } - if (_rotor_ramp_output > rotor_ramp_input) { - _rotor_ramp_output = rotor_ramp_input; - _bailing_out = false; - _use_bailout_ramp = false; - } + _rotor_ramp_output += (dt / ramp_time); + + // Do not allow output to exceed requested input + _rotor_ramp_output = MIN(_rotor_ramp_output, rotor_ramp_input); + } else { // ramping down happens instantly _rotor_ramp_output = rotor_ramp_input; @@ -437,14 +417,13 @@ void AP_MotorsHeli_RSC::update_rotor_ramp(float rotor_ramp_input, float dt) // update_rotor_runup - function to slew rotor runup scalar, outputs float scalar to _rotor_runup_ouptut void AP_MotorsHeli_RSC::update_rotor_runup(float dt) { - int8_t runup_time = _runup_time; + float runup_time = _runup_time; // sanity check runup time runup_time = MAX(_ramp_time+1,runup_time); - // adjust rotor runup when bailing out - if (_use_bailout_ramp) { - // maintain same delta as set in parameters - runup_time = _runup_time-_ramp_time+1; + // adjust rotor runup when in autorotation or bailing out + if (in_autorotation()) { + runup_time = autorotation.get_runup_time(); } // protect against divide by zero @@ -465,7 +444,7 @@ void AP_MotorsHeli_RSC::update_rotor_runup(float dt) } // if in autorotation, don't let rotor_runup_output go less than critical speed to keep // runup complete flag from being set to false - if (_autorotating && !rotor_speed_above_critical()) { + if (in_autorotation() && !rotor_speed_above_critical()) { _rotor_runup_output = get_critical_speed(); } @@ -574,7 +553,7 @@ void AP_MotorsHeli_RSC::autothrottle_run() } else if (!_governor_engage && !_governor_fault) { // if governor is not engaged and rotor is overspeeding by more than governor range due to // misconfigured throttle curve or stuck throttle, set a fault and governor will not operate - if (_rotor_rpm > (_governor_rpm + _governor_range) && !_gov_bailing_out) { + if (_rotor_rpm > (_governor_rpm + _governor_range) && !autorotation.bailing_out()) { _governor_fault = true; governor_reset(); GCS_SEND_TEXT(MAV_SEVERITY_WARNING, "Governor Fault: Rotor Overspeed"); @@ -582,7 +561,7 @@ void AP_MotorsHeli_RSC::autothrottle_run() // when performing power recovery from autorotation, this waits for user to load rotor in order to // engage the governor - } else if (_rotor_rpm > _governor_rpm && _gov_bailing_out) { + } else if (_rotor_rpm > _governor_rpm && autorotation.bailing_out()) { _governor_output = 0.0f; // torque rise limiter accelerates rotor to the reference speed @@ -593,7 +572,6 @@ void AP_MotorsHeli_RSC::autothrottle_run() if (_rotor_rpm >= ((float)_governor_rpm - torque_ref_error_rpm)) { _governor_engage = true; _autothrottle = true; - _gov_bailing_out = false; GCS_SEND_TEXT(MAV_SEVERITY_NOTICE, "Governor Engaged"); } } else { @@ -629,18 +607,29 @@ void AP_MotorsHeli_RSC::write_log(void) const // @Field: ERRPM: Estimated rotor speed // @Field: Gov: Governor Output // @Field: Throt: Throttle output + // @Field: Ramp: throttle ramp up + // @Field: Stat: RSC state // Write to data flash log AP::logger().WriteStreaming("HRSC", - "TimeUS,I,DRRPM,ERRPM,Gov,Throt", - "s#----", - "F-----", - "QBffff", + "TimeUS,I,DRRPM,ERRPM,Gov,Throt,Ramp,Stat", + "s#------", + "F-------", + "QBfffffB", AP_HAL::micros64(), _instance, get_desired_speed(), _rotor_runup_output, _governor_output, - get_control_output()); + get_control_output(), + _rotor_ramp_output, + uint8_t(_rsc_state)); } #endif + + +// considered to be "in an autorotation" if active or bailing out +bool AP_MotorsHeli_RSC::in_autorotation(void) const +{ + return autorotation.active() || autorotation.bailing_out(); +} diff --git a/libraries/AP_Motors/AP_MotorsHeli_RSC.h b/libraries/AP_Motors/AP_MotorsHeli_RSC.h index 353f167f9a07d8..47fa68f8ad180b 100644 --- a/libraries/AP_Motors/AP_MotorsHeli_RSC.h +++ b/libraries/AP_Motors/AP_MotorsHeli_RSC.h @@ -5,31 +5,7 @@ #include #include #include - -// default main rotor speed (ch8 out) as a number from 0 ~ 100 -#define AP_MOTORS_HELI_RSC_SETPOINT 70 - -// default main rotor critical speed -#define AP_MOTORS_HELI_RSC_CRITICAL 50 - -// RSC output defaults -#define AP_MOTORS_HELI_RSC_IDLE_DEFAULT 0 - -// default main rotor ramp up time in seconds -#define AP_MOTORS_HELI_RSC_RAMP_TIME 1 // 1 second to ramp output to main rotor ESC to setpoint -#define AP_MOTORS_HELI_RSC_RUNUP_TIME 10 // 10 seconds for rotor to reach full speed -#define AP_MOTORS_HELI_RSC_AROT_ENGAGE_TIME 1 // time in seconds to ramp motors when bailing out of autorotation -#define AP_MOTORS_HELI_RSC_AROT_IDLE 0 - -// Throttle Curve Defaults -#define AP_MOTORS_HELI_RSC_THRCRV_0_DEFAULT 25 -#define AP_MOTORS_HELI_RSC_THRCRV_25_DEFAULT 32 -#define AP_MOTORS_HELI_RSC_THRCRV_50_DEFAULT 38 -#define AP_MOTORS_HELI_RSC_THRCRV_75_DEFAULT 50 -#define AP_MOTORS_HELI_RSC_THRCRV_100_DEFAULT 100 - -// RSC governor defaults -#define AP_MOTORS_HELI_RSC_GOVERNOR_RANGE_DEFAULT 100 +#include // rotor control modes enum RotorControlMode { @@ -103,20 +79,8 @@ class AP_MotorsHeli_RSC { // set_collective. collective for throttle curve calculation void set_collective(float collective) { _collective_in = collective; } - // use bailout ramp time - void use_bailout_ramp_time(bool enable) { _use_bailout_ramp = enable; } - - // use external governor autorotation window - void set_autorotation_flag(bool flag) { _in_autorotation = flag; } - - // set the throttle percentage to be used during autorotation for this instance of Heli_RSC - void set_arot_idle_output(int16_t idle) { _arot_idle_output.set(idle); } - - // set the manual autorotation option for this instance of Heli_RSC - void set_rsc_arot_man_enable(int8_t enable) { _rsc_arot_man_enable.set(enable); } - - // set the autorotation power recovery time for this instance of Heli_RSC - void set_rsc_arot_engage_time(int8_t eng_time) { _rsc_arot_engage_time.set(eng_time); } + // true if we are considered to be autorotating or bailing out of an autorotation + bool in_autorotation(void) const; // turbine start initialize sequence void set_turbine_start(bool turbine_start) {_turbine_start = turbine_start; } @@ -135,6 +99,8 @@ class AP_MotorsHeli_RSC { void write_log(void) const; #endif + RSC_Autorotation autorotation; + // var_info for holding Parameter information static const struct AP_Param::GroupInfo var_info[]; @@ -145,9 +111,6 @@ class AP_MotorsHeli_RSC { AP_Int8 _runup_time; // Time in seconds for the main rotor to reach full speed. Must be longer than _rsc_ramp_time AP_Int16 _critical_speed; // Rotor speed below which flight is not possible AP_Int16 _idle_output; // Rotor control output while at idle - AP_Int16 _arot_idle_output; // Percent value used when in autorotation - AP_Int8 _rsc_arot_engage_time; // time in seconds for in-flight power re-engagement - AP_Int8 _rsc_arot_man_enable; // enables manual autorotation private: uint64_t _last_update_us; @@ -173,16 +136,13 @@ class AP_MotorsHeli_RSC { bool _governor_engage; // RSC governor status flag bool _autothrottle; // autothrottle status flag bool _governor_fault; // governor fault status flag - bool _use_bailout_ramp; // true if allowing RSC to quickly ramp up engine - bool _in_autorotation; // true if vehicle is currently in an autorotation bool _spooldown_complete; // flag for determining if spooldown is complete float _fast_idle_timer; // cooldown timer variable uint8_t _governor_fault_count; // variable for tracking governor speed sensor faults float _governor_torque_reference; // governor reference for load calculations - bool _autorotating; // flag that holds the status of autorotation - bool _bailing_out; // flag that holds the status of bail out(power engagement) float _idle_throttle; // current idle throttle setting - bool _gov_bailing_out; // flag that holds the status of governor bail out + + RotorControlState _rsc_state; // update_rotor_ramp - slews rotor output scalar between 0 and 1, outputs float scalar to _rotor_ramp_output void update_rotor_ramp(float rotor_ramp_input, float dt); @@ -212,5 +172,5 @@ class AP_MotorsHeli_RSC { float get_idle_output() const { return _idle_output * 0.01; } float get_governor_torque() const { return _governor_torque * 0.01; } float get_governor_compensator() const { return _governor_compensator * 0.000001; } - float get_arot_idle_output() const { return _arot_idle_output * 0.01; } + }; diff --git a/libraries/AP_Motors/AP_MotorsHeli_Single.cpp b/libraries/AP_Motors/AP_MotorsHeli_Single.cpp index 24380cc3152fa7..6372363e37a43b 100644 --- a/libraries/AP_Motors/AP_MotorsHeli_Single.cpp +++ b/libraries/AP_Motors/AP_MotorsHeli_Single.cpp @@ -270,22 +270,6 @@ void AP_MotorsHeli_Single::calculate_armed_scalars() _main_rotor._rsc_mode.save(); _heliflags.save_rsc_mode = false; } - - // allow use of external governor autorotation bailout - if (_heliflags.in_autorotation) { - _main_rotor.set_autorotation_flag(_heliflags.in_autorotation); - // set bailout ramp time - _main_rotor.use_bailout_ramp_time(_heliflags.enable_bailout); - if (use_tail_RSC()) { - _tail_rotor.set_autorotation_flag(_heliflags.in_autorotation); - _tail_rotor.use_bailout_ramp_time(_heliflags.enable_bailout); - } - } else { - _main_rotor.set_autorotation_flag(false); - if (use_tail_RSC()) { - _tail_rotor.set_autorotation_flag(false); - } - } } // calculate_scalars - recalculates various scalers used. @@ -326,18 +310,12 @@ void AP_MotorsHeli_Single::calculate_scalars() _tail_rotor.set_runup_time(_main_rotor._runup_time.get()); _tail_rotor.set_critical_speed(_main_rotor._critical_speed.get()); _tail_rotor.set_idle_output(_main_rotor._idle_output.get()); - _tail_rotor.set_arot_idle_output(_main_rotor._arot_idle_output.get()); - _tail_rotor.set_rsc_arot_man_enable(_main_rotor._rsc_arot_man_enable.get()); - _tail_rotor.set_rsc_arot_engage_time(_main_rotor._rsc_arot_engage_time.get()); } else { _tail_rotor.set_control_mode(ROTOR_CONTROL_MODE_DISABLED); _tail_rotor.set_ramp_time(0); _tail_rotor.set_runup_time(0); _tail_rotor.set_critical_speed(0); _tail_rotor.set_idle_output(0); - _tail_rotor.set_arot_idle_output(0); - _tail_rotor.set_rsc_arot_man_enable(0); - _tail_rotor.set_rsc_arot_engage_time(0); } } @@ -410,10 +388,9 @@ void AP_MotorsHeli_Single::move_actuators(float roll_out, float pitch_out, float } // ensure not below landed/landing collective - if (_heliflags.landing_collective && collective_out < _collective_land_min_pct && !_heliflags.in_autorotation) { + if (_heliflags.landing_collective && collective_out < _collective_land_min_pct && !_main_rotor.in_autorotation()) { collective_out = _collective_land_min_pct; limit.throttle_lower = true; - } // updates below land min collective flag @@ -469,7 +446,7 @@ float AP_MotorsHeli_Single::get_yaw_offset(float collective) return 0.0; } - if (_heliflags.in_autorotation || (_main_rotor.get_control_output() <= _main_rotor.get_idle_output())) { + if (_main_rotor.autorotation.active() || (_main_rotor.get_control_output() <= _main_rotor.get_idle_output())) { // Motor is stopped or at idle, and thus not creating torque return 0.0; } @@ -656,6 +633,9 @@ bool AP_MotorsHeli_Single::arming_checks(size_t buflen, char *buffer) const // Called from system.cpp void AP_MotorsHeli_Single::heli_motors_param_conversions(void) { + // Run common conversions from base class + AP_MotorsHeli::heli_motors_param_conversions(); + // PARAMETER_CONVERSION - Added: Nov-2023 // Convert trim for DDFP tails // Previous DDFP configs used servo trim for setting the yaw trim, which no longer works with thrust linearisation. Convert servo trim diff --git a/libraries/AP_Motors/examples/AP_Motors_test/AP_Motors_test.cpp b/libraries/AP_Motors/examples/AP_Motors_test/AP_Motors_test.cpp index 7a3d0ee67d6321..f28db5c9243fbb 100644 --- a/libraries/AP_Motors/examples/AP_Motors_test/AP_Motors_test.cpp +++ b/libraries/AP_Motors/examples/AP_Motors_test/AP_Motors_test.cpp @@ -243,7 +243,7 @@ void setup() ::printf("autorotation only supported by heli frame types, got %i\n", frame_class); exit(1); } - motors_heli->set_in_autorotation(!is_zero(value)); + motors_heli->set_autorotation_active(!is_zero(value)); } else { ::printf("Expected \"frame_class\", \"yaw_headroom\" or \"throttle_avg_max\"\n"); diff --git a/libraries/AP_NavEKF3/AP_NavEKF3_AirDataFusion.cpp b/libraries/AP_NavEKF3/AP_NavEKF3_AirDataFusion.cpp index ca64421348718a..c188681f0e6144 100644 --- a/libraries/AP_NavEKF3/AP_NavEKF3_AirDataFusion.cpp +++ b/libraries/AP_NavEKF3/AP_NavEKF3_AirDataFusion.cpp @@ -20,25 +20,19 @@ void NavEKF3_core::FuseAirspeed() { // declarations - ftype vn; - ftype ve; - ftype vd; - ftype vwn; - ftype vwe; ftype SH_TAS[3]; ftype SK_TAS[2]; Vector24 H_TAS = {}; - ftype VtasPred; // copy required states to local variable names - vn = stateStruct.velocity.x; - ve = stateStruct.velocity.y; - vd = stateStruct.velocity.z; - vwn = stateStruct.wind_vel.x; - vwe = stateStruct.wind_vel.y; + const ftype vn = stateStruct.velocity.x; + const ftype ve = stateStruct.velocity.y; + const ftype vd = stateStruct.velocity.z; + const ftype vwn = stateStruct.wind_vel.x; + const ftype vwe = stateStruct.wind_vel.y; // calculate the predicted airspeed - VtasPred = norm((ve - vwe) , (vn - vwn) , vd); + const ftype VtasPred = norm((ve - vwe) , (vn - vwn) , vd); // perform fusion of True Airspeed measurement if (VtasPred > 1.0f) { @@ -280,15 +274,6 @@ void NavEKF3_core::SelectBetaDragFusion() void NavEKF3_core::FuseSideslip() { // declarations - ftype q0; - ftype q1; - ftype q2; - ftype q3; - ftype vn; - ftype ve; - ftype vd; - ftype vwn; - ftype vwe; const ftype R_BETA = 0.03f; // assume a sideslip angle RMS of ~10 deg Vector13 SH_BETA; Vector8 SK_BETA; @@ -296,15 +281,15 @@ void NavEKF3_core::FuseSideslip() Vector24 H_BETA; // copy required states to local variable names - q0 = stateStruct.quat[0]; - q1 = stateStruct.quat[1]; - q2 = stateStruct.quat[2]; - q3 = stateStruct.quat[3]; - vn = stateStruct.velocity.x; - ve = stateStruct.velocity.y; - vd = stateStruct.velocity.z; - vwn = stateStruct.wind_vel.x; - vwe = stateStruct.wind_vel.y; + const ftype q0 = stateStruct.quat[0]; + const ftype q1 = stateStruct.quat[1]; + const ftype q2 = stateStruct.quat[2]; + const ftype q3 = stateStruct.quat[3]; + const ftype vn = stateStruct.velocity.x; + const ftype ve = stateStruct.velocity.y; + const ftype vd = stateStruct.velocity.z; + const ftype vwn = stateStruct.wind_vel.x; + const ftype vwe = stateStruct.wind_vel.y; // calculate predicted wind relative velocity in NED vel_rel_wind.x = vn - vwn; diff --git a/libraries/AP_PiccoloCAN/AP_PiccoloCAN.cpp b/libraries/AP_PiccoloCAN/AP_PiccoloCAN.cpp index 428f589b892700..54c5453bfb0c0b 100644 --- a/libraries/AP_PiccoloCAN/AP_PiccoloCAN.cpp +++ b/libraries/AP_PiccoloCAN/AP_PiccoloCAN.cpp @@ -209,7 +209,6 @@ void AP_PiccoloCAN::loop() uint16_t ecuCmdRateMs = 1000 / _ecu_hz; #endif - uint64_t timeout = AP_HAL::micros64() + 250ULL; // 1ms loop delay hal.scheduler->delay_microseconds(1000); @@ -235,7 +234,7 @@ void AP_PiccoloCAN::loop() #endif // Look for any message responses on the CAN bus - while (read_frame(rxFrame, timeout)) { + while (read_frame(rxFrame, 0)) { // Extract group and device ID values from the frame identifier frame_id_group = (rxFrame.id >> 24) & 0x1F; @@ -276,7 +275,7 @@ void AP_PiccoloCAN::loop() } // write frame on CAN bus, returns true on success -bool AP_PiccoloCAN::write_frame(AP_HAL::CANFrame &out_frame, uint64_t timeout) +bool AP_PiccoloCAN::write_frame(AP_HAL::CANFrame &out_frame, uint32_t timeout_us) { if (!_initialized) { debug_can(AP_CANManager::LOG_ERROR, "PiccoloCAN: Driver not initialized for write_frame\n\r"); @@ -285,26 +284,27 @@ bool AP_PiccoloCAN::write_frame(AP_HAL::CANFrame &out_frame, uint64_t timeout) bool read_select = false; bool write_select = true; - - bool ret = _can_iface->select(read_select, write_select, &out_frame, timeout); + const uint64_t deadline_us = AP_HAL::micros64() + timeout_us; + bool ret = _can_iface->select(read_select, write_select, &out_frame, deadline_us); if (!ret || !write_select) { return false; } - return (_can_iface->send(out_frame, timeout, AP_HAL::CANIface::AbortOnError) == 1); + return (_can_iface->send(out_frame, deadline_us, AP_HAL::CANIface::AbortOnError) == 1); } // read frame on CAN bus, returns true on succses -bool AP_PiccoloCAN::read_frame(AP_HAL::CANFrame &recv_frame, uint64_t timeout) +bool AP_PiccoloCAN::read_frame(AP_HAL::CANFrame &recv_frame, uint32_t timeout_us) { if (!_initialized) { debug_can(AP_CANManager::LOG_ERROR, "PiccoloCAN: Driver not initialized for read_frame\n\r"); return false; } + bool read_select = true; bool write_select = false; - bool ret = _can_iface->select(read_select, write_select, nullptr, timeout); + bool ret = _can_iface->select(read_select, write_select, nullptr, AP_HAL::micros64() + timeout_us); if (!ret || !read_select) { // No frame available @@ -409,8 +409,6 @@ void AP_PiccoloCAN::send_servo_messages(void) { AP_HAL::CANFrame txFrame {}; - uint64_t timeout = AP_HAL::micros64() + 1000ULL; - // No servos are selected? Don't send anything! if (_srv_bm == 0x00) { return; @@ -445,7 +443,7 @@ void AP_PiccoloCAN::send_servo_messages(void) // Servo is not enabled encodeServo_EnablePacket(&txFrame); txFrame.id |= (idx + 1); - write_frame(txFrame, timeout); + write_frame(txFrame, 1000); } else if (_servos[idx].newCommand) { // A new command is provided send_cmd = true; @@ -467,7 +465,7 @@ void AP_PiccoloCAN::send_servo_messages(void) // Broadcast the command to all servos txFrame.id |= 0xFF; - write_frame(txFrame, timeout); + write_frame(txFrame, 1000); } } } @@ -478,8 +476,6 @@ void AP_PiccoloCAN::send_esc_messages(void) { AP_HAL::CANFrame txFrame {}; - uint64_t timeout = AP_HAL::micros64() + 1000ULL; - // No ESCs are selected? Don't send anything if (_esc_bm == 0x00) { return; @@ -515,7 +511,7 @@ void AP_PiccoloCAN::send_esc_messages(void) if (is_esc_present(idx) && !is_esc_enabled(idx)) { encodeESC_EnablePacket(&txFrame); txFrame.id |= (idx + 1); - write_frame(txFrame, timeout); + write_frame(txFrame, 1000); } else if (_escs[idx].newCommand) { send_cmd = true; @@ -540,7 +536,7 @@ void AP_PiccoloCAN::send_esc_messages(void) // Broadcast the command to all ESCs txFrame.id |= 0xFF; - write_frame(txFrame, timeout); + write_frame(txFrame, 1000); } } @@ -553,7 +549,7 @@ void AP_PiccoloCAN::send_esc_messages(void) // Set the ESC address to the broadcast ID (0xFF) txFrame.id |= 0xFF; - write_frame(txFrame, timeout); + write_frame(txFrame, 1000); } } @@ -609,8 +605,6 @@ void AP_PiccoloCAN::send_ecu_messages(void) { AP_HAL::CANFrame txFrame {}; - const uint64_t timeout = AP_HAL::micros64() + 1000ULL; - // No ECU node id set, don't send anything if (_ecu_id == 0) { return; @@ -622,7 +616,7 @@ void AP_PiccoloCAN::send_ecu_messages(void) _ecu_info.newCommand = false; - write_frame(txFrame, timeout); + write_frame(txFrame, 1000); } } @@ -687,26 +681,26 @@ bool AP_PiccoloCAN::is_esc_channel_active(uint8_t chan) /** * Determine if a servo is present on the CAN bus (has telemetry data been received) */ -bool AP_PiccoloCAN::is_servo_present(uint8_t chan, uint64_t timeout_ms) +bool AP_PiccoloCAN::is_servo_present(uint8_t chan, uint32_t timeout_us) { if (chan >= PICCOLO_CAN_MAX_NUM_SERVO) { return false; } - return _servos[chan].is_connected(timeout_ms); + return _servos[chan].is_connected(timeout_us); } /** * Determine if an ESC is present on the CAN bus (has telemetry data been received) */ -bool AP_PiccoloCAN::is_esc_present(uint8_t chan, uint64_t timeout_ms) +bool AP_PiccoloCAN::is_esc_present(uint8_t chan, uint32_t timeout_us) { if (chan >= PICCOLO_CAN_MAX_NUM_ESC) { return false; } - return _escs[chan].is_connected(timeout_ms); + return _escs[chan].is_connected(timeout_us); } diff --git a/libraries/AP_PiccoloCAN/AP_PiccoloCAN.h b/libraries/AP_PiccoloCAN/AP_PiccoloCAN.h index 3615f3db4fa29c..7353de1c034ed2 100644 --- a/libraries/AP_PiccoloCAN/AP_PiccoloCAN.h +++ b/libraries/AP_PiccoloCAN/AP_PiccoloCAN.h @@ -63,10 +63,10 @@ class AP_PiccoloCAN : public AP_CANDriver, public AP_ESC_Telem_Backend bool is_esc_channel_active(uint8_t chan); // return true if a particular servo has been detected on the CAN interface - bool is_servo_present(uint8_t chan, uint64_t timeout_ms = 2000); + bool is_servo_present(uint8_t chan, uint32_t timeout_us = 2000000); // return true if a particular ESC has been detected on the CAN interface - bool is_esc_present(uint8_t chan, uint64_t timeout_ms = 2000); + bool is_esc_present(uint8_t chan, uint32_t timeout_us = 2000000); // return true if a particular servo is enabled bool is_servo_enabled(uint8_t chan); @@ -83,10 +83,10 @@ class AP_PiccoloCAN : public AP_CANDriver, public AP_ESC_Telem_Backend void loop(); // write frame on CAN bus, returns true on success - bool write_frame(AP_HAL::CANFrame &out_frame, uint64_t timeout); + bool write_frame(AP_HAL::CANFrame &out_frame, uint32_t timeout_us); // read frame on CAN bus, returns true on succses - bool read_frame(AP_HAL::CANFrame &recv_frame, uint64_t timeout); + bool read_frame(AP_HAL::CANFrame &recv_frame, uint32_t timeout_us); // send ESC commands over CAN void send_esc_messages(void); diff --git a/libraries/AP_PiccoloCAN/AP_PiccoloCAN_Device.h b/libraries/AP_PiccoloCAN/AP_PiccoloCAN_Device.h index fff6e175395688..23cea2b24f7f94 100644 --- a/libraries/AP_PiccoloCAN/AP_PiccoloCAN_Device.h +++ b/libraries/AP_PiccoloCAN/AP_PiccoloCAN_Device.h @@ -58,10 +58,10 @@ class AP_PiccoloCAN_Device virtual bool is_enabled(void) const { return false; } // Determine if this device has been seen within a specified timeframe - virtual bool is_connected(int64_t timeout_ms) const { + virtual bool is_connected(uint32_t timeout_us) const { uint64_t now = AP_HAL::micros64(); - return now < (last_msg_timestamp + (1000ULL * timeout_ms)); + return now < (last_msg_timestamp + timeout_us); } // Reset the received message timestamp diff --git a/libraries/AP_RCProtocol/AP_RCProtocol.h b/libraries/AP_RCProtocol/AP_RCProtocol.h index 37f46a28da6d14..bcf7038ba96bd4 100644 --- a/libraries/AP_RCProtocol/AP_RCProtocol.h +++ b/libraries/AP_RCProtocol/AP_RCProtocol.h @@ -128,11 +128,13 @@ class AP_RCProtocol { _disabled_for_pulses |= (1U<<(uint8_t)protocol); } +#if !defined(__clang__) // in the case we've disabled most backends then the "return true" in // the following method can never be reached, and the compiler gets // annoyed at that. #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wswitch-unreachable" +#endif // for protocols without strong CRCs we require 3 good frames to lock on bool requires_3_frames(enum rcprotocol_t p) { @@ -203,7 +205,9 @@ class AP_RCProtocol { } return false; } +#if !defined(__clang__) #pragma GCC diagnostic pop +#endif uint8_t num_channels(); uint16_t read(uint8_t chan); diff --git a/libraries/AP_Scripting/docs/docs.lua b/libraries/AP_Scripting/docs/docs.lua index 25f5552b3a0e99..059d6ce83a9e81 100644 --- a/libraries/AP_Scripting/docs/docs.lua +++ b/libraries/AP_Scripting/docs/docs.lua @@ -1942,6 +1942,10 @@ analog = {} ---@return number -- MCU temperature function analog:mcu_temperature() end +-- return The current MCU voltage +---@return number -- MCU voltage +function analog:mcu_voltage() end + -- desc ---@return AP_HAL__AnalogSource_ud|nil function analog:channel() end diff --git a/libraries/AP_Scripting/examples/AHRS_switch.lua b/libraries/AP_Scripting/examples/AHRS_switch.lua index a9f06c5a57b1ae..72d85703a0608f 100644 --- a/libraries/AP_Scripting/examples/AHRS_switch.lua +++ b/libraries/AP_Scripting/examples/AHRS_switch.lua @@ -1,18 +1,21 @@ --- switch between DCM and EKF3 on a switch +-- switch between EKF2 and EKF3 on a switch ----@diagnostic disable: need-check-nil - -local scripting_rc1 = rc:find_channel_for_option(300) +local AUX_FUNCTION_NUM = 300 local EKF_TYPE = Parameter('AHRS_EKF_TYPE') function update() - local sw_pos = scripting_rc1:get_aux_switch_pos() - if sw_pos == 0 then + local sw_pos = rc:get_aux_cached(AUX_FUNCTION_NUM) + if not sw_pos then + return update, 100 + end + if sw_pos == 2 then EKF_TYPE:set(3) else - EKF_TYPE:set(0) + EKF_TYPE:set(2) end return update, 100 end +gcs:send_text(0, "Loaded AHRS switch for EKF3/EKF2") + return update() diff --git a/libraries/AP_Scripting/examples/ESC_slew_rate.lua b/libraries/AP_Scripting/examples/ESC_slew_rate.lua new file mode 100644 index 00000000000000..5b1ba074de0d03 --- /dev/null +++ b/libraries/AP_Scripting/examples/ESC_slew_rate.lua @@ -0,0 +1,54 @@ +--[[ + run an ESC with a sinisoidal demand, with settable limits and frequency +--]] + +local PARAM_TABLE_KEY = 136 +local PARAM_TABLE_PREFIX = "ETEST_" + +-- add a parameter and bind it to a variable +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 Parameter(PARAM_TABLE_PREFIX .. name) +end + +-- setup script specific parameters +assert(param:add_table(PARAM_TABLE_KEY, PARAM_TABLE_PREFIX, 10), 'could not add param table') + +local ETEST_CHAN = bind_add_param('CHAN', 1, 0) +local ETEST_PCT = bind_add_param('PCT', 2, 100) +local ETEST_PWM_MIN = bind_add_param('PWM_MIN', 3, 1000) +local ETEST_PWM_MAX = bind_add_param('PWM_MAX', 4, 2000) +local ETEST_FREQ = bind_add_param('FREQ', 5, 1) +local ETEST_WTYPE = bind_add_param('WTYPE', 6, 0) + +-- local WTYPE_SIN = 0 +local WTYPE_SQUARE = 1 + +function update() + local chan = ETEST_CHAN:get() + local freq = ETEST_FREQ:get() + if chan > 0 and freq > 0 then + local t = 0.001 * millis():tofloat() + local pi = 3.1415 + local out_sin = math.sin(pi * t * freq * 2.0) + if ETEST_WTYPE:get() == WTYPE_SQUARE then + if out_sin > 0 then + out_sin = 1 + else + out_sin = -1 + end + end + local output = out_sin * ETEST_PCT:get() * 0.01 + local pwm_min = ETEST_PWM_MIN:get() + local pwm_max = ETEST_PWM_MAX:get() + local pwm_mid = 0.5*(pwm_min+pwm_max) + local pwm = math.floor(pwm_mid + (pwm_max-pwm_mid) * output) + SRV_Channels:set_output_pwm_chan_timeout(chan-1, pwm, 100) + logger.write('ESLW', 'PWM,Freq', 'If', pwm, freq) + gcs:send_named_float('PWN',pwm) + gcs:send_named_float('FREQ',freq) + end + return update, 5 -- 200Hz +end + +return update() diff --git a/libraries/AP_Scripting/generator/description/bindings.desc b/libraries/AP_Scripting/generator/description/bindings.desc index 59b356065bdc2d..67c11a646019da 100644 --- a/libraries/AP_Scripting/generator/description/bindings.desc +++ b/libraries/AP_Scripting/generator/description/bindings.desc @@ -284,7 +284,7 @@ singleton AP_Relay method toggle void uint8_t 0 AP_RELAY_NUM_RELAYS singleton AP_Relay method get uint8_t uint8_t 0 AP_RELAY_NUM_RELAYS include GCS_MAVLink/GCS.h -singleton GCS depends HAL_GCS_ENABLED +singleton GCS depends (HAL_GCS_ENABLED && !defined(HAL_BUILD_AP_PERIPH)) singleton GCS rename gcs singleton GCS method send_text void MAV_SEVERITY'enum MAV_SEVERITY_EMERGENCY MAV_SEVERITY_DEBUG "%s"'literal string singleton GCS method set_message_interval MAV_RESULT'enum uint8_t 0 MAVLINK_COMM_NUM_BUFFERS uint32_t'skip_check int32_t -1 INT32_MAX @@ -647,6 +647,8 @@ singleton hal.analogin literal singleton hal.analogin method channel AP_HAL::AnalogSource ANALOG_INPUT_NONE'literal singleton hal.analogin method mcu_temperature float singleton hal.analogin method mcu_temperature depends HAL_WITH_MCU_MONITORING +singleton hal.analogin method mcu_voltage float +singleton hal.analogin method mcu_voltage depends HAL_WITH_MCU_MONITORING include AP_Motors/AP_MotorsMatrix_Scripting_Dynamic.h depends APM_BUILD_TYPE(APM_BUILD_ArduPlane)||APM_BUILD_COPTER_OR_HELI singleton AP_MotorsMatrix_Scripting_Dynamic depends APM_BUILD_TYPE(APM_BUILD_ArduPlane)||APM_BUILD_COPTER_OR_HELI @@ -968,7 +970,7 @@ global manual dirlist lua_dirlist 1 2 global manual remove lua_removefile 1 3 global manual print lua_print 1 0 -singleton mavlink depends HAL_GCS_ENABLED +singleton mavlink depends (HAL_GCS_ENABLED && !defined(HAL_BUILD_AP_PERIPH)) singleton mavlink manual init lua_mavlink_init 2 0 singleton mavlink manual register_rx_msgid lua_mavlink_register_rx_msgid 1 1 singleton mavlink manual send_chan lua_mavlink_send_chan 3 1 diff --git a/libraries/AP_Scripting/lua_bindings.cpp b/libraries/AP_Scripting/lua_bindings.cpp index 0004c6c3f38642..1c7db4a2df10fa 100644 --- a/libraries/AP_Scripting/lua_bindings.cpp +++ b/libraries/AP_Scripting/lua_bindings.cpp @@ -1165,7 +1165,7 @@ void lua_abort() #endif } -#if HAL_GCS_ENABLED +#if (HAL_GCS_ENABLED && !defined(HAL_BUILD_AP_PERIPH)) /* implement gcs:command_int() access to MAV_CMD_xxx commands */ diff --git a/libraries/AP_TemperatureSensor/AP_TemperatureSensor.cpp b/libraries/AP_TemperatureSensor/AP_TemperatureSensor.cpp index 377f303e6c2b58..8b0f75b6782eb0 100644 --- a/libraries/AP_TemperatureSensor/AP_TemperatureSensor.cpp +++ b/libraries/AP_TemperatureSensor/AP_TemperatureSensor.cpp @@ -139,7 +139,7 @@ const AP_Param::GroupInfo AP_TemperatureSensor::var_info[] = { // @Group: 9_ // @Path: AP_TemperatureSensor_Analog.cpp - AP_SUBGROUPVARPTR(drivers[8], "9_", 26, AP_TemperatureSensor, backend_var_info[8]), + AP_SUBGROUPVARPTR(drivers[8], "9_", 27, AP_TemperatureSensor, backend_var_info[8]), #endif AP_GROUPEND diff --git a/libraries/AP_TemperatureSensor/AP_TemperatureSensor_MCP9600.cpp b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_MCP9600.cpp index c0c91382cee13d..d8be71f92ef775 100644 --- a/libraries/AP_TemperatureSensor/AP_TemperatureSensor_MCP9600.cpp +++ b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_MCP9600.cpp @@ -47,7 +47,7 @@ static const uint8_t MCP9601_WHOAMI = 0x41; #define MCP9600_ADDR_LOW 0x60 // ADDR pin pulled low -#define MCP9600_ADDR_HIGH 0x66 // ADDR pin pulled high +#define MCP9600_ADDR_HIGH 0x67 // ADDR pin pulled high #define AP_TemperatureSensor_MCP9600_UPDATE_INTERVAL_MS 500 #define AP_TemperatureSensor_MCP9600_SCALE_FACTOR (0.0625f) @@ -56,10 +56,6 @@ static const uint8_t MCP9601_WHOAMI = 0x41; #define AP_TemperatureSensor_MCP9600_ADDR_DEFAULT MCP9600_ADDR_LOW #endif -#ifndef AP_TemperatureSensor_MCP9600_ENFORCE_KNOWN_VALID_I2C_ADDRESS -#define AP_TemperatureSensor_MCP9600_ENFORCE_KNOWN_VALID_I2C_ADDRESS 1 -#endif - #ifndef AP_TemperatureSensor_MCP9600_Filter #define AP_TemperatureSensor_MCP9600_Filter 2 // can be values 0 through 7 where 0 is no filtering (fast) and 7 is lots of smoothing (very very slow) #endif @@ -68,13 +64,6 @@ void AP_TemperatureSensor_MCP9600::init() { constexpr char name[] = "MCP9600"; -#if AP_TemperatureSensor_MCP9600_ENFORCE_KNOWN_VALID_I2C_ADDRESS - // I2C Address: Default to using MCP9600_ADDR_LOW if it's out of range - if ((_params.bus_address < MCP9600_ADDR_LOW) || ( _params.bus_address > MCP9600_ADDR_HIGH)) { - _params.bus_address.set(MCP9600_ADDR_LOW); - } -#endif - _dev = std::move(hal.i2c_mgr->get_device(_params.bus, _params.bus_address)); if (!_dev) { // device not found @@ -137,14 +126,14 @@ bool AP_TemperatureSensor_MCP9600::read_temperature(float &temperature) if ((data[0] & MCP9600_CMD_STATUS_UPDATE_READY) == 0) { return false; } - // clear update bit: - if (!_dev->write_register(0x04, data[0] & ~MCP9600_CMD_STATUS_UPDATE_READY)) { - return false; - } // read temperature: if (!_dev->read_registers(MCP9600_CMD_HOT_JUNCT_TEMP, data, 2)) { return false; } + // clear update bit: + if (!_dev->write_register(0x04, data[0] & ~MCP9600_CMD_STATUS_UPDATE_READY)) { + return false; + } // scale temperature: temperature = int16_t(UINT16_VALUE(data[0], data[1])) * AP_TemperatureSensor_MCP9600_SCALE_FACTOR; diff --git a/libraries/AP_TemperatureSensor/AP_TemperatureSensor_config.h b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_config.h index 2fdd2f325f5751..7463d706c1f135 100644 --- a/libraries/AP_TemperatureSensor/AP_TemperatureSensor_config.h +++ b/libraries/AP_TemperatureSensor/AP_TemperatureSensor_config.h @@ -9,7 +9,7 @@ #ifndef AP_TEMPERATURE_SENSOR_ENABLED #if BOARD_FLASH_SIZE <= 1024 #define AP_TEMPERATURE_SENSOR_ENABLED 0 -#elif (CONFIG_HAL_BOARD == HAL_BOARD_SITL) +#elif BOARD_FLASH_SIZE > 2048 #define AP_TEMPERATURE_SENSOR_ENABLED 1 #else #define AP_TEMPERATURE_SENSOR_ENABLED 2 diff --git a/libraries/AP_Volz_Protocol/AP_Volz_Protocol.cpp b/libraries/AP_Volz_Protocol/AP_Volz_Protocol.cpp index 84091522e9ff45..43f1c17feb705e 100644 --- a/libraries/AP_Volz_Protocol/AP_Volz_Protocol.cpp +++ b/libraries/AP_Volz_Protocol/AP_Volz_Protocol.cpp @@ -14,7 +14,7 @@ #include #include -#define SET_EXTENDED_POSITION_CMD 0xDC +#include // Extended Position Data Format defines -100 as 0x0080 decimal 128, we map this to a PWM of 1000 (if range is default) #define PWM_POSITION_MIN 1000 @@ -77,12 +77,48 @@ void AP_Volz_Protocol::init(void) } } +#if HAL_LOGGING_ENABLED +// Request telem data, cycling through each servo and telem item +void AP_Volz_Protocol::request_telem() +{ + // Request the queued item, making sure the servo is enabled + if ((uint32_t(bitmask.get()) & (1U<set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_RTS_DE); port->begin(baudrate, UART_BUFSIZE_RX, UART_BUFSIZE_TX); port->set_unbuffered_writes(true); - port->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE); // Calculate the amount of time it should take to send a command // Multiply by 10 to convert from bit rate to byte rate (8 data bits + start and stop bits) @@ -93,8 +129,10 @@ void AP_Volz_Protocol::loop() // receive packet is same length as sent, double to allow some time for the servo respond const uint16_t receive_us = send_us * 2; - // This gives a total time of 1560ms, message rate of 641 Hz. + // This gives a total time of 1560us, message rate of 641 Hz. // One servo at 641Hz, two at 320.5 each, three at 213.7 each ect... + // Note that we send a telem request every time servo sending is complete. This is like a extra servo. + // So for a single servo position commands are at 320.5Hz and telem at 320.5Hz. while (port != nullptr) { @@ -106,45 +144,211 @@ void AP_Volz_Protocol::loop() hal.scheduler->delay_microseconds(100); } - // loop for all channels - for (uint8_t i=0; i= ARRAY_SIZE(telem.data)) { + // Invalid ID + return; + } + + switch (cmd.ID) { + case CMD_ID::EXTENDED_POSITION_RESPONSE: + // Map back to angle + telem.data[index].angle = linear_interpolate(ANGLE_POSITION_MIN, ANGLE_POSITION_MAX, UINT16_VALUE(cmd.arg1, cmd.arg2), EXTENDED_POSITION_MIN, EXTENDED_POSITION_MAX); + break; + + case CMD_ID::CURRENT_RESPONSE: + // Current is reported in 20mA increments (0.02A) + telem.data[index].primary_current = cmd.arg1 * 0.02; + telem.data[index].secondary_current = cmd.arg2 * 0.02; + break; + + case CMD_ID::VOLTAGE_RESPONSE: + // Voltage is reported in 200mv increments (0.2v) + telem.data[index].primary_voltage = cmd.arg1 * 0.2; + telem.data[index].secondary_voltage = cmd.arg2 * 0.2; + break; + + case CMD_ID::TEMPERATURE_RESPONSE: + // Temperature is reported relative to -50 deg C + telem.data[index].motor_temp_deg = -50 + cmd.arg1; + telem.data[index].pcb_temp_deg = -50 + cmd.arg2; + break; + + default: + // This should never happen + return; + } + + telem.data[index].last_response_ms = AP_HAL::millis(); +} + +// Return true if the given ID is a valid response +bool AP_Volz_Protocol::is_response(uint8_t ID) const +{ + switch(ID) { + case (uint8_t)CMD_ID::EXTENDED_POSITION_RESPONSE: + case (uint8_t)CMD_ID::CURRENT_RESPONSE: + case (uint8_t)CMD_ID::VOLTAGE_RESPONSE: + case (uint8_t)CMD_ID::TEMPERATURE_RESPONSE: + return true; + + default: + break; + } + + return false; +} + +void AP_Volz_Protocol::read_telem() +{ + // Try and read data a few times, this could be a while loop, using a for loop gives a upper bound to run time + for (uint8_t attempts = 0; attempts < sizeof(telem.cmd_buffer) * 4; attempts++) { + + uint32_t n = port->available(); + if (n == 0) { + // No data available + return; + } + if (telem.buffer_offset < sizeof(telem.cmd_buffer)) { + // Read enough bytes to fill buffer + ssize_t nread = port->read(&telem.cmd_buffer.data[telem.buffer_offset], MIN(n, unsigned(sizeof(telem.cmd_buffer)-telem.buffer_offset))); + if (nread <= 0) { + // Read failed + return; } - last_sent_index = index; + telem.buffer_offset += nread; + } - // Get PWM from saved array - const uint16_t pwm = servo_pwm[index]; - if (pwm == 0) { - // Never use zero PWM, the check in update should ensure this never happens - // If we were to use zero the range extrapolation would result in a -100 deg angle request - continue; + // Check for valid response start byte + if (!is_response(telem.cmd_buffer.data[0])) { + + // Search for a valid response start byte + uint8_t cmd_start; + for (cmd_start = 1; cmd_start < telem.buffer_offset; cmd_start++) { + if (is_response(telem.cmd_buffer.data[cmd_start])) { + // Found one + break; + } } - // Map PWM to angle, this is a un-constrained interpolation - // ratio = 0 at PWM_POSITION_MIN to 1 at PWM_POSITION_MAX - const float ratio = (float(pwm) - PWM_POSITION_MIN) / (PWM_POSITION_MAX - PWM_POSITION_MIN); - // Convert ratio to +-0.5 and multiply by stroke - const float angle = (ratio - 0.5) * constrain_float(range, 0.0, 200.0); + // Shift buffer to put start on valid byte, or if no valid byte was found clear + const uint8_t n_move = telem.buffer_offset - cmd_start; + if (n_move > 0) { + // No need to move 0 bytes + memmove(&telem.cmd_buffer.data[0], &telem.cmd_buffer.data[cmd_start], n_move); + } + telem.buffer_offset = 0; - // Map angle to command out of full range, add 0.5 so that float to int truncation rounds correctly - const uint16_t value = linear_interpolate(EXTENDED_POSITION_MIN, EXTENDED_POSITION_MAX, angle, ANGLE_POSITION_MIN, ANGLE_POSITION_MAX) + 0.5; + // Since the buffer is the same length as a full command, we can never get a valid packet after shifting + // Always need to read in some more data + continue; + } - // prepare Volz protocol data. - CMD cmd; - cmd.ID = SET_EXTENDED_POSITION_CMD; - cmd.actuator_id = index + 1; // send actuator id as 1 based index so ch1 will have id 1, ch2 will have id 2 .... - cmd.arg1 = HIGHBYTE(value); - cmd.arg2 = LOWBYTE(value); + if (telem.buffer_offset < sizeof(telem.cmd_buffer)) { + // Not enough data to make up packet + continue; + } - send_command(cmd); - break; + // Have valid ID and enough data, check crc + if (UINT16_VALUE(telem.cmd_buffer.crc1, telem.cmd_buffer.crc2) != calculate_crc(telem.cmd_buffer)) { + // Probably lost sync shift by one and try again + memmove(&telem.cmd_buffer.data[0], &telem.cmd_buffer.data[1], telem.buffer_offset - 1); + telem.buffer_offset -= 1; + continue; } + + // Valid packet passed crc check + process_response(telem.cmd_buffer); + + // zero offset and continue + telem.buffer_offset = 0; } + + // Used up all attempts without running out of data. + // Really should not end up here } +#endif // HAL_LOGGING_ENABLED // Called each time the servo outputs are sent void AP_Volz_Protocol::update() @@ -171,10 +375,55 @@ void AP_Volz_Protocol::update() const uint16_t pwm = c->get_output_pwm(); servo_pwm[i] = (pwm == 0) ? c->get_trim() : pwm; } + +#if HAL_LOGGING_ENABLED + // take semaphore and log all channels at 5 Hz + const uint32_t now_ms = AP_HAL::millis(); + if ((now_ms - telem.last_log_ms) > 200) { + telem.last_log_ms = now_ms; + + WITH_SEMAPHORE(telem.sem); + for (uint8_t i=0; i 5000)) { + // Never seen telem, or not had a response for more than 5 seconds + continue; + } + + // @LoggerMessage: VOLZ + // @Description: Volz servo data + // @Field: TimeUS: Time since system startup + // @Field: I: Instance + // @Field: Dang: desired angle + // @Field: ang: reported angle + // @Field: pc: primary supply current + // @Field: sc: secondary supply current + // @Field: pv: primary supply voltage + // @Field: sv: secondary supply voltage + // @Field: mt: motor temperature + // @Field: pt: pcb temperature + AP::logger().WriteStreaming("VOLZ", + "TimeUS,I,Dang,ang,pc,sc,pv,sv,mt,pt", + "s#ddAAvvOO", + "F000000000", + "QBffffffHH", + AP_HAL::micros64(), + i + 1, // convert to 1 indexed to match actuator IDs and SERVOx numbering + telem.data[i].desired_angle, + telem.data[i].angle, + telem.data[i].primary_current, + telem.data[i].secondary_current, + telem.data[i].primary_voltage, + telem.data[i].secondary_voltage, + telem.data[i].motor_temp_deg, + telem.data[i].pcb_temp_deg + ); + } + } +#endif // HAL_LOGGING_ENABLED } -// calculate CRC for volz serial protocol and send the data. -void AP_Volz_Protocol::send_command(CMD &cmd) +// Return the crc for a given command packet +uint16_t AP_Volz_Protocol::calculate_crc(const CMD &cmd) const { uint16_t crc = 0xFFFF; @@ -192,6 +441,14 @@ void AP_Volz_Protocol::send_command(CMD &cmd) } } + return crc; +} + +// calculate CRC for volz serial protocol and send the data. +void AP_Volz_Protocol::send_command(CMD &cmd) +{ + const uint16_t crc = calculate_crc(cmd); + // add CRC result to the message cmd.crc1 = HIGHBYTE(crc); cmd.crc2 = LOWBYTE(crc); diff --git a/libraries/AP_Volz_Protocol/AP_Volz_Protocol.h b/libraries/AP_Volz_Protocol/AP_Volz_Protocol.h index d1ccfbe8416f7d..02b18fc4ea421a 100644 --- a/libraries/AP_Volz_Protocol/AP_Volz_Protocol.h +++ b/libraries/AP_Volz_Protocol/AP_Volz_Protocol.h @@ -44,6 +44,8 @@ #include #include #include +#include + class AP_Volz_Protocol { public: @@ -58,10 +60,22 @@ class AP_Volz_Protocol { private: + // Command and response IDs + enum class CMD_ID : uint8_t { + SET_EXTENDED_POSITION = 0xDC, + EXTENDED_POSITION_RESPONSE = 0x2C, + READ_CURRENT = 0xB0, + CURRENT_RESPONSE = 0x30, + READ_VOLTAGE = 0xB1, + VOLTAGE_RESPONSE = 0x31, + READ_TEMPERATURE = 0xC0, + TEMPERATURE_RESPONSE = 0x10, + }; + // Command frame union CMD { struct PACKED { - uint8_t ID; // CMD ID + CMD_ID ID; uint8_t actuator_id; // actuator send to or receiving from uint8_t arg1; // CMD dependant argument 1 uint8_t arg2; // CMD dependant argument 2 @@ -75,17 +89,64 @@ class AP_Volz_Protocol { // Loop in thread to output to uart void loop(); - uint8_t last_sent_index; + uint8_t sent_count; void init(void); + + // Return the crc for a given command packet + uint16_t calculate_crc(const CMD &cmd) const; + + // calculate CRC for volz serial protocol and send the data. void send_command(CMD &cmd); // Incoming PWM commands from the servo lib uint16_t servo_pwm[NUM_SERVO_CHANNELS]; + // Send postion commands from PWM, cycle through each servo + void send_position_cmd(); + uint8_t last_sent_index; + AP_Int32 bitmask; AP_Int16 range; bool initialised; + +#if HAL_LOGGING_ENABLED + // Request telem data, cycling through each servo and telem item + void request_telem(); + + // Return true if the given ID is a valid response + bool is_response(uint8_t ID) const; + + // Reading of telem packets + void read_telem(); + void process_response(const CMD &cmd); + + struct { + CMD_ID types[3] { + CMD_ID::READ_CURRENT, + CMD_ID::READ_VOLTAGE, + CMD_ID::READ_TEMPERATURE, + }; + uint8_t actuator_id; + uint8_t request_type; + HAL_Semaphore sem; + CMD cmd_buffer; + uint8_t buffer_offset; + struct { + uint32_t last_response_ms; + float desired_angle; + float angle; + float primary_current; + float secondary_current; + float primary_voltage; + float secondary_voltage; + uint16_t motor_temp_deg; + uint16_t pcb_temp_deg; + } data[NUM_SERVO_CHANNELS]; + uint32_t last_log_ms; + } telem; +#endif + }; #endif // AP_VOLZ_PROTOCOL diff --git a/libraries/GCS_MAVLink/GCS_MAVLink.h b/libraries/GCS_MAVLink/GCS_MAVLink.h index 36e0cd3fb0851b..b59ba9d93c3119 100644 --- a/libraries/GCS_MAVLink/GCS_MAVLink.h +++ b/libraries/GCS_MAVLink/GCS_MAVLink.h @@ -15,9 +15,9 @@ #define MAVLINK_START_UART_SEND(chan, size) comm_send_lock(chan, size) #define MAVLINK_END_UART_SEND(chan, size) comm_send_unlock(chan) -#if AP_NETWORKING_ENABLED -// allow 7 telemetry ports with networking -#define MAVLINK_COMM_NUM_BUFFERS 7 +#if BOARD_FLASH_SIZE > 1024 +// allow 8 telemetry ports, allowing for extra networking or CAN ports +#define MAVLINK_COMM_NUM_BUFFERS 8 #else // allow five telemetry ports #define MAVLINK_COMM_NUM_BUFFERS 5 diff --git a/libraries/SITL/SIM_FlightAxis.cpp b/libraries/SITL/SIM_FlightAxis.cpp index b2aff331f8d316..0e1a947449e6bb 100644 --- a/libraries/SITL/SIM_FlightAxis.cpp +++ b/libraries/SITL/SIM_FlightAxis.cpp @@ -18,7 +18,7 @@ #include "SIM_FlightAxis.h" -#if HAL_SIM_FLIGHTAXIS_ENABLED +#if AP_SIM_FLIGHTAXIS_ENABLED #include #include @@ -36,6 +36,19 @@ extern const AP_HAL::HAL& hal; using namespace SITL; +const AP_Param::GroupInfo FlightAxis::var_info[] = { + // @Param: OPTS + // @DisplayName: FlightAxis options + // @Description: Bitmask of FlightAxis options + // @Bitmask: 0: Reset position on startup + // @Bitmask: 1: Swap first 4 and last 4 servos (for quadplane testing) + // @Bitmask: 2: Demix heli servos and send roll/pitch/collective/yaw + // @Bitmask: 3: Don't print frame rate stats + // @User: Advanced + AP_GROUPINFO("OPTS", 1, FlightAxis, _options, uint32_t(Option::ResetPosition)), + AP_GROUPEND +}; + /* we use a thread for socket creation to reduce the impact of socket creation latency. These condition variables are used to synchronise @@ -108,10 +121,18 @@ static double timestamp_sec() FlightAxis::FlightAxis(const char *frame_str) : Aircraft(frame_str) { + AP::sitl()->models.flightaxis_ptr = this; + AP_Param::setup_object_defaults(this, var_info); + use_time_sync = false; rate_hz = 250 / target_speedup; - heli_demix = strstr(frame_str, "helidemix") != nullptr; - rev4_servos = strstr(frame_str, "rev4") != nullptr; + if(strstr(frame_str, "helidemix") != nullptr) { + _options.set(_options | uint32_t(Option::HeliDemix)); + } + if(strstr(frame_str, "rev4") != nullptr) { + _options.set(_options | uint32_t(Option::Rev4Servos)); + } + const char *colon = strchr(frame_str, ':'); if (colon) { controller_ip = colon+1; @@ -284,6 +305,15 @@ void FlightAxis::exchange_data(const struct sitl_input &input) )"); soap_request_end(1000); + if(option_is_set(Option::ResetPosition)) { + soap_request_start("ResetAircraft", R"( + + +12 + +)"); + soap_request_end(1000); + } soap_request_start("InjectUAVControllerInterface", R"( @@ -301,7 +331,7 @@ void FlightAxis::exchange_data(const struct sitl_input &input) scaled_servos[i] = (input.servos[i] - 1000) / 1000.0f; } - if (rev4_servos) { + if (option_is_set(Option::Rev4Servos)) { // swap first 4 and last 4 servos, for quadplane testing float saved[4]; memcpy(saved, &scaled_servos[0], sizeof(saved)); @@ -309,7 +339,7 @@ void FlightAxis::exchange_data(const struct sitl_input &input) memcpy(&scaled_servos[4], saved, sizeof(saved)); } - if (heli_demix) { + if (option_is_set(Option::HeliDemix)) { // FlightAxis expects "roll/pitch/collective/yaw" input float swash1 = scaled_servos[0]; float swash2 = scaled_servos[1]; @@ -574,8 +604,10 @@ void FlightAxis::report_FPS(void) uint64_t frames = socket_frame_counter - last_socket_frame_counter; last_socket_frame_counter = socket_frame_counter; double dt = state.m_currentPhysicsTime_SEC - last_frame_count_s; - printf("%.2f/%.2f FPS avg=%.2f glitches=%u\n", - frames / dt, 1000 / dt, 1.0/average_frame_time_s, unsigned(glitch_count)); + if(!option_is_set(Option::SilenceFPS)) { + printf("%.2f/%.2f FPS avg=%.2f glitches=%u\n", + frames / dt, 1000 / dt, 1.0/average_frame_time_s, unsigned(glitch_count)); + } } else { printf("Initial position %f %f %f\n", position.x, position.y, position.z); } @@ -615,4 +647,4 @@ void FlightAxis::socket_creator(void) } } -#endif // HAL_SIM_FLIGHTAXIS_ENABLED +#endif // AP_SIM_FLIGHTAXIS_ENABLED diff --git a/libraries/SITL/SIM_FlightAxis.h b/libraries/SITL/SIM_FlightAxis.h index c8fcd97c19d525..276a2aa69c20d3 100644 --- a/libraries/SITL/SIM_FlightAxis.h +++ b/libraries/SITL/SIM_FlightAxis.h @@ -19,12 +19,9 @@ #pragma once #include +#include "SIM_config.h" -#ifndef HAL_SIM_FLIGHTAXIS_ENABLED -#define HAL_SIM_FLIGHTAXIS_ENABLED (CONFIG_HAL_BOARD == HAL_BOARD_SITL) -#endif - -#if HAL_SIM_FLIGHTAXIS_ENABLED +#if AP_SIM_FLIGHTAXIS_ENABLED #include @@ -39,6 +36,8 @@ class FlightAxis : public Aircraft { public: FlightAxis(const char *frame_str); + static const struct AP_Param::GroupInfo var_info[]; + /* update model by one time step */ void update(const struct sitl_input &input) override; @@ -175,12 +174,24 @@ class FlightAxis : public Aircraft { struct sitl_input last_input; + AP_Int32 _options; + + enum class Option : uint32_t{ + ResetPosition = (1U<<0), + Rev4Servos = (1U<<1), + HeliDemix = (1U<<2), + SilenceFPS = (1U<<3), + }; + + // return true if an option is set + bool option_is_set(Option option) const { + return (uint32_t(option) & uint32_t(_options)) != 0; + } + double average_frame_time_s; double extrapolated_s; double initial_time_s; double last_time_s; - bool heli_demix; - bool rev4_servos; bool controller_started; uint32_t glitch_count; uint64_t frame_counter; @@ -204,4 +215,4 @@ class FlightAxis : public Aircraft { } // namespace SITL -#endif // HAL_SIM_FLIGHTAXIS_ENABLED +#endif // AP_SIM_FLIGHTAXIS_ENABLED diff --git a/libraries/SITL/SIM_config.h b/libraries/SITL/SIM_config.h index aa281c45f753a7..91956ad90c2aef 100644 --- a/libraries/SITL/SIM_config.h +++ b/libraries/SITL/SIM_config.h @@ -55,6 +55,10 @@ #define AP_SIM_SLUNGPAYLOAD_ENABLED (CONFIG_HAL_BOARD == HAL_BOARD_SITL) #endif +#ifndef AP_SIM_FLIGHTAXIS_ENABLED +#define AP_SIM_FLIGHTAXIS_ENABLED (CONFIG_HAL_BOARD == HAL_BOARD_SITL) +#endif + #ifndef AP_SIM_TSYS03_ENABLED #define AP_SIM_TSYS03_ENABLED (CONFIG_HAL_BOARD == HAL_BOARD_SITL) #endif diff --git a/libraries/SITL/SITL.cpp b/libraries/SITL/SITL.cpp index 970fdd6a52f41a..1ff14520b72df9 100644 --- a/libraries/SITL/SITL.cpp +++ b/libraries/SITL/SITL.cpp @@ -39,6 +39,7 @@ #include "SIM_StratoBlimp.h" #include "SIM_Glider.h" +#include "SIM_FlightAxis.h" extern const AP_HAL::HAL& hal; @@ -1487,6 +1488,12 @@ const AP_Param::GroupInfo SIM::ModelParm::var_info[] = { AP_SUBGROUPINFO(slung_payload_sim, "SLUP_", 4, SIM::ModelParm, SlungPayloadSim), #endif +#if AP_SIM_FLIGHTAXIS_ENABLED + // @Group: RFL_ + // @Path: ./SIM_FlightAxis.cpp + AP_SUBGROUPPTR(flightaxis_ptr, "RFL_", 5, SIM::ModelParm, FlightAxis), +#endif + AP_GROUPEND }; diff --git a/libraries/SITL/SITL.h b/libraries/SITL/SITL.h index d3ad9ebbd962aa..e23b2f6144791b 100644 --- a/libraries/SITL/SITL.h +++ b/libraries/SITL/SITL.h @@ -51,6 +51,7 @@ struct float_array { class StratoBlimp; class Glider; +class FlightAxis; struct sitl_fdm { // this is the structure passed between FDM models and the main SITL code @@ -326,6 +327,9 @@ class SIM { #endif #if AP_SIM_SLUNGPAYLOAD_ENABLED SlungPayloadSim slung_payload_sim; +#endif +#if AP_SIM_FLIGHTAXIS_ENABLED + FlightAxis *flightaxis_ptr; #endif }; ModelParm models; diff --git a/modules/mavlink b/modules/mavlink index cdfe7a82380b4d..83e75ffdb2709f 160000 --- a/modules/mavlink +++ b/modules/mavlink @@ -1 +1 @@ -Subproject commit cdfe7a82380b4dae477cf5fac2fe0089817ac560 +Subproject commit 83e75ffdb2709f4821b9746477639e2ae6df103f diff --git a/modules/waf b/modules/waf index b25b5c7d98c502..35eadbb64e2052 160000 --- a/modules/waf +++ b/modules/waf @@ -1 +1 @@ -Subproject commit b25b5c7d98c502b07976740b0a65b9f39948c292 +Subproject commit 35eadbb64e2052099a853b571e507c33032b392c diff --git a/wscript b/wscript index 89ab8961fb3214..f400c74cdb7ee3 100644 --- a/wscript +++ b/wscript @@ -506,6 +506,9 @@ def configure(cfg): cfg.env.ENABLE_STATS = cfg.options.enable_stats cfg.env.SAVE_TEMPS = cfg.options.save_temps + extra_hwdef = cfg.options.extra_hwdef + if extra_hwdef is not None and not os.path.exists(extra_hwdef): + raise FileNotFoundError(f"extra-hwdef file NOT found: '{cfg.options.extra_hwdef}'") cfg.env.HWDEF_EXTRA = cfg.options.extra_hwdef if cfg.env.HWDEF_EXTRA: cfg.env.HWDEF_EXTRA = os.path.abspath(cfg.env.HWDEF_EXTRA)