diff --git a/.github/workflows/cygwin_build.yml b/.github/workflows/cygwin_build.yml index 5c28e5c64a768..b8b9c5da3006e 100644 --- a/.github/workflows/cygwin_build.yml +++ b/.github/workflows/cygwin_build.yml @@ -169,7 +169,7 @@ jobs: CYGPATH_GITHUB_WORKSPACE=$(cygpath -u "$GITHUB_WORKSPACE") && mkdir -p "${CYGPATH_GITHUB_WORKSPACE}/ccache" && mkdir -p /usr/local/etc && - echo "export CCACHE_SLOPPINESS=file_stat_matches" >> ~/ccache.conf && + echo "export CCACHE_SLOPPINESS=file_stat_matches,include_file_ctime,include_file_mtime,time_macros" >> ~/ccache.conf && echo "export CCACHE_DIR=${CYGPATH_GITHUB_WORKSPACE}/ccache" >> ~/ccache.conf && echo "export CCACHE_BASEDIR=${CYGPATH_GITHUB_WORKSPACE}" >> ~/ccache.conf && echo "export CCACHE_COMPRESS=1" >> ~/ccache.conf && @@ -178,6 +178,8 @@ jobs: source ~/ccache.conf && ccache -s - uses: ./.github/actions/setup-ccache + with: + key-suffix: cygwin-sitl - name: Prepare Python environment env: PATH: /usr/bin:$(cygpath ${SYSTEMROOT})/system32 diff --git a/.github/workflows/test_linux_sbc.yml b/.github/workflows/test_linux_sbc.yml index 4bc4dd4b91536..faf402aba6fc5 100644 --- a/.github/workflows/test_linux_sbc.yml +++ b/.github/workflows/test_linux_sbc.yml @@ -169,8 +169,6 @@ jobs: toolchain: base # GCC - config: navigator64 toolchain: aarch64 - - config: linux - toolchain: base # GCC - config: t3-gem-o1 toolchain: aarch64 exclude: diff --git a/.github/workflows/test_size.yml b/.github/workflows/test_size.yml index a328045fdf015..022244534ed90 100644 --- a/.github/workflows/test_size.yml +++ b/.github/workflows/test_size.yml @@ -378,6 +378,7 @@ jobs: if: always() permissions: contents: read + pull-requests: write steps: - uses: actions/checkout@v6 with: @@ -394,4 +395,22 @@ jobs: run: | mkdir -p size-diffs/ python3 Tools/scripts/build_tests/global_size_summary.py \ - --input-dir size-diffs/ >> $GITHUB_STEP_SUMMARY + --input-dir size-diffs/ | tee /tmp/size-summary.md >> $GITHUB_STEP_SUMMARY + + - name: Post size table to PR + if: github.event_name == 'pull_request' + env: + GH_TOKEN: ${{ github.token }} + run: | + MARKER="" + { echo "$MARKER"; cat /tmp/size-summary.md; } > /tmp/full-comment.md + PR=${{ github.event.pull_request.number }} + EXISTING=$(gh api "repos/${{ github.repository }}/issues/${PR}/comments" \ + --jq "[.[] | select(.body | startswith(\"${MARKER}\"))][0].id // empty") + if [ -n "$EXISTING" ]; then + gh api "repos/${{ github.repository }}/issues/comments/${EXISTING}" \ + -X PATCH --field body=@/tmp/full-comment.md + else + gh api "repos/${{ github.repository }}/issues/${PR}/comments" \ + -X POST --field body=@/tmp/full-comment.md + fi diff --git a/Tools/AP_Bootloader/board_types.txt b/Tools/AP_Bootloader/board_types.txt index b4b97f13f84ef..a6476810ffc85 100644 --- a/Tools/AP_Bootloader/board_types.txt +++ b/Tools/AP_Bootloader/board_types.txt @@ -65,6 +65,9 @@ Reserved "GUMSTIX [BL] FMU v6" 54 Reserved "ARK CAN FLOW" 80 Reserved "NXP ucans32k146" 34 +# IDs 110-119 reserved for Syro +TARGET_HW_SYRO_V6X 110 + # values from external vendors EXT_HW_RADIOLINK_MINI_PIX 3 @@ -504,7 +507,8 @@ AP_HW_TBS_LUCID_PRO 5251 AP_HW_TBS_L431_PERIPH 5252 AP_HW_TBS_LUCID_H7_WING 5253 AP_HW_TBS_LUCID_H7_WING_AIO 5254 -AP_HW_TBS_LUCID_H7V3 5256 +AP_HW_TBS_LUCID_H7_OEM 5255 +AP_HW_TBS_LUCID_H7V3 5256 # IDs 5270-5279 reserved for SpeedyBee AP_HW_SpeedyBeeF405WINGV2 5270 diff --git a/Tools/autotest/arducopter.py b/Tools/autotest/arducopter.py index 6df4786e9626c..60af6da4a235c 100644 --- a/Tools/autotest/arducopter.py +++ b/Tools/autotest/arducopter.py @@ -13438,6 +13438,83 @@ def GPSForYaw(self): raise NotAchievedException("Expected to get GPS-from-yaw (want %f got %f)" % (want, m.yaw)) self.wait_ready_to_arm() + def GPS_INPUT(self): + '''Test GPS data injected via the GPS_INPUT MAVLink message (GPS_TYPE=MAV)''' + # feed the first GPS instance over MAVLink rather than a simulated + # serial backend. Disable the simulated serial GPS so the only GPS + # data ArduPilot sees is what we inject below: + self.set_parameters({ + "GPS1_TYPE": 14, # MAV + "SIM_GPS1_ENABLE": 0, # no simulated serial GPS + }) + self.reboot_sitl() + + # we will echo the simulator's true state back as GPS_INPUT, so make + # sure SIM_STATE (which carries truth lat/lng/alt/velocity) is streamed: + self.context_set_message_rate_hz(mavutil.mavlink.MAVLINK_MSG_ID_SIM_STATE, 10) + + class GPSInputFeeder(vehicle_test_suite.TestSuite.MessageHook): + '''emit a GPS_INPUT message for each SIM_STATE, pretending to be a + companion computer supplying the GPS solution''' + def __init__(self, suite): + super().__init__(suite) + self.count = 0 + + def progress_prefix(self): + return "GPSIN: " + + def process(self, mav, m): + if m.get_type() != 'SIM_STATE': + return + self.count += 1 + now_s = self.suite.get_sim_time_cached() + # an arbitrary but valid GPS week and ms-of-week; ArduPilot + # only requires week>0 and fix>=3 to apply jitter correction: + time_week = 2345 + time_week_ms = int(now_s * 1000) % (7 * 86400 * 1000) + mav.mav.gps_input_send( + int(now_s * 1e6), # time_usec + 0, # gps_id (first instance) + 0, # ignore_flags: 0 == every field is valid + time_week_ms, + time_week, + 3, # fix_type: 3D fix + m.lat_int, # 1e7 degrees + m.lon_int, # 1e7 degrees + m.alt, # metres + 1.0, # hdop + 1.5, # vdop + m.vn, m.ve, m.vd, # NED velocity, m/s + 0.2, # speed_accuracy, m/s + 0.5, # horiz_accuracy, m + 0.8, # vert_accuracy, m + 15, # satellites_visible + 0, # yaw (0 == not provided) + ) + + feeder = GPSInputFeeder(self) + self.install_message_hook_context(feeder) + + # confirm ArduPilot consumed the injected GPS: + self.wait_gps_fix_type_gte(3, timeout=60, verbose=True) + self.wait_gps_satellite_count("GPS_RAW_INT", 15, timeout=30) + + # the EKF should accept the MAVLink GPS and allow arming: + self.wait_ready_to_arm() + + # the estimated position should track the truth we are feeding in: + self.install_message_hook_context( + vehicle_test_suite.TestSuite.ValidateGlobalPositionIntAgainstSimState(self, max_allowed_divergence=25)) + + # and we should be able to fly under position control: + self.takeoff(10, mode='GUIDED') + self.fly_guided_move_local(20, 0, 10) + self.do_RTL() + + if feeder.count == 0: + raise NotAchievedException("Never sent any GPS_INPUT messages") + self.progress("Sent %u GPS_INPUT messages" % feeder.count) + def SMART_RTL_EnterLeave(self): '''check SmartRTL behaviour when entering/leaving''' # we had a bug where we would consume points when re-entering smartrtl @@ -17822,6 +17899,7 @@ def tests2b(self): # this block currently around 9.5mins here self.DO_WINCH, self.SensorErrorFlags, self.GPSForYaw, + self.GPS_INPUT, self.DefaultIntervalsFromFiles, self.GPSTypes, self.MultipleGPS, diff --git a/Tools/autotest/arduplane.py b/Tools/autotest/arduplane.py index ac6bae5a1ee33..422b14959e138 100644 --- a/Tools/autotest/arduplane.py +++ b/Tools/autotest/arduplane.py @@ -7319,7 +7319,6 @@ def MAV_CMD_EXTERNAL_WIND_ESTIMATE(self): def LoggedNamedValueFloat(self): '''ensure that sent named value floats are logged''' - self.context_push() self.install_example_script_context('simple_loop.lua') self.set_parameters({ 'SCR_ENABLE': 1, @@ -7331,16 +7330,33 @@ def LoggedNamedValueFloat(self): "name": "Lua Float", }) dfreader = self.dfreader_for_current_onboard_log() - self.context_pop() m = dfreader.recv_match(type='NVF') if m is None: raise NotAchievedException("Did not find NVF message") self.progress(f"Received NVF with value {m.Value}") + def LoggedNamedValueInt(self): + '''ensure that sent named value ints are logged''' + self.install_example_script_context('simple_loop.lua') + self.set_parameters({ + 'SCR_ENABLE': 1, + }) + self.reboot_sitl() + self.wait_ready_to_arm() + self.wait_statustext('hello, world') + m = self.assert_received_message_field_values('NAMED_VALUE_INT', { + "name": "Lua Int", + }) + dfreader = self.dfreader_for_current_onboard_log() + + m = dfreader.recv_match(type='NVI') + if m is None: + raise NotAchievedException("Did not find NVI message") + self.progress(f"Received NVI with value {m.Value}") + def LoggedNamedValueString(self): '''ensure that sent named value strings are logged''' - self.context_push() self.install_example_script_context('simple_named_string.lua') self.set_parameters({ 'SCR_ENABLE': 1, @@ -7352,7 +7368,6 @@ def LoggedNamedValueString(self): "value": "Lua String Value", }) dfreader = self.dfreader_for_current_onboard_log() - self.context_pop() m = dfreader.recv_match(type='NVS') if m is None: @@ -8459,6 +8474,7 @@ def tests1b(self): self.mavlink_AIRSPEED, self.Volz, self.LoggedNamedValueFloat, + self.LoggedNamedValueInt, self.LoggedNamedValueString, self.AdvancedFailsafeBadBaro, self.DO_CHANGE_ALTITUDE, diff --git a/Tools/autotest/helicopter.py b/Tools/autotest/helicopter.py index ccded3a8a30ad..29d32ea1fc563 100644 --- a/Tools/autotest/helicopter.py +++ b/Tools/autotest/helicopter.py @@ -278,24 +278,28 @@ def HeliQuadFlip(self): # shaping cannot recover cleanly self.ModeFlip(do_pitch_flip=False) - def HeliQuadInvertedFlight(self): - '''fly inverted on collective-pitch quad frame''' - self.customise_SITL_commandline( - [], - defaults_filepath=self.model_defaults_filepath('heli-quad'), - model="heli-quad:@ROMFS/models/heliquad.json", - wipe=True, - ) + def fly_inverted_flight(self, collective_servos=None, yaw_tolerance=20): + '''engage inverted flight from a hover in ALT_HOLD and verify that the + vehicle stays inverted and holds altitude, then recover. Assumes the + frame has already been set up and the vehicle is disarmed. If + collective_servos is given those servo channels must reach negative + blade pitch (PWM below mid) while inverted. yaw_tolerance is the + allowed heading drift in degrees, or None to not check heading (a + single tail rotor re-trims when inverted and drifts slowly).''' rc_option_inverted = 43 self.set_parameter("RC10_OPTION", rc_option_inverted) self.set_rc(10, 1000) + # clear any interlock/throttle override left over from a previous + # frame's attempt, so the vehicle can pass its arming checks + self.zero_throttle() + self.set_rc(8, 1000) self.takeoff(30, mode='ALT_HOLD') self.progress("Engaging inverted flight") self.set_rc(10, 2000) tstart = self.get_sim_time() while True: - if self.get_sim_time_cached() - tstart > 10: + if self.get_sim_time_cached() - tstart > 15: raise NotAchievedException("Did not roll inverted") m = self.assert_receive_message('ATTITUDE') if abs(math.degrees(m.roll)) > 150: @@ -312,22 +316,61 @@ def HeliQuadInvertedFlight(self): roll_deg = math.degrees(m.roll) if abs(roll_deg) < 150: raise NotAchievedException(f"Did not stay inverted (roll {roll_deg:.1f})") - yaw_err = (math.degrees(m.yaw) - hold_yaw_deg + 180) % 360 - 180 - if abs(yaw_err) > 20: - raise NotAchievedException(f"Did not hold heading while inverted (err {yaw_err:.1f}deg)") + if yaw_tolerance is not None: + yaw_err = (math.degrees(m.yaw) - hold_yaw_deg + 180) % 360 - 180 + if abs(yaw_err) > yaw_tolerance: + raise NotAchievedException(f"Did not hold heading while inverted (err {yaw_err:.1f}deg)") alt = self.get_altitude(relative=True) if abs(alt - hold_alt) > 5: raise NotAchievedException(f"Lost altitude while inverted ({alt:.1f}m vs {hold_alt:.1f}m)") - servo = self.assert_receive_message('SERVO_OUTPUT_RAW') - for n in 1, 2, 3, 4: - max_collective = max(max_collective, getattr(servo, f"servo{n}_raw")) - if max_collective >= 1500: + if collective_servos is not None: + servo = self.assert_receive_message('SERVO_OUTPUT_RAW') + for n in collective_servos: + max_collective = max(max_collective, getattr(servo, f"servo{n}_raw")) + if collective_servos is not None and max_collective >= 1500: raise NotAchievedException("Rotor not at negative collective while inverted (max %u)" % max_collective) - self.progress("Inverted flight held altitude and heading, max collective PWM %u" % max_collective) + self.progress("Inverted flight held altitude and heading") self.progress("Disengaging inverted flight") self.set_rc(10, 1000) self.wait_attitude(desroll=0, despitch=0, tolerance=10, timeout=15) + + def HeliQuadInvertedFlight(self): + '''fly inverted on collective-pitch quad frame''' + self.customise_SITL_commandline( + [], + defaults_filepath=self.model_defaults_filepath('heli-quad'), + model="heli-quad:@ROMFS/models/heliquad.json", + wipe=True, + ) + # the four collective servos must swing to negative blade pitch + self.fly_inverted_flight(collective_servos=(1, 2, 3, 4)) + self.do_RTL() + + def HeliSingleInvertedFlight(self): + '''attempt inverted flight on heli single frame and check the set that + succeeds matches expectations''' + # parameters that let the traditional heli frames push the collective + # negative far enough to hold inverted flight; set for this test only. + # IM_STB_COL_* only affect STABILIZE collective; the maneuver flies in + # ALT_HOLD so they are belt-and-braces. + inverted_params = { + "H_COL_MIN": 1260, + "H_COL_ANG_MIN": -12, + "ATC_RATE_R_MAX": 120, + "ATC_RATE_P_MAX": 120, + "IM_STB_COL_1": 40, + "IM_STB_COL_2": 70, + "IM_STB_COL_3": 80, + } + self.customise_SITL_commandline( + [], + defaults_filepath=self.model_defaults_filepath('heli'), + model="heli", + wipe=True, + ) + self.set_parameters(inverted_params) + self.fly_inverted_flight(yaw_tolerance=30) self.do_RTL() def hover(self): @@ -1328,6 +1371,7 @@ def tests(self): self.HeliQuad, self.HeliQuadFlip, self.HeliQuadInvertedFlight, + self.HeliSingleInvertedFlight, self.MountFailsafeAction, self.StickArmingRequiresZeroThrottle, ]) diff --git a/Tools/autotest/vehicle_test_suite.py b/Tools/autotest/vehicle_test_suite.py index 99f17feaef766..30f5a11ca3634 100644 --- a/Tools/autotest/vehicle_test_suite.py +++ b/Tools/autotest/vehicle_test_suite.py @@ -13135,7 +13135,11 @@ def download_parameters(self, target_system, target_component): (count, attempt_count)) return (seen_ids, id_seq) - def test_parameters_download(self): + def ParametersDownload(self): + '''check parameter download gives a consistent result''' + if self.is_balancebot(): + # same binary and parameters as Rover + return self.start_subtest("parameter download") target_system = self.sysid_thismav() target_component = 1 @@ -13172,12 +13176,23 @@ def test_enable_parameter(self): raise NotAchievedException("Enable parameter did not increase no of parameters downloaded") self.end_subsubtest("enable download") - def test_parameters_mis_total(self): - self.start_subsubtest("parameter mis_total") + def ParametersMIS_TOTAL(self): + '''check the GCS cannot set the internal-use-only MIS_TOTAL parameter''' + if self.is_balancebot(): + # same binary and parameters as Rover + return if self.is_tracker(): # uses CMD_TOTAL not MIS_TOTAL, and it's in a scalr not a # group and it's generally all bad. return + # Disable the simulated GPS and reboot so the EKF never establishes + # home during this test. When home is set, AP_AHRS::set_home() calls + # AP_Mission::write_home_to_storage(), which bumps MIS_TOTAL from 0 to + # 1. If that landed between the reads below the test would + # intermittently fail with "Total has changed". + self.set_parameters({"SIM_GPS1_ENABLE": 0}) + self.reboot_sitl() + self.start_subtest("Ensure GCS is not able to set MIS_TOTAL") old_mt = self.get_parameter("MIS_TOTAL", attempts=20) # retries to avoid seeming race condition with MAVProxy ex = None @@ -13237,22 +13252,16 @@ def test_subgroupvarptr_annotated(self): if failures: raise NotAchievedException("AP_SUBGROUPVARPTR entries missing @Group:/@Path: annotations") - def test_parameter_documentation(self): + def ParameterDocumentation(self): '''ensure parameter documentation is valid''' + if self.is_balancebot(): + # same binary and parameters as Rover + return self.start_subsubtest("Check all parameters are documented") self.test_parameter_documentation_get_all_parameters() self.start_subsubtest("Check AP_SUBGROUPVARPTR entries have documentation annotations") self.test_subgroupvarptr_annotated() - def Parameters(self): - '''general small tests for parameter system''' - if self.is_balancebot(): - # same binary and parameters as Rover - return - self.test_parameter_documentation() - self.test_parameters_mis_total() - self.test_parameters_download() - def disabled_tests(self): return {} @@ -16275,7 +16284,9 @@ def tests(self): self.SetHome, self.ConfigErrorLoop, self.CPUFailsafe, - self.Parameters, + self.ParameterDocumentation, + self.ParametersMIS_TOTAL, + self.ParametersDownload, self.LoggerDocumentation, self.Logging, self.GetCapabilities, diff --git a/Tools/bootloaders/CORVON743V2_bl.bin b/Tools/bootloaders/CORVON743V2_bl.bin new file mode 100755 index 0000000000000..a8fb5c4184900 Binary files /dev/null and b/Tools/bootloaders/CORVON743V2_bl.bin differ diff --git a/Tools/bootloaders/CORVON743V2_bl.hex b/Tools/bootloaders/CORVON743V2_bl.hex new file mode 100644 index 0000000000000..c80fe421c5b25 --- /dev/null +++ b/Tools/bootloaders/CORVON743V2_bl.hex @@ -0,0 +1,2490 @@ +:020000040800F2 +:1000000000060020E1020008E3020008E302000805 +:10001000E3020008E3020008E3020008E30200082C +:10002000E3020008E3020008E30200087977000811 +:10003000E3020008E3020008E3020008E30200080C +:10004000E3020008E3020008E3020008E3020008FC +:10005000E3020008E3020008E3020008E3020008EC +:10006000E3020008E3020008E30200083147000849 +:100070005947000885470008B1470008DD470008D8 +:100080000548000831480008E3020008E3020008C0 +:10009000E3020008E3020008E3020008E3020008AC +:1000A000E3020008E3020008E3020008E30200089C +:1000B000E3020008E3020008E3020008E30200088C +:1000C000E3020008E3020008E3020008E30200087C +:1000D000E302000899860008E3020008E302000832 +:1000E000E3020008E3020008E3020008E30200085C +:1000F000E3020008E3020008E30200085D4800088C +:10010000E302000885860008AD860008E3020008C7 +:10011000E3020008E3020008E3020008E30200082B +:1001200089480008B1480008DD480008094900086E +:1001300035490008E3020008E3020008E302000872 +:10014000E3020008E3020008E3020008E3020008FB +:100150005D49000889490008B5490008E302000824 +:10016000E3020008E3020008E3020008E3020008DB +:10017000E302000865830008E3020008E3020008C8 +:10018000E3020008E3020008E3020008E3020008BB +:10019000E3020008E3020008E3020008E3020008AB +:1001A000E3020008E3020008E3020008E30200089B +:1001B000E3020008E3020008E3020008E30200088B +:1001C000E3020008E3020008E3020008E30200087B +:1001D000E302000851830008E3020008E30200087C +:1001E000E3020008E3020008E3020008E30200085B +:1001F000E3020008E3020008E3020008E30200084B +:10020000E3020008E3020008E3020008E30200083A +:10021000E3020008E3020008E3020008E30200082A +:10022000E3020008E3020008E3020008E30200081A +:10023000E3020008E3020008E3020008E30200080A +:10024000E3020008E3020008E3020008E3020008FA +:10025000E3020008E3020008E3020008E3020008EA +:10026000E3020008E3020008E3020008E3020008DA +:10027000E3020008E3020008E3020008E3020008CA +:10028000E3020008E3020008E3020008E3020008BA +:10029000E3020008E3020008E3020008E3020008AA +:1002A000E3020008E3020008E3020008E30200089A +:1002B000E3020008E3020008E3020008E30200088A +:1002C000E3020008E3020008E3020008E30200087A +:1002D000E3020008E3020008E3020008E30200086A +:1002E00002E000F000F8FEE772B6374880F30888B5 +:1002F000364880F3098836483649086040F20000E5 +:10030000CCF200004EF63471CEF200010860BFF36B +:100310004F8FBFF36F8F40F20000C0F2F0004EF637 +:100320008851CEF200010860BFF34F8FBFF36F8F8B +:100330004FF00000E1EE100A4EF63C71CEF20001E3 +:100340000860062080F31488BFF36F8F07F076FAF9 +:1003500006F0E8FB4FF055301F491B4A91423CBF65 +:1003600041F8040BFAE71D49184A91423CBF41F895 +:10037000040BFAE71A491B4A1B4B9A423EBF51F83D +:10038000040B42F8040BF8E700201849184A914280 +:100390003CBF41F8040BFAE707F08EFA06F046FC82 +:1003A000144C154DAC4203DA54F8041B8847F9E7A6 +:1003B00000F0C4F9114C124DAC4203DA54F8041B9E +:1003C0008847F9E707F076BA0006002000220020EF +:1003D0000000000808ED00E00000002000060020FA +:1003E000089B0008002200206C22002070220020C0 +:1003F000D45D0020E0020008E0020008E0020008EE +:10040000E00200082DE9F04F2DED108AC1F80CD064 +:10041000D0F80CD0BDEC108ABDE8F08F002383F338 +:1004200011882846A047002006F05EF9FEE706F096 +:10043000B1F800DFFEE7000053B94AB9002908BF50 +:1004400000281CBF4FF0FF314FF0FF3000F074B9AF +:10045000ADF1080C6DE904CE00F006F8DDF804E01B +:10046000DDE9022304B070472DE9F047089D0446FA +:100470008E46002B4DD18A42944669D9B2FA82F257 +:1004800052B101FA02F3C2F1200120FA01F10CFA93 +:1004900002FC41EA030E94404FEA1C48210CBEFBCB +:1004A000F8F61FFA8CF708FB16E341EA034306FB54 +:1004B00007F199420AD91CEB030306F1FF3080F0E3 +:1004C0001F81994240F21C81023E63445B1AA4B230 +:1004D000B3FBF8F008FB103344EA034400FB07F7D2 +:1004E000A7420AD91CEB040400F1FF3380F00A8113 +:1004F000A74240F207816444023840EA0640E41B08 +:1005000000261DB1D4400023C5E900433146BDE8B3 +:10051000F0878B4209D9002D00F0EF800026C5E955 +:10052000000130463146BDE8F087B3FA83F6002E6D +:100530004AD18B4202D3824200F2F980841A61EBE5 +:10054000030301209E46002DE0D0C5E9004EDDE703 +:1005500002B9FFDEB2FA82F2002A40F09280A1EBEB +:100560000C014FEA1C471FFA8CFE0126200CB1FB40 +:10057000F7F307FB131140EA01410EFB03F0884239 +:1005800008D91CEB010103F1FF3802D2884200F2C6 +:10059000CB804346091AA4B2B1FBF7F007FB101158 +:1005A00044EA01440EFB00FEA64508D91CEB0404F6 +:1005B00000F1FF3102D2A64500F2BB800846A4EB51 +:1005C0000E0440EA03409CE7C6F12007B34022FA3C +:1005D00007FC4CEA030C20FA07F401FA06F31C436B +:1005E000F9404FEA1C4900FA06F3B1FBF9F8200C78 +:1005F0001FFA8CFE09FB181140EA014108FB0EF0BE +:10060000884202FA06F20BD91CEB010108F1FF3A0D +:1006100080F08880884240F28580A8F10208614419 +:10062000091AA4B2B1FBF9F009FB101144EA014127 +:1006300000FB0EFE8E4508D91CEB010100F1FF34D2 +:100640006CD28E456AD90238614440EA0840A0FB6A +:100650000294A1EB0E01A142C846A64656D353D040 +:100660005DB1B3EB080261EB0E0101FA07F722FA64 +:1006700006F3F1401F43C5E9007100263146BDE88D +:10068000F087C2F12003D8400CFA02FC21FA03F3F0 +:10069000914001434FEA1C471FFA8CFEB3FBF7F071 +:1006A00007FB10360B0C43EA064300FB0EF69E4296 +:1006B00004FA02F408D91CEB030300F1FF382FD22F +:1006C0009E422DD9023863449B1B89B2B3FBF7F6D7 +:1006D00007FB163341EA034106FB0EF38B4208D9B0 +:1006E0001CEB010106F1FF3816D28B4214D9023EF1 +:1006F0006144C91A46EA004638E72E46284605E70F +:100700000646E3E61846F8E64B45A9D2B9EB0208DF +:1007100064EB0C0E0138A3E74646EAE7204694E76F +:100720004046D1E7D0467BE7023B614432E73046A2 +:1007300009E76444023842E7704700BF38B501F06A +:1007400079FA01F049FC06F013FF054607F006F8B8 +:100750000446D0B90F4B9D4219D001339D4241F25E +:10076000883504BF01240025002006F00BFF0CB1E2 +:1007700000F076F801F0CEFB00F012FD08B100F0B9 +:100780006FF8284600F01AF9F9E70025ECE705466E +:10079000EAE700BF010007B008B501F017FAA0F1C1 +:1007A00020035842584108BD07B5042101900DEBC4 +:1007B000010001F029FA03B05DF804FB38B53023DD +:1007C00083F31188174803680BB106F071F8002312 +:1007D000154A4FF47A71134806F060F8002383F34A +:1007E0001188124C236813B12368013B23606368AE +:1007F00013B16368013B63600D4D2B7833B96368B7 +:100800007BB9022001F0E8FA322363602B78032BD6 +:1008100007D163682BB9022001F0DEFA4FF47A7336 +:10082000636038BD70220020BD07000890230020BF +:1008300088220020084B187003280CD8DFE800F04D +:1008400008050208022001F0B9BA022001F0A6BA98 +:10085000024B00225A60704788220020902300201B +:10086000F8B5504B504A1C461968013100F0998088 +:1008700004339342F8D162684C4B9A4240F2918023 +:100880004B4B9B6803F1006303F500339A4280F001 +:100890008880002001F0F4F90220FFF7CBFF454BE0 +:1008A0000021D3F8E820C3F8E810D3F81021C3F8EA +:1008B0001011D3F81021D3F8EC20C3F8EC10D3F8C2 +:1008C0001421C3F81411D3F81421D3F8F020C3F87D +:1008D000F010D3F81821C3F81811D3F81821D3F861 +:1008E000802042F00062C3F88020D3F8802022F0FC +:1008F0000062C3F88020D3F88020D3F8802042F033 +:100900000072C3F88020D3F8802022F00072C3F870 +:100910008020D3F8803072B64FF0E023C3F8084D42 +:10092000D4E90004BFF34F8FBFF36F8F224AC2F8A0 +:100930008410BFF34F8F536923F480335361BFF3A7 +:100940004F8FD2F8803043F6E076C3F3C905C3F386 +:100950004E335B0103EA060C29464CEA81770139E4 +:10096000C2F87472F9D2203B13F1200FF2D1BFF319 +:100970004F8FBFF36F8FBFF34F8FBFF36F8F5369ED +:1009800023F4003353610023C2F85032BFF34F8F7A +:10099000BFF36F8F302383F31188854680F3088877 +:1009A0002047F8BD0000020820000208FFFF0108F0 +:1009B000002200200044025800ED00E02DE9F04F35 +:1009C00095B0DFF8D8922022FF21029004A8D9F830 +:1009D000085001F049FAA84A1378A3B90121A748A1 +:1009E00011700360302383F3118803680BB105F0A5 +:1009F0005FFF0023A24A4FF47A71A04805F04EFF32 +:100A0000002383F31188029B13B19E4B029A1A6054 +:100A10009D4A1378032B03D000231370994A536027 +:100A20004FF0000B029C5E46DA46CDF804B0012080 +:100A300001F0C4F924B1934B1B68002B00F028820D +:100A4000002001F0C3F8B0F10008F3DB012001F051 +:100A5000A5F9A8F121031F2BE9D801A252F823F030 +:100A6000E10A0008FD0A00088B0B00082F0A0008A5 +:100A70002F0A00082F0A0008150C0008070E0008AE +:100A8000F90C0008550D00087B0D0008A10D0008A9 +:100A90002F0A0008B30D0008D70D00084F0E0008FC +:100AA000690B00082F0A0008970E0008ED0A0008DD +:100AB000690B00082F0A0008550D00082F0A0008CE +:100AC0002F0A00082F0A00082F0A00082F0A000822 +:100AD0002F0A00082F0A00082F0A00088B0B0008B5 +:100AE0000220FFF759FE002840F0FF81029B0221FF +:100AF0006648BBF1000F08BF1C4640E04FF47A7017 +:100B000001F064F8071EF1DB0220FFF745FE002824 +:100B1000ECD0013F052F00F2EA81DFE807F0030780 +:100B20000A0D10330520FFF73FFE14E0D9F800004E +:100B3000F9E7D9F80400F6E7D9F80800F3E74FF031 +:100B40001C08404608F1040801F09CF8FFF72CFE51 +:100B5000B8F12C0FF5D10120019B4FF0000A00FAEB +:100B600007F71F43FBB2019301F0CAF92EB1019BB5 +:100B700003F00B030B2B08BF00240221444801F0B3 +:100B800043F854E7D9F80C00CDE7002EAED0019B16 +:100B900003F00B030B2BA9D10220FFF7FDFD074645 +:100BA0000028A3D00120002601F06AF80220FFF7F8 +:100BB00041FE1FFA86FB584601F072F8044688B1E0 +:100BC000A8F14002584601365142514101F078F8EF +:100BD0000028EED1BB46044602212E483E4601F0D5 +:100BE00013F824E725460120FFF724FED9F8083042 +:100BF000AB4207D9284601F045F8013040F07A8130 +:100C00000435F3E70025204BBB463E461D701D4BC7 +:100C10005D60A9E7002E3FF469AF019B03F00B0371 +:100C20000B2B7FF463AF0220FFF704FE322000F0AD +:100C3000CDFFB0F10008FFF659AF18F003077FF4BD +:100C400055AF08EB0503D9F8082093423FF64EAFA5 +:100C5000B8F5807F3FF74AAF0F4BB84503931FDDD0 +:100C60004FF47A7000F0B2FF0028FFF63FAF039B0D +:100C7000013703F8010BF0E78C23002070220020DD +:100C8000BD0700089023002088220020BC900008A7 +:100C9000B4900008B89000088C22002000220020A8 +:100CA000C820FFF779FD074600283FF41FAF1F2D2E +:100CB00011D8C5F1200204AB25F003008F4942454D +:100CC000184428BF4246039201F0A8F8039AFF2176 +:100CD0008A4801F0C9F84FEAA803C8F38702874998 +:100CE0002846039301F0C8F8064600283FF474AF85 +:100CF000039B05EB830537E70220FFF74DFD002836 +:100D00003FF4F4AE00F0FAFF00283FF4EFAE002706 +:100D1000B846D9F80830BB4218D91F2F11D8049B08 +:100D200001330ED027F0030314AA134453F8403CB8 +:100D30000C93404604220CA9043701F05FF9804669 +:100D4000E7E7384600F09EFF0C90F2E74046FFF7D9 +:100D50002BFD09E7002364210CA80C9300F04AFF47 +:100D600000287FF4C3AE0220FFF716FD00283FF4F1 +:100D7000BDAE0C9800F0B8FFE9E7002364210CA891 +:100D80000C9300F037FF00287FF4B0AE0220FFF78D +:100D900003FD00283FF4AAAE0C9800F0A7FFD6E7A9 +:100DA0000220FFF7F9FC00283FF4A0AE00F0B6FFE8 +:100DB000CDE70220FFF7F0FC00283FF497AE0CA926 +:100DC000142000F0B1FF0390FFF7EEFC03990CA88C +:100DD00000F01AFFC8E60220FFF7DEFC00283FF40F +:100DE00085AE474B0CAF03F1100C1868083353F86D +:100DF000041C3A46634503C21746F6D11020FFF79C +:100E0000D3FC1021E3E7322000F0E0FE071EFFF6DE +:100E10006DAEBB077FF46AAE07EB0A03D9F8082072 +:100E200093423FF663AE0220FFF7B6FC00283FF482 +:100E30005DAE27F003075744BA453FF495AE5046E0 +:100E40000AF1040A00F01EFFFFF7AEFCF4E74FF4CE +:100E50007A70FFF7A1FC00283FF448AE00F04EFF87 +:100E6000002849D0049B01330BD0082204A900209C +:100E700001F002F800283FD02022FF2104A800F052 +:100E8000F3FF2048022100F0BFFE1F4805F032FCAE +:100E900015B0BDE8F08F002E3FF428AE019B03F0A3 +:100EA0000B030B2B7FF422AE002364210CA80C93C0 +:100EB00000F0A0FE074600287FF418AE0220FFF7DE +:100EC0006BFC804600283FF411AE02210D4800F073 +:100ED0009BFE41F2883005F00DFC0C9801F05AF8A9 +:100EE00046463C4601F00CF8A1E506463CE64FF0CC +:100EF000000AFBE5BB466FE637466DE68C22002014 +:100F0000A0900008B4900008A0860100704700007F +:100F1000704700007047000038B505461446084683 +:100F20000322064900F084FF38B905F10802204683 +:100F30001021BDE8384001F08DB838BDC0900008E0 +:100F40002DE9F04100F58037044616463B7C5BB93D +:100F5000C0681030204400F061FFE5683544B5F505 +:100F6000004FE56002D816B1BDE8F081DEB905F0AA +:100F70007F0605F110000021C6F180062044F6B27C +:100F800032462E4400F070FFA06804F1100832468B +:100F900000F10060414600F5003006F089F830B9F4 +:100FA00001233B74E0E74FF400463546ECE7A268C6 +:100FB00005F11001404632442144A260E268521B10 +:100FC000E26000F02BFF0220BDE8F04100F004BF1A +:100FD000183000F0B9BC000010B5044601F064F808 +:100FE000204610BD10B5044601F05EF8204610BD45 +:100FF0002DE9F04FADF53F7D0746416801222AA853 +:1010000002F042FF002840F0878006468246814673 +:101010001125DFF80C81DFF80CB101AB4FF48052E1 +:1010200041462AA803F090F8002875D1019AB2F53C +:10103000805F71D8002A65D00446019A9442ECD2B0 +:10104000282D0FD008DC132D2DD01E2D39D0112DB9 +:1010500013D00134A4B2F0E7322D2DD0372D2FD08C +:101060002D2DF6D13B68121B08EB040138461B6995 +:101070002D259847BDF80440EBE7121B022A09D939 +:10108000594608EB040000F0D3FE18B902342825B5 +:10109000A4B2DEE718F804303A2B3DD00A2B1CBF6F +:1010A000A1461325D5E718F804300A2B34D03A2B83 +:1010B00004BFA2463225CCE718F80430202BC8D054 +:1010C000264618F804300A2B1AD1AAEB090208EBBD +:1010D000090102A811254F2A28BF4F2207F0CCFF93 +:1010E000A21B08EB060116A84F2A28BF4F2207F0C3 +:1010F000C3FF3B6816AA02A9DB6838469847A8E7F1 +:101100001E25A6E73B68384604491B69984701201D +:101110000DF53F7DBDE8F08F0020F9E7C291000892 +:1011200098230020C490000800F1180110B504466F +:1011300086B00846019100F0F1FB2046FFF758FF0A +:1011400060B1019902A800F049FC102204F10801E5 +:1011500002A807F051FFB0FA80F0400906B010BDB8 +:1011600070B504460025EEB2304600F099FD58B146 +:1011700000213046013500F0A3FD08B9002070BD04 +:10118000022000F029FEEEE72046FFF731FF00289D +:10119000F4D004F58034207C80F00100EFE70000FB +:1011A000F0B5C9B006F0FCF900F09AFF18B90025B7 +:1011B000284649B0F0BD69462A4803F087F8002860 +:1011C0004BD1294C204603F0B1F8284803F0AEF883 +:1011D000274803F0ABF82146224803F023F9002802 +:1011E000E5D1702000F05AFF064610B1214B446053 +:1011F0000360336830469B689847054600282ED028 +:101200001A4F1948394603F00DF905460028CED18A +:10121000194800F043FF044638B1184B476003609B +:1012200000F58033C0E902551D74236820469B6891 +:101230009847054628B10E490C4803F0F3F80028FA +:10124000B5D1336830465B6898471CB123682046A7 +:101250005B68984700F02CFFAAE70025FAE70446F0 +:10126000EFE700BFC8900008D8900008EF90000892 +:10127000059100082891000814000100449100081D +:101280002DE9F04FD44A8DB00B68D0F804A001933B +:101290001A440368D14E1A44D1F81C90DFF8B4C345 +:1012A000DFF8B4B3D0E90234634003EA0A036340D1 +:1012B00013444A6802920AEB7363029CC84A2244B0 +:1012C000C468224484688AEA04051D4065401544C8 +:1012D0008A68039203EB3555039CC24A2244846812 +:1012E00022448AEA03042C4084EA0A041444CA68AB +:1012F00005EBF4340492164483EA05022240564476 +:101300005A4032440E69059604EBB222059FB64E50 +:101310003E441E4485EA040313406B4033444E6947 +:10132000069602EB7363069FB04E3E442E4484EA59 +:1013300002051D40654035448E69079603EB35551F +:10134000079FAB4E3E44264482EA03042C4054409F +:101350003444A84E4E4405EBF434164483EA0502A7 +:1013600022405A4032440E6A089604EBB222089F8B +:10137000A14E3E441E4485EA040313406B403344AF +:101380004E6A099602EB7363099F9C4ED1F830E0D8 +:101390003E44D1F83880F3442E4484EA02051D40CF +:1013A000654035448E6AA6F5244703EB35550A9609 +:1013B0004F3F274482EA03042C4054403C44CF6A08 +:1013C0000B9705EBF4340B9E8D4F3744029E174468 +:1013D00083EA050222405A403A448A4F774404EB9C +:1013E000B2221F4485EA040313406B403B444F6B19 +:1013F000BC4402EB7363654484EA020C0CEA030C00 +:101400008CEA040C6544DFF854C2C44403EB355540 +:10141000A44482EA03042C4054406444D1F83CC004 +:10142000794905EBF4346144114483EA0502224012 +:101430005A400A44754904EBB2223144079E1944CC +:1014400084EA02032B4063400B44714902EBF363CF +:1014500031440B9E0D4482EA03012140514029444E +:101460006C4D03EBF1513544019E254483EA0104A0 +:1014700014405C402C44684D01EBB4443544069E56 +:10148000154481EA04021A404A402A44634D04EBA1 +:10149000323235440A9E1D4484EA02030B40634005 +:1014A0002B445F4D02EBF3633544059E0D4482EA05 +:1014B00003012140514029445A4D03EBF151654449 +:1014C000254483EA010414405C402C44564D01EB52 +:1014D000B4443544099E154481EA04021A404A4046 +:1014E0002A44524D04EB32323544049E1D4484EAB2 +:1014F00002030B4063402B444D4D02EBF363454424 +:101500000D4482EA0301214051402944494D03EB37 +:10151000F1513544089E2C4483EA010515405D4095 +:101520002C44454D01EBB4443544039E2A4481EAE2 +:1015300004051D404D402A44404D04EB32323D44E9 +:101540002B4484EA020593440D4065402B443C4DF6 +:1015500002EBF3633544069E294482EA03052540E5 +:1015600055402944374D03EBF1514D442C4483EA57 +:10157000010515405D40254401EBB54581EA0504B0 +:1015800004EA03024A405A44A6F5B82B089E05EB2C +:101590003232ABF2BE6B54405B4423442A4C344499 +:1015A00002EB33730B9E0C4485EA0201594021443F +:1015B000264C344403EB7151029E254482EA030415 +:1015C0004C402544224C444401EB3545144483EA05 +:1015D00001026A40224443E078A46AD7EECEBDC13E +:1015E00056B7C7E8DB702024AF0F7CF52AC68747C3 +:1015F000134630A8019546FDD8988069AFF7448B13 +:10160000BED75C892211906B2108B44962251EF671 +:1016100040B340C0515A5E26AAC7B6E95D102FD626 +:101620005314440281E6A1D8C8FBD3E7E6CDE121FB +:10163000D60737C3870DD5F4ED145A4505E9E3A95C +:10164000F8A3EFFCD9026F6781F6718722619D6D67 +:101650000C38E5FD937198FD8A4C2A8D8E4379A64E +:10166000934C344405EB7222059E1C4481EA050329 +:10167000534023448F4C344402EB33730A9E0C4492 +:1016800085EA0201594021448B4C4C4403EB7151D3 +:10169000254482EA03044C402C44884D354401EB38 +:1016A0003444019E154483EA010262402A44844D79 +:1016B0003D4404EB72221D4481EA040353402B4451 +:1016C000804D354402EB3373049E294484EA0205BD +:1016D0005D4029447C4D354403EB7151079E254400 +:1016E00082EA03044C402C44784D354401EB3444E9 +:1016F000099E2A4483EA010565401544744A324430 +:1017000004EB7525039E134481EA04026A401A44DF +:10171000704B734405EB32720B4484EA050151406F +:1017200019446D4B634402EB71511C4485EA02037A +:101730004B401C44694B334401EB3444019E1D442F +:1017400082EA010363402B44654D04EB7323354467 +:10175000069E154463EA010262402A44614D03EB90 +:10176000B2624D4462EA040929445F4D89EA0309E3 +:10177000454449442C445D4D02EBB1513544049E2F +:1017800061EA03081D4488EA0208444401EB7444FA +:1017900064EA02034B402B44554D04EBF32375449C +:1017A00063EA010E15448EEA040E0EEB0502514D5C +:1017B00003EBB262354462EA040E29440A9D8EEAC4 +:1017C000030EA5F580164C4D7144A6F6833602EB48 +:1017D000B151264461EA030454403444029E01EBB3 +:1017E0007444354464EA02061D444E407319089E51 +:1017F000424D04EBF323354463EA01061544664089 +:1018000072193F4D03EBB262654462EA0406294453 +:101810003C4D5E403144079E02EBB151354461EAD4 +:1018200003062C44384D56403D443444059E1D4427 +:1018300001EB744464EA02034B402B44334D04EB48 +:10184000F32335440B9E154463EA010262402A44A7 +:101850002F4D03EBB2623544039E0D4462EA04014E +:10186000594029442B4D02EBB15135442A4E2544B1 +:1018700061EA030454402C44099D01EB74442E4456 +:1018800064EA02051E4485EA01039D1903681A44AF +:101890000AEB040303EBF5230260436083681C44F6 +:1018A000C36819448460C1600DB0BDE8F08F00BF0B +:1018B00044EABEA4A9CFDE4B604BBBF670BCBFBEF2 +:1018C000C67E9B28FA27A1EA8530EFD4051D88043F +:1018D00039D0D4D9E599DBE6F87CA21F6556ACC4B3 +:1018E000442229F497FF2A43A72394AB39A093FC01 +:1018F000C3595B6592CC0C8FD15D84854F7EA86FF8 +:10190000E0E62CFE144301A3A111084E827E53F79A +:1019100035F23ABDBBD2D72A91D386EB094B03608F +:1019200003F18833436003F12943A3F59613A3F62B +:101930008B638360A3F18833C3600023C0E9043361 +:10194000704700BF012345672DE9F843144602693B +:1019500005460E46E300C2F3C50800F118079B18C0 +:10196000036122BF43690133436112F4FC7F436981 +:1019700003EB5473436114D0C8F1400907EB08002E +:101980004C4504D22246BDE8F84307F045BB403C35 +:101990004A464E4407F040FB444439462846FFF788 +:1019A0006FFCA04606EB0409B8F13F0FA9EB080154 +:1019B0000AD94022384607F02FFB39462846A8F1BD +:1019C0004008FFF75DFCEFE7A1096FF03F023846E2 +:1019D00002FB014206EB8111D5E7000070B50B69EF +:1019E00001F1180506460C46C3F3C503EA18501C5E +:1019F0008022EA54C3F13F02072A1FD8002100F0D9 +:101A000033FA29462046FFF73BFC382200212846BE +:101A100000F02AFA23692946204623656369636535 +:101A2000FFF72EFC21461022304607F0F5FA20463B +:101A300058220021BDE8704000F016BAC3F1370209 +:101A40000021E5E72DE9F84F4FF47A7306460D467D +:101A5000002402FB03F7DFF85080DFF8509098F97C +:101A600000305FFA84FA5A1C01D0A34212D159F80F +:101A700024002A4631460368D3F820B03B46D847B5 +:101A8000854207D1074B012083F800A0BDE8F88FFD +:101A90000124E4E7002CFBD04FF4FA7004F02AFE96 +:101AA0000020F3E7DC330020102200201422002065 +:101AB00000232DE9F0471A460546884601201946BD +:101AC00003F020F80446802005F010FC07460028AB +:101AD00061D0002C5FD03B4E28464FF0800A7369DE +:101AE00043F0C0637361D6F8143143F0C063C6F8A5 +:101AF000143105F07DFA05EB080200FB05F34FF405 +:101B0000D06C50434FF03D0E834233D232695201C4 +:101B100043D4D6F8102151013FD4216803F100626B +:101B20008A602268D7602268C2F804A02268C2F8DE +:101B300000C0D4F80090D9F8002042F00102C9F8A2 +:101B40000020D4F80090D9F8002022F01E02C9F835 +:101B50000020D4F80090D9F80020D207FBD494F8E4 +:101B60000C90803361680EFA09F20A60CCE700201D +:101B700005F01CFB204603F005F8384605F0F2FBA3 +:101B8000104B5A6942F0C0625A61D3F8142142F0F6 +:101B9000C062C3F81421BDE8F0870B4B9A6A42F487 +:101BA00000729A629A6A42F400429A6261B6002612 +:101BB000012005F0FBFAB045D9D9A819013605F086 +:101BC0002FFAF8E70020005200ED00E0002307B5EF +:101BD000024601210DF107008DF80730FFF732FFB3 +:101BE00020B19DF8070003B05DF804FB4FF0FF3013 +:101BF000F9E700000A46042108B5FFF723FF80F04B +:101C00000100C0B2404208BD074B0A4630B4197803 +:101C1000064B53F82140014623682046DD69044BFA +:101C2000AC4630BC604700BFDC33002014220020EB +:101C3000A086010070B5104C0025104E05F0DCF9AF +:101C400020803068238883420CD800252088013802 +:101C500005F0CEF923880544013BB5F5802F23809C +:101C6000F4D370BD05F0C4F9336805440133B5F50C +:101C7000003F3360E5D3E8E7DE33002098330020EF +:101C800005F094BA00F1006000F50030006870477C +:101C900000F10060920000F5003005F009BA000084 +:101CA000054B1A68054B1B889B1A834202D91044C6 +:101CB00005F09EB90020704798330020DE330020E5 +:101CC00038B50446074D29B128682044BDE838409E +:101CD00005F0A6B92868204405F090F90028F3D053 +:101CE00038BD00BF983300200020704700F1FF503E +:101CF00000F58F10D0F8000870470000064991F8F1 +:101D0000243033B100230822086A81F82430FFF719 +:101D1000BFBF0120704700BF9C330020014B1868F3 +:101D2000704700BF0010005C194B013803220844C3 +:101D300070B51D68174BC5F30B042D0C1E88A64209 +:101D40000BD15C680A46013C824213460FD214F95B +:101D5000016F4EB102F8016BF6E7013A03F1080397 +:101D6000ECD181420B4602D22C2203F8012B042431 +:101D7000094A1688AE4204D1984284BF967803F887 +:101D8000016B013C02F10402F3D1581A70BD00BF8F +:101D90000010005C1C22002084910008022804D15D +:101DA000054B4FF480129A6170470128FCD1024B19 +:101DB0004FF48002F7E700BF00100258022803D159 +:101DC000044B10229A6170470128FCD1014B40223C +:101DD000F8E700BF00100258022805D1064A5369EF +:101DE00083F01003536170470128FCD1024A536904 +:101DF00083F04003F6E700BF0010025870B50446B8 +:101E00004FF47A764CB1412C254628BF412506FB7C +:101E100005F0641B04F06EFCF4E770BD002310B500 +:101E2000934203D0CC5CC4540133F9E710BD0000E9 +:101E3000013810B510F9013F3BB191F900409C42C7 +:101E400003D11AB10131013AF4E71AB191F9002036 +:101E5000981A10BD1046FCE703460246D01A12F944 +:101E6000011B0029FAD1704702440346934202D075 +:101E700003F8011BFAE770472DE9F8431F4D14469C +:101E80000746884695F8242052BBDFF870909CB333 +:101E900095F824302BB92022FF2148462F62FFF706 +:101EA000E3FF95F824004146C0F1080205EB8000ED +:101EB000A24228BF2246D6B29200FFF7AFFF95F8A4 +:101EC0002430A41B17441E449044E4B2F6B2082EFA +:101ED00085F82460DBD1FFF711FF0028D7D108E097 +:101EE0002B6A03EB82038342CFD0FFF707FF002862 +:101EF000CBD10020BDE8F8830120FBE79C33002014 +:101F0000024B1A78024B1A70704700BFDC33002076 +:101F10001022002038B51A4C1A4D204603F0E2FE7C +:101F20002946204603F00AFF2D684FF47A70D5F851 +:101F30009020D2F8043843F00203C2F80438FFF7C7 +:101F40005DFF1149284604F007F8D5F890200F4DA1 +:101F5000D2F80438286823F002030D49A042C2F8E1 +:101F600004384FF4E1330B6001D003F019FE6868C8 +:101F7000A04204D00649BDE8384003F011BE38BD88 +:101F80003840002080990008889900081422002019 +:101F9000C43300200C4B70B50C4D04461E780C4B1E +:101FA00055F826209A420DD00A4B002118221846D7 +:101FB000FFF75AFF0460014655F82600BDE870405F +:101FC00003F0EEBD70BD00BFDC3300201422002002 +:101FD00038400020C433002008B571B6054B19887D +:101FE000054B1888FFF764FD02210E20FFF760FD06 +:101FF00061B608BDDE3300209833002030B50A44B6 +:10200000084D91420DD011F8013B5840082340F390 +:102010000004013B2C4013F0FF0384EA5000F6D18A +:10202000EFE730BD2083B8ED00F00F0300F0F002C1 +:1020300000F0D000402806D0302A09D1092B07D85B +:1020400001200B7070475A1E052A01D80933F7E7A3 +:102050000020704773B51446451C8E18B4421AD040 +:102060000DF1060115F8010CFFF7DEFF10B9002095 +:1020700002B070BD0DF1070115F8020BFFF7D4FF98 +:102080000028F4D09DF806209DF8073043EA02139B +:1020900004F8013BE2E70120EAE700000121884261 +:1020A00038BF084605F05AB908B105F05BB970476A +:1020B00010B5084C01220849002001F0C1FE237828 +:1020C0003BB1064803F0E4FC044803F017FD00238D +:1020D000237010BDE033002094910008C03600202A +:1020E0002DE9F041234C244E236DBBB901224FF45E +:1020F000004104F1500005F079FA236D1B686BB9BB +:1021000001224FF4805104F1500005F06FFA236D65 +:102110001B681BB900203070BDE8F08133780BB12B +:10212000FFF7C6FF0324154F4FF00008114D134968 +:102130002846C7F8048003F0D3FC284603F00CFBC4 +:1021400038B1013C284603F0D9FC14F0FF04E1D07B +:10215000EDE70B4901220B4801F072FE014618B170 +:10216000284603F095FCECE7074800F00FF8012043 +:10217000D1E700BFC0360020E03300203422002029 +:1021800094910008E4330020989100080FB40020D7 +:1021900004B070470068704703460068596870478C +:1021A0000B0A017043700B0C090E8370C1707047ED +:1021B000110A027003714170110C120E8170C2700D +:1021C0001A0A42711A0C1B0E8271C371704700000B +:1021D000C36A0239023B8B4283BF4389006C01FB17 +:1021E0000300002070470000C2F307238A76CB76F5 +:1021F0000378032B01BF120C0A75120A4A75704747 +:1022000000F10B010022D30143EA520310F8012B25 +:1022100052FA83F38842DAB2F5D1104670470000D3 +:1022200010B5417804460020013102464901022AD6 +:1022300016BFA35C032203EBC03302F101021EBFF1 +:102240009BB203EB500398B29142F0D810BD00004E +:1022500002684AB1134613F8011B1F290DD93A2908 +:10226000F9D1911C8B4202D04FF0FF3070471278A9 +:10227000302AF9D1036000207047014B187870476D +:102280003036002038B50D46044618B90920002321 +:102290002B6038BD0368002BF8D01A78002AF5D0DF +:1022A0008188DA889142F1D1587804F0BFFB10F0B0 +:1022B0000100EBD12368EBE738B50D4640F252310F +:1022C000144602F0B9F9FF2807D9012C0BD9030AEB +:1022D000022468702B70204638BD30B1002CFAD033 +:1022E00001242870F7E70024F5E70446F3E700002F +:1022F0002DE9F8430026D0F8008005460C468E767E +:10230000836B002B4AD098F80030042B4BD1334616 +:102310003546402720E0B7F5187F80F0C480F906E5 +:1023200006F1010608BF0237D05B02372BB900F572 +:10233000205292B2B2F5006F0DD305F11A01C5F12A +:10234000FF0240EA03402144FFF7B6FF002800F0F7 +:10235000AA80054400200346D8F8102092F82310E4 +:10236000B142D8D8002B40F09E80002D00F09B8019 +:1023700000232544AB766373D8F81020137903F05B +:102380003701DB0621730BD402F13800FFF704FF9D +:10239000C4E9000193896381D3892381BDE8F8836F +:1023A00000200146F4E7C36C01335ED1EA6B0023E1 +:1023B0002E26551E184615F8011F013020290CD075 +:1023C000052908BFE521092804D10B2B9EBFE7187A +:1023D00001337E73E718013379730B28EBD1E118D1 +:1023E00000204873A17E00294BD1002B40D06FF014 +:1023F0000C0604F10D000825361B331810F8011BDC +:10240000002938D02E298BB24AD0A3F141011929D5 +:1024100003D8117B0D4200D020330373EDE7B9F1EF +:10242000000F05D100F520539BB2B3F5006F0BD31D +:1024300007F11A01C7F1FF0240EA09402144FFF702 +:102440003BFF48B10744002002368146D8F80C30E3 +:10245000985B0028E3D13846B9F1000F4FF0000235 +:1024600018BF002023189A76A0E7B1463746EDE75B +:102470003F23A3760123234400219976137B03B9DC +:102480006373D37A02F11C0003F03F03237300232C +:10249000FFF780FE20606360D38A6381138B7CE743 +:1024A00010250B46B9E73F230125A37660E700001E +:1024B00038B50546002435F8020B08B9204638BD6A +:1024C00002F0EEF86308C2B203EBC43312FA83F3EE +:1024D0009AB2C0F3072303EB520303EBC2339CB25F +:1024E000E9E7000037B5C37804461BB90025284644 +:1024F00003B030BD00F14C01826C012340780191A2 +:1025000004F0BAFA054680B9A36BE070A06C226BA8 +:10251000C31A9342EAD2A3780199022BE6D102446E +:102520000123607804F0A8FAE1E70125DFE7000065 +:1025300038B5836C05460C468B4210D0FFF7D2FFAE +:1025400060B92246012305F14C01687804F070FA65 +:1025500000281CBF4FF0FF340120AC6438BD0020C0 +:10256000FCE7000038B500230446C3704FF0FF338A +:102570008364FFF7DDFF00284BD1B4F84A524AF6D6 +:1025800055239D4207D10B22254904F14C0006F04A +:1025900033FD00283FD094F84C30EB2B03D0183398 +:1025A000DBB2012B2ED84AF655239D4206D10822D4 +:1025B0001C4904F19E0006F01FFD48B3B4F85730E3 +:1025C000B3F5007F1ED194F85930DBB15A1E1A4280 +:1025D00018D1B4F85A30ABB194F85C30013B012B00 +:1025E00010D8B4F85D306BB1B4F85F307F2B06D8EB +:1025F00004F16C00FFF7CEFDB0F5803F02D3B4F8D4 +:10260000623053B94AF6552085420CBF02200320A0 +:1026100038BD0420FCE70120FAE70020F8E700BFFE +:10262000C4910008D091000802392DE9F04701F06B +:1026300007044FF0010A466C05460AFA04F41746EF +:10264000984606EB1136C1F3C809E4B23146284674 +:102650000136FFF76DFF18B10120BDE8F0879946FC +:1026600005EB090292F84C30234214BF01210021EE +:10267000414513D06340013F82F84C3085F803A0F8 +:10268000EBD0640014F0FF04EAD109F10103012446 +:102690004FF00009B3F5007FE1D1D7E70220DCE776 +:1026A00001290246F8B50C4640F28C800668F36AB0 +:1026B0008B4240F287803378013B032B00F282800B +:1026C000DFE803F00229384B04EB5405B16B3046C8 +:1026D00001EB5521FFF72CFF10B14FF0FF30F8BD93 +:1026E0006F1CC5F30805B16B3046354401EB57212B +:1026F00095F84C50FFF71CFF0028EED1C7F30807F0 +:10270000E3073E4496F84C0045EA00204CBF000920 +:10271000C0F30B00E3E7B16B304601EB1421FFF788 +:1027200007FF0028D9D1640004F4FF742644B6F8EA +:102730004C00D4E7B16B304601EBD411FFF7F8FE43 +:102740000028CAD1A40006F14C0004F4FE74204411 +:10275000FFF720FD20F07040C1E7D0E90430D579C3 +:1027600053EA000101D0916801B95DBB9168022D67 +:10277000A4EB01010DD1013B728940F1FF305B0AEE +:1027800043EAC053B3FBF2F399421BD81CD0601C40 +:10279000A5E7032D02D193698B42F8D8D3699BB981 +:1027A000B16B304601EBD411FFF7C2FE002894D183 +:1027B000A0004C3600F4FE703044FFF7EBFC20F034 +:1027C00000408CE701208AE76FF0004087E70000B7 +:1027D000F8B5066804460D463378042B0CBF4FF05D +:1027E00080524FF400128A4201D80220F8BDCA0676 +:1027F000FBD182680163D2B9022B13D83389B3EBC2 +:10280000551FF2D9F36BA363A36B6263002BECD06B +:1028100003EB55234C36C5F308050020A36335446C +:10282000E563E3E7F36BC271002BE7D01A467789C3 +:102830007F02BD42114604D23046FFF7C9FCA063B7 +:10284000E2E72046FFF72CFF431C024606D0012892 +:10285000CBD9F36A8342C8D9ED1BEAE70120C5E76B +:1028600001292DE9F04706460C46174608D9C36AE8 +:102870008B4205D90378022B62D003D8012B22D0DA +:10288000022552E0033B012BFAD8816B01EBD411F6 +:10289000FFF74EFE0546002847D1A40006F14C0381 +:1028A00004F4FE741C443378042B07D0204627F030 +:1028B0007047FFF76FFC00F0704007433946204631 +:1028C000FFF76EFC2FE001EB5108816B01EB582103 +:1028D000FFF72EFE054640BB14F0010406F14C093B +:1028E00008F1010AC8F3080808BFFBB230461FBF51 +:1028F00019F8083003F00F023B0103F0F00318BF92 +:10290000134309F808300123B16BF37001EB5A212E +:10291000FFF70EFE054640B9CAF3080A44B1C7F3F3 +:10292000071709F80A700123F3702846BDE8F087FD +:1029300019F80A30C7F3032723F00F031F43F0E70A +:10294000816B01EB1421FFF7F3FD05460028ECD164 +:10295000640006F14C0304F4FF741F551919C7F302 +:1029600007274F70DFE70000F8B504460E4617460C +:10297000E3690BB91846F8BD012BA6EB03052068E7 +:1029800014BFAA1C3A46691CFFF76AFF0028F2D15F +:10299000E369013BE361EBE701292DE9F8430646D2 +:1029A0000C461746056802D80220BDE8F883EB6A9A +:1029B0008B42F9D97AB9A14621463046A046FFF7A5 +:1029C0006FFE0446B0B92B78042B02D1002F43D1FF +:1029D000F7710020E9E72B78042B02D1C379022B91 +:1029E000E9D04FF0FF3239462846FFF739FF00287B +:1029F000E1D0DAE70128D7D0421C01D10120D4E789 +:102A00002B78042B19D1EA6AAB69023A93421CD3A2 +:102A100008F10102A2420CD02B78042B08D100232C +:102A2000A2EB090249462846FFF7FEFD0028BCD16B +:102A3000A146EB6AA342BFD8C5E70022414628461B +:102A4000FFF70EFF0028DED0AFE70133AB612B7933 +:102A500043F001032B71DBE7F3798BB9B468BC4217 +:102A600002D10223F371B4E721463046FFF718FE86 +:102A7000012899D9431CC1D001348442EFD0A8E782 +:102A8000032BA6D1B368BB42A3D8B2691344BB429F +:102A90009FD3E6E770B5C3790446032B06D181685E +:102AA0008369CD18A94203D10023E371002070BDD2 +:102AB0004E1C20683246FFF7D3FE0028F7D131467E +:102AC000F0E700002DE9F74305460191FFF70AFD05 +:102AD0000446002849D105F14C09019928464FF4D4 +:102AE0000072FFF775FB2146A86407464846FFF7CA +:102AF000BBF96C896402B4F5004F28BF4FF4004461 +:102B0000B4F5007F2FD9204604F030FC804630B168 +:102B100022460021640A0026FFF7A6F909E06408AE +:102B2000EEE72346BA194146687803F0A5FF18B9C5 +:102B300026446B899E42F4D3404604F027FC688902 +:102B4000801B18BF012003B0BDE8F08301366B89FC +:102B50009E42F4D20123BA194946687803F08CFFEB +:102B60000028F3D0EBE70026F1E70120EBE70000B7 +:102B7000F8B50446FFF7B6FC0546002842D1237895 +:102B8000032B37D12779012F34D104F14C060146AC +:102B90004FF400723046FFF767F955234122722146 +:102BA00084F84A32AA2304F50D7084F84F2084F883 +:102BB0004B32522384F8301284F84C3084F84D3074 +:102BC000612384F8311284F84E3084F83332A169DD +:102BD00084F83222FFF7E4FA616904F50E70FFF71A +:102BE000DFFA626B3B46314601326078A26403F043 +:102BF00043FF257100226078114603F061FF003821 +:102C000018BF0120F8BD000000232DE9F0430B6040 +:102C100085B00F461546FFF71BFB061EC0F2B281BA +:102C2000804B53F82640002C00F0AE813C6005F04C +:102C3000FE0523786BB1607803F0F8FEC70708D46F +:102C40001DB110F0040500D00A25284605B0BDE8E6 +:102C5000F0830023F0B22370607003F0D3FEC1074D +:102C600000F194810DB14207EED400212046FFF718 +:102C700079FC022840F099806E4604F2122304F297 +:102C80005221324618461033FFF784FA42F8040BFB +:102C90008B42F7D1002556F8041B00297DD0204631 +:102CA000FFF760FC012879D80128A26C40F0C080B1 +:102CB00004F1570304F18C0113F8015B002D7BD163 +:102CC0008B42F9D1B4F8B430B3F5807F74D194F865 +:102CD000B830092B70D104F19400FFF75DFA4FF082 +:102CE000FF33171841F10001BB4275EB010363D3B9 +:102CF00004F1A000FFF74EFA94F8BA302063012BDC +:102D0000A37059D194F8B99003FA09F91FFA89F31D +:102D10006381002B50D0444B04F1A800FFF73AFA2E +:102D20000646984248D8831C626304F1A400E3621B +:102D3000FFF730FA00EB020804F19C00C4F8408071 +:102D4000FFF728FA10441FFA89F2A06306FB02F38A +:102D500013EB080345EB05029F4271EB02032BD3F3 +:102D60002E4604F1AC00FFF715FAE06365B96389FC +:102D7000B34221D9E16B2046FFF72AFA8119204698 +:102D8000FFF7D6FB98B90136631993F84C30812BC5 +:102D900014D02035C5F30805E8E703200135042DDC +:102DA0007FF479AF042807D101E0042801D101257F +:102DB0004BE701287FF678AF0D2546E705F11400B3 +:102DC00004F14C063044FFF7E5F901280546F3D934 +:102DD000E36A8342F0D96189821E236C02FB0133CE +:102DE0006364A16B204601EBD511FFF7A1FB00281E +:102DF000DDD105F07F0006EB8000FFF7CBF9431C27 +:102E000003D00135A842ECD0D6E70425C4E905007B +:102E1000064A257000251388E56101339BB21380B3 +:102E2000E38012E734360020FDFFFF7F38360020B4 +:102E3000B4F85730B3F5007FBED1B4F8626026B95C +:102E400004F17000FFF7A6F9064694F85C3026639B +:102E5000591EA3700129AFD894F859506581002DEF +:102E6000AAD0691E2942A7D1B4F85D8018F00F0FCF +:102E7000A4F80880A0D1B4F85F0018B904F16C0080 +:102E8000FFF788F9B4F85A10002995D006FB03FE25 +:102E900001EB181CF44460458ED3A0EB0C00A84253 +:102EA000B0FBF5F388D33E48834285D84FF6F570E2 +:102EB00083426DD903259F1C114402EB0C03032DA3 +:102EC000E7626263A16323644CD1B4F8763053EABD +:102ED00008037FF471AFBB0004F17800FFF75AF9E3 +:102EE000E06303F2FF13B6EB532FFFF465AF4FF02F +:102EF000FF33032DC4E905334FF08003237187D1DD +:102F0000B4F87C30012B83D1511C2046FFF710FB15 +:102F100000287FF47DAFB4F84A224AF65523207189 +:102F20009A427FF475AF1F4B04F14C00FFF732F962 +:102F300098427FF46DAF03F1FF5304F50C70FFF777 +:102F400029F903F50053203398427FF461AF04F56B +:102F50000D70FFF71FF9A06104F50E70FFF71AF965 +:102F6000606155E7B8F1000F3FF426AF7144022DC0 +:102F70004FEA4703E1631EBFD91907F0010303EBD2 +:102F80005103AEE70B2560E60C255EE603255CE603 +:102F900040F6F575AB428CBF022501258BE700BFDB +:102FA000F5FFFF0F525261412DE9F84F07460568C2 +:102FB000884649B96E69C6B1EB6AB34298BF01262B +:102FC000AB69A3B9002405E0FFF76AFB01280446BA +:102FD00003D801242046BDE8F88F421C00F0D280BF +:102FE000EB6A8342F6D84646EAE70126E8E72A7804 +:102FF000EB6A042A40F08380A6F1020A023B4FF0FC +:10300000010B9A4528BF4FF0000AD146696C28464B +:1030100001EB1931FFF78CFA00283BD109F00703C7 +:10302000EA6AC9F3C8010BFA03F3901EDBB26A180F +:103030004C4609F1010992F84C20814502EA03024D +:1030400033BF5B0000234FF40071DBB228BF994609 +:10305000B2B90234631E0333BCD80123214628468B +:103060001A46FFF7E1FA0228B3D0012800F08A805F +:10307000B8F1000F13D10223FB710028A9D130E071 +:10308000CA450AD0002BD2D10131B1F5007FBDD2A3 +:103090000123CCE74FF0FF34DCE70024DAE7FB79CB +:1030A000022B07D1731CA342E7D0BB68F31ABB61A4 +:1030B0000323FB7108F10102FB69A24205D113B1A0 +:1030C0000133FB61D9E70223FBE70BB90123FB6165 +:1030D000224641463846FFF747FC00284FD10123DE +:1030E000FB61EA6AAB69023A6C6193429CBF03F1EF +:1030F000FF33AB612B7943F001032B716AE746453F +:1031000014D1741C3846A34298BF02242146FFF70D +:10311000C7FA01283FF45DAF431C33D0E0B16B69BF +:10312000012B03D9EA6A934238BF1E463446013464 +:10313000EB6AA34203D8012E7FF644AF0224214656 +:103140003846FFF7ADFA48B101283FF442AF0130ED +:1031500018D0B442EBD135E7002CE7D04FF0FF3266 +:1031600021462846FFF77CFB48B9B8F1000FB8D0DC +:10317000224641462846FFF773FB0028B1D00128BC +:103180007FF427AF4FF0FF3424E700002DE9F84328 +:1031900006680446076B894633782037042B0CBF3A +:1031A0004FF080534FF40013BB429CBF0023836356 +:1031B000836B73B1C7F30808B8F1000F3CD101333A +:1031C000416B836339B93389B3EB571F34D800237C +:1031D000A36304200AE07389013B13EA57232BD130 +:1031E000FFF75EFA0128054602D80220BDE8F88301 +:1031F000421C01D10120F9E7F36A834216D8B9F1E4 +:10320000000FE4D0616B2046FFF7CEFE0546C8B143 +:103210000128EAD0431CEDD001463046FFF752FCAE +:103220000028E7D1E37943F00403E37129463046EF +:103230006563FEF7CDFFA0634C360020276346444C +:10324000E663D3E70720D1E7F8B50E460021044630 +:103250000768FFF7BDFA98B90546A16B3846FFF736 +:1032600067F968B93A78E36B042A1B780CD11B061E +:103270000ED5054601212046FFF788FF0028ECD037 +:10328000042808BF072006E0E52B01D0002BF0D171 +:103290000135B542EED1F8BDC16C4B1C2DE9F041B2 +:1032A00004460568066B1FD1E5274FF00108A16BA6 +:1032B0002846FFF73DF998B92A78E36B042A09BF3D +:1032C0001A781F7002F07F021A7085F80380236B52 +:1032D000B3420DD200212046FFF758FF0028E6D068 +:1032E000042808BF022003E0FFF772FA0028DBD0B1 +:1032F000BDE8F0812DE9F04105460068A96B06693B +:10330000FFF716F9044620B9EB6B1A78852A03D02B +:1033100002242046BDE8F081324603F1200153F833 +:10332000040B8B4242F8040BF9D1777801377F0107 +:10333000A7F16003B3F5007FEAD800212846FFF724 +:1033400025FF04280446E3D00028E2D1A96B2868B1 +:10335000FFF7EEF804460028DBD1EB6B1A78C02AA1 +:10336000D6D106F1200203F1200153F8040B8B4261 +:1033700042F8040BF9D196F823300F222C33B3FB1B +:10338000F2F3B7EB431FC3D34FF0400800212846A8 +:10339000FFF7FCFE04280446BAD00028B9D1A96B77 +:1033A0002868FFF7C5F804460028B2D1EB6B1A78FD +:1033B000C12AADD1B8F5187F09D206EB080203F196 +:1033C000200153F8040B8B4242F8040BF9D108F1A9 +:1033D00020084745DAD8B8F5187F9AD83046FEF766 +:1033E0001FFF7388834294D092E700000B6800228D +:1033F00010B5036004460B6A83604B6AC261C371F7 +:1034000023F0FF03896AC0E90432C164FFF7E0F9E1 +:1034100020B92046BDE81040FFF76CBF10BD00008A +:10342000F8B50368054601271C692046FEF7F8FE3B +:10343000A070000A6678E0702846E96CFFF7C8F9CA +:1034400020B1022828BF0220C0B2F8BDA96B2868AD +:10345000FFF76EF80028F4D1EB6B04F1200254F86A +:10346000041B944243F8041BF9D12B68DF70002E33 +:10347000E7D000212846013EFFF788FEE0E7000084 +:103480002DE9F8434FF0FF08064607680424454637 +:103490004FF6FF79B16B11B9002C73D063E0384659 +:1034A000FFF746F8044600285DD1F06B0378002B47 +:1034B0006ED03A78042A11D1852B4DD1336B30462A +:1034C000F364FFF717FF044600284CD13B691B79D2 +:1034D00003F03F03B3712046BDE8F883C27AE52BC1 +:1034E00002F03F02B27143D02E2B41D022F02001D6 +:1034F00008293DD00F2A40D1590637D503F0BF0522 +:10350000336B90F80D80F364437B434530D1428B9D +:1035100072BB03780D21FC6823F04003DFF874E0F0 +:10352000013B4B4301211EF801CB30F80CC009B31D +:10353000FF2B1DD824F813C06146013301320D2A38 +:10354000F1D10278520605D521B1FF2B10D8002207 +:1035500024F81320013DEDB200213046FFF716FE9E +:103560000446002896D00023B363B4E7AB42CBD027 +:10357000FF25F1E7CC45E1D0FAE72DB9FEF740FE93 +:10358000404501D10024A6E74FF0FF33F364A2E7E2 +:103590000424E8E76C9200082DE9F04F002187B081 +:1035A0000446D0F80090FFF713F9804670B999F8F7 +:1035B0000030042B33D1D9F80C00FEF779FF074611 +:1035C0002046FFF75DFF054620B18046404607B024 +:1035D000BDE8F08FD9F810309A8CBA42F0D193F848 +:1035E00023B040265D4506D1D9F80C3033F81530AC +:1035F000002BE5D1EAE7F106D9F8103008BF023612 +:10360000985B01F04DF8D9F80C30824633F815007C +:1036100001F046F88245D3D102360135E2E74FF09A +:10362000FF0A4FF0FF3B5546C4F84CB0A16B48462B +:10363000FEF77EFF00285CD1E66B3778002F77D04D +:10364000F27AE52F02F03F03A37103D0120704D5ED +:103650000F2B04D0C4F84CB04FE00F2B54D194F88A +:103660004B3058063FD4790645D5236B07F0BF078A +:1036700096F80DA0E364737B53453ED1738B002B0A +:103680003BD135780121D9F80C3005F03F05019385 +:103690000D23013D5D43284B13F8012BB25A71B342 +:1036A000FF2D059329D81046049200F0F9FF6B1CFA +:1036B00003900293019B33F8150000F0F1FF03998A +:1036C00081421AD1049A029D1146059B1B4A9342DE +:1036D000E2D133785A0604D519B1019B33F815307D +:1036E0005BB97D1EEDB200212046FFF74FFD00289B +:1036F0009CD080466AE7BD42BDD0FF25F3E74FF678 +:10370000FF708242E2D0F8E72DB93046FEF778FD2F +:1037100050453FF45BAF94F84B30DB079AD40B2253 +:1037200004F14001304605F067FC002892D14DE7D6 +:103730004FF004084AE700BF6C9200087992000835 +:103740002DE9F04F90F84BB099B004461BF0A0055E +:1037500040F068810668F26832F81530002B4AD1D3 +:103760003378042B40F087800F230E352046B5FBBD +:10377000F3F5A91CFFF768FD8146002877D1236B7C +:103780000135A3EB4515E3795A07E56435D523F0F8 +:1037900004032046E371FFF77DF950BB4FF0FF3281 +:1037A000616B2046FFF7E0F818BBA3682BB32146F6 +:1037B00004A8FFF71BFEE0B970894FF40071D4E94B +:1037C0000423E0FB01233069C4E904233830FEF709 +:1037D000EFFC3069D4E904232830FEF7E9FCE379F3 +:1037E000326904A843F0010382F82130FFF718FE84 +:1037F00018B181463BE00135AEE7D6E903544022DB +:1038000000212046FEF730FB852301214022237052 +:10381000C0234FF0C10C04EB010884F820300023D2 +:103820001E469E46571C04F802C0F0B2023204F84D +:1038300007E021B135F8131009B10133DBB20F0AEB +:10384000A15408F802700232D706F2D135F813708D +:103850000136002FE6D184F82330831C284663709C +:10386000FEF726FE84F82400000A84F82500484666 +:1038700019B0BDE8F08F04F140070DF1100A1BF0FC +:10388000010F97E807008AE8070000F0D380402383 +:103890004FF0010884F84B30BC46F368B8F1050FCF +:1038A0009AE80700ACE803002CF8022B4FEA12421A +:1038B0008CF8002059D9981E424630F8021F002982 +:1038C00042D10DF10F0C072102F00F0E91461209A3 +:1038D0000EF13000392888BF0EF1370001390CF89D +:1038E000010902D0B9F10F0FEED818AB7E205A189B +:1038F00002F8580C38460022914206D010F801CB4D +:1039000002F1010EBCF1200F31D104F13F0C072967 +:1039100002F1010297BF18AB20205818013198BF5F +:1039200010F8580C072A0CF80200F0D92046FFF7CF +:1039300033FE8146002878D108F10108B8F1640F00 +:10394000AAD14FF0070992E74FF0100C01F0010ED9 +:1039500049080EEB4202D30344BF82F4883282F05E +:103960002102BCF1010CF1D1A7E74246A9E772465A +:10397000C2E7216B2046A1EB4511FEF729FF8146E6 +:1039800000287FF474AF4FF6FF783846FEF738FC16 +:103990000190A16B3046FEF7CBFD814600287FF4F5 +:1039A00066AFE36BE9B2019A4FF00D0CD6F80CE06C +:1039B0005A734FF00F02DFF8E0A0DA724A1E187354 +:1039C0000CFB02F284469876D87640451AF8019BA3 +:1039D0000CF1010C18BF3EF8120003EB090B18BFE5 +:1039E000013203F809004FEA1029002808BF4046B9 +:1039F000BCF10D0F8BF80190E7D1404502D03EF8A5 +:103A000012200AB941F0400119700123002120461B +:103A1000F370FFF7BBFB814600287FF428AF013D20 +:103A2000B7D11BE04FF0060921E704287FF41FAF50 +:103A300084F84BB01BF0020F20461BBF0C350D2144 +:103A40000125B5FBF1F518BF01352946FFF7FCFB51 +:103A5000814600287FF40BAF013D8AD1A16B30462F +:103A6000FEF766FD814600287FF401AF0146202263 +:103A7000E06BFEF7F9F9E36B03CF18605960BA7891 +:103A800039889A72198194F84B30E26B03F018036D +:103A900013730123F370EAE66C92000810B5044634 +:103AA0000A463430FEF776FB886004F13800FEF7F2 +:103AB00073FBC2E9040194F8213003F00203D371CF +:103AC0000023D36110BD000003284B8B04BF8A8AFA +:103AD00043EA0243184670472DE9F04F0B7899B03E +:103AE000044689462F2BD0F800B001D05C2B09D1B9 +:103AF0004A461378914601322F2BFAD05C2BF8D02E +:103B0000002301E0DBF81C30A3600023E3619BF895 +:103B10000030042B1ED1A368E3B1DBF8203021462E +:103B200004A82362DBF824306362DBF82830A36248 +:103B3000FFF75CFC0346002854D1DBF8102002F1AB +:103B40003800FEF727FBC4E9040392F8213003F0A4 +:103B50000203E37199F800301F2B00F235818023B6 +:103B60000021204684F84B3019B0BDE8F04FFEF735 +:103B70002FBE49460B78894601312F2BFAD05C2B9A +:103B8000F8D01F2B8CBF00250425012F2FD11388BF +:103B90002E2B31D1002322F8173004F140029F422E +:103BA0008CBF2E21202101330B2B02F8011BF6D1F3 +:103BB00045F02005204684F84B50FFF7EDFC94F8C3 +:103BC0004B30002800F0E78004280BD1990603F061 +:103BD000040240F1DC80002A00F0F68080230020FF +:103BE00084F84B3019B0BDE8F08F0425CDE7022FE3 +:103BF00002D153882E2BCAD0911E87BB002322F8F6 +:103C00001730002F00F0118132F8130019460133EC +:103C10002028F9D009B92E2801D145F00305901EBE +:103C200030F817302E2B01D0013FF9D14FF020335F +:103C30004FF0000A6364D0462364C4F84730082379 +:103C4000481C32F811600090F6B1202E03D02E2EC1 +:103C50000DD1B84210D045F003050099F0E731F8D6 +:103C60001730202B01D02E2BC8D1013FC5E79A4534 +:103C700005D20099B9423BD10B2B30D101E00B2B7F +:103C800027D145F003050B2394F84020E52A04BF13 +:103C9000052284F84020082B04BF4FEA88085FFA09 +:103CA00088F808F00C030C2B03D008F00303032B57 +:103CB00001D145F00205A8073FF57CAF18F0010FD0 +:103CC00018BF45F0100518F0040F18BF45F008059F +:103CD00070E70099B94202D045F00305D4D84FEA05 +:103CE00088080B234FF0080A00975FFA88F8B4E7BA +:103CF0007F2E15D9304640F25231CDE9022345F0EE +:103D00000203019300F098FC10F0800F0646DDE9F5 +:103D1000022316D000F07F0646498E5D019D46B312 +:103D200031464548CDE9012305F090F9DDE901234D +:103D3000F8B9A6F1410189B219291ED848F0020844 +:103D400010E0FF28EAD9591E8A4503D345F0030540 +:103D50009A4682E704EB0A01000A0AF1010A019D72 +:103D600081F8400004EB0A010AF1010A81F8406081 +:103D700073E745F003055F26F4E7A6F1610189B218 +:103D800019299EBF203E48F00108B6B2EAE7002A92 +:103D900008BF052026E75A073FF524AFA379DB06C5 +:103DA00045D59BF80000042835D1A3682146E27967 +:103DB00023622369DBF8100023F0FF0313436362DF +:103DC000E36CA362FFF76AFE23680027DA6819F83C +:103DD000010B00283FF409AF40F25231009200F08D +:103DE0004BFC054608B31F28009A7FF6FEAE2F282D +:103DF0003FF4BFAE5C283FF4BCAE7F2805D8014637 +:103E00000E4805F023F9009A78B9FF2F0DD022F85B +:103E100017500137DBE7216B0BF14C03C1F30801AD +:103E20001944FFF751FEA060CEE70620DAE6052030 +:103E3000D8E600BFEC910008E5910008DC9100088D +:103E40001FB5CDE9001003A814460391FEF700FA50 +:103E5000002815DB0B4A52F820300BB100211970F5 +:103E6000019B0BB10021197042F820302CB10022C7 +:103E700001A96846FEF7C8FE0446204604B010BDFE +:103E80000B24FAE7343600202DE9F04798B090462D +:103E900005460191002800F0528102F03F0603A977 +:103EA00001A83246FEF7B0FE002840F04681039B91 +:103EB0004FF48C60049303F059FA0746002800F091 +:103EC0004081039B00F500720199D86004A81A6133 +:103ED000FFF702FE044620B99DF95B30002BB8BF06 +:103EE000062418F01C0F00F0CD80002C4CD0042CC0 +:103EF00040D104A8FFF724FC044600283AD146F03C +:103F00000806039B1A78042A40F083801869294622 +:103F10002B60FFF7C3FD039B1E22002118690230AE +:103F2000FDF7A2FF039C00211A2220692630FDF72D +:103F30009BFF236920221A71246903F051FA01467C +:103F4000012208342046FEF72BF9039B04A81B69C5 +:103F500083F82120FFF764FA044658B9A96801B331 +:103F600002462846FEF718FDAB68039A0446013B5B +:103F70005361B4B1384603F009FA0CB100232B6049 +:103F8000204618B0BDE8F0879DF8163013F0110FE9 +:103F900040F0848018F0040F40F0C98018F0080F3A +:103FA000AFD1039A31071399936C48BF46F040068E +:103FB000E964AB641078042872D1069B9DF8171051 +:103FC0002B62089B106923F0FF030B4329466B62A9 +:103FD000179BAB62FFF762FDDDF80CA00024002206 +:103FE00005F15008BAF8063021464046C5F800A051 +:103FF000AB80002385F8306085F831406C64C5E9FA +:104000000E234FF40072FDF72FFFB20653D40024A5 +:10401000B0E703F0E5F90146009013980E30FEF783 +:10402000BFF8139800991630FEF7BAF8039C13995D +:104030002078FFF749FD202300228046CB722046DE +:104040001399FEF7D1F8139B002201211A775A77B2 +:104050009A77DA77039BD970B8F1000FA1D0414667 +:1040600004A8D3F84890FEF797FC0446002881D1B5 +:1040700049460398FEF75CFA039B044608F1FF30BB +:10408000586176E7002C7FF475AF9DF81630DC069A +:104090004FD418F0020F84D0D80782D5072469E7DF +:1040A000FFF712FD0023A86001F11C00FEF772F873 +:1040B0006B61286190E7D5E9046956EA0903A6D047 +:1040C000BAF80AA0A9684FEA4A2AC5E90E69B245BA +:1040D00074EB09031BD300242964002C7FF44AAF3E +:1040E000C6F30803002B92D0039C2046FEF770F81D +:1040F00008B3760A0123414646EAC95682196A6422 +:10410000607802F095FC041E18BF012432E72846AF +:10411000FEF7C6FAB6EB0A06014669F10009012866 +:1041200003D9431CD3D10124D6E70224D4E70824C1 +:1041300020E704241EE702241CE704461EE70924A6 +:104140001EE711241CE700002DE9F04F994685B0C9 +:104150000023884603A90446C9F800301646FEF736 +:1041600091F8054680BB94F831506DBB94F830301F +:1041700013F00103009300F0A68004F1500AD4E983 +:104180000432D4E90E011B1A62EB0102B34272F150 +:10419000000238BF1E46BEB1D4E90E10C1F30803B9 +:1041A000002B40F08280039B5A894B0A013A43EA74 +:1041B000C0531A401BD151EA000309D1A06801285D +:1041C0000DD8022584F83150284605B0BDE8F08F9F +:1041D000216C20460192FEF763FA019AEFE7431C37 +:1041E00004D10123009D84F83130EDE72064DDF82F +:1041F0000CB0216C5846FDF7EBFF0028E1D0B6F576 +:10420000007F02EB000731D3BBF80A1002EB562007 +:10421000730A88429BF8010088BF8B1A3A464146D0 +:10422000019302F005FC0028DBD194F93020019BBA +:10423000002A0BDA606CC01B984207D24FF4007260 +:10424000514608EB4020FDF7E9FD019B5F02D9F8DC +:104250000030F61BB8443B44C9F80030D4E90E32B4 +:10426000DB1942F10002C4E90E3294E7626CBA42F3 +:104270001AD094F93030002B0DDA012351469BF807 +:10428000010002F0F9FB0028ABD194F8303003F0C4 +:104290007F0384F83030039801233A465146407832 +:1042A00002F0C6FB00289CD16764A16B4046C1F3B5 +:1042B0000801C1F500775144B74228BF37463A4656 +:1042C000FDF7ACFDC3E707257EE7000070B596B0AB +:1042D0000E460022019002A901A8FEF795FC0446B3 +:1042E000E0B94FF48C6003F041F80546D8B1029B69 +:1042F00000F500720199D86002A81A61FFF7ECFB83 +:10430000044640B99DF95330002B0ADB1EB13146FB +:1043100002A8FDF7EDFF284603F038F8204616B056 +:1043200070BD0624F7E71124F8E7000070B5B8B0B7 +:104330000222019003A901A8FEF766FC044608BB0F +:10434000039B4FF48C60109303F010F8054600288F +:1043500066D0039B00F500720199D86010A81A611D +:10436000FFF7BAFB044650B99DF88B30980655D438 +:10437000190653D49DF84630DA0706D50724284697 +:1043800003F004F8204638B070BD039B04931878FE +:10439000042814D104A91869FFF780FB069E9DF834 +:1043A0004630DB0610D410A8FEF776FF044600283E +:1043B000E5D156BB0398FEF7DBFB0446DFE71F9908 +:1043C000FFF782FB0646EAE7039BDA69B242D5D0E3 +:1043D00024930021269624A81B78042B01BFDDE935 +:1043E0000823CDE928239DF817308DF89730FEF784 +:1043F000EFF904460028C2D124A8FFF741F804468B +:104400000028BBD00428BAD1CDE70246314604A823 +:10441000FEF7C2FA04460028B1D1CBE70624AEE786 +:104420001124AFE7F0B5BDB0CDE900106846FDF747 +:104430000FFF022203A901A8FEF7E6FB04460028AD +:1044400041D1039B4FF48C60149302F08FFF05461B +:10445000002800F0EE80039B00F5007214AE019975 +:10446000D8601A613046FFF737FB044640BB9DF821 +:104470009B3013F0A00F40F0D880039B009F1A7868 +:10448000042A68D11B6904AC03F1400C1868083396 +:1044900053F8041C2246634503C21446F6D1502249 +:1044A000314628A8FDF7BAFC394628A8FFF714FBC7 +:1044B000044600284CD12A9A169B9A4206D008241A +:1044C000284602F063FF20463DB0F0BD349A209BA1 +:1044D0009A42F4D128A8FFF733F904460028EFD117 +:1044E000039B04AF1B6993F801E093F823C09C8CF5 +:1044F0003A46083303CAB24243F8080C43F8041C96 +:104500001746F5D1039B28A81B6983F801E0039B9C +:104510001A6982F823C01A6982F82440240A82F8B2 +:1045200025401A691379D9065CBF43F02003137143 +:10453000FEF776FF04460028C2D13046FEF7ACFEF7 +:1045400004460028BCD10398FEF712FB0446B7E7E7 +:104550000428B5D1BEE7239A04AB02F1200C106801 +:10456000083252F8041C1C46624503C42346F6D1A7 +:104570005022314628A8FDF751FC394628A8FFF7FC +:10458000ABFA044600284CD12A9A169B9A4296D13F +:10459000349A209B9A4292D128A8FFF7D1F804467A +:1045A00000288DD137990DF11D030DF12D0001F17A +:1045B0000D0253F8044B834242F8044BF9D118889A +:1045C000012710809B7893709DF81B30039CDA06BE +:1045D00058BF43F02003CB72E770CB7ADB06ACD533 +:1045E000169A2A9B9A42A8D02078FFF76DFA0146C6 +:1045F0002046FDF7EDFD0146C8B12046FDF798FFC6 +:10460000044600287FF45CAF039890F86D302E2BA1 +:1046100093D12A9A00F16C01FDF7E6FD039BDF7050 +:104620008BE704287FF44CAFB6E7062448E7022462 +:1046300046E7112447E700007F2810B501D880B273 +:1046400010BDB0F5803F13D240F2523399420FD1E2 +:104650000849002231F8024B93B2844203D103F19E +:104660008000C0B2ECE70132802AF3D11346F6E7AE +:104670000020E5E72C9500087F280DD940F2523341 +:10468000994208D1FF2806D800F10040034B80383A +:1046900033F8100070470020704700BF2C950008C9 +:1046A000B0F5803FF0B522D21F4A83B21F49B0F562 +:1046B000805F28BF0A46141D34F8042C2146AAB195 +:1046C000934213D334F8025C2E0AEFB252FA85F506 +:1046D000A84222DA082E09D8DFE806F0050A1012EF +:1046E0001416181A1C00801A34F810301846F0BD41 +:1046F000981A00F001001B1A9BB2F7E7103BFBE78A +:10470000203BF9E7303BF7E71A3BF5E70833F3E7DF +:10471000503BF1E7A3F5E353EEE70434002ECBD191 +:1047200001EB4702C7E700BF7C92000870940008C5 +:1047300008B5074B074A196801F03D0199605368B5 +:104740000BB190689847BDE8084003F04DB800BF32 +:10475000000002403C36002008B5084B1968890962 +:1047600001F03D018A019A60054AD3680BB11069D6 +:104770009847BDE8084003F037B800BF000002408A +:104780003C36002008B5084B1968090C01F03D01C2 +:104790000A049A60054A53690BB190699847BDE8CD +:1047A000084003F021B800BF000002403C36002062 +:1047B00008B5084B1968890D01F03D018A059A601A +:1047C000054AD3690BB1106A9847BDE8084003F069 +:1047D0000BB800BF000002403C36002008B5074B74 +:1047E000074A596801F03D01D960536A0BB1906ADC +:1047F0009847BDE8084002F0F7BF00BF0000024044 +:104800003C36002008B5084B5968890901F03D0184 +:104810008A01DA60054AD36A0BB1106B9847BDE88C +:10482000084002F0E1BF00BF000002403C3600201B +:1048300008B5084B5968090C01F03D010A04DA601B +:10484000054A536B0BB1906B9847BDE8084002F0E6 +:10485000CBBF00BF000002403C36002008B5084B2B +:104860005968890D01F03D018A05DA60054AD36B6C +:104870000BB1106C9847BDE8084002F0B5BF00BF0F +:10488000000002403C36002008B5074B074A196873 +:1048900001F03D019960536C0BB1906C9847BDE8F5 +:1048A000084002F0A1BF00BF000402403C360020D7 +:1048B00008B5084B1968890901F03D018A019A6021 +:1048C000054AD36C0BB1106D9847BDE8084002F063 +:1048D0008BBF00BF000402403C36002008B5084BE7 +:1048E0001968090C01F03D010A049A60054A536DEC +:1048F0000BB1906D9847BDE8084002F075BF00BF4E +:10490000000402403C36002008B5084B1968890DA8 +:1049100001F03D018A059A60054AD36D0BB1106E16 +:104920009847BDE8084002F05FBF00BF00040240A6 +:104930003C36002008B5074B074A596801F03D0195 +:10494000D960536E0BB1906E9847BDE8084002F0F5 +:104950004BBF00BF000402403C36002008B5084BA6 +:104960005968890901F03D018A01DA60054AD36E70 +:104970000BB1106F9847BDE8084002F035BF00BF8B +:10498000000402403C36002008B5084B5968090C69 +:1049900001F03D010A04DA60054A536F0BB1906FD4 +:1049A0009847BDE8084002F01FBF00BF0004024066 +:1049B0003C36002008B5084B5968890D01F03D01CF +:1049C0008A05DA60054AD36F13B1D2F880009847A0 +:1049D000BDE8084002F008BF000402403C36002059 +:1049E00000230C4910B51A460B4C0B6054F82300F9 +:1049F000026001EB430004334260402BF6D1074ACA +:104A00004FF0FF339360D360C2F80834C2F80C341F +:104A100010BD00BF3C3600202C960008000002406C +:104A20000F28F8B510D9102810D0112811D012284D +:104A300008D10F240720DFF8C8E00126DEF8005077 +:104A4000A04208D9002653E00446F4E70F240020D2 +:104A5000F1E70724FBE706FA00F73D424AD1264C6E +:104A60004FEA001C3D4304EB00160EEBC000CEF8ED +:104A70000050C0E90123FBB273B12048D0F8D83010 +:104A800043F00103C0F8D830D0F8003143F00103FF +:104A9000C0F80031D0F8003117F47F4F0ED017481E +:104AA000D0F8D83043F00203C0F8D830D0F8003145 +:104AB00043F00203C0F80031D0F8003154F80C0084 +:104AC000036823F01F030360056815F00105FBD19F +:104AD00004EB0C033D2493F80CC05F6804FA0CF45B +:104AE0003C6021240560446112B1987B00F06AFCAF +:104AF0003046F8BD0130A3E72C9600080044025868 +:104B00003C36002010B5302484F31188FFF788FF6D +:104B1000002383F3118810BD10B50446807B00F09C +:104B200067FC01231549627B03FA02F20B6823EA52 +:104B30000203DAB20B6072B9114AD2F8D81021F030 +:104B40000101C2F8D810D2F8001121F00101C2F819 +:104B50000011D2F8002113F47F4F0ED1084BD3F887 +:104B6000D82022F00202C3F8D820D3F8002122F086 +:104B70000202C3F80021D3F8003110BD3C360020FA +:104B80000044025808B5302383F31188FFF7C4FFAF +:104B9000002383F3118808BD836CC26A8B4250687E +:104BA00010B506D95A1E4C0002EB4103B3FBF4F3D7 +:104BB000184410BD01F001038A0748BF43F0020307 +:104BC0004A0748BF43F008030A0748BF43F00403FD +:104BD000CA0648BF43F010038A06426B48BF43F041 +:104BE000200313434363704710B5074C204600F081 +:104BF0006BFF064B0022C4E91023054BA364054B51 +:104C0000E363054BE36410BDC03600200070005222 +:104C100000B4C4041437002014390020C36A0BB94F +:104C2000104BC3620379012B11D10F4B98420ED167 +:104C30000E4BD3F8D42042F48032C3F8D420D3F8FA +:104C4000FC2042F48032C3F8FC20D3F8FC30436CE3 +:104C500000221A65DA621A605A605A624FF0FF3217 +:104C60009A6370472C970008C03600200044025811 +:104C70000379012B24D0436C00221A65DA621A6092 +:104C80005A605A624FF0FF329A630E4B984217D126 +:104C90000D4BDA6F42F48032DA67DA6F22F4803239 +:104CA000DA67DA6FD3F8D42022F48032C3F8D42044 +:104CB000D3F8FC2022F48032C3F8FC20D3F8FC3077 +:104CC000704700BFC03600200044025810B5446C45 +:104CD0000649FFF761FF6060236842F2107043F0FD +:104CE00003032360BDE8104001F004BD801A0600F4 +:104CF0000129F8B5466C0B4F09D175680A493D404A +:104D0000FFF74AFF054345F480557560F8BD7468A8 +:104D100006493C40FFF740FF044344F4805474606C +:104D2000F4E700BF00ECFFFF80F0FA0240787D015D +:104D3000436C00225A601A6070470000426C0129DF +:104D4000536823F4404304D0022905D001B95360CD +:104D5000704743F48043FAE743F40043F7E7000069 +:104D6000436C41F480519A60D9605A6B1206FCD5AD +:104D700080229A637047000010B541F48851446C5A +:104D8000A260E160616B11F04502FBD0A26311F0FB +:104D9000040203D0FFF70EFF012010BD6169104629 +:104DA0001960FAE710B541F48851446CA260E160E3 +:104DB000616B11F04502FBD0A26311F0050203D034 +:104DC000FFF7F8FE012010BD616910461960FAE78F +:104DD00073B5134604460E46302282F31188426CA6 +:104DE000D26B32B14FF0FF314030019301F08EFCB5 +:104DF000019B606C00220265C263C262456B15F4C0 +:104E0000807504D185F31188012002B070BD4FF088 +:104E1000FF31816382F31188012E06D90C212046CF +:104E200002B0BDE87040FFF7BDBF1046EDE70000DF +:104E300073B5446C0E4600250192616BA163256534 +:104E4000E562FFF7B7FE012E07D9019B2A460C2128 +:104E500002B0BDE87040FFF7A5BF02B070BD000012 +:104E600010B541F49851446CA260E160616B11F09F +:104E70004502FBD0A26311F03F0203D0FFF79AFE78 +:104E8000012010BD216A10461960E1695960A169CD +:104E900099606169D960F4E72DE9F743044601910F +:104EA000006D01A91746984602F0B8FB0646002897 +:104EB0004AD0626C2046DDF804905568C5F30905B8 +:104EC00001356B00A56CB5FBF3F54FF47A73B5FBB8 +:104ED000F3F55D43556200F0BDFD50BB636C4FF0D0 +:104EE000FF3201254146C3F8589020461D659A635C +:104EF0004FF49572DA6342F207029F62DA62E36C62 +:104F00000A9AFFF74FFFA0B9E26C104B11680B40F3 +:104F10007BB929462046FFF75BFF054648B92E4678 +:104F20003A460199206D02F0B1FB304603B0BDE86E +:104F3000F083E26C20460121FFF77AFF3A4601999F +:104F4000206D02F0A3FBF0E70126EEE708E0FFFD8D +:104F50002DE9F7431F46436C01924FF47A725D6866 +:104F600004468846C5F3090501356E00856CB5FB1E +:104F7000F6F5B5FBF2F555435D6200F06BFD20B12F +:104F80000125284603B0BDE8F0837E0201A9206D0B +:104F9000324602F043FB05460028F1D0636C019ACB +:104FA000D4F84C909A6501221A654FF0FF329A634B +:104FB0004FF49572DA639E62236BDB064B4658BF53 +:104FC0004FEA4828012F42461BD912212046FFF7FD +:104FD000E9FEC0B9D9F80020104B13409BB9636CAF +:104FE00042F2930239462046DA62E26CFFF7F0FEA5 +:104FF000804640B932460199206D454602F046FB95 +:10500000BFE71121E2E7E26C39462046FFF710FFC7 +:1050100032460199206D02F039FBB2E708E0FFFD4E +:105020002DE9F3411F46436C01924FF47A725D689B +:1050300004468846C5F3090501356E00856CB5FB4D +:10504000F6F5B5FBF2F555435D6200F003FD20B1C6 +:105050000125284602B0BDE8F0817E0201A9206D3D +:10506000324602F02BFB05460028F1D0636C019A12 +:105070009A6501221A654FF0FF329A634FF48D72E0 +:10508000DA639E62236BE66CDB06334658BF4FEA59 +:105090004828012F424619D919212046FFF782FEE0 +:1050A000B0B932680F4B134093B9636C42F291026E +:1050B00039462046DA62E26CFFF78AFE064638B9C6 +:1050C00001993546206D02F035FBC2E71821E4E76F +:1050D00039462046E26CFFF7ABFE0199206D02F0E5 +:1050E00029FBB6E708E0FFFD12F0030F2DE9F041C0 +:1050F00007460C4615461E4617D00E44B44202D150 +:105100000020BDE8F0810123FA6B21463846FFF705 +:105110001FFF0028F5D128464FF40072F96B05F502 +:1051200000750134FCF77AFEE8E7BDE8F041FFF7CF +:105130000FBF000012F0030F2DE9F04107460C46A7 +:1051400015461E4617D00E44B44202D10020BDE8D9 +:10515000F08129464FF40072F86B05F50075FCF7F5 +:105160005DFE0123FA6B21463846FFF759FF002800 +:10517000EDD10134E8E7BDE8F041FFF751BF000091 +:1051800000207047302310B583F311880024436C4E +:1051900040302146DC6301F0C7FA84F3118810BD6A +:1051A000026843681143016003B11847704700006B +:1051B000024A136843F0C0031360704700100140B7 +:1051C00013B50E4C204600F0DFFC04F11400002360 +:1051D0004FF400720A49009400F07AF9094B4FF439 +:1051E0000072094904F13800009400F0F3F9074A0D +:1051F000074BC4E9172302B010BD00BF18390020C7 +:1052000084390020B1510008843B00200010014087 +:1052100000E1F505037C30B5244C002918BF0C468D +:10522000012B11D1224B98420ED1224BD3F8F02002 +:1052300042F01002C3F8F020D3F8182142F0100217 +:10524000C3F81821D3F818312268036EC16D03EB3F +:1052500052038466B3FBF2F36268150442BF23F085 +:10526000070503F0070343EA4503CB60A36843F057 +:1052700040034B60E36843F001038B6042F4967394 +:1052800043F001030B604FF0FF330B62510505D56E +:1052900012F0102205D0B2F1805F04D080F86430A3 +:1052A00030BD7F23FAE73F23F8E700BF34970008BB +:1052B00018390020004402582DE9F047C66D054614 +:1052C0003768F469210734621AD014F0080118BF56 +:1052D0004FF48071E20748BF41F02001A3074FF06F +:1052E000300348BF41F04001600748BF41F08001F2 +:1052F00083F31188281DFFF753FF002383F31188E0 +:10530000E2050AD5302383F311884FF48061281D0C +:10531000FFF746FF002383F311884FF030094FF069 +:10532000000A14F0200838D13B0616D54FF030099A +:1053300005F1380A200610D589F31188504600F08F +:105340007DF9002836DA0821281DFFF729FF27F00C +:1053500080033360002383F31188790614D5620635 +:1053600012D5302383F31188D5E913239A4208D14B +:105370002B6C33B127F040071021281DFFF710FFD9 +:105380003760002383F31188E30618D5AA6E1369EA +:10539000ABB15069BDE8F047184789F31188736ACB +:1053A000284695F86410194000F008FC8AF311882B +:1053B000F469B6E7B06288F31188F469BAE7BDE82A +:1053C000F0870000090100F16043012203F5614309 +:1053D000C9B283F8001300F01F039A4043099B00F1 +:1053E00003F1604303F56143C3F880211A607047FD +:1053F00000F01F0301229A40430900F160409B0026 +:1054000000F5614003F1604303F56143C3F8802078 +:10541000C3F88021002380F800337047F8B51546A3 +:10542000826804460B46AA4200D28568A1692669B3 +:10543000761AB5420BD218462A46FCF7EFFCA36950 +:105440002B44A3612846A3685B1BA360F8BD0CD95D +:10545000AF1B18463246FCF7E1FC3A46E16830449F +:10546000FCF7DCFCE3683B44EBE718462A46FCF714 +:10547000D5FCE368E5E7000083689342F7B504468E +:10548000154600D28568D4E90460361AB5420BD2BD +:105490002A46FCF7C3FC63692B4463612846A36872 +:1054A0005B1BA36003B0F0BD0DD93246AF1B019169 +:1054B000FCF7B4FC01993A46E0683144FCF7AEFCD5 +:1054C000E3683B44E9E72A46FCF7A8FCE368E4E725 +:1054D00010B50A440024C361029B8460C16002616C +:1054E0000362C0E90000C0E9051110BD08B5D0E9AC +:1054F0000532934201D1826882B9826801328260AA +:105500005A1C426119700021D0E904329A4224BF2A +:10551000C368436101F022F9002008BD4FF0FF305D +:10552000FBE7000070B5302304460E4683F3118874 +:10553000A568A5B1A368A269013BA360531CA36140 +:1055400015782269934224BFE368A361E3690BB134 +:1055500020469847002383F31188284607E0314608 +:10556000204601F0EBF80028E2DA85F3118870BDDF +:105570002DE9F74F04460E4617469846D0F81C9082 +:105580004FF0300A8AF311884FF0000B154665B1D1 +:105590002A4631462046FFF741FF034660B941469F +:1055A000204601F0CBF80028F1D0002383F31188C6 +:1055B000781B03B0BDE8F08FB9F1000F03D0019064 +:1055C0002046C847019B8BF31188ED1A1E448AF3CD +:1055D0001188DCE7C160C361009B82600362C0E99F +:1055E00005111144C0E9000001617047F8B5044697 +:1055F0000D461646302383F31188A768A7B1A36828 +:10560000013BA36063695A1C62611D70D4E90432D6 +:105610009A4224BFE3686361E3690BB1204698476F +:10562000002080F3118807E03146204601F086F81B +:105630000028E2DA87F31188F8BD0000D0E90523DD +:1056400010B59A4201D182687AB98268002101328C +:1056500082605A1C82611C7803699A4224BFC36825 +:10566000836101F07BF8204610BD4FF0FF30FBE76F +:105670002DE9F74F04460E4617469846D0F81C9081 +:105680004FF0300A8AF311884FF0000B154665B1D0 +:105690002A4631462046FFF7EFFE034660B94146F1 +:1056A000204601F04BF80028F1D0002383F3118845 +:1056B000781B03B0BDE8F08FB9F1000F03D0019063 +:1056C0002046C847019B8BF31188ED1A1E448AF3CC +:1056D0001188DCE70379052B05BF836A00200120D0 +:1056E0004B6004BF4FF400730B60704770B55D1ED4 +:1056F000866A04460D44B54205D9436B43F08003E6 +:105700004363012070BD06250571FFF7EDFC0523FD +:105710002371F7E770B55D1E866A04460D44B542F5 +:1057200005D9436B43F080034363012070BD072517 +:105730000571FFF7FFFC05232371F7E738B50579FD +:105740000446052D05D108230371FFF719FD2571C6 +:1057500038BD0120FCE700000323F0B5037185B0DC +:105760000446FFF7B3FA002220461146FFF7F8FA85 +:105770004FF4D57203AB08212046FFF713FB024616 +:10578000B8B901232363039BC3F30323012B09D17E +:1057900003AB37212046FFF705FB18B9A44B039A4A +:1057A0001340ABB120460125FFF7C2FA0223237153 +:1057B00037E103AB002237212046FFF7F3FA28B97F +:1057C0009B4A039B1A40002A00F0A7800223236310 +:1057D000236B03F00F03022B40F0A9806425954E44 +:1057E00042F2107000F086FF03AB324601212046E2 +:1057F000FFF7C2FA0028D5D1039B002B80F29380DB +:105800005A0003D5236B43F010032363002204F1F5 +:10581000080302212046FFF723FB02460028C1D1DE +:1058200004F1380303212046FFF7BCFA0028B9D160 +:1058300004F11805A26B092120462B46FFF710FB47 +:105840000028AFD102ABA26B07212046FFF7AAFACE +:1058500006460028A6D1236B03F00F03022B40F06D +:105860008F807E227F21284603F01AF9012840F21A +:105870008780E76B42F2107000F03CFF08234FF482 +:105880000072394620460096FFF706FB002889D1B2 +:10589000384603F053F9236BA06203F00F03022B89 +:1058A00072D103AB644A06212046FFF77BFA002839 +:1058B00071D15F49039B1940B1FA81F14909204632 +:1058C000FFF716FA02AB4FF4007210212046FFF7E3 +:1058D00069FA054600287FF465AF554E029B3342B6 +:1058E0007FF460AF236B13F00E0F03F00F0273D041 +:1058F000022A7FF457AFE36A1978012900F09480F7 +:10590000022900F09380002900F089804B4F204647 +:10591000FFF714FA03AB3A4676E0114620462263BD +:10592000FFF71EFA54E7013D7FF45AAF3AE7444DC2 +:105930006426444A3E4F012B18BF154603AB002294 +:1059400037212046FFF72EFA00287FF42BAF039B68 +:105950003B427FF427AF03AB2A4629212046FFF7BD +:105960000BFA00287FF41EAF039B002BFFF648AF15 +:10597000013E3FF417AF42F2107000F0BBFEDDE7CE +:10598000284603F0AFF886E77E227F212846E66BA3 +:1059900003F086F808B9002191E700234022314640 +:1059A000204600930623FFF777FA0028F3D1B38946 +:1059B0005BBA9B07EFD5244B40223146204600932B +:1059C0000623FFF769FA0028E5D1317C01F00F01C9 +:1059D0000F3918BF012172E7E36A1978F9B101297B +:1059E0007FF4E0AE2046FFF7A9F903ABA26B3721A5 +:1059F0002046FFF7D7F900287FF4D4AE039B33424B +:105A00007FF4D0AE03AB022206212046FFF7CAF98D +:105A100000287FF4C7AE039B33427FF4C3AE052357 +:105A20002371284605B0F0BD084F70E7084F6EE7B8 +:105A300008E0FFFD0080FFC00001B9030000B703CC +:105A40000080FF5000001080F1FFFF800001B703CD +:105A50000002B70337B504460C4D01ABA26B0D2114 +:105A60002046FFF79FF978B9019B2B420BD1C3F376 +:105A70004323042B08D0053B022B04D84FF47A7043 +:105A800000F038FEE9E7012003B030BD08E0FFFD7B +:105A900070B53023054683F3118803790024022B67 +:105AA00003D184F31188204670BD0423037184F36D +:105AB00011880226FFF7CEFF04462846FFF738F983 +:105AC0002E71F0E7FFF790B8044B036001230371D8 +:105AD00000234363C0E90A33704700BF4C970008B6 +:105AE00010B53023044683F31188C162FFF796F89E +:105AF00002230020237180F3118810BD10B53023DC +:105B0000044683F31188FFF7B3F800230122E36210 +:105B1000227183F3118810BD02684368114301604C +:105B200003B11847704700001430FFF721BD000093 +:105B30004FF0FF331430FFF71BBD00003830FFF784 +:105B400097BD00004FF0FF333830FFF791BD0000E4 +:105B50001430FFF7E7BC00004FF0FF311430FFF7BF +:105B6000E1BC00003830FFF741BD00004FF0FF32CC +:105B70003830FFF73BBD0000012914BF6FF0130060 +:105B800000207047FFF71CBB044B036000234360F9 +:105B9000C0E9023301230374704700BF7097000807 +:105BA00010B53023044683F31188FFF733FB02233B +:105BB0000020237480F3118810BD000038B5C3693C +:105BC00004460D461BB904210844FFF7A5FF2946EA +:105BD00004F11400FFF78AFC002806DA201D4FF4B8 +:105BE0000061BDE83840FFF797BF38BD02684368E1 +:105BF0001143016003B118477047000013B5406BB3 +:105C000000F58054D4F8A4381A681178042914D106 +:105C1000017C022911D11979012312898B40134289 +:105C20000BD101A94C3002F069FED4F8A448024619 +:105C3000019B2179206800F0DFF902B010BD00005F +:105C4000143002F0EBBD00004FF0FF33143002F0CF +:105C5000E5BD00004C3002F0BDBE00004FF0FF3348 +:105C60004C3002F0B7BE0000143002F0B9BD0000A5 +:105C70004FF0FF31143002F0B3BD00004C3002F0A1 +:105C800089BE00004FF0FF324C3002F083BE0000AE +:105C90000020704710B500F58054D4F8A4381A6875 +:105CA0001178042917D1017C022914D159790123D3 +:105CB00052898B4013420ED1143002F04BFD024644 +:105CC00048B1D4F8A4484FF4407361792068BDE826 +:105CD000104000F07FB910BD406BFFF7DBBF000044 +:105CE000704700007FB5124B01250426044603606F +:105CF0000023057400F1840243602946C0E90233A1 +:105D00000C4B0290143001934FF44073009602F054 +:105D1000FDFC094B04F69442294604F14C00029420 +:105D2000CDE900634FF4407302F0C4FD04B070BDD0 +:105D300098970008D95C0008FD5B00080A683023CA +:105D400083F311880B790B3342F823004B7913331B +:105D500042F823008B7913B10B3342F8230000F58E +:105D60008053C3F8A41802230374002080F3118821 +:105D70007047000038B5037F044613B190F85430E3 +:105D8000ABB90125201D0221FFF730FF04F11400FB +:105D90006FF00101257700F0EDFC04F14C0084F870 +:105DA00054506FF00101BDE8384000F0E3BC38BD4D +:105DB00010B5012104460430FFF718FF00232377B4 +:105DC00084F8543010BD000038B504460025143066 +:105DD00002F0B4FC04F14C00257702F083FD201D95 +:105DE00084F854500121FFF701FF2046BDE83840F8 +:105DF000FFF750BF90F8803003F06003202B06D1EE +:105E000090F881200023212A03D81F2A06D80020D9 +:105E10007047222AFBD1C0E91D3303E0034A4267E1 +:105E200007228267C3670120704700BF3C22002021 +:105E300037B500F58055D5F8A4381A6811780429CB +:105E40001AD1017C022917D11979012312898B40BB +:105E5000134211D100F14C04204602F003FE58B168 +:105E600001A9204602F04AFDD5F8A4480246019B4C +:105E70002179206800F0C0F803B030BD01F10B03B8 +:105E8000F0B550F8236085B004460D46FEB13023CE +:105E900083F3118804EB8507301D0821FFF7A6FE68 +:105EA000FB6806F14C005B691B681BB1019002F0B6 +:105EB00033FD019803A902F021FD024648B1039B7E +:105EC0002946204600F098F8002383F3118805B096 +:105ED000F0BDFB685A691268002AF5D01B8A013BA5 +:105EE0001340F1D104F18002EAE70000133138B524 +:105EF00050F82140ECB1302383F3118804F580532E +:105F0000D3F8A4281368527903EB8203DB689B69FA +:105F10005D6845B104216018FFF768FE294604F169 +:105F2000140002F021FC2046FFF7B4FE002383F3A7 +:105F3000118838BD7047000001F054BD0123402294 +:105F4000002110B5044600F8303BFBF78DFF00231D +:105F5000C4E9013310BD000010B53023044683F3BB +:105F600011882422416000210C30FBF77DFF204680 +:105F700001F05AFD02230020237080F3118810BD28 +:105F800070B500EB8103054650690E461446DA6091 +:105F900018B110220021FBF767FFA06918B1102289 +:105FA0000021FBF761FF31462846BDE8704001F053 +:105FB00041BE000083682022002103F0011310B5C8 +:105FC000044683601030FBF74FFF2046BDE81040C9 +:105FD00001F0BCBEF0B4012500EB810447898D407F +:105FE000E4683D43A469458123600023A2606360A7 +:105FF000F0BC01F0D9BE0000F0B4012500EB810433 +:1060000007898D40E4683D4364690581236000236E +:10601000A2606360F0BC01F04FBF000070B50223C6 +:1060200000250446242203702946C0F888500C300D +:1060300040F8045CFBF718FF204684F8705001F02C +:106040008DFD63681B6823B129462046BDE870407A +:10605000184770BD0378052B10B504460AD080F8A8 +:106060008C300523037043681B680BB104219847EB +:106070000023A36010BD00000178052906D190F827 +:106080008C20436802701B6803B1184770470000FA +:1060900070B590F87030044613B1002380F870306A +:1060A00004F18002204601F075FE63689B68B3B975 +:1060B00094F8803013F0600535D00021204602F0BE +:1060C00067F90021204602F057F963681B6813B195 +:1060D000062120469847062384F8703070BD20467C +:1060E00098470028E4D0B4F88630A26F9A4288BF5F +:1060F000A36794F98030A56F002B4FF0300380F236 +:106100000381002D00F0F280092284F8702083F3CF +:10611000118800212046D4E91D23FFF76DFF0023DD +:1061200083F31188DAE794F8812003F07F0343EAD0 +:10613000022340F20232934200F0C58021D8B3F529 +:10614000807F48D00DD8012B3FD0022B00F09380E8 +:10615000002BB2D104F1880262670222A267E367D2 +:10616000C1E7B3F5817F00F09B80B3F5407FA4D1F8 +:1061700094F88230012BA0D1B4F8883043F00203A8 +:1061800032E0B3F5006F4DD017D8B3F5A06F31D022 +:10619000A3F5C063012B90D86368204694F8822051 +:1061A0005E6894F88310B4F88430B047002884D037 +:1061B000436863670368A3671AE0B3F5106F36D0CE +:1061C00040F6024293427FF478AF5C4B6367022350 +:1061D000A3670023C3E794F88230012B7FF46DAFEF +:1061E000B4F8883023F00203A4F88830C4E91D55C0 +:1061F000E56778E7B4F88030B3F5A06F0ED194F876 +:106200008230204684F88A3001F006FD63681B68FE +:1062100013B1012120469847032323700023C4E9CA +:106220001D339CE704F18B0363670123C3E72378E5 +:10623000042B10D1302383F311882046FFF7BAFED8 +:1062400085F311880321636884F88B5021701B68E3 +:106250000BB12046984794F88230002BDED084F8AA +:106260008B300423237063681B68002BD6D0022177 +:1062700020469847D2E794F8843020461D0603F064 +:106280000F010AD501F078FD012804D002287FF41F +:1062900014AF2B4B9AE72B4B98E701F05FFDF3E728 +:1062A00094F88230002B7FF408AF94F8843013F018 +:1062B0000F01B3D01A06204602D502F081F8ADE7EF +:1062C00002F072F8AAE794F88230002B7FF4F5AE62 +:1062D00094F8843013F00F01A0D01B06204602D59D +:1062E00002F056F89AE702F047F897E7142284F88C +:1062F000702083F311882B462A4629462046FFF753 +:1063000069FE85F31188E9E65DB1152284F87020F5 +:1063100083F3118800212046D4E91D23FFF75AFE9C +:10632000FDE60B2284F8702083F311882B462A4661 +:1063300029462046FFF760FEE3E700BFC897000844 +:10634000C0970008C497000838B590F8703004462C +:10635000002B3ED0063BDAB20F2A34D80F2B32D8AE +:10636000DFE803F037313108223231313131313158 +:1063700031313737856FB0F886309D4214D2C3680B +:106380001B8AB5FBF3F203FB12556DB9302383F37F +:1063900011882B462A462946FFF72EFE85F31188E1 +:1063A0000A2384F870300EE0142384F87030302310 +:1063B00083F31188002320461A461946FFF70AFE88 +:1063C000002383F3118838BDC36F03B198470023BE +:1063D000E7E70021204601F0DBFF0021204601F025 +:1063E000CBFF63681B6813B106212046984706233C +:1063F000D7E7000010B590F870300446142B29D070 +:1064000017D8062B05D001D81BB110BD093B022BB4 +:10641000FBD80021204601F0BBFF0021204601F0FF +:10642000ABFF63681B6813B106212046984706231B +:1064300019E0152BE9D10B2380F87030302383F35A +:10644000118800231A461946FFF7D6FD002383F36F +:106450001188DAE7C3689B695B68002BD5D1C36FED +:1064600003B19847002384F87030CEE70023826898 +:1064700080F8243083691B6899689142FBD25A687E +:10648000036042601060586070470000002382681B +:1064900080F8243083691B6899689142FBD85A6858 +:1064A00003604260106058607047000008B50846FD +:1064B000302383F3118891F82430032B05D0042B6B +:1064C0000DD02BB983F3118808BD8B6A00221A60A6 +:1064D0004FF0FF338362FFF7C9FF0023F2E7D1E9F2 +:1064E000003213605A60F3E7034610B51B68984208 +:1064F00003D09C688A689442F8D25A680B604A605C +:106500001160596010BD0000FFF7B0BF38B50B4BEC +:106510001C68DD6885F82400226853601A60012237 +:10652000DC60A36884F82420934201D101F020F9B3 +:1065300029462046BDE83840F9F764BF883D002071 +:106540000C4B30B5DD684B1C87B004460FD02B4692 +:10655000094A684600F0A2F92046FFF7D7FF009BE2 +:1065600013B1684600F0A4F9A86A07B030BDFFF780 +:10657000CDFFF9E7883D0020AD640008044B1A68A0 +:10658000DB6890689B68984294BF002001207047A8 +:10659000883D002038B50C4B1C68DD6822685360CC +:1065A0001A600122DC6084F82420AB68934201D198 +:1065B00001F0E0F82846FFF769FF01462046BDE8F4 +:1065C0003840F9F71FBF00BF883D0020044B1A6810 +:1065D000DB6892689B689A4201D9FFF7DBBF70477E +:1065E000883D002038B50123084C002523706560E4 +:1065F00002F0D2FA02F0F8FA0549064802F0CEFBA2 +:106600000223237085F3118838BD00BF304000207D +:10661000D0970008883D002000F080B9034A5168F7 +:1066200053685B1A9842FBD8704700BF001000E027 +:106630008B604B630023CA6100F128020B630223C5 +:106640000A618B840123886181F8263001F11003EF +:10665000C26A4A611360C36201F12C030846CB622F +:1066600070470000D0E90131026841F8183CA1F1FF +:106670009C033839CB60036941F8243C436941F8F5 +:10668000203C034B41F8043CC3680248FFF7D0BFED +:106690001D040008883D002008B5FFF7E3FFBDE8B2 +:1066A0000840FFF731BF000038B50E4BDC6804F13D +:1066B0002C05A062E06AA8420FD194F826303BB9BD +:1066C00094F825309B0702BFD4E9043213605A6066 +:1066D0000F20BDE83840FFF719BF0368E362FFF7FA +:1066E00013FFE7E7883D0020302383F31188FFF78D +:1066F000DBBF000008B50146302383F31188082072 +:10670000FFF71EFF002383F3118808BD054BDB68EC +:1067100021B1036098620320FFF712BF4FF0FF30F2 +:10672000704700BF883D002003682BB10022026043 +:1067300018469962FFF7E8BE70470000064BDB6819 +:1067400039B1426818605A60136043600420FFF753 +:10675000F7BE4FF0FF307047883D00200368984235 +:1067600006D01A680260506018469962FFF7CCBEE6 +:106770007047000038B504460D462068844200D1B9 +:1067800038BD036823605C608562FFF7BDFEF4E7F7 +:10679000036810B59C68A2420CD85C688A600B60E4 +:1067A0004C602160596099688A1A9A604FF0FF33F3 +:1067B000836010BD121B1B68ECE700000A2938BF7C +:1067C0000A2170B504460D460A26601902F0DEF96A +:1067D00002F0C6F9041BA54203D8751C04462E46D8 +:1067E000F3E70A2E04D90120BDE8704002F09EBBF9 +:1067F00070BD0000F8B5144B0D460A2A4FF00A0789 +:10680000D96103F11001826038BF0A224160196921 +:106810001446016048601861A81802F0A7F902F058 +:106820009FF9431B0646A34206D37C1C2819274622 +:10683000354602F0ABF9F2E70A2F04D90120BDE892 +:10684000F84002F073BBF8BD883D0020F8B506465D +:106850000D4602F085F90F4A134653F8107F9F4208 +:1068600006D12A4601463046BDE8F840FFF7C2BFD0 +:10687000D169BB68441A2C1928BF2C46A34202D9FF +:106880002946FFF79BFF224631460348BDE8F84002 +:10689000FFF77EBF883D0020983D0020C0E903231C +:1068A000002310B45DF8044B4361FFF7CFBF000035 +:1068B00010B5194C236998420DD08168D0E9003297 +:1068C00013605A609A680A449A60002303604FF08C +:1068D000FF33A36110BD0268234643F8102F5360B5 +:1068E0000022026022699A4203D1BDE8104002F002 +:1068F00047B9936881680B44936002F031F92269CB +:10690000E1699268441AA242E4D91144BDE81040FA +:10691000091AFFF753BF00BF883D00202DE9F0475B +:10692000DFF8BC8008F110072C4ED8F8105002F0A8 +:1069300017F9D8F81C40AA68031B9A423ED81444A1 +:106940004FF00009D5E90032C8F81C4013605A60C6 +:10695000C5F80090D8F81030B34201D102F010F918 +:1069600089F31188D5E9033128469847302383F30A +:1069700011886B69002BD8D002F0F2F86A69A0EB9D +:10698000040982464A450DD2022002F0CFFA0022C5 +:10699000D8F81030B34208D151462846BDE8F04738 +:1069A000FFF728BF121A2244F2E712EB0909294621 +:1069B000384638BF4A46FFF7EBFEB5E7D8F8103047 +:1069C000B34208D01444C8F81C00211AA960BDE8DD +:1069D000F047FFF7F3BEBDE8F08700BF983D002009 +:1069E000883D002038B502F0BBF8054AD2E90845D9 +:1069F000031B181945F10001C2E9080138BD00BFA9 +:106A0000883D002010B560B9074804790368053C4B +:106A10009B6818BF0124984708B144F0040420463D +:106A200010BD0124FBE700BFC0360020FFF7EABF1E +:106A30002DE9F047884617469A460446B0B90D4EF0 +:106A40003579052D05D003240DE0013D15F0FF0536 +:106A50000ED03268534639463046D2F8149042463A +:106A6000C8470028F1D12046BDE8F0870424FAE7A2 +:106A70000124F8E7C03600202DE9F0478846174684 +:106A80009A460446B0B90D4E3579052D05D003243C +:106A90000DE0013D15F0FF050ED032685346394632 +:106AA0003046D2F818904246C8470028F1D1204617 +:106AB000BDE8F0870424FAE70124F8E7C036002097 +:106AC00037B50C46154670B951B101290BD10748AD +:106AD000694603681B6A984710B9019B04462B60FE +:106AE000204603B030BD0424FAE700BFC0360020C2 +:106AF00000207047FEE70000704700004FF0FF30B5 +:106B0000704700004B6843608B688360CB68C3604C +:106B10000B6943614B6903628B6943620B680360D5 +:106B20007047000008B53C4B40F2FF713B48D3F87A +:106B300088200A43C3F88820D3F8882022F4FF6213 +:106B400022F00702C3F88820D3F88820D3F8E02089 +:106B50000A43C3F8E020D3F808210A43C3F8082108 +:106B60002F4AD3F808311146FFF7CCFF00F58060BB +:106B700002F11C01FFF7C6FF00F5806002F1380149 +:106B8000FFF7C0FF00F5806002F15401FFF7BAFF84 +:106B900000F5806002F17001FFF7B4FF00F580603E +:106BA00002F18C01FFF7AEFF00F5806002F1A80151 +:106BB000FFF7A8FF00F5806002F1C401FFF7A2FF14 +:106BC00000F5806002F1E001FFF79CFF00F58060B6 +:106BD00002F1FC01FFF796FF02F58C7100F5806071 +:106BE000FFF790FF01F084FC0E4BD3F8902242F0A7 +:106BF0000102C3F89022D3F8942242F00102C3F8B4 +:106C000094220522C3F898204FF06052C3F89C20CC +:106C1000054AC3F8A02008BD0044025800000258ED +:106C2000E497000800ED00E01F00080308B501F03C +:106C300059FDFFF7D7FC104BD3F8DC2042F040029F +:106C4000C3F8DC20D3F8042122F04002C3F8042169 +:106C5000D3F80431094B1A6842F008021A601A6826 +:106C600042F004021A6000F06DFD00F043FBBDE845 +:106C7000084000F0B5B800BF0044025800180248B0 +:106C800001207047002070477047000002290CD097 +:106C9000032904D00129074818BF00207047032AA0 +:106CA00005D8054800EBC200704704487047002033 +:106CB000704700BFE49900084C2200209899000812 +:106CC00070B59AB005460846144601A900F0C2F80E +:106CD00001A8FBF7C1F8431C0022C6B25B001046B6 +:106CE000C5E9003423700323023404F8013C01ABEE +:106CF000D1B202348E4201D81AB070BD13F8011B14 +:106D0000013204F8010C04F8021CF1E708B5302345 +:106D100083F311880348FFF78BF8002383F311886E +:106D200008BD00BF3840002090F8803003F01F02FB +:106D3000012A07D190F881200B2A03D10023C0E952 +:106D40001D3315E003F06003202B08D1B0F8843028 +:106D50002BB990F88120212A03D81F2A04D8FFF7E5 +:106D600049B8222AEBD0FAE7034A42670722826732 +:106D7000C3670120704700BF4322002007B50529E3 +:106D800017D8DFE801F0191603191920302383F30F +:106D90001188104A01210190FFF7F2F801980221B1 +:106DA0000D4AFFF7EDF80D48FFF70EF8002383F3C7 +:106DB000118803B05DF804FB302383F31188074882 +:106DC000FEF7D8FFF2E7302383F311880348FEF77C +:106DD000EFFFEBE7389900085C9900083840002085 +:106DE00038B50C4D0C4C2A460C4904F10800FFF74D +:106DF00067FF05F1CA0204F110000949FFF760FFBF +:106E000005F5CA7204F118000649BDE83840FFF7DD +:106E100057BF00BF105900204C22002018990008CD +:106E2000229900082D99000870B5044608460D46C1 +:106E3000FBF712F8C6B22046013403780BB91846A6 +:106E400070BD32462946FAF7F3FF0028F3D101203E +:106E5000F6E700002DE9F84F05460C46FAF7FCFF6F +:106E60002D49C6B22846FFF7DFFF08B10436F6B257 +:106E70002A492846FFF7D8FF08B11036F6B2632E2C +:106E80000DD8DFF89490DFF894A0DFF89C80DFF84D +:106E90009CB0234F2E7846B92670BDE8F88F29465E +:106EA0002046BDE8F84F02F0DFB8252E30D107228A +:106EB00049462846FAF7BCFF70B93B6807350B34E2 +:106EC00044F80B3C7B6844F8073C3B8924F8033CBE +:106ED000BB7A04F8013CDDE7082251462846FAF760 +:106EE000A7FFA8B9A21C0F4B19780232090911F8A3 +:106EF000081002F8041C13F8011B01F00F015B4598 +:106F000011F8081002F8031CEED118340835C1E757 +:106F1000013504F8016BBDE7049A00082D990008BB +:106F20000C9A000800E8F11F189A00080CE8F11FFD +:106F3000BFF34F8F044B1A695107FCD1D3F81021CE +:106F40005207F8D1704700BF0020005208B50D4B22 +:106F50001B78ABB9FFF7ECFF0B4BDA68D10704D510 +:106F60000A4A5A6002F188325A60D3F80C21D207DB +:106F700006D5064AC3F8042102F18832C3F8042179 +:106F800008BD00BF6E5B0020002000522301674552 +:106F900008B5114B1B78F3B9104B1A69510703D58B +:106FA000DA6842F04002DA60D3F81021520705D5C2 +:106FB000D3F80C2142F04002C3F80C21FFF7B8FFD0 +:106FC000064BDA6842F00102DA60D3F80C2142F095 +:106FD0000102C3F80C2108BD6E5B002000200052A6 +:106FE0000F289ABF00F58060400400207047000021 +:106FF0004FF4003070470000102070470F2808B58C +:107000000BD8FFF7EDFF00F500330268013204D121 +:1070100004308342F9D1012008BD0020FCE70000C4 +:107020000F2838B505463FD8FFF782FF1F4CFFF702 +:107030008DFF4FF0FF3307286361C4F814311DD86A +:107040002361FFF775FF030243F02403E360E36865 +:1070500043F08003E36023695A07FCD42846FFF716 +:1070600067FFFFF7BDFF4FF4003100F09BFA2846A1 +:10707000FFF78EFFBDE83840FFF7C0BFC4F81031FE +:10708000FFF756FFA0F108031B0243F02403C4F8E6 +:107090000C31D4F80C3143F08003C4F80C31D4F82F +:1070A00010315B07FBD4D9E7002038BD0020005227 +:1070B0002DE9F84F04460D46104644EA0203DE0669 +:1070C00002D00020BDE8F88F20F01F00DFF8D4B018 +:1070D000DFF8D4A0FFF73AFF05EB0008454503D1E0 +:1070E0000120FFF755FFEDE720222946204601F059 +:1070F00083FF10B920342035F0E7234604F1200245 +:107100001F68791CDDD104339342F9D104F178432F +:107110002048214EB3F5801F204B38BF184603F19D +:10712000F80332BFD946D1461E46FFF701FF07607C +:10713000A4EB050C336805F11C0143F00203336036 +:107140002B1FD9F8007017F00507FAD153F8042F58 +:107150008B424CF80320F4D1BFF34F8FFFF7E8FECA +:107160004FF0FF330360336823F002033360BFF353 +:107170004F8F0B4BC3F85C42BFF34F8FBFF36F8F42 +:1071800020222946204601F037FF0028B2D0384699 +:10719000A7E700BF142100520C2000521420005217 +:1071A00000ED00E0102000521021005210B5084CF4 +:1071B000237828B11BB9FFF7C9FE0123237010BD46 +:1071C000002BFCD02070BDE81040FFF7E1BE00BFEF +:1071D0006E5B00202DE9F04F0D4685B0814658B119 +:1071E00011F00D0614BF2022082211F008030193AC +:1071F00004D0431E034269D0002435E0002E37D06E +:1072000009F11F0121F01F094FF00108314F05F06E +:107210000403DFF8CCA005EA080BBBF1000F32D065 +:107220007869C0072FD408F101080C37B8F1060FB0 +:10723000F3D19EB9284D4946A819019201F0F6FCF8 +:107240000446002839D12036019AA02EF3D14946B0 +:1072500001F0ECFC044600282FD1019A49461F4852 +:1072600001F0E4FC044660BB204605B0BDE8F08FA9 +:107270000029C9D101462846029201F0D7FC0446F4 +:10728000D8B9029AC0E713B178694107CBD5AC07EA +:1072900002D578698007C6D5019911B178690107CF +:1072A000C1D549460AEB4810CDE9022301F0BEFCE6 +:1072B0000446DDE902230028B5D04A4600212046D5 +:1072C00001E04A460021FAF7CFFDCDE70246002E45 +:1072D00096D199E72C9A0008B05B0020705B0020E3 +:1072E000905B00200021FFF775BF00000121FFF730 +:1072F00071BF000000231A4670B51A600433B3F55D +:10730000806FFAD1104D0124104E06EB4410013469 +:107310002A6955F80C1F01F075FC062CF5D13725AC +:107320004FF4C0542046FFF7E1FF014628B1224642 +:107330000748BDE8704001F065BCC4EBC404013DE2 +:107340004FEAD404EED170BD2C9A0008905B002067 +:10735000705B00200421FFF73DBF00004843FFF7AA +:10736000C1BF000008B101F0D3BC7047B0F5805F29 +:1073700010B5044607D8FFF7EDFF28B92046BDE851 +:107380001040FFF7AFBF002010BD0000FFF7EABFBD +:1073900070B5AAB140EA010313F01F030FD1094CE5 +:1073A0000144A5686D0706D52568A84203D3666821 +:1073B0003544A94204D903330C34122BF1D10022F5 +:1073C000104670BD2C9A000808B501F0B7FD034ABD +:1073D000D2E90032C01842EB010108BD505C002028 +:1073E000434BD3E900232DE9F34113437CD0FFF74E +:1073F000EBFF404A00230027F9F71EF806460D462A +:107400003D4A0023F9F718F8002314463046294670 +:10741000394AF9F711F84FF461613C23ADF8017076 +:10742000B4FBF1F5B4FBF3F601FB154103FB164683 +:107430004624B1FBF3F1314BF6B28DF8004098428F +:107440003CD84FF0640C4FF4C87EA30704F26C7272 +:1074500025D1B2FBFCF30CFB132313BBB2FBFEF3F1 +:107460000EFB1322B2FA82F35B0903F26D18621C61 +:107470008045D2B217D90FB18DF800400022204CC0 +:107480004FF00C0C17460CFB0343D4B2013213F837 +:1074900004C084450CD8A0EB0C000127F5E70023BD +:1074A000E3E70123E1E7A0EB080014460127CCE75E +:1074B0000FB18DF80140431C8DF802309DF801009A +:1074C000431C9DF800005038400640EA43509DF8A8 +:1074D000023040EA034040EA560040EAC52040EA54 +:1074E000411002B0BDE8F0814FF40410F9E700BF8D +:1074F000505C002040420F008051010090230B009F +:10750000749A00080244074BD2B210B5904200D1E1 +:1075100010BD441C00B253F8200041F8040BE0B247 +:10752000F4E700BF504000580E4B30B51C6F2404E8 +:1075300005D41C6F1C671C6F44F400441C670A4C84 +:1075400002442368D2B243F480732360074B904215 +:1075500000D130BD441C51F8045B00B243F8205008 +:10756000E0B2F4E700440258004802585040005886 +:1075700007B5012201A90020FFF7C4FF019803B05D +:107580005DF804FB13B50446FFF7F2FFA04205D0F7 +:10759000012201A900200194FFF7C6FF02B010BD2F +:1075A000704700000144BFF34F8F064B884204D35D +:1075B000BFF34F8FBFF36F8F7047C3F85C0220306B +:1075C000F4E700BF00ED00E00144BFF34F8F064B2E +:1075D000884204D3BFF34F8FBFF36F8F7047C3F858 +:1075E00070022030F4E700BF00ED00E070B5054602 +:1075F00016460C4601201021FFF7B0FE28604673A6 +:107600003CB1204636B1FFF7A5FE2B68186000B1EB +:107610009C6070BDFFF76AFEF7E70000F8B50F4603 +:107620001546044648B905F11F010126386821F0C6 +:107630001F01FFF7B7FF3046F8BD427B2946386887 +:10764000FFF7A6FE06460028EDD13B686360A368FD +:10765000AB4210D213B12068FFF784FE637B28464B +:107660002BB1FFF777FE206020B9A060E3E7FFF7BA +:107670003DFEF8E7A560206805F11F01012621F015 +:107680001F013860FFF78EFF2673D4E770B50E46F2 +:1076900002F11F010446154621F01F013046FFF795 +:1076A00093FF4CB12168B14206D1606810B12A46FF +:1076B000FAF7B4FB0023237370BD0000F8B50F4642 +:1076C0001446054648B904F11F010126386821F027 +:1076D0001F01FFF779FF3046F8BD427B214638682D +:1076E000FFF756FE06460028EDD1AB68A34210D244 +:1076F00013B12868FFF736FE6B7B20462BB1FFF7EE +:1077000029FE286020B9A860E5E7FFF7EFFDF8E75C +:10771000AC60396819B122462868FAF77FFB2868FF +:1077200004F11F01012621F01F013860FFF74CFF13 +:107730002E73D0E720B103688B4204BF002303738C +:1077400070470000034B1A681AB9034AD2F8D024D4 +:107750001A607047585C00200040025808B5FFF7D7 +:10776000F1FF024B1868C0F3806008BD585C002030 +:107770007047000070470000EFF309830549683344 +:107780004A6B22F001024A6383F30988002383F3E2 +:107790001188704700EF00E0302080F3118862B656 +:1077A0000D4B0E4AD96821F4E0610904090C0A4323 +:1077B0000B49DA60D3F8FC2042F08072C3F8FC2059 +:1077C000084AC2F8B01F116841F00101116020227F +:1077D000DA7783F82200704700ED00E00003FA0535 +:1077E00055CEACC5001000E0302310B583F31188EE +:1077F0000E4B5B6813F4006314D0F1EE103AEFF314 +:1078000009844FF08073683CE361094BDB6B2366AE +:1078100084F30988FEF7B2FE10B1064BA36110BDD8 +:10782000054BFBE783F31188F9E700BF00ED00E0AB +:1078300000EF00E02F0400083204000870B5BFF329 +:107840004F8FBFF36F8F1A4A0021C2F85012BFF357 +:107850004F8FBFF36F8F536943F400335361BFF30E +:107860004F8FBFF36F8FC2F88410BFF34F8FD2F8E2 +:10787000803043F6E074C3F3C900C3F34E335B01B9 +:1078800003EA0406014646EA81750139C2F86052EE +:10789000F9D2203B13F1200FF2D1BFF34F8F536980 +:1078A00043F480335361BFF34F8FBFF36F8F70BDCD +:1078B00000ED00E0FEE70000214B2248224A70B5AF +:1078C000904237D3214BC11EDA1C121A22F0030258 +:1078D0008B4238BF00220021FAF7C6FA1C4A002367 +:1078E000C2F88430BFF34F8FD2F8803043F6E07493 +:1078F000C3F3C900C3F34E335B0103EA0406014638 +:1079000046EA81750139C2F86C52F9D2203B13F175 +:10791000200FF2D1BFF34F8FBFF36F8FBFF34F8FA5 +:10792000BFF36F8F0023C2F85032BFF34F8FBFF306 +:107930006F8F70BD53F8041B40F8041BC0E700BFF5 +:10794000749B0008D45D0020D45D0020D45D00202D +:1079500000ED00E0074BD3F8D81021EA0001C3F88E +:10796000D810D3F8002122EA0002C3F80021D3F88E +:10797000003170470044025870B5D0E9244300221A +:107980004FF0FF359E6804EB42135101D3F8000914 +:10799000002805DAD3F8000940F08040C3F8000958 +:1079A000D3F8000B002805DAD3F8000B40F0804034 +:1079B000C3F8000B013263189642C3F80859C3F8A4 +:1079C000085BE0D24FF00113C4F81C3870BD000012 +:1079D000890141F02001016103699B06FCD412205A +:1079E000FEF71CBE10B50A4C2046FEF7A7FA094B5D +:1079F000C4F89030084BC4F89430084C2046FEF789 +:107A00009DFA074BC4F89030064BC4F8943010BD73 +:107A10005C5C002000000840B09A0008F85C002080 +:107A200000000440BC9A000870B503780546012B9D +:107A30005CD1434BD0F89040984258D1414B0E2135 +:107A40006520D3F8D82042F00062C3F8D820D3F8DC +:107A5000002142F00062C3F80021D3F80021D3F8DE +:107A6000802042F00062C3F88020D3F8802022F00A +:107A70000062C3F88020D3F88030FDF7A3FC324BBE +:107A8000E360324BC4F800380023D5F89060C4F8A6 +:107A9000003EC02323604FF40413A3633369002B1B +:107AA000FCDA01230C203361FEF7B8FD3369DB07F4 +:107AB000FCD41220FEF7B2FD3369002BFCDA00265D +:107AC0002846A660FFF758FF6B68C4F81068DB68AB +:107AD000C4F81468C4F81C6883BB1D4BA3614FF045 +:107AE000FF336361A36843F00103A36070BD194BCA +:107AF0009842C9D1134B4FF08060D3F8D82042F0A0 +:107B00000072C3F8D820D3F8002142F00072C3F805 +:107B10000021D3F80021D3F8802042F00072C3F88E +:107B20008020D3F8802022F00072C3F88020D3F8A0 +:107B30008030FFF70FFF0E214D209EE7064BCDE76B +:107B40005C5C002000440258401400400300200206 +:107B5000003C30C0F85C0020083C30C0F8B5D0F8DC +:107B60009040054600214FF000662046FFF730FFA9 +:107B7000D5F8941000234FF001128F684FF0FF30BA +:107B8000C4F83438C4F81C2804EB431201339F4274 +:107B9000C2F80069C2F8006BC2F80809C2F8080B05 +:107BA000F2D20B68D5F89020C5F8983063621023A4 +:107BB0001361166916F01006FBD11220FEF72EFD98 +:107BC000D4F8003823F4FE63C4F80038A36943F402 +:107BD000402343F01003A3610923C4F81038C4F80C +:107BE00014380B4BEB604FF0C043C4F8103B094B0B +:107BF000C4F8003BC4F81069C4F80039D5F89830CF +:107C000003F1100243F48013C5F89820A362F8BD75 +:107C10008C9A000840800010D0F8902090F88A10CC +:107C2000D2F8003823F4FE6343EA0113C2F80038A7 +:107C3000704700002DE9F84300EB8103D0F8905025 +:107C40000C468046DA680FFA81F94801166806F09A +:107C50000306731E022B05EB41134FF0000194BF86 +:107C6000B604384EC3F8101B4FF0010104F11003A5 +:107C700098BF06F1805601FA03F3916998BF06F5A3 +:107C8000004600293AD0578A04F158013743490188 +:107C90006F50D5F81C180B430021C5F81C382B1861 +:107CA0000127C3F81019A7405369611E9BB3138ABB +:107CB000928B9B08012A88BF5343D8F898209818C4 +:107CC00042EA034301F140022146C8F898002846E1 +:107CD00005EB82025360FFF77BFE08EB8900C36867 +:107CE0001B8A43EA845348341E4364012E51D5F85D +:107CF0001C381F43C5F81C78BDE8F88305EB49170D +:107D0000D7F8001B21F40041C7F8001BD5F81C1858 +:107D100021EA0303C0E704F13F030B4A284621464A +:107D200005EB83035A60FFF753FE05EB4910D0F8CB +:107D3000003923F40043C0F80039D5F81C3823EA91 +:107D40000707D7E70080001000040002D0F8942055 +:107D50001268C0F89820FFF70FBE00005831D0F825 +:107D6000903049015B5813F4004004D013F4001F15 +:107D70000CBF0220012070474831D0F890304901F3 +:107D80005B5813F4004004D013F4001F0CBF022012 +:107D90000120704700EB8101CB68196A0B68136002 +:107DA0004B6853607047000000EB810330B5DD681D +:107DB000AA691368D36019B9402B84BF40231360AC +:107DC0006B8A1468D0F890201C4402EB4110013CEF +:107DD00009B2B4FBF3F46343033323F0030343EA30 +:107DE000C44343F0C043C0F8103B2B6803F00303C7 +:107DF000012B0ED1D2F8083802EB411013F4807F2A +:107E0000D0F8003B14BF43F0805343F00053C0F858 +:107E1000003B02EB4112D2F8003B43F00443C2F8AE +:107E2000003B30BD2DE9F041D0F8906005460C468E +:107E300006EB4113D3F8087B3A07C3F8087B08D553 +:107E4000D6F814381B0704D500EB8103DB685B68A8 +:107E50009847FA071FD5D6F81438DB071BD505EB72 +:107E60008403D968CCB98B69488A5A68B2FBF0F6AA +:107E700000FB16228AB91868DA6890420DD2121AED +:107E8000C3E90024302383F3118821462846FFF7F5 +:107E90008BFF84F31188BDE8F081012303FA04F21B +:107EA0006B8923EA02036B81CB68002BF3D0214658 +:107EB0002846BDE8F041184700EB81034A0170B540 +:107EC000DD68D0F890306C692668E66056BB1A44CD +:107ED0004FF40020C2F810092A6802F00302012AB8 +:107EE0000AB20ED1D3F8080803EB421410F4807FD5 +:107EF000D4F8000914BF40F0805040F00050C4F89E +:107F0000000903EB4212D2F8000940F00440C2F825 +:107F100000090122D3F8340802FA01F10143C3F841 +:107F2000341870BD19B9402E84BF402020602068ED +:107F30001A442E8A8419013CB4FBF6F440EAC4408A +:107F400040F00050C6E700002DE9F843D0F89060FB +:107F500005460C464F0106EB4113D3F8088918F08B +:107F6000010FC3F808891CD0D6F81038DB0718D5E4 +:107F700000EB8103D3F80CC0DCF81430D3F800E038 +:107F8000DA68964530D2A2EB0E024FF000091A6073 +:107F9000C3F80490302383F31188FFF78DFF89F332 +:107FA000118818F0800F1DD0D6F834380126A6406D +:107FB000334217D005EB84030134D5F89050D3F841 +:107FC0000CC0E4B22F44DCF8142005EB0434D2F8E2 +:107FD00000E05168714514D3D5F8343823EA060619 +:107FE000C5F83468BDE8F883012303FA01F2038978 +:107FF00023EA02030381DCF80830002BD1D0984734 +:10800000CFE7AEEB0103BCF81000834228BF034664 +:10801000D7F8180980B2B3EB800FE3D89068A0F1CD +:10802000040959F8048FC4F80080A0EB09089844AB +:10803000B8F1040FF5D818440B4490605360C8E7BA +:108040002DE9F84FD0F8905004466E69AB691E4098 +:1080500016F480586E6103D0BDE8F84FFDF7DEBF1F +:10806000002E12DAD5F8003E9B0705D0D5F8003E69 +:1080700023F00303C5F8003ED5F80438204623F06A +:108080000103C5F80438FDF7F7FF370505D520468D +:10809000FFF772FC2046FDF7DDFFB0040CD5D5F8E4 +:1080A000083813F0060FEB6823F470530CBF43F449 +:1080B000105343F4A053EB6031071BD56368DB68B2 +:1080C0001BB9AB6923F00803AB612378052B0CD1F6 +:1080D000D5F8003E9A0705D0D5F8003E23F00303FB +:1080E000C5F8003E2046FDF7C7FF6368DB680BB1AB +:1080F00020469847F30200F1BA80B70226D5D4F89B +:10810000909000274FF0010A09EB4712D2F8003B8C +:1081100003F44023B3F5802F11D1D2F8003B002B9C +:108120000DDA62890AFA07F322EA0303638104EB9A +:108130008703DB68DB6813B139462046984701376F +:10814000D4F89430FFB29B689F42DDD9F00619D570 +:10815000D4F89000026AC2F30A1702F00F0302F487 +:10816000F012B2F5802F00F0CA80B2F5402F09D18D +:1081700004EB8303002200F58050DB681B6A974202 +:1081800040F0B0803003D5F8185835D5E90303D551 +:1081900000212046FFF746FEAA0303D50121204611 +:1081A000FFF740FE6B0303D502212046FFF73AFE9E +:1081B0002F0303D503212046FFF734FEE80203D541 +:1081C00004212046FFF72EFEA90203D505212046F3 +:1081D000FFF728FE6A0203D506212046FFF722FE9C +:1081E0002B0203D507212046FFF71CFEEF0103D524 +:1081F00008212046FFF716FE700340F1A780E9072B +:1082000003D500212046FFF79FFEAA0703D50121D1 +:108210002046FFF799FE6B0703D502212046FFF7A2 +:1082200093FE2F0703D503212046FFF78DFEEE06B0 +:1082300003D504212046FFF787FEA80603D50521B4 +:108240002046FFF781FE690603D506212046FFF789 +:108250007BFE2A0603D507212046FFF775FEEB05B6 +:1082600074D520460821BDE8F84FFFF76DBED4F85D +:1082700090904FF0000B4FF0010AD4F894305FFA61 +:108280008BF79B689F423FF638AF09EB4713D3F853 +:10829000002902F44022B2F5802F20D1D3F8002922 +:1082A000002A1CDAD3F8002942F09042C3F80029D2 +:1082B000D3F80029002AFBDB3946D4F89000FFF7F9 +:1082C00087FB22890AFA07F322EA0303238104EBDE +:1082D0008703DB689B6813B13946204698470BF14A +:1082E000010BCAE7910701D1D0F80080072A02F1FB +:1082F00001029CBF03F8018B4FEA18283FE704EB0B +:10830000830300F58050DA68D2F818C0DCF8082042 +:10831000DCE9001CA1EB0C0C00218F4208D1DB68CA +:108320009B699A683A449A605A683A445A6029E7C5 +:1083300011F0030F01D1D0F800808C4501F101014B +:1083400084BF02F8018B4FEA1828E6E7BDE8F88FF2 +:1083500008B50348FFF774FEBDE80840FFF744BACC +:108360005C5C002008B50348FFF76AFEBDE80840E2 +:10837000FFF73ABAF85C0020D0F8903003EB4111D7 +:10838000D1F8003B43F40013C1F8003B70470000F4 +:10839000D0F8903003EB4111D1F8003943F40013C9 +:1083A000C1F8003970470000D0F8903003EB41115C +:1083B000D1F8003B23F40013C1F8003B70470000E4 +:1083C000D0F8903003EB4111D1F8003923F40013B9 +:1083D000C1F8003970470000064BD3F8DC20024397 +:1083E000C3F8DC20D3F804211043C3F80401D3F808 +:1083F000043170470044025808B53C4B4FF0FF3140 +:10840000D3F8802062F00042C3F88020D3F88020A7 +:1084100002F00042C3F88020D3F88020D3F88420F3 +:10842000C3F88410D3F884200022C3F88420D3F842 +:108430008400D86F40F0FF4040F4FF0040F4DF407C +:1084400040F07F00D867D86F20F0FF4020F4FF0095 +:1084500020F4DF4020F07F00D867D86FD3F8880081 +:108460006FEA40506FEA5050C3F88800D3F8880094 +:10847000C0F30A00C3F88800D3F88800D3F890004E +:10848000C3F89010D3F89000C3F89020D3F8900070 +:10849000D3F89400C3F89410D3F89400C3F8942050 +:1084A000D3F89400D3F89800C3F89810D3F8980044 +:1084B000C3F89820D3F89800D3F88C00C3F88C1038 +:1084C000D3F88C00C3F88C20D3F88C00D3F89C0030 +:1084D000C3F89C10D3F89C10C3F89C20D3F89C30B0 +:1084E000FCF77EFABDE8084000F0E8B80044025806 +:1084F00008B50122534BC3F80821534BD3F8F4209D +:1085000042F00202C3F8F420D3F81C2142F0020228 +:10851000C3F81C210222D3F81C314C4BDA605A6894 +:108520009104FCD54A4A1A6001229A60494ADA60ED +:1085300000221A614FF440429A61444B9A699204B6 +:10854000FCD51A6842F480721A603F4B1A6F12F41D +:10855000407F04D04FF480321A6700221A671A68ED +:1085600042F001021A60384B1A685007FCD500220D +:108570001A611A6912F03802FBD1012119604FF01B +:10858000804159605A67344ADA62344A1A611A687B +:1085900042F480321A602C4B1A689103FCD51A6899 +:1085A00042F480521A601A689204FCD52C4A2D4974 +:1085B0009A6200225A63196301F57C01DA6301F2C1 +:1085C000E71199635A64284A1A64284ADA621A68D9 +:1085D00042F0A8521A601C4B1A6802F02852B2F1FD +:1085E000285FF9D148229A614FF48862DA6140220B +:1085F0001A621F4ADA641F4A1A651F4A5A651F4ADF +:108600009A6532231E4A1360136803F00F03022B8E +:10861000FAD10D4A136943F003031361136903F0A0 +:108620003803182BFAD14FF00050FFF7D5FE4FF06A +:108630008040FFF7D1FE4FF00040BDE80840FFF753 +:10864000CBBE00BF008000510044025800480258D1 +:1086500000C000F0020000010000FF010088900847 +:108660001210200063020901470E0508DD0BBF014F +:1086700020000020000001100910E000000101109E +:108680000020005208B50348FCF77CFDBDE8084017 +:10869000FFF7AAB8C036002008B50348FCF70CFE67 +:1086A000BDE80840FFF7A0B81839002008B500F071 +:1086B0008DFCBDE80840FFF797B8000008B5092118 +:1086C0007A20FCF77FFE09213120FCF77BFE072191 +:1086D0003220FCF777FE0C212520BDE80840FCF78E +:1086E00071BE000008B5FFF787FE00F043FCFDF700 +:1086F00049FAFDF7E7F9FDF71FFCFDF7F1FAFEF780 +:10870000C3FABDE8084000F029BA000030B50433D0 +:10871000039C0172002104FB0325C160C0E90653DC +:10872000049B0363059BC0E90000C0E90422C0E983 +:108730000842C0E90A11436330BD00000022416ACB +:10874000C260C0E90411C0E90A226FF00101FEF71E +:1087500011B80000D0E90432934201D1C2680AB9CD +:10876000181D704700207047036919600021C26816 +:108770000132C260C269134482699342036124BF1B +:10878000436A0361FDF7EABF38B504460D46E36866 +:108790003BB162690020131D1268A3621344E362B7 +:1087A00007E0237A33B929462046FDF7C7FF0028A2 +:1087B000EDDA38BD6FF00100FBE70000C368C26965 +:1087C000013BC3604369134482699342436124BF00 +:1087D000436A436100238362036B03B11847704708 +:1087E00070B53023044683F31188866A3EB9FFF7DB +:1087F000CBFF054618B186F31188284670BDA36AE1 +:10880000E26A13F8015B9342A36202D32046FFF7AA +:10881000D5FF002383F31188EFE700002DE9F84F1F +:1088200004460E46174698464FF0300989F31188E2 +:108830000025AA46D4F828B0BBF1000F09D1414663 +:108840002046FFF7A1FF20B18BF311882846BDE831 +:10885000F88FD4E90A12A7EB050B521A934528BFEB +:108860009346BBF1400F1BD9334601F1400251F84A +:10887000040B914243F8040BF9D1A36A403640350A +:108880004033A362D4E90A239A4202D32046FFF779 +:1088900095FF8AF31188BD42D8D289F31188C9E7C0 +:1088A00030465A46F9F7BAFAA36A5E445D445B441F +:1088B000A362E7E710B5029C0433017203FB0421B5 +:1088C000C460C0E906130023C0E90A33039B0363B5 +:1088D000049BC0E90000C0E90422C0E908424363E8 +:1088E00010BD0000026A6FF00101C260426AC0E977 +:1088F00004220022C0E90A22FDF73CBFD0E904238C +:108900009A4201D1C26822B9184650F8043B0B6064 +:10891000704700231846FAE7C3680021C269013393 +:10892000C3604369134482699342436124BF436A2D +:108930004361FDF713BF000038B504460D46E368F8 +:108940003BB1236900201A1DA262E2691344E3626D +:1089500007E0237A33B929462046FDF7EFFE0028C9 +:10896000EDDA38BD6FF00100FBE700000369196024 +:10897000C268013AC260C2691344826993420361CA +:1089800024BF436A036100238362036B03B118476A +:108990007047000070B530230D460446114683F33E +:1089A0001188866A2EB9FFF7C7FF10B186F31188C8 +:1089B00070BDA36A1D70A36AE26A01339342A36289 +:1089C00004D3E16920460439FFF7D0FF002080F38B +:1089D0001188EDE72DE9F84F04460D46904699467B +:1089E0004FF0300A8AF311880026B346A76A4FB9C0 +:1089F00049462046FFF7A0FF20B187F31188304693 +:108A0000BDE8F88FD4E90A073A1AA8EB060797429F +:108A100028BF1746402F1BD905F1400355F8042BFA +:108A20009D4240F8042BF9D1A36A40364033A3623B +:108A3000D4E90A239A4204D3E16920460439FFF7B6 +:108A400095FF8BF311884645D9D28AF31188CDE77B +:108A500029463A46F9F7E2F9A36A3D443E443B44CD +:108A6000A362E5E7D0E904239A4217D1C3689BB11A +:108A7000836A8BB1043B9B1A0ED01360C368013B21 +:108A8000C360C3691A4483699A42026124BF436A7E +:108A90000361002383620123184670470023FBE72C +:108AA00001F01F03F0B502F01F0456095A1C012300 +:108AB000B6EB511F50F8265003FA02F34FEA511754 +:108AC00003F1FF333DBF50F82720C4F120001340CD +:108AD00003EA05003BBF03FA00F225FA04F0E04088 +:108AE0001043F0BD70B57E227F210546FFF7D8FF09 +:108AF00018B1012819D0002070BD3E224921284616 +:108B0000FFF7CEFF2F22044631212846FFF7C8FF8A +:108B1000064601345022023653212846B440FFF75E +:108B2000BFFF093804FA00F0E6E730224521284665 +:108B3000FFF7B6FF01308002DEE7000090F8D63084 +:108B400090F8D7201B0403EB026390F8D42090F830 +:108B5000D500134403EB00207047000000F00CBA6E +:108B6000014B586A704700BF000C0040034B0022C5 +:108B700058631A610222DA60704700BF000C00409F +:108B8000014B0022DA607047000C0040014B586333 +:108B9000704700BF000C0040024B034A1A60034AB2 +:108BA0005A607047AC5D0020D85D002000000220B4 +:108BB000074B494210B55C68201A08401968821AB0 +:108BC0008A4203D3A24201D85A6010BD0020FCE7BC +:108BD000AC5D002008B5302383F31188FFF7E8FF70 +:108BE000002383F3118808BD0448054B036000236C +:108BF000C0E901330C3000F017B900BFB45D0020AC +:108C0000D58B0008CB1D083A23F00703591A521AD6 +:108C100010B4D2080024C0E9004384600C301C600A +:108C20005A605DF8044B00F0FFB800002DE9F74FE3 +:108C3000364FCD1D8846002818BF0746082A4FEA40 +:108C4000D50538BF082207F10C003C1D9146019064 +:108C500000F02CF9019809F10701C9F1000E224634 +:108C6000246864B900F02CF93B68CBB3082249466C +:108C7000E8009847044698B340E9027830E004EBF6 +:108C8000010CD4F804A00CEA0E0C0AF10106ACF1B8 +:108C9000080304EBC6069E42E1D9A6EB0C0CB5EB2B +:108CA000EC0F4FEAEC0BDAD89C421DD204F108021B +:108CB000AB45A3EB02024FEAE202626009D9691CEC +:108CC000ED4303EBC1025D445560256843F8315024 +:108CD00022601C46C3F8048044F8087B00F0F0F8DA +:108CE000204603B0BDE8F08FAA45216802D111608B +:108CF0002346EEE7013504EBC50344F8351003F1D4 +:108D00000801761AF6105E601360F1E7B45D00208A +:108D100073B50446A0F1080550F8080C54F8043C5B +:108D2000061D0C3007330190DB0844F8043C00F0CA +:108D3000BDF8334601989E421A6801D0AB4228D252 +:108D40000AB1954225D244F8082C54F8042C1D6031 +:108D5000013254F8081C05EBC206B14206D14E6838 +:108D6000324444F8042C0A6844F8082C5E68711CEC +:108D700003EBC1018D4207D154F8042C0132324477 +:108D80005A6054F8082C1A6002B0BDE8704000F038 +:108D900097B81346CFE70000FEE7000070B51E4B02 +:108DA0000025044686B058600E4605638163FEF7D1 +:108DB000F3FC04F12803A5606563C4E90A3304F1F8 +:108DC0001003C4E904334FF0FF33C4E90044C4E99D +:108DD0000635FFF7C5FE2B46024604F13C0120464E +:108DE000C4E9082380230D4A6567FDF721FC7368F9 +:108DF000E0600B4A03620123009280F82430684649 +:108E0000F26801923269CDE90223064BCDE90435BF +:108E1000FDF742FC06B070BD30400020D09A00083B +:108E2000C89A0008998D00080023C0E900008360FB +:108E30000361704770B51C4B05468468DE685CB3FF +:108E4000B44213D103690133036170BDA36094F888 +:108E5000243083B1062B15D1A06A2146D4E9003213 +:108E600013605A60FDF740FBA36A9C68B368A26870 +:108E70009A42EBD306E0D4E90032204613605A60F0 +:108E8000FDF742FB28463146FDF72EFBB562062072 +:108E9000BDE87040FDF73ABB0369866001330361AA +:108EA000336BC3603063D0E7883D002008B53023C2 +:108EB00083F31188FFF7BEFF002383F3118808BDF9 +:108EC000194BD96883688B4210B520D1302383F3C6 +:108ED00011880269013A0261B2B90468C368A0420C +:108EE0000B631ED04A6B9BB901238A600361036840 +:108EF0001A68026050601A6B8360C260186318467B +:108F0000FDF702FBFDF762FB002383F3118810BD20 +:108F10001C68A34203D0A468A24238BF2246DB6883 +:108F2000E1E78260F0E700BF883D0020024A536B12 +:108F300018435063704700BF883D002038B5EFF3F9 +:108F400011859DB9EFF30584C4F30804302334B1CF +:108F500083F31188FDF746FD85F3118838BD83F34F +:108F60001188FDF73FFD84F3118838BDBDE8384016 +:108F7000FDF738BD70470000114BD3F8E82042F0F0 +:108F80000802C3F8E820D3F8102142F00802C3F821 +:108F900010210C4AD3F81031D36B43F00803D3638C +:108FA000C722094B9A624FF0FF32DA6200229A61BF +:108FB0005A63DA605A6001225A611A60704700BF32 +:108FC000004402580010005C000C0040094A08B53B +:108FD0001169D3680B40D9B29B076FEA0101116197 +:108FE00007D5302383F31188FDF716FB002383F3A5 +:108FF000118808BD000C004010B5013902449042B0 +:1090000001D1002005E0037811F8014FA34201D0FF +:10901000181B10BD0130F2E7884210B501EB0204C5 +:1090200002D98442234607D8431EA14208D011F832 +:10903000012B03F8012FF8E7024401468A4200D1D0 +:1090400010BD13F8014D02F8014DF7E7C9B2034610 +:1090500010F8012B1AB18A42F9D11846704700293D +:1090600018BF0023F9E70000034611F8012B03F8AD +:10907000012B002AF9D1704710B50139034632B1EE +:1090800011F8014F03F8014B013A002CF7D11A44B3 +:109090000021934200D110BD03F8011BF9E7000045 +:1090A000313632623165363137613732326236639A +:1090B0000000000012100000121100001213000046 +:1090C0004D4435002D2D0A002F6172647570696C56 +:1090D0006F742E6162696E002F6172647570696CC5 +:1090E0006F742D7665726966792E6162696E002FE4 +:1090F0006172647570696C6F742D666C6173682E33 +:109100006162696E002F6172647570696C6F742D95 +:10911000666C61736865642E6162696E00000000B0 +:109120000000000000000000150F0008D90F000823 +:1091300029110008190F0008D10F000800000000D5 +:1091400000000000110F0008E50F00086111000881 +:109150000D0F0008410F000853544D333248373F7C +:109160003F3F0053544D3332483733782F373278EE +:109170000053544D3332483734332F3735332F377C +:109180003530000001105A0003105900012058002A +:10919000032056002F0000005375636365737366E8 +:1091A000756C6C79206D6F756E74656420534443E3 +:1091B0006172642028736C6F77646F776E3D2575DC +:1091C000290A0000EB7690455846415420202000A3 +:1091D0004641543332202020000000002A3A3C3E11 +:1091E0007C223F7F002B2C3B3D5B5D00435545417E +:1091F0004141414345454549494941414592924F85 +:109200004F4F5555594F554F9C4F9E9F41494F5574 +:10921000A5A5A6A7A8A9AAABACADAEAFB0B1B2B395 +:10922000B4414141B8B9BABBBCBDBEBFC0C1C2C3E5 +:10923000C4C54141C8C9CACBCCCDCECFD1D145459B +:109240004549494949D9DADBDCDD49DF4FE14F4F78 +:109250004F4FE6E8E85555555959EEEFF0F1F2F366 +:10926000F4F5F6F7F8F9FAFBFCFDFEFF010305073C +:10927000090E10121416181C1E00000061001A03BB +:10928000E0001703F8000703FF0001007801000168 +:10929000300132010601390110014A012E01790124 +:1092A000060180014D004302810182018201840197 +:1092B000840186018701870189018A018B018B0165 +:1092C0008D018E018F019001910191019301940113 +:1092D000F60196019701980198013D029B019C01BE +:1092E0009D0120029F01A001A001A201A201A401F1 +:1092F000A401A601A701A701A901AA01AB01AC0124 +:10930000AC01AE01AF01AF01B101B201B301B301D4 +:10931000B501B501B701B801B801BA01BB01BC0183 +:10932000BC01BE01F701C001C101C201C301C401FA +:10933000C501C401C701C801C701CA01CB01CA01E7 +:10934000CD011001DD0101008E01DE011201F301EA +:109350000300F101F401F401F801280122021201D5 +:109360003A020900652C3B023B023D02662C3F029B +:1093700040024102410246020A01530240008101BB +:109380008601550289018A0158028F015A02900113 +:109390005C025D025E025F0293016102620294015F +:1093A0006402650266026702970196016A02622CF6 +:1093B0006C026D026E029C01700271029D017302CB +:1093C00074029F0176027702780279027A027B02A8 +:1093D0007C02642C7E027F02A60181028202A90126 +:1093E0008402850286028702AE014402B101B20105 +:1093F00045028D028E028F0290029102B7017B031B +:109400000300FD03FE03FF03AC030400860388038F +:1094100089038A03B1031103C2030200A303A30358 +:10942000C4030803CC0303008C038E038F03D8030B +:109430001801F2030A00F903F303F403F503F6033A +:10944000F703F703F903FA03FA0330042003500487 +:109450001007600422018A043601C1040E01CF0402 +:109460000100C004D004440161052604000000008E +:109470007D1D0100632C001E9601A01E5A01001FD5 +:109480000806101F0606201F0806301F0806401F8A +:109490000606511F0700591F521F5B1F541F5D1FF7 +:1094A000561F5F1F601F0806701F0E00BA1FBB1FEC +:1094B000C81FC91FCA1FCB1FDA1FDB1FF81FF91FE8 +:1094C000EA1FEB1FFA1FFB1F801F0806901F0806EC +:1094D000A01F0806B01F0400B81FB91FB21FBC1F91 +:1094E000CC1F0100C31FD01F0206E01F0206E51FAC +:1094F0000100EC1FF31F0100FC1F4E21010032216F +:1095000070211002842101008321D0241A05302CFF +:109510002F04602C0201672C0601752C0201802C9F +:109520006401002D260841FF1A030000C700FC005B +:10953000E900E200E400E000E500E700EA00EB00FB +:10954000E800EF00EE00EC00C400C500C900E60032 +:10955000C600F400F600F200FB00F900FF00D600A0 +:10956000DC00F800A300D800D7009201E100ED0074 +:10957000F300FA00F100D100AA00BA00BF00AE006B +:10958000AC00BD00BC00A100AB00BB009125922542 +:10959000932502252425C100C200C000A90063252F +:1095A000512557255D25A200A50010251425342539 +:1095B0002C251C2500253C25E300C3005A255425F5 +:1095C00069256625602550256C25A400F000D00093 +:1095D000CA00CB00C8003101CD00CE00CF00182555 +:1095E0000C2588258425A600CC008025D300DF002B +:1095F000D400D200F500D500B500FE00DE00DA0090 +:10960000DB00D900FD00DD00AF00B400AD00B1000B +:109610001720BE00B600A700F700B800B000A800F1 +:10962000B700B900B300B200A025A00010000240AE +:10963000080002400008024000000B002800024021 +:10964000080002400408024006010C0040000240ED +:10965000080002400808024010020D0058000240B5 +:10966000080002400C08024016030E007000024081 +:109670000C0002401008024000040F008800024065 +:109680000C0002401408024006051000A000024031 +:109690000C0002401808024010061100B8000240F9 +:1096A0000C0002401C08024016072F001004024064 +:1096B0000804024020080240000838002804024044 +:1096C0000804024024080240060939004004024010 +:1096D0000804024028080240100A3A0058040240D8 +:1096E000080402402C080240160B3B0070040240A4 +:1096F0000C04024030080240000C3C008804024088 +:109700000C04024034080240060D4400A00402404C +:109710000C04024038080240100E4500B804024014 +:109720000C0402403C080240160F460001000000F5 +:109730000000000000960000000000000000000093 +:109740000000000000000000000000000000000019 +:10975000816C0008856C000859570008915A000870 +:10976000ED560008155700083D570008D55600086B +:1097700000000000455B0008315B00086D5B0008DD +:10978000595B0008655B0008515B00083D5B000801 +:10979000295B0008795B0008000000005D5C0008A0 +:1097A000495C0008855C0008715C00087D5C00086D +:1097B000695C0008555C0008415C0008915C000889 +:1097C0000000000001000000000000006330000005 +:1097D000CC9700080000000000000000003E0020C0 +:1097E000304000200000A86A00000000AAAAAAAA2F +:1097F00000001464FFFF00000000000070A70A00D2 +:109800000000000000000000AAAAAAAA00000000B0 +:10981000FFFF000000000000000000000000AA029E +:1098200000000000AAAAAAAA00005500FFFF00003D +:1098300000000000CCCC0C0020050000000000005F +:10984000AAAAAAAA10050000FFFF0000000C000051 +:10985000000000000011000000000000AAAAAAAA4F +:1098600000000000AFFF000000000000000000004A +:109870000000000000000000AAAAAAAA0000000040 +:10988000FFFF0000000000000000000000000000DA +:1098900000000000AAAAAAAA00000000FFFF000022 +:1098A00000000000000000000000000000000000B8 +:1098B000AAAAAAAA00000000FFFF00000000000002 +:1098C000000000000000000000000000AAAAAAAAF0 +:1098D00000000000FFFF000000000000000000008A +:1098E0000000000000000000AAAAAAAA00000000D0 +:1098F000FFFF00000000000000000000000000006A +:1099000000000000AAAAAAAA00000000FFFF0000B1 +:1099100000000000000000004172647550696C6F27 +:10992000740025424F415244252D424C0025534599 +:109930005249414C250000000200000000000000D8 +:109940007D5E0008ED5E000840004000E058002009 +:10995000F05800200200000000000000030000009A +:1099600000000000355F000800000000100000004B +:10997000005900200000000001000000000000006D +:109980005C5C0020010102007D6D00088D6C000808 +:10999000296D00080D6D000843000000A099000823 +:1099A00009024300020100C0320904000001020262 +:1099B0000100052400100105240100010424020215 +:1099C0000524060001070582030800FF09040100C1 +:1099D000020A00000007050102400000070581029D +:1099E0004000000012000000EC9900081201100174 +:1099F0000200004009124157000201020301000069 +:109A00000403090425424F4152442500434F525656 +:109A10004F4E3734335632003031323334353637E7 +:109A20003839414243444546000000000000002010 +:109A300000000200020000000000003000000400EE +:109A400008000000000000240000080004000000DE +:109A50000004000000FC00000200000000000430D0 +:109A60000080000008000000000000380000010035 +:109A7000010000001F1C1F1E1F1E1F1F1E1F1E1F78 +:109A80001F1D1F1E1F1E1F1F1E1F1E1F0000000068 +:109A90009160000849630008F56300084000400039 +:109AA000945D0020945D002001000000A45D002072 +:109AB00080000000400100000800000000010000DC +:109AC000001000000800000069646C6500000000E0 +:109AD0006D61696E002C0438040438080C10141CE5 +:109AE000202425260000000000006404010004007A +:109AF00000000000000C0010283034006C69FF7F6B +:109B000001000000FFFFFFFFCD0400000000000087 +:109B100000001A0000000000FF0000003840002094 +:109B2000183900200000000058910008830400004C +:109B300063910008500400007191000801000000CA +:109B400000000000009600000000080096000000E1 +:109B50000008000004000000009A00080000000057 +:109B600000000000000000000000000000000000F5 +:049B700000000000F1 +:00000001FF diff --git a/Tools/bootloaders/TBS_LUCID_H7_OEM_bl.bin b/Tools/bootloaders/TBS_LUCID_H7_OEM_bl.bin new file mode 100755 index 0000000000000..cf30c50bbf2bd Binary files /dev/null and b/Tools/bootloaders/TBS_LUCID_H7_OEM_bl.bin differ diff --git a/Tools/bootloaders/TBS_LUCID_H7_OEM_bl.hex b/Tools/bootloaders/TBS_LUCID_H7_OEM_bl.hex new file mode 100644 index 0000000000000..ee45883ba583d --- /dev/null +++ b/Tools/bootloaders/TBS_LUCID_H7_OEM_bl.hex @@ -0,0 +1,2508 @@ +:020000040800F2 +:1000000000060020E1020008E3020008E302000805 +:10001000E3020008E3020008E3020008E30200082C +:10002000E3020008E3020008E3020008CD770008BD +:10003000E3020008E3020008E3020008E30200080C +:10004000E3020008E3020008E3020008E3020008FC +:10005000E3020008E3020008E3020008E3020008EC +:10006000E3020008E3020008E30200080947000871 +:10007000314700085D47000889470008B547000878 +:10008000DD47000809480008E3020008E302000811 +:10009000E3020008E3020008E3020008E3020008AC +:1000A000E3020008E3020008E3020008E30200089C +:1000B000E3020008E3020008E3020008E30200088C +:1000C000E3020008E3020008E3020008E30200087C +:1000D000E3020008E3020008E3020008E30200086C +:1000E000E3020008E3020008E3020008E30200085C +:1000F000E3020008E3020008E302000835480008B4 +:10010000E302000889870008B1870008E3020008BD +:10011000E3020008E3020008E3020008E30200082B +:100120006148000889480008B5480008E14800080F +:100130000D490008E3020008E3020008E30200089A +:10014000E3020008E3020008E3020008E3020008FB +:1001500035490008614900088D490008E30200089C +:10016000E3020008E3020008E3020008E3020008DB +:10017000E302000865840008E3020008E3020008C7 +:10018000E3020008E30200089D870008E30200087C +:10019000E3020008E3020008E3020008E3020008AB +:1001A000E3020008E3020008E3020008E30200089B +:1001B000E3020008E3020008E3020008E30200088B +:1001C000E3020008E3020008E3020008E30200087B +:1001D000E302000851840008E3020008E30200087B +:1001E000E3020008E3020008E3020008E30200085B +:1001F000E3020008E3020008E3020008E30200084B +:10020000E3020008E3020008E3020008E30200083A +:10021000E3020008E3020008E3020008E30200082A +:10022000E3020008E3020008E3020008E30200081A +:10023000E3020008E3020008E3020008E30200080A +:10024000E3020008E3020008E3020008E3020008FA +:10025000E3020008E3020008E3020008E3020008EA +:10026000E3020008E3020008E3020008E3020008DA +:10027000E3020008E3020008E3020008E3020008CA +:10028000E3020008E3020008E3020008E3020008BA +:10029000E3020008E3020008E3020008E3020008AA +:1002A000E3020008E3020008E3020008E30200089A +:1002B000E3020008E3020008E3020008E30200088A +:1002C000E3020008E3020008E3020008E30200087A +:1002D000E3020008E3020008E3020008E30200086A +:1002E00002E000F000F8FEE772B6374880F30888B5 +:1002F000364880F3098836483649086040F20000E5 +:10030000CCF200004EF63471CEF200010860BFF36B +:100310004F8FBFF36F8F40F20000C0F2F0004EF637 +:100320008851CEF200010860BFF34F8FBFF36F8F8B +:100330004FF00000E1EE100A4EF63C71CEF20001E3 +:100340000860022080F31488BFF36F8F07F0A0FAD3 +:1003500006F018FC4FF055301F491B4A91423CBF34 +:1003600041F8040BFAE71D49184A91423CBF41F895 +:10037000040BFAE71A491B4A1B4B9A423EBF51F83D +:10038000040B42F8040BF8E700201849184A914280 +:100390003CBF41F8040BFAE707F0B8FA06F076FC28 +:1003A000144C154DAC4203DA54F8041B8847F9E7A6 +:1003B00000F0C4F9114C124DAC4203DA54F8041B9E +:1003C0008847F9E707F0A0BA0006002000220020C5 +:1003D0000000000808ED00E00000002000060020FA +:1003E000289C0008002200206C220020702200209F +:1003F000D45D0020E0020008E0020008E0020008EE +:10040000E00200082DE9F04F2DED108AC1F80CD064 +:10041000D0F80CD0BDEC108ABDE8F08F002383F338 +:1004200011882846A047002006F08EF9FEE706F066 +:10043000E1F800DFFEE7000053B94AB9002908BF20 +:1004400000281CBF4FF0FF314FF0FF3000F074B9AF +:10045000ADF1080C6DE904CE00F006F8DDF804E01B +:10046000DDE9022304B070472DE9F047089D0446FA +:100470008E46002B4DD18A42944669D9B2FA82F257 +:1004800052B101FA02F3C2F1200120FA01F10CFA93 +:1004900002FC41EA030E94404FEA1C48210CBEFBCB +:1004A000F8F61FFA8CF708FB16E341EA034306FB54 +:1004B00007F199420AD91CEB030306F1FF3080F0E3 +:1004C0001F81994240F21C81023E63445B1AA4B230 +:1004D000B3FBF8F008FB103344EA034400FB07F7D2 +:1004E000A7420AD91CEB040400F1FF3380F00A8113 +:1004F000A74240F207816444023840EA0640E41B08 +:1005000000261DB1D4400023C5E900433146BDE8B3 +:10051000F0878B4209D9002D00F0EF800026C5E955 +:10052000000130463146BDE8F087B3FA83F6002E6D +:100530004AD18B4202D3824200F2F980841A61EBE5 +:10054000030301209E46002DE0D0C5E9004EDDE703 +:1005500002B9FFDEB2FA82F2002A40F09280A1EBEB +:100560000C014FEA1C471FFA8CFE0126200CB1FB40 +:10057000F7F307FB131140EA01410EFB03F0884239 +:1005800008D91CEB010103F1FF3802D2884200F2C6 +:10059000CB804346091AA4B2B1FBF7F007FB101158 +:1005A00044EA01440EFB00FEA64508D91CEB0404F6 +:1005B00000F1FF3102D2A64500F2BB800846A4EB51 +:1005C0000E0440EA03409CE7C6F12007B34022FA3C +:1005D00007FC4CEA030C20FA07F401FA06F31C436B +:1005E000F9404FEA1C4900FA06F3B1FBF9F8200C78 +:1005F0001FFA8CFE09FB181140EA014108FB0EF0BE +:10060000884202FA06F20BD91CEB010108F1FF3A0D +:1006100080F08880884240F28580A8F10208614419 +:10062000091AA4B2B1FBF9F009FB101144EA014127 +:1006300000FB0EFE8E4508D91CEB010100F1FF34D2 +:100640006CD28E456AD90238614440EA0840A0FB6A +:100650000294A1EB0E01A142C846A64656D353D040 +:100660005DB1B3EB080261EB0E0101FA07F722FA64 +:1006700006F3F1401F43C5E9007100263146BDE88D +:10068000F087C2F12003D8400CFA02FC21FA03F3F0 +:10069000914001434FEA1C471FFA8CFEB3FBF7F071 +:1006A00007FB10360B0C43EA064300FB0EF69E4296 +:1006B00004FA02F408D91CEB030300F1FF382FD22F +:1006C0009E422DD9023863449B1B89B2B3FBF7F6D7 +:1006D00007FB163341EA034106FB0EF38B4208D9B0 +:1006E0001CEB010106F1FF3816D28B4214D9023EF1 +:1006F0006144C91A46EA004638E72E46284605E70F +:100700000646E3E61846F8E64B45A9D2B9EB0208DF +:1007100064EB0C0E0138A3E74646EAE7204694E76F +:100720004046D1E7D0467BE7023B614432E73046A2 +:1007300009E76444023842E7704700BF38B501F06A +:1007400079FA01F035FC06F03DFF054607F030F878 +:100750000446D0B90F4B9D4219D001339D4241F25E +:10076000883504BF01240025002006F035FF0CB1B8 +:1007700000F076F801F0BAFB00F012FD08B100F0CD +:100780006FF8284600F01AF9F9E70025ECE705466E +:10079000EAE700BF010007B008B501F017FAA0F1C1 +:1007A00020035842584108BD07B5042101900DEBC4 +:1007B000010001F029FA03B05DF804FB38B53023DD +:1007C00083F31188174803680BB106F0A1F80023E2 +:1007D000154A4FF47A71134806F090F8002383F31A +:1007E0001188124C236813B12368013B23606368AE +:1007F00013B16368013B63600D4D2B7833B96368B7 +:100800007BB9022001F0DCFA322363602B78032BE2 +:1008100007D163682BB9022001F0D2FA4FF47A7342 +:10082000636038BD70220020BD07000890230020BF +:1008300088220020084B187003280CD8DFE800F04D +:1008400008050208022001F0B3BA022001F0A6BA9E +:10085000024B00225A60704788220020902300201B +:10086000F8B5504B504A1C461968013100F0998088 +:1008700004339342F8D162684C4B9A4240F2918023 +:100880004B4B9B6803F1006303F500339A4280F001 +:100890008880002001F0F4F90220FFF7CBFF454BE0 +:1008A0000021D3F8E820C3F8E810D3F81021C3F8EA +:1008B0001011D3F81021D3F8EC20C3F8EC10D3F8C2 +:1008C0001421C3F81411D3F81421D3F8F020C3F87D +:1008D000F010D3F81821C3F81811D3F81821D3F861 +:1008E000802042F00062C3F88020D3F8802022F0FC +:1008F0000062C3F88020D3F88020D3F8802042F033 +:100900000072C3F88020D3F8802022F00072C3F870 +:100910008020D3F8803072B64FF0E023C3F8084D42 +:10092000D4E90004BFF34F8FBFF36F8F224AC2F8A0 +:100930008410BFF34F8F536923F480335361BFF3A7 +:100940004F8FD2F8803043F6E076C3F3C905C3F386 +:100950004E335B0103EA060C29464CEA81770139E4 +:10096000C2F87472F9D2203B13F1200FF2D1BFF319 +:100970004F8FBFF36F8FBFF34F8FBFF36F8F5369ED +:1009800023F4003353610023C2F85032BFF34F8F7A +:10099000BFF36F8F302383F31188854680F3088877 +:1009A0002047F8BD0000020820000208FFFF0108F0 +:1009B000002200200044025800ED00E02DE9F04F35 +:1009C00095B0DFF8D8922022FF21029004A8D9F830 +:1009D000085001F035FAA84A1378A3B90121A748B5 +:1009E00011700360302383F3118803680BB105F0A5 +:1009F0008FFF0023A24A4FF47A71A04805F07EFFD2 +:100A0000002383F31188029B13B19E4B029A1A6054 +:100A10009D4A1378032B03D000231370994A536027 +:100A20004FF0000B029C5E46DA46CDF804B0012080 +:100A300001F0BEF924B1934B1B68002B00F0288213 +:100A4000002001F0C3F8B0F10008F3DB012001F051 +:100A5000A5F9A8F121031F2BE9D801A252F823F030 +:100A6000E10A0008FD0A00088B0B00082F0A0008A5 +:100A70002F0A00082F0A0008150C0008070E0008AE +:100A8000F90C0008550D00087B0D0008A10D0008A9 +:100A90002F0A0008B30D0008D70D00084F0E0008FC +:100AA000690B00082F0A0008970E0008ED0A0008DD +:100AB000690B00082F0A0008550D00082F0A0008CE +:100AC0002F0A00082F0A00082F0A00082F0A000822 +:100AD0002F0A00082F0A00082F0A00088B0B0008B5 +:100AE0000220FFF759FE002840F0FF81029B0221FF +:100AF0006648BBF1000F08BF1C4640E04FF47A7017 +:100B000001F064F8071EF1DB0220FFF745FE002824 +:100B1000ECD0013F052F00F2EA81DFE807F0030780 +:100B20000A0D10330520FFF73FFE14E0D9F800004E +:100B3000F9E7D9F80400F6E7D9F80800F3E74FF031 +:100B40001C08404608F1040801F09CF8FFF72CFE51 +:100B5000B8F12C0FF5D10120019B4FF0000A00FAEB +:100B600007F71F43FBB2019301F0B6F92EB1019BC9 +:100B700003F00B030B2B08BF00240221444801F0B3 +:100B800043F854E7D9F80C00CDE7002EAED0019B16 +:100B900003F00B030B2BA9D10220FFF7FDFD074645 +:100BA0000028A3D00120002601F06AF80220FFF7F8 +:100BB00041FE1FFA86FB584601F072F8044688B1E0 +:100BC000A8F14002584601365142514101F078F8EF +:100BD0000028EED1BB46044602212E483E4601F0D5 +:100BE00013F824E725460120FFF724FED9F8083042 +:100BF000AB4207D9284601F045F8013040F07A8130 +:100C00000435F3E70025204BBB463E461D701D4BC7 +:100C10005D60A9E7002E3FF469AF019B03F00B0371 +:100C20000B2B7FF463AF0220FFF704FE322000F0AD +:100C3000CDFFB0F10008FFF659AF18F003077FF4BD +:100C400055AF08EB0503D9F8082093423FF64EAFA5 +:100C5000B8F5807F3FF74AAF0F4BB84503931FDDD0 +:100C60004FF47A7000F0B2FF0028FFF63FAF039B0D +:100C7000013703F8010BF0E78C23002070220020DD +:100C8000BD0700089023002088220020D89100088A +:100C9000D0910008D49100088C220020002200206E +:100CA000C820FFF779FD074600283FF41FAF1F2D2E +:100CB00011D8C5F1200204AB25F003008F4942454D +:100CC000184428BF4246039201F094F8039AFF218A +:100CD0008A4801F0B5F84FEAA803C8F387028749AC +:100CE0002846039301F0B4F8064600283FF474AF99 +:100CF000039B05EB830537E70220FFF74DFD002836 +:100D00003FF4F4AE00F0FAFF00283FF4EFAE002706 +:100D1000B846D9F80830BB4218D91F2F11D8049B08 +:100D200001330ED027F0030314AA134453F8403CB8 +:100D30000C93404604220CA9043701F04BF980467D +:100D4000E7E7384600F09EFF0C90F2E74046FFF7D9 +:100D50002BFD09E7002364210CA80C9300F04AFF47 +:100D600000287FF4C3AE0220FFF716FD00283FF4F1 +:100D7000BDAE0C9800F0B8FFE9E7002364210CA891 +:100D80000C9300F037FF00287FF4B0AE0220FFF78D +:100D900003FD00283FF4AAAE0C9800F0A7FFD6E7A9 +:100DA0000220FFF7F9FC00283FF4A0AE00F0B6FFE8 +:100DB000CDE70220FFF7F0FC00283FF497AE0CA926 +:100DC000142000F0B1FF0390FFF7EEFC03990CA88C +:100DD00000F01AFFC8E60220FFF7DEFC00283FF40F +:100DE00085AE474B0CAF03F1100C1868083353F86D +:100DF000041C3A46634503C21746F6D11020FFF79C +:100E0000D3FC1021E3E7322000F0E0FE071EFFF6DE +:100E10006DAEBB077FF46AAE07EB0A03D9F8082072 +:100E200093423FF663AE0220FFF7B6FC00283FF482 +:100E30005DAE27F003075744BA453FF495AE5046E0 +:100E40000AF1040A00F01EFFFFF7AEFCF4E74FF4CE +:100E50007A70FFF7A1FC00283FF448AE00F04EFF87 +:100E6000002849D0049B01330BD0082204A900209C +:100E700000F0EEFF00283FD02022FF2104A800F060 +:100E8000DFFF2048022100F0BFFE1F4805F062FC92 +:100E900015B0BDE8F08F002E3FF428AE019B03F0A3 +:100EA0000B030B2B7FF422AE002364210CA80C93C0 +:100EB00000F0A0FE074600287FF418AE0220FFF7DE +:100EC0006BFC804600283FF411AE02210D4800F073 +:100ED0009BFE41F2883005F03DFC0C9801F046F88D +:100EE00046463C4600F0F8FFA1E506463CE64FF0DA +:100EF000000AFBE5BB466FE637466DE68C22002014 +:100F0000BC910008D0910008A08601007047000045 +:100F1000704700007047000038B505461446084683 +:100F20000322064900F070FF38B905F10802204697 +:100F30001021BDE8384001F079B838BDDC910008D7 +:100F40002DE9F04100F58037044616463B7C5BB93D +:100F5000C0681030204400F04DFFE5683544B5F519 +:100F6000004FE56002D816B1BDE8F081DEB905F0AA +:100F70007F0605F110000021C6F180062044F6B27C +:100F800032462E4400F05CFFA06804F1100832469F +:100F900000F10060414600F5003006F0B3F830B9CA +:100FA00001233B74E0E74FF400463546ECE7A268C6 +:100FB00005F11001404632442144A260E268521B10 +:100FC000E26000F017FF0220BDE8F04100F0F8BE3B +:100FD000183000F0B9BC000010B5044601F050F81C +:100FE000204610BD10B5044601F04AF8204610BD59 +:100FF0002DE9F04FADF53F7D0746416801222AA853 +:1010000002F02EFF002840F0878006468246814687 +:101010001125DFF80C81DFF80CB101AB4FF48052E1 +:1010200041462AA803F07CF8002875D1019AB2F550 +:10103000805F71D8002A65D00446019A9442ECD2B0 +:10104000282D0FD008DC132D2DD01E2D39D0112DB9 +:1010500013D00134A4B2F0E7322D2DD0372D2FD08C +:101060002D2DF6D13B68121B08EB040138461B6995 +:101070002D259847BDF80440EBE7121B022A09D939 +:10108000594608EB040000F0BFFE18B902342825C9 +:10109000A4B2DEE718F804303A2B3DD00A2B1CBF6F +:1010A000A1461325D5E718F804300A2B34D03A2B83 +:1010B00004BFA2463225CCE718F80430202BC8D054 +:1010C000264618F804300A2B1AD1AAEB090208EBBD +:1010D000090102A811254F2A28BF4F2208F05AF80B +:1010E000A21B08EB060116A84F2A28BF4F2208F0C2 +:1010F00051F83B6816AA02A9DB6838469847A8E76A +:101100001E25A6E73B68384604491B69984701201D +:101110000DF53F7DBDE8F08F0020F9E7DE92000875 +:1011200098230020E091000800F1180110B5044652 +:1011300086B00846019100F0F1FB2046FFF758FF0A +:1011400060B1019902A800F049FC102204F10801E5 +:1011500002A807F0DFFFB0FA80F0400906B010BD2A +:1011600070B504460025EEB2304600F099FD58B146 +:1011700000213046013500F0A3FD08B9002070BD04 +:10118000022000F01DFEEEE72046FFF731FF0028A9 +:10119000F4D004F58034207C80F00100EFE70000FB +:1011A000F0B5C9B006F026FA00F086FF18B90025A0 +:1011B000284649B0F0BD69462A4803F073F8002874 +:1011C0004BD1294C204603F09DF8284803F09AF8AB +:1011D000274803F097F82146224803F00FF900282A +:1011E000E5D1702000F046FF064610B1214B446067 +:1011F0000360336830469B689847054600282ED028 +:101200001A4F1948394603F0F9F805460028CED19F +:10121000194800F02FFF044638B1184B47600360AF +:1012200000F58033C0E902551D74236820469B6891 +:101230009847054628B10E490C4803F0DFF800280E +:10124000B5D1336830465B6898471CB123682046A7 +:101250005B68984700F018FFAAE70025FAE7044604 +:10126000EFE700BFE4910008F49100080B9200083A +:1012700021920008449200081400010060920008C6 +:101280002DE9F04FD44A8DB00B68D0F804A001933B +:101290001A440368D14E1A44D1F81C90DFF8B4C345 +:1012A000DFF8B4B3D0E90234634003EA0A036340D1 +:1012B00013444A6802920AEB7363029CC84A2244B0 +:1012C000C468224484688AEA04051D4065401544C8 +:1012D0008A68039203EB3555039CC24A2244846812 +:1012E00022448AEA03042C4084EA0A041444CA68AB +:1012F00005EBF4340492164483EA05022240564476 +:101300005A4032440E69059604EBB222059FB64E50 +:101310003E441E4485EA040313406B4033444E6947 +:10132000069602EB7363069FB04E3E442E4484EA59 +:1013300002051D40654035448E69079603EB35551F +:10134000079FAB4E3E44264482EA03042C4054409F +:101350003444A84E4E4405EBF434164483EA0502A7 +:1013600022405A4032440E6A089604EBB222089F8B +:10137000A14E3E441E4485EA040313406B403344AF +:101380004E6A099602EB7363099F9C4ED1F830E0D8 +:101390003E44D1F83880F3442E4484EA02051D40CF +:1013A000654035448E6AA6F5244703EB35550A9609 +:1013B0004F3F274482EA03042C4054403C44CF6A08 +:1013C0000B9705EBF4340B9E8D4F3744029E174468 +:1013D00083EA050222405A403A448A4F774404EB9C +:1013E000B2221F4485EA040313406B403B444F6B19 +:1013F000BC4402EB7363654484EA020C0CEA030C00 +:101400008CEA040C6544DFF854C2C44403EB355540 +:10141000A44482EA03042C4054406444D1F83CC004 +:10142000794905EBF4346144114483EA0502224012 +:101430005A400A44754904EBB2223144079E1944CC +:1014400084EA02032B4063400B44714902EBF363CF +:1014500031440B9E0D4482EA03012140514029444E +:101460006C4D03EBF1513544019E254483EA0104A0 +:1014700014405C402C44684D01EBB4443544069E56 +:10148000154481EA04021A404A402A44634D04EBA1 +:10149000323235440A9E1D4484EA02030B40634005 +:1014A0002B445F4D02EBF3633544059E0D4482EA05 +:1014B00003012140514029445A4D03EBF151654449 +:1014C000254483EA010414405C402C44564D01EB52 +:1014D000B4443544099E154481EA04021A404A4046 +:1014E0002A44524D04EB32323544049E1D4484EAB2 +:1014F00002030B4063402B444D4D02EBF363454424 +:101500000D4482EA0301214051402944494D03EB37 +:10151000F1513544089E2C4483EA010515405D4095 +:101520002C44454D01EBB4443544039E2A4481EAE2 +:1015300004051D404D402A44404D04EB32323D44E9 +:101540002B4484EA020593440D4065402B443C4DF6 +:1015500002EBF3633544069E294482EA03052540E5 +:1015600055402944374D03EBF1514D442C4483EA57 +:10157000010515405D40254401EBB54581EA0504B0 +:1015800004EA03024A405A44A6F5B82B089E05EB2C +:101590003232ABF2BE6B54405B4423442A4C344499 +:1015A00002EB33730B9E0C4485EA0201594021443F +:1015B000264C344403EB7151029E254482EA030415 +:1015C0004C402544224C444401EB3545144483EA05 +:1015D00001026A40224443E078A46AD7EECEBDC13E +:1015E00056B7C7E8DB702024AF0F7CF52AC68747C3 +:1015F000134630A8019546FDD8988069AFF7448B13 +:10160000BED75C892211906B2108B44962251EF671 +:1016100040B340C0515A5E26AAC7B6E95D102FD626 +:101620005314440281E6A1D8C8FBD3E7E6CDE121FB +:10163000D60737C3870DD5F4ED145A4505E9E3A95C +:10164000F8A3EFFCD9026F6781F6718722619D6D67 +:101650000C38E5FD937198FD8A4C2A8D8E4379A64E +:10166000934C344405EB7222059E1C4481EA050329 +:10167000534023448F4C344402EB33730A9E0C4492 +:1016800085EA0201594021448B4C4C4403EB7151D3 +:10169000254482EA03044C402C44884D354401EB38 +:1016A0003444019E154483EA010262402A44844D79 +:1016B0003D4404EB72221D4481EA040353402B4451 +:1016C000804D354402EB3373049E294484EA0205BD +:1016D0005D4029447C4D354403EB7151079E254400 +:1016E00082EA03044C402C44784D354401EB3444E9 +:1016F000099E2A4483EA010565401544744A324430 +:1017000004EB7525039E134481EA04026A401A44DF +:10171000704B734405EB32720B4484EA050151406F +:1017200019446D4B634402EB71511C4485EA02037A +:101730004B401C44694B334401EB3444019E1D442F +:1017400082EA010363402B44654D04EB7323354467 +:10175000069E154463EA010262402A44614D03EB90 +:10176000B2624D4462EA040929445F4D89EA0309E3 +:10177000454449442C445D4D02EBB1513544049E2F +:1017800061EA03081D4488EA0208444401EB7444FA +:1017900064EA02034B402B44554D04EBF32375449C +:1017A00063EA010E15448EEA040E0EEB0502514D5C +:1017B00003EBB262354462EA040E29440A9D8EEAC4 +:1017C000030EA5F580164C4D7144A6F6833602EB48 +:1017D000B151264461EA030454403444029E01EBB3 +:1017E0007444354464EA02061D444E407319089E51 +:1017F000424D04EBF323354463EA01061544664089 +:1018000072193F4D03EBB262654462EA0406294453 +:101810003C4D5E403144079E02EBB151354461EAD4 +:1018200003062C44384D56403D443444059E1D4427 +:1018300001EB744464EA02034B402B44334D04EB48 +:10184000F32335440B9E154463EA010262402A44A7 +:101850002F4D03EBB2623544039E0D4462EA04014E +:10186000594029442B4D02EBB15135442A4E2544B1 +:1018700061EA030454402C44099D01EB74442E4456 +:1018800064EA02051E4485EA01039D1903681A44AF +:101890000AEB040303EBF5230260436083681C44F6 +:1018A000C36819448460C1600DB0BDE8F08F00BF0B +:1018B00044EABEA4A9CFDE4B604BBBF670BCBFBEF2 +:1018C000C67E9B28FA27A1EA8530EFD4051D88043F +:1018D00039D0D4D9E599DBE6F87CA21F6556ACC4B3 +:1018E000442229F497FF2A43A72394AB39A093FC01 +:1018F000C3595B6592CC0C8FD15D84854F7EA86FF8 +:10190000E0E62CFE144301A3A111084E827E53F79A +:1019100035F23ABDBBD2D72A91D386EB094B03608F +:1019200003F18833436003F12943A3F59613A3F62B +:101930008B638360A3F18833C3600023C0E9043361 +:10194000704700BF012345672DE9F843144602693B +:1019500005460E46E300C2F3C50800F118079B18C0 +:10196000036122BF43690133436112F4FC7F436981 +:1019700003EB5473436114D0C8F1400907EB08002E +:101980004C4504D22246BDE8F84307F0D3BB403CA7 +:101990004A464E4407F0CEFB444439462846FFF7FA +:1019A0006FFCA04606EB0409B8F13F0FA9EB080154 +:1019B0000AD94022384607F0BDFB39462846A8F12F +:1019C0004008FFF75DFCEFE7A1096FF03F023846E2 +:1019D00002FB014206EB8111D5E7000070B50B69EF +:1019E00001F1180506460C46C3F3C503EA18501C5E +:1019F0008022EA54C3F13F02072A1FD8002100F0D9 +:101A00001FFA29462046FFF73BFC382200212846D2 +:101A100000F016FA23692946204623656369636549 +:101A2000FFF72EFC21461022304607F083FB2046AC +:101A300058220021BDE8704000F002BAC3F137021D +:101A40000021E5E72DE9F84F4FF47A7306460D467D +:101A5000002402FB03F7DFF85080DFF8509098F97C +:101A600000305FFA84FA5A1C01D0A34212D159F80F +:101A700024002A4631460368D3F820B03B46D847B5 +:101A8000854207D1074B012083F800A0BDE8F88FFD +:101A90000124E4E7002CFBD04FF4FA7004F05AFE66 +:101AA0000020F3E7DC330020102200201422002065 +:101AB00000232DE9F0471A460546884601201946BD +:101AC00003F00CF80446802005F03AFC0746002895 +:101AD00061D0002C5FD03B4E28464FF0800A7369DE +:101AE00043F0C0637361D6F8143143F0C063C6F8A5 +:101AF000143105F0A7FA05EB080200FB05F34FF4DB +:101B0000D06C50434FF03D0E834233D232695201C4 +:101B100043D4D6F8102151013FD4216803F100626B +:101B20008A602268D7602268C2F804A02268C2F8DE +:101B300000C0D4F80090D9F8002042F00102C9F8A2 +:101B40000020D4F80090D9F8002022F01E02C9F835 +:101B50000020D4F80090D9F80020D207FBD494F8E4 +:101B60000C90803361680EFA09F20A60CCE700201D +:101B700005F046FB204602F0F1FF384605F01CFC5C +:101B8000104B5A6942F0C0625A61D3F8142142F0F6 +:101B9000C062C3F81421BDE8F0870B4B9A6A42F487 +:101BA00000729A629A6A42F400429A6261B6002612 +:101BB000012005F025FBB045D9D9A819013605F05B +:101BC00059FAF8E70020005200ED00E0002307B5C5 +:101BD000024601210DF107008DF80730FFF732FFB3 +:101BE00020B19DF8070003B05DF804FB4FF0FF3013 +:101BF000F9E700000A46042108B5FFF723FF80F04B +:101C00000100C0B2404208BD074B0A4630B4197803 +:101C1000064B53F82140014623682046DD69044BFA +:101C2000AC4630BC604700BFDC33002014220020EB +:101C3000A086010070B5104C0025104E05F006FA84 +:101C400020803068238883420CD800252088013802 +:101C500005F0F8F923880544013BB5F5802F238072 +:101C6000F4D370BD05F0EEF9336805440133B5F5E2 +:101C7000003F3360E5D3E8E7DE33002098330020EF +:101C800005F0BEBA00F1006000F500300068704752 +:101C900000F10060920000F5003005F033BA00005A +:101CA000054B1A68054B1B889B1A834202D91044C6 +:101CB00005F0C8B90020704798330020DE330020BB +:101CC00038B50446074D29B128682044BDE838409E +:101CD00005F0D0B92868204405F0BAF90028F3D0FF +:101CE00038BD00BF983300200020704700F1FF503E +:101CF00000F58F10D0F8000870470000064991F8F1 +:101D0000243033B100230822086A81F82430FFF719 +:101D1000BFBF0120704700BF9C330020014B1868F3 +:101D2000704700BF0010005C194B013803220844C3 +:101D300070B51D68174BC5F30B042D0C1E88A64209 +:101D40000BD15C680A46013C824213460FD214F95B +:101D5000016F4EB102F8016BF6E7013A03F1080397 +:101D6000ECD181420B4602D22C2203F8012B042431 +:101D7000094A1688AE4204D1984284BF967803F887 +:101D8000016B013C02F10402F3D1581A70BD00BF8F +:101D90000010005C1C220020A0920008022803D141 +:101DA000024B4FF400229A61704700BF00100258A6 +:101DB000022802D1014B08229A6170470010025894 +:101DC000022804D1024A536983F008035361704723 +:101DD0000010025870B504464FF47A764CB1412C8D +:101DE000254628BF412506FB05F0641B04F0B2FC24 +:101DF000F4E770BD002310B5934203D0CC5CC4540B +:101E00000133F9E710BD0000013810B510F9013FAA +:101E10003BB191F900409C4203D11AB10131013A22 +:101E2000F4E71AB191F90020981A10BD1046FCE7AA +:101E300003460246D01A12F9011B0029FAD1704755 +:101E400002440346934202D003F8011BFAE77047AD +:101E50002DE9F8431F4D14460746884695F824207F +:101E600052BBDFF870909CB395F824302BB9202238 +:101E7000FF2148462F62FFF7E3FF95F82400414613 +:101E8000C0F1080205EB8000A24228BF2246D6B26C +:101E90009200FFF7AFFF95F82430A41B17441E44AF +:101EA0009044E4B2F6B2082E85F82460DBD1FFF747 +:101EB00025FF0028D7D108E02B6A03EB8203834279 +:101EC000CFD0FFF71BFF0028CBD10020BDE8F8835F +:101ED0000120FBE79C330020024B1A78024B1A705A +:101EE000704700BFDC3300201022002038B51A4CA8 +:101EF0001A4D204603F01AFF2946204603F042FF00 +:101F00002D684FF47A70D5F89020D2F8043843F059 +:101F10000203C2F80438FFF75DFF1149284604F0B8 +:101F200061F8D5F890200F4DD2F80438286823F0D6 +:101F300002030D49A042C2F804384FF4E1330B60AC +:101F400001D003F04DFE6868A04204D00649BDE808 +:101F5000384003F045BE38BD384000209C9A000848 +:101F6000A49A000814220020C43300200C4B70B542 +:101F70000C4D04461E780C4B55F826209A420DD085 +:101F80000A4B002118221846FFF75AFF0460014649 +:101F900055F82600BDE8704003F022BE70BD00BFBA +:101FA000DC3300201422002038400020C4330020FD +:101FB00008B571B6054B1988054B1888FFF778FDF1 +:101FC00002210E20FFF774FD61B608BDDE3300204C +:101FD0009833002030B50A44084D91420DD011F8D5 +:101FE000013B5840082340F30004013B2C4013F010 +:101FF000FF0384EA5000F6D1EFE730BD2083B8ED4F +:1020000000F00F0300F0F00200F0D000402806D0EE +:10201000302A09D1092B07D801200B7070475A1EAE +:10202000052A01D80933F7E70020704773B5144635 +:10203000451C8E18B4421AD00DF1060115F8010C9A +:10204000FFF7DEFF10B9002002B070BD0DF10701EF +:1020500015F8020BFFF7D4FF0028F4D09DF80620F6 +:102060009DF8073043EA021304F8013BE2E7012040 +:10207000EAE700000121884238BF084605F098B918 +:1020800008B105F099B9704710B5084C012208490C +:10209000002001F0C1FE23783BB1064803F0BAFBF3 +:1020A000044803F04BFD0023237010BDE0330020F3 +:1020B000B0920008C03600202DE9F041234C244E98 +:1020C000236DBBB901224FF4004104F1500005F02B +:1020D000B7FA236D1B686BB901224FF4805104F1EC +:1020E000500005F0ADFA236D1B681BB9002030705D +:1020F000BDE8F08133780BB1FFF7C6FF0324154F1D +:102100004FF00008114D13492846C7F8048003F02A +:1021100007FD284603F09CFB38B1013C284603F03C +:102120000DFD14F0FF04E1D0EDE70B4901220B484F +:1021300001F072FE014618B1284603F06BFBECE794 +:10214000074800F00FF80120D1E700BFC03600209B +:10215000E033002034220020B0920008E433002055 +:10216000B49200080FB4002004B0704700687047B4 +:1021700003460068596870470B0A017043700B0CE6 +:10218000090E8370C1707047110A027003714170AB +:10219000110C120E8170C2701A0A42711A0C1B0EB9 +:1021A0008271C37170470000C36A0239023B8B42DF +:1021B00083BF4389006C01FB0300002070470000CF +:1021C000C2F307238A76CB760378032B01BF120C68 +:1021D0000A75120A4A75704700F10B010022D301FB +:1021E00043EA520310F8012B52FA83F38842DAB221 +:1021F000F5D110467047000010B541780446002024 +:10220000013102464901022A16BFA35C032203EBF7 +:10221000C03302F101021EBF9BB203EB500398B220 +:102220009142F0D810BD000002684AB1134613F87D +:10223000011B1F290DD93A29F9D1911C8B4202D0DB +:102240004FF0FF3070471278302AF9D10360002038 +:102250007047014B187870473036002038B50D466E +:10226000044618B9092000232B6038BD0368002BF1 +:10227000F8D01A78002AF5D08188DA889142F1D115 +:10228000587804F003FC10F00100EBD12368EBE771 +:1022900038B50D4640F25231144602F0B9F9FF2824 +:1022A00007D9012C0BD9030A022468702B70204631 +:1022B00038BD30B1002CFAD001242870F7E7002493 +:1022C000F5E70446F3E700002DE9F8430026D0F8CF +:1022D000008005460C468E76836B002B4AD098F81A +:1022E0000030042B4BD133463546402720E0B7F56C +:1022F000187F80F0C480F90606F1010608BF023796 +:10230000D05B02372BB900F5205292B2B2F5006FC4 +:102310000DD305F11A01C5F1FF0240EA0340214443 +:10232000FFF7B6FF002800F0AA800544002003460E +:10233000D8F8102092F82310B142D8D8002B40F0E2 +:102340009E80002D00F09B8000232544AB766373B4 +:10235000D8F81020137903F03701DB0621730BD472 +:1023600002F13800FFF704FFC4E90001938963819B +:10237000D3892381BDE8F88300200146F4E7C36CCC +:1023800001335ED1EA6B00232E26551E184615F840 +:10239000011F013020290CD0052908BFE52109289B +:1023A00004D10B2B9EBFE71801337E73E71801336E +:1023B00079730B28EBD1E11800204873A17E002926 +:1023C0004BD1002B40D06FF00C0604F10D00082516 +:1023D000361B331810F8011B002938D02E298BB278 +:1023E0004AD0A3F14101192903D8117B0D4200D035 +:1023F00020330373EDE7B9F1000F05D100F5205349 +:102400009BB2B3F5006F0BD307F11A01C7F1FF02BE +:1024100040EA09402144FFF73BFF48B10744002050 +:1024200002368146D8F80C30985B0028E3D1384654 +:10243000B9F1000F4FF0000218BF002023189A7660 +:10244000A0E7B1463746EDE73F23A37601232344B7 +:1024500000219976137B03B96373D37A02F11C00D0 +:1024600003F03F0323730023FFF780FE20606360C7 +:10247000D38A6381138B7CE710250B46B9E73F2392 +:102480000125A37660E7000038B50546002435F83D +:10249000020B08B9204638BD02F0EEF86308C2B25C +:1024A00003EBC43312FA83F39AB2C0F3072303EBAE +:1024B000520303EBC2339CB2E9E7000037B5C3789F +:1024C00004461BB90025284603B030BD00F14C017D +:1024D000826C01234078019104F0FEFA054680B930 +:1024E000A36BE070A06C226BC31A9342EAD2A3786C +:1024F0000199022BE6D102440123607804F0ECFA42 +:10250000E1E70125DFE7000038B5836C05460C469E +:102510008B4210D0FFF7D2FF60B92246012305F1AC +:102520004C01687804F0B4FA00281CBF4FF0FF3467 +:102530000120AC6438BD0020FCE7000038B5002362 +:102540000446C3704FF0FF338364FFF7DDFF0028BC +:102550004BD1B4F84A524AF655239D4207D10B227B +:10256000254904F14C0006F0D5FD00283FD094F831 +:102570004C30EB2B03D01833DBB2012B2ED84AF6AC +:1025800055239D4206D108221C4904F19E0006F005 +:10259000C1FD48B3B4F85730B3F5007F1ED194F8AD +:1025A0005930DBB15A1E1A4218D1B4F85A30ABB1C7 +:1025B00094F85C30013B012B10D8B4F85D306BB15E +:1025C000B4F85F307F2B06D804F16C00FFF7CEFD26 +:1025D000B0F5803F02D3B4F8623053B94AF65520C3 +:1025E00085420CBF0220032038BD0420FCE70120F7 +:1025F000FAE70020F8E700BFE0920008EC9200083C +:1026000002392DE9F04701F007044FF0010A466C4A +:1026100005460AFA04F41746984606EB1136C1F34C +:10262000C809E4B2314628460136FFF76DFF18B1FC +:102630000120BDE8F087994605EB090292F84C307D +:10264000234214BF01210021414513D06340013FC3 +:1026500082F84C3085F803A0EBD0640014F0FF043E +:10266000EAD109F1010301244FF00009B3F5007F1D +:10267000E1D1D7E70220DCE701290246F8B50C4694 +:1026800040F28C800668F36A8B4240F28780337890 +:10269000013B032B00F28280DFE803F00229384B74 +:1026A00004EB5405B16B304601EB5521FFF72CFFCD +:1026B00010B14FF0FF30F8BD6F1CC5F30805B16BCA +:1026C0003046354401EB572195F84C50FFF71CFF7D +:1026D0000028EED1C7F30807E3073E4496F84C0004 +:1026E00045EA00204CBF0009C0F30B00E3E7B16BE3 +:1026F000304601EB1421FFF707FF0028D9D1640011 +:1027000004F4FF742644B6F84C00D4E7B16B3046AD +:1027100001EBD411FFF7F8FE0028CAD1A40006F19E +:102720004C0004F4FE742044FFF720FD20F07040BC +:10273000C1E7D0E90430D57953EA000101D09168AE +:1027400001B95DBB9168022DA4EB01010DD1013BE4 +:10275000728940F1FF305B0A43EAC053B3FBF2F3E6 +:1027600099421BD81CD0601CA5E7032D02D19369A8 +:102770008B42F8D8D3699BB9B16B304601EBD411C9 +:10278000FFF7C2FE002894D1A0004C3600F4FE7082 +:102790003044FFF7EBFC20F000408CE701208AE793 +:1027A0006FF0004087E70000F8B5066804460D4664 +:1027B0003378042B0CBF4FF080524FF400128A4242 +:1027C00001D80220F8BDCA06FBD182680163D2B9E4 +:1027D000022B13D83389B3EB551FF2D9F36BA363E4 +:1027E000A36B6263002BECD003EB55234C36C5F38F +:1027F00008050020A3633544E563E3E7F36BC2718A +:10280000002BE7D01A4677897F02BD42114604D2D9 +:102810003046FFF7C9FCA063E2E72046FFF72CFF34 +:10282000431C024606D00128CBD9F36A8342C8D99B +:10283000ED1BEAE70120C5E701292DE9F04706462F +:102840000C46174608D9C36A8B4205D90378022B78 +:1028500062D003D8012B22D0022552E0033B012B8A +:10286000FAD8816B01EBD411FFF74EFE0546002824 +:1028700047D1A40006F14C0304F4FE741C443378E1 +:10288000042B07D0204627F07047FFF76FFC00F0BD +:102890007040074339462046FFF76EFC2FE001EBFE +:1028A0005108816B01EB5821FFF72EFE054640BB16 +:1028B00014F0010406F14C0908F1010AC8F30808F4 +:1028C00008BFFBB230461FBF19F8083003F00F02F3 +:1028D0003B0103F0F00318BF134309F8083001234C +:1028E000B16BF37001EB5A21FFF70EFE054640B9BC +:1028F000CAF3080A44B1C7F3071709F80A7001239D +:10290000F3702846BDE8F08719F80A30C7F30327AB +:1029100023F00F031F43F0E7816B01EB1421FFF756 +:10292000F3FD05460028ECD1640006F14C0304F4E5 +:10293000FF741F551919C7F307274F70DFE7000011 +:10294000F8B504460E461746E3690BB91846F8BDBC +:10295000012BA6EB0305206814BFAA1C3A46691C8C +:10296000FFF76AFF0028F2D1E369013BE361EBE77F +:1029700001292DE9F84306460C461746056802D89A +:102980000220BDE8F883EB6A8B42F9D97AB9A146F7 +:1029900021463046A046FFF76FFE0446B0B92B78BB +:1029A000042B02D1002F43D1F7710020E9E72B78E7 +:1029B000042B02D1C379022BE9D04FF0FF32394604 +:1029C0002846FFF739FF0028E1D0DAE70128D7D001 +:1029D000421C01D10120D4E72B78042B19D1EA6ADB +:1029E000AB69023A93421CD308F10102A2420CD017 +:1029F0002B78042B08D10023A2EB09024946284674 +:102A0000FFF7FEFD0028BCD1A146EB6AA342BFD868 +:102A1000C5E7002241462846FFF70EFF0028DED01A +:102A2000AFE70133AB612B7943F001032B71DBE797 +:102A3000F3798BB9B468BC4202D10223F371B4E7D5 +:102A400021463046FFF718FE012899D9431CC1D012 +:102A500001348442EFD0A8E7032BA6D1B368BB4270 +:102A6000A3D8B2691344BB429FD3E6E770B5C379DC +:102A70000446032B06D181688369CD18A94203D18E +:102A80000023E371002070BD4E1C20683246FFF722 +:102A9000D3FE0028F7D13146F0E700002DE9F743D7 +:102AA00005460191FFF70AFD0446002849D105F1CA +:102AB0004C09019928464FF40072FFF775FB214637 +:102AC000A86407464846FFF7BBF96C896402B4F571 +:102AD000004F28BF4FF40044B4F5007F2FD92046A3 +:102AE00004F06EFC804630B122460021640A0026C4 +:102AF000FFF7A6F909E06408EEE72346BA19414654 +:102B0000687803F0E9FF18B926446B899E42F4D334 +:102B1000404604F065FC6889801B18BF012003B0A3 +:102B2000BDE8F08301366B899E42F4D20123BA19C5 +:102B30004946687803F0D0FF0028F3D0EBE7002681 +:102B4000F1E70120EBE70000F8B50446FFF7B6FC1B +:102B50000546002842D12378032B37D12779012F4E +:102B600034D104F14C0601464FF400723046FFF7B1 +:102B700067F955234122722184F84A32AA2304F5C9 +:102B80000D7084F84F2084F84B32522384F83012B1 +:102B900084F84C3084F84D30612384F8311284F885 +:102BA0004E3084F83332A16984F83222FFF7E4FA18 +:102BB000616904F50E70FFF7DFFA626B3B46314640 +:102BC00001326078A26403F087FF257100226078EB +:102BD000114603F0A5FF003818BF0120F8BD000022 +:102BE00000232DE9F0430B6085B00F461546FFF733 +:102BF0001BFB061EC0F2B281804B53F82640002C0E +:102C000000F0AE813C6005F0FE0523786BB1607882 +:102C100003F03CFFC70708D41DB110F0040500D035 +:102C20000A25284605B0BDE8F0830023F0B22370E2 +:102C3000607003F017FFC10700F194810DB14207E6 +:102C4000EED400212046FFF779FC022840F099805D +:102C50006E4604F2122304F2522132461846103313 +:102C6000FFF784FA42F8040B8B42F7D1002556F89F +:102C7000041B00297DD02046FFF760FC012879D88D +:102C80000128A26C40F0C08004F1570304F18C01CC +:102C900013F8015B002D7BD18B42F9D1B4F8B4302D +:102CA000B3F5807F74D194F8B830092B70D104F15A +:102CB0009400FFF75DFA4FF0FF33171841F1000160 +:102CC000BB4275EB010363D304F1A000FFF74EFA9A +:102CD00094F8BA302063012BA37059D194F8B990BD +:102CE00003FA09F91FFA89F36381002B50D0444B92 +:102CF00004F1A800FFF73AFA0646984248D8831C28 +:102D0000626304F1A400E362FFF730FA00EB02080B +:102D100004F19C00C4F84080FFF728FA10441FFA21 +:102D200089F2A06306FB02F313EB080345EB0502EF +:102D30009F4271EB02032BD32E4604F1AC00FFF748 +:102D400015FAE06365B96389B34221D9E16B204686 +:102D5000FFF72AFA81192046FFF7D6FB98B901360A +:102D6000631993F84C30812B14D02035C5F3080536 +:102D7000E8E703200135042D7FF479AF042807D15B +:102D800001E0042801D101254BE701287FF678AF47 +:102D90000D2546E705F1140004F14C063044FFF719 +:102DA000E5F901280546F3D9E36A8342F0D9618940 +:102DB000821E236C02FB01336364A16B204601EB8E +:102DC000D511FFF7A1FB0028DDD105F07F0006EB50 +:102DD0008000FFF7CBF9431C03D00135A842ECD0AB +:102DE000D6E70425C4E90500064A257000251388A6 +:102DF000E56101339BB21380E38012E73436002093 +:102E0000FDFFFF7F38360020B4F85730B3F5007F60 +:102E1000BED1B4F8626026B904F17000FFF7A6F9DC +:102E2000064694F85C302663591EA3700129AFD87A +:102E300094F859506581002DAAD0691E2942A7D166 +:102E4000B4F85D8018F00F0FA4F80880A0D1B4F892 +:102E50005F0018B904F16C00FFF788F9B4F85A1054 +:102E6000002995D006FB03FE01EB181CF4446045D5 +:102E70008ED3A0EB0C00A842B0FBF5F388D33E48FC +:102E8000834285D84FF6F57083426DD903259F1C88 +:102E9000114402EB0C03032DE7626263A163236418 +:102EA0004CD1B4F8763053EA08037FF471AFBB001D +:102EB00004F17800FFF75AF9E06303F2FF13B6EB71 +:102EC000532FFFF465AF4FF0FF33032DC4E90533F3 +:102ED0004FF08003237187D1B4F87C30012B83D16C +:102EE000511C2046FFF710FB00287FF47DAFB4F89B +:102EF0004A224AF6552320719A427FF475AF1F4B40 +:102F000004F14C00FFF732F998427FF46DAF03F102 +:102F1000FF5304F50C70FFF729F903F50053203334 +:102F200098427FF461AF04F50D70FFF71FF9A061BF +:102F300004F50E70FFF71AF9606155E7B8F1000F5C +:102F40003FF426AF7144022D4FEA4703E1631EBFF1 +:102F5000D91907F0010303EB5103AEE70B2560E637 +:102F60000C255EE603255CE640F6F575AB428CBFAA +:102F7000022501258BE700BFF5FFFF0F525261418B +:102F80002DE9F84F07460568884649B96E69C6B10C +:102F9000EB6AB34298BF0126AB69A3B9002405E0F0 +:102FA000FFF76AFB0128044603D801242046BDE848 +:102FB000F88F421C00F0D280EB6A8342F6D8464676 +:102FC000EAE70126E8E72A78EB6A042A40F08380E2 +:102FD000A6F1020A023B4FF0010B9A4528BF4FF0C1 +:102FE000000AD146696C284601EB1931FFF78CFACB +:102FF00000283BD109F00703EA6AC9F3C8010BFABC +:1030000003F3901EDBB26A184C4609F1010992F8ED +:103010004C20814502EA030233BF5B0000234FF4DA +:103020000071DBB228BF9946B2B90234631E033384 +:10303000BCD80123214628461A46FFF7E1FA0228A8 +:10304000B3D0012800F08A80B8F1000F13D1022319 +:10305000FB710028A9D130E0CA450AD0002BD2D19B +:103060000131B1F5007FBDD20123CCE74FF0FF3431 +:10307000DCE70024DAE7FB79022B07D1731CA342BB +:10308000E7D0BB68F31ABB610323FB7108F10102AF +:10309000FB69A24205D113B10133FB61D9E70223D9 +:1030A000FBE70BB90123FB61224641463846FFF797 +:1030B00047FC00284FD10123FB61EA6AAB69023A61 +:1030C0006C6193429CBF03F1FF33AB612B7943F0FA +:1030D00001032B716AE7464514D1741C3846A3429C +:1030E00098BF02242146FFF7C7FA01283FF45DAFDD +:1030F000431C33D0E0B16B69012B03D9EA6A9342D8 +:1031000038BF1E4634460134EB6AA34203D8012E71 +:103110007FF644AF022421463846FFF7ADFA48B1A6 +:1031200001283FF442AF013018D0B442EBD135E76B +:10313000002CE7D04FF0FF3221462846FFF77CFBFA +:1031400048B9B8F1000FB8D0224641462846FFF7EB +:1031500073FB0028B1D001287FF427AF4FF0FF3474 +:1031600024E700002DE9F84306680446076B89460A +:1031700033782037042B0CBF4FF080534FF40013EB +:10318000BB429CBF00238363836B73B1C7F3080802 +:10319000B8F1000F3CD10133416B836339B93389F6 +:1031A000B3EB571F34D80023A36304200AE07389CC +:1031B000013B13EA57232BD1FFF75EFA012805469E +:1031C00002D80220BDE8F883421C01D10120F9E7B2 +:1031D000F36A834216D8B9F1000FE4D0616B204640 +:1031E000FFF7CEFE0546C8B10128EAD0431CEDD05A +:1031F00001463046FFF752FC0028E7D1E37943F05F +:103200000403E371294630466563FEF7CDFFA063F2 +:103210004C36002027634644E663D3E70720D1E716 +:10322000F8B50E46002104460768FFF7BDFA98B9C5 +:103230000546A16B3846FFF767F968B93A78E36B42 +:10324000042A1B780CD11B060ED505460121204609 +:10325000FFF788FF0028ECD0042808BF072006E00D +:10326000E52B01D0002BF0D10135B542EED1F8BDF0 +:10327000C16C4B1C2DE9F04104460568066B1FD15B +:10328000E5274FF00108A16B2846FFF73DF998B9F3 +:103290002A78E36B042A09BF1A781F7002F07F02B4 +:1032A0001A7085F80380236BB3420DD200212046AB +:1032B000FFF758FF0028E6D0042808BF022003E0EB +:1032C000FFF772FA0028DBD0BDE8F0812DE9F0416C +:1032D00005460068A96B0669FFF716F9044620B990 +:1032E000EB6B1A78852A03D002242046BDE8F081D2 +:1032F000324603F1200153F8040B8B4242F8040BD1 +:10330000F9D1777801377F01A7F16003B3F5007F2A +:10331000EAD800212846FFF725FF04280446E3D019 +:103320000028E2D1A96B2868FFF7EEF804460028D0 +:10333000DBD1EB6B1A78C02AD6D106F1200203F15B +:10334000200153F8040B8B4242F8040BF9D196F894 +:1033500023300F222C33B3FBF2F3B7EB431FC3D35D +:103360004FF0400800212846FFF7FCFE04280446E1 +:10337000BAD00028B9D1A96B2868FFF7C5F8044670 +:103380000028B2D1EB6B1A78C12AADD1B8F5187FFD +:1033900009D206EB080203F1200153F8040B8B421B +:1033A00042F8040BF9D108F120084745DAD8B8F5FE +:1033B000187F9AD83046FEF71FFF7388834294D057 +:1033C00092E700000B68002210B5036004460B6A08 +:1033D00083604B6AC261C37123F0FF03896AC0E94D +:1033E0000432C164FFF7E0F920B92046BDE810407F +:1033F000FFF76CBF10BD0000F8B503680546012754 +:103400001C692046FEF7F8FEA070000A6678E0709E +:103410002846E96CFFF7C8F920B1022828BF02202E +:10342000C0B2F8BDA96B2868FFF76EF80028F4D188 +:10343000EB6B04F1200254F8041B944243F8041B84 +:10344000F9D12B68DF70002EE7D000212846013E1D +:10345000FFF788FEE0E700002DE9F8434FF0FF0892 +:1034600006460768042445464FF6FF79B16B11B94B +:10347000002C73D063E03846FFF746F80446002876 +:103480005DD1F06B0378002B6ED03A78042A11D10D +:10349000852B4DD1336B3046F364FFF717FF04469D +:1034A00000284CD13B691B7903F03F03B3712046E0 +:1034B000BDE8F883C27AE52B02F03F02B27143D037 +:1034C0002E2B41D022F0200108293DD00F2A40D1D7 +:1034D000590637D503F0BF05336B90F80D80F364C0 +:1034E000437B434530D1428B72BB03780D21FC688E +:1034F00023F04003DFF874E0013B4B4301211EF849 +:1035000001CB30F80CC009B3FF2B1DD824F813C031 +:103510006146013301320D2AF1D10278520605D5F8 +:1035200021B1FF2B10D8002224F81320013DEDB269 +:1035300000213046FFF716FE0446002896D00023EF +:10354000B363B4E7AB42CBD0FF25F1E7CC45E1D084 +:10355000FAE72DB9FEF740FE404501D10024A6E769 +:103560004FF0FF33F364A2E70424E8E788930008F0 +:103570002DE9F04F002187B00446D0F80090FFF706 +:1035800013F9804670B999F80030042B33D1D9F87B +:103590000C00FEF779FF07462046FFF75DFF054662 +:1035A00020B18046404607B0BDE8F08FD9F8103012 +:1035B0009A8CBA42F0D193F823B040265D4506D1EB +:1035C000D9F80C3033F81530002BE5D1EAE7F106D5 +:1035D000D9F8103008BF0236985B01F04DF8D9F8E1 +:1035E0000C30824633F8150001F046F88245D3D1FD +:1035F00002360135E2E74FF0FF0A4FF0FF3B554638 +:10360000C4F84CB0A16B4846FEF77EFF00285CD1A1 +:10361000E66B3778002F77D0F27AE52F02F03F0380 +:10362000A37103D0120704D50F2B04D0C4F84CB0FB +:103630004FE00F2B54D194F84B3058063FD4790605 +:1036400045D5236B07F0BF0796F80DA0E364737BA5 +:1036500053453ED1738B002B3BD135780121D9F8EE +:103660000C3005F03F0501930D23013D5D43284BD0 +:1036700013F8012BB25A71B3FF2D059329D81046C8 +:10368000049200F0F9FF6B1C03900293019B33F846 +:10369000150000F0F1FF039981421AD1049A029DAE +:1036A0001146059B1B4A9342E2D133785A0604D552 +:1036B00019B1019B33F815305BB97D1EEDB20021C5 +:1036C0002046FFF74FFD00289CD080466AE7BD42A8 +:1036D000BDD0FF25F3E74FF6FF708242E2D0F8E756 +:1036E0002DB93046FEF778FD50453FF45BAF94F8B6 +:1036F0004B30DB079AD40B2204F14001304605F031 +:1037000009FD002892D14DE74FF004084AE700BFB9 +:1037100088930008959300082DE9F04F90F84BB07E +:1037200099B004461BF0A00540F068810668F26875 +:1037300032F81530002B4AD13378042B40F08780C3 +:103740000F230E352046B5FBF3F5A91CFFF768FDE6 +:103750008146002877D1236B0135A3EB4515E3792A +:103760005A07E56435D523F004032046E371FFF7DB +:103770007DF950BB4FF0FF32616B2046FFF7E0F858 +:1037800018BBA3682BB3214604A8FFF71BFEE0B9C2 +:1037900070894FF40071D4E90423E0FB0123306900 +:1037A000C4E904233830FEF7EFFC3069D4E9042380 +:1037B0002830FEF7E9FCE379326904A843F00103FD +:1037C00082F82130FFF718FE18B181463BE0013541 +:1037D000AEE7D6E90354402200212046FEF730FB35 +:1037E0008523012140222370C0234FF0C10C04EB3C +:1037F000010884F8203000231E469E46571C04F81A +:1038000002C0F0B2023204F807E021B135F813101B +:1038100009B10133DBB20F0AA15408F80270023279 +:10382000D706F2D135F813700136002FE6D184F8AF +:103830002330831C28466370FEF726FE84F824009C +:10384000000A84F82500484619B0BDE8F08F04F15D +:1038500040070DF1100A1BF0010F97E807008AE8F6 +:10386000070000F0D38040234FF0010884F84B306C +:10387000BC46F368B8F1050F9AE80700ACE803000E +:103880002CF8022B4FEA12428CF8002059D9981ECE +:10389000424630F8021F002942D10DF10F0C0721DA +:1038A00002F00F0E914612090EF13000392888BF40 +:1038B0000EF1370001390CF8010902D0B9F10F0FF0 +:1038C000EED818AB7E205A1802F8580C3846002261 +:1038D000914206D010F801CB02F1010EBCF1200F8D +:1038E00031D104F13F0C072902F1010297BF18AB57 +:1038F00020205818013198BF10F8580C072A0CF8EE +:103900000200F0D92046FFF733FE8146002878D127 +:1039100008F10108B8F1640FAAD14FF0070992E746 +:103920004FF0100C01F0010E49080EEB4202D303D8 +:1039300044BF82F4883282F02102BCF1010CF1D143 +:10394000A7E74246A9E77246C2E7216B2046A1EBF2 +:103950004511FEF729FF814600287FF474AF4FF62A +:10396000FF783846FEF738FC0190A16B3046FEF731 +:10397000CBFD814600287FF466AFE36BE9B2019A84 +:103980004FF00D0CD6F80CE05A734FF00F02DFF831 +:10399000E0A0DA724A1E18730CFB02F28446987695 +:1039A000D87640451AF8019B0CF1010C18BF3EF87F +:1039B000120003EB090B18BF013203F809004FEAAC +:1039C0001029002808BF4046BCF10D0F8BF801906C +:1039D000E7D1404502D03EF812200AB941F040013B +:1039E0001970012300212046F370FFF7BBFB8146CD +:1039F00000287FF428AF013DB7D11BE04FF0060946 +:103A000021E704287FF41FAF84F84BB01BF0020FAE +:103A100020461BBF0C350D210125B5FBF1F518BF64 +:103A200001352946FFF7FCFB814600287FF40BAFE8 +:103A3000013D8AD1A16B3046FEF766FD8146002824 +:103A40007FF401AF01462022E06BFEF7F9F9E36B4A +:103A500003CF18605960BA7839889A72198194F83E +:103A60004B30E26B03F0180313730123F370EAE6A3 +:103A70008893000810B504460A463430FEF776FBFA +:103A8000886004F13800FEF773FBC2E9040194F882 +:103A9000213003F00203D3710023D36110BD000075 +:103AA00003284B8B04BF8A8A43EA024318467047B7 +:103AB0002DE9F04F0B7899B0044689462F2BD0F8AA +:103AC00000B001D05C2B09D14A46137891460132EF +:103AD0002F2BFAD05C2BF8D0002301E0DBF81C3050 +:103AE000A3600023E3619BF80030042B1ED1A36880 +:103AF000E3B1DBF82030214604A82362DBF8243050 +:103B00006362DBF82830A362FFF75CFC0346002801 +:103B100054D1DBF8102002F13800FEF727FBC4E98E +:103B2000040392F8213003F00203E37199F80030A6 +:103B30001F2B00F2358180230021204684F84B3072 +:103B400019B0BDE8F04FFEF72FBE49460B78894605 +:103B500001312F2BFAD05C2BF8D01F2B8CBF002506 +:103B60000425012F2FD113882E2B31D1002322F8C9 +:103B7000173004F140029F428CBF2E2120210133D7 +:103B80000B2B02F8011BF6D145F02005204684F8E6 +:103B90004B50FFF7EDFC94F84B30002800F0E78025 +:103BA00004280BD1990603F0040240F1DC80002ABE +:103BB00000F0F6808023002084F84B3019B0BDE877 +:103BC000F08F0425CDE7022F02D153882E2BCAD0C7 +:103BD000911E87BB002322F81730002F00F01181BF +:103BE00032F81300194601332028F9D009B92E28DC +:103BF00001D145F00305901E30F817302E2B01D06F +:103C0000013FF9D14FF020334FF0000A6364D046F2 +:103C10002364C4F847300823481C32F81160009030 +:103C2000F6B1202E03D02E2E0DD1B84210D045F083 +:103C300003050099F0E731F81730202B01D02E2B27 +:103C4000C8D1013FC5E79A4505D20099B9423BD199 +:103C50000B2B30D101E00B2B27D145F003050B23B3 +:103C600094F84020E52A04BF052284F84020082B60 +:103C700004BF4FEA88085FFA88F808F00C030C2BA1 +:103C800003D008F00303032B01D145F00205A80778 +:103C90003FF57CAF18F0010F18BF45F0100518F084 +:103CA000040F18BF45F0080570E70099B94202D02B +:103CB00045F00305D4D84FEA88080B234FF0080AD3 +:103CC00000975FFA88F8B4E77F2E15D9304640F2A6 +:103CD0005231CDE9022345F00203019300F098FC34 +:103CE00010F0800F0646DDE9022316D000F07F06B3 +:103CF00046498E5D019D46B331464548CDE90123D5 +:103D000005F032FADDE90123F8B9A6F1410189B2E3 +:103D100019291ED848F0020810E0FF28EAD9591ED8 +:103D20008A4503D345F003059A4682E704EB0A016E +:103D3000000A0AF1010A019D81F8400004EB0A0122 +:103D40000AF1010A81F8406073E745F003055F2638 +:103D5000F4E7A6F1610189B219299EBF203E48F01F +:103D60000108B6B2EAE7002A08BF052026E75A078D +:103D70003FF524AFA379DB0645D59BF80000042866 +:103D800035D1A3682146E27923622369DBF810006C +:103D900023F0FF0313436362E36CA362FFF76AFE41 +:103DA00023680027DA6819F8010B00283FF409AFEF +:103DB00040F25231009200F04BFC054608B31F2838 +:103DC000009A7FF6FEAE2F283FF4BFAE5C283FF48A +:103DD000BCAE7F2805D801460E4805F0C5F9009A0B +:103DE00078B9FF2F0DD022F817500137DBE7216B90 +:103DF0000BF14C03C1F308011944FFF751FEA06019 +:103E0000CEE70620DAE60520D8E600BF08930008D2 +:103E100001930008F89200081FB5CDE9001003A82F +:103E200014460391FEF700FA002815DB0B4A52F8FE +:103E300020300BB100211970019B0BB100211970CA +:103E400042F820302CB1002201A96846FEF7C8FED6 +:103E50000446204604B010BD0B24FAE73436002097 +:103E60002DE9F04798B0904605460191002800F0F2 +:103E7000528102F03F0603A901A83246FEF7B0FEC8 +:103E8000002840F04681039B4FF48C60049303F0BC +:103E900097FA0746002800F04081039B00F5007266 +:103EA0000199D86004A81A61FFF702FE044620B900 +:103EB0009DF95B30002BB8BF062418F01C0F00F0F2 +:103EC000CD80002C4CD0042C40D104A8FFF724FC5A +:103ED000044600283AD146F00806039B1A78042AC3 +:103EE00040F08380186929462B60FFF7C3FD039BD0 +:103EF0001E22002118690230FDF7A2FF039C002159 +:103F00001A2220692630FDF79BFF236920221A71AF +:103F1000246903F08FFA0146012208342046FEF797 +:103F20002BF9039B04A81B6983F82120FFF764FA8F +:103F3000044658B9A96801B302462846FEF718FDA1 +:103F4000AB68039A0446013B5361B4B1384603F0B1 +:103F500047FA0CB100232B60204618B0BDE8F0876B +:103F60009DF8163013F0110F40F0848018F0040F04 +:103F700040F0C98018F0080FAFD1039A31071399A8 +:103F8000936C48BF46F04006E964AB64107804289F +:103F900072D1069B9DF817102B62089B106923F0C5 +:103FA000FF030B4329466B62179BAB62FFF762FD71 +:103FB000DDF80CA00024002205F15008BAF8063004 +:103FC00021464046C5F800A0AB80002385F830604C +:103FD00085F831406C64C5E90E234FF40072FDF79B +:103FE0002FFFB20653D40024B0E703F023FA0146B2 +:103FF000009013980E30FEF7BFF813980099163012 +:10400000FEF7BAF8039C13992078FFF749FD2023A7 +:1040100000228046CB7220461399FEF7D1F8139BFD +:10402000002201211A775A779A77DA77039BD970A1 +:10403000B8F1000FA1D0414604A8D3F84890FEF78C +:1040400097FC0446002881D149460398FEF75CFAA4 +:10405000039B044608F1FF30586176E7002C7FF49B +:1040600075AF9DF81630DC064FD418F0020F84D0DF +:10407000D80782D5072469E7FFF712FD0023A8605F +:1040800001F11C00FEF772F86B61286190E7D5E939 +:10409000046956EA0903A6D0BAF80AA0A9684FEA4B +:1040A0004A2AC5E90E69B24574EB09031BD3002403 +:1040B0002964002C7FF44AAFC6F30803002B92D08A +:1040C000039C2046FEF770F808B3760A01234146A8 +:1040D00046EAC95682196A64607802F0D9FC041E67 +:1040E00018BF012432E72846FEF7C6FAB6EB0A06E7 +:1040F000014669F10009012803D9431CD3D10124E9 +:10410000D6E70224D4E7082420E704241EE702248B +:104110001CE704461EE709241EE711241CE70000E3 +:104120002DE9F04F994685B00023884603A904463F +:10413000C9F800301646FEF791F8054680BB94F8A2 +:1041400031506DBB94F8303013F00103009300F050 +:10415000A68004F1500AD4E90432D4E90E011B1AF6 +:1041600062EB0102B34272F1000238BF1E46BEB1DB +:10417000D4E90E10C1F30803002B40F08280039BAA +:104180005A894B0A013A43EAC0531A401BD151EAFB +:10419000000309D1A06801280DD8022584F8315008 +:1041A000284605B0BDE8F08F216C20460192FEF74D +:1041B00063FA019AEFE7431C04D10123009D84F8C0 +:1041C0003130EDE72064DDF80CB0216C5846FDF786 +:1041D000EBFF0028E1D0B6F5007F02EB000731D3FA +:1041E000BBF80A1002EB5620730A88429BF80100C4 +:1041F00088BF8B1A3A464146019302F049FC0028D9 +:10420000DBD194F93020019B002A0BDA606CC01BD3 +:10421000984207D24FF40072514608EB4020FDF758 +:10422000E9FD019B5F02D9F80030F61BB8443B441E +:10423000C9F80030D4E90E32DB1942F10002C4E9BA +:104240000E3294E7626CBA421AD094F93030002BE7 +:104250000DDA012351469BF8010002F03DFC0028D5 +:10426000ABD194F8303003F07F0384F830300398FA +:1042700001233A465146407802F00AFC00289CD1BE +:104280006764A16B4046C1F30801C1F50077514452 +:10429000B74228BF37463A46FDF7ACFDC3E70725CE +:1042A0007EE7000070B596B00E460022019002A98C +:1042B00001A8FEF795FC0446E0B94FF48C6003F0CA +:1042C0007FF80546D8B1029B00F500720199D860CD +:1042D00002A81A61FFF7ECFB044640B99DF9533080 +:1042E000002B0ADB1EB1314602A8FDF7EDFF284680 +:1042F00003F076F8204616B070BD0624F7E71124C7 +:10430000F8E7000070B5B8B00222019003A901A837 +:10431000FEF766FC044608BB039B4FF48C601093C9 +:1043200003F04EF80546002866D0039B00F50072A6 +:104330000199D86010A81A61FFF7BAFB044650B97A +:104340009DF88B30980655D4190653D49DF8463005 +:10435000DA0706D50724284603F042F8204638B08D +:1043600070BD039B04931878042814D104A918691C +:10437000FFF780FB069E9DF84630DB0610D410A8A0 +:10438000FEF776FF04460028E5D156BB0398FEF7FA +:10439000DBFB0446DFE71F99FFF782FB0646EAE7EF +:1043A000039BDA69B242D5D024930021269624A833 +:1043B0001B78042B01BFDDE90823CDE928239DF8F4 +:1043C00017308DF89730FEF7EFF904460028C2D178 +:1043D00024A8FFF741F804460028BBD00428BAD12E +:1043E000CDE70246314604A8FEF7C2FA044600288B +:1043F000B1D1CBE70624AEE71124AFE7F0B5BDB0ED +:10440000CDE900106846FDF70FFF022203A901A8BD +:10441000FEF7E6FB0446002841D1039B4FF48C6075 +:10442000149302F0CDFF0546002800F0EE80039BB8 +:1044300000F5007214AE0199D8601A613046FFF79A +:1044400037FB044640BB9DF89B3013F0A00F40F0B3 +:10445000D880039B009F1A78042A68D11B6904AC9A +:1044600003F1400C1868083353F8041C22466345D6 +:1044700003C21446F6D15022314628A8FDF7BAFCF3 +:10448000394628A8FFF714FB044600284CD12A9A85 +:10449000169B9A4206D00824284602F0A1FF204627 +:1044A0003DB0F0BD349A209B9A42F4D128A8FFF782 +:1044B00033F904460028EFD1039B04AF1B6993F83E +:1044C00001E093F823C09C8C3A46083303CAB242F9 +:1044D00043F8080C43F8041C1746F5D1039B28A8A1 +:1044E0001B6983F801E0039B1A6982F823C01A69EB +:1044F00082F82440240A82F825401A691379D906E3 +:104500005CBF43F020031371FEF776FF04460028DA +:10451000C2D13046FEF7ACFE04460028BCD1039859 +:10452000FEF712FB0446B7E70428B5D1BEE7239A8D +:1045300004AB02F1200C1068083252F8041C1C462F +:10454000624503C42346F6D15022314628A8FDF720 +:1045500051FC394628A8FFF7ABFA044600284CD195 +:104560002A9A169B9A4296D1349A209B9A4292D1CB +:1045700028A8FFF7D1F8044600288DD137990DF10E +:104580001D030DF12D0001F10D0253F8044B834280 +:1045900042F8044BF9D11888012710809B7893705A +:1045A0009DF81B30039CDA0658BF43F02003CB7202 +:1045B000E770CB7ADB06ACD5169A2A9B9A42A8D034 +:1045C0002078FFF76DFA01462046FDF7EDFD014624 +:1045D000C8B12046FDF798FF044600287FF45CAF81 +:1045E000039890F86D302E2B93D12A9A00F16C012C +:1045F000FDF7E6FD039BDF708BE704287FF44CAFEB +:10460000B6E7062448E7022446E7112447E70000FE +:104610007F2810B501D880B210BDB0F5803F13D20D +:1046200040F2523399420FD10849002231F8024B2F +:1046300093B2844203D103F18000C0B2ECE70132AF +:10464000802AF3D11346F6E70020E5E748960008F4 +:104650007F280DD940F25233994208D1FF2806D85D +:1046600000F10040034B803833F810007047002001 +:10467000704700BF48960008B0F5803FF0B522D2E1 +:104680001F4A83B21F49B0F5805F28BF0A46141D38 +:1046900034F8042C2146AAB1934213D334F8025CB7 +:1046A0002E0AEFB252FA85F5A84222DA082E09D86E +:1046B000DFE806F0050A10121416181A1C00801AFA +:1046C00034F810301846F0BD981A00F001001B1A9B +:1046D0009BB2F7E7103BFBE7203BF9E7303BF7E7FE +:1046E0001A3BF5E70833F3E7503BF1E7A3F5E35353 +:1046F000EEE70434002ECBD101EB4702C7E700BF41 +:10470000989300088C95000808B5074B074A19686C +:1047100001F03D01996053680BB190689847BDE87E +:10472000084003F08BB800BF000002403C36002078 +:1047300008B5084B1968890901F03D018A019A60A2 +:10474000054AD3680BB110699847BDE8084003F0EB +:1047500075B800BF000002403C36002008B5084B89 +:104760001968090C01F03D010A049A60054A536971 +:104770000BB190699847BDE8084003F05FB800BFEF +:10478000000002403C36002008B5084B1968890D2E +:1047900001F03D018A059A60054AD3690BB1106AA0 +:1047A0009847BDE8084003F049B800BF0000024048 +:1047B0003C36002008B5074B074A596801F03D0117 +:1047C000D960536A0BB1906A9847BDE8084003F07E +:1047D00035B800BF000002403C36002008B5084B49 +:1047E0005968890901F03D018A01DA60054AD36AF6 +:1047F0000BB1106B9847BDE8084003F01FB800BF2D +:10480000000002403C36002008B5084B5968090CEE +:1048100001F03D010A04DA60054A536B0BB1906B5D +:104820009847BDE8084003F009B800BF0000024007 +:104830003C36002008B5084B5968890D01F03D0150 +:104840008A05DA60054AD36B0BB1106C9847BDE856 +:10485000084002F0F3BF00BF000002403C360020D9 +:1048600008B5074B074A196801F03D019960536C80 +:104870000BB1906C9847BDE8084002F0DFBF00BF65 +:10488000000402403C36002008B5084B196889092D +:1048900001F03D018A019A60054AD36C0BB1106D9D +:1048A0009847BDE8084002F0C9BF00BF00040240BD +:1048B0003C36002008B5084B1968090C01F03D0191 +:1048C0000A049A60054A536D0BB1906D9847BDE894 +:1048D000084002F0B3BF00BF000402403C36002095 +:1048E00008B5084B1968890D01F03D018A059A60E9 +:1048F000054AD36D0BB1106E9847BDE8084002F031 +:104900009DBF00BF000402403C36002008B5074BA5 +:10491000074A596801F03D01D960536E0BB1906EA2 +:104920009847BDE8084002F089BF00BF000402407C +:104930003C36002008B5084B5968890901F03D0153 +:104940008A01DA60054AD36E0BB1106F9847BDE853 +:10495000084002F073BF00BF000402403C36002054 +:1049600008B5084B5968090C01F03D010A04DA60EA +:10497000054A536F0BB1906F9847BDE8084002F0AD +:104980005DBF00BF000402403C36002008B5084B64 +:104990005968890D01F03D018A05DA60054AD36F37 +:1049A00013B1D2F880009847BDE8084002F046BF36 +:1049B000000402403C36002000230C4910B51A4682 +:1049C0000B4C0B6054F82300026001EB43000433EE +:1049D0004260402BF6D1074A4FF0FF339360D3601B +:1049E000C2F80834C2F80C3410BD00BF3C360020B9 +:1049F00048970008000002400F28F8B510D9102889 +:104A000010D0112811D0122808D10F240720DFF868 +:104A1000C8E00126DEF80050A04208D9002653E085 +:104A20000446F4E70F240020F1E70724FBE706FA29 +:104A300000F73D424AD1264C4FEA001C3D4304EBAF +:104A400000160EEBC000CEF80050C0E90123FBB207 +:104A500073B12048D0F8D83043F00103C0F8D83003 +:104A6000D0F8003143F00103C0F80031D0F8003134 +:104A700017F47F4F0ED01748D0F8D83043F0020318 +:104A8000C0F8D830D0F8003143F00203C0F800314C +:104A9000D0F8003154F80C00036823F01F030360C2 +:104AA000056815F00105FBD104EB0C033D2493F8D8 +:104AB0000CC05F6804FA0CF43C602124056044617A +:104AC00012B1987B00F068FC3046F8BD0130A3E7D6 +:104AD00048970008004402583C36002010B53024A6 +:104AE00084F31188FFF788FF002383F3118810BD3A +:104AF00010B50446807B00F065FC01231549627BFC +:104B000003FA02F20B6823EA0203DAB20B6072B90D +:104B1000114AD2F8D81021F00101C2F8D810D2F809 +:104B2000001121F00101C2F80011D2F8002113F4A4 +:104B30007F4F0ED1084BD3F8D82022F00202C3F8E1 +:104B4000D820D3F8002122F00202C3F80021D3F8C4 +:104B5000003110BD3C3600200044025808B5302317 +:104B600083F31188FFF7C4FF002383F3118808BD86 +:104B7000836CC26A8B42506810B506D95A1E4C002D +:104B800002EB4103B3FBF4F3184410BD01F0010341 +:104B90008A0748BF43F002034A0748BF43F00803AF +:104BA0000A0748BF43F00403CA0648BF43F0100396 +:104BB0008A06426B48BF43F02003134343637047A8 +:104BC00010B5074C204600F09FFF064B0022C4E9B9 +:104BD0001023054BA364054BE363054BE36410BD51 +:104BE000C03600200070005200B4C4041437002006 +:104BF00014390020C36A0BB9104BC3620379012B2F +:104C000011D10F4B98420ED10E4BD3F8D42042F461 +:104C10008032C3F8D420D3F8FC2042F48032C3F8A9 +:104C2000FC20D3F8FC30436C00221A65DA621A606B +:104C30005A605A624FF0FF329A63704748980008F2 +:104C4000C0360020004402580379012B24D0436C65 +:104C500000221A65DA621A605A605A624FF0FF3217 +:104C60009A630E4B984217D10D4BDA6F42F48032A3 +:104C7000DA67DA6F22F48032DA67DA6FD3F8D42099 +:104C800022F48032C3F8D420D3F8FC2022F48032FE +:104C9000C3F8FC20D3F8FC30704700BFC0360020BA +:104CA0000044025810B5446C0649FFF761FF60608C +:104CB000236842F2107043F003032360BDE8104004 +:104CC00001F048BD801A06000129F8B5466C0B4F6B +:104CD00009D175680A493D40FFF74AFF054345F48D +:104CE00080557560F8BD746806493C40FFF740FF89 +:104CF000044344F480547460F4E700BF00ECFFFF09 +:104D000080F0FA0240787D01436C00225A601A60FC +:104D100070470000426C0129536823F4404304D0DB +:104D2000022905D001B95360704743F48043FAE784 +:104D300043F40043F7E70000436C41F480519A606C +:104D4000D9605A6B1206FCD580229A637047000026 +:104D500010B541F48851446CA260E160616B11F0C0 +:104D60004502FBD0A26311F0040203D0FFF70EFF4F +:104D7000012010BD616910461960FAE710B541F4D1 +:104D80008851446CA260E160616B11F04502FBD078 +:104D9000A26311F0050203D0FFF7F8FE012010BD59 +:104DA000616910461960FAE773B5134604460E466A +:104DB000302282F31188426CD26B32B14FF0FF3156 +:104DC0004030019301F0D2FC019B606C002202652F +:104DD000C263C262456B15F4807504D185F31188F6 +:104DE000012002B070BD4FF0FF31816382F3118862 +:104DF000012E06D90C21204602B0BDE87040FFF715 +:104E0000BDBF1046EDE7000073B5446C0E460025AB +:104E10000192616BA1632565E562FFF7B7FE012E84 +:104E200007D9019B2A460C2102B0BDE87040FFF76C +:104E3000A5BF02B070BD000010B541F49851446C9C +:104E4000A260E160616B11F04502FBD0A26311F03A +:104E50003F0203D0FFF79AFE012010BD216A1046E1 +:104E60001960E1695960A16999606169D960F4E7E5 +:104E70002DE9F74304460191006D01A917469846B4 +:104E800002F0F6FB064600284AD0626C2046DDF8A8 +:104E900004905568C5F3090501356B00A56CB5FB99 +:104EA000F3F54FF47A73B5FBF3F55D43556200F00B +:104EB000ADFC50BB636C4FF0FF3201254146C3F897 +:104EC000589020461D659A634FF49572DA6342F25A +:104ED00007029F62DA62E36C0A9AFFF74FFFA0B9FC +:104EE000E26C104B11680B407BB929462046FFF756 +:104EF0005BFF054648B92E463A460199206D02F0FF +:104F0000EFFB304603B0BDE8F083E26C20460121A0 +:104F1000FFF77AFF3A460199206D02F0E1FBF0E7D6 +:104F20000126EEE708E0FFFD2DE9F7431F46436C3D +:104F300001924FF47A725D6804468846C5F309050C +:104F400001356E00856CB5FBF6F5B5FBF2F5554302 +:104F50005D6200F05BFC20B10125284603B0BDE88E +:104F6000F0837E0201A9206D324602F081FB0546E6 +:104F70000028F1D0636C019AD4F84C909A65012214 +:104F80001A654FF0FF329A634FF49572DA639E62AE +:104F9000236BDB064B4658BF4FEA4828012F424699 +:104FA0001BD912212046FFF7E9FEC0B9D9F800202D +:104FB000104B13409BB9636C42F293023946204672 +:104FC000DA62E26CFFF7F0FE804640B932460199A2 +:104FD000206D454602F084FBBFE71121E2E7E26C59 +:104FE00039462046FFF710FF32460199206D02F046 +:104FF00077FBB2E708E0FFFD2DE9F3411F46436C64 +:1050000001924FF47A725D6804468846C5F309053B +:1050100001356E00856CB5FBF6F5B5FBF2F5554331 +:105020005D6200F0F3FB20B10125284602B0BDE827 +:10503000F0817E0201A9206D324602F069FB05462F +:105040000028F1D0636C019A9A6501221A654FF02D +:10505000FF329A634FF48D72DA639E62236BE66CC3 +:10506000DB06334658BF4FEA4828012F424619D97C +:1050700019212046FFF782FEB0B932680F4B13406A +:1050800093B9636C42F2910239462046DA62E26CCF +:10509000FFF78AFE064638B901993546206D02F0C1 +:1050A00073FBC2E71821E4E739462046E26CFFF7BC +:1050B000ABFE0199206D02F067FBB6E708E0FFFD4B +:1050C00012F0030F2DE9F04107460C4615461E4627 +:1050D00017D00E44B44202D10020BDE8F081012374 +:1050E000FA6B21463846FFF71FFF0028F5D1284606 +:1050F0004FF40072F96B05F500750134FCF77AFE88 +:10510000E8E7BDE8F041FFF70FBF000012F0030F22 +:105110002DE9F04107460C4615461E4617D00E44B1 +:10512000B44202D10020BDE8F08129464FF400725C +:10513000F86B05F50075FCF75DFE0123FA6B21465F +:105140003846FFF759FF0028EDD10134E8E7BDE804 +:10515000F041FFF751BF000000207047302310B529 +:1051600083F311880024436C40302146DC6301F056 +:105170000BFB84F3118810BD026843681143016082 +:1051800003B1184770470000024A136843F0C00398 +:10519000136070470078004013B50E4C204600F0B5 +:1051A00013FD04F1140000234FF400720A49009427 +:1051B00000F078F9094B4FF40072094904F1380006 +:1051C000009400F0F1F9074A074BC4E9172302B035 +:1051D00010BD00BF18390020843900208951000813 +:1051E000843B00200078004000E1F505037C30B5E9 +:1051F000244C002918BF0C46012B11D1224B984298 +:105200000ED1224BD3F8E82042F08042C3F8E820C8 +:10521000D3F8102142F08042C3F81021D3F81031A6 +:105220002268036EC16D03EB52038466B3FBF2F395 +:105230006268150442BF23F0070503F0070343EA41 +:105240004503CB60A36843F040034B60E36843F041 +:1052500001038B6042F4967343F001030B604FF03F +:10526000FF330B62510505D512F0102205D0B2F1C3 +:10527000805F04D080F8643030BD7F23FAE73F239D +:10528000F8E700BF50980008183900200044025881 +:105290002DE9F047C66D0546F469220734621AD03D +:1052A00014F0080118BF4FF48071E3074FF030038A +:1052B00048BF41F02001A70748BF41F04001600707 +:1052C00048BF41F0800183F31188281DFFF754FF88 +:1052D000002383F31188E2050AD5302383F3118874 +:1052E0004FF48061281DFFF747FF002383F31188E7 +:1052F00030274FF0000914F0200838D137683B06FA +:1053000015D54FF0300905F1380A20060FD589F37D +:105310001188504600F07CF9002835DA0821281D54 +:10532000FFF72AFF27F08007002383F3118879060F +:1053300013D5620611D5302383F31188D5E91323E1 +:105340009A4207D12B6C2BB127F040071021281D62 +:10535000FFF712FF002383F31188E306376018D5A7 +:10536000AA6E1369ABB15069BDE8F047184787F3DF +:105370001188736A284695F86410194000F03EFCC5 +:1053800089F31188F469B6E7B06288F31188F4698B +:10539000BBE7BDE8F0870000090100F1604301228E +:1053A00003F56143C9B283F8001300F01F039A406C +:1053B00043099B0003F1604303F56143C3F8802177 +:1053C0001A60704700F01F0301229A40430900F160 +:1053D00060409B0000F5614003F1604303F56143C9 +:1053E000C3F88020C3F88021002380F80033704781 +:1053F000F8B51546826804460B46AA4200D2856875 +:10540000A1692669761AB5420BD218462A46FCF7DE +:10541000F1FCA3692B44A3612846A3685B1BA3602E +:10542000F8BD0CD9AF1B18463246FCF7E3FC3A46F0 +:10543000E1683044FCF7DEFCE3683B44EBE71846E8 +:105440002A46FCF7D7FCE368E5E70000836893424F +:10545000F7B50446154600D28568D4E90460361ACB +:10546000B5420BD22A46FCF7C5FC63692B44636145 +:105470002846A3685B1BA36003B0F0BD0DD932467C +:10548000AF1B0191FCF7B6FC01993A46E068314444 +:10549000FCF7B0FCE3683B44E9E72A46FCF7AAFCCA +:1054A000E368E4E710B50A440024C361029B84600A +:1054B000C16002610362C0E90000C0E9051110BDCE +:1054C00008B5D0E90532934201D1826882B9826879 +:1054D000013282605A1C426119700021D0E9043205 +:1054E0009A4224BFC368436101F068F9002008BDF7 +:1054F0004FF0FF30FBE7000070B5302304460E4646 +:1055000083F31188A568A5B1A368A269013BA360D4 +:10551000531CA36115782269934224BFE368A361F9 +:10552000E3690BB120469847002383F3118828468E +:1055300007E03146204601F031F90028E2DA85F330 +:10554000118870BD2DE9F74F04460E461746984660 +:10555000D0F81C904FF0300A8AF311884FF0000BFE +:10556000154665B12A4631462046FFF741FF0346FE +:1055700060B94146204601F011F90028F1D000231E +:1055800083F31188781B03B0BDE8F08FB9F1000FE9 +:1055900003D001902046C847019B8BF31188ED1A78 +:1055A0001E448AF31188DCE7C160C361009B8260FE +:1055B0000362C0E905111144C0E9000001617047B0 +:1055C000F8B504460D461646302383F31188A768C4 +:1055D000A7B1A368013BA36063695A1C62611D7097 +:1055E000D4E904329A4224BFE3686361E3690BB1F2 +:1055F00020469847002080F3118807E03146204676 +:1056000001F0CCF80028E2DA87F31188F8BD000039 +:10561000D0E9052310B59A4201D182687AB982682F +:105620000021013282605A1C82611C7803699A420F +:1056300024BFC368836101F0C1F8204610BD4FF05C +:10564000FF30FBE72DE9F74F04460E461746984614 +:10565000D0F81C904FF0300A8AF311884FF0000BFD +:10566000154665B12A4631462046FFF7EFFE034650 +:1056700060B94146204601F091F80028F1D000239E +:1056800083F31188781B03B0BDE8F08FB9F1000FE8 +:1056900003D001902046C847019B8BF31188ED1A77 +:1056A0001E448AF31188DCE70379052B05BF836A62 +:1056B000002001204B6004BF4FF400730B60704763 +:1056C00073B504460D460F4EA26B01AB0D2120466B +:1056D0008DB1FFF753FB90B9019B33420ED1C3F359 +:1056E0004323042B0BD0053B022B07D84FF47A70D1 +:1056F00001F030F8E8E7FFF72BFBECE7012002B000 +:1057000070BD00BF08E0FFFDF8B5856A0446A942F8 +:1057100002D26D1AAB4205D9636B012043F08003BE +:105720006363F8BD06250571FFF7CAFC05232371E5 +:10573000F7E70000F8B5856A0446A94202D26D1A5F +:10574000AB4205D9636B012043F080036363F8BD6E +:1057500007250571FFF7DAFC05232371F7E7000041 +:1057600038B505790446052D05D108230371FFF7E7 +:10577000F3FC257138BD0120FCE70000036B03F04A +:105780000F03022BF0B5054685B00C464FF000071D +:105790000CD10F7003AB1A4A0621FFF7EFFA78B964 +:1057A000184B039A13405BB9012308E0C66B7E22B5 +:1057B0000F7018307F2103F0F5F920B90023237012 +:1057C000002005B0F0BD0623402231462846009750 +:1057D000FFF74EFB0028F1D1B3895BBA9B07EFD5E9 +:1057E000094B40223146284600930623FFF740FB31 +:1057F0000028E3D1337C03F00F030F2BDED0D3E777 +:105800000001B90308E0FFFDF1FFFF800121FFF770 +:1058100057BF000070B53023054683F31188037924 +:105820000024022B03D184F31188204670BD042389 +:10583000037184F311880226FFF7E8FF0446284627 +:10584000FFF762FA2E71F0E70021FFF739BF000081 +:105850000323F0B5044687B0002503718DF80F507F +:10586000FFF720FA2A4629462046FFF765FA4FF44B +:10587000D57205AB08212046FFF780FA0246B8B979 +:1058800001232363059BC3F30323012B09D105AB3C +:1058900037212046FFF772FA18B9934B059A134047 +:1058A000ABB120460125FFF72FFA0223237114E143 +:1058B00005AB2A4637212046FFF760FA28B98A4A05 +:1058C000059B1A40002A00F0AC8002232363236B5F +:1058D00003F00F03022B40F0AE806425834E42F2AA +:1058E000107000F037FF05AB324601212046FFF76C +:1058F0002FFA0028D5D1059B002B80F298805B0001 +:1059000003D5236B43F010032363002204F1080343 +:1059100002212046FFF790FA02460028C1D104F187 +:10592000380303212046FFF729FA0028B9D104F1F2 +:105930001805A26B092120462B46FFF77DFA0028A7 +:10594000AFD104ABA26B07212046FFF717FA00285E +:10595000A7D10DF10F012046FFF710FF0028A0D1BD +:105960009DF80F102046FFF7AFF92046FFF76CFFB8 +:105970000646002895D1236B03F00F03022B40F05D +:1059800083807E227F21284603F00CF901287BD9F1 +:10599000E56B42F2107000F0DDFE08234FF4007258 +:1059A000294620460096FFF763FA00287FF479AF76 +:1059B000284603F045F9A0620DF10F012046FFF7DC +:1059C000DDFE00287FF46DAF9DF80F102046FFF735 +:1059D0007BF904AB4FF4007210212046FFF7CEF99B +:1059E000054600287FF45DAF3F4E049B33427FF4B1 +:1059F00058AF236B13F00E0F03F00F0248D0022AAA +:105A00007FF44FAFE36A1978012969D0022969D080 +:105A1000002960D0364F2046FFF77CF905AB3A46A7 +:105A20004EE0114620462263FFF786F94FE7013D1D +:105A30007FF455AF35E72F4D64262F4A2A4F012BAF +:105A400018BF154605AB002237212046FFF796F90F +:105A500000287FF426AF059B3B427FF422AF05ABC5 +:105A60002A4629212046FFF773F900287FF419AF51 +:105A7000059B002BFFF643AF013E3FF412AF42F20D +:105A8000107000F067FEDDE7284603F0ADF892E7FE +:105A9000E36A1978F9B101297FF403AF2046FFF7D3 +:105AA00039F905ABA26B37212046FFF767F90028CB +:105AB0007FF4F7AE059B33427FF4F3AE05AB0222D1 +:105AC00006212046FFF75AF900287FF4EAAE059B2D +:105AD00033427FF4E6AE05232371284607B0F0BDBC +:105AE000064F98E7064F96E708E0FFFD0080FFC0ED +:105AF0000000B7030080FF50000010800001B703D2 +:105B00000002B703FFF75CB8044B03600123037185 +:105B100000234363C0E90A33704700BF6898000858 +:105B200010B53023044683F31188C162FFF762F891 +:105B300002230020237180F3118810BD10B530239B +:105B4000044683F31188FFF77FF800230122E36204 +:105B5000227183F3118810BD02684368114301600C +:105B600003B11847704700001430FFF7EBBC00008A +:105B70004FF0FF331430FFF7E5BC00003830FFF77B +:105B800061BD00004FF0FF333830FFF75BBD000010 +:105B90001430FFF7B1BC00004FF0FF311430FFF7B5 +:105BA000ABBC00003830FFF70BBD00004FF0FF32F8 +:105BB0003830FFF705BD0000012914BF6FF0130056 +:105BC00000207047FFF7E8BA044B036000234360EE +:105BD000C0E9023301230374704700BF8C980008AA +:105BE00010B53023044683F31188FFF7FFFA022330 +:105BF0000020237480F3118810BD000038B5C369FC +:105C000004460D461BB904210844FFF7A5FF2946A9 +:105C100004F11400FFF754FC002806DA201D4FF4AD +:105C20000061BDE83840FFF797BF38BD02684368A0 +:105C30001143016003B118477047000013B5406B72 +:105C400000F58054D4F8A4381A681178042914D1C6 +:105C5000017C022911D11979012312898B40134249 +:105C60000BD101A94C3002F0CBFED4F8A448024677 +:105C7000019B2179206800F005FA02B010BD0000F8 +:105C8000143002F04DBE00004FF0FF33143002F02C +:105C900047BE00004C3002F01FBF00004FF0FF3342 +:105CA0004C3002F019BF0000143002F01BBE00009F +:105CB0004FF0FF31143002F015BE00004C3002F0FE +:105CC000EBBE00004FF0FF324C3002F0E5BE0000AA +:105CD00010B500F58054D4F8A4381A681178042956 +:105CE00017D1017C022914D15979012352898B40A3 +:105CF00013420ED1143002F0AFFD024648B1D4F881 +:105D0000A4484FF4407361792068BDE8104000F06A +:105D1000A7B910BD406BFFF7DBBF000000290CBF27 +:105D20006FF0130000207047704700007FB5124BE2 +:105D300001250426044603600023057400F1840253 +:105D400043602946C0E902330C4B029014300193A2 +:105D50004FF44073009602F05BFD094B04F6944249 +:105D6000294604F14C000294CDE900634FF44073DE +:105D700002F022FE04B070BDB4980008155D000862 +:105D80003D5C0008302383F311880B790A680B33DC +:105D900042F823004B79133342F823008B7913B177 +:105DA0000B3342F8230000F58053C3F8A4180223F4 +:105DB0000374002080F311887047000038B5037F1A +:105DC000044613B190F85430ABB90125201D0221CF +:105DD000FFF72CFF04F114006FF00101257700F0AC +:105DE000F9FC04F14C0084F854506FF00101BDE857 +:105DF000384000F0EFBC38BD10B501210446043036 +:105E0000FFF714FF0023237784F8543010BD0000FF +:105E100038B504460025143002F012FD04F14C00A0 +:105E2000257702F0E1FD201D84F854500121FFF791 +:105E3000FDFE2046BDE83840FFF74ABF90F88030AD +:105E400003F06003202B06D190F881200023212A43 +:105E500003D81F2A06D800207047222AFBD1C0E9A8 +:105E60001D3303E0034A426707228267C3670120AC +:105E7000704700BF3C22002037B500F58055D5F8AB +:105E8000A4381A68117804291AD1017C022917D183 +:105E90001979012312898B40134211D100F14C046E +:105EA000204602F061FE58B101A9204602F0A8FD8B +:105EB000D5F8A4480246019B2179206800F0E2F859 +:105EC00003B030BD2DE9F34104460D4621B301F185 +:105ED0000B0350F82360FEB1302383F3118800EBED +:105EE000810706F14C08FB685B691B6833B14046CB +:105EF00002F094FD0821301DFFF798FE01A94046ED +:105F000002F07EFD024650B1019B2946204600F07A +:105F1000B9F8002383F3118802B0BDE8F081FB6873 +:105F20005A69126832B11B8A013B134002D104F155 +:105F30008002EAE71021301DFFF778FEE9E7000054 +:105F400038B509B3133150F82140ECB1302383F355 +:105F5000118804F58053D3F8A4281368527903EB11 +:105F60008203DB689B695D6845B104216018FFF717 +:105F70005DFE294604F1140002F078FC2046FFF78C +:105F8000A7FE002383F3118838BD0000704700008E +:105F900010B50446002102F07BFA0021204602F0F1 +:105FA0006BFA63681B6813B1062120469847A36803 +:105FB00023F00113A3600023A367062384F8703045 +:105FC00010BD000001F056BD01234022002110B594 +:105FD000044600F8303BFBF733FF0023C4E90133EC +:105FE00010BD000010B53023044683F3118824222D +:105FF000416000210C30FBF723FF204601F05CFDDF +:1060000002230020237080F3118810BD70B500EBCF +:106010008103054650690E461446DA6018B1102215 +:106020000021FBF70DFFA06918B110220021FBF73A +:1060300007FF31462846BDE8704001F045BE00002C +:1060400083682022002103F0011310B50446836009 +:106050001030FBF7F5FE2046BDE8104001F0C0BE51 +:10606000F0B4012500EB810447898D40E4683D438D +:10607000A469458123600023A2606360F0BC01F045 +:10608000DDBE0000F0B4012500EB810407898D40DE +:10609000E4683D436469058123600023A260636076 +:1060A000F0BC01F053BF000070B502230025044688 +:1060B000242203702946C0F888500C30C56640F889 +:1060C000045CFBF7BDFE204684F8705001F08EFDA5 +:1060D00063681B6823B129462046BDE87040184715 +:1060E00070BD00000378052B10B504460AD080F877 +:1060F0008C300523037043681B680BB1042198475B +:106100000023A36010BD00000178052906D190F896 +:106110008C20436802701B6803B118477047000069 +:1061200070B590F8703004463BB1836823F00113DA +:1061300083600023836780F8703004F180020021BF +:10614000204601F071FE63689B684BB994F880307B +:1061500013F0600528D02046BDE87040FFF718BF57 +:10616000204698470028F1D0B4F88630A26F9A42B2 +:1061700088BFA36794F98030A56F002B4FF03003E0 +:1061800080F20281002D00F0F180092284F8702055 +:1061900083F3118800212046D4E91D23FFF772FF05 +:1061A000002383F3118870BD94F8812003F07F03EE +:1061B00043EA022340F20232934200F0C48021D825 +:1061C000B3F5807F47D00DD8012B3ED0022B00F0D5 +:1061D0009280002BBFD104F1880262670222A2677D +:1061E000E367C1E7B3F5817F00F09A80B3F5407FA4 +:1061F000B1D194F88230012BADD1B4F8883043F09E +:10620000020331E0B3F5006F4CD017D8B3F5A06F9F +:1062100030D0A3F5C063012B9DD86368204694F865 +:1062200082205E6894F88310B4F88430B047002868 +:1062300091D0436863670368A36719E0B3F5106FF3 +:1062400035D040F60242934285D15C4B636702230E +:10625000A3670023C4E794F88230012B7FF47BAF5F +:10626000B4F8883023F00203A4F88830C4E91D553F +:10627000E56779E7B4F88030B3F5A06F0ED194F8F4 +:106280008230204684F88A3001F010FD63681B6874 +:1062900013B1012120469847032323700023C4E94A +:1062A0001D339DE704F18B0363670123C4E7237863 +:1062B000042B10D1302383F311882046FFF7C0FE52 +:1062C00085F311880321636884F88B5021701B6863 +:1062D0000BB12046984794F88230002BDED084F82A +:1062E0008B300423237063681B68002BD6D00221F7 +:1062F00020469847D2E794F8843020461D0603F0E4 +:106300000F010AD501F082FD012804D002287FF494 +:1063100022AF2B4B9AE72B4B98E701F069FDF3E78F +:1063200094F88230002B7FF416AF94F8843013F089 +:106330000F01B3D01A06204602D502F0C1F8ADE72E +:1063400002F0B2F8AAE794F88230002B7FF403AF92 +:1063500094F8843013F00F01A0D01B06204602D51C +:1063600002F096F89AE702F087F897E7142284F88B +:10637000702083F311882B462A4629462046FFF7D2 +:106380006FFE85F311880EE75DB1152284F8702049 +:1063900083F3118800212046D4E91D23FFF760FE16 +:1063A000FEE60B2284F8702083F311882B462A46E0 +:1063B00029462046FFF766FEE3E700BFE4980008A1 +:1063C000DC980008E098000838B590F87030044672 +:1063D0000B2B09D80B2B37D8DFE803F008363636FD +:1063E00036360836360D2737152B2DD12046BDE819 +:1063F0003840FFF7CDBD856FB0F886309D4214D28E +:10640000C3681B8AB5FBF3F203FB12556DB9302349 +:1064100083F311882B462A462946FFF733FE85F37E +:1064200011880A2384F870300EE0142384F8703049 +:10643000302383F31188002320461A461946FFF7BC +:106440000FFE002383F3118838BDC36F03B1984753 +:10645000A36823F00113A3600023A367E2E7000011 +:1064600010B590F870300446142B1ED00CD8062BB3 +:1064700005D001D81BB110BD0A3B012BFBD820462B +:10648000BDE81040FFF784BD152BF4D10B2380F835 +:106490007030302383F3118800231A461946FFF722 +:1064A000F1FD002383F31188E5E7C3689B695B680E +:1064B000002BE0D1C36F03B19847A36823F0011309 +:1064C000A3600023A36784F87030D4E700238268B8 +:1064D00080F8243083691B6899689142FBD25A681E +:1064E00003604260106058607047000000238268BB +:1064F00080F8243083691B6899689142FBD85A68F8 +:1065000003604260106058607047000008B508469C +:10651000302383F3118891F82430032B05D0042B0A +:106520000DD02BB983F3118808BD8B6A00221A6045 +:106530004FF0FF338362FFF7C9FF0023F2E7D1E991 +:10654000003213605A60F3E7034610B51B689842A7 +:1065500003D09C688A689442F8D25A680B604A60FB +:106560001160596010BD0000FFF7B0BF38B50B4B8C +:106570001C68DD6885F82400226853601A600122D7 +:10658000DC60A36884F82420934201D101F01AF959 +:1065900029462046BDE83840F9F734BF883D002041 +:1065A0000C4B30B5DD684B1C87B004460FD02B4632 +:1065B000094A684600F0A2F92046FFF7D7FF009B82 +:1065C00013B1684600F0A4F9A86A07B030BDFFF720 +:1065D000CDFFF9E7883D00200D650008044B1A68DF +:1065E000DB6890689B68984294BF00200120704748 +:1065F000883D002038B50C4B1C68DD68226853606C +:106600001A600122DC6084F82420AB68934201D137 +:1066100001F0DAF82846FFF769FF01462046BDE899 +:106620003840F9F7EFBE00BF883D0020044B1A68E0 +:10663000DB6892689B689A4201D9FFF7DBBF70471D +:10664000883D002038B50123084C00252370656083 +:1066500002F024FB02F04EFB0549064802F02CFC38 +:106660000223237085F3118838BD00BF304000201D +:10667000EC980008883D002000F080B9034A51687A +:1066800053685B1A9842FBD8704700BF001000E0C7 +:106690008B604B630023CA6100F128020B63022365 +:1066A0000A618B840123886181F8263001F110038F +:1066B000C26A4A611360C36201F12C030846CB62CF +:1066C00070470000D0E90131026841F8183CA1F19F +:1066D0009C033839CB60036941F8243C436941F895 +:1066E000203C034B41F8043CC3680248FFF7D0BF8D +:1066F0001D040008883D002008B5FFF7E3FFBDE852 +:106700000840FFF731BF000038B50E4BDC6804F1DC +:106710002C05A062E06AA8420FD194F826303BB95C +:1067200094F825309B0702BFD4E9043213605A6005 +:106730000F20BDE83840FFF719BF0368E362FFF799 +:1067400013FFE7E7883D0020302383F31188FFF72C +:10675000DBBF000008B50146302383F31188082011 +:10676000FFF71EFF002383F3118808BD054BDB688C +:1067700021B1036098620320FFF712BF4FF0FF3092 +:10678000704700BF883D002003682BB100220260E3 +:1067900018469962FFF7E8BE70470000064BDB68B9 +:1067A00039B1426818605A60136043600420FFF7F3 +:1067B000F7BE4FF0FF307047883D002003689842D5 +:1067C00006D01A680260506018469962FFF7CCBE86 +:1067D0007047000038B504460D462068844200D159 +:1067E00038BD036823605C608562FFF7BDFEF4E797 +:1067F000036810B59C68A2420CD85C688A600B6084 +:106800004C602160596099688A1A9A604FF0FF3392 +:10681000836010BD121B1B68ECE700000A2938BF1B +:106820000A2170B504460D460A26601902F030FAB6 +:1068300002F018FA041BA54203D8751C04462E4624 +:10684000F3E70A2E04D90120BDE8704002F0FCBB3A +:1068500070BD0000F8B5144B0D460A2A4FF00A0728 +:10686000D96103F11001826038BF0A2241601969C1 +:106870001446016048601861A81802F0F9F902F0A6 +:10688000F1F9431B0646A34206D37C1C2819274670 +:10689000354602F0FDF9F2E70A2F04D90120BDE8E0 +:1068A000F84002F0D1BBF8BD883D0020F8B506469F +:1068B0000D4602F0D7F90F4A134653F8107F9F4256 +:1068C00006D12A4601463046BDE8F840FFF7C2BF70 +:1068D000D169BB68441A2C1928BF2C46A34202D99F +:1068E0002946FFF79BFF224631460348BDE8F840A2 +:1068F000FFF77EBF883D0020983D0020C0E90323BC +:10690000002310B45DF8044B4361FFF7CFBF0000D4 +:1069100010B5194C236998420DD08168D0E9003236 +:1069200013605A609A680A449A60002303604FF02B +:10693000FF33A36110BD0268234643F8102F536054 +:106940000022026022699A4203D1BDE8104002F0A1 +:1069500099B9936881680B44936002F083F92269C6 +:10696000E1699268441AA242E4D91144BDE810409A +:10697000091AFFF753BF00BF883D00202DE9F047FB +:10698000DFF8BC8008F110072C4ED8F8105002F048 +:1069900069F9D8F81C40AA68031B9A423ED81444EF +:1069A0004FF00009D5E90032C8F81C4013605A6066 +:1069B000C5F80090D8F81030B34201D102F062F966 +:1069C00089F31188D5E9033128469847302383F3AA +:1069D00011886B69002BD8D002F044F96A69A0EBEA +:1069E000040982464A450DD2022002F02DFB002206 +:1069F000D8F81030B34208D151462846BDE8F047D8 +:106A0000FFF728BF121A2244F2E712EB09092946C0 +:106A1000384638BF4A46FFF7EBFEB5E7D8F81030E6 +:106A2000B34208D01444C8F81C00211AA960BDE87C +:106A3000F047FFF7F3BEBDE8F08700BF983D0020A8 +:106A4000883D002038B502F00DF9054AD2E9084525 +:106A5000031B181945F10001C2E9080138BD00BF48 +:106A6000883D002010B560B9074804790368053CEB +:106A70009B6818BF0124984708B144F004042046DD +:106A800010BD0124FBE700BFC0360020FFF7EABFBE +:106A90002DE9F047884617469A460446B0B90D4E90 +:106AA0003579052D05D003240DE0013D15F0FF05D6 +:106AB0000ED03268534639463046D2F814904246DA +:106AC000C8470028F1D12046BDE8F0870424FAE742 +:106AD0000124F8E7C03600202DE9F0478846174624 +:106AE0009A460446B0B90D4E3579052D05D00324DC +:106AF0000DE0013D15F0FF050ED0326853463946D2 +:106B00003046D2F818904246C8470028F1D12046B6 +:106B1000BDE8F0870424FAE70124F8E7C036002036 +:106B200037B50C46154670B951B101290BD107484C +:106B3000694603681B6A984710B9019B04462B609D +:106B4000204603B030BD0424FAE700BFC036002061 +:106B500000207047FEE70000704700004FF0FF3054 +:106B6000704700004B6843608B688360CB68C360EC +:106B70000B6943614B6903628B6943620B68036075 +:106B80007047000008B53C4B40F2FF713B48D3F81A +:106B900088200A43C3F88820D3F8882022F4FF62B3 +:106BA00022F00702C3F88820D3F88820D3F8E02029 +:106BB0000A43C3F8E020D3F808210A43C3F80821A8 +:106BC0002F4AD3F808311146FFF7CCFF00F580605B +:106BD00002F11C01FFF7C6FF00F5806002F13801E9 +:106BE000FFF7C0FF00F5806002F15401FFF7BAFF24 +:106BF00000F5806002F17001FFF7B4FF00F58060DE +:106C000002F18C01FFF7AEFF00F5806002F1A801F0 +:106C1000FFF7A8FF00F5806002F1C401FFF7A2FFB3 +:106C200000F5806002F1E001FFF79CFF00F5806055 +:106C300002F1FC01FFF796FF02F58C7100F5806010 +:106C4000FFF790FF01F0D4FC0E4BD3F8902242F0F6 +:106C50000102C3F89022D3F8942242F00102C3F853 +:106C600094220522C3F898204FF06052C3F89C206C +:106C7000054AC3F8A02008BD00440258000002588D +:106C80000099000800ED00E01F00080308B501F0BE +:106C9000ABFDFFF7D7FC104BD3F8DC2042F04002ED +:106CA000C3F8DC20D3F8042122F04002C3F8042109 +:106CB000D3F80431094B1A6842F008021A601A68C6 +:106CC00042F004021A6000F067FD00F03DFBBDE8F1 +:106CD000084000F0B5B800BF004402580018024850 +:106CE00001207047002070477047000002290CD037 +:106CF000032904D00129074818BF00207047032A40 +:106D000005D8054800EBC2007047044870470020D2 +:106D1000704700BF009B00084C220020B49A000876 +:106D200070B59AB005460846144601A900F0C2F8AD +:106D300001A8FBF77DF8431C0022C6B25B00104699 +:106D4000C5E9003423700323023404F8013C01AB8D +:106D5000D1B202348E4201D81AB070BD13F8011BB3 +:106D6000013204F8010C04F8021CF1E708B53023E5 +:106D700083F311880348FFF77FF8002383F311881A +:106D800008BD00BF3840002090F8803003F01F029B +:106D9000012A07D190F881200B2A03D10023C0E9F2 +:106DA0001D3315E003F06003202B08D1B0F88430C8 +:106DB0002BB990F88120212A03D81F2A04D8FFF785 +:106DC0003DB8222AEBD0FAE7034A426707228267DE +:106DD000C3670120704700BF4322002007B5052983 +:106DE00017D8DFE801F0191603191920302383F3AF +:106DF0001188104A01210190FFF708F9019802213A +:106E00000D4AFFF703F90D48FFF702F8002383F35B +:106E1000118803B05DF804FB302383F31188074821 +:106E2000FEF7CCFFF2E7302383F311880348FEF727 +:106E3000E3FFEBE7549A0008789A000838400020F6 +:106E400038B50C4D0C4C2A460C4904F10800FFF7EC +:106E500067FF05F1CA0204F110000949FFF760FF5E +:106E600005F5CA7204F118000649BDE83840FFF77D +:106E700057BF00BF105900204C220020349A000850 +:106E80003E9A0008499A000870B5044608460D4627 +:106E9000FAF7CEFFC6B22046013403780BB9184684 +:106EA00070BD32462946FAF7AFFF0028F3D1012022 +:106EB000F6E700002DE9F04705460C46FAF7B8FF63 +:106EC0002A49C6B22846FFF7DFFF08B10936F6B2F5 +:106ED00027492846FFF7D8FF08B11036F6B2632ECF +:106EE0000BD8DFF88880DFF88890224FDFF890A079 +:106EF0002E7846B92670BDE8F08729462046BDE8C1 +:106F0000F04702F03FB9252E2CD1072241462846F2 +:106F1000FAF77AFF60B9184B224603F1100153F8D3 +:106F2000040B8B4242F8040BF9D107351034DFE72C +:106F3000082249462846FAF767FF98B9A21C0F4B6A +:106F4000197802320909C95D02F8041C13F8011B03 +:106F500001F00F015345C95D02F8031CF0D118344C +:106F60000835C5E7013504F8016BC1E7209B00082F +:106F7000499A0008399B0008289B000800E8F11F87 +:106F80000CE8F11FBFF34F8F044B1A695107FCD176 +:106F9000D3F810215207F8D1704700BF00200052EB +:106FA00008B50D4B1B78ABB9FFF7ECFF0B4BDA685C +:106FB000D10704D50A4A5A6002F188325A60D3F8E0 +:106FC0000C21D20706D5064AC3F8042102F1883203 +:106FD000C3F8042108BD00BF6E5B002000200052F2 +:106FE0002301674508B5114B1B78F3B9104B1A699B +:106FF000510703D5DA6842F04002DA60D3F8102175 +:10700000520705D5D3F80C2142F04002C3F80C21F9 +:10701000FFF7B8FF064BDA6842F00102DA60D3F8F6 +:107020000C2142F00102C3F80C2108BD6E5B002068 +:10703000002000520F289ABF00F580604004002015 +:10704000704700004FF40030704700001020704778 +:107050000F2808B50BD8FFF7EDFF00F500330268E5 +:10706000013204D104308342F9D1012008BD00204F +:10707000FCE700000F2838B505463FD8FFF782FF30 +:107080001F4CFFF78DFF4FF0FF3307286361C4F8F3 +:1070900014311DD82361FFF775FF030243F0240369 +:1070A000E360E36843F08003E36023695A07FCD49C +:1070B0002846FFF767FFFFF7BDFF4FF4003100F0F0 +:1070C0009BFA2846FFF78EFFBDE83840FFF7C0BFA8 +:1070D000C4F81031FFF756FFA0F108031B0243F07C +:1070E0002403C4F80C31D4F80C3143F08003C4F805 +:1070F0000C31D4F810315B07FBD4D9E7002038BD40 +:10710000002000522DE9F84F04460D46104644EA8F +:107110000203DE0602D00020BDE8F88F20F01F0039 +:10712000DFF8D4B0DFF8D4A0FFF73AFF05EB000892 +:10713000454503D10120FFF755FFEDE72022294601 +:10714000204601F0E7FF10B920342035F0E7234650 +:1071500004F120021F68791CDDD104339342F9D178 +:1071600004F178432048214EB3F5801F204B38BFEF +:10717000184603F1F80332BFD946D1461E46FFF741 +:1071800001FF0760A4EB050C336805F11C0143F017 +:10719000020333602B1FD9F8007017F00507FAD1EE +:1071A00053F8042F8B424CF80320F4D1BFF34F8FD8 +:1071B000FFF7E8FE4FF0FF330360336823F002036C +:1071C0003360BFF34F8F0B4BC3F85C42BFF34F8F5D +:1071D000BFF36F8F20222946204601F09BFF002835 +:1071E000B2D03846A7E700BF142100520C2000524D +:1071F0001420005200ED00E0102000521021005237 +:1072000010B5084C237828B11BB9FFF7C9FE01233C +:10721000237010BD002BFCD02070BDE81040FFF79C +:10722000E1BE00BF6E5B00202DE9F04F0D4685B03A +:10723000814658B111F00D0614BF2022082211F02A +:107240000803019304D0431E034269D0002435E0B3 +:10725000002E37D009F11F0121F01F094FF001085E +:10726000314F05F00403DFF8CCA005EA080BBBF1B1 +:10727000000F32D07869C0072FD408F101080C370D +:10728000B8F1060FF3D19EB9284D4946A8190192CD +:1072900001F052FD0446002839D12036019AA02E73 +:1072A000F3D1494601F048FD044600282FD1019A48 +:1072B00049461F4801F040FD044660BB204605B02A +:1072C000BDE8F08F0029C9D101462846029201F09D +:1072D00033FD0446D8B9029AC0E713B17869410773 +:1072E000CBD5AC0702D578698007C6D5019911B115 +:1072F00078690107C1D549460AEB4810CDE9022358 +:1073000001F01AFD0446DDE902230028B5D04A4603 +:107310000021204601E04A460021FAF791FDCDE721 +:107320000246002E96D199E74C9B0008B05B0020E6 +:10733000705B0020905B00200021FFF775BF00000C +:107340000121FFF771BF000000231A4670B51A60D3 +:107350000433B3F5806FFAD1104D0124104E06EBC3 +:10736000441001342A6955F80C1F01F0D1FC062C99 +:10737000F5D137254FF4C0542046FFF7E1FF014611 +:1073800028B122460748BDE8704001F0C1BCC4EBFB +:10739000C404013D4FEAD404EED170BD4C9B0008FB +:1073A000905B0020705B00200421FFF73DBF0000D0 +:1073B0004843FFF7C1BF000008B101F037BD704777 +:1073C000B0F5805F10B5044607D8FFF7EDFF28B988 +:1073D0002046BDE81040FFF7AFBF002010BD000001 +:1073E000FFF7EABF70B5AAB140EA010313F01F032B +:1073F0000FD1094C0144A5686D0706D52568A84240 +:1074000003D366683544A94204D903330C34122BE4 +:10741000F1D10022104670BD4C9B000808B501F068 +:107420001BFE034AD2E90032C01842EB010108BD3D +:10743000505C0020434BD3E900232DE9F341134373 +:107440007CD0FFF7EBFF404A00230027F8F7F4FF5A +:1074500006460D463D4A0023F8F7EEFF002314468A +:1074600030462946394AF8F7E7FF4FF461613C237B +:10747000ADF80170B4FBF1F5B4FBF3F601FB154177 +:1074800003FB16464624B1FBF3F1314BF6B28DF8FF +:10749000004098423CD84FF0640C4FF4C87EA307DC +:1074A00004F26C7225D1B2FBFCF30CFB132313BB6B +:1074B000B2FBFEF30EFB1322B2FA82F35B0903F276 +:1074C0006D18621C8045D2B217D90FB18DF80040FB +:1074D0000022204C4FF00C0C17460CFB0343D4B297 +:1074E000013213F804C084450CD8A0EB0C0001272E +:1074F000F5E70023E3E70123E1E7A0EB08001446EA +:107500000127CCE70FB18DF80140431C8DF8023004 +:107510009DF80100431C9DF800005038400640EAE9 +:1075200043509DF8023040EA034040EA560040EAEA +:10753000C52040EA411002B0BDE8F0814FF40410CC +:10754000F9E700BF505C002040420F00805101006D +:1075500090230B00949B00080244074BD2B210B555 +:10756000904200D110BD441C00B253F8200041F8F5 +:10757000040BE0B2F4E700BF504000580E4B30B5AA +:107580001C6F240405D41C6F1C671C6F44F400445A +:107590001C670A4C02442368D2B243F48073236010 +:1075A000074B904200D130BD441C51F8045B00B23F +:1075B00043F82050E0B2F4E7004402580048025873 +:1075C0005040005807B5012201A90020FFF7C4FF71 +:1075D000019803B05DF804FB13B50446FFF7F2FF12 +:1075E000A04205D0012201A900200194FFF7C6FFA7 +:1075F00002B010BD704700000144BFF34F8F064B2F +:10760000884204D3BFF34F8FBFF36F8F7047C3F827 +:107610005C022030F4E700BF00ED00E00144BFF35E +:107620004F8F064B884204D3BFF34F8FBFF36F8F4A +:107630007047C3F870022030F4E700BF00ED00E0AF +:1076400070B5054616460C4601201021FFF7B0FE26 +:10765000286046733CB1204636B1FFF7A5FE2B6883 +:10766000186000B19C6070BDFFF76AFEF7E700008C +:10767000F8B50F461546044648B905F11F01012625 +:10768000386821F01F01FFF7B7FF3046F8BD427B95 +:1076900029463868FFF7A6FE06460028EDD13B686C +:1076A0006360A368AB4210D213B12068FFF784FE79 +:1076B000637B28462BB1FFF777FE206020B9A060DE +:1076C000E3E7FFF73DFEF8E7A560206805F11F013D +:1076D000012621F01F013860FFF78EFF2673D4E7E3 +:1076E00070B50E4602F11F010446154621F01F0138 +:1076F0003046FFF793FF4CB12168B14206D1606874 +:1077000010B12A46FAF776FB0023237370BD000000 +:10771000F8B50F461446054648B904F11F01012685 +:10772000386821F01F01FFF779FF3046F8BD427B32 +:1077300021463868FFF756FE06460028EDD1AB68B3 +:10774000A34210D213B12868FFF736FE6B7B2046A8 +:107750002BB1FFF729FE286020B9A860E5E7FFF705 +:10776000EFFDF8E7AC60396819B122462868FAF7EE +:1077700041FB286804F11F01012621F01F01386038 +:10778000FFF74CFF2E73D0E720B103688B4204BF94 +:107790000023037370470000034B1A681AB9034AA9 +:1077A000D2F8D0241A607047585C0020004002587C +:1077B00008B5FFF7F1FF024B1868C0F3806008BD01 +:1077C000585C00207047000070470000EFF3098309 +:1077D000054968334A6B22F001024A6383F3098842 +:1077E000002383F31188704700EF00E0302080F31E +:1077F000118862B60D4B0E4AD96821F4E061090484 +:10780000090C0A430B49DA60D3F8FC2042F080727D +:10781000C3F8FC20084AC2F8B01F116841F001010A +:1078200011602022DA7783F82200704700ED00E033 +:107830000003FA0555CEACC5001000E0302310B5AA +:1078400083F311880E4B5B6813F4006314D0F1EEE0 +:10785000103AEFF309844FF08073683CE361094B01 +:10786000DB6B236684F30988FEF7B8FE10B1064B84 +:10787000A36110BD054BFBE783F31188F9E700BF57 +:1078800000ED00E000EF00E02F04000832040008E3 +:1078900070B5BFF34F8FBFF36F8F1A4A0021C2F844 +:1078A0005012BFF34F8FBFF36F8F536943F4003310 +:1078B0005361BFF34F8FBFF36F8FC2F88410BFF3D4 +:1078C0004F8FD2F8803043F6E074C3F3C900C3F39E +:1078D0004E335B0103EA0406014646EA817501392D +:1078E000C2F86052F9D2203B13F1200FF2D1BFF35E +:1078F0004F8F536943F480335361BFF34F8FBFF30E +:107900006F8F70BD00ED00E0FEE70000214B2248C4 +:10791000224A70B5904237D3214BC11EDA1C121A8D +:1079200022F003028B4238BF00220021FAF788FAC6 +:107930001C4A0023C2F88430BFF34F8FD2F8803046 +:1079400043F6E074C3F3C900C3F34E335B0103EAAB +:107950000406014646EA81750139C2F86C52F9D233 +:10796000203B13F1200FF2D1BFF34F8FBFF36F8F86 +:10797000BFF34F8FBFF36F8F0023C2F85032BFF3B6 +:107980004F8FBFF36F8F70BD53F8041B40F8041B7B +:10799000C0E700BF949C0008D45D0020D45D0020A7 +:1079A000D45D002000ED00E0074BD3F8D81021EAA9 +:1079B0000001C3F8D810D3F8002122EA0002C3F86E +:1079C0000021D3F8003170470044025870B5D0E967 +:1079D000244300224FF0FF359E6804EB421351010F +:1079E000D3F80009002805DAD3F8000940F08040F8 +:1079F000C3F80009D3F8000B002805DAD3F8000B10 +:107A000040F08040C3F8000B013263189642C3F87F +:107A10000859C3F8085BE0D24FF00113C4F81C38D2 +:107A200070BD0000F0B5D0E9246301250C309F68DB +:107A300000231A4650F8041B59B18C6924B103F194 +:107A4000100405FA04F42243496911B105FA03F15F +:107A50000A4301339F42EDD2C6F81C28F0BD000056 +:107A6000890141F02001016103699B06FCD41220C9 +:107A7000FEF704BE10B50A4C2046FEF7A5FA094BE6 +:107A8000C4F89030084BC4F89430084C2046FEF7F8 +:107A90009BFA074BC4F89030064BC4F8943010BDE5 +:107AA0005C5C002000000840D09B0008F85C0020CF +:107AB00000000440DC9B000870B503780546012BEC +:107AC0005CD1434BD0F89040984258D1414B0E21A5 +:107AD0006520D3F8D82042F00062C3F8D820D3F84C +:107AE000002142F00062C3F80021D3F80021D3F84E +:107AF000802042F00062C3F88020D3F8802022F07A +:107B00000062C3F88020D3F88030FDF745FC324B8B +:107B1000E360324BC4F800380023D5F89060C4F815 +:107B2000003EC02323604FF40413A3633369002B8A +:107B3000FCDA01230C203361FEF7A0FD3369DB077B +:107B4000FCD41220FEF79AFD3369002BFCDA0026E4 +:107B50002846A660FFF73AFF6B68C4F81068DB6838 +:107B6000C4F81468C4F81C6883BB1D4BA3614FF0B4 +:107B7000FF336361A36843F00103A36070BD194B39 +:107B80009842C9D1134B4FF08060D3F8D82042F00F +:107B90000072C3F8D820D3F8002142F00072C3F875 +:107BA0000021D3F80021D3F8802042F00072C3F8FE +:107BB0008020D3F8802022F00072C3F88020D3F810 +:107BC0008030FFF7F1FE0E214D209EE7064BCDE7FA +:107BD0005C5C002000440258401400400300200276 +:107BE000003C30C0F85C0020083C30C0F8B5D0F84C +:107BF0009040054600214FF000662046FFF730FF19 +:107C0000D5F8941000234FF001128F684FF0FF3029 +:107C1000C4F83438C4F81C2804EB431201339F42E3 +:107C2000C2F80069C2F8006BC2F80809C2F8080B74 +:107C3000F2D20B68D5F89020C5F898306362102313 +:107C40001361166916F01006FBD11220FEF716FD1F +:107C5000D4F8003823F4FE63C4F80038A36943F471 +:107C6000402343F01003A3610123C4F81038092313 +:107C7000C4F814380B4BEB604FF0C043C4F8103B12 +:107C8000094BC4F8003BC4F81069C4F80039D5F8B2 +:107C9000983003F1100243F48013C5F89820A362D2 +:107CA000F8BD00BFAC9B000840800010D0F89020C9 +:107CB00090F88A10D2F8003823F4FE6343EA0113E7 +:107CC000C2F80038704700002DE9F84300EB81034B +:107CD000D0F890500C468046DA680FFA81F94801D6 +:107CE000166806F00306731E022B05EB41134FF0D6 +:107CF000000194BFB604384EC3F8101B4FF00101C9 +:107D000004F1100398BF06F1805601FA03F391695C +:107D100098BF06F5004600293AD0578A04F1580169 +:107D2000374349016F50D5F81C180B430021C5F8A3 +:107D30001C382B180127C3F81019A7405369611E7E +:107D40009BB3138A928B9B08012A88BF5343D8F8B0 +:107D50009820981842EA034301F140022146C8F8EE +:107D60009800284605EB82025360FFF779FE08EB86 +:107D70008900C3681B8A43EA845348341E43640164 +:107D80002E51D5F81C381F43C5F81C78BDE8F88380 +:107D900005EB4917D7F8001B21F40041C7F8001B79 +:107DA000D5F81C1821EA0303C0E704F13F030B4A8E +:107DB0002846214605EB83035A60FFF751FE05EB89 +:107DC0004910D0F8003923F40043C0F80039D5F841 +:107DD0001C3823EA0707D7E70080001000040002E0 +:107DE000D0F894201268C0F89820FFF7EFBD00008B +:107DF0005831D0F8903049015B5813F4004004D05A +:107E000013F4001F0CBF0220012070474831D0F846 +:107E1000903049015B5813F4004004D013F4001F64 +:107E20000CBF02200120704700EB8101CB68196A6A +:107E30000B6813604B6853607047000000EB8103D0 +:107E400030B5DD68AA691368D36019B9402B84BFC7 +:107E5000402313606B8A1468D0F890201C4402EB16 +:107E60004110013C09B2B4FBF3F46343033323F044 +:107E7000030343EAC44343F0C043C0F8103B2B68FC +:107E800003F00303012B0ED1D2F8083802EB4110A6 +:107E900013F4807FD0F8003B14BF43F0805343F0CD +:107EA0000053C0F8003B02EB4112D2F8003B43F014 +:107EB0000443C2F8003B30BD2DE9F041D0F890609A +:107EC00005460C4606EB4113D3F8087B3A07C3F886 +:107ED000087B08D5D6F814381B0704D500EB8103BE +:107EE000DB685B689847FA071FD5D6F81438DB07BC +:107EF0001BD505EB8403D968CCB98B69488A5A68CD +:107F0000B2FBF0F600FB16228AB91868DA689042D4 +:107F10000DD2121AC3E90024302383F311882146BD +:107F20002846FFF78BFF84F31188BDE8F081012319 +:107F300003FA04F26B8923EA02036B81CB68002BFE +:107F4000F3D021462846BDE8F041184700EB8103F5 +:107F50004A0170B5DD68D0F890306C692668E6603B +:107F600056BB1A444FF40020C2F810092A6802F0E8 +:107F70000302012A0AB20ED1D3F8080803EB421417 +:107F800010F4807FD4F8000914BF40F0805040F016 +:107F90000050C4F8000903EB4212D2F8000940F087 +:107FA0000440C2F800090122D3F8340802FA01F1B2 +:107FB0000143C3F8341870BD19B9402E84BF402066 +:107FC000206020681A442E8A8419013CB4FBF6F420 +:107FD00040EAC44040F00050C6E700002DE9F84FE9 +:107FE000D0F8906005460C464F0106EB4113D3F8DC +:107FF000088918F0010FC3F808891CD0D6F810388A +:10800000DB0718D500EB8103D3F80CC0DCF8143083 +:10801000D3F800E0DA68964533D2A2EB0E024FF0B7 +:1080200000091A60C3F80490302383F31188FFF726 +:108030008DFF89F3118818F0800F20D0D6F83438DE +:108040000126A64033421AD005EB84030134D5F84B +:1080500090506FF00308D3F80CC0E4B22F44DCF862 +:10806000140005EB0434D0F800E0D0F80490F1459A +:1080700014D3D5F8343823EA0606C5F83468BDE8C9 +:10808000F88F012303FA01F2038923EA0203038133 +:10809000DCF80830002BCED09847CCE7AEEB0903D4 +:1080A000BCF81020934228BF1346D7F8182992B283 +:1080B000B3EB820FE3D88268194602EB030B032966 +:1080C000ABEB010A1CD84FEA930A23F0030B08FB21 +:1080D0000A31934479B1022918D0032918D19BF8A9 +:1080E000021009049BF801B041EA0B2112F82AA002 +:1080F0004AEA010121601A444B4482604360B4E7BC +:10810000DAF800A00439C4F800A0D8E70021E9E7B4 +:108110000021EBE72DE9F74F0446D0F890504FF0DF +:1081200040094FF0010A6F69AB691F4017F480588E +:108130006F6105D0204603B0BDE8F04FFDF7B4BF36 +:10814000002F15DAD5F8003E9E0705D0D5F8003E81 +:1081500023F00303C5F8003E2046FFF763FCD5F883 +:108160000438204623F00103C5F80438FDF7CCFF9E +:10817000380505D52046FFF729FC2046FDF7B2FF5C +:10818000B9040CD5D5F8083813F0060FEB6823F4C2 +:1081900070530CBF43F4105343F4A053EB603A0701 +:1081A0001AD56368DB681BB9AB6923F00803AB61C0 +:1081B0002378052B08D1D5F8003E204623F0030391 +:1081C000C5F8003EFDF7A0FF2046FFF72BFC6368D3 +:1081D000DB680BB120469847FB026ED4BE0209D57E +:1081E000D4F890200026D4F89430F1B29B689942DC +:1081F00040F29B803803D5F8186800F1B4807A0308 +:1082000035D5F30703D500212046FFF7E7FEB00779 +:1082100003D501212046FFF7E1FE710703D50221B6 +:108220002046FFF7DBFE320703D503212046FFF788 +:10823000D5FEF30603D504212046FFF7CFFEB00696 +:1082400003D505212046FFF7C9FE710603D5062197 +:108250002046FFF7C3FE320603D507212046FFF76D +:10826000BDFEF30503D508212046FFF7B7FEFE0645 +:1082700019D5D4F89060336AC3F30A1203F00F00E3 +:1082800003F4F013B3F5802F00F0B280B3F5402F64 +:1082900009D104EB8000002106F58056C3681B6AF3 +:1082A0008A4240F09880694B1F4203D0B9F101091E +:1082B0007FF439AF03B0BDE8F08FD4F890604FF091 +:1082C000000BD4F894205FFA8BF19268914285D824 +:1082D00006EB4112D2F8000900F44020B0F5802FDF +:1082E00020D1D2F8000900281CDAD2F8000940F0A9 +:1082F0009040C2F80009D2F800090028FBDBD4F84E +:1083000090000191FFF7ACFB019920890AFA01F274 +:1083100020EA0202228104EB8102D26892680AB14B +:10832000204690470BF1010BCBE702EB4110D0F850 +:10833000003B03F44023B3F5802F12D1D0F8003B6B +:10834000002B0EDA60890AFA01F320EA0303638145 +:1083500004EB8103DB68DB681BB120460192984780 +:10836000019A01363FE7F10303D500212046FFF7CC +:10837000A3FDB20303D501212046FFF79DFD730342 +:1083800003D502212046FFF797FD300303D50321D3 +:108390002046FFF791FDF10203D504212046FFF7A7 +:1083A0008BFDB20203D505212046FFF785FD730240 +:1083B00003D506212046FFF77FFD300203D50721B4 +:1083C0002046FFF779FDF1017FF519AF082120461E +:1083D000FFF772FD13E7880701D1D6F8008007295F +:1083E00001F101019CBF03F8018B4FEA182857E700 +:1083F00004EB800E4FF0000C06F58056DEF80C30D2 +:108400009969D1E900038968C31A624510D1DEF881 +:108410000C1093428869D0E901168BBFB618F61884 +:1084200052185B1887BF86604260866043603AE7F7 +:108430001CF0030F01D1D6F8008063450CF1010C4C +:1084400084BF01F8018B4FEA1828DEE730000004F2 +:1084500008B50348FFF75EFEBDE80840FFF7EEB938 +:108460005C5C002008B50348FFF754FEBDE80840F7 +:10847000FFF7E4B9F85C0020D0F8903003EB41112D +:10848000D1F8003B43F40013C1F8003B70470000F3 +:10849000D0F8903003EB4111D1F8003943F40013C8 +:1084A000C1F8003970470000D0F8903003EB41115B +:1084B000D1F8003B23F40013C1F8003B70470000E3 +:1084C000D0F8903003EB4111D1F8003923F40013B8 +:1084D000C1F8003970470000064BD3F8DC20024396 +:1084E000C3F8DC20D3F804211043C3F80401D3F807 +:1084F000043170470044025808B53C4B4FF0FF313F +:10850000D3F8802062F00042C3F88020D3F88020A6 +:1085100002F00042C3F88020D3F88020D3F88420F2 +:10852000C3F88410D3F884200022C3F88420D3F841 +:108530008400D86F40F0FF4040F4FF0040F4DF407B +:1085400040F07F00D867D86F20F0FF4020F4FF0094 +:1085500020F4DF4020F07F00D867D86FD3F8880080 +:108560006FEA40506FEA5050C3F88800D3F8880093 +:10857000C0F30A00C3F88800D3F88800D3F890004D +:10858000C3F89010D3F89000C3F89020D3F890006F +:10859000D3F89400C3F89410D3F89400C3F894204F +:1085A000D3F89400D3F89800C3F89810D3F8980043 +:1085B000C3F89820D3F89800D3F88C00C3F88C1037 +:1085C000D3F88C00C3F88C20D3F88C00D3F89C002F +:1085D000C3F89C10D3F89C10C3F89C20D3F89C30AF +:1085E000FCF7EAF9BDE8084000F0EAB80044025898 +:1085F00008B5554BD3F8F42042F00202C3F8F4203A +:10860000D3F81C2142F00202C3F81C210222D3F845 +:108610001C314E4BDA605A689104FCD54C4A4FF439 +:1086200040411A6001229A604A4ADA6000221A61C7 +:108630009961494BDA6203F511339A699204FCD5CA +:108640001A6842F480721A603F4B1A6F12F4407F2E +:1086500004D04FF480321A6700221A671A6842F079 +:1086600001021A60384B1A685007FCD500221A61C3 +:108670001A6912F03802FBD1012119604FF08041D4 +:1086800059604FF00051D9605A67344ADA62344A6F +:108690001A611A6842F480321A602B4B1A689103EF +:1086A000FCD51A6842F480521A601A689204FCD50C +:1086B0002C4A2D499A6200225A63196301F57C0104 +:1086C000DA6301F2E71199635A64284A1A64284A66 +:1086D000DA621A6842F0A8521A601B4B1A6802F05C +:1086E0002852B2F1285FF9D148229A614FF488628A +:1086F000DA6140221A621F4ADA641F4A1A651F4A69 +:108700005A651F4A9A6532231E4A1360136803F0A4 +:108710000F03022BFAD10C4A136943F003031361D0 +:10872000136903F03803182BFAD14FF00050FFF70C +:10873000D3FE4FF08040FFF7CFFE4FF00040BDE882 +:108740000840FFF7C9BE00BF004402580048025865 +:1087500000C000F002000001000400580000FF010A +:10876000008890081210200063020901470E0508D6 +:10877000DD0BBF0120000020000001100910E00007 +:10878000000101100020005208B50348FCF7E6FC88 +:10879000BDE80840FFF752B8C036002008B50348CE +:1087A000FCF776FDBDE80840FFF748B8183900200F +:1087B00008B500F099FCBDE80840FFF73FB800009D +:1087C00008B509217A20FCF7E7FD09213120FCF7E3 +:1087D000E3FD07213220FCF7DFFD0C215220BDE82C +:1087E0000840FCF7D9BD000008B5FFF785FE00F092 +:1087F0004FFCFDF7E7F9FDF785F9FDF7E3FBFDF722 +:1088000093FAFEF771FABDE8084000F029BA0000BB +:1088100030B50433039C0172002103FB0425C160C1 +:10882000C0E90653049B0363059BC0E90000C0E94F +:108830000422C0E90842C0E90A11436330BD0000C8 +:108840000022416AC260C0E90411C0E90A226FF047 +:108850000101FDF7BFBF0000D0E90432934201D10E +:10886000C2680AB9181D7047002070470369196073 +:108870000021C2680132C260C26913448269934216 +:10888000036124BF436A0361FDF798BF38B504460E +:108890000D46E3683BB162690020131D1268A362B4 +:1088A0001344E36207E0237A33B929462046FDF7F3 +:1088B00075FF0028EDDA38BD6FF00100FBE700001E +:1088C000C368C269013BC360436913448269934230 +:1088D000436124BF436A436100238362036B03B196 +:1088E0001847704770B53023044683F31188866AB1 +:1088F0003EB9FFF7CBFF054618B186F3118828462D +:1089000070BDA36AE26A13F8015B9342A36202D3CB +:108910002046FFF7D5FF002383F31188EFE700001F +:108920002DE9F84F04460E46174698464FF0300999 +:1089300089F311880025AA46D4F828B0BBF1000FAE +:1089400009D141462046FFF7A1FF20B18BF31188E2 +:108950002846BDE8F88FD4E90A12A7EB050B521A96 +:10896000934528BF9346BBF1400F1BD9334601F115 +:10897000400251F8040B914243F8040BF9D1A36A69 +:10898000403640354033A362D4E90A239A4202D3E9 +:108990002046FFF795FF8AF31188BD42D8D289F3AC +:1089A0001188C9E730465A46F9F724FAA36A5E44AB +:1089B0005D445B44A362E7E710B5029C0433017297 +:1089C00003FB0421C460C0E906130023C0E90A3395 +:1089D000039B0363049BC0E90000C0E90422C0E9D3 +:1089E0000842436310BD0000026A6FF00101C260DB +:1089F000426AC0E904220022C0E90A22FDF7EABE69 +:108A0000D0E904239A4201D1C26822B9184650F82D +:108A1000043B0B60704700231846FAE7C368002147 +:108A2000C2690133C360436913448269934243615D +:108A300024BF436A4361FDF7C1BE000038B5044658 +:108A40000D46E3683BB1236900201A1DA262E2696A +:108A50001344E36207E0237A33B929462046FDF741 +:108A60009DFE0028EDDA38BD6FF00100FBE7000045 +:108A700003691960C268013AC260C269134482691D +:108A80009342036124BF436A036100238362036B43 +:108A900003B118477047000070B530230D460446F7 +:108AA000114683F31188866A2EB9FFF7C7FF10B10C +:108AB00086F3118870BDA36A1D70A36AE26A013350 +:108AC0009342A36204D3E16920460439FFF7D0FF43 +:108AD000002080F31188EDE72DE9F84F04460D469C +:108AE000904699464FF0300A8AF311880026B34623 +:108AF000A76A4FB949462046FFF7A0FF20B187F388 +:108B000011883046BDE8F88FD4E90A073A1AA8EB75 +:108B10000607974228BF1746402F1BD905F140038F +:108B200055F8042B9D4240F8042BF9D1A36A403636 +:108B30004033A362D4E90A239A4204D3E169204670 +:108B40000439FFF795FF8BF311884645D9D28AF394 +:108B50001188CDE729463A46F9F74CF9A36A3D4416 +:108B60003E443B44A362E5E7D0E904239A4217D18F +:108B7000C3689BB1836A8BB1043B9B1A0ED0136010 +:108B8000C368013BC360C3691A4483699A420261A6 +:108B900024BF436A036100238362012318467047A0 +:108BA0000023FBE701F01F03F0B502F01F04560994 +:108BB0005A1C0123B6EB511F50F8265003FA02F35A +:108BC0004FEA511703F1FF333DBF50F82720C4F19E +:108BD0002000134003EA05003BBF03FA00F225FA28 +:108BE00004F0E0401043F0BD70B57E227F210546C1 +:108BF000FFF7D8FF18B1012819D0002070BD3E2220 +:108C000049212846FFF7CEFF2F220446312128466E +:108C1000FFF7C8FF0646013450220236532128468A +:108C2000B440FFF7BFFF093804FA00F0E6E730224E +:108C300045212846FFF7B6FF01308002DEE700003D +:108C400090F8D63090F8D7201B0403EB026390F81D +:108C5000D42090F8D500134403EB002070470000A7 +:108C600000F018BA014B586A704700BF000C004072 +:108C7000034B002258631A610222DA60704700BF7A +:108C8000000C0040014B0022DA607047000C0040ED +:108C9000014B5863704700BF000C0040024B034A71 +:108CA0001A60034A5A607047AC5D0020D85D00200E +:108CB00000000220094B70B5D3E90054661BB04296 +:108CC00009D8201A49420840821A954203D8944292 +:108CD00001D35A6070BD0020FCE700BFAC5D0020EE +:108CE00008B5302383F31188FFF7E4FF002383F3F3 +:108CF000118808BD0448054B03600023C0E9013317 +:108D00000C3000F01FB900BFB45D0020E18C0008FA +:108D1000CB1D083A23F00703591A521A10B4D2088F +:108D20000024C0E9004384600C301C605A605DF888 +:108D3000044B00F007B900002DE9F74FCC1D3A4F66 +:108D40000E4624F00703002818BF0746994204D9AD +:108D50000024204603B0BDE8F08F082A07F10C007C +:108D60004FEAD40438BF08220190904600F02CF955 +:108D70003A1D019808F1070EC8F1000994461268DF +:108D800072B900F02BF93B68002BE1D0E00008221B +:108D90004146984704460028DBD040E90276D8E7F0 +:108DA00002EB0E01D2F804A001EA09010AF1010563 +:108DB000A1F1080302EBC5059D42DFD9691AB4EBA6 +:108DC000E10F4FEAE10BD9D89A4219D202F108011A +:108DD000A345A3EB01014FEAE101516009D9651CEC +:108DE000E44303EBC5015C444C60146843F8354030 +:108DF00011601C465E6044F8087B00F0EFF8A8E7BD +:108E0000A245116803D1CCF800101346F1E70134F4 +:108E100002EBC40342F8341003F108016D1AED109F +:108E20005D60CCF80030F0E7B45D002073B5044617 +:108E3000A0F1080550F8080C54F8043C061D0C304D +:108E400007330190DB0844F8043C00F0BDF83346DA +:108E500001989E421A6801D0AB4228D20AB19542CD +:108E600025D244F8082C54F8042C1D60013254F823 +:108E7000081C05EBC206B14206D14E68324444F8E4 +:108E8000042C0A6844F8082C5E68711C03EBC101CD +:108E90008D4207D154F8042C013232445A6054F800 +:108EA000082C1A6002B0BDE8704000F097B8134675 +:108EB000CFE70000FEE7000070B51E4B002504461A +:108EC00086B058600E4605638163FEF78FFC04F19F +:108ED0002803A5606563C4E90A3304F11003C4E9FB +:108EE00004334FF0FF33C4E90044C4E90635FFF70B +:108EF000B9FE2B46024604F13C012046C4E9082392 +:108F000080230D4A6567FDF7C3FB7368E0600B4A79 +:108F100003620123009280F824306846F2680192CF +:108F20003269CDE90223064BCDE90435FDF7E4FBB8 +:108F300006B070BD30400020F09B0008E89B0008A0 +:108F4000B58E00080023C0E900008360036170470C +:108F500070B51C4B05468468DE685CB3B44213D11F +:108F600003690133036170BDA36094F8243083B1B9 +:108F7000062B15D1A06A2146D4E9003213605A604D +:108F8000FDF7E2FAA36A9C68B368A2689A42EBD341 +:108F900006E0D4E90032204613605A60FDF7E4FA97 +:108FA00028463146FDF7D0FAB5620620BDE870408C +:108FB000FDF7DCBA0369866001330361336BC3607C +:108FC0003063D0E7883D002008B5302383F3118853 +:108FD000FFF7BEFF002383F3118808BD194BD96842 +:108FE00083688B4210B520D1302383F31188026946 +:108FF000013A0261B2B90468C368A0420B631ED093 +:109000004A6B9BB901238A60036103681A68026096 +:1090100050601A6B8360C26018631846FDF7A4FAAB +:10902000FDF704FB002383F3118810BD1C68A342E5 +:1090300003D0A468A24238BF2246DB68E1E7826021 +:10904000F0E700BF883D0020024A536B184350638D +:10905000704700BF883D002038B5EFF311859DB9FA +:10906000EFF30584C4F30804302334B183F311888B +:10907000FDF7E8FC85F3118838BD83F31188FDF70F +:10908000E1FC84F3118838BDBDE83840FDF7DABC57 +:1090900070470000114BD3F8E82042F00802C3F8F3 +:1090A000E820D3F8102142F00802C3F810210C4A3E +:1090B000D3F81031D36B43F00803D363C722094BB5 +:1090C0009A624FF0FF32DA6200229A615A63DA60E4 +:1090D0005A6001225A611A60704700BF004402586A +:1090E0000010005C000C0040094A08B51169D36803 +:1090F0000B40D9B29B076FEA0101116107D53023FC +:1091000083F31188FDF7B8FA002383F3118808BDB3 +:10911000000C004010B501390244904201D10020FA +:1091200005E0037811F8014FA34201D0181B10BDD0 +:109130000130F2E7884210B501EB020402D9844203 +:10914000234607D8431EA14208D011F8012B03F88B +:10915000012FF8E7024401468A4200D110BD13F8FE +:10916000014D02F8014DF7E7C9B2034610F8012B93 +:109170001AB18A42F9D118467047002918BF002356 +:10918000F9E70000034611F8012B03F8012B002A30 +:10919000F9D1704710B50139034632B111F8014FCA +:1091A00003F8014B013A002CF7D11A4400219342F5 +:1091B00000D110BD03F8011BF9E7000066363165E8 +:1091C000356138333965633136306237000000006D +:1091D0001210000012110000121300004D4435005F +:1091E0002D2D0A002F6172647570696C6F742E6189 +:1091F00062696E002F6172647570696C6F742D7690 +:1092000065726966792E6162696E002F617264759C +:1092100070696C6F742D666C6173682E6162696E23 +:10922000002F6172647570696C6F742D666C617368 +:109230006865642E6162696E000000000000000035 +:1092400000000000150F0008D90F000829110008C0 +:10925000190F0008D10F00080000000000000000F6 +:10926000110F0008E50F0008611100080D0F00083C +:10927000410F000853544D333248373F3F3F0053AE +:10928000544D3332483733782F3732780053544DAA +:109290003332483734332F3735332F3735300000EA +:1092A00001105A00031059000120580003205600F5 +:1092B0002F0000005375636365737366756C6C797A +:1092C000206D6F756E746564205344436172642031 +:1092D00028736C6F77646F776E3D2575290A0000DF +:1092E000EB769045584641542020200046415433A7 +:1092F00032202020000000002A3A3C3E7C223F7FA2 +:10930000002B2C3B3D5B5D004355454141414143B2 +:1093100045454549494941414592924F4F4F555521 +:10932000594F554F9C4F9E9F41494F55A5A5A6A704 +:10933000A8A9AAABACADAEAFB0B1B2B3B441414194 +:10934000B8B9BABBBCBDBEBFC0C1C2C3C4C5414130 +:10935000C8C9CACBCCCDCECFD1D145454549494965 +:1093600049D9DADBDCDD49DF4FE14F4F4F4FE6E80B +:10937000E85555555959EEEFF0F1F2F3F4F5F6F7DB +:10938000F8F9FAFBFCFDFEFF01030507090E1012B8 +:109390001416181C1E00000061001A03E0001703D9 +:1093A000F8000703FF0001007801000130013201DD +:1093B0000601390110014A012E01790106018001DF +:1093C0004D004302810182018201840184018601F2 +:1093D0008701870189018A018B018B018D018E0133 +:1093E0008F0190019101910193019401F601960181 +:1093F0009701980198013D029B019C019D0120026B +:109400009F01A001A001A201A201A401A401A60143 +:10941000A701A701A901AA01AB01AC01AC01AE01F2 +:10942000AF01AF01B101B201B301B301B501B501A3 +:10943000B701B801B801BA01BB01BC01BC01BE0152 +:10944000F701C001C101C201C301C401C501C401CA +:10945000C701C801C701CA01CB01CA01CD01100172 +:10946000DD0101008E01DE011201F3010300F101B3 +:10947000F401F401F8012801220212013A02090064 +:10948000652C3B023B023D02662C3F02400241023A +:10949000410246020A015302400081018601550241 +:1094A00089018A0158028F015A0290015C025D0213 +:1094B0005E025F029301610262029401640265022E +:1094C00066026702970196016A02622C6C026D02C5 +:1094D0006E029C01700271029D01730274029F0171 +:1094E00076027702780279027A027B027C02642C8F +:1094F0007E027F02A60181028202A9018402850206 +:1095000086028702AE014402B101B20145028D021A +:109510008E028F0290029102B7017B030300FD03CC +:10952000FE03FF03AC0304008603880389038A0358 +:10953000B1031103C2030200A303A303C40308037E +:10954000CC0303008C038E038F03D8031801F203AE +:109550000A00F903F303F403F503F603F703F70333 +:10956000F903FA03FA0330042003500410076004DF +:1095700022018A043601C1040E01CF040100C00497 +:10958000D004440161052604000000007D1D010097 +:10959000632C001E9601A01E5A01001F0806101F12 +:1095A0000606201F0806301F0806401F0606511F2A +:1095B0000700591F521F5B1F541F5D1F561F5F1F5F +:1095C000601F0806701F0E00BA1FBB1FC81FC91FEF +:1095D000CA1FCB1FDA1FDB1FF81FF91FEA1FEB1F83 +:1095E000FA1FFB1F801F0806901F0806A01F080611 +:1095F000B01F0400B81FB91FB21FBC1FCC1F010051 +:10960000C31FD01F0206E01F0206E51F0100EC1F6A +:10961000F31F0100FC1F4E210100322170211002B6 +:10962000842101008321D0241A05302C2F04602CC2 +:109630000201672C0601752C0201802C6401002DAB +:10964000260841FF1A030000C700FC00E900E20001 +:10965000E400E000E500E700EA00EB00E800EF00CE +:10966000EE00EC00C400C500C900E600C600F4002E +:10967000F600F200FB00F900FF00D600DC00F80065 +:10968000A300D800D7009201E100ED00F300FA003A +:10969000F100D100AA00BA00BF00AE00AC00BD00CE +:1096A000BC00A100AB00BB009125922593250225AB +:1096B0002425C100C200C000A900632551255725FB +:1096C0005D25A200A5001025142534252C251C2578 +:1096D00000253C25E300C3005A255425692566254D +:1096E000602550256C25A400F000D000CA00CB00F6 +:1096F000C8003101CD00CE00CF0018250C258825EB +:109700008425A600CC008025D300DF00D400D20041 +:10971000F500D500B500FE00DE00DA00DB00D90060 +:10972000FD00DD00AF00B400AD00B1001720BE00A9 +:10973000B600A700F700B800B000A800B700B90055 +:10974000B300B200A025A0001000024008000240B3 +:109750000008024000000B00280002400800024000 +:109760000408024006010C004000024008000240CC +:109770000808024010020D00580002400800024094 +:109780000C08024016030E00700002400C0002405C +:109790001008024000040F00880002400C00024044 +:1097A0001408024006051000A00002400C00024010 +:1097B0001808024010061100B80002400C000240D8 +:1097C0001C08024016072F00100402400804024043 +:1097D0002008024000083800280402400804024023 +:1097E00024080240060939004004024008040240EF +:1097F00028080240100A3A005804024008040240B7 +:109800002C080240160B3B00700402400C0402407E +:1098100030080240000C3C00880402400C04024066 +:1098200034080240060D4400A00402400C0402402B +:1098300038080240100E4500B80402400C040240F3 +:109840003C080240160F4600010000000000000026 +:109850000096000000000000000000000000000072 +:10986000000000000000000000000000E16C0008A3 +:10987000E56C000851580008155800080957000801 +:109880003557000861570008A9560008000000007D +:10989000855B0008715B0008AD5B0008995B000800 +:1098A000A55B0008915B00087D5B0008695B000810 +:1098B000B95B0008000000009D5C0008895C00089E +:1098C000C55C0008B15C0008BD5C0008A95C00082C +:1098D000955C0008815C00081D5D00080000000028 +:1098E000010000000000000063300000E89800085C +:1098F0000000000000000000003E0020304000207A +:109900000000802A00000000AAAAAAAA00000024E1 +:10991000FFFF00000000000000A00A00000000009F +:1099200000000000AAAAAAAA00000000FFFF000091 +:1099300000000000000000000000AA460000000037 +:10994000AAAAAAAA00005540FFDF000000000000FC +:10995000CCCC0C002001500000000000AAAAAAAA4A +:1099600010010000FFF30000000C000000000000E8 +:109970005080420000000000AAAAAAAA104041009C +:10998000F7FF00000000007007000000000000006A +:1099900000000000AAAAAAAA00000000FFFF000021 +:1099A00000000000000000000000000000000000B7 +:1099B000AAAAAAAA00000000FFFF00000000000001 +:1099C000000000000000000000000000AAAAAAAAEF +:1099D00000000000FFFF0000000000000000000089 +:1099E0000000000000000000AAAAAAAA00000000CF +:1099F000FFFF000000000000000000000000000069 +:109A000000000000AAAAAAAA00000000FFFF0000B0 +:109A10000000000000000000000000000000000046 +:109A2000AAAAAAAA00000000FFFF00000000000090 +:109A3000000000004172647550696C6F740025422B +:109A40004F415244252D424C002553455249414C2B +:109A5000250000000200000000000000C55E0008B4 +:109A6000415F000840004000E0580020F05800200E +:109A700002000000000000000300000000000000E1 +:109A80008D5F000800000000100000000059002059 +:109A90000000000001000000000000005C5C0020ED +:109AA00001010200DD6D0008ED6C0008896D000801 +:109AB0006D6D000843000000BC9A000809024300D5 +:109AC000020100C032090400000102020100052465 +:109AD00000100105240100010424020205240600EF +:109AE00001070582030800FF09040100020A0000C3 +:109AF0000007050102400000070581024000000048 +:109B000012000000089B0008120110010200004032 +:109B10000912415700020102030100000403090475 +:109B200025424F41524425005442535F4C5543490E +:109B3000445F48375F4F454D00303132333435365E +:109B400037383941424344454600000000000020B8 +:109B500000000200020000000000003000000400CD +:109B600008000000000000240000080004000000BD +:109B70000004000000FC00000200000000000430AF +:109B80000080000008000000000000380000010014 +:109B9000010000001F1C1F1E1F1E1F1F1E1F1E1F57 +:109BA0001F1D1F1E1F1E1F1F1E1F1E1F0000000047 +:109BB00021610008C963000861640008400040009A +:109BC000945D0020945D002001000000A45D002051 +:109BD00080000000400100000800000000010000BB +:109BE000001000000800000069646C6500000000BF +:109BF0006D61696E002C0638040438080C10141CC2 +:109C00002024252600000000000064040100040058 +:109C100000000000000C0010283034004C68FF7F6A +:109C200001000000FFFFFFFF87140000000000009C +:109C300000001A0000000000FF0000003840002073 +:109C4000183900200000000074920008830400000E +:109C50007F920008500400008D920008010000006F +:109C600000000000009600000000080096000000C0 +:109C700000080000040000001C9B00080000000019 +:109C800000000000000000000000000000000000D4 +:049C900000000000D0 +:00000001FF diff --git a/Tools/ros2/ardupilot_sitl/src/ardupilot_sitl/launch.py b/Tools/ros2/ardupilot_sitl/src/ardupilot_sitl/launch.py index 6556aa03e0415..470d1de98ebea 100644 --- a/Tools/ros2/ardupilot_sitl/src/ardupilot_sitl/launch.py +++ b/Tools/ros2/ardupilot_sitl/src/ardupilot_sitl/launch.py @@ -397,6 +397,7 @@ def generate_action(context: LaunchContext, *args, **kwargs) -> ExecuteProcess: instance = LaunchConfiguration("instance").perform(context) defaults = LaunchConfiguration("defaults").perform(context) use_instance_dir = LaunchConfiguration("use_instance_dir").perform(context) + use_sim_time = LaunchConfiguration("use_sim_time").perform(context) # Display launch arguments. print(f"command: {command}") @@ -407,6 +408,7 @@ def generate_action(context: LaunchContext, *args, **kwargs) -> ExecuteProcess: print(f"instance: {instance}") print(f"defaults: {defaults}") print(f"use_instance_dir: {use_instance_dir}") + print(f"use_sim_time: {use_sim_time}") # Required arguments. cmd_args = [ @@ -421,6 +423,7 @@ def generate_action(context: LaunchContext, *args, **kwargs) -> ExecuteProcess: f"--sim-address={sim_address} ", f"--instance {instance} ", f"--defaults {defaults} ", + f"--use_sim_time {use_sim_time} ", ] # Optional arguments. @@ -657,6 +660,12 @@ def generate_launch_arguments() -> List[DeclareLaunchArgument]: description="If True create instance directories for the eeprom.bin.", choices=BOOL_STRING_CHOICES, ), + DeclareLaunchArgument( + "use_sim_time", + default_value="True", + description="Use simulation time.", + choices=BOOL_STRING_CHOICES, + ), ] # Serial launch arguments. diff --git a/Tools/scripts/cygwin_build.sh b/Tools/scripts/cygwin_build.sh index 2a2358740f41e..de19b30aeee17 100755 --- a/Tools/scripts/cygwin_build.sh +++ b/Tools/scripts/cygwin_build.sh @@ -21,8 +21,10 @@ echo "SYS_ROOT=$SYS_ROOT" rm -rf artifacts mkdir artifacts +if [ -z "$GITHUB_ACTIONS" ] || [ "$GITHUB_ACTIONS" != "true" ]; then # cygwin doesn't work out the parallelism properly WAF_OPTIONS="-j8" +fi ( python ./waf --color yes --toolchain $TOOLCHAIN --board sitl configure 2>&1 diff --git a/libraries/AP_DDS/AP_DDS_Client.cpp b/libraries/AP_DDS/AP_DDS_Client.cpp index 31afc44d3e687..ef89c6a0eb5c7 100644 --- a/libraries/AP_DDS/AP_DDS_Client.cpp +++ b/libraries/AP_DDS/AP_DDS_Client.cpp @@ -1539,6 +1539,14 @@ bool AP_DDS_Client::create() GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s Topic/Pub/Writer session pass for index '%u'", msg_prefix, i); } } else if (topics[i].topic_rw == Topic_rw::DataReader) { +#if AP_DDS_CLOCK_SUB_ENABLED && CONFIG_HAL_BOARD == HAL_BOARD_SITL + // IF SITL option for use_sim_time is false, don't subscribe to /clock + SITL::SIM *sitl = AP::sitl(); + if (strcmp(topics[i].topic_name, "/clock") == 0 && !sitl->use_dds_sim_time) { + GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s Skipping subscription to /clock because use_sim_time is false", msg_prefix); + continue; + } +#endif // AP_DDS_CLOCK_SUB_ENABLED && CONFIG_HAL_BOARD == HAL_BOARD_SITL // Subscriber const uxrObjectId sub_id = { .id = topics[i].sub_id, @@ -1565,25 +1573,12 @@ bool AP_DDS_Client::create() GCS_SEND_TEXT(MAV_SEVERITY_WARNING, "%s Topic/Sub/Reader session request retry for index '%u'", msg_prefix, i); } if (!success) { - // Don't fail on /clock subscription -#if AP_DDS_CLOCK_SUB_ENABLED - if (i == to_underlying(TopicIndex::CLOCK_SUB)) { - // Optional subscription failed, log warning but continue - GCS_SEND_TEXT(MAV_SEVERITY_WARNING, "%s Optional Topic/Sub/Reader session request failure for index '%u' - continuing without it", msg_prefix, i); - for (uint8_t s = 0 ; s < nRequests; s++) { - GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s Status '%d' result '%u'", msg_prefix, s, status[s]); - } - } else { -#endif - GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s Topic/Sub/Reader session request failure for index '%u'", msg_prefix, i); - for (uint8_t s = 0 ; s < nRequests; s++) { - GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s Status '%d' result '%u'", msg_prefix, s, status[s]); - } - // TODO add a failure log message sharing the status results - return false; -#if AP_DDS_CLOCK_SUB_ENABLED + GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s Topic/Sub/Reader session request failure for index '%u'", msg_prefix, i); + for (uint8_t s = 0 ; s < nRequests; s++) { + GCS_SEND_TEXT(MAV_SEVERITY_ERROR, "%s Status '%d' result '%u'", msg_prefix, s, status[s]); } -#endif + // TODO add a failure log message sharing the status results + return false; } else { GCS_SEND_TEXT(MAV_SEVERITY_INFO, "%s Topic/Sub/Reader session pass for index '%u'", msg_prefix, i); uxr_buffer_request_data(&session, reliable_out, topics[i].dr_id, reliable_in, &delivery_control); diff --git a/libraries/AP_DDS/README.md b/libraries/AP_DDS/README.md index 389eeaf067561..bf4c5f68d1684 100644 --- a/libraries/AP_DDS/README.md +++ b/libraries/AP_DDS/README.md @@ -314,11 +314,11 @@ publishing #1: ardupilot_msgs.msg.GlobalPosition(header=std_msgs.msg.Header(stam When running in a simulated environment, The master simulation clock (usually ``/clock``) needs to be provided to Ardupilot to ensure ArduPilot's topics have the correct timestamp. This ensure that any sensor fusion (or similar) nodes in ROS 2 fuse the correct data. -On startup, ArduPilot will automatically attempt to subscribe to ``/clock`` topic. If this is unsuccessful, ArduPilot -will use it's own internal clock. In either case, ArduPilot will publish the clock to ``/ap/clock`` -(or ``/ap/vN/clock`` if namespacing is used). +ArduPilot SITL uses the standard ROS2 parameter of ``--use-sim-time ``. If ``true`` ArduPilot will automatically attempt +to subscribe to ``/clock`` topic and use this for the timestamping of DDS topics. If this is unsuccessful, ArduPilot +will use it's own internal clock. -For simulators such as Gazebo, the ``/clock`` topic is published automatically and no further configuration is required. +In either case, ArduPilot will publish the clock to ``/ap/clock`` (or ``/ap/vN/clock`` if namespacing is used). ## Contributing to `AP_DDS` library diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/CORVON743V2_BackView.jpg b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/CORVON743V2_BackView.jpg new file mode 100644 index 0000000000000..f5bbaae81413c Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/CORVON743V2_BackView.jpg differ diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/CORVON743V2_FrontView.jpg b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/CORVON743V2_FrontView.jpg new file mode 100644 index 0000000000000..f50b62c5e2ccb Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/CORVON743V2_FrontView.jpg differ diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/CORVON743V2_Pads.png b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/CORVON743V2_Pads.png new file mode 100644 index 0000000000000..aeb1f17d5f43e Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/CORVON743V2_Pads.png differ diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/CORVON743V2_PortsConnection.png b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/CORVON743V2_PortsConnection.png new file mode 100644 index 0000000000000..c08d457b5c4e4 Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/CORVON743V2_PortsConnection.png differ diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/README.md b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/README.md new file mode 100644 index 0000000000000..bee902830094e --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/README.md @@ -0,0 +1,173 @@ +# CORVON 743V2 Flight Controller + +The CORVON 743V2 is a flight controller with 10 motor outputs and 2 servo +outputs, built around the STM32H743VIH6 (TFBGA100, 2 MB Flash, 1 MB RAM, +Cortex-M7 @ 480 MHz). + +## Features + +- MCU: STM32H743VIH6 (Cortex-M7 @ 480 MHz, 2 MB Flash, 1 MB RAM) +- IMU: ICM-42688P + BMI088 on SPI3 +- Barometer: BMP581 on internal I2C2 +- Compass: IST8310 on internal I2C2 +- 10 × DShot motor outputs (bidirectional DShot on outputs 1-8) + 2 × PWM servo outputs +- 8 UARTs + USB + FDCAN1 (DroneCAN) +- Dual analog battery monitoring +- Analog airspeed input +- Analog RSSI input +- microSD (SDMMC1, 4-bit) for onboard logging +- Passive piezo buzzer +- RGB status LED + WS2812 serial LED (NeoPixel) output +- 4 user GPIO pads (SW1-SW4) + +## Physical + +![CORVON743V2 Front View](CORVON743V2_FrontView.jpg) + +![CORVON743V2 Back View](CORVON743V2_BackView.jpg) + +## UART Mapping + +| Port | UART | Default Protocol | Connector | +|---------|--------|--------------------------|-----------------| +| SERIAL0 | USB | MAVLink2 | USB-C | +| SERIAL1 | USART1 | MAVLink2 | TELEM1 | +| SERIAL2 | USART2 | MSP DisplayPort (DJI O4) | O4-AIR | +| SERIAL3 | USART3 | GPS | GPS | +| SERIAL4 | UART4 | MAVLink2 | TELEM2 | +| SERIAL5 | UART5 | None (user aux) | UART5 pads | +| SERIAL6 | USART6 | RCIN | RCIN | +| SERIAL7 | UART7 | ESC telemetry | UART7 pads | +| SERIAL8 | UART8 | MAVLink2 @ 115200 | Bluetooth | + +The O4-AIR connector is a 6-pin header that plugs straight into a DJI O4 / O3 +Air Unit: USART2 carries the MSP DisplayPort link, the SBUS pin is wired to the +RC input on USART6 (see RC Input), and the remaining pins supply power and ground. + +SERIAL8 (UART8) is the onboard Bluetooth module (Bluetooth Classic / SPP), +configured as MAVLink2 at 115200 baud by default. + +## RC Input + +RC input is on the RCIN connector (USART6) and supports SBUS, CRSF, ELRS, +and other UART-based protocols. See +[RC systems](https://ardupilot.org/copter/docs/common-rc-systems.html) for +the full list. + +## OSD Support + +The default configuration sets `OSD_TYPE = 5` (MSP DisplayPort) on +SERIAL2 (O4-AIR), so a DJI O4 / O3 Air Unit renders the OSD overlay +without any additional setup. The board has no onboard analog OSD chip and +no SPI bus broken out for one, so analog video OSD is not supported. + +## PWM Output + +The CORVON 743V2 provides 12 motor/servo outputs in four timer groups, plus a +serial-LED output: + +- PWM 1-4 (TIM1, motors): DShot, bidirectional +- PWM 5-6 (TIM3, motors): DShot, bidirectional +- PWM 7-10 (TIM4, motors): DShot, bidirectional on PWM 7-8 (PWM 9-10 output-only) +- PWM 11-12 (TIM12, servos): standard PWM only (no DMA) +- PWM 13 (TIM2): WS2812 serial LED / NeoPixel (see LEDs) + +Bidirectional DShot on outputs 1-8 provides ESC RPM telemetry. Channels in the +same timer group must share the same output rate and DShot mode. + +## LEDs + +The board has a GPIO-driven RGB status LED used by the ArduPilot notify system. + +A WS2812 serial LED (NeoPixel) output is broken out on the +`LED+ / LED_STRIP / LED-` header: `LED+` is 5V, `LED_STRIP` is the data signal +(PWM 13, TIM2_CH1) and `LED-` is ground. It is enabled by default +(`SERVO13_FUNCTION = 120` with the NeoPixel bit set in `NTF_LED_TYPES`), so a +strip lights up out of the box; set `NTF_LED_LEN` to the number of LEDs on your +strip (default 1). + +## GPIOs + +The motor/servo outputs and the four `SW` pads are available as ArduPilot GPIOs +(for relays, PINIO, etc.). `SW1`-`SW4` are general-purpose user pads, not a +dedicated safety switch. + +| Label | GPIO | +|-------|------| +| M1 | 50 | +| M2 | 51 | +| M3 | 52 | +| M4 | 53 | +| M5 | 54 | +| M6 | 55 | +| M7 | 56 | +| M8 | 57 | +| M9 | 58 | +| M10 | 59 | +| M11 | 60 | +| M12 | 61 | +| M13 | 62 | +| SW1 | 70 | +| SW2 | 71 | +| SW3 | 72 | +| SW4 | 73 | + +## Battery Monitoring + +The board has two independent analog battery inputs for voltage and current, +broken out as the `BV`/`BI` pads (BATT1) and `B2V`/`B2I` pads (BATT2), with main +input power on the `B+`/`5VIN` pads. Default parameters: + +- `BATT_MONITOR = 4` (analog voltage and current) +- `BATT_VOLT_PIN = 10`, `BATT_CURR_PIN = 11` +- `BATT_VOLT_MULT = 21.12`, `BATT_AMP_PERVLT = 40.2` +- `BATT2_MONITOR = 4` +- `BATT2_VOLT_PIN = 4`, `BATT2_CURR_PIN = 8` +- `BATT2_VOLT_MULT = 21.12`, `BATT2_AMP_PERVLT = 40.2` + +The voltage and current scales should be tuned to match the specific power +module connected. + +## Analog Inputs + +In addition to the two battery monitors, the board exposes: + +- Analog airspeed input on the `AS` pad (ADC1, analog pin 18; set `ARSPD_TYPE = 2` to enable) +- Analog RSSI input on the `RS` pad (ADC1, `RSSI_ANA_PIN = 3`; set `RSSI_TYPE = 1` to enable) + +## Compass + +The board has a built-in IST8310 magnetometer on the internal I2C2 bus. Users +normally disable this compass and use an external compass to avoid electrical +interference from the power system. External compasses on the GPS +connector (I2C1) are auto-detected via ArduPilot's normal compass probing. + +## CAN + +A single FDCAN1 interface is exposed on the CAN connector for DroneCAN +peripherals. + +## Ports Connector + +![CORVON743V2 Ports Connection](CORVON743V2_PortsConnection.png) + +## Solder Pads + +![CORVON743V2 Solder Pads](CORVON743V2_Pads.png) + +## Loading Firmware + +Firmware images for this board are published under the `CORVON743V2` +sub-folder of [firmware.ardupilot.org](https://firmware.ardupilot.org). + +The board ships with an ArduPilot bootloader, so `*.apj` firmware can be +flashed from any ArduPilot ground station. To update the bootloader itself, +flash `arducopter_with_bl.hex` (or the equivalent for your vehicle type) over +DFU using STM32CubeProgrammer. + +## Building + +```sh +./waf configure --board CORVON743V2 +./waf copter # or plane / rover / sub +``` diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/defaults.parm new file mode 100644 index 0000000000000..3b0a4f6cb1081 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/defaults.parm @@ -0,0 +1,2 @@ +# WS2812 serial LED (NeoPixel) on the LED_STRIP pad (PWM13) +SERVO13_FUNCTION 120 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/hwdef-bl.dat new file mode 100644 index 0000000000000..4c5c376e171f5 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/hwdef-bl.dat @@ -0,0 +1,67 @@ +# hw definition file for processing by chibios_hwdef.py +# bootloader for the CORVON743V2 hardware + +# MCU class and specific type +MCU STM32H7xx STM32H743xx + +# board ID. See Tools/AP_Bootloader/board_types.txt +APJ_BOARD_ID AP_HW_CORVON743V2 + +# crystal frequency +OSCILLATOR_HZ 8000000 + +# flash size +FLASH_SIZE_KB 2048 + +# bootloader is installed at zero offset +FLASH_RESERVE_START_KB 0 + +# the location where the bootloader will put the firmware +FLASH_BOOTLOADER_LOAD_KB 128 + +# order of UARTs (and USB) +SERIAL_ORDER OTG1 USART1 + +# USB +PA11 OTG_FS_DM OTG1 +PA12 OTG_FS_DP OTG1 + +# USART1 - recovery console +PA9 USART1_TX USART1 +PA10 USART1_RX USART1 + +# pins for SWD debugging +PA13 JTMS-SWDIO SWD +PA14 JTCK-SWCLK SWD + +# CS pins held high so the bootloader does not accidentally drive +# the IMU chip selects while bringing the board up. +PA15 ICM42688_CS CS +PD5 BMI088_G_CS CS +PD4 BMI088_A_CS CS + +# Status LEDs (active LOW) - green = activity, blue = bootloader +PE6 LED_ACTIVITY OUTPUT LOW +PE4 LED_BOOTLOADER OUTPUT LOW +define HAL_LED_ON 0 + +# support flashing firmware from a microSD card +define AP_BOOTLOADER_FLASH_FROM_SD_ENABLED 1 +define FATFS_HAL_DEVICE SDCD1 + +# microSD support (SDMMC1, 4-bit) +PC12 SDMMC1_CK SDMMC1 +PD2 SDMMC1_CMD SDMMC1 +PC8 SDMMC1_D0 SDMMC1 +PC9 SDMMC1_D1 SDMMC1 +PC10 SDMMC1_D2 SDMMC1 +PC11 SDMMC1_D3 SDMMC1 + +# FATFS support +define CH_CFG_USE_MEMCORE 1 +define CH_CFG_USE_HEAP 1 +define CH_CFG_USE_SEMAPHORES 0 +define CH_CFG_USE_MUTEXES 1 +define CH_CFG_USE_DYNAMIC 1 +define CH_CFG_USE_WAITEXIT 1 +define CH_CFG_USE_REGISTRY 1 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/hwdef.dat new file mode 100644 index 0000000000000..fdf99adab7132 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/CORVON743V2/hwdef.dat @@ -0,0 +1,208 @@ +# hw definition file for processing by chibios_hwdef.py +# CORVON 743V2 - STM32H743VIH6 (TFBGA100, 2 MB Flash, 1 MB RAM) + +# MCU class and specific type +MCU STM32H7xx STM32H743xx + +# board ID. See Tools/AP_Bootloader/board_types.txt +APJ_BOARD_ID AP_HW_CORVON743V2 + +# crystal frequency +OSCILLATOR_HZ 8000000 + +# core clock (H743 rev V runs at 480 MHz) +MCU_CLOCKRATE_MHZ 480 + +# flash size +FLASH_SIZE_KB 2048 + +# bootloader takes first 128 KB +FLASH_RESERVE_START_KB 128 + +# parameter storage: HAL_STORAGE_SIZE 32 KB in flash sector 14 (H7 sectors are 128 KB) +define HAL_STORAGE_SIZE 32768 +STORAGE_FLASH_PAGE 14 + +DEFAULTGPIO OUTPUT LOW PULLDOWN + +# order of UARTs (and USB) +SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 UART5 USART6 UART7 UART8 + +# USB +PA11 OTG_FS_DM OTG1 +PA12 OTG_FS_DP OTG1 + +# USART1 - TELEM1 +PA9 USART1_TX USART1 +PA10 USART1_RX USART1 + +# USART2 - DJI O4 Air Unit (MSP DisplayPort) +PA2 USART2_TX USART2 +PA3 USART2_RX USART2 + +# USART3 - GPS1 +PD8 USART3_TX USART3 +PD9 USART3_RX USART3 + +# UART4 - TELEM2 (companion computer) +PA0 UART4_TX UART4 +PA1 UART4_RX UART4 + +# UART5 - user aux +PB13 UART5_TX UART5 +PB12 UART5_RX UART5 + +# USART6 - RC input (SBUS / CRSF / ELRS) +PC6 USART6_TX USART6 +PC7 USART6_RX USART6 + +# UART7 - ESC telemetry by default (full duplex) +PE8 UART7_TX UART7 +PE7 UART7_RX UART7 + +# UART8 - Bluetooth module +PE1 UART8_TX UART8 +PE0 UART8_RX UART8 + +# default protocols +define DEFAULT_SERIAL2_PROTOCOL SerialProtocol_MSP_DisplayPort +define DEFAULT_SERIAL4_PROTOCOL SerialProtocol_MAVLink2 +define DEFAULT_SERIAL6_PROTOCOL SerialProtocol_RCIN +define DEFAULT_SERIAL7_PROTOCOL SerialProtocol_ESCTelemetry +define DEFAULT_SERIAL8_PROTOCOL SerialProtocol_MAVLink2 + +# UART8 Bluetooth modules typically pair at 115200 +define DEFAULT_SERIAL8_BAUD 115 + +# OSD via MSP DisplayPort on USART2 for DJI O4 / O3 air units +define OSD_ENABLED 1 +define HAL_OSD_TYPE_DEFAULT 5 + +# pins for SWD debugging +PA13 JTMS-SWDIO SWD +PA14 JTCK-SWCLK SWD + +# CAN1 (FDCAN1) - DroneCAN +PB8 CAN1_RX CAN1 +PB9 CAN1_TX CAN1 + +# I2C buses - onboard sensors on I2C2, external on I2C1. +# Internal pull-ups back up the weak on-board pull-ups. +I2C_ORDER I2C2 I2C1 +PB6 I2C1_SCL I2C1 PULLUP +PB7 I2C1_SDA I2C1 PULLUP +PB10 I2C2_SCL I2C2 PULLUP +PB11 I2C2_SDA I2C2 PULLUP + +# I2C2 is the internal bus (on-board BMP581 baro + IST8310 compass) +define HAL_I2C_INTERNAL_MASK 1 + +# RGB status LEDs (active LOW) +PE5 LED_RED OUTPUT LOW GPIO(0) +PE6 LED_GREEN OUTPUT LOW GPIO(1) +PE4 LED_BLUE OUTPUT LOW GPIO(2) + +define AP_NOTIFY_GPIO_LED_RGB_RED_PIN 0 +define AP_NOTIFY_GPIO_LED_RGB_GREEN_PIN 1 +define AP_NOTIFY_GPIO_LED_RGB_BLUE_PIN 2 +define AP_NOTIFY_GPIO_LED_RGB_ENABLED 1 + +# 10 motor outputs (TIM1/3/4) + 2 servos (TIM12, NODMA). +# Bidirectional DShot on outputs 1-8; each timer pair (CH1/CH2, CH3/CH4) shares +# one input-capture DMA, so only one channel per pair is tagged BIDIR. +# PWM9-10 are output-only (TIM4_CH4 has no DMAMUX request). +PE9 TIM1_CH1 TIM1 PWM(1) GPIO(50) BIDIR +PE11 TIM1_CH2 TIM1 PWM(2) GPIO(51) +PE13 TIM1_CH3 TIM1 PWM(3) GPIO(52) BIDIR +PE14 TIM1_CH4 TIM1 PWM(4) GPIO(53) +PB0 TIM3_CH3 TIM3 PWM(5) GPIO(54) BIDIR +PB1 TIM3_CH4 TIM3 PWM(6) GPIO(55) +PD12 TIM4_CH1 TIM4 PWM(7) GPIO(56) BIDIR +PD13 TIM4_CH2 TIM4 PWM(8) GPIO(57) +PD14 TIM4_CH3 TIM4 PWM(9) GPIO(58) +PD15 TIM4_CH4 TIM4 PWM(10) GPIO(59) +PB14 TIM12_CH1 TIM12 PWM(11) GPIO(60) NODMA +PB15 TIM12_CH2 TIM12 PWM(12) GPIO(61) NODMA + +# buzzer (passive piezo) on TIM14_CH1 +PA7 TIM14_CH1 TIM14 GPIO(77) ALARM + +# WS2812 serial LED (NeoPixel) on TIM2_CH1 (TIM2 free; system timer is TIM5) +PA5 TIM2_CH1 TIM2 PWM(13) GPIO(62) +# enable NeoPixel in the notify LED types by default (455 = board + I2C LEDs + NeoPixel) +define DEFAULT_NTF_LED_TYPES 455 + +# user GPIO pads SW1-4 (general PINIO / relay; not a dedicated safety switch) +PD0 SW1 OUTPUT LOW GPIO(70) +PA8 SW2 OUTPUT LOW GPIO(71) +PD1 SW3 OUTPUT LOW GPIO(72) +PE2 SW4 OUTPUT LOW GPIO(73) + +# ADC: dual battery + analog airspeed + analog RSSI +PC0 BATT_VOLTAGE_SENS ADC1 SCALE(1) +PC1 BATT_CURRENT_SENS ADC1 SCALE(1) +PC4 BATT2_VOLTAGE_SENS ADC1 SCALE(1) +PC5 BATT2_CURRENT_SENS ADC1 SCALE(1) +PA4 AIRSPEED_ADC ADC1 SCALE(1) +PA6 RSSI_ADC_PIN ADC1 SCALE(1) + +define HAL_BATT_MONITOR_DEFAULT 4 +define HAL_BATT_VOLT_PIN 10 +define HAL_BATT_CURR_PIN 11 + +# default ARSPD_PIN so analog airspeed works without manual ARSPD_PIN setup +define HAL_DEFAULT_AIRSPEED_PIN 18 +define HAL_BATT_VOLT_SCALE 21.12 +define HAL_BATT_CURR_SCALE 40.2 +define HAL_BATT2_MONITOR_DEFAULT 4 +define HAL_BATT2_VOLT_PIN 4 +define HAL_BATT2_CURR_PIN 8 +define HAL_BATT2_VOLT_SCALE 21.12 +define HAL_BATT2_CURR_SCALE 40.2 +define BOARD_RSSI_ANA_PIN 3 + +# microSD (SDMMC1, 4-bit) - onboard logging +PC12 SDMMC1_CK SDMMC1 +PD2 SDMMC1_CMD SDMMC1 +PC8 SDMMC1_D0 SDMMC1 +PC9 SDMMC1_D1 SDMMC1 +PC10 SDMMC1_D2 SDMMC1 +PC11 SDMMC1_D3 SDMMC1 +define FATFS_HAL_DEVICE SDCD1 +define HAL_OS_FATFS_IO 1 + +# SPI3 - IMU bus +PB3 SPI3_SCK SPI3 +PB4 SPI3_MISO SPI3 +PB5 SPI3_MOSI SPI3 + +# IMU chip selects +PA15 ICM42688_CS CS +PD5 BMI088_G_CS CS +PD4 BMI088_A_CS CS + +# IMU data-ready interrupts +PD10 ICM42688_DRDY INPUT +PD11 BMI088_G_DRDY INPUT +PD6 BMI088_A_DRDY INPUT + +# SPI device registration +SPIDEV icm42688p SPI3 DEVID1 ICM42688_CS MODE3 2*MHZ 16*MHZ +SPIDEV bmi088_g SPI3 DEVID2 BMI088_G_CS MODE3 10*MHZ 10*MHZ +SPIDEV bmi088_a SPI3 DEVID3 BMI088_A_CS MODE3 10*MHZ 10*MHZ + +# IMUs +IMU Invensensev3 SPI:icm42688p ROTATION_ROLL_180_YAW_90 +IMU BMI088 SPI:bmi088_a SPI:bmi088_g ROTATION_ROLL_180_YAW_90 + +# onboard compass - IST8310 on internal I2C2 at 0x0E, YAW_90 (matches CORVON743V1) +define AP_COMPASS_IST8310_INTERNAL_BUS_PROBING_ENABLED 0 +define AP_COMPASS_PROBING_ENABLED 1 +COMPASS IST8310 I2C:ALL_EXTERNAL:0x0E true ROTATION_NONE +COMPASS IST8310 I2C:ALL_INTERNAL:0x0E false ROTATION_YAW_90 + +# onboard barometer - BMP581 on I2C2 at 0x46 +BARO BMP581 I2C:0:0x46 + +# build ABIN for the microSD bootloader flashing path enabled in hwdef-bl.dat +env BUILD_ABIN True diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CUAV-Pixhack-v3/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CUAV-Pixhack-v3/hwdef.dat index 99497e032ddd9..b56325dd5ef3c 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CUAV-Pixhack-v3/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CUAV-Pixhack-v3/hwdef.dat @@ -1,3 +1,6 @@ -include ../fmuv3/hwdef.dat +include ../fmuv3/fmuv3.inc + +# does this board really have an IMU heater? If so set HAL_IMU_TEMP_DEFAULT. +define HAL_HAVE_IMU_HEATER 1 USE_BOOTLOADER_FROM_BOARD fmuv3 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubeBlack/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeBlack/hwdef.dat index 83b64c1eb68f9..284bdbd7be678 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubeBlack/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeBlack/hwdef.dat @@ -2,7 +2,10 @@ # for The CUBE Black and the Cube Purple hardware # this is based on fmuv3, but with vendor specific USB IDs -include ../fmuv3/hwdef.dat +include ../fmuv3/fmuv3.inc + +# does this board really have an IMU heater? If so set HAL_IMU_TEMP_DEFAULT. +define HAL_HAVE_IMU_HEATER 1 # if the user has both isolated sensors enabled then force-enable the # non-isolated IMU regardless of parameter setting. This is done in diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubePurple/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubePurple/hwdef.dat index 622588688864a..7bca12456cdc4 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubePurple/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubePurple/hwdef.dat @@ -2,7 +2,10 @@ # for The CUBE Black and the Cube Purple hardware # this is based on fmuv3, but with vendor specific USB IDs -include ../fmuv3/hwdef.dat +include ../fmuv3/fmuv3.inc + +# does this board really have an IMU heater? If so set HAL_IMU_TEMP_DEFAULT. +define HAL_HAVE_IMU_HEATER 1 # USB setup USB_VENDOR 0x2DAE # ONLY FOR USE BY HEX! NOBODY ELSE diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubeSolo/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeSolo/hwdef.dat index 2fdc028dffbd3..ca5b35b76999c 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubeSolo/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeSolo/hwdef.dat @@ -3,7 +3,10 @@ # this is based on the FMUv3 hwdef, with Solo's required parameter defaults # do not use this hwdef for any other vehicle or configuration -include ../fmuv3/hwdef.dat +include ../fmuv3/fmuv3.inc + +# does this board really have an IMU heater? If so set HAL_IMU_TEMP_DEFAULT. +define HAL_HAVE_IMU_HEATER 1 define BOARD_TYPE_DEFAULT 3 # FMUv3 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/PixSurveyA1/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/PixSurveyA1/hwdef.dat index b534b7c47f560..d87e77b337395 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/PixSurveyA1/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/PixSurveyA1/hwdef.dat @@ -1,6 +1,9 @@ # hw definition file for processing by chibios_hwdef.py # for MFE-V3, based on fmuv3 -include ../fmuv3/hwdef.dat +include ../fmuv3/fmuv3.inc + +# IMU heater +define HAL_HAVE_IMU_HEATER 1 APJ_BOARD_ID AP_HW_PixSurveyA1 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1-1M-bdshot/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1-1M-bdshot/hwdef.dat index 9b56d31a809be..d928a9f116eb6 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1-1M-bdshot/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1-1M-bdshot/hwdef.dat @@ -2,7 +2,7 @@ # for Pixhawk1-1M, based on Pixhawk1 -include ../fmuv3-bdshot/hwdef.dat +include ../fmuv3-bdshot/fmuv3-bdshot.inc # define the IMU types to probe. You can list more IMUs than you # actually have. The syntax for IMU declarations is: diff --git a/libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1-bdshot/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1-bdshot/hwdef.dat index 7695ff784aec6..ba8665d71fc13 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1-bdshot/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1-bdshot/hwdef.dat @@ -1,6 +1,6 @@ # hw definition file for processing by chibios_hwdef.py -include ../fmuv3-bdshot/hwdef.dat +include ../fmuv3-bdshot/fmuv3-bdshot.inc # define the IMU types to probe. You can list more IMUs than you # actually have. The syntax for IMU declarations is: diff --git a/libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1/hwdef.dat index 85a707b039c01..11e514fdbeaf6 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/Pixhawk1/hwdef.dat @@ -1,7 +1,7 @@ # hw definition file for processing by chibios_hwdef.py # for pixhawk1, based on fmuv3 -include ../fmuv3/hwdef.dat +include ../fmuv3/fmuv3.inc # define the IMU types to probe. You can list more IMUs than you # actually have. The syntax for IMU declarations is: diff --git a/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/LucidH7Bottom.jpeg b/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/LucidH7Bottom.jpeg new file mode 100755 index 0000000000000..d4bc1963bf2fc Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/LucidH7Bottom.jpeg differ diff --git a/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/LucidH7Top.jpeg b/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/LucidH7Top.jpeg new file mode 100755 index 0000000000000..7ad5fd3d429e9 Binary files /dev/null and b/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/LucidH7Top.jpeg differ diff --git a/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/README.md b/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/README.md new file mode 100644 index 0000000000000..762e2643ca0ed --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/README.md @@ -0,0 +1,160 @@ +# TBS LUCID H7 OEM Flight Controller + +The TBS LUCID H7 OEM is a flight controller produced by [TBS](https://www.team-blacksheep.com/). +It is a board-to-board variant of the TBS LUCID H7 (D2FCAP schematic) intended +for OEM integrators: electrically compatible with the TBS LUCID H7, but with +the on-board MAX7456 analog OSD replaced by a dedicated on-board STM32G431 +co-processor that generates the analog video from MSP DisplayPort frames +supplied by the flight MCU over a UART link. + +## Features + +- MCU - STM32H743 32-bit processor running at 480 MHz +- IMU - Dual MPU6000 (boards may alternatively be populated with dual ICM42688; both are probed at boot) +- Barometer - DPS368 or BMP390 (either/or; both variants are probed at boot) +- OSD - On-board STM32G431 analog OSD driven by MSP DisplayPort over UART5 +- microSD card slot +- 8x UARTs (including the internal OSD link) +- CAN support +- 13x PWM Outputs (12 Motor Output, 1 LED) +- Battery input voltage: 2S-8S (VBAT\_SENSE); second analog battery monitor rated for up to 12S +- BEC 3.3V (MCU + sensors) +- BEC 5V +- BEC 9V for video, GPIO controlled, pinned out on HD VTX connector +- Switchable VSW rail, GPIO controlled on/off +- Dual switchable camera inputs +- Connector: 2x DF40C-60DP-0.4V board-to-board (BACK/FRONT) + +## Pinout + +The images below are the standard TBS LUCID H7 pinout, shown here as a +reference until OEM-specific images are available. The board-to-board +connector pinouts are unchanged from the standard board. + +![TBS LUCID H7 Board Top](LucidH7Top.jpeg "TBS LUCID H7 Top") +![TBS LUCID H7 Board Bottom](LucidH7Bottom.jpeg "TBS LUCID H7 Bottom") + +## UART Mapping + +The UARTs are marked Rn and Tn in the board documentation. The Rn pin is the +receive pin for UARTn. The Tn pin is the transmit pin for UARTn. + +- SERIAL0 -> USB (MAVLink2) +- SERIAL1 -> UART1 (RX1 is SBUS in HD VTX connector) +- SERIAL2 -> UART2 (GPS, DMA-enabled) +- SERIAL3 -> UART3 (DisplayPort to external HD VTX, DMA-enabled) +- SERIAL4 -> UART4 (MAVLink2, Telem1) +- SERIAL5 -> UART5 (DisplayPort to on-board analog OSD co-processor, internal-only, DMA-enabled) +- SERIAL6 -> UART6 (RC Input, DMA-enabled) +- SERIAL7 -> UART7 (MAVLink2, Telem2, DMA and flow-control enabled) +- SERIAL8 -> UART8 (ESC Telemetry, RX8 on ESC connector for telem) + +SERIAL5 is hard-wired to the on-board STM32G431 analog-OSD MCU and should not +be reassigned unless the analog OSD is being disabled entirely. + +## RC Input + +RC input is configured by default via the USART6 RX input. It supports all serial RC protocols except PPM. + +Note: If the receiver is FPort the receiver must be tied to the USART6 TX pin, RSSI\_TYPE set to 3, +and SERIAL6\_OPTIONS must be set to 7 (invert TX/RX, half duplex). For full duplex like CRSF/ELRS use both +RX6 and TX6 and set RSSI\_TYPE also to 3. + +If SBUS is used on the HD VTX connector (DJI TX), then SERIAL1\_PROTOCOL should be set to "23" and SERIAL6\_PROTOCOL changed to something else. + +## FrSky Telemetry + +FrSky Telemetry is supported using an unused UART, such as the T1 pin (UART1 transmit). +You need to set the following parameters to enable support for FrSky S.PORT: + +- SERIAL1\_PROTOCOL 10 +- SERIAL1\_OPTIONS 7 + +## OSD Support + +Unlike the TBS LUCID H7, the OEM variant does **not** have a MAX7456 on SPI2. +Instead, analog video is generated by an on-board STM32G431 co-processor that +receives MSP DisplayPort frames from the flight MCU over UART5. The default +OSD configuration is therefore: + +- OSD\_TYPE 5 (MSP DisplayPort) - drives the on-board analog OSD via SERIAL5 +- OSD\_TYPE2 5 (MSP DisplayPort) - additionally drives an external HD VTX via SERIAL3 + +Both outputs render the same OSD layout simultaneously, so a ground analog +receiver and an HD goggle can be used together with no additional setup. + +## PWM Output + +The TBS LUCID H7 OEM supports up to 13 PWM or DShot outputs. The pads for +motor output M1 to M4 are provided on the motor connector, with M5-M12 and +an LED strip output on separate pads. + +The PWM is in 6 groups: + +- PWM 1-2 in group1 +- PWM 3-4 in group2 +- PWM 5-8 in group3 +- PWM 9-10 in group4 +- PWM 11-12 in group5 +- PWM 13 in group6 (Serial LED by default) + +Channels within the same group need to use the same output rate. If +any channel in a group uses DShot then all channels in the group need +to use DShot. Channels 1-10 support bi-directional DShot. + +## Battery Monitoring + +The board has a built-in voltage sensor and external current sensor input. The voltage sensor can handle up to 8S +LiPo batteries on the primary input. + +The default battery parameters are: + +- BATT\_MONITOR 4 +- BATT\_VOLT\_PIN 10 +- BATT\_CURR\_PIN 11 +- BATT\_VOLT\_MULT 11.0 +- BATT\_AMP\_PERVLT 40 + +Pads for a second analog battery monitor are provided. The second input uses +a 20K:1K divider and can measure up to 12S. To use: + +- BATT2\_MONITOR 4 +- BATT2\_VOLT\_PIN 18 +- BATT2\_CURR\_PIN 7 +- BATT2\_VOLT\_MULT 21.0 +- BATT2\_AMP\_PERVLT as required + +## Analog RSSI and AIRSPEED inputs + +Analog RSSI uses RSSI\_PIN 8 +Analog Airspeed sensor would use ARSPD\_PIN 4 + +## CAN + +The board has a CAN port for DroneCAN peripherals such as GPS, compass, airspeed, and rangefinder. + +## Compass + +The TBS LUCID H7 OEM does not have a builtin compass, but you can attach an external compass using I2C on the SDA and SCL pads. + +## VTX power control + +GPIO 81 controls the VSW pins which can be switched on/off in firmware. Setting this GPIO low removes voltage supply to those pins. RELAY2 is configured by default to control this GPIO and is high by default. + +GPIO 83 controls the VTX BEC output to pins marked "9V" and is included on the HD VTX connector. Setting this GPIO low removes voltage supply to this pin/pad. By default RELAY4 is configured to control this pin and sets the GPIO high. + +## Camera control + +GPIO 82 controls the camera output to the connectors marked "CAM1" and "CAM2". Setting this GPIO low switches the video output from CAM1 to CAM2. By default RELAY3 is configured to control this pin and sets the GPIO high. + +## Loading Firmware + +Firmware for this board can be found on the ArduPilot firmware server in sub-folders labeled "TBS\_LUCID\_H7\_OEM". + +Initial firmware load can be done with DFU by plugging in USB with the +bootloader button pressed. Then you should load the "with\_bl.hex" +firmware, using your favourite DFU loading tool. + +Once the initial firmware is loaded you can update the firmware using +any ArduPilot ground station software. Updates should be done with the +\*.apj firmware files. diff --git a/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/defaults.parm new file mode 100644 index 0000000000000..1847c6b17cfde --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/defaults.parm @@ -0,0 +1,10 @@ +# setup for LEDs on chan13 +SERVO13_FUNCTION 120 +# Default to CAM1 +RELAY3_DEFAULT 1 +# Default VTX power to on +RELAY4_DEFAULT 1 +# Default VSW power to on +RELAY2_DEFAULT 1 +# Support HD VTX in parallel with the on-board analog OSD +OSD_TYPE2 5 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/hwdef-bl.dat new file mode 100644 index 0000000000000..63490463860fb --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/hwdef-bl.dat @@ -0,0 +1,12 @@ +# bootloader hw definition for TBS_LUCID_H7_OEM +# Derived from TBS_LUCID_H7 bootloader; the only differences are the +# board ID and that PB12 is no longer a MAX7456 chip-select. + +include ../TBS_LUCID_H7/hwdef-bl.dat + +undef APJ_BOARD_ID +APJ_BOARD_ID AP_HW_TBS_LUCID_H7_OEM + +# OEM depopulates the MAX7456; drop its CS pin definition from the +# bootloader (it was only held high there to avoid bus contention). +undef PB12 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/hwdef.dat new file mode 100644 index 0000000000000..7337efeae5544 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/TBS_LUCID_H7_OEM/hwdef.dat @@ -0,0 +1,70 @@ +# hw definition file for processing by chibios_pins.py +# for TBS FCAPv1 H743 OEM variant (D2FCAP schematic) +# +# This board is derived from TBS_LUCID_H7. The OEM variant differs in that +# it does NOT have an on-board MAX7456 analog OSD on SPI2. Instead, analog +# OSD is generated by an on-board STM32G431 co-processor that receives +# MSP DisplayPort frames from the flight MCU over UART5. The freed SPI2 +# pins (PB12/PB13) are repurposed as UART5_RX/UART5_TX, while PB14/PB15 +# are routed to the IMU CLKIN pins (not driven by firmware; the IMUs use +# their internal oscillators). +# +# Only the differences from TBS_LUCID_H7 are defined below; everything +# else is inherited via the include. + +include ../TBS_LUCID_H7/hwdef.dat + +# ---------------- Board ID -------------------- +undef APJ_BOARD_ID +APJ_BOARD_ID AP_HW_TBS_LUCID_H7_OEM + +# ---------------- OSD: remove MAX7456 on SPI2 ---------------- +# OEM depopulates the MAX7456 and frees SPI2. Remove the SPIDEV entry and +# the pin definitions for SPI2 and the MAX7456 chip select. +undef osd +undef PB12 PB13 PB14 PB15 +undef PB0 PB1 PA0 PA1 PA2 PA3 PD12 PD13 PD14 PD15 +undef SPI2 + +PA0 TIM2_CH1 TIM2 PWM(1) GPIO(50) BIDIR +PA1 TIM2_CH2 TIM2 PWM(2) GPIO(51) +PA2 TIM5_CH3 TIM5 PWM(3) GPIO(52) BIDIR +PA3 TIM5_CH4 TIM5 PWM(4) GPIO(53) +PD12 TIM4_CH1 TIM4 PWM(5) GPIO(54) BIDIR +PD13 TIM4_CH2 TIM4 PWM(6) GPIO(55) +PD14 TIM4_CH3 TIM4 PWM(7) GPIO(56) BIDIR +PD15 TIM4_CH4 TIM4 PWM(8) GPIO(57) +PB0 TIM3_CH3 TIM3 PWM(9) GPIO(58) BIDIR +PB1 TIM3_CH4 TIM3 PWM(10) GPIO(59) + +# Default analog OSD is now MSP DisplayPort (driven by the on-board G431) +undef HAL_OSD_TYPE_DEFAULT +define HAL_OSD_TYPE_DEFAULT 5 + +# ---------------- UART5 on PB12/PB13 (OSD co-processor link) -------- +# PB12 = UART5_RX, PB13 = UART5_TX to the STM32G431 analog-OSD MCU. +PB12 UART5_RX UART5 +PB13 UART5_TX UART5 + +# PB14/PB15 are wired to IMU1/IMU2 CLKIN for optional sample-sync; the +# firmware does not drive them, so they are left unconfigured. + +# ---------------- Serial order ----------------- +# Replace the EMPTY SERIAL5 slot with UART5 so the OSD link is reachable +# as SERIAL5; the remainder of the order is unchanged from TBS_LUCID_H7. +undef SERIAL_ORDER +SERIAL_ORDER OTG1 USART1 USART2 USART3 UART4 UART5 USART6 UART7 UART8 OTG2 +define DEFAULT_SERIAL5_PROTOCOL SerialProtocol_MSP_DisplayPort + +# ---------------- Barometer ----------------- +# The OEM board has footprints for either DPS368 (DPS310 driver) or BMP390 +# (BMP388 driver) at I2C 0x76 on I2C2; only one is populated per build. +# The DPS310 probe is inherited from the base hwdef; add the BMP388 probe +# so either variant is detected at runtime. +BARO BMP388 I2C:0:0x76 + +# ---------------- Battery 2 scale ----------------- +# Vbat2 uses a 200K:10K (21:1) divider per the D2FCAP schematic; the base +# hwdef inherits an 11:1 scale, so override it here for a correct reading. +undef HAL_BATT2_VOLT_SCALE +define HAL_BATT2_VOLT_SCALE 21.0 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/fmuv2/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/fmuv2/hwdef.dat index d336bbb50b19c..9432d6ddfc670 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/fmuv2/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/fmuv2/hwdef.dat @@ -1,7 +1,7 @@ # FMUv2 build, same as fmuv3, but 1M flash to avoid hardware issue # with 2nd half of flash on early STM32F427 chips -include ../fmuv3/hwdef.dat +include ../fmuv3/fmuv3.inc FLASH_SIZE_KB 1024 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/fmuv3-bdshot/fmuv3-bdshot.inc b/libraries/AP_HAL_ChibiOS/hwdef/fmuv3-bdshot/fmuv3-bdshot.inc new file mode 100644 index 0000000000000..5eb58eb2559db --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/fmuv3-bdshot/fmuv3-bdshot.inc @@ -0,0 +1,38 @@ +# FMUv3 with bi-directional dshot. +# +# This includes the common FMUv3 configuration and overrides only the +# parts which differ for bi-directional dshot: the motor timers gain +# BIDIR/NODMA, SPI4 (and its devices) is freed up to release the DMA +# streams that dshot needs, and the DMA priorities are adjusted. + +include ../fmuv3/fmuv3.inc + +# the motor outputs use bi-directional dshot: +undef PE13 PE11 PD13 PD14 +PE13 TIM1_CH3 TIM1 PWM(2) GPIO(51) BIDIR +PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) BIDIR +PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) NODMA +PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55) NODMA + +# free up SPI4 and its devices to release DMA streams for dshot: +undef SPI4 +undef ms5611_ext mpu9250_ext icm20948_ext lsm9ds0_ext_g lsm9ds0_ext_am icm20602_ext +undef external0m0 external0m1 external0m2 external0m3 pixartPC15 + +# DMA priorities for bi-directional dshot: +DMA_PRIORITY TIM1_CH3 TIM1_CH2 TIM1_UP USART6* ADC1* SDIO* SPI* + +# The standalone fmuv3-bdshot definition never carried the Solo-specific, +# 1M-flash-check or external IST8310 probing defines that fmuv3 has, so +# remove them to keep behaviour identical now that we inherit fmuv3: + +# Solo-specific: +undef AP_NOTIFY_OREOLED_ENABLED +undef HAL_SOLO_GIMBAL_ENABLED +undef AP_BATTERY_SMBUS_SOLO_ENABLED + +# 1M-flash check: +undef BOARD_CHECK_F427_USE_1M + +# external IST8310 compass probing: +undef AP_COMPASS_IST8310_EXTERNAL_BUS_PROBING_ENABLED diff --git a/libraries/AP_HAL_ChibiOS/hwdef/fmuv3-bdshot/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/fmuv3-bdshot/hwdef.dat index bbe8cdc1ec158..434e79ad33d7f 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/fmuv3-bdshot/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/fmuv3-bdshot/hwdef.dat @@ -1,461 +1,11 @@ # hw definition file for processing by chibios_hwdef.py -# for FMUv3 hardware (ie. for Pixhawk1, Pixhawk2 cube, XUAV2.1 etc) +# for FMUv3 hardware (ie. for Pixhawk1, Pixhawk2 cube, XUAV2.1 etc) with +# bi-directional dshot -# This hwdef.dat file contains a lot of comments so it can act as a -# reference for developers adding new boards. +# the bulk of the configuration lives in fmuv3-bdshot.inc so that it can +# be shared by boards which are based on it but do not share all of its +# hardware (eg. the presence of an IMU heater). +include fmuv3-bdshot.inc -# The hwdef.dat file defines all the hardware peripherals and pins for -# a port of ArduPilot to a board using the ChibiOS HAL. You should be -# able to write the hwdef.dat file for a new board with just the -# schematic for the board. - -# This file is processed by chibios_hwdef.py to create hwdef.h for -# this board. You may find it useful to run chibios_hwdef.py manually -# when building this file for a new board. The resulting hwdef.h file -# is formatted to make it quite readable. It is strongly suggested -# that you read the resulting hwdef.h file when porting to a new board -# to make sure it has resulted in what you want. - -# You should read this file in conjunction with the schematic for your -# board, the datasheet for the MCU for your board and the python -# tables file that we have extracted from the datasheet for your -# MCU. The python tables file is particularly important, so if you -# haven't seen it before go and look at it now. For the STM32F427 it -# it called STM32F427xx.py and it is in the hwdef/script/ directory -# inside the HAL_ChibiOS directory. That file tells you what each pin -# can do (the alternate functions table) and what DMA channels can be -# used for each peripheral type. The alternative functions table is -# particularly useful when doing a new hwdef.dat file as you can work -# out peripheral numbers given a port/pin name. - -# We need to start off by saying what main CPU is on the board. There -# are two CPU identifiers that you need to specify. The first is the -# ChibiOS MCU type. So far we only support STM32F4xx for all STM32F4 -# board types. In the future we will add F7 and other MCU types -# The second string needs to match the name of a config file in the -# libraries/AP_HAL_ChibiOS/hwdef/script directory. In this case we are -# using a F427 MCU, so we select STM32F427xx to match the -# STM32F427xx.py file in the script directory. If you are supporting a -# board type that doesn't have a python hardware database file yet -# then you will need to create one. There are scripts in the scripts -# directory to help with that by parsing the STM32 datasheets to -# extract the required DMA and alternate function tables. - -# MCU class and specific type -MCU STM32F4xx STM32F427xx - -# Now we need to specify the APJ_BOARD_ID. This is the ID that the -# bootloader presents to GCS software so it knows if this firmware is -# suitable for the board. Please see -# https://github.com/ArduPilot/Bootloader/blob/master/hw_config.h for -# a list of current board IDs. If you add a new board type then please -# get it added to that repository so we don't get conflicts. - -# Note that APJ is "ArduPilot JSON Firmware Format". - -# board ID. See Tools/AP_Bootloader/board_types.txt -APJ_BOARD_ID TARGET_HW_CUBE_F4 - -# Now you need to say what crystal frequency you have for this -# board. All of the clocks are scaled against this. Typical values are -# 24000000 or 8000000. - -# crystal frequency -OSCILLATOR_HZ 24000000 - -# On some boards you will need to also set the various PLL values. See -# the defaults in common/mcuconf.h, and use the define mechanism -# explained later in this file to override values suitable for your -# board. Refer to your MCU datasheet or examples from supported boards -# in ChibiOS for the right values. - -# Now define the voltage the MCU runs at. This is needed for ChibiOS -# to set various internal driver limits. It is in 0.01 volt units. - - -# This is the STM32 timer that ChibiOS will use for the low level -# driver. This must be a 32 bit timer. We currently only support -# timers 2, 3, 4, 5 and 21. See hal_st_lld.c in ChibiOS for details. - -# ChibiOS system timer -STM32_ST_USE_TIMER 5 - -# Now the size of flash in kilobytes, for creating the ld.script. - -# flash size -FLASH_SIZE_KB 2048 - -# Now define which UART is used for printf(). We rarely use printf() -# in ChibiOS, so this is really only for debugging very early startup -# in drivers. - -# Serial port for stdout. This is optional. If you leave it out then -# output from printf() lines will go to the ArduPilot console, which is the -# first UART in the SERIAL_ORDER list. But note that some startup code -# runs before USB is set up. -# The value for STDOUT_SERIAL is a serial device name, and must be for a -# serial device for which pins are defined in this file. For example, SD7 -# is for UART7 (SD7 == "serial device 7" in ChibiOS). -#STDOUT_SERIAL SD7 -#STDOUT_BAUDRATE 57600 - -# Now the USB setup, if you have USB. All of these settings are -# option, and the ones below are the defaults. It ends up creating a -# USB ID on Linux like this: -# /dev/serial/by-id/usb-ArduPilot_fmuv3_3E0031000B51353233343932-if00 -# If creating a board for a RTF vehicle you may wish to customise these. - -# USB setup -USB_STRING_MANUFACTURER "ArduPilot" - -# Now define the order that I2C buses are presented in the hal.i2c API -# in ArduPilot. For historical reasons inherited from HAL_PX4 the -# 'external' I2C bus should be bus 1 in hal.i2c, and internal I2C bus -# should be bus 0. On fmuv3 the STM32 I2C1 is our external bus and -# I2C2 is our internal bus, so we need to setup the order as I2C2 -# followed by I2C1 in order to achieve the conventional order that -# drivers expect. - -# order of I2C buses -I2C_ORDER I2C2 I2C1 - -# Now the serial ordering. These map to the SERIALn_ parameter numbers -# If you use a shorter list then HAL_Empty::UARTDriver -# objects are substituted for later UARTs, or you can leave a gap by -# listing one or more of the uarts as EMPTY. - -# The normal usage of this ordering is: -# 1) SERIAL0: console (primary mavlink, usually USB) -# 2) SERIAL1: telem1 -# 3) SERIAL2: telem2 -# 4) SERIAL3: primary GPS -# 5) SERIAL4: GPS2 -# 6) SERIAL5: extra UART (usually RTOS debug console) - -# order of UARTs (and USB) -SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7 - -# If the board has an IOMCU connected via a UART then this defines the -# UART to talk to that MCU. Leave it out for boards with no IOMCU. - -# UART for IOMCU -IOMCU_UART USART6 - -# Now we start on the pin definitions. Every pin used by ArduPilot -# needs to be in this file. The pins in this file can be defined in any order. - -# The format is P+port+pin. So PC4 is portC pin4. -# For every pin the second column is the label. If this is a -# peripheral that has an alternate function defined in the STM32 -# datasheet then the label must be the name of that alternative -# function. The names are looked up in the python database for this -# MCU. Please see STM32F427xx.py for the F427 database. That database -# is used to automatically fill in the alternative function (and later -# for the DMA channels). - -# The third column is the peripheral type. This must be one of the -# following: UARTn, USARTn, OTGn, SPIn, I2Cn, ADCn, TIMn, SWD, SDIO, -# INPUT, OUTPUT, CS. - -# The fourth and later columns are for modifiers on the pin. The -# possible modifiers are: -# pin speed: SPEED_VERYLOW, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH -# pullup: PULLUP, PULLDOWN, FLOATING -# out type: OPENDRAIN, PUSHPULL -# default value: LOW, HIGH - -# Additionally, each class of pin peripheral can have extra modifiers -# suitable for that pin type. For example, for an OUTPUT you can map -# it to a GPIO number in hal.gpio using the GPIO(n) modifier. For ADC -# inputs you can apply a scaling factor (to bring it to unit volts) -# using the SCALE(x) modifier. See the examples below for more -# modifiers, or read the python code in chibios_hwdef.py. - -# Now we define UART4 which is for the GPS. Be careful -# of the difference between USART and UART. Check the STM32F427xx.py -# if unsure which it is. For a UART we need to specify at least TX and -# RX pins. - -# UART4 serial GPS -PA0 UART4_TX UART4 -PA1 UART4_RX UART4 - -# Now define the primary battery connectors. The labels we choose here -# are used to create defines for pins in the various drivers, so -# choose names that match existing board setups where possible. Here -# we define two pins PA2 and PA3 for voltage and current sensing, with -# a scale factor of 1.0 and connected on ADC1. The pin number this -# maps to in hal.adc is automatically determined using the datasheet -# tables in STM32F427xx.py. - -PA2 BATT_VOLTAGE_SENS ADC1 SCALE(1) -PA3 BATT_CURRENT_SENS ADC1 SCALE(1) - -# Now the VDD sense pin. This is used to sense primary board voltage. -PA4 VDD_5V_SENS ADC1 SCALE(2) - -# Now the first SPI bus. At minimum you need SCK, MISO and MOSI pin -definitions. You can add speed modifiers if you want them, otherwise -the defaults for the peripheral class are used. - -PA5 SPI1_SCK SPI1 -PA6 SPI1_MISO SPI1 -PA7 SPI1_MOSI SPI1 - -# This defines an output pin which will default to output LOW. It is a -# pin that enables peripheral power on this board. - -PA8 nVDD_5V_PERIPH_EN OUTPUT LOW - -# This is the pin that senses USB being connected. It is an input pin -# setup as OPENDRAIN. -PA9 VBUS INPUT OPENDRAIN - -# This is a commented out pin for talking to the debug UART on the -# IOMCU, not used yet, but left as a comment (with a '#' in front) for -# future reference -# PA10 IO-debug-console - -# Now we define the pins that USB is connected on. -PA11 OTG_FS_DM OTG1 -PA12 OTG_FS_DP OTG1 - -# These are the pins for SWD debugging with a STlinkv2 or black-magic probe. -PA13 JTMS-SWDIO SWD -PA14 JTCK-SWCLK SWD - -# This defines the PWM pin for the buzzer (if there is one). It is -# also mapped to a GPIO output so you can play with the buzzer via -# MAVLink relay commands if you want to. - -# PWM output for buzzer -PA15 TIM2_CH1 TIM2 GPIO(77) ALARM - -# This defines a couple of general purpose outputs, mapped to GPIO -# numbers 1 and 2 for users. -PB0 EXTERN_GPIO1 OUTPUT GPIO(1) -PB1 EXTERN_GPIO2 OUTPUT GPIO(2) - -# This defines some input pins, currently unused. -PB2 BOOT1 INPUT -PB3 FMU_SW0 INPUT - -# This defines the pins for the 2nd CAN interface, if available. -PB6 CAN2_TX CAN2 -PB12 CAN2_RX CAN2 - -# Now the first I2C bus. The pin speeds are automatically setup -# correctly, but can be overridden here if needed. -PB8 I2C1_SCL I2C1 -PB9 I2C1_SDA I2C1 - -# the 2nd I2C bus -PB10 I2C2_SCL I2C2 -PB11 I2C2_SDA I2C2 - -# the 2nd SPI bus -PB13 SPI2_SCK SPI2 -PB14 SPI2_MISO SPI2 -PB15 SPI2_MOSI SPI2 - -# This input pin is used to detect that power is valid on USB. -PC0 VBUS_nVALID INPUT PULLUP - -# This defines the CS pin for the magnetometer and first IMU. Note -# that CS pins are software controlled, and are not tied to a particular -# SPI bus. -PC1 MAG_CS CS -PC2 MPU_CS CS - -# This defines more ADC inputs. -PC3 AUX_POWER ADC1 SCALE(1) -PC4 AUX_ADC2 ADC1 SCALE(1) - -# And the analog input for airspeed (rarely used these days). -PC5 PRESSURE_SENS ADC1 SCALE(2) - -# This sets up the UART for talking to the IOMCU. Note that it is -# vital that this UART has DMA available. See the DMA settings below -# for more information. - -# USART6 to IO -PC6 USART6_TX USART6 -PC7 USART6_RX USART6 - -# Now setup the pins for the microSD card, if available. -PC8 SDIO_D0 SDIO -PC9 SDIO_D1 SDIO -PC10 SDIO_D2 SDIO -PC11 SDIO_D3 SDIO -PC12 SDIO_CK SDIO -PD2 SDIO_CMD SDIO - -# More CS pins for more sensors. The labels for all CS pins need to -# match the SPI device table later in this file. -PC13 GYRO_EXT_CS CS -PC14 BARO_EXT_CS CS -PC15 ACCEL_EXT_CS CS -PD7 BARO_CS CS -PE4 MPU_EXT_CS CS - -# the first CAN bus -PD0 CAN1_RX CAN1 -PD1 CAN1_TX CAN1 - -# Another USART, this one for telem1. This one has RTS and CTS lines. -# USART2 serial2 telem1 -PD3 USART2_CTS USART2 -PD4 USART2_RTS USART2 -PD5 USART2_TX USART2 -PD6 USART2_RX USART2 - -# The telem2 USART, also with RTS/CTS available. -# USART3 serial3 telem2 -PD8 USART3_TX USART3 -PD9 USART3_RX USART3 -PD11 USART3_CTS USART3 -PD12 USART3_RTS USART3 - -# The CS pin for FRAM (ramtron). This one is marked as using -# SPEED_VERYLOW, which matches the HAL_PX4 setup. -PD10 FRAM_CS CS SPEED_VERYLOW - -# Now we start defining some PWM pins. We also map these pins to GPIO -# values, so users can set BRD_PWM_COUNT to choose how many of the PWM -# outputs on the primary MCU are setup as PWM and how many as -# GPIOs. To match HAL_PX4 we number the GPIOs for the PWM outputs -# starting at 50. -PE14 TIM1_CH4 TIM1 PWM(1) GPIO(50) # one of these is require by SPI4 -PE13 TIM1_CH3 TIM1 PWM(2) GPIO(51) BIDIR -PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) BIDIR -PE9 TIM1_CH1 TIM1 PWM(4) GPIO(53) -PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) NODMA -PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55) NODMA - -# This is the invensense data-ready pin. We don't use it in the -# default driver. -PD15 MPU_DRDY INPUT - -# the 2nd GPS UART -# UART8 serial4 GPS2 -PE0 UART8_RX UART8 -PE1 UART8_TX UART8 - -# Now setup SPI bus4. -#PE2 SPI4_SCK SPI4 -#PE5 SPI4_MISO SPI4 -#PE6 SPI4_MOSI SPI4 - -# This is the pin to enable the sensors rail. It can be used to power -# cycle sensors to recover them in case there are problems with power on -# timing affecting sensor stability. We pull it high by default. -PE3 VDD_3V3_SENSORS_EN OUTPUT HIGH - -# UART7 maps to SERIAL5. -PE7 UART7_RX UART7 -PE8 UART7_TX UART7 - -# Define a LED, mapping it to GPIO(0). LOW will illuminate the LED -PE12 FMU_LED_AMBER OUTPUT HIGH OPENDRAIN GPIO(0) - -# Power flag pins: these tell the MCU the status of the various power -# supplies that are available. The pin names need to exactly match the -# names used in AnalogIn.cpp. -PB5 VDD_BRICK_nVALID INPUT PULLUP -PB7 VDD_BRICK2_nVALID INPUT PULLUP -PE10 VDD_5V_HIPOWER_nOC INPUT PULLUP -PE15 VDD_5V_PERIPH_nOC INPUT PULLUP - -# Now the SPI device table. This table creates all accessible SPI -# devices, giving the name of the device (which is used by device -# drivers to open the device), plus which SPI bus it it on, what -# device ID will be used (which controls the IDs used in parameters -# such as COMPASS_DEV_ID, so we can detect when the list of devices -# changes between reboots for calibration purposes), the SPI mode to -# use, and the low and high speed settings for the device. - -# You can define more SPI devices than you actually have, to allow for -# flexibility in board setup, and the driver code can probe to see -# which are responding. - -# The DEVID values and device names are chosen to match the PX4 port -# of ArduPilot so users don't need to re-do their accel and compass -# calibrations when moving to ChibiOS. - -SPIDEV ms5611 SPI1 DEVID3 BARO_CS MODE3 20*MHZ 20*MHZ -#SPIDEV ms5611_ext SPI4 DEVID2 BARO_EXT_CS MODE3 20*MHZ 20*MHZ -SPIDEV mpu6000 SPI1 DEVID4 MPU_CS MODE3 2*MHZ 8*MHZ -SPIDEV icm20608-am SPI1 DEVID2 ACCEL_EXT_CS MODE3 4*MHZ 8*MHZ -SPIDEV mpu9250 SPI1 DEVID4 MPU_CS MODE3 4*MHZ 8*MHZ -#SPIDEV mpu9250_ext SPI4 DEVID1 MPU_EXT_CS MODE3 4*MHZ 8*MHZ -SPIDEV icm20948 SPI1 DEVID4 MPU_CS MODE3 4*MHZ 8*MHZ -#SPIDEV icm20948_ext SPI4 DEVID1 MPU_EXT_CS MODE3 4*MHZ 8*MHZ -SPIDEV hmc5843 SPI1 DEVID5 MAG_CS MODE3 11*MHZ 11*MHZ -SPIDEV lsm9ds0_g SPI1 DEVID1 GYRO_EXT_CS MODE3 11*MHZ 11*MHZ -SPIDEV lsm9ds0_am SPI1 DEVID2 ACCEL_EXT_CS MODE3 11*MHZ 11*MHZ -#SPIDEV lsm9ds0_ext_g SPI4 DEVID4 GYRO_EXT_CS MODE3 11*MHZ 11*MHZ -#SPIDEV lsm9ds0_ext_am SPI4 DEVID3 ACCEL_EXT_CS MODE3 11*MHZ 11*MHZ -#SPIDEV icm20602_ext SPI4 DEVID4 GYRO_EXT_CS MODE3 4*MHZ 8*MHZ -SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ -#SPIDEV external0m0 SPI4 DEVID5 MPU_EXT_CS MODE0 2*MHZ 2*MHZ -#SPIDEV external0m1 SPI4 DEVID5 MPU_EXT_CS MODE1 2*MHZ 2*MHZ -#SPIDEV external0m2 SPI4 DEVID5 MPU_EXT_CS MODE2 2*MHZ 2*MHZ -#SPIDEV external0m3 SPI4 DEVID5 MPU_EXT_CS MODE3 2*MHZ 2*MHZ -#SPIDEV pixartPC15 SPI4 DEVID13 ACCEL_EXT_CS MODE3 2*MHZ 2*MHZ - -# Now some commented out SPI device names which can be used by -# developers to test that the clock calculations are right for a -# bus. This is used in conjunction with the mavproxy devop module. - -# for SPI clock testing -#SPIDEV clock500 SPI4 DEVID5 MPU_EXT_CS MODE0 500*KHZ 500*KHZ # gives 329KHz -#SPIDEV clock1 SPI4 DEVID5 MPU_EXT_CS MODE0 1*MHZ 1*MHZ # gives 657kHz -#SPIDEV clock2 SPI4 DEVID5 MPU_EXT_CS MODE0 2*MHZ 2*MHZ # gives 1.3MHz -#SPIDEV clock4 SPI4 DEVID5 MPU_EXT_CS MODE0 4*MHZ 4*MHZ # gives 2.6MHz -#SPIDEV clock8 SPI4 DEVID5 MPU_EXT_CS MODE0 8*MHZ 8*MHZ # gives 5.5MHz -#SPIDEV clock16 SPI4 DEVID5 MPU_EXT_CS MODE0 16*MHZ 16*MHZ # gives 10.6MHz - -# This adds a C define which sets up the ArduPilot architecture -# define. Any line starting with 'define' is copied literally as -# a #define in the hwdef.h header. -define HAL_CHIBIOS_ARCH_FMUV3 1 - -# We need to tell HAL_ChibiOS/Storage.cpp how much storage is -# available (in bytes). -define HAL_STORAGE_SIZE 16384 - -# allow to have have a dedicated safety switch pin -define HAL_HAVE_SAFETY_SWITCH 1 - -# This enables the use of a ramtron device for storage, if one is -# found on SPI. You must have a ramtron entry in the SPI device table. - -# Enable RAMTRON parameter storage. -define HAL_WITH_RAMTRON 1 - -# Setup for the possibility of an IMU heater since the pixhawk2 cube has -# an IMU heater. +# the FMUv3 reference board (Pixhawk2/Cube) has an IMU heater define HAL_HAVE_IMU_HEATER 1 - -# Enable FAT filesystem support (needs a microSD defined via SDIO). -define HAL_OS_FATFS_IO 1 - -# Now setup the default battery pins driver analog pins and default -# scaling for the power brick. -define HAL_BATT_VOLT_PIN 2 -define HAL_BATT_CURR_PIN 3 -define HAL_BATT_VOLT_SCALE 10.1 -define HAL_BATT_CURR_SCALE 17.0 - -# This defines the default maximum clock on I2C devices. -define HAL_I2C_MAX_CLOCK 100000 - -# We can't share the IO UART (USART6). -DMA_NOSHARE USART6_TX ADC1 -DMA_PRIORITY TIM1_CH3 TIM1_CH2 TIM1_UP USART6* ADC1* SDIO* SPI* - -# List of files to put in ROMFS. For fmuv3 we need an IO firmware so -# we can automatically update the IOMCU firmware on boot. The format -# is "ROMFS ROMFS-filename source-filename". Paths are relative to the -# ardupilot root. -ROMFS io_firmware.bin Tools/IO_Firmware/iofirmware_lowpolh.bin diff --git a/libraries/AP_HAL_ChibiOS/hwdef/fmuv3/fmuv3.inc b/libraries/AP_HAL_ChibiOS/hwdef/fmuv3/fmuv3.inc new file mode 100644 index 0000000000000..5df552448a1e9 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/fmuv3/fmuv3.inc @@ -0,0 +1,466 @@ +# hw definition file for processing by chibios_hwdef.py +# for FMUv3 hardware (ie. for Pixhawk1, Pixhawk2 cube, XUAV2.1 etc) + +# This hwdef.dat file contains a lot of comments so it can act as a +# reference for developers adding new boards. + +# The hwdef.dat file defines all the hardware peripherals and pins for +# a port of ArduPilot to a board using the ChibiOS HAL. You should be +# able to write the hwdef.dat file for a new board with just the +# schematic for the board. + +# This file is processed by chibios_hwdef.py to create hwdef.h for +# this board. You may find it useful to run chibios_hwdef.py manually +# when building this file for a new board. The resulting hwdef.h file +# is formatted to make it quite readable. It is strongly suggested +# that you read the resulting hwdef.h file when porting to a new board +# to make sure it has resulted in what you want. + +# You should read this file in conjunction with the schematic for your +# board, the datasheet for the MCU for your board and the python +# tables file that we have extracted from the datasheet for your +# MCU. The python tables file is particularly important, so if you +# haven't seen it before go and look at it now. For the STM32F427 it +# it called STM32F427xx.py and it is in the hwdef/script/ directory +# inside the HAL_ChibiOS directory. That file tells you what each pin +# can do (the alternate functions table) and what DMA channels can be +# used for each peripheral type. The alternative functions table is +# particularly useful when doing a new hwdef.dat file as you can work +# out peripheral numbers given a port/pin name. + +# We need to start off by saying what main CPU is on the board. There +# are two CPU identifiers that you need to specify. The first is the +# ChibiOS MCU type. So far we only support STM32F4xx for all STM32F4 +# board types. In the future we will add F7 and other MCU types +# The second string needs to match the name of a config file in the +# libraries/AP_HAL_ChibiOS/hwdef/script directory. In this case we are +# using a F427 MCU, so we select STM32F427xx to match the +# STM32F427xx.py file in the script directory. If you are supporting a +# board type that doesn't have a python hardware database file yet +# then you will need to create one. There are scripts in the scripts +# directory to help with that by parsing the STM32 datasheets to +# extract the required DMA and alternate function tables. + +# MCU class and specific type +MCU STM32F4xx STM32F427xx + +# Now we need to specify the APJ_BOARD_ID. This is the ID that the +# bootloader presents to GCS software so it knows if this firmware is +# suitable for the board. Please see +# https://github.com/ArduPilot/Bootloader/blob/master/hw_config.h for +# a list of current board IDs. If you add a new board type then please +# get it added to that repository so we don't get conflicts. + +# Note that APJ is "ArduPilot JSON Firmware Format". + +# board ID. See Tools/AP_Bootloader/board_types.txt +APJ_BOARD_ID TARGET_HW_CUBE_F4 + +# Now you need to say what crystal frequency you have for this +# board. All of the clocks are scaled against this. Typical values are +# 24000000 or 8000000. + +# crystal frequency +OSCILLATOR_HZ 24000000 + +# On some boards you will need to also set the various PLL values. See +# the defaults in common/mcuconf.h, and use the define mechanism +# explained later in this file to override values suitable for your +# board. Refer to your MCU datasheet or examples from supported boards +# in ChibiOS for the right values. + +# This is the STM32 timer that ChibiOS will use for the low level +# driver. This must be a 32 bit timer. We currently only support +# timers 2, 3, 4, 5 and 21. See hal_st_lld.c in ChibiOS for details. + +# ChibiOS system timer +STM32_ST_USE_TIMER 5 + +# Now the size of flash in kilobytes, for creating the ld.script. + +# flash size +FLASH_SIZE_KB 2048 + +# Now define which UART is used for printf(). We rarely use printf() +# in ChibiOS, so this is really only for debugging very early startup +# in drivers. + +# Serial port for stdout. This is optional. If you leave it out then +# output from printf() lines will go to the ArduPilot console, which is the +# first UART in the SERIAL_ORDER list. But note that some startup code +# runs before USB is set up. +# The value for STDOUT_SERIAL is a serial device name, and must be for a +# serial device for which pins are defined in this file. For example, SD7 +# is for UART7 (SD7 == "serial device 7" in ChibiOS). +#STDOUT_SERIAL SD7 +#STDOUT_BAUDRATE 57600 + +# Now the USB setup, if you have USB. All of these settings are +# option, and the ones below are the defaults. It ends up creating a +# USB ID on Linux like this: +# /dev/serial/by-id/usb-ArduPilot_fmuv3_3E0031000B51353233343932-if00 +# If creating a board for a RTF vehicle you may wish to customise these. + +# USB setup +USB_STRING_MANUFACTURER "ArduPilot" + +# Now define the order that I2C buses are presented in the hal.i2c API +# in ArduPilot. For historical reasons inherited from HAL_PX4 the +# 'external' I2C bus should be bus 1 in hal.i2c, and internal I2C bus +# should be bus 0. On fmuv3 the STM32 I2C1 is our external bus and +# I2C2 is our internal bus, so we need to setup the order as I2C2 +# followed by I2C1 in order to achieve the conventional order that +# drivers expect. + +# order of I2C buses +I2C_ORDER I2C2 I2C1 + +# Now the serial ordering. These map to the SERIALn_ parameter numbers +# If you use a shorter list then HAL_Empty::UARTDriver +# objects are substituted for later UARTs, or you can leave a gap by +# listing one or more of the uarts as EMPTY. + +# The normal usage of this ordering is: +# 1) SERIAL0: console (primary mavlink, usually USB) +# 2) SERIAL1: telem1 +# 3) SERIAL2: telem2 +# 4) SERIAL3: primary GPS +# 5) SERIAL4: GPS2 +# 6) SERIAL5: extra UART (usually RTOS debug console) + +# order of UARTs (and USB) +SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7 + +# If the board has an IOMCU connected via a UART then this defines the +# UART to talk to that MCU. Leave it out for boards with no IOMCU. + +# UART for IOMCU +IOMCU_UART USART6 + +# Now we start on the pin definitions. Every pin used by ArduPilot +# needs to be in this file. The pins in this file can be defined in any order. + +# The format is P+port+pin. So PC4 is portC pin4. +# For every pin the second column is the label. If this is a +# peripheral that has an alternate function defined in the STM32 +# datasheet then the label must be the name of that alternative +# function. The names are looked up in the python database for this +# MCU. Please see STM32F427xx.py for the F427 database. That database +# is used to automatically fill in the alternative function (and later +# for the DMA channels). + +# The third column is the peripheral type. This must be one of the +# following: UARTn, USARTn, OTGn, SPIn, I2Cn, ADCn, TIMn, SWD, SDIO, +# INPUT, OUTPUT, CS. + +# The fourth and later columns are for modifiers on the pin. The +# possible modifiers are: +# pin speed: SPEED_VERYLOW, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH +# pullup: PULLUP, PULLDOWN, FLOATING +# out type: OPENDRAIN, PUSHPULL +# default value: LOW, HIGH + +# Additionally, each class of pin peripheral can have extra modifiers +# suitable for that pin type. For example, for an OUTPUT you can map +# it to a GPIO number in hal.gpio using the GPIO(n) modifier. For ADC +# inputs you can apply a scaling factor (to bring it to unit volts) +# using the SCALE(x) modifier. See the examples below for more +# modifiers, or read the python code in chibios_hwdef.py. + +# Now we define UART4 which is for the GPS. Be careful +# of the difference between USART and UART. Check the STM32F427xx.py +# if unsure which it is. For a UART we need to specify at least TX and +# RX pins. + +# UART4 serial GPS +PA0 UART4_TX UART4 +PA1 UART4_RX UART4 + +# Now define the primary battery connectors. The labels we choose here +# are used to create defines for pins in the various drivers, so +# choose names that match existing board setups where possible. Here +# we define two pins PA2 and PA3 for voltage and current sensing, with +# a scale factor of 1.0 and connected on ADC1. The pin number this +# maps to in hal.adc is automatically determined using the datasheet +# tables in STM32F427xx.py. + +PA2 BATT_VOLTAGE_SENS ADC1 SCALE(1) +PA3 BATT_CURRENT_SENS ADC1 SCALE(1) + +# Now the VDD sense pin. This is used to sense primary board voltage. +PA4 VDD_5V_SENS ADC1 SCALE(2) + +# Now the first SPI bus. At minimum you need SCK, MISO and MOSI pin +definitions. You can add speed modifiers if you want them, otherwise +the defaults for the peripheral class are used. + +PA5 SPI1_SCK SPI1 +PA6 SPI1_MISO SPI1 +PA7 SPI1_MOSI SPI1 + +# This defines an output pin which will default to output LOW. It is a +# pin that enables peripheral power on this board. + +PA8 nVDD_5V_PERIPH_EN OUTPUT LOW + +# This is the pin that senses USB being connected. It is an input pin +# setup as OPENDRAIN. +PA9 VBUS INPUT OPENDRAIN + +# This is a commented out pin for talking to the debug UART on the +# IOMCU, not used yet, but left as a comment (with a '#' in front) for +# future reference +# PA10 IO-debug-console + +# Now we define the pins that USB is connected on. +PA11 OTG_FS_DM OTG1 +PA12 OTG_FS_DP OTG1 + +# These are the pins for SWD debugging with a STlinkv2 or black-magic probe. +PA13 JTMS-SWDIO SWD +PA14 JTCK-SWCLK SWD + +# This defines the PWM pin for the buzzer (if there is one). It is +# also mapped to a GPIO output so you can play with the buzzer via +# MAVLink relay commands if you want to. + +# PWM output for buzzer +PA15 TIM2_CH1 TIM2 GPIO(77) ALARM + +# This defines a couple of general purpose outputs, mapped to GPIO +# numbers 1 and 2 for users. +PB0 EXTERN_GPIO1 OUTPUT GPIO(1) +PB1 EXTERN_GPIO2 OUTPUT GPIO(2) + +# This defines some input pins, currently unused. +PB2 BOOT1 INPUT +PB3 FMU_SW0 INPUT + +# This defines the pins for the 2nd CAN interface, if available. +PB6 CAN2_TX CAN2 +PB12 CAN2_RX CAN2 + +# Now the first I2C bus. The pin speeds are automatically setup +# correctly, but can be overridden here if needed. +PB8 I2C1_SCL I2C1 +PB9 I2C1_SDA I2C1 + +# the 2nd I2C bus +PB10 I2C2_SCL I2C2 +PB11 I2C2_SDA I2C2 + +# the 2nd SPI bus +PB13 SPI2_SCK SPI2 +PB14 SPI2_MISO SPI2 +PB15 SPI2_MOSI SPI2 + +# This input pin is used to detect that power is valid on USB. +PC0 VBUS_nVALID INPUT PULLUP + +# This defines the CS pin for the magnetometer and first IMU. Note +# that CS pins are software controlled, and are not tied to a particular +# SPI bus. +PC1 MAG_CS CS +PC2 MPU_CS CS + +# This defines more ADC inputs. +PC3 AUX_POWER ADC1 SCALE(1) +PC4 AUX_ADC2 ADC1 SCALE(1) + +# And the analog input for airspeed (rarely used these days). +PC5 PRESSURE_SENS ADC1 SCALE(2) + +# This sets up the UART for talking to the IOMCU. Note that it is +# vital that this UART has DMA available. See the DMA settings below +# for more information. + +# USART6 to IO +PC6 USART6_TX USART6 +PC7 USART6_RX USART6 + +# Now setup the pins for the microSD card, if available. +PC8 SDIO_D0 SDIO +PC9 SDIO_D1 SDIO +PC10 SDIO_D2 SDIO +PC11 SDIO_D3 SDIO +PC12 SDIO_CK SDIO +PD2 SDIO_CMD SDIO + +# More CS pins for more sensors. The labels for all CS pins need to +# match the SPI device table later in this file. +PC13 GYRO_EXT_CS CS +PC14 BARO_EXT_CS CS +PC15 ACCEL_EXT_CS CS +PD7 BARO_CS CS +PE4 MPU_EXT_CS CS + +# the first CAN bus +PD0 CAN1_RX CAN1 +PD1 CAN1_TX CAN1 + +# Another USART, this one for telem1. This one has RTS and CTS lines. +# USART2 serial2 telem1 +PD3 USART2_CTS USART2 +PD4 USART2_RTS USART2 +PD5 USART2_TX USART2 +PD6 USART2_RX USART2 + +# The telem2 USART, also with RTS/CTS available. +# USART3 serial3 telem2 +PD8 USART3_TX USART3 +PD9 USART3_RX USART3 +PD11 USART3_CTS USART3 +PD12 USART3_RTS USART3 + +# The CS pin for FRAM (ramtron). This one is marked as using +# SPEED_VERYLOW, which matches the HAL_PX4 setup. +PD10 FRAM_CS CS SPEED_VERYLOW + +# Now we start defining some PWM pins. We also map these pins to GPIO +# values, so users can set BRD_PWM_COUNT to choose how many of the PWM +# outputs on the primary MCU are setup as PWM and how many as +# GPIOs. To match HAL_PX4 we number the GPIOs for the PWM outputs +# starting at 50. +PE14 TIM1_CH4 TIM1 PWM(1) GPIO(50) +PE13 TIM1_CH3 TIM1 PWM(2) GPIO(51) +PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) +PE9 TIM1_CH1 TIM1 PWM(4) GPIO(53) +PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) +PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55) + +# This is the invensense data-ready pin. We don't use it in the +# default driver. +PD15 MPU_DRDY INPUT + +# the 2nd GPS UART +# UART8 serial4 GPS2 +PE0 UART8_RX UART8 +PE1 UART8_TX UART8 + +# Now setup SPI bus4. +PE2 SPI4_SCK SPI4 +PE5 SPI4_MISO SPI4 +PE6 SPI4_MOSI SPI4 + +# This is the pin to enable the sensors rail. It can be used to power +# cycle sensors to recover them in case there are problems with power on +# timing affecting sensor stability. We pull it high by default. +PE3 VDD_3V3_SENSORS_EN OUTPUT HIGH + +# UART7 maps to SERIAL5. +PE7 UART7_RX UART7 +PE8 UART7_TX UART7 + +# Define a LED, mapping it to GPIO(0). LOW will illuminate the LED +PE12 FMU_LED_AMBER OUTPUT HIGH OPENDRAIN GPIO(0) + +# Power flag pins: these tell the MCU the status of the various power +# supplies that are available. The pin names need to exactly match the +# names used in AnalogIn.cpp. +PB5 VDD_BRICK_nVALID INPUT PULLUP +PB7 VDD_BRICK2_nVALID INPUT PULLUP +PE10 VDD_5V_HIPOWER_nOC INPUT PULLUP +PE15 VDD_5V_PERIPH_nOC INPUT PULLUP + +# Now the SPI device table. This table creates all accessible SPI +# devices, giving the name of the device (which is used by device +# drivers to open the device), plus which SPI bus it it on, what +# device ID will be used (which controls the IDs used in parameters +# such as COMPASS_DEV_ID, so we can detect when the list of devices +# changes between reboots for calibration purposes), the SPI mode to +# use, and the low and high speed settings for the device. + +# You can define more SPI devices than you actually have, to allow for +# flexibility in board setup, and the driver code can probe to see +# which are responding. + +# The DEVID values and device names are chosen to match the PX4 port +# of ArduPilot so users don't need to re-do their accel and compass +# calibrations when moving to ChibiOS. + +SPIDEV ms5611 SPI1 DEVID3 BARO_CS MODE3 20*MHZ 20*MHZ +SPIDEV ms5611_ext SPI4 DEVID2 BARO_EXT_CS MODE3 20*MHZ 20*MHZ +SPIDEV mpu6000 SPI1 DEVID4 MPU_CS MODE3 2*MHZ 8*MHZ +SPIDEV icm20608-am SPI1 DEVID2 ACCEL_EXT_CS MODE3 4*MHZ 8*MHZ +SPIDEV mpu9250 SPI1 DEVID4 MPU_CS MODE3 4*MHZ 8*MHZ +SPIDEV mpu9250_ext SPI4 DEVID1 MPU_EXT_CS MODE3 4*MHZ 8*MHZ +SPIDEV icm20948 SPI1 DEVID4 MPU_CS MODE3 4*MHZ 8*MHZ +SPIDEV icm20948_ext SPI4 DEVID1 MPU_EXT_CS MODE3 4*MHZ 8*MHZ +SPIDEV hmc5843 SPI1 DEVID5 MAG_CS MODE3 11*MHZ 11*MHZ +SPIDEV lsm9ds0_g SPI1 DEVID1 GYRO_EXT_CS MODE3 11*MHZ 11*MHZ +SPIDEV lsm9ds0_am SPI1 DEVID2 ACCEL_EXT_CS MODE3 11*MHZ 11*MHZ +SPIDEV lsm9ds0_ext_g SPI4 DEVID4 GYRO_EXT_CS MODE3 11*MHZ 11*MHZ +SPIDEV lsm9ds0_ext_am SPI4 DEVID3 ACCEL_EXT_CS MODE3 11*MHZ 11*MHZ +SPIDEV icm20602_ext SPI4 DEVID4 GYRO_EXT_CS MODE3 4*MHZ 8*MHZ +SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ +SPIDEV external0m0 SPI4 DEVID5 MPU_EXT_CS MODE0 2*MHZ 2*MHZ +SPIDEV external0m1 SPI4 DEVID5 MPU_EXT_CS MODE1 2*MHZ 2*MHZ +SPIDEV external0m2 SPI4 DEVID5 MPU_EXT_CS MODE2 2*MHZ 2*MHZ +SPIDEV external0m3 SPI4 DEVID5 MPU_EXT_CS MODE3 2*MHZ 2*MHZ +SPIDEV pixartPC15 SPI4 DEVID13 ACCEL_EXT_CS MODE3 2*MHZ 2*MHZ + +# Now some commented out SPI device names which can be used by +# developers to test that the clock calculations are right for a +# bus. This is used in conjunction with the mavproxy devop module. + +# for SPI clock testing +#SPIDEV clock500 SPI4 DEVID5 MPU_EXT_CS MODE0 500*KHZ 500*KHZ # gives 329KHz +#SPIDEV clock1 SPI4 DEVID5 MPU_EXT_CS MODE0 1*MHZ 1*MHZ # gives 657kHz +#SPIDEV clock2 SPI4 DEVID5 MPU_EXT_CS MODE0 2*MHZ 2*MHZ # gives 1.3MHz +#SPIDEV clock4 SPI4 DEVID5 MPU_EXT_CS MODE0 4*MHZ 4*MHZ # gives 2.6MHz +#SPIDEV clock8 SPI4 DEVID5 MPU_EXT_CS MODE0 8*MHZ 8*MHZ # gives 5.5MHz +#SPIDEV clock16 SPI4 DEVID5 MPU_EXT_CS MODE0 16*MHZ 16*MHZ # gives 10.6MHz + +# This adds a C define which sets up the ArduPilot architecture +# define. Any line starting with 'define' is copied literally as +# a #define in the hwdef.h header. +define HAL_CHIBIOS_ARCH_FMUV3 1 + +# We need to tell HAL_ChibiOS/Storage.cpp how much storage is +# available (in bytes). +define HAL_STORAGE_SIZE 16384 + +# allow to have have a dedicated safety switch pin +define HAL_HAVE_SAFETY_SWITCH 1 + +# This enables the use of a ramtron device for storage, if one is +# found on SPI. You must have a ramtron entry in the SPI device table. + +# Enable RAMTRON parameter storage. +define HAL_WITH_RAMTRON 1 + +# Enable FAT filesystem support (needs a microSD defined via SDIO). +define HAL_OS_FATFS_IO 1 + +# Now setup the default battery pins driver analog pins and default +# scaling for the power brick. +define HAL_BATT_VOLT_PIN 2 +define HAL_BATT_CURR_PIN 3 +define HAL_BATT_VOLT_SCALE 10.1 +define HAL_BATT_CURR_SCALE 17.0 + +# This defines the default maximum clock on I2C devices. +define HAL_I2C_MAX_CLOCK 100000 + +# We can't share the IO UART (USART6). +DMA_NOSHARE USART6_TX ADC1 +DMA_PRIORITY USART6* SPI* + +# List of files to put in ROMFS. For fmuv3 we need an IO firmware so +# we can automatically update the IOMCU firmware on boot. The format +# is "ROMFS ROMFS-filename source-filename". Paths are relative to the +# ardupilot root. +ROMFS io_firmware.bin Tools/IO_Firmware/iofirmware_lowpolh.bin + +# for users running fmuv3 on their Solo: +define AP_NOTIFY_OREOLED_ENABLED (BOARD_FLASH_SIZE > 1024) +define HAL_SOLO_GIMBAL_ENABLED (HAL_MOUNT_ENABLED && BOARD_FLASH_SIZE > 1024) + +undef AP_BATTERY_SMBUS_SOLO_ENABLED +define AP_BATTERY_SMBUS_SOLO_ENABLED (AP_BATTERY_SMBUS_ENABLED && BOARD_FLASH_SIZE > 1024) + +# produce this error if we are on a 1M board +define BOARD_CHECK_F427_USE_1M "ERROR: 1M flash use fmuv2" + +# probe for external IST8310 compasses: +define AP_COMPASS_IST8310_EXTERNAL_BUS_PROBING_ENABLED AP_COMPASS_IST8310_ENABLED diff --git a/libraries/AP_HAL_ChibiOS/hwdef/fmuv3/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/fmuv3/hwdef.dat index a958bce7fea76..73e9a2fbe4432 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/fmuv3/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/fmuv3/hwdef.dat @@ -1,470 +1,10 @@ # hw definition file for processing by chibios_hwdef.py # for FMUv3 hardware (ie. for Pixhawk1, Pixhawk2 cube, XUAV2.1 etc) -# This hwdef.dat file contains a lot of comments so it can act as a -# reference for developers adding new boards. +# the bulk of the FMUv3 configuration lives in fmuv3.inc so that it can +# be shared by boards which are based on FMUv3 but do not share all of +# its hardware (eg. the presence of an IMU heater). +include fmuv3.inc -# The hwdef.dat file defines all the hardware peripherals and pins for -# a port of ArduPilot to a board using the ChibiOS HAL. You should be -# able to write the hwdef.dat file for a new board with just the -# schematic for the board. - -# This file is processed by chibios_hwdef.py to create hwdef.h for -# this board. You may find it useful to run chibios_hwdef.py manually -# when building this file for a new board. The resulting hwdef.h file -# is formatted to make it quite readable. It is strongly suggested -# that you read the resulting hwdef.h file when porting to a new board -# to make sure it has resulted in what you want. - -# You should read this file in conjunction with the schematic for your -# board, the datasheet for the MCU for your board and the python -# tables file that we have extracted from the datasheet for your -# MCU. The python tables file is particularly important, so if you -# haven't seen it before go and look at it now. For the STM32F427 it -# it called STM32F427xx.py and it is in the hwdef/script/ directory -# inside the HAL_ChibiOS directory. That file tells you what each pin -# can do (the alternate functions table) and what DMA channels can be -# used for each peripheral type. The alternative functions table is -# particularly useful when doing a new hwdef.dat file as you can work -# out peripheral numbers given a port/pin name. - -# We need to start off by saying what main CPU is on the board. There -# are two CPU identifiers that you need to specify. The first is the -# ChibiOS MCU type. So far we only support STM32F4xx for all STM32F4 -# board types. In the future we will add F7 and other MCU types -# The second string needs to match the name of a config file in the -# libraries/AP_HAL_ChibiOS/hwdef/script directory. In this case we are -# using a F427 MCU, so we select STM32F427xx to match the -# STM32F427xx.py file in the script directory. If you are supporting a -# board type that doesn't have a python hardware database file yet -# then you will need to create one. There are scripts in the scripts -# directory to help with that by parsing the STM32 datasheets to -# extract the required DMA and alternate function tables. - -# MCU class and specific type -MCU STM32F4xx STM32F427xx - -# Now we need to specify the APJ_BOARD_ID. This is the ID that the -# bootloader presents to GCS software so it knows if this firmware is -# suitable for the board. Please see -# https://github.com/ArduPilot/Bootloader/blob/master/hw_config.h for -# a list of current board IDs. If you add a new board type then please -# get it added to that repository so we don't get conflicts. - -# Note that APJ is "ArduPilot JSON Firmware Format". - -# board ID. See Tools/AP_Bootloader/board_types.txt -APJ_BOARD_ID TARGET_HW_CUBE_F4 - -# Now you need to say what crystal frequency you have for this -# board. All of the clocks are scaled against this. Typical values are -# 24000000 or 8000000. - -# crystal frequency -OSCILLATOR_HZ 24000000 - -# On some boards you will need to also set the various PLL values. See -# the defaults in common/mcuconf.h, and use the define mechanism -# explained later in this file to override values suitable for your -# board. Refer to your MCU datasheet or examples from supported boards -# in ChibiOS for the right values. - -# This is the STM32 timer that ChibiOS will use for the low level -# driver. This must be a 32 bit timer. We currently only support -# timers 2, 3, 4, 5 and 21. See hal_st_lld.c in ChibiOS for details. - -# ChibiOS system timer -STM32_ST_USE_TIMER 5 - -# Now the size of flash in kilobytes, for creating the ld.script. - -# flash size -FLASH_SIZE_KB 2048 - -# Now define which UART is used for printf(). We rarely use printf() -# in ChibiOS, so this is really only for debugging very early startup -# in drivers. - -# Serial port for stdout. This is optional. If you leave it out then -# output from printf() lines will go to the ArduPilot console, which is the -# first UART in the SERIAL_ORDER list. But note that some startup code -# runs before USB is set up. -# The value for STDOUT_SERIAL is a serial device name, and must be for a -# serial device for which pins are defined in this file. For example, SD7 -# is for UART7 (SD7 == "serial device 7" in ChibiOS). -#STDOUT_SERIAL SD7 -#STDOUT_BAUDRATE 57600 - -# Now the USB setup, if you have USB. All of these settings are -# option, and the ones below are the defaults. It ends up creating a -# USB ID on Linux like this: -# /dev/serial/by-id/usb-ArduPilot_fmuv3_3E0031000B51353233343932-if00 -# If creating a board for a RTF vehicle you may wish to customise these. - -# USB setup -USB_STRING_MANUFACTURER "ArduPilot" - -# Now define the order that I2C buses are presented in the hal.i2c API -# in ArduPilot. For historical reasons inherited from HAL_PX4 the -# 'external' I2C bus should be bus 1 in hal.i2c, and internal I2C bus -# should be bus 0. On fmuv3 the STM32 I2C1 is our external bus and -# I2C2 is our internal bus, so we need to setup the order as I2C2 -# followed by I2C1 in order to achieve the conventional order that -# drivers expect. - -# order of I2C buses -I2C_ORDER I2C2 I2C1 - -# Now the serial ordering. These map to the SERIALn_ parameter numbers -# If you use a shorter list then HAL_Empty::UARTDriver -# objects are substituted for later UARTs, or you can leave a gap by -# listing one or more of the uarts as EMPTY. - -# The normal usage of this ordering is: -# 1) SERIAL0: console (primary mavlink, usually USB) -# 2) SERIAL1: telem1 -# 3) SERIAL2: telem2 -# 4) SERIAL3: primary GPS -# 5) SERIAL4: GPS2 -# 6) SERIAL5: extra UART (usually RTOS debug console) - -# order of UARTs (and USB) -SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7 - -# If the board has an IOMCU connected via a UART then this defines the -# UART to talk to that MCU. Leave it out for boards with no IOMCU. - -# UART for IOMCU -IOMCU_UART USART6 - -# Now we start on the pin definitions. Every pin used by ArduPilot -# needs to be in this file. The pins in this file can be defined in any order. - -# The format is P+port+pin. So PC4 is portC pin4. -# For every pin the second column is the label. If this is a -# peripheral that has an alternate function defined in the STM32 -# datasheet then the label must be the name of that alternative -# function. The names are looked up in the python database for this -# MCU. Please see STM32F427xx.py for the F427 database. That database -# is used to automatically fill in the alternative function (and later -# for the DMA channels). - -# The third column is the peripheral type. This must be one of the -# following: UARTn, USARTn, OTGn, SPIn, I2Cn, ADCn, TIMn, SWD, SDIO, -# INPUT, OUTPUT, CS. - -# The fourth and later columns are for modifiers on the pin. The -# possible modifiers are: -# pin speed: SPEED_VERYLOW, SPEED_LOW, SPEED_MEDIUM, SPEED_HIGH -# pullup: PULLUP, PULLDOWN, FLOATING -# out type: OPENDRAIN, PUSHPULL -# default value: LOW, HIGH - -# Additionally, each class of pin peripheral can have extra modifiers -# suitable for that pin type. For example, for an OUTPUT you can map -# it to a GPIO number in hal.gpio using the GPIO(n) modifier. For ADC -# inputs you can apply a scaling factor (to bring it to unit volts) -# using the SCALE(x) modifier. See the examples below for more -# modifiers, or read the python code in chibios_hwdef.py. - -# Now we define UART4 which is for the GPS. Be careful -# of the difference between USART and UART. Check the STM32F427xx.py -# if unsure which it is. For a UART we need to specify at least TX and -# RX pins. - -# UART4 serial GPS -PA0 UART4_TX UART4 -PA1 UART4_RX UART4 - -# Now define the primary battery connectors. The labels we choose here -# are used to create defines for pins in the various drivers, so -# choose names that match existing board setups where possible. Here -# we define two pins PA2 and PA3 for voltage and current sensing, with -# a scale factor of 1.0 and connected on ADC1. The pin number this -# maps to in hal.adc is automatically determined using the datasheet -# tables in STM32F427xx.py. - -PA2 BATT_VOLTAGE_SENS ADC1 SCALE(1) -PA3 BATT_CURRENT_SENS ADC1 SCALE(1) - -# Now the VDD sense pin. This is used to sense primary board voltage. -PA4 VDD_5V_SENS ADC1 SCALE(2) - -# Now the first SPI bus. At minimum you need SCK, MISO and MOSI pin -definitions. You can add speed modifiers if you want them, otherwise -the defaults for the peripheral class are used. - -PA5 SPI1_SCK SPI1 -PA6 SPI1_MISO SPI1 -PA7 SPI1_MOSI SPI1 - -# This defines an output pin which will default to output LOW. It is a -# pin that enables peripheral power on this board. - -PA8 nVDD_5V_PERIPH_EN OUTPUT LOW - -# This is the pin that senses USB being connected. It is an input pin -# setup as OPENDRAIN. -PA9 VBUS INPUT OPENDRAIN - -# This is a commented out pin for talking to the debug UART on the -# IOMCU, not used yet, but left as a comment (with a '#' in front) for -# future reference -# PA10 IO-debug-console - -# Now we define the pins that USB is connected on. -PA11 OTG_FS_DM OTG1 -PA12 OTG_FS_DP OTG1 - -# These are the pins for SWD debugging with a STlinkv2 or black-magic probe. -PA13 JTMS-SWDIO SWD -PA14 JTCK-SWCLK SWD - -# This defines the PWM pin for the buzzer (if there is one). It is -# also mapped to a GPIO output so you can play with the buzzer via -# MAVLink relay commands if you want to. - -# PWM output for buzzer -PA15 TIM2_CH1 TIM2 GPIO(77) ALARM - -# This defines a couple of general purpose outputs, mapped to GPIO -# numbers 1 and 2 for users. -PB0 EXTERN_GPIO1 OUTPUT GPIO(1) -PB1 EXTERN_GPIO2 OUTPUT GPIO(2) - -# This defines some input pins, currently unused. -PB2 BOOT1 INPUT -PB3 FMU_SW0 INPUT - -# This defines the pins for the 2nd CAN interface, if available. -PB6 CAN2_TX CAN2 -PB12 CAN2_RX CAN2 - -# Now the first I2C bus. The pin speeds are automatically setup -# correctly, but can be overridden here if needed. -PB8 I2C1_SCL I2C1 -PB9 I2C1_SDA I2C1 - -# the 2nd I2C bus -PB10 I2C2_SCL I2C2 -PB11 I2C2_SDA I2C2 - -# the 2nd SPI bus -PB13 SPI2_SCK SPI2 -PB14 SPI2_MISO SPI2 -PB15 SPI2_MOSI SPI2 - -# This input pin is used to detect that power is valid on USB. -PC0 VBUS_nVALID INPUT PULLUP - -# This defines the CS pin for the magnetometer and first IMU. Note -# that CS pins are software controlled, and are not tied to a particular -# SPI bus. -PC1 MAG_CS CS -PC2 MPU_CS CS - -# This defines more ADC inputs. -PC3 AUX_POWER ADC1 SCALE(1) -PC4 AUX_ADC2 ADC1 SCALE(1) - -# And the analog input for airspeed (rarely used these days). -PC5 PRESSURE_SENS ADC1 SCALE(2) - -# This sets up the UART for talking to the IOMCU. Note that it is -# vital that this UART has DMA available. See the DMA settings below -# for more information. - -# USART6 to IO -PC6 USART6_TX USART6 -PC7 USART6_RX USART6 - -# Now setup the pins for the microSD card, if available. -PC8 SDIO_D0 SDIO -PC9 SDIO_D1 SDIO -PC10 SDIO_D2 SDIO -PC11 SDIO_D3 SDIO -PC12 SDIO_CK SDIO -PD2 SDIO_CMD SDIO - -# More CS pins for more sensors. The labels for all CS pins need to -# match the SPI device table later in this file. -PC13 GYRO_EXT_CS CS -PC14 BARO_EXT_CS CS -PC15 ACCEL_EXT_CS CS -PD7 BARO_CS CS -PE4 MPU_EXT_CS CS - -# the first CAN bus -PD0 CAN1_RX CAN1 -PD1 CAN1_TX CAN1 - -# Another USART, this one for telem1. This one has RTS and CTS lines. -# USART2 serial2 telem1 -PD3 USART2_CTS USART2 -PD4 USART2_RTS USART2 -PD5 USART2_TX USART2 -PD6 USART2_RX USART2 - -# The telem2 USART, also with RTS/CTS available. -# USART3 serial3 telem2 -PD8 USART3_TX USART3 -PD9 USART3_RX USART3 -PD11 USART3_CTS USART3 -PD12 USART3_RTS USART3 - -# The CS pin for FRAM (ramtron). This one is marked as using -# SPEED_VERYLOW, which matches the HAL_PX4 setup. -PD10 FRAM_CS CS SPEED_VERYLOW - -# Now we start defining some PWM pins. We also map these pins to GPIO -# values, so users can set BRD_PWM_COUNT to choose how many of the PWM -# outputs on the primary MCU are setup as PWM and how many as -# GPIOs. To match HAL_PX4 we number the GPIOs for the PWM outputs -# starting at 50. -PE14 TIM1_CH4 TIM1 PWM(1) GPIO(50) -PE13 TIM1_CH3 TIM1 PWM(2) GPIO(51) -PE11 TIM1_CH2 TIM1 PWM(3) GPIO(52) -PE9 TIM1_CH1 TIM1 PWM(4) GPIO(53) -PD13 TIM4_CH2 TIM4 PWM(5) GPIO(54) -PD14 TIM4_CH3 TIM4 PWM(6) GPIO(55) - -# This is the invensense data-ready pin. We don't use it in the -# default driver. -PD15 MPU_DRDY INPUT - -# the 2nd GPS UART -# UART8 serial4 GPS2 -PE0 UART8_RX UART8 -PE1 UART8_TX UART8 - -# Now setup SPI bus4. -PE2 SPI4_SCK SPI4 -PE5 SPI4_MISO SPI4 -PE6 SPI4_MOSI SPI4 - -# This is the pin to enable the sensors rail. It can be used to power -# cycle sensors to recover them in case there are problems with power on -# timing affecting sensor stability. We pull it high by default. -PE3 VDD_3V3_SENSORS_EN OUTPUT HIGH - -# UART7 maps to SERIAL5. -PE7 UART7_RX UART7 -PE8 UART7_TX UART7 - -# Define a LED, mapping it to GPIO(0). LOW will illuminate the LED -PE12 FMU_LED_AMBER OUTPUT HIGH OPENDRAIN GPIO(0) - -# Power flag pins: these tell the MCU the status of the various power -# supplies that are available. The pin names need to exactly match the -# names used in AnalogIn.cpp. -PB5 VDD_BRICK_nVALID INPUT PULLUP -PB7 VDD_BRICK2_nVALID INPUT PULLUP -PE10 VDD_5V_HIPOWER_nOC INPUT PULLUP -PE15 VDD_5V_PERIPH_nOC INPUT PULLUP - -# Now the SPI device table. This table creates all accessible SPI -# devices, giving the name of the device (which is used by device -# drivers to open the device), plus which SPI bus it it on, what -# device ID will be used (which controls the IDs used in parameters -# such as COMPASS_DEV_ID, so we can detect when the list of devices -# changes between reboots for calibration purposes), the SPI mode to -# use, and the low and high speed settings for the device. - -# You can define more SPI devices than you actually have, to allow for -# flexibility in board setup, and the driver code can probe to see -# which are responding. - -# The DEVID values and device names are chosen to match the PX4 port -# of ArduPilot so users don't need to re-do their accel and compass -# calibrations when moving to ChibiOS. - -SPIDEV ms5611 SPI1 DEVID3 BARO_CS MODE3 20*MHZ 20*MHZ -SPIDEV ms5611_ext SPI4 DEVID2 BARO_EXT_CS MODE3 20*MHZ 20*MHZ -SPIDEV mpu6000 SPI1 DEVID4 MPU_CS MODE3 2*MHZ 8*MHZ -SPIDEV icm20608-am SPI1 DEVID2 ACCEL_EXT_CS MODE3 4*MHZ 8*MHZ -SPIDEV mpu9250 SPI1 DEVID4 MPU_CS MODE3 4*MHZ 8*MHZ -SPIDEV mpu9250_ext SPI4 DEVID1 MPU_EXT_CS MODE3 4*MHZ 8*MHZ -SPIDEV icm20948 SPI1 DEVID4 MPU_CS MODE3 4*MHZ 8*MHZ -SPIDEV icm20948_ext SPI4 DEVID1 MPU_EXT_CS MODE3 4*MHZ 8*MHZ -SPIDEV hmc5843 SPI1 DEVID5 MAG_CS MODE3 11*MHZ 11*MHZ -SPIDEV lsm9ds0_g SPI1 DEVID1 GYRO_EXT_CS MODE3 11*MHZ 11*MHZ -SPIDEV lsm9ds0_am SPI1 DEVID2 ACCEL_EXT_CS MODE3 11*MHZ 11*MHZ -SPIDEV lsm9ds0_ext_g SPI4 DEVID4 GYRO_EXT_CS MODE3 11*MHZ 11*MHZ -SPIDEV lsm9ds0_ext_am SPI4 DEVID3 ACCEL_EXT_CS MODE3 11*MHZ 11*MHZ -SPIDEV icm20602_ext SPI4 DEVID4 GYRO_EXT_CS MODE3 4*MHZ 8*MHZ -SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ -SPIDEV external0m0 SPI4 DEVID5 MPU_EXT_CS MODE0 2*MHZ 2*MHZ -SPIDEV external0m1 SPI4 DEVID5 MPU_EXT_CS MODE1 2*MHZ 2*MHZ -SPIDEV external0m2 SPI4 DEVID5 MPU_EXT_CS MODE2 2*MHZ 2*MHZ -SPIDEV external0m3 SPI4 DEVID5 MPU_EXT_CS MODE3 2*MHZ 2*MHZ -SPIDEV pixartPC15 SPI4 DEVID13 ACCEL_EXT_CS MODE3 2*MHZ 2*MHZ - -# Now some commented out SPI device names which can be used by -# developers to test that the clock calculations are right for a -# bus. This is used in conjunction with the mavproxy devop module. - -# for SPI clock testing -#SPIDEV clock500 SPI4 DEVID5 MPU_EXT_CS MODE0 500*KHZ 500*KHZ # gives 329KHz -#SPIDEV clock1 SPI4 DEVID5 MPU_EXT_CS MODE0 1*MHZ 1*MHZ # gives 657kHz -#SPIDEV clock2 SPI4 DEVID5 MPU_EXT_CS MODE0 2*MHZ 2*MHZ # gives 1.3MHz -#SPIDEV clock4 SPI4 DEVID5 MPU_EXT_CS MODE0 4*MHZ 4*MHZ # gives 2.6MHz -#SPIDEV clock8 SPI4 DEVID5 MPU_EXT_CS MODE0 8*MHZ 8*MHZ # gives 5.5MHz -#SPIDEV clock16 SPI4 DEVID5 MPU_EXT_CS MODE0 16*MHZ 16*MHZ # gives 10.6MHz - -# This adds a C define which sets up the ArduPilot architecture -# define. Any line starting with 'define' is copied literally as -# a #define in the hwdef.h header. -define HAL_CHIBIOS_ARCH_FMUV3 1 - -# We need to tell HAL_ChibiOS/Storage.cpp how much storage is -# available (in bytes). -define HAL_STORAGE_SIZE 16384 - -# allow to have have a dedicated safety switch pin -define HAL_HAVE_SAFETY_SWITCH 1 - -# This enables the use of a ramtron device for storage, if one is -# found on SPI. You must have a ramtron entry in the SPI device table. - -# Enable RAMTRON parameter storage. -define HAL_WITH_RAMTRON 1 - -# Setup for the possibility of an IMU heater since the pixhawk2 cube has -# an IMU heater. +# the FMUv3 reference board (Pixhawk2/Cube) has an IMU heater define HAL_HAVE_IMU_HEATER 1 - -# Enable FAT filesystem support (needs a microSD defined via SDIO). -define HAL_OS_FATFS_IO 1 - -# Now setup the default battery pins driver analog pins and default -# scaling for the power brick. -define HAL_BATT_VOLT_PIN 2 -define HAL_BATT_CURR_PIN 3 -define HAL_BATT_VOLT_SCALE 10.1 -define HAL_BATT_CURR_SCALE 17.0 - -# This defines the default maximum clock on I2C devices. -define HAL_I2C_MAX_CLOCK 100000 - -# We can't share the IO UART (USART6). -DMA_NOSHARE USART6_TX ADC1 -DMA_PRIORITY USART6* SPI* - -# List of files to put in ROMFS. For fmuv3 we need an IO firmware so -# we can automatically update the IOMCU firmware on boot. The format -# is "ROMFS ROMFS-filename source-filename". Paths are relative to the -# ardupilot root. -ROMFS io_firmware.bin Tools/IO_Firmware/iofirmware_lowpolh.bin - -# for users running fmuv3 on their Solo: -define AP_NOTIFY_OREOLED_ENABLED (BOARD_FLASH_SIZE > 1024) -define HAL_SOLO_GIMBAL_ENABLED (HAL_MOUNT_ENABLED && BOARD_FLASH_SIZE > 1024) - -undef AP_BATTERY_SMBUS_SOLO_ENABLED -define AP_BATTERY_SMBUS_SOLO_ENABLED (AP_BATTERY_SMBUS_ENABLED && BOARD_FLASH_SIZE > 1024) - -# produce this error if we are on a 1M board -define BOARD_CHECK_F427_USE_1M "ERROR: 1M flash use fmuv2" - -# probe for external IST8310 compasses: -define AP_COMPASS_IST8310_EXTERNAL_BUS_PROBING_ENABLED AP_COMPASS_IST8310_ENABLED diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoX21/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoX21/hwdef.dat index 4b3200d3bc341..0125fdbbaa6e6 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/mRoX21/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoX21/hwdef.dat @@ -1,7 +1,7 @@ # hw definition file for processing by chibios_hwdef.py for the # mRo X2.1 board. This is a fmuv3, with BRD_TYPE forced to 20 -include ../fmuv3/hwdef.dat +include ../fmuv3/fmuv3.inc define BOARD_TYPE_DEFAULT 20 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/skyviper-v2450/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/skyviper-v2450/hwdef.dat index aa484f57f0030..f8bb11ed378ab 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/skyviper-v2450/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/skyviper-v2450/hwdef.dat @@ -142,8 +142,6 @@ define HAL_STORAGE_SIZE 16384 define HAL_HAVE_SAFETY_SWITCH 1 -define HAL_HAVE_IMU_HEATER 1 - define HAL_BATT_VOLT_PIN 2 define HAL_BATT_CURR_PIN 3 define HAL_BATT_VOLT_SCALE 10.1 diff --git a/libraries/AP_HAL_SITL/HAL_SITL_Class.h b/libraries/AP_HAL_SITL/HAL_SITL_Class.h index fb9ded3887ad4..6b6e531a06355 100644 --- a/libraries/AP_HAL_SITL/HAL_SITL_Class.h +++ b/libraries/AP_HAL_SITL/HAL_SITL_Class.h @@ -27,6 +27,11 @@ class HAL_SITL : public AP_HAL::HAL { } bool get_storage_fram_enabled() const { return storage_fram_enabled; } + bool get_dds_use_sim_time() const { return dds_use_sim_time; } + void set_dds_use_sim_time(bool _enabled) { + dds_use_sim_time = _enabled; + } + /* instructs the simulation to wipe any storage as it opens it: */ @@ -54,6 +59,7 @@ class HAL_SITL : public AP_HAL::HAL { bool storage_posix_enabled = true; bool storage_flash_enabled; bool storage_fram_enabled; + bool dds_use_sim_time = false; // set to true if simulation is to wipe storage as it is opened: bool wipe_storage; diff --git a/libraries/AP_HAL_SITL/SITL_Periph_State.cpp b/libraries/AP_HAL_SITL/SITL_Periph_State.cpp index 5ba383559d10c..bf015a65f1ac0 100644 --- a/libraries/AP_HAL_SITL/SITL_Periph_State.cpp +++ b/libraries/AP_HAL_SITL/SITL_Periph_State.cpp @@ -134,8 +134,7 @@ void SITL_State::wait_clock(uint64_t wait_time_usec) struct sitl_input input {}; sitl_model->update(input); // delays up to 1 millisecond sim_update(); - constexpr float throttle = 0.0f; - update_voltage_current(throttle); + set_voltage_current_pins(sitl_model->get_battery_voltage(), sitl_model->get_battery_current()); } else { usleep(1000); } diff --git a/libraries/AP_HAL_SITL/SITL_State.cpp b/libraries/AP_HAL_SITL/SITL_State.cpp index dbbefe1e8cc39..1003258570021 100644 --- a/libraries/AP_HAL_SITL/SITL_State.cpp +++ b/libraries/AP_HAL_SITL/SITL_State.cpp @@ -75,6 +75,9 @@ void SITL_State::_sitl_setup() _sitl->irlock_port = _irlock_port; _sitl->rcin_port = _rcin_port; + + fprintf(stdout, "Using \\clock topic for DDS timing: %s\n", _use_dds_sim_time ? "enabled" : "disabled"); + _sitl->use_dds_sim_time = _use_dds_sim_time; } // start with non-zero clock @@ -391,7 +394,7 @@ void SITL_State::_simulator_servos(struct sitl_input &input) } _sitl->throttle = throttle; - update_voltage_current(throttle); + set_voltage_current_pins(sitl_model->get_battery_voltage(), sitl_model->get_battery_current()); } void SITL_State::init(int argc, char * const argv[]) diff --git a/libraries/AP_HAL_SITL/SITL_State.h b/libraries/AP_HAL_SITL/SITL_State.h index e4c1bff44f888..8f72d5d540a75 100644 --- a/libraries/AP_HAL_SITL/SITL_State.h +++ b/libraries/AP_HAL_SITL/SITL_State.h @@ -96,6 +96,8 @@ class HALSITL::SITL_State : public SITL_State_Common { bool _use_fg_view; + bool _use_dds_sim_time = false; + const char *_fg_address; // simulation model name as given on the command line, for diff --git a/libraries/AP_HAL_SITL/SITL_State_common.cpp b/libraries/AP_HAL_SITL/SITL_State_common.cpp index ee485b188681d..3766ef5280e32 100644 --- a/libraries/AP_HAL_SITL/SITL_State_common.cpp +++ b/libraries/AP_HAL_SITL/SITL_State_common.cpp @@ -473,32 +473,13 @@ void SITL_State_Common::sim_update(void) } /* - update voltage and current pins + set voltage and current pin values */ -void SITL_State_Common::update_voltage_current(float throttle) +void SITL_State_Common::set_voltage_current_pins(float voltage, float current_amp) { - float voltage = 0; - float current = 0; - - if (_sitl != nullptr) { - if (_sitl->state.battery_voltage <= 0) { - if (_vehicle == ArduSub) { - voltage = sitl_model->get_battery_voltage(); - current = sitl_model->get_battery_current(); - } else { - voltage = sitl_model->get_battery_voltage(); - current = sitl_model->get_battery_current(); - } - } else { - // FDM provides voltage and current - voltage = _sitl->state.battery_voltage; - current = _sitl->state.battery_current; - } - } - // assume 3DR power brick voltage_pin_voltage = (voltage / 10.1f); - current_pin_voltage = current/17.0f; + current_pin_voltage = current_amp / 17.0f; // fake battery2 as just a 25% gain on the first one voltage2_pin_voltage = voltage_pin_voltage * 0.25f; current2_pin_voltage = current_pin_voltage * 0.25f; diff --git a/libraries/AP_HAL_SITL/SITL_State_common.h b/libraries/AP_HAL_SITL/SITL_State_common.h index d52eeb1c396cb..61976497d2850 100644 --- a/libraries/AP_HAL_SITL/SITL_State_common.h +++ b/libraries/AP_HAL_SITL/SITL_State_common.h @@ -228,7 +228,7 @@ class HALSITL::SITL_State_Common { SITL::SIM *_sitl; - void update_voltage_current(float throttle); + void set_voltage_current_pins(float voltage, float current_amp); }; #endif // CONFIG_HAL_BOARD == HAL_BOARD_SITL diff --git a/libraries/AP_HAL_SITL/SITL_cmdline.cpp b/libraries/AP_HAL_SITL/SITL_cmdline.cpp index 9894178e5f2a2..e3f413c1a6565 100644 --- a/libraries/AP_HAL_SITL/SITL_cmdline.cpp +++ b/libraries/AP_HAL_SITL/SITL_cmdline.cpp @@ -117,6 +117,7 @@ void SITL_State::_usage(void) "\t--start-time TIMESTR set simulation start time in UNIX timestamp\n" "\t--sysid ID set MAV_SYSID\n" "\t--slave number set the number of JSON slaves\n" + "\t--use_sim_time use ROS2 simulation clock for DDS topics. Defaults to false\n" ); } @@ -313,6 +314,9 @@ void SITL_State::_parse_command_line(int argc, char * const argv[]) #endif #if STORAGE_USE_FRAM CMDLINE_SET_STORAGE_FRAM_ENABLED, +#endif +#if AP_DDS_ENABLED + CMDLINE_DDS_USE_SIM_TIME, #endif }; @@ -372,6 +376,9 @@ void SITL_State::_parse_command_line(int argc, char * const argv[]) #endif #if STORAGE_USE_FRAM {"set-storage-fram-enabled", true, 0, CMDLINE_SET_STORAGE_FRAM_ENABLED}, +#endif +#if AP_DDS_ENABLED + {"use_sim_time", true, 0, CMDLINE_DDS_USE_SIM_TIME}, #endif {"vehicle", true, 0, 'v'}, {0, false, 0, 0} @@ -554,6 +561,15 @@ void SITL_State::_parse_command_line(int argc, char * const argv[]) case CMDLINE_SET_STORAGE_FRAM_ENABLED: storage_fram_enabled = atoi(gopt.optarg); break; +#endif +#if AP_DDS_ENABLED + case CMDLINE_DDS_USE_SIM_TIME: + if (strcasecmp(gopt.optarg, "true") == 0) { + _use_dds_sim_time = true; + } else { + _use_dds_sim_time = false; + } + break; #endif case 'h': _usage(); diff --git a/libraries/AP_Scripting/docs/docs.lua b/libraries/AP_Scripting/docs/docs.lua index f99b81e683823..1d926db56db33 100644 --- a/libraries/AP_Scripting/docs/docs.lua +++ b/libraries/AP_Scripting/docs/docs.lua @@ -2979,6 +2979,11 @@ gcs = {} ---@param value number -- value to send function gcs:send_named_float(name, value) end +-- send named integer value using NAMED_VALUE_INT message +---@param name string -- up to 10 chars long +---@param value integer -- value to send +function gcs:send_named_int(name, value) end + -- send named string value using NAMED_VALUE_STRING message ---@param name string -- up to 10 chars long ---@param value string -- value to send, up to 64 chars long diff --git a/libraries/AP_Scripting/examples/simple_loop.lua b/libraries/AP_Scripting/examples/simple_loop.lua index 46330f938cfad..b4b449c7578e6 100644 --- a/libraries/AP_Scripting/examples/simple_loop.lua +++ b/libraries/AP_Scripting/examples/simple_loop.lua @@ -6,6 +6,7 @@ function update() -- this is the loop which periodically runs gcs:send_text(0, "hello, world") -- send the traditional message gcs:send_named_float('Lua Float',number) -- send a value + gcs:send_named_int('Lua Int', math.floor(number)) -- send the integer part of the value number = number + math.random() -- change the value return update, 1000 -- reschedules the loop diff --git a/libraries/AP_Scripting/generator/description/bindings.desc b/libraries/AP_Scripting/generator/description/bindings.desc index c55c9647085bc..684704b18a864 100644 --- a/libraries/AP_Scripting/generator/description/bindings.desc +++ b/libraries/AP_Scripting/generator/description/bindings.desc @@ -315,6 +315,7 @@ 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'skip_check uint32_t'skip_check int32_t -1 INT32_MAX singleton GCS method send_named_float void string float'skip_check +singleton GCS method send_named_int void string int32_t'skip_check singleton GCS method send_named_string void string string singleton GCS method frame_type MAV_TYPE'enum singleton GCS method get_hud_throttle int16_t diff --git a/libraries/GCS_MAVLink/GCS.cpp b/libraries/GCS_MAVLink/GCS.cpp index 81c0239119f93..cdaa7fda23db6 100644 --- a/libraries/GCS_MAVLink/GCS.cpp +++ b/libraries/GCS_MAVLink/GCS.cpp @@ -353,6 +353,34 @@ void GCS::send_named_float(const char *name, float value) const #endif // HAL_LOGGING_ENABLED } +void GCS::send_named_int(const char *name, int32_t value) const +{ + mavlink_named_value_int_t packet {}; + packet.time_boot_ms = AP_HAL::millis(); + packet.value = value; + memcpy(packet.name, name, MIN(strlen(name), (uint8_t)MAVLINK_MSG_NAMED_VALUE_INT_FIELD_NAME_LEN)); + + gcs().send_to_active_channels(MAVLINK_MSG_ID_NAMED_VALUE_INT, + (const char *)&packet); +#if HAL_LOGGING_ENABLED +// @LoggerMessage: NVI +// @Description: Named Value Int messages; messages sent to GCS via NAMED_VALUE_INT +// @Field: TimeUS: Time since system startup +// @Field: Name: Name of int +// @Field: Value: Value of int + AP::logger().Write( + "NVI", + "TimeUS," "Name," "Value", + "s" "#" "-", + "F" "-" "-", + "Q" "N" "f", + AP_HAL::micros64(), + name, + value + ); +#endif // HAL_LOGGING_ENABLED +} + void GCS::send_named_string(const char *name, const char *value) const { mavlink_named_value_string_t packet {}; diff --git a/libraries/GCS_MAVLink/GCS.h b/libraries/GCS_MAVLink/GCS.h index 790080013cff8..9d845e40dcef6 100644 --- a/libraries/GCS_MAVLink/GCS.h +++ b/libraries/GCS_MAVLink/GCS.h @@ -378,6 +378,7 @@ class GCS_MAVLINK void send_gimbal_manager_information() const; void send_gimbal_manager_status() const; void send_named_float(const char *name, float value) const; + void send_named_int(const char *name, int32_t value) const; void send_home_position() const; void send_gps_global_origin() const; virtual void send_attitude_target() {}; @@ -1202,6 +1203,7 @@ class GCS void send_message(enum ap_message id); void send_mission_item_reached_message(uint16_t mission_index); void send_named_float(const char *name, float value) const; + void send_named_int(const char *name, int32_t value) const; void send_named_string(const char *name, const char *value) const; void send_parameter_value(const char *param_name, diff --git a/libraries/GCS_MAVLink/GCS_Common.cpp b/libraries/GCS_MAVLink/GCS_Common.cpp index d5a75d67eecd7..e6c558dc28cd6 100644 --- a/libraries/GCS_MAVLink/GCS_Common.cpp +++ b/libraries/GCS_MAVLink/GCS_Common.cpp @@ -3096,6 +3096,13 @@ void GCS_MAVLINK::send_named_float(const char *name, float value) const mavlink_msg_named_value_float_send(chan, AP_HAL::millis(), float_name, value); } +void GCS_MAVLINK::send_named_int(const char *name, int32_t value) const +{ + char int_name[MAVLINK_MSG_NAMED_VALUE_INT_FIELD_NAME_LEN+1] {}; + strncpy(int_name, name, MAVLINK_MSG_NAMED_VALUE_INT_FIELD_NAME_LEN); + mavlink_msg_named_value_int_send(chan, AP_HAL::millis(), int_name, value); +} + #if AP_AHRS_ENABLED void GCS_MAVLINK::send_home_position() const { diff --git a/libraries/SITL/SIM_Multicopter.cpp b/libraries/SITL/SIM_Multicopter.cpp index 80b378f759d03..2a2adcba3819a 100644 --- a/libraries/SITL/SIM_Multicopter.cpp +++ b/libraries/SITL/SIM_Multicopter.cpp @@ -74,14 +74,7 @@ void MultiCopter::update(const struct sitl_input &input) accel_body.zero(); } - battery.maybe_reset(sitl->batt_voltage, sitl->batt_capacity_ah); - battery_voltage = battery.get_voltage(); - battery_current = frame->get_current_amp(); - battery_temperature_degC = battery.get_temperature_degC(); - - const uint64_t now_us = AP_HAL::micros64(); - battery.consume_energy(battery_current, now_us); - + update_battery(); update_dynamics(rot_accel); update_external_payload(input); @@ -93,3 +86,12 @@ void MultiCopter::update(const struct sitl_input &input) update_mag_field_bf(); } +void MultiCopter::update_battery() { + battery.maybe_reset(sitl->batt_voltage, sitl->batt_capacity_ah); + battery_voltage = battery.get_voltage(); + battery_current = frame->get_current_amp(); + battery_temperature_degC = battery.get_temperature_degC(); + + const uint64_t now_us = AP_HAL::micros64(); + battery.consume_energy(battery_current, now_us); +} diff --git a/libraries/SITL/SIM_Multicopter.h b/libraries/SITL/SIM_Multicopter.h index b1fa4de706d04..0c4b59b50362e 100644 --- a/libraries/SITL/SIM_Multicopter.h +++ b/libraries/SITL/SIM_Multicopter.h @@ -47,6 +47,7 @@ class MultiCopter : public Aircraft { // calculate rotational and linear accelerations void calculate_forces(const struct sitl_input &input, Vector3f &rot_accel, Vector3f &body_accel); Frame *frame; + void update_battery() override; }; } diff --git a/libraries/SITL/SITL.h b/libraries/SITL/SITL.h index 896cfeee97822..c98e012c4b812 100644 --- a/libraries/SITL/SITL.h +++ b/libraries/SITL/SITL.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include "SIM_Buzzer.h" @@ -264,6 +265,10 @@ class SIM { AP_Float uart_byte_loss_pct; +#ifdef AP_DDS_ENABLED + bool use_dds_sim_time = false; // use ROS2 simulation time for DDS topics +#endif + #ifdef SFML_JOYSTICK AP_Int8 sfml_joystick_id; AP_Int8 sfml_joystick_axis[8];