diff --git a/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/cache.properties.lock b/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/cache.properties.lock
index fbbec6ec..3c1e5511 100644
Binary files a/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/cache.properties.lock and b/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/cache.properties.lock differ
diff --git a/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/fileHashes.bin b/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/fileHashes.bin
index 4823bf45..06d1e720 100644
Binary files a/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/fileHashes.bin and b/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/fileHashes.bin differ
diff --git a/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin b/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin
index b07b19ac..43d65d80 100644
Binary files a/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin and b/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin differ
diff --git a/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin b/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin
index af4b4724..393b24fc 100644
Binary files a/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin and b/Desktop_Interface/android-build/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin differ
diff --git a/Desktop_Interface/android-build/assets/--Added-by-androiddeployqt--/qt_cache_pregenerated_file_list b/Desktop_Interface/android-build/assets/--Added-by-androiddeployqt--/qt_cache_pregenerated_file_list
index 5e79be1f..f4f6c443 100644
Binary files a/Desktop_Interface/android-build/assets/--Added-by-androiddeployqt--/qt_cache_pregenerated_file_list and b/Desktop_Interface/android-build/assets/--Added-by-androiddeployqt--/qt_cache_pregenerated_file_list differ
diff --git a/Desktop_Interface/android-build/assets/firmware/labrafirm_0002_01.hex b/Desktop_Interface/android-build/assets/firmware/labrafirm_0002_01.hex
new file mode 100644
index 00000000..8f7511d2
--- /dev/null
+++ b/Desktop_Interface/android-build/assets/firmware/labrafirm_0002_01.hex
@@ -0,0 +1,714 @@
+:1000000017C1000031C100002FC100002DC1000048
+:100010002BC1000029C100000C9410090C941F0989
+:1000200023C1000021C100001FC100001DC100004C
+:100030001BC1000019C1000017C1000015C100005C
+:1000400013C1000011C100000FC100000DC100006C
+:100050000BC1000009C1000007C1000005C100007C
+:100060000C94FB090C94060AFFC00000FDC00000C0
+:10007000FBC00000F9C00000F7C00000F5C00000A0
+:10008000F3C00000F1C00000EFC00000EDC00000B0
+:10009000EBC00000E9C00000E7C00000E5C00000C0
+:1000A000E3C00000E1C00000DFC00000DDC00000D0
+:1000B000DBC00000D9C00000D7C00000D5C00000E0
+:1000C000D3C00000D1C00000CFC00000CDC00000F0
+:1000D000CBC00000C9C00000C7C00000C5C0000000
+:1000E000C3C00000C1C00000BFC00000BDC0000010
+:1000F000BBC00000B9C00000B7C00000B5C0000020
+:10010000B3C00000B1C00000AFC00000ADC000002F
+:10011000ABC00000A9C00000A7C000009FC4000041
+:10012000A3C00000A1C000009FC000009DC000004F
+:100130009BC0000099C0000097C0000095C000005F
+:1001400093C0000091C000008FC000000C947009A3
+:100150008BC0000089C0000087C0000085C000007F
+:1001600083C0000081C000007FC000007DC000008F
+:100170007BC0000079C0000077C0000075C000009F
+:1001800073C0000071C000006FC000006DC00000AF
+:100190006BC0000069C0000067C0000065C00000BF
+:1001A00063C0000061C000005FC000005DC00000CF
+:1001B0005BC0000059C0000057C0000055C00000DF
+:1001C00053C0000051C000004FC000004DC00000EF
+:1001D0004BC0000049C0000047C0000045C00000FF
+:1001E00043C0000041C000003FC000003DC000000F
+:1001F0003BC000000C941C140C94D4140F04110484
+:1002000013041504170419041B041D04D70BFD0B5C
+:10021000240C4D0C560C5B0CA00CA50CC40CCB0C88
+:10022000670C6F0C770C820C840C860C8E0C960C71
+:1002300011241FBECFEFCDBFDFE2DEBF10E2A0E092
+:10024000B0E2EAECFBE202C005900D92AA3BB107D6
+:10025000D9F72DE2AAEBB0E201C01D92AC3FB20784
+:10026000E1F794D20C94E315CBCE84E08093560052
+:100270008CE1BCD3809363008BEB8093660080E8B5
+:100280008093650081E08093600088ED84BF1092C8
+:10029000410083E080935000809151008330E1F76A
+:1002A0008091500081608093500088E180935500D8
+:1002B0008091510080FFFCCF80915000806180933D
+:1002C00050008091510084FFFCCF88ED84BF84E012
+:1002D000809340000895E0E7F0E085818E7F85837C
+:1002E000E0E0FAE08FEB9DE586A397A380EE9EE227
+:1002F00080A391A382E0808308958091200A909149
+:10030000210A813E2EE2920718F020919E2306C01A
+:10031000803E2EE2920721F020919B2320936A00D9
+:1003200020910520222321F080910520815033C0A7
+:10033000885F9A42813D974080F11092BA20809167
+:10034000BB209091BC20A091BD20B091BE20019611
+:10035000A11DB11D8093BB209093BC20A093BD2014
+:10036000B093BE208091BB209091BC20A091BD2075
+:10037000B091BE20892F9A2FAB2FBB278093BE232D
+:100380008091BB209091BC20A091BD20B091BE2057
+:100390008093BD2386E08093052080910720909173
+:1003A00008200196B1F4809109208F3F91F080914F
+:1003B0000620811106C0809106208150809306207E
+:1003C00008958091140190911501809307209093D6
+:1003D00008200895009709F45EC00CF457C040E06F
+:1003E00020916B0030E020939C2330939D2320913B
+:1003F0009C2330919D233695322F222737952795C0
+:1004000020939C2330939D2350916A0020919C233C
+:1004100030919D23250F311D20939C2330939D23E4
+:10042000000020919C2330919D232817390728F440
+:1004300010929C2310929D23089520919C2330912B
+:100440009D23280F391F2115304238F08FEF9FE18F
+:1004500080939C2390939D23089520919C23309119
+:100460009D23442329F0A901481B590BCA0102C04E
+:10047000820F931F80939C2390939D2380919C23B4
+:1004800090919D238F7780936A000895919581952F
+:10049000910941E0A5CF0895CF93DF93C091200A41
+:1004A000D091210A80910320909104209E01281B65
+:1004B000390B20939F233093A0238091BA20811180
+:1004C0004BC080919F239091A0238E3C9F4FD4F4EA
+:1004D00080919F239091A0238B369F4F9CF0809119
+:1004E0000220882321F080910220815008C0809151
+:1004F0006A0080939E2381E08093BA208CE08093F1
+:1005000002202AC08CE08093022080919F2390914A
+:10051000A0238A369F4F1CF08FEF9FEF02C081E02F
+:1005200090E08093992390939A2380919F239091B8
+:10053000A0232091992330919A2360E370E00E94D8
+:10054000BA15261B370B2093992330939A23809159
+:10055000992390919A233EDF8091BA20813029F52A
+:1005600080919F239091A023C39794F080910220C3
+:10057000882331F08091022081508093022015C0A1
+:1005800080916A0080939B2383E08093BA200DC002
+:1005900080919F239091A023873991051CF481E0DD
+:1005A00090E002C08FEF9FEF15DFC0930320D09340
+:1005B0000420DF91CF9108958617970779F0681787
+:1005C000790728F49C01261B370BB90109C086174F
+:1005D000970718F4681B790B03C0089560E070E07A
+:1005E000CB010895CF93DF9380910020909101205B
+:1005F000892B51F0809100209091012001978093E8
+:1006000000209093012043C080E490E0809300207C
+:100610009093012080910720909108200196B9F1D4
+:10062000809114019091150120910920263018F431
+:1006300067E771E002C06EEE72E00E94A615EC0161
+:1006400080910720909108208C179D0758F46091A5
+:10065000072070910820CE01AFDF029718F080ECE0
+:100660009DE511C08091072090910820C817D907F7
+:1006700070F46091072070910820CE019DDF0297F1
+:1006800030F08FEB9DE58093360A9093370ADF9127
+:10069000CF910895AC01460F571F861B970B2091F1
+:1006A000200A3091210A24173507C8F72091200A23
+:1006B0003091210A8217930790F70895E0E8F6E059
+:1006C0008FE0808385E0848308951F93CF93DF9329
+:1006D000C0E4D0E0198180E4898340E250E064ED19
+:1006E0007DE280E290E00E94350F1983DF91CF9187
+:1006F0001F9108951F93CF93DF93C0E4D0E0198139
+:1007000080E4898387ED97E20E947D0F81E00E945B
+:100710008F0F1983DF91CF911F91089508950F9343
+:100720001F93842F242F30E0215831099DE7929F99
+:10073000A001939F500D112490910920953048F409
+:10074000843810F049585E4F9091C42027E731E07B
+:1007500004C09091C4202EEE32E0929FB001939F8E
+:10076000700D11249A01260F371FA9014850584DCA
+:100770000FE813E02DE730E060E00E9447131F917F
+:100780000F9108951CBEEEEFF0E409949EDF809176
+:10079000D42D882369F080E2E4EDFDE2A7EDB7E215
+:1007A00001900D928A95E1F71092D727A3DFEADF37
+:1007B00087E08093A200789458DDB0DF82D761D1C2
+:1007C00084D160E080E01BD107D18CE0FBD046D51E
+:1007D000EAD503D673DF60EA70E28AEA93E20E9408
+:1007E000DC15000000000000000000000000000018
+:1007F00000000000000000000000000000008091E8
+:10080000BF20882371F3E091D6258E2F90E08830A9
+:100810009105A0F4FC01E250FF4F0C94CD1581D15D
+:100820000DC0F1D10BC078D209C0FCD207C088D36B
+:1008300005C00ED403C00DD401C07ED41092BF20D9
+:10084000D0CF08950895809114018093B3238091AF
+:1008500015018093B423809124018093B523809166
+:1008600025018093B6238091200A8093BF23809135
+:10087000210A8093C0238091140190911501863440
+:10088000914080F08091140190911501893A914036
+:1008900048F480911401909115018093F42D909368
+:1008A000F52D00008091C220882339F014DD1092CC
+:1008B000C22081E08093C12008958091C1208823C7
+:1008C00041F08091BA20833019F417DD8BDE01C02E
+:1008D000E3DD8091C020882351F080911401909134
+:1008E00015018093F42D9093F52D1092C0208091E6
+:1008F00009202091140130911501853028F481E000
+:100900002737314030F004C081E02E3E324008F0FD
+:1009100080E08093C42008950F931F9381E080931B
+:10092000C7208093C2200FE813E02DE730E048EFA6
+:1009300057E260E081E80E9447132DE730E045E789
+:1009400058E260E082E80E9447132DE730E042EF72
+:1009500058E260E083E80E9447132DE730E04FE65D
+:1009600059E260E084E80E9447132DE730E04CEE46
+:1009700059E260E085E80E9447132DE730E049E640
+:100980005AE260E086E80E94471381E01F910F91D0
+:1009900008951092C720089581E0089581E0089598
+:1009A00010922002982F9C71936890932002881FC8
+:1009B0008827881F880F80932102109222021092AC
+:1009C00026020895E0E0F2E010AA836880AB80E19F
+:1009D00081AB12AA16AA0895E0E0F2E010A683E81F
+:1009E00080A78FE281A712A616A60895AAECB1E00F
+:1009F00092E09C93E82FF0E084911C9208959091EE
+:100A000071009D7F9093710010920002623011F08E
+:100A10009CE101C09EE19093010290E49093020258
+:100A2000811102C080E401C080EC80930302613038
+:100A300011F084E001C083E08093040280E2D6DFFD
+:100A400080930C0281E2D2DF80930D021092180293
+:100A50001092190281E080930002BECF1F920F9284
+:100A60000FB60F9211248F930000000000000000C9
+:100A700081E0809323028F910F900FBE0F901F9003
+:100A80001895CF93DF93E0E7F0E082818B7F82833C
+:100A9000C0E2D3E08DE0888380E4898389E08A83A3
+:100AA00083E3A4DF888782E3A1DF898787E39EDF72
+:100AB0008A8786E39BDF8B87E0E2F6E080818360B4
+:100AC00080831482DF91CF910895E0E7F0E0808188
+:100AD0008E7F808383E8809300010895E0E0F1E059
+:100AE000108A80E4808B10A280A310AA80ABE0E47F
+:100AF000F1E0108280831092C6201092C52081E020
+:100B00008093C4201092A8231092A9231092A623A8
+:100B10001092A72308958093D62581E08093BF206B
+:100B20000895CF93DF9310920920D8DFC0E0D1E081
+:100B30001EAA84E288AB19AA49E54AAB32E03BAB76
+:100B400060910B2070910C206CAB7DAB67ED75E272
+:100B500068AF79AF1AAE9BE39CAF93E090933D01F1
+:100B600010923E0128A9206828AB10924601E0E4CB
+:100B7000F1E0808310924101409342019093430140
+:100B800040910D2050910E20409344015093450117
+:100B900046EC53E2409348015093490110924A01B8
+:100BA00029E320934C0190934D0110924E019081C6
+:100BB00090689083188A90E4988B888B198A95E9BD
+:100BC0009A8B90E19B8B4EEE52E04C8B5D8B888F25
+:100BD000398F1A8E88EF97E28C8F9D8F1E8E68EC6E
+:100BE00070E084EF91E056DD88EC90E08093072080
+:100BF0009093082081E08093062088898068888B04
+:100C0000DF91CF9108951F93CF93DF9311E010935D
+:100C1000092064DFC0E0D1E018AA80E488AB84E05A
+:100C200088AB19AA1AAA4BE44BAB1CAA1DAA1EAA90
+:100C30008AE090E288AF99AF1AAE60EA6CAF38E014
+:100C400030933D0110923E0188A9806A88ABE0EAAA
+:100C5000F8E085E58083808310924601E0E4F1E0CE
+:100C600084E280831092410199E59093420122E051
+:100C700020934301A0910B20B0910C20A09344013C
+:100C8000B0934501A7EDB5E2A0934801B0934901A7
+:100C900010924A019BE390934C0193E090934D0195
+:100CA00010924E0190819068908388A319A295E9D3
+:100CB0009AA34BA34EEE52E04CA35DA368A739A7BD
+:100CC0001AA666EE7AE26CA77DA71EA6888B198A03
+:100CD0009A8B90E19B8B4C8B5D8B888F298F1A8E22
+:100CE00088EF97E28C8F9D8F1E8E68EC70E084EF0A
+:100CF00091E0D0DC88EC90E080930720909308206E
+:100D00001093062088A1806888A388898068888BD2
+:100D1000DF91CF911F9108951F93CF93DF9312E03E
+:100D200010930920DBDEC0E0D1E01EAA84E288AB8C
+:100D300019AA39E53AAB1BAB40910B2050910C201E
+:100D40004CAB5DAB47ED55E248AF59AF1AAE9BE3F4
+:100D50009CAF93E090933D0110923E0128A920683A
+:100D600028AB10924601E0E4F1E08083109241014B
+:100D7000309342019093430120910D2030910E2039
+:100D8000209344013093450126EC33E2209348013F
+:100D90003093490110924A0129E320934C0190932A
+:100DA0004D0110924E01908190689083188A90E4D2
+:100DB000988B888B198A45E94A8B90E19B8B2EEEA4
+:100DC00032E02C8B3D8B888F198F1A8E68EF77E27B
+:100DD0006C8F7D8F1E8E88A319A24AA39BA32CA380
+:100DE0003DA384E388A719A71AA686EE9AE28CA7EA
+:100DF0009DA71EA668EC70E084EF91E04BDC88ECC8
+:100E000090E0809307209093082081E08093062053
+:100E100088898068888B88A1806888A3DF91CF91BA
+:100E20001F9108951F93CF93DF9313E01093092030
+:100E300055DEC0E0D1E010924601E0E4F1E084E24A
+:100E400080831092410129E52093420192E0909322
+:100E5000430140910B2050910C204093440150934A
+:100E6000450147ED55E240934801509349011092E6
+:100E70004A019BE390934C0110934D0110924E0157
+:100E80009081906890831EAA88AB19AA2AAB1BABED
+:100E900020910D2030910E202CAB3DAB26EC33E29F
+:100EA00028AF39AF1AAE99E39CAF10933D01109271
+:100EB0003E0198A9906898AB18A250E458A394E01A
+:100EC00098A319A21AA24BE44BA31CA21DA21EA216
+:100ED0002AE030E228A739A71AA630EA3CA728E082
+:100EE0002DA71EA698A1906A98A395E59093A008B7
+:100EF000188A588B888B198A85E98A8B4B8B8EEEE2
+:100F000092E08C8B9D8B388F298F1A8E88EF97E219
+:100F10008C8F9D8F1E8E68EC70E084EF91E0BADBC1
+:100F200088EC90E0809307209093082081E08093E4
+:100F3000062088898068888BDF91CF911F91089562
+:100F40001F93CF93DF9314E010930920C7DDC0E017
+:100F5000D1E018AA80E488AB18AB19AA1AAA3BE41E
+:100F60003BAB1CAA1DAA1EAA8AE090E288AF99AFEB
+:100F70001AAE50EA5CAF88E080933D0110923E01CA
+:100F800098A9906A98AB95E59093A00810924601B5
+:100F9000E0E4F1E094E290831092410129E520938E
+:100FA000420122E02093430160910B2070910C20BC
+:100FB000609344017093450167ED75E260934801C9
+:100FC0007093490110924A012BE320934C0123E0D6
+:100FD00020934D0110924E01208120682083988B30
+:100FE000198A45E94A8B3B8B2EEE32E02C8B3D8BE8
+:100FF000588F898F1A8E68EF77E26C8F7D8F1E8EE7
+:1010000098A319A24AA39AE49BA32CA33DA393EC13
+:1010100098A789A71AA686EE9AE28CA79DA71EA676
+:1010200068EC70E084EF91E035DB88EC90E0809331
+:1010300007209093082081E08093062088898068AB
+:10104000888B88A1806888A3DF91CF911F91089534
+:10105000FFCFCF93DF9386E0809309203FDDC0E090
+:10106000D1E01EAA84E288AB19AA39E53AAB93E035
+:101070009BAB40910D2050910E204CAB5DAB46ECEC
+:1010800053E248AF59AF1AAE29E32CAF90933D011C
+:1010900010923E0128A9206828AB10924601E0E496
+:1010A000F1E08083109241013093420132E03093AD
+:1010B000430140910B2050910C20409344015093E8
+:1010C000450147ED55E24093480150934901109284
+:1010D0004A012BE320934C0190934D0110924E0155
+:1010E000208120682083188A20E4288B888B998BA4
+:1010F00095E99A8B90E19B8B4CED55E04C8B5D8B89
+:10110000888F398F1A8E88EF97E28C8F9D8F1E8E75
+:1011100068EC70E084EF91E0BDDA80E991E08093C3
+:1011200007209093082081E08093062088898068BA
+:10113000888BDF91CF910895CF93DF9387E08093E1
+:101140000920CCDCC0E0D1E01EAA94E298AB19AA39
+:1011500039E53AAB83E08BAB40910D2050910E20E6
+:101160004CAB5DAB46EC53E248AF59AF1AAE29E346
+:101170002CAF80933D0110923E0128A9206828AB36
+:1011800010924601E0E4F1E0908310924101309327
+:10119000420132E03093430140910B2050910C20EA
+:1011A000409344015093450147ED55E24093480177
+:1011B0005093490110924A012BE320934C018093F4
+:1011C0004D0110924E01208120682083188A20E46E
+:1011D000288B25E2288B898B85E98A8B80E18B8B94
+:1011E0004CED55E04C8B5D8B988F398F1A8E88EFC4
+:1011F00097E28C8F9D8F1E8E68EC70E084EF91E0FB
+:1012000049DA80E991E0809307209093082081E0FB
+:101210008093062088898068888BDF91CF9108951C
+:101220001F920F920FB60F9211248F9381E080933B
+:1012300003018F910F900FBE0F901F9018951F9272
+:101240000F920FB60F9211248F9382E080930301C7
+:101250008F910F900FBE0F901F901895E0E7F0E070
+:1012600083818C7F838384818C7F848380818D7F45
+:101270008083E0E8F1E080EC8283128688EC818351
+:101280001186A0E0B8E034E03C9323E011962C9363
+:10129000119714961C92149785ED91E096968D9374
+:1012A0009C93979716961C921697E0E4F8E030838B
+:1012B0002183148286A397A31682E0E6F6E080815C
+:1012C00080618083E0E4F9E083E18183148282E03D
+:1012D0008683A6A3B7A310A611A681E080830895F4
+:1012E0001F920F920FB60F9211242F933F934F939B
+:1012F0005F938F939F93CF93DF931F92CDB7DEB70A
+:101300008FEF80934C0980910920873031F48091D0
+:101310002C02898390912D0202C090912C02809121
+:10132000C320891B209168093091690982308CF0B3
+:101330002A3F374070F4209168093091690989305B
+:101340001CF481E090E002C086E090E0820F931FE1
+:1013500018C020916809309169098F3FB4F4273093
+:10136000310598F02091680930916909883F1CF097
+:1013700081E090E002C086E090E0A901481B590B93
+:10138000CA0180937809909379090F90DF91CF91EA
+:101390009F918F915F914F913F912F910F900FBE31
+:1013A0000F901F901895E0E7F0E083818F7E838394
+:1013B000E0E4F6E080818A6A80838FEF848388E5A9
+:1013C000828BE0EAF8E080E3838384EC858387E026
+:1013D0008683178288E184830895E0E7F0E08381C3
+:1013E000877F8383E0ECF8E080E48083118288E5E6
+:1013F0008093550608951F920F920FB60F921124F5
+:1014000000000F900FBE0F901F9018951F920F9223
+:101410000FB60F9211248F93EF93FF93E0EAF8E059
+:1014200080818083FF91EF918F910F900FBE0F907D
+:101430001F9018959FB7F894A0E5B0E016968C9190
+:101440001697897F16968C931697E0E6F0E080E871
+:1014500085838BEB868316968C91169784601696FF
+:101460008C938081816080839FBF08959FB7F8949B
+:10147000E82FF0E0E059FF4F60958081682360839A
+:101480009FBF0895CF93863011F0C0E001C0C8E13E
+:101490008091510081FD0DC09FB7F894809150005C
+:1014A0008260809350009FBF8091510081FFFCCFEC
+:1014B000C1DF6C2F636084E490E0BCD460E480E022
+:1014C000CF91D4CF8091C82008958091C8208130D9
+:1014D00009F45FCA0895F0D0FC0183818093C8208D
+:1014E000811101C019CA81E008959091C625892F04
+:1014F000807697FF07C0803491F48091C7258111D1
+:101500000EC04CCA803459F48091C725811107C0A0
+:101510008091CC259091CD25892B09F03DCA80E0A2
+:1015200008958091C8258F770C94C9129091D0208E
+:10153000911102C080E00895E091CD20F091CE207D
+:101540000190F081E02D94818917A0F7E093CB20E2
+:10155000F093CC20228133812E0F3F1FE217F30737
+:1015600098F49181943061F49281891309C0938138
+:10157000691306C0E093CB20F093CC2081E008955E
+:101580009081E90FF11DEACFE093CB20F093CC20BE
+:10159000D1CFE091CD20F091CE200190F081E02DCF
+:1015A000228133812E0F3F1FFC014081E40FF11D8A
+:1015B000E217F30748F48181843031F0853039F047
+:1015C0008081E80FF11DF4CF80E090E00895CF0115
+:1015D00008951F93CF93DF93182FA8DF882339F145
+:1015E000C091CB20D091CC20CE01D3DFEC01892B50
+:1015F00041F04C815D816B818A81D8D78111F4CF14
+:1016000016C0E091CD20F091CE2092818381E92F08
+:10161000F82FE10FF11DE10FF11D0190F081E02D98
+:101620000190F081E02DDF91CF911F91099480E02E
+:10163000DF91CF911F910895EF92FF921F93CF9367
+:10164000DF93C82F60E072DF811102C010E02DC06F
+:10165000E091CD20F091CE2092818381E92FF82F67
+:10166000EC0FF11DEC0FF11DE080F180D701169613
+:10167000ED91FC9117970995682F8C2F57DF182F44
+:10168000882321F3C091CB20D091CC20CE0181DFE3
+:10169000EC01892B21F08A810E940314F7CFD70136
+:1016A0001296ED91FC9113970995812FDF91CF91BF
+:1016B0001F91FF90EF9008958091CB209091CC20C6
+:1016C0000895FBC6CF938091D020811108C010925D
+:1016D000D0201092D4201092D520CF910895C0E050
+:1016E000E091CD20F091CE200190F081E02D848119
+:1016F000C81768F78C2FA0DFCF5FF2CFCF93809110
+:10170000D0208823F1F0C0E0E091CD20F091CE20F0
+:10171000A081B18114968C91C81798F4928183812D
+:10172000E92FF82FEC0FF11DEC0FF11D0190F08166
+:10173000E02D0084F185E02D309709F00995CF5F09
+:10174000E3CFCF910895EF92FF920F931F93CF9322
+:10175000DF931F92CDB7DEB71092D0251092D1251E
+:101760001092D2251092D3251092D4251092D5250F
+:101770008091C62587FF07C02091CC253091CD25CB
+:10178000232B09F44EC3982F9076903409F00BC1A7
+:10179000E091C7258E2F90E0FC01E05AF109EA3074
+:1017A000F10508F0CDC2EA5FFE4F0C94CD1581E043
+:1017B0008093C02080910720909108208093B723C8
+:1017C00080910720909108209093B82380919E23C8
+:1017D0008093B92380919B238093BA2380916A00E0
+:1017E0008093BB2380916B008093BC236091CC25B8
+:1017F0007091CD258AEA93E2D4C0109200088091BE
+:10180000C8259091C9258093360890933708809118
+:10181000CA258F70809300086091CC257091CD25EA
+:1018200086EC93E2BCD620910D2030910E20809161
+:10183000CC259091CD252817390709F4F0C2809363
+:101840000D2090930E2026C0109240088091C8254C
+:101850009091C92580937608909377088091CA2546
+:101860008F70809340086091CC257091CD2587EDD5
+:1018700095E295D620910B2030910C208091CC25BB
+:101880009091CD252817390709F4C9C280930B2000
+:1018900090930C208091092051C0109268091092F9
+:1018A00069098091C8258093C320B9C28091C82559
+:1018B00080932406B4C2E091C825F091C925E83090
+:1018C000F10508F03DC2E05FFE4F0C94CD1560E0DD
+:1018D00080E095D88091CA2563D880E02FC060E071
+:1018E00080E08DD88091CA255BD881E027C061E077
+:1018F00081E085D88091CA2553D88091CB2562D8C4
+:1019000082E01CC083E01AC084E018C060E080E080
+:1019100076D88091CA2544D885E010C061E080E087
+:101920006ED88091CA253CD886E008C062E080E08D
+:1019300066D88091CA25806833D887E0ECD86FC21A
+:101940008091C825809384066AC28091C8259091B1
+:10195000C925892B91F00E94650380E2E4EDFDE248
+:10196000A7EDB7E201900D928A95E1F781E08093AF
+:10197000D7270E947A030E946503E9E7F0E091E02F
+:1019800088EDF89484BF90836091CC257091CD252B
+:101990008AEA90E206C06091CC257091CD2589EA53
+:1019A00090E2FDD53CC29111CBC187FFFCC02091D4
+:1019B000CC253091CD252115310509F4C1C18F7198
+:1019C00009F09EC08091C725863071F0883009F4F7
+:1019D0008EC08111B5C12230310509F0B1C162E07C
+:1019E00070E084ED90E2DDCF8091C8259091C9250B
+:1019F000292F332722303105A1F064F4213031053D
+:101A000009F09EC18091192090911A20DC016C91FF
+:101A100070E05BC02330310589F12F30310509F1C9
+:101A20008FC1E0911920F0911A202189821708F0C6
+:101A300087C19927880F991F880F991FE0911B2054
+:101A4000F0911C20E80FF91F80819181FC016281D7
+:101A50007381A5D5E091CE25F091CF2582E08183D9
+:101A600035C080911D2090911E20009709F468C117
+:101A7000DC0112966D917C91139727C099278130D4
+:101A8000910569F038F0029709F05AC168E08AE8D8
+:101A900090E208C064E070E08CE990E216C067E074
+:101AA00083E990E2282FAAE7B0E2FC01819190E05F
+:101AB0008D939D938E2F821B8617C0F3660F6E5FEA
+:101AC0006093782070E088E790E269D58091CC251A
+:101AD0009091CD252091D0253091D1258217930763
+:101AE00008F09DC18093D0259093D12598C12130D5
+:101AF000310509F025C161E070E080ED90E251CF41
+:101B00008130C9F58091C7258A3009F019C121308B
+:101B1000310509F015C18091D020882309F410C146
+:101B2000E090CA25F090CB250091CD201091CE20D9
+:101B3000D801ED91FC918481E81608F001C160E0C4
+:101B40008E2DF4DC882309F4FBC0FF24EE0CFF1C6F
+:101B5000F801828193818E0D9F1DDC01ED91FC9136
+:101B60000680F781E02D09958093D22061E070E036
+:101B700082ED90E216CF823009F0E2C08091C72555
+:101B80008111DEC02230310509F0DAC08091CA250A
+:101B90005ED590E08093C9209093CA2062E070E007
+:101BA00089EC90E2FECE8F7109F07DC08091C7254F
+:101BB000833009F4C5C018F48130A1F0C1C085306C
+:101BC00019F0893039F1BCC08091CC259091CD2598
+:101BD000892B09F0B5C081E99AE08093D2259093D2
+:101BE000D3251DC18091CC259091CD25892B09F05D
+:101BF000A7C08091C8259091C925019709F0A0C080
+:101C00008091D4209091D5208D7F8093D420909383
+:101C1000D52005C18091CC259091CD25892B09F047
+:101C20008FC0BAD4882309F48BC02091C825309185
+:101C3000C9253327E0911920F0911A20818990E07D
+:101C40008217930708F47CC03DDD8091C8259091F0
+:101C5000C9258093D020882309F4E1C099278150B9
+:101C6000904C880F991F880F991F20911B2030914D
+:101C70001C20820F931F8093CD209093CE2010E0E4
+:101C8000E091CD20F091CE200190F081E02D848173
+:101C9000181708F0C4C060E0812F9BDC882309F48A
+:101CA0004FC01F5FEDCF8130F1F48091C7258B309D
+:101CB00009F046C08091CC259091CD25892B09F063
+:101CC0003FC08091D020882309F43AC01091CA25E2
+:101CD0006091C825812F6983AFDC6981882381F1F8
+:101CE000812F77DC2BC0823059F58091C725813058
+:101CF00019F0833089F024C08091CC259091CD25B6
+:101D0000892BF1F48091C8259091C925892BC1F4C4
+:101D10008091CA25A3D412C08091CC259091CD2565
+:101D2000892B71F48091C8259091C925892B41F4A4
+:101D30008091CA2538D58091CA256ED581116FC092
+:101D40008091C6258F718130B9F58091D02088238C
+:101D500099F1E090CA25F090CB250091CD2010910B
+:101D6000CE20D801ED91FC918481E81628F560E041
+:101D70008E2DDCDB882301F1F701FF27EE0FFF1F1B
+:101D8000D80112968D919C911397E80FF91F00814D
+:101D90001181D8011696ED91FC9117970995682F3E
+:101DA0008E2DC4DB882341F0D8011496ED91FC916F
+:101DB00015970995811133C08091C6258F718230A6
+:101DC00081F58091D020882361F1F12CE091CD2024
+:101DD000F091CE20A081B18114968C91F81608F56F
+:101DE00092818381E92FF82FEF0DF11DEF0DF11D89
+:101DF00000811181D8011696ED91FC9117970995F4
+:101E0000682F8F2D93DB882361F0D8011496ED9114
+:101E1000FC9115970995811102C0F394D7CF81E009
+:101E200001C080E00F90DF91CF911F910F91FF9043
+:101E3000EF9008951BBEFC0128ED24BF6083089538
+:101E40008091CF0187FDFCCF08951F93CF93DF933F
+:101E5000C0ECD1E01A858A8761E08BEC91E0EADF83
+:101E60001A87DF91CF911F910895CF92DF92EF9261
+:101E7000FF920F931F93CF93DF9300D0CDB7DEB7C0
+:101E80008C017B0149835A83DBDF8CECC82EDD2477
+:101E9000D394F601908198609083B801705F498176
+:101EA0005A81C70180D6F6018081877F80830F9099
+:101EB0000F90DF91CF911F910F91FF90EF90DF90E6
+:101EC000CF900895CF93DF9300D0CDB7DEB76A836C
+:101ED0008983B6DFACECB1E09C9198609C938981DA
+:101EE000E82FF0E0F05F6A8160838C91877F8C93AC
+:101EF0000F900F90DF91CF9108950F931F93CF9381
+:101F00008C019EDFC0E0F80161918F018C2FDADF38
+:101F1000CF5FC032C1F7CF911F910F910895CF933A
+:101F2000DF931F92CDB7DEB789838ADF898120E2F4
+:101F3000829FC0011124E0ECF1E012829183808342
+:101F400085E30F90DF91CF9180CF4091CA01E62FBA
+:101F5000F72F8093CA0184914093CA010895E82F16
+:101F6000F0E0EA50F24D80818F3F09F4FFCF9FB738
+:101F7000F89480818F5F80839FBF0895E82FF0E001
+:101F8000EA50F24D8081811101C0FFCF9FB7F894D4
+:101F90008081815080839FBF0895CF93C82F809107
+:101FA0009823C11105C0882339F081E0E7DF04C020
+:101FB000811102C081E0D3DFC0939823CF910895AF
+:101FC000282F2F70082E000C990B392F331F332721
+:101FD000331F832F90E0820F911D820F911D23E00C
+:101FE000880F991F2A95E1F78C5D9C4D08950F93FA
+:101FF000E8ECF4E080818F7D808380818F7D808319
+:10200000ECE2F3E202E0059310922E2310922F23CC
+:1020100000E2069300E40693E4E2F3E200E20693B2
+:1020200000E40693E6ECF5E214861586168617861C
+:1020300012861386109207230F9108950F9385E05F
+:1020400080930723EDE2F3E204E00593E5E2F3E297
+:1020500004E005930F9108950F9383E08093072385
+:1020600010922E2310922F23ECE2F3E202E006936B
+:102070000F910895E091D225F091D325309709F082
+:1020800009940895282F2F70082E000C990B392FD2
+:10209000331F3327331F832F90E0820F911D820F50
+:1020A000911D029749E0489F9001499F300D1124EE
+:1020B000C901895A9D4D08958F929F92AF92BF9208
+:1020C000DF92EF92FF920F931F93CF93DF93D82E5F
+:1020D000D9DFEC018D2D74DF7C01DC011196EC91D0
+:1020E000E770E150E73040F4F0E0EE0FFF1FE455F9
+:1020F000FF4D0081118102C008E010E0ED81FE81FA
+:102100002B813C814881D701D7FE48C016968D911E
+:102110009C9117978E0F9F1F8D839E838217930725
+:1021200061F1281B390B2115B4E03B0738F02FEF84
+:1021300033E0C901B8010AD5281B390B41FF0AC099
+:10214000C901B80103D5AC0191E0452B09F090E03D
+:10215000892F01C080E0988180FB91F99883F70175
+:10216000168217822283338329813A818D819E8151
+:10217000820F931F848395830EC041FF71C04D7FF2
+:102180004883D70116961D921C92179712961D929E
+:102190001C921397F70102E006937BC01296AD9054
+:1021A000BC90139742FF10C089809A80C901B80182
+:1021B000CDD4B0E4DB9EB001112469567F4DAC0153
+:1021C000C4018E0F9F1FEFD48D819E818A0D9B1DB0
+:1021D0008D839E832B813C812817390710F42D8332
+:1021E0003E83F70186819781A816B906C9F58D81CE
+:1021F0009E8182179307A1F1281B390B2115F4E06A
+:102200003F0710F02FEF33E0C901B8019FD4281B1E
+:10221000390BD70112961D921C9213972017310784
+:1022200078F4888184608883B0E4DB9EC001112447
+:1022300089569F4DF7018483958306831783AACF20
+:1022400049815A818D819E81840F951FD7011496F3
+:102250008D939C93159716962D933C9317979ACF31
+:10226000888180FF16C08E7F8883EF81F885309744
+:1022700081F06D817E814D2D80E0DF91CF911F91A6
+:102280000F91FF90EF90DF90BF90AF909F908F9055
+:102290000994DF91CF911F910F91FF90EF90DF9004
+:1022A000BF90AF909F908F9008950F93CF93DF933F
+:1022B00080910723833029F4DDDEDF91CF910F91E8
+:1022C00096CE2091032330910423C091D025D09144
+:1022D000D125C21BD30B61F5809105239091062374
+:1022E000820F931F80930523909306232091CC2582
+:1022F0003091CD252817390721F08091D6208823E9
+:1023000031F084E080930723E4E2F3E236C0E09109
+:10231000D425F091D525309799F00995882381F03F
+:102320001092032310920423C091D025D091D1257F
+:10233000C034D10528F01092D620C0E4D0E003C00C
+:1023400081E08093D620C0932E23D0932F238091B9
+:102350000323909104232091CE253091CF25280F7F
+:10236000391F2093302330933123C80FD91FC093D6
+:102370000323D0930423ECE2F3E202E00693DF911F
+:10238000CF910F9108950F93CF93DF931F92CDB705
+:10239000DEB78091CC0480FF65C021E02093CC049F
+:1023A00084E293E2FC0100E80693ECE2F3E200E849
+:1023B00006932093CA04FC0100E106938091072351
+:1023C000882329F08350823008F454DE10DE809197
+:1023D000262390912723089709F046C088E0E3EC74
+:1023E000F2E2A6ECB5E201900D928A95E1F78091B8
+:1023F000C80480628093C8048091C804806280937E
+:10240000C804A1D9811102C019DE2EC09091C62541
+:1024100097FF0EC0109205231092062310920323FB
+:102420001092042392E09093072389833EDF08C033
+:102430002091CC253091CD25232B21F489830CDEEE
+:10244000898113C010920523109206231092032352
+:102450001092042391E090930723E4E2F3E202E078
+:10246000069303C080E001C081E00F90DF91CF911F
+:102470000F910895CF93CFB7F89481E08EDDEAEC09
+:10248000F4E080E4808380E28083E1ECF4E080810A
+:1024900081608083A9ECB4E08C9182608C93E8EC3D
+:1024A000F4E08081806480838C9181608C93808152
+:1024B00080688083CFBFCF910895CF931092600042
+:1024C00080E30E94420A8091C00480648093C0042B
+:1024D00081E080936000CFB7F89480E090E0FC0149
+:1024E00023E0EE0FFF1F2A95E1F7E85FFC4D158E04
+:1024F00001968E30910599F780E090E039E0389FA1
+:10250000F001399FF00D1124E95AFD4D20812E7FF5
+:10251000208301968C30910591F76AE170E082E0AA
+:1025200014DD8F3F09F48FE18093FA046BE170E0D2
+:1025300082E00BDD8F3F09F48FE18093FB048091F3
+:10254000C00486608093C0048091C004806880933A
+:10255000C0048091C00480618093C00484E293E24F
+:102560008093C6049093C7048091C00480628093D6
+:10257000C0048FEF8093C5048091C804826080936B
+:10258000C8041092982385E0EADC74DFCFBFCF91B6
+:1025900008958093C30408958091C3040895E6ECE0
+:1025A000F5E2808791876287738708950F931F9361
+:1025B000CF93DF931F92CDB7DEB78A01698300DD29
+:1025C000FC018181807C698181113AC06370613036
+:1025D00019F020F080E803C080EC01C080E40038EE
+:1025E0001105E9F058F400321105A9F00034110585
+:1025F000A1F000311105C9F491E018C0011592E075
+:10260000190779F00F3F93E0190769F001151140A0
+:1026100061F495E00BC092E009C093E007C094E03C
+:1026200005C096E003C097E001C090E0118226E06B
+:102630002083982B918381818062818381E001C016
+:1026400080E00F90DF91CF911F910F910895B8DC3A
+:10265000FC01818182FB882780F90895CF93C82FE0
+:10266000AFDCFC01818182FF0FC091819B7F918350
+:102670008C2F08DDFC01908190FF06C09E7F908327
+:102680000780F085E02D099581E0CF9108958F9224
+:102690009F92AF92BF92DF92EF92FF920F931F93A0
+:1026A000CF93DF931F92CDB7DEB7D82E5A017901B1
+:1026B0006983E8DC4C018D2D83DC9C01DC011196E3
+:1026C0008C911197807C6981882309F45EC01196F2
+:1026D0008C911197807C803C21F011968C9182FD29
+:1026E00054C09FB7F894F401808180FF02C09FBF5F
+:1026F0004CC0816080839FBFF401A182B282E382DB
+:10270000F482158216820783108791E0611104C05C
+:10271000E114F10409F090E0D4018C9190FB81F96F
+:102720008B7F8C93D7FE04C0F9011682178229C0D3
+:10273000D90111968C911197807C803CC9F4119637
+:10274000EC91E770E150E73040F4F0E0EE0FFF1F4E
+:10275000E455FF4D6081718102C068E070E0C701FF
+:10276000F5D1892B29F0F40180818E7F80830DC003
+:10277000D90112961D921C92139716961D921C92C7
+:1027800017978D2D99DC81E001C080E00F90DF91DB
+:10279000CF911F910F91FF90EF90DF90BF90AF907E
+:1027A0009F908F900895EF92FF920F93CF93C82F31
+:1027B00007DC7C018C2F66DCDC01F70102E005936D
+:1027C0009C9190FF1BC09E7F9C931796ED91FC916E
+:1027D0001897309799F0D701C7FF05C016966D91ED
+:1027E0007C91179704C012966D917C9113974C2F92
+:1027F00081E0CF910F91FF90EF900994CF910F91CD
+:10280000FF90EF900895CF93C82FCDDF8C2FD8DBAA
+:10281000FC011182CF9108950F93CF93C82FD0DB85
+:10282000FC0191819460918301E006938C2FBBDFC2
+:1028300081E0CF910F9108951F920F920FB60F92E2
+:1028400011240F932F933F934F935F936F937F9335
+:102850008F939F93AF93BF93CF93EF93FF93809109
+:10286000CB0487FF08C080E88093CA040E947E0BD7
+:102870000E94230486C08091CB0482FF18C084E0AC
+:102880008093CA0480912C2386FF7BC08091CC0466
+:1028900081FD77C078DD811174C08091072381307C
+:1028A00011F4DADB6EC0843009F06BC021C0809176
+:1028B000CB0481FF26C082E08093CA048091242348
+:1028C00086FF5FC08091CC0481FD5BC05CDD81111F
+:1028D00058C080910723823041F484E0809307231D
+:1028E000E4E2F3E202E006934CC0833009F049C011
+:1028F000EDE2F3E204E00593E5E2F3E204E00593A0
+:1029000040C08091CB0484FF25C080E18093CA043D
+:10291000C1E08C2F48DF8C2F806845DFCF5FC63049
+:10292000C1F70E94620B1092C30410922523C0933A
+:10293000242383E48093252310922D23C0932C23FA
+:1029400080932D2383EC92E2809328239093292374
+:102950004EDB17C08091CB0486FF08C080E48093D3
+:10296000CA0480E01ADB0E9421040BC08091CB04D2
+:1029700085FF07C080E28093CA0481E00EDB0E94DD
+:102980002204FF91EF91CF91BF91AF919F918F91D1
+:102990007F916F915F914F913F912F910F910F9088
+:1029A0000FBE0F901F9018951F920F920FB60F92A7
+:1029B00011240F931F932F933F934F935F936F9324
+:1029C0007F938F939F93AF93BF93CF93DF93EF93B7
+:1029D000FF938091CC0481FF1AC082E08093CC04E5
+:1029E0008091C5048195880FE4E2F3E2E81BF109C8
+:1029F000208131812452334283E0369527958A9590
+:102A0000E1F7822F869520FD06C0C0E005C0BBDC43
+:102A1000882319F386C0C0E8C80F8C2FD1DAFC01D7
+:102A2000208125FF7EC000E20693C11174C0809111
+:102A30000723843019F41EDBDADA73C000912623F1
+:102A4000109127238091D0259091D125C091032307
+:102A5000D09104239E01200F311F8217930718F491
+:102A60008C010C1B1D0B8091CE259091CF25A801C8
+:102A700063EC72E28C0F9D1F96D0C00FD11FC093E4
+:102A80000323D09304230034110569F480910523B6
+:102A9000909106238C0F9D1F2091CC253091CD2540
+:102AA0008217930788F0C093D025D093D125E09169
+:102AB000D425F091D525309729F00995811102C0D0
+:102AC000BDDA2FC0C9DA2DC08091D0259091D125D3
+:102AD0008C179D07D9F4E091D425F091D525309736
+:102AE00079F30995882361F320910523309106231A
+:102AF0008091032390910423820F931F80930523D9
+:102B0000909306231092032310920423E4E2F3E24D
+:102B100002E0069306C0C03811F4C7DB02C08C2F58
+:102B2000CBDAFF91EF91DF91CF91BF91AF919F9160
+:102B30008F917F916F915F914F913F912F911F9155
+:102B40000F910F900FBE0F901F901895AA1BBB1BE3
+:102B500051E107C0AA1FBB1FA617B70710F0A61B9D
+:102B6000B70B881F991F5A95A9F780959095BC01BE
+:102B7000CD01089597FB072E16F4009406D077FD3B
+:102B800008D0E4DF07FC05D03EF4909581959F4F77
+:102B90000895709561957F4F0895EE0FFF1F059082
+:102BA000F491E02D0994FB01DC0102C001900D922B
+:102BB00041505040D8F70895FB01DC0101900D927F
+:0A2BC0000020E1F70895F894FFCF1C
+:102BCA0040000CE02E0AFFFFFFFF55800080006BDB
+:102BDA000A650A750A620A000064201F200000289C
+:102BEA002023200F2000000009023C000101008080
+:102BFA00FA0904000006FFFFFF00070581018000B3
+:102C0A000107058201800001070583018000010791
+:102C1A0005840180000107058501800001070586FA
+:102C2A00018000011201000200000040EB0394BA87
+:102C3A000002010200010000000300000000000081
+:102C4A00000000000000000000004C616272616434
+:102C5A006F72004573706F54656B000004030904BA
+:102C6A00646562756731323300010200100020008A
+:0A2C7A004000800000010002FF038B
+:00000001FF
diff --git a/Desktop_Interface/android-build/assets/firmware/labrafirm_0002_02.hex b/Desktop_Interface/android-build/assets/firmware/labrafirm_0002_02.hex
new file mode 100644
index 00000000..db3bd750
--- /dev/null
+++ b/Desktop_Interface/android-build/assets/firmware/labrafirm_0002_02.hex
@@ -0,0 +1,714 @@
+:100000001FC1000039C1000037C1000035C1000028
+:1000100033C1000031C100000C94F0080C94200999
+:100020002BC1000029C1000027C1000025C100002C
+:1000300023C1000021C100001FC100001DC100003C
+:100040001BC1000019C1000017C1000015C100004C
+:1000500013C1000011C100000FC100000DC100005C
+:100060000C941D0A0C94280A07C1000005C1000069
+:1000700003C1000001C10000FFC00000FDC000007E
+:10008000FBC00000F9C00000F7C00000F5C0000090
+:10009000F3C00000F1C00000EFC00000EDC00000A0
+:1000A000EBC00000E9C00000E7C00000E5C00000B0
+:1000B000E3C00000E1C00000DFC00000DDC00000C0
+:1000C000DBC00000D9C00000D7C00000D5C00000D0
+:1000D000D3C00000D1C00000CFC00000CDC00000E0
+:1000E000CBC00000C9C00000C7C00000C5C00000F0
+:1000F000C3C00000C1C00000BFC00000BDC0000000
+:10010000BBC00000B9C00000B7C00000B5C000000F
+:10011000B3C00000B1C00000AFC0000070C4000058
+:10012000ABC00000A9C00000A7C00000A5C000002F
+:10013000A3C00000A1C000009FC000009DC000003F
+:100140009BC0000099C0000097C000000C94920969
+:1001500093C0000091C000008FC000008DC000005F
+:100160008BC0000089C0000087C0000085C000006F
+:1001700083C0000081C000007FC000007DC000007F
+:100180007BC0000079C0000077C0000075C000008F
+:1001900073C0000071C000006FC000006DC000009F
+:1001A0006BC0000069C0000067C0000065C00000AF
+:1001B00063C0000061C000005FC000005DC00000BF
+:1001C0005BC0000059C0000057C0000055C00000CF
+:1001D00053C0000051C000004FC000004DC00000DF
+:1001E0004BC0000049C0000047C0000045C00000EF
+:1001F00043C000000C9433140C94E114FC03FE0380
+:10020000000402040404060408040A041C041E0476
+:10021000200422042404290426042804F90B1F0CBA
+:10022000460C6F0C780C7D0CC50CCA0CE90CF00C5C
+:10023000890C910C990CA40CA60CA80CB10CBA0C4E
+:1002400011241FBECFEFCDBFDFE2DEBF10E2A0E082
+:10025000B0E2E4EEFBE202C005900D92AA39B107CC
+:10026000D9F72BE2AAE9B0E201C01D92A03EB20785
+:10027000E1F779D20C94F015C3CE84E08093560058
+:100280008CE185D3809363008BEB8093660080E8DC
+:100290008093650081E08093600088ED84BF1092B8
+:1002A000410083E080935000809151008330E1F75A
+:1002B0008091500081608093500088E180935500C8
+:1002C0008091510080FFFCCF80915000806180932D
+:1002D00050008091510084FFFCCF88ED84BF84E002
+:1002E000809340000895E0E7F0E085818E7F85836C
+:1002F000E0E0FAE08FEB9DE586A397A380EE9EE217
+:1003000080A391A382E0808308958091200A909138
+:10031000210A813E2EE2920718F02091822106C028
+:10032000803E2EE2920721F020917F2120936A00E7
+:1003300020910520222321F080910520815033C097
+:10034000885F9A42813D974080F110929A20809177
+:100350009B2090919C20A0919D20B0919E20019681
+:10036000A11DB11D80939B2090939C20A0939D2064
+:10037000B0939E2080919B2090919C20A0919D20E5
+:10038000B0919E20892F9A2FAB2FBB278093A2215B
+:1003900080919B2090919C20A0919D20B0919E20C7
+:1003A0008093A12186E08093052080910720909181
+:1003B00008200196B1F4809109208F3F91F080913F
+:1003C0000620811106C0809106208150809306206E
+:1003D00008958091140190911501809307209093C6
+:1003E00008200895009709F45EC00CF457C040E05F
+:1003F00020916B0030E02093802130938121209167
+:100400008021309181213695322F222737952795EB
+:10041000209380213093812150916A002091802186
+:1004200030918121250F311D20938021309381212E
+:10043000000020918021309181212817390728F46C
+:100440001092802110928121089520918021309175
+:100450008121280F391F2115304238F08FEF9FE19D
+:100460008093802190938121089520918021309163
+:100470008121442329F0A901481B590BCA0102C05C
+:10048000820F931F809380219093812180918021FE
+:10049000909181218F7780936A000895919581953D
+:1004A000910941E0A5CF0895CF93DF93C091200A31
+:1004B000D091210A80910320909104209E01281B55
+:1004C000390B209383213093842180919A208111CC
+:1004D0004BC080918321909184218E3C9F4FD4F416
+:1004E00080918321909184218B369F4F9CF0809145
+:1004F0000220882321F080910220815008C0809141
+:100500006A008093822181E080939A208CE080931E
+:1005100002202AC08CE08093022080918321909158
+:1005200084218A369F4F1CF08FEF9FEF02C081E03D
+:1005300090E080937D2190937E2180918321909102
+:10054000842120917D2130917E2160E370E00E9422
+:10055000C715261B370B20937D2130937E21809178
+:100560007D2190917E213EDF80919A20813029F576
+:100570008091832190918421C39794F080910220EF
+:10058000882331F08091022081508093022015C091
+:1005900080916A0080937F2183E080939A200DC030
+:1005A0008091832190918421873991051CF481E009
+:1005B00090E002C08FEF9FEF15DFC0930320D09330
+:1005C0000420DF91CF9108958617970779F0681777
+:1005D000790728F49C01261B370BB90109C086173F
+:1005E000970718F4681B790B03C0089560E070E06A
+:1005F000CB010895CF93DF9380910020909101204B
+:10060000892B51F0809100209091012001978093D7
+:1006100000209093012043C080E490E0809300206C
+:100620009093012080910720909108200196B9F1C4
+:10063000809114019091150120910920263018F421
+:1006400067E771E002C06EEE72E00E94B315EC0144
+:1006500080910720909108208C179D0758F4609195
+:10066000072070910820CE01AFDF029718F080ECD0
+:100670009DE511C08091072090910820C817D907E7
+:1006800070F46091072070910820CE019DDF0297E1
+:1006900030F08FEB9DE58093360A9093370ADF9117
+:1006A000CF910895AC01460F571F861B970B2091E1
+:1006B000200A3091210A24173507C8F72091200A13
+:1006C0003091210A8217930790F70895E0E8F6E049
+:1006D0008FE0808385E0848308951F93CF93DF9319
+:1006E000C0E4D0E0198180E4898340E250E068EB07
+:1006F0007BE280E290E00E945A0F1983DF91CF9154
+:100700001F9108951F93CF93DF93C0E4D0E0198128
+:1007100080E489838BEB95E20E94A20F81E00E9426
+:10072000B40F1983DF91CF911F91089508950F930E
+:100730001F932091A4208EEE92E0289FA001299F74
+:10074000500D112444525A4D07E913E02EEE32E0C9
+:1007500060E081E80E945E131F910F9108951CBE16
+:10076000EEEFF0E40994B9DF8091B82B882369F0AB
+:1007700080E2E8EBFBE2ABEBB5E201900D928A95EB
+:10078000E1F71092BB25BEDFEADF87E08093A2008D
+:10079000789473DDCBDFB7D745D168D160E080E0D6
+:1007A000FFD0EBD08CE0DFD07BD51FD638D68EDFE4
+:1007B00060E870E28EE891E20E94E9150000000016
+:1007C0000000000000000000000000000000000029
+:1007D000000000000000000080919F20882371F33A
+:1007E000E091BA238E2F90E088309105A0F4FC01AF
+:1007F000E250FF4F0C94DA1565D10DC0D7D10BC074
+:1008000065D209C0EBD207C078D305C0FFD303C0BF
+:10081000FED301C070D410929F20D0CF08950895C8
+:10082000E09109208E2F90E08830910590F4FC0132
+:10083000EA5FFE4F0C94DA15B8D10BC046D209C05E
+:10084000CCD207C059D305C0E0D303C053D401C0F4
+:10085000C6D48091140180939721809115018093D3
+:100860009821809124018093992180912501809382
+:100870009A218091200A8093A3218091210A80935C
+:10088000A42180911401909115018634914080F04B
+:100890008091140190911501893A914048F480911A
+:1008A0001401909115018093D82B9093D92B0000BF
+:1008B0008091A220882339F016DD1092A22081E0D9
+:1008C0008093A12008958091A120882341F08091F8
+:1008D0009A20833019F419DD8DDE01C0E5DD8091A9
+:1008E000A020882351F080911401909115018093EC
+:1008F000D82B9093D92B1092A0209091A42081E026
+:10090000911180E08093A42008950F931F9381E0BC
+:100910008093A7208093A22007E913E02DE730E021
+:100920004CED55E260E081E80E945E1381E01F918A
+:100930000F9108951092A720089581E0089581E015
+:10094000089510922002982F9C7193689093200232
+:10095000881F8827881F880F809321021092220207
+:10096000109226020895E0E0F2E010AA836880ABBE
+:1009700080E181AB12AA16AA0895E0E0F2E010A689
+:1009800083E880A78FE281A712A616A60895AAEC95
+:10099000B1E092E09C93E82FF0E084911C920895DE
+:1009A000909171009D7F90937100109200026230CF
+:1009B00011F09CE101C09EE19093010290E49093BC
+:1009C0000202811102C080E401C080EC8093030226
+:1009D000613011F084E001C083E08093040280E282
+:1009E000D6DF80930C0281E2D2DF80930D02109259
+:1009F00018021092190281E080930002BECF1F926C
+:100A00000F920FB60F9211248F9300000000000088
+:100A1000000081E0809323028F910F900FBE0F9012
+:100A20001F901895CF93DF93E0E7F0E082818B7FF2
+:100A30008283C0E2D3E08DE0888380E4898389E00B
+:100A40008A8383E3A4DF888782E3A1DF898787E342
+:100A50009EDF8A8786E39BDF8B87E0E2F6E080817A
+:100A6000836080831482DF91CF910895E0E7F0E006
+:100A700080818E7F808380E8809300010895E0E08C
+:100A8000F1E0108A80E4808B10A280A310AA80ABD2
+:100A9000E0E4F1E0108280831092A6201092A5205D
+:100AA00081E08093A42010928C2110928D211092CD
+:100AB0008A2110928B2108958093BA2381E080933C
+:100AC0009F200895CF93DF9310920920D8DFC0E0D4
+:100AD000D1E01EAA94E298AB19AA49E54AAB32E0EC
+:100AE0003BAB60910B2070910C206CAB7DAB6BEB42
+:100AF00073E268AF79AF1AAE8BE38CAF83E080937B
+:100B00003D0110923E0128A9206828AB10924601B1
+:100B1000E0E4F1E090831092410140934201809320
+:100B2000430140910D2050910E2040934401509379
+:100B300045014AEA51E2409348015093490110921D
+:100B40004A0129E320934C0180934D0110924E01FC
+:100B5000208120682083188A20E4288B24E0288BB9
+:100B6000898B85E98A8B80E18B8B47E751E04C8B41
+:100B70005D8B988F398F1A8E8CED95E28C8F9D8FBF
+:100B80001E8E68EC70E084EF91E08CDD88EC90E0E4
+:100B9000809307209093082081E080930620888925
+:100BA0008068888BDF91CF9108950895EF92FF922E
+:100BB0001F93CF93DF9311E01093092060DFC0E013
+:100BC000D1E018AA80E488AB94E098AB19AA1AAADD
+:100BD0006BE46BAB1CAA1DAA1EAA2AE030E228AF68
+:100BE00039AF1AAEA0EAACAF58E050933D01109275
+:100BF0003E0188A9806A88ABE0EAF8E085E5808359
+:100C0000808310924601E0E4F1E044E240831092D8
+:100C1000410189E58093420132E030934301E09045
+:100C20000B20F0900C20E0924401F09245018BEBF8
+:100C3000E82E83E2F82EE0924801F09249011092EA
+:100C40004A018BE380934C0183E080934D01109225
+:100C50004E0120812068208398A389A325E92AA337
+:100C60006BA367E771E06CA37DA3A8A759A71AA699
+:100C7000EAECF8E2ECA7FDA71EA6988B898B2A8BDD
+:100C800080E18B8B6C8B7D8B488F398F1A8E8CED2E
+:100C900095E28C8F9D8F1E8E68EC70E084EF91E062
+:100CA00001DD88EC90E0809307209093082010935A
+:100CB000062088A1806888A388898068888BDF9156
+:100CC000CF911F91FF90EF90089508951F93CF93B8
+:100CD000DF9312E010930920D2DEC0E0D1E01EAA1B
+:100CE00094E298AB19AA39E53AAB1BAB40910B20C3
+:100CF00050910C204CAB5DAB4BEB53E248AF59AF7E
+:100D00001AAE8BE38CAF83E080933D0110923E01DD
+:100D100028A9206828AB10924601E0E4F1E0908316
+:100D200010924101309342018093430120910D20A4
+:100D300030910E2020934401309345012AEA31E29C
+:100D4000209348013093490110924A0129E32093EE
+:100D50004C0180934D0110924E0120812068208328
+:100D6000188A20E4288B64E0688B898B55E95A8BBC
+:100D700040E14B8B27E731E02C8B3D8B988F198F0F
+:100D80001A8EECEDF5E2EC8FFD8F1E8E68A389A321
+:100D90005AA34BA32CA33DA384E388A719A71AA6A3
+:100DA0008AEC98E28CA79DA71EA668EC70E084EF01
+:100DB00091E078DC88EC90E0809307209093082005
+:100DC00081E08093062088898068888B88A180686C
+:100DD00088A3DF91CF911F91089508951F93CF931A
+:100DE000DF9313E0109309204ADEC0E0D1E01092B7
+:100DF0004601E0E4F1E024E220831092410199E50C
+:100E00009093420182E08093430140910B205091E6
+:100E10000C2040934401509345014BEB53E2409327
+:100E200048015093490110924A018BE380934C0191
+:100E300010934D0110924E018081806880831EAA1C
+:100E400028AB19AA9AAB1BAB80910D2090910E2074
+:100E50008CAB9DAB8AEA91E288AF99AF1AAE89E379
+:100E60008CAF10933D0110923E0188A9806888AB39
+:100E700018A250E458A344E048A319A21AA23BE4E4
+:100E80003BA31CA21DA21EA28AE090E288A799A7FC
+:100E90001AA620EA2CA798E09DA71EA688A1806A22
+:100EA00088A385E58093A008188A588B488B198BF6
+:100EB00085E98A8B3B8B47E751E04C8B5D8B288F14
+:100EC000998F1A8E8CED95E28C8F9D8F1E8E68EC1B
+:100ED00070E084EF91E0E6DB88EC90E080930720FF
+:100EE0009093082081E08093062088898068888B11
+:100EF000DF91CF911F91089508951F93CF93DF93B2
+:100F000014E010930920BBDDC0E0D1E018AA80E412
+:100F100088AB18AB19AA1AAA3BE43BAB1CAA1DAAC2
+:100F20001EAA8AE090E288AF99AF1AAE50EA5CAF91
+:100F300088E080933D0110923E0198A9906A98AB99
+:100F400095E59093A00810924601E0E4F1E094E268
+:100F500090831092410199E59093420192E0909321
+:100F6000430160910B2070910C20609344017093B9
+:100F700045016BEB73E26093480170934901109255
+:100F80004A019BE390934C0193E090934D011092A2
+:100F90004E01208120682083188B998B45E94A8B6C
+:100FA0003B8B27E731E02C8B3D8B588F898F1A8E36
+:100FB0006CED75E26C8F7D8F1E8E18A399A34AA3EA
+:100FC0009AE49BA32CA33DA393EC98A789A71AA608
+:100FD0008AEC98E28CA79DA71EA668EC70E084EFCF
+:100FE00091E060DB88EC90E08093072090930820EC
+:100FF00081E08093062088898068888B88A180683A
+:1010000088A3DF91CF911F9108950895FFCFCF93CB
+:10101000DF9386E08093092032DDC0E0D1E01EAA94
+:1010200084E288AB19AA39E53AAB93E09BAB4091D7
+:101030000D2050910E204CAB5DAB4AEA51E248AF17
+:1010400059AF1AAE29E32CAF90933D0110923E01A7
+:1010500028A9206828AB10924601E0E4F1E08083E3
+:10106000109241013093420132E0309343014091AC
+:101070000B2050910C2040934401509345014BEBC1
+:1010800053E2409348015093490110924A012BE3E7
+:1010900020934C0190934D0110924E0120812068C5
+:1010A0002083188A20E4288B888B998B95E99A8B6A
+:1010B00090E19B8B4CED55E04C8B5D8B888F398F8D
+:1010C0001A8E8CED95E28C8F9D8F1E8E68EC70E0F1
+:1010D00084EF91E0E7DA80E991E080930720909334
+:1010E000082081E08093062088898068888BDF91C2
+:1010F000CF9108950895CF93DF9387E080930920DF
+:10110000BEDCC0E0D1E01EAA94E298AB19AA39E592
+:101110003AAB83E08BAB40910D2050910E204CAB4D
+:101120005DAB4AEA51E248AF59AF1AAE29E32CAFA2
+:1011300080933D0110923E0128A9206828AB1092AF
+:101140004601E0E4F1E090831092410130934201C6
+:1011500032E03093430140910B2050910C2040939A
+:101160004401509345014BEB53E2409348015093A7
+:10117000490110924A012BE320934C0180934D01C9
+:1011800010924E01208120682083188A20E4288B49
+:1011900025E2288B898B85E98A8B80E18B8B4CED4E
+:1011A00055E04C8B5D8B988F398F1A8E8CED95E2C4
+:1011B0008C8F9D8F1E8E68EC70E084EF91E072DA68
+:1011C00080E991E0809307209093082081E080934C
+:1011D000062088898068888BDF91CF9108950895D3
+:1011E0001F920F920FB60F9211248F939F9381E05D
+:1011F000809303011092100184E08093100187E72F
+:1012000091E080931401909315018091A4208111A5
+:1012100003C08EEE92E002C080E090E084529A4DCE
+:1012200080931C0190931D01809110018068809330
+:1012300010019F918F910F900FBE0F901F901895E6
+:101240001F920F920FB60F9211248F939F9382E0FB
+:10125000809303011092200184E08093200187E7AE
+:1012600091E080932401909325018091A420811125
+:1012700003C085E694E002C087E791E084529A4D6E
+:1012800080932C0190932D018091200180688093A0
+:1012900020019F918F910F900FBE0F901F90189576
+:1012A000E0E7F0E083818C7F838384818C7F84837B
+:1012B00080818D7F8083E0E8F1E080EC828312867C
+:1012C00088EC81831186A0E0B8E034E03C9323E011
+:1012D00011962C93119714961C92149785ED91E01A
+:1012E00096968D939C93979716961C921697E0E48A
+:1012F000F8E030832183148286A397A31682E0E668
+:10130000F6E0808180618083E0E4F9E083E181831D
+:10131000148282E08683A6A3B7A310A611A681E05B
+:10132000808308951F920F920FB60F9211242F936E
+:101330003F934F935F938F939F93CF93DF931F922E
+:10134000CDB7DEB78FEF80934C09809109208730AD
+:1013500031F480912C02898390912D0202C09091EA
+:101360002C028091A320891B209168093091690982
+:1013700082308CF02A3F374070F420916809309118
+:10138000690989301CF481E090E002C086E090E0B9
+:10139000820F931F18C020916809309169098F3F0F
+:1013A000B4F42730310598F020916809309169092B
+:1013B000883F1CF081E090E002C086E090E0A90147
+:1013C000481B590BCA0180937809909379090F90B3
+:1013D000DF91CF919F918F915F914F913F912F918D
+:1013E0000F900FBE0F901F901895E0E7F0E08381FB
+:1013F0008F7E8383E0E4F6E080818A6A80838FEFCA
+:10140000848388E5828BE0EAF8E080E3838384ECE0
+:10141000858387E08683178288E184830895E0E7E7
+:10142000F0E08381877F8383E0ECF8E080E48083D1
+:10143000118288E58093550608951F920F920FB68A
+:101440000F92112400000F900FBE0F901F9018955F
+:101450001F920F920FB60F9211248F93EF93FF9369
+:10146000E0EAF8E080818083FF91EF918F910F9007
+:101470000FBE0F901F9018959FB7F894A0E5B0E0AD
+:1014800016968C911697897F16968C931697E0E6A0
+:10149000F0E080E885838BEB868316968C91169717
+:1014A000846016968C938081816080839FBF0895AD
+:1014B0009FB7F894E82FF0E0E059FF4F60958081E6
+:1014C000682360839FBF0895CF93863011F0C0E0FA
+:1014D00001C0C8E18091510081FD0DC09FB7F89413
+:1014E000809150008260809350009FBF8091510096
+:1014F00081FFFCCFC1DF6C2F636084E490E0BFD438
+:1015000060E480E0CF91D4CF8091A82008958091AD
+:10151000A820813009F40ECA0895F0D0FC0183811F
+:101520008093A820811101C0F0C981E008959091B5
+:10153000AA23892F807697FF07C0803491F4809189
+:10154000AB2381110EC0FBC9803459F48091AB23C9
+:10155000811107C08091B0239091B123892B09F0AC
+:10156000ECC980E008958091AC238F770C94E01251
+:101570009091B020911102C080E00895E091AD20DB
+:10158000F091AE200190F081E02D94818917A0F7B1
+:10159000E093AB20F093AC20228133812E0F3F1FCC
+:1015A000E217F30798F49181943061F492818913E2
+:1015B00009C09381691306C0E093AB20F093AC207F
+:1015C00081E008959081E90FF11DEACFE093AB200F
+:1015D000F093AC20D1CFE091AD20F091AE200190FE
+:1015E000F081E02D228133812E0F3F1FFC014081CD
+:1015F000E40FF11DE217F30748F48181843031F0E4
+:10160000853039F08081E80FF11DF4CF80E090E063
+:101610000895CF0108951F93CF93DF93182FA8DF6C
+:10162000882339F1C091AB20D091AC20CE01D3DF1B
+:10163000EC01892B41F04C815D816B818A81CDD792
+:101640008111F4CF16C0E091AD20F091AE209281CF
+:101650008381E92FF82FE10FF11DE10FF11D0190BA
+:10166000F081E02D0190F081E02DDF91CF911F916D
+:10167000099480E0DF91CF911F910895EF92FF923E
+:101680001F93CF93DF93C82F60E072DF811102C0F8
+:1016900010E02DC0E091AD20F091AE2092818381C9
+:1016A000E92FF82FEC0FF11DEC0FF11DE080F18018
+:1016B000D7011696ED91FC9117970995682F8C2FFD
+:1016C00057DF182F882321F3C091AB20D091AC2095
+:1016D000CE0181DFEC01892B21F08A810E941A144E
+:1016E000F7CFD7011296ED91FC9113970995812FB1
+:1016F000DF91CF911F91FF90EF9008958091AB20E3
+:101700009091AC200895FEC6CF938091B0208111B6
+:1017100008C01092B0201092B4201092B520CF9142
+:101720000895C0E0E091AD20F091AE200190F081ED
+:10173000E02D8481C81768F78C2FA0DFCF5FF2CF30
+:10174000CF938091B0208823F1F0C0E0E091AD20EC
+:10175000F091AE20A081B18114968C91C81798F4B5
+:1017600092818381E92FF82FEC0FF11DEC0FF11D11
+:101770000190F081E02D0084F185E02D309709F093
+:101780000995CF5FE3CFCF910895EF92FF920F932A
+:101790001F93CF93DF931F92CDB7DEB71092B42380
+:1017A0001092B5231092B6231092B7231092B8234B
+:1017B0001092B9238091AA2387FF07C02091B023FC
+:1017C0003091B123232B09F451C3982F9076903494
+:1017D00009F00EC1E091AB238E2F90E0FC01E05A9E
+:1017E000F109EA30F10508F0D0C2E25FFE4F0C9437
+:1017F000DA1581E08093A020809107209091082045
+:1018000080939B21809107209091082090939C21A8
+:101810008091822180939D2180917F2180939E21C0
+:1018200080916A0080939F2180916B008093A0211A
+:101830006091B0237091B1238EE891E2D7C01092ED
+:1018400000088091AC239091AD238093360890934B
+:1018500037088091AE238F70809300086091B02389
+:101860007091B1238AEA91E2B1D620910D20309196
+:101870000E208091B0239091B1232817390709F4E5
+:10188000F3C280930D2090930E2026C01092400842
+:101890008091AC239091AD23809376089093770844
+:1018A0008091AE238F70809340086091B023709137
+:1018B000B1238BEB93E28AD620910B2030910C2040
+:1018C0008091B0239091B1232817390709F4CCC235
+:1018D00080930B2090930C208091092054C010928B
+:1018E0006809109269098091AC238093A320BCC23F
+:1018F0008091AC2380932406B7C2E091AC23F09191
+:10190000AD23E830F10508F040C2E85EFE4F0C94CC
+:10191000DA1560E080E044D88091AE2312D880E0F0
+:1019200032C060E080E03CD88091AE230AD881E0EC
+:101930002AC061E081E034D88091AE2302D8809142
+:10194000AF2311D882E01FC083E01DC084E01BC01C
+:1019500060E080E025D88091AE230E94A10485E05C
+:1019600012C061E080E01CD88091AE230E94A104E7
+:1019700086E009C062E080E013D88091AE238068E1
+:101980000E94A10487E098D86FC28091AC23809315
+:1019900084066AC28091AC239091AD23892B91F08B
+:1019A0000E946D0380E2E8EBFBE2ABEBB5E2019055
+:1019B0000D928A95E1F781E08093BB250E94820316
+:1019C0000E946D03E9E7F0E091E088EDF89484BFB0
+:1019D00090836091B0237091B1238AE890E206C0B1
+:1019E0006091B0237091B12389E890E2EFD53CC2B9
+:1019F0009111CBC187FFFCC02091B0233091B1235E
+:101A00002115310509F4C1C18F7109F09EC0809183
+:101A1000AB23863071F0883009F48EC08111B5C1D6
+:101A20002230310509F0B1C162E070E084EB90E250
+:101A3000DDCF8091AC239091AD23292F3327223025
+:101A40003105A1F064F42130310509F09EC1809187
+:101A5000192090911A20DC016C9170E05BC023305A
+:101A6000310589F12F30310509F18FC1E09119203D
+:101A7000F0911A202189821708F087C19927880FD1
+:101A8000991F880F991FE0911B20F0911C20E80FEF
+:101A9000F91F80819181FC016281738197D5E0916A
+:101AA000B223F091B32382E0818335C080911D2061
+:101AB00090911E20009709F468C1DC0112966D9187
+:101AC0007C91139727C099278130910569F038F0F0
+:101AD000029709F05AC168E08AE690E208C064E023
+:101AE00070E08CE790E216C067E083E790E2282F71
+:101AF000AAE5B0E2FC01819190E08D939D938E2F39
+:101B0000821B8617C0F3660F6E5F6093582070E0EB
+:101B100088E590E25BD58091B0239091B12320912C
+:101B2000B4233091B5238217930708F09DC18093A9
+:101B3000B4239093B52398C12130310509F025C114
+:101B400061E070E080EB90E251CF8130C9F5809187
+:101B5000AB238A3009F019C12130310509F015C1D4
+:101B60008091B020882309F410C1E090AE23F0905A
+:101B7000AF230091AD201091AE20D801ED91FC91E2
+:101B80008481E81608F001C160E08E2DF1DC882325
+:101B900009F4FBC0FF24EE0CFF1CF8018281938145
+:101BA0008E0D9F1DDC01ED91FC910680F781E02DEB
+:101BB00009958093B22061E070E082EB90E216CF4D
+:101BC000823009F0E2C08091AB238111DEC0223067
+:101BD000310509F0DAC08091AE2350D590E08093B2
+:101BE000A9209093AA2062E070E089EA90E2FECEFC
+:101BF0008F7109F07DC08091AB23833009F4C5C09B
+:101C000018F48130A1F0C1C0853019F0893039F164
+:101C1000BCC08091B0239091B123892B09F0B5C04D
+:101C200083EB9AE08093B6239093B7231DC18091F4
+:101C3000B0239091B123892B09F0A7C08091AC23E8
+:101C40009091AD23019709F0A0C08091B4209091AC
+:101C5000B5208D7F8093B4209093B52005C18091ED
+:101C6000B0239091B123892B09F08FC0ACD4882385
+:101C700009F48BC02091AC233091AD233327E09140
+:101C80001920F0911A20818990E08217930708F4B7
+:101C90007CC03ADD8091AC239091AD238093B0203D
+:101CA000882309F4E1C099278150904C880F991F2F
+:101CB000880F991F20911B2030911C20820F931FA9
+:101CC0008093AD209093AE2010E0E091AD20F09194
+:101CD000AE200190F081E02D8481181708F0C4C077
+:101CE00060E0812F98DC882309F44FC01F5FEDCF9F
+:101CF0008130F1F48091AB238B3009F046C08091A4
+:101D0000B0239091B123892B09F03FC08091B0207E
+:101D1000882309F43AC01091AE236091AC23812F3F
+:101D20006983ACDC6981882381F1812F74DC2BC04D
+:101D3000823059F58091AB23813019F0833089F0DE
+:101D400024C08091B0239091B123892BF1F480912C
+:101D5000AC239091AD23892BC1F48091AE2395D40F
+:101D600012C08091B0239091B123892B71F480919E
+:101D7000AC239091AD23892B41F48091AE232AD5D9
+:101D80008091AE2360D581116FC08091AA238F719D
+:101D90008130B9F58091B020882399F1E090AE238D
+:101DA000F090AF230091AD201091AE20D801ED91BD
+:101DB000FC918481E81628F560E08E2DD9DB88231C
+:101DC00001F1F701FF27EE0FFF1FD80112968D9149
+:101DD0009C911397E80FF91F00811181D801169685
+:101DE000ED91FC9117970995682F8E2DC1DB882303
+:101DF00041F0D8011496ED91FC9115970995811148
+:101E000033C08091AA238F71823081F58091B020F8
+:101E1000882361F1F12CE091AD20F091AE20A081FA
+:101E2000B18114968C91F81608F592818381E92F7F
+:101E3000F82FEF0DF11DEF0DF11D00811181D8017B
+:101E40001696ED91FC9117970995682F8F2D90DBD1
+:101E5000882361F0D8011496ED91FC9115970995AE
+:101E6000811102C0F394D7CF81E001C080E00F90D0
+:101E7000DF91CF911F910F91FF90EF9008951BBEBE
+:101E8000FC0128ED24BF608308958091CF0187FD78
+:101E9000FCCF08951F93CF93DF93C0ECD1E01A8558
+:101EA0008A8761E08BEC91E0EADF1A87DF91CF91BE
+:101EB0001F910895CF92DF92EF92FF920F931F939D
+:101EC000CF93DF9300D0CDB7DEB78C017B01498380
+:101ED0005A83DBDF8CECC82EDD24D394F60190818D
+:101EE00098609083B801705F49815A81C70168D6B4
+:101EF000F6018081877F80830F900F90DF91CF91D3
+:101F00001F910F91FF90EF90DF90CF900895CF93A6
+:101F1000DF9300D0CDB7DEB76A838983B6DFACEC40
+:101F2000B1E09C9198609C938981E82FF0E0F05F8C
+:101F30006A8160838C91877F8C930F900F90DF91E3
+:101F4000CF9108950F931F93CF938C019EDFC0E034
+:101F5000F80161918F018C2FDADFCF5FC032C1F7BA
+:101F6000CF911F910F910895CF93DF931F92CDB71B
+:101F7000DEB789838ADF898120E2829FC001112434
+:101F8000E0ECF1E012829183808385E30F90DF9192
+:101F9000CF9180CF4091CA01E62FF72F8093CA01DD
+:101FA00084914093CA010895E82FF0E0E652F44D81
+:101FB00080818F3F09F4FFCF9FB7F89480818F5FB6
+:101FC00080839FBF0895E82FF0E0E652F44D8081B2
+:101FD000811101C0FFCF9FB7F89480818150808329
+:101FE0009FBF0895CF93C82F80917C21C11105C058
+:101FF000882339F081E0E7DF04C0811102C081E06D
+:10200000D3DFC0937C21CF910895282F2F70082E05
+:10201000000C990B392F331F3327331F832F90E088
+:10202000820F911D820F911D23E0880F991F2A9521
+:10203000E1F7885A9E4D08950F93E8ECF4E0808113
+:102040008F7D808380818F7D8083E0E6F1E202E0F6
+:102050000593109262211092632100E2069300E43E
+:102060000693E8E5F1E200E2069300E40693EAEA6B
+:10207000F3E214861586168617861286138610924A
+:102080004D210F9108950F9385E080934D21E1E656
+:10209000F1E204E00593E9E5F1E204E005930F9134
+:1020A00008950F9383E080934D2110926221109246
+:1020B0006321E0E6F1E202E006930F910895E091DA
+:1020C000B623F091B723309709F009940895282F8B
+:1020D0002F70082E000C990B392F331F3327331F15
+:1020E000832F90E0820F911D820F911D029749E08E
+:1020F000489F9001499F300D1124C90189509F4D7F
+:1021000008958F929F92AF92BF92DF92EF92FF92CB
+:102110000F931F93CF93DF93D82ED9DFEC018D2D32
+:1021200074DF7C01DC011196EC91E770E150E7303F
+:1021300040F4F0E0EE0FFF1FE457FF4D00811181E6
+:1021400002C008E010E0ED81FE812B813C814881D6
+:10215000D701D7FE48C016968D919C9117978E0F88
+:102160009F1F8D839E838217930761F1281B390B74
+:102170002115B4E03B0738F02FEF33E0C901B80177
+:10218000F2D4281B390B41FF0AC0C901B801EBD4B6
+:10219000AC0191E0452B09F090E0892F01C080E06F
+:1021A000988180FB91F99883F70116821782228328
+:1021B000338329813A818D819E81820F931F84838D
+:1021C00095830EC041FF71C04D7F4883D70116969D
+:1021D0001D921C92179712961D921C921397F7014D
+:1021E00002E006937BC01296AD90BC90139742FF1D
+:1021F00010C089809A80C901B801B5D4B0E4DB9ED3
+:10220000B001112469587F4DAC01C4018E0F9F1F8E
+:10221000D7D48D819E818A0D9B1D8D839E832B81BA
+:102220003C812817390710F42D833E83F7018681FE
+:102230009781A816B906C9F58D819E8182179307EB
+:10224000A1F1281B390B2115F4E03F0710F02FEF07
+:1022500033E0C901B80187D4281B390BD701129686
+:102260001D921C9213972017310778F4888184609F
+:102270008883B0E4DB9EC001112489589F4DF7018B
+:102280008483958306831783AACF49815A818D81E0
+:102290009E81840F951FD70114968D939C9315975B
+:1022A00016962D933C9317979ACF888180FF16C07E
+:1022B0008E7F8883EF81F885309781F06D817E81F4
+:1022C0004D2D80E0DF91CF911F910F91FF90EF9006
+:1022D000DF90BF90AF909F908F900994DF91CF9146
+:1022E0001F910F91FF90EF90DF90BF90AF909F9064
+:1022F0008F9008950F93CF93DF9380914D2183307A
+:1023000029F4DDDEDF91CF910F9196CE2091492106
+:1023100030914A21C091B423D091B523C21BD30B75
+:1023200061F580914B2190914C21820F931F8093F6
+:102330004B2190934C212091B0233091B123281749
+:10234000390721F08091B620882331F084E0809312
+:102350004D21E8E5F1E236C0E091B823F091B923D0
+:10236000309799F00995882381F0109249211092B5
+:102370004A21C091B423D091B523C034D10528F0AF
+:102380001092B620C0E4D0E003C081E08093B62074
+:10239000C0936221D09363218091492190914A2179
+:1023A0002091B2233091B323280F391F2093642149
+:1023B00030936521C80FD91FC0934921D0934A217A
+:1023C000E0E6F1E202E00693DF91CF910F910895EC
+:1023D0000F93CF93DF931F92CDB7DEB78091CC04DC
+:1023E00080FF65C021E02093CC0488E591E2FC01E8
+:1023F00000E80693E0E6F1E200E806932093CA04C1
+:10240000FC0100E1069380914D21882329F083503F
+:10241000823008F454DE10DE80915A2190915B21C5
+:10242000089709F046C088E0E9E0F1E2AAEAB3E2E1
+:1024300001900D928A95E1F78091C80480628093A3
+:10244000C8048091C80480628093C8049ED9811119
+:1024500002C019DE2EC09091AA2397FF0EC01092E1
+:102460004B2110924C211092492110924A2192E066
+:1024700090934D2189833EDF08C02091B023309195
+:10248000B123232B21F489830CDE898113C01092A0
+:102490004B2110924C211092492110924A2191E037
+:1024A00090934D21E8E5F1E202E0069303C080E05D
+:1024B00001C081E00F90DF91CF910F910895CF93EC
+:1024C000CFB7F89481E08EDDEAECF4E080E480831D
+:1024D00080E28083E1ECF4E0808181608083A9EC7C
+:1024E000B4E08C9182608C93E8ECF4E080818064AD
+:1024F00080838C9181608C93808180688083CFBF42
+:10250000CF910895CF931092600080E30E94640AF7
+:102510008091C00480648093C00481E08093600057
+:10252000CFB7F8941092592110926121109269212D
+:10253000109271218091F7208E7F8093F7208091F7
+:1025400000218E7F809300216AE170E082E022DD2D
+:102550008F3F09F48FE18093FA046BE170E082E031
+:1025600019DD8F3F09F48FE18093FB048091C00453
+:1025700081608093C0048091C00480688093C0040F
+:102580008091C00480618093C00488E591E28093CB
+:10259000C6049093C7048091C00480628093C004F5
+:1025A0008FEF8093C5048091C80482608093C80433
+:1025B00010927C2185E0F8DC82DFCFBFCF910895B7
+:1025C0008093C30408958091C3040895EAEAF3E276
+:1025D000808791876287738708950F931F93CF93A6
+:1025E000DF931F92CDB7DEB78A0169830EDDFC0150
+:1025F0008181807C698181113AC06370613019F0FA
+:1026000020F080E803C080EC01C080E400381105B0
+:10261000E9F058F400321105A9F000341105A1F0D9
+:1026200000311105C9F491E018C0011592E01907B5
+:1026300079F00F3F93E0190769F00115114061F43B
+:1026400095E00BC092E009C093E007C094E005C09C
+:1026500096E003C097E001C090E0118226E020835D
+:10266000982B918381818062818381E001C080E029
+:102670000F90DF91CF911F910F910895C6DCFC015F
+:10268000818182FB882780F90895CF93C82FBDDC14
+:10269000FC01818182FF0FC091819B7F91838C2FF0
+:1026A00016DDFC01908190FF06C09E7F908307801D
+:1026B000F085E02D099581E0CF9108958F929F924A
+:1026C000AF92BF92DF92EF92FF920F931F93CF933F
+:1026D000DF931F92CDB7DEB7D82E5A0179016983F7
+:1026E000F6DC4C018D2D91DC9C01DC0111968C9166
+:1026F0001197807C6981882309F45EC011968C91C2
+:102700001197807C803C21F011968C9182FD54C001
+:102710009FB7F894F401808180FF02C09FBF4CC036
+:10272000816080839FBFF401A182B282E382F48240
+:10273000158216820783108791E0611104C0E114AD
+:10274000F10409F090E0D4018C9190FB81F98B7F2A
+:102750008C93D7FE04C0F9011682178229C0D901D3
+:1027600011968C911197807C803CC9F41196EC9164
+:10277000E770E150E73040F4F0E0EE0FFF1FE45760
+:10278000FF4D6081718102C068E070E0C701EBD14C
+:10279000892B29F0F40180818E7F80830DC0D901BF
+:1027A00012961D921C92139716961D921C921797C3
+:1027B0008D2DA7DC81E001C080E00F90DF91CF91EB
+:1027C0001F910F91FF90EF90DF90BF90AF909F907F
+:1027D0008F900895EF92FF920F93CF93C82F15DC3F
+:1027E0007C018C2F74DCDC01F70102E005939C91E5
+:1027F00090FF1BC09E7F9C931796ED91FC911897BC
+:10280000309799F0D701C7FF05C016966D917C915E
+:10281000179704C012966D917C9113974C2F81E00D
+:10282000CF910F91FF90EF900994CF910F91FF906E
+:10283000EF900895CF93C82FCDDF8C2FE6DBFC01FE
+:102840001182CF9108950F93CF93C82FDEDBFC0147
+:1028500091819460918301E006938C2FBBDF81E02E
+:10286000CF910F9108951F920F920FB60F921124DE
+:102870000F932F933F934F935F936F937F938F9318
+:102880009F93AF93BF93EF93FF938091CB0487FF08
+:1028900008C080E88093CA040E94A00B0E94100424
+:1028A0007EC08091CB0482FF18C084E08093CA046C
+:1028B0008091602186FF73C08091CC0481FD6FC040
+:1028C00087DD81116CC080914D21813011F4E9DBED
+:1028D00066C0843009F063C021C08091CB0481FFC1
+:1028E00026C082E08093CA048091582186FF57C099
+:1028F0008091CC0481FD53C06BDD811150C080916B
+:102900004D21823041F484E080934D21E8E5F1E2ED
+:1029100002E0069344C0833009F041C0E1E6F1E2F1
+:1029200004E00593E9E5F1E204E0059338C0809105
+:10293000CB0484FF1DC080E18093CA040E94840BF5
+:102940001092C3041092592196E09093582183E489
+:10295000809359211092612190936021809361218D
+:1029600089E091E280935C2190935D2165DB17C043
+:102970008091CB0486FF08C080E48093CA0480E085
+:1029800031DB0E940E040BC08091CB0485FF07C091
+:1029900080E28093CA0481E025DB0E940F04FF914E
+:1029A000EF91BF91AF919F918F917F916F915F91C7
+:1029B0004F913F912F910F910F900FBE0F901F904D
+:1029C00018951F920F920FB60F9211240F931F9319
+:1029D0002F933F934F935F936F937F938F939F9327
+:1029E000AF93BF93CF93DF93EF93FF938091CC048A
+:1029F00081FF1AC082E08093CC048091C504819548
+:102A0000880FE8E5F1E2E81BF109208131812855C2
+:102A1000314283E0369527958A95E1F7822F869596
+:102A200020FD06C0C0E005C0D3DC882319F386C0B2
+:102A3000C0E8C80F8C2FE9DAFC01208125FF7EC099
+:102A400000E20693C11174C080914D21843019F4C5
+:102A500036DBF2DA73C000915A2110915B2180912C
+:102A6000B4239091B523C0914921D0914A219E0170
+:102A7000200F311F8217930718F48C010C1B1D0BBC
+:102A80008091B2239091B323A80169E071E28C0F89
+:102A90009D1F96D0C00FD11FC0934921D0934A21CA
+:102AA0000034110569F480914B2190914C218C0FD9
+:102AB0009D1F2091B0233091B1238217930788F096
+:102AC000C093B423D093B523E091B823F091B923F8
+:102AD000309729F00995811102C0D5DA2FC0E1DACB
+:102AE0002DC08091B4239091B5238C179D07D9F404
+:102AF000E091B823F091B923309779F309958823B1
+:102B000061F320914B2130914C218091492190918A
+:102B10004A21820F931F80934B2190934C21109256
+:102B2000492110924A21E8E5F1E202E0069306C04D
+:102B3000C03811F4DFDB02C08C2FE3DAFF91EF9194
+:102B4000DF91CF91BF91AF919F918F917F916F91C5
+:102B50005F914F913F912F911F910F910F900FBE59
+:102B60000F901F901895AA1BBB1B51E107C0AA1F0D
+:102B7000BB1FA617B70710F0A61BB70B881F991F1E
+:102B80005A95A9F780959095BC01CD01089597FBC2
+:102B9000072E16F4009406D077FD08D0E4DF07FC7A
+:102BA00005D03EF4909581959F4F0895709561955D
+:102BB0007F4F0895EE0FFF1F0590F491E02D0994CB
+:102BC000FB01DC0102C001900D9241505040D8F74A
+:102BD0000895FB01DC0101900D920020E1F70895BA
+:042BE000F894FFCF97
+:102BE40040000CE02E0AFFFFFFFF55800080008D9F
+:102BF4000A870A970A840A000044201F200000283C
+:102C04002023200F20000000090219000101008088
+:102C1400FA0904000001FFFFFF0007058101FF031B
+:102C2400010000001201000200000040EB0394BA0E
+:102C34000002010200010000000300000000000087
+:102C4400000000000000000000004C61627261643A
+:102C54006F72004573706F54656B000004030904C0
+:102C6400646562756731323300020200100020008F
+:0A2C74004000800000010002FF0391
+:00000001FF
diff --git a/Desktop_Interface/android-build/build/intermediates/assets/debug/--Added-by-androiddeployqt--/qt_cache_pregenerated_file_list b/Desktop_Interface/android-build/build/intermediates/assets/debug/--Added-by-androiddeployqt--/qt_cache_pregenerated_file_list
index 5e79be1f..f4f6c443 100644
Binary files a/Desktop_Interface/android-build/build/intermediates/assets/debug/--Added-by-androiddeployqt--/qt_cache_pregenerated_file_list and b/Desktop_Interface/android-build/build/intermediates/assets/debug/--Added-by-androiddeployqt--/qt_cache_pregenerated_file_list differ
diff --git a/Desktop_Interface/android-build/build/intermediates/assets/debug/firmware/labrafirm_0002_01.hex b/Desktop_Interface/android-build/build/intermediates/assets/debug/firmware/labrafirm_0002_01.hex
new file mode 100644
index 00000000..8f7511d2
--- /dev/null
+++ b/Desktop_Interface/android-build/build/intermediates/assets/debug/firmware/labrafirm_0002_01.hex
@@ -0,0 +1,714 @@
+:1000000017C1000031C100002FC100002DC1000048
+:100010002BC1000029C100000C9410090C941F0989
+:1000200023C1000021C100001FC100001DC100004C
+:100030001BC1000019C1000017C1000015C100005C
+:1000400013C1000011C100000FC100000DC100006C
+:100050000BC1000009C1000007C1000005C100007C
+:100060000C94FB090C94060AFFC00000FDC00000C0
+:10007000FBC00000F9C00000F7C00000F5C00000A0
+:10008000F3C00000F1C00000EFC00000EDC00000B0
+:10009000EBC00000E9C00000E7C00000E5C00000C0
+:1000A000E3C00000E1C00000DFC00000DDC00000D0
+:1000B000DBC00000D9C00000D7C00000D5C00000E0
+:1000C000D3C00000D1C00000CFC00000CDC00000F0
+:1000D000CBC00000C9C00000C7C00000C5C0000000
+:1000E000C3C00000C1C00000BFC00000BDC0000010
+:1000F000BBC00000B9C00000B7C00000B5C0000020
+:10010000B3C00000B1C00000AFC00000ADC000002F
+:10011000ABC00000A9C00000A7C000009FC4000041
+:10012000A3C00000A1C000009FC000009DC000004F
+:100130009BC0000099C0000097C0000095C000005F
+:1001400093C0000091C000008FC000000C947009A3
+:100150008BC0000089C0000087C0000085C000007F
+:1001600083C0000081C000007FC000007DC000008F
+:100170007BC0000079C0000077C0000075C000009F
+:1001800073C0000071C000006FC000006DC00000AF
+:100190006BC0000069C0000067C0000065C00000BF
+:1001A00063C0000061C000005FC000005DC00000CF
+:1001B0005BC0000059C0000057C0000055C00000DF
+:1001C00053C0000051C000004FC000004DC00000EF
+:1001D0004BC0000049C0000047C0000045C00000FF
+:1001E00043C0000041C000003FC000003DC000000F
+:1001F0003BC000000C941C140C94D4140F04110484
+:1002000013041504170419041B041D04D70BFD0B5C
+:10021000240C4D0C560C5B0CA00CA50CC40CCB0C88
+:10022000670C6F0C770C820C840C860C8E0C960C71
+:1002300011241FBECFEFCDBFDFE2DEBF10E2A0E092
+:10024000B0E2EAECFBE202C005900D92AA3BB107D6
+:10025000D9F72DE2AAEBB0E201C01D92AC3FB20784
+:10026000E1F794D20C94E315CBCE84E08093560052
+:100270008CE1BCD3809363008BEB8093660080E8B5
+:100280008093650081E08093600088ED84BF1092C8
+:10029000410083E080935000809151008330E1F76A
+:1002A0008091500081608093500088E180935500D8
+:1002B0008091510080FFFCCF80915000806180933D
+:1002C00050008091510084FFFCCF88ED84BF84E012
+:1002D000809340000895E0E7F0E085818E7F85837C
+:1002E000E0E0FAE08FEB9DE586A397A380EE9EE227
+:1002F00080A391A382E0808308958091200A909149
+:10030000210A813E2EE2920718F020919E2306C01A
+:10031000803E2EE2920721F020919B2320936A00D9
+:1003200020910520222321F080910520815033C0A7
+:10033000885F9A42813D974080F11092BA20809167
+:10034000BB209091BC20A091BD20B091BE20019611
+:10035000A11DB11D8093BB209093BC20A093BD2014
+:10036000B093BE208091BB209091BC20A091BD2075
+:10037000B091BE20892F9A2FAB2FBB278093BE232D
+:100380008091BB209091BC20A091BD20B091BE2057
+:100390008093BD2386E08093052080910720909173
+:1003A00008200196B1F4809109208F3F91F080914F
+:1003B0000620811106C0809106208150809306207E
+:1003C00008958091140190911501809307209093D6
+:1003D00008200895009709F45EC00CF457C040E06F
+:1003E00020916B0030E020939C2330939D2320913B
+:1003F0009C2330919D233695322F222737952795C0
+:1004000020939C2330939D2350916A0020919C233C
+:1004100030919D23250F311D20939C2330939D23E4
+:10042000000020919C2330919D232817390728F440
+:1004300010929C2310929D23089520919C2330912B
+:100440009D23280F391F2115304238F08FEF9FE18F
+:1004500080939C2390939D23089520919C23309119
+:100460009D23442329F0A901481B590BCA0102C04E
+:10047000820F931F80939C2390939D2380919C23B4
+:1004800090919D238F7780936A000895919581952F
+:10049000910941E0A5CF0895CF93DF93C091200A41
+:1004A000D091210A80910320909104209E01281B65
+:1004B000390B20939F233093A0238091BA20811180
+:1004C0004BC080919F239091A0238E3C9F4FD4F4EA
+:1004D00080919F239091A0238B369F4F9CF0809119
+:1004E0000220882321F080910220815008C0809151
+:1004F0006A0080939E2381E08093BA208CE08093F1
+:1005000002202AC08CE08093022080919F2390914A
+:10051000A0238A369F4F1CF08FEF9FEF02C081E02F
+:1005200090E08093992390939A2380919F239091B8
+:10053000A0232091992330919A2360E370E00E94D8
+:10054000BA15261B370B2093992330939A23809159
+:10055000992390919A233EDF8091BA20813029F52A
+:1005600080919F239091A023C39794F080910220C3
+:10057000882331F08091022081508093022015C0A1
+:1005800080916A0080939B2383E08093BA200DC002
+:1005900080919F239091A023873991051CF481E0DD
+:1005A00090E002C08FEF9FEF15DFC0930320D09340
+:1005B0000420DF91CF9108958617970779F0681787
+:1005C000790728F49C01261B370BB90109C086174F
+:1005D000970718F4681B790B03C0089560E070E07A
+:1005E000CB010895CF93DF9380910020909101205B
+:1005F000892B51F0809100209091012001978093E8
+:1006000000209093012043C080E490E0809300207C
+:100610009093012080910720909108200196B9F1D4
+:10062000809114019091150120910920263018F431
+:1006300067E771E002C06EEE72E00E94A615EC0161
+:1006400080910720909108208C179D0758F46091A5
+:10065000072070910820CE01AFDF029718F080ECE0
+:100660009DE511C08091072090910820C817D907F7
+:1006700070F46091072070910820CE019DDF0297F1
+:1006800030F08FEB9DE58093360A9093370ADF9127
+:10069000CF910895AC01460F571F861B970B2091F1
+:1006A000200A3091210A24173507C8F72091200A23
+:1006B0003091210A8217930790F70895E0E8F6E059
+:1006C0008FE0808385E0848308951F93CF93DF9329
+:1006D000C0E4D0E0198180E4898340E250E064ED19
+:1006E0007DE280E290E00E94350F1983DF91CF9187
+:1006F0001F9108951F93CF93DF93C0E4D0E0198139
+:1007000080E4898387ED97E20E947D0F81E00E945B
+:100710008F0F1983DF91CF911F91089508950F9343
+:100720001F93842F242F30E0215831099DE7929F99
+:10073000A001939F500D112490910920953048F409
+:10074000843810F049585E4F9091C42027E731E07B
+:1007500004C09091C4202EEE32E0929FB001939F8E
+:10076000700D11249A01260F371FA9014850584DCA
+:100770000FE813E02DE730E060E00E9447131F917F
+:100780000F9108951CBEEEEFF0E409949EDF809176
+:10079000D42D882369F080E2E4EDFDE2A7EDB7E215
+:1007A00001900D928A95E1F71092D727A3DFEADF37
+:1007B00087E08093A200789458DDB0DF82D761D1C2
+:1007C00084D160E080E01BD107D18CE0FBD046D51E
+:1007D000EAD503D673DF60EA70E28AEA93E20E9408
+:1007E000DC15000000000000000000000000000018
+:1007F00000000000000000000000000000008091E8
+:10080000BF20882371F3E091D6258E2F90E08830A9
+:100810009105A0F4FC01E250FF4F0C94CD1581D15D
+:100820000DC0F1D10BC078D209C0FCD207C088D36B
+:1008300005C00ED403C00DD401C07ED41092BF20D9
+:10084000D0CF08950895809114018093B3238091AF
+:1008500015018093B423809124018093B523809166
+:1008600025018093B6238091200A8093BF23809135
+:10087000210A8093C0238091140190911501863440
+:10088000914080F08091140190911501893A914036
+:1008900048F480911401909115018093F42D909368
+:1008A000F52D00008091C220882339F014DD1092CC
+:1008B000C22081E08093C12008958091C1208823C7
+:1008C00041F08091BA20833019F417DD8BDE01C02E
+:1008D000E3DD8091C020882351F080911401909134
+:1008E00015018093F42D9093F52D1092C0208091E6
+:1008F00009202091140130911501853028F481E000
+:100900002737314030F004C081E02E3E324008F0FD
+:1009100080E08093C42008950F931F9381E080931B
+:10092000C7208093C2200FE813E02DE730E048EFA6
+:1009300057E260E081E80E9447132DE730E045E789
+:1009400058E260E082E80E9447132DE730E042EF72
+:1009500058E260E083E80E9447132DE730E04FE65D
+:1009600059E260E084E80E9447132DE730E04CEE46
+:1009700059E260E085E80E9447132DE730E049E640
+:100980005AE260E086E80E94471381E01F910F91D0
+:1009900008951092C720089581E0089581E0089598
+:1009A00010922002982F9C71936890932002881FC8
+:1009B0008827881F880F80932102109222021092AC
+:1009C00026020895E0E0F2E010AA836880AB80E19F
+:1009D00081AB12AA16AA0895E0E0F2E010A683E81F
+:1009E00080A78FE281A712A616A60895AAECB1E00F
+:1009F00092E09C93E82FF0E084911C9208959091EE
+:100A000071009D7F9093710010920002623011F08E
+:100A10009CE101C09EE19093010290E49093020258
+:100A2000811102C080E401C080EC80930302613038
+:100A300011F084E001C083E08093040280E2D6DFFD
+:100A400080930C0281E2D2DF80930D021092180293
+:100A50001092190281E080930002BECF1F920F9284
+:100A60000FB60F9211248F930000000000000000C9
+:100A700081E0809323028F910F900FBE0F901F9003
+:100A80001895CF93DF93E0E7F0E082818B7F82833C
+:100A9000C0E2D3E08DE0888380E4898389E08A83A3
+:100AA00083E3A4DF888782E3A1DF898787E39EDF72
+:100AB0008A8786E39BDF8B87E0E2F6E080818360B4
+:100AC00080831482DF91CF910895E0E7F0E0808188
+:100AD0008E7F808383E8809300010895E0E0F1E059
+:100AE000108A80E4808B10A280A310AA80ABE0E47F
+:100AF000F1E0108280831092C6201092C52081E020
+:100B00008093C4201092A8231092A9231092A623A8
+:100B10001092A72308958093D62581E08093BF206B
+:100B20000895CF93DF9310920920D8DFC0E0D1E081
+:100B30001EAA84E288AB19AA49E54AAB32E03BAB76
+:100B400060910B2070910C206CAB7DAB67ED75E272
+:100B500068AF79AF1AAE9BE39CAF93E090933D01F1
+:100B600010923E0128A9206828AB10924601E0E4CB
+:100B7000F1E0808310924101409342019093430140
+:100B800040910D2050910E20409344015093450117
+:100B900046EC53E2409348015093490110924A01B8
+:100BA00029E320934C0190934D0110924E019081C6
+:100BB00090689083188A90E4988B888B198A95E9BD
+:100BC0009A8B90E19B8B4EEE52E04C8B5D8B888F25
+:100BD000398F1A8E88EF97E28C8F9D8F1E8E68EC6E
+:100BE00070E084EF91E056DD88EC90E08093072080
+:100BF0009093082081E08093062088898068888B04
+:100C0000DF91CF9108951F93CF93DF9311E010935D
+:100C1000092064DFC0E0D1E018AA80E488AB84E05A
+:100C200088AB19AA1AAA4BE44BAB1CAA1DAA1EAA90
+:100C30008AE090E288AF99AF1AAE60EA6CAF38E014
+:100C400030933D0110923E0188A9806A88ABE0EAAA
+:100C5000F8E085E58083808310924601E0E4F1E0CE
+:100C600084E280831092410199E59093420122E051
+:100C700020934301A0910B20B0910C20A09344013C
+:100C8000B0934501A7EDB5E2A0934801B0934901A7
+:100C900010924A019BE390934C0193E090934D0195
+:100CA00010924E0190819068908388A319A295E9D3
+:100CB0009AA34BA34EEE52E04CA35DA368A739A7BD
+:100CC0001AA666EE7AE26CA77DA71EA6888B198A03
+:100CD0009A8B90E19B8B4C8B5D8B888F298F1A8E22
+:100CE00088EF97E28C8F9D8F1E8E68EC70E084EF0A
+:100CF00091E0D0DC88EC90E080930720909308206E
+:100D00001093062088A1806888A388898068888BD2
+:100D1000DF91CF911F9108951F93CF93DF9312E03E
+:100D200010930920DBDEC0E0D1E01EAA84E288AB8C
+:100D300019AA39E53AAB1BAB40910B2050910C201E
+:100D40004CAB5DAB47ED55E248AF59AF1AAE9BE3F4
+:100D50009CAF93E090933D0110923E0128A920683A
+:100D600028AB10924601E0E4F1E08083109241014B
+:100D7000309342019093430120910D2030910E2039
+:100D8000209344013093450126EC33E2209348013F
+:100D90003093490110924A0129E320934C0190932A
+:100DA0004D0110924E01908190689083188A90E4D2
+:100DB000988B888B198A45E94A8B90E19B8B2EEEA4
+:100DC00032E02C8B3D8B888F198F1A8E68EF77E27B
+:100DD0006C8F7D8F1E8E88A319A24AA39BA32CA380
+:100DE0003DA384E388A719A71AA686EE9AE28CA7EA
+:100DF0009DA71EA668EC70E084EF91E04BDC88ECC8
+:100E000090E0809307209093082081E08093062053
+:100E100088898068888B88A1806888A3DF91CF91BA
+:100E20001F9108951F93CF93DF9313E01093092030
+:100E300055DEC0E0D1E010924601E0E4F1E084E24A
+:100E400080831092410129E52093420192E0909322
+:100E5000430140910B2050910C204093440150934A
+:100E6000450147ED55E240934801509349011092E6
+:100E70004A019BE390934C0110934D0110924E0157
+:100E80009081906890831EAA88AB19AA2AAB1BABED
+:100E900020910D2030910E202CAB3DAB26EC33E29F
+:100EA00028AF39AF1AAE99E39CAF10933D01109271
+:100EB0003E0198A9906898AB18A250E458A394E01A
+:100EC00098A319A21AA24BE44BA31CA21DA21EA216
+:100ED0002AE030E228A739A71AA630EA3CA728E082
+:100EE0002DA71EA698A1906A98A395E59093A008B7
+:100EF000188A588B888B198A85E98A8B4B8B8EEEE2
+:100F000092E08C8B9D8B388F298F1A8E88EF97E219
+:100F10008C8F9D8F1E8E68EC70E084EF91E0BADBC1
+:100F200088EC90E0809307209093082081E08093E4
+:100F3000062088898068888BDF91CF911F91089562
+:100F40001F93CF93DF9314E010930920C7DDC0E017
+:100F5000D1E018AA80E488AB18AB19AA1AAA3BE41E
+:100F60003BAB1CAA1DAA1EAA8AE090E288AF99AFEB
+:100F70001AAE50EA5CAF88E080933D0110923E01CA
+:100F800098A9906A98AB95E59093A00810924601B5
+:100F9000E0E4F1E094E290831092410129E520938E
+:100FA000420122E02093430160910B2070910C20BC
+:100FB000609344017093450167ED75E260934801C9
+:100FC0007093490110924A012BE320934C0123E0D6
+:100FD00020934D0110924E01208120682083988B30
+:100FE000198A45E94A8B3B8B2EEE32E02C8B3D8BE8
+:100FF000588F898F1A8E68EF77E26C8F7D8F1E8EE7
+:1010000098A319A24AA39AE49BA32CA33DA393EC13
+:1010100098A789A71AA686EE9AE28CA79DA71EA676
+:1010200068EC70E084EF91E035DB88EC90E0809331
+:1010300007209093082081E08093062088898068AB
+:10104000888B88A1806888A3DF91CF911F91089534
+:10105000FFCFCF93DF9386E0809309203FDDC0E090
+:10106000D1E01EAA84E288AB19AA39E53AAB93E035
+:101070009BAB40910D2050910E204CAB5DAB46ECEC
+:1010800053E248AF59AF1AAE29E32CAF90933D011C
+:1010900010923E0128A9206828AB10924601E0E496
+:1010A000F1E08083109241013093420132E03093AD
+:1010B000430140910B2050910C20409344015093E8
+:1010C000450147ED55E24093480150934901109284
+:1010D0004A012BE320934C0190934D0110924E0155
+:1010E000208120682083188A20E4288B888B998BA4
+:1010F00095E99A8B90E19B8B4CED55E04C8B5D8B89
+:10110000888F398F1A8E88EF97E28C8F9D8F1E8E75
+:1011100068EC70E084EF91E0BDDA80E991E08093C3
+:1011200007209093082081E08093062088898068BA
+:10113000888BDF91CF910895CF93DF9387E08093E1
+:101140000920CCDCC0E0D1E01EAA94E298AB19AA39
+:1011500039E53AAB83E08BAB40910D2050910E20E6
+:101160004CAB5DAB46EC53E248AF59AF1AAE29E346
+:101170002CAF80933D0110923E0128A9206828AB36
+:1011800010924601E0E4F1E0908310924101309327
+:10119000420132E03093430140910B2050910C20EA
+:1011A000409344015093450147ED55E24093480177
+:1011B0005093490110924A012BE320934C018093F4
+:1011C0004D0110924E01208120682083188A20E46E
+:1011D000288B25E2288B898B85E98A8B80E18B8B94
+:1011E0004CED55E04C8B5D8B988F398F1A8E88EFC4
+:1011F00097E28C8F9D8F1E8E68EC70E084EF91E0FB
+:1012000049DA80E991E0809307209093082081E0FB
+:101210008093062088898068888BDF91CF9108951C
+:101220001F920F920FB60F9211248F9381E080933B
+:1012300003018F910F900FBE0F901F9018951F9272
+:101240000F920FB60F9211248F9382E080930301C7
+:101250008F910F900FBE0F901F901895E0E7F0E070
+:1012600083818C7F838384818C7F848380818D7F45
+:101270008083E0E8F1E080EC8283128688EC818351
+:101280001186A0E0B8E034E03C9323E011962C9363
+:10129000119714961C92149785ED91E096968D9374
+:1012A0009C93979716961C921697E0E4F8E030838B
+:1012B0002183148286A397A31682E0E6F6E080815C
+:1012C00080618083E0E4F9E083E18183148282E03D
+:1012D0008683A6A3B7A310A611A681E080830895F4
+:1012E0001F920F920FB60F9211242F933F934F939B
+:1012F0005F938F939F93CF93DF931F92CDB7DEB70A
+:101300008FEF80934C0980910920873031F48091D0
+:101310002C02898390912D0202C090912C02809121
+:10132000C320891B209168093091690982308CF0B3
+:101330002A3F374070F4209168093091690989305B
+:101340001CF481E090E002C086E090E0820F931FE1
+:1013500018C020916809309169098F3FB4F4273093
+:10136000310598F02091680930916909883F1CF097
+:1013700081E090E002C086E090E0A901481B590B93
+:10138000CA0180937809909379090F90DF91CF91EA
+:101390009F918F915F914F913F912F910F900FBE31
+:1013A0000F901F901895E0E7F0E083818F7E838394
+:1013B000E0E4F6E080818A6A80838FEF848388E5A9
+:1013C000828BE0EAF8E080E3838384EC858387E026
+:1013D0008683178288E184830895E0E7F0E08381C3
+:1013E000877F8383E0ECF8E080E48083118288E5E6
+:1013F0008093550608951F920F920FB60F921124F5
+:1014000000000F900FBE0F901F9018951F920F9223
+:101410000FB60F9211248F93EF93FF93E0EAF8E059
+:1014200080818083FF91EF918F910F900FBE0F907D
+:101430001F9018959FB7F894A0E5B0E016968C9190
+:101440001697897F16968C931697E0E6F0E080E871
+:1014500085838BEB868316968C91169784601696FF
+:101460008C938081816080839FBF08959FB7F8949B
+:10147000E82FF0E0E059FF4F60958081682360839A
+:101480009FBF0895CF93863011F0C0E001C0C8E13E
+:101490008091510081FD0DC09FB7F894809150005C
+:1014A0008260809350009FBF8091510081FFFCCFEC
+:1014B000C1DF6C2F636084E490E0BCD460E480E022
+:1014C000CF91D4CF8091C82008958091C8208130D9
+:1014D00009F45FCA0895F0D0FC0183818093C8208D
+:1014E000811101C019CA81E008959091C625892F04
+:1014F000807697FF07C0803491F48091C7258111D1
+:101500000EC04CCA803459F48091C725811107C0A0
+:101510008091CC259091CD25892B09F03DCA80E0A2
+:1015200008958091C8258F770C94C9129091D0208E
+:10153000911102C080E00895E091CD20F091CE207D
+:101540000190F081E02D94818917A0F7E093CB20E2
+:10155000F093CC20228133812E0F3F1FE217F30737
+:1015600098F49181943061F49281891309C0938138
+:10157000691306C0E093CB20F093CC2081E008955E
+:101580009081E90FF11DEACFE093CB20F093CC20BE
+:10159000D1CFE091CD20F091CE200190F081E02DCF
+:1015A000228133812E0F3F1FFC014081E40FF11D8A
+:1015B000E217F30748F48181843031F0853039F047
+:1015C0008081E80FF11DF4CF80E090E00895CF0115
+:1015D00008951F93CF93DF93182FA8DF882339F145
+:1015E000C091CB20D091CC20CE01D3DFEC01892B50
+:1015F00041F04C815D816B818A81D8D78111F4CF14
+:1016000016C0E091CD20F091CE2092818381E92F08
+:10161000F82FE10FF11DE10FF11D0190F081E02D98
+:101620000190F081E02DDF91CF911F91099480E02E
+:10163000DF91CF911F910895EF92FF921F93CF9367
+:10164000DF93C82F60E072DF811102C010E02DC06F
+:10165000E091CD20F091CE2092818381E92FF82F67
+:10166000EC0FF11DEC0FF11DE080F180D701169613
+:10167000ED91FC9117970995682F8C2F57DF182F44
+:10168000882321F3C091CB20D091CC20CE0181DFE3
+:10169000EC01892B21F08A810E940314F7CFD70136
+:1016A0001296ED91FC9113970995812FDF91CF91BF
+:1016B0001F91FF90EF9008958091CB209091CC20C6
+:1016C0000895FBC6CF938091D020811108C010925D
+:1016D000D0201092D4201092D520CF910895C0E050
+:1016E000E091CD20F091CE200190F081E02D848119
+:1016F000C81768F78C2FA0DFCF5FF2CFCF93809110
+:10170000D0208823F1F0C0E0E091CD20F091CE20F0
+:10171000A081B18114968C91C81798F4928183812D
+:10172000E92FF82FEC0FF11DEC0FF11D0190F08166
+:10173000E02D0084F185E02D309709F00995CF5F09
+:10174000E3CFCF910895EF92FF920F931F93CF9322
+:10175000DF931F92CDB7DEB71092D0251092D1251E
+:101760001092D2251092D3251092D4251092D5250F
+:101770008091C62587FF07C02091CC253091CD25CB
+:10178000232B09F44EC3982F9076903409F00BC1A7
+:10179000E091C7258E2F90E0FC01E05AF109EA3074
+:1017A000F10508F0CDC2EA5FFE4F0C94CD1581E043
+:1017B0008093C02080910720909108208093B723C8
+:1017C00080910720909108209093B82380919E23C8
+:1017D0008093B92380919B238093BA2380916A00E0
+:1017E0008093BB2380916B008093BC236091CC25B8
+:1017F0007091CD258AEA93E2D4C0109200088091BE
+:10180000C8259091C9258093360890933708809118
+:10181000CA258F70809300086091CC257091CD25EA
+:1018200086EC93E2BCD620910D2030910E20809161
+:10183000CC259091CD252817390709F4F0C2809363
+:101840000D2090930E2026C0109240088091C8254C
+:101850009091C92580937608909377088091CA2546
+:101860008F70809340086091CC257091CD2587EDD5
+:1018700095E295D620910B2030910C208091CC25BB
+:101880009091CD252817390709F4C9C280930B2000
+:1018900090930C208091092051C0109268091092F9
+:1018A00069098091C8258093C320B9C28091C82559
+:1018B00080932406B4C2E091C825F091C925E83090
+:1018C000F10508F03DC2E05FFE4F0C94CD1560E0DD
+:1018D00080E095D88091CA2563D880E02FC060E071
+:1018E00080E08DD88091CA255BD881E027C061E077
+:1018F00081E085D88091CA2553D88091CB2562D8C4
+:1019000082E01CC083E01AC084E018C060E080E080
+:1019100076D88091CA2544D885E010C061E080E087
+:101920006ED88091CA253CD886E008C062E080E08D
+:1019300066D88091CA25806833D887E0ECD86FC21A
+:101940008091C825809384066AC28091C8259091B1
+:10195000C925892B91F00E94650380E2E4EDFDE248
+:10196000A7EDB7E201900D928A95E1F781E08093AF
+:10197000D7270E947A030E946503E9E7F0E091E02F
+:1019800088EDF89484BF90836091CC257091CD252B
+:101990008AEA90E206C06091CC257091CD2589EA53
+:1019A00090E2FDD53CC29111CBC187FFFCC02091D4
+:1019B000CC253091CD252115310509F4C1C18F7198
+:1019C00009F09EC08091C725863071F0883009F4F7
+:1019D0008EC08111B5C12230310509F0B1C162E07C
+:1019E00070E084ED90E2DDCF8091C8259091C9250B
+:1019F000292F332722303105A1F064F4213031053D
+:101A000009F09EC18091192090911A20DC016C91FF
+:101A100070E05BC02330310589F12F30310509F1C9
+:101A20008FC1E0911920F0911A202189821708F0C6
+:101A300087C19927880F991F880F991FE0911B2054
+:101A4000F0911C20E80FF91F80819181FC016281D7
+:101A50007381A5D5E091CE25F091CF2582E08183D9
+:101A600035C080911D2090911E20009709F468C117
+:101A7000DC0112966D917C91139727C099278130D4
+:101A8000910569F038F0029709F05AC168E08AE8D8
+:101A900090E208C064E070E08CE990E216C067E074
+:101AA00083E990E2282FAAE7B0E2FC01819190E05F
+:101AB0008D939D938E2F821B8617C0F3660F6E5FEA
+:101AC0006093782070E088E790E269D58091CC251A
+:101AD0009091CD252091D0253091D1258217930763
+:101AE00008F09DC18093D0259093D12598C12130D5
+:101AF000310509F025C161E070E080ED90E251CF41
+:101B00008130C9F58091C7258A3009F019C121308B
+:101B1000310509F015C18091D020882309F410C146
+:101B2000E090CA25F090CB250091CD201091CE20D9
+:101B3000D801ED91FC918481E81608F001C160E0C4
+:101B40008E2DF4DC882309F4FBC0FF24EE0CFF1C6F
+:101B5000F801828193818E0D9F1DDC01ED91FC9136
+:101B60000680F781E02D09958093D22061E070E036
+:101B700082ED90E216CF823009F0E2C08091C72555
+:101B80008111DEC02230310509F0DAC08091CA250A
+:101B90005ED590E08093C9209093CA2062E070E007
+:101BA00089EC90E2FECE8F7109F07DC08091C7254F
+:101BB000833009F4C5C018F48130A1F0C1C085306C
+:101BC00019F0893039F1BCC08091CC259091CD2598
+:101BD000892B09F0B5C081E99AE08093D2259093D2
+:101BE000D3251DC18091CC259091CD25892B09F05D
+:101BF000A7C08091C8259091C925019709F0A0C080
+:101C00008091D4209091D5208D7F8093D420909383
+:101C1000D52005C18091CC259091CD25892B09F047
+:101C20008FC0BAD4882309F48BC02091C825309185
+:101C3000C9253327E0911920F0911A20818990E07D
+:101C40008217930708F47CC03DDD8091C8259091F0
+:101C5000C9258093D020882309F4E1C099278150B9
+:101C6000904C880F991F880F991F20911B2030914D
+:101C70001C20820F931F8093CD209093CE2010E0E4
+:101C8000E091CD20F091CE200190F081E02D848173
+:101C9000181708F0C4C060E0812F9BDC882309F48A
+:101CA0004FC01F5FEDCF8130F1F48091C7258B309D
+:101CB00009F046C08091CC259091CD25892B09F063
+:101CC0003FC08091D020882309F43AC01091CA25E2
+:101CD0006091C825812F6983AFDC6981882381F1F8
+:101CE000812F77DC2BC0823059F58091C725813058
+:101CF00019F0833089F024C08091CC259091CD25B6
+:101D0000892BF1F48091C8259091C925892BC1F4C4
+:101D10008091CA25A3D412C08091CC259091CD2565
+:101D2000892B71F48091C8259091C925892B41F4A4
+:101D30008091CA2538D58091CA256ED581116FC092
+:101D40008091C6258F718130B9F58091D02088238C
+:101D500099F1E090CA25F090CB250091CD2010910B
+:101D6000CE20D801ED91FC918481E81628F560E041
+:101D70008E2DDCDB882301F1F701FF27EE0FFF1F1B
+:101D8000D80112968D919C911397E80FF91F00814D
+:101D90001181D8011696ED91FC9117970995682F3E
+:101DA0008E2DC4DB882341F0D8011496ED91FC916F
+:101DB00015970995811133C08091C6258F718230A6
+:101DC00081F58091D020882361F1F12CE091CD2024
+:101DD000F091CE20A081B18114968C91F81608F56F
+:101DE00092818381E92FF82FEF0DF11DEF0DF11D89
+:101DF00000811181D8011696ED91FC9117970995F4
+:101E0000682F8F2D93DB882361F0D8011496ED9114
+:101E1000FC9115970995811102C0F394D7CF81E009
+:101E200001C080E00F90DF91CF911F910F91FF9043
+:101E3000EF9008951BBEFC0128ED24BF6083089538
+:101E40008091CF0187FDFCCF08951F93CF93DF933F
+:101E5000C0ECD1E01A858A8761E08BEC91E0EADF83
+:101E60001A87DF91CF911F910895CF92DF92EF9261
+:101E7000FF920F931F93CF93DF9300D0CDB7DEB7C0
+:101E80008C017B0149835A83DBDF8CECC82EDD2477
+:101E9000D394F601908198609083B801705F498176
+:101EA0005A81C70180D6F6018081877F80830F9099
+:101EB0000F90DF91CF911F910F91FF90EF90DF90E6
+:101EC000CF900895CF93DF9300D0CDB7DEB76A836C
+:101ED0008983B6DFACECB1E09C9198609C938981DA
+:101EE000E82FF0E0F05F6A8160838C91877F8C93AC
+:101EF0000F900F90DF91CF9108950F931F93CF9381
+:101F00008C019EDFC0E0F80161918F018C2FDADF38
+:101F1000CF5FC032C1F7CF911F910F910895CF933A
+:101F2000DF931F92CDB7DEB789838ADF898120E2F4
+:101F3000829FC0011124E0ECF1E012829183808342
+:101F400085E30F90DF91CF9180CF4091CA01E62FBA
+:101F5000F72F8093CA0184914093CA010895E82F16
+:101F6000F0E0EA50F24D80818F3F09F4FFCF9FB738
+:101F7000F89480818F5F80839FBF0895E82FF0E001
+:101F8000EA50F24D8081811101C0FFCF9FB7F894D4
+:101F90008081815080839FBF0895CF93C82F809107
+:101FA0009823C11105C0882339F081E0E7DF04C020
+:101FB000811102C081E0D3DFC0939823CF910895AF
+:101FC000282F2F70082E000C990B392F331F332721
+:101FD000331F832F90E0820F911D820F911D23E00C
+:101FE000880F991F2A95E1F78C5D9C4D08950F93FA
+:101FF000E8ECF4E080818F7D808380818F7D808319
+:10200000ECE2F3E202E0059310922E2310922F23CC
+:1020100000E2069300E40693E4E2F3E200E20693B2
+:1020200000E40693E6ECF5E214861586168617861C
+:1020300012861386109207230F9108950F9385E05F
+:1020400080930723EDE2F3E204E00593E5E2F3E297
+:1020500004E005930F9108950F9383E08093072385
+:1020600010922E2310922F23ECE2F3E202E006936B
+:102070000F910895E091D225F091D325309709F082
+:1020800009940895282F2F70082E000C990B392FD2
+:10209000331F3327331F832F90E0820F911D820F50
+:1020A000911D029749E0489F9001499F300D1124EE
+:1020B000C901895A9D4D08958F929F92AF92BF9208
+:1020C000DF92EF92FF920F931F93CF93DF93D82E5F
+:1020D000D9DFEC018D2D74DF7C01DC011196EC91D0
+:1020E000E770E150E73040F4F0E0EE0FFF1FE455F9
+:1020F000FF4D0081118102C008E010E0ED81FE81FA
+:102100002B813C814881D701D7FE48C016968D911E
+:102110009C9117978E0F9F1F8D839E838217930725
+:1021200061F1281B390B2115B4E03B0738F02FEF84
+:1021300033E0C901B8010AD5281B390B41FF0AC099
+:10214000C901B80103D5AC0191E0452B09F090E03D
+:10215000892F01C080E0988180FB91F99883F70175
+:10216000168217822283338329813A818D819E8151
+:10217000820F931F848395830EC041FF71C04D7FF2
+:102180004883D70116961D921C92179712961D929E
+:102190001C921397F70102E006937BC01296AD9054
+:1021A000BC90139742FF10C089809A80C901B80182
+:1021B000CDD4B0E4DB9EB001112469567F4DAC0153
+:1021C000C4018E0F9F1FEFD48D819E818A0D9B1DB0
+:1021D0008D839E832B813C812817390710F42D8332
+:1021E0003E83F70186819781A816B906C9F58D81CE
+:1021F0009E8182179307A1F1281B390B2115F4E06A
+:102200003F0710F02FEF33E0C901B8019FD4281B1E
+:10221000390BD70112961D921C9213972017310784
+:1022200078F4888184608883B0E4DB9EC001112447
+:1022300089569F4DF7018483958306831783AACF20
+:1022400049815A818D819E81840F951FD7011496F3
+:102250008D939C93159716962D933C9317979ACF31
+:10226000888180FF16C08E7F8883EF81F885309744
+:1022700081F06D817E814D2D80E0DF91CF911F91A6
+:102280000F91FF90EF90DF90BF90AF909F908F9055
+:102290000994DF91CF911F910F91FF90EF90DF9004
+:1022A000BF90AF909F908F9008950F93CF93DF933F
+:1022B00080910723833029F4DDDEDF91CF910F91E8
+:1022C00096CE2091032330910423C091D025D09144
+:1022D000D125C21BD30B61F5809105239091062374
+:1022E000820F931F80930523909306232091CC2582
+:1022F0003091CD252817390721F08091D6208823E9
+:1023000031F084E080930723E4E2F3E236C0E09109
+:10231000D425F091D525309799F00995882381F03F
+:102320001092032310920423C091D025D091D1257F
+:10233000C034D10528F01092D620C0E4D0E003C00C
+:1023400081E08093D620C0932E23D0932F238091B9
+:102350000323909104232091CE253091CF25280F7F
+:10236000391F2093302330933123C80FD91FC093D6
+:102370000323D0930423ECE2F3E202E00693DF911F
+:10238000CF910F9108950F93CF93DF931F92CDB705
+:10239000DEB78091CC0480FF65C021E02093CC049F
+:1023A00084E293E2FC0100E80693ECE2F3E200E849
+:1023B00006932093CA04FC0100E106938091072351
+:1023C000882329F08350823008F454DE10DE809197
+:1023D000262390912723089709F046C088E0E3EC74
+:1023E000F2E2A6ECB5E201900D928A95E1F78091B8
+:1023F000C80480628093C8048091C804806280937E
+:10240000C804A1D9811102C019DE2EC09091C62541
+:1024100097FF0EC0109205231092062310920323FB
+:102420001092042392E09093072389833EDF08C033
+:102430002091CC253091CD25232B21F489830CDEEE
+:10244000898113C010920523109206231092032352
+:102450001092042391E090930723E4E2F3E202E078
+:10246000069303C080E001C081E00F90DF91CF911F
+:102470000F910895CF93CFB7F89481E08EDDEAEC09
+:10248000F4E080E4808380E28083E1ECF4E080810A
+:1024900081608083A9ECB4E08C9182608C93E8EC3D
+:1024A000F4E08081806480838C9181608C93808152
+:1024B00080688083CFBFCF910895CF931092600042
+:1024C00080E30E94420A8091C00480648093C0042B
+:1024D00081E080936000CFB7F89480E090E0FC0149
+:1024E00023E0EE0FFF1F2A95E1F7E85FFC4D158E04
+:1024F00001968E30910599F780E090E039E0389FA1
+:10250000F001399FF00D1124E95AFD4D20812E7FF5
+:10251000208301968C30910591F76AE170E082E0AA
+:1025200014DD8F3F09F48FE18093FA046BE170E0D2
+:1025300082E00BDD8F3F09F48FE18093FB048091F3
+:10254000C00486608093C0048091C004806880933A
+:10255000C0048091C00480618093C00484E293E24F
+:102560008093C6049093C7048091C00480628093D6
+:10257000C0048FEF8093C5048091C804826080936B
+:10258000C8041092982385E0EADC74DFCFBFCF91B6
+:1025900008958093C30408958091C3040895E6ECE0
+:1025A000F5E2808791876287738708950F931F9361
+:1025B000CF93DF931F92CDB7DEB78A01698300DD29
+:1025C000FC018181807C698181113AC06370613036
+:1025D00019F020F080E803C080EC01C080E40038EE
+:1025E0001105E9F058F400321105A9F00034110585
+:1025F000A1F000311105C9F491E018C0011592E075
+:10260000190779F00F3F93E0190769F001151140A0
+:1026100061F495E00BC092E009C093E007C094E03C
+:1026200005C096E003C097E001C090E0118226E06B
+:102630002083982B918381818062818381E001C016
+:1026400080E00F90DF91CF911F910F910895B8DC3A
+:10265000FC01818182FB882780F90895CF93C82FE0
+:10266000AFDCFC01818182FF0FC091819B7F918350
+:102670008C2F08DDFC01908190FF06C09E7F908327
+:102680000780F085E02D099581E0CF9108958F9224
+:102690009F92AF92BF92DF92EF92FF920F931F93A0
+:1026A000CF93DF931F92CDB7DEB7D82E5A017901B1
+:1026B0006983E8DC4C018D2D83DC9C01DC011196E3
+:1026C0008C911197807C6981882309F45EC01196F2
+:1026D0008C911197807C803C21F011968C9182FD29
+:1026E00054C09FB7F894F401808180FF02C09FBF5F
+:1026F0004CC0816080839FBFF401A182B282E382DB
+:10270000F482158216820783108791E0611104C05C
+:10271000E114F10409F090E0D4018C9190FB81F96F
+:102720008B7F8C93D7FE04C0F9011682178229C0D3
+:10273000D90111968C911197807C803CC9F4119637
+:10274000EC91E770E150E73040F4F0E0EE0FFF1F4E
+:10275000E455FF4D6081718102C068E070E0C701FF
+:10276000F5D1892B29F0F40180818E7F80830DC003
+:10277000D90112961D921C92139716961D921C92C7
+:1027800017978D2D99DC81E001C080E00F90DF91DB
+:10279000CF911F910F91FF90EF90DF90BF90AF907E
+:1027A0009F908F900895EF92FF920F93CF93C82F31
+:1027B00007DC7C018C2F66DCDC01F70102E005936D
+:1027C0009C9190FF1BC09E7F9C931796ED91FC916E
+:1027D0001897309799F0D701C7FF05C016966D91ED
+:1027E0007C91179704C012966D917C9113974C2F92
+:1027F00081E0CF910F91FF90EF900994CF910F91CD
+:10280000FF90EF900895CF93C82FCDDF8C2FD8DBAA
+:10281000FC011182CF9108950F93CF93C82FD0DB85
+:10282000FC0191819460918301E006938C2FBBDFC2
+:1028300081E0CF910F9108951F920F920FB60F92E2
+:1028400011240F932F933F934F935F936F937F9335
+:102850008F939F93AF93BF93CF93EF93FF93809109
+:10286000CB0487FF08C080E88093CA040E947E0BD7
+:102870000E94230486C08091CB0482FF18C084E0AC
+:102880008093CA0480912C2386FF7BC08091CC0466
+:1028900081FD77C078DD811174C08091072381307C
+:1028A00011F4DADB6EC0843009F06BC021C0809176
+:1028B000CB0481FF26C082E08093CA048091242348
+:1028C00086FF5FC08091CC0481FD5BC05CDD81111F
+:1028D00058C080910723823041F484E0809307231D
+:1028E000E4E2F3E202E006934CC0833009F049C011
+:1028F000EDE2F3E204E00593E5E2F3E204E00593A0
+:1029000040C08091CB0484FF25C080E18093CA043D
+:10291000C1E08C2F48DF8C2F806845DFCF5FC63049
+:10292000C1F70E94620B1092C30410922523C0933A
+:10293000242383E48093252310922D23C0932C23FA
+:1029400080932D2383EC92E2809328239093292374
+:102950004EDB17C08091CB0486FF08C080E48093D3
+:10296000CA0480E01ADB0E9421040BC08091CB04D2
+:1029700085FF07C080E28093CA0481E00EDB0E94DD
+:102980002204FF91EF91CF91BF91AF919F918F91D1
+:102990007F916F915F914F913F912F910F910F9088
+:1029A0000FBE0F901F9018951F920F920FB60F92A7
+:1029B00011240F931F932F933F934F935F936F9324
+:1029C0007F938F939F93AF93BF93CF93DF93EF93B7
+:1029D000FF938091CC0481FF1AC082E08093CC04E5
+:1029E0008091C5048195880FE4E2F3E2E81BF109C8
+:1029F000208131812452334283E0369527958A9590
+:102A0000E1F7822F869520FD06C0C0E005C0BBDC43
+:102A1000882319F386C0C0E8C80F8C2FD1DAFC01D7
+:102A2000208125FF7EC000E20693C11174C0809111
+:102A30000723843019F41EDBDADA73C000912623F1
+:102A4000109127238091D0259091D125C091032307
+:102A5000D09104239E01200F311F8217930718F491
+:102A60008C010C1B1D0B8091CE259091CF25A801C8
+:102A700063EC72E28C0F9D1F96D0C00FD11FC093E4
+:102A80000323D09304230034110569F480910523B6
+:102A9000909106238C0F9D1F2091CC253091CD2540
+:102AA0008217930788F0C093D025D093D125E09169
+:102AB000D425F091D525309729F00995811102C0D0
+:102AC000BDDA2FC0C9DA2DC08091D0259091D125D3
+:102AD0008C179D07D9F4E091D425F091D525309736
+:102AE00079F30995882361F320910523309106231A
+:102AF0008091032390910423820F931F80930523D9
+:102B0000909306231092032310920423E4E2F3E24D
+:102B100002E0069306C0C03811F4C7DB02C08C2F58
+:102B2000CBDAFF91EF91DF91CF91BF91AF919F9160
+:102B30008F917F916F915F914F913F912F911F9155
+:102B40000F910F900FBE0F901F901895AA1BBB1BE3
+:102B500051E107C0AA1FBB1FA617B70710F0A61B9D
+:102B6000B70B881F991F5A95A9F780959095BC01BE
+:102B7000CD01089597FB072E16F4009406D077FD3B
+:102B800008D0E4DF07FC05D03EF4909581959F4F77
+:102B90000895709561957F4F0895EE0FFF1F059082
+:102BA000F491E02D0994FB01DC0102C001900D922B
+:102BB00041505040D8F70895FB01DC0101900D927F
+:0A2BC0000020E1F70895F894FFCF1C
+:102BCA0040000CE02E0AFFFFFFFF55800080006BDB
+:102BDA000A650A750A620A000064201F200000289C
+:102BEA002023200F2000000009023C000101008080
+:102BFA00FA0904000006FFFFFF00070581018000B3
+:102C0A000107058201800001070583018000010791
+:102C1A0005840180000107058501800001070586FA
+:102C2A00018000011201000200000040EB0394BA87
+:102C3A000002010200010000000300000000000081
+:102C4A00000000000000000000004C616272616434
+:102C5A006F72004573706F54656B000004030904BA
+:102C6A00646562756731323300010200100020008A
+:0A2C7A004000800000010002FF038B
+:00000001FF
diff --git a/Desktop_Interface/android-build/build/intermediates/assets/debug/firmware/labrafirm_0002_02.hex b/Desktop_Interface/android-build/build/intermediates/assets/debug/firmware/labrafirm_0002_02.hex
new file mode 100644
index 00000000..db3bd750
--- /dev/null
+++ b/Desktop_Interface/android-build/build/intermediates/assets/debug/firmware/labrafirm_0002_02.hex
@@ -0,0 +1,714 @@
+:100000001FC1000039C1000037C1000035C1000028
+:1000100033C1000031C100000C94F0080C94200999
+:100020002BC1000029C1000027C1000025C100002C
+:1000300023C1000021C100001FC100001DC100003C
+:100040001BC1000019C1000017C1000015C100004C
+:1000500013C1000011C100000FC100000DC100005C
+:100060000C941D0A0C94280A07C1000005C1000069
+:1000700003C1000001C10000FFC00000FDC000007E
+:10008000FBC00000F9C00000F7C00000F5C0000090
+:10009000F3C00000F1C00000EFC00000EDC00000A0
+:1000A000EBC00000E9C00000E7C00000E5C00000B0
+:1000B000E3C00000E1C00000DFC00000DDC00000C0
+:1000C000DBC00000D9C00000D7C00000D5C00000D0
+:1000D000D3C00000D1C00000CFC00000CDC00000E0
+:1000E000CBC00000C9C00000C7C00000C5C00000F0
+:1000F000C3C00000C1C00000BFC00000BDC0000000
+:10010000BBC00000B9C00000B7C00000B5C000000F
+:10011000B3C00000B1C00000AFC0000070C4000058
+:10012000ABC00000A9C00000A7C00000A5C000002F
+:10013000A3C00000A1C000009FC000009DC000003F
+:100140009BC0000099C0000097C000000C94920969
+:1001500093C0000091C000008FC000008DC000005F
+:100160008BC0000089C0000087C0000085C000006F
+:1001700083C0000081C000007FC000007DC000007F
+:100180007BC0000079C0000077C0000075C000008F
+:1001900073C0000071C000006FC000006DC000009F
+:1001A0006BC0000069C0000067C0000065C00000AF
+:1001B00063C0000061C000005FC000005DC00000BF
+:1001C0005BC0000059C0000057C0000055C00000CF
+:1001D00053C0000051C000004FC000004DC00000DF
+:1001E0004BC0000049C0000047C0000045C00000EF
+:1001F00043C000000C9433140C94E114FC03FE0380
+:10020000000402040404060408040A041C041E0476
+:10021000200422042404290426042804F90B1F0CBA
+:10022000460C6F0C780C7D0CC50CCA0CE90CF00C5C
+:10023000890C910C990CA40CA60CA80CB10CBA0C4E
+:1002400011241FBECFEFCDBFDFE2DEBF10E2A0E082
+:10025000B0E2E4EEFBE202C005900D92AA39B107CC
+:10026000D9F72BE2AAE9B0E201C01D92A03EB20785
+:10027000E1F779D20C94F015C3CE84E08093560058
+:100280008CE185D3809363008BEB8093660080E8DC
+:100290008093650081E08093600088ED84BF1092B8
+:1002A000410083E080935000809151008330E1F75A
+:1002B0008091500081608093500088E180935500C8
+:1002C0008091510080FFFCCF80915000806180932D
+:1002D00050008091510084FFFCCF88ED84BF84E002
+:1002E000809340000895E0E7F0E085818E7F85836C
+:1002F000E0E0FAE08FEB9DE586A397A380EE9EE217
+:1003000080A391A382E0808308958091200A909138
+:10031000210A813E2EE2920718F02091822106C028
+:10032000803E2EE2920721F020917F2120936A00E7
+:1003300020910520222321F080910520815033C097
+:10034000885F9A42813D974080F110929A20809177
+:100350009B2090919C20A0919D20B0919E20019681
+:10036000A11DB11D80939B2090939C20A0939D2064
+:10037000B0939E2080919B2090919C20A0919D20E5
+:10038000B0919E20892F9A2FAB2FBB278093A2215B
+:1003900080919B2090919C20A0919D20B0919E20C7
+:1003A0008093A12186E08093052080910720909181
+:1003B00008200196B1F4809109208F3F91F080913F
+:1003C0000620811106C0809106208150809306206E
+:1003D00008958091140190911501809307209093C6
+:1003E00008200895009709F45EC00CF457C040E05F
+:1003F00020916B0030E02093802130938121209167
+:100400008021309181213695322F222737952795EB
+:10041000209380213093812150916A002091802186
+:1004200030918121250F311D20938021309381212E
+:10043000000020918021309181212817390728F46C
+:100440001092802110928121089520918021309175
+:100450008121280F391F2115304238F08FEF9FE19D
+:100460008093802190938121089520918021309163
+:100470008121442329F0A901481B590BCA0102C05C
+:10048000820F931F809380219093812180918021FE
+:10049000909181218F7780936A000895919581953D
+:1004A000910941E0A5CF0895CF93DF93C091200A31
+:1004B000D091210A80910320909104209E01281B55
+:1004C000390B209383213093842180919A208111CC
+:1004D0004BC080918321909184218E3C9F4FD4F416
+:1004E00080918321909184218B369F4F9CF0809145
+:1004F0000220882321F080910220815008C0809141
+:100500006A008093822181E080939A208CE080931E
+:1005100002202AC08CE08093022080918321909158
+:1005200084218A369F4F1CF08FEF9FEF02C081E03D
+:1005300090E080937D2190937E2180918321909102
+:10054000842120917D2130917E2160E370E00E9422
+:10055000C715261B370B20937D2130937E21809178
+:100560007D2190917E213EDF80919A20813029F576
+:100570008091832190918421C39794F080910220EF
+:10058000882331F08091022081508093022015C091
+:1005900080916A0080937F2183E080939A200DC030
+:1005A0008091832190918421873991051CF481E009
+:1005B00090E002C08FEF9FEF15DFC0930320D09330
+:1005C0000420DF91CF9108958617970779F0681777
+:1005D000790728F49C01261B370BB90109C086173F
+:1005E000970718F4681B790B03C0089560E070E06A
+:1005F000CB010895CF93DF9380910020909101204B
+:10060000892B51F0809100209091012001978093D7
+:1006100000209093012043C080E490E0809300206C
+:100620009093012080910720909108200196B9F1C4
+:10063000809114019091150120910920263018F421
+:1006400067E771E002C06EEE72E00E94B315EC0144
+:1006500080910720909108208C179D0758F4609195
+:10066000072070910820CE01AFDF029718F080ECD0
+:100670009DE511C08091072090910820C817D907E7
+:1006800070F46091072070910820CE019DDF0297E1
+:1006900030F08FEB9DE58093360A9093370ADF9117
+:1006A000CF910895AC01460F571F861B970B2091E1
+:1006B000200A3091210A24173507C8F72091200A13
+:1006C0003091210A8217930790F70895E0E8F6E049
+:1006D0008FE0808385E0848308951F93CF93DF9319
+:1006E000C0E4D0E0198180E4898340E250E068EB07
+:1006F0007BE280E290E00E945A0F1983DF91CF9154
+:100700001F9108951F93CF93DF93C0E4D0E0198128
+:1007100080E489838BEB95E20E94A20F81E00E9426
+:10072000B40F1983DF91CF911F91089508950F930E
+:100730001F932091A4208EEE92E0289FA001299F74
+:10074000500D112444525A4D07E913E02EEE32E0C9
+:1007500060E081E80E945E131F910F9108951CBE16
+:10076000EEEFF0E40994B9DF8091B82B882369F0AB
+:1007700080E2E8EBFBE2ABEBB5E201900D928A95EB
+:10078000E1F71092BB25BEDFEADF87E08093A2008D
+:10079000789473DDCBDFB7D745D168D160E080E0D6
+:1007A000FFD0EBD08CE0DFD07BD51FD638D68EDFE4
+:1007B00060E870E28EE891E20E94E9150000000016
+:1007C0000000000000000000000000000000000029
+:1007D000000000000000000080919F20882371F33A
+:1007E000E091BA238E2F90E088309105A0F4FC01AF
+:1007F000E250FF4F0C94DA1565D10DC0D7D10BC074
+:1008000065D209C0EBD207C078D305C0FFD303C0BF
+:10081000FED301C070D410929F20D0CF08950895C8
+:10082000E09109208E2F90E08830910590F4FC0132
+:10083000EA5FFE4F0C94DA15B8D10BC046D209C05E
+:10084000CCD207C059D305C0E0D303C053D401C0F4
+:10085000C6D48091140180939721809115018093D3
+:100860009821809124018093992180912501809382
+:100870009A218091200A8093A3218091210A80935C
+:10088000A42180911401909115018634914080F04B
+:100890008091140190911501893A914048F480911A
+:1008A0001401909115018093D82B9093D92B0000BF
+:1008B0008091A220882339F016DD1092A22081E0D9
+:1008C0008093A12008958091A120882341F08091F8
+:1008D0009A20833019F419DD8DDE01C0E5DD8091A9
+:1008E000A020882351F080911401909115018093EC
+:1008F000D82B9093D92B1092A0209091A42081E026
+:10090000911180E08093A42008950F931F9381E0BC
+:100910008093A7208093A22007E913E02DE730E021
+:100920004CED55E260E081E80E945E1381E01F918A
+:100930000F9108951092A720089581E0089581E015
+:10094000089510922002982F9C7193689093200232
+:10095000881F8827881F880F809321021092220207
+:10096000109226020895E0E0F2E010AA836880ABBE
+:1009700080E181AB12AA16AA0895E0E0F2E010A689
+:1009800083E880A78FE281A712A616A60895AAEC95
+:10099000B1E092E09C93E82FF0E084911C920895DE
+:1009A000909171009D7F90937100109200026230CF
+:1009B00011F09CE101C09EE19093010290E49093BC
+:1009C0000202811102C080E401C080EC8093030226
+:1009D000613011F084E001C083E08093040280E282
+:1009E000D6DF80930C0281E2D2DF80930D02109259
+:1009F00018021092190281E080930002BECF1F926C
+:100A00000F920FB60F9211248F9300000000000088
+:100A1000000081E0809323028F910F900FBE0F9012
+:100A20001F901895CF93DF93E0E7F0E082818B7FF2
+:100A30008283C0E2D3E08DE0888380E4898389E00B
+:100A40008A8383E3A4DF888782E3A1DF898787E342
+:100A50009EDF8A8786E39BDF8B87E0E2F6E080817A
+:100A6000836080831482DF91CF910895E0E7F0E006
+:100A700080818E7F808380E8809300010895E0E08C
+:100A8000F1E0108A80E4808B10A280A310AA80ABD2
+:100A9000E0E4F1E0108280831092A6201092A5205D
+:100AA00081E08093A42010928C2110928D211092CD
+:100AB0008A2110928B2108958093BA2381E080933C
+:100AC0009F200895CF93DF9310920920D8DFC0E0D4
+:100AD000D1E01EAA94E298AB19AA49E54AAB32E0EC
+:100AE0003BAB60910B2070910C206CAB7DAB6BEB42
+:100AF00073E268AF79AF1AAE8BE38CAF83E080937B
+:100B00003D0110923E0128A9206828AB10924601B1
+:100B1000E0E4F1E090831092410140934201809320
+:100B2000430140910D2050910E2040934401509379
+:100B300045014AEA51E2409348015093490110921D
+:100B40004A0129E320934C0180934D0110924E01FC
+:100B5000208120682083188A20E4288B24E0288BB9
+:100B6000898B85E98A8B80E18B8B47E751E04C8B41
+:100B70005D8B988F398F1A8E8CED95E28C8F9D8FBF
+:100B80001E8E68EC70E084EF91E08CDD88EC90E0E4
+:100B9000809307209093082081E080930620888925
+:100BA0008068888BDF91CF9108950895EF92FF922E
+:100BB0001F93CF93DF9311E01093092060DFC0E013
+:100BC000D1E018AA80E488AB94E098AB19AA1AAADD
+:100BD0006BE46BAB1CAA1DAA1EAA2AE030E228AF68
+:100BE00039AF1AAEA0EAACAF58E050933D01109275
+:100BF0003E0188A9806A88ABE0EAF8E085E5808359
+:100C0000808310924601E0E4F1E044E240831092D8
+:100C1000410189E58093420132E030934301E09045
+:100C20000B20F0900C20E0924401F09245018BEBF8
+:100C3000E82E83E2F82EE0924801F09249011092EA
+:100C40004A018BE380934C0183E080934D01109225
+:100C50004E0120812068208398A389A325E92AA337
+:100C60006BA367E771E06CA37DA3A8A759A71AA699
+:100C7000EAECF8E2ECA7FDA71EA6988B898B2A8BDD
+:100C800080E18B8B6C8B7D8B488F398F1A8E8CED2E
+:100C900095E28C8F9D8F1E8E68EC70E084EF91E062
+:100CA00001DD88EC90E0809307209093082010935A
+:100CB000062088A1806888A388898068888BDF9156
+:100CC000CF911F91FF90EF90089508951F93CF93B8
+:100CD000DF9312E010930920D2DEC0E0D1E01EAA1B
+:100CE00094E298AB19AA39E53AAB1BAB40910B20C3
+:100CF00050910C204CAB5DAB4BEB53E248AF59AF7E
+:100D00001AAE8BE38CAF83E080933D0110923E01DD
+:100D100028A9206828AB10924601E0E4F1E0908316
+:100D200010924101309342018093430120910D20A4
+:100D300030910E2020934401309345012AEA31E29C
+:100D4000209348013093490110924A0129E32093EE
+:100D50004C0180934D0110924E0120812068208328
+:100D6000188A20E4288B64E0688B898B55E95A8BBC
+:100D700040E14B8B27E731E02C8B3D8B988F198F0F
+:100D80001A8EECEDF5E2EC8FFD8F1E8E68A389A321
+:100D90005AA34BA32CA33DA384E388A719A71AA6A3
+:100DA0008AEC98E28CA79DA71EA668EC70E084EF01
+:100DB00091E078DC88EC90E0809307209093082005
+:100DC00081E08093062088898068888B88A180686C
+:100DD00088A3DF91CF911F91089508951F93CF931A
+:100DE000DF9313E0109309204ADEC0E0D1E01092B7
+:100DF0004601E0E4F1E024E220831092410199E50C
+:100E00009093420182E08093430140910B205091E6
+:100E10000C2040934401509345014BEB53E2409327
+:100E200048015093490110924A018BE380934C0191
+:100E300010934D0110924E018081806880831EAA1C
+:100E400028AB19AA9AAB1BAB80910D2090910E2074
+:100E50008CAB9DAB8AEA91E288AF99AF1AAE89E379
+:100E60008CAF10933D0110923E0188A9806888AB39
+:100E700018A250E458A344E048A319A21AA23BE4E4
+:100E80003BA31CA21DA21EA28AE090E288A799A7FC
+:100E90001AA620EA2CA798E09DA71EA688A1806A22
+:100EA00088A385E58093A008188A588B488B198BF6
+:100EB00085E98A8B3B8B47E751E04C8B5D8B288F14
+:100EC000998F1A8E8CED95E28C8F9D8F1E8E68EC1B
+:100ED00070E084EF91E0E6DB88EC90E080930720FF
+:100EE0009093082081E08093062088898068888B11
+:100EF000DF91CF911F91089508951F93CF93DF93B2
+:100F000014E010930920BBDDC0E0D1E018AA80E412
+:100F100088AB18AB19AA1AAA3BE43BAB1CAA1DAAC2
+:100F20001EAA8AE090E288AF99AF1AAE50EA5CAF91
+:100F300088E080933D0110923E0198A9906A98AB99
+:100F400095E59093A00810924601E0E4F1E094E268
+:100F500090831092410199E59093420192E0909321
+:100F6000430160910B2070910C20609344017093B9
+:100F700045016BEB73E26093480170934901109255
+:100F80004A019BE390934C0193E090934D011092A2
+:100F90004E01208120682083188B998B45E94A8B6C
+:100FA0003B8B27E731E02C8B3D8B588F898F1A8E36
+:100FB0006CED75E26C8F7D8F1E8E18A399A34AA3EA
+:100FC0009AE49BA32CA33DA393EC98A789A71AA608
+:100FD0008AEC98E28CA79DA71EA668EC70E084EFCF
+:100FE00091E060DB88EC90E08093072090930820EC
+:100FF00081E08093062088898068888B88A180683A
+:1010000088A3DF91CF911F9108950895FFCFCF93CB
+:10101000DF9386E08093092032DDC0E0D1E01EAA94
+:1010200084E288AB19AA39E53AAB93E09BAB4091D7
+:101030000D2050910E204CAB5DAB4AEA51E248AF17
+:1010400059AF1AAE29E32CAF90933D0110923E01A7
+:1010500028A9206828AB10924601E0E4F1E08083E3
+:10106000109241013093420132E0309343014091AC
+:101070000B2050910C2040934401509345014BEBC1
+:1010800053E2409348015093490110924A012BE3E7
+:1010900020934C0190934D0110924E0120812068C5
+:1010A0002083188A20E4288B888B998B95E99A8B6A
+:1010B00090E19B8B4CED55E04C8B5D8B888F398F8D
+:1010C0001A8E8CED95E28C8F9D8F1E8E68EC70E0F1
+:1010D00084EF91E0E7DA80E991E080930720909334
+:1010E000082081E08093062088898068888BDF91C2
+:1010F000CF9108950895CF93DF9387E080930920DF
+:10110000BEDCC0E0D1E01EAA94E298AB19AA39E592
+:101110003AAB83E08BAB40910D2050910E204CAB4D
+:101120005DAB4AEA51E248AF59AF1AAE29E32CAFA2
+:1011300080933D0110923E0128A9206828AB1092AF
+:101140004601E0E4F1E090831092410130934201C6
+:1011500032E03093430140910B2050910C2040939A
+:101160004401509345014BEB53E2409348015093A7
+:10117000490110924A012BE320934C0180934D01C9
+:1011800010924E01208120682083188A20E4288B49
+:1011900025E2288B898B85E98A8B80E18B8B4CED4E
+:1011A00055E04C8B5D8B988F398F1A8E8CED95E2C4
+:1011B0008C8F9D8F1E8E68EC70E084EF91E072DA68
+:1011C00080E991E0809307209093082081E080934C
+:1011D000062088898068888BDF91CF9108950895D3
+:1011E0001F920F920FB60F9211248F939F9381E05D
+:1011F000809303011092100184E08093100187E72F
+:1012000091E080931401909315018091A4208111A5
+:1012100003C08EEE92E002C080E090E084529A4DCE
+:1012200080931C0190931D01809110018068809330
+:1012300010019F918F910F900FBE0F901F901895E6
+:101240001F920F920FB60F9211248F939F9382E0FB
+:10125000809303011092200184E08093200187E7AE
+:1012600091E080932401909325018091A420811125
+:1012700003C085E694E002C087E791E084529A4D6E
+:1012800080932C0190932D018091200180688093A0
+:1012900020019F918F910F900FBE0F901F90189576
+:1012A000E0E7F0E083818C7F838384818C7F84837B
+:1012B00080818D7F8083E0E8F1E080EC828312867C
+:1012C00088EC81831186A0E0B8E034E03C9323E011
+:1012D00011962C93119714961C92149785ED91E01A
+:1012E00096968D939C93979716961C921697E0E48A
+:1012F000F8E030832183148286A397A31682E0E668
+:10130000F6E0808180618083E0E4F9E083E181831D
+:10131000148282E08683A6A3B7A310A611A681E05B
+:10132000808308951F920F920FB60F9211242F936E
+:101330003F934F935F938F939F93CF93DF931F922E
+:10134000CDB7DEB78FEF80934C09809109208730AD
+:1013500031F480912C02898390912D0202C09091EA
+:101360002C028091A320891B209168093091690982
+:1013700082308CF02A3F374070F420916809309118
+:10138000690989301CF481E090E002C086E090E0B9
+:10139000820F931F18C020916809309169098F3F0F
+:1013A000B4F42730310598F020916809309169092B
+:1013B000883F1CF081E090E002C086E090E0A90147
+:1013C000481B590BCA0180937809909379090F90B3
+:1013D000DF91CF919F918F915F914F913F912F918D
+:1013E0000F900FBE0F901F901895E0E7F0E08381FB
+:1013F0008F7E8383E0E4F6E080818A6A80838FEFCA
+:10140000848388E5828BE0EAF8E080E3838384ECE0
+:10141000858387E08683178288E184830895E0E7E7
+:10142000F0E08381877F8383E0ECF8E080E48083D1
+:10143000118288E58093550608951F920F920FB68A
+:101440000F92112400000F900FBE0F901F9018955F
+:101450001F920F920FB60F9211248F93EF93FF9369
+:10146000E0EAF8E080818083FF91EF918F910F9007
+:101470000FBE0F901F9018959FB7F894A0E5B0E0AD
+:1014800016968C911697897F16968C931697E0E6A0
+:10149000F0E080E885838BEB868316968C91169717
+:1014A000846016968C938081816080839FBF0895AD
+:1014B0009FB7F894E82FF0E0E059FF4F60958081E6
+:1014C000682360839FBF0895CF93863011F0C0E0FA
+:1014D00001C0C8E18091510081FD0DC09FB7F89413
+:1014E000809150008260809350009FBF8091510096
+:1014F00081FFFCCFC1DF6C2F636084E490E0BFD438
+:1015000060E480E0CF91D4CF8091A82008958091AD
+:10151000A820813009F40ECA0895F0D0FC0183811F
+:101520008093A820811101C0F0C981E008959091B5
+:10153000AA23892F807697FF07C0803491F4809189
+:10154000AB2381110EC0FBC9803459F48091AB23C9
+:10155000811107C08091B0239091B123892B09F0AC
+:10156000ECC980E008958091AC238F770C94E01251
+:101570009091B020911102C080E00895E091AD20DB
+:10158000F091AE200190F081E02D94818917A0F7B1
+:10159000E093AB20F093AC20228133812E0F3F1FCC
+:1015A000E217F30798F49181943061F492818913E2
+:1015B00009C09381691306C0E093AB20F093AC207F
+:1015C00081E008959081E90FF11DEACFE093AB200F
+:1015D000F093AC20D1CFE091AD20F091AE200190FE
+:1015E000F081E02D228133812E0F3F1FFC014081CD
+:1015F000E40FF11DE217F30748F48181843031F0E4
+:10160000853039F08081E80FF11DF4CF80E090E063
+:101610000895CF0108951F93CF93DF93182FA8DF6C
+:10162000882339F1C091AB20D091AC20CE01D3DF1B
+:10163000EC01892B41F04C815D816B818A81CDD792
+:101640008111F4CF16C0E091AD20F091AE209281CF
+:101650008381E92FF82FE10FF11DE10FF11D0190BA
+:10166000F081E02D0190F081E02DDF91CF911F916D
+:10167000099480E0DF91CF911F910895EF92FF923E
+:101680001F93CF93DF93C82F60E072DF811102C0F8
+:1016900010E02DC0E091AD20F091AE2092818381C9
+:1016A000E92FF82FEC0FF11DEC0FF11DE080F18018
+:1016B000D7011696ED91FC9117970995682F8C2FFD
+:1016C00057DF182F882321F3C091AB20D091AC2095
+:1016D000CE0181DFEC01892B21F08A810E941A144E
+:1016E000F7CFD7011296ED91FC9113970995812FB1
+:1016F000DF91CF911F91FF90EF9008958091AB20E3
+:101700009091AC200895FEC6CF938091B0208111B6
+:1017100008C01092B0201092B4201092B520CF9142
+:101720000895C0E0E091AD20F091AE200190F081ED
+:10173000E02D8481C81768F78C2FA0DFCF5FF2CF30
+:10174000CF938091B0208823F1F0C0E0E091AD20EC
+:10175000F091AE20A081B18114968C91C81798F4B5
+:1017600092818381E92FF82FEC0FF11DEC0FF11D11
+:101770000190F081E02D0084F185E02D309709F093
+:101780000995CF5FE3CFCF910895EF92FF920F932A
+:101790001F93CF93DF931F92CDB7DEB71092B42380
+:1017A0001092B5231092B6231092B7231092B8234B
+:1017B0001092B9238091AA2387FF07C02091B023FC
+:1017C0003091B123232B09F451C3982F9076903494
+:1017D00009F00EC1E091AB238E2F90E0FC01E05A9E
+:1017E000F109EA30F10508F0D0C2E25FFE4F0C9437
+:1017F000DA1581E08093A020809107209091082045
+:1018000080939B21809107209091082090939C21A8
+:101810008091822180939D2180917F2180939E21C0
+:1018200080916A0080939F2180916B008093A0211A
+:101830006091B0237091B1238EE891E2D7C01092ED
+:1018400000088091AC239091AD238093360890934B
+:1018500037088091AE238F70809300086091B02389
+:101860007091B1238AEA91E2B1D620910D20309196
+:101870000E208091B0239091B1232817390709F4E5
+:10188000F3C280930D2090930E2026C01092400842
+:101890008091AC239091AD23809376089093770844
+:1018A0008091AE238F70809340086091B023709137
+:1018B000B1238BEB93E28AD620910B2030910C2040
+:1018C0008091B0239091B1232817390709F4CCC235
+:1018D00080930B2090930C208091092054C010928B
+:1018E0006809109269098091AC238093A320BCC23F
+:1018F0008091AC2380932406B7C2E091AC23F09191
+:10190000AD23E830F10508F040C2E85EFE4F0C94CC
+:10191000DA1560E080E044D88091AE2312D880E0F0
+:1019200032C060E080E03CD88091AE230AD881E0EC
+:101930002AC061E081E034D88091AE2302D8809142
+:10194000AF2311D882E01FC083E01DC084E01BC01C
+:1019500060E080E025D88091AE230E94A10485E05C
+:1019600012C061E080E01CD88091AE230E94A104E7
+:1019700086E009C062E080E013D88091AE238068E1
+:101980000E94A10487E098D86FC28091AC23809315
+:1019900084066AC28091AC239091AD23892B91F08B
+:1019A0000E946D0380E2E8EBFBE2ABEBB5E2019055
+:1019B0000D928A95E1F781E08093BB250E94820316
+:1019C0000E946D03E9E7F0E091E088EDF89484BFB0
+:1019D00090836091B0237091B1238AE890E206C0B1
+:1019E0006091B0237091B12389E890E2EFD53CC2B9
+:1019F0009111CBC187FFFCC02091B0233091B1235E
+:101A00002115310509F4C1C18F7109F09EC0809183
+:101A1000AB23863071F0883009F48EC08111B5C1D6
+:101A20002230310509F0B1C162E070E084EB90E250
+:101A3000DDCF8091AC239091AD23292F3327223025
+:101A40003105A1F064F42130310509F09EC1809187
+:101A5000192090911A20DC016C9170E05BC023305A
+:101A6000310589F12F30310509F18FC1E09119203D
+:101A7000F0911A202189821708F087C19927880FD1
+:101A8000991F880F991FE0911B20F0911C20E80FEF
+:101A9000F91F80819181FC016281738197D5E0916A
+:101AA000B223F091B32382E0818335C080911D2061
+:101AB00090911E20009709F468C1DC0112966D9187
+:101AC0007C91139727C099278130910569F038F0F0
+:101AD000029709F05AC168E08AE690E208C064E023
+:101AE00070E08CE790E216C067E083E790E2282F71
+:101AF000AAE5B0E2FC01819190E08D939D938E2F39
+:101B0000821B8617C0F3660F6E5F6093582070E0EB
+:101B100088E590E25BD58091B0239091B12320912C
+:101B2000B4233091B5238217930708F09DC18093A9
+:101B3000B4239093B52398C12130310509F025C114
+:101B400061E070E080EB90E251CF8130C9F5809187
+:101B5000AB238A3009F019C12130310509F015C1D4
+:101B60008091B020882309F410C1E090AE23F0905A
+:101B7000AF230091AD201091AE20D801ED91FC91E2
+:101B80008481E81608F001C160E08E2DF1DC882325
+:101B900009F4FBC0FF24EE0CFF1CF8018281938145
+:101BA0008E0D9F1DDC01ED91FC910680F781E02DEB
+:101BB00009958093B22061E070E082EB90E216CF4D
+:101BC000823009F0E2C08091AB238111DEC0223067
+:101BD000310509F0DAC08091AE2350D590E08093B2
+:101BE000A9209093AA2062E070E089EA90E2FECEFC
+:101BF0008F7109F07DC08091AB23833009F4C5C09B
+:101C000018F48130A1F0C1C0853019F0893039F164
+:101C1000BCC08091B0239091B123892B09F0B5C04D
+:101C200083EB9AE08093B6239093B7231DC18091F4
+:101C3000B0239091B123892B09F0A7C08091AC23E8
+:101C40009091AD23019709F0A0C08091B4209091AC
+:101C5000B5208D7F8093B4209093B52005C18091ED
+:101C6000B0239091B123892B09F08FC0ACD4882385
+:101C700009F48BC02091AC233091AD233327E09140
+:101C80001920F0911A20818990E08217930708F4B7
+:101C90007CC03ADD8091AC239091AD238093B0203D
+:101CA000882309F4E1C099278150904C880F991F2F
+:101CB000880F991F20911B2030911C20820F931FA9
+:101CC0008093AD209093AE2010E0E091AD20F09194
+:101CD000AE200190F081E02D8481181708F0C4C077
+:101CE00060E0812F98DC882309F44FC01F5FEDCF9F
+:101CF0008130F1F48091AB238B3009F046C08091A4
+:101D0000B0239091B123892B09F03FC08091B0207E
+:101D1000882309F43AC01091AE236091AC23812F3F
+:101D20006983ACDC6981882381F1812F74DC2BC04D
+:101D3000823059F58091AB23813019F0833089F0DE
+:101D400024C08091B0239091B123892BF1F480912C
+:101D5000AC239091AD23892BC1F48091AE2395D40F
+:101D600012C08091B0239091B123892B71F480919E
+:101D7000AC239091AD23892B41F48091AE232AD5D9
+:101D80008091AE2360D581116FC08091AA238F719D
+:101D90008130B9F58091B020882399F1E090AE238D
+:101DA000F090AF230091AD201091AE20D801ED91BD
+:101DB000FC918481E81628F560E08E2DD9DB88231C
+:101DC00001F1F701FF27EE0FFF1FD80112968D9149
+:101DD0009C911397E80FF91F00811181D801169685
+:101DE000ED91FC9117970995682F8E2DC1DB882303
+:101DF00041F0D8011496ED91FC9115970995811148
+:101E000033C08091AA238F71823081F58091B020F8
+:101E1000882361F1F12CE091AD20F091AE20A081FA
+:101E2000B18114968C91F81608F592818381E92F7F
+:101E3000F82FEF0DF11DEF0DF11D00811181D8017B
+:101E40001696ED91FC9117970995682F8F2D90DBD1
+:101E5000882361F0D8011496ED91FC9115970995AE
+:101E6000811102C0F394D7CF81E001C080E00F90D0
+:101E7000DF91CF911F910F91FF90EF9008951BBEBE
+:101E8000FC0128ED24BF608308958091CF0187FD78
+:101E9000FCCF08951F93CF93DF93C0ECD1E01A8558
+:101EA0008A8761E08BEC91E0EADF1A87DF91CF91BE
+:101EB0001F910895CF92DF92EF92FF920F931F939D
+:101EC000CF93DF9300D0CDB7DEB78C017B01498380
+:101ED0005A83DBDF8CECC82EDD24D394F60190818D
+:101EE00098609083B801705F49815A81C70168D6B4
+:101EF000F6018081877F80830F900F90DF91CF91D3
+:101F00001F910F91FF90EF90DF90CF900895CF93A6
+:101F1000DF9300D0CDB7DEB76A838983B6DFACEC40
+:101F2000B1E09C9198609C938981E82FF0E0F05F8C
+:101F30006A8160838C91877F8C930F900F90DF91E3
+:101F4000CF9108950F931F93CF938C019EDFC0E034
+:101F5000F80161918F018C2FDADFCF5FC032C1F7BA
+:101F6000CF911F910F910895CF93DF931F92CDB71B
+:101F7000DEB789838ADF898120E2829FC001112434
+:101F8000E0ECF1E012829183808385E30F90DF9192
+:101F9000CF9180CF4091CA01E62FF72F8093CA01DD
+:101FA00084914093CA010895E82FF0E0E652F44D81
+:101FB00080818F3F09F4FFCF9FB7F89480818F5FB6
+:101FC00080839FBF0895E82FF0E0E652F44D8081B2
+:101FD000811101C0FFCF9FB7F89480818150808329
+:101FE0009FBF0895CF93C82F80917C21C11105C058
+:101FF000882339F081E0E7DF04C0811102C081E06D
+:10200000D3DFC0937C21CF910895282F2F70082E05
+:10201000000C990B392F331F3327331F832F90E088
+:10202000820F911D820F911D23E0880F991F2A9521
+:10203000E1F7885A9E4D08950F93E8ECF4E0808113
+:102040008F7D808380818F7D8083E0E6F1E202E0F6
+:102050000593109262211092632100E2069300E43E
+:102060000693E8E5F1E200E2069300E40693EAEA6B
+:10207000F3E214861586168617861286138610924A
+:102080004D210F9108950F9385E080934D21E1E656
+:10209000F1E204E00593E9E5F1E204E005930F9134
+:1020A00008950F9383E080934D2110926221109246
+:1020B0006321E0E6F1E202E006930F910895E091DA
+:1020C000B623F091B723309709F009940895282F8B
+:1020D0002F70082E000C990B392F331F3327331F15
+:1020E000832F90E0820F911D820F911D029749E08E
+:1020F000489F9001499F300D1124C90189509F4D7F
+:1021000008958F929F92AF92BF92DF92EF92FF92CB
+:102110000F931F93CF93DF93D82ED9DFEC018D2D32
+:1021200074DF7C01DC011196EC91E770E150E7303F
+:1021300040F4F0E0EE0FFF1FE457FF4D00811181E6
+:1021400002C008E010E0ED81FE812B813C814881D6
+:10215000D701D7FE48C016968D919C9117978E0F88
+:102160009F1F8D839E838217930761F1281B390B74
+:102170002115B4E03B0738F02FEF33E0C901B80177
+:10218000F2D4281B390B41FF0AC0C901B801EBD4B6
+:10219000AC0191E0452B09F090E0892F01C080E06F
+:1021A000988180FB91F99883F70116821782228328
+:1021B000338329813A818D819E81820F931F84838D
+:1021C00095830EC041FF71C04D7F4883D70116969D
+:1021D0001D921C92179712961D921C921397F7014D
+:1021E00002E006937BC01296AD90BC90139742FF1D
+:1021F00010C089809A80C901B801B5D4B0E4DB9ED3
+:10220000B001112469587F4DAC01C4018E0F9F1F8E
+:10221000D7D48D819E818A0D9B1D8D839E832B81BA
+:102220003C812817390710F42D833E83F7018681FE
+:102230009781A816B906C9F58D819E8182179307EB
+:10224000A1F1281B390B2115F4E03F0710F02FEF07
+:1022500033E0C901B80187D4281B390BD701129686
+:102260001D921C9213972017310778F4888184609F
+:102270008883B0E4DB9EC001112489589F4DF7018B
+:102280008483958306831783AACF49815A818D81E0
+:102290009E81840F951FD70114968D939C9315975B
+:1022A00016962D933C9317979ACF888180FF16C07E
+:1022B0008E7F8883EF81F885309781F06D817E81F4
+:1022C0004D2D80E0DF91CF911F910F91FF90EF9006
+:1022D000DF90BF90AF909F908F900994DF91CF9146
+:1022E0001F910F91FF90EF90DF90BF90AF909F9064
+:1022F0008F9008950F93CF93DF9380914D2183307A
+:1023000029F4DDDEDF91CF910F9196CE2091492106
+:1023100030914A21C091B423D091B523C21BD30B75
+:1023200061F580914B2190914C21820F931F8093F6
+:102330004B2190934C212091B0233091B123281749
+:10234000390721F08091B620882331F084E0809312
+:102350004D21E8E5F1E236C0E091B823F091B923D0
+:10236000309799F00995882381F0109249211092B5
+:102370004A21C091B423D091B523C034D10528F0AF
+:102380001092B620C0E4D0E003C081E08093B62074
+:10239000C0936221D09363218091492190914A2179
+:1023A0002091B2233091B323280F391F2093642149
+:1023B00030936521C80FD91FC0934921D0934A217A
+:1023C000E0E6F1E202E00693DF91CF910F910895EC
+:1023D0000F93CF93DF931F92CDB7DEB78091CC04DC
+:1023E00080FF65C021E02093CC0488E591E2FC01E8
+:1023F00000E80693E0E6F1E200E806932093CA04C1
+:10240000FC0100E1069380914D21882329F083503F
+:10241000823008F454DE10DE80915A2190915B21C5
+:10242000089709F046C088E0E9E0F1E2AAEAB3E2E1
+:1024300001900D928A95E1F78091C80480628093A3
+:10244000C8048091C80480628093C8049ED9811119
+:1024500002C019DE2EC09091AA2397FF0EC01092E1
+:102460004B2110924C211092492110924A2192E066
+:1024700090934D2189833EDF08C02091B023309195
+:10248000B123232B21F489830CDE898113C01092A0
+:102490004B2110924C211092492110924A2191E037
+:1024A00090934D21E8E5F1E202E0069303C080E05D
+:1024B00001C081E00F90DF91CF910F910895CF93EC
+:1024C000CFB7F89481E08EDDEAECF4E080E480831D
+:1024D00080E28083E1ECF4E0808181608083A9EC7C
+:1024E000B4E08C9182608C93E8ECF4E080818064AD
+:1024F00080838C9181608C93808180688083CFBF42
+:10250000CF910895CF931092600080E30E94640AF7
+:102510008091C00480648093C00481E08093600057
+:10252000CFB7F8941092592110926121109269212D
+:10253000109271218091F7208E7F8093F7208091F7
+:1025400000218E7F809300216AE170E082E022DD2D
+:102550008F3F09F48FE18093FA046BE170E082E031
+:1025600019DD8F3F09F48FE18093FB048091C00453
+:1025700081608093C0048091C00480688093C0040F
+:102580008091C00480618093C00488E591E28093CB
+:10259000C6049093C7048091C00480628093C004F5
+:1025A0008FEF8093C5048091C80482608093C80433
+:1025B00010927C2185E0F8DC82DFCFBFCF910895B7
+:1025C0008093C30408958091C3040895EAEAF3E276
+:1025D000808791876287738708950F931F93CF93A6
+:1025E000DF931F92CDB7DEB78A0169830EDDFC0150
+:1025F0008181807C698181113AC06370613019F0FA
+:1026000020F080E803C080EC01C080E400381105B0
+:10261000E9F058F400321105A9F000341105A1F0D9
+:1026200000311105C9F491E018C0011592E01907B5
+:1026300079F00F3F93E0190769F00115114061F43B
+:1026400095E00BC092E009C093E007C094E005C09C
+:1026500096E003C097E001C090E0118226E020835D
+:10266000982B918381818062818381E001C080E029
+:102670000F90DF91CF911F910F910895C6DCFC015F
+:10268000818182FB882780F90895CF93C82FBDDC14
+:10269000FC01818182FF0FC091819B7F91838C2FF0
+:1026A00016DDFC01908190FF06C09E7F908307801D
+:1026B000F085E02D099581E0CF9108958F929F924A
+:1026C000AF92BF92DF92EF92FF920F931F93CF933F
+:1026D000DF931F92CDB7DEB7D82E5A0179016983F7
+:1026E000F6DC4C018D2D91DC9C01DC0111968C9166
+:1026F0001197807C6981882309F45EC011968C91C2
+:102700001197807C803C21F011968C9182FD54C001
+:102710009FB7F894F401808180FF02C09FBF4CC036
+:10272000816080839FBFF401A182B282E382F48240
+:10273000158216820783108791E0611104C0E114AD
+:10274000F10409F090E0D4018C9190FB81F98B7F2A
+:102750008C93D7FE04C0F9011682178229C0D901D3
+:1027600011968C911197807C803CC9F41196EC9164
+:10277000E770E150E73040F4F0E0EE0FFF1FE45760
+:10278000FF4D6081718102C068E070E0C701EBD14C
+:10279000892B29F0F40180818E7F80830DC0D901BF
+:1027A00012961D921C92139716961D921C921797C3
+:1027B0008D2DA7DC81E001C080E00F90DF91CF91EB
+:1027C0001F910F91FF90EF90DF90BF90AF909F907F
+:1027D0008F900895EF92FF920F93CF93C82F15DC3F
+:1027E0007C018C2F74DCDC01F70102E005939C91E5
+:1027F00090FF1BC09E7F9C931796ED91FC911897BC
+:10280000309799F0D701C7FF05C016966D917C915E
+:10281000179704C012966D917C9113974C2F81E00D
+:10282000CF910F91FF90EF900994CF910F91FF906E
+:10283000EF900895CF93C82FCDDF8C2FE6DBFC01FE
+:102840001182CF9108950F93CF93C82FDEDBFC0147
+:1028500091819460918301E006938C2FBBDF81E02E
+:10286000CF910F9108951F920F920FB60F921124DE
+:102870000F932F933F934F935F936F937F938F9318
+:102880009F93AF93BF93EF93FF938091CB0487FF08
+:1028900008C080E88093CA040E94A00B0E94100424
+:1028A0007EC08091CB0482FF18C084E08093CA046C
+:1028B0008091602186FF73C08091CC0481FD6FC040
+:1028C00087DD81116CC080914D21813011F4E9DBED
+:1028D00066C0843009F063C021C08091CB0481FFC1
+:1028E00026C082E08093CA048091582186FF57C099
+:1028F0008091CC0481FD53C06BDD811150C080916B
+:102900004D21823041F484E080934D21E8E5F1E2ED
+:1029100002E0069344C0833009F041C0E1E6F1E2F1
+:1029200004E00593E9E5F1E204E0059338C0809105
+:10293000CB0484FF1DC080E18093CA040E94840BF5
+:102940001092C3041092592196E09093582183E489
+:10295000809359211092612190936021809361218D
+:1029600089E091E280935C2190935D2165DB17C043
+:102970008091CB0486FF08C080E48093CA0480E085
+:1029800031DB0E940E040BC08091CB0485FF07C091
+:1029900080E28093CA0481E025DB0E940F04FF914E
+:1029A000EF91BF91AF919F918F917F916F915F91C7
+:1029B0004F913F912F910F910F900FBE0F901F904D
+:1029C00018951F920F920FB60F9211240F931F9319
+:1029D0002F933F934F935F936F937F938F939F9327
+:1029E000AF93BF93CF93DF93EF93FF938091CC048A
+:1029F00081FF1AC082E08093CC048091C504819548
+:102A0000880FE8E5F1E2E81BF109208131812855C2
+:102A1000314283E0369527958A95E1F7822F869596
+:102A200020FD06C0C0E005C0D3DC882319F386C0B2
+:102A3000C0E8C80F8C2FE9DAFC01208125FF7EC099
+:102A400000E20693C11174C080914D21843019F4C5
+:102A500036DBF2DA73C000915A2110915B2180912C
+:102A6000B4239091B523C0914921D0914A219E0170
+:102A7000200F311F8217930718F48C010C1B1D0BBC
+:102A80008091B2239091B323A80169E071E28C0F89
+:102A90009D1F96D0C00FD11FC0934921D0934A21CA
+:102AA0000034110569F480914B2190914C218C0FD9
+:102AB0009D1F2091B0233091B1238217930788F096
+:102AC000C093B423D093B523E091B823F091B923F8
+:102AD000309729F00995811102C0D5DA2FC0E1DACB
+:102AE0002DC08091B4239091B5238C179D07D9F404
+:102AF000E091B823F091B923309779F309958823B1
+:102B000061F320914B2130914C218091492190918A
+:102B10004A21820F931F80934B2190934C21109256
+:102B2000492110924A21E8E5F1E202E0069306C04D
+:102B3000C03811F4DFDB02C08C2FE3DAFF91EF9194
+:102B4000DF91CF91BF91AF919F918F917F916F91C5
+:102B50005F914F913F912F911F910F910F900FBE59
+:102B60000F901F901895AA1BBB1B51E107C0AA1F0D
+:102B7000BB1FA617B70710F0A61BB70B881F991F1E
+:102B80005A95A9F780959095BC01CD01089597FBC2
+:102B9000072E16F4009406D077FD08D0E4DF07FC7A
+:102BA00005D03EF4909581959F4F0895709561955D
+:102BB0007F4F0895EE0FFF1F0590F491E02D0994CB
+:102BC000FB01DC0102C001900D9241505040D8F74A
+:102BD0000895FB01DC0101900D920020E1F70895BA
+:042BE000F894FFCF97
+:102BE40040000CE02E0AFFFFFFFF55800080008D9F
+:102BF4000A870A970A840A000044201F200000283C
+:102C04002023200F20000000090219000101008088
+:102C1400FA0904000001FFFFFF0007058101FF031B
+:102C2400010000001201000200000040EB0394BA0E
+:102C34000002010200010000000300000000000087
+:102C4400000000000000000000004C61627261643A
+:102C54006F72004573706F54656B000004030904C0
+:102C6400646562756731323300020200100020008F
+:0A2C74004000800000010002FF0391
+:00000001FF
diff --git a/Desktop_Interface/android-build/build/intermediates/classes/debug/com/EspoTek/Labrador/Java/androidInterface.class b/Desktop_Interface/android-build/build/intermediates/classes/debug/com/EspoTek/Labrador/Java/androidInterface.class
index c642bcbf..40cb400b 100644
Binary files a/Desktop_Interface/android-build/build/intermediates/classes/debug/com/EspoTek/Labrador/Java/androidInterface.class and b/Desktop_Interface/android-build/build/intermediates/classes/debug/com/EspoTek/Labrador/Java/androidInterface.class differ
diff --git a/Desktop_Interface/android-build/build/intermediates/dex/debug/classes.dex b/Desktop_Interface/android-build/build/intermediates/dex/debug/classes.dex
index 4b2bd3dd..6dc5342a 100644
Binary files a/Desktop_Interface/android-build/build/intermediates/dex/debug/classes.dex and b/Desktop_Interface/android-build/build/intermediates/dex/debug/classes.dex differ
diff --git a/Desktop_Interface/android-build/build/intermediates/incremental/mergeAssets/debug/merger.xml b/Desktop_Interface/android-build/build/intermediates/incremental/mergeAssets/debug/merger.xml
index 86b2f1d8..2a960b1b 100644
--- a/Desktop_Interface/android-build/build/intermediates/incremental/mergeAssets/debug/merger.xml
+++ b/Desktop_Interface/android-build/build/intermediates/incremental/mergeAssets/debug/merger.xml
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/Desktop_Interface/android-build/build/intermediates/resources/resources-debug.ap_ b/Desktop_Interface/android-build/build/intermediates/resources/resources-debug.ap_
index 97da7262..ac4ff259 100644
Binary files a/Desktop_Interface/android-build/build/intermediates/resources/resources-debug.ap_ and b/Desktop_Interface/android-build/build/intermediates/resources/resources-debug.ap_ differ
diff --git a/Desktop_Interface/android-build/build/outputs/apk/android-build-debug-unaligned.apk b/Desktop_Interface/android-build/build/outputs/apk/android-build-debug-unaligned.apk
index 2191bcbc..e07e4f37 100644
Binary files a/Desktop_Interface/android-build/build/outputs/apk/android-build-debug-unaligned.apk and b/Desktop_Interface/android-build/build/outputs/apk/android-build-debug-unaligned.apk differ
diff --git a/Desktop_Interface/android-build/build/outputs/apk/android-build-debug.apk b/Desktop_Interface/android-build/build/outputs/apk/android-build-debug.apk
index 6d75085e..6395fc07 100644
Binary files a/Desktop_Interface/android-build/build/outputs/apk/android-build-debug.apk and b/Desktop_Interface/android-build/build/outputs/apk/android-build-debug.apk differ
diff --git a/Desktop_Interface/android-build/gradle.properties b/Desktop_Interface/android-build/gradle.properties
index ae94af12..bfcb411e 100644
--- a/Desktop_Interface/android-build/gradle.properties
+++ b/Desktop_Interface/android-build/gradle.properties
@@ -1,8 +1,8 @@
-## This file is automatically generated by QtCreator.
-#
-# This file must *NOT* be checked into Version Control Systems,
-# as it contains information specific to your local configuration.
-
+## This file is automatically generated by QtCreator.
+#
+# This file must *NOT* be checked into Version Control Systems,
+# as it contains information specific to your local configuration.
+
androidBuildToolsVersion=25.0.2
androidCompileSdkVersion=25
buildDir=build
diff --git a/Desktop_Interface/android-build/gradle.properties~ b/Desktop_Interface/android-build/gradle.properties~
index 03efe503..ae5a478e 100644
--- a/Desktop_Interface/android-build/gradle.properties~
+++ b/Desktop_Interface/android-build/gradle.properties~
@@ -1,9 +1,9 @@
-## This file is automatically generated by QtCreator.
-#
-# This file must *NOT* be checked into Version Control Systems,
-# as it contains information specific to your local configuration.
-
+## This file is automatically generated by QtCreator.
+#
+# This file must *NOT* be checked into Version Control Systems,
+# as it contains information specific to your local configuration.
+
androidBuildToolsVersion=25.0.2
androidCompileSdkVersion=25
buildDir=.build
-qt5AndroidDir=C:/Qt/5.7/android_armv7/src/android/java
+qt5AndroidDir=C:/Qt/5.7/android_x86/src/android/java
diff --git a/Desktop_Interface/android-build/libs/armeabi-v7a/libLabrador.so b/Desktop_Interface/android-build/libs/armeabi-v7a/libLabrador.so
index 8f2d8880..606f8c8a 100644
Binary files a/Desktop_Interface/android-build/libs/armeabi-v7a/libLabrador.so and b/Desktop_Interface/android-build/libs/armeabi-v7a/libLabrador.so differ
diff --git a/Desktop_Interface/android-build/local.properties b/Desktop_Interface/android-build/local.properties
index 0fcecfd0..8d93838d 100644
--- a/Desktop_Interface/android-build/local.properties
+++ b/Desktop_Interface/android-build/local.properties
@@ -1,6 +1,6 @@
-## This file is automatically generated by QtCreator.
-#
-# This file must *NOT* be checked into Version Control Systems,
-# as it contains information specific to your local configuration.
-
+## This file is automatically generated by QtCreator.
+#
+# This file must *NOT* be checked into Version Control Systems,
+# as it contains information specific to your local configuration.
+
sdk.dir=I:/AndroidSDK/Android/sdk
diff --git a/Desktop_Interface/android-build/local.properties~ b/Desktop_Interface/android-build/local.properties~
index e74f34d7..f99d030e 100644
--- a/Desktop_Interface/android-build/local.properties~
+++ b/Desktop_Interface/android-build/local.properties~
@@ -1,6 +1,6 @@
-## This file is automatically generated by QtCreator.
-#
-# This file must *NOT* be checked into Version Control Systems,
-# as it contains information specific to your local configuration.
-
+## This file is automatically generated by QtCreator.
+#
+# This file must *NOT* be checked into Version Control Systems,
+# as it contains information specific to your local configuration.
+
sdk.dir=I:/AndroidSDK/Android/sdk
diff --git a/Desktop_Interface/android-build/src/androidInterface.java b/Desktop_Interface/android-build/src/androidInterface.java
index cd721c44..7caea66a 100644
--- a/Desktop_Interface/android-build/src/androidInterface.java
+++ b/Desktop_Interface/android-build/src/androidInterface.java
@@ -85,6 +85,49 @@ public class androidInterface extends QtActivity
}
}
}
+ public void findDevice_bootloader()
+ {
+ Log.d(QtApplication.QtTAG, "findDevice_bootloader");
+ PendingIntent mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); //???
+ UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); //Handle to system USB service?
+ HashMap deviceList = manager.getDeviceList();
+ Iterator deviceIterator = deviceList.values().iterator();
+ if(!deviceIterator.hasNext()){
+ Log.d(QtApplication.QtTAG, "NO DEVICE FOUND");
+ }
+
+ while(deviceIterator.hasNext()){
+ Log.d(QtApplication.QtTAG, "DEVICE FOUND");
+ UsbDevice device = deviceIterator.next();
+
+ manager.requestPermission(device, mPermissionIntent);
+ //Wait until it gets the permission
+ while(!manager.hasPermission(device)){
+ ;
+ }
+
+ String Model = device.getDeviceName();
+
+ int DeviceID = device.getDeviceId();
+ int VID = device.getVendorId();
+ int PID = device.getProductId();
+ Log.d(QtApplication.QtTAG, String.format("Device ID = %d\nVID=0x%04x\nPID=0x%04x\n", DeviceID, VID, PID));
+ if((VID==0x03eb) && (PID==0x2fe4)){
+ if(!manager.hasPermission(device)){
+ Log.d(QtApplication.QtTAG, "permission was not granted to the USB device!!!");
+ return;
+ }
+ Log.d(QtApplication.QtTAG, "MATCH FOUND!");
+ usbfs_path = device.getDeviceName();
+ Log.d(QtApplication.QtTAG, "usbfs_path = " + usbfs_path);
+ connection = manager.openDevice(device);
+ file_descriptor = connection.getFileDescriptor();
+ Log.d(QtApplication.QtTAG, "fd = " + file_descriptor);
+ Log.d(QtApplication.QtTAG, "Returning...");
+ return;
+ }
+ }
+ }
public void closeDevice()
{
file_descriptor = -69;
diff --git a/Desktop_Interface/androidusbdriver.cpp b/Desktop_Interface/androidusbdriver.cpp
index 4698926e..a4f4ccc7 100644
--- a/Desktop_Interface/androidusbdriver.cpp
+++ b/Desktop_Interface/androidusbdriver.cpp
@@ -74,75 +74,58 @@ unsigned char androidUsbDriver::usbInit(unsigned long VIDin, unsigned long PIDin
return 0;
}
-int winUsbDriver::flashFirmware(void){
- char fname[64];
+int androidUsbDriver::flashFirmware(void){
+ char fname[128];
qDebug() << "\n\n\n\n\n\n\n\nFIRMWARE MISMATCH!!!! FLASHING....\n\n\n\n\n\n\n";
- sprintf(fname, "labrafirm_%04x_%02x.hex", EXPECTED_FIRMWARE_VERSION, DEFINED_EXPECTED_VARIANT);
+ sprintf(fname, "assets:/firmware/labrafirm_%04x_%02x.hex", EXPECTED_FIRMWARE_VERSION, DEFINED_EXPECTED_VARIANT);
qDebug() << "FLASHING " << fname;
bootloaderJump();
mainActivity.callMethod("closeDevice");
+ libusb_release_interface(handle, 0);
+ libusb_close(handle);
+ libusb_exit(ctx);
+
+ qDebug() << "BA94 closed";
QThread::msleep(2000);
mainActivity.callMethod("findDevice_bootloader");
- //assets:/firmware
-
//Set up interface to dfuprog
- QString dfuprog_location = QCoreApplication::applicationDirPath();
- dfuprog_location.append("/firmware/dfu-programmer");
- QString file_location = QCoreApplication::applicationDirPath();
- file_location.append("/firmware/");
- file_location.append(fname);
- QProcess dfu_exe;
- QStringList args_stage1;
- args_stage1 << "atxmega32a4u" << "erase" << "--force";
- QStringList args_stage2;
- args_stage2 << "atxmega32a4u" << "flash" << file_location;
- QStringList args_stage3;
- args_stage3 << "atxmega32a4u" << "launch";
- QStringList args_stage4;
- args_stage4 << "atxmega32a4u" << "launch";
+ int exit_code;
+ char command1[256];
+ sprintf(command1, "dfu-programmer atxmega32a4u erase --force");
+ char command2[256];
+ sprintf(command2, "dfu-programmer atxmega32a4u flash %s", fname);
+ char command3[256];
+ sprintf(command3, "dfu-programmer atxmega32a4u launch");
+ char command4[256];
+ sprintf(command4, "dfu-programmer atxmega32a4u launch");
//Run stage 1
- dfu_exe.start(dfuprog_location, args_stage1);
- dfu_exe.waitForFinished(-1);
- qDebug() << "stdio_stage1" << dfu_exe.readAllStandardOutput();
- qDebug() << "sterr_stage1" << dfu_exe.readAllStandardError();
- qDebug() << "EXIT_CODE stage1" << dfu_exe.exitCode();
- if(dfu_exe.exitCode()){
- return dfu_exe.exitCode()+100;
+ exit_code = dfuprog_virtual_cmd(command1);
+ if(exit_code){
+ return exit_code+100;
}
//Run stage 2
- dfu_exe.start(dfuprog_location, args_stage2);
- dfu_exe.waitForFinished(-1);
- qDebug() << "stdio_stage2" << dfu_exe.readAllStandardOutput();
- qDebug() << "sterr_stage2" << dfu_exe.readAllStandardError();
- qDebug() << "EXIT_CODE stage2" << dfu_exe.exitCode();
- if(dfu_exe.exitCode()){
- return dfu_exe.exitCode()+200;
+ exit_code = dfuprog_virtual_cmd(command2);
+ if(exit_code){
+ return exit_code+200;
}
//Run stage 3
- dfu_exe.start(dfuprog_location, args_stage3);
- dfu_exe.waitForFinished(-1);
- qDebug() << "stdio_stage3" << dfu_exe.readAllStandardOutput();
- qDebug() << "sterr_stage3" << dfu_exe.readAllStandardError();
- qDebug() << "EXIT_CODE stage3" << dfu_exe.exitCode();
- if(dfu_exe.exitCode()){
- return dfu_exe.exitCode()+300;
+ exit_code = dfuprog_virtual_cmd(command3);
+ if(exit_code){
+ return exit_code+300;
}
QThread::msleep(2000);
//Run stage 4 - double launch to clear the eeprom flag from bootloaderJump.
- dfu_exe.start(dfuprog_location, args_stage4);
- dfu_exe.waitForFinished(-1);
- qDebug() << "stdio_stage4" << dfu_exe.readAllStandardOutput();
- qDebug() << "sterr_stage4" << dfu_exe.readAllStandardError();
- qDebug() << "EXIT_CODE stage4" << dfu_exe.exitCode();
+ exit_code = dfuprog_virtual_cmd(command4);
+
return 0;
}
diff --git a/Desktop_Interface/androidusbdriver.obj b/Desktop_Interface/androidusbdriver.obj
new file mode 100644
index 00000000..c9143fc1
Binary files /dev/null and b/Desktop_Interface/androidusbdriver.obj differ
diff --git a/Desktop_Interface/bin/libLabrador.so b/Desktop_Interface/bin/libLabrador.so
index eb5d6430..21116857 100644
Binary files a/Desktop_Interface/bin/libLabrador.so and b/Desktop_Interface/bin/libLabrador.so differ
diff --git a/Desktop_Interface/buffercontrol.obj b/Desktop_Interface/buffercontrol.obj
new file mode 100644
index 00000000..22e99b8d
Binary files /dev/null and b/Desktop_Interface/buffercontrol.obj differ
diff --git a/Desktop_Interface/build_android/package_source/assets/firmware/labrafirm_0002_01.hex b/Desktop_Interface/build_android/package_source/assets/firmware/labrafirm_0002_01.hex
new file mode 100644
index 00000000..8f7511d2
--- /dev/null
+++ b/Desktop_Interface/build_android/package_source/assets/firmware/labrafirm_0002_01.hex
@@ -0,0 +1,714 @@
+:1000000017C1000031C100002FC100002DC1000048
+:100010002BC1000029C100000C9410090C941F0989
+:1000200023C1000021C100001FC100001DC100004C
+:100030001BC1000019C1000017C1000015C100005C
+:1000400013C1000011C100000FC100000DC100006C
+:100050000BC1000009C1000007C1000005C100007C
+:100060000C94FB090C94060AFFC00000FDC00000C0
+:10007000FBC00000F9C00000F7C00000F5C00000A0
+:10008000F3C00000F1C00000EFC00000EDC00000B0
+:10009000EBC00000E9C00000E7C00000E5C00000C0
+:1000A000E3C00000E1C00000DFC00000DDC00000D0
+:1000B000DBC00000D9C00000D7C00000D5C00000E0
+:1000C000D3C00000D1C00000CFC00000CDC00000F0
+:1000D000CBC00000C9C00000C7C00000C5C0000000
+:1000E000C3C00000C1C00000BFC00000BDC0000010
+:1000F000BBC00000B9C00000B7C00000B5C0000020
+:10010000B3C00000B1C00000AFC00000ADC000002F
+:10011000ABC00000A9C00000A7C000009FC4000041
+:10012000A3C00000A1C000009FC000009DC000004F
+:100130009BC0000099C0000097C0000095C000005F
+:1001400093C0000091C000008FC000000C947009A3
+:100150008BC0000089C0000087C0000085C000007F
+:1001600083C0000081C000007FC000007DC000008F
+:100170007BC0000079C0000077C0000075C000009F
+:1001800073C0000071C000006FC000006DC00000AF
+:100190006BC0000069C0000067C0000065C00000BF
+:1001A00063C0000061C000005FC000005DC00000CF
+:1001B0005BC0000059C0000057C0000055C00000DF
+:1001C00053C0000051C000004FC000004DC00000EF
+:1001D0004BC0000049C0000047C0000045C00000FF
+:1001E00043C0000041C000003FC000003DC000000F
+:1001F0003BC000000C941C140C94D4140F04110484
+:1002000013041504170419041B041D04D70BFD0B5C
+:10021000240C4D0C560C5B0CA00CA50CC40CCB0C88
+:10022000670C6F0C770C820C840C860C8E0C960C71
+:1002300011241FBECFEFCDBFDFE2DEBF10E2A0E092
+:10024000B0E2EAECFBE202C005900D92AA3BB107D6
+:10025000D9F72DE2AAEBB0E201C01D92AC3FB20784
+:10026000E1F794D20C94E315CBCE84E08093560052
+:100270008CE1BCD3809363008BEB8093660080E8B5
+:100280008093650081E08093600088ED84BF1092C8
+:10029000410083E080935000809151008330E1F76A
+:1002A0008091500081608093500088E180935500D8
+:1002B0008091510080FFFCCF80915000806180933D
+:1002C00050008091510084FFFCCF88ED84BF84E012
+:1002D000809340000895E0E7F0E085818E7F85837C
+:1002E000E0E0FAE08FEB9DE586A397A380EE9EE227
+:1002F00080A391A382E0808308958091200A909149
+:10030000210A813E2EE2920718F020919E2306C01A
+:10031000803E2EE2920721F020919B2320936A00D9
+:1003200020910520222321F080910520815033C0A7
+:10033000885F9A42813D974080F11092BA20809167
+:10034000BB209091BC20A091BD20B091BE20019611
+:10035000A11DB11D8093BB209093BC20A093BD2014
+:10036000B093BE208091BB209091BC20A091BD2075
+:10037000B091BE20892F9A2FAB2FBB278093BE232D
+:100380008091BB209091BC20A091BD20B091BE2057
+:100390008093BD2386E08093052080910720909173
+:1003A00008200196B1F4809109208F3F91F080914F
+:1003B0000620811106C0809106208150809306207E
+:1003C00008958091140190911501809307209093D6
+:1003D00008200895009709F45EC00CF457C040E06F
+:1003E00020916B0030E020939C2330939D2320913B
+:1003F0009C2330919D233695322F222737952795C0
+:1004000020939C2330939D2350916A0020919C233C
+:1004100030919D23250F311D20939C2330939D23E4
+:10042000000020919C2330919D232817390728F440
+:1004300010929C2310929D23089520919C2330912B
+:100440009D23280F391F2115304238F08FEF9FE18F
+:1004500080939C2390939D23089520919C23309119
+:100460009D23442329F0A901481B590BCA0102C04E
+:10047000820F931F80939C2390939D2380919C23B4
+:1004800090919D238F7780936A000895919581952F
+:10049000910941E0A5CF0895CF93DF93C091200A41
+:1004A000D091210A80910320909104209E01281B65
+:1004B000390B20939F233093A0238091BA20811180
+:1004C0004BC080919F239091A0238E3C9F4FD4F4EA
+:1004D00080919F239091A0238B369F4F9CF0809119
+:1004E0000220882321F080910220815008C0809151
+:1004F0006A0080939E2381E08093BA208CE08093F1
+:1005000002202AC08CE08093022080919F2390914A
+:10051000A0238A369F4F1CF08FEF9FEF02C081E02F
+:1005200090E08093992390939A2380919F239091B8
+:10053000A0232091992330919A2360E370E00E94D8
+:10054000BA15261B370B2093992330939A23809159
+:10055000992390919A233EDF8091BA20813029F52A
+:1005600080919F239091A023C39794F080910220C3
+:10057000882331F08091022081508093022015C0A1
+:1005800080916A0080939B2383E08093BA200DC002
+:1005900080919F239091A023873991051CF481E0DD
+:1005A00090E002C08FEF9FEF15DFC0930320D09340
+:1005B0000420DF91CF9108958617970779F0681787
+:1005C000790728F49C01261B370BB90109C086174F
+:1005D000970718F4681B790B03C0089560E070E07A
+:1005E000CB010895CF93DF9380910020909101205B
+:1005F000892B51F0809100209091012001978093E8
+:1006000000209093012043C080E490E0809300207C
+:100610009093012080910720909108200196B9F1D4
+:10062000809114019091150120910920263018F431
+:1006300067E771E002C06EEE72E00E94A615EC0161
+:1006400080910720909108208C179D0758F46091A5
+:10065000072070910820CE01AFDF029718F080ECE0
+:100660009DE511C08091072090910820C817D907F7
+:1006700070F46091072070910820CE019DDF0297F1
+:1006800030F08FEB9DE58093360A9093370ADF9127
+:10069000CF910895AC01460F571F861B970B2091F1
+:1006A000200A3091210A24173507C8F72091200A23
+:1006B0003091210A8217930790F70895E0E8F6E059
+:1006C0008FE0808385E0848308951F93CF93DF9329
+:1006D000C0E4D0E0198180E4898340E250E064ED19
+:1006E0007DE280E290E00E94350F1983DF91CF9187
+:1006F0001F9108951F93CF93DF93C0E4D0E0198139
+:1007000080E4898387ED97E20E947D0F81E00E945B
+:100710008F0F1983DF91CF911F91089508950F9343
+:100720001F93842F242F30E0215831099DE7929F99
+:10073000A001939F500D112490910920953048F409
+:10074000843810F049585E4F9091C42027E731E07B
+:1007500004C09091C4202EEE32E0929FB001939F8E
+:10076000700D11249A01260F371FA9014850584DCA
+:100770000FE813E02DE730E060E00E9447131F917F
+:100780000F9108951CBEEEEFF0E409949EDF809176
+:10079000D42D882369F080E2E4EDFDE2A7EDB7E215
+:1007A00001900D928A95E1F71092D727A3DFEADF37
+:1007B00087E08093A200789458DDB0DF82D761D1C2
+:1007C00084D160E080E01BD107D18CE0FBD046D51E
+:1007D000EAD503D673DF60EA70E28AEA93E20E9408
+:1007E000DC15000000000000000000000000000018
+:1007F00000000000000000000000000000008091E8
+:10080000BF20882371F3E091D6258E2F90E08830A9
+:100810009105A0F4FC01E250FF4F0C94CD1581D15D
+:100820000DC0F1D10BC078D209C0FCD207C088D36B
+:1008300005C00ED403C00DD401C07ED41092BF20D9
+:10084000D0CF08950895809114018093B3238091AF
+:1008500015018093B423809124018093B523809166
+:1008600025018093B6238091200A8093BF23809135
+:10087000210A8093C0238091140190911501863440
+:10088000914080F08091140190911501893A914036
+:1008900048F480911401909115018093F42D909368
+:1008A000F52D00008091C220882339F014DD1092CC
+:1008B000C22081E08093C12008958091C1208823C7
+:1008C00041F08091BA20833019F417DD8BDE01C02E
+:1008D000E3DD8091C020882351F080911401909134
+:1008E00015018093F42D9093F52D1092C0208091E6
+:1008F00009202091140130911501853028F481E000
+:100900002737314030F004C081E02E3E324008F0FD
+:1009100080E08093C42008950F931F9381E080931B
+:10092000C7208093C2200FE813E02DE730E048EFA6
+:1009300057E260E081E80E9447132DE730E045E789
+:1009400058E260E082E80E9447132DE730E042EF72
+:1009500058E260E083E80E9447132DE730E04FE65D
+:1009600059E260E084E80E9447132DE730E04CEE46
+:1009700059E260E085E80E9447132DE730E049E640
+:100980005AE260E086E80E94471381E01F910F91D0
+:1009900008951092C720089581E0089581E0089598
+:1009A00010922002982F9C71936890932002881FC8
+:1009B0008827881F880F80932102109222021092AC
+:1009C00026020895E0E0F2E010AA836880AB80E19F
+:1009D00081AB12AA16AA0895E0E0F2E010A683E81F
+:1009E00080A78FE281A712A616A60895AAECB1E00F
+:1009F00092E09C93E82FF0E084911C9208959091EE
+:100A000071009D7F9093710010920002623011F08E
+:100A10009CE101C09EE19093010290E49093020258
+:100A2000811102C080E401C080EC80930302613038
+:100A300011F084E001C083E08093040280E2D6DFFD
+:100A400080930C0281E2D2DF80930D021092180293
+:100A50001092190281E080930002BECF1F920F9284
+:100A60000FB60F9211248F930000000000000000C9
+:100A700081E0809323028F910F900FBE0F901F9003
+:100A80001895CF93DF93E0E7F0E082818B7F82833C
+:100A9000C0E2D3E08DE0888380E4898389E08A83A3
+:100AA00083E3A4DF888782E3A1DF898787E39EDF72
+:100AB0008A8786E39BDF8B87E0E2F6E080818360B4
+:100AC00080831482DF91CF910895E0E7F0E0808188
+:100AD0008E7F808383E8809300010895E0E0F1E059
+:100AE000108A80E4808B10A280A310AA80ABE0E47F
+:100AF000F1E0108280831092C6201092C52081E020
+:100B00008093C4201092A8231092A9231092A623A8
+:100B10001092A72308958093D62581E08093BF206B
+:100B20000895CF93DF9310920920D8DFC0E0D1E081
+:100B30001EAA84E288AB19AA49E54AAB32E03BAB76
+:100B400060910B2070910C206CAB7DAB67ED75E272
+:100B500068AF79AF1AAE9BE39CAF93E090933D01F1
+:100B600010923E0128A9206828AB10924601E0E4CB
+:100B7000F1E0808310924101409342019093430140
+:100B800040910D2050910E20409344015093450117
+:100B900046EC53E2409348015093490110924A01B8
+:100BA00029E320934C0190934D0110924E019081C6
+:100BB00090689083188A90E4988B888B198A95E9BD
+:100BC0009A8B90E19B8B4EEE52E04C8B5D8B888F25
+:100BD000398F1A8E88EF97E28C8F9D8F1E8E68EC6E
+:100BE00070E084EF91E056DD88EC90E08093072080
+:100BF0009093082081E08093062088898068888B04
+:100C0000DF91CF9108951F93CF93DF9311E010935D
+:100C1000092064DFC0E0D1E018AA80E488AB84E05A
+:100C200088AB19AA1AAA4BE44BAB1CAA1DAA1EAA90
+:100C30008AE090E288AF99AF1AAE60EA6CAF38E014
+:100C400030933D0110923E0188A9806A88ABE0EAAA
+:100C5000F8E085E58083808310924601E0E4F1E0CE
+:100C600084E280831092410199E59093420122E051
+:100C700020934301A0910B20B0910C20A09344013C
+:100C8000B0934501A7EDB5E2A0934801B0934901A7
+:100C900010924A019BE390934C0193E090934D0195
+:100CA00010924E0190819068908388A319A295E9D3
+:100CB0009AA34BA34EEE52E04CA35DA368A739A7BD
+:100CC0001AA666EE7AE26CA77DA71EA6888B198A03
+:100CD0009A8B90E19B8B4C8B5D8B888F298F1A8E22
+:100CE00088EF97E28C8F9D8F1E8E68EC70E084EF0A
+:100CF00091E0D0DC88EC90E080930720909308206E
+:100D00001093062088A1806888A388898068888BD2
+:100D1000DF91CF911F9108951F93CF93DF9312E03E
+:100D200010930920DBDEC0E0D1E01EAA84E288AB8C
+:100D300019AA39E53AAB1BAB40910B2050910C201E
+:100D40004CAB5DAB47ED55E248AF59AF1AAE9BE3F4
+:100D50009CAF93E090933D0110923E0128A920683A
+:100D600028AB10924601E0E4F1E08083109241014B
+:100D7000309342019093430120910D2030910E2039
+:100D8000209344013093450126EC33E2209348013F
+:100D90003093490110924A0129E320934C0190932A
+:100DA0004D0110924E01908190689083188A90E4D2
+:100DB000988B888B198A45E94A8B90E19B8B2EEEA4
+:100DC00032E02C8B3D8B888F198F1A8E68EF77E27B
+:100DD0006C8F7D8F1E8E88A319A24AA39BA32CA380
+:100DE0003DA384E388A719A71AA686EE9AE28CA7EA
+:100DF0009DA71EA668EC70E084EF91E04BDC88ECC8
+:100E000090E0809307209093082081E08093062053
+:100E100088898068888B88A1806888A3DF91CF91BA
+:100E20001F9108951F93CF93DF9313E01093092030
+:100E300055DEC0E0D1E010924601E0E4F1E084E24A
+:100E400080831092410129E52093420192E0909322
+:100E5000430140910B2050910C204093440150934A
+:100E6000450147ED55E240934801509349011092E6
+:100E70004A019BE390934C0110934D0110924E0157
+:100E80009081906890831EAA88AB19AA2AAB1BABED
+:100E900020910D2030910E202CAB3DAB26EC33E29F
+:100EA00028AF39AF1AAE99E39CAF10933D01109271
+:100EB0003E0198A9906898AB18A250E458A394E01A
+:100EC00098A319A21AA24BE44BA31CA21DA21EA216
+:100ED0002AE030E228A739A71AA630EA3CA728E082
+:100EE0002DA71EA698A1906A98A395E59093A008B7
+:100EF000188A588B888B198A85E98A8B4B8B8EEEE2
+:100F000092E08C8B9D8B388F298F1A8E88EF97E219
+:100F10008C8F9D8F1E8E68EC70E084EF91E0BADBC1
+:100F200088EC90E0809307209093082081E08093E4
+:100F3000062088898068888BDF91CF911F91089562
+:100F40001F93CF93DF9314E010930920C7DDC0E017
+:100F5000D1E018AA80E488AB18AB19AA1AAA3BE41E
+:100F60003BAB1CAA1DAA1EAA8AE090E288AF99AFEB
+:100F70001AAE50EA5CAF88E080933D0110923E01CA
+:100F800098A9906A98AB95E59093A00810924601B5
+:100F9000E0E4F1E094E290831092410129E520938E
+:100FA000420122E02093430160910B2070910C20BC
+:100FB000609344017093450167ED75E260934801C9
+:100FC0007093490110924A012BE320934C0123E0D6
+:100FD00020934D0110924E01208120682083988B30
+:100FE000198A45E94A8B3B8B2EEE32E02C8B3D8BE8
+:100FF000588F898F1A8E68EF77E26C8F7D8F1E8EE7
+:1010000098A319A24AA39AE49BA32CA33DA393EC13
+:1010100098A789A71AA686EE9AE28CA79DA71EA676
+:1010200068EC70E084EF91E035DB88EC90E0809331
+:1010300007209093082081E08093062088898068AB
+:10104000888B88A1806888A3DF91CF911F91089534
+:10105000FFCFCF93DF9386E0809309203FDDC0E090
+:10106000D1E01EAA84E288AB19AA39E53AAB93E035
+:101070009BAB40910D2050910E204CAB5DAB46ECEC
+:1010800053E248AF59AF1AAE29E32CAF90933D011C
+:1010900010923E0128A9206828AB10924601E0E496
+:1010A000F1E08083109241013093420132E03093AD
+:1010B000430140910B2050910C20409344015093E8
+:1010C000450147ED55E24093480150934901109284
+:1010D0004A012BE320934C0190934D0110924E0155
+:1010E000208120682083188A20E4288B888B998BA4
+:1010F00095E99A8B90E19B8B4CED55E04C8B5D8B89
+:10110000888F398F1A8E88EF97E28C8F9D8F1E8E75
+:1011100068EC70E084EF91E0BDDA80E991E08093C3
+:1011200007209093082081E08093062088898068BA
+:10113000888BDF91CF910895CF93DF9387E08093E1
+:101140000920CCDCC0E0D1E01EAA94E298AB19AA39
+:1011500039E53AAB83E08BAB40910D2050910E20E6
+:101160004CAB5DAB46EC53E248AF59AF1AAE29E346
+:101170002CAF80933D0110923E0128A9206828AB36
+:1011800010924601E0E4F1E0908310924101309327
+:10119000420132E03093430140910B2050910C20EA
+:1011A000409344015093450147ED55E24093480177
+:1011B0005093490110924A012BE320934C018093F4
+:1011C0004D0110924E01208120682083188A20E46E
+:1011D000288B25E2288B898B85E98A8B80E18B8B94
+:1011E0004CED55E04C8B5D8B988F398F1A8E88EFC4
+:1011F00097E28C8F9D8F1E8E68EC70E084EF91E0FB
+:1012000049DA80E991E0809307209093082081E0FB
+:101210008093062088898068888BDF91CF9108951C
+:101220001F920F920FB60F9211248F9381E080933B
+:1012300003018F910F900FBE0F901F9018951F9272
+:101240000F920FB60F9211248F9382E080930301C7
+:101250008F910F900FBE0F901F901895E0E7F0E070
+:1012600083818C7F838384818C7F848380818D7F45
+:101270008083E0E8F1E080EC8283128688EC818351
+:101280001186A0E0B8E034E03C9323E011962C9363
+:10129000119714961C92149785ED91E096968D9374
+:1012A0009C93979716961C921697E0E4F8E030838B
+:1012B0002183148286A397A31682E0E6F6E080815C
+:1012C00080618083E0E4F9E083E18183148282E03D
+:1012D0008683A6A3B7A310A611A681E080830895F4
+:1012E0001F920F920FB60F9211242F933F934F939B
+:1012F0005F938F939F93CF93DF931F92CDB7DEB70A
+:101300008FEF80934C0980910920873031F48091D0
+:101310002C02898390912D0202C090912C02809121
+:10132000C320891B209168093091690982308CF0B3
+:101330002A3F374070F4209168093091690989305B
+:101340001CF481E090E002C086E090E0820F931FE1
+:1013500018C020916809309169098F3FB4F4273093
+:10136000310598F02091680930916909883F1CF097
+:1013700081E090E002C086E090E0A901481B590B93
+:10138000CA0180937809909379090F90DF91CF91EA
+:101390009F918F915F914F913F912F910F900FBE31
+:1013A0000F901F901895E0E7F0E083818F7E838394
+:1013B000E0E4F6E080818A6A80838FEF848388E5A9
+:1013C000828BE0EAF8E080E3838384EC858387E026
+:1013D0008683178288E184830895E0E7F0E08381C3
+:1013E000877F8383E0ECF8E080E48083118288E5E6
+:1013F0008093550608951F920F920FB60F921124F5
+:1014000000000F900FBE0F901F9018951F920F9223
+:101410000FB60F9211248F93EF93FF93E0EAF8E059
+:1014200080818083FF91EF918F910F900FBE0F907D
+:101430001F9018959FB7F894A0E5B0E016968C9190
+:101440001697897F16968C931697E0E6F0E080E871
+:1014500085838BEB868316968C91169784601696FF
+:101460008C938081816080839FBF08959FB7F8949B
+:10147000E82FF0E0E059FF4F60958081682360839A
+:101480009FBF0895CF93863011F0C0E001C0C8E13E
+:101490008091510081FD0DC09FB7F894809150005C
+:1014A0008260809350009FBF8091510081FFFCCFEC
+:1014B000C1DF6C2F636084E490E0BCD460E480E022
+:1014C000CF91D4CF8091C82008958091C8208130D9
+:1014D00009F45FCA0895F0D0FC0183818093C8208D
+:1014E000811101C019CA81E008959091C625892F04
+:1014F000807697FF07C0803491F48091C7258111D1
+:101500000EC04CCA803459F48091C725811107C0A0
+:101510008091CC259091CD25892B09F03DCA80E0A2
+:1015200008958091C8258F770C94C9129091D0208E
+:10153000911102C080E00895E091CD20F091CE207D
+:101540000190F081E02D94818917A0F7E093CB20E2
+:10155000F093CC20228133812E0F3F1FE217F30737
+:1015600098F49181943061F49281891309C0938138
+:10157000691306C0E093CB20F093CC2081E008955E
+:101580009081E90FF11DEACFE093CB20F093CC20BE
+:10159000D1CFE091CD20F091CE200190F081E02DCF
+:1015A000228133812E0F3F1FFC014081E40FF11D8A
+:1015B000E217F30748F48181843031F0853039F047
+:1015C0008081E80FF11DF4CF80E090E00895CF0115
+:1015D00008951F93CF93DF93182FA8DF882339F145
+:1015E000C091CB20D091CC20CE01D3DFEC01892B50
+:1015F00041F04C815D816B818A81D8D78111F4CF14
+:1016000016C0E091CD20F091CE2092818381E92F08
+:10161000F82FE10FF11DE10FF11D0190F081E02D98
+:101620000190F081E02DDF91CF911F91099480E02E
+:10163000DF91CF911F910895EF92FF921F93CF9367
+:10164000DF93C82F60E072DF811102C010E02DC06F
+:10165000E091CD20F091CE2092818381E92FF82F67
+:10166000EC0FF11DEC0FF11DE080F180D701169613
+:10167000ED91FC9117970995682F8C2F57DF182F44
+:10168000882321F3C091CB20D091CC20CE0181DFE3
+:10169000EC01892B21F08A810E940314F7CFD70136
+:1016A0001296ED91FC9113970995812FDF91CF91BF
+:1016B0001F91FF90EF9008958091CB209091CC20C6
+:1016C0000895FBC6CF938091D020811108C010925D
+:1016D000D0201092D4201092D520CF910895C0E050
+:1016E000E091CD20F091CE200190F081E02D848119
+:1016F000C81768F78C2FA0DFCF5FF2CFCF93809110
+:10170000D0208823F1F0C0E0E091CD20F091CE20F0
+:10171000A081B18114968C91C81798F4928183812D
+:10172000E92FF82FEC0FF11DEC0FF11D0190F08166
+:10173000E02D0084F185E02D309709F00995CF5F09
+:10174000E3CFCF910895EF92FF920F931F93CF9322
+:10175000DF931F92CDB7DEB71092D0251092D1251E
+:101760001092D2251092D3251092D4251092D5250F
+:101770008091C62587FF07C02091CC253091CD25CB
+:10178000232B09F44EC3982F9076903409F00BC1A7
+:10179000E091C7258E2F90E0FC01E05AF109EA3074
+:1017A000F10508F0CDC2EA5FFE4F0C94CD1581E043
+:1017B0008093C02080910720909108208093B723C8
+:1017C00080910720909108209093B82380919E23C8
+:1017D0008093B92380919B238093BA2380916A00E0
+:1017E0008093BB2380916B008093BC236091CC25B8
+:1017F0007091CD258AEA93E2D4C0109200088091BE
+:10180000C8259091C9258093360890933708809118
+:10181000CA258F70809300086091CC257091CD25EA
+:1018200086EC93E2BCD620910D2030910E20809161
+:10183000CC259091CD252817390709F4F0C2809363
+:101840000D2090930E2026C0109240088091C8254C
+:101850009091C92580937608909377088091CA2546
+:101860008F70809340086091CC257091CD2587EDD5
+:1018700095E295D620910B2030910C208091CC25BB
+:101880009091CD252817390709F4C9C280930B2000
+:1018900090930C208091092051C0109268091092F9
+:1018A00069098091C8258093C320B9C28091C82559
+:1018B00080932406B4C2E091C825F091C925E83090
+:1018C000F10508F03DC2E05FFE4F0C94CD1560E0DD
+:1018D00080E095D88091CA2563D880E02FC060E071
+:1018E00080E08DD88091CA255BD881E027C061E077
+:1018F00081E085D88091CA2553D88091CB2562D8C4
+:1019000082E01CC083E01AC084E018C060E080E080
+:1019100076D88091CA2544D885E010C061E080E087
+:101920006ED88091CA253CD886E008C062E080E08D
+:1019300066D88091CA25806833D887E0ECD86FC21A
+:101940008091C825809384066AC28091C8259091B1
+:10195000C925892B91F00E94650380E2E4EDFDE248
+:10196000A7EDB7E201900D928A95E1F781E08093AF
+:10197000D7270E947A030E946503E9E7F0E091E02F
+:1019800088EDF89484BF90836091CC257091CD252B
+:101990008AEA90E206C06091CC257091CD2589EA53
+:1019A00090E2FDD53CC29111CBC187FFFCC02091D4
+:1019B000CC253091CD252115310509F4C1C18F7198
+:1019C00009F09EC08091C725863071F0883009F4F7
+:1019D0008EC08111B5C12230310509F0B1C162E07C
+:1019E00070E084ED90E2DDCF8091C8259091C9250B
+:1019F000292F332722303105A1F064F4213031053D
+:101A000009F09EC18091192090911A20DC016C91FF
+:101A100070E05BC02330310589F12F30310509F1C9
+:101A20008FC1E0911920F0911A202189821708F0C6
+:101A300087C19927880F991F880F991FE0911B2054
+:101A4000F0911C20E80FF91F80819181FC016281D7
+:101A50007381A5D5E091CE25F091CF2582E08183D9
+:101A600035C080911D2090911E20009709F468C117
+:101A7000DC0112966D917C91139727C099278130D4
+:101A8000910569F038F0029709F05AC168E08AE8D8
+:101A900090E208C064E070E08CE990E216C067E074
+:101AA00083E990E2282FAAE7B0E2FC01819190E05F
+:101AB0008D939D938E2F821B8617C0F3660F6E5FEA
+:101AC0006093782070E088E790E269D58091CC251A
+:101AD0009091CD252091D0253091D1258217930763
+:101AE00008F09DC18093D0259093D12598C12130D5
+:101AF000310509F025C161E070E080ED90E251CF41
+:101B00008130C9F58091C7258A3009F019C121308B
+:101B1000310509F015C18091D020882309F410C146
+:101B2000E090CA25F090CB250091CD201091CE20D9
+:101B3000D801ED91FC918481E81608F001C160E0C4
+:101B40008E2DF4DC882309F4FBC0FF24EE0CFF1C6F
+:101B5000F801828193818E0D9F1DDC01ED91FC9136
+:101B60000680F781E02D09958093D22061E070E036
+:101B700082ED90E216CF823009F0E2C08091C72555
+:101B80008111DEC02230310509F0DAC08091CA250A
+:101B90005ED590E08093C9209093CA2062E070E007
+:101BA00089EC90E2FECE8F7109F07DC08091C7254F
+:101BB000833009F4C5C018F48130A1F0C1C085306C
+:101BC00019F0893039F1BCC08091CC259091CD2598
+:101BD000892B09F0B5C081E99AE08093D2259093D2
+:101BE000D3251DC18091CC259091CD25892B09F05D
+:101BF000A7C08091C8259091C925019709F0A0C080
+:101C00008091D4209091D5208D7F8093D420909383
+:101C1000D52005C18091CC259091CD25892B09F047
+:101C20008FC0BAD4882309F48BC02091C825309185
+:101C3000C9253327E0911920F0911A20818990E07D
+:101C40008217930708F47CC03DDD8091C8259091F0
+:101C5000C9258093D020882309F4E1C099278150B9
+:101C6000904C880F991F880F991F20911B2030914D
+:101C70001C20820F931F8093CD209093CE2010E0E4
+:101C8000E091CD20F091CE200190F081E02D848173
+:101C9000181708F0C4C060E0812F9BDC882309F48A
+:101CA0004FC01F5FEDCF8130F1F48091C7258B309D
+:101CB00009F046C08091CC259091CD25892B09F063
+:101CC0003FC08091D020882309F43AC01091CA25E2
+:101CD0006091C825812F6983AFDC6981882381F1F8
+:101CE000812F77DC2BC0823059F58091C725813058
+:101CF00019F0833089F024C08091CC259091CD25B6
+:101D0000892BF1F48091C8259091C925892BC1F4C4
+:101D10008091CA25A3D412C08091CC259091CD2565
+:101D2000892B71F48091C8259091C925892B41F4A4
+:101D30008091CA2538D58091CA256ED581116FC092
+:101D40008091C6258F718130B9F58091D02088238C
+:101D500099F1E090CA25F090CB250091CD2010910B
+:101D6000CE20D801ED91FC918481E81628F560E041
+:101D70008E2DDCDB882301F1F701FF27EE0FFF1F1B
+:101D8000D80112968D919C911397E80FF91F00814D
+:101D90001181D8011696ED91FC9117970995682F3E
+:101DA0008E2DC4DB882341F0D8011496ED91FC916F
+:101DB00015970995811133C08091C6258F718230A6
+:101DC00081F58091D020882361F1F12CE091CD2024
+:101DD000F091CE20A081B18114968C91F81608F56F
+:101DE00092818381E92FF82FEF0DF11DEF0DF11D89
+:101DF00000811181D8011696ED91FC9117970995F4
+:101E0000682F8F2D93DB882361F0D8011496ED9114
+:101E1000FC9115970995811102C0F394D7CF81E009
+:101E200001C080E00F90DF91CF911F910F91FF9043
+:101E3000EF9008951BBEFC0128ED24BF6083089538
+:101E40008091CF0187FDFCCF08951F93CF93DF933F
+:101E5000C0ECD1E01A858A8761E08BEC91E0EADF83
+:101E60001A87DF91CF911F910895CF92DF92EF9261
+:101E7000FF920F931F93CF93DF9300D0CDB7DEB7C0
+:101E80008C017B0149835A83DBDF8CECC82EDD2477
+:101E9000D394F601908198609083B801705F498176
+:101EA0005A81C70180D6F6018081877F80830F9099
+:101EB0000F90DF91CF911F910F91FF90EF90DF90E6
+:101EC000CF900895CF93DF9300D0CDB7DEB76A836C
+:101ED0008983B6DFACECB1E09C9198609C938981DA
+:101EE000E82FF0E0F05F6A8160838C91877F8C93AC
+:101EF0000F900F90DF91CF9108950F931F93CF9381
+:101F00008C019EDFC0E0F80161918F018C2FDADF38
+:101F1000CF5FC032C1F7CF911F910F910895CF933A
+:101F2000DF931F92CDB7DEB789838ADF898120E2F4
+:101F3000829FC0011124E0ECF1E012829183808342
+:101F400085E30F90DF91CF9180CF4091CA01E62FBA
+:101F5000F72F8093CA0184914093CA010895E82F16
+:101F6000F0E0EA50F24D80818F3F09F4FFCF9FB738
+:101F7000F89480818F5F80839FBF0895E82FF0E001
+:101F8000EA50F24D8081811101C0FFCF9FB7F894D4
+:101F90008081815080839FBF0895CF93C82F809107
+:101FA0009823C11105C0882339F081E0E7DF04C020
+:101FB000811102C081E0D3DFC0939823CF910895AF
+:101FC000282F2F70082E000C990B392F331F332721
+:101FD000331F832F90E0820F911D820F911D23E00C
+:101FE000880F991F2A95E1F78C5D9C4D08950F93FA
+:101FF000E8ECF4E080818F7D808380818F7D808319
+:10200000ECE2F3E202E0059310922E2310922F23CC
+:1020100000E2069300E40693E4E2F3E200E20693B2
+:1020200000E40693E6ECF5E214861586168617861C
+:1020300012861386109207230F9108950F9385E05F
+:1020400080930723EDE2F3E204E00593E5E2F3E297
+:1020500004E005930F9108950F9383E08093072385
+:1020600010922E2310922F23ECE2F3E202E006936B
+:102070000F910895E091D225F091D325309709F082
+:1020800009940895282F2F70082E000C990B392FD2
+:10209000331F3327331F832F90E0820F911D820F50
+:1020A000911D029749E0489F9001499F300D1124EE
+:1020B000C901895A9D4D08958F929F92AF92BF9208
+:1020C000DF92EF92FF920F931F93CF93DF93D82E5F
+:1020D000D9DFEC018D2D74DF7C01DC011196EC91D0
+:1020E000E770E150E73040F4F0E0EE0FFF1FE455F9
+:1020F000FF4D0081118102C008E010E0ED81FE81FA
+:102100002B813C814881D701D7FE48C016968D911E
+:102110009C9117978E0F9F1F8D839E838217930725
+:1021200061F1281B390B2115B4E03B0738F02FEF84
+:1021300033E0C901B8010AD5281B390B41FF0AC099
+:10214000C901B80103D5AC0191E0452B09F090E03D
+:10215000892F01C080E0988180FB91F99883F70175
+:10216000168217822283338329813A818D819E8151
+:10217000820F931F848395830EC041FF71C04D7FF2
+:102180004883D70116961D921C92179712961D929E
+:102190001C921397F70102E006937BC01296AD9054
+:1021A000BC90139742FF10C089809A80C901B80182
+:1021B000CDD4B0E4DB9EB001112469567F4DAC0153
+:1021C000C4018E0F9F1FEFD48D819E818A0D9B1DB0
+:1021D0008D839E832B813C812817390710F42D8332
+:1021E0003E83F70186819781A816B906C9F58D81CE
+:1021F0009E8182179307A1F1281B390B2115F4E06A
+:102200003F0710F02FEF33E0C901B8019FD4281B1E
+:10221000390BD70112961D921C9213972017310784
+:1022200078F4888184608883B0E4DB9EC001112447
+:1022300089569F4DF7018483958306831783AACF20
+:1022400049815A818D819E81840F951FD7011496F3
+:102250008D939C93159716962D933C9317979ACF31
+:10226000888180FF16C08E7F8883EF81F885309744
+:1022700081F06D817E814D2D80E0DF91CF911F91A6
+:102280000F91FF90EF90DF90BF90AF909F908F9055
+:102290000994DF91CF911F910F91FF90EF90DF9004
+:1022A000BF90AF909F908F9008950F93CF93DF933F
+:1022B00080910723833029F4DDDEDF91CF910F91E8
+:1022C00096CE2091032330910423C091D025D09144
+:1022D000D125C21BD30B61F5809105239091062374
+:1022E000820F931F80930523909306232091CC2582
+:1022F0003091CD252817390721F08091D6208823E9
+:1023000031F084E080930723E4E2F3E236C0E09109
+:10231000D425F091D525309799F00995882381F03F
+:102320001092032310920423C091D025D091D1257F
+:10233000C034D10528F01092D620C0E4D0E003C00C
+:1023400081E08093D620C0932E23D0932F238091B9
+:102350000323909104232091CE253091CF25280F7F
+:10236000391F2093302330933123C80FD91FC093D6
+:102370000323D0930423ECE2F3E202E00693DF911F
+:10238000CF910F9108950F93CF93DF931F92CDB705
+:10239000DEB78091CC0480FF65C021E02093CC049F
+:1023A00084E293E2FC0100E80693ECE2F3E200E849
+:1023B00006932093CA04FC0100E106938091072351
+:1023C000882329F08350823008F454DE10DE809197
+:1023D000262390912723089709F046C088E0E3EC74
+:1023E000F2E2A6ECB5E201900D928A95E1F78091B8
+:1023F000C80480628093C8048091C804806280937E
+:10240000C804A1D9811102C019DE2EC09091C62541
+:1024100097FF0EC0109205231092062310920323FB
+:102420001092042392E09093072389833EDF08C033
+:102430002091CC253091CD25232B21F489830CDEEE
+:10244000898113C010920523109206231092032352
+:102450001092042391E090930723E4E2F3E202E078
+:10246000069303C080E001C081E00F90DF91CF911F
+:102470000F910895CF93CFB7F89481E08EDDEAEC09
+:10248000F4E080E4808380E28083E1ECF4E080810A
+:1024900081608083A9ECB4E08C9182608C93E8EC3D
+:1024A000F4E08081806480838C9181608C93808152
+:1024B00080688083CFBFCF910895CF931092600042
+:1024C00080E30E94420A8091C00480648093C0042B
+:1024D00081E080936000CFB7F89480E090E0FC0149
+:1024E00023E0EE0FFF1F2A95E1F7E85FFC4D158E04
+:1024F00001968E30910599F780E090E039E0389FA1
+:10250000F001399FF00D1124E95AFD4D20812E7FF5
+:10251000208301968C30910591F76AE170E082E0AA
+:1025200014DD8F3F09F48FE18093FA046BE170E0D2
+:1025300082E00BDD8F3F09F48FE18093FB048091F3
+:10254000C00486608093C0048091C004806880933A
+:10255000C0048091C00480618093C00484E293E24F
+:102560008093C6049093C7048091C00480628093D6
+:10257000C0048FEF8093C5048091C804826080936B
+:10258000C8041092982385E0EADC74DFCFBFCF91B6
+:1025900008958093C30408958091C3040895E6ECE0
+:1025A000F5E2808791876287738708950F931F9361
+:1025B000CF93DF931F92CDB7DEB78A01698300DD29
+:1025C000FC018181807C698181113AC06370613036
+:1025D00019F020F080E803C080EC01C080E40038EE
+:1025E0001105E9F058F400321105A9F00034110585
+:1025F000A1F000311105C9F491E018C0011592E075
+:10260000190779F00F3F93E0190769F001151140A0
+:1026100061F495E00BC092E009C093E007C094E03C
+:1026200005C096E003C097E001C090E0118226E06B
+:102630002083982B918381818062818381E001C016
+:1026400080E00F90DF91CF911F910F910895B8DC3A
+:10265000FC01818182FB882780F90895CF93C82FE0
+:10266000AFDCFC01818182FF0FC091819B7F918350
+:102670008C2F08DDFC01908190FF06C09E7F908327
+:102680000780F085E02D099581E0CF9108958F9224
+:102690009F92AF92BF92DF92EF92FF920F931F93A0
+:1026A000CF93DF931F92CDB7DEB7D82E5A017901B1
+:1026B0006983E8DC4C018D2D83DC9C01DC011196E3
+:1026C0008C911197807C6981882309F45EC01196F2
+:1026D0008C911197807C803C21F011968C9182FD29
+:1026E00054C09FB7F894F401808180FF02C09FBF5F
+:1026F0004CC0816080839FBFF401A182B282E382DB
+:10270000F482158216820783108791E0611104C05C
+:10271000E114F10409F090E0D4018C9190FB81F96F
+:102720008B7F8C93D7FE04C0F9011682178229C0D3
+:10273000D90111968C911197807C803CC9F4119637
+:10274000EC91E770E150E73040F4F0E0EE0FFF1F4E
+:10275000E455FF4D6081718102C068E070E0C701FF
+:10276000F5D1892B29F0F40180818E7F80830DC003
+:10277000D90112961D921C92139716961D921C92C7
+:1027800017978D2D99DC81E001C080E00F90DF91DB
+:10279000CF911F910F91FF90EF90DF90BF90AF907E
+:1027A0009F908F900895EF92FF920F93CF93C82F31
+:1027B00007DC7C018C2F66DCDC01F70102E005936D
+:1027C0009C9190FF1BC09E7F9C931796ED91FC916E
+:1027D0001897309799F0D701C7FF05C016966D91ED
+:1027E0007C91179704C012966D917C9113974C2F92
+:1027F00081E0CF910F91FF90EF900994CF910F91CD
+:10280000FF90EF900895CF93C82FCDDF8C2FD8DBAA
+:10281000FC011182CF9108950F93CF93C82FD0DB85
+:10282000FC0191819460918301E006938C2FBBDFC2
+:1028300081E0CF910F9108951F920F920FB60F92E2
+:1028400011240F932F933F934F935F936F937F9335
+:102850008F939F93AF93BF93CF93EF93FF93809109
+:10286000CB0487FF08C080E88093CA040E947E0BD7
+:102870000E94230486C08091CB0482FF18C084E0AC
+:102880008093CA0480912C2386FF7BC08091CC0466
+:1028900081FD77C078DD811174C08091072381307C
+:1028A00011F4DADB6EC0843009F06BC021C0809176
+:1028B000CB0481FF26C082E08093CA048091242348
+:1028C00086FF5FC08091CC0481FD5BC05CDD81111F
+:1028D00058C080910723823041F484E0809307231D
+:1028E000E4E2F3E202E006934CC0833009F049C011
+:1028F000EDE2F3E204E00593E5E2F3E204E00593A0
+:1029000040C08091CB0484FF25C080E18093CA043D
+:10291000C1E08C2F48DF8C2F806845DFCF5FC63049
+:10292000C1F70E94620B1092C30410922523C0933A
+:10293000242383E48093252310922D23C0932C23FA
+:1029400080932D2383EC92E2809328239093292374
+:102950004EDB17C08091CB0486FF08C080E48093D3
+:10296000CA0480E01ADB0E9421040BC08091CB04D2
+:1029700085FF07C080E28093CA0481E00EDB0E94DD
+:102980002204FF91EF91CF91BF91AF919F918F91D1
+:102990007F916F915F914F913F912F910F910F9088
+:1029A0000FBE0F901F9018951F920F920FB60F92A7
+:1029B00011240F931F932F933F934F935F936F9324
+:1029C0007F938F939F93AF93BF93CF93DF93EF93B7
+:1029D000FF938091CC0481FF1AC082E08093CC04E5
+:1029E0008091C5048195880FE4E2F3E2E81BF109C8
+:1029F000208131812452334283E0369527958A9590
+:102A0000E1F7822F869520FD06C0C0E005C0BBDC43
+:102A1000882319F386C0C0E8C80F8C2FD1DAFC01D7
+:102A2000208125FF7EC000E20693C11174C0809111
+:102A30000723843019F41EDBDADA73C000912623F1
+:102A4000109127238091D0259091D125C091032307
+:102A5000D09104239E01200F311F8217930718F491
+:102A60008C010C1B1D0B8091CE259091CF25A801C8
+:102A700063EC72E28C0F9D1F96D0C00FD11FC093E4
+:102A80000323D09304230034110569F480910523B6
+:102A9000909106238C0F9D1F2091CC253091CD2540
+:102AA0008217930788F0C093D025D093D125E09169
+:102AB000D425F091D525309729F00995811102C0D0
+:102AC000BDDA2FC0C9DA2DC08091D0259091D125D3
+:102AD0008C179D07D9F4E091D425F091D525309736
+:102AE00079F30995882361F320910523309106231A
+:102AF0008091032390910423820F931F80930523D9
+:102B0000909306231092032310920423E4E2F3E24D
+:102B100002E0069306C0C03811F4C7DB02C08C2F58
+:102B2000CBDAFF91EF91DF91CF91BF91AF919F9160
+:102B30008F917F916F915F914F913F912F911F9155
+:102B40000F910F900FBE0F901F901895AA1BBB1BE3
+:102B500051E107C0AA1FBB1FA617B70710F0A61B9D
+:102B6000B70B881F991F5A95A9F780959095BC01BE
+:102B7000CD01089597FB072E16F4009406D077FD3B
+:102B800008D0E4DF07FC05D03EF4909581959F4F77
+:102B90000895709561957F4F0895EE0FFF1F059082
+:102BA000F491E02D0994FB01DC0102C001900D922B
+:102BB00041505040D8F70895FB01DC0101900D927F
+:0A2BC0000020E1F70895F894FFCF1C
+:102BCA0040000CE02E0AFFFFFFFF55800080006BDB
+:102BDA000A650A750A620A000064201F200000289C
+:102BEA002023200F2000000009023C000101008080
+:102BFA00FA0904000006FFFFFF00070581018000B3
+:102C0A000107058201800001070583018000010791
+:102C1A0005840180000107058501800001070586FA
+:102C2A00018000011201000200000040EB0394BA87
+:102C3A000002010200010000000300000000000081
+:102C4A00000000000000000000004C616272616434
+:102C5A006F72004573706F54656B000004030904BA
+:102C6A00646562756731323300010200100020008A
+:0A2C7A004000800000010002FF038B
+:00000001FF
diff --git a/Desktop_Interface/build_android/package_source/assets/firmware/labrafirm_0002_02.hex b/Desktop_Interface/build_android/package_source/assets/firmware/labrafirm_0002_02.hex
new file mode 100644
index 00000000..db3bd750
--- /dev/null
+++ b/Desktop_Interface/build_android/package_source/assets/firmware/labrafirm_0002_02.hex
@@ -0,0 +1,714 @@
+:100000001FC1000039C1000037C1000035C1000028
+:1000100033C1000031C100000C94F0080C94200999
+:100020002BC1000029C1000027C1000025C100002C
+:1000300023C1000021C100001FC100001DC100003C
+:100040001BC1000019C1000017C1000015C100004C
+:1000500013C1000011C100000FC100000DC100005C
+:100060000C941D0A0C94280A07C1000005C1000069
+:1000700003C1000001C10000FFC00000FDC000007E
+:10008000FBC00000F9C00000F7C00000F5C0000090
+:10009000F3C00000F1C00000EFC00000EDC00000A0
+:1000A000EBC00000E9C00000E7C00000E5C00000B0
+:1000B000E3C00000E1C00000DFC00000DDC00000C0
+:1000C000DBC00000D9C00000D7C00000D5C00000D0
+:1000D000D3C00000D1C00000CFC00000CDC00000E0
+:1000E000CBC00000C9C00000C7C00000C5C00000F0
+:1000F000C3C00000C1C00000BFC00000BDC0000000
+:10010000BBC00000B9C00000B7C00000B5C000000F
+:10011000B3C00000B1C00000AFC0000070C4000058
+:10012000ABC00000A9C00000A7C00000A5C000002F
+:10013000A3C00000A1C000009FC000009DC000003F
+:100140009BC0000099C0000097C000000C94920969
+:1001500093C0000091C000008FC000008DC000005F
+:100160008BC0000089C0000087C0000085C000006F
+:1001700083C0000081C000007FC000007DC000007F
+:100180007BC0000079C0000077C0000075C000008F
+:1001900073C0000071C000006FC000006DC000009F
+:1001A0006BC0000069C0000067C0000065C00000AF
+:1001B00063C0000061C000005FC000005DC00000BF
+:1001C0005BC0000059C0000057C0000055C00000CF
+:1001D00053C0000051C000004FC000004DC00000DF
+:1001E0004BC0000049C0000047C0000045C00000EF
+:1001F00043C000000C9433140C94E114FC03FE0380
+:10020000000402040404060408040A041C041E0476
+:10021000200422042404290426042804F90B1F0CBA
+:10022000460C6F0C780C7D0CC50CCA0CE90CF00C5C
+:10023000890C910C990CA40CA60CA80CB10CBA0C4E
+:1002400011241FBECFEFCDBFDFE2DEBF10E2A0E082
+:10025000B0E2E4EEFBE202C005900D92AA39B107CC
+:10026000D9F72BE2AAE9B0E201C01D92A03EB20785
+:10027000E1F779D20C94F015C3CE84E08093560058
+:100280008CE185D3809363008BEB8093660080E8DC
+:100290008093650081E08093600088ED84BF1092B8
+:1002A000410083E080935000809151008330E1F75A
+:1002B0008091500081608093500088E180935500C8
+:1002C0008091510080FFFCCF80915000806180932D
+:1002D00050008091510084FFFCCF88ED84BF84E002
+:1002E000809340000895E0E7F0E085818E7F85836C
+:1002F000E0E0FAE08FEB9DE586A397A380EE9EE217
+:1003000080A391A382E0808308958091200A909138
+:10031000210A813E2EE2920718F02091822106C028
+:10032000803E2EE2920721F020917F2120936A00E7
+:1003300020910520222321F080910520815033C097
+:10034000885F9A42813D974080F110929A20809177
+:100350009B2090919C20A0919D20B0919E20019681
+:10036000A11DB11D80939B2090939C20A0939D2064
+:10037000B0939E2080919B2090919C20A0919D20E5
+:10038000B0919E20892F9A2FAB2FBB278093A2215B
+:1003900080919B2090919C20A0919D20B0919E20C7
+:1003A0008093A12186E08093052080910720909181
+:1003B00008200196B1F4809109208F3F91F080913F
+:1003C0000620811106C0809106208150809306206E
+:1003D00008958091140190911501809307209093C6
+:1003E00008200895009709F45EC00CF457C040E05F
+:1003F00020916B0030E02093802130938121209167
+:100400008021309181213695322F222737952795EB
+:10041000209380213093812150916A002091802186
+:1004200030918121250F311D20938021309381212E
+:10043000000020918021309181212817390728F46C
+:100440001092802110928121089520918021309175
+:100450008121280F391F2115304238F08FEF9FE19D
+:100460008093802190938121089520918021309163
+:100470008121442329F0A901481B590BCA0102C05C
+:10048000820F931F809380219093812180918021FE
+:10049000909181218F7780936A000895919581953D
+:1004A000910941E0A5CF0895CF93DF93C091200A31
+:1004B000D091210A80910320909104209E01281B55
+:1004C000390B209383213093842180919A208111CC
+:1004D0004BC080918321909184218E3C9F4FD4F416
+:1004E00080918321909184218B369F4F9CF0809145
+:1004F0000220882321F080910220815008C0809141
+:100500006A008093822181E080939A208CE080931E
+:1005100002202AC08CE08093022080918321909158
+:1005200084218A369F4F1CF08FEF9FEF02C081E03D
+:1005300090E080937D2190937E2180918321909102
+:10054000842120917D2130917E2160E370E00E9422
+:10055000C715261B370B20937D2130937E21809178
+:100560007D2190917E213EDF80919A20813029F576
+:100570008091832190918421C39794F080910220EF
+:10058000882331F08091022081508093022015C091
+:1005900080916A0080937F2183E080939A200DC030
+:1005A0008091832190918421873991051CF481E009
+:1005B00090E002C08FEF9FEF15DFC0930320D09330
+:1005C0000420DF91CF9108958617970779F0681777
+:1005D000790728F49C01261B370BB90109C086173F
+:1005E000970718F4681B790B03C0089560E070E06A
+:1005F000CB010895CF93DF9380910020909101204B
+:10060000892B51F0809100209091012001978093D7
+:1006100000209093012043C080E490E0809300206C
+:100620009093012080910720909108200196B9F1C4
+:10063000809114019091150120910920263018F421
+:1006400067E771E002C06EEE72E00E94B315EC0144
+:1006500080910720909108208C179D0758F4609195
+:10066000072070910820CE01AFDF029718F080ECD0
+:100670009DE511C08091072090910820C817D907E7
+:1006800070F46091072070910820CE019DDF0297E1
+:1006900030F08FEB9DE58093360A9093370ADF9117
+:1006A000CF910895AC01460F571F861B970B2091E1
+:1006B000200A3091210A24173507C8F72091200A13
+:1006C0003091210A8217930790F70895E0E8F6E049
+:1006D0008FE0808385E0848308951F93CF93DF9319
+:1006E000C0E4D0E0198180E4898340E250E068EB07
+:1006F0007BE280E290E00E945A0F1983DF91CF9154
+:100700001F9108951F93CF93DF93C0E4D0E0198128
+:1007100080E489838BEB95E20E94A20F81E00E9426
+:10072000B40F1983DF91CF911F91089508950F930E
+:100730001F932091A4208EEE92E0289FA001299F74
+:10074000500D112444525A4D07E913E02EEE32E0C9
+:1007500060E081E80E945E131F910F9108951CBE16
+:10076000EEEFF0E40994B9DF8091B82B882369F0AB
+:1007700080E2E8EBFBE2ABEBB5E201900D928A95EB
+:10078000E1F71092BB25BEDFEADF87E08093A2008D
+:10079000789473DDCBDFB7D745D168D160E080E0D6
+:1007A000FFD0EBD08CE0DFD07BD51FD638D68EDFE4
+:1007B00060E870E28EE891E20E94E9150000000016
+:1007C0000000000000000000000000000000000029
+:1007D000000000000000000080919F20882371F33A
+:1007E000E091BA238E2F90E088309105A0F4FC01AF
+:1007F000E250FF4F0C94DA1565D10DC0D7D10BC074
+:1008000065D209C0EBD207C078D305C0FFD303C0BF
+:10081000FED301C070D410929F20D0CF08950895C8
+:10082000E09109208E2F90E08830910590F4FC0132
+:10083000EA5FFE4F0C94DA15B8D10BC046D209C05E
+:10084000CCD207C059D305C0E0D303C053D401C0F4
+:10085000C6D48091140180939721809115018093D3
+:100860009821809124018093992180912501809382
+:100870009A218091200A8093A3218091210A80935C
+:10088000A42180911401909115018634914080F04B
+:100890008091140190911501893A914048F480911A
+:1008A0001401909115018093D82B9093D92B0000BF
+:1008B0008091A220882339F016DD1092A22081E0D9
+:1008C0008093A12008958091A120882341F08091F8
+:1008D0009A20833019F419DD8DDE01C0E5DD8091A9
+:1008E000A020882351F080911401909115018093EC
+:1008F000D82B9093D92B1092A0209091A42081E026
+:10090000911180E08093A42008950F931F9381E0BC
+:100910008093A7208093A22007E913E02DE730E021
+:100920004CED55E260E081E80E945E1381E01F918A
+:100930000F9108951092A720089581E0089581E015
+:10094000089510922002982F9C7193689093200232
+:10095000881F8827881F880F809321021092220207
+:10096000109226020895E0E0F2E010AA836880ABBE
+:1009700080E181AB12AA16AA0895E0E0F2E010A689
+:1009800083E880A78FE281A712A616A60895AAEC95
+:10099000B1E092E09C93E82FF0E084911C920895DE
+:1009A000909171009D7F90937100109200026230CF
+:1009B00011F09CE101C09EE19093010290E49093BC
+:1009C0000202811102C080E401C080EC8093030226
+:1009D000613011F084E001C083E08093040280E282
+:1009E000D6DF80930C0281E2D2DF80930D02109259
+:1009F00018021092190281E080930002BECF1F926C
+:100A00000F920FB60F9211248F9300000000000088
+:100A1000000081E0809323028F910F900FBE0F9012
+:100A20001F901895CF93DF93E0E7F0E082818B7FF2
+:100A30008283C0E2D3E08DE0888380E4898389E00B
+:100A40008A8383E3A4DF888782E3A1DF898787E342
+:100A50009EDF8A8786E39BDF8B87E0E2F6E080817A
+:100A6000836080831482DF91CF910895E0E7F0E006
+:100A700080818E7F808380E8809300010895E0E08C
+:100A8000F1E0108A80E4808B10A280A310AA80ABD2
+:100A9000E0E4F1E0108280831092A6201092A5205D
+:100AA00081E08093A42010928C2110928D211092CD
+:100AB0008A2110928B2108958093BA2381E080933C
+:100AC0009F200895CF93DF9310920920D8DFC0E0D4
+:100AD000D1E01EAA94E298AB19AA49E54AAB32E0EC
+:100AE0003BAB60910B2070910C206CAB7DAB6BEB42
+:100AF00073E268AF79AF1AAE8BE38CAF83E080937B
+:100B00003D0110923E0128A9206828AB10924601B1
+:100B1000E0E4F1E090831092410140934201809320
+:100B2000430140910D2050910E2040934401509379
+:100B300045014AEA51E2409348015093490110921D
+:100B40004A0129E320934C0180934D0110924E01FC
+:100B5000208120682083188A20E4288B24E0288BB9
+:100B6000898B85E98A8B80E18B8B47E751E04C8B41
+:100B70005D8B988F398F1A8E8CED95E28C8F9D8FBF
+:100B80001E8E68EC70E084EF91E08CDD88EC90E0E4
+:100B9000809307209093082081E080930620888925
+:100BA0008068888BDF91CF9108950895EF92FF922E
+:100BB0001F93CF93DF9311E01093092060DFC0E013
+:100BC000D1E018AA80E488AB94E098AB19AA1AAADD
+:100BD0006BE46BAB1CAA1DAA1EAA2AE030E228AF68
+:100BE00039AF1AAEA0EAACAF58E050933D01109275
+:100BF0003E0188A9806A88ABE0EAF8E085E5808359
+:100C0000808310924601E0E4F1E044E240831092D8
+:100C1000410189E58093420132E030934301E09045
+:100C20000B20F0900C20E0924401F09245018BEBF8
+:100C3000E82E83E2F82EE0924801F09249011092EA
+:100C40004A018BE380934C0183E080934D01109225
+:100C50004E0120812068208398A389A325E92AA337
+:100C60006BA367E771E06CA37DA3A8A759A71AA699
+:100C7000EAECF8E2ECA7FDA71EA6988B898B2A8BDD
+:100C800080E18B8B6C8B7D8B488F398F1A8E8CED2E
+:100C900095E28C8F9D8F1E8E68EC70E084EF91E062
+:100CA00001DD88EC90E0809307209093082010935A
+:100CB000062088A1806888A388898068888BDF9156
+:100CC000CF911F91FF90EF90089508951F93CF93B8
+:100CD000DF9312E010930920D2DEC0E0D1E01EAA1B
+:100CE00094E298AB19AA39E53AAB1BAB40910B20C3
+:100CF00050910C204CAB5DAB4BEB53E248AF59AF7E
+:100D00001AAE8BE38CAF83E080933D0110923E01DD
+:100D100028A9206828AB10924601E0E4F1E0908316
+:100D200010924101309342018093430120910D20A4
+:100D300030910E2020934401309345012AEA31E29C
+:100D4000209348013093490110924A0129E32093EE
+:100D50004C0180934D0110924E0120812068208328
+:100D6000188A20E4288B64E0688B898B55E95A8BBC
+:100D700040E14B8B27E731E02C8B3D8B988F198F0F
+:100D80001A8EECEDF5E2EC8FFD8F1E8E68A389A321
+:100D90005AA34BA32CA33DA384E388A719A71AA6A3
+:100DA0008AEC98E28CA79DA71EA668EC70E084EF01
+:100DB00091E078DC88EC90E0809307209093082005
+:100DC00081E08093062088898068888B88A180686C
+:100DD00088A3DF91CF911F91089508951F93CF931A
+:100DE000DF9313E0109309204ADEC0E0D1E01092B7
+:100DF0004601E0E4F1E024E220831092410199E50C
+:100E00009093420182E08093430140910B205091E6
+:100E10000C2040934401509345014BEB53E2409327
+:100E200048015093490110924A018BE380934C0191
+:100E300010934D0110924E018081806880831EAA1C
+:100E400028AB19AA9AAB1BAB80910D2090910E2074
+:100E50008CAB9DAB8AEA91E288AF99AF1AAE89E379
+:100E60008CAF10933D0110923E0188A9806888AB39
+:100E700018A250E458A344E048A319A21AA23BE4E4
+:100E80003BA31CA21DA21EA28AE090E288A799A7FC
+:100E90001AA620EA2CA798E09DA71EA688A1806A22
+:100EA00088A385E58093A008188A588B488B198BF6
+:100EB00085E98A8B3B8B47E751E04C8B5D8B288F14
+:100EC000998F1A8E8CED95E28C8F9D8F1E8E68EC1B
+:100ED00070E084EF91E0E6DB88EC90E080930720FF
+:100EE0009093082081E08093062088898068888B11
+:100EF000DF91CF911F91089508951F93CF93DF93B2
+:100F000014E010930920BBDDC0E0D1E018AA80E412
+:100F100088AB18AB19AA1AAA3BE43BAB1CAA1DAAC2
+:100F20001EAA8AE090E288AF99AF1AAE50EA5CAF91
+:100F300088E080933D0110923E0198A9906A98AB99
+:100F400095E59093A00810924601E0E4F1E094E268
+:100F500090831092410199E59093420192E0909321
+:100F6000430160910B2070910C20609344017093B9
+:100F700045016BEB73E26093480170934901109255
+:100F80004A019BE390934C0193E090934D011092A2
+:100F90004E01208120682083188B998B45E94A8B6C
+:100FA0003B8B27E731E02C8B3D8B588F898F1A8E36
+:100FB0006CED75E26C8F7D8F1E8E18A399A34AA3EA
+:100FC0009AE49BA32CA33DA393EC98A789A71AA608
+:100FD0008AEC98E28CA79DA71EA668EC70E084EFCF
+:100FE00091E060DB88EC90E08093072090930820EC
+:100FF00081E08093062088898068888B88A180683A
+:1010000088A3DF91CF911F9108950895FFCFCF93CB
+:10101000DF9386E08093092032DDC0E0D1E01EAA94
+:1010200084E288AB19AA39E53AAB93E09BAB4091D7
+:101030000D2050910E204CAB5DAB4AEA51E248AF17
+:1010400059AF1AAE29E32CAF90933D0110923E01A7
+:1010500028A9206828AB10924601E0E4F1E08083E3
+:10106000109241013093420132E0309343014091AC
+:101070000B2050910C2040934401509345014BEBC1
+:1010800053E2409348015093490110924A012BE3E7
+:1010900020934C0190934D0110924E0120812068C5
+:1010A0002083188A20E4288B888B998B95E99A8B6A
+:1010B00090E19B8B4CED55E04C8B5D8B888F398F8D
+:1010C0001A8E8CED95E28C8F9D8F1E8E68EC70E0F1
+:1010D00084EF91E0E7DA80E991E080930720909334
+:1010E000082081E08093062088898068888BDF91C2
+:1010F000CF9108950895CF93DF9387E080930920DF
+:10110000BEDCC0E0D1E01EAA94E298AB19AA39E592
+:101110003AAB83E08BAB40910D2050910E204CAB4D
+:101120005DAB4AEA51E248AF59AF1AAE29E32CAFA2
+:1011300080933D0110923E0128A9206828AB1092AF
+:101140004601E0E4F1E090831092410130934201C6
+:1011500032E03093430140910B2050910C2040939A
+:101160004401509345014BEB53E2409348015093A7
+:10117000490110924A012BE320934C0180934D01C9
+:1011800010924E01208120682083188A20E4288B49
+:1011900025E2288B898B85E98A8B80E18B8B4CED4E
+:1011A00055E04C8B5D8B988F398F1A8E8CED95E2C4
+:1011B0008C8F9D8F1E8E68EC70E084EF91E072DA68
+:1011C00080E991E0809307209093082081E080934C
+:1011D000062088898068888BDF91CF9108950895D3
+:1011E0001F920F920FB60F9211248F939F9381E05D
+:1011F000809303011092100184E08093100187E72F
+:1012000091E080931401909315018091A4208111A5
+:1012100003C08EEE92E002C080E090E084529A4DCE
+:1012200080931C0190931D01809110018068809330
+:1012300010019F918F910F900FBE0F901F901895E6
+:101240001F920F920FB60F9211248F939F9382E0FB
+:10125000809303011092200184E08093200187E7AE
+:1012600091E080932401909325018091A420811125
+:1012700003C085E694E002C087E791E084529A4D6E
+:1012800080932C0190932D018091200180688093A0
+:1012900020019F918F910F900FBE0F901F90189576
+:1012A000E0E7F0E083818C7F838384818C7F84837B
+:1012B00080818D7F8083E0E8F1E080EC828312867C
+:1012C00088EC81831186A0E0B8E034E03C9323E011
+:1012D00011962C93119714961C92149785ED91E01A
+:1012E00096968D939C93979716961C921697E0E48A
+:1012F000F8E030832183148286A397A31682E0E668
+:10130000F6E0808180618083E0E4F9E083E181831D
+:10131000148282E08683A6A3B7A310A611A681E05B
+:10132000808308951F920F920FB60F9211242F936E
+:101330003F934F935F938F939F93CF93DF931F922E
+:10134000CDB7DEB78FEF80934C09809109208730AD
+:1013500031F480912C02898390912D0202C09091EA
+:101360002C028091A320891B209168093091690982
+:1013700082308CF02A3F374070F420916809309118
+:10138000690989301CF481E090E002C086E090E0B9
+:10139000820F931F18C020916809309169098F3F0F
+:1013A000B4F42730310598F020916809309169092B
+:1013B000883F1CF081E090E002C086E090E0A90147
+:1013C000481B590BCA0180937809909379090F90B3
+:1013D000DF91CF919F918F915F914F913F912F918D
+:1013E0000F900FBE0F901F901895E0E7F0E08381FB
+:1013F0008F7E8383E0E4F6E080818A6A80838FEFCA
+:10140000848388E5828BE0EAF8E080E3838384ECE0
+:10141000858387E08683178288E184830895E0E7E7
+:10142000F0E08381877F8383E0ECF8E080E48083D1
+:10143000118288E58093550608951F920F920FB68A
+:101440000F92112400000F900FBE0F901F9018955F
+:101450001F920F920FB60F9211248F93EF93FF9369
+:10146000E0EAF8E080818083FF91EF918F910F9007
+:101470000FBE0F901F9018959FB7F894A0E5B0E0AD
+:1014800016968C911697897F16968C931697E0E6A0
+:10149000F0E080E885838BEB868316968C91169717
+:1014A000846016968C938081816080839FBF0895AD
+:1014B0009FB7F894E82FF0E0E059FF4F60958081E6
+:1014C000682360839FBF0895CF93863011F0C0E0FA
+:1014D00001C0C8E18091510081FD0DC09FB7F89413
+:1014E000809150008260809350009FBF8091510096
+:1014F00081FFFCCFC1DF6C2F636084E490E0BFD438
+:1015000060E480E0CF91D4CF8091A82008958091AD
+:10151000A820813009F40ECA0895F0D0FC0183811F
+:101520008093A820811101C0F0C981E008959091B5
+:10153000AA23892F807697FF07C0803491F4809189
+:10154000AB2381110EC0FBC9803459F48091AB23C9
+:10155000811107C08091B0239091B123892B09F0AC
+:10156000ECC980E008958091AC238F770C94E01251
+:101570009091B020911102C080E00895E091AD20DB
+:10158000F091AE200190F081E02D94818917A0F7B1
+:10159000E093AB20F093AC20228133812E0F3F1FCC
+:1015A000E217F30798F49181943061F492818913E2
+:1015B00009C09381691306C0E093AB20F093AC207F
+:1015C00081E008959081E90FF11DEACFE093AB200F
+:1015D000F093AC20D1CFE091AD20F091AE200190FE
+:1015E000F081E02D228133812E0F3F1FFC014081CD
+:1015F000E40FF11DE217F30748F48181843031F0E4
+:10160000853039F08081E80FF11DF4CF80E090E063
+:101610000895CF0108951F93CF93DF93182FA8DF6C
+:10162000882339F1C091AB20D091AC20CE01D3DF1B
+:10163000EC01892B41F04C815D816B818A81CDD792
+:101640008111F4CF16C0E091AD20F091AE209281CF
+:101650008381E92FF82FE10FF11DE10FF11D0190BA
+:10166000F081E02D0190F081E02DDF91CF911F916D
+:10167000099480E0DF91CF911F910895EF92FF923E
+:101680001F93CF93DF93C82F60E072DF811102C0F8
+:1016900010E02DC0E091AD20F091AE2092818381C9
+:1016A000E92FF82FEC0FF11DEC0FF11DE080F18018
+:1016B000D7011696ED91FC9117970995682F8C2FFD
+:1016C00057DF182F882321F3C091AB20D091AC2095
+:1016D000CE0181DFEC01892B21F08A810E941A144E
+:1016E000F7CFD7011296ED91FC9113970995812FB1
+:1016F000DF91CF911F91FF90EF9008958091AB20E3
+:101700009091AC200895FEC6CF938091B0208111B6
+:1017100008C01092B0201092B4201092B520CF9142
+:101720000895C0E0E091AD20F091AE200190F081ED
+:10173000E02D8481C81768F78C2FA0DFCF5FF2CF30
+:10174000CF938091B0208823F1F0C0E0E091AD20EC
+:10175000F091AE20A081B18114968C91C81798F4B5
+:1017600092818381E92FF82FEC0FF11DEC0FF11D11
+:101770000190F081E02D0084F185E02D309709F093
+:101780000995CF5FE3CFCF910895EF92FF920F932A
+:101790001F93CF93DF931F92CDB7DEB71092B42380
+:1017A0001092B5231092B6231092B7231092B8234B
+:1017B0001092B9238091AA2387FF07C02091B023FC
+:1017C0003091B123232B09F451C3982F9076903494
+:1017D00009F00EC1E091AB238E2F90E0FC01E05A9E
+:1017E000F109EA30F10508F0D0C2E25FFE4F0C9437
+:1017F000DA1581E08093A020809107209091082045
+:1018000080939B21809107209091082090939C21A8
+:101810008091822180939D2180917F2180939E21C0
+:1018200080916A0080939F2180916B008093A0211A
+:101830006091B0237091B1238EE891E2D7C01092ED
+:1018400000088091AC239091AD238093360890934B
+:1018500037088091AE238F70809300086091B02389
+:101860007091B1238AEA91E2B1D620910D20309196
+:101870000E208091B0239091B1232817390709F4E5
+:10188000F3C280930D2090930E2026C01092400842
+:101890008091AC239091AD23809376089093770844
+:1018A0008091AE238F70809340086091B023709137
+:1018B000B1238BEB93E28AD620910B2030910C2040
+:1018C0008091B0239091B1232817390709F4CCC235
+:1018D00080930B2090930C208091092054C010928B
+:1018E0006809109269098091AC238093A320BCC23F
+:1018F0008091AC2380932406B7C2E091AC23F09191
+:10190000AD23E830F10508F040C2E85EFE4F0C94CC
+:10191000DA1560E080E044D88091AE2312D880E0F0
+:1019200032C060E080E03CD88091AE230AD881E0EC
+:101930002AC061E081E034D88091AE2302D8809142
+:10194000AF2311D882E01FC083E01DC084E01BC01C
+:1019500060E080E025D88091AE230E94A10485E05C
+:1019600012C061E080E01CD88091AE230E94A104E7
+:1019700086E009C062E080E013D88091AE238068E1
+:101980000E94A10487E098D86FC28091AC23809315
+:1019900084066AC28091AC239091AD23892B91F08B
+:1019A0000E946D0380E2E8EBFBE2ABEBB5E2019055
+:1019B0000D928A95E1F781E08093BB250E94820316
+:1019C0000E946D03E9E7F0E091E088EDF89484BFB0
+:1019D00090836091B0237091B1238AE890E206C0B1
+:1019E0006091B0237091B12389E890E2EFD53CC2B9
+:1019F0009111CBC187FFFCC02091B0233091B1235E
+:101A00002115310509F4C1C18F7109F09EC0809183
+:101A1000AB23863071F0883009F48EC08111B5C1D6
+:101A20002230310509F0B1C162E070E084EB90E250
+:101A3000DDCF8091AC239091AD23292F3327223025
+:101A40003105A1F064F42130310509F09EC1809187
+:101A5000192090911A20DC016C9170E05BC023305A
+:101A6000310589F12F30310509F18FC1E09119203D
+:101A7000F0911A202189821708F087C19927880FD1
+:101A8000991F880F991FE0911B20F0911C20E80FEF
+:101A9000F91F80819181FC016281738197D5E0916A
+:101AA000B223F091B32382E0818335C080911D2061
+:101AB00090911E20009709F468C1DC0112966D9187
+:101AC0007C91139727C099278130910569F038F0F0
+:101AD000029709F05AC168E08AE690E208C064E023
+:101AE00070E08CE790E216C067E083E790E2282F71
+:101AF000AAE5B0E2FC01819190E08D939D938E2F39
+:101B0000821B8617C0F3660F6E5F6093582070E0EB
+:101B100088E590E25BD58091B0239091B12320912C
+:101B2000B4233091B5238217930708F09DC18093A9
+:101B3000B4239093B52398C12130310509F025C114
+:101B400061E070E080EB90E251CF8130C9F5809187
+:101B5000AB238A3009F019C12130310509F015C1D4
+:101B60008091B020882309F410C1E090AE23F0905A
+:101B7000AF230091AD201091AE20D801ED91FC91E2
+:101B80008481E81608F001C160E08E2DF1DC882325
+:101B900009F4FBC0FF24EE0CFF1CF8018281938145
+:101BA0008E0D9F1DDC01ED91FC910680F781E02DEB
+:101BB00009958093B22061E070E082EB90E216CF4D
+:101BC000823009F0E2C08091AB238111DEC0223067
+:101BD000310509F0DAC08091AE2350D590E08093B2
+:101BE000A9209093AA2062E070E089EA90E2FECEFC
+:101BF0008F7109F07DC08091AB23833009F4C5C09B
+:101C000018F48130A1F0C1C0853019F0893039F164
+:101C1000BCC08091B0239091B123892B09F0B5C04D
+:101C200083EB9AE08093B6239093B7231DC18091F4
+:101C3000B0239091B123892B09F0A7C08091AC23E8
+:101C40009091AD23019709F0A0C08091B4209091AC
+:101C5000B5208D7F8093B4209093B52005C18091ED
+:101C6000B0239091B123892B09F08FC0ACD4882385
+:101C700009F48BC02091AC233091AD233327E09140
+:101C80001920F0911A20818990E08217930708F4B7
+:101C90007CC03ADD8091AC239091AD238093B0203D
+:101CA000882309F4E1C099278150904C880F991F2F
+:101CB000880F991F20911B2030911C20820F931FA9
+:101CC0008093AD209093AE2010E0E091AD20F09194
+:101CD000AE200190F081E02D8481181708F0C4C077
+:101CE00060E0812F98DC882309F44FC01F5FEDCF9F
+:101CF0008130F1F48091AB238B3009F046C08091A4
+:101D0000B0239091B123892B09F03FC08091B0207E
+:101D1000882309F43AC01091AE236091AC23812F3F
+:101D20006983ACDC6981882381F1812F74DC2BC04D
+:101D3000823059F58091AB23813019F0833089F0DE
+:101D400024C08091B0239091B123892BF1F480912C
+:101D5000AC239091AD23892BC1F48091AE2395D40F
+:101D600012C08091B0239091B123892B71F480919E
+:101D7000AC239091AD23892B41F48091AE232AD5D9
+:101D80008091AE2360D581116FC08091AA238F719D
+:101D90008130B9F58091B020882399F1E090AE238D
+:101DA000F090AF230091AD201091AE20D801ED91BD
+:101DB000FC918481E81628F560E08E2DD9DB88231C
+:101DC00001F1F701FF27EE0FFF1FD80112968D9149
+:101DD0009C911397E80FF91F00811181D801169685
+:101DE000ED91FC9117970995682F8E2DC1DB882303
+:101DF00041F0D8011496ED91FC9115970995811148
+:101E000033C08091AA238F71823081F58091B020F8
+:101E1000882361F1F12CE091AD20F091AE20A081FA
+:101E2000B18114968C91F81608F592818381E92F7F
+:101E3000F82FEF0DF11DEF0DF11D00811181D8017B
+:101E40001696ED91FC9117970995682F8F2D90DBD1
+:101E5000882361F0D8011496ED91FC9115970995AE
+:101E6000811102C0F394D7CF81E001C080E00F90D0
+:101E7000DF91CF911F910F91FF90EF9008951BBEBE
+:101E8000FC0128ED24BF608308958091CF0187FD78
+:101E9000FCCF08951F93CF93DF93C0ECD1E01A8558
+:101EA0008A8761E08BEC91E0EADF1A87DF91CF91BE
+:101EB0001F910895CF92DF92EF92FF920F931F939D
+:101EC000CF93DF9300D0CDB7DEB78C017B01498380
+:101ED0005A83DBDF8CECC82EDD24D394F60190818D
+:101EE00098609083B801705F49815A81C70168D6B4
+:101EF000F6018081877F80830F900F90DF91CF91D3
+:101F00001F910F91FF90EF90DF90CF900895CF93A6
+:101F1000DF9300D0CDB7DEB76A838983B6DFACEC40
+:101F2000B1E09C9198609C938981E82FF0E0F05F8C
+:101F30006A8160838C91877F8C930F900F90DF91E3
+:101F4000CF9108950F931F93CF938C019EDFC0E034
+:101F5000F80161918F018C2FDADFCF5FC032C1F7BA
+:101F6000CF911F910F910895CF93DF931F92CDB71B
+:101F7000DEB789838ADF898120E2829FC001112434
+:101F8000E0ECF1E012829183808385E30F90DF9192
+:101F9000CF9180CF4091CA01E62FF72F8093CA01DD
+:101FA00084914093CA010895E82FF0E0E652F44D81
+:101FB00080818F3F09F4FFCF9FB7F89480818F5FB6
+:101FC00080839FBF0895E82FF0E0E652F44D8081B2
+:101FD000811101C0FFCF9FB7F89480818150808329
+:101FE0009FBF0895CF93C82F80917C21C11105C058
+:101FF000882339F081E0E7DF04C0811102C081E06D
+:10200000D3DFC0937C21CF910895282F2F70082E05
+:10201000000C990B392F331F3327331F832F90E088
+:10202000820F911D820F911D23E0880F991F2A9521
+:10203000E1F7885A9E4D08950F93E8ECF4E0808113
+:102040008F7D808380818F7D8083E0E6F1E202E0F6
+:102050000593109262211092632100E2069300E43E
+:102060000693E8E5F1E200E2069300E40693EAEA6B
+:10207000F3E214861586168617861286138610924A
+:102080004D210F9108950F9385E080934D21E1E656
+:10209000F1E204E00593E9E5F1E204E005930F9134
+:1020A00008950F9383E080934D2110926221109246
+:1020B0006321E0E6F1E202E006930F910895E091DA
+:1020C000B623F091B723309709F009940895282F8B
+:1020D0002F70082E000C990B392F331F3327331F15
+:1020E000832F90E0820F911D820F911D029749E08E
+:1020F000489F9001499F300D1124C90189509F4D7F
+:1021000008958F929F92AF92BF92DF92EF92FF92CB
+:102110000F931F93CF93DF93D82ED9DFEC018D2D32
+:1021200074DF7C01DC011196EC91E770E150E7303F
+:1021300040F4F0E0EE0FFF1FE457FF4D00811181E6
+:1021400002C008E010E0ED81FE812B813C814881D6
+:10215000D701D7FE48C016968D919C9117978E0F88
+:102160009F1F8D839E838217930761F1281B390B74
+:102170002115B4E03B0738F02FEF33E0C901B80177
+:10218000F2D4281B390B41FF0AC0C901B801EBD4B6
+:10219000AC0191E0452B09F090E0892F01C080E06F
+:1021A000988180FB91F99883F70116821782228328
+:1021B000338329813A818D819E81820F931F84838D
+:1021C00095830EC041FF71C04D7F4883D70116969D
+:1021D0001D921C92179712961D921C921397F7014D
+:1021E00002E006937BC01296AD90BC90139742FF1D
+:1021F00010C089809A80C901B801B5D4B0E4DB9ED3
+:10220000B001112469587F4DAC01C4018E0F9F1F8E
+:10221000D7D48D819E818A0D9B1D8D839E832B81BA
+:102220003C812817390710F42D833E83F7018681FE
+:102230009781A816B906C9F58D819E8182179307EB
+:10224000A1F1281B390B2115F4E03F0710F02FEF07
+:1022500033E0C901B80187D4281B390BD701129686
+:102260001D921C9213972017310778F4888184609F
+:102270008883B0E4DB9EC001112489589F4DF7018B
+:102280008483958306831783AACF49815A818D81E0
+:102290009E81840F951FD70114968D939C9315975B
+:1022A00016962D933C9317979ACF888180FF16C07E
+:1022B0008E7F8883EF81F885309781F06D817E81F4
+:1022C0004D2D80E0DF91CF911F910F91FF90EF9006
+:1022D000DF90BF90AF909F908F900994DF91CF9146
+:1022E0001F910F91FF90EF90DF90BF90AF909F9064
+:1022F0008F9008950F93CF93DF9380914D2183307A
+:1023000029F4DDDEDF91CF910F9196CE2091492106
+:1023100030914A21C091B423D091B523C21BD30B75
+:1023200061F580914B2190914C21820F931F8093F6
+:102330004B2190934C212091B0233091B123281749
+:10234000390721F08091B620882331F084E0809312
+:102350004D21E8E5F1E236C0E091B823F091B923D0
+:10236000309799F00995882381F0109249211092B5
+:102370004A21C091B423D091B523C034D10528F0AF
+:102380001092B620C0E4D0E003C081E08093B62074
+:10239000C0936221D09363218091492190914A2179
+:1023A0002091B2233091B323280F391F2093642149
+:1023B00030936521C80FD91FC0934921D0934A217A
+:1023C000E0E6F1E202E00693DF91CF910F910895EC
+:1023D0000F93CF93DF931F92CDB7DEB78091CC04DC
+:1023E00080FF65C021E02093CC0488E591E2FC01E8
+:1023F00000E80693E0E6F1E200E806932093CA04C1
+:10240000FC0100E1069380914D21882329F083503F
+:10241000823008F454DE10DE80915A2190915B21C5
+:10242000089709F046C088E0E9E0F1E2AAEAB3E2E1
+:1024300001900D928A95E1F78091C80480628093A3
+:10244000C8048091C80480628093C8049ED9811119
+:1024500002C019DE2EC09091AA2397FF0EC01092E1
+:102460004B2110924C211092492110924A2192E066
+:1024700090934D2189833EDF08C02091B023309195
+:10248000B123232B21F489830CDE898113C01092A0
+:102490004B2110924C211092492110924A2191E037
+:1024A00090934D21E8E5F1E202E0069303C080E05D
+:1024B00001C081E00F90DF91CF910F910895CF93EC
+:1024C000CFB7F89481E08EDDEAECF4E080E480831D
+:1024D00080E28083E1ECF4E0808181608083A9EC7C
+:1024E000B4E08C9182608C93E8ECF4E080818064AD
+:1024F00080838C9181608C93808180688083CFBF42
+:10250000CF910895CF931092600080E30E94640AF7
+:102510008091C00480648093C00481E08093600057
+:10252000CFB7F8941092592110926121109269212D
+:10253000109271218091F7208E7F8093F7208091F7
+:1025400000218E7F809300216AE170E082E022DD2D
+:102550008F3F09F48FE18093FA046BE170E082E031
+:1025600019DD8F3F09F48FE18093FB048091C00453
+:1025700081608093C0048091C00480688093C0040F
+:102580008091C00480618093C00488E591E28093CB
+:10259000C6049093C7048091C00480628093C004F5
+:1025A0008FEF8093C5048091C80482608093C80433
+:1025B00010927C2185E0F8DC82DFCFBFCF910895B7
+:1025C0008093C30408958091C3040895EAEAF3E276
+:1025D000808791876287738708950F931F93CF93A6
+:1025E000DF931F92CDB7DEB78A0169830EDDFC0150
+:1025F0008181807C698181113AC06370613019F0FA
+:1026000020F080E803C080EC01C080E400381105B0
+:10261000E9F058F400321105A9F000341105A1F0D9
+:1026200000311105C9F491E018C0011592E01907B5
+:1026300079F00F3F93E0190769F00115114061F43B
+:1026400095E00BC092E009C093E007C094E005C09C
+:1026500096E003C097E001C090E0118226E020835D
+:10266000982B918381818062818381E001C080E029
+:102670000F90DF91CF911F910F910895C6DCFC015F
+:10268000818182FB882780F90895CF93C82FBDDC14
+:10269000FC01818182FF0FC091819B7F91838C2FF0
+:1026A00016DDFC01908190FF06C09E7F908307801D
+:1026B000F085E02D099581E0CF9108958F929F924A
+:1026C000AF92BF92DF92EF92FF920F931F93CF933F
+:1026D000DF931F92CDB7DEB7D82E5A0179016983F7
+:1026E000F6DC4C018D2D91DC9C01DC0111968C9166
+:1026F0001197807C6981882309F45EC011968C91C2
+:102700001197807C803C21F011968C9182FD54C001
+:102710009FB7F894F401808180FF02C09FBF4CC036
+:10272000816080839FBFF401A182B282E382F48240
+:10273000158216820783108791E0611104C0E114AD
+:10274000F10409F090E0D4018C9190FB81F98B7F2A
+:102750008C93D7FE04C0F9011682178229C0D901D3
+:1027600011968C911197807C803CC9F41196EC9164
+:10277000E770E150E73040F4F0E0EE0FFF1FE45760
+:10278000FF4D6081718102C068E070E0C701EBD14C
+:10279000892B29F0F40180818E7F80830DC0D901BF
+:1027A00012961D921C92139716961D921C921797C3
+:1027B0008D2DA7DC81E001C080E00F90DF91CF91EB
+:1027C0001F910F91FF90EF90DF90BF90AF909F907F
+:1027D0008F900895EF92FF920F93CF93C82F15DC3F
+:1027E0007C018C2F74DCDC01F70102E005939C91E5
+:1027F00090FF1BC09E7F9C931796ED91FC911897BC
+:10280000309799F0D701C7FF05C016966D917C915E
+:10281000179704C012966D917C9113974C2F81E00D
+:10282000CF910F91FF90EF900994CF910F91FF906E
+:10283000EF900895CF93C82FCDDF8C2FE6DBFC01FE
+:102840001182CF9108950F93CF93C82FDEDBFC0147
+:1028500091819460918301E006938C2FBBDF81E02E
+:10286000CF910F9108951F920F920FB60F921124DE
+:102870000F932F933F934F935F936F937F938F9318
+:102880009F93AF93BF93EF93FF938091CB0487FF08
+:1028900008C080E88093CA040E94A00B0E94100424
+:1028A0007EC08091CB0482FF18C084E08093CA046C
+:1028B0008091602186FF73C08091CC0481FD6FC040
+:1028C00087DD81116CC080914D21813011F4E9DBED
+:1028D00066C0843009F063C021C08091CB0481FFC1
+:1028E00026C082E08093CA048091582186FF57C099
+:1028F0008091CC0481FD53C06BDD811150C080916B
+:102900004D21823041F484E080934D21E8E5F1E2ED
+:1029100002E0069344C0833009F041C0E1E6F1E2F1
+:1029200004E00593E9E5F1E204E0059338C0809105
+:10293000CB0484FF1DC080E18093CA040E94840BF5
+:102940001092C3041092592196E09093582183E489
+:10295000809359211092612190936021809361218D
+:1029600089E091E280935C2190935D2165DB17C043
+:102970008091CB0486FF08C080E48093CA0480E085
+:1029800031DB0E940E040BC08091CB0485FF07C091
+:1029900080E28093CA0481E025DB0E940F04FF914E
+:1029A000EF91BF91AF919F918F917F916F915F91C7
+:1029B0004F913F912F910F910F900FBE0F901F904D
+:1029C00018951F920F920FB60F9211240F931F9319
+:1029D0002F933F934F935F936F937F938F939F9327
+:1029E000AF93BF93CF93DF93EF93FF938091CC048A
+:1029F00081FF1AC082E08093CC048091C504819548
+:102A0000880FE8E5F1E2E81BF109208131812855C2
+:102A1000314283E0369527958A95E1F7822F869596
+:102A200020FD06C0C0E005C0D3DC882319F386C0B2
+:102A3000C0E8C80F8C2FE9DAFC01208125FF7EC099
+:102A400000E20693C11174C080914D21843019F4C5
+:102A500036DBF2DA73C000915A2110915B2180912C
+:102A6000B4239091B523C0914921D0914A219E0170
+:102A7000200F311F8217930718F48C010C1B1D0BBC
+:102A80008091B2239091B323A80169E071E28C0F89
+:102A90009D1F96D0C00FD11FC0934921D0934A21CA
+:102AA0000034110569F480914B2190914C218C0FD9
+:102AB0009D1F2091B0233091B1238217930788F096
+:102AC000C093B423D093B523E091B823F091B923F8
+:102AD000309729F00995811102C0D5DA2FC0E1DACB
+:102AE0002DC08091B4239091B5238C179D07D9F404
+:102AF000E091B823F091B923309779F309958823B1
+:102B000061F320914B2130914C218091492190918A
+:102B10004A21820F931F80934B2190934C21109256
+:102B2000492110924A21E8E5F1E202E0069306C04D
+:102B3000C03811F4DFDB02C08C2FE3DAFF91EF9194
+:102B4000DF91CF91BF91AF919F918F917F916F91C5
+:102B50005F914F913F912F911F910F910F900FBE59
+:102B60000F901F901895AA1BBB1B51E107C0AA1F0D
+:102B7000BB1FA617B70710F0A61BB70B881F991F1E
+:102B80005A95A9F780959095BC01CD01089597FBC2
+:102B9000072E16F4009406D077FD08D0E4DF07FC7A
+:102BA00005D03EF4909581959F4F0895709561955D
+:102BB0007F4F0895EE0FFF1F0590F491E02D0994CB
+:102BC000FB01DC0102C001900D9241505040D8F74A
+:102BD0000895FB01DC0101900D920020E1F70895BA
+:042BE000F894FFCF97
+:102BE40040000CE02E0AFFFFFFFF55800080008D9F
+:102BF4000A870A970A840A000044201F200000283C
+:102C04002023200F20000000090219000101008088
+:102C1400FA0904000001FFFFFF0007058101FF031B
+:102C2400010000001201000200000040EB0394BA0E
+:102C34000002010200010000000300000000000087
+:102C4400000000000000000000004C61627261643A
+:102C54006F72004573706F54656B000004030904C0
+:102C6400646562756731323300020200100020008F
+:0A2C74004000800000010002FF0391
+:00000001FF
diff --git a/Desktop_Interface/build_android/package_source/src/androidInterface.java b/Desktop_Interface/build_android/package_source/src/androidInterface.java
index 4431a7a7..7caea66a 100644
--- a/Desktop_Interface/build_android/package_source/src/androidInterface.java
+++ b/Desktop_Interface/build_android/package_source/src/androidInterface.java
@@ -87,7 +87,7 @@ public class androidInterface extends QtActivity
}
public void findDevice_bootloader()
{
- Log.d(QtApplication.QtTAG, "findDevice");
+ Log.d(QtApplication.QtTAG, "findDevice_bootloader");
PendingIntent mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); //???
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); //Handle to system USB service?
HashMap deviceList = manager.getDeviceList();
diff --git a/Desktop_Interface/cursorenabler.obj b/Desktop_Interface/cursorenabler.obj
new file mode 100644
index 00000000..5adbd7ed
Binary files /dev/null and b/Desktop_Interface/cursorenabler.obj differ
diff --git a/Desktop_Interface/desktop_settings.obj b/Desktop_Interface/desktop_settings.obj
new file mode 100644
index 00000000..d57a2e2d
Binary files /dev/null and b/Desktop_Interface/desktop_settings.obj differ
diff --git a/Desktop_Interface/deviceconnecteddisplay.obj b/Desktop_Interface/deviceconnecteddisplay.obj
new file mode 100644
index 00000000..c6d4a43b
Binary files /dev/null and b/Desktop_Interface/deviceconnecteddisplay.obj differ
diff --git a/Desktop_Interface/espocombobox.obj b/Desktop_Interface/espocombobox.obj
new file mode 100644
index 00000000..23a74249
Binary files /dev/null and b/Desktop_Interface/espocombobox.obj differ
diff --git a/Desktop_Interface/esposlider.obj b/Desktop_Interface/esposlider.obj
new file mode 100644
index 00000000..c65f3551
Binary files /dev/null and b/Desktop_Interface/esposlider.obj differ
diff --git a/Desktop_Interface/espospinbox.obj b/Desktop_Interface/espospinbox.obj
new file mode 100644
index 00000000..4c396102
Binary files /dev/null and b/Desktop_Interface/espospinbox.obj differ
diff --git a/Desktop_Interface/functiongencontrol.obj b/Desktop_Interface/functiongencontrol.obj
new file mode 100644
index 00000000..47b79540
Binary files /dev/null and b/Desktop_Interface/functiongencontrol.obj differ
diff --git a/Desktop_Interface/genericusbdriver.obj b/Desktop_Interface/genericusbdriver.obj
new file mode 100644
index 00000000..938a1633
Binary files /dev/null and b/Desktop_Interface/genericusbdriver.obj differ
diff --git a/Desktop_Interface/isobuffer.obj b/Desktop_Interface/isobuffer.obj
new file mode 100644
index 00000000..a5a01c78
Binary files /dev/null and b/Desktop_Interface/isobuffer.obj differ
diff --git a/Desktop_Interface/isobufferbuffer.obj b/Desktop_Interface/isobufferbuffer.obj
new file mode 100644
index 00000000..7ee2ae56
Binary files /dev/null and b/Desktop_Interface/isobufferbuffer.obj differ
diff --git a/Desktop_Interface/isodriver.obj b/Desktop_Interface/isodriver.obj
new file mode 100644
index 00000000..a8035524
Binary files /dev/null and b/Desktop_Interface/isodriver.obj differ
diff --git a/Desktop_Interface/main.obj b/Desktop_Interface/main.obj
new file mode 100644
index 00000000..de9bc852
Binary files /dev/null and b/Desktop_Interface/main.obj differ
diff --git a/Desktop_Interface/mainwindow.obj b/Desktop_Interface/mainwindow.obj
new file mode 100644
index 00000000..ea010276
Binary files /dev/null and b/Desktop_Interface/mainwindow.obj differ
diff --git a/Desktop_Interface/moc/moc_androidusbdriver.cpp b/Desktop_Interface/moc/moc_androidusbdriver.cpp
new file mode 100644
index 00000000..5037c130
--- /dev/null
+++ b/Desktop_Interface/moc/moc_androidusbdriver.cpp
@@ -0,0 +1,89 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'androidusbdriver.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.7.1)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include "../androidusbdriver.h"
+#include
+#include
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'androidusbdriver.h' doesn't include ."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.7.1. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+struct qt_meta_stringdata_androidUsbDriver_t {
+ QByteArrayData data[1];
+ char stringdata0[17];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+ qptrdiff(offsetof(qt_meta_stringdata_androidUsbDriver_t, stringdata0) + ofs \
+ - idx * sizeof(QByteArrayData)) \
+ )
+static const qt_meta_stringdata_androidUsbDriver_t qt_meta_stringdata_androidUsbDriver = {
+ {
+QT_MOC_LITERAL(0, 0, 16) // "androidUsbDriver"
+
+ },
+ "androidUsbDriver"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_androidUsbDriver[] = {
+
+ // content:
+ 7, // revision
+ 0, // classname
+ 0, 0, // classinfo
+ 0, 0, // methods
+ 0, 0, // properties
+ 0, 0, // enums/sets
+ 0, 0, // constructors
+ 0, // flags
+ 0, // signalCount
+
+ 0 // eod
+};
+
+void androidUsbDriver::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+ Q_UNUSED(_o);
+ Q_UNUSED(_id);
+ Q_UNUSED(_c);
+ Q_UNUSED(_a);
+}
+
+const QMetaObject androidUsbDriver::staticMetaObject = {
+ { &unixUsbDriver::staticMetaObject, qt_meta_stringdata_androidUsbDriver.data,
+ qt_meta_data_androidUsbDriver, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
+};
+
+
+const QMetaObject *androidUsbDriver::metaObject() const
+{
+ return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *androidUsbDriver::qt_metacast(const char *_clname)
+{
+ if (!_clname) return Q_NULLPTR;
+ if (!strcmp(_clname, qt_meta_stringdata_androidUsbDriver.stringdata0))
+ return static_cast(const_cast< androidUsbDriver*>(this));
+ return unixUsbDriver::qt_metacast(_clname);
+}
+
+int androidUsbDriver::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+ _id = unixUsbDriver::qt_metacall(_c, _id, _a);
+ if (_id < 0)
+ return _id;
+ return _id;
+}
+QT_END_MOC_NAMESPACE
diff --git a/Desktop_Interface/moc/moc_mainwindow.cpp b/Desktop_Interface/moc/moc_mainwindow.cpp
index 6d633a8c..7eb43ce4 100644
--- a/Desktop_Interface/moc/moc_mainwindow.cpp
+++ b/Desktop_Interface/moc/moc_mainwindow.cpp
@@ -19,8 +19,8 @@
QT_BEGIN_MOC_NAMESPACE
struct qt_meta_stringdata_MainWindow_t {
- QByteArrayData data[80];
- char stringdata0[1773];
+ QByteArrayData data[92];
+ char stringdata0[1949];
};
#define QT_MOC_LITERAL(idx, ofs, len) \
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
@@ -105,10 +105,22 @@ QT_MOC_LITERAL(72, 1591, 19), // "rSourceIndexChanged"
QT_MOC_LITERAL(73, 1611, 9), // "newSource"
QT_MOC_LITERAL(74, 1621, 21), // "multimeterStateChange"
QT_MOC_LITERAL(75, 1643, 5), // "state"
-QT_MOC_LITERAL(76, 1649, 28), // "on_actionCalibrate_triggered"
-QT_MOC_LITERAL(77, 1678, 24), // "on_actionLo_bw_triggered"
-QT_MOC_LITERAL(78, 1703, 34), // "on_actionSingle_ep_msync_trig..."
-QT_MOC_LITERAL(79, 1738, 34) // "on_actionSingle_ep_async_trig..."
+QT_MOC_LITERAL(76, 1649, 34), // "on_actionOld_Person_Mode_trig..."
+QT_MOC_LITERAL(77, 1684, 17), // "screenRotateEvent"
+QT_MOC_LITERAL(78, 1702, 21), // "Qt::ScreenOrientation"
+QT_MOC_LITERAL(79, 1724, 11), // "orientation"
+QT_MOC_LITERAL(80, 1736, 11), // "eventFilter"
+QT_MOC_LITERAL(81, 1748, 3), // "obj"
+QT_MOC_LITERAL(82, 1752, 7), // "QEvent*"
+QT_MOC_LITERAL(83, 1760, 5), // "event"
+QT_MOC_LITERAL(84, 1766, 13), // "gestureFilter"
+QT_MOC_LITERAL(85, 1780, 14), // "QGestureEvent*"
+QT_MOC_LITERAL(86, 1795, 14), // "horiScaleEvent"
+QT_MOC_LITERAL(87, 1810, 14), // "vertScaleEvent"
+QT_MOC_LITERAL(88, 1825, 28), // "on_actionCalibrate_triggered"
+QT_MOC_LITERAL(89, 1854, 24), // "on_actionLo_bw_triggered"
+QT_MOC_LITERAL(90, 1879, 34), // "on_actionSingle_ep_msync_trig..."
+QT_MOC_LITERAL(91, 1914, 34) // "on_actionSingle_ep_async_trig..."
},
"MainWindow\0on_actionGain0_5_triggered\0"
@@ -159,6 +171,11 @@ QT_MOC_LITERAL(79, 1738, 34) // "on_actionSingle_ep_async_trig..."
"reinitUsb\0reinitUsbStage2\0resetUsbState\0"
"rSourceIndexChanged\0newSource\0"
"multimeterStateChange\0state\0"
+ "on_actionOld_Person_Mode_triggered\0"
+ "screenRotateEvent\0Qt::ScreenOrientation\0"
+ "orientation\0eventFilter\0obj\0QEvent*\0"
+ "event\0gestureFilter\0QGestureEvent*\0"
+ "horiScaleEvent\0vertScaleEvent\0"
"on_actionCalibrate_triggered\0"
"on_actionLo_bw_triggered\0"
"on_actionSingle_ep_msync_triggered\0"
@@ -172,7 +189,7 @@ static const uint qt_meta_data_MainWindow[] = {
7, // revision
0, // classname
0, 0, // classinfo
- 72, 14, // methods
+ 78, 14, // methods
0, 0, // properties
0, 0, // enums/sets
0, 0, // constructors
@@ -180,78 +197,84 @@ static const uint qt_meta_data_MainWindow[] = {
0, // signalCount
// slots: name, argc, parameters, tag, flags
- 1, 0, 374, 2, 0x08 /* Private */,
- 3, 0, 375, 2, 0x08 /* Private */,
- 4, 0, 376, 2, 0x08 /* Private */,
- 5, 0, 377, 2, 0x08 /* Private */,
- 6, 0, 378, 2, 0x08 /* Private */,
- 7, 0, 379, 2, 0x08 /* Private */,
- 8, 0, 380, 2, 0x08 /* Private */,
- 9, 0, 381, 2, 0x08 /* Private */,
- 10, 0, 382, 2, 0x08 /* Private */,
- 11, 1, 383, 2, 0x08 /* Private */,
- 13, 1, 386, 2, 0x08 /* Private */,
- 15, 1, 389, 2, 0x08 /* Private */,
- 17, 1, 392, 2, 0x08 /* Private */,
- 18, 1, 395, 2, 0x08 /* Private */,
- 19, 1, 398, 2, 0x08 /* Private */,
- 20, 1, 401, 2, 0x08 /* Private */,
- 21, 1, 404, 2, 0x08 /* Private */,
- 22, 0, 407, 2, 0x08 /* Private */,
- 23, 0, 408, 2, 0x08 /* Private */,
- 24, 0, 409, 2, 0x08 /* Private */,
- 25, 0, 410, 2, 0x08 /* Private */,
- 26, 0, 411, 2, 0x08 /* Private */,
- 27, 1, 412, 2, 0x08 /* Private */,
- 28, 1, 415, 2, 0x08 /* Private */,
- 29, 1, 418, 2, 0x08 /* Private */,
- 30, 1, 421, 2, 0x08 /* Private */,
- 31, 1, 424, 2, 0x08 /* Private */,
- 32, 1, 427, 2, 0x08 /* Private */,
- 33, 1, 430, 2, 0x08 /* Private */,
- 34, 1, 433, 2, 0x08 /* Private */,
- 35, 1, 436, 2, 0x08 /* Private */,
- 36, 1, 439, 2, 0x08 /* Private */,
- 37, 1, 442, 2, 0x08 /* Private */,
- 38, 1, 445, 2, 0x08 /* Private */,
- 39, 1, 448, 2, 0x08 /* Private */,
- 40, 1, 451, 2, 0x08 /* Private */,
- 41, 1, 454, 2, 0x08 /* Private */,
- 42, 1, 457, 2, 0x08 /* Private */,
- 43, 1, 460, 2, 0x08 /* Private */,
- 44, 1, 463, 2, 0x08 /* Private */,
- 45, 1, 466, 2, 0x08 /* Private */,
- 46, 1, 469, 2, 0x08 /* Private */,
- 47, 1, 472, 2, 0x08 /* Private */,
- 48, 1, 475, 2, 0x08 /* Private */,
- 49, 1, 478, 2, 0x08 /* Private */,
- 50, 1, 481, 2, 0x08 /* Private */,
- 51, 0, 484, 2, 0x08 /* Private */,
- 52, 0, 485, 2, 0x08 /* Private */,
- 53, 0, 486, 2, 0x08 /* Private */,
- 54, 0, 487, 2, 0x08 /* Private */,
- 55, 1, 488, 2, 0x08 /* Private */,
- 57, 1, 491, 2, 0x08 /* Private */,
- 58, 0, 494, 2, 0x08 /* Private */,
- 59, 0, 495, 2, 0x08 /* Private */,
- 60, 0, 496, 2, 0x08 /* Private */,
- 61, 0, 497, 2, 0x08 /* Private */,
- 62, 0, 498, 2, 0x08 /* Private */,
- 63, 0, 499, 2, 0x08 /* Private */,
- 64, 0, 500, 2, 0x08 /* Private */,
- 65, 0, 501, 2, 0x08 /* Private */,
- 66, 1, 502, 2, 0x08 /* Private */,
- 67, 1, 505, 2, 0x08 /* Private */,
- 68, 0, 508, 2, 0x08 /* Private */,
- 69, 0, 509, 2, 0x08 /* Private */,
- 70, 0, 510, 2, 0x08 /* Private */,
- 71, 0, 511, 2, 0x08 /* Private */,
- 72, 1, 512, 2, 0x08 /* Private */,
- 74, 1, 515, 2, 0x08 /* Private */,
- 76, 0, 518, 2, 0x08 /* Private */,
- 77, 0, 519, 2, 0x08 /* Private */,
- 78, 0, 520, 2, 0x08 /* Private */,
- 79, 0, 521, 2, 0x08 /* Private */,
+ 1, 0, 404, 2, 0x08 /* Private */,
+ 3, 0, 405, 2, 0x08 /* Private */,
+ 4, 0, 406, 2, 0x08 /* Private */,
+ 5, 0, 407, 2, 0x08 /* Private */,
+ 6, 0, 408, 2, 0x08 /* Private */,
+ 7, 0, 409, 2, 0x08 /* Private */,
+ 8, 0, 410, 2, 0x08 /* Private */,
+ 9, 0, 411, 2, 0x08 /* Private */,
+ 10, 0, 412, 2, 0x08 /* Private */,
+ 11, 1, 413, 2, 0x08 /* Private */,
+ 13, 1, 416, 2, 0x08 /* Private */,
+ 15, 1, 419, 2, 0x08 /* Private */,
+ 17, 1, 422, 2, 0x08 /* Private */,
+ 18, 1, 425, 2, 0x08 /* Private */,
+ 19, 1, 428, 2, 0x08 /* Private */,
+ 20, 1, 431, 2, 0x08 /* Private */,
+ 21, 1, 434, 2, 0x08 /* Private */,
+ 22, 0, 437, 2, 0x08 /* Private */,
+ 23, 0, 438, 2, 0x08 /* Private */,
+ 24, 0, 439, 2, 0x08 /* Private */,
+ 25, 0, 440, 2, 0x08 /* Private */,
+ 26, 0, 441, 2, 0x08 /* Private */,
+ 27, 1, 442, 2, 0x08 /* Private */,
+ 28, 1, 445, 2, 0x08 /* Private */,
+ 29, 1, 448, 2, 0x08 /* Private */,
+ 30, 1, 451, 2, 0x08 /* Private */,
+ 31, 1, 454, 2, 0x08 /* Private */,
+ 32, 1, 457, 2, 0x08 /* Private */,
+ 33, 1, 460, 2, 0x08 /* Private */,
+ 34, 1, 463, 2, 0x08 /* Private */,
+ 35, 1, 466, 2, 0x08 /* Private */,
+ 36, 1, 469, 2, 0x08 /* Private */,
+ 37, 1, 472, 2, 0x08 /* Private */,
+ 38, 1, 475, 2, 0x08 /* Private */,
+ 39, 1, 478, 2, 0x08 /* Private */,
+ 40, 1, 481, 2, 0x08 /* Private */,
+ 41, 1, 484, 2, 0x08 /* Private */,
+ 42, 1, 487, 2, 0x08 /* Private */,
+ 43, 1, 490, 2, 0x08 /* Private */,
+ 44, 1, 493, 2, 0x08 /* Private */,
+ 45, 1, 496, 2, 0x08 /* Private */,
+ 46, 1, 499, 2, 0x08 /* Private */,
+ 47, 1, 502, 2, 0x08 /* Private */,
+ 48, 1, 505, 2, 0x08 /* Private */,
+ 49, 1, 508, 2, 0x08 /* Private */,
+ 50, 1, 511, 2, 0x08 /* Private */,
+ 51, 0, 514, 2, 0x08 /* Private */,
+ 52, 0, 515, 2, 0x08 /* Private */,
+ 53, 0, 516, 2, 0x08 /* Private */,
+ 54, 0, 517, 2, 0x08 /* Private */,
+ 55, 1, 518, 2, 0x08 /* Private */,
+ 57, 1, 521, 2, 0x08 /* Private */,
+ 58, 0, 524, 2, 0x08 /* Private */,
+ 59, 0, 525, 2, 0x08 /* Private */,
+ 60, 0, 526, 2, 0x08 /* Private */,
+ 61, 0, 527, 2, 0x08 /* Private */,
+ 62, 0, 528, 2, 0x08 /* Private */,
+ 63, 0, 529, 2, 0x08 /* Private */,
+ 64, 0, 530, 2, 0x08 /* Private */,
+ 65, 0, 531, 2, 0x08 /* Private */,
+ 66, 1, 532, 2, 0x08 /* Private */,
+ 67, 1, 535, 2, 0x08 /* Private */,
+ 68, 0, 538, 2, 0x08 /* Private */,
+ 69, 0, 539, 2, 0x08 /* Private */,
+ 70, 0, 540, 2, 0x08 /* Private */,
+ 71, 0, 541, 2, 0x08 /* Private */,
+ 72, 1, 542, 2, 0x08 /* Private */,
+ 74, 1, 545, 2, 0x08 /* Private */,
+ 76, 1, 548, 2, 0x08 /* Private */,
+ 77, 1, 551, 2, 0x08 /* Private */,
+ 80, 2, 554, 2, 0x08 /* Private */,
+ 84, 1, 559, 2, 0x08 /* Private */,
+ 86, 1, 562, 2, 0x08 /* Private */,
+ 87, 1, 565, 2, 0x08 /* Private */,
+ 88, 0, 568, 2, 0x08 /* Private */,
+ 89, 0, 569, 2, 0x08 /* Private */,
+ 90, 0, 570, 2, 0x08 /* Private */,
+ 91, 0, 571, 2, 0x08 /* Private */,
// slots: parameters
QMetaType::Void,
@@ -322,6 +345,12 @@ static const uint qt_meta_data_MainWindow[] = {
QMetaType::Void,
QMetaType::Void, QMetaType::Int, 73,
QMetaType::Void, QMetaType::Bool, 75,
+ QMetaType::Void, QMetaType::Bool, 12,
+ QMetaType::Void, 0x80000000 | 78, 79,
+ QMetaType::Bool, QMetaType::QObjectStar, 0x80000000 | 82, 81, 83,
+ QMetaType::Bool, 0x80000000 | 85, 83,
+ QMetaType::Void, QMetaType::Bool, 16,
+ QMetaType::Void, QMetaType::Bool, 16,
QMetaType::Void,
QMetaType::Void,
QMetaType::Void,
@@ -404,10 +433,18 @@ void MainWindow::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id,
case 65: _t->resetUsbState(); break;
case 66: _t->rSourceIndexChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
case 67: _t->multimeterStateChange((*reinterpret_cast< bool(*)>(_a[1]))); break;
- case 68: _t->on_actionCalibrate_triggered(); break;
- case 69: _t->on_actionLo_bw_triggered(); break;
- case 70: _t->on_actionSingle_ep_msync_triggered(); break;
- case 71: _t->on_actionSingle_ep_async_triggered(); break;
+ case 68: _t->on_actionOld_Person_Mode_triggered((*reinterpret_cast< bool(*)>(_a[1]))); break;
+ case 69: _t->screenRotateEvent((*reinterpret_cast< Qt::ScreenOrientation(*)>(_a[1]))); break;
+ case 70: { bool _r = _t->eventFilter((*reinterpret_cast< QObject*(*)>(_a[1])),(*reinterpret_cast< QEvent*(*)>(_a[2])));
+ if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break;
+ case 71: { bool _r = _t->gestureFilter((*reinterpret_cast< QGestureEvent*(*)>(_a[1])));
+ if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break;
+ case 72: _t->horiScaleEvent((*reinterpret_cast< bool(*)>(_a[1]))); break;
+ case 73: _t->vertScaleEvent((*reinterpret_cast< bool(*)>(_a[1]))); break;
+ case 74: _t->on_actionCalibrate_triggered(); break;
+ case 75: _t->on_actionLo_bw_triggered(); break;
+ case 76: _t->on_actionSingle_ep_msync_triggered(); break;
+ case 77: _t->on_actionSingle_ep_async_triggered(); break;
default: ;
}
}
@@ -438,13 +475,13 @@ int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
- if (_id < 72)
+ if (_id < 78)
qt_static_metacall(this, _c, _id, _a);
- _id -= 72;
+ _id -= 78;
} else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
- if (_id < 72)
+ if (_id < 78)
*reinterpret_cast(_a[0]) = -1;
- _id -= 72;
+ _id -= 78;
}
return _id;
}
diff --git a/Desktop_Interface/moc/moc_unixusbdriver.cpp b/Desktop_Interface/moc/moc_unixusbdriver.cpp
new file mode 100644
index 00000000..adebbd39
--- /dev/null
+++ b/Desktop_Interface/moc/moc_unixusbdriver.cpp
@@ -0,0 +1,214 @@
+/****************************************************************************
+** Meta object code from reading C++ file 'unixusbdriver.h'
+**
+** Created by: The Qt Meta Object Compiler version 67 (Qt 5.7.1)
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+#include "../unixusbdriver.h"
+#include
+#include
+#if !defined(Q_MOC_OUTPUT_REVISION)
+#error "The header file 'unixusbdriver.h' doesn't include ."
+#elif Q_MOC_OUTPUT_REVISION != 67
+#error "This file was generated using the moc from 5.7.1. It"
+#error "cannot be used with the include files from this version of Qt."
+#error "(The moc has changed too much.)"
+#endif
+
+QT_BEGIN_MOC_NAMESPACE
+struct qt_meta_stringdata_worker_t {
+ QByteArrayData data[3];
+ char stringdata0[15];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+ qptrdiff(offsetof(qt_meta_stringdata_worker_t, stringdata0) + ofs \
+ - idx * sizeof(QByteArrayData)) \
+ )
+static const qt_meta_stringdata_worker_t qt_meta_stringdata_worker = {
+ {
+QT_MOC_LITERAL(0, 0, 6), // "worker"
+QT_MOC_LITERAL(1, 7, 6), // "handle"
+QT_MOC_LITERAL(2, 14, 0) // ""
+
+ },
+ "worker\0handle\0"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_worker[] = {
+
+ // content:
+ 7, // revision
+ 0, // classname
+ 0, 0, // classinfo
+ 1, 14, // methods
+ 0, 0, // properties
+ 0, 0, // enums/sets
+ 0, 0, // constructors
+ 0, // flags
+ 0, // signalCount
+
+ // slots: name, argc, parameters, tag, flags
+ 1, 0, 19, 2, 0x0a /* Public */,
+
+ // slots: parameters
+ QMetaType::Void,
+
+ 0 // eod
+};
+
+void worker::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+ if (_c == QMetaObject::InvokeMetaMethod) {
+ worker *_t = static_cast(_o);
+ Q_UNUSED(_t)
+ switch (_id) {
+ case 0: _t->handle(); break;
+ default: ;
+ }
+ }
+ Q_UNUSED(_a);
+}
+
+const QMetaObject worker::staticMetaObject = {
+ { &QObject::staticMetaObject, qt_meta_stringdata_worker.data,
+ qt_meta_data_worker, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
+};
+
+
+const QMetaObject *worker::metaObject() const
+{
+ return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *worker::qt_metacast(const char *_clname)
+{
+ if (!_clname) return Q_NULLPTR;
+ if (!strcmp(_clname, qt_meta_stringdata_worker.stringdata0))
+ return static_cast(const_cast< worker*>(this));
+ return QObject::qt_metacast(_clname);
+}
+
+int worker::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+ _id = QObject::qt_metacall(_c, _id, _a);
+ if (_id < 0)
+ return _id;
+ if (_c == QMetaObject::InvokeMetaMethod) {
+ if (_id < 1)
+ qt_static_metacall(this, _c, _id, _a);
+ _id -= 1;
+ } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+ if (_id < 1)
+ *reinterpret_cast(_a[0]) = -1;
+ _id -= 1;
+ }
+ return _id;
+}
+struct qt_meta_stringdata_unixUsbDriver_t {
+ QByteArrayData data[6];
+ char stringdata0[73];
+};
+#define QT_MOC_LITERAL(idx, ofs, len) \
+ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
+ qptrdiff(offsetof(qt_meta_stringdata_unixUsbDriver_t, stringdata0) + ofs \
+ - idx * sizeof(QByteArrayData)) \
+ )
+static const qt_meta_stringdata_unixUsbDriver_t qt_meta_stringdata_unixUsbDriver = {
+ {
+QT_MOC_LITERAL(0, 0, 13), // "unixUsbDriver"
+QT_MOC_LITERAL(1, 14, 12), // "isoTimerTick"
+QT_MOC_LITERAL(2, 27, 0), // ""
+QT_MOC_LITERAL(3, 28, 12), // "recoveryTick"
+QT_MOC_LITERAL(4, 41, 17), // "shutdownProcedure"
+QT_MOC_LITERAL(5, 59, 13) // "backupCleanup"
+
+ },
+ "unixUsbDriver\0isoTimerTick\0\0recoveryTick\0"
+ "shutdownProcedure\0backupCleanup"
+};
+#undef QT_MOC_LITERAL
+
+static const uint qt_meta_data_unixUsbDriver[] = {
+
+ // content:
+ 7, // revision
+ 0, // classname
+ 0, 0, // classinfo
+ 4, 14, // methods
+ 0, 0, // properties
+ 0, 0, // enums/sets
+ 0, 0, // constructors
+ 0, // flags
+ 0, // signalCount
+
+ // slots: name, argc, parameters, tag, flags
+ 1, 0, 34, 2, 0x0a /* Public */,
+ 3, 0, 35, 2, 0x0a /* Public */,
+ 4, 0, 36, 2, 0x0a /* Public */,
+ 5, 0, 37, 2, 0x0a /* Public */,
+
+ // slots: parameters
+ QMetaType::Void,
+ QMetaType::Void,
+ QMetaType::Void,
+ QMetaType::Void,
+
+ 0 // eod
+};
+
+void unixUsbDriver::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+ if (_c == QMetaObject::InvokeMetaMethod) {
+ unixUsbDriver *_t = static_cast(_o);
+ Q_UNUSED(_t)
+ switch (_id) {
+ case 0: _t->isoTimerTick(); break;
+ case 1: _t->recoveryTick(); break;
+ case 2: _t->shutdownProcedure(); break;
+ case 3: _t->backupCleanup(); break;
+ default: ;
+ }
+ }
+ Q_UNUSED(_a);
+}
+
+const QMetaObject unixUsbDriver::staticMetaObject = {
+ { &genericUsbDriver::staticMetaObject, qt_meta_stringdata_unixUsbDriver.data,
+ qt_meta_data_unixUsbDriver, qt_static_metacall, Q_NULLPTR, Q_NULLPTR}
+};
+
+
+const QMetaObject *unixUsbDriver::metaObject() const
+{
+ return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
+}
+
+void *unixUsbDriver::qt_metacast(const char *_clname)
+{
+ if (!_clname) return Q_NULLPTR;
+ if (!strcmp(_clname, qt_meta_stringdata_unixUsbDriver.stringdata0))
+ return static_cast(const_cast< unixUsbDriver*>(this));
+ return genericUsbDriver::qt_metacast(_clname);
+}
+
+int unixUsbDriver::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+ _id = genericUsbDriver::qt_metacall(_c, _id, _a);
+ if (_id < 0)
+ return _id;
+ if (_c == QMetaObject::InvokeMetaMethod) {
+ if (_id < 4)
+ qt_static_metacall(this, _c, _id, _a);
+ _id -= 4;
+ } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
+ if (_id < 4)
+ *reinterpret_cast(_a[0]) = -1;
+ _id -= 4;
+ }
+ return _id;
+}
+QT_END_MOC_NAMESPACE
diff --git a/Desktop_Interface/moc_androidusbdriver.obj b/Desktop_Interface/moc_androidusbdriver.obj
new file mode 100644
index 00000000..cbf56437
Binary files /dev/null and b/Desktop_Interface/moc_androidusbdriver.obj differ
diff --git a/Desktop_Interface/moc_buffercontrol.obj b/Desktop_Interface/moc_buffercontrol.obj
new file mode 100644
index 00000000..4c7dc0a5
Binary files /dev/null and b/Desktop_Interface/moc_buffercontrol.obj differ
diff --git a/Desktop_Interface/moc_cursorenabler.obj b/Desktop_Interface/moc_cursorenabler.obj
new file mode 100644
index 00000000..95e2c127
Binary files /dev/null and b/Desktop_Interface/moc_cursorenabler.obj differ
diff --git a/Desktop_Interface/moc_deviceconnecteddisplay.obj b/Desktop_Interface/moc_deviceconnecteddisplay.obj
new file mode 100644
index 00000000..ec595741
Binary files /dev/null and b/Desktop_Interface/moc_deviceconnecteddisplay.obj differ
diff --git a/Desktop_Interface/moc_espocombobox.obj b/Desktop_Interface/moc_espocombobox.obj
new file mode 100644
index 00000000..29d4e3fe
Binary files /dev/null and b/Desktop_Interface/moc_espocombobox.obj differ
diff --git a/Desktop_Interface/moc_esposlider.obj b/Desktop_Interface/moc_esposlider.obj
new file mode 100644
index 00000000..2a988dbe
Binary files /dev/null and b/Desktop_Interface/moc_esposlider.obj differ
diff --git a/Desktop_Interface/moc_espospinbox.obj b/Desktop_Interface/moc_espospinbox.obj
new file mode 100644
index 00000000..2a7428c8
Binary files /dev/null and b/Desktop_Interface/moc_espospinbox.obj differ
diff --git a/Desktop_Interface/moc_functiongencontrol.obj b/Desktop_Interface/moc_functiongencontrol.obj
new file mode 100644
index 00000000..028606ab
Binary files /dev/null and b/Desktop_Interface/moc_functiongencontrol.obj differ
diff --git a/Desktop_Interface/moc_genericusbdriver.obj b/Desktop_Interface/moc_genericusbdriver.obj
new file mode 100644
index 00000000..a234db9e
Binary files /dev/null and b/Desktop_Interface/moc_genericusbdriver.obj differ
diff --git a/Desktop_Interface/moc_isobuffer.obj b/Desktop_Interface/moc_isobuffer.obj
new file mode 100644
index 00000000..bfc4c230
Binary files /dev/null and b/Desktop_Interface/moc_isobuffer.obj differ
diff --git a/Desktop_Interface/moc_isodriver.obj b/Desktop_Interface/moc_isodriver.obj
new file mode 100644
index 00000000..bae73f83
Binary files /dev/null and b/Desktop_Interface/moc_isodriver.obj differ
diff --git a/Desktop_Interface/moc_mainwindow.obj b/Desktop_Interface/moc_mainwindow.obj
new file mode 100644
index 00000000..d0dd759f
Binary files /dev/null and b/Desktop_Interface/moc_mainwindow.obj differ
diff --git a/Desktop_Interface/moc_noclosemenu.obj b/Desktop_Interface/moc_noclosemenu.obj
new file mode 100644
index 00000000..88d944e9
Binary files /dev/null and b/Desktop_Interface/moc_noclosemenu.obj differ
diff --git a/Desktop_Interface/moc_qcustomplot.obj b/Desktop_Interface/moc_qcustomplot.obj
new file mode 100644
index 00000000..c3a32bdf
Binary files /dev/null and b/Desktop_Interface/moc_qcustomplot.obj differ
diff --git a/Desktop_Interface/moc_scoperangeenterdialog.obj b/Desktop_Interface/moc_scoperangeenterdialog.obj
new file mode 100644
index 00000000..304953c3
Binary files /dev/null and b/Desktop_Interface/moc_scoperangeenterdialog.obj differ
diff --git a/Desktop_Interface/moc_swipeystack.obj b/Desktop_Interface/moc_swipeystack.obj
new file mode 100644
index 00000000..f359c758
Binary files /dev/null and b/Desktop_Interface/moc_swipeystack.obj differ
diff --git a/Desktop_Interface/moc_timedtickbox.obj b/Desktop_Interface/moc_timedtickbox.obj
new file mode 100644
index 00000000..ed3d7166
Binary files /dev/null and b/Desktop_Interface/moc_timedtickbox.obj differ
diff --git a/Desktop_Interface/moc_unixusbdriver.obj b/Desktop_Interface/moc_unixusbdriver.obj
new file mode 100644
index 00000000..e14102cd
Binary files /dev/null and b/Desktop_Interface/moc_unixusbdriver.obj differ
diff --git a/Desktop_Interface/moc_voltagespinbox.obj b/Desktop_Interface/moc_voltagespinbox.obj
new file mode 100644
index 00000000..6547e10f
Binary files /dev/null and b/Desktop_Interface/moc_voltagespinbox.obj differ
diff --git a/Desktop_Interface/noclosemenu.obj b/Desktop_Interface/noclosemenu.obj
new file mode 100644
index 00000000..be3db786
Binary files /dev/null and b/Desktop_Interface/noclosemenu.obj differ
diff --git a/Desktop_Interface/qcustomplot.obj b/Desktop_Interface/qcustomplot.obj
new file mode 100644
index 00000000..785f827e
Binary files /dev/null and b/Desktop_Interface/qcustomplot.obj differ
diff --git a/Desktop_Interface/qrc_resources.cpp b/Desktop_Interface/qrc_resources.cpp
new file mode 100644
index 00000000..07f77298
--- /dev/null
+++ b/Desktop_Interface/qrc_resources.cpp
@@ -0,0 +1,132 @@
+/****************************************************************************
+** Resource object code
+**
+** Created by: The Resource Compiler for Qt version 5.7.1
+**
+** WARNING! All changes made in this file will be lost!
+*****************************************************************************/
+
+static const unsigned char qt_resource_data[] = {
+ // C:/Users/Esposch/Documents/GitHub/Labrador/Desktop_Interface/buffer_0.bmp
+ 0x0,0x0,0x0,0x8d,
+ 0x0,
+ 0x0,0x28,0xb6,0x78,0x9c,0xed,0xd0,0xb1,0xd,0xc2,0x30,0x0,0x45,0xc1,0xb0,0x45,
+ 0x6,0xa0,0xc8,0x4,0xc,0x90,0x3e,0x3b,0x30,0xa,0x53,0xb1,0x1e,0x98,0x28,0x5,
+ 0xd5,0xd5,0x2e,0xde,0x49,0x5f,0xb2,0xec,0xc6,0x7a,0xfb,0xf1,0xde,0x96,0xd3,0x63,
+ 0xec,0x77,0x7c,0x8e,0xdd,0xc7,0x6e,0xcb,0x7a,0xde,0xbf,0xae,0xf7,0x7f,0x9f,0x69,
+ 0x4c,0xfb,0xb1,0x49,0xd4,0xc7,0xea,0x63,0xf5,0xb1,0xfa,0x58,0x7d,0xac,0x3e,0x56,
+ 0x1f,0xab,0x8f,0xd5,0xc7,0xea,0x63,0xf5,0xb1,0xfa,0x58,0x7d,0xac,0x3e,0x56,0x1f,
+ 0xab,0x8f,0xd5,0xc7,0xea,0x63,0xf5,0xb1,0xfa,0x58,0x7d,0xac,0x3e,0x56,0x1f,0xab,
+ 0x8f,0xd5,0xc7,0xea,0x63,0xf5,0xb1,0xfa,0x58,0x7d,0xac,0x3e,0x56,0x1f,0xab,0x8f,
+ 0xd5,0xc7,0xea,0x63,0x73,0xf6,0xf9,0x2,0xf4,0x4,0x42,0xe7,
+ // C:/Users/Esposch/Documents/GitHub/Labrador/Desktop_Interface/buffer_2.bmp
+ 0x0,0x0,0x0,0x7b,
+ 0x0,
+ 0x0,0x28,0xb6,0x78,0x9c,0xed,0xd0,0x31,0xd,0x80,0x30,0x14,0x45,0xd1,0xe2,0x82,
+ 0x81,0xb1,0x3,0xa,0x10,0xc0,0x8e,0x7,0xa4,0xa0,0xa,0x57,0x78,0xa0,0x34,0xc,
+ 0x95,0xf0,0x86,0xf3,0x73,0x7f,0xd2,0xb4,0x4b,0x73,0xf6,0xe3,0x5e,0x4b,0x9f,0xad,
+ 0xed,0x77,0x3c,0xdb,0xd6,0xb6,0x53,0x99,0xfb,0xfd,0xf5,0xbf,0x8f,0x53,0x97,0x27,
+ 0xa4,0xd8,0x8f,0x85,0xc4,0x87,0xf,0x1f,0x3e,0x7c,0x32,0xe3,0xc3,0x87,0xf,0x1f,
+ 0x3e,0x99,0xf1,0xe1,0xc3,0x87,0xf,0x9f,0xcc,0xf8,0xf0,0xe1,0xc3,0x87,0x4f,0x66,
+ 0x7c,0xf8,0xf0,0xe1,0xc3,0x27,0x33,0x3e,0x7c,0xf8,0xf0,0xe1,0x93,0x19,0x1f,0x3e,
+ 0x7c,0xf8,0xf0,0x19,0x7b,0x1,0x6d,0x5a,0xf,0xce,
+ // C:/Users/Esposch/Documents/GitHub/Labrador/Desktop_Interface/buffer_1.bmp
+ 0x0,0x0,0x0,0x97,
+ 0x0,
+ 0x0,0x28,0xb6,0x78,0x9c,0xed,0xd0,0xb1,0xd,0xc2,0x30,0x10,0x40,0xd1,0xb0,0x5,
+ 0x5,0x65,0xa,0x26,0x60,0x0,0x7a,0x76,0x60,0x14,0xa6,0x62,0x2b,0x66,0x0,0x27,
+ 0x42,0x2,0x51,0xbc,0x96,0x14,0xff,0xc9,0x27,0x9d,0xec,0xc6,0xfa,0xe7,0xcb,0xfd,
+ 0x38,0xad,0x4e,0x63,0x96,0xf5,0x3a,0x66,0x1e,0xb3,0x9b,0xf6,0xeb,0xfd,0xed,0xfd,
+ 0xfe,0xed,0xb9,0x19,0x3f,0x1f,0x9b,0xf,0x8f,0x2d,0x9c,0x7f,0x57,0xf9,0xa8,0x8f,
+ 0xd5,0xc7,0xea,0x63,0xf5,0xb1,0xfa,0x58,0x7d,0xac,0x3e,0x56,0x1f,0xab,0x8f,0xd5,
+ 0xc7,0xea,0x63,0xf5,0xb1,0xfa,0x58,0x7d,0xac,0x3e,0x56,0x1f,0xab,0x8f,0xd5,0xc7,
+ 0xea,0x63,0xf5,0xb1,0xfa,0x58,0x7d,0xac,0x3e,0x56,0x1f,0xab,0x8f,0xd5,0xc7,0xea,
+ 0x63,0xf5,0xb1,0xfa,0x58,0x7d,0xac,0x3e,0x56,0x1f,0xab,0x8f,0xd5,0xc7,0xb6,0xd9,
+ 0xe7,0x5,0x35,0x2d,0xc9,0xf3,
+
+};
+
+static const unsigned char qt_resource_name[] = {
+ // bitmap
+ 0x0,0x6,
+ 0x6,0x90,0xb3,0x80,
+ 0x0,0x62,
+ 0x0,0x69,0x0,0x74,0x0,0x6d,0x0,0x61,0x0,0x70,
+ // buffer_0.bmp
+ 0x0,0xc,
+ 0xd,0x14,0xd0,0xc0,
+ 0x0,0x62,
+ 0x0,0x75,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x72,0x0,0x5f,0x0,0x30,0x0,0x2e,0x0,0x62,0x0,0x6d,0x0,0x70,
+ // buffer_2.bmp
+ 0x0,0xc,
+ 0xd,0x12,0xd0,0xc0,
+ 0x0,0x62,
+ 0x0,0x75,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x72,0x0,0x5f,0x0,0x32,0x0,0x2e,0x0,0x62,0x0,0x6d,0x0,0x70,
+ // buffer_1.bmp
+ 0x0,0xc,
+ 0xd,0x17,0xd0,0xc0,
+ 0x0,0x62,
+ 0x0,0x75,0x0,0x66,0x0,0x66,0x0,0x65,0x0,0x72,0x0,0x5f,0x0,0x31,0x0,0x2e,0x0,0x62,0x0,0x6d,0x0,0x70,
+
+};
+
+static const unsigned char qt_resource_struct[] = {
+ // :
+ 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,
+ // :/bitmap
+ 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x2,
+ // :/bitmap/buffer_2.bmp
+ 0x0,0x0,0x0,0x30,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x91,
+ // :/bitmap/buffer_0.bmp
+ 0x0,0x0,0x0,0x12,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,
+ // :/bitmap/buffer_1.bmp
+ 0x0,0x0,0x0,0x4e,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x10,
+
+};
+
+#ifdef QT_NAMESPACE
+# define QT_RCC_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name
+# define QT_RCC_MANGLE_NAMESPACE0(x) x
+# define QT_RCC_MANGLE_NAMESPACE1(a, b) a##_##b
+# define QT_RCC_MANGLE_NAMESPACE2(a, b) QT_RCC_MANGLE_NAMESPACE1(a,b)
+# define QT_RCC_MANGLE_NAMESPACE(name) QT_RCC_MANGLE_NAMESPACE2( \
+ QT_RCC_MANGLE_NAMESPACE0(name), QT_RCC_MANGLE_NAMESPACE0(QT_NAMESPACE))
+#else
+# define QT_RCC_PREPEND_NAMESPACE(name) name
+# define QT_RCC_MANGLE_NAMESPACE(name) name
+#endif
+
+#ifdef QT_NAMESPACE
+namespace QT_NAMESPACE {
+#endif
+
+bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *);
+
+bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *);
+
+#ifdef QT_NAMESPACE
+}
+#endif
+
+int QT_RCC_MANGLE_NAMESPACE(qInitResources_resources)();
+int QT_RCC_MANGLE_NAMESPACE(qInitResources_resources)()
+{
+ QT_RCC_PREPEND_NAMESPACE(qRegisterResourceData)
+ (0x01, qt_resource_struct, qt_resource_name, qt_resource_data);
+ return 1;
+}
+
+int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)();
+int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)()
+{
+ QT_RCC_PREPEND_NAMESPACE(qUnregisterResourceData)
+ (0x01, qt_resource_struct, qt_resource_name, qt_resource_data);
+ return 1;
+}
+
+namespace {
+ struct initializer {
+ initializer() { QT_RCC_MANGLE_NAMESPACE(qInitResources_resources)(); }
+ ~initializer() { QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)(); }
+ } dummy;
+}
diff --git a/Desktop_Interface/qrc_resources.obj b/Desktop_Interface/qrc_resources.obj
new file mode 100644
index 00000000..8fb8e210
Binary files /dev/null and b/Desktop_Interface/qrc_resources.obj differ
diff --git a/Desktop_Interface/scoperangeenterdialog.obj b/Desktop_Interface/scoperangeenterdialog.obj
new file mode 100644
index 00000000..78f53a3c
Binary files /dev/null and b/Desktop_Interface/scoperangeenterdialog.obj differ
diff --git a/Desktop_Interface/siprint.obj b/Desktop_Interface/siprint.obj
new file mode 100644
index 00000000..d18fc9c1
Binary files /dev/null and b/Desktop_Interface/siprint.obj differ
diff --git a/Desktop_Interface/swipeystack.obj b/Desktop_Interface/swipeystack.obj
new file mode 100644
index 00000000..c3f7b089
Binary files /dev/null and b/Desktop_Interface/swipeystack.obj differ
diff --git a/Desktop_Interface/timedtickbox.obj b/Desktop_Interface/timedtickbox.obj
new file mode 100644
index 00000000..9068fd44
Binary files /dev/null and b/Desktop_Interface/timedtickbox.obj differ
diff --git a/Desktop_Interface/ui_files_mobile/mainwindow.ui b/Desktop_Interface/ui_files_mobile/mainwindow.ui
index cdb48ec1..f37ad632 100644
--- a/Desktop_Interface/ui_files_mobile/mainwindow.ui
+++ b/Desktop_Interface/ui_files_mobile/mainwindow.ui
@@ -1998,10 +1998,19 @@
+
+
@@ -2611,6 +2620,33 @@
μF
+
+
+ true
+
+
+ true
+
+
+ lo-bw
+
+
+
+
+ true
+
+
+ single-ep-msync
+
+
+
+
+ true
+
+
+ single-ep-async
+
+
diff --git a/Desktop_Interface/ui_mainwindow.h b/Desktop_Interface/ui_mainwindow.h
index 1a79866a..ea299507 100644
--- a/Desktop_Interface/ui_mainwindow.h
+++ b/Desktop_Interface/ui_mainwindow.h
@@ -42,6 +42,7 @@
#include
#include
#include
+#include
#include
#include "qcustomplot.h"
@@ -116,6 +117,7 @@ public:
QAction *actionSnap_to_Cursors;
QAction *actionEnter_Manually;
QAction *actionTake_Snapshot;
+ QAction *actionOld_Person_Mode;
QAction *actionAutoR;
QAction *actionOhm;
QAction *actionKOhm;
@@ -126,22 +128,17 @@ public:
QAction *actionSingle_ep_msync;
QAction *actionSingle_ep_async;
QWidget *centralWidget;
- QHBoxLayout *horizontalLayout;
- QVBoxLayout *verticalLayout;
- QCustomPlot *scopeAxes;
- QLabel *cursorStatsLabel;
- functionGenControl *controller_fg;
- QTextEdit *debugConsole;
- QSlider *timeBaseSlider;
- QPlainTextEdit *console1;
- QPlainTextEdit *console2;
QVBoxLayout *verticalLayout_5;
deviceConnectedDisplay *deviceConnected;
- QHBoxLayout *horizontalLayout_13;
+ QCustomPlot *scopeAxes;
+ swipeyStack *stackedWidget;
+ QWidget *page;
+ QHBoxLayout *horizontalLayout;
+ QVBoxLayout *verticalLayout;
+ QHBoxLayout *horizontalLayout_5;
QVBoxLayout *verticalLayout_9;
QGroupBox *scopeGroup_CH1;
QVBoxLayout *verticalLayout_2;
- QCheckBox *pausedLabeL_CH1;
QCheckBox *acCoupledLabel_CH1;
QCheckBox *filterLabel_CH1;
QCheckBox *doubleSampleLabel;
@@ -155,14 +152,15 @@ public:
QLCDNumber *voltageInfoRmsDisplay_CH1;
QLCDNumber *voltageInfoMeanDisplay_CH1;
QGroupBox *cursorGroup;
- QVBoxLayout *verticalLayout_8;
+ QGridLayout *gridLayout_5;
QCheckBox *cursorHoriCheck;
- QCheckBox *cursorVertCheck;
cursorEnabler *makeCursorsNicer;
+ QCheckBox *cursorVertCheck;
+ QCheckBox *scaleHoriCheck;
+ QCheckBox *scaleVertCheck;
QVBoxLayout *verticalLayout_10;
QGroupBox *scopeGroup_CH2;
QVBoxLayout *verticalLayout_11;
- QCheckBox *pausedLabel_CH2;
QCheckBox *acCoupledLabel_CH2;
QCheckBox *filterLabel_CH2;
QCheckBox *xyDisplayLabel;
@@ -180,27 +178,10 @@ public:
QComboBox *triggerChannelSelect;
QDoubleSpinBox *triggerLevelValue;
QCheckBox *singleShotCheckBox;
- QSpacerItem *verticalSpacer_3;
- QGroupBox *multimeterGroup;
- QGridLayout *gridLayout;
- QComboBox *multimeterModeSelect;
- QFormLayout *formLayout;
- QLabel *multimeterMaxLabel;
- QLCDNumber *multimeterMaxDisplay;
- QLabel *multimeterMinLabel;
- QLCDNumber *multimeterMinDisplay;
- QLabel *multimeterMeanLabel;
- QLCDNumber *multimeterMeanDisplay;
- QLabel *multimeterRmsLabel;
- QLCDNumber *multimeterRmsDisplay;
- QCheckBox *multimeterPauseCheckBox;
- QLabel *multimeterResistanceLabel;
- QLabel *multimeterModeLabel;
- espoSpinBox *multimeterResistanceSelect;
- QComboBox *multimeterRComboBox;
- QLabel *multimeterRLabel;
- QSpacerItem *verticalSpacer_2;
- QHBoxLayout *horizontalLayout_5;
+ QCheckBox *pausedLabel_CH2;
+ QCheckBox *pausedLabeL_CH1;
+ QWidget *page_2;
+ QHBoxLayout *horizontalLayout_2;
QGroupBox *signalGenGroup_CH1;
QVBoxLayout *verticalLayout_19;
QLabel *waveformLabel_CH1;
@@ -221,19 +202,68 @@ public:
espoSpinBox *amplitudeValue_CH2;
QLabel *dcOffsetLabel_CH2;
espoSpinBox *dcOffsetValue_CH2;
- QHBoxLayout *horizontalLayout_7;
+ QWidget *page_3;
+ QHBoxLayout *horizontalLayout_3;
+ QGroupBox *multimeterGroup;
+ QVBoxLayout *verticalLayout_13;
+ QHBoxLayout *horizontalLayout_9;
+ QSpacerItem *horizontalSpacer_3;
+ QVBoxLayout *verticalLayout_22;
+ QSpacerItem *verticalSpacer_7;
+ QLabel *multimeterModeLabel;
+ QComboBox *multimeterModeSelect;
+ QSpacerItem *verticalSpacer_8;
+ QLabel *multimeterResistanceLabel;
+ espoSpinBox *multimeterResistanceSelect;
+ QSpacerItem *verticalSpacer_6;
+ QSpacerItem *horizontalSpacer;
+ QVBoxLayout *verticalLayout_23;
+ QFormLayout *formLayout;
+ QLabel *multimeterMaxLabel;
+ QLCDNumber *multimeterMaxDisplay;
+ QLabel *multimeterMinLabel;
+ QLCDNumber *multimeterMinDisplay;
+ QSpacerItem *verticalSpacer_2;
+ QLabel *multimeterMeanLabel;
+ QLCDNumber *multimeterMeanDisplay;
QSpacerItem *verticalSpacer_4;
- isoDriver *controller_iso;
- QVBoxLayout *verticalLayout_18;
+ QLabel *multimeterRmsLabel;
+ QLCDNumber *multimeterRmsDisplay;
+ QSpacerItem *verticalSpacer;
+ QSpacerItem *verticalSpacer_3;
+ QSpacerItem *verticalSpacer_5;
+ QSpacerItem *horizontalSpacer_2;
+ QCheckBox *multimeterPauseCheckBox;
+ QWidget *page_5;
+ QHBoxLayout *horizontalLayout_8;
QGroupBox *psuGroup;
QVBoxLayout *verticalLayout_15;
espoSlider *psuSlider;
timedTickBox *lockPsuCheckBox;
QLCDNumber *psuDisplay;
+ QVBoxLayout *verticalLayout_4;
+ functionGenControl *controller_fg;
+ bufferControl *bufferDisplay;
+ QLabel *cursorStatsLabel;
+ QPushButton *debugButton3;
+ QPushButton *debugButton1;
+ QSlider *timeBaseSlider;
+ QPushButton *debugButton2;
+ QTextEdit *debugConsole;
+ isoDriver *controller_iso;
+ QWidget *page_4;
QVBoxLayout *verticalLayout_3;
+ QPlainTextEdit *console1;
+ QPlainTextEdit *console2;
+ QHBoxLayout *horizontalLayout_6;
+ QGroupBox *digitalOutputGroup;
+ QGridLayout *gridLayout_4;
+ QCheckBox *digitalOutCheckbox_CH3;
+ QCheckBox *digitalOutCheckbox_CH2;
+ QCheckBox *digitalOutCheckbox_CH1;
+ QCheckBox *digitalOutCheckbox_CH4;
QGroupBox *busSifferGroup_CH1;
QVBoxLayout *verticalLayout_7;
- QCheckBox *pause_LA;
QGroupBox *serialDecodingCheck_CH1;
QVBoxLayout *verticalLayout_6;
QComboBox *serialDecodingModeSelect_CH1;
@@ -242,18 +272,8 @@ public:
QGroupBox *serialDecodingCheck_CH2;
QVBoxLayout *verticalLayout_17;
QComboBox *serialDecodingModeSelect_CH2;
- QGroupBox *digitalOutputGroup;
- QGridLayout *gridLayout_4;
- QCheckBox *digitalOutCheckbox_CH3;
- QCheckBox *digitalOutCheckbox_CH2;
- QCheckBox *digitalOutCheckbox_CH1;
- QCheckBox *digitalOutCheckbox_CH4;
- QPushButton *debugButton1;
- QPushButton *debugButton2;
- QPushButton *debugButton3;
- bufferControl *bufferDisplay;
+ QCheckBox *pause_LA;
QMenuBar *menuBar;
- QMenu *menuFile;
QMenu *menuOscilloscope_2;
QMenu *menuGain_2;
noCloseMenu *menuCH1_Stats;
@@ -268,13 +288,14 @@ public:
QMenu *menuBus_Sniffer;
QMenu *menuUART_1;
QMenu *menuBaud_Rate;
+ QMenu *menuType_Here_2;
QMenu *menuParity_Bit;
QMenu *menuData_Bits;
QMenu *menuUART_2;
QMenu *menuBaud_Rate_2;
QMenu *menuData_Bits_2;
QMenu *menuParity_Bit_2;
- QMenu *menuPower_Supply;
+ QMenu *menuAndroid_Special;
QMenu *menuConnection_Type;
void setupUi(QMainWindow *MainWindow)
@@ -282,8 +303,8 @@ public:
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QStringLiteral("MainWindow"));
MainWindow->setEnabled(true);
- MainWindow->resize(1440, 900);
- MainWindow->setMinimumSize(QSize(1024, 768));
+ MainWindow->resize(720, 1280);
+ MainWindow->setMinimumSize(QSize(480, 720));
actionGainAuto = new QAction(MainWindow);
actionGainAuto->setObjectName(QStringLiteral("actionGainAuto"));
actionGainAuto->setCheckable(true);
@@ -488,6 +509,9 @@ public:
actionEnter_Manually->setObjectName(QStringLiteral("actionEnter_Manually"));
actionTake_Snapshot = new QAction(MainWindow);
actionTake_Snapshot->setObjectName(QStringLiteral("actionTake_Snapshot"));
+ actionOld_Person_Mode = new QAction(MainWindow);
+ actionOld_Person_Mode->setObjectName(QStringLiteral("actionOld_Person_Mode"));
+ actionOld_Person_Mode->setCheckable(true);
actionAutoR = new QAction(MainWindow);
actionAutoR->setObjectName(QStringLiteral("actionAutoR"));
actionAutoR->setCheckable(true);
@@ -520,105 +544,67 @@ public:
actionSingle_ep_async->setCheckable(true);
centralWidget = new QWidget(MainWindow);
centralWidget->setObjectName(QStringLiteral("centralWidget"));
- horizontalLayout = new QHBoxLayout(centralWidget);
- horizontalLayout->setSpacing(6);
- horizontalLayout->setContentsMargins(11, 11, 11, 11);
- horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
- verticalLayout = new QVBoxLayout();
- verticalLayout->setSpacing(6);
- verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
- verticalLayout->setSizeConstraint(QLayout::SetMinAndMaxSize);
- scopeAxes = new QCustomPlot(centralWidget);
- scopeAxes->setObjectName(QStringLiteral("scopeAxes"));
- QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- sizePolicy.setHorizontalStretch(0);
- sizePolicy.setVerticalStretch(0);
- sizePolicy.setHeightForWidth(scopeAxes->sizePolicy().hasHeightForWidth());
- scopeAxes->setSizePolicy(sizePolicy);
- scopeAxes->setMinimumSize(QSize(500, 400));
- scopeAxes->setLayoutDirection(Qt::LeftToRight);
-
- verticalLayout->addWidget(scopeAxes);
-
- cursorStatsLabel = new QLabel(centralWidget);
- cursorStatsLabel->setObjectName(QStringLiteral("cursorStatsLabel"));
- cursorStatsLabel->setMaximumSize(QSize(16777215, 48));
- cursorStatsLabel->setAlignment(Qt::AlignCenter);
-
- verticalLayout->addWidget(cursorStatsLabel);
-
- controller_fg = new functionGenControl(centralWidget);
- controller_fg->setObjectName(QStringLiteral("controller_fg"));
-
- verticalLayout->addWidget(controller_fg);
-
- debugConsole = new QTextEdit(centralWidget);
- debugConsole->setObjectName(QStringLiteral("debugConsole"));
-
- verticalLayout->addWidget(debugConsole);
-
- timeBaseSlider = new QSlider(centralWidget);
- timeBaseSlider->setObjectName(QStringLiteral("timeBaseSlider"));
- timeBaseSlider->setMinimum(-60);
- timeBaseSlider->setMaximum(10);
- timeBaseSlider->setPageStep(10);
- timeBaseSlider->setValue(-20);
- timeBaseSlider->setSliderPosition(-20);
- timeBaseSlider->setTracking(true);
- timeBaseSlider->setOrientation(Qt::Horizontal);
- timeBaseSlider->setTickPosition(QSlider::TicksBelow);
- timeBaseSlider->setTickInterval(10);
-
- verticalLayout->addWidget(timeBaseSlider);
-
- console1 = new QPlainTextEdit(centralWidget);
- console1->setObjectName(QStringLiteral("console1"));
- console1->setEnabled(true);
- console1->setMinimumSize(QSize(0, 0));
- console1->setMaximumSize(QSize(16777215, 48));
- console1->setReadOnly(true);
-
- verticalLayout->addWidget(console1);
-
- console2 = new QPlainTextEdit(centralWidget);
- console2->setObjectName(QStringLiteral("console2"));
- console2->setMaximumSize(QSize(16777215, 48));
- console2->setReadOnly(true);
-
- verticalLayout->addWidget(console2);
-
-
- horizontalLayout->addLayout(verticalLayout);
-
- verticalLayout_5 = new QVBoxLayout();
- verticalLayout_5->setSpacing(6);
+ verticalLayout_5 = new QVBoxLayout(centralWidget);
+ verticalLayout_5->setSpacing(0);
+ verticalLayout_5->setContentsMargins(11, 11, 11, 11);
verticalLayout_5->setObjectName(QStringLiteral("verticalLayout_5"));
+ verticalLayout_5->setContentsMargins(0, 0, 0, 0);
deviceConnected = new deviceConnectedDisplay(centralWidget);
deviceConnected->setObjectName(QStringLiteral("deviceConnected"));
deviceConnected->setAlignment(Qt::AlignCenter);
verticalLayout_5->addWidget(deviceConnected);
- horizontalLayout_13 = new QHBoxLayout();
- horizontalLayout_13->setSpacing(6);
- horizontalLayout_13->setObjectName(QStringLiteral("horizontalLayout_13"));
+ scopeAxes = new QCustomPlot(centralWidget);
+ scopeAxes->setObjectName(QStringLiteral("scopeAxes"));
+ QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::MinimumExpanding);
+ sizePolicy.setHorizontalStretch(0);
+ sizePolicy.setVerticalStretch(0);
+ sizePolicy.setHeightForWidth(scopeAxes->sizePolicy().hasHeightForWidth());
+ scopeAxes->setSizePolicy(sizePolicy);
+ scopeAxes->setMinimumSize(QSize(720, 400));
+ scopeAxes->setLayoutDirection(Qt::LeftToRight);
+
+ verticalLayout_5->addWidget(scopeAxes);
+
+ stackedWidget = new swipeyStack(centralWidget);
+ stackedWidget->setObjectName(QStringLiteral("stackedWidget"));
+ QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Maximum);
+ sizePolicy1.setHorizontalStretch(0);
+ sizePolicy1.setVerticalStretch(0);
+ sizePolicy1.setHeightForWidth(stackedWidget->sizePolicy().hasHeightForWidth());
+ stackedWidget->setSizePolicy(sizePolicy1);
+ stackedWidget->setMaximumSize(QSize(16777215, 400));
+ QFont font;
+ font.setPointSize(8);
+ stackedWidget->setFont(font);
+ page = new QWidget();
+ page->setObjectName(QStringLiteral("page"));
+ page->setFont(font);
+ horizontalLayout = new QHBoxLayout(page);
+ horizontalLayout->setSpacing(0);
+ horizontalLayout->setContentsMargins(11, 11, 11, 11);
+ horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
+ horizontalLayout->setContentsMargins(0, 2, 0, 0);
+ verticalLayout = new QVBoxLayout();
+ verticalLayout->setSpacing(6);
+ verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
+ horizontalLayout_5 = new QHBoxLayout();
+ horizontalLayout_5->setSpacing(6);
+ horizontalLayout_5->setObjectName(QStringLiteral("horizontalLayout_5"));
verticalLayout_9 = new QVBoxLayout();
- verticalLayout_9->setSpacing(6);
+ verticalLayout_9->setSpacing(2);
verticalLayout_9->setObjectName(QStringLiteral("verticalLayout_9"));
- scopeGroup_CH1 = new QGroupBox(centralWidget);
+ scopeGroup_CH1 = new QGroupBox(page);
scopeGroup_CH1->setObjectName(QStringLiteral("scopeGroup_CH1"));
scopeGroup_CH1->setFlat(false);
scopeGroup_CH1->setCheckable(true);
scopeGroup_CH1->setChecked(true);
verticalLayout_2 = new QVBoxLayout(scopeGroup_CH1);
- verticalLayout_2->setSpacing(6);
+ verticalLayout_2->setSpacing(2);
verticalLayout_2->setContentsMargins(11, 11, 11, 11);
verticalLayout_2->setObjectName(QStringLiteral("verticalLayout_2"));
- pausedLabeL_CH1 = new QCheckBox(scopeGroup_CH1);
- pausedLabeL_CH1->setObjectName(QStringLiteral("pausedLabeL_CH1"));
-
- verticalLayout_2->addWidget(pausedLabeL_CH1);
-
+ verticalLayout_2->setContentsMargins(0, 0, 0, 0);
acCoupledLabel_CH1 = new QCheckBox(scopeGroup_CH1);
acCoupledLabel_CH1->setObjectName(QStringLiteral("acCoupledLabel_CH1"));
@@ -688,61 +674,64 @@ public:
verticalLayout_2->addLayout(gridLayout_2);
- acCoupledLabel_CH1->raise();
- filterLabel_CH1->raise();
- pausedLabeL_CH1->raise();
- doubleSampleLabel->raise();
verticalLayout_9->addWidget(scopeGroup_CH1);
- cursorGroup = new QGroupBox(centralWidget);
+ cursorGroup = new QGroupBox(page);
cursorGroup->setObjectName(QStringLiteral("cursorGroup"));
cursorGroup->setEnabled(true);
cursorGroup->setCheckable(false);
cursorGroup->setChecked(false);
- verticalLayout_8 = new QVBoxLayout(cursorGroup);
- verticalLayout_8->setSpacing(6);
- verticalLayout_8->setContentsMargins(11, 11, 11, 11);
- verticalLayout_8->setObjectName(QStringLiteral("verticalLayout_8"));
+ gridLayout_5 = new QGridLayout(cursorGroup);
+ gridLayout_5->setSpacing(6);
+ gridLayout_5->setContentsMargins(11, 11, 11, 11);
+ gridLayout_5->setObjectName(QStringLiteral("gridLayout_5"));
cursorHoriCheck = new QCheckBox(cursorGroup);
cursorHoriCheck->setObjectName(QStringLiteral("cursorHoriCheck"));
- verticalLayout_8->addWidget(cursorHoriCheck);
-
- cursorVertCheck = new QCheckBox(cursorGroup);
- cursorVertCheck->setObjectName(QStringLiteral("cursorVertCheck"));
-
- verticalLayout_8->addWidget(cursorVertCheck);
+ gridLayout_5->addWidget(cursorHoriCheck, 0, 0, 1, 1);
makeCursorsNicer = new cursorEnabler(cursorGroup);
makeCursorsNicer->setObjectName(QStringLiteral("makeCursorsNicer"));
- verticalLayout_8->addWidget(makeCursorsNicer);
+ gridLayout_5->addWidget(makeCursorsNicer, 2, 0, 1, 1);
+
+ cursorVertCheck = new QCheckBox(cursorGroup);
+ cursorVertCheck->setObjectName(QStringLiteral("cursorVertCheck"));
+
+ gridLayout_5->addWidget(cursorVertCheck, 1, 0, 1, 1);
+
+ scaleHoriCheck = new QCheckBox(cursorGroup);
+ scaleHoriCheck->setObjectName(QStringLiteral("scaleHoriCheck"));
+
+ gridLayout_5->addWidget(scaleHoriCheck, 0, 1, 1, 1);
+
+ scaleVertCheck = new QCheckBox(cursorGroup);
+ scaleVertCheck->setObjectName(QStringLiteral("scaleVertCheck"));
+ scaleVertCheck->setChecked(true);
+
+ gridLayout_5->addWidget(scaleVertCheck, 1, 1, 1, 1);
verticalLayout_9->addWidget(cursorGroup);
- horizontalLayout_13->addLayout(verticalLayout_9);
+ horizontalLayout_5->addLayout(verticalLayout_9);
verticalLayout_10 = new QVBoxLayout();
- verticalLayout_10->setSpacing(6);
+ verticalLayout_10->setSpacing(2);
verticalLayout_10->setObjectName(QStringLiteral("verticalLayout_10"));
- scopeGroup_CH2 = new QGroupBox(centralWidget);
+ scopeGroup_CH2 = new QGroupBox(page);
scopeGroup_CH2->setObjectName(QStringLiteral("scopeGroup_CH2"));
scopeGroup_CH2->setEnabled(true);
scopeGroup_CH2->setFlat(false);
scopeGroup_CH2->setCheckable(true);
scopeGroup_CH2->setChecked(false);
verticalLayout_11 = new QVBoxLayout(scopeGroup_CH2);
- verticalLayout_11->setSpacing(6);
+ verticalLayout_11->setSpacing(2);
verticalLayout_11->setContentsMargins(11, 11, 11, 11);
verticalLayout_11->setObjectName(QStringLiteral("verticalLayout_11"));
- pausedLabel_CH2 = new QCheckBox(scopeGroup_CH2);
- pausedLabel_CH2->setObjectName(QStringLiteral("pausedLabel_CH2"));
-
- verticalLayout_11->addWidget(pausedLabel_CH2);
-
+ verticalLayout_11->setContentsMargins(0, 0, 0, 0);
acCoupledLabel_CH2 = new QCheckBox(scopeGroup_CH2);
acCoupledLabel_CH2->setObjectName(QStringLiteral("acCoupledLabel_CH2"));
@@ -815,15 +804,16 @@ public:
verticalLayout_10->addWidget(scopeGroup_CH2);
- triggerGroup = new QGroupBox(centralWidget);
+ triggerGroup = new QGroupBox(page);
triggerGroup->setObjectName(QStringLiteral("triggerGroup"));
triggerGroup->setEnabled(true);
triggerGroup->setCheckable(true);
triggerGroup->setChecked(false);
verticalLayout_14 = new QVBoxLayout(triggerGroup);
- verticalLayout_14->setSpacing(6);
+ verticalLayout_14->setSpacing(2);
verticalLayout_14->setContentsMargins(11, 11, 11, 11);
verticalLayout_14->setObjectName(QStringLiteral("verticalLayout_14"));
+ verticalLayout_14->setContentsMargins(0, 0, 0, 0);
triggerChannelSelect = new QComboBox(triggerGroup);
triggerChannelSelect->setObjectName(QStringLiteral("triggerChannelSelect"));
@@ -846,132 +836,33 @@ public:
verticalLayout_10->addWidget(triggerGroup);
- horizontalLayout_13->addLayout(verticalLayout_10);
+ horizontalLayout_5->addLayout(verticalLayout_10);
- verticalLayout_5->addLayout(horizontalLayout_13);
+ verticalLayout->addLayout(horizontalLayout_5);
- verticalSpacer_3 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
+ pausedLabel_CH2 = new QCheckBox(page);
+ pausedLabel_CH2->setObjectName(QStringLiteral("pausedLabel_CH2"));
- verticalLayout_5->addItem(verticalSpacer_3);
+ verticalLayout->addWidget(pausedLabel_CH2);
- multimeterGroup = new QGroupBox(centralWidget);
- multimeterGroup->setObjectName(QStringLiteral("multimeterGroup"));
- multimeterGroup->setEnabled(false);
- multimeterGroup->setCheckable(true);
- multimeterGroup->setChecked(false);
- gridLayout = new QGridLayout(multimeterGroup);
- gridLayout->setSpacing(6);
- gridLayout->setContentsMargins(11, 11, 11, 11);
- gridLayout->setObjectName(QStringLiteral("gridLayout"));
- multimeterModeSelect = new QComboBox(multimeterGroup);
- multimeterModeSelect->setObjectName(QStringLiteral("multimeterModeSelect"));
+ pausedLabeL_CH1 = new QCheckBox(page);
+ pausedLabeL_CH1->setObjectName(QStringLiteral("pausedLabeL_CH1"));
- gridLayout->addWidget(multimeterModeSelect, 1, 0, 1, 1);
-
- formLayout = new QFormLayout();
- formLayout->setSpacing(6);
- formLayout->setObjectName(QStringLiteral("formLayout"));
- formLayout->setHorizontalSpacing(0);
- formLayout->setVerticalSpacing(0);
- multimeterMaxLabel = new QLabel(multimeterGroup);
- multimeterMaxLabel->setObjectName(QStringLiteral("multimeterMaxLabel"));
-
- formLayout->setWidget(0, QFormLayout::LabelRole, multimeterMaxLabel);
-
- multimeterMaxDisplay = new QLCDNumber(multimeterGroup);
- multimeterMaxDisplay->setObjectName(QStringLiteral("multimeterMaxDisplay"));
- multimeterMaxDisplay->setMinimumSize(QSize(0, 24));
- multimeterMaxDisplay->setFrameShape(QFrame::NoFrame);
- multimeterMaxDisplay->setDigitCount(4);
-
- formLayout->setWidget(0, QFormLayout::FieldRole, multimeterMaxDisplay);
-
- multimeterMinLabel = new QLabel(multimeterGroup);
- multimeterMinLabel->setObjectName(QStringLiteral("multimeterMinLabel"));
-
- formLayout->setWidget(1, QFormLayout::LabelRole, multimeterMinLabel);
-
- multimeterMinDisplay = new QLCDNumber(multimeterGroup);
- multimeterMinDisplay->setObjectName(QStringLiteral("multimeterMinDisplay"));
- multimeterMinDisplay->setMinimumSize(QSize(0, 24));
- multimeterMinDisplay->setFrameShape(QFrame::NoFrame);
- multimeterMinDisplay->setDigitCount(4);
-
- formLayout->setWidget(1, QFormLayout::FieldRole, multimeterMinDisplay);
-
- multimeterMeanLabel = new QLabel(multimeterGroup);
- multimeterMeanLabel->setObjectName(QStringLiteral("multimeterMeanLabel"));
-
- formLayout->setWidget(2, QFormLayout::LabelRole, multimeterMeanLabel);
-
- multimeterMeanDisplay = new QLCDNumber(multimeterGroup);
- multimeterMeanDisplay->setObjectName(QStringLiteral("multimeterMeanDisplay"));
- multimeterMeanDisplay->setMinimumSize(QSize(0, 24));
- multimeterMeanDisplay->setFrameShape(QFrame::NoFrame);
- multimeterMeanDisplay->setDigitCount(4);
-
- formLayout->setWidget(2, QFormLayout::FieldRole, multimeterMeanDisplay);
-
- multimeterRmsLabel = new QLabel(multimeterGroup);
- multimeterRmsLabel->setObjectName(QStringLiteral("multimeterRmsLabel"));
-
- formLayout->setWidget(3, QFormLayout::LabelRole, multimeterRmsLabel);
-
- multimeterRmsDisplay = new QLCDNumber(multimeterGroup);
- multimeterRmsDisplay->setObjectName(QStringLiteral("multimeterRmsDisplay"));
- multimeterRmsDisplay->setMinimumSize(QSize(0, 24));
- multimeterRmsDisplay->setFrameShape(QFrame::NoFrame);
- multimeterRmsDisplay->setDigitCount(4);
-
- formLayout->setWidget(3, QFormLayout::FieldRole, multimeterRmsDisplay);
+ verticalLayout->addWidget(pausedLabeL_CH1);
- gridLayout->addLayout(formLayout, 0, 1, 8, 1);
+ horizontalLayout->addLayout(verticalLayout);
- multimeterPauseCheckBox = new QCheckBox(multimeterGroup);
- multimeterPauseCheckBox->setObjectName(QStringLiteral("multimeterPauseCheckBox"));
-
- gridLayout->addWidget(multimeterPauseCheckBox, 7, 0, 1, 1);
-
- multimeterResistanceLabel = new QLabel(multimeterGroup);
- multimeterResistanceLabel->setObjectName(QStringLiteral("multimeterResistanceLabel"));
-
- gridLayout->addWidget(multimeterResistanceLabel, 4, 0, 1, 1);
-
- multimeterModeLabel = new QLabel(multimeterGroup);
- multimeterModeLabel->setObjectName(QStringLiteral("multimeterModeLabel"));
-
- gridLayout->addWidget(multimeterModeLabel, 0, 0, 1, 1);
-
- multimeterResistanceSelect = new espoSpinBox(multimeterGroup);
- multimeterResistanceSelect->setObjectName(QStringLiteral("multimeterResistanceSelect"));
- multimeterResistanceSelect->setDecimals(0);
- multimeterResistanceSelect->setMaximum(1e+6);
-
- gridLayout->addWidget(multimeterResistanceSelect, 5, 0, 1, 1);
-
- multimeterRComboBox = new QComboBox(multimeterGroup);
- multimeterRComboBox->setObjectName(QStringLiteral("multimeterRComboBox"));
-
- gridLayout->addWidget(multimeterRComboBox, 3, 0, 1, 1);
-
- multimeterRLabel = new QLabel(multimeterGroup);
- multimeterRLabel->setObjectName(QStringLiteral("multimeterRLabel"));
-
- gridLayout->addWidget(multimeterRLabel, 2, 0, 1, 1);
-
-
- verticalLayout_5->addWidget(multimeterGroup);
-
- verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
-
- verticalLayout_5->addItem(verticalSpacer_2);
-
- horizontalLayout_5 = new QHBoxLayout();
- horizontalLayout_5->setSpacing(6);
- horizontalLayout_5->setObjectName(QStringLiteral("horizontalLayout_5"));
- signalGenGroup_CH1 = new QGroupBox(centralWidget);
+ stackedWidget->addWidget(page);
+ page_2 = new QWidget();
+ page_2->setObjectName(QStringLiteral("page_2"));
+ horizontalLayout_2 = new QHBoxLayout(page_2);
+ horizontalLayout_2->setSpacing(0);
+ horizontalLayout_2->setContentsMargins(11, 11, 11, 11);
+ horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
+ horizontalLayout_2->setContentsMargins(0, 0, 0, 0);
+ signalGenGroup_CH1 = new QGroupBox(page_2);
signalGenGroup_CH1->setObjectName(QStringLiteral("signalGenGroup_CH1"));
signalGenGroup_CH1->setEnabled(true);
signalGenGroup_CH1->setCheckable(false);
@@ -1031,9 +922,9 @@ public:
verticalLayout_19->addWidget(dcOffsetValue_CH1);
- horizontalLayout_5->addWidget(signalGenGroup_CH1);
+ horizontalLayout_2->addWidget(signalGenGroup_CH1);
- signalGenGroup_CH2 = new QGroupBox(centralWidget);
+ signalGenGroup_CH2 = new QGroupBox(page_2);
signalGenGroup_CH2->setObjectName(QStringLiteral("signalGenGroup_CH2"));
signalGenGroup_CH2->setEnabled(true);
signalGenGroup_CH2->setCheckable(false);
@@ -1100,33 +991,239 @@ public:
verticalLayout_21->addWidget(dcOffsetValue_CH2);
- horizontalLayout_5->addWidget(signalGenGroup_CH2);
+ horizontalLayout_2->addWidget(signalGenGroup_CH2);
+
+ stackedWidget->addWidget(page_2);
+ page_3 = new QWidget();
+ page_3->setObjectName(QStringLiteral("page_3"));
+ horizontalLayout_3 = new QHBoxLayout(page_3);
+ horizontalLayout_3->setSpacing(0);
+ horizontalLayout_3->setContentsMargins(11, 11, 11, 11);
+ horizontalLayout_3->setObjectName(QStringLiteral("horizontalLayout_3"));
+ horizontalLayout_3->setContentsMargins(0, 0, 0, 0);
+ multimeterGroup = new QGroupBox(page_3);
+ multimeterGroup->setObjectName(QStringLiteral("multimeterGroup"));
+ multimeterGroup->setEnabled(false);
+ multimeterGroup->setCheckable(true);
+ multimeterGroup->setChecked(false);
+ verticalLayout_13 = new QVBoxLayout(multimeterGroup);
+ verticalLayout_13->setSpacing(0);
+ verticalLayout_13->setContentsMargins(11, 11, 11, 11);
+ verticalLayout_13->setObjectName(QStringLiteral("verticalLayout_13"));
+ verticalLayout_13->setContentsMargins(0, 0, 0, 0);
+ horizontalLayout_9 = new QHBoxLayout();
+ horizontalLayout_9->setSpacing(6);
+ horizontalLayout_9->setObjectName(QStringLiteral("horizontalLayout_9"));
+ horizontalSpacer_3 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+
+ horizontalLayout_9->addItem(horizontalSpacer_3);
+
+ verticalLayout_22 = new QVBoxLayout();
+ verticalLayout_22->setSpacing(6);
+ verticalLayout_22->setObjectName(QStringLiteral("verticalLayout_22"));
+ verticalSpacer_7 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
+
+ verticalLayout_22->addItem(verticalSpacer_7);
+
+ multimeterModeLabel = new QLabel(multimeterGroup);
+ multimeterModeLabel->setObjectName(QStringLiteral("multimeterModeLabel"));
+ QSizePolicy sizePolicy2(QSizePolicy::Maximum, QSizePolicy::Preferred);
+ sizePolicy2.setHorizontalStretch(0);
+ sizePolicy2.setVerticalStretch(0);
+ sizePolicy2.setHeightForWidth(multimeterModeLabel->sizePolicy().hasHeightForWidth());
+ multimeterModeLabel->setSizePolicy(sizePolicy2);
+ multimeterModeLabel->setMaximumSize(QSize(180, 16777215));
+ multimeterModeLabel->setAlignment(Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft);
+
+ verticalLayout_22->addWidget(multimeterModeLabel);
+
+ multimeterModeSelect = new QComboBox(multimeterGroup);
+ multimeterModeSelect->setObjectName(QStringLiteral("multimeterModeSelect"));
+ QSizePolicy sizePolicy3(QSizePolicy::Maximum, QSizePolicy::Fixed);
+ sizePolicy3.setHorizontalStretch(0);
+ sizePolicy3.setVerticalStretch(0);
+ sizePolicy3.setHeightForWidth(multimeterModeSelect->sizePolicy().hasHeightForWidth());
+ multimeterModeSelect->setSizePolicy(sizePolicy3);
+ multimeterModeSelect->setMaximumSize(QSize(180, 16777215));
+
+ verticalLayout_22->addWidget(multimeterModeSelect);
+
+ verticalSpacer_8 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
+
+ verticalLayout_22->addItem(verticalSpacer_8);
+
+ multimeterResistanceLabel = new QLabel(multimeterGroup);
+ multimeterResistanceLabel->setObjectName(QStringLiteral("multimeterResistanceLabel"));
+ sizePolicy2.setHeightForWidth(multimeterResistanceLabel->sizePolicy().hasHeightForWidth());
+ multimeterResistanceLabel->setSizePolicy(sizePolicy2);
+ multimeterResistanceLabel->setMaximumSize(QSize(180, 16777215));
+ multimeterResistanceLabel->setAlignment(Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft);
+
+ verticalLayout_22->addWidget(multimeterResistanceLabel);
+
+ multimeterResistanceSelect = new espoSpinBox(multimeterGroup);
+ multimeterResistanceSelect->setObjectName(QStringLiteral("multimeterResistanceSelect"));
+ sizePolicy3.setHeightForWidth(multimeterResistanceSelect->sizePolicy().hasHeightForWidth());
+ multimeterResistanceSelect->setSizePolicy(sizePolicy3);
+ multimeterResistanceSelect->setMaximumSize(QSize(180, 16777215));
+ multimeterResistanceSelect->setDecimals(0);
+ multimeterResistanceSelect->setMaximum(1e+6);
+
+ verticalLayout_22->addWidget(multimeterResistanceSelect);
+
+ verticalSpacer_6 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
+
+ verticalLayout_22->addItem(verticalSpacer_6);
- verticalLayout_5->addLayout(horizontalLayout_5);
+ horizontalLayout_9->addLayout(verticalLayout_22);
- horizontalLayout_7 = new QHBoxLayout();
- horizontalLayout_7->setSpacing(6);
- horizontalLayout_7->setObjectName(QStringLiteral("horizontalLayout_7"));
+ horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
- verticalLayout_5->addLayout(horizontalLayout_7);
+ horizontalLayout_9->addItem(horizontalSpacer);
- verticalSpacer_4 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
+ verticalLayout_23 = new QVBoxLayout();
+ verticalLayout_23->setSpacing(6);
+ verticalLayout_23->setObjectName(QStringLiteral("verticalLayout_23"));
+ formLayout = new QFormLayout();
+ formLayout->setSpacing(6);
+ formLayout->setObjectName(QStringLiteral("formLayout"));
+ formLayout->setHorizontalSpacing(0);
+ formLayout->setVerticalSpacing(0);
+ multimeterMaxLabel = new QLabel(multimeterGroup);
+ multimeterMaxLabel->setObjectName(QStringLiteral("multimeterMaxLabel"));
+ QSizePolicy sizePolicy4(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding);
+ sizePolicy4.setHorizontalStretch(0);
+ sizePolicy4.setVerticalStretch(0);
+ sizePolicy4.setHeightForWidth(multimeterMaxLabel->sizePolicy().hasHeightForWidth());
+ multimeterMaxLabel->setSizePolicy(sizePolicy4);
+ multimeterMaxLabel->setMinimumSize(QSize(0, 96));
- verticalLayout_5->addItem(verticalSpacer_4);
+ formLayout->setWidget(1, QFormLayout::LabelRole, multimeterMaxLabel);
- controller_iso = new isoDriver(centralWidget);
- controller_iso->setObjectName(QStringLiteral("controller_iso"));
+ multimeterMaxDisplay = new QLCDNumber(multimeterGroup);
+ multimeterMaxDisplay->setObjectName(QStringLiteral("multimeterMaxDisplay"));
+ sizePolicy4.setHeightForWidth(multimeterMaxDisplay->sizePolicy().hasHeightForWidth());
+ multimeterMaxDisplay->setSizePolicy(sizePolicy4);
+ multimeterMaxDisplay->setMinimumSize(QSize(0, 96));
+ multimeterMaxDisplay->setFrameShape(QFrame::NoFrame);
+ multimeterMaxDisplay->setDigitCount(4);
- verticalLayout_5->addWidget(controller_iso);
+ formLayout->setWidget(1, QFormLayout::FieldRole, multimeterMaxDisplay);
+
+ multimeterMinLabel = new QLabel(multimeterGroup);
+ multimeterMinLabel->setObjectName(QStringLiteral("multimeterMinLabel"));
+ sizePolicy4.setHeightForWidth(multimeterMinLabel->sizePolicy().hasHeightForWidth());
+ multimeterMinLabel->setSizePolicy(sizePolicy4);
+ multimeterMinLabel->setMinimumSize(QSize(0, 96));
+
+ formLayout->setWidget(3, QFormLayout::LabelRole, multimeterMinLabel);
+
+ multimeterMinDisplay = new QLCDNumber(multimeterGroup);
+ multimeterMinDisplay->setObjectName(QStringLiteral("multimeterMinDisplay"));
+ sizePolicy4.setHeightForWidth(multimeterMinDisplay->sizePolicy().hasHeightForWidth());
+ multimeterMinDisplay->setSizePolicy(sizePolicy4);
+ multimeterMinDisplay->setMinimumSize(QSize(0, 96));
+ multimeterMinDisplay->setFrameShape(QFrame::NoFrame);
+ multimeterMinDisplay->setDigitCount(4);
+
+ formLayout->setWidget(3, QFormLayout::FieldRole, multimeterMinDisplay);
+
+ verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Preferred);
+
+ formLayout->setItem(5, QFormLayout::FieldRole, verticalSpacer_2);
+
+ multimeterMeanLabel = new QLabel(multimeterGroup);
+ multimeterMeanLabel->setObjectName(QStringLiteral("multimeterMeanLabel"));
+ sizePolicy4.setHeightForWidth(multimeterMeanLabel->sizePolicy().hasHeightForWidth());
+ multimeterMeanLabel->setSizePolicy(sizePolicy4);
+ multimeterMeanLabel->setMinimumSize(QSize(0, 96));
+
+ formLayout->setWidget(6, QFormLayout::LabelRole, multimeterMeanLabel);
+
+ multimeterMeanDisplay = new QLCDNumber(multimeterGroup);
+ multimeterMeanDisplay->setObjectName(QStringLiteral("multimeterMeanDisplay"));
+ QSizePolicy sizePolicy5(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
+ sizePolicy5.setHorizontalStretch(0);
+ sizePolicy5.setVerticalStretch(0);
+ sizePolicy5.setHeightForWidth(multimeterMeanDisplay->sizePolicy().hasHeightForWidth());
+ multimeterMeanDisplay->setSizePolicy(sizePolicy5);
+ multimeterMeanDisplay->setMinimumSize(QSize(0, 96));
+ multimeterMeanDisplay->setFrameShape(QFrame::NoFrame);
+ multimeterMeanDisplay->setDigitCount(4);
+
+ formLayout->setWidget(6, QFormLayout::FieldRole, multimeterMeanDisplay);
+
+ verticalSpacer_4 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Preferred);
+
+ formLayout->setItem(7, QFormLayout::FieldRole, verticalSpacer_4);
+
+ multimeterRmsLabel = new QLabel(multimeterGroup);
+ multimeterRmsLabel->setObjectName(QStringLiteral("multimeterRmsLabel"));
+ sizePolicy4.setHeightForWidth(multimeterRmsLabel->sizePolicy().hasHeightForWidth());
+ multimeterRmsLabel->setSizePolicy(sizePolicy4);
+ multimeterRmsLabel->setMinimumSize(QSize(0, 96));
+
+ formLayout->setWidget(8, QFormLayout::LabelRole, multimeterRmsLabel);
+
+ multimeterRmsDisplay = new QLCDNumber(multimeterGroup);
+ multimeterRmsDisplay->setObjectName(QStringLiteral("multimeterRmsDisplay"));
+ sizePolicy4.setHeightForWidth(multimeterRmsDisplay->sizePolicy().hasHeightForWidth());
+ multimeterRmsDisplay->setSizePolicy(sizePolicy4);
+ multimeterRmsDisplay->setMinimumSize(QSize(0, 96));
+ multimeterRmsDisplay->setFrameShape(QFrame::NoFrame);
+ multimeterRmsDisplay->setDigitCount(4);
+
+ formLayout->setWidget(8, QFormLayout::FieldRole, multimeterRmsDisplay);
+
+ verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Preferred);
+
+ formLayout->setItem(2, QFormLayout::FieldRole, verticalSpacer);
+
+ verticalSpacer_3 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
+
+ formLayout->setItem(0, QFormLayout::FieldRole, verticalSpacer_3);
- horizontalLayout->addLayout(verticalLayout_5);
+ verticalLayout_23->addLayout(formLayout);
- verticalLayout_18 = new QVBoxLayout();
- verticalLayout_18->setSpacing(6);
- verticalLayout_18->setObjectName(QStringLiteral("verticalLayout_18"));
- psuGroup = new QGroupBox(centralWidget);
+ verticalSpacer_5 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);
+
+ verticalLayout_23->addItem(verticalSpacer_5);
+
+
+ horizontalLayout_9->addLayout(verticalLayout_23);
+
+ horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+
+ horizontalLayout_9->addItem(horizontalSpacer_2);
+
+
+ verticalLayout_13->addLayout(horizontalLayout_9);
+
+ multimeterPauseCheckBox = new QCheckBox(multimeterGroup);
+ multimeterPauseCheckBox->setObjectName(QStringLiteral("multimeterPauseCheckBox"));
+ sizePolicy3.setHeightForWidth(multimeterPauseCheckBox->sizePolicy().hasHeightForWidth());
+ multimeterPauseCheckBox->setSizePolicy(sizePolicy3);
+ multimeterPauseCheckBox->setMaximumSize(QSize(180, 16777215));
+ QFont font1;
+ font1.setUnderline(false);
+ multimeterPauseCheckBox->setFont(font1);
+
+ verticalLayout_13->addWidget(multimeterPauseCheckBox);
+
+
+ horizontalLayout_3->addWidget(multimeterGroup);
+
+ stackedWidget->addWidget(page_3);
+ page_5 = new QWidget();
+ page_5->setObjectName(QStringLiteral("page_5"));
+ horizontalLayout_8 = new QHBoxLayout(page_5);
+ horizontalLayout_8->setSpacing(0);
+ horizontalLayout_8->setContentsMargins(11, 11, 11, 11);
+ horizontalLayout_8->setObjectName(QStringLiteral("horizontalLayout_8"));
+ horizontalLayout_8->setContentsMargins(0, 0, 0, 0);
+ psuGroup = new QGroupBox(page_5);
psuGroup->setObjectName(QStringLiteral("psuGroup"));
psuGroup->setAutoFillBackground(false);
verticalLayout_15 = new QVBoxLayout(psuGroup);
@@ -1137,7 +1234,7 @@ public:
psuSlider->setObjectName(QStringLiteral("psuSlider"));
psuSlider->setEnabled(false);
psuSlider->setMinimum(90);
- psuSlider->setMaximum(240);
+ psuSlider->setMaximum(300);
psuSlider->setSingleStep(1);
psuSlider->setOrientation(Qt::Vertical);
psuSlider->setTickPosition(QSlider::TicksBelow);
@@ -1163,77 +1260,102 @@ public:
verticalLayout_15->addWidget(psuDisplay);
- verticalLayout_18->addWidget(psuGroup);
+ horizontalLayout_8->addWidget(psuGroup);
- verticalLayout_3 = new QVBoxLayout();
- verticalLayout_3->setSpacing(6);
+ verticalLayout_4 = new QVBoxLayout();
+ verticalLayout_4->setSpacing(6);
+ verticalLayout_4->setObjectName(QStringLiteral("verticalLayout_4"));
+ controller_fg = new functionGenControl(page_5);
+ controller_fg->setObjectName(QStringLiteral("controller_fg"));
+
+ verticalLayout_4->addWidget(controller_fg);
+
+ bufferDisplay = new bufferControl(page_5);
+ bufferDisplay->setObjectName(QStringLiteral("bufferDisplay"));
+ bufferDisplay->setMinimumSize(QSize(96, 36));
+ bufferDisplay->setMaximumSize(QSize(96, 36));
+ bufferDisplay->setAlignment(Qt::AlignCenter);
+
+ verticalLayout_4->addWidget(bufferDisplay);
+
+ cursorStatsLabel = new QLabel(page_5);
+ cursorStatsLabel->setObjectName(QStringLiteral("cursorStatsLabel"));
+ cursorStatsLabel->setMaximumSize(QSize(16777215, 48));
+ cursorStatsLabel->setAlignment(Qt::AlignCenter);
+
+ verticalLayout_4->addWidget(cursorStatsLabel);
+
+ debugButton3 = new QPushButton(page_5);
+ debugButton3->setObjectName(QStringLiteral("debugButton3"));
+
+ verticalLayout_4->addWidget(debugButton3);
+
+ debugButton1 = new QPushButton(page_5);
+ debugButton1->setObjectName(QStringLiteral("debugButton1"));
+
+ verticalLayout_4->addWidget(debugButton1);
+
+ timeBaseSlider = new QSlider(page_5);
+ timeBaseSlider->setObjectName(QStringLiteral("timeBaseSlider"));
+ timeBaseSlider->setMinimum(-60);
+ timeBaseSlider->setMaximum(10);
+ timeBaseSlider->setPageStep(10);
+ timeBaseSlider->setValue(-20);
+ timeBaseSlider->setSliderPosition(-20);
+ timeBaseSlider->setTracking(true);
+ timeBaseSlider->setOrientation(Qt::Horizontal);
+ timeBaseSlider->setTickPosition(QSlider::TicksBelow);
+ timeBaseSlider->setTickInterval(10);
+
+ verticalLayout_4->addWidget(timeBaseSlider);
+
+ debugButton2 = new QPushButton(page_5);
+ debugButton2->setObjectName(QStringLiteral("debugButton2"));
+
+ verticalLayout_4->addWidget(debugButton2);
+
+ debugConsole = new QTextEdit(page_5);
+ debugConsole->setObjectName(QStringLiteral("debugConsole"));
+
+ verticalLayout_4->addWidget(debugConsole);
+
+ controller_iso = new isoDriver(page_5);
+ controller_iso->setObjectName(QStringLiteral("controller_iso"));
+
+ verticalLayout_4->addWidget(controller_iso);
+
+
+ horizontalLayout_8->addLayout(verticalLayout_4);
+
+ stackedWidget->addWidget(page_5);
+ page_4 = new QWidget();
+ page_4->setObjectName(QStringLiteral("page_4"));
+ verticalLayout_3 = new QVBoxLayout(page_4);
+ verticalLayout_3->setSpacing(0);
+ verticalLayout_3->setContentsMargins(11, 11, 11, 11);
verticalLayout_3->setObjectName(QStringLiteral("verticalLayout_3"));
- busSifferGroup_CH1 = new QGroupBox(centralWidget);
- busSifferGroup_CH1->setObjectName(QStringLiteral("busSifferGroup_CH1"));
- busSifferGroup_CH1->setCheckable(true);
- busSifferGroup_CH1->setChecked(false);
- verticalLayout_7 = new QVBoxLayout(busSifferGroup_CH1);
- verticalLayout_7->setSpacing(6);
- verticalLayout_7->setContentsMargins(11, 11, 11, 11);
- verticalLayout_7->setObjectName(QStringLiteral("verticalLayout_7"));
- pause_LA = new QCheckBox(busSifferGroup_CH1);
- pause_LA->setObjectName(QStringLiteral("pause_LA"));
- pause_LA->setEnabled(true);
+ verticalLayout_3->setContentsMargins(0, 0, 0, 0);
+ console1 = new QPlainTextEdit(page_4);
+ console1->setObjectName(QStringLiteral("console1"));
+ console1->setEnabled(true);
+ console1->setMinimumSize(QSize(0, 48));
+ console1->setMaximumSize(QSize(16777215, 96));
+ console1->setReadOnly(true);
- verticalLayout_7->addWidget(pause_LA);
+ verticalLayout_3->addWidget(console1);
- serialDecodingCheck_CH1 = new QGroupBox(busSifferGroup_CH1);
- serialDecodingCheck_CH1->setObjectName(QStringLiteral("serialDecodingCheck_CH1"));
- serialDecodingCheck_CH1->setFlat(true);
- serialDecodingCheck_CH1->setCheckable(true);
- serialDecodingCheck_CH1->setChecked(false);
- verticalLayout_6 = new QVBoxLayout(serialDecodingCheck_CH1);
- verticalLayout_6->setSpacing(0);
- verticalLayout_6->setContentsMargins(11, 11, 11, 11);
- verticalLayout_6->setObjectName(QStringLiteral("verticalLayout_6"));
- verticalLayout_6->setContentsMargins(0, 6, 0, 0);
- serialDecodingModeSelect_CH1 = new QComboBox(serialDecodingCheck_CH1);
- serialDecodingModeSelect_CH1->setObjectName(QStringLiteral("serialDecodingModeSelect_CH1"));
+ console2 = new QPlainTextEdit(page_4);
+ console2->setObjectName(QStringLiteral("console2"));
+ console2->setMinimumSize(QSize(0, 48));
+ console2->setMaximumSize(QSize(16777215, 96));
+ console2->setReadOnly(true);
- verticalLayout_6->addWidget(serialDecodingModeSelect_CH1);
+ verticalLayout_3->addWidget(console2);
-
- verticalLayout_7->addWidget(serialDecodingCheck_CH1);
-
-
- verticalLayout_3->addWidget(busSifferGroup_CH1);
-
- busSnifferGroup_CH2 = new QGroupBox(centralWidget);
- busSnifferGroup_CH2->setObjectName(QStringLiteral("busSnifferGroup_CH2"));
- busSnifferGroup_CH2->setEnabled(false);
- busSnifferGroup_CH2->setCheckable(true);
- busSnifferGroup_CH2->setChecked(false);
- verticalLayout_16 = new QVBoxLayout(busSnifferGroup_CH2);
- verticalLayout_16->setSpacing(6);
- verticalLayout_16->setContentsMargins(11, 11, 11, 11);
- verticalLayout_16->setObjectName(QStringLiteral("verticalLayout_16"));
- serialDecodingCheck_CH2 = new QGroupBox(busSnifferGroup_CH2);
- serialDecodingCheck_CH2->setObjectName(QStringLiteral("serialDecodingCheck_CH2"));
- serialDecodingCheck_CH2->setFlat(true);
- serialDecodingCheck_CH2->setCheckable(true);
- serialDecodingCheck_CH2->setChecked(false);
- verticalLayout_17 = new QVBoxLayout(serialDecodingCheck_CH2);
- verticalLayout_17->setSpacing(0);
- verticalLayout_17->setContentsMargins(11, 11, 11, 11);
- verticalLayout_17->setObjectName(QStringLiteral("verticalLayout_17"));
- verticalLayout_17->setContentsMargins(0, 6, 0, 0);
- serialDecodingModeSelect_CH2 = new QComboBox(serialDecodingCheck_CH2);
- serialDecodingModeSelect_CH2->setObjectName(QStringLiteral("serialDecodingModeSelect_CH2"));
-
- verticalLayout_17->addWidget(serialDecodingModeSelect_CH2);
-
-
- verticalLayout_16->addWidget(serialDecodingCheck_CH2);
-
-
- verticalLayout_3->addWidget(busSnifferGroup_CH2);
-
- digitalOutputGroup = new QGroupBox(centralWidget);
+ horizontalLayout_6 = new QHBoxLayout();
+ horizontalLayout_6->setSpacing(6);
+ horizontalLayout_6->setObjectName(QStringLiteral("horizontalLayout_6"));
+ digitalOutputGroup = new QGroupBox(page_4);
digitalOutputGroup->setObjectName(QStringLiteral("digitalOutputGroup"));
gridLayout_4 = new QGridLayout(digitalOutputGroup);
gridLayout_4->setSpacing(6);
@@ -1264,43 +1386,87 @@ public:
digitalOutCheckbox_CH3->raise();
digitalOutCheckbox_CH4->raise();
- verticalLayout_3->addWidget(digitalOutputGroup);
+ horizontalLayout_6->addWidget(digitalOutputGroup);
- debugButton1 = new QPushButton(centralWidget);
- debugButton1->setObjectName(QStringLiteral("debugButton1"));
+ busSifferGroup_CH1 = new QGroupBox(page_4);
+ busSifferGroup_CH1->setObjectName(QStringLiteral("busSifferGroup_CH1"));
+ busSifferGroup_CH1->setCheckable(true);
+ busSifferGroup_CH1->setChecked(false);
+ verticalLayout_7 = new QVBoxLayout(busSifferGroup_CH1);
+ verticalLayout_7->setSpacing(6);
+ verticalLayout_7->setContentsMargins(11, 11, 11, 11);
+ verticalLayout_7->setObjectName(QStringLiteral("verticalLayout_7"));
+ serialDecodingCheck_CH1 = new QGroupBox(busSifferGroup_CH1);
+ serialDecodingCheck_CH1->setObjectName(QStringLiteral("serialDecodingCheck_CH1"));
+ serialDecodingCheck_CH1->setFlat(true);
+ serialDecodingCheck_CH1->setCheckable(true);
+ serialDecodingCheck_CH1->setChecked(false);
+ verticalLayout_6 = new QVBoxLayout(serialDecodingCheck_CH1);
+ verticalLayout_6->setSpacing(0);
+ verticalLayout_6->setContentsMargins(11, 11, 11, 11);
+ verticalLayout_6->setObjectName(QStringLiteral("verticalLayout_6"));
+ verticalLayout_6->setContentsMargins(0, 6, 0, 0);
+ serialDecodingModeSelect_CH1 = new QComboBox(serialDecodingCheck_CH1);
+ serialDecodingModeSelect_CH1->setObjectName(QStringLiteral("serialDecodingModeSelect_CH1"));
- verticalLayout_3->addWidget(debugButton1);
-
- debugButton2 = new QPushButton(centralWidget);
- debugButton2->setObjectName(QStringLiteral("debugButton2"));
-
- verticalLayout_3->addWidget(debugButton2);
-
- debugButton3 = new QPushButton(centralWidget);
- debugButton3->setObjectName(QStringLiteral("debugButton3"));
-
- verticalLayout_3->addWidget(debugButton3);
-
- bufferDisplay = new bufferControl(centralWidget);
- bufferDisplay->setObjectName(QStringLiteral("bufferDisplay"));
- bufferDisplay->setMinimumSize(QSize(96, 36));
- bufferDisplay->setMaximumSize(QSize(96, 36));
- bufferDisplay->setAlignment(Qt::AlignCenter);
-
- verticalLayout_3->addWidget(bufferDisplay);
+ verticalLayout_6->addWidget(serialDecodingModeSelect_CH1);
- verticalLayout_18->addLayout(verticalLayout_3);
+ verticalLayout_7->addWidget(serialDecodingCheck_CH1);
- horizontalLayout->addLayout(verticalLayout_18);
+ horizontalLayout_6->addWidget(busSifferGroup_CH1);
+
+ busSnifferGroup_CH2 = new QGroupBox(page_4);
+ busSnifferGroup_CH2->setObjectName(QStringLiteral("busSnifferGroup_CH2"));
+ busSnifferGroup_CH2->setEnabled(false);
+ busSnifferGroup_CH2->setCheckable(true);
+ busSnifferGroup_CH2->setChecked(false);
+ verticalLayout_16 = new QVBoxLayout(busSnifferGroup_CH2);
+ verticalLayout_16->setSpacing(6);
+ verticalLayout_16->setContentsMargins(11, 11, 11, 11);
+ verticalLayout_16->setObjectName(QStringLiteral("verticalLayout_16"));
+ serialDecodingCheck_CH2 = new QGroupBox(busSnifferGroup_CH2);
+ serialDecodingCheck_CH2->setObjectName(QStringLiteral("serialDecodingCheck_CH2"));
+ serialDecodingCheck_CH2->setFlat(true);
+ serialDecodingCheck_CH2->setCheckable(true);
+ serialDecodingCheck_CH2->setChecked(false);
+ verticalLayout_17 = new QVBoxLayout(serialDecodingCheck_CH2);
+ verticalLayout_17->setSpacing(0);
+ verticalLayout_17->setContentsMargins(11, 11, 11, 11);
+ verticalLayout_17->setObjectName(QStringLiteral("verticalLayout_17"));
+ verticalLayout_17->setContentsMargins(0, 6, 0, 0);
+ serialDecodingModeSelect_CH2 = new QComboBox(serialDecodingCheck_CH2);
+ serialDecodingModeSelect_CH2->setObjectName(QStringLiteral("serialDecodingModeSelect_CH2"));
+
+ verticalLayout_17->addWidget(serialDecodingModeSelect_CH2);
+
+
+ verticalLayout_16->addWidget(serialDecodingCheck_CH2);
+
+
+ horizontalLayout_6->addWidget(busSnifferGroup_CH2);
+
+
+ verticalLayout_3->addLayout(horizontalLayout_6);
+
+ pause_LA = new QCheckBox(page_4);
+ pause_LA->setObjectName(QStringLiteral("pause_LA"));
+ pause_LA->setEnabled(true);
+
+ verticalLayout_3->addWidget(pause_LA);
+
+ stackedWidget->addWidget(page_4);
+
+ verticalLayout_5->addWidget(stackedWidget);
MainWindow->setCentralWidget(centralWidget);
+ scopeAxes->raise();
+ deviceConnected->raise();
+ stackedWidget->raise();
menuBar = new QMenuBar(MainWindow);
menuBar->setObjectName(QStringLiteral("menuBar"));
- menuBar->setGeometry(QRect(0, 0, 1440, 21));
- menuFile = new QMenu(menuBar);
- menuFile->setObjectName(QStringLiteral("menuFile"));
+ menuBar->setGeometry(QRect(0, 0, 720, 21));
menuOscilloscope_2 = new QMenu(menuBar);
menuOscilloscope_2->setObjectName(QStringLiteral("menuOscilloscope_2"));
menuGain_2 = new QMenu(menuOscilloscope_2);
@@ -1317,7 +1483,6 @@ public:
menuMultimeter_2->setObjectName(QStringLiteral("menuMultimeter_2"));
menuV_2 = new QMenu(menuMultimeter_2);
menuV_2->setObjectName(QStringLiteral("menuV_2"));
- menuV_2->setGeometry(QRect(0, 0, 135, 116));
menuI_2 = new QMenu(menuMultimeter_2);
menuI_2->setObjectName(QStringLiteral("menuI_2"));
menuRange_R = new QMenu(menuMultimeter_2);
@@ -1330,6 +1495,8 @@ public:
menuUART_1->setObjectName(QStringLiteral("menuUART_1"));
menuBaud_Rate = new QMenu(menuUART_1);
menuBaud_Rate->setObjectName(QStringLiteral("menuBaud_Rate"));
+ menuType_Here_2 = new QMenu(menuUART_1);
+ menuType_Here_2->setObjectName(QStringLiteral("menuType_Here_2"));
menuParity_Bit = new QMenu(menuUART_1);
menuParity_Bit->setObjectName(QStringLiteral("menuParity_Bit"));
menuData_Bits = new QMenu(menuUART_1);
@@ -1342,20 +1509,17 @@ public:
menuData_Bits_2->setObjectName(QStringLiteral("menuData_Bits_2"));
menuParity_Bit_2 = new QMenu(menuUART_2);
menuParity_Bit_2->setObjectName(QStringLiteral("menuParity_Bit_2"));
- menuPower_Supply = new QMenu(menuBar);
- menuPower_Supply->setObjectName(QStringLiteral("menuPower_Supply"));
+ menuAndroid_Special = new QMenu(menuBar);
+ menuAndroid_Special->setObjectName(QStringLiteral("menuAndroid_Special"));
menuConnection_Type = new QMenu(menuBar);
menuConnection_Type->setObjectName(QStringLiteral("menuConnection_Type"));
MainWindow->setMenuBar(menuBar);
- menuBar->addAction(menuFile->menuAction());
menuBar->addAction(menuOscilloscope_2->menuAction());
menuBar->addAction(menuMultimeter_2->menuAction());
menuBar->addAction(menuBus_Sniffer->menuAction());
- menuBar->addAction(menuPower_Supply->menuAction());
+ menuBar->addAction(menuAndroid_Special->menuAction());
menuBar->addAction(menuConnection_Type->menuAction());
- menuFile->addAction(actionRecord);
- menuFile->addAction(actionTake_Snapshot);
menuOscilloscope_2->addAction(menuRange->menuAction());
menuOscilloscope_2->addSeparator();
menuOscilloscope_2->addAction(menuFrame_rate->menuAction());
@@ -1416,6 +1580,7 @@ public:
menuUART_1->addAction(menuBaud_Rate->menuAction());
menuUART_1->addAction(menuParity_Bit->menuAction());
menuUART_1->addAction(menuData_Bits->menuAction());
+ menuUART_1->addAction(menuType_Here_2->menuAction());
menuBaud_Rate->addAction(action300);
menuBaud_Rate->addAction(action600);
menuBaud_Rate->addAction(action1200);
@@ -1447,7 +1612,7 @@ public:
menuBaud_Rate_2->addAction(action115200_2);
menuData_Bits_2->addAction(action8_2);
menuParity_Bit_2->addAction(actionNone_2);
- menuPower_Supply->addAction(actionAuto_Lock);
+ menuAndroid_Special->addAction(actionOld_Person_Mode);
menuConnection_Type->addAction(actionLo_bw);
menuConnection_Type->addAction(actionSingle_ep_msync);
menuConnection_Type->addAction(actionSingle_ep_async);
@@ -1517,8 +1682,6 @@ public:
QObject::connect(controller_iso, SIGNAL(sendMultimeterLabel3(QString)), multimeterMeanLabel, SLOT(setText(QString)));
QObject::connect(serialDecodingCheck_CH1, SIGNAL(toggled(bool)), controller_iso, SLOT(setSerialDecodeEnabled_CH1(bool)));
QObject::connect(serialDecodingCheck_CH2, SIGNAL(toggled(bool)), controller_iso, SLOT(setSerialDecodeEnabled_CH2(bool)));
- QObject::connect(serialDecodingCheck_CH1, SIGNAL(toggled(bool)), console1, SLOT(setVisible(bool)));
- QObject::connect(serialDecodingCheck_CH2, SIGNAL(toggled(bool)), console2, SLOT(setVisible(bool)));
QObject::connect(controller_iso, SIGNAL(changeTimeAxis(bool)), MainWindow, SLOT(timeBaseNeedsChanging(bool)));
QObject::connect(xyDisplayLabel, SIGNAL(toggled(bool)), controller_iso, SLOT(setXYmode(bool)));
QObject::connect(busSnifferGroup_CH2, SIGNAL(toggled(bool)), signalGenGroup_CH2, SLOT(setDisabled(bool)));
@@ -1550,12 +1713,9 @@ public:
QObject::connect(frequencyValue_CH1, SIGNAL(valueChanged(double)), frequencyValue_CH1, SLOT(changeStepping(double)));
QObject::connect(frequencyValue_CH2, SIGNAL(valueChanged(double)), frequencyValue_CH2, SLOT(changeStepping(double)));
QObject::connect(debugButton2, SIGNAL(clicked()), MainWindow, SLOT(reinitUsb()));
- QObject::connect(multimeterRComboBox, SIGNAL(currentIndexChanged(int)), MainWindow, SLOT(rSourceIndexChanged(int)));
- QObject::connect(controller_iso, SIGNAL(multimeterREnabled(int)), MainWindow, SLOT(rSourceIndexChanged(int)));
- QObject::connect(controller_iso, SIGNAL(multimeterRMS(double)), multimeterRmsDisplay, SLOT(display(double)));
- QObject::connect(controller_iso, SIGNAL(sendMultimeterLabel4(QString)), multimeterRmsLabel, SLOT(setText(QString)));
- QObject::connect(multimeterRComboBox, SIGNAL(currentIndexChanged(int)), controller_iso, SLOT(rSourceChanged(int)));
- QObject::connect(multimeterGroup, SIGNAL(toggled(bool)), MainWindow, SLOT(multimeterStateChange(bool)));
+
+ stackedWidget->setCurrentIndex(1);
+
QMetaObject::connectSlotsByName(MainWindow);
} // setupUi
@@ -1572,7 +1732,7 @@ public:
actionGain16->setText(QApplication::translate("MainWindow", "16", Q_NULLPTR));
actionGain32->setText(QApplication::translate("MainWindow", "32", Q_NULLPTR));
actionGain64->setText(QApplication::translate("MainWindow", "64", Q_NULLPTR));
- actionCalibrate->setText(QApplication::translate("MainWindow", "Calibrate", Q_NULLPTR));
+ actionCalibrate->setText(QApplication::translate("MainWindow", "Calibrate (coming soon!)", Q_NULLPTR));
actionCursor_Stats->setText(QApplication::translate("MainWindow", "Cursor Stats", Q_NULLPTR));
actionMax->setText(QApplication::translate("MainWindow", "Max", Q_NULLPTR));
actionMin->setText(QApplication::translate("MainWindow", "Min", Q_NULLPTR));
@@ -1629,6 +1789,7 @@ public:
actionSnap_to_Cursors->setText(QApplication::translate("MainWindow", "Snap to Cursors", Q_NULLPTR));
actionEnter_Manually->setText(QApplication::translate("MainWindow", "Enter Manually", Q_NULLPTR));
actionTake_Snapshot->setText(QApplication::translate("MainWindow", "Take Snapshot", Q_NULLPTR));
+ actionOld_Person_Mode->setText(QApplication::translate("MainWindow", "Old Person Mode", Q_NULLPTR));
actionAutoR->setText(QApplication::translate("MainWindow", "Auto", Q_NULLPTR));
actionOhm->setText(QApplication::translate("MainWindow", "\316\251", Q_NULLPTR));
actionKOhm->setText(QApplication::translate("MainWindow", "k\316\251", Q_NULLPTR));
@@ -1638,11 +1799,8 @@ public:
actionLo_bw->setText(QApplication::translate("MainWindow", "lo-bw", Q_NULLPTR));
actionSingle_ep_msync->setText(QApplication::translate("MainWindow", "single-ep-msync", Q_NULLPTR));
actionSingle_ep_async->setText(QApplication::translate("MainWindow", "single-ep-async", Q_NULLPTR));
- cursorStatsLabel->setText(QApplication::translate("MainWindow", "cursorStatsLabel", Q_NULLPTR));
- controller_fg->setText(QApplication::translate("MainWindow", "SALUTON MI ESTAS FUNCTION GENERATOR CONTROLLER", Q_NULLPTR));
deviceConnected->setText(QApplication::translate("MainWindow", "Device Not Connected!", Q_NULLPTR));
scopeGroup_CH1->setTitle(QApplication::translate("MainWindow", "Oscilloscope CH1", Q_NULLPTR));
- pausedLabeL_CH1->setText(QApplication::translate("MainWindow", "Paused", Q_NULLPTR));
acCoupledLabel_CH1->setText(QApplication::translate("MainWindow", "AC Coupled", Q_NULLPTR));
filterLabel_CH1->setText(QApplication::translate("MainWindow", "Filter", Q_NULLPTR));
doubleSampleLabel->setText(QApplication::translate("MainWindow", "Double Sample Rate", Q_NULLPTR));
@@ -1650,12 +1808,13 @@ public:
voltageInfoMinLabel_CH1->setText(QApplication::translate("MainWindow", " Min", Q_NULLPTR));
VoltageInfoMeanLabel_CH1->setText(QApplication::translate("MainWindow", " Mean", Q_NULLPTR));
voltageInfoRmsLabel_CH1->setText(QApplication::translate("MainWindow", " RMS", Q_NULLPTR));
- cursorGroup->setTitle(QApplication::translate("MainWindow", "Cursor", Q_NULLPTR));
+ cursorGroup->setTitle(QApplication::translate("MainWindow", "Cursor/Scaling", Q_NULLPTR));
cursorHoriCheck->setText(QApplication::translate("MainWindow", "Horizontal", Q_NULLPTR));
- cursorVertCheck->setText(QApplication::translate("MainWindow", "Vertical", Q_NULLPTR));
makeCursorsNicer->setText(QApplication::translate("MainWindow", "CURSOR ENABLER", Q_NULLPTR));
+ cursorVertCheck->setText(QApplication::translate("MainWindow", "Vertical", Q_NULLPTR));
+ scaleHoriCheck->setText(QApplication::translate("MainWindow", "H-Scale", Q_NULLPTR));
+ scaleVertCheck->setText(QApplication::translate("MainWindow", "V-Scale", Q_NULLPTR));
scopeGroup_CH2->setTitle(QApplication::translate("MainWindow", "Oscilloscope CH2", Q_NULLPTR));
- pausedLabel_CH2->setText(QApplication::translate("MainWindow", "Paused", Q_NULLPTR));
acCoupledLabel_CH2->setText(QApplication::translate("MainWindow", "AC Coupled", Q_NULLPTR));
filterLabel_CH2->setText(QApplication::translate("MainWindow", "Filter", Q_NULLPTR));
xyDisplayLabel->setText(QApplication::translate("MainWindow", "X-Y Display", Q_NULLPTR));
@@ -1672,28 +1831,8 @@ public:
<< QApplication::translate("MainWindow", "CH2 (Falling)", Q_NULLPTR)
);
singleShotCheckBox->setText(QApplication::translate("MainWindow", "Single Shot", Q_NULLPTR));
- multimeterGroup->setTitle(QApplication::translate("MainWindow", "Multimeter++", Q_NULLPTR));
- multimeterModeSelect->clear();
- multimeterModeSelect->insertItems(0, QStringList()
- << QApplication::translate("MainWindow", "V", Q_NULLPTR)
- << QApplication::translate("MainWindow", "I", Q_NULLPTR)
- << QApplication::translate("MainWindow", "R", Q_NULLPTR)
- << QApplication::translate("MainWindow", "C", Q_NULLPTR)
- );
- multimeterMaxLabel->setText(QApplication::translate("MainWindow", " Max", Q_NULLPTR));
- multimeterMinLabel->setText(QApplication::translate("MainWindow", " Min", Q_NULLPTR));
- multimeterMeanLabel->setText(QApplication::translate("MainWindow", " Mean", Q_NULLPTR));
- multimeterRmsLabel->setText(QApplication::translate("MainWindow", " RMS", Q_NULLPTR));
- multimeterPauseCheckBox->setText(QApplication::translate("MainWindow", "Paused", Q_NULLPTR));
- multimeterResistanceLabel->setText(QApplication::translate("MainWindow", "Series Resistance", Q_NULLPTR));
- multimeterModeLabel->setText(QApplication::translate("MainWindow", "Mode", Q_NULLPTR));
- multimeterResistanceSelect->setSuffix(QApplication::translate("MainWindow", "\316\251", Q_NULLPTR));
- multimeterRComboBox->clear();
- multimeterRComboBox->insertItems(0, QStringList()
- << QApplication::translate("MainWindow", "Signal Gen CH2", Q_NULLPTR)
- << QApplication::translate("MainWindow", "Power Supply", Q_NULLPTR)
- );
- multimeterRLabel->setText(QApplication::translate("MainWindow", "Source", Q_NULLPTR));
+ pausedLabel_CH2->setText(QApplication::translate("MainWindow", "Paused", Q_NULLPTR));
+ pausedLabeL_CH1->setText(QApplication::translate("MainWindow", "Paused", Q_NULLPTR));
signalGenGroup_CH1->setTitle(QApplication::translate("MainWindow", "Signal Gen CH1", Q_NULLPTR));
waveformLabel_CH1->setText(QApplication::translate("MainWindow", "Waveform", Q_NULLPTR));
frequencyLabel_CH1->setText(QApplication::translate("MainWindow", "Frequency", Q_NULLPTR));
@@ -1708,11 +1847,37 @@ public:
amplitudeValue_CH2->setSuffix(QApplication::translate("MainWindow", "V", Q_NULLPTR));
dcOffsetLabel_CH2->setText(QApplication::translate("MainWindow", "Offset", Q_NULLPTR));
dcOffsetValue_CH2->setSuffix(QApplication::translate("MainWindow", "V", Q_NULLPTR));
- controller_iso->setText(QApplication::translate("MainWindow", "SALUTON MI ESTAS ISO DRIVER", Q_NULLPTR));
+ multimeterGroup->setTitle(QApplication::translate("MainWindow", "Multimeter++", Q_NULLPTR));
+ multimeterModeLabel->setText(QApplication::translate("MainWindow", "Mode", Q_NULLPTR));
+ multimeterModeSelect->clear();
+ multimeterModeSelect->insertItems(0, QStringList()
+ << QApplication::translate("MainWindow", "V", Q_NULLPTR)
+ << QApplication::translate("MainWindow", "I", Q_NULLPTR)
+ << QApplication::translate("MainWindow", "R", Q_NULLPTR)
+ << QApplication::translate("MainWindow", "C", Q_NULLPTR)
+ );
+ multimeterResistanceLabel->setText(QApplication::translate("MainWindow", "Series Resistance", Q_NULLPTR));
+ multimeterResistanceSelect->setSuffix(QApplication::translate("MainWindow", "\316\251", Q_NULLPTR));
+ multimeterMaxLabel->setText(QApplication::translate("MainWindow", " Max", Q_NULLPTR));
+ multimeterMinLabel->setText(QApplication::translate("MainWindow", " Min", Q_NULLPTR));
+ multimeterMeanLabel->setText(QApplication::translate("MainWindow", " Mean", Q_NULLPTR));
+ multimeterRmsLabel->setText(QApplication::translate("MainWindow", " RMS", Q_NULLPTR));
+ multimeterPauseCheckBox->setText(QApplication::translate("MainWindow", "Paused", Q_NULLPTR));
psuGroup->setTitle(QApplication::translate("MainWindow", "PSU", Q_NULLPTR));
lockPsuCheckBox->setText(QApplication::translate("MainWindow", "Lock PSU", Q_NULLPTR));
+ controller_fg->setText(QApplication::translate("MainWindow", "SALUTON MI ESTAS FUNCTION GENERATOR CONTROLLER", Q_NULLPTR));
+ bufferDisplay->setText(QApplication::translate("MainWindow", "BUFFER IMAGE HERE", Q_NULLPTR));
+ cursorStatsLabel->setText(QApplication::translate("MainWindow", "cursorStatsLabel", Q_NULLPTR));
+ debugButton3->setText(QApplication::translate("MainWindow", "Jump to Bootloader", Q_NULLPTR));
+ debugButton1->setText(QApplication::translate("MainWindow", "Debug!", Q_NULLPTR));
+ debugButton2->setText(QApplication::translate("MainWindow", "ReinitUsb()", Q_NULLPTR));
+ controller_iso->setText(QApplication::translate("MainWindow", "SALUTON MI ESTAS ISO DRIVER", Q_NULLPTR));
+ digitalOutputGroup->setTitle(QApplication::translate("MainWindow", "Digital Output", Q_NULLPTR));
+ digitalOutCheckbox_CH3->setText(QApplication::translate("MainWindow", "Pin 3", Q_NULLPTR));
+ digitalOutCheckbox_CH2->setText(QApplication::translate("MainWindow", "Pin 2", Q_NULLPTR));
+ digitalOutCheckbox_CH1->setText(QApplication::translate("MainWindow", "Pin 1", Q_NULLPTR));
+ digitalOutCheckbox_CH4->setText(QApplication::translate("MainWindow", "Pin 4", Q_NULLPTR));
busSifferGroup_CH1->setTitle(QApplication::translate("MainWindow", "Logic Analyzer CH1", Q_NULLPTR));
- pause_LA->setText(QApplication::translate("MainWindow", "Pause", Q_NULLPTR));
serialDecodingCheck_CH1->setTitle(QApplication::translate("MainWindow", "Serial Decoding", Q_NULLPTR));
serialDecodingModeSelect_CH1->clear();
serialDecodingModeSelect_CH1->insertItems(0, QStringList()
@@ -1728,16 +1893,7 @@ public:
<< QApplication::translate("MainWindow", "SPI", Q_NULLPTR)
<< QApplication::translate("MainWindow", "I2C", Q_NULLPTR)
);
- digitalOutputGroup->setTitle(QApplication::translate("MainWindow", "Digital Output", Q_NULLPTR));
- digitalOutCheckbox_CH3->setText(QApplication::translate("MainWindow", "Pin 3", Q_NULLPTR));
- digitalOutCheckbox_CH2->setText(QApplication::translate("MainWindow", "Pin 2", Q_NULLPTR));
- digitalOutCheckbox_CH1->setText(QApplication::translate("MainWindow", "Pin 1", Q_NULLPTR));
- digitalOutCheckbox_CH4->setText(QApplication::translate("MainWindow", "Pin 4", Q_NULLPTR));
- debugButton1->setText(QApplication::translate("MainWindow", "Debug!", Q_NULLPTR));
- debugButton2->setText(QApplication::translate("MainWindow", "ReinitUsb()", Q_NULLPTR));
- debugButton3->setText(QApplication::translate("MainWindow", "Jump to Bootloader", Q_NULLPTR));
- bufferDisplay->setText(QApplication::translate("MainWindow", "BUFFER IMAGE HERE", Q_NULLPTR));
- menuFile->setTitle(QApplication::translate("MainWindow", "File", Q_NULLPTR));
+ pause_LA->setText(QApplication::translate("MainWindow", "Paused", Q_NULLPTR));
menuOscilloscope_2->setTitle(QApplication::translate("MainWindow", "Oscilloscope", Q_NULLPTR));
menuGain_2->setTitle(QApplication::translate("MainWindow", "Gain", Q_NULLPTR));
menuCH1_Stats->setTitle(QApplication::translate("MainWindow", "CH1 Stats", Q_NULLPTR));
@@ -1752,13 +1908,14 @@ public:
menuBus_Sniffer->setTitle(QApplication::translate("MainWindow", "Logic Analyzer", Q_NULLPTR));
menuUART_1->setTitle(QApplication::translate("MainWindow", "UART 1", Q_NULLPTR));
menuBaud_Rate->setTitle(QApplication::translate("MainWindow", "Baud Rate", Q_NULLPTR));
+ menuType_Here_2->setTitle(QApplication::translate("MainWindow", "Type Here", Q_NULLPTR));
menuParity_Bit->setTitle(QApplication::translate("MainWindow", "Parity Bit", Q_NULLPTR));
menuData_Bits->setTitle(QApplication::translate("MainWindow", "Data Bits", Q_NULLPTR));
menuUART_2->setTitle(QApplication::translate("MainWindow", "UART 2", Q_NULLPTR));
menuBaud_Rate_2->setTitle(QApplication::translate("MainWindow", "Baud Rate", Q_NULLPTR));
menuData_Bits_2->setTitle(QApplication::translate("MainWindow", "Data Bits", Q_NULLPTR));
menuParity_Bit_2->setTitle(QApplication::translate("MainWindow", "Parity Bit", Q_NULLPTR));
- menuPower_Supply->setTitle(QApplication::translate("MainWindow", "Power Supply", Q_NULLPTR));
+ menuAndroid_Special->setTitle(QApplication::translate("MainWindow", "Android Special", Q_NULLPTR));
menuConnection_Type->setTitle(QApplication::translate("MainWindow", "Connection Type", Q_NULLPTR));
} // retranslateUi
diff --git a/Desktop_Interface/unixusbdriver.cpp b/Desktop_Interface/unixusbdriver.cpp
index c93a1ed0..ee2f8810 100644
--- a/Desktop_Interface/unixusbdriver.cpp
+++ b/Desktop_Interface/unixusbdriver.cpp
@@ -1,9 +1,5 @@
#include "unixusbdriver.h"
#include "platformspecific.h"
-extern "C"
-{
- #include "libdfuprog.h"
-}
unixUsbDriver::unixUsbDriver(QWidget *parent) : genericUsbDriver(parent)
{
@@ -97,7 +93,7 @@ void unixUsbDriver::usbSendControl(uint8_t RequestType, uint8_t Request, uint16_
if(error){
qDebug("unixUsbDriver::usbSendControl FAILED with error %s", libusb_error_name(error));
} //else qDebug() << "unixUsbDriver::usbSendControl SUCCESS";
- if(error == LIBUSB_ERROR_NO_DEVICE){
+ if((error == LIBUSB_ERROR_NO_DEVICE) && (Request!=0xa7)){ //Bootloader Jump won't return; this is expected behaviour.
qDebug() << "Device not found. Becoming an hero.";
connectedStatus(false);
killMe();
diff --git a/Desktop_Interface/unixusbdriver.h b/Desktop_Interface/unixusbdriver.h
index 380efd21..2b70baa0 100644
--- a/Desktop_Interface/unixusbdriver.h
+++ b/Desktop_Interface/unixusbdriver.h
@@ -8,6 +8,10 @@
#include "genericusbdriver.h"
#include "libusb.h"
+extern "C"
+{
+ #include "libdfuprog.h"
+}
#define MAX_ALLOWABLE_CUMULATIVE_FRAME_ERROR 50
diff --git a/Desktop_Interface/unixusbdriver.obj b/Desktop_Interface/unixusbdriver.obj
new file mode 100644
index 00000000..9ba8f0eb
Binary files /dev/null and b/Desktop_Interface/unixusbdriver.obj differ
diff --git a/Desktop_Interface/voltagespinbox.obj b/Desktop_Interface/voltagespinbox.obj
new file mode 100644
index 00000000..34772956
Binary files /dev/null and b/Desktop_Interface/voltagespinbox.obj differ