diff --git a/ArduCopter/Copter.cpp b/ArduCopter/Copter.cpp index 5545f9f00cd6f..251c8b34f094c 100644 --- a/ArduCopter/Copter.cpp +++ b/ArduCopter/Copter.cpp @@ -216,9 +216,6 @@ void Copter::setup() // Load the default values of variables listed in var_info[]s AP_Param::setup_sketch_defaults(); - // setup storage layout for copter - StorageManager::set_layout_copter(); - init_ardupilot(); // initialise the main loop scheduler diff --git a/ArduCopter/ReleaseNotes.txt b/ArduCopter/ReleaseNotes.txt index d11a0b162e977..ec93b435802a2 100644 --- a/ArduCopter/ReleaseNotes.txt +++ b/ArduCopter/ReleaseNotes.txt @@ -1,5 +1,18 @@ ArduPilot Copter Release Notes: ------------------------------------------------------------------ +Copter 4.0.7 22-Feb-2021 +Changes from 4.0.7-rc1 +1) fixed build on Durandal board +2) multiple fixes for mRo boards: ControlZero*, PixracerPro +------------------------------------------------------------------ +Copter 4.0.7rc1 6-Feb-2021 +Changes from 4.0.6 +1) added automatic backup/restore of parameters in case of FRAM corruption for F7/H7 boards with 32k FRAM parameter storage +2) fixed a bug in EKF2/EKF3 that could cause memory corruption if external naviagtion sources (such as vision based position and velocity data) is supplied before the EKF has initialised +3) fixed a problem with low accuracy data from UAVCAN GPS modules when GPS blending is enabled +4) fixed an arming check failure with u-blox M9 based GPS modules +5) fixed a race condition in SmartRTL which could cause a LAND mode to be triggered +------------------------------------------------------------------ Copter 4.0.6 25-Jan-2021 / 4.0.6-rc2 16-Jan-2021 Changes from 4.0.6-rc1 1) Add support for keeping a backup of storage for last 100 boots diff --git a/ArduCopter/mode.h b/ArduCopter/mode.h index dad30d75947b0..c87bc2ffc9f1e 100644 --- a/ArduCopter/mode.h +++ b/ArduCopter/mode.h @@ -1107,6 +1107,10 @@ class ModeSmartRTL : public ModeRTL { void land(); SmartRTLState smart_rtl_state = SmartRTL_PathFollow; + // keep track of how long we have failed to get another return + // point while following our path home. If we take too long we + // may choose to land the vehicle. + uint32_t path_follow_last_pop_fail_ms; }; diff --git a/ArduCopter/mode_smart_rtl.cpp b/ArduCopter/mode_smart_rtl.cpp index dde31446e3bac..97d0215c6a95d 100644 --- a/ArduCopter/mode_smart_rtl.cpp +++ b/ArduCopter/mode_smart_rtl.cpp @@ -69,6 +69,7 @@ void ModeSmartRTL::wait_cleanup_run() // check if return path is computed and if yes, begin journey home if (g2.smart_rtl.request_thorough_cleanup()) { + path_follow_last_pop_fail_ms = 0; smart_rtl_state = SmartRTL_PathFollow; } } @@ -87,7 +88,10 @@ void ModeSmartRTL::path_follow_run() // if we are close to current target point, switch the next point to be our target. if (wp_nav->reached_wp_destination()) { Vector3f next_point; + // this pop_point can fail if the IO task currently has the + // path semaphore. if (g2.smart_rtl.pop_point(next_point)) { + path_follow_last_pop_fail_ms = 0; bool fast_waypoint = true; if (g2.smart_rtl.get_num_points() == 0) { // this is the very last point, add 2m to the target alt and move to pre-land state @@ -98,8 +102,18 @@ void ModeSmartRTL::path_follow_run() // send target to waypoint controller wp_nav->set_wp_destination_NED(next_point); wp_nav->set_fast_waypoint(fast_waypoint); - } else { - // this can only happen if we fail to get the semaphore which should never happen but just in case, land + } else if (g2.smart_rtl.get_num_points() == 0) { + // We should never get here; should always have at least + // two points and the "zero points left" is handled above. + INTERNAL_ERROR(AP_InternalError::error_t::flow_of_control); + smart_rtl_state = SmartRTL_PreLandPosition; + } else if (path_follow_last_pop_fail_ms == 0) { + // first time we've failed to pop off (ever, or after a success) + path_follow_last_pop_fail_ms = AP_HAL::millis(); + } else if (AP_HAL::millis() - path_follow_last_pop_fail_ms > 10000) { + // we failed to pop a point off for 10 seconds. This is + // almost certainly a bug. + INTERNAL_ERROR(AP_InternalError::error_t::flow_of_control); smart_rtl_state = SmartRTL_PreLandPosition; } } diff --git a/ArduCopter/version.h b/ArduCopter/version.h index b71042fbdeaf6..739f6f176156a 100644 --- a/ArduCopter/version.h +++ b/ArduCopter/version.h @@ -6,12 +6,13 @@ #include "ap_version.h" -#define THISFIRMWARE "ArduCopter V4.0.6" +#define THISFIRMWARE "ArduCopter V4.0.7" // the following line is parsed by the autotest scripts -#define FIRMWARE_VERSION 4,0,6,FIRMWARE_VERSION_TYPE_OFFICIAL +#define FIRMWARE_VERSION 4,0,7,FIRMWARE_VERSION_TYPE_OFFICIAL #define FW_MAJOR 4 #define FW_MINOR 0 -#define FW_PATCH 6 +#define FW_PATCH 7 #define FW_TYPE FIRMWARE_VERSION_TYPE_OFFICIAL + diff --git a/Tools/bootloaders/mRoControlZeroClassic_bl.bin b/Tools/bootloaders/mRoControlZeroClassic_bl.bin new file mode 100755 index 0000000000000..17642c5c0bb17 Binary files /dev/null and b/Tools/bootloaders/mRoControlZeroClassic_bl.bin differ diff --git a/Tools/bootloaders/mRoControlZeroClassic_bl.hex b/Tools/bootloaders/mRoControlZeroClassic_bl.hex new file mode 100644 index 0000000000000..7dbf9cf9c6978 --- /dev/null +++ b/Tools/bootloaders/mRoControlZeroClassic_bl.hex @@ -0,0 +1,986 @@ +:020000040800F2 +:1000000000060020A1020008DD0F0008E10F000833 +:1000100039100008E10F00080D100008A3020008C5 +:10002000A3020008A3020008A3020008E5330008A9 +:10003000A3020008A3020008A3020008A30200080C +:10004000A3020008A3020008A3020008A3020008FC +:10005000A3020008A3020008D537000801380008F1 +:100060002D3800085938000885380008A302000818 +:10007000A3020008A3020008A3020008A3020008CC +:10008000A3020008A3020008A3020008A3020008BC +:10009000A3020008A3020008A3020008B138000868 +:1000A000A3020008A3020008A3020008A30200089C +:1000B000A3020008A3020008A3020008A30200088C +:1000C000A3020008A3020008A3020008A30200087C +:1000D000A3020008A3020008A3020008A30200086C +:1000E00019390008A3020008A3020008A3020008AF +:1000F000A3020008A3020008A3020008A30200084C +:10010000A3020008A302000861340008A30200084B +:10011000A3020008A3020008A3020008A30200082B +:10012000A3020008A3020008A3020008A30200081B +:10013000A3020008A3020008A3020008A30200080B +:10014000A3020008A3020008A3020008A3020008FB +:10015000A3020008A3020008A3020008A3020008EB +:10016000A3020008A3020008A3020008A3020008DB +:10017000A3020008592E0008A3020008A3020008E9 +:10018000A3020008A3020008A3020008A3020008BB +:10019000A3020008A3020008A3020008A3020008AB +:1001A000A3020008A3020008A3020008A30200089B +:1001B000A3020008A3020008A3020008A30200088B +:1001C000A3020008A3020008A3020008A30200087B +:1001D000A3020008452E0008A3020008A30200089D +:1001E000A3020008A3020008A3020008A30200085B +:1001F000A3020008A3020008A3020008A30200084B +:10020000A3020008A3020008A3020008A30200083A +:10021000A3020008A3020008A3020008A30200082A +:10022000A3020008A3020008A3020008A30200081A +:10023000A3020008A3020008A3020008A30200080A +:10024000A3020008A3020008A3020008A3020008FA +:10025000A3020008A3020008A3020008A3020008EA +:10026000A3020008A3020008A3020008A3020008DA +:10027000A3020008A3020008A3020008A3020008CA +:10028000A3020008A3020008A3020008A3020008BA +:10029000A3020008A3020008A3020008A3020008AA +:1002A00002E000F000F8FEE772B6394880F30888F3 +:1002B000384880F3098838484EF60851CEF20001DC +:1002C000086040F20000CCF200004EF63471CEF22D +:1002D00000010860BFF34F8FBFF36F8F40F2000043 +:1002E000C0F2F0004EF68851CEF200010860BFF374 +:1002F0004F8FBFF36F8F4FF00000E1EE100A4EF604 +:100300003C71CEF200010860062080F31488BFF330 +:100310006F8F02F043F802F0E3FF4FF055301F49B2 +:100320001B4A91423CBF41F8040BFAE71C49194AA9 +:1003300091423CBF41F8040BFAE71A491A4A1B4B99 +:100340009A423EBF51F8040B42F8040BF8E7002034 +:100350001749184A91423CBF41F8040BFAE702F0F2 +:1003600061F803F031F8144C144DAC4203DA54F840 +:10037000041B8847F9E700F03FF8114C114DAC42DF +:1003800003DA54F8041B8847F9E702F049B8000083 +:1003900000060020002200200000000800000020CD +:1003A00000060020303D00080022002044220020EA +:1003B00048220020D82E0020A0020008A002000839 +:1003C000A0020008A00200082DE9F04F2DED108AD0 +:1003D000C1F80CD0D0F80CD0BDEC108ABDE8F08F7D +:1003E000002383F311882846A047002001F030FC49 +:1003F00001F04CFB00DFFEE738B5204C6FF0010345 +:10040000002523700323A57063701E23E5702571FA +:100410006571A571E57125726572A372E57200F0D0 +:10042000D7FC20B10E2325726572A372E57201F02C +:1004300077FF044601F0ACFF0546D0B9104B9C4253 +:1004400019D001339C4241F2883412BF0546002482 +:100450000125002001F06EFF0DB100F05BF800F007 +:100460008FFD00F0FDFB204600F014F900F052F87B +:10047000F9E70024EDE70446EBE700BF482200203F +:10048000010007B008B500F08DFBA0F12003584231 +:10049000584108BD054B07B51B88022101A8ADF8DE +:1004A000043000F0CDFB03B05DF804FB1C3A0008FB +:1004B00010B5202383F311881248C3680BB101F0F3 +:1004C0004DFC0023104A4FF47A710E4801F00AFCEB +:1004D000002383F311880D4C236813B12368013B7B +:1004E0002360636813B16368013B6360084B1B784A +:1004F00033B9636823B9022000F0AAFC3223636099 +:1005000010BD00BF54220020B10400087023002059 +:1005100068220020554B56492DE9F04153F8042F2D +:10052000013201D1BDE8F0818B42F7D1514C524BE1 +:1005300022689A4240F29880504B9B6803F1006316 +:1005400003F500339A4280F08F80002000F0A4FB76 +:1005500002204B4B187000F06FFC4A4BD3F8E82098 +:100560000022C3F8E820D3F81011C3F81021D3F803 +:100570001011D3F8EC10C3F8EC20D3F81411C3F821 +:100580001421D3F81411D3F8F010C3F8F020D3F8E5 +:100590001811C3F81821D3F81811D3F8801041F0BE +:1005A0000061C3F88010D3F8801021F00061C3F817 +:1005B0008010D3F88010D3F8801041F00071C3F898 +:1005C0008010D3F8801021F00071C3F88010D3F8A8 +:1005D000803072B62C4B2D490B601D682468BFF328 +:1005E0004F8FBFF36F8F2A4BC3F88420BFF34F8F19 +:1005F0005A6922F480325A61BFF34F8FD3F88020BA +:1006000043F6E07EC2F3C906C2F34E32B707520189 +:1006100002EA0E0838463146013948EA000C00F17A +:100620004040B1F1FF3FC3F874C2F5D1203A12F156 +:10063000200FEDD1BFF34F8FBFF36F8FBFF34F8FFD +:10064000BFF36F8F5A6922F400325A610022C3F857 +:100650005022BFF34F8FBFF36F8F202383F3118896 +:10066000AD4685F308882047BDE8F081FCFF01080E +:100670001C00020804000208FFFF010848220020B5 +:1006800068220020004402580000020808ED00E043 +:1006900000ED00E02DE9F04F99B0B34C2022FF218E +:1006A000019010A8A66800F00DFCB04AA34613788C +:1006B000A3B90121AE481170C360202383F31188D0 +:1006C000C3680BB101F04AFB0023AA4A4FF47A71C8 +:1006D000A74801F007FB002383F31188019B13B1A6 +:1006E000A54B019A1A600023A44AA349019F994689 +:1006F0001C461D46984613704B600292012000F084 +:100700009BFB002F00F012829B4B1B68002B40F0DC +:100710000D8219B0BDE8F08F0220FFF7B3FE00286C +:1007200040F0FB81019BB9F1000F08BF1F46944BBD +:100730001B8802210BA8ADF82C3000F081FADDE710 +:100740004FF47A7000F02EFA031E0393EADB0220C6 +:10075000FFF798FE82460028E4D0039B581E042829 +:1007600000F2DD81DFE800F0030E1114170018A875 +:100770000523042140F8343D00F062FA54464FF05E +:10078000000856E004217848F6E704217D48F3E7A5 +:1007900004217D48F0E71C242046043400F07EFA52 +:1007A00004210B900BA800F04BFA2C2CF4D1E5E7B8 +:1007B000002DB7D0002CB5D00220FFF763FE054610 +:1007C000002800F0AF8101206C4C00F065FA4FF07A +:1007D00000090220207000F02FFB5FFA89FA5046D2 +:1007E00000F06AFA074658B1504609F1010900F0D5 +:1007F00073FA0028F1D12C46A9460027634B97E7EE +:1008000001233E460220237000F008FBDBF808308D +:100810009E4206D2304600F041FA0130EBD1043658 +:10082000F4E70026029BA9462C461E703746524B21 +:100830005E6000F09BFB15B1002C18BF0027FFF78E +:1008400029FE5BE7002D3FF46DAF002C3FF46AAF4B +:100850000220029B187000F0EFFA322000F0A2F99B +:10086000B0F1000AC0F25E811AF0030540F05A812F +:1008700006EB0A03DBF80820934200F25381BAF535 +:10088000807F00F24F8155450DDA4FF47A7000F009 +:1008900089F90490049B002BC0F24481049B3C4ADC +:1008A000AB540135EFE7C820FFF7ECFD0546002803 +:1008B00000F038811F2E11D8C6F1200410AB26F0AD +:1008C000030033495445184428BF5446224600F0DB +:1008D000D1FA2246FF212E4800F0F4FA4FEAAA0A84 +:1008E0002B4930465FFA8AF200F0F4FA04460028F9 +:1008F00000F01A8106EB8A0605469AE70220FFF708 +:10090000C1FD00283FF40EAF00F000FA00283FF4CC +:1009100009AF4FF0000A5346DBF8082092451CD27D +:10092000BAF11F0F12D8109A01320FD02AF0030229 +:1009300018A90A4452F8202C0B92184604220BA93D +:100940000AF1040A00F08CFB0346E5E750460393E6 +:1009500000F0A4F9039B0B90EFE718A8042140F8DE +:100960004C3D00F06DF964E7482200206C23002024 +:1009700054220020B10400087023002068220020C7 +:100980001E3A00084C22002050220020203A000885 +:100990006C22002018A80023642140F8343D00F0A8 +:1009A0002BF900287FF4BEAE0220FFF76BFD002874 +:1009B0003FF4B8AE0B9800F0A1F918AB43F8480D1E +:1009C00004211846CDE718A80023642140F8343DDF +:1009D00000F012F900287FF4A5AE0220FFF752FDC7 +:1009E00000283FF49FAE0B9800F08AF918AB43F84B +:1009F000440DE5E70220FFF745FD00283FF492AEE5 +:100A000000F094F918AB43F8400DD9E70220FFF746 +:100A100039FD00283FF486AE0BA9142000F08CF9B4 +:100A2000824618A8042140F83CAD00F009F951466F +:100A30000BA896E7322000F0B5F8B0F1000AFFF6F7 +:100A400071AE1AF0030F7FF46DAE0AEB0803DBF80A +:100A5000082093423FF666AE0220FFF713FD002800 +:100A60003FF460AE2AF0030AC244D0453FF4E1AE41 +:100A7000404608F1040800F011F904210A900AA880 +:100A800000F0DEF8F1E74FF47A70FFF7FBFC002886 +:100A90003FF448AE00F03AF900283FF4AFAE109BA7 +:100AA00001330CD0082210A9002000F013FA00280E +:100AB0003FF4A4AE2022FF2110A800F003FAFFF7B4 +:100AC000E9FC374801F0CAF823E6002D3FF42AAECE +:100AD000002C3FF427AE18A80023642140F8343DD1 +:100AE00000F08AF8824600287FF41CAE0220FFF74F +:100AF000C9FC00283FF416AE0390FFF7CBFC41F28F +:100B00008830574601F0AAF80B9800F065FA00F01B +:100B10002DFA039B1C461D46F0E5054689E64FF07D +:100B20000008FFE52546FDE52C4667E6002000F0BD +:100B300039F80490049B002BFFF6E3AD012000F090 +:100B40006DF9049B213B122B3FF6D8AD01A252F860 +:100B500023F000BF1907000841070008B10700088B +:100B6000FD060008FD060008FD060008450800080F +:100B7000350A0008FD08000895090008C7090008A3 +:100B8000F5090008FD0600080D0A0008FD0600082A +:100B9000870A000833080008FD060008CB0A000891 +:100BA000A0860100114B37B51A78002401460132A6 +:100BB0008DF80740D2B2012A11D80D4801220368EE +:100BC0001D6A4FF47A734B430DF10701A8470128C2 +:100BD00005D1084B9DF807001C7003B030BD4FF4E1 +:100BE000FA7001F03BF84FF0FF30F6E700220020EA +:100BF00060260020A423002038B50E4B05461A7845 +:100C00000132D2B2012A0ED80B48042203681C6AB2 +:100C10004FF47A734B432946A047042803D10020A0 +:100C2000064B187038BD4FF4FA7001F017F84FF00A +:100C3000FF3038BD0022002060260020A4230020C1 +:100C400030B4054C0A46014623682046DD69034B53 +:100C5000AC4630BC604700BF60260020A086010083 +:100C6000F8B50A4C00250A4E01F040FA094F2070F1 +:100C700030682378834207D901F034FA3368054499 +:100C80000133BD423360F3D9F8BD00BFA523002076 +:100C900078230020FFFF010001F0F6BA00F10060A8 +:100CA00000F500300068704700F10060920000F528 +:100CB000003001F077BA0000054B1A68054B1B782D +:100CC0009B1A834202D9104401F00CBA00207047ED +:100CD00078230020A523002038B5074D0446286856 +:100CE000204401F005FA28B928682044BDE83840BE +:100CF00001F010BA38BD00BF7823002000207047F3 +:100D0000014BC058704700BF00E8F11F064991F839 +:100D1000243033B100230822086A81F82430FFF719 +:100D2000C3BF0120704700BF7C230020014B18681F +:100D3000704700BF0010005C234BF0B5234C1B68CC +:100D40002788C3F30B0665681B0C94F90820BE4284 +:100D500028D0A789BE4206D101220C2505FB0244FA +:100D6000656894F9082041F20104A3421CD041F2C5 +:100D70000304A3421AD042F20104A34218D042F263 +:100D80000304A34208BF5622441E013D0B460C44F7 +:100D9000A34217D215F9016F581C5EB1034600F843 +:100DA000016CF5E70022D8E75A22EDE75922EBE77C +:100DB0005822E9E72C2584421D7001D9981C5A70ED +:100DC000401AF0BD1846FBE70010005C042200202A +:100DD000104B41F201015B888B429AB211D041F273 +:100DE00003018B420FD042F201039A420DD042F22E +:100DF00003039A420BD10323074A02EB8303D878FB +:100E000070470023F8E70123F6E70223F4E7002008 +:100E1000704700BF0010005C243A0008022804D18B +:100E20004FF48012034B9A6170470128FCD14FF4B4 +:100E30000032F7E700040258022803D11022034BC6 +:100E40009A6170470128FCD10222F8E70004025899 +:100E5000022805D1064A536983F010035361704795 +:100E60000128FCD1024A536983F00203F6E700BF70 +:100E700000040258002310B5934203D0CC5CC45444 +:100E80000133F9E710BD000030B5441E14F9010F1D +:100E90000B4658B193F900500131854206D11AB979 +:100EA00093F90020801A30BD013AEFE7002AF7D10C +:100EB000104630BD02460346981A13F9011B00295B +:100EC000FAD1704702440346934202D003F8011B53 +:100ED000FAE770472DE9F047234C05468846174648 +:100EE00094F8243083BB2E46DFF87C90C7B394F887 +:100EF00024302BB92022FF2148462662FFF7E2FF6B +:100F000094F824004146C0F1080504EB8000BD427E +:100F100028BF3D465FFA85FAAD00A7EB0A072A46CF +:100F20002E44FFF7A7FF94F82430A844FFB29A4458 +:100F30005FFA8AFABAF1080F84F824A0D6D1FFF735 +:100F4000E5FE0028D2D108E0266A06EB8306B0420F +:100F5000CAD0FFF7DBFE0028C5D10020BDE8F0872E +:100F60000120BDE8F08700BF7C230020024B1A78E7 +:100F7000024B1A70704700BFA423002000220020FB +:100F800038B5114D114C284600F006F92146284687 +:100F900000F02EF924680E48D4F89020D2F80438D6 +:100FA00043F00203C2F8043800F058FE0949204615 +:100FB00000F02EFAD4F89020D2F8043823F002037F +:100FC000C2F8043838BD00BF60260020F43A00089B +:100FD00040420F00143B000870470000FEE700008D +:100FE00000B59BB0EFF3098168226846FFF742FF26 +:100FF000EFF30583044B9A6BDA6A9A6A9A6A9A6AE3 +:101000009A6A9A6A9B6AFEE700ED00E000B59BB021 +:10101000EFF3098168226846FFF72CFFEFF30583A1 +:10102000044B9A6B9A6A9A6A9A6A9A6A9A6A9B6A53 +:10103000FEE700BF00ED00E000B59BB0EFF30981D3 +:1010400068226846FFF716FFEFF30583034B5A6BE0 +:101050009A6A9A6A9A6A9A6A9B6AFEE700ED00E0C9 +:1010600030B50A44074D91420BD011F8013B0924D9 +:101070005840013CF7D040F300032B4083EA500076 +:10108000F7E730BD2083B8ED002304491A465A50D3 +:10109000C81808334260802BF9D17047A82300207C +:1010A000026843681143016003B1184770470000AC +:1010B00013B5446BD4F894341A681178042915D107 +:1010C000217C022912D11979012312898B40134204 +:1010D0000CD101A904F14C0002F006F8D4F89444B4 +:1010E0000246019B2179206800F0EAF902B010BDA8 +:1010F000143001F089BF00004FF0FF33143001F0CD +:1011000083BF00004C3002F05BB800004FF0FF33AB +:101110004C3002F055B80000143001F057BF000009 +:101120004FF0FF31143001F051BF00004C3002F09D +:1011300027B800004FF0FF324C3002F021B8000019 +:10114000D0F8942438B5136805461978042901D0DD +:10115000012038BD017C0229FAD1127901205C8975 +:1011600090400440F4D105F1140001F0E9FE02467C +:101170000028EDD0D5F894544FF48073286869792D +:1011800000F08CF9204638BD406BFFF7D9BF000056 +:1011900000207047704700007FB5124B01250226E2 +:1011A000044603600023057400F18402436029466D +:1011B0008360C3600C4B0290143001934FF4807332 +:1011C000009601F099FE094B04F52372294601931C +:1011D00004F14C004FF480730294009601F060FF1C +:1011E00004B070BD503A000889110008B110000821 +:1011F0000A68202383F311880B790B3342F823000C +:101200004B79133342F823008B7913B10B3342F837 +:1012100023000223C0F894140374002383F311887D +:101220007047000038B5037F044613B190F854307E +:10123000ABB90125201D0221FFF732FF04F1140094 +:1012400025776FF0010100F031FD84F8545004F16E +:101250004C006FF00101BDE8384000F027BD38BDFB +:1012600010B5012104460430FFF71AFF002323774D +:1012700084F8543010BD000038B504460025143001 +:1012800001F052FE04F14C00257701F021FF201DF2 +:1012900084F854500121FFF703FF2046BDE8384091 +:1012A000FFF74EBF90F8803003F06003202B19D178 +:1012B00090F88120212A0AD0222A4FF000030ED074 +:1012C000202A0FD1084A42670722826704E0064BB2 +:1012D0004367072383670023C36701207047436781 +:1012E0008367F9E7002070471C220020D0F894346F +:1012F00037B51A680446117804291AD1017C0229ED +:1013000017D11979012312898B40134211D100F1B1 +:101310004C05284601F09CFF58B101A9284601F070 +:10132000E3FED4F894440246019B2179206800F042 +:10133000C7F803B030BD000001F10B03F7B550F85A +:10134000234005460E46F4B1202383F3118805EBB4 +:101350008607201D08214C34FFF7A2FEFB685B695D +:101360001B6813B1204601F0CDFE01A9204601F013 +:10137000BBFE024648B1019B3146284600F0A0F86A +:10138000002383F3118803B0F0BDFB685A6912682B +:10139000002AF5D01B8A013B1340F1D105F18002F0 +:1013A000EAE70000133138B550F82140DCB12023C2 +:1013B00083F31188D4F894241368527903EB8203E1 +:1013C000DB689B695D6845B104216018FFF768FE22 +:1013D000294604F1140001F0BDFD2046FFF7B0FEE0 +:1013E000002383F3118838BD7047000001F0A2B8D4 +:1013F000012300F1300200F150010370002343602B +:1014000042F8043B8A42D361FAD103814381704799 +:1014100038B50446202383F31188002500F10C031E +:1014200000F13002416043F8045B9342FBD1204657 +:1014300001F0A2F80223237085F3118838BD000063 +:1014400070B500EB8103054650690E461446DA601C +:1014500018B110220021FFF735FDA06918B1102244 +:101460000021FFF72FFD31462846BDE8704001F00E +:1014700095B90000038900F13002002103F0010357 +:101480000381438903F00103438100F1100343F812 +:10149000041B9342FBD101F019BA0000F0B40125FE +:1014A00000EB810447898D40E4683D43A469458190 +:1014B00023600023A2606360F0BC01F035BA000035 +:1014C000F0B4012500EB810407898D40E4683D43B9 +:1014D0006469058123600023A2606360F0BC01F0B1 +:1014E000ADBA0000022300F10C0200F1300110B58A +:1014F000037004460023A0F8883080F88A3080F812 +:101500008B300381438142F8043B8A42FBD184F84B +:101510007030204601F0D6F863681B6823B120467E +:101520000021BDE81040184710BD00000278436854 +:1015300080F88C2005221B6802700BB1042118472B +:1015400070470000436890F88C201B6802700BB154 +:10155000052118477047000090F8703070B50446B8 +:1015600013B1002380F8703004F18002204601F0AE +:10157000D1F963689B6863BB94F8805015F06006EE +:1015800015D194F8813005F07F0545EA032540F236 +:1015900002339D4200F00E815BD8022D00F0DC800A +:1015A0003FD8002D00F08780012D00F0CF80002172 +:1015B000204601F067FC0021204601F057FC6368DB +:1015C0001B6813B1062120469847062384F8703023 +:1015D00070BD204698470028CED094F8872094F814 +:1015E000863043EA0223A26F934238BFA36794F97F +:1015F0008030A56F002B4FF0200380F2FD80002D7E +:1016000000F0EC80092284F8702083F31188002117 +:10161000A36F626F2046FFF753FF002383F3118807 +:1016200070BDB5F5817F00F0B180B5F5407F49D040 +:10163000B5F5807FBBD194F88230012BB7D1B4F8D7 +:10164000883023F00203A4F888306667A667E6674F +:10165000C3E740F201639D421ED8B5F5C06F3BD28F +:10166000B5F5A06FA3D1B4F88030B3F5A06F0ED15B +:1016700094F88230204684F88A3001F081F863685B +:101680001B6813B1012120469847032323700023D0 +:101690006367A367E367A0E7B5F5106F32D040F644 +:1016A00002439D4252D0B5F5006F80D104F18B0307 +:1016B0006367012324E004F18803E567636702237D +:1016C000A3678AE794F88230012B7FF470AFB4F8F7 +:1016D000883043F00203B6E794F88520204661681D +:1016E00094F884304D6843EA022394F8831094F808 +:1016F0008220A84700283FF45AAF43686367036815 +:10170000A367A4E72378042B10D1202383F3118847 +:101710002046FFF7AFFE86F311886368032184F843 +:101720008B601B6821700BB12046984794F882307B +:10173000002BACD084F88B300423237063681B68C3 +:10174000002BA4D0022120469847A0E7374B6367BF +:101750000223A36700239DE794F88410204611F02C +:10176000800F01F00F010ED001F0C6F8012806D05D +:1017700002287FF41CAF2E4BA067636767E72D4BF1 +:10178000A567636763E701F0A9F8EFE794F8823093 +:10179000002B7FF40CAF94F8843013F00F013FF46A +:1017A00076AF1A06204602D501F084FB6FE701F000 +:1017B00075FB6CE794F88230002B7FF4F8AE94F858 +:1017C000843013F00F013FF462AF1B06204602D5B0 +:1017D00001F058FB5BE701F049FB58E7142284F85D +:1017E000702083F311882B462A4629462046FFF7AE +:1017F00055FE85F3118870BD5DB1152284F8702007 +:1018000083F311880021A36F626F2046FFF746FE25 +:1018100003E70B2284F8702083F311882B462A46B5 +:1018200029462046FFF74CFEE3E700BF803A000858 +:10183000783A00087C3A000838B590F870300446D1 +:10184000152B29D8DFE803F03E28282828283E2831 +:10185000280B293928282828282828283E3E90F8AF +:10186000871090F88620836F42EA01229A4214D9A9 +:10187000C268128AB3FBF2F502FB15356DB920235D +:1018800083F311882B462A462946FFF719FE85F374 +:1018900011880A2384F8703038BD142384F870301E +:1018A000202383F31188002320461A461946FFF7A8 +:1018B000F5FD002383F3118838BDC36F03B198474A +:1018C0000023E7E7002101F0DDFA0021204601F0C6 +:1018D000CDFA63681B6813B106212046984706239A +:1018E000D8E7000090F87020152A38B5044622D8B1 +:1018F0000123934040F6416213421DD113F4801539 +:101900000FD19B0217D50B2380F87030202383F36F +:1019100011882B462A462946FFF7D2FD85F3118808 +:1019200038BDC3689B695B682BB9C36F03B1984727 +:10193000002384F8703038BD002101F0A3FA0021A3 +:10194000204601F093FA63681B6813B10621204614 +:1019500098470623EDE70000024B00221B605B6006 +:101960009A60704728240020002382680374054B86 +:101970001B6899689142FBD25A680360426010600C +:10198000586070472824002008B5202383F311886D +:10199000037C032B05D0042B0DD02BB983F31188C6 +:1019A00008BD436900221A604FF0FF334361FFF71F +:1019B000DBFF0023F2E790E80C001A600268536036 +:1019C000F2E70000002382680374054B1B689968E6 +:1019D0009142FBD85A6803604260106058607047BB +:1019E00028240020054B19690874186802685360A0 +:1019F0001A60186101230374FEF7E6BC2824002056 +:101A00004B1C30B5054687B00A4C10D0236901A89D +:101A1000094A00F067F92846FFF7E4FF049B13B179 +:101A200001A800F09BF92369586907B030BDFFF7A2 +:101A3000D9FFF8E7282400208919000838B50C4D93 +:101A4000044641612B6981689A68914203D8BDE8D8 +:101A50003840FFF789BF1846FFF786FF01232C6146 +:101A6000014623742046BDE83840FEF7ADBC00BFF8 +:101A700028240020044B1A681B6990689B689842D0 +:101A800094BF0020012070472824002010B5084C86 +:101A9000236820691A6854602260012223611A7445 +:101AA000FFF790FF01462069BDE81040FEF78CBCAF +:101AB00028240020FEE7000010B5194CFFF74CFF6A +:101AC00000F002F980221749204600F087F8012330 +:101AD00044F8180C0374144B144AD96821F4E061DB +:101AE0000904090C0A431249DA60CA6842F080729C +:101AF000CA60104A1049C2F8B01F116841F00101D4 +:101B000011601022DA77202283F82220002383F349 +:101B1000118862B60948BDE8104000F081B800BFE6 +:101B200050240020843A000800ED00E00003FA058C +:101B3000F0ED00E0001000E055CEACC58C3A000896 +:101B40002DE9F84F1E4C4FF00008DFF878906569DA +:101B500004F11407D9F82430266AAA689E1B96421D +:101B60001CD34FF0200AAA68236AD5F80CB0B61A25 +:101B7000134423622B68BB425F606361C5F80C802D +:101B800001D101F091FB88F311882869D8478AF3C5 +:101B900011886569AB689E42E5D2DBE76269BA42AB +:101BA0000CD0916823628E1B9660A86802282CBF17 +:101BB0001818981CBDE8F84F01F07CBBBDE8F88F01 +:101BC00028240020000C0040034B59685A68521A20 +:101BD0009042FBD8704700BF001000E082600222F4 +:101BE00002740022427470478368A3F17C0243F8B8 +:101BF0000C2C026943F83C2C426943F8382C074A04 +:101C000043F81C2CC268A3F1180043F8102C0222E0 +:101C100003F8082C002203F8072C7047E1030008A2 +:101C200010B5202383F31188FFF7DEFF002104465F +:101C3000FFF704FF002383F31188204610BD000046 +:101C4000024B1B6958610F20FFF7CCBE28240020EF +:101C5000202383F31188FFF7F3BF000008B5014686 +:101C6000202383F311880820FFF7CAFE002383F3A3 +:101C7000118808BD49B1064B42681B6918605A605B +:101C8000136043600420FFF7BBBE4FF0FF30704786 +:101C9000282400200368984206D01A680260506029 +:101CA00018465961FFF760BE7047000038B504461A +:101CB0000D462068844200D138BD036823605C6013 +:101CC0004561FFF751FEF4E7054B03F114025A6139 +:101CD0009A614FF0FF32DA6100221A62704700BF4A +:101CE00028240020F8B5036102291A4B0646C26079 +:101CF00038BF02215C6A184B1A461F4652F8145F1F +:101D000095420AD1586198611C6205604560816006 +:101D10000819BDE8F84001F0BDBA186AAB68241A8A +:101D20000C1902D3E41A2D6804E09C4202D220442C +:101D300001F0C0FAAB689C42F4D86B683560736000 +:101D40001E604FF0FF336E60B460A968091BA96084 +:101D5000FB61F8BD000C00402824002010B41A4C90 +:101D6000234653F8141F814210D0416802680A606C +:101D7000026851609A424FF00001C16003D093683D +:101D800081680B4493605DF8044B70470A6800203B +:101D90009A4262615360C86003D15DF8044B01F060 +:101DA00083BA936888680344206A9360074A526A3A +:101DB000121A9342E7D9991A5DF8044B012998BF8A +:101DC000931C184401F076BA28240020000C00402F +:101DD00000207047FEE70000704700004FF0FF3022 +:101DE00070470000022906D0032906D001290648C1 +:101DF00018BF0020704705487047032A9ABF04485F +:101E000000EBC20000207047703B0008243B000834 +:101E10002422002070B59AB006460846144601AD4B +:101E2000294600F095F82846FFF744F8C0B2431C55 +:101E30005B0086E8180023700323023404F8013C99 +:101E400000231946DAB20234904201D81AB070BDAC +:101E5000EA5C013304F8011C04F8022CF2E70000EC +:101E600008B5202383F311880348FFF73FFA0023C6 +:101E700083F3118808BD00BF6026002010B504461A +:101E8000052916D8DFE801F016150316161D2023C4 +:101E900083F311880E4A0121FFF7D2FA20460D4A3A +:101EA0000221FFF7CDFA0C48FFF7E6F9002383F390 +:101EB000118810BD202383F311880748FFF7B2F97A +:101EC000F4E7202383F311880348FFF7C9F9EDE70E +:101ED000AC3A0008D03A00086026002038B50C4D16 +:101EE0000C4C2A460C4904F10800FFF793FF05F15A +:101EF000CA0204F110000949FFF78CFF05F5CA7208 +:101F000004F118000649BDE83840FFF783BF00BF61 +:101F1000282B002024220020FC3A0008003B000867 +:101F20000B3B000870B5044608460D46FEF7C2FF9D +:101F3000C6B22046013403780BB9184670BD32464C +:101F40002946FEF7A1FF0028F3D1012070BD000053 +:101F50002DE9F04704460D46FEF7ACFF2B49C6B20B +:101F60002046FFF7DFFF08B10E36F6B228492046BB +:101F7000FFF7D8FF08B11036F6B2632E0BD8DFF8A2 +:101F80008C80DFF88C90234FDFF894A0267846B938 +:101F90002E70BDE8F08721462846BDE8F04701F0E5 +:101FA00035BD252E2ED1072241462046FEF76CFF77 +:101FB00070B9194B2A4603F1140153F8040B8B42F4 +:101FC00042F8040BF9D11B78073415351370DDE79F +:101FD000082249462046FEF757FF98B9AA1C0F4B26 +:101FE00013F8011F023209095345C95D02F8041CA8 +:101FF000197801F00F01C95D02F8031CF0D1183502 +:102000000834C3E72E7001340135BFE7903B000868 +:102010000B3B0008AE3B0008983B0008FFE7F11FB0 +:102020000BE8F11FBFF34F8F044B1A695107FCD126 +:10203000D3F810215207F8D1704700BF002000529A +:1020400008B50D4B1B78ABB9FFF7ECFF0B4BDA680B +:10205000D10704D50A4A5A6002F188325A60D3F88F +:102060000C21D20706D5064AC3F8042102F18832B2 +:10207000C3F8042108BD00BF862D002000200052B7 +:102080002301674508B5114B1B78F3B9104B1A694A +:10209000510703D5DA6842F04002DA60D3F8102124 +:1020A000520705D5D3F80C2142F04002C3F80C21A9 +:1020B000FFF7B8FF064BDA6842F00102DA60D3F8A6 +:1020C0000C2142F00102C3F80C2108BD862D00202E +:1020D000002000520F289ABF00F5806040040020C5 +:1020E000704700004FF40030704700001020704728 +:1020F0000F2808B50BD8FFF7EDFF00F50033026895 +:10210000013204D104308342F9D1012008BD0020FE +:1021100008BD00000F2810B504463FD8FFF782FF26 +:10212000FFF78EFF1E484FF0FF33072C4361C0F8C6 +:1021300014311DD80361FFF775FF230243F0240318 +:10214000C360C36843F08003C36003695A07FCD4CB +:10215000FFF768FF2046FFF7BDFF4FF4003100F0A6 +:10216000F9F8FFF78FFF2046BDE81040FFF7C0BF2A +:10217000C0F81031FFF756FFA4F108031B0243F02B +:102180002403C0F80C31D0F80C3143F08003C0F8C0 +:102190000C31D0F810315B07FBD4D9E7002010BD1B +:1021A000002000522DE9F84F40EA02030546894617 +:1021B0009046DB065AD122F00302034602449342C2 +:1021C00005D1FFF73DFF4E46DFF8B8B042E0196891 +:1021D00001314BD10433F2E7264A05F17843264812 +:1021E0009342264B264F88BF9A46A3F1FC039CBF1F +:1021F000DA46184603F1F80388BF1F46FFF712FFBF +:102200004FF0FF3306F11C02A5EB060E03603B689E +:1022100043F002033B60331FDAF8004014F005047A +:10222000FAD153F8041F9A424EF80310F4D1BFF3C9 +:102230004F8FFFF7F7FE4FF0FF3320223146036048 +:1022400028463B6823F002033B6001F0CFFB58B9FE +:1022500020352036A8EB06034B441F2BBCD80120A9 +:10226000FFF710FFBDE8F88F2046F9E70020BDE832 +:10227000F88F00BFFFFF0F00142100521021005201 +:102280000C2000521020005210B5084C237828B1C1 +:1022900053B9FFF7D5FE0123237010BD23B1207081 +:1022A000BDE81040FFF7EEBE10BD00BF862D002038 +:1022B00002440439064BD2B210B5904200D110BD91 +:1022C000441C00B253F8200041F8040FE0B2F4E7D8 +:1022D000504000580F4B30B51C6F240405D41C6FC0 +:1022E0001C671C6F44F400441C670B4C0244043907 +:1022F0002368D2B243F480732360084B904200D12C +:1023000030BD441C51F8045F00B243F82050E0B2E5 +:10231000F4E700BF004402580048025850400058FB +:1023200007B5012201A90020FFF7C2FF019803B001 +:102330005DF804FB13B50446FFF7F2FFA04206D098 +:1023400002A90122002041F8044DFFF7C3FF02B0AB +:1023500010BD00000144BFF34F8F064B884204D3E9 +:10236000BFF34F8FBFF36F8F7047C3F85C0220300D +:10237000F4E700BF00ED00E0034B1B685B0142BFC8 +:102380000122024B1A707047D0440258872D00205A +:10239000014B1878704700BF872D0020F0B5BFF3C0 +:1023A0004F8FBFF36F8F1D4B0021C3F85012BFF347 +:1023B0004F8FBFF36F8F5A6942F400325A61BFF3F7 +:1023C0004F8FBFF36F8FC3F88410BFF34F8FD3F8D5 +:1023D000802043F6E076C2F3C904C2F34E32A5076B +:1023E000520102EA060E284621464EEA000701394C +:1023F00000F14040C3F860724F1CF6D1203A12F150 +:10240000200FEED1BFF34F8F5A6942F480325A61E8 +:10241000BFF34F8FBFF36F8FF0BD00BF00ED00E043 +:10242000FEE70000084A094B09498B4204D3094AD8 +:102430000021934205D3704752F8040F43F8040B70 +:10244000F3E743F8041BF4E7703D0008D82E0020A2 +:10245000D82E0020D82E0020D0F89430002230B59D +:102460001146D0F890409D684FF0FF3004EB4213C6 +:1024700001329542C3F80019C3F81019C3F80809CE +:10248000C3F8001BC3F8101BC3F8080BEED24FF0C3 +:102490000113C4F81C3830BD00EB81032DE9F04F67 +:1024A000D3F80CE04F1C4FEA4118DEF814403F030C +:1024B000D4F800C06568D0F8902065450AD30120A3 +:1024C000D2F8343800FA01F123EA0101C2F83418D5 +:1024D000BDE8F08FACEB0503BEF81060B34228BF37 +:1024E000334602EB0806D6F81869B6B2B3EB860F8E +:1024F00013D8A6683A449946A6F1040A5AF804BFCC +:10250000B9F1040FC2F800B002D9A9F10409F5E746 +:102510001E442B44A6606360CCE70020BDE8F08F2A +:10252000890141F02001016103699B06FCD412205E +:10253000FFF74ABB10B50A4C2046FEF759FF094B7E +:10254000C4F89030084BC4F89430084C2046FEF78D +:102550004FFF074BC4F89030064BC4F8943010BDC1 +:10256000882D002000000840E43B0008242E0020B5 +:1025700000000440F03B00080378012B70B50546CD +:102580005DD1494BD0F89040984259D1474B0E212C +:102590006520D3F8D82042F00062C3F8D820D3F8E1 +:1025A000002142F00062C3F80021D3F80021D3F8E3 +:1025B000802042F00062C3F88020D3F8802022F00F +:1025C0000062C3F88020D3F8803000F07FFC384BE5 +:1025D000E360384BC4F800380023D5F89060C4F8A5 +:1025E000003EC02323604FF40413A3633369002B20 +:1025F000FCDA01230C203361FFF7E6FA3369DB07CD +:10260000FCD41220FFF7E0FA3369002BFCDA002635 +:102610002846A660FFF720FF6B68C4F81068DB68E7 +:10262000C4F81468C4F81C68002B3AD1224BA3618B +:102630004FF0FF336361A36843F00103A36070BDF3 +:102640001E4B9842C8D1194B0E214D20D3F8D820EB +:1026500042F00072C3F8D820D3F8002142F0007293 +:10266000C3F80021D3F80021D3F8802042F0007293 +:10267000C3F88020D3F8802022F00072C3F88020B5 +:10268000D3F88020D3F8D82022F08062C3F8D82075 +:10269000D3F8002122F08062C3F80021D3F8003182 +:1026A00093E7074BC3E700BF882D00200044025882 +:1026B0004014004003002002003C30C0242E0020C3 +:1026C000083C30C0F8B5D0F89040054600214FF0E6 +:1026D00000662046FFF724FFD5F8941000234FF042 +:1026E00001128F684FF0FF30C4F83438C4F81C284A +:1026F00004EB431201339F42C2F80069C2F8006B39 +:10270000C2F80809C2F8080BF2D20B68D5F890207D +:10271000C5F89830636210231361166916F010062D +:10272000FBD11220FFF750FAD4F8003823F4FE63EF +:10273000C4F80038A36943F4402343F01003A361B5 +:102740000923C4F81038C4F814380B4BEB604FF071 +:10275000C043C4F8103B094BC4F8003BC4F81069EF +:10276000C4F80039D5F8983003F1100243F480130F +:10277000C5F89820A362F8BDC03B00084080001057 +:10278000D0F8902090F88A10D2F8003823F4FE6335 +:1027900043EA0113C2F80038704700002DE9F04108 +:1027A0000EB20D4600EB8608D8F80C100F6807F043 +:1027B0000303022B53D0032B53D03F4A3F4F012B2F +:1027C00018BF1746D0F890404FEA451E002205F189 +:1027D000100C04EB0E03C3F8102B8A69002A42D0B8 +:1027E0004A8A05F158033A435B01E2500123D4F8C9 +:1027F0001C2803FA0CF31343C4F81C38A644002326 +:102800004A69CEF8103905F13F03002A3BD00A8A05 +:1028100004EB8303898B9208012988BF4A43D0F8CF +:102820009810561841EA02422946C0F8986020469E +:102830005A60FFF775FED8F80C301B8A43EA8553BF +:102840001F4305F148035B01E7500123D4F81C281E +:1028500003FA05F51543C4F81C58BDE8F081184F7C +:10286000B0E7184FAEE704EB4613D3F8002B22F481 +:102870000042C3F8002B0123D4F81C2803FA0CF300 +:1028800022EA0303B8E704EB83030F4A04EB46167E +:1028900029465A602046FFF743FED6F80039012248 +:1028A00023F4004302FA05F5C6F80039D4F81C38C1 +:1028B00023EA0505CFE700BF008000100080041068 +:1028C0000080081000800C1000040002D0F8942052 +:1028D0001268C0F89820FFF7BFBD00005831D0F84B +:1028E000903049015B5813F4004004D013F4001FEA +:1028F00014BF0120022070474831D0F890304901C0 +:102900005B5813F4004004D013F4001F14BF0120DF +:102910000220704700EB8101CB68196A0B681360D5 +:102920004B6853607047000000EB810330B5DD68F1 +:10293000AA691368D36019B9402B84BF4023136080 +:102940006B8A1468D0F890201C4402EB4110013CC3 +:1029500009B2B4FBF3F46343033323F0030343EA04 +:10296000C44343F0C043C0F8103B2B6803F003039B +:10297000012B0ED1D2F8083802EB411013F4807FFE +:10298000D0F8003B14BF43F0805343F00053C0F82D +:10299000003B02EB4112D2F8003B43F00443C2F883 +:1029A000003B30BD2DE9F041D0F8906005460C4663 +:1029B00006EB4113D3F8087B3A07C3F8087B08D528 +:1029C000D6F814381B0704D500EB8103DB685B687D +:1029D0009847FA072FD5D6F81438DB072BD505EB27 +:1029E0008403D968CCB98B69488A5E68B6FBF0F27B +:1029F00000FB12628AB91868DA6890420DD2121A86 +:102A000083E81400202383F3118821462846FFF72A +:102A10008BFF84F31188BDE8F081012303FA04F2EF +:102A20006B8923EA02036B81CB6823B121462846D8 +:102A3000BDE8F0411847BDE8F081000000EB8103DC +:102A40004A0170B5DD68D0F890306C692668E660A0 +:102A500056BB1A444FF40020C2F810092A6802F04D +:102A60000302012A0AB20ED1D3F8080803EB42147C +:102A700010F4807FD4F8000914BF40F0805040F07B +:102A80000050C4F8000903EB4212D2F8000940F0EC +:102A90000440C2F800090122D3F8340802FA01F117 +:102AA0000143C3F8341870BD19B9402E84BF4020CB +:102AB000206020681A442E8A841940F00050013C9E +:102AC000B4FBF6F440EAC440C6E700002DE9F0414B +:102AD000D0F8906004460D4606EB4113D3F8087910 +:102AE000C3F80879FB071CD5D6F81038DA0718D5D3 +:102AF00000EB8103D3F80CE0DEF81430D3F800C00B +:102B0000DA6894451BD2A2EB0C024FF000081A6061 +:102B1000C3F80480202383F31188FFF78FFF88F325 +:102B200011883B0618D50123D6F83428AB40134250 +:102B300012D029462046BDE8F041FFF7ADBC012385 +:102B400003FA01F2038923EA02030381DEF8083065 +:102B5000002BE6D09847E4E7BDE8F0812DE9F04787 +:102B6000D0F8905004466E69AB691E40F1046E6166 +:102B700003D5BDE8F047FEF7B5BC002E12DAD5F854 +:102B8000003E9A0705D0D5F8003E23F00303C5F8B0 +:102B9000003ED5F80438204623F00103C5F8043878 +:102BA000FEF7D0FC330502D52046FEF7BFFCB70484 +:102BB0000CD5D5F8083813F0060FEB6823F47053E2 +:102BC0000CBF43F4105343F4A053EB60300704D51B +:102BD0006368DB680BB120469847F10200F1A180E1 +:102BE000B2020BD5D4F8908000274FF00109D4F839 +:102BF0009430F9B29B688B4280F0D280F3061AD5EC +:102C0000D4F890100A6AC2F30A1702F00F0302F414 +:102C1000F012B2F5802F00F0EB80B2F5402F0AD110 +:102C200004EB830301F58051DB68186A00231A4620 +:102C30009F4240F0D1803003D5F8185835D5E903CC +:102C400003D500212046FFF7ADFEAA0303D50121DD +:102C50002046FFF7A7FE6B0303D502212046FFF7AE +:102C6000A1FE2F0303D503212046FFF79BFEE802B8 +:102C700003D504212046FFF795FEA90203D50521BF +:102C80002046FFF78FFE6A0203D506212046FFF794 +:102C900089FE2B0203D507212046FFF783FEEF01B3 +:102CA00003D508212046FFF77DFE700340F1C78061 +:102CB000E90703D500212046FFF708FFAA0703D53F +:102CC00001212046FFF702FF6B0703D502212046B2 +:102CD000FFF7FCFE2F0703D503212046FFF7F6FE82 +:102CE000EE0603D504212046FFF7F0FEA80603D523 +:102CF00005212046FFF7EAFE690603D50621204696 +:102D0000FFF7E4FE2A0603D507212046FFF7DEFE83 +:102D1000EB0540F1948020460821BDE8F047FFF71D +:102D2000D5BED4F890904FF000084FF0010AD4F8C7 +:102D300094305FFA88F79B68BB42FFF451AF09EB10 +:102D40004713D3F8002902F44022B2F5802F24D192 +:102D5000D3F80029002A20DAD3F8002942F0904263 +:102D6000C3F80029D3F80029002AFBDB3946D4F840 +:102D70009000FFF7D5FB22890AFA07F322EA030342 +:102D8000238104EB8703DB689B6813B13946204637 +:102D9000984739462046FFF77FFB08F10108C6E750 +:102DA00008EB4112D2F8003B03F44023B3F5802F27 +:102DB00010D1D2F8003B002B0CDA628909FA01F33A +:102DC00022EA0303638104EB8103DB68DB680BB158 +:102DD0002046984701370AE713F0030F00D10A682D +:102DE000072B03F101039EBF0270120A01301FE797 +:102DF00004EB830301F58051DA6890690268D0F82A +:102E000008C04068A2EB000E00221046974208D18D +:102E1000DB689B699A683A449A605A6817445F6015 +:102E200009E712F0030F00D10868964502F101028C +:102E300082BF8CF80000000A0CF1010CE6E7BDE847 +:102E4000F087000008B50348FFF788FEBDE808409A +:102E500000F0D8BA882D002008B50348FFF77EFEA1 +:102E6000BDE8084000F0CEBA242E0020D0F8903003 +:102E700003EB4111D1F8003B43F40013C1F8003BD0 +:102E800070470000D0F8903003EB4111D1F80039C1 +:102E900043F40013C1F8003970470000D0F89030B7 +:102EA00003EB4111D1F8003B23F40013C1F8003BC0 +:102EB00070470000D0F8903003EB4111D1F8003991 +:102EC00023F40013C1F800397047000000F160439B +:102ED00000F01F020901400903F56143C9B28000F7 +:102EE00083F80013012300F16040934000F5614036 +:102EF000C0F880310360704730B50433039C017221 +:102F0000002104FB0325C361049B00600363059B50 +:102F10004060C16042610261856104624262816217 +:102F2000C162436330BD00000022416AC26041615A +:102F300001616FF001018262C262FEF7B7BE00005C +:102F400003694269934203D1C2680AB10020704705 +:102F5000181D7047036919600021C2680132C26000 +:102F6000C269134482699342036124BF436A0361C7 +:102F7000FEF790BE38B504460D46E3683BB1626982 +:102F80000020131D1268A3621344E36238BD237A44 +:102F900033B929462046FEF76DFE0028EDDA38BD2C +:102FA0006FF00100FBE70000C368C269013BC3602A +:102FB0004369134482699342436124BF436A436176 +:102FC00000238362036B03B11847704770B5202359 +:102FD000044683F31188866A3EB9FFF7CBFF0546A6 +:102FE00018B186F31188284670BDA36AE26A13F807 +:102FF000015B9342A36202D32046FFF7D5FF002373 +:1030000083F31188EFE700002DE9F84F04460E46E0 +:1030100090469946202787F311880025AA46D4F8C0 +:1030200028B0BBF1000F09D149462046FFF7A2FFA7 +:1030300020B18BF311882846BDE8F88FA16AA8EB70 +:10304000050BE36A5B1A9B4528BF9B46BBF1400F0B +:103050001BD9334601F1400251F8040B914243F869 +:10306000040BF9D1A36A403640354033A362A26A0B +:10307000E36A9A4202D32046FFF796FF8AF311884B +:103080004545D8D287F31188C9E730465A46FDF73F +:10309000F1FEA36A5E445D445B44A362E7E700007F +:1030A00010B5029C04330172C36103FB04210023A9 +:1030B00000608362C362039B40600363049BC4603F +:1030C00042610261816104624262436310BD00009B +:1030D000026A6FF00101C260426A4261026100222D +:1030E0008262C262FEF7E2BD436902699A4203D17D +:1030F000C2680AB100207047184650F8043B0B60C4 +:1031000070470000C3680021C2690133C36043698E +:10311000134482699342436124BF436A4361FEF7CB +:10312000B9BD000038B504460D46E3683BB12369DC +:1031300000201A1DA262E2691344E36238BD237ABB +:1031400033B929462046FEF795FD0028EDDA38BD53 +:103150006FF00100FBE7000003691960C268013AE3 +:10316000C260C269134482699342036124BF436A07 +:10317000036100238362036B03B1184770470000AB +:1031800070B5202304460E4683F31188856A35B94D +:103190001146FFF7C7FF10B185F3118870BDA36A10 +:1031A0001E70A36AE26A01339342A36204D3E16909 +:1031B00020460439FFF7D0FF002080F3118870BD4E +:1031C0002DE9F84F04460D4691469A464FF02008E7 +:1031D00088F311880026B346A76A4FB951462046A6 +:1031E000FFF7A0FF20B187F311883046BDE8F88FC4 +:1031F000A06AA9EB0603E76A3F1A9F4228BF1F4651 +:10320000402F1BD905F1400355F8042B9D4240F88F +:10321000042BF9D1A36A40364033A362A26AE36A61 +:103220009A4204D3E16920460439FFF795FF8BF3F6 +:1032300011884E45D9D288F31188CDE729463A4600 +:10324000FDF718FEA36A3D443E443B44A362E5E714 +:10325000026943699A4203D1C3681BB91846704793 +:103260000023FBE7836A002BF8D0043B9B1AF5D0C0 +:103270001360C368013BC360C3691A4483699A42FF +:10328000026124BF436A0361002383620123E5E7EF +:1032900000F0FAB8034B002258631A610222DA6088 +:1032A000704700BF000C00400022014BDA607047FD +:1032B000000C0040014B5863704700BF000C0040F9 +:1032C0004B6843608B688360CB68C3600B69436164 +:1032D0004B6903628B6943620B68036070470000AF +:1032E00008B52C4B40F2FF712B48D3F888200A43D5 +:1032F000C3F88820D3F8882022F4FF6222F0070266 +:10330000C3F88820D3F88820D3F8E0200A43C3F814 +:10331000E020D3F808210A43C3F808211F4AD3F854 +:1033200008311146FFF7CCFF1D4802F11C01FFF7E1 +:10333000C7FF1C4802F13801FFF7C2FF1A4802F12B +:103340005401FFF7BDFF194802F17001FFF7B8FF04 +:10335000174802F18C01FFF7B3FF164802F1A801EC +:10336000FFF7AEFF144802F1C401FFF7A9FF1348AD +:1033700002F1E001FFF7A4FF114802F1FC01FFF7A1 +:103380009FFF104802F58C71FFF79AFFBDE80840D7 +:1033900000F054B90044025800000258FC3B0008F9 +:1033A0000004025800080258000C0258001002588D +:1033B0000014025800180258001C0258002002583D +:1033C000002402580028025808B500F0FFFAFEF762 +:1033D00073FBFEF7D1FFBDE80840FEF77FBD00009C +:1033E00070470000064A536823F001035360EFF36F +:1033F0000983683383F30988002383F311887047B6 +:1034000030EF00E010B5202383F31188104B5B6888 +:1034100013F4006318D0F1EE103AEFF309844FF083 +:10342000807344F84C3C0B4BDB6844F8083CA4F137 +:10343000680383F30988FEF71DFB18B1064B44F8B7 +:10344000503C10BD054BFAE783F3118810BD00BF57 +:1034500000ED00E030EF00E0F1030008F4030008A5 +:10346000084B1A69920710B508D500241C61202367 +:1034700083F31188FEF764FB84F31188BDE81040E4 +:10348000FFF7C0BF000C0040124B08213220D3F8D8 +:10349000E82042F00802C3F8E820D3F8102142F0F7 +:1034A0000802C3F810210C4AD3F81031D36B43F053 +:1034B0000803D363C722094B9A624FF0FF32DA62E6 +:1034C00000229A615A63DA605A6001225A611A60D6 +:1034D000FFF7FCBC004402580010005C000C0040E8 +:1034E000F8B5514B0024D3F880204FF0FF32C3F8D9 +:1034F0008020D3F88010C3F88040D3F88010D3F830 +:103500008410C3F88420D3F88410C3F88440D3F81F +:103510008410D96F41F0FF4141F4FF0141F4DF41D4 +:1035200041F07F01D967D96F21F0FF4121F4FF01FC +:1035300021F4DF4121F07F01D967D96FD3F88810DA +:103540006FEA41516FEA5151C3F88810D3F88810DF +:10355000C1F30A01C3F88810D3F88810D3F890108B +:10356000C3F89020D3F89010C3F89040D3F890108F +:10357000D3F89410C3F89420D3F89410C3F894406F +:10358000D3F89410D3F89810C3F89820D3F8981073 +:10359000C3F89840D3F89810D3F88C10C3F88C2057 +:1035A000D3F88C10C3F88C40D3F88C10D3F89C104F +:1035B000C3F89C20D3F89C20C3F89C40D3F89C30DF +:1035C00000F0E4F9194B07229A60194ADA60194AA7 +:1035D0001A6105225A60184A536A43F480335362D1 +:1035E000C2F88440BFF34F8FD2F8803043F6E076C4 +:1035F000C3F3C904C3F34E33A5075B0103EA060E08 +:10360000284621464EEA0007013900F14040C2F841 +:1036100074724F1CF6D1203B13F1200FEED1BFF393 +:103620004F8FBFF36F8FF8BD0044025890ED00E05C +:10363000000004301D00080300ED00E00122574B9C +:1036400057491A60574B19609A60574ADA6000224E +:103650001A614FF440429A619A699004FCD51A6845 +:1036600042F480721A60514B1A6F12F4407F04D0FA +:103670004FF480321A6700221A671A6842F001027A +:103680001A604A4A134611684907FCD500211161A6 +:103690001A6912F03802FBD1012119604FF0804104 +:1036A00059605A67424ADA62424A1A611A6842F419 +:1036B00080321A603D4B1A689203FCD53E4A3F495E +:1036C0009A6200225A631963A1F58021DA634B39AB +:1036D00099635A643A4A1A643A4ADA621A6842F0BA +:1036E000A8521A60314B1A6802F02852B2F1285FD2 +:1036F000F9D1482222219A614FF48862DA6140228E +:103700001A624FF00052DA641A652F4A5A652F4A3E +:103710009A652F4A11601A6942F003021A61234B1D +:103720001A6902F03802182AFAD1D3F8DC2042F0E4 +:103730000052C3F8DC20D3F8042142F00052C3F851 +:103740000421D3F80421D3F8DC2042F08042C3F8EE +:10375000DC20D3F8042142F08042C3F80421D3F8DE +:103760000421D3F8DC2042F00042C3F8DC20D3F877 +:10377000042142F00042C3F80421D3F80421D3F815 +:10378000F42042F00202C3F8F420D3F81C2142F0E6 +:103790000202C3F81C21D3F81C3170470881005184 +:1037A00000C000F000480258020000010044025826 +:1037B0000000FF01008890083230600063020701BA +:1037C00047040508FD0BFF010010E00000010100A7 +:1037D00000200052084A08B5936811680B4003F0B6 +:1037E0000103936023B1054A13680BB150689847F1 +:1037F000BDE80840FFF706BE80000058A82300205F +:10380000084A08B5936811680B4003F002039360FF +:1038100023B1054A93680BB1D0689847BDE80840CA +:10382000FFF7F0BD80000058A8230020084A08B523 +:10383000936811680B4003F00403936023B1054AB9 +:1038400013690BB150699847BDE80840FFF7DABD2E +:1038500080000058A8230020084A08B59368116822 +:103860000B4003F00803936023B1054A93690BB141 +:10387000D0699847BDE80840FFF7C4BD80000058F4 +:10388000A8230020084A08B5936811680B4003F08C +:103890001003936023B1054A136A0BB1506A98472D +:1038A000BDE80840FFF7AEBD80000058A823002007 +:1038B000174B10B59C681A68144004F478729A602B +:1038C000A30604D5134A936A0BB1D06A98476006E1 +:1038D00004D5104A136B0BB1506B9847210604D5E1 +:1038E0000C4A936B0BB1D06B9847E20504D5094A9B +:1038F000136C0BB1506C9847A30504D5054A936C23 +:103900000BB1D06C9847BDE81040FFF77BBD00BFFE +:1039100080000058A82300201A4B10B59C681A6834 +:10392000144004F47C429A60620504D5164A136D73 +:103930000BB1506D9847230504D5134A936D0BB115 +:10394000D06D9847E00404D50F4A136E0BB1506E4A +:103950009847A10404D50C4A936E0BB1D06E9847DA +:10396000620404D5084A136F0BB1506F98472304C3 +:1039700004D5054A936F0BB1D06F9847BDE810404E +:10398000FFF740BD80000058A8230020062108B59D +:103990000846FFF79BFA06210720FFF797FA062152 +:1039A0000820FFF793FA06210920FFF78FFA062176 +:1039B0000A20FFF78BFA06211720FFF787FA062166 +:1039C0002820BDE80840FFF781BA000008B5FFF7DE +:1039D00087FDFDF759FBFDF709FDFDF7DBFBFFF761 +:1039E000FFFCBDE80840FFF753BC000010B50139EB +:1039F0000244904201D1002010BD10F8013B11F8A3 +:103A0000014FA342F5D0181B10BD0000034611F86A +:103A1000012B03F8012B002AF9D170471210121361 +:103A20001211000001105A00031059000120580023 +:103A30000320560053544D333248373F3F3F005325 +:103A4000544D3332483734332F37353300000000BC +:103A5000000000000D110008F910000835110008E1 +:103A6000211100082D110008191100080511000886 +:103A7000F110000891110008000000000100000092 +:103A8000000000006D61696E00000000A43A0008AB +:103A9000682400206026002001000000B51A0008FC +:103AA0000000000069646C65000000000200000076 +:103AB0000000000039130008A51300084000400072 +:103AC000F82A0020082B002002000000000000005F +:103AD0000300000000000000E913000800000000DF +:103AE00010000000182B0020000000000100000062 +:103AF00000000000882D0020010102006D526F00BF +:103B000025424F415244252D424C002553455249F0 +:103B1000414C25007D1E0008E51D0008A512000887 +:103B2000611E0008430000002C3B0008090243000E +:103B3000020100C032090400000102020100052454 +:103B400000100105240100010424020205240600DE +:103B500001070582030800FF09040100020A0000B2 +:103B60000007050102400000070581024000000037 +:103B700012000000783B0008120110010200004012 +:103B80000912415700020102030100000403090465 +:103B900025424F41524425006D526F436F6E74723F +:103BA0006F6C5A65726F436C617373696300303177 +:103BB00032333435363738394142434445460000C4 +:103BC000000000005915000839180008E518000821 +:103BD00040004000C02E0020C02E00200100000048 +:103BE000D02E0020800000004001000008000000EE +:103BF0000001000000040000080000000000802A0E +:103C000000000000AAAAAAAA00000000FFFF00000E +:103C10000000000000A00A004401000000000000B5 +:103C2000AAAAAAAA00000000FFFF000000000000EE +:103C3000000000000000000000000000AAAAAAAADC +:103C400000000000FFFF0000000000000000000076 +:103C50000040100000000000AAAA8AAA004010003C +:103C6000FFFF000000000000000000000000004016 +:103C700000000000AAAAAAAA00000040FFFF00005E +:103C80000000000000000000010010000000000023 +:103C9000AAAAAAAA01001000FFFF0000000000006D +:103CA000000000004000040000000000AAAAAAAA28 +:103CB00040000400FFFF00000000000000000000C2 +:103CC0000000000000000000AAAAAAAA000000004C +:103CD000FFFF0000000000000000000000000000E6 +:103CE00000000000AAAAAAAA00000000FFFF00002E +:103CF00000000000000000000000000000000000C4 +:103D0000AAAAAAAA00000000FFFF0000000000000D +:103D1000000000000000000000000000AAAAAAAAFB +:103D200000000000FFFF0000000000000000000095 +:103D3000FF00000000000000343A00083F000000CF +:103D4000500400003F3A00083F00000000960000C9 +:103D500000000800040000008C3B00080000000088 +:103D60000000000000000000000000000000000053 +:043D7000000000004F +:00000001FF diff --git a/Tools/bootloaders/mRoControlZeroOEMH7_bl.bin b/Tools/bootloaders/mRoControlZeroOEMH7_bl.bin new file mode 100755 index 0000000000000..ab89e81d1c09c Binary files /dev/null and b/Tools/bootloaders/mRoControlZeroOEMH7_bl.bin differ diff --git a/Tools/bootloaders/mRoControlZeroOEMH7_bl.hex b/Tools/bootloaders/mRoControlZeroOEMH7_bl.hex new file mode 100644 index 0000000000000..3c0020349ab4e --- /dev/null +++ b/Tools/bootloaders/mRoControlZeroOEMH7_bl.hex @@ -0,0 +1,974 @@ +:020000040800F2 +:1000000000040020A1020008A10F0008A50F0008AD +:10001000F90F0008A50F0008CD0F0008A302000883 +:10002000A3020008A3020008A3020008413300084D +:10003000A3020008A3020008A3020008A30200080C +:10004000A3020008A3020008A3020008A3020008FC +:10005000A3020008A302000829370008553700084A +:1000600081370008AD370008D9370008A30200081F +:10007000A3020008A3020008A3020008A3020008CC +:10008000A3020008A3020008A3020008A3020008BC +:10009000A3020008A3020008A30200080538000814 +:1000A000A3020008A3020008A3020008A30200089C +:1000B000A3020008A3020008A3020008A30200088C +:1000C000A3020008A3020008A3020008A30200087C +:1000D000A3020008A3020008A3020008A30200086C +:1000E0006D380008A3020008A3020008A30200085C +:1000F000A3020008A3020008A3020008A30200084C +:10010000A3020008A3020008BD330008A3020008F0 +:10011000A3020008A3020008A3020008A30200082B +:10012000A3020008A3020008A3020008A30200081B +:10013000A3020008A3020008A3020008A30200080B +:10014000A3020008A3020008A3020008A3020008FB +:10015000A3020008A3020008A3020008A3020008EB +:10016000A3020008A3020008A3020008A3020008DB +:10017000A3020008B92D0008A3020008A30200088A +:10018000A3020008A3020008A3020008A3020008BB +:10019000A3020008A3020008A3020008A3020008AB +:1001A000A3020008A3020008A3020008A30200089B +:1001B000A3020008A3020008A3020008A30200088B +:1001C000A3020008A3020008A3020008A30200087B +:1001D000A3020008A52D0008A3020008A30200083E +:1001E000A3020008A3020008A3020008A30200085B +:1001F000A3020008A3020008A3020008A30200084B +:10020000A3020008A3020008A3020008A30200083A +:10021000A3020008A3020008A3020008A30200082A +:10022000A3020008A3020008A3020008A30200081A +:10023000A3020008A3020008A3020008A30200080A +:10024000A3020008A3020008A3020008A3020008FA +:10025000A3020008A3020008A3020008A3020008EA +:10026000A3020008A3020008A3020008A3020008DA +:10027000A3020008A3020008A3020008A3020008CA +:10028000A3020008A3020008A3020008A3020008BA +:10029000A3020008A3020008A3020008A3020008AA +:1002A00002E000F000F8FEE772B6394880F30888F3 +:1002B000384880F3098838484EF60851CEF20001DC +:1002C000086040F20000CCF200004EF63471CEF22D +:1002D00000010860BFF34F8FBFF36F8F40F2000043 +:1002E000C0F2F0004EF68851CEF200010860BFF374 +:1002F0004F8FBFF36F8F4FF00000E1EE100A4EF604 +:100300003C71CEF200010860062080F31488BFF330 +:100310006F8F02F00FF802F091FF4FF055301F4938 +:100320001B4A91423CBF41F8040BFAE71C49194AA9 +:1003300091423CBF41F8040BFAE71A491A4A1B4B99 +:100340009A423EBF51F8040B42F8040BF8E7002034 +:100350001749184A91423CBF41F8040BFAE702F0F2 +:1003600027F802F0DFFF144C144DAC4203DA54F8C6 +:10037000041B8847F9E700F03FF8114C114DAC42DF +:1003800003DA54F8041B8847F9E702F00FB80000BD +:1003900000040020002400200000000800000020CD +:1003A00000040020783C00080024002044240020A1 +:1003B00048240020D8300020A0020008A002000835 +:1003C000A0020008A00200082DE9F04F2DED108AD0 +:1003D000C1F80CD0D0F80CD0BDEC108ABDE8F08F7D +:1003E000002383F311882846A047002001F000FC79 +:1003F00001F030FB00DFFEE738B51F4C0423002579 +:1004000063701E232570A570E57025716571A57157 +:10041000E57125726572A372E57200F0BBFC20B134 +:100420000E2325726572A372E57201F047FF05463F +:1004300001F07AFF0446D0B9104B9D4219D0013328 +:100440009D4241F2883512BF044600250124002058 +:1004500001F03EFF0CB100F059F800F075FD00F01E +:10046000E1FB284600F008F900F050F8F9E7002514 +:10047000EDE70546EBE700BF48240020010007B088 +:1004800008B500F071FBA0F120035842584108BDA7 +:1004900007B541F21203022101A8ADF8043000F0C3 +:1004A000B1FB03B05DF804FB202310B583F3118882 +:1004B0001248C3680BB101F021FC0023104A4FF42D +:1004C0007A710E4801F0DEFB002383F311880D4C96 +:1004D000236813B12368013B2360636813B1636829 +:1004E000013B6360084B1B7833B9636823B9022072 +:1004F00000F094FC3223636010BD00BF5424002040 +:10050000A90400087025002068240020F8B5514A8D +:10051000514B1968013100F09B8004339342F8D1AC +:100520004E4C4F4B22689A4240F292804D4B9B6852 +:1005300003F1006303F500339A4280F089800020C4 +:1005400000F08AFB0220484B187000F059FC474B22 +:10055000D3F8E8200022C3F8E820D3F81011C3F83C +:100560001021D3F81011D3F8EC10C3F8EC20D3F815 +:100570001411C3F81421D3F81411D3F8F010C3F8F0 +:10058000F020D3F81811C3F81821D3F81811D3F8B4 +:10059000801041F00061C3F88010D3F8801021F082 +:1005A0000061C3F88010D3F88010D3F8801041F0B8 +:1005B0000071C3F88010D3F8801021F00071C3F8E7 +:1005C0008010D3F8803072B6234B29490B6018682D +:1005D0002468BFF34F8FBFF36F8F264BC3F884207F +:1005E000BFF34F8F5A6922F480325A61BFF34F8FA5 +:1005F000D3F8802043F6E076C2F3C905C2F34E3249 +:10060000520102EA060C29464CEA81770139C3F807 +:100610007472F9D2203A12F1200FF2D1BFF34F8F4A +:10062000BFF36F8FBFF34F8FBFF36F8F5A6922F401 +:1006300000325A610022C3F85022BFF34F8FBFF33C +:100640006F8F202383F31188854680F30888204725 +:10065000F8BD00BF200002080000020804000208E4 +:10066000FFFF0108482400206824002000440258AD +:1006700008ED00E000ED00E02DE9F04F95B0B44C3E +:100680002022FF2101900CA8A76800F003FCB14ACA +:1006900002941378A3B90121AF481170C3602023DD +:1006A00083F31188C3680BB101F028FB0023AB4A28 +:1006B0004FF47A71A84801F0E5FA002383F311881A +:1006C000019B13B1A64B019A1A600023A54A019E13 +:1006D00013709946A24A1D461C469846DFF890B210 +:1006E0005360012000F08CFB26B19D4B1B68002B52 +:1006F00000F00182002000F037FA0590059B002BE6 +:10070000F2DB012000F06CFB059B213B122BE8D8AB +:1007100001A252F823F000BF650700088D0700080A +:10072000FB070008E3060008E3060008E3060008EC +:100730008F080008630A000875090008DF0900082F +:10074000070A00082D0A0008E30600083F0A00080F +:10075000E3060008B50A00087D080008E306000863 +:10076000FD0A00080220FFF78BFE002840F0ED8113 +:10077000019BB9F1000F08BF1E4641F2123302215E +:1007800007A8ADF81C3000F03DFAAAE74FF47A70E4 +:1007900000F0EAF9031E0393EADB0220FFF770FE84 +:1007A00082460028E4D0039B581E042800F2CF8123 +:1007B000DFE800F0030D101316000523042107A83D +:1007C000079300F01FFA55464FF0000856E0042149 +:1007D0005F48F6E704216448F3E704216348F0E743 +:1007E0001C252846043500F039FA0421079007A893 +:1007F00000F008FA2C2DF4D1E5E7002CB8D0002D3C +:10080000B6D00220FFF73CFE0446002800F0A2818B +:100810000120002500F020FA0220524B187000F051 +:10082000EFFA5FFA85F9484600F026FA064658B115 +:100830004846013500F030FA0028F2D12546A1469D +:10084000064641F212139AE70123464A3746022030 +:10085000137000F0C5FA029B9B68BB4207D938466B +:1008600000F0FCF9013040F077810437F3E700270E +:100870003C4BA14625461F70394B5F6000F05AFB88 +:1008800014B1002D18BF0026FFF702FE29E7002C47 +:100890003FF46EAF002D3FF46BAF0220314B187068 +:1008A00000F0AEFA322000F05FF9B0F1000AC0F2B9 +:1008B00051811AF0030440F04D81029A0AEB0703BC +:1008C0009268934200F24681BAF5807F00F342813C +:1008D000274BA24503930EDD4FF47A7000F044F9E4 +:1008E0000590059A002AC0F23581059A0134039BD0 +:1008F00003F8012BEDE7C820FFF7C2FD04460028EE +:1009000000F028811F2F11D8C7F120020CAB27F06F +:10091000030059465245184428BF5246039200F03E +:100920008FFA039AFF21584600F0B4FA4FEAAA035F +:10093000CAF3870259463846039300F0B3FA0546D6 +:10094000002800F00C81039B044607EB830795E722 +:10095000482400206C25002054240020A90400080D +:1009600070250020682400204C2400205024002002 +:100970006C2400200220FFF783FD00283FF4F8AE2E +:1009800000F0A4F900283FF4F3AE4FF0000A5346FC +:10099000029A926852451CD9BAF11F0F12D80C9ACC +:1009A00001320FD02AF0030214A90A4452F8202C75 +:1009B00007921846042207A90AF1040A00F030FB46 +:1009C0000346E5E75046039300F048F9039B079080 +:1009D000EFE70793042107A800F014F94EE700237E +:1009E000642106A8069300F0E9F800287FF4C0AE61 +:1009F0000220FFF745FD00283FF4BAAE069800F04C +:100A00005DF90790E6E70023642106A8069300F04D +:100A1000D5F800287FF4ACAE0220FFF731FD0028A6 +:100A20003FF4A6AE069800F04BF9EAE70220FFF784 +:100A300027FD00283FF49CAE00F058F9E1E70220C2 +:100A4000FFF71EFD00283FF493AE07A9142000F025 +:100A500053F982460421069006A800F0D3F85146C7 +:100A6000B9E7322000F080F8B0F1000AFFF680AE5E +:100A70001AF0030F7FF47CAE029A0AEB0803926827 +:100A800093423FF675AE0220FFF7FAFC00283FF4D0 +:100A90006FAE2AF0030AC244D0453FF4EFAE4046A1 +:100AA00008F1040800F0DAF80421079007A800F024 +:100AB000A9F8F1E74FF47A70FFF7E2FC00283FF461 +:100AC00057AE00F003F900283FF4BBAE0C9B013396 +:100AD0000CD008220CA9002000F0E4F900283FF413 +:100AE000B0AE2022FF210CA800F0D4F9FFF7D0FC13 +:100AF0001C4801F083F815B0BDE8F08F002C3FF4DE +:100B000037AE002D3FF434AE0023642107A80793CD +:100B100000F054F8824600287FF42AAE0220FFF746 +:100B2000AFFC039000283FF423AEFFF7B1FC41F285 +:100B3000883001F063F8079800F030FA564600F06C +:100B4000F9F9039B1D461C46CBE5044696E64FF09B +:100B500000080DE62C460BE62546A14671E6254623 +:100B60006FE600BFA0860100114B73B51A78002410 +:100B700001328DF80740D2B2012A12D80D4D012260 +:100B80000DF107012B681E6A4FF47A734343284620 +:100B9000B047012805D1084B9DF807001C7002B032 +:100BA00070BD4FF4FA7001F029F84FF0FF30F6E70E +:100BB0000024002060280020A425002038B50E4B1A +:100BC0001A780132D2B2012A0FD80C4C04222368C1 +:100BD0001D6A4FF47A734B4301462046A847042808 +:100BE00003D10020064B187038BD4FF4FA7001F0A5 +:100BF00005F84FF0FF30F7E70024002060280020C0 +:100C0000A425002030B4054C0A460146236820463E +:100C1000DD69034BAC4630BC604700BF6028002054 +:100C2000A086010070B50A4C00250A4E01F034FA86 +:100C3000207030682378834208D901F029FA33689C +:100C400005440133B5F5003F3360F2D370BD00BFFA +:100C5000A52500207825002001F0E6BA00F100600B +:100C600000F500300068704700F10060920000F568 +:100C7000003001F06DBA0000054B1A68054B1B7877 +:100C80009B1A834202D9104401F002BA0020704737 +:100C900078250020A525002038B5074D0446286892 +:100CA000204401F0FBF928B928682044BDE8384009 +:100CB00001F006BA38BD00BF78250020002070473B +:100CC000014BC058704700BF00E8F11F064991F87A +:100CD000243033B100230822086A81F82430FFF75A +:100CE000C3BF0120704700BF7C250020014B18685E +:100CF000704700BF0010005C244B254AF0B51B680C +:100D000004461788C3F30B0056681B0C92F9085071 +:100D1000B84228D09789B84206D101200C2505FB9E +:100D20000022566892F9085041F2010293421CD009 +:100D300041F2030293421AD042F20102934218D0C8 +:100D400042F20302934208BF5625621E0B46741EF0 +:100D50000A4493420FD214F9016F581C6EB1034636 +:100D600000F8016CF5E70020D8E75A25EDE7592592 +:100D7000EBE75825E9E7184605E02C2490421C7063 +:100D800001D2981C5D70401AF0BD00BF0010005CDD +:100D900004240020104B41F201015A888A42134674 +:100DA00011D041F203018A420FD042F20102934274 +:100DB0000DD042F2030293420BD10323074A02EB08 +:100DC0008303D87870470023F8E70123F6E702236E +:100DD000F4E70020704700BF0010005C883900086D +:100DE000022804D1054B4FF000629A617047012838 +:100DF000FCD1024B4FF40032F7E700BF0004025869 +:100E0000022804D1044B4FF400629A617047012814 +:100E1000FCD1014B0222F8E700040258022805D158 +:100E2000064A536983F40063536170470128FCD17B +:100E3000024A536983F00203F6E700BF0004025838 +:100E4000002310B5934203D0CC5CC4540133F9E7BE +:100E500010BD0000013830B510F9013F0C4663B1F8 +:100E600094F9005001319D4207D1551E1AB994F9E9 +:100E70000020981A30BD2A46EEE7002AF7D1104626 +:100E8000F8E7000003460246D01A12F9011B0029B8 +:100E9000FAD1704702440346934202D003F8011B83 +:100EA000FAE770472DE9F843214C154606460F46F0 +:100EB00094F8242072BBDFF87880BDB394F8243016 +:100EC0002BB92022FF2140462662FFF7E3FF94F86A +:100ED00024003946C0F1080204EB8000AA4228BF72 +:100EE0002A465FFA82F99200FFF7AAFF94F82430AD +:100EF000A5EB0905164499441744EDB25FFA89F948 +:100F0000B9F1080F84F82490D7D1FFF7DFFE00284D +:100F1000D3D108E0236A03EB82038342CBD0FFF7EF +:100F2000D5FE0028C7D10020BDE8F8830120FBE7EB +:100F30007C250020024B1A78024B1A70704700BFC4 +:100F4000A42500200024002010B5104C104800F00B +:100F500009F921460E4800F031F924680D48D4F80B +:100F60009020D2F8043843F00203C2F8043800F0AD +:100F700045FE0949204600F02DFAD4F89020D2F819 +:100F8000043823F00203C2F8043810BD543A0008B4 +:100F90006028002040420F005C3A000870470000C3 +:100FA000FEE7000000B59BB0EFF3098168226846B8 +:100FB000FFF746FFEFF30583034B9A6B9A6A9A6A31 +:100FC0009A6A9A6A9B6AFEE700ED00E000B59BB062 +:100FD000EFF3098168226846FFF732FFEFF30583DC +:100FE000044B9A6B9A6A9A6A9A6A9A6A9A6A9B6A94 +:100FF000FEE700BF00ED00E000B59BB0EFF3098114 +:1010000068226846FFF71CFFEFF30583034B5A6B1A +:101010009A6A9A6A9A6A9A6A9B6AFEE700ED00E009 +:1010200030B50A44084D91420DD011F8013B5840AB +:10103000082340F30004013B2C4013F0FF0384EA33 +:101040005000F6D1EFE730BD2083B8ED0023054A0C +:1010500019460133102BC2E9001102F10802F8D140 +:10106000704700BFA8250020026843681143016053 +:1010700003B118477047000013B5446BD4F894349B +:101080001A681178042915D1217C022912D1197905 +:10109000012312898B4013420CD101A904F14C00A9 +:1010A00001F0D2FFD4F894440246019B21792068D4 +:1010B00000F0E4F902B010BD143001F055BF00009B +:1010C0004FF0FF33143001F04FBF00004C3002F0FE +:1010D00027B800004FF0FF334C3002F021B8000079 +:1010E000143001F023BF00004FF0FF31143001F045 +:1010F0001DBF00004C3001F0F3BF00004FF0FF3285 +:101100004C3001F0EDBF000038B5D0F894340546FE +:101110001A681178042901D0012038BD017C022908 +:10112000FAD1187901238340508913EA0004F3D1DE +:1011300005F1140001F0B4FE02460028ECD0D5F809 +:1011400094544FF480732868697900F085F920463B +:10115000E3E70000406BFFF7D7BF000000207047B7 +:10116000704700007FB5124B01250226044603603C +:101170000023057400F1840243602946C0E902336C +:101180000C4B0290143001934FF48073009601F0E1 +:1011900063FE094B04F52372294604F14C000294C6 +:1011A000CDE900634FF4807301F02AFF04B070BDF5 +:1011B0009839000855110008791000080A682023A2 +:1011C00083F311880B790B3342F823004B791333E7 +:1011D00042F823008B7913B10B3342F8230002232A +:1011E000C0F894140374002383F31188704700003F +:1011F00038B5037F044613B190F85430ABB90125DC +:10120000201D0221FFF730FF04F114006FF00101EF +:10121000257700F01BFD04F14C0084F854506FF06A +:101220000101BDE8384000F011BD38BD10B5012105 +:1012300004460430FFF718FF0023237784F8543066 +:1012400010BD000038B504460025143001F01CFE26 +:1012500004F14C00257701F0EBFE201D84F854507A +:101260000121FFF701FF2046BDE83840FFF74CBFE2 +:1012700090F8803003F06003202B06D190F8812095 +:101280000023212A03D81F2A06D800207047222ACB +:10129000FBD1C0E91D3303E0034A4267072282679E +:1012A000C3670120704700BF1C240020D0F894348D +:1012B00037B51A680446117804291AD1017C02292D +:1012C00017D11979012312898B40134211D100F1F2 +:1012D0004C05284601F06CFF58B101A9284601F0E1 +:1012E000B3FED4F894440246019B2179206800F0B3 +:1012F000C5F803B030BD000001F10B03F0B550F8A4 +:10130000236085B004460D46FEB1202383F3118887 +:1013100004EB8507301D0821FFF7A6FEFB6806F1E8 +:101320004C005B691B681BB1019001F09BFE0198AA +:1013300003A901F089FE024648B1039B29462046D5 +:1013400000F09CF8002383F3118805B0F0BDFB6822 +:101350005A691268002AF5D01B8A013B1340F1D16B +:1013600004F18002EAE70000133138B550F821405B +:10137000DCB1202383F31188D4F8942413685279C4 +:1013800003EB8203DB689B695D6845B1042160184B +:10139000FFF76AFE294604F1140001F08BFD204698 +:1013A000FFF7B2FE002383F3118838BD70470000B9 +:1013B00001F07EB8012300F1300200F1500103700A +:1013C0000023436042F8043B8A42D361FAD1836030 +:1013D0007047000038B50446202383F311880025A8 +:1013E00000F10C0300F13002416043F8045B9342CA +:1013F000FBD1204601F07EF80223237085F311888B +:1014000038BD000070B500EB8103054650690E46FB +:101410001446DA6018B110220021FFF73BFDA069E5 +:1014200018B110220021FFF735FD31462846BDE8EE +:10143000704001F071B90000826802F00112826010 +:101440000022C0E90422C0E90622C0E90822C0E95E +:101450000A2201F0F1B90000F0B4012500EB81048B +:1014600047898D40E4683D43A4694581236000239A +:10147000A2606360F0BC01F00DBA0000F0B4012579 +:1014800000EB810407898D40E4683D436469058170 +:1014900023600023A2606360F0BC01F083BA000007 +:1014A000022300F10C0200F1300110B50370044674 +:1014B0000023C0F88830836042F8043B8A42FBD1A5 +:1014C00084F87030204601F0BBF863681B6823B1D4 +:1014D00020460021BDE81040184710BD027843683F +:1014E00080F88C20052202701B680BB1042118477C +:1014F0007047000090F88C20436802701B680BB1A5 +:10150000052118477047000070B590F87030044608 +:1015100013B1002380F8703004F18002204601F0FE +:10152000AFF963689B68B3B994F8803013F0600535 +:1015300039D00021204601F055FC0021204601F061 +:1015400045FC63681B6813B10621204698470623B3 +:1015500084F8703070BD204698470028E4D094F895 +:10156000872094F8863043EA0223A26F9A4288BF0C +:10157000A36794F98030A56F002B4FF0200380F211 +:101580000881002D00F0F780092284F8702083F391 +:10159000118800212046D4E91D23FFF76FFF0023A7 +:1015A00083F31188D6E794F8812003F07F0343EAA0 +:1015B000022340F20232934200F0CA8021D8B3F5F0 +:1015C000807F4DD00DD8012B44D0022B00F09880A5 +:1015D000002BAED104F1880262670222A267E367A2 +:1015E000BDE7B3F5817F00F0A080B3F5407FA0D1C7 +:1015F00094F88230012B9CD1B4F8883043F0020378 +:1016000037E0B3F5006F52D01CD8B3F5A06F36D0D9 +:10161000A3F5C063012B8CD894F88520204661681F +:1016200094F884304E6843EA022394F8831094F8C7 +:101630008220B04700283FF47CAF436863670368AB +:10164000A3671AE0B3F5106F36D040F6024293421A +:101650007FF46FAF5B4B63670223A3670023BEE792 +:1016600094F88230012B7FF464AFB4F8883023F013 +:101670000203A4F88830C4E91D55E5676FE7B4F8A4 +:101680008030B3F5A06F0ED194F88230204684F8F4 +:101690008A3001F033F863681B6813B101212046DA +:1016A0009847032323700023C4E91D3397E704F10F +:1016B0008B0363670123C3E72378042B10D1202316 +:1016C00083F311882046FFF7B7FE85F311880321C5 +:1016D000636884F88B5021701B680BB120469847D3 +:1016E00094F88230002BDED084F88B3004232370F2 +:1016F00063681B68002BD6D0022120469847D2E7AA +:1017000094F8843020461D0603F00F010AD501F03D +:10171000A9F8012804D002287FF40BAF2A4B9AE7DE +:101720002A4B98E701F090F8F3E794F88230002B09 +:101730007FF4FFAE94F8843013F00F01B3D01A0693 +:10174000204602D501F066FBADE701F057FBAAE7A2 +:1017500094F88230002B7FF4ECAE94F8843013F0D0 +:101760000F01A0D01B06204602D501F03BFB9AE7F3 +:1017700001F02CFB97E7142284F8702083F3118882 +:101780002B462A4629462046FFF766FE85F3118838 +:10179000E0E65DB1152284F8702083F31188002102 +:1017A0002046D4E91D23FFF757FEF8E60B2284F804 +:1017B000702083F311882B462A4629462046FFF7DE +:1017C0005DFEE3E7C8390008C0390008C4390008E5 +:1017D00038B590F870300446002B42D0063BDAB2A0 +:1017E0000F2A38D80F2B36D8DFE803F03B35350801 +:1017F000263635353535353535353B3B90F8871050 +:1018000090F88620836F42EA0122934214D2C26884 +:10181000128AB3FBF2F502FB15356DB9202383F371 +:1018200011882B462A462946FFF728FE85F31188A2 +:101830000A2384F870300EE0142384F870302023DB +:1018400083F31188002320461A461946FFF704FE49 +:10185000002383F3118838BDC36F03B19847002379 +:10186000E7E70021204601F0BDFA0021204601F003 +:10187000ADFA63681B6813B106212046984706231A +:10188000D7E7000010B590F870300446142B29D02B +:1018900017D8062B05D001D81BB110BD093B022B70 +:1018A000FBD80021204601F09DFA0021204601F0DE +:1018B0008DFA63681B6813B10621204698470623FA +:1018C00019E0152BE9D10B2380F87030202383F326 +:1018D000118800231A461946FFF7D0FD002383F331 +:1018E0001188DAE7C3689B695B68002BD5D1C36FA9 +:1018F00003B19847002384F87030CEE7024B0022F2 +:10190000C3E900339A6070472826002000238268CC +:101910000374054B1B6899689142FBD25A680360B7 +:1019200042601060586070472826002008B52023C8 +:1019300083F31188037C032B05D0042B0DD02BB926 +:1019400083F3118808BD436900221A604FF0FF330A +:101950004361FFF7DBFF0023F2E7D0E900321360B9 +:101960005A60F3E7002382680374054B1B6899688B +:101970009142FBD85A68036042601060586070471B +:1019800028260020054B19690874186802685360FE +:101990001A60186101230374FEF716BD2826002083 +:1019A0004B1C30B5044687B00A4D10D02B6901A8F6 +:1019B000094A00F067F92046FFF7E4FF049B13B1E2 +:1019C00001A800F09BF92B69586907B030BDFFF7FB +:1019D000D9FFF8E7282600202D19000838B50C4D4E +:1019E000044641612B6981689A68914203D8BDE839 +:1019F0003840FFF78BBF1846FFF788FF01232C61A3 +:101A0000014623742046BDE83840FEF7DDBC00BF28 +:101A100028260020044B1A681B6990689B6898422E +:101A200094BF0020012070472826002010B5084CE4 +:101A3000236820691A6854602260012223611A74A5 +:101A4000FFF790FF01462069BDE81040FEF7BCBCDF +:101A500028260020FFF7EABFFEE7000010B5194C6A +:101A6000FFF74CFF00F000F980221749204600F0F4 +:101A700087F8012344F8180C0374144B144AD968EE +:101A800021F4E0610904090C0A431249DA60CA68CA +:101A900042F08072CA60104A1049C2F8B01F116843 +:101AA00041F0010111601022DA77202283F8222010 +:101AB000002383F3118862B60948BDE8104000F0A6 +:101AC0007FB800BF50260020CC39000800ED00E0B0 +:101AD0000003FA05F0ED00E0001000E055CEACC5C3 +:101AE000DC3900082DE9F84F1E4C0027DFF878801C +:101AF000656904F11409D8F82420236AA968D61A64 +:101B00008E421CD34FF0200AAA68236AD5F80CB085 +:101B1000B61A134423622B684B45C3F804906361E3 +:101B2000EF6001D101F06EFB87F311882869D84777 +:101B30008AF311886569AB689E42E5D2DBE761698B +:101B400049450DD08868226203449B1A8B60A868BF +:101B5000BDE8F84F02282CBF1018901C01F058BBAC +:101B6000BDE8F88F28260020000C0040034B596880 +:101B70005A68521A9042FBD8704700BF001000E02C +:101B800082600222028270478368A3F17C0243F8DC +:101B90000C2C026943F83C2C426943F8382C074A64 +:101BA00043F81C2CC268A3F1180043F8102C022241 +:101BB00003F8082C002203F8072C7047E103000803 +:101BC00010B5202383F31188FFF7DEFF00210446C0 +:101BD000FFF704FF002383F31188204610BD0000A7 +:101BE000024B1B6958610F20FFF7CCBE282600204E +:101BF000202383F31188FFF7F3BF000008B50146E7 +:101C0000202383F311880820FFF7CAFE002383F303 +:101C1000118808BD49B1064B42681B6918605A60BB +:101C2000136043600420FFF7BBBE4FF0FF307047E6 +:101C3000282600200368984206D01A680260506087 +:101C400018465961FFF762BE7047000038B5044678 +:101C50000D462068844200D138BD036823605C6073 +:101C60004561FFF753FEF4E7054B4FF0FF3103F1F9 +:101C70001402C3E905220022C3E90712704700BF1E +:101C800028260020F8B5C0E903231A4B022906468E +:101C90005C6A38BF0221184B1A461F4652F8145F7F +:101CA00095420AD1C3E905001C628160C0E9005574 +:101CB0000819BDE8F84001F09BBA186AAB68241A0D +:101CC0000C1902D3E41A2D6804E0A34202D920447F +:101CD00001F09EFAAB68A342F4D36B683560736081 +:101CE0001E606E60B460AB681C1B4FF0FF33AC60CD +:101CF000FB61F8BD000C0040282600201A4902684C +:101D00000B4610B453F8144F84420FD041680A6058 +:101D1000026851609A424FF00001C16003D093689D +:101D200081680B4493605DF8044B704700209A4231 +:101D30004A615360E06003D15DF8044B01F062BA80 +:101D40009368A0680344086A9360084A526A111AAB +:101D50008B42E8D9821A5DF8044B1A44012A98BFD5 +:101D60008B1C184401F054BA28260020000C0040B7 +:101D700000207047FEE70000704700004FF0FF3082 +:101D80007047000002290CD0032904D0012907481C +:101D900018BF00207047032A05D8054800EBC20091 +:101DA0007047044870470020704700BFB83A0008E9 +:101DB000242400206C3A000870B59AB00546084605 +:101DC000144601AE314600F097F83046FFF75AF856 +:101DD000431CC1B25B00C5E9003423700323023405 +:101DE00004F8013C00231846DAB20234914201D8CB +:101DF0001AB070BDF25C013304F8010C04F8022C37 +:101E0000F2E7000008B5202383F311880348FFF7A9 +:101E10004DFA002383F3118808BD00BF602800201D +:101E200007B5052917D8DFE801F01916031919209D +:101E3000202383F31188104A01210190FFF7E2FA71 +:101E4000019802210D4AFFF7DDFA0D48FFF7FAF974 +:101E5000002383F3118803B05DF804FB202383F390 +:101E600011880748FFF7C4F9F2E7202383F31188AC +:101E70000348FFF7DBF9EBE70C3A0008303A0008BB +:101E80006028002038B50C4D0C4C2A460C4904F152 +:101E90000800FFF791FF05F1CA0204F1100009499B +:101EA000FFF78AFF05F5CA7204F118000649BDE87C +:101EB0003840FFF781BF00BF282D002024240020D8 +:101EC000F4390008F8390008033A000870B50446F0 +:101ED00008460D46FEF7D6FFC6B220460134037809 +:101EE0000BB9184670BD32462946FEF7B3FF0028ED +:101EF000F3D10120F6E700002DE9F04705460C4636 +:101F0000FEF7C0FF2C49C6B22846FFF7DFFF08B135 +:101F10000C36F6B229492846FFF7D8FF08B110362B +:101F2000F6B2632E0BD8DFF89080DFF89090244F44 +:101F3000DFF898A02E7846B92670BDE8F0872946CC +:101F40002046BDE8F04701F009BD252E30D107221B +:101F500041462846FEF77EFF80B91A4B224603F120 +:101F6000100153F8040B8B4242F8040BF9D1198885 +:101F700007359B78133411809370DBE708224946BC +:101F80002846FEF767FF98B9A21C0F4B197802325A +:101F90000909C95D02F8041C13F8011B01F00F01C7 +:101FA0005345C95D02F8031CF0D118340835C1E768 +:101FB000013504F8016BBDE7D83A0008033A000880 +:101FC000F43A0008E03A000800E8F11F0CE8F11FBD +:101FD000BFF34F8F044B1A695107FCD1D3F810217E +:101FE0005207F8D1704700BF0020005208B50D4BD2 +:101FF0001B78ABB9FFF7ECFF0B4BDA68D10704D5C0 +:102000000A4A5A6002F188325A60D3F80C21D2078A +:1020100006D5064AC3F8042102F18832C3F8042128 +:1020200008BD00BF862F0020002000522301674515 +:1020300008B5114B1B78F3B9104B1A69510703D53A +:10204000DA6842F04002DA60D3F81021520705D571 +:10205000D3F80C2142F04002C3F80C21FFF7B8FF7F +:10206000064BDA6842F00102DA60D3F80C2142F044 +:102070000102C3F80C2108BD862F00200020005269 +:102080000F289ABF00F580604004002070470000D0 +:102090004FF4003070470000102070470F2808B53B +:1020A0000BD8FFF7EDFF00F500330268013204D1D1 +:1020B00004308342F9D1012008BD0020FCE7000074 +:1020C0000F2838B505463FD8FFF782FF1F4CFFF7B2 +:1020D0008DFF4FF0FF3307286361C4F814311DD81A +:1020E0002361FFF775FF030243F02403E360E36815 +:1020F00043F08003E36023695A07FCD4FFF768FFCD +:102100002846FFF7BDFF4FF4003100F0EFF8FFF76E +:102110008FFF2846BDE83840FFF7C0BFC4F8103134 +:10212000FFF756FFA0F108031B0243F02403C4F895 +:102130000C31D4F80C3143F08003C4F80C31D4F8DE +:1021400010315B07FBD4D9E7002038BD00200052D6 +:102150002DE9F84F05460C46104645EA0203DB061A +:1021600052D1FFF743FF20F01F00DFF8B4A004EBCB +:102170000008DFF8B0B0444504D1FFF759FF012053 +:10218000BDE8F88F20222146284601F0D9FB00281F +:102190003CD005F178431F481F4EB3F5801F1F4BFD +:1021A00038BF994603F1FC0332BF5846D1461E465C +:1021B000FFF70EFF4FF0FF33A5EB040C04F11C01F9 +:1021C0000360336843F002033360231FD9F80070C3 +:1021D00017F00507FAD153F8042F99424CF8032061 +:1021E000F4D1BFF34F8FFFF7F3FE4FF0FF33202200 +:1021F000214603602846336823F00203336001F070 +:102200009FFB18B1FFF714FF0020B9E720352034F9 +:10221000B1E700BF142100520C20005210200052E0 +:10222000102100521420005210B5084C237828B118 +:102230001BB9FFF7DBFE0123237010BD002BFCD080 +:102240002070BDE81040FFF7F3BE00BF862F0020CE +:102250000244074BD2B210B5904200D110BD441CCD +:1022600000B253F8200041F8040BE0B2F4E700BFDD +:10227000504000580E4B30B51C6F240405D41C6F21 +:102280001C671C6F44F400441C670A4C024423681A +:10229000D2B243F480732360074B904200D130BD2B +:1022A000441C51F8045B00B243F82050E0B2F4E75C +:1022B00000440258004802585040005807B5012217 +:1022C00001A90020FFF7C4FF019803B05DF804FBEB +:1022D00013B50446FFF7F2FFA04205D0012201A981 +:1022E00000200194FFF7C6FF02B010BD0144BFF308 +:1022F0004F8F064B884204D3BFF34F8FBFF36F8FCE +:102300007047C3F85C022030F4E700BF00ED00E046 +:10231000034B1B685B0142BF024B01221A707047DE +:10232000D0440258872F0020014B1878704700BF17 +:10233000872F002070B5BFF34F8FBFF36F8F1A4BFD +:102340000021C3F85012BFF34F8FBFF36F8F5A694C +:1023500042F400325A61BFF34F8FBFF36F8FC3F85F +:102360008410BFF34F8FD3F8802043F6E074C2F39C +:10237000C900C2F34E32520102EA0406014646EA9F +:1023800081750139C3F86052F9D2203A12F1200F59 +:10239000F2D1BFF34F8F5A6942F480325A61BFF3D2 +:1023A0004F8FBFF36F8F70BD00ED00E0FEE70000C0 +:1023B000084A094B09498B4204D3094A0021934238 +:1023C00005D3704752F8040B43F8040BF3E743F8C6 +:1023D000041BF4E7BC3C0008D8300020D8300020B3 +:1023E000D830002030B50022D0E9244311464FF008 +:1023F000FF309D6804EB421301329542C3F8001987 +:10240000C3F81019C3F80809C3F8001BC3F8101B60 +:10241000C3F8080BEED24FF00113C4F81C3830BDDE +:1024200000EB8103D3F80CC02DE9F043DCF8142055 +:102430004E1CD0F89050D2F800E005EB063605EBC4 +:102440004118506870450AD30120D5F8343800FA95 +:1024500001F123EA0101C5F83418BDE8F083AEEBC1 +:102460000003BCF81040A34228BF2346D8F81849FF +:10247000A4B2B3EB840F0FD89468A4F1040959F8FF +:10248000047F3760A4EB09071F44042FF7D81C44CE +:10249000034494605360D4E70020DEE7890141F0F3 +:1024A0002001016103699B06FCD41220FFF75EBB8B +:1024B00010B50A4C2046FEF77DFF094BC4F890305A +:1024C000084BC4F89430084C2046FEF773FF074BC6 +:1024D000C4F89030064BC4F8943010BD882F00200B +:1024E000000008402C3B000824300020000004407D +:1024F000383B000870B503780546012B5DD1494B88 +:10250000D0F89040984259D1474B0E216520D3F81E +:10251000D82042F00062C3F8D820D3F8002142F05E +:102520000062C3F80021D3F80021D3F8802042F0E4 +:102530000062C3F88020D3F8802022F00062C3F844 +:102540008020D3F8803000F071FC384BE360384BCA +:10255000C4F800380023D5F89060C4F8003EC023CA +:1025600023604FF40413A3633369002BFCDA0123C7 +:102570000C203361FFF7FAFA3369DB07FCD4122031 +:10258000FFF7F4FA3369002BFCDA00262846A66030 +:10259000FFF728FF6B68C4F81068DB68C4F814689C +:1025A000C4F81C68002B3AD1224BA3614FF0FF33D3 +:1025B0006361A36843F00103A36070BD1E4B9842A2 +:1025C000C8D1194B0E214D20D3F8D82042F000720B +:1025D000C3F8D820D3F8002142F00072C3F80021DC +:1025E000D3F80021D3F8802042F00072C3F8802095 +:1025F000D3F8802022F00072C3F88020D3F8802026 +:10260000D3F8D82022F08062C3F8D820D3F8002174 +:1026100022F08062C3F80021D3F8003193E7074B22 +:10262000C3E700BF882F0020004402584014004038 +:1026300003002002003C30C024300020083C30C0A1 +:10264000F8B5D0F89040054600214FF000662046CE +:10265000FFF724FFD5F8941000234FF001128F6884 +:102660004FF0FF30C4F83438C4F81C2804EB431290 +:1026700001339F42C2F80069C2F8006BC2F8080932 +:10268000C2F8080BF2D20B68D5F89020C5F8983044 +:10269000636210231361166916F01006FBD1122035 +:1026A000FFF764FAD4F8003823F4FE63C4F8003866 +:1026B000A36943F4402343F01003A3610923C4F842 +:1026C0001038C4F814380B4BEB604FF0C043C4F81B +:1026D000103B094BC4F8003BC4F81069C4F800393A +:1026E000D5F8983003F1100243F48013C5F8982010 +:1026F000A362F8BD083B000840800010D0F890208D +:1027000090F88A10D2F8003823F4FE6343EA0113EC +:10271000C2F80038704700002DE9F84300EB81084B +:10272000D0F890500C460FFA81F9D8F80C204F01E0 +:10273000166806F00306731E022B05EB41134FF0DB +:10274000000194BFB6043A4EC3F8101B04F1100305 +:102750004FF0010198BF06F1805601FA03F1936929 +:1027600098BF06F50046002B3DD0B2F812C004F128 +:1027700058034CEA060C5B0145F803C0D5F81C3839 +:102780001943EB19C5F81C1800210127C3F81019CB +:10279000A7405369611E9BB3138A928B9B08012A41 +:1027A00088BF5343D0F8982003EB020C42EA03435E +:1027B00001F140022146C0F898C0284605EB82028C +:1027C0005360FFF76BFED8F80C301B8A43EA845342 +:1027D00048341E4364012E51D5F81C381F43C5F8F8 +:1027E0001C78BDE8F88305EB491CDCF8003B23F4BA +:1027F0000043CCF8003BD5F81C3823EA0101C0E7C0 +:1028000004F13F030B4A05EB4919214605EB83030D +:1028100028465A60FFF742FED9F8003923F40043F6 +:10282000C9F80039D5F81C3823EA0707D7E700BFF5 +:102830000080001000040002D0F894201268C0F854 +:102840009820FFF7CFBD00005831D0F890304901F3 +:102850005B5813F4004004D013F4001F0CBF022097 +:10286000012070474831D0F8903049015B5813F48B +:10287000004004D013F4001F0CBF02200120704759 +:1028800000EB8101CB68196A0B6813604B685360D9 +:102890007047000000EB810330B5DD68AA6913685A +:1028A000D36019B9402B84BF402313606B8A14682E +:1028B000D0F890201C4402EB4110013C09B2B4FB5B +:1028C000F3F46343033323F0030343EAC44343F0C5 +:1028D000C043C0F8103B2B6803F00303012B0ED15B +:1028E000D2F8083802EB411013F4807FD0F8003B97 +:1028F00014BF43F0805343F00053C0F8003B02EB99 +:102900004112D2F8003B43F00443C2F8003B30BD13 +:102910002DE9F041D0F8906005460C4606EB4113D6 +:10292000D3F8087B3A07C3F8087B08D5D6F81438E3 +:102930001B0704D500EB8103DB685B689847FA0747 +:102940001FD5D6F81438DB071BD505EB8403D968EF +:10295000CCB98B69488A5E68B6FBF0F200FB126264 +:102960008AB91868DA6890420DD2121AC3E90024B5 +:10297000202383F3118821462846FFF78BFF84F339 +:102980001188BDE8F081012303FA04F26B8923EA80 +:1029900002036B81CB68002BF3D021462846BDE8AB +:1029A000F041184700EB81034A0170B5DD68D0F8AB +:1029B00090306C692668E66056BB1A444FF40020DC +:1029C000C2F810092A6802F00302012A0AB20ED1E5 +:1029D000D3F8080803EB421410F4807FD4F8000900 +:1029E00014BF40F0805040F00050C4F8000903EBE1 +:1029F0004212D2F8000940F00440C2F80009012256 +:102A0000D3F8340802FA01F10143C3F8341870BD59 +:102A100019B9402E84BF4020206020681A442E8AB5 +:102A20008419013CB4FBF6F440EAC44040F0005085 +:102A3000C6E700002DE9F041D0F8906004460D464D +:102A400006EB4113D3F80879C3F80879FB071CD5C6 +:102A5000D6F81038DA0718D500EB8103D3F80CC08C +:102A6000DCF81430D3F800E0DA6896451BD2A2EB0C +:102A70000E024FF000081A60C3F80480202383F38D +:102A80001188FFF78FFF88F311883B0618D50123C3 +:102A9000D6F83428AB40134212D029462046BDE870 +:102AA000F041FFF7BDBC012303FA01F2038923EAD9 +:102AB00002030381DCF80830002BE6D09847E4E7F6 +:102AC000BDE8F0812DE9F84FD0F8905004466E69CA +:102AD000AB691E4016F480586E6103D0BDE8F84F14 +:102AE000FEF7DEBC002E12DAD5F8003E9F0705D0B7 +:102AF000D5F8003E23F00303C5F8003ED5F80438AE +:102B0000204623F00103C5F80438FEF7F3FC300536 +:102B100002D52046FEF7E2FCB1040CD5D5F8083802 +:102B200013F0060FEB6823F470530CBF43F41053FB +:102B300043F4A053EB60320704D56368DB680BB144 +:102B400020469847F30200F1BA80B70226D5D4F8A0 +:102B5000909000274FF0010A09EB4712D2F8003B92 +:102B600003F44023B3F5802F11D1D2F8003B002BA2 +:102B70000DDA62890AFA07F322EA0303638104EBA0 +:102B80008703DB68DB6813B1394620469847013775 +:102B9000D4F89430FFB29B689F42DDD9F00619D576 +:102BA000D4F89000026AC2F30A1702F00F0302F48D +:102BB000F012B2F5802F00F0CC80B2F5402F09D191 +:102BC00004EB8303002200F58050DB681B6A974208 +:102BD00040F0B2803003D5F8185835D5E90303D555 +:102BE00000212046FFF794FEAA0303D501212046C9 +:102BF000FFF78EFE6B0303D502212046FFF788FE08 +:102C00002F0303D503212046FFF782FEE80203D5F8 +:102C100004212046FFF77CFEA90203D505212046AA +:102C2000FFF776FE6A0203D506212046FFF770FE05 +:102C30002B0203D507212046FFF76AFEEF0103D5DB +:102C400008212046FFF764FE700340F1A980E907E0 +:102C500003D500212046FFF7EDFEAA0703D5012189 +:102C60002046FFF7E7FE6B0703D502212046FFF75A +:102C7000E1FE2F0703D503212046FFF7DBFEEE061A +:102C800003D504212046FFF7D5FEA80603D505216C +:102C90002046FFF7CFFE690603D506212046FFF741 +:102CA000C9FE2A0603D507212046FFF7C3FEEB0520 +:102CB00076D520460821BDE8F84FFFF7BBBED4F813 +:102CC000909000274FF0010AD4F894305FFA87FB08 +:102CD0009B685B45FFF439AF09EB4B13D3F8002930 +:102CE00002F44022B2F5802F24D1D3F80029002A23 +:102CF00020DAD3F8002942F09042C3F80029D3F833 +:102D00000029002AFBDB5946D4F89000FFF7C6FBE8 +:102D100022890AFA0BF322EA0303238104EB8B03D3 +:102D2000DB689B6813B159462046984759462046B0 +:102D3000FFF776FB0137C7E7910701D1D0F8008094 +:102D4000072A02F101029CBF03F8018B4FEA182801 +:102D50003DE704EB830300F58050DA68D2F818C031 +:102D6000DCF80820DCE9001CA1EB0C0C00218F42F0 +:102D700008D1DB689B699A683A449A605A6817449C +:102D80005F6027E711F0030F01D1D0F800808C4578 +:102D900001F1010184BF02F8018B4FEA1828E6E730 +:102DA000BDE8F88F08B50348FFF78CFEBDE8084082 +:102DB00000F0D6BA882F002008B50348FFF782FE3E +:102DC000BDE8084000F0CCBA24300020D0F89030A4 +:102DD00003EB4111D1F8003B43F40013C1F8003B71 +:102DE00070470000D0F8903003EB4111D1F8003962 +:102DF00043F40013C1F8003970470000D0F8903058 +:102E000003EB4111D1F8003B23F40013C1F8003B60 +:102E100070470000D0F8903003EB4111D1F8003931 +:102E200023F40013C1F8003970470000090100F1D4 +:102E30006043012203F56143C9B283F8001300F037 +:102E40001F039A4043099B0003F1604303F561436C +:102E5000C3F880211A60704730B50433039C0172B7 +:102E6000002104FB0325C160C0E90653049B0363F2 +:102E7000059BC0E90000C0E90422C0E90842C0E99E +:102E80000A11436330BD00000022416AC260C0E9FC +:102E90000411C0E90A226FF00101FEF7D7BE00005D +:102EA000D0E90432934201D1C2680AB9181D7047B3 +:102EB00000207047036919600021C2680132C260B6 +:102EC000C269134482699342036124BF436A036168 +:102ED000FEF7B0BE38B504460D46E3683BB1626903 +:102EE0000020131D1268A3621344E36207E0237AF3 +:102EF00033B929462046FEF78DFE0028EDDA38BDAD +:102F00006FF00100FBE70000C368C269013BC360CA +:102F10004369134482699342436124BF436A436116 +:102F200000238362036B03B11847704770B52023F9 +:102F3000044683F31188866A3EB9FFF7CBFF054646 +:102F400018B186F31188284670BDA36AE26A13F8A7 +:102F5000015B9342A36202D32046FFF7D5FF002313 +:102F600083F31188EFE700002DE9F84F04460E4681 +:102F700090469946202787F311880025AA46D4F861 +:102F800028B0BBF1000F09D149462046FFF7A2FF48 +:102F900020B18BF311882846BDE8F88FD4E90A12D6 +:102FA000A8EB050B521A934528BF9346BBF1400F7F +:102FB0001BD9334601F1400251F8040B914243F80A +:102FC000040BF9D1A36A403640354033A362D4E9FB +:102FD0000A239A4202D32046FFF796FF8AF311880C +:102FE0004545D8D287F31188C9E730465A46FDF7E0 +:102FF00027FFA36A5E445D445B44A362E7E70000E9 +:1030000010B5029C0433017204FB0321C460C0E9C3 +:1030100006130023C0E90A33039B0363049BC0E942 +:103020000000C0E90422C0E90842436310BD00006B +:10303000026A6FF00101C260426AC0E90422002204 +:10304000C0E90A22FEF702BED0E904239A4201D168 +:10305000C26822B9184650F8043B0B607047002044 +:1030600070470000C3680021C2690133C36043692F +:10307000134482699342436124BF436A4361FEF76C +:10308000D9BD000038B504460D46E3683BB123695D +:1030900000201A1DA262E2691344E36207E0237A6A +:1030A00033B929462046FEF7B5FD0028EDDA38BDD4 +:1030B0006FF00100FBE7000003691960C268013A84 +:1030C000C260C269134482699342036124BF436AA8 +:1030D000036100238362036B03B11847704700004C +:1030E00070B520230D460446114683F31188866A85 +:1030F0002EB9FFF7C7FF10B186F3118870BDA36A20 +:103100001D70A36AE26A01339342A36204D3E169AA +:1031100020460439FFF7D0FF002080F31188EDE747 +:103120002DE9F84F04460D4691469A464FF0200887 +:1031300088F311880026B346A76A4FB95146204646 +:10314000FFF7A0FF20B187F311883046BDE8F88F64 +:10315000D4E90A073A1AA9EB0607974228BF17468F +:10316000402F1BD905F1400355F8042B9D4240F830 +:10317000042BF9D1A36A40364033A362D4E90A2371 +:103180009A4204D3E16920460439FFF795FF8BF397 +:1031900011884E45D9D288F31188CDE729463A46A1 +:1031A000FDF74EFEA36A3D443E443B44A362E5E77F +:1031B000D0E904239A4217D1C3689BB1836A8BB1CB +:1031C000043B9B1A0ED01360C368013BC360C36904 +:1031D0001A4483699A42026124BF436A036100234F +:1031E00083620123184670470023FBE700F0FAB81A +:1031F000034B002258631A610222DA60704700BF55 +:10320000000C0040014B0022DA607047000C0040C7 +:10321000014B5863704700BF000C00404B6843608F +:103220008B688360CB68C3600B6943614B69036241 +:103230008B6943620B6803607047000008B52C4B34 +:1032400040F2FF712B48D3F888200A43C3F8882046 +:10325000D3F8882022F4FF6222F00702C3F8882006 +:10326000D3F88820D3F8E0200A43C3F8E020D3F84D +:1032700008210A43C3F808211F4AD3F80831114630 +:10328000FFF7CCFF1D4802F11C01FFF7C7FF1C48E8 +:1032900002F13801FFF7C2FF1A4802F15401FFF7AB +:1032A000BDFF194802F17001FFF7B8FF174802F19E +:1032B0008C01FFF7B3FF164802F1A801FFF7AEFF3C +:1032C000144802F1C401FFF7A9FF134802F1E0011D +:1032D000FFF7A4FF114802F1FC01FFF79FFF104820 +:1032E00002F58C71FFF79AFFBDE8084000F050B975 +:1032F0000044025800000258443B000800040258F1 +:1033000000080258000C025800100258001402581D +:1033100000180258001C02580020025800240258CD +:103320000028025808B500F0FBFAFEF797FBFEF7FD +:10333000EFFFBDE80840FEF7A5BD000070470000A4 +:10334000064A536823F001035360EFF3098368339F +:1033500083F30988002383F31188704730EF00E07E +:10336000202310B583F31188104B5B6813F40063BE +:1033700018D0F1EE103AEFF309844FF0807344F85F +:103380004C3C0B4BDB6844F8083CA4F1680383F326 +:103390000988FEF73FFB18B1064B44F8503C10BDBE +:1033A000054BFAE783F31188F9E700BF00ED00E071 +:1033B00030EF00E0F1030008F4030008084B1A693D +:1033C000920710B508D500241C61202383F31188CF +:1033D000FEF788FB84F31188BDE81040FFF7C0BFFB +:1033E000000C0040124B08213220D3F8E82042F0B4 +:1033F0000802C3F8E820D3F8102142F00802C3F80D +:1034000010210C4AD3F81031D36B43F00803D36377 +:10341000C722094B9A624FF0FF32DA6200229A61AA +:103420005A63DA605A6001225A611A60FFF7FEBCE3 +:10343000004402580010005C000C00404F4B70B577 +:10344000D3F8802000244FF0FF32C3F88020D3F857 +:103450008010C3F88040D3F88010D3F88410C3F8EC +:103460008420D3F88410C3F88440D3F88410D96F33 +:1034700041F0FF4141F4FF0141F4DF4141F07F01A0 +:10348000D967D96F21F0FF4121F4FF0121F4DF4119 +:1034900021F07F01D967D96FD3F888106FEA4151C5 +:1034A0006FEA5151C3F88810D3F88810C1F30A01AC +:1034B000C3F88810D3F88810D3F89010C3F8902080 +:1034C000D3F89010C3F89040D3F89010D3F894102C +:1034D000C3F89420D3F89410C3F89440D3F8941010 +:1034E000D3F89810C3F89820D3F89810C3F89840F0 +:1034F000D3F89810D3F88C10C3F88C20D3F88C1024 +:10350000C3F88C40D3F88C10D3F89C10C3F89C20DF +:10351000D3F89C20C3F89C40D3F89C3000F0E0F92D +:10352000174B07229A60174ADA60174A1A61052278 +:103530005A60164A536A43F480335362C2F8844097 +:10354000BFF34F8FD2F8803043F6E074C3F3C90065 +:10355000C3F34E335B0103EA0406014646EA817574 +:103560000139C2F87452F9D2203B13F1200FF2D185 +:10357000BFF34F8FBFF36F8F70BD00BF0044025881 +:1035800090ED00E0000004301B00080300ED00E0B7 +:103590000122574B57491A60574B19609A60574A96 +:1035A000DA6000221A614FF440429A619A699004ED +:1035B000FCD51A6842F480721A60514B1A6F12F4EB +:1035C000407F04D04FF480321A6700221A671A68CD +:1035D00042F001021A604A4A134611684907FCD5B5 +:1035E000002111611A6912F03802FBD10121196022 +:1035F0004FF0804159605A67424ADA62424A1A6182 +:103600001A6842F480321A603D4B1A689203FCD566 +:103610003E4A3F499A6200225A631963A1F580210C +:10362000DA634B3999635A643A4A1A643A4ADA625D +:103630001A6842F0A8521A60314B1A6802F02852F8 +:10364000B2F1285FF9D1482222219A614FF48862B1 +:10365000DA6140221A624FF00052DA641A652F4A8A +:103660005A652F4A9A652F4A11601A6942F003027F +:103670001A61234B1A6902F03802182AFAD1D3F8DA +:10368000DC2042F00052C3F8DC20D3F8042142F0E1 +:103690000052C3F80421D3F80421D3F8DC2042F00F +:1036A0008042C3F8DC20D3F8042142F08042C3F802 +:1036B0000421D3F80421D3F8DC2042F00042C3F8FF +:1036C000DC20D3F8042142F00042C3F80421D3F8EF +:1036D0000421D3F8F42042F00202C3F8F420D3F816 +:1036E0001C2142F00202C3F81C21D3F81C317047A0 +:1036F0000881005100C000F000480258020000019B +:10370000004402580000FF01008890083230600039 +:103710006302070147040508FD0BFF010010E000EC +:103720000001010000200052084A08B591681368A2 +:103730000B4003F00103936023B1054A13680BB1FA +:1037400050689847BDE80840FFF70ABE800000585F +:10375000A8250020084A08B5916813680B4003F0BB +:103760000203936023B1054A93680BB1D068984770 +:10377000BDE80840FFF7F4BD80000058A8250020F0 +:10378000084A08B5916813680B4003F0040393607E +:1037900023B1054A13690BB150699847BDE8084049 +:1037A000FFF7DEBD80000058A8250020084A08B5B4 +:1037B000916813680B4003F00803936023B1054A36 +:1037C00093690BB1D0699847BDE80840FFF7C8BDC1 +:1037D00080000058A8250020084A08B591681368A1 +:1037E0000B4003F01003936023B1054A136A0BB139 +:1037F000506A9847BDE80840FFF7B2BD8000005806 +:10380000A8250020174B10B59A681C68144004F4D2 +:1038100078729A60A30604D5134A936A0BB1D06AF2 +:103820009847600604D5104A136B0BB1506B98474C +:10383000210604D50C4A936B0BB1D06B9847E20577 +:1038400004D5094A136C0BB1506C9847A30504D5F5 +:10385000054A936C0BB1D06C9847BDE81040FFF758 +:103860007FBD00BF80000058A82500201A4B10B56E +:103870009A681C68144004F47C429A60620504D57E +:10388000164A136D0BB1506D9847230504D5134AA2 +:10389000936D0BB1D06D9847E00404D50F4A136EB9 +:1038A0000BB1506E9847A10404D50C4A936E0BB12E +:1038B000D06E9847620404D5084A136F0BB1506F5D +:1038C0009847230404D5054A936F0BB1D06F9847EE +:1038D000BDE81040FFF744BD80000058A825002037 +:1038E000062108B50846FFF7A1FA06210720FFF7D1 +:1038F0009DFA06210820FFF799FA06210920FFF713 +:1039000095FA06210A20FFF791FA06211720FFF702 +:103910008DFA06212820BDE80840FFF787BA00008D +:1039200008B5FFF78BFDFDF791FBFDF741FDFDF7B6 +:1039300017FCFFF703FDBDE80840FFF757BC000088 +:1039400030B501390024A24201D1002005E0035D19 +:1039500001340D5DAB42F6D0581B30BD034611F863 +:10396000012B03F8012B002AF9D1704753544D3332 +:103970003248373F3F3F0053544D3332483734339A +:103980002F3735330000000001105A000310590092 +:10399000012058000320560000000000D510000848 +:1039A000C1100008FD100008E9100008F51000081B +:1039B000E1100008CD100008B91000085D110008E2 +:1039C0000000000001000000000000006D61696E51 +:1039D0000000000069646C6500000000D439000834 +:1039E000682600206028002001000000591A000805 +:1039F000000000006D526F0025424F415244252DBA +:103A0000424C002553455249414C2500020000001C +:103A100000000000F912000869130008400040008F +:103A2000F82C0020082D00200200000000000000FB +:103A30000300000000000000AD13000800000000BB +:103A400010000000182D0020000000000100000000 +:103A500000000000882F002001010200211E000844 +:103A6000851D000871120008051E000843000000B3 +:103A7000743A000809024300020100C03209040040 +:103A800000010202010005240010010524010001CB +:103A9000042402020524060001070582030800FF32 +:103AA00009040100020A00000007050102400000AD +:103AB000070581024000000012000000C03A000823 +:103AC00012011001020000400912415700020102D8 +:103AD000030100000403090425424F41524425001C +:103AE0006D526F436F6E74726F6C5A65726F4F4593 +:103AF0004D4837003031323334353637383941426A +:103B0000434445460000000000000000091500087D +:103B1000D11700088518000840004000C030002080 +:103B2000C030002001000000D030002080000000E4 +:103B30004001000008000000000100000004000037 +:103B4000080000000000802A00000000AAAAAAAA1B +:103B500000000000FFFF00000000000000A00A00BD +:103B60004400400000000000AAAAAAAA0000000029 +:103B7000FFFF000000000000000000001000000037 +:103B800000000000AAAAAAAA10000000FFFF00007F +:103B900000000000000000000040100000000000D5 +:103BA000AAAA8AAA00401000FFFF0000000000003F +:103BB000000000000000004000000000AAAAAAAA1D +:103BC00000000040FFFF00000000000000000000B7 +:103BD0000010100000000000AAAAAAAA00101000FD +:103BE000FFFF0000000000000000000000000400D3 +:103BF00000000000AAAAAAAA00000400FFFF00001B +:103C000000000000000000000000000000000000B4 +:103C1000AAAAAAAA00000000FFFF000000000000FE +:103C2000000000000000000000000000AAAAAAAAEC +:103C300000000000FFFF0000000000000000000086 +:103C40000000000000000000AAAAAAAA00000000CC +:103C5000FFFF000000000000000000000000000066 +:103C600000000000AAAAAAAA00000000FFFF0000AE +:103C70000000000000000000FF0000000000000045 +:103C80006C3900083F00000050040000773900083C +:103C90003F00000000960000000008000400000043 +:103CA000D43A0008000000000000000000000000FE +:0C3CB00000000000000000000000000008 +:00000001FF diff --git a/Tools/bootloaders/mRoPixracerPro_bl.bin b/Tools/bootloaders/mRoPixracerPro_bl.bin new file mode 100755 index 0000000000000..8de5ad01eda5d Binary files /dev/null and b/Tools/bootloaders/mRoPixracerPro_bl.bin differ diff --git a/Tools/bootloaders/mRoPixracerPro_bl.hex b/Tools/bootloaders/mRoPixracerPro_bl.hex new file mode 100644 index 0000000000000..88bc47777fe81 --- /dev/null +++ b/Tools/bootloaders/mRoPixracerPro_bl.hex @@ -0,0 +1,1083 @@ +:020000040800F2 +:1000000000040020A102000871100008751000080B +:10001000C9100008751000089D100008A302000810 +:10002000A3020008A3020008A3020008E9290008AF +:10003000A3020008A3020008A3020008A30200080C +:10004000A3020008A3020008A3020008A3020008FC +:10005000A3020008A3020008B13D0008DD3D00082E +:10006000093E0008353E0008613E0008A302000872 +:10007000A3020008A3020008A3020008A3020008CC +:10008000A3020008A3020008A3020008A3020008BC +:10009000A3020008A3020008A30200088D3E000886 +:1000A000A3020008A3020008A3020008A30200089C +:1000B000A3020008A3020008A3020008A30200088C +:1000C000A3020008A3020008A3020008A30200087C +:1000D000A3020008A3020008A3020008A30200086C +:1000E000F53E0008A3020008A3020008A3020008CE +:1000F000A3020008A3020008A3020008A30200084C +:10010000A3020008A3020008453A0008A302000861 +:10011000A3020008A3020008A3020008A30200082B +:10012000A3020008A3020008A3020008A30200081B +:10013000A3020008A3020008A3020008A30200080B +:10014000A3020008A3020008A3020008A3020008FB +:10015000A3020008A3020008A3020008A3020008EB +:10016000A3020008A3020008A3020008A3020008DB +:10017000A3020008E9340008A3020008A302000853 +:10018000A3020008A302000861110008A3020008EE +:10019000A3020008A3020008A3020008A3020008AB +:1001A000A3020008A3020008A3020008A30200089B +:1001B000A3020008A3020008A3020008A30200088B +:1001C000A3020008A3020008A3020008A30200087B +:1001D000A3020008D5340008A3020008A302000807 +:1001E000A3020008A3020008A3020008A30200085B +:1001F000A3020008A3020008A3020008A30200084B +:10020000A3020008A3020008A3020008A30200083A +:10021000A3020008A3020008A3020008A30200082A +:10022000A3020008A3020008A3020008A30200081A +:10023000A3020008A3020008A3020008A30200080A +:10024000A3020008A3020008A3020008A3020008FA +:10025000A3020008A3020008A3020008A3020008EA +:10026000A3020008A3020008A3020008A3020008DA +:10027000A3020008A3020008A3020008A3020008CA +:10028000A3020008A3020008A3020008A3020008BA +:10029000A3020008A3020008A3020008A3020008AA +:1002A00002E000F000F8FEE772B6394880F30888F3 +:1002B000384880F3098838484EF60851CEF20001DC +:1002C000086040F20000CCF200004EF63471CEF22D +:1002D00000010860BFF34F8FBFF36F8F40F2000043 +:1002E000C0F2F0004EF68851CEF200010860BFF374 +:1002F0004F8FBFF36F8F4FF00000E1EE100A4EF604 +:100300003C71CEF200010860062080F31488BFF330 +:100310006F8F02F0A7FB03F013FB4FF055301F491E +:100320001B4A91423CBF41F8040BFAE71C49194AA9 +:1003300091423CBF41F8040BFAE71A491A4A1B4B99 +:100340009A423EBF51F8040B42F8040BF8E7002034 +:100350001749184A91423CBF41F8040BFAE702F0F2 +:10036000BFFB03F061FB144C144DAC4203DA54F8AC +:10037000041B8847F9E700F03FF8114C114DAC42DF +:1003800003DA54F8041B8847F9E702F0A7BB000022 +:1003900000040020002400200000000800000020CD +:1003A00000040020484300080024002044240020CA +:1003B0004824002060350020A0020008A0020008A8 +:1003C000A0020008A00200082DE9F04F2DED108AD0 +:1003D000C1F80CD0D0F80CD0BDEC108ABDE8F08F7D +:1003E000002383F311882846A047002001F05CFF1A +:1003F00001F08CFE00DFFEE738B5204C6FF00603FD +:10040000002523700323A57063701E23E5702571FA +:100410006571A571E57125726572A372E57200F0D0 +:10042000F3FC20B10E2325726572A372E57202F00F +:100430009FFA054602F0D2FA0446D0B9104B9D420D +:1004400019D001339D4241F2883512BF0446002580 +:100450000124002002F096FA0CB100F059F800F0E7 +:10046000ADFD00F019FC284600F008F900F050F846 +:10047000F9E70025EDE70546EBE700BF482400203B +:10048000010007B008B500F071FBA0F1200358424D +:10049000584108BD07B541F21203022101A8ADF889 +:1004A000043000F0E3FB03B05DF804FB202310B53B +:1004B00083F311881248C3680BB101F07BFF00235E +:1004C000104A4FF47A710E4801F038FF002383F38D +:1004D00011880D4C236813B12368013B23606368C6 +:1004E00013B16368013B6360084B1B7833B96368E1 +:1004F00023B9022000F0CCFC3223636010BD00BFA2 +:1005000054240020AD040008702500206824002039 +:10051000F8B5514A514B1968013100F09B80043302 +:100520009342F8D14E4C4F4B22689A4240F292804F +:100530004D4B9B6803F1006303F500339A4280F052 +:100540008980002000F0C2FB0220484B187000F0A8 +:1005500091FC474BD3F8E8200022C3F8E820D3F8F9 +:100560001011C3F81021D3F81011D3F8EC10C3F810 +:10057000EC20D3F81411C3F81421D3F81411D3F8D4 +:10058000F010C3F8F020D3F81811C3F81821D3F8ED +:100590001811D3F8801041F00061C3F88010D3F82F +:1005A000801021F00061C3F88010D3F88010D3F8D8 +:1005B000801041F00071C3F88010D3F8801021F052 +:1005C0000071C3F88010D3F8803072B6234B2949EC +:1005D0000B6018682468BFF34F8FBFF36F8F264BF3 +:1005E000C3F88420BFF34F8F5A6922F480325A61D6 +:1005F000BFF34F8FD3F8802043F6E076C2F3C905EE +:10060000C2F34E32520102EA060C29464CEA8177C7 +:100610000139C3F87472F9D2203A12F1200FF2D1E5 +:10062000BFF34F8FBFF36F8FBFF34F8FBFF36F8F4A +:100630005A6922F400325A610022C3F85022BFF3F3 +:100640004F8FBFF36F8F202383F31188854680F38C +:1006500008882047F8BD00BF2000020800000208FB +:1006600004000208FFFF010848240020682400203D +:100670000044025808ED00E000ED00E02DE9F04FE5 +:1006800095B0B44C2022FF2101900CA8A76800F07F +:100690003BFCB14A02941378A3B90121AF48117011 +:1006A000C360202383F31188C3680BB101F082FE7D +:1006B0000023AB4A4FF47A71A84801F03FFE0023B3 +:1006C00083F31188019B13B1A64B019A1A60002392 +:1006D000A54A019E13709946A24A1D461C4698469B +:1006E000DFF890B25360012000F0C4FB26B19D4BAF +:1006F0001B68002B00F00182002000F037FA059003 +:10070000059B002BF2DB012000F0A4FB059B213BA5 +:10071000122BE8D801A252F823F000BF69070008A5 +:1007200091070008FF070008E7060008E706000831 +:10073000E706000893080008670A0008790900081E +:10074000E30900080B0A0008310A0008E706000860 +:10075000430A0008E7060008B90A000881080008F3 +:10076000E7060008010B00080220FFF78BFE0028B7 +:1007700040F0ED81019BB9F1000F08BF1E4641F228 +:100780001233022107A8ADF81C3000F06FFAAAE777 +:100790004FF47A7000F0EAF9031E0393EADB0220BB +:1007A000FFF770FE82460028E4D0039B581E042801 +:1007B00000F2CF81DFE800F0030D101316000523CF +:1007C000042107A8079300F051FA55464FF000089E +:1007D00056E004215F48F6E704216448F3E704216A +:1007E0006348F0E71C252846043500F071FA04211F +:1007F000079007A800F03AFA2C2DF4D1E5E7002C79 +:10080000B8D0002DB6D00220FFF73CFE04460028E9 +:1008100000F0A2810120002500F058FA0220524B7E +:10082000187000F027FB5FFA85F9484600F05EFA81 +:10083000064658B14846013500F068FA0028F2D162 +:100840002546A146064641F212139AE70123464A7D +:1008500037460220137000F0FDFA029B9B68BB42F2 +:1008600007D9384600F034FA013040F07781043778 +:10087000F3E700273C4BA14625461F70394B5F60CC +:1008800000F092FB14B1002D18BF0026FFF702FE06 +:1008900029E7002C3FF46EAF002D3FF46BAF022030 +:1008A000314B187000F0E6FA322000F05FF9B0F139 +:1008B000000AC0F251811AF0030440F04D81029AFF +:1008C0000AEB07039268934200F24681BAF5807FF3 +:1008D00000F34281274BA24503930EDD4FF47A705B +:1008E00000F044F90590059A002AC0F23581059A76 +:1008F0000134039B03F8012BEDE7C820FFF7C2FD8D +:100900000446002800F028811F2F11D8C7F12002CB +:100910000CAB27F0030059465245184428BF5246F5 +:10092000039200F0C7FA039AFF21584600F0ECFA50 +:100930004FEAAA03CAF3870259463846039300F0E8 +:10094000EBFA0546002800F00C81039B044607EBF8 +:10095000830795E7482400206C25002054240020BC +:10096000AD04000870250020682400204C240020DD +:10097000502400206C2400200220FFF783FD002873 +:100980003FF4F8AE00F0DCF900283FF4F3AE4FF08E +:10099000000A5346029A926852451CD9BAF11F0FB9 +:1009A00012D80C9A01320FD02AF0030214A90A447B +:1009B00052F8202C07921846042207A90AF1040ACB +:1009C00000F096FB0346E5E75046039300F080F9FC +:1009D000039B0790EFE70793042107A800F046F96F +:1009E0004EE70023642106A8069300F001F90028D1 +:1009F0007FF4C0AE0220FFF745FD00283FF4BAAEF9 +:100A0000069800F095F90790E6E70023642106A810 +:100A1000069300F0EDF800287FF4ACAE0220FFF75B +:100A200031FD00283FF4A6AE069800F083F9EAE70E +:100A30000220FFF727FD00283FF49CAE00F090F95C +:100A4000E1E70220FFF71EFD00283FF493AE07A95F +:100A5000142000F08BF982460421069006A800F0CD +:100A600005F95146B9E7322000F080F8B0F1000AEC +:100A7000FFF680AE1AF0030F7FF47CAE029A0AEB09 +:100A80000803926893423FF675AE0220FFF7FAFC26 +:100A900000283FF46FAE2AF0030AC244D0453FF469 +:100AA000EFAE404608F1040800F012F90421079067 +:100AB00007A800F0DBF8F1E74FF47A70FFF7E2FCEB +:100AC00000283FF457AE00F03BF900283FF4BBAEDE +:100AD0000C9B01330CD008220CA9002000F01CFA5A +:100AE00000283FF4B0AE2022FF210CA800F00CFA41 +:100AF000FFF7D0FC1C4801F0DDFB15B0BDE8F08F1E +:100B0000002C3FF437AE002D3FF434AE00236421B7 +:100B100007A8079300F06CF8824600287FF42AAEFD +:100B20000220FFF7AFFC039000283FF423AEFFF74D +:100B3000B1FC41F2883001F0BDFB079800F078FA73 +:100B4000564600F031FA039B1D461C46CBE5044691 +:100B500096E64FF000080DE62C460BE62546A1462A +:100B600071E625466FE600BFA08601002DE9F74338 +:100B70001B4E002396F900208DF807304FF47A734E +:100B8000511CA0FB03890BD1164801220DF107016E +:100B900003681F6A4346B847012803D1002011E0CB +:100BA000002AF1D096F900305A1C01D0012B10D147 +:100BB0000D4801220DF1070103681D6A4346A8474D +:100BC000012806D1094B18709DF8070003B0BDE855 +:100BD000F0834FF4FA7001F06DFB4FF0FF30F5E752 +:100BE00000240020E82C002040260020BC25002006 +:100BF0002DE9F0414FF47A73184D0446A1FB0367C9 +:100C000095F90030591C0BD1154804222146036880 +:100C1000D3F820803346C047042803D1002311E0D5 +:100C2000002BF1D095F900305A1C01D0012B0ED1C8 +:100C30000C480422214603681D6A3346A84704284D +:100C400005D10123084A00201370BDE8F0814FF45C +:100C5000FA7001F02FFB4FF0FF30F6E70024002080 +:100C6000E82C002040260020BC250020074B0A4627 +:100C700030B41978064B53F82140014623682046CA +:100C8000DD69044BAC4630BC604700BFBC2500208A +:100C900024400008A086010070B50A4C00250A4EC9 +:100CA00001F054FD207030682378834208D901F0A8 +:100CB00049FD336805440133B5F5003F3360F2D395 +:100CC00070BD00BFBD2500207825002001F006BEC4 +:100CD00000F1006000F500300068704700F100602E +:100CE000920000F5003001F08DBD0000054B1A6840 +:100CF000054B1B789B1A834202D9104401F022BD98 +:100D00000020704778250020BD25002038B5074D0C +:100D100004462868204401F01BFD28B928682044B7 +:100D2000BDE8384001F026BD38BD00BF7825002061 +:100D300000207047014BC058704700BF00E8F11F0A +:100D4000064991F8243033B100230822086A81F85B +:100D50002430FFF7C3BF0120704700BF7C2500206F +:100D6000014B1868704700BF0010005C244B254AF7 +:100D7000F0B51B6804461788C3F30B0056681B0CBC +:100D800092F90850B84228D09789B84206D101207C +:100D90000C2505FB0022566892F9085041F2010229 +:100DA00093421CD041F2030293421AD042F2010254 +:100DB000934218D042F20302934208BF5625621EA6 +:100DC0000B46741E0A4493420FD214F9016F581C4B +:100DD0006EB1034600F8016CF5E70020D8E75A250C +:100DE000EDE75925EBE75825E9E7184605E02C24FF +:100DF00090421C7001D2981C5D70401AF0BD00BF7B +:100E00000010005C04240020104B41F201015A88BC +:100E10008A42134611D041F203018A420FD042F2B6 +:100E2000010293420DD042F2030293420BD10323FD +:100E3000074A02EB8303D87870470023F8E70123C1 +:100E4000F6E70223F4E70020704700BF0010005CC3 +:100E500014400008022804D1054B4FF000629A614B +:100E600070470128FCD1024B4FF40032F7E700BF76 +:100E700000040258022804D1044B4FF400629A6126 +:100E800070470128FCD1014B0222F8E70004025808 +:100E9000022805D1064A536983F400635361704701 +:100EA0000128FCD1024A536983F00203F6E700BF30 +:100EB00000040258002310B5934203D0CC5CC45404 +:100EC0000133F9E710BD0000013830B510F9013FDA +:100ED0000C4663B194F9005001319D4207D1551E73 +:100EE0001AB994F90020981A30BD2A46EEE7002A74 +:100EF000F7D11046F8E7000003460246D01A12F96F +:100F0000011B0029FAD1704702440346934202D0E4 +:100F100003F8011BFAE770472DE9F843214C154609 +:100F200006460F4694F8242072BBDFF87880BDB3E4 +:100F300094F824302BB92022FF2140462662FFF787 +:100F4000E3FF94F824003946C0F1080204EB800066 +:100F5000AA4228BF2A465FFA82F99200FFF7AAFF49 +:100F600094F82430A5EB0905164499441744EDB2D2 +:100F70005FFA89F9B9F1080F84F82490D7D1FFF707 +:100F8000DFFE0028D3D108E0236A03EB820383420B +:100F9000CBD0FFF7D5FE0028C7D10020BDE8F883ED +:100FA0000120FBE77C250020024B1A78024B1A70C7 +:100FB000704700BFBC2500200024002038B5164C27 +:100FC000164D204600F02AFC2946204600F052FC2F +:100FD0002D681348D5F89020D2F8043843F0020366 +:100FE000C2F8043801F066F90E49284600F04EFDBB +:100FF000D5F890200C48D2F804380C49A04223F0D0 +:101000000203C2F804384FF4E1330B6003D0BDE8AB +:10101000384000F05FBB38BDE82C002028410008B4 +:1010200040420F003041000840260020A425002047 +:1010300038B50B4B04461A780A4B53F822500A4B2A +:101040009D420CD0094B002118221846FFF75CFF87 +:10105000046001462846BDE8384000F03BBB38BD7F +:10106000BC25002024400008E82C0020A4250020F6 +:10107000FEE7000000B59BB0EFF3098168226846E7 +:10108000FFF718FFEFF30583034B9A6B9A6A9A6A8E +:101090009A6A9A6A9B6AFEE700ED00E000B59BB091 +:1010A000EFF3098168226846FFF704FFEFF3058339 +:1010B000044B9A6B9A6A9A6A9A6A9A6A9A6A9B6AC3 +:1010C000FEE700BF00ED00E000B59BB0EFF3098143 +:1010D00068226846FFF7EEFEEFF30583034B5A6B79 +:1010E0009A6A9A6A9A6A9A6A9B6AFEE700ED00E039 +:1010F00030B50A44084D91420DD011F8013B5840DB +:10110000082340F30004013B2C4013F0FF0384EA62 +:101110005000F6D1EFE730BD2083B8ED0023054A3B +:1011200019460133102BC2E9001102F10802F8D16F +:10113000704700BFC0250020024A136843F0C00377 +:101140001360704700780040044B5A6810439A6857 +:1011500058600AB1181D1047704700BF4026002094 +:101160002DE9F84F404EF56D2F68EC6921072C6290 +:1011700018D014F0080018BF8020E20748BF40F0E4 +:101180002000A3074FF0200348BF40F04000610754 +:1011900048BF40F4807083F31188FFF7D5FF002328 +:1011A00083F31188E20509D5202383F311884FF4D6 +:1011B0000070FFF7C9FF002383F311884FF0200967 +:1011C000DFF8A4A04FF0000B14F0200838D13B0644 +:1011D00015D54FF02009DFF894A020060FD589F32C +:1011E0001188504600F0EAF9002836DA0820FFF7A7 +:1011F000ABFF27F080032B60002383F3118879066F +:1012000013D5620611D5202383F31188D6E9132361 +:101210009A4207D1336C2BB127F040071020FFF71B +:1012200093FF2F60002383F31188E30604D5B26E89 +:1012300013690BB150699847BDE8F84F01F0E4BB62 +:1012400089F31188AB8C504696F86410194000F071 +:101250004FFA8BF31188EC69B6E780B2288588F3E2 +:101260001188EC69B9E700BF4026002078260020ED +:1012700013B5104C204600F021FA04F114000023AD +:101280004FF400720C49009400F0E2F804F13800C9 +:101290000A4B4FF400720A49009400F05BF9094AC6 +:1012A000094B0C215220C4E9172302B0BDE81040BD +:1012B00000F05EB840260020AC260020391100085E +:1012C000AC2800200078004000E1F505254B0029FE +:1012D00008BF1946037C012B816630B511D1224B22 +:1012E00098420ED1214BD3F8E82042F08042C3F857 +:1012F000E820D3F8102142F08042C3F81021D3F83F +:1013000010310A68036EC46D03EB5203B3FBF2F3B2 +:101310004A68150442BF23F0070503F0070343EAB8 +:101320004503E3608B6843F040036360CB6851057D +:1013300043F00103A36042F4967343F0010323607A +:101340004FF0FF33236205D512F0102205D0B2F121 +:10135000805F04D080F8643030BD7F23FAE73F23FC +:10136000F8E700BF2C400008402600200044025847 +:10137000090100F16043012203F56143C9B283F81A +:10138000001300F01F039A4043099B0003F16043E0 +:1013900003F56143C3F880211A607047F8B515461C +:1013A000826804460B46AA4200D28568A169266974 +:1013B000761AB5420BD218462A46FFF77BFDA36981 +:1013C0002B44A3612846A3685B1BA360F8BD0CD91E +:1013D000AF1B18463246FFF76DFD3A46E1683044D0 +:1013E000FFF768FDE3683B44EBE718462A46FFF742 +:1013F00061FDE368E5E7000083689342F7B50446C2 +:10140000154600D28568D4E90460361AB5420BD27D +:101410002A46FFF74FFD63692B4463612846A368A2 +:101420005B1BA36003B0F0BD0DD93246AF1B019129 +:10143000FFF740FD01993A46E0683144FFF73AFD75 +:10144000E3683B44E9E72A46FFF734FDE368E4E755 +:1014500010B50A440024C361029B8460C16002612C +:101460000362C0E90000C0E9051110BD08B5D0E96C +:101470000532934201D1826882B98268013282606A +:101480005A1C426119700021D0E904329A4224BFEB +:10149000C368436100F02AFF002008BD4FF0FF3011 +:1014A000FBE7000070B5202304460E4683F3118845 +:1014B000A568A5B1A368A269013BA360531CA36101 +:1014C00015782269934224BFE368A361E3690BB1F5 +:1014D00020469847002383F31188284607E03146C9 +:1014E000204600F0F3FE0028E2DA85F3118870BD93 +:1014F0002DE9F74F04460E4617469946D0F81CA032 +:101500004FF0200888F311884FF0000B154665B1A5 +:101510002A4631462046FFF741FF034660B9494657 +:10152000204600F0D3FE0028F1D0002383F3118879 +:10153000781B03B0BDE8F08FBAF1000F03D0019023 +:101540002046D047019B8BF31188ED1A1E4488F387 +:101550001188DCE782600A44C361009BC1600261BC +:101560000362C0E90000C0E905117047F8B5044600 +:101570000D461646202383F31188A768A7B1A368F8 +:10158000013BA36063695A1C62611D70D4E9043297 +:101590009A4224BFE3686361E3690BB12046984730 +:1015A000002080F3118807E03146204600F08EFECF +:1015B0000028E2DA87F31188F8BD0000D0E905239E +:1015C00010B59A4201D182687AB98268002101324D +:1015D00082605A1C82611C7803699A4224BFC368E6 +:1015E000836100F083FE204610BD4FF0FF30FBE723 +:1015F0002DE9F74F04460E4617469946D0F81CA031 +:101600004FF0200888F311884FF0000B154665B1A4 +:101610002A4631462046FFF7EFFE034660B94946A9 +:10162000204600F053FE0028F1D0002383F31188F8 +:10163000781B03B0BDE8F08FBAF1000F03D0019022 +:101640002046D047019B8BF31188ED1A1E4488F386 +:101650001188DCE7026843681143016003B1184751 +:10166000704700001430FFF743BF00004FF0FF3316 +:101670001430FFF73DBF00003830FFF7B9BF00005E +:101680004FF0FF333830FFF7B3BF00001430FFF7DF +:1016900009BF00004FF0FF311430FFF703BF000017 +:1016A0003830FFF763BF00004FF0FF323830FFF7EC +:1016B0005DBF000000207047FFF7DABD044B0360F8 +:1016C00000234360C0E9023301230374704700BF65 +:1016D0004440000810B52023044683F31188FFF727 +:1016E000F5FD02232374002383F3118810BD00004D +:1016F00038B5C36904460D461BB904210844FFF7F9 +:10170000A9FF294604F11400FFF7B0FE002806DA0D +:10171000201D4FF48061BDE83840FFF79BBF38BD06 +:10172000026843681143016003B118477047000025 +:1017300013B5446BD4F894341A681178042915D180 +:10174000217C022912D11979012312898B4013427D +:101750000CD101A904F14C0001F0F8FFD4F8944435 +:101760000246019B2179206800F0E4F902B010BD27 +:10177000143001F07BBF00004FF0FF33143001F054 +:1017800075BF00004C3002F04DB800004FF0FF3341 +:101790004C3002F047B80000143001F049BF00009F +:1017A0004FF0FF31143001F043BF00004C3002F025 +:1017B00019B800004FF0FF324C3002F013B80000AF +:1017C00038B5D0F8943405461A681178042901D048 +:1017D000012038BD017C0229FAD118790123834008 +:1017E000508913EA0004F3D105F1140001F0DAFE88 +:1017F00002460028ECD0D5F894544FF48073286842 +:10180000697900F085F92046E3E70000406BFFF7B7 +:10181000D7BF000000207047704700007FB5124B13 +:1018200001250226044603600023057400F18402AA +:1018300043602946C0E902330C4B029014300193F7 +:101840004FF48073009601F089FE094B04F5237272 +:10185000294604F14C000294CDE900634FF48073F3 +:1018600001F050FF04B070BD6C4000080D18000876 +:10187000311700080A68202383F311880B790B3392 +:1018800042F823004B79133342F823008B7913B1CC +:101890000B3342F823000223C0F89414037400238E +:1018A00083F311887047000038B5037F044613B1F5 +:1018B00090F85430ABB90125201D0221FFF730FF0D +:1018C00004F114006FF00101257700F01BFD04F115 +:1018D0004C0084F854506FF00101BDE8384000F02E +:1018E00011BD38BD10B5012104460430FFF718FFC3 +:1018F0000023237784F8543010BD000038B5044627 +:101900000025143001F042FE04F14C00257701F06F +:1019100011FF201D84F854500121FFF701FF2046DC +:10192000BDE83840FFF74CBF90F8803003F060030B +:10193000202B06D190F881200023212A03D81F2ACA +:1019400006D800207047222AFBD1C0E91D3303E0EE +:10195000034A426707228267C3670120704700BFBE +:101960001C240020D0F8943437B51A680446117846 +:1019700004291AD1017C022917D11979012312896E +:101980008B40134211D100F14C05284601F092FF23 +:1019900058B101A9284601F0D9FED4F89444024672 +:1019A000019B2179206800F0C5F803B030BD00002C +:1019B00001F10B03F0B550F8236085B004460D46E5 +:1019C000FEB1202383F3118804EB8507301D082125 +:1019D000FFF7A6FEFB6806F14C005B691B681BB1B4 +:1019E000019001F0C1FE019803A901F0AFFE02468B +:1019F00048B1039B2946204600F09CF8002383F35E +:101A0000118805B0F0BDFB685A691268002AF5D04C +:101A10001B8A013B1340F1D104F18002EAE7000088 +:101A2000133138B550F82140DCB1202383F31188FD +:101A3000D4F894241368527903EB8203DB689B6922 +:101A40005D6845B104216018FFF76AFE294604F17C +:101A5000140001F0B1FD2046FFF7B2FE002383F32E +:101A6000118838BD7047000001F0BAB8012300F1B9 +:101A7000300200F1500103700023436042F8043B40 +:101A80008A42D361FAD183607047000038B50446BA +:101A9000202383F31188002500F10C0300F13002AC +:101AA000416043F8045B9342FBD1204601F0BAF851 +:101AB0000223237085F3118838BD000070B500EB58 +:101AC0008103054650690E461446DA6018B11022AB +:101AD0000021FFF719FAA06918B110220021FFF7C1 +:101AE00013FA31462846BDE8704001F0ADB9000058 +:101AF000826802F0011282600022C0E90422C0E97B +:101B00000622C0E90822C0E90A2201F02DBA00002D +:101B1000F0B4012500EB810447898D40E4683D4322 +:101B2000A469458123600023A2606360F0BC01F0DA +:101B300049BA0000F0B4012500EB810407898D400B +:101B4000E4683D436469058123600023A26063600B +:101B5000F0BC01F0BFBA0000022300F10C0200F15A +:101B6000300110B5037004460023C0F8883083604C +:101B700042F8043B8A42FBD184F87030204601F0E1 +:101B8000F7F863681B6823B120460021BDE81040C8 +:101B9000184710BD0278436880F88C200522027037 +:101BA0001B680BB1042118477047000090F88C2087 +:101BB000436802701B680BB105211847704700008D +:101BC00070B590F87030044613B1002380F870307F +:101BD00004F18002204601F0EBF963689B68B3B919 +:101BE00094F8803013F0600539D00021204601F0D0 +:101BF00091FC0021204601F081FC63681B6813B151 +:101C0000062120469847062384F8703070BD204690 +:101C100098470028E4D094F8872094F8863043EA67 +:101C20000223A26F9A4288BFA36794F98030A56F00 +:101C3000002B4FF0200380F20881002D00F0F78088 +:101C4000092284F8702083F3118800212046D4E90A +:101C50001D23FFF76FFF002383F31188D6E794F865 +:101C6000812003F07F0343EA022340F202329342D1 +:101C700000F0CA8021D8B3F5807F4DD00DD8012B5C +:101C800044D0022B00F09880002BAED104F18802E2 +:101C900062670222A267E367BDE7B3F5817F00F0C8 +:101CA000A080B3F5407FA0D194F88230012B9CD165 +:101CB000B4F8883043F0020337E0B3F5006F52D038 +:101CC0001CD8B3F5A06F36D0A3F5C063012B8CD818 +:101CD00094F885202046616894F884304E6843EA81 +:101CE000022394F8831094F88220B04700283FF430 +:101CF0007CAF436863670368A3671AE0B3F5106FAE +:101D000036D040F6024293427FF46FAF5B4B63677D +:101D10000223A3670023BEE794F88230012B7FF4EF +:101D200064AFB4F8883023F00203A4F88830C4E923 +:101D30001D55E5676FE7B4F88030B3F5A06F0ED19D +:101D400094F88230204684F88A3001F06FF8636896 +:101D50001B6813B1012120469847032323700023F9 +:101D6000C4E91D3397E704F18B0363670123C3E7DD +:101D70002378042B10D1202383F311882046FFF70A +:101D8000B7FE85F311880321636884F88B502170B6 +:101D90001B680BB12046984794F88230002BDED0A8 +:101DA00084F88B300423237063681B68002BD6D023 +:101DB000022120469847D2E794F8843020461D0639 +:101DC00003F00F010AD501F0E5F8012804D002283C +:101DD0007FF40BAF2A4B9AE72A4B98E701F0CCF837 +:101DE000F3E794F88230002B7FF4FFAE94F8843050 +:101DF00013F00F01B3D01A06204602D501F0A2FB62 +:101E0000ADE701F093FBAAE794F88230002B7FF452 +:101E1000ECAE94F8843013F00F01A0D01B062046DE +:101E200002D501F077FB9AE701F068FB97E71422EF +:101E300084F8702083F311882B462A4629462046D1 +:101E4000FFF766FE85F31188E0E65DB1152284F8A0 +:101E5000702083F3118800212046D4E91D23FFF769 +:101E600057FEF8E60B2284F8702083F311882B4686 +:101E70002A4629462046FFF75DFEE3E79C4000081E +:101E8000944000089840000838B590F87030044637 +:101E9000002B42D0063BDAB20F2A38D80F2B36D8A7 +:101EA000DFE803F03B353508263635353535353531 +:101EB00035353B3B90F8871090F88620836F42EAD7 +:101EC0000122934214D2C268128AB3FBF2F502FBDC +:101ED00015356DB9202383F311882B462A462946F0 +:101EE000FFF728FE85F311880A2384F870300EE08E +:101EF000142384F87030202383F3118800232046B4 +:101F00001A461946FFF704FE002383F3118838BDF3 +:101F1000C36F03B198470023E7E70021204601F093 +:101F2000F9FA0021204601F0E9FA63681B6813B151 +:101F30000621204698470623D7E7000010B590F801 +:101F400070300446142B29D017D8062B05D001D8A1 +:101F50001BB110BD093B022BFBD80021204601F02C +:101F6000D9FA0021204601F0C9FA63681B6813B151 +:101F7000062120469847062319E0152BE9D10B23AB +:101F800080F87030202383F3118800231A46194605 +:101F9000FFF7D0FD002383F31188DAE7C3689B695C +:101FA0005B68002BD5D1C36F03B19847002384F839 +:101FB0007030CEE7024B0022C3E900339A607047CD +:101FC000AC2A0020002382680374054B1B689968C3 +:101FD0009142FBD25A6803604260106058607047BB +:101FE000AC2A002008B5202383F31188037C032B3F +:101FF00005D0042B0DD02BB983F3118808BD43699C +:1020000000221A604FF0FF334361FFF7DBFF00232C +:10201000F2E7D0E9003213605A60F3E700238268E8 +:102020000374054B1B6899689142FBD85A6803609A +:102030004260106058607047AC2A0020054B196957 +:1020400008741868026853601A60186101230374E9 +:10205000FEF7BAB9AC2A00204B1C30B5044687B055 +:102060000A4D10D02B6901A8094A00F067F92046F3 +:10207000FFF7E4FF049B13B101A800F09BF92B6963 +:10208000586907B030BDFFF7D9FFF8E7AC2A002048 +:10209000E51F000838B50C4D044641612B69816885 +:1020A0009A68914203D8BDE83840FFF78BBF1846C5 +:1020B000FFF788FF01232C61014623742046BDE809 +:1020C0003840FEF781B900BFAC2A0020044B1A68E3 +:1020D0001B6990689B68984294BF0020012070475C +:1020E000AC2A002010B5084C236820691A68546097 +:1020F0002260012223611A74FFF790FF01462069D4 +:10210000BDE81040FEF760B9AC2A0020FFF7EABF37 +:10211000FEE7000010B5194CFFF74CFF00F000F986 +:1021200080221749204600F087F8012344F8180C54 +:102130000374144B144AD96821F4E0610904090CB2 +:102140000A431249DA60CA6842F08072CA60104AD3 +:102150001049C2F8B01F116841F00101116010224E +:10216000DA77202283F82220002383F3118862B6D5 +:102170000948BDE8104000F07FB800BFD42A002015 +:10218000A040000800ED00E00003FA05F0ED00E0DB +:10219000001000E055CEACC5B04000082DE9F84F66 +:1021A0001E4C0027DFF87880656904F11409D8F81F +:1021B0002420236AA968D61A8E421CD34FF0200A25 +:1021C000AA68236AD5F80CB0B61A134423622B68A8 +:1021D0004B45C3F804906361EF6001D101F094FBBB +:1021E00087F311882869D8478AF311886569AB6835 +:1021F0009E42E5D2DBE7616949450DD088682262DD +:1022000003449B1A8B60A868BDE8F84F02282CBFD6 +:102210001018901C01F07EBBBDE8F88FAC2A00209E +:10222000000C0040034B59685A68521A9042FBD880 +:10223000704700BF001000E08260022202827047F7 +:102240008368A3F17C0243F80C2C026943F83C2C10 +:10225000426943F8382C074A43F81C2CC268A3F1A2 +:10226000180043F8102C022203F8082C002203F86F +:10227000072C7047E103000810B5202383F3118871 +:10228000FFF7DEFF00210446FFF704FF002383F37E +:102290001188204610BD0000024B1B6958610F20B9 +:1022A000FFF7CCBEAC2A0020202383F31188FFF770 +:1022B000F3BF000008B50146202383F311880820EE +:1022C000FFF7CAFE002383F3118808BD49B1064B0E +:1022D00042681B6918605A60136043600420FFF76E +:1022E000BBBE4FF0FF307047AC2A00200368984215 +:1022F00006D01A680260506018465961FFF762BE46 +:102300007047000038B504460D462068844200D16D +:1023100038BD036823605C604561FFF753FEF4E756 +:10232000054B4FF0FF3103F11402C3E905220022EF +:10233000C3E90712704700BFAC2A0020F8B5C0E916 +:1023400003231A4B022906465C6A38BF0221184B48 +:102350001A461F4652F8145F95420AD1C3E9050098 +:102360001C628160C0E900550819BDE8F84001F021 +:10237000C1BA186AAB68241A0C1902D3E41A2D6882 +:1023800004E0A34202D9204401F0C4FAAB68A3429E +:10239000F4D36B68356073601E606E60B460AB68C8 +:1023A0001C1B4FF0FF33AC60FB61F8BD000C00401C +:1023B000AC2A00201A4902680B4610B453F8144F97 +:1023C00084420FD041680A60026851609A424FF01F +:1023D0000001C16003D0936881680B4493605DF88D +:1023E000044B704700209A424A615360E06003D179 +:1023F0005DF8044B01F088BA9368A0680344086A4A +:102400009360084A526A111A8B42E8D9821A5DF821 +:10241000044B1A44012A98BF8B1C184401F07ABA65 +:10242000AC2A0020000C004000207047FEE70000AE +:10243000704700004FF0FF307047000002290CD0B9 +:10244000032904D00129074818BF00207047032A38 +:1024500005D8054800EBC2007047044870470020CB +:10246000704700BF8C410008242400204041000830 +:1024700070B59AB005460846144601AE314600F0E4 +:1024800097F83046FEF738FD431CC1B25B00C5E942 +:10249000003423700323023404F8013C002318465F +:1024A000DAB20234914201D81AB070BDF25C013345 +:1024B00004F8010C04F8022CF2E7000008B5202310 +:1024C00083F311880348FFF74DFA002383F3118843 +:1024D00008BD00BFE82C002007B5052917D8DFE8A4 +:1024E00001F0191603191920202383F31188104ACB +:1024F00001210190FFF7E2FA019802210D4AFFF74E +:10250000DDFA0D48FFF7FAF9002383F3118803B0D1 +:102510005DF804FB202383F311880748FFF7C4F913 +:10252000F2E7202383F311880348FFF7DBF9EBE799 +:10253000E040000804410008E82C002038B50C4DAC +:102540000C4C2A460C4904F10800FFF791FF05F1F5 +:10255000CA0204F110000949FFF78AFF05F5CA72A3 +:1025600004F118000649BDE83840FFF781BF00BFFD +:10257000B031002024240020C8400008CC400008CE +:10258000D740000870B5044608460D46FEF7B4FC77 +:10259000C6B22046013403780BB9184670BD3246E6 +:1025A0002946FEF791FC0028F3D10120F6E7000050 +:1025B0002DE9F04705460C46FEF79EFC2B49C6B2B6 +:1025C0002846FFF7DFFF08B10736F6B2284928464C +:1025D000FFF7D8FF08B11036F6B2632E0BD8DFF83C +:1025E0008C80DFF88C90234FDFF894A02E7846B9CA +:1025F0002670BDE8F08729462046BDE8F04701F087 +:10260000F3BC252E2ED1072241462846FEF75CFC5E +:1026100070B9194B224603F10C0153F8040B8B429D +:1026200042F8040BF9D11B8807350E341380DDE71F +:10263000082249462846FEF747FC98B9A21C0F4BD2 +:10264000197802320909C95D02F8041C13F8011B4C +:1026500001F00F015345C95D02F8031CF0D1183495 +:102660000835C3E7013504F8016BBFE7AC4100084A +:10267000D7400008C3410008B441000800E8F11F3A +:102680000CE8F11FBFF34F8F044B1A695107FCD1BF +:10269000D3F810215207F8D1704700BF0020005234 +:1026A00008B50D4B1B78ABB9FFF7ECFF0B4BDA68A5 +:1026B000D10704D50A4A5A6002F188325A60D3F829 +:1026C0000C21D20706D5064AC3F8042102F188324C +:1026D000C3F8042108BD00BF0E34002000200052C2 +:1026E0002301674508B5114B1B78F3B9104B1A69E4 +:1026F000510703D5DA6842F04002DA60D3F81021BE +:10270000520705D5D3F80C2142F04002C3F80C2142 +:10271000FFF7B8FF064BDA6842F00102DA60D3F83F +:102720000C2142F00102C3F80C2108BD0E34002038 +:10273000002000520F289ABF00F58060400400205E +:10274000704700004FF400307047000010207047C1 +:102750000F2808B50BD8FFF7EDFF00F5003302682E +:10276000013204D104308342F9D1012008BD002098 +:10277000FCE700000F2838B505463FD8FFF782FF79 +:102780001F4CFFF78DFF4FF0FF3307286361C4F83C +:1027900014311DD82361FFF775FF030243F02403B2 +:1027A000E360E36843F08003E36023695A07FCD4E5 +:1027B000FFF768FF2846FFF7BDFF4FF4003100F038 +:1027C000EFF8FFF78FFF2846BDE83840FFF7C0BF9E +:1027D000C4F81031FFF756FFA0F108031B0243F0C5 +:1027E0002403C4F80C31D4F80C3143F08003C4F84E +:1027F0000C31D4F810315B07FBD4D9E7002038BD89 +:10280000002000522DE9F84F05460C46104645EAD7 +:102810000203DB0652D1FFF743FF20F01F00DFF871 +:10282000B4A004EB0008DFF8B0B0444504D1FFF7D2 +:1028300059FF0120BDE8F88F20222146284601F0EB +:10284000C5FB00283CD005F178431F481F4EB3F567 +:10285000801F1F4B38BF994603F1FC0332BF584617 +:10286000D1461E46FFF70EFF4FF0FF33A5EB040CD9 +:1028700004F11C010360336843F002033360231F3B +:10288000D9F8007017F00507FAD153F8042F9942D0 +:102890004CF80320F4D1BFF34F8FFFF7F3FE4FF056 +:1028A000FF332022214603602846336823F00203C9 +:1028B000336001F08BFB18B1FFF714FF0020B9E77C +:1028C00020352034B1E700BF142100520C20005203 +:1028D00010200052102100521420005210B5084C54 +:1028E000237828B11BB9FFF7DBFE0123237010BD4D +:1028F000002BFCD02070BDE81040FFF7F3BE00BFF6 +:102900000E3400200244074BD2B210B5904200D1E1 +:1029100010BD441C00B253F8200041F8040BE0B293 +:10292000F4E700BF504000580E4B30B51C6F240434 +:1029300005D41C6F1C671C6F44F400441C670A4CD0 +:1029400002442368D2B243F480732360074B904261 +:1029500000D130BD441C51F8045B00B243F8205054 +:10296000E0B2F4E7004402580048025850400058D2 +:1029700007B5012201A90020FFF7C4FF019803B0A9 +:102980005DF804FB13B50446FFF7F2FFA04205D043 +:10299000012201A900200194FFF7C6FF02B010BD7B +:1029A0000144BFF34F8F064B884204D3BFF34F8FD0 +:1029B000BFF36F8F7047C3F85C022030F4E700BFAD +:1029C00000ED00E0034B1B685B0142BF024B01229C +:1029D0001A707047D04402580F340020014B187809 +:1029E000704700BF0F340020064A536823F00103EC +:1029F0005360EFF30983683383F30988002383F37B +:102A00001188704730EF00E0202310B583F3118860 +:102A1000104B5B6813F4006318D0F1EE103AEFF33B +:102A200009844FF0807344F84C3C0B4BDB6844F84E +:102A3000083CA4F1680383F30988FFF747FB18B14A +:102A4000064B44F8503C10BD054BFAE783F3118860 +:102A5000F9E700BF00ED00E030EF00E0F10300080F +:102A6000F403000870B5BFF34F8FBFF36F8F1A4B9D +:102A70000021C3F85012BFF34F8FBFF36F8F5A6915 +:102A800042F400325A61BFF34F8FBFF36F8FC3F828 +:102A90008410BFF34F8FD3F8802043F6E074C2F365 +:102AA000C900C2F34E32520102EA0406014646EA68 +:102AB00081750139C3F86052F9D2203A12F1200F22 +:102AC000F2D1BFF34F8F5A6942F480325A61BFF39B +:102AD0004F8FBFF36F8F70BD00ED00E0FEE7000089 +:102AE000084A094B09498B4204D3094A0021934201 +:102AF00005D3704752F8040B43F8040BF3E743F88F +:102B0000041BF4E78C43000860350020603500208A +:102B10006035002030B50022D0E9244311464FF043 +:102B2000FF309D6804EB421301329542C3F800194F +:102B3000C3F81019C3F80809C3F8001BC3F8101B29 +:102B4000C3F8080BEED24FF00113C4F81C3830BDA7 +:102B500000EB8103D3F80CC02DE9F043DCF814201E +:102B60004E1CD0F89050D2F800E005EB063605EB8D +:102B70004118506870450AD30120D5F8343800FA5E +:102B800001F123EA0101C5F83418BDE8F083AEEB8A +:102B90000003BCF81040A34228BF2346D8F81849C8 +:102BA000A4B2B3EB840F0FD89468A4F1040959F8C8 +:102BB000047F3760A4EB09071F44042FF7D81C4497 +:102BC000034494605360D4E70020DEE7890141F0BC +:102BD0002001016103699B06FCD41220FFF722BB90 +:102BE00010B50A4C2046FEF741FF094BC4F890305F +:102BF000084BC4F89430084C2046FEF737FF074BCB +:102C0000C4F89030064BC4F8943010BD1034002046 +:102C100000000840F8410008AC34002000000440E7 +:102C20000442000870B503780546012B5DD1494B7D +:102C3000D0F89040984259D1474B0E216520D3F8E7 +:102C4000D82042F00062C3F8D820D3F8002142F027 +:102C50000062C3F80021D3F80021D3F8802042F0AD +:102C60000062C3F88020D3F8802022F00062C3F80D +:102C70008020D3F88030FEF77BFB384BE360384B85 +:102C8000C4F800380023D5F89060C4F8003EC02393 +:102C900023604FF40413A3633369002BFCDA012390 +:102CA0000C203361FFF7BEFA3369DB07FCD4122036 +:102CB000FFF7B8FA3369002BFCDA00262846A66035 +:102CC000FFF728FF6B68C4F81068DB68C4F8146865 +:102CD000C4F81C68002B3AD1224BA3614FF0FF339C +:102CE0006361A36843F00103A36070BD1E4B98426B +:102CF000C8D1194B0E214D20D3F8D82042F00072D4 +:102D0000C3F8D820D3F8002142F00072C3F80021A4 +:102D1000D3F80021D3F8802042F00072C3F880205D +:102D2000D3F8802022F00072C3F88020D3F88020EE +:102D3000D3F8D82022F08062C3F8D820D3F800213D +:102D400022F08062C3F80021D3F8003193E7074BEB +:102D5000C3E700BF10340020004402584014004074 +:102D600003002002003C30C0AC340020083C30C0DE +:102D7000F8B5D0F89040054600214FF00066204697 +:102D8000FFF724FFD5F8941000234FF001128F684D +:102D90004FF0FF30C4F83438C4F81C2804EB431259 +:102DA00001339F42C2F80069C2F8006BC2F80809FB +:102DB000C2F8080BF2D20B68D5F89020C5F898300D +:102DC000636210231361166916F01006FBD11220FE +:102DD000FFF728FAD4F8003823F4FE63C4F800386B +:102DE000A36943F4402343F01003A3610923C4F80B +:102DF0001038C4F814380B4BEB604FF0C043C4F8E4 +:102E0000103B094BC4F8003BC4F81069C4F8003902 +:102E1000D5F8983003F1100243F48013C5F89820D8 +:102E2000A362F8BDD441000840800010D0F8902083 +:102E300090F88A10D2F8003823F4FE6343EA0113B5 +:102E4000C2F80038704700002DE9F84300EB810814 +:102E5000D0F890500C460FFA81F9D8F80C204F01A9 +:102E6000166806F00306731E022B05EB41134FF0A4 +:102E7000000194BFB6043A4EC3F8101B04F11003CE +:102E80004FF0010198BF06F1805601FA03F19369F2 +:102E900098BF06F50046002B3DD0B2F812C004F1F1 +:102EA00058034CEA060C5B0145F803C0D5F81C3802 +:102EB0001943EB19C5F81C1800210127C3F8101994 +:102EC000A7405369611E9BB3138A928B9B08012A0A +:102ED00088BF5343D0F8982003EB020C42EA034327 +:102EE00001F140022146C0F898C0284605EB820255 +:102EF0005360FFF76BFED8F80C301B8A43EA84530B +:102F000048341E4364012E51D5F81C381F43C5F8C0 +:102F10001C78BDE8F88305EB491CDCF8003B23F482 +:102F20000043CCF8003BD5F81C3823EA0101C0E788 +:102F300004F13F030B4A05EB4919214605EB8303D6 +:102F400028465A60FFF742FED9F8003923F40043BF +:102F5000C9F80039D5F81C3823EA0707D7E700BFBE +:102F60000080001000040002D0F894201268C0F81D +:102F70009820FFF7CFBD00005831D0F890304901BC +:102F80005B5813F4004004D013F4001F0CBF022060 +:102F9000012070474831D0F8903049015B5813F454 +:102FA000004004D013F4001F0CBF02200120704722 +:102FB00000EB8101CB68196A0B6813604B685360A2 +:102FC0007047000000EB810330B5DD68AA69136823 +:102FD000D36019B9402B84BF402313606B8A1468F7 +:102FE000D0F890201C4402EB4110013C09B2B4FB24 +:102FF000F3F46343033323F0030343EAC44343F08E +:10300000C043C0F8103B2B6803F00303012B0ED123 +:10301000D2F8083802EB411013F4807FD0F8003B5F +:1030200014BF43F0805343F00053C0F8003B02EB61 +:103030004112D2F8003B43F00443C2F8003B30BDDC +:103040002DE9F041D0F8906005460C4606EB41139F +:10305000D3F8087B3A07C3F8087B08D5D6F81438AC +:103060001B0704D500EB8103DB685B689847FA0710 +:103070001FD5D6F81438DB071BD505EB8403D968B8 +:10308000CCB98B69488A5E68B6FBF0F200FB12622D +:103090008AB91868DA6890420DD2121AC3E900247E +:1030A000202383F3118821462846FFF78BFF84F302 +:1030B0001188BDE8F081012303FA04F26B8923EA49 +:1030C00002036B81CB68002BF3D021462846BDE874 +:1030D000F041184700EB81034A0170B5DD68D0F874 +:1030E00090306C692668E66056BB1A444FF40020A5 +:1030F000C2F810092A6802F00302012A0AB20ED1AE +:10310000D3F8080803EB421410F4807FD4F80009C8 +:1031100014BF40F0805040F00050C4F8000903EBA9 +:103120004212D2F8000940F00440C2F8000901221E +:10313000D3F8340802FA01F10143C3F8341870BD22 +:1031400019B9402E84BF4020206020681A442E8A7E +:103150008419013CB4FBF6F440EAC44040F000504E +:10316000C6E700002DE9F041D0F8906004460D4616 +:1031700006EB4113D3F80879C3F80879FB071CD58F +:10318000D6F81038DA0718D500EB8103D3F80CC055 +:10319000DCF81430D3F800E0DA6896451BD2A2EBD5 +:1031A0000E024FF000081A60C3F80480202383F356 +:1031B0001188FFF78FFF88F311883B0618D501238C +:1031C000D6F83428AB40134212D029462046BDE839 +:1031D000F041FFF7BDBC012303FA01F2038923EAA2 +:1031E00002030381DCF80830002BE6D09847E4E7BF +:1031F000BDE8F0812DE9F84FD0F8905004466E6993 +:10320000AB691E4016F480586E6103D0BDE8F84FDC +:10321000FEF7A2BC002E12DAD5F8003E9F0705D0BB +:10322000D5F8003E23F00303C5F8003ED5F8043876 +:10323000204623F00103C5F80438FEF7B7FC30053B +:1032400002D52046FEF7A6FCB1040CD5D5F8083807 +:1032500013F0060FEB6823F470530CBF43F41053C4 +:1032600043F4A053EB60320704D56368DB680BB10D +:1032700020469847F30200F1BA80B70226D5D4F869 +:10328000909000274FF0010A09EB4712D2F8003B5B +:1032900003F44023B3F5802F11D1D2F8003B002B6B +:1032A0000DDA62890AFA07F322EA0303638104EB69 +:1032B0008703DB68DB6813B139462046984701373E +:1032C000D4F89430FFB29B689F42DDD9F00619D53F +:1032D000D4F89000026AC2F30A1702F00F0302F456 +:1032E000F012B2F5802F00F0CC80B2F5402F09D15A +:1032F00004EB8303002200F58050DB681B6A9742D1 +:1033000040F0B2803003D5F8185835D5E90303D51D +:1033100000212046FFF794FEAA0303D50121204691 +:10332000FFF78EFE6B0303D502212046FFF788FED0 +:103330002F0303D503212046FFF782FEE80203D5C1 +:1033400004212046FFF77CFEA90203D50521204673 +:10335000FFF776FE6A0203D506212046FFF770FECE +:103360002B0203D507212046FFF76AFEEF0103D5A4 +:1033700008212046FFF764FE700340F1A980E907A9 +:1033800003D500212046FFF7EDFEAA0703D5012152 +:103390002046FFF7E7FE6B0703D502212046FFF723 +:1033A000E1FE2F0703D503212046FFF7DBFEEE06E3 +:1033B00003D504212046FFF7D5FEA80603D5052135 +:1033C0002046FFF7CFFE690603D506212046FFF70A +:1033D000C9FE2A0603D507212046FFF7C3FEEB05E9 +:1033E00076D520460821BDE8F84FFFF7BBBED4F8DC +:1033F000909000274FF0010AD4F894305FFA87FBD1 +:103400009B685B45FFF439AF09EB4B13D3F80029F8 +:1034100002F44022B2F5802F24D1D3F80029002AEB +:1034200020DAD3F8002942F09042C3F80029D3F8FB +:103430000029002AFBDB5946D4F89000FFF7C6FBB1 +:1034400022890AFA0BF322EA0303238104EB8B039C +:10345000DB689B6813B15946204698475946204679 +:10346000FFF776FB0137C7E7910701D1D0F800805D +:10347000072A02F101029CBF03F8018B4FEA1828CA +:103480003DE704EB830300F58050DA68D2F818C0FA +:10349000DCF80820DCE9001CA1EB0C0C00218F42B9 +:1034A00008D1DB689B699A683A449A605A68174465 +:1034B0005F6027E711F0030F01D1D0F800808C4541 +:1034C00001F1010184BF02F8018B4FEA1828E6E7F9 +:1034D000BDE8F88F08B50348FFF78CFEBDE808404B +:1034E000FFF792BA1034002008B50348FFF782FEB8 +:1034F000BDE80840FFF788BAAC340020D0F890301F +:1035000003EB4111D1F8003B43F40013C1F8003B39 +:1035100070470000D0F8903003EB4111D1F800392A +:1035200043F40013C1F8003970470000D0F8903020 +:1035300003EB4111D1F8003B23F40013C1F8003B29 +:1035400070470000D0F8903003EB4111D1F80039FA +:1035500023F40013C1F800397047000030B504337C +:10356000039C0172002104FB0325C160C0E90653DE +:10357000049B0363059BC0E90000C0E90422C0E985 +:103580000842C0E90A11436330BD00000022416ACD +:10359000C260C0E90411C0E90A226FF00101FEF720 +:1035A000B1BE0000D0E90432934201D1C2680AB929 +:1035B000181D704700207047036919600021C26818 +:1035C0000132C260C269134482699342036124BF1D +:1035D000436A0361FEF78ABE38B504460D46E368C8 +:1035E0003BB162690020131D1268A3621344E362B9 +:1035F00007E0237A33B929462046FEF767FE002804 +:10360000EDDA38BD6FF00100FBE70000C368C26966 +:10361000013BC3604369134482699342436124BF01 +:10362000436A436100238362036B03B11847704709 +:1036300070B52023044683F31188866A3EB9FFF7EC +:10364000CBFF054618B186F31188284670BDA36AE2 +:10365000E26A13F8015B9342A36202D32046FFF7AC +:10366000D5FF002383F31188EFE700002DE9F84F21 +:1036700004460E4690469946202787F31188002578 +:10368000AA46D4F828B0BBF1000F09D1494620461C +:10369000FFF7A2FF20B18BF311882846BDE8F88F11 +:1036A000D4E90A12A8EB050B521A934528BF93469A +:1036B000BBF1400F1BD9334601F1400251F8040B16 +:1036C000914243F8040BF9D1A36A403640354033A8 +:1036D000A362D4E90A239A4202D32046FFF796FF59 +:1036E0008AF311884545D8D287F31188C9E7304657 +:1036F0005A46FDF7DFFBA36A5E445D445B44A36268 +:10370000E7E7000010B5029C0433017204FB0321BB +:10371000C460C0E906130023C0E90A33039B0363B6 +:10372000049BC0E90000C0E90422C0E908424363E9 +:1037300010BD0000026A6FF00101C260426AC0E978 +:1037400004220022C0E90A22FEF7DCBDD0E90423EE +:103750009A4201D1C26822B9184650F8043B0B6066 +:103760007047002070470000C3680021C269013320 +:10377000C3604369134482699342436124BF436A2F +:103780004361FEF7B3BD000038B504460D46E3685B +:103790003BB1236900201A1DA262E2691344E3626F +:1037A00007E0237A33B929462046FEF78FFD00282B +:1037B000EDDA38BD6FF00100FBE700000369196026 +:1037C000C268013AC260C2691344826993420361CC +:1037D00024BF436A036100238362036B03B118476C +:1037E0007047000070B520230D460446114683F350 +:1037F0001188866A2EB9FFF7C7FF10B186F31188CA +:1038000070BDA36A1D70A36AE26A01339342A3628A +:1038100004D3E16920460439FFF7D0FF002080F38C +:103820001188EDE72DE9F84F04460D4691469A467A +:103830004FF0200888F311880026B346A76A4FB9D5 +:1038400051462046FFF7A0FF20B187F3118830468C +:10385000BDE8F88FD4E90A073A1AA9EB06079742A0 +:1038600028BF1746402F1BD905F1400355F8042BFC +:103870009D4240F8042BF9D1A36A40364033A3623D +:10388000D4E90A239A4204D3E16920460439FFF7B8 +:1038900095FF8BF311884E45D9D288F31188CDE777 +:1038A00029463A46FDF706FBA36A3D443E443B44A5 +:1038B000A362E5E7D0E904239A4217D1C3689BB11C +:1038C000836A8BB1043B9B1A0ED01360C368013B23 +:1038D000C360C3691A4483699A42026124BF436A80 +:1038E0000361002383620123184670470023FBE72E +:1038F00000F0BCB8034B002258631A610222DA6060 +:10390000704700BF000C0040014B0022DA60704796 +:10391000000C0040014B5863704700BF000C004092 +:103920004B6843608B688360CB68C3600B694361FD +:103930004B6903628B6943620B6803607047000048 +:1039400008B52C4B40F2FF712B48D3F888200A436E +:10395000C3F88820D3F8882022F4FF6222F00702FF +:10396000C3F88820D3F88820D3F8E0200A43C3F8AE +:10397000E020D3F808210A43C3F808211F4AD3F8EE +:1039800008311146FFF7CCFF1D4802F11C01FFF77B +:10399000C7FF1C4802F13801FFF7C2FF1A4802F1C5 +:1039A0005401FFF7BDFF194802F17001FFF7B8FF9E +:1039B000174802F18C01FFF7B3FF164802F1A80186 +:1039C000FFF7AEFF144802F1C401FFF7A9FF134847 +:1039D00002F1E001FFF7A4FF114802F1FC01FFF73B +:1039E0009FFF104802F58C71FFF79AFFBDE8084071 +:1039F00000F012B9004402580000025810420008BA +:103A00000004025800080258000C02580010025826 +:103A10000014025800180258001C025800200258D6 +:103A2000002402580028025808B500F0BDFAFEF73D +:103A300071FBFEF7C7FFBDE80840FEF77FBD000041 +:103A400070470000084B1A69920710B508D500248A +:103A50001C61202383F31188FEF7A0FB84F31188F7 +:103A6000BDE81040FEF7D0BF000C0040124B08210B +:103A70003220D3F8E82042F00802C3F8E820D3F857 +:103A8000102142F00802C3F810210C4AD3F810317B +:103A9000D36B43F00803D363C722094B9A624FF0FC +:103AA000FF32DA6200229A615A63DA605A600122B8 +:103AB0005A611A60FDF75CBC004402580010005CBB +:103AC000000C00404F4B70B5D3F8802000244FF01D +:103AD000FF32C3F88020D3F88010C3F88040D3F8B9 +:103AE0008010D3F88410C3F88420D3F88410C3F86E +:103AF0008440D3F88410D96F41F0FF4141F4FF01B5 +:103B000041F4DF4141F07F01D967D96F21F0FF41D6 +:103B100021F4FF0121F4DF4121F07F01D967D96F42 +:103B2000D3F888106FEA41516FEA5151C3F88810F9 +:103B3000D3F88810C1F30A01C3F88810D3F88810AD +:103B4000D3F89010C3F89020D3F89010C3F89040A9 +:103B5000D3F89010D3F89410C3F89420D3F89410AD +:103B6000C3F89440D3F89410D3F89810C3F8982071 +:103B7000D3F89810C3F89840D3F89810D3F88C1065 +:103B8000C3F88C20D3F88C10C3F88C40D3F88C1079 +:103B9000D3F89C10C3F89C20D3F89C20C3F89C4019 +:103BA000D3F89C3000F0E0F9174B07229A60174ACF +:103BB000DA60174A1A6105225A60164A536A43F4BA +:103BC00080335362C2F88440BFF34F8FD2F8803005 +:103BD00043F6E074C3F3C900C3F34E335B0103EA59 +:103BE0000406014646EA81750139C2F87452F9D2D9 +:103BF000203B13F1200FF2D1BFF34F8FBFF36F8F34 +:103C000070BD00BF0044025890ED00E00000043099 +:103C10001B00080300ED00E00122574B57491A60D2 +:103C2000574B19609A60574ADA6000221A614FF4C4 +:103C300040429A619A699004FCD51A6842F48072F5 +:103C40001A60514B1A6F12F4407F04D04FF4803247 +:103C50001A6700221A671A6842F001021A604A4A7B +:103C6000134611684907FCD5002111611A6912F049 +:103C70003802FBD1012119604FF0804159605A6729 +:103C8000424ADA62424A1A611A6842F480321A6081 +:103C90003D4B1A689203FCD53E4A3F499A62002286 +:103CA0005A631963A1F58021DA634B3999635A6429 +:103CB0003A4A1A643A4ADA621A6842F0A8521A601A +:103CC000314B1A6802F02852B2F1285FF9D148222C +:103CD00022219A614FF48862DA6140221A624FF021 +:103CE0000052DA641A652F4A5A652F4A9A652F4A9C +:103CF00011601A6942F003021A61234B1A6902F03B +:103D00003802182AFAD1D3F8DC2042F00052C3F866 +:103D1000DC20D3F8042142F00052C3F80421D3F888 +:103D20000421D3F8DC2042F08042C3F8DC20D3F831 +:103D3000042142F08042C3F80421D3F80421D3F8CF +:103D4000DC2042F00042C3F8DC20D3F8042142F02A +:103D50000042C3F80421D3F80421D3F8F42042F040 +:103D60000202C3F8F420D3F81C2142F00202C3F887 +:103D70001C21D3F81C3170470881005100C000F0AD +:103D80000048025802000001004402580000FF01F0 +:103D9000008890083230600063020701470405087C +:103DA000FD0BFF010010E0000001010000200052A7 +:103DB000084A08B5916813680B4003F0010393604B +:103DC00023B1054A13680BB150689847BDE8084015 +:103DD000FEF71ABE80000058C0250020084A08B52A +:103DE000916813680B4003F00203936023B1054A06 +:103DF00093680BB1D0689847BDE80840FEF704BE51 +:103E000080000058C0250020084A08B59168136852 +:103E10000B4003F00403936023B1054A13690BB10F +:103E200050699847BDE80840FEF7EEBD8000005895 +:103E3000C0250020084A08B5916813680B4003F0BC +:103E40000803936023B1054A93690BB1D069984781 +:103E5000BDE80840FEF7D8BD80000058C02500200E +:103E6000084A08B5916813680B4003F0100393608B +:103E700023B1054A136A0BB1506A9847BDE8084060 +:103E8000FEF7C2BD80000058C0250020174B10B5BA +:103E90009A681C68144004F478729A60A30604D5EA +:103EA000134A936A0BB1D06A9847600604D5104A4A +:103EB000136B0BB1506B9847210604D50C4A936BDA +:103EC0000BB1D06B9847E20504D5094A136C0BB1CE +:103ED000506C9847A30504D5054A936C0BB1D06C80 +:103EE0009847BDE81040FEF78FBD00BF8000005826 +:103EF000C02500201A4B10B59A681C68144004F4C1 +:103F00007C429A60620504D5164A136D0BB1506D60 +:103F10009847230504D5134A936D0BB1D06D98478C +:103F2000E00404D50F4A136E0BB1506E9847A104FC +:103F300004D50C4A936E0BB1D06E9847620404D539 +:103F4000084A136F0BB1506F9847230404D5054AF4 +:103F5000936F0BB1D06F9847BDE81040FEF754BD8A +:103F600080000058C0250020062108B50846FDF74E +:103F7000FFF906210720FDF7FBF906210820FDF7D0 +:103F8000F7F906210920FDF7F3F906210A20FDF7CC +:103F9000EFF906211720FDF7EBF906212820BDE8EF +:103FA0000840FDF7E5B9000008B5FFF78BFDFDF708 +:103FB000B5F8FDF781FBFDF757FDFDF72DFCFFF789 +:103FC0003FFDBDE80840FFF793BC000030B5013964 +:103FD0000024A24201D1002005E0035D01340D5D03 +:103FE000AB42F6D0581B30BD034611F8012B03F845 +:103FF000012B002AF9D1704753544D333248373FD3 +:104000003F3F0053544D3332483734332F37353325 +:104010000000000001105A00031059000120580050 +:1040200003205600E82C00204026002000960000C7 +:104030000000000000000000000000000000000080 +:104040000000000000000000811600086D16000846 +:10405000A916000895160008A11600088D1600087C +:104060007916000865160008B51600080000000063 +:104070008D17000879170008B5170008A117000868 +:10408000AD17000899170008851700087117000878 +:1040900015180008000000000100000000000000EA +:1040A0006D61696E0000000069646C6500000000CD +:1040B000A8400008F02A0020E82C002001000000A1 +:1040C00011210008000000006D526F0025424F4191 +:1040D0005244252D424C002553455249414C250060 +:1040E0000200000000000000B1190008211A0008B9 +:1040F000400040008031002090310020020000008C +:10410000000000000300000000000000651A000825 +:104110000000000010000000A0310020000000009E +:104120000100000000000000103400200101020026 +:10413000D92400083D24000829190008BD240008DE +:10414000430000004841000809024300020100C08A +:1041500032090400000102020100052400100105DB +:10416000240100010424020205240600010705823F +:10417000030800FF09040100020A0000000705010E +:10418000024000000705810240000000120000000C +:104190009441000812011001020000400912415729 +:1041A00000020102030100000403090425424F41FB +:1041B000524425006D526F50697872616365725088 +:1041C000726F00303132333435363738394142433B +:1041D0004445460000000000C11B0008891E00087D +:1041E0003D1F0008400040004835002048350020B1 +:1041F0000100000058350020800000004001000050 +:104200000800000000010000000400000800000099 +:104210000000802A00000000AAAAAAAA000000004C +:10422000FFFF00000000000000A00A004400400062 +:1042300000000000AAAAAAAA00000000FFFF0000D8 +:10424000000000000000000010000000000000005E +:10425000AAAAAAAA10000000FFFF000000000000A8 +:10426000000000000040100000000000AAAA8AAA76 +:1042700000401000FFFF00000000000000000000F0 +:104280000080024000000000AAAAAAAA0040014043 +:10429000FFFF000000000070070000000010100089 +:1042A00000000000AAAAAAAA00101000FFFF000048 +:1042B00000000000000000000000040000000000FA +:1042C000AAAAAAAA00000400FFFF00000000000044 +:1042D000000000000000000000000000AAAAAAAA36 +:1042E00000000000FFFF00000000000000000000D0 +:1042F0000000000000000000AAAAAAAA0000000016 +:10430000FFFF0000000000000000000000000000AF +:1043100000000000AAAAAAAA00000000FFFF0000F7 +:10432000000000000000000000000000000000008D +:10433000AAAAAAAA00000000FFFF000000000000D7 +:104340000000000000000000FF000000000000006E +:10435000F83F00083F000000500400000340000840 +:104360003F0000000096000000000800040000006C +:10437000A84100080000000000000000000000004C +:0C43800000000000000000000000000031 +:00000001FF diff --git a/Tools/scripts/build_binaries.py b/Tools/scripts/build_binaries.py index 7a15aa34717c6..eeed78e19b727 100755 --- a/Tools/scripts/build_binaries.py +++ b/Tools/scripts/build_binaries.py @@ -590,7 +590,11 @@ def common_boards(self): "Pixracer", "F4BY", "mRoX21-777", + "mRoControlZeroClassic", "mRoControlZeroF7", + "mRoControlZeroH7", + "mRoControlZeroOEMH7", + "mRoPixracerPro", "mRoNexus", "F35Lightning", "speedybeef4", diff --git a/libraries/AP_GPS/AP_GPS.cpp b/libraries/AP_GPS/AP_GPS.cpp index 68028a9669b0c..1f983b745e644 100644 --- a/libraries/AP_GPS/AP_GPS.cpp +++ b/libraries/AP_GPS/AP_GPS.cpp @@ -1415,6 +1415,11 @@ bool AP_GPS::calc_blend_weights(void) if (get_rate_ms(i) > max_rate_ms) { max_rate_ms = get_rate_ms(i); } + if (isinf(state[i].speed_accuracy) || + isinf(state[i].horizontal_accuracy) || + isinf(state[i].vertical_accuracy)) { + return false; + } } if ((int32_t)(max_ms - min_ms) < (int32_t)(2 * max_rate_ms)) { // data is not too delayed so use the oldest time_stamp to give a chance for data from that receiver to be updated @@ -1541,6 +1546,10 @@ bool AP_GPS::calc_blend_weights(void) } } + if (!is_positive(sum_of_all_weights)) { + return false; + } + // calculate an overall weight for (uint8_t i=0; i= UBLOX_F9 && _hardware_generation != UBLOX_UNKNOWN_HARDWARE_GENERATION; + return _hardware_generation == UBLOX_F9 && _hardware_generation != UBLOX_UNKNOWN_HARDWARE_GENERATION; } diff --git a/libraries/AP_GPS/AP_GPS_UBLOX.h b/libraries/AP_GPS/AP_GPS_UBLOX.h index 5c8c3f5e4f91f..42bc609c40f44 100644 --- a/libraries/AP_GPS/AP_GPS_UBLOX.h +++ b/libraries/AP_GPS/AP_GPS_UBLOX.h @@ -626,7 +626,8 @@ class AP_GPS_UBLOX : public AP_GPS_Backend UBLOX_6, UBLOX_7, UBLOX_M8, - UBLOX_F9 = 0x80, // comes from MON_VER hwVersion string + UBLOX_F9 = 0x80, // comes from MON_VER hwVersion/swVersion strings + UBLOX_M9 = 0x81, // comes from MON_VER hwVersion/swVersion strings UBLOX_UNKNOWN_HARDWARE_GENERATION = 0xff // not in the ublox spec used for // flagging state in the driver }; diff --git a/libraries/AP_HAL/board/sitl.h b/libraries/AP_HAL/board/sitl.h index e8ad0fca5e28a..af67adcc3a224 100644 --- a/libraries/AP_HAL/board/sitl.h +++ b/libraries/AP_HAL/board/sitl.h @@ -5,7 +5,7 @@ #define HAL_MEM_CLASS HAL_MEM_CLASS_1000 #define HAL_OS_POSIX_IO 1 #define HAL_OS_SOCKETS 1 -#define HAL_STORAGE_SIZE 16384 +#define HAL_STORAGE_SIZE 32768 #define HAL_STORAGE_SIZE_AVAILABLE HAL_STORAGE_SIZE #define HAL_BOARD_LOG_DIRECTORY "logs" #define HAL_BOARD_TERRAIN_DIRECTORY "terrain" diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CUAV-Nora/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CUAV-Nora/hwdef.dat index 80bdd2a14c828..4acaf187fb2d8 100755 --- a/libraries/AP_HAL_ChibiOS/hwdef/CUAV-Nora/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CUAV-Nora/hwdef.dat @@ -274,7 +274,7 @@ define HAL_GPIO_LED_OFF 1 define HAL_HAVE_PIXRACER_LED # enable RAMTROM parameter storage -define HAL_STORAGE_SIZE 16384 +define HAL_STORAGE_SIZE 32768 define HAL_WITH_RAMTRON 1 # allow to have have a dedicated safety switch pin diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7/hwdef.dat index 003cdf5986c8b..7d61eacb6f75f 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CUAV-X7/hwdef.dat @@ -285,7 +285,7 @@ define HAL_GPIO_LED_OFF 1 define HAL_HAVE_PIXRACER_LED # enable RAMTROM parameter storage -define HAL_STORAGE_SIZE 16384 +define HAL_STORAGE_SIZE 32768 define HAL_WITH_RAMTRON 1 # allow to have have a dedicated safety switch pin diff --git a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange/hwdef.dat index b2d6e72adf8eb..44d48830d3d15 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/CubeOrange/hwdef.dat @@ -23,7 +23,7 @@ env OPTIMIZE -O2 FLASH_RESERVE_START_KB 128 -define HAL_STORAGE_SIZE 16384 +define HAL_STORAGE_SIZE 32768 # order of I2C buses I2C_ORDER I2C2 I2C1 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/Durandal/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/Durandal/hwdef.dat index ae9d50dfd7505..b56129a528af9 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/Durandal/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/Durandal/hwdef.dat @@ -31,7 +31,7 @@ SERIAL_ORDER OTG1 USART2 USART3 USART1 UART4 USART6 UART7 OTG2 # default the 2nd interface to MAVLink2 until MissionPlanner updates drivers define HAL_OTG2_PROTOCOL SerialProtocol_MAVLink2 -define HAL_STORAGE_SIZE 16384 +define HAL_STORAGE_SIZE 32768 define CONFIG_HAL_BOARD_SUBTYPE HAL_BOARD_SUBTYPE_CHIBIOS_FMUV5 define HAL_CHIBIOS_ARCH_FMUV5 1 @@ -306,7 +306,6 @@ define HAL_GPIO_B_LED_PIN 92 define HAL_GPIO_LED_ON 0 # enable RAMTROM parameter storage -define HAL_STORAGE_SIZE 16384 define HAL_WITH_RAMTRON 1 # allow to have have a dedicated safety switch pin diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroClassic/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroClassic/hwdef-bl.dat new file mode 100644 index 0000000000000..9f42a53fda9d4 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroClassic/hwdef-bl.dat @@ -0,0 +1,64 @@ +########################################################################################################################################################### +# hw definition file for processing by chibios_hwdef.py +# STM32H743ZIT6 +# mRo Control Zero Classic flight controller +# 12x PWM / IO - DMA capable and switchable 3.3v (default) / 5v Logic +# A Dual CAN based flight controller +# 3x IMUs (BMI088 6DOF, ICM20602 6DOF, ICM20948 9DOF) +# Baro, FRAM (256kb), SDCARD Socket, JTAG +# 5x UARTs (2x with hardware flow control), 2x CAN, 1x SPI, 2x I2C +# Onboard 3 color LED and buzzer +# Identical case and connector layout to the original 3DR / mRo Pixhawk +# M10048B - Initial Release +########################################################################################################################################################### + +# MCU class and specific type +MCU STM32H7xx STM32H743xx + +# USB setup +USB_STRING_MANUFACTURER "mRo" + +# crystal frequency +OSCILLATOR_HZ 24000000 + +# board ID for firmware load +APJ_BOARD_ID 1022 + +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 + +PB4 LED_BOOTLOADER OUTPUT + +# define all 3 to make LED output White. +PB1 LED_ACTIVITY OUTPUT +PB3 LED_ACTIVITY2 OUTPUT +# PB11 LED_ACTIVITY3 OUTPUT + +define HAL_LED_ON 0 + +# order of UARTs (and USB) +SERIAL_ORDER OTG1 + +PA11 OTG_FS_DM OTG1 +PA12 OTG_FS_DP OTG1 + +PA13 JTMS-SWDIO SWD +PA14 JTCK-SWCLK SWD + +define HAL_USE_EMPTY_STORAGE 1 +define HAL_STORAGE_SIZE 16384 + +# Add CS pins to ensure they are high in bootloader +PD7 BARO_CS CS +PD10 FRAM_CS CS SPEED_VERYLOW +PE15 ICM_20948_CS CS +PF0 BMI088_ACCEL_CS CS +PF10 BMI088_GYRO_CS CS +PG3 ICM_20602_CS CS +PG9 EXT_SPI_CS CS +#PG10 EXT_SPI_CS CS diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroClassic/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroClassic/hwdef.dat new file mode 100644 index 0000000000000..b697e3cbbfabc --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroClassic/hwdef.dat @@ -0,0 +1,299 @@ +########################################################################################################################################################### +# hw definition file for processing by chibios_hwdef.py +# STM32H743ZIT6 +# mRo Control Zero Classic flight controller +# 12x PWM / IO - DMA capable and switchable 3.3v (default) / 5v Logic +# A Dual CAN based flight controller +# 3x IMUs (BMI088 6DOF, ICM20602 6DOF, ICM20948 9DOF) +# Baro, FRAM (256kb), SDCARD Socket, JTAG +# 5x UARTs (2x with hardware flow control), 2x CAN, 1x SPI, 2x I2C +# Onboard 3 color LED and buzzer +# Identical case and connector layout to the original 3DR / mRo Pixhawk +# M10048B - Initial Release +########################################################################################################################################################### + +# MCU class and specific type +MCU STM32H7xx STM32H743xx + +# USB setup +USB_STRING_MANUFACTURER "mRo" + +# board ID for firmware load +APJ_BOARD_ID 1022 + +# crystal frequency +OSCILLATOR_HZ 24000000 + +FLASH_SIZE_KB 2048 + +# with 2M flash we can afford to optimize for speed +env OPTIMIZE -O2 + +# start on 2th sector (1st sector for bootloader) +FLASH_RESERVE_START_KB 128 + +# use FRAM for storage +define HAL_STORAGE_SIZE 32768 + +# Enable RAMTROM parameter storage. +define HAL_WITH_RAMTRON 1 + +# RC Input set for Interrupt not DMA +PC7 TIM3_CH2 TIM3 RCININT FLOAT LOW + +# also USART6_RX for serial RC + +# Control of Spektrum power pin +PE4 SPEKTRUM_PWR OUTPUT LOW GPIO(70) +define HAL_GPIO_SPEKTRUM_PWR 70 + +# Spektrum Power is Active Low +define HAL_SPEKTRUM_PWR_ENABLED 0 + +# Spektrum RC Input pin, used as GPIO for bind for Satellite Receivers +PG0 SPEKTRUM_RC INPUT PULLUP GPIO(71) +define HAL_GPIO_SPEKTRUM_RC 71 + +# Order of I2C buses +I2C_ORDER I2C1 I2C4 + +# 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 + +# Now the first I2C bus. The pin speeds are automatically setup +# correctly, but can be overridden here if needed. +PF14 I2C4_SCL I2C4 +PF15 I2C4_SDA I2C4 + +# this board has no internal I2C busses +define HAL_I2C_INTERNAL_MASK 0 + +# order of UARTs (and USB) and suggested usage +# USART2 Telem 1 (Flow Control) +# USART3 Telem 2 (Flow Control) +# UART4 GPS with I2C1 +# UART7 GPS2 with I2C4 +# UART8 FRSKY Telem +# USART1 Additional UART + +# UART6 RC input (Only RX pin is connected) + +SERIAL_ORDER OTG1 USART2 USART3 UART4 UART7 UART8 USART1 OTG2 + +# default the 2nd interface to MAVLink2 until MissionPlanner updates drivers +define HAL_OTG2_PROTOCOL SerialProtocol_MAVLink2 + +# Another USART, this one for telem1. This one has RTS and CTS lines. +# USART2 telem1 +PD3 USART2_CTS USART2 +PD4 USART2_RTS USART2 +PD5 USART2_TX USART2 +PD6 USART2_RX USART2 + +# The telem2 USART, this one for telem2. This one has RTS and CTS lines. +# USART3 telem2 +PD8 USART3_TX USART3 +PD9 USART3_RX USART3 +PD11 USART3_CTS USART3 +PD12 USART3_RTS USART3 + +# UART4 GPS +PA0 UART4_TX UART4 +PA1 UART4_RX UART4 + +# UART7 GPS2 +PE7 UART7_RX UART7 +PE8 UART7_TX UART7 + +# UART8 FrSky Telemetry +PE0 UART8_RX UART8 +PE1 UART8_TX UART8 + +# USART1 Spektrum RX +PB6 USART1_TX USART1 +PB7 USART1_RX USART1 + +# This is the pin to enable the 3.3v 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 GPIO(72) + +# This is the pin to enable the 1.8v 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. +PC13 VDD_1V8_SENSORS_EN OUTPUT HIGH GPIO(73) + +# This defines more ADC inputs. +PB0 AUX_ADC1 ADC1 SCALE(1) +PB1 AUX_ADC2 ADC1 SCALE(1) + +# And the analog input for airspeed (rarely used these days). +PC5 PRESSURE_SENS ADC1 SCALE(2) + +# RSSI Analog Input +PC0 RSSI_IN ADC1 + +# Safety Switch Input +PA10 SAFETY_IN INPUT + +PE6 LED_SAFETY OUTPUT + +PC4 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 setup the default battery pins driver analog pins and default +# scaling for the power brick. +define HAL_BATT_VOLT_PIN 4 +define HAL_BATT_CURR_PIN 15 +define HAL_BATT_VOLT_SCALE 10.1 +define HAL_BATT_CURR_SCALE 17.0 + +#SPI1 ICM_20602 / ICM_20948 +PA5 SPI1_SCK SPI1 +PA6 SPI1_MISO SPI1 +PA7 SPI1_MOSI SPI1 + +#SPI2 FRAM / DPS310 +PB10 SPI2_SCK SPI2 +PB14 SPI2_MISO SPI2 +PB15 SPI2_MOSI SPI2 + +#SPI5 BMI088 +PF7 SPI5_SCK SPI5 +PF8 SPI5_MISO SPI5 +PF9 SPI5_MOSI SPI5 + +#SPI6 EXTERNAL +PG13 SPI6_SCK SPI6 +PG12 SPI6_MISO SPI6 +PG14 SPI6_MOSI SPI6 + +# This is the pin that senses USB being connected. It is an input pin +# setup as OPENDRAIN. +PA9 VBUS INPUT OPENDRAIN + +# Pins that USB is connected to. +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 + +# PWM output for buzzer +# PF6 TIM16_CH1 TIM16 GPIO(74) ALARM + +# Now setup the pins for the microSD card, if available. +PC8 SDMMC1_D0 SDMMC1 +PC9 SDMMC1_D1 SDMMC1 +PC10 SDMMC1_D2 SDMMC1 +PC11 SDMMC1_D3 SDMMC1 +PC12 SDMMC1_CK SDMMC1 +PD2 SDMMC1_CMD SDMMC1 + +# More CS pins for more sensors. The labels for all CS pins need to +# match the SPI device table later in this file. +PD7 BARO_CS CS +PD10 FRAM_CS CS SPEED_VERYLOW +PE15 ICM_20948_CS CS +PF0 BMI088_ACCEL_CS CS +PF10 BMI088_GYRO_CS CS +PG3 ICM_20602_CS CS +PG9 EXT_SPI_CS CS +PG10 EXT2_SPI_CS CS + +# the first CAN bus +PD0 CAN1_RX CAN1 +PD1 CAN1_TX CAN1 + +PF11 GPIO_CAN1_SILENT OUTPUT PUSHPULL SPEED_LOW LOW GPIO(75) + +# the second CAN bus +PB12 CAN2_RX CAN2 +PB13 CAN2_TX CAN2 + +PF12 GPIO_CAN2_SILENT OUTPUT PUSHPULL SPEED_LOW LOW GPIO(76) + +# 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) +PA2 TIM2_CH3 TIM2 PWM(7) GPIO(56) +PA15 TIM2_CH1 TIM2 PWM(8) GPIO(57) +PB11 TIM2_CH4 TIM2 PWM(9) GPIO(58) +PE5 TIM15_CH1 TIM15 PWM(10) GPIO(59) +PC6 TIM8_CH1 TIM8 PWM(11) GPIO(60) +PD15 TIM4_CH4 TIM4 PWM(12) GPIO(61) + +define BOARD_PWM_COUNT_DEFAULT 12 + +# This is the invensense data-ready pin. We don't use it in the +# default driver. +PG2 MPU_DRDY INPUT + +# Pin for PWM Voltage Selection, 0 means 3.3v, 1 means 5v +PG6 PWM_VOLT_SEL OUTPUT LOW GPIO(77) +define HAL_GPIO_PWM_VOLT_PIN 77 +define HAL_GPIO_PWM_VOLT_3v3 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. +PC1 VDD_BRICK_nVALID INPUT PULLUP + +SPIDEV bmi088_g SPI5 DEVID1 BMI088_GYRO_CS MODE3 10*MHZ 10*MHZ +SPIDEV bmi088_a SPI5 DEVID2 BMI088_ACCEL_CS MODE3 10*MHZ 10*MHZ +SPIDEV icm20608 SPI1 DEVID2 ICM_20602_CS MODE3 2*MHZ 8*MHZ +SPIDEV icm20948 SPI1 DEVID1 ICM_20948_CS MODE3 2*MHZ 4*MHZ +SPIDEV dps280 SPI2 DEVID3 BARO_CS MODE3 5*MHZ 5*MHZ +SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ + +# Now some defines for logging and terrain data files. +define HAL_BOARD_LOG_DIRECTORY "/APM/LOGS" +define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN" + +# allow to have have a dedicated safety switch pin +define HAL_HAVE_SAFETY_SWITCH 1 + +# Enable FAT filesystem support (needs a microSD defined via SDMMC). +define HAL_OS_FATFS_IO 1 + +# Control Zero has a TriColor LED, Red, Green, Blue +define HAL_HAVE_PIXRACER_LED + +define HAL_GPIO_LED_ON 0 +define HAL_GPIO_LED_OFF 1 + +# LED setup for PixracerLED driver +PB4 LED_R OUTPUT HIGH GPIO(0) +PB5 LED_G OUTPUT HIGH GPIO(1) +PB3 LED_B OUTPUT HIGH GPIO(2) + +define HAL_GPIO_A_LED_PIN 0 +define HAL_GPIO_B_LED_PIN 1 +define HAL_GPIO_C_LED_PIN 2 + +# 3 IMUs +IMU BMI088 SPI:bmi088_a SPI:bmi088_g ROTATION_NONE +IMU Invensense SPI:icm20608 ROTATION_ROLL_180_YAW_90 +IMU Invensensev2 SPI:icm20948 ROTATION_ROLL_180_YAW_90 + +# 1 baro +BARO DPS280 SPI:dps280 + +# 1 compass +COMPASS AK09916:probe_ICM20948 0 ROTATION_ROLL_180 + +define HAL_PROBE_EXTERNAL_I2C_COMPASSES diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroF7/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroF7/defaults.parm new file mode 100644 index 0000000000000..8e0cdc620dbb0 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroF7/defaults.parm @@ -0,0 +1,7 @@ +#Default Parameters for the mRo Control Zero F7 + +CAN_P1_DRIVER 1 +CAN_SLCAN_CPORT 1 +SERIAL6_PROTOCOL 22 + + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroF7/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroF7/hwdef-bl.dat index 2c448876843a1..e9432613fbbe8 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroF7/hwdef-bl.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroF7/hwdef-bl.dat @@ -1,5 +1,18 @@ -# hw definition file for processing by chibios_hwdef.py -# for F777 bootloader +########################################################################################################################################################### +# mRo Control Zero F7 Flight Controller +# STM32F777IIK6 +# 8x PWM / IO - DMA capable, buffered and level shiftable - 3.3v (default) / 5v Logic +# Front and Rear Connectors: 30pin Molex PicoClasp +# 3x IMUs (BMI088 6DOF, ICM20602 6DOF, ICM20948 9DOF) +# DPS310 Baro, FRAM (256Bb), SDCARD Socket, TC2030 JTAG +# 5x UARTs (2x with hardware flow control), 2x CAN, 1x SPI, 1x I2C +# Onboard 3 color LED and buzzer +# Uncased Weight and Dimensions: +# Weight: 5.3g (.19oz) +# Width: 20mm (.79in) +# Length: 32mm (1.26in) +# M10058 - Initial Release +########################################################################################################################################################### # MCU class and specific type MCU STM32F7xx STM32F777xx @@ -30,13 +43,8 @@ PB3 LED_ACTIVITY2 OUTPUT define HAL_LED_ON 0 - # order of UARTs (and USB) -SERIAL_ORDER OTG1 UART7 - -# UART7 maps to uartF in the HAL (serial5 in SERIALn_ parameters). -PE7 UART7_RX UART7 -PE8 UART7_TX UART7 +SERIAL_ORDER OTG1 PA11 OTG_FS_DM OTG1 PA12 OTG_FS_DP OTG1 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroF7/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroF7/hwdef.dat index 3440a6bcac014..9867f1af9e8b6 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroF7/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroF7/hwdef.dat @@ -1,8 +1,29 @@ -# hw definition file for processing by chibios_hwdef.py +########################################################################################################################################################### +# mRo Control Zero F7 Flight Controller +# STM32F777IIK6 +# 8x PWM / IO - DMA capable, buffered and level shiftable - 3.3v (default) / 5v Logic +# Front and Rear Connectors: 30pin Molex PicoClasp +# 3x IMUs (BMI088 6DOF, ICM20602 6DOF, ICM20948 9DOF) +# DPS310 Baro, FRAM (256Bb), SDCARD Socket, TC2030 JTAG +# 5x UARTs (2x with hardware flow control), 2x CAN, 1x SPI, 1x I2C +# Onboard 3 color LED and buzzer +# Uncased Weight and Dimensions: +# Weight: 5.3g (.19oz) +# Width: 20mm (.79in) +# Length: 32mm (1.26in) +# M10058 - Initial Release +########################################################################################################################################################### # MCU class and specific type MCU STM32F7xx STM32F777xx +# ChibiOS system timer +# this is the STM32 timer that ChibiOS will use for the low level +# driver. This must be a 32 bit timer, so Timers 2 or 5 on the STM32F777. +# See hal_st_lld.c in ChibiOS for details + +STM32_ST_USE_TIMER 5 + # board ID for firmware load APJ_BOARD_ID 141 @@ -17,23 +38,18 @@ env OPTIMIZE -O2 # start on 4th sector (1st sector for bootloader, 2 for extra storage) FLASH_RESERVE_START_KB 96 +# use FRAM for storage +define HAL_STORAGE_SIZE 32768 +define HAL_WITH_RAMTRON 1 + # fallback storage in case FRAM is not populated define STORAGE_FLASH_PAGE 1 -# this is the STM32 timer that ChibiOS will use for the low level -# driver. This must be a 32 bit timer, so Timers 2 or 5 on the STM32F777. -# See hal_st_lld.c in ChibiOS for details - -# ChibiOS system timer -STM32_ST_USE_TIMER 5 - -define HAL_STORAGE_SIZE 16384 - # USB setup USB_STRING_MANUFACTURER "mRo" -# RC Input set for Interrupt not DMA -PC7 TIM3_CH2 TIM3 RCININT FLOAT LOW # also USART6_RX for serial RC +# RC Input set for Interrupt not DMA also USART6_RX for serial RC +PC7 TIM3_CH2 TIM3 RCININT FLOAT LOW # Control of Spektrum power pin PE4 SPEKTRUM_PWR OUTPUT LOW GPIO(70) @@ -52,21 +68,15 @@ I2C_ORDER I2C1 # this board only has a single I2C bus so make it external define HAL_I2C_INTERNAL_MASK 0 -# OEM Only -# I2C_ORDER I2C1, I2C2, I2C3 - # order of UARTs (and USB) # UART4 GPS -# USART2 FC -# USART3 FC +# USART2 Telem 1 (Flow Control) +# USART3 Telem 2 (Flow Control) # UART8 FRSKY Telem -# USART6 FC -# UART7 DEBUG - -SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 USART6 UART7 OTG2 +# USART6 RC input (Only RX pin is connected) +# UART7 Additional UART -# default the 2nd interface to MAVLink2 until MissionPlanner updates drivers -define HAL_OTG2_PROTOCOL SerialProtocol_MAVLink2 +SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7 OTG2 # Another USART, this one for telem1. This one has RTS and CTS lines. # USART2 telem1 @@ -86,11 +96,7 @@ PD12 USART3_RTS USART3 PA0 UART4_TX UART4 PA1 UART4_RX UART4 NODMA -# USART6 Spare or can be configured as SPI6 -PG14 USART6_TX USART6 NODMA -PG9 USART6_RX USART6 NODMA - -# UART7 maps to uartF in the HAL (serial5 in SERIALn_ parameters). Debug Console +# UART7 Spare or Debug Console PE7 UART7_RX UART7 NODMA PE8 UART7_TX UART7 NODMA @@ -125,12 +131,20 @@ PF7 SPI5_SCK SPI5 PF8 SPI5_MISO SPI5 PF9 SPI5_MOSI SPI5 +# GPIOs +# This defines general purpose outputs, mapped to GPIO +# numbers 1 thru 4 for users. +PG9 EXTERN_GPIO1 GPIO(1) +PG13 EXTERN_GPIO2 GPIO(2) +PG12 EXTERN_GPIO3 GPIO(3) +PG14 EXTERN_GPIO4 GPIO(4) + # This is the pin that senses USB being connected. It is an input pin # setup as OPENDRAIN. PA9 VBUS INPUT OPENDRAIN # This input pin is used to detect that power is valid on USB. -PC0 VBUS_VALID INPUT +PC0 VBUS_VALID INPUT PULLDOWN # Now we define the pins that USB is connected on. PA11 OTG_FS_DM OTG1 @@ -148,14 +162,6 @@ PA15 TIM2_CH1 TIM2 GPIO(77) ALARM PB8 I2C1_SCL I2C1 PB9 I2C1_SDA I2C1 -# the 2nd I2C bus, OEM Only -# PB10 I2C2_SCL I2C2 -# PB11 I2C2_SDA I2C2 - -# the 3nd I2C bus, OEM Only -# PB6 I2C4_SCL I2C4 -# PB7 I2C4_SDA I2C4 - # Now setup the pins for the microSD card, if available. PC8 SDMMC_D0 SDMMC1 PC9 SDMMC_D1 SDMMC1 @@ -168,8 +174,6 @@ PD2 SDMMC_CMD SDMMC1 # match the SPI device table later in this file. PC2 ICM_20602_CS CS PD7 BARO_CS CS -# 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 NODMA PE15 ICM_20948_CS CS PF10 BMI088_GYRO_CS CS @@ -181,10 +185,6 @@ PD1 CAN1_TX CAN1 PF5 GPIO_CAN1_SILENT OUTPUT PUSHPULL SPEED_LOW LOW GPIO(72) -# This defines the pins for the 2nd CAN interface, OEM Only. -# PB6 CAN2_TX CAN2 -# PB4 CAN2_RX CAN2 - # 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 @@ -213,14 +213,14 @@ PE3 VDD_3V3_SENSORS_EN OUTPUT HIGH # 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_VALID INPUT PULLUP +PB5 VDD_BRICK_nVALID INPUT PULLUP -SPIDEV dps310 SPI2 DEVID3 BARO_CS MODE3 5*MHZ 5*MHZ +SPIDEV dps280 SPI2 DEVID3 BARO_CS MODE3 5*MHZ 5*MHZ SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ +SPIDEV bmi088_g SPI5 DEVID1 BMI088_GYRO_CS MODE3 5*MHZ 5*MHZ +SPIDEV bmi088_a SPI5 DEVID2 BMI088_ACCEL_CS MODE3 5*MHZ 5*MHZ +SPIDEV icm20608 SPI1 DEVID2 ICM_20602_CS MODE3 2*MHZ 4*MHZ SPIDEV icm20948 SPI1 DEVID1 ICM_20948_CS MODE3 2*MHZ 4*MHZ -SPIDEV icm20608 SPI1 DEVID2 ICM_20602_CS MODE3 2*MHZ 8*MHZ -SPIDEV bmi088_g SPI5 DEVID1 BMI088_GYRO_CS MODE3 10*MHZ 10*MHZ -SPIDEV bmi088_a SPI5 DEVID2 BMI088_ACCEL_CS MODE3 10*MHZ 10*MHZ # Now some defines for logging and terrain data files. define HAL_BOARD_LOG_DIRECTORY "/APM/LOGS" @@ -229,9 +229,6 @@ define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN" # allow to have have a dedicated safety switch pin define HAL_HAVE_SAFETY_SWITCH 1 -# Enable RAMTROM parameter storage. -define HAL_WITH_RAMTRON 1 - # Enable FAT filesystem support (needs a microSD defined via SDMMC). define HAL_OS_FATFS_IO 1 @@ -258,16 +255,16 @@ define HAL_GPIO_B_LED_PIN 1 define HAL_GPIO_C_LED_PIN 2 DMA_PRIORITY SDMMC* -#DMA_NOSHARE SPI1* * -#DMA_NOSHARE SPI5* * # 3 IMUs -IMU Invensensev2 SPI:icm20948 ROTATION_ROLL_180_YAW_90 -IMU Invensense SPI:icm20608 ROTATION_ROLL_180_YAW_90 IMU BMI088 SPI:bmi088_a SPI:bmi088_g ROTATION_NONE +IMU Invensense SPI:icm20608 ROTATION_ROLL_180_YAW_90 +IMU Invensensev2 SPI:icm20948 ROTATION_ROLL_180_YAW_90 + +define HAL_DEFAULT_INS_FAST_SAMPLE 7 # 1 baro -BARO DPS280 SPI:dps310 +BARO DPS280 SPI:dps280 # 1 compass COMPASS AK09916:probe_ICM20948 0 ROTATION_ROLL_180 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroH7/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroH7/defaults.parm new file mode 100644 index 0000000000000..fa6580aa1d964 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroH7/defaults.parm @@ -0,0 +1,7 @@ +#Default Parameters for the mRo Control Zero H7 + +CAN_P1_DRIVER 1 +CAN_SLCAN_CPORT 1 +SERIAL6_PROTOCOL 22 + + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroH7/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroH7/hwdef-bl.dat new file mode 100644 index 0000000000000..d165118b008c8 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroH7/hwdef-bl.dat @@ -0,0 +1,65 @@ +########################################################################################################################################################### +# mRo Control Zero H7 Flight Controller +# STM32H743IIK6 +# 8x PWM / IO - DMA capable, buffered and level shiftable - 3.3v (default) / 5v Logic +# Front and Rear Connectors: 30pin Molex PicoClasp +# 3x IMUs (BMI088 6DOF, ICM20602 6DOF, ICM20948 9DOF) +# DPS310 Baro, FRAM (256Bb), SDCARD Socket, TC2030 JTAG +# 5x UARTs (2x with hardware flow control), 1x CAN, 1x SPI, 1x I2C +# Onboard 3 color LED and buzzer +# Uncased Weight and Dimensions: +# Weight: 5.3g (.19oz) +# Width: 20mm (.79in) +# Length: 32mm (1.26in) +# M10058 - Initial Release +########################################################################################################################################################### + +# MCU class and specific type +MCU STM32H7xx STM32H743xx + +# USB setup +USB_STRING_MANUFACTURER "mRo" + +# crystal frequency +OSCILLATOR_HZ 24000000 + +# board ID for firmware load +APJ_BOARD_ID 1023 + +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 + +PB11 LED_BOOTLOADER OUTPUT + +# define all 3 to make LED output White. +PB1 LED_ACTIVITY OUTPUT +PB3 LED_ACTIVITY2 OUTPUT +# PB11 LED_ACTIVITY3 OUTPUT + +define HAL_LED_ON 0 + +# order of UARTs (and USB) +SERIAL_ORDER OTG1 + +PA11 OTG_FS_DM OTG1 +PA12 OTG_FS_DP OTG1 + +PA13 JTMS-SWDIO SWD +PA14 JTCK-SWCLK SWD + +define HAL_USE_EMPTY_STORAGE 1 +define HAL_STORAGE_SIZE 16384 + +# Add CS pins to ensure they are high in bootloader +PC2 ICM_20602_CS CS +PD7 BARO_CS CS +PD10 FRAM_CS CS SPEED_VERYLOW NODMA +PE15 ICM_20948_CS CS +PF6 BMI088_ACCEL_CS CS +PF10 BMI088_GYRO_CS CS +PG9 EXTERNAL CS diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroH7/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroH7/hwdef.dat new file mode 100644 index 0000000000000..99712983175e6 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroH7/hwdef.dat @@ -0,0 +1,265 @@ +########################################################################################################################################################### +# mRo Control Zero H7 Flight Controller +# STM32H743IIK6 +# 8x PWM / IO - DMA capable, buffered and level shiftable - 3.3v (default) / 5v Logic +# Front and Rear Connectors: 30pin Molex PicoClasp +# 3x IMUs (BMI088 6DOF, ICM20602 6DOF, ICM20948 9DOF) +# DPS310 Baro, FRAM (256Bb), SDCARD Socket, TC2030 JTAG +# 5x UARTs (2x with hardware flow control), 1x CAN, 1x SPI, 1x I2C +# Onboard 3 color LED and buzzer +# Uncased Weight and Dimensions: +# Weight: 5.3g (.19oz) +# Width: 20mm (.79in) +# Length: 32mm (1.26in) +# M10058 - Initial Release +########################################################################################################################################################### + +# MCU class and specific type +MCU STM32H7xx STM32H743xx + +# board ID for firmware load +APJ_BOARD_ID 1023 + +# crystal frequency +OSCILLATOR_HZ 24000000 + +FLASH_SIZE_KB 2048 + +# with 2M flash we can afford to optimize for speed +env OPTIMIZE -O2 + +# start on 2th sector (1st sector for bootloader) +FLASH_RESERVE_START_KB 128 + +define HAL_STORAGE_SIZE 32768 + +# USB setup +USB_STRING_MANUFACTURER "mRo" + +# RC Input set for Interrupt not DMA +PC7 TIM3_CH2 TIM3 RCININT FLOAT LOW + +# GPIO(70) # also USART6_RX for serial RC + +# Control of Spektrum power pin +PE4 SPEKTRUM_PWR OUTPUT LOW GPIO(70) +define HAL_GPIO_SPEKTRUM_PWR 70 + +# Spektrum Power is Active High +define HAL_SPEKTRUM_PWR_ENABLED 0 + +# Spektrum RC Input pin, used as GPIO for bind for Satellite Receivers +PB0 SPEKTRUM_RC INPUT PULLUP GPIO(71) +define HAL_GPIO_SPEKTRUM_RC 71 + +# Order of I2C buses +I2C_ORDER I2C1 + +# this board has no internal I2C buses so them all external +define HAL_I2C_INTERNAL_MASK 0 + +# order of UARTs and suggested uses +# USART2 TELEM1 +# USART3 TELEM2 +# UART4 GPS +# UART8 FRSKY Telem +# UART7 DEBUG + +# USART6 RC input (Only RX pin is connected) + +# OTG1 and OTG2 are USB devices (1x physical USB connection enumerated as 2x logical ports) + +SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7 OTG2 + +# default the 2nd interface to MAVLink2 until MissionPlanner updates drivers +define HAL_OTG2_PROTOCOL SerialProtocol_MAVLink2 + +# Another USART, this one for telem1. This one has RTS and CTS lines. +# USART2 telem1 +PD5 USART2_TX USART2 +PD6 USART2_RX USART2 +PD3 USART2_CTS USART2 +PD4 USART2_RTS USART2 + +# The telem2 USART, this one for telem2. This one has RTS and CTS lines. +# USART3 telem2 +PD8 USART3_TX USART3 +PD9 USART3_RX USART3 +PD11 USART3_CTS USART3 +PD12 USART3_RTS USART3 + +# UART4 GPS +PA0 UART4_TX UART4 +PA1 UART4_RX UART4 + +# UART7 +PE8 UART7_TX UART7 +PE7 UART7_RX UART7 + +# UART8 FrSky Telemetry (Single wire serial connects to the TX pin only) +PE1 UART8_TX UART8 +PE0 UART8_RX UART8 + +# RSSI Analog Input +PC1 RSSI_IN ADC1 + +# Safety Switch Input +PC4 SAFETY_IN INPUT PULLDOWN +define HAL_HAVE_SAFETY_SWITCH 1 + +# Battery Analog Sense Pins +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 setup the default battery pins driver analog pins and default +# scaling for the power brick. +define HAL_BATT_VOLT_PIN 14 +define HAL_BATT_CURR_PIN 15 +define HAL_BATT_VOLT_SCALE 10.1 +define HAL_BATT_CURR_SCALE 17.0 + +#SPI1 ICM_20602 / ICM_20948 +PA5 SPI1_SCK SPI1 +PA6 SPI1_MISO SPI1 +PA7 SPI1_MOSI SPI1 + +#SPI2 FRAM / DPS310 +PB10 SPI2_SCK SPI2 +PB14 SPI2_MISO SPI2 +PB15 SPI2_MOSI SPI2 + +#SPI5 BMI088 +PF7 SPI5_SCK SPI5 +PF8 SPI5_MISO SPI5 +PF9 SPI5_MOSI SPI5 + +#SPI6 External +PG13 SPI6_SCK SPI6 +PG12 SPI6_MISO SPI6 +PG14 SPI6_MOSI SPI6 + +# This is the pin that senses USB being connected. It is an input pin +# setup as OPENDRAIN. +PA9 VBUS INPUT OPENDRAIN + +# This input pin is used to detect that power is valid on USB. +PC0 VBUS_VALID INPUT PULLDOWN + +# 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 + +# PWM output for buzzer +PA15 TIM2_CH1 TIM2 GPIO(77) ALARM + +# First I2C bus. +PB8 I2C1_SCL I2C1 +PB9 I2C1_SDA I2C1 + +# microSD card +PC8 SDMMC1_D0 SDMMC1 +PC9 SDMMC1_D1 SDMMC1 +PC10 SDMMC1_D2 SDMMC1 +PC11 SDMMC1_D3 SDMMC1 +PC12 SDMMC1_CK SDMMC1 +PD2 SDMMC1_CMD SDMMC1 + +# CS pins for SPI sensors. The labels for all CS pins need to +# match the SPI device table later in this file. +PC2 ICM_20602_CS CS +PD7 BARO_CS CS +PD10 FRAM_CS CS SPEED_VERYLOW NODMA +PE15 ICM_20948_CS CS +PF6 BMI088_ACCEL_CS CS +PF10 BMI088_GYRO_CS CS +PG9 EXTERNAL CS + +# CAN Busses +PD0 CAN1_RX CAN1 +PD1 CAN1_TX CAN1 + +# CAN Silent Pin LOW Enable +PF5 GPIO_CAN_SILENT OUTPUT PUSHPULL SPEED_LOW LOW GPIO(72) + +# 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) +PI5 TIM8_CH1 TIM8 PWM(7) GPIO(56) +PI6 TIM8_CH2 TIM8 PWM(8) GPIO(57) + +define BOARD_PWM_COUNT_DEFAULT 8 + +# This is the invensense 20602 data-ready pin. +PD15 MPU_DRDY INPUT + +# Power Supply Enable +PE3 VDD_1V8_3V3_SENSORS_EN OUTPUT HIGH + +# Power Supply Enable 3.3v Periph/Spektrum +PC5 VDD_3V3_PERIPH_EN OUTPUT HIGH + +# 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_VALID INPUT PULLDOWN + +SPIDEV dps280 SPI2 DEVID3 BARO_CS MODE3 5*MHZ 5*MHZ +SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ +SPIDEV bmi088_g SPI5 DEVID1 BMI088_GYRO_CS MODE3 5*MHZ 5*MHZ +SPIDEV bmi088_a SPI5 DEVID2 BMI088_ACCEL_CS MODE3 5*MHZ 5*MHZ +SPIDEV icm20608 SPI1 DEVID2 ICM_20602_CS MODE3 2*MHZ 4*MHZ +SPIDEV icm20948 SPI1 DEVID1 ICM_20948_CS MODE3 2*MHZ 4*MHZ + +# Now some defines for logging and terrain data files. +define HAL_BOARD_LOG_DIRECTORY "/APM/LOGS" +define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN" + +# Enable RAMTROM parameter storage. +define HAL_WITH_RAMTRON 1 + +# Enable FAT filesystem support (needs a microSD defined via SDMMC). +define HAL_OS_FATFS_IO 1 + +# Control Zero has a TriColor LED, Red, Green, Blue +define HAL_HAVE_PIXRACER_LED + +define HAL_GPIO_LED_ON 0 +define HAL_GPIO_LED_OFF 1 + +# LED setup for PixracerLED driver +PB11 LED_R OUTPUT HIGH GPIO(0) +PB1 LED_G OUTPUT HIGH GPIO(1) +PB3 LED_B OUTPUT HIGH GPIO(2) + +define HAL_GPIO_A_LED_PIN 0 +define HAL_GPIO_B_LED_PIN 1 +define HAL_GPIO_C_LED_PIN 2 + +# 3 IMUs +IMU BMI088 SPI:bmi088_a SPI:bmi088_g ROTATION_NONE +IMU Invensense SPI:icm20608 ROTATION_ROLL_180_YAW_90 +IMU Invensensev2 SPI:icm20948 ROTATION_ROLL_180_YAW_90 + +define HAL_DEFAULT_INS_FAST_SAMPLE 7 + +# 1 baro +BARO DPS280 SPI:dps280 + +# 1 compass +COMPASS AK09916:probe_ICM20948 0 ROTATION_ROLL_180 +define HAL_PROBE_EXTERNAL_I2C_COMPASSES diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroOEMH7/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroOEMH7/defaults.parm new file mode 100644 index 0000000000000..7aba9fb30ad12 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroOEMH7/defaults.parm @@ -0,0 +1,8 @@ +#Default Parameters for the mRo Control Zero OEM H7 + +CAN_P1_DRIVER 1 +CAN_P2_DRIVER 2 +CAN_SLCAN_CPORT 1 +SERIAL6_PROTOCOL 22 + + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroOEMH7/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroOEMH7/hwdef-bl.dat new file mode 100644 index 0000000000000..09f6099bf9caa --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroOEMH7/hwdef-bl.dat @@ -0,0 +1,66 @@ +########################################################################################################################################################### +# mRo Control Zero OEM H7 Flight Controller +# STM32H743IIK6 +# 8x PWM / IO - DMA capable and hardware and/or software switchable 3.3v / 5v Logic (hardware default) +# Logic level set in hardware: No Solder for 5v, Solder 1-2 for 3.3v, Solder 2-3 for 3.3v / 5v software switchable +# Bottom Connectors: 36pin front and 40pin back Samtec FTM-118-02-F-DV 1.00 mm Surface Mount Micro Low Profile Terminal Strip +# 3x IMUs (BMI088 6DOF, ICM20602 6DOF, ICM20948 9DOF) +# DPS310 Baro, FRAM (256Bb), SDCARD Socket, TC2030 JTAG +# 5x UARTs (2x with hardware flow control), 2x CAN, 1x SPI, 3x I2C +# Onboard 3 color LED and buzzer +# Uncased Weight and Dimensions: +# Weight: 3.66g (13.oz) +# Width: 20mm (.79in) +# Length: 34mm (1.34in) +# M10059C - Initial Release +########################################################################################################################################################### + +# MCU class and specific type +MCU STM32H7xx STM32H743xx + +# USB setup +USB_STRING_MANUFACTURER "mRo" + +# crystal frequency +OSCILLATOR_HZ 24000000 + +# board ID for firmware load +APJ_BOARD_ID 1024 + +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 + +PB11 LED_BOOTLOADER OUTPUT + +# define all 3 to make LED output White. +PB1 LED_ACTIVITY OUTPUT +PB3 LED_ACTIVITY2 OUTPUT +# PB11 LED_ACTIVITY3 OUTPUT + +define HAL_LED_ON 0 + +# order of UARTs (and USB) +SERIAL_ORDER OTG1 + +PA11 OTG_FS_DM OTG1 +PA12 OTG_FS_DP OTG1 + +PA13 JTMS-SWDIO SWD +PA14 JTCK-SWCLK SWD + +define HAL_USE_EMPTY_STORAGE 1 +define HAL_STORAGE_SIZE 16384 + +# Add CS pins to ensure they are high in bootloader +PC2 ICM_20602_CS CS +PD7 BARO_CS CS +PD10 FRAM_CS CS SPEED_VERYLOW NODMA +PE15 ICM_20948_CS CS +PF6 BMI088_ACCEL_CS CS +PF10 BMI088_GYRO_CS CS +PG9 EXTERNAL CS diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroOEMH7/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroOEMH7/hwdef.dat new file mode 100644 index 0000000000000..b4ae8ffee3365 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoControlZeroOEMH7/hwdef.dat @@ -0,0 +1,279 @@ +########################################################################################################################################################### +# mRo Control Zero OEM H7 Flight Controller +# STM32H743IIK6 +# 8x PWM / IO - DMA capable and hardware and/or software switchable 3.3v / 5v Logic (hardware default) +# Logic level set in hardware: No Solder for 5v, Solder 1-2 for 3.3v, Solder 2-3 for 3.3v / 5v software switchable +# Bottom Connectors: 36pin front and 40pin back Samtec FTM-118-02-F-DV 1.00 mm Surface Mount Micro Low Profile Terminal Strip +# 3x IMUs (BMI088 6DOF, ICM20602 6DOF, ICM20948 9DOF) +# DPS310 Baro, FRAM (256Bb), SDCARD Socket, TC2030 JTAG +# 5x UARTs (2x with hardware flow control), 2x CAN, 1x SPI, 3x I2C +# Onboard 3 color LED and buzzer +# Uncased Weight and Dimensions: +# Weight: 3.66g (13.oz) +# Width: 20mm (.79in) +# Length: 34mm (1.34in) +# M10059C - Initial Release +########################################################################################################################################################### + +# MCU class and specific type +MCU STM32H7xx STM32H743xx + +# board ID for firmware load +APJ_BOARD_ID 1024 + +# crystal frequency +OSCILLATOR_HZ 24000000 + +FLASH_SIZE_KB 2048 + +# with 2M flash we can afford to optimize for speed +env OPTIMIZE -O2 + +# start on 2th sector (1st sector for bootloader) +FLASH_RESERVE_START_KB 128 + +define HAL_STORAGE_SIZE 32768 + +# USB setup +USB_STRING_MANUFACTURER "mRo" + +# RC Input set for Interrupt not DMA +PC7 TIM3_CH2 TIM3 RCININT FLOAT LOW + +# GPIO(70) # also USART6_RX for serial RC + +# Control of Spektrum power pin +PE4 SPEKTRUM_PWR OUTPUT LOW GPIO(70) +define HAL_GPIO_SPEKTRUM_PWR 70 + +# Spektrum Power is Active High +define HAL_SPEKTRUM_PWR_ENABLED 0 + +# Spektrum RC Input pin, used as GPIO for bind for Satellite Receivers +PB0 SPEKTRUM_RC INPUT PULLUP GPIO(71) +define HAL_GPIO_SPEKTRUM_RC 71 + +# Order of I2C buses +I2C_ORDER I2C1 I2C3 I2C4 + +# this board has no internal I2C buses so them all external +define HAL_I2C_INTERNAL_MASK 0 + +# order of UARTs and suggested uses +# USART2 TELEM1 +# USART3 TELEM2 +# UART4 GPS +# UART8 FRSKY Telem +# UART7 DEBUG + +# USART6 RC input (Only RX pin is connected) + +# OTG1 and OTG2 are USB devices (1x physical USB connection enumerated as 2x logical ports) + +SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 UART7 OTG2 + +# default the 2nd interface to MAVLink2 until MissionPlanner updates drivers +define HAL_OTG2_PROTOCOL SerialProtocol_MAVLink2 + +# Another USART, this one for telem1. This one has RTS and CTS lines. +# USART2 telem1 +PD5 USART2_TX USART2 +PD6 USART2_RX USART2 +PD3 USART2_CTS USART2 +PD4 USART2_RTS USART2 + +# The telem2 USART, this one for telem2. This one has RTS and CTS lines. +# USART3 telem2 +PD8 USART3_TX USART3 +PD9 USART3_RX USART3 +PD11 USART3_CTS USART3 +PD12 USART3_RTS USART3 + +# UART4 GPS +PA0 UART4_TX UART4 +PA1 UART4_RX UART4 + +# UART7 +PE8 UART7_TX UART7 +PE7 UART7_RX UART7 + +# UART8 FrSky Telemetry (Single wire serial connects to the TX pin only) +PE1 UART8_TX UART8 +PE0 UART8_RX UART8 + +# RSSI Analog Input +PC1 RSSI_IN ADC1 + +# Safety Switch Input +PC4 SAFETY_IN INPUT PULLDOWN +define HAL_HAVE_SAFETY_SWITCH 1 + +# Battery Analog Sense Pins +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 setup the default battery pins driver analog pins and default +# scaling for the power brick. +define HAL_BATT_VOLT_PIN 14 +define HAL_BATT_CURR_PIN 15 +define HAL_BATT_VOLT_SCALE 10.1 +define HAL_BATT_CURR_SCALE 17.0 + +#SPI1 ICM_20602 / ICM_20948 +PA5 SPI1_SCK SPI1 +PA6 SPI1_MISO SPI1 +PA7 SPI1_MOSI SPI1 + +#SPI2 FRAM / DPS310 +PB10 SPI2_SCK SPI2 +PB14 SPI2_MISO SPI2 +PB15 SPI2_MOSI SPI2 + +#SPI5 BMI088 +PF7 SPI5_SCK SPI5 +PF8 SPI5_MISO SPI5 +PF9 SPI5_MOSI SPI5 + +#SPI6 External +PG13 SPI6_SCK SPI6 +PG12 SPI6_MISO SPI6 +PG14 SPI6_MOSI SPI6 + +# This is the pin that senses USB being connected. It is an input pin +# setup as OPENDRAIN. +PA9 VBUS INPUT OPENDRAIN + +# This input pin is used to detect that power is valid on USB. +PC0 VBUS_VALID INPUT PULLDOWN + +# 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 + +# PWM output for buzzer +PA15 TIM2_CH1 TIM2 GPIO(77) ALARM + +# First I2C bus. +PB8 I2C1_SCL I2C1 +PB9 I2C1_SDA I2C1 + +# Second I2C bus. +PH7 I2C3_SCL I2C3 +PH8 I2C3_SDA I2C3 + +# Third I2C bus. +PB6 I2C4_SCL I2C4 +PB7 I2C4_SDA I2C4 + +# microSD card +PC8 SDMMC1_D0 SDMMC1 +PC9 SDMMC1_D1 SDMMC1 +PC10 SDMMC1_D2 SDMMC1 +PC11 SDMMC1_D3 SDMMC1 +PC12 SDMMC1_CK SDMMC1 +PD2 SDMMC1_CMD SDMMC1 + +# CS pins for SPI sensors. The labels for all CS pins need to +# match the SPI device table later in this file. +PC2 ICM_20602_CS CS +PD7 BARO_CS CS +PD10 FRAM_CS CS SPEED_VERYLOW NODMA +PE15 ICM_20948_CS CS +PF6 BMI088_ACCEL_CS CS +PF10 BMI088_GYRO_CS CS +PG9 EXTERNAL CS + +# CAN Busses +PD0 CAN1_RX CAN1 +PD1 CAN1_TX CAN1 + +PB13 CAN2_TX CAN2 +PB12 CAN2_RX CAN2 + +# CAN Silent Pins LOW Enable +PF5 GPIO_CAN_SILENT OUTPUT PUSHPULL SPEED_LOW LOW GPIO(72) + +# 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) +PI5 TIM8_CH1 TIM8 PWM(7) GPIO(56) +PI6 TIM8_CH2 TIM8 PWM(8) GPIO(57) + +define BOARD_PWM_COUNT_DEFAULT 8 + +# This is the invensense 20602 data-ready pin. +PD15 MPU_DRDY INPUT + +# Power Supply Enable +PE3 VDD_1V8_3V3_SENSORS_EN OUTPUT HIGH + +# Power Supply Enable 3.3v Periph/Spektrum +PC5 VDD_3V3_PERIPH_EN OUTPUT HIGH + +# 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_VALID INPUT PULLDOWN + +SPIDEV dps280 SPI2 DEVID3 BARO_CS MODE3 5*MHZ 5*MHZ +SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ +SPIDEV bmi088_g SPI5 DEVID1 BMI088_GYRO_CS MODE3 5*MHZ 5*MHZ +SPIDEV bmi088_a SPI5 DEVID2 BMI088_ACCEL_CS MODE3 5*MHZ 5*MHZ +SPIDEV icm20608 SPI1 DEVID2 ICM_20602_CS MODE3 2*MHZ 4*MHZ +SPIDEV icm20948 SPI1 DEVID1 ICM_20948_CS MODE3 2*MHZ 4*MHZ + +# Now some defines for logging and terrain data files. +define HAL_BOARD_LOG_DIRECTORY "/APM/LOGS" +define HAL_BOARD_TERRAIN_DIRECTORY "/APM/TERRAIN" + +# Enable RAMTROM parameter storage. +define HAL_WITH_RAMTRON 1 + +# Enable FAT filesystem support (needs a microSD defined via SDMMC). +define HAL_OS_FATFS_IO 1 + +# Control Zero has a TriColor LED, Red, Green, Blue +define HAL_HAVE_PIXRACER_LED + +define HAL_GPIO_LED_ON 0 +define HAL_GPIO_LED_OFF 1 + +# LED setup for PixracerLED driver +PB11 LED_R OUTPUT HIGH GPIO(0) +PB1 LED_G OUTPUT HIGH GPIO(1) +PB3 LED_B OUTPUT HIGH GPIO(2) + +define HAL_GPIO_A_LED_PIN 0 +define HAL_GPIO_B_LED_PIN 1 +define HAL_GPIO_C_LED_PIN 2 + +# DMA_PRIORITY SDMMC* + +# 3 IMUs +IMU BMI088 SPI:bmi088_a SPI:bmi088_g ROTATION_NONE +IMU Invensense SPI:icm20608 ROTATION_ROLL_180_YAW_90 +IMU Invensensev2 SPI:icm20948 ROTATION_ROLL_180_YAW_90 + +define HAL_DEFAULT_INS_FAST_SAMPLE 7 + +# 1 baro +BARO DPS280 SPI:dps280 + +# 1 compass +COMPASS AK09916:probe_ICM20948 0 ROTATION_ROLL_180 +define HAL_PROBE_EXTERNAL_I2C_COMPASSES diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoNexus/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoNexus/hwdef.dat index d3a62b459052a..f92b6f217fc68 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/mRoNexus/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoNexus/hwdef.dat @@ -23,7 +23,7 @@ env OPTIMIZE -O2 FLASH_RESERVE_START_KB 128 # use FRAM for storage -define HAL_STORAGE_SIZE 16384 +define HAL_STORAGE_SIZE 32768 define HAL_WITH_RAMTRON 1 # USB setup diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro/defaults.parm b/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro/defaults.parm new file mode 100644 index 0000000000000..3f376279397b4 --- /dev/null +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro/defaults.parm @@ -0,0 +1,7 @@ +#Default Parameters for the mRo Pixracer Pro + +CAN_P1_DRIVER 1 +CAN_P2_DRIVER 2 +CAN_SLCAN_CPORT 1 +SERIAL6_PROTOCOL 22 + diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro/hwdef-bl.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro/hwdef-bl.dat index 587cbf2e1384b..bb91ff51c95a5 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro/hwdef-bl.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro/hwdef-bl.dat @@ -1,13 +1,18 @@ ########################################################################################################################################################### # mRo Pixracer Pro Flight Controller -# STM32H753IIK6 -# 8 PWM / IO - DMA capable and switchable 3.3v (default) / 5v Logic -# Exposed JST GH Connectors: GPS UART+I2C connector, 5 Available UARTS (2 with Flow Control), 2 FDCAN, SPI, Power with analog current and voltage sense +# STM32H743IIK6 +# 8 PWM / IO - DMA capable and hardware and/or software switchable 3.3v / 5v Logic (hardware default) +# Logic level set in hardware: No Solder for 5v, Solder 1-2 for 3.3v, Solder 2-3 for 3.3v / 5v software switchable +# Exposed JST GH Connectors: GPS UART+I2C connector, 6 Available UARTS (2 with Flow Control), 2 FDCAN, SPI, I2C, Power with analog current and voltage sense # 3 IMUs (ICM20602 6DOF, ICM20948 9DOF, BMI088 6DOF) -# Baro, FRAM (256kb), SDCARD Socket, TC2030 JTAG +# Baro, FRAM (256kb), SDCARD Socket, TC2030 JTAG, USB-C # Onboard 3 color LED and buzzer -# 36mm x 36mm, 31.5mm x 31.5mm 4mm grommeted mounting holes for 3mm fasteners -# M10064B - Initial Release +# Uncased weight and dimensions: +# Weight (with headers): 11.3g (.40oz) +# Length: 36mm (1.42in) +# Width: 36mm (1.42in) +# Mounting holes: 31.5mm x 31.5mm 4mm grommeted mounting holes for 3mm fasteners +# M10064C - Initial Release ########################################################################################################################################################### # MCU class and specific type @@ -40,11 +45,7 @@ PB3 LED_ACTIVITY2 OUTPUT define HAL_LED_ON 0 # order of UARTs (and USB) -SERIAL_ORDER OTG1 UART7 - -# UART7 maps to uartF in the HAL (serial5 in SERIALn_ parameters). -PE7 UART7_RX UART7 -PE8 UART7_TX UART7 +SERIAL_ORDER OTG1 PA11 OTG_FS_DM OTG1 PA12 OTG_FS_DP OTG1 diff --git a/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro/hwdef.dat index 96956346c1b3f..82fae0387a16b 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/mRoPixracerPro/hwdef.dat @@ -1,15 +1,23 @@ ########################################################################################################################################################### # mRo Pixracer Pro Flight Controller -# STM32H753IIK6 -# 8 PWM / IO - DMA capable and switchable 3.3v (default) / 5v Logic -# Exposed JST GH Connectors: GPS UART+I2C connector, 5 Available UARTS (2 with Flow Control), 2 FDCAN, SPI, Power with analog current and voltage sense +# STM32H743IIK6 +# 8 PWM / IO - DMA capable and hardware and/or software switchable 3.3v / 5v Logic (hardware default) +# Logic level set in hardware: No Solder for 5v, Solder 1-2 for 3.3v, Solder 2-3 for 3.3v / 5v software switchable +# Exposed JST GH Connectors: GPS UART+I2C connector, 6 Available UARTS (2 with Flow Control), 2 FDCAN, SPI, I2C, Power with analog current and voltage sense # 3 IMUs (ICM20602 6DOF, ICM20948 9DOF, BMI088 6DOF) -# Baro, FRAM (256kb), SDCARD Socket, TC2030 JTAG +# Baro, FRAM (256kb), SDCARD Socket, TC2030 JTAG, USB-C # Onboard 3 color LED and buzzer -# 36mm x 36mm, 31.5mm x 31.5mm 4mm grommeted mounting holes for 3mm fasteners -# M10064B - Initial Release +# Uncased weight and dimensions: +# Weight (with headers): 11.3g (.40oz) +# Length: 36mm (1.42in) +# Width: 36mm (1.42in) +# Mounting holes: 31.5mm x 31.5mm 4mm grommeted mounting holes for 3mm fasteners +# M10064C - Initial Release ########################################################################################################################################################### +# default to all pins low to avoid ESD issues +DEFAULTGPIO OUTPUT LOW PULLDOWN + # MCU class and specific type MCU STM32H7xx STM32H743xx @@ -28,14 +36,14 @@ env OPTIMIZE -O2 FLASH_RESERVE_START_KB 128 # use FRAM for storage -define HAL_STORAGE_SIZE 16384 +define HAL_STORAGE_SIZE 32768 define HAL_WITH_RAMTRON 1 # USB setup USB_STRING_MANUFACTURER "mRo" -# RC Input set for Interrupt not DMA -PC7 TIM3_CH2 TIM3 RCININT FLOAT LOW # also USART6_RX for serial RC +# RC Input set for Interrupt also USART6_RX for serial RC +PC7 TIM3_CH2 TIM3 RCININT FLOAT LOW # Control of Spektrum power pin PE4 SPEKTRUM_PWR OUTPUT LOW GPIO(70) @@ -55,14 +63,15 @@ I2C_ORDER I2C1 define HAL_I2C_INTERNAL_MASK 0 # order of UARTs (and USB) and suggested usage -# UART4 GPS # USART2 Telem 1 (Flow Control) # USART3 Telem 2 (Flow Control) +# UART4 GPS # UART8 FRSKY Telem -# USART6 RC input (Only RX pin is connected) # USART1 Additional UART # UART7 Additional UART +# USART6 RC input (Only RX pin is connected) + SERIAL_ORDER OTG1 USART2 USART3 UART4 UART8 USART1 UART7 OTG2 # default the 2nd interface to MAVLink2 @@ -209,8 +218,10 @@ PE3 VDD_3V3_SENSORS_EN OUTPUT HIGH # 1.8V Sensor Level Shifter Output Enable. We pull it high by default. PI3 VDD_1V8_SENSORS_EN OUTPUT HIGH -# Set Output Logic Level, Default is 3.3v -PG6 nSERVO_OUTPUT_3v3 OUTPUT LOW GPIO(74) +# Pin for PWM Voltage Selection, 0 means 3.3v, 1 means 5v +PG6 PWM_VOLT_SEL OUTPUT LOW GPIO(74) +define HAL_GPIO_PWM_VOLT_PIN 74 +define HAL_GPIO_PWM_VOLT_3v3 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 @@ -219,7 +230,7 @@ PB5 VDD_BRICK_VALID INPUT PULLUP SPIDEV icm20948 SPI1 DEVID1 ICM_20948_CS MODE3 2*MHZ 4*MHZ SPIDEV icm20608 SPI1 DEVID2 ICM_20602_CS MODE3 2*MHZ 8*MHZ -SPIDEV dps310 SPI2 DEVID3 BARO_CS MODE3 5*MHZ 5*MHZ +SPIDEV dps280 SPI2 DEVID3 BARO_CS MODE3 5*MHZ 5*MHZ SPIDEV ramtron SPI2 DEVID10 FRAM_CS MODE3 8*MHZ 8*MHZ SPIDEV bmi088_g SPI5 DEVID1 BMI088_GYRO_CS MODE3 10*MHZ 10*MHZ SPIDEV bmi088_a SPI5 DEVID2 BMI088_ACCEL_CS MODE3 10*MHZ 10*MHZ @@ -256,18 +267,15 @@ define HAL_GPIO_A_LED_PIN 0 define HAL_GPIO_B_LED_PIN 1 define HAL_GPIO_C_LED_PIN 2 -# DMA_PRIORITY SDMMC* -# DMA_NOSHARE SPI1* SPI2* SPI3* - # 3 IMUs IMU BMI088 SPI:bmi088_a SPI:bmi088_g ROTATION_NONE IMU Invensense SPI:icm20608 ROTATION_ROLL_180_YAW_90 IMU Invensensev2 SPI:icm20948 ROTATION_ROLL_180_YAW_90 -define HAL_DEFAULT_INS_FAST_SAMPLE 5 +define HAL_DEFAULT_INS_FAST_SAMPLE 7 # 1 baro -BARO DPS280 SPI:dps310 +BARO DPS280 SPI:dps280 # 1 compass COMPASS AK09916:probe_ICM20948 0 ROTATION_ROLL_180 diff --git a/libraries/AP_InternalError/AP_InternalError.cpp b/libraries/AP_InternalError/AP_InternalError.cpp index 56542ea8a938a..362af35b46fe6 100644 --- a/libraries/AP_InternalError/AP_InternalError.cpp +++ b/libraries/AP_InternalError/AP_InternalError.cpp @@ -12,6 +12,7 @@ void AP_InternalError::error(const AP_InternalError::error_t e, uint16_t line) { switch (e) { case AP_InternalError::error_t::watchdog_reset: case AP_InternalError::error_t::main_loop_stuck: + case AP_InternalError::error_t::params_restored: // don't panic on these to facilitate watchdog testing break; default: @@ -56,6 +57,9 @@ void AP_InternalError::errors_as_string(uint8_t *buffer, const uint16_t len) con "stack_ovrflw", // stack_overflow "imu_reset", // imu_reset "gpio_isr", + "mem_guard", + "dma_fail", + "params_restored", }; static_assert((1U<<(ARRAY_SIZE(error_bit_descriptions))) == uint32_t(AP_InternalError::error_t::__LAST__), "too few descriptions for bits"); diff --git a/libraries/AP_InternalError/AP_InternalError.h b/libraries/AP_InternalError/AP_InternalError.h index a20c0e07369ac..34981df0725ba 100644 --- a/libraries/AP_InternalError/AP_InternalError.h +++ b/libraries/AP_InternalError/AP_InternalError.h @@ -63,7 +63,10 @@ class AP_InternalError { stack_overflow = (1U << 23), //0x800000 8388608 imu_reset = (1U << 24), //0x1000000 16777216 gpio_isr = (1U << 25), //0x2000000 33554432 - __LAST__ = (1U << 26), // used only for sanity check + mem_guard = (1U << 26), //0x4000000 67108864 + dma_fail = (1U << 27), //0x8000000 134217728 + params_restored = (1U << 28), //0x10000000 268435456 + __LAST__ = (1U << 29), // used only for sanity check }; // if you've changed __LAST__ to be 32, then you will want to diff --git a/libraries/AP_NavEKF2/AP_NavEKF2_Buffer.h b/libraries/AP_NavEKF2/AP_NavEKF2_Buffer.h index 6fba6bdf5e342..ae35dca04c8a0 100644 --- a/libraries/AP_NavEKF2/AP_NavEKF2_Buffer.h +++ b/libraries/AP_NavEKF2/AP_NavEKF2_Buffer.h @@ -85,6 +85,9 @@ class obs_ring_buffer_t */ inline void push(element_type element) { + if (buffer == nullptr) { + return; + } // Advance head to next available index _head = (_head+1)%_size; // New data is written at the head diff --git a/libraries/AP_NavEKF2/AP_NavEKF2_Measurements.cpp b/libraries/AP_NavEKF2/AP_NavEKF2_Measurements.cpp index 6e4ee699a2b1b..e9b28f0a5a185 100644 --- a/libraries/AP_NavEKF2/AP_NavEKF2_Measurements.cpp +++ b/libraries/AP_NavEKF2/AP_NavEKF2_Measurements.cpp @@ -732,8 +732,8 @@ void NavEKF2_core::readAirSpdData() // know a new measurement is available const AP_Airspeed *aspeed = _ahrs->get_airspeed(); if (aspeed && - aspeed->use() && - aspeed->last_update_ms() != timeTasReceived_ms) { + aspeed->use() && aspeed->healthy() && + aspeed->last_update_ms() != timeTasReceived_ms) { tasDataNew.tas = aspeed->get_airspeed() * AP::ahrs().get_EAS2TAS(); timeTasReceived_ms = aspeed->last_update_ms(); tasDataNew.time_ms = timeTasReceived_ms - frontend->tasDelay_ms; diff --git a/libraries/AP_NavEKF3/AP_NavEKF3_Buffer.h b/libraries/AP_NavEKF3/AP_NavEKF3_Buffer.h index 327e361935a44..6672fe4a88b79 100644 --- a/libraries/AP_NavEKF3/AP_NavEKF3_Buffer.h +++ b/libraries/AP_NavEKF3/AP_NavEKF3_Buffer.h @@ -85,6 +85,9 @@ class obs_ring_buffer_t */ inline void push(element_type element) { + if (buffer == nullptr) { + return; + } // Advance head to next available index _head = (_head+1)%_size; // New data is written at the head diff --git a/libraries/AP_NavEKF3/AP_NavEKF3_Measurements.cpp b/libraries/AP_NavEKF3/AP_NavEKF3_Measurements.cpp index b4b38272f694c..172d9bbffc286 100644 --- a/libraries/AP_NavEKF3/AP_NavEKF3_Measurements.cpp +++ b/libraries/AP_NavEKF3/AP_NavEKF3_Measurements.cpp @@ -773,8 +773,8 @@ void NavEKF3_core::readAirSpdData() // know a new measurement is available const AP_Airspeed *aspeed = _ahrs->get_airspeed(); if (aspeed && - aspeed->use() && - (aspeed->last_update_ms() - timeTasReceived_ms) > frontend->sensorIntervalMin_ms) { + aspeed->use() && aspeed->healthy() && + (aspeed->last_update_ms() - timeTasReceived_ms) > frontend->sensorIntervalMin_ms) { tasDataNew.tas = aspeed->get_raw_airspeed() * AP::ahrs().get_EAS2TAS(); timeTasReceived_ms = aspeed->last_update_ms(); tasDataNew.time_ms = timeTasReceived_ms - frontend->tasDelay_ms; diff --git a/libraries/AP_Param/AP_Param.cpp b/libraries/AP_Param/AP_Param.cpp index b8dfa370f2055..842e35f8ccbeb 100644 --- a/libraries/AP_Param/AP_Param.cpp +++ b/libraries/AP_Param/AP_Param.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include extern const AP_HAL::HAL &hal; @@ -101,6 +102,9 @@ const AP_Param::param_defaults_struct AP_Param::param_defaults_data = { // storage object StorageAccess AP_Param::_storage(StorageManager::StorageParam); +// backup storage object +StorageAccess AP_Param::_storage_bak(StorageManager::StorageParamBak); + // flags indicating frame type uint16_t AP_Param::_frame_type_flags; @@ -108,6 +112,7 @@ uint16_t AP_Param::_frame_type_flags; void AP_Param::eeprom_write_check(const void *ptr, uint16_t ofs, uint8_t size) { _storage.write_block(ofs, ptr, size); + _storage_bak.write_block(ofs, ptr, size); } bool AP_Param::_hide_disabled_groups = true; @@ -314,19 +319,32 @@ bool AP_Param::check_var_info(void) // setup the _var_info[] table bool AP_Param::setup(void) { - struct EEPROM_header hdr; + struct EEPROM_header hdr {}; + struct EEPROM_header hdr2 {}; // check the header _storage.read_block(&hdr, 0, sizeof(hdr)); + _storage_bak.read_block(&hdr2, 0, sizeof(hdr2)); if (hdr.magic[0] != k_EEPROM_magic0 || hdr.magic[1] != k_EEPROM_magic1 || hdr.revision != k_EEPROM_revision) { + if (hdr2.magic[0] == k_EEPROM_magic0 && + hdr2.magic[1] == k_EEPROM_magic1 && + hdr2.revision == k_EEPROM_revision && + _storage.copy_area(_storage_bak)) { + // restored from backup + INTERNAL_ERROR(AP_InternalError::error_t::params_restored); + return true; + } // header doesn't match. We can't recover any variables. Wipe // the header and setup the sentinal directly after the header Debug("bad header in setup - erasing"); erase_all(); } + // ensure that backup is in sync with primary + _storage_bak.copy_area(_storage); + return true; } diff --git a/libraries/AP_Param/AP_Param.h b/libraries/AP_Param/AP_Param.h index e795da62ea03a..ff7d0a5cf8b2f 100644 --- a/libraries/AP_Param/AP_Param.h +++ b/libraries/AP_Param/AP_Param.h @@ -641,6 +641,7 @@ class AP_Param void send_parameter(const char *name, enum ap_var_type param_header_type, uint8_t idx) const; static StorageAccess _storage; + static StorageAccess _storage_bak; static uint16_t _num_vars; static uint16_t _parameter_count; static const struct Info * _var_info; diff --git a/libraries/GCS_MAVLink/GCS_Common.cpp b/libraries/GCS_MAVLink/GCS_Common.cpp index eed08e4bf85a3..902baa15b49e5 100644 --- a/libraries/GCS_MAVLink/GCS_Common.cpp +++ b/libraries/GCS_MAVLink/GCS_Common.cpp @@ -2512,14 +2512,43 @@ MAV_RESULT GCS_MAVLINK::handle_preflight_reboot(const mavlink_command_long_t &pa { if (is_equal(packet.param1, 42.0f) && is_equal(packet.param2, 24.0f) && - is_equal(packet.param3, 71.0f) && - is_equal(packet.param4, 93.0f)) { - // this is a magic sequence to force the main loop to - // lockup. This is for testing the stm32 watchdog - // functionality - while (true) { - send_text(MAV_SEVERITY_WARNING,"entering lockup"); - hal.scheduler->delay(250); + is_equal(packet.param3, 71.0f)) { + if (is_equal(packet.param4, 93.0f)) { + // this is a magic sequence to force the main loop to + // lockup. This is for testing the stm32 watchdog + // functionality + while (true) { + send_text(MAV_SEVERITY_WARNING,"entering lockup"); + hal.scheduler->delay(250); + } + } + if (is_equal(packet.param4, 94.0f)) { + // the following text is unlikely to make it out... + send_text(MAV_SEVERITY_WARNING,"deferencing a bad thing"); + + void *foo = (void*)0xE000ED38; + + typedef void (*fptr)(); + fptr gptr = (fptr) (void *) foo; + gptr(); + + return MAV_RESULT_FAILED; + } + if (is_equal(packet.param4, 95.0f)) { + // the following text is unlikely to make it out... + send_text(MAV_SEVERITY_WARNING,"calling AP_HAL::panic(...)"); + + AP_HAL::panic("panicing"); + + // keep calm and carry on + } + if (is_equal(packet.param4, 96.0f)) { + // deliberately corrupt parameter storage + send_text(MAV_SEVERITY_WARNING,"wiping parameter storage header"); + StorageAccess param_storage{StorageManager::StorageParam}; + uint8_t zeros[40] {}; + param_storage.write_block(0, zeros, sizeof(zeros)); + return MAV_RESULT_FAILED; } } diff --git a/libraries/StorageManager/StorageManager.cpp b/libraries/StorageManager/StorageManager.cpp index d3a5b1d3d8769..79065cb99c9eb 100644 --- a/libraries/StorageManager/StorageManager.cpp +++ b/libraries/StorageManager/StorageManager.cpp @@ -1,5 +1,5 @@ /* - Please contribute your ideas! See http://dev.ardupilot.org for details + Please contribute your ideas! See https://dev.ardupilot.org for details This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,7 +20,11 @@ */ #include +#include +#include + #include "StorageManager.h" + #include @@ -35,17 +39,18 @@ extern const AP_HAL::HAL& hal; /* layout for peripherals */ -const StorageManager::StorageArea StorageManager::layout_default[STORAGE_NUM_AREAS] = { +const StorageManager::StorageArea StorageManager::layout[STORAGE_NUM_AREAS] = { { StorageParam, 0, HAL_STORAGE_SIZE} }; -#else +#elif !APM_BUILD_TYPE(APM_BUILD_ArduCopter) + /* layout for fixed wing and rovers On PX4v1 this gives 309 waypoints, 30 rally points and 52 fence points On Pixhawk this gives 724 waypoints, 50 rally points and 84 fence points */ -const StorageManager::StorageArea StorageManager::layout_default[STORAGE_NUM_AREAS] = { +const StorageManager::StorageArea StorageManager::layout[STORAGE_NUM_AREAS] = { { StorageParam, 0, 1280}, // 0x500 parameter bytes { StorageMission, 1280, 2506}, { StorageRally, 3786, 150}, // 10 rally points @@ -61,22 +66,34 @@ const StorageManager::StorageArea StorageManager::layout_default[STORAGE_NUM_ARE #if STORAGE_NUM_AREAS == 11 // optimised for lots of parameters for 15k boards with OSD { StorageParam, 8192, 7168}, +#elif STORAGE_NUM_AREAS == 12 + // optimised for lots of parameters for 15k boards with OSD, plus room for CAN DNA + { StorageParam, 8192, 6144}, + { StorageCANDNA, 14336, 1024}, #endif -#if STORAGE_NUM_AREAS >= 12 +#if STORAGE_NUM_AREAS >= 13 { StorageParam, 8192, 1280}, { StorageRally, 9472, 300}, { StorageFence, 9772, 256}, { StorageMission, 10028, 5204}, // leave 128 byte gap for expansion { StorageCANDNA, 15232, 1024}, + // 128 byte gap at end of first 16k +#endif +#if STORAGE_NUM_AREAS >= 19 + { StorageParam, 16384, 1280}, + { StorageMission, 17664, 9842}, + { StorageParamBak, 27506, 5376}, #endif }; +#else + /* layout for copter. On PX4v1 this gives 303 waypoints, 26 rally points and 38 fence points On Pixhawk this gives 718 waypoints, 46 rally points and 70 fence points */ -const StorageManager::StorageArea StorageManager::layout_copter[STORAGE_NUM_AREAS] = { +const StorageManager::StorageArea StorageManager::layout[STORAGE_NUM_AREAS] = { { StorageParam, 0, 1536}, // 0x600 param bytes { StorageMission, 1536, 2422}, { StorageRally, 3958, 90}, // 6 rally points @@ -92,20 +109,27 @@ const StorageManager::StorageArea StorageManager::layout_copter[STORAGE_NUM_AREA #if STORAGE_NUM_AREAS == 11 // optimised for lots of parameters for 15k boards with OSD { StorageParam, 8192, 7168}, +#elif STORAGE_NUM_AREAS == 12 + // optimised for lots of parameters for 15k boards with OSD, plus room for CAN DNA + { StorageParam, 8192, 6144}, + { StorageCANDNA, 14336, 1024}, #endif -#if STORAGE_NUM_AREAS >= 12 +#if STORAGE_NUM_AREAS >= 13 { StorageParam, 8192, 1280}, { StorageRally, 9472, 300}, { StorageFence, 9772, 256}, { StorageMission, 10028, 5204}, // leave 128 byte gap for expansion { StorageCANDNA, 15232, 1024}, + // 128 byte gap at end of first 16k +#endif +#if STORAGE_NUM_AREAS >= 19 + { StorageParam, 16384, 1280}, + { StorageMission, 17664, 9842}, + { StorageParamBak, 27506, 5376}, #endif }; #endif // STORAGE_NUM_AREAS == 1 -// setup default layout -const StorageManager::StorageArea *StorageManager::layout = layout_default; - /* erase all storage */ @@ -264,3 +288,25 @@ void StorageAccess::write_uint32(uint16_t loc, uint32_t value) const { write_block(loc, &value, sizeof(value)); } + +/* + copy one area to another + */ +bool StorageAccess::copy_area(const StorageAccess &source) +{ + // we deliberately allow for copies from smaller areas. This + // allows for a partial backup region for parameters + uint16_t total = MIN(source.size(), size()); + uint16_t ofs = 0; + while (total > 0) { + uint8_t block[32]; + uint16_t n = MIN(sizeof(block), total); + if (!source.read_block(block, ofs, n) || + !write_block(ofs, block, n)) { + return false; + } + total -= n; + ofs += n; + } + return true; +} diff --git a/libraries/StorageManager/StorageManager.h b/libraries/StorageManager/StorageManager.h index 11876bbc91be8..f427f324b7b2c 100644 --- a/libraries/StorageManager/StorageManager.h +++ b/libraries/StorageManager/StorageManager.h @@ -1,5 +1,5 @@ /* - Please contribute your ideas! See http://dev.ardupilot.org for details + Please contribute your ideas! See https://dev.ardupilot.org for details This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,8 +26,12 @@ use just one area per storage type for boards with 4k of storage. Use larger areas for other boards */ -#if HAL_STORAGE_SIZE >= 16384 +#if HAL_STORAGE_SIZE >= 32768 +#define STORAGE_NUM_AREAS 19 +#elif HAL_STORAGE_SIZE >= 16384 #define STORAGE_NUM_AREAS 15 +#elif HAL_STORAGE_SIZE >= 15360 && defined(HAL_NUM_CAN_IFACES) +#define STORAGE_NUM_AREAS 12 #elif HAL_STORAGE_SIZE >= 15360 #define STORAGE_NUM_AREAS 11 #elif HAL_STORAGE_SIZE >= 8192 @@ -53,15 +57,13 @@ class StorageManager { StorageMission = 3, StorageKeys = 4, StorageBindInfo= 5, - StorageCANDNA = 6 + StorageCANDNA = 6, + StorageParamBak = 7 }; // erase whole of storage static void erase(void); - // setup for copter layout of storage - static void set_layout_copter(void) { layout = layout_copter; } - private: struct StorageArea { StorageType type; @@ -70,9 +72,7 @@ class StorageManager { }; // available layouts - static const StorageArea layout_copter[STORAGE_NUM_AREAS]; - static const StorageArea layout_default[STORAGE_NUM_AREAS]; - static const StorageArea *layout; + static const StorageArea layout[STORAGE_NUM_AREAS]; }; /* @@ -101,6 +101,9 @@ class StorageAccess { void write_uint16(uint16_t loc, uint16_t value) const; void write_uint32(uint16_t loc, uint32_t value) const; + // copy from one storage area to another + bool copy_area(const StorageAccess &source); + private: const StorageManager::StorageType type; uint16_t total_size;