From 140fe56ee7d3912b1d35d2c85ed2769f15572a08 Mon Sep 17 00:00:00 2001 From: Nathan Seidle Date: Thu, 14 Oct 2021 14:58:11 -0600 Subject: [PATCH] Add binaries and bootload tools. --- Binaries/OpenLog_v43.hex | 1703 +++ Binaries/OpenLog_v43_with_bootloader.hex | 1736 +++ Binaries/avrdude.conf | 16085 +++++++++++++++++++++ Binaries/avrdude.exe | Bin 0 -> 562688 bytes Binaries/batch_program.bat | 21 + Binaries/readme.md | 4 + 6 files changed, 19549 insertions(+) create mode 100644 Binaries/OpenLog_v43.hex create mode 100644 Binaries/OpenLog_v43_with_bootloader.hex create mode 100644 Binaries/avrdude.conf create mode 100644 Binaries/avrdude.exe create mode 100644 Binaries/batch_program.bat create mode 100644 Binaries/readme.md diff --git a/Binaries/OpenLog_v43.hex b/Binaries/OpenLog_v43.hex new file mode 100644 index 0000000..4a6fc99 --- /dev/null +++ b/Binaries/OpenLog_v43.hex @@ -0,0 +1,1703 @@ +:100000000C9442050C946A050C946A050C946A05DC +:100010000C946A050C946A050C946A050C946A05A4 +:100020000C946A050C946A050C946A050C946A0594 +:100030000C946A050C946A050C946A050C946A0584 +:100040000C94FE220C946A050C948B230C94482388 +:100050000C946A050C946A050C946A050C946A0564 +:100060000C946A050C946A05636172642E696E696A +:10007000740066696C652E6F70656E00726F6F74C8 +:100080002E696E697400766F6C756D652E696E6988 +:1000900074004572726F7220007E007E007E003C0C +:1000A00000626175642C6573636170652C657363B0 +:1000B000232C6D6F64652C766572622C6563686FA6 +:1000C0002C69676E6F726552582C6D617846696C49 +:1000D0006573697A652C6D617846696C656E756DBE +:1000E0000000256C642C25642C25642C25642C25AB +:1000F000642C25642C25642C25642C256400006365 +:100100006F6E6669672E74787400002000626175F6 +:10011000640909093A204D656E7520746F20636F7C +:100120006E666967757265206261756420726174BC +:1001300065007365740909093A204D656E75207470 +:100140006F20636F6E66696775726520737973746B +:10015000656D206D6F6465007265736574090909CA +:100160003A2043617573657320756E697420746FEE +:100170002072657365742C207573657320706172CD +:10018000616D657465727320696E20636F6E666958 +:10019000672066696C65006469736B0909093A2018 +:1001A00053686F7773206361726420696E666F7243 +:1001B0006D6174696F6E0073697A65203C66696C65 +:1001C000653E09093A2057726974652073697A653A +:1001D000206F66203C66696C653E20746F207465F4 +:1001E000726D696E616C0072656164203C66696C59 +:1001F000653E203C73746172743E203C6C656E6792 +:1002000074683E203C747970653E3A204F75747076 +:10021000757473203C6C656E6774683E20627974F7 +:100220006573206F66203C66696C653E20746F20A4 +:10023000746865207465726D696E616C2073746199 +:100240007274696E67206174203C73746172743ECD +:100250002E204F6D6974203C73746172743E20616E +:100260006E64203C6C656E6774683E20746F20720B +:100270006561642077686F6C652066696C652E2007 +:100280003C747970653E2031207072696E74732001 +:10029000696E2041534349492C203220696E204821 +:1002A00045582E006C730909093A2053686F77731B +:1002B0002074686520636F6E74656E74206F6620AD +:1002C0007468652063757272656E74206469726506 +:1002D00063746F72792E2E006D64203C64697265C0 +:1002E00063746F72793E09093A20437265617465DF +:1002F000732061203C6469726563746F72793E009B +:10030000617070656E64203C66696C653E09093AEF +:1003100020417070656E6473207465787420746F0A +:1003200020656E64206F66203C66696C653E006ED9 +:100330006577203C66696C653E09093A2043726521 +:1003400061746573203C66696C653E004261736947 +:100350006320636F6D6D616E64733A0043757272F2 +:10036000656E742046696C654E756D6265723A20E3 +:10037000004F70656E4C6F672076342E330000009E +:100380000000250028002B000000000023002600AC +:10039000290000000008000201000003040700001B +:1003A000000000000000636F6E6669672E74787449 +:1003B00000003200310021546F6F206D616E792092 +:1003C0006C6F67733A3221004C4F47253035752EDC +:1003D000545854004C4F47253035752E545854000E +:1003E00021546F6F206D616E79206C6F67733A31A5 +:1003F00021004572726F72206372656174696E6765 +:10040000205345514C4F47005345514C4F473030D6 +:100410002E545854000062707300476F696E672055 +:10042000746F20004F7574206F6620626F756E6464 +:10043000730045786974696E67003E00456E7465A7 +:1004400072206E6577206261756420726174652028 +:100450002827782720746F2065786974293A00204E +:10046000627073000A0D43757272656E742072615A +:1004700074653A200045786974696E67000A0D4D0D +:100480006178696D756D2066696C656E756D626504 +:100490007220696E20726F74617465206D6F64657F +:1004A0003A20000A0D456E746572206D6178696DA1 +:1004B000756D206C6F672066696C65206E756D6266 +:1004C000657220696E20726F74617465206D6F644F +:1004D0006520283020746F20323535293A20000AF3 +:1004E0000D4D6178206C6F672066696C65207369BB +:1004F0007A6520696E20726F74617465206D6F6417 +:1005000065206E6F7720284D42293A20000A0D455C +:100510006E746572206D61782073697A65206F66EC +:10052000206C6F672066696C657320696E204D4290 +:1005300020283020746F20323534293A20000A0DEB +:100540004E756D626572206F6620657363617065BC +:100550002063686172616374657273206E6565649F +:1005600065643A20000A0D456E746572206E756DE3 +:10057000626572206F6620657363617065206368D1 +:10058000617261637465727320746F206C6F6F6B3E +:1005900020666F7220283020746F20323535293A5A +:1005A00020000A0D4E6577206573636170652063D6 +:1005B00068617261637465723A2000456E74657299 +:1005C0002061206E657720657363617065206368C4 +:1005D000617261637465723A20004E6577206669C6 +:1005E0006C65206E756D626572207265736574202E +:1005F000746F207A65726F00526F74617465206C3D +:100600006F6767696E6700436F6D6D616E64207020 +:10061000726F6D707400417070656E642066696CF5 +:1006200065206C6F6767696E67004E657720666945 +:100630006C65206C6F6767696E67003E00782920E3 +:1006400045786974003929204D61782066696C65A8 +:10065000206E756D62657220696E20726F746174B0 +:1006600065206D6F6465003829204D6178206669CA +:100670006C652073697A6520284D422920696E20B7 +:10068000726F74617465206D6F6465003729204E48 +:10069000756D626572206F66206573636170652099 +:1006A00063686172616374657273003629204573F3 +:1006B000636170652063686172616374657200359F +:1006C00029205265736574206E65772066696C65B4 +:1006D000206E756D626572003429204D6F6465204F +:1006E000746F20726F74617465206C6F6767696ED8 +:1006F00067003329204D6F646520746F20636F6D30 +:100700006D616E642070726F6D7074003229204DBF +:100710006F646520746F20617070656E6420666917 +:100720006C65206C6F6767696E67003129204D6FBB +:10073000646520746F206E65772066696C65206C37 +:100740006F6767696E67004368616E67653A002C82 +:100750002000526F74617465206D6F6465206D6157 +:10076000782066696C652073697A6520284D422976 +:1007700020616E64206D61782066696C6520636F0E +:10078000756E743A20002078200043757272656E91 +:10079000742065736361706520636861726163745E +:1007A000657220616E6420616D6F756E743A200011 +:1007B000526F7461746500436F6D6D616E640041CA +:1007C0007070656E642066696C65004E65772066A2 +:1007D000696C650043757272656E7420626F6F7428 +:1007E000206D6F64653A20000D0A53797374656D4E +:1007F00020436F6E66696775726174696F6E00750C +:100800006E6B6E6F776E20636F6D6D616E643A20F4 +:10081000006F6666006F6E0065656D006F6666004E +:100820006F6E00766572626F7365006F6666006F4B +:100830006E006563686F005468697320636F6D6D47 +:10084000616E6420686173206265656E2072656DFB +:100850006F7665640070776400617070656E640027 +:100860004572726F72206372656174696E6720668B +:10087000696C653A20006E65770072657365740077 +:1008800073796E63007265616443534420666169E5 +:100890006C656400204D4200436172642053697AA4 +:1008A000653A20002F004D616E7566616374757244 +:1008B000696E6720646174653A20005365726961EE +:1008C0006C206E756D6265723A20002E000A0D561E +:1008D000657273696F6E3A200050726F647563744D +:1008E0003A20004F454D2049443A20004D616E7535 +:1008F00066616374757265722049443A20007265BE +:100900006164434944206661696C656400556E6B9F +:100910006E6F776E00534448430053443200534493 +:1009200031000A4361726420747970653A20006472 +:1009300069736B002D310073697A65006572726F9F +:10094000722077726974696E6720746F2066696CB3 +:1009500065003C004572726F72207365656B696E4D +:100960006720746F20004661696C656420746F2095 +:100970006F70656E2066696C6520007772697465BA +:100980000020002E004572726F72207365656B69DE +:100990006E6720746F20004661696C656420746F17 +:1009A000206F70656E2066696C65200072656164F9 +:1009B000002E2E006364002066696C652873292070 +:1009C00064656C65746564002D726600726D004527 +:1009D00072726F72206372656174696E67206469F8 +:1009E000726563746F72793A20006D6400566F6CA3 +:1009F000756D6520697320464154006C7300736502 +:100A00007400626175640068656C70003F0046693F +:100A10006C652073797374656D20696E69746961A2 +:100A20006C697A656400436C6F73696E6720646FEC +:100A3000776E2066696C652073797374656D0069E3 +:100A40006E6974003E0021000000000024002700B1 +:100A50002A0001020408102040800102040810202E +:100A60000102040810200404040404040404020223 +:100A700002020202030303030303200020002F00ED +:100A80002000073011241FBECFEFD8E0DEBFCDBF5E +:100A900011E0A0E0B1E0E4E2FAE602C005900D92B8 +:100AA000A832B107D9F725E0A8E2B1E001C01D9254 +:100AB000AC3EB207E1F715E0C2E4D5E004C02197EF +:100AC000FE010E94CF34C134D107C9F70E94F82338 +:100AD0000C9410350C9400002FB7F8948091E60523 +:100AE0009091E7054091E8055091E905841B950B2D +:100AF0002FBF97FF06C02091EA053091EB05820FCA +:100B0000931F0895CF92DF92EF92FF926B017C01C9 +:100B10001092C10086E08093C20060E079E08DE32E +:100B200090E0A70196010E94A234C901213060E241 +:100B3000360730F4C11461EED606E104F104B1F4D5 +:100B40001092C000C901969587950197292F269587 +:100B50002093C500969587958093C40088E980937B +:100B6000C100FF90EF90DF90CF90089522E0209396 +:100B7000C000EBCF833081F028F4813099F08230CF +:100B8000A9F008958730A9F08830C9F08430B1F415 +:100B9000809180008F7D03C0809180008F7780934B +:100BA0008000089584B58F7784BD089584B58F7DC6 +:100BB000FBCF8091B0008F778093B0000895809133 +:100BC000B0008F7DF9CFCF93DF93282F30E0F9016C +:100BD000EE56FC4F8491F901EE5AF54FD491F9018C +:100BE000EA59F54FC491CC23A1F081110E94BA05B6 +:100BF000EC2FF0E0EE0FFF1FE857FC4FA591B491EA +:100C0000EC91ED2381E090E009F480E0DF91CF9159 +:100C1000089580E090E0FACF1F93CF93DF93282FC1 +:100C200030E0F901EE56FC4F8491F901EE5AF54F90 +:100C3000D491F901EA59F54FC491CC23A9F0162FAC +:100C400081110E94BA05EC2FF0E0EE0FFF1FE25871 +:100C5000FC4FA591B4918FB7F894EC91111108C095 +:100C6000D095DE23DC938FBFDF91CF911F91089544 +:100C7000DE2BF8CFCF93DF9390E0FC01EE5AF54FD7 +:100C800024918A59954FFC0184918823D1F090E0FA +:100C9000880F991FFC01E85BF54FA591B491FC0109 +:100CA000E258FC4FC591D49161110EC09FB7F894E2 +:100CB0008C91E22FE0958E238C932881E223E883A8 +:100CC0009FBFDF91CF9108958FB7F894EC91E22BFD +:100CD000EC938FBFF6CF3FB7F89480916501909168 +:100CE0006601A0916701B091680126B5A89B05C077 +:100CF0002F3F19F00196A11DB11D3FBFBA2FA92F9B +:100D0000982F8827BC01CD01620F711D811D911D97 +:100D100042E0660F771F881F991F4A95D1F7089503 +:100D20008F929F92AF92BF92CF92DF92EF92FF92FB +:100D30004B015C010E946B066B017C010E946B06FB +:100D40006C197D098E099F09683E734081059105E4 +:100D5000A8F321E0821A9108A108B10888EEC80E14 +:100D600083E0D81EE11CF11C81149104A104B1049C +:100D700029F7FF90EF90DF90CF90BF90AF909F90BA +:100D80008F9008952FB7F89460916101709162017E +:100D900080916301909164012FBF0895CF93DF93F9 +:100DA000EC01E981FA8120819181809156018823AB +:100DB00061F08FB7F89430915601313099F43DB31A +:100DC000309355013DB33DBB8FBF2CBD9DBDE98127 +:100DD000FA8160E082810E940C0681E08B83DF91C2 +:100DE000CF91089580935501F0CF8EBD0DB407FECD +:100DF000FDCF08958FEF8EBD0DB407FEFDCF8EB5EC +:100E000008950F931F93CF93DF93EC010E94C206C6 +:100E10008B010E94FA068F3F69F00E94C206601B98 +:100E2000710BC617D707A8F780E0DF91CF911F910C +:100E30000F91089581E0F9CFCF93DF93FC012381D7 +:100E40002223D1F0EC010180F281E02D61E082816A +:100E50000E940C068FEF0E94F506809156018823B0 +:100E600051F09FB7F894209156018091550121309F +:100E700031F48DBB9FBF1B82DF91CF9108958FBF4F +:100E8000FACFCF92DF92EF92FF920F931F93CF93FF +:100E9000DF93EC018B017A010E94C2066B010E9474 +:100EA000FA068C838F3FB1F40E94C2066C197D094B +:100EB000693E7340A0F385E58883CE010E941C073C +:100EC00080E0DF91CF911F910F91FF90EF90DF9025 +:100ED000CF9008958E3F11F080E5EECFE1E0EE1A5D +:100EE000F1088FEF8EBDF8012FEF0DB407FEFDCF97 +:100EF0008EB52EBD8193CF01801B910B8E159F0562 +:100F0000A0F30DB407FEFDCF8EB50E0D1F1DF80129 +:100F100080831C820E94FA060E94FA0681E0D1CFEB +:100F2000DF92EF92FF920F931F93CF93DF938C0189 +:100F3000C62FD22FF32EE42ED52EFC0183818111F2 +:100F400003C0C8010E94CE06CC2321F08CE291E0C0 +:100F50000E9401078C2F80640E94F5068D2D0E944F +:100F6000F5068E2D0E94F5068F2D0E94F5068D2F19 +:100F70000E94F50687E8C11101C085E90E94F506C7 +:100F80000E94FA06CBE00E94FA06F801848387FFEC +:100F900002C0C150C1F7DF91CF911F910F91FF9017 +:100FA000EF90DF900895CF93DF93EB0120E030E0E6 +:100FB000A901682F8DEC93E00E949007882349F0E7 +:100FC00083E58093CD038DEC93E00E941C07C0E085 +:100FD0000EC040E150E0BE018DEC93E00E9441075D +:100FE000C82F882381F38DEC93E00E941C078C2F7F +:100FF000DF91CF9108950F931F93CF93DF93EC016F +:1010000089018D81833039F089E0440F551F661FB7 +:10101000771F8A95D1F79A01AB0168E1CE010E9452 +:101020009007882319F082E3888339C08EEF0E94ED +:10103000F506F80180818EBD818132961E5F0DB468 +:1010400007FEFDCF8EBDE017F10711F08191F7CFBC +:101050000DB407FEFDCF8FEF0E94F5068FEF0E94C3 +:10106000F5060E94FA068C838F71853099F480ED25 +:1010700097E00E940107182F8AE51123A9F220E0CA +:1010800030E0A9016DE0CE010E949007882361F055 +:1010900089E2CACF87E58883CE010E941C07CE0172 +:1010A0000E941C0710E007C00E94FA068111F0CFD1 +:1010B000CE010E941C07812FDF91CF911F910F91CC +:1010C00008950F931F93CF93DF93EC0189018D81D6 +:1010D000833039F089E0440F551F661F771F8A95CA +:1010E000D1F79A01AB0161E1CE010E9490078823FC +:1010F00039F080E38883CE010E941C0710E00CC009 +:1011000040E052E0B801CE010E944107182F882329 +:1011100091F3CE010E941C07812FDF91CF911F9187 +:101120000F910895EF92FF921F93CF93DF93FC01ED +:10113000208111E020FF14C0EC017C01F7E0EF0EEC +:10114000F11C4B815C816D817E81E981FA8197017F +:10115000808191810E94FB07182F811108C010E047 +:10116000812FDF91CF911F91FF90EF90089588819B +:1011700081FD04C088818E7F8883F2CFE981FA8166 +:101180004B815C816D817E8184859585A685B7853F +:10119000480F591F6A1F7B1F9701808191810E9410 +:1011A000FB078111E7CFDBCFCF92DF92EF92FF9267 +:1011B0001F93CF93DF93EC016A017B01122F8B8188 +:1011C0009C81AD81BE818C159D05AE05BF05B1F03A +:1011D000CE010E94920881110AC090E080E0DF9168 +:1011E000CF911F91FF90EF90DF90CF90089512FF65 +:1011F0000CC01882CB82DC82ED82FE821370888163 +:10120000182B1883CE010796EACFE981FA819E0157 +:10121000295F3F4FB701A601808191810E9461083B +:101220008111E7CFDACF8F929F92AF92BF92CF9288 +:10123000DF92EF92FF920F931F9310928B0141E088 +:1012400050E060E070E040938E0150938F01609316 +:1012500090017093910126E831E03093A80120932A +:10126000A7011092A6014FEF5FEFBA014093A901C9 +:101270005093AA016093AB017093AC01882309F4E9 +:1012800050C020E040E050E0BA0186EA91E00E94C0 +:10129000D408009761F480E01F910F91FF90EF90C8 +:1012A000DF90CF90BF90AF909F908F900895FC01FA +:1012B000E254FE4F20812F7771F78A539E4FFC0135 +:1012C000C080D180E280F380C114D104E104F10434 +:1012D00011F320E0B701A60186EA91E00E94D4084C +:1012E000FC01892BC1F2838594858115924099F682 +:1012F0008089823081F686859785892B61F22585E4 +:10130000209388018FEF820F8093890180E091E024 +:10131000291769F08F5F893041F488E080938A0152 +:10132000BACFC12CD12C7601D4CF990FF1CF8093B5 +:101330008A014689578970E060E04115510521F422 +:1013400044A155A166A177A14093920150939301C6 +:101350006093940170939501268537854601570166 +:10136000820E931EA11CB11C80929A0190929B0147 +:10137000A0929C01B0929D012189328930938D0108 +:1013800020938C01440F551F661F771F480D591D70 +:101390006A1D7B1D4093A2015093A3016093A40199 +:1013A0007093A50121893289A5E0220F331FAA95E8 +:1013B000E1F721503E4F232F33272695420F531F2D +:1013C000611D711D409396015093970160939801A0 +:1013D000709399010389148930E020E0011511050B +:1013E00021F400A111A122A133A1C41AD50AE60A51 +:1013F000F70AC00ED11EE21EF31E04C0F694E79455 +:10140000D794C7948A95D2F7D701C6010196A11D3A +:10141000B11D80939E0190939F01A093A001B09372 +:10142000A10185EFC8168FE0D806E104F10420F48D +:101430008CE080938B012FCF80E125EFC2162FEF38 +:10144000D206E104F10468F084A595A5A6A5B7A588 +:101450008093A2019093A301A093A401B093A5014E +:1014600080E280938B0181E017CF8F929F92AF92A1 +:10147000BF92CF92DF92EF92FF920F931F93423071 +:1014800051056105710560F480E01F910F91FF9097 +:10149000EF90DF90CF90BF90AF909F908F90089586 +:1014A000FC01C08CD18CE28CF38CC416D506E60608 +:1014B000F70650F3480159016A017B0185818032AA +:1014C00041F584899589A689B78917E0769567954E +:1014D000579547951A95D1F7480F591F6A1F7B1FDB +:1014E00023E0CF0180960E94D408009769F2E89427 +:1014F000C7F8DD24EE24FF24CC0CDD1CCC0CDD1C55 +:101500008C0D9D1DFC0180829182A282B38281E0BC +:10151000BCCF803109F0B8CF448955896689778975 +:101520004D0D511D611D711D23E0CF0180960E945C +:10153000D408009709F4A8CFDD24EE24FF24CC0CB6 +:10154000DD1CC80ED91EF60111830083E0CFCF92B7 +:10155000DF92EF92FF920F931F93CF93DF9342306E +:1015600051056105710550F48FEFDF91CF911F9107 +:101570000F91FF90EF90DF90CF900895FC01C08C09 +:10158000D18CE28CF38CC416D506E606F70660F320 +:1015900089016A017B01EC0185818032B9F584897A +:1015A0009589A689B789E7E0769567955795479518 +:1015B000EA95D1F7480F591F6A1F7B1F22E0CE0121 +:1015C00080960E94D408009779F2E894C7F8DD2449 +:1015D000EE24FF24CC0CDD1CCC0CDD1C8C0D9D1DE1 +:1015E000FC0180819181A281B381BF70488D598DAA +:1015F0006A8D7B8D481759076A077B0738F1F80118 +:1016000080839183A283B38381E0AFCF803109F0DF +:10161000ABCF44895589668977894D0D511D611D70 +:10162000711D22E0CF0180960E94D408009709F432 +:101630009BCFDD24EE24FF24CC0CDD1CC80ED91E6C +:10164000F60180819181B0E0A0E0D0CF80E08DCF25 +:101650009F92AF92BF92CF92DF92EF92FF920F9341 +:101660001F93CF93DF9300D000D0CDB7DEB75C01DE +:101670006A017B0119821A821B821C829E012F5FE4 +:101680003F4FB701A601C5010E94A70A982E87FD0A +:1016900034C000E010E09801B701A601C5010E9426 +:1016A000350A882351F1F50140855185628573859E +:1016B0004C155D056E057F0550F0F1E0CF1AD1089D +:1016C000E108F108F501C086D186E286F386C9807B +:1016D000DA80EB80FC809110D1CF0F900F900F90AB +:1016E0000F90DF91CF911F910F91FF90EF90DF90BE +:1016F000CF90BF90AF909F90089580E0EECFBF92C3 +:10170000CF92DF92EF92FF920F931F93CF93DF93CD +:10171000DB01FC019F012F5F3F4F8081803209F484 +:101720009EC01496FC93EE9313979F0189010E1BA4 +:101730001F0B722F632FE90189919E01882379F095 +:101740008F3209F08EC0CF01800F911F782F692F43 +:10175000EC012991CE012032C9F32F32B9F3EA010D +:1017600078836983E801CE0FDF1F8E010E1B1F0BEC +:10177000CE17DF0709F495C08A918E32B1F380321B +:10178000A1F30F3F110511F00CF06DC012961C93E0 +:101790000E931197ED012696CD01419620E22993F3 +:1017A0008C179D07E1F7EF019E012E1B3F0B8991DE +:1017B0008E32D1F38032C1F381E02115310509F079 +:1017C00080E0A80141505109EF01C00FD11F4F3FE8 +:1017D000540709F069C0F12C67E0B12C70E0D8E043 +:1017E000ED2E201731070CF0ACC06F01C20ED31ED6 +:1017F000E6019881903209F483C09E3221F42417C7 +:10180000350709F07DC0D92F9232E1F09C37D1F035 +:10181000C6EDDC2ED90EC5E0CD1510F09D3291F449 +:10182000C6ECDC2ED90EC5E0CD1560F4C5EADC2E81 +:10183000D90EC2E0CD1530F4CFEDDC2ED90ECDE5BA +:10184000CD15C8F52417350709F076C06A3009F4BC +:1018500077C06AE098E0B92EC0E1EC2E52C0F901E1 +:1018600059CF8C3559F480E0DF91CF911F910F91C2 +:10187000FF90EF90DF90CF90BF900895982F977FC3 +:10188000923289F38A3379F3982F9F7B9C3359F3F3 +:1018900092EC980F923038F380528F3508F446CF8F +:1018A000E2CF10E000E072CF9A919E3209F493CF1C +:1018B000415051098CCF2417350741F26B15F0F1D7 +:1018C000CFE9DC2ED90EC9E1CD1508F19052FE28E2 +:1018D000DD24D394DB0CED01CB0DD11D9E83D6E02E +:1018E000DD1518F01596DC921597BD2C0AC042172D +:1018F000530734F19A016AE0D8E0BD2E80E1E82E6A +:1019000080E02F5F3F4F6DCF80E09FE5DFE5D15452 +:10191000DA31F0F67E29DCCF81E08C9315966C915C +:101920001597A60FB11D8EE716968C93169781E337 +:1019300017968C9381E098CF6B1530F76A30B9F623 +:1019400080E016969C911697903209F48CCF8823EC +:1019500019F37F2111F0D2E0FD2EFC9285CFFC011E +:101960009C01255F3F4F80E080FB879587F991912F +:10197000890F2E173F07C1F708954F925F926F921C +:101980007F928F929F92AF92BF92CF92DF92EF920F +:10199000FF920F931F93CF93DF93EC014A015B01FA +:1019A0004C845D846E847F84A881AA2309F486C058 +:1019B000488959896A897B89481559056A057B05D3 +:1019C00069F081149104A104B10451F41C861D86B0 +:1019D0001E861F86888A998AAA8ABB8A81E073C07C +:1019E000A3FF59C0088D198D2A8D3B8D0815190547 +:1019F0002A053B0508F462C0EE81FF81848190E0F6 +:101A000009968A019B010150110921093109082E0B +:101A100004C036952795179507950A94D2F7750156 +:101A20006401B1E0CB1AD108E108F10804C0F694D2 +:101A3000E794D794C7948A95D2F7C016D106E206E8 +:101A4000F30628F0452B462B472B09F052C0A6FF82 +:101A50004BC0848D958DA68DB78D8C879D87AE8765 +:101A6000BF878E01045F1F4FC114D104E104F1044C +:101A700009F4B0CF4C855D856E857F8598018E8198 +:101A80009F810E94A70A91E0C91AD108E108F108D4 +:101A9000181654F313C0A5FFAFCFEE81FF818681E6 +:101AA000978125E0880F991F2A95E1F7B0E0A0E023 +:101AB00088159905AA05BB0508F08CCF4C865D8674 +:101AC0006E867F8680E0DF91CF911F910F91FF900E +:101AD000EF90DF90CF90BF90AF909F908F907F90CE +:101AE0006F905F904F9008958C8D9D8DAE8DBF8DC2 +:101AF000B4CFC01AD10AE20AF30AB3CFCF93DF936F +:101B0000DC01FC0190E048E080E05EE221912032BF +:101B1000D1F0983031F4EB01C80FD11D58838F5F9D +:101B200040E1EF01219728813FEB320F3A3130F449 +:101B30001C963C911C97342309F0205EEB01C80FE2 +:101B4000D11D28838F5F9F5F9B3001F7680F711D48 +:101B5000FB011082DF91CF910895CF93DF93EC01C9 +:101B6000262F4C895D896E897F898E819F81809621 +:101B70000E94D408009771F02C813D812F7033278B +:101B800045E0220F331F4A95E1F7820F931FDF9143 +:101B9000CF91089590E080E0FACFCF93DF93FC01DE +:101BA0002081211104C081E0DF91CF910895EC01E3 +:101BB000828182FF27C061E0CF010E94AD0DFC0150 +:101BC000892B29F489818160898380E0EDCF808130 +:101BD000853EC1F3888183FF08C0888D998DAA8DC9 +:101BE000BB8D848F958FA68FB78F8C8D9D8D938F96 +:101BF000828F8C8D9D8DAE8DBF8DB58BA48B8A8190 +:101C00008B7F8A838E819F8180960E949208882391 +:101C1000C9F2C9CFCF93DF93EC010E94CD0D18829A +:101C2000DF91CF9108953F924F925F926F927F9292 +:101C30008F929F92AF92BF92CF92DF92EF92FF92DC +:101C40000F931F93CF93DF9300D000D0CDB7DEB7B3 +:101C50004C01FC01828184608283A680B780448429 +:101C6000558466847784F501C084D184E284F3844A +:101C7000C414D504E604F70410F011E003C07301A6 +:101C8000620110E0FFEFCF1ADF0AEF0AFF0AF50149 +:101C9000808D918DA28DB38D8C159D05AE05BF05F0 +:101CA00038F4111131C0C084D184E284F384E5CFCB +:101CB0004C145D046E047F0439F19E012F5F3F4F89 +:101CC000B701A601C5010E94A70A87FD1DC0882390 +:101CD000C9F289819A81AB81BC81892B8A2B8B2B9C +:101CE00089F6112329F0F501C086D186E286F386B4 +:101CF0000FEF1FEF2FEF3FE0B701A601C5010E94D4 +:101D0000350A382E811118C0312C832D0F900F9079 +:101D10000F900F90DF91CF911F910F91FF90EF9057 +:101D2000DF90CF90BF90AF909F908F907F906F90FB +:101D30005F904F903F9008954114510461047104E5 +:101D400031F4F401C486D586E686F786DECF9701A6 +:101D50008601B301A201C5010E94350A8111F1CFAC +:101D6000D3CF9FB7F89480918201882319F08150D6 +:101D70008093820180918201811105C08CB58F7B97 +:101D80008CBD109256019FBF08952091E6053091B9 +:101D9000E7058091E8059091E9052817390769F072 +:101DA0008091E8059091E905E091E405F091E50561 +:101DB000E80FF91F808190E008958FEF9FEF08955D +:101DC0000895CF92DF92EF92FF920F931F93CF93DC +:101DD000DF937C018A01EB016B01C40ED51ECC158B +:101DE000DD0551F06991D701ED91FC910190F081F1 +:101DF000E02DC7010995F3CFC801DF91CF911F9165 +:101E00000F91FF90EF90DF90CF9008958091E805BB +:101E10009091E9052091E6053091E7058217930737 +:101E2000C9F09C012F5F3F4FE091E405F091E5057B +:101E3000E80FF91F80814091EA055091EB052417C6 +:101E4000350710F030E020E03093E9052093E805F5 +:101E500090E008958FEF9FEF08950C946C058091AA +:101E6000C00085FFFCCF6093C60081E090E008953C +:101E70000F931F93CF93DF938C01D0E0C0E0F80164 +:101E8000EC0FFD1F6491662341F086ED93E00E9404 +:101E90002F0F892B11F02196F2CFCE01DF91CF9138 +:101EA0001F910F910895682F86ED93E00C942F0FEA +:101EB000FF920F931F93CF93DF9310E000E0CFEFDB +:101EC000DFEF8AE0F82E0E946C05892BE1F386EDA6 +:101ED00093E00E94060F90ED980F9A3080F4F09EE8 +:101EE000E001F19ED00D11248053990BC80FD91F2A +:101EF0008E01CF3FD10539F334F3CFEFDFEFCE01C1 +:101F0000DF91CF911F910F91FF900895CF93C82F2C +:101F10000E94E30560E0892B09F461E08C2FCF91EA +:101F20000C940C06CF93DF939C01DB01F901EB01CC +:101F30008991BE01E90199919E01882361F19A324C +:101F400031F0891791F39F3381F380E02AC050E08C +:101F500040E030E020E008C0981711F08F33A9F47A +:101F6000CF0101961196FC019C918081992399F0F3 +:101F70008A3291F7CF01019621812223A9F09D0198 +:101F80002F5F3F4F582F492FEECFD9012F5F3F4F83 +:101F9000852F942FE8CF91919A32E9F381E0911146 +:101FA000D4CFDF91CF91089581E0FBCFFC0170E0A9 +:101FB0009F01281B390B261737075CF42191022E4D +:101FC000000C330B205331092A30310588F390E09F +:101FD00080E00895E8E2F1E080E020813181232B68 +:101FE00019F0928191118F5F339691E0E733F907F1 +:101FF000A1F70895CF93DF93EC0120E030E0A90131 +:10200000E99180ED8E0F8A3090F4AAE0B0E00E9452 +:10201000C4342E2FEE0F330B20533109032E000C46 +:10202000440B550B260F371F481F591FE9CFCA0114 +:10203000B901DF91CF910895C82F82E990E00E9405 +:10204000380F8CE790E0C83051F082E790E0C9305B +:1020500031F088E690E0C73011F486E890E00E9405 +:10206000380F83E00E94D32304960C94CD0D40E0FA +:1020700050E0BA010C94BD0C90E080E00895AF925E +:10208000BF92CF92DF92EF92FF920F931F93CF9365 +:10209000DF936C015C018FEFA80EB11C7601EA148E +:1020A000FB0408F047C02091E6053091E7058091D8 +:1020B000E8059091E90528173907E1F185010E1926 +:1020C0001F09F8948091E6059091E7057894C091F6 +:1020D000E805D091E9058C179D0730F58091EA0558 +:1020E0009091EB058C1B9D0B8017910708F48C01D8 +:1020F0006091E4057091E5056C0F7D1FA801C70193 +:102100000E94F134C00FD11F8091EA059091EB0538 +:10211000C817D90710F0C81BD90BD093E905C09395 +:10212000E805E00EF11EBBCFC817D907D8F210E0C2 +:1021300000E0F7CFC7018C199D09DF91CF911F9166 +:102140000F91FF90EF90DF90CF90BF90AF900895E8 +:102150008F929F92AF92BF92DF92EF92FF920F9376 +:102160001F93CF93DF93EC017B012881222309F495 +:10217000BBC08A8180FFB8C088889988AA88BB883C +:1021800023FF21C0888D998DAA8DBB8D881999094F +:10219000AA09BB0982309105A105B10518F5009780 +:1021A00009F530E020E0A901481B590BCA01DF9175 +:1021B000CF911F910F91FF90EF90DF90BF90AF9064 +:1021C0009F908F90089525FF0DC0EE81FF8186813D +:1021D000978135E0880F991F3A95E1F788159905A1 +:1021E00009F488C084011170EE81FF81B501A4015A +:1021F00089E076956795579547958A95D1F725FF9C +:1022000027C0848D958DA68DB78D480F591F6A1FE5 +:102210007B1F8E819F8120E080960E94D4080097CA +:1022200009F462C0800F911FFC018081F701808357 +:1022300088899989AA89BB890196A11DB11D888BBE +:10224000998BAA8BBB8B21E030E090E080E0ABCF94 +:10225000D380D4220115110581F4D1100EC0892834 +:102260008A288B2881F526FF29C0848D958DA68D1F +:10227000B78D8C879D87AE87BF87EE81FF814C85A8 +:102280005D856E857F8542505109610971098481A0 +:1022900004C0440F551F661F771F8A95D2F78089A7 +:1022A0009189A289B389840F951FA61FB71FAC011E +:1022B000BD014D0D511D611D711DABCF8C8D9D8DCF +:1022C000AE8DBF8DD6CF4C855D856E857F859E0199 +:1022D000245F3F4FCF010E94A70A87FD05C08111EF +:1022E000CCCF8881807749F48981826089838FEFA0 +:1022F0009FEF5DCF30E020E0A8CF21E030E081E02B +:1023000090E051CFEF92FF920F931F93CF93DF9303 +:102310001F92CDB7DEB77C01962FF7014089518916 +:10232000628973898A019B0185E036952795179507 +:1023300007958A95D1F70F7011F0911129C0BE0150 +:102340006F5F7F4FC7010E94A810813051F090E06D +:1023500080E00F90DF91CF911F910F91FF90EF9050 +:102360000895F70180899189A289B3894F96A11DAB +:10237000B11D808B918BA28BB38BF70186819781E6 +:102380008796F0E20F9F90011124820F931FE1CFF7 +:10239000405E5F4F6F4F7F4F408B518B628B738BD3 +:1023A000ECCF2F923F924F925F926F927F928F92DB +:1023B0009F92AF92BF92CF92DF92EF92FF920F93D4 +:1023C0001F93CF93DF93EC015B014A01888183FF68 +:1023D000C5C08A8181FFC2C083FDB7C0A40170E07F +:1023E00060E088899989AA89BB8980959095A09594 +:1023F000B09584179507A607B70708F4AFC0640126 +:102400001E018CE0280E311C088919892A893B8914 +:10241000C114D10409F4E1C08E819F81B901A801E2 +:1024200029E076956795579547952A95D1F7DC0170 +:102430001396FC90F4221170F1101BC04C855D8541 +:102440006E857F850115110509F0F4C04115510510 +:102450006105710509F488C091010E94A70A87FDF2 +:102460007DC0811106C0CE010E94130E882309F49D +:1024700075C0EE81FF814C855D856E857F854250FC +:10248000510961097109848104C0440F551F661FF9 +:10249000771F8A95D2F780899189A289B389840FA1 +:1024A000951FA61FB71FAC01BD014F0D511D611D2A +:1024B000711D0115110529F4C114B2E0DB0608F005 +:1024C0006EC080E092E0801B910B76018C159D051B +:1024D00008F47C010115110571F4488859886A884F +:1024E0007B88888D998DAA8DBB8D25E0481659066D +:1024F0006A067B0608F421E0CF0180960E94D4088A +:10250000009761F1A701B501800F911F0E94F1347E +:102510000E0D1F1D0115124039F48E819F8180968A +:102520000E9492088823D1F088899989AA89BB8959 +:102530008E0D9F1DA11DB11D888B998BAA8BBB8B06 +:10254000AE0CBF1CCE18DF085FCF488D598D6A8D49 +:102550007B8DCE010E94BD0C811140CF89818160AD +:1025600089838FEF9FEF4DC08C8D9D8DAE8DBF8D7C +:102570000097A105B10571F4CE010E94130E8823C6 +:1025800069F38C859D85AE85BF858C8F9D8FAE8FC1 +:10259000BF8F6FCF8C879D87AE87BF876ACF83A1A0 +:1025A00094A1A5A1B6A1481759076A077B0741F472 +:1025B00010A28FEF9FEFDC0183A394A3A5A3B6A382 +:1025C000EE81FF819501808191810E94FB07882324 +:1025D00029F2E12C82E0F82EA7CF888D998DAA8D63 +:1025E000BB8D80179107A207B30738F48A81088F43 +:1025F000198F2A8F3B8F84608A838A8187FD14C05C +:10260000C401DF91CF911F910F91FF90EF90DF9068 +:10261000CF90BF90AF909F908F907F906F905F9082 +:102620004F903F902F900895CE010E94CD0D8111C3 +:10263000E7CF94CFFC0142505109610971098481AF +:1026400004C0440F551F661F771F8A95D2F78089F3 +:102650009189A289B389480F591F6A1F7B1F31CF07 +:1026600004960C94D111CF93DF931F92CDB7DEB7B0 +:10267000698341E050E0BE016F5F7F4F04960E9486 +:10268000D1110F90DF91CF910895FB0101900020AF +:10269000E9F73197AF01461B570BDC01ED91FC9137 +:1026A0000280F381E02D09946FE171E00C944513F1 +:1026B000CF93DF930E94380FEC0186ED93E00E94E8 +:1026C00054138C0F9D1FDF91CF9108958F929F928D +:1026D000AF92BF920F931F93CF93DF93CDB7DEB727 +:1026E000A1970FB6F894DEBF0FBECDBF19A242303E +:1026F00008F44AE08E010F5D1F4F842E912CB12CFF +:10270000A12CA50194010E94A234E62FB901CA01AF +:10271000EA3004F5E05DD801EE938D01232B242BE4 +:10272000252B79F790E080E0109729F0BD0186ED28 +:1027300093E00E944513A1960FB6F894DEBF0FBE3A +:10274000CDBFDF91CF911F910F91BF90AF909F9020 +:102750008F900895E95CDFCFCF92DF92EF92FF92E6 +:10276000CF93DF9397FF19C06B017C018DE20E942C +:10277000530FEC0166277727CB016C197D098E0971 +:102780009F094AE00E9466138C0F9D1FDF91CF9135 +:10279000FF90EF90DF90CF9008954AE0DF91CF91C6 +:1027A000FF90EF90DF90CF900C946613462F682F28 +:1027B00070E090E080E00C946613CF93DF930E946A +:1027C000D613EC0186ED93E00E9454138C0F9D1FED +:1027D000DF91CF910895CF93DF93D0E0C0E00097D1 +:1027E00031F0BC0186ED93E00E944513EC0186EDCB +:1027F00093E00E9454138C0F9D1FDF91CF91089599 +:10280000FC01808181110FC080E2DF01982F1D92B1 +:102810009A95E9F777836683DB0115969C91903151 +:1028200029F0903211F080E0089580E4808381E007 +:1028300082830895CF93C82F8DEA93E00E940A0EF9 +:1028400066E871E08DEA93E00E940014882369F045 +:10285000CC2359F08091AD03807749F08DEA93E065 +:1028600090938501809384018C2FCF91089580E00F +:10287000FCCF8F929F92AF92BF92CF92DF92EF9256 +:10288000FF920F931F93CF93DF93D82FC92F1092EE +:10289000D0031092CD031092D20383ED93E0909376 +:1028A000CF038093CE030E94C2066B010091CE033A +:1028B0001091CF038AE0F801828361E00E943A061A +:1028C00061E0F80182810E940C061FB7F8948091A4 +:1028D0008201811127C0E0E7FAE08491ECE5FAE09B +:1028E0009491E82FF0E0EE0FFF1FE85BF54FA59104 +:1028F000B491EC91E92321F461E08AE00E940C0696 +:1029000061E08AE00E943A068CB580618CBD8CB58E +:1029100080648CBD61E08DE00E943A0661E08BE04E +:102920000E943A06809182018F5F809382011FBFCF +:10293000E091CE03F091CF0382E5808311828091F4 +:10294000D003811104C08DEC93E00E94CE06E0918B +:10295000CE03F091CF0361E082810E940C061AE061 +:102960008FEF0E94F5061150D9F7E091CE03F09158 +:10297000CF0360E082810E940C061AE020E030E084 +:10298000A90160E08DEC93E00E949007082F813050 +:1029900029F11150A9F480E28093CD038DEC93E0EE +:1029A0000E941C0780E0DF91CF911F910F91FF9053 +:1029B000EF90DF90CF90BF90AF909F908F90089551 +:1029C0008DEF0E94F50698E0A92E92E0B92E0E94A4 +:1029D000FA06F1E0AF1AB108D1F7D0CF2AEA31E018 +:1029E00040E050E068E08DEC93E00E94900714E036 +:1029F000853041F50093D2038091D203812C912C34 +:102A00005401823029F4812C912CA12C80E4B82E21 +:102A100020E030E0A90167E38DEC93E00E9490078D +:102A2000A501940169E28DEC93E00E949007882350 +:102A3000B9F00E94C2066C197D09613D774040F3F0 +:102A400083E4AACF0E94FA068093D1031150D1F7F4 +:102A50008A3A21F482E08093D203CECF85E29CCFE4 +:102A60008091D2038230D1F420E030E0A9016AE302 +:102A70008DEC93E00E949007882311F087E38CCFC0 +:102A80000E94FA06807C803C19F483E08093D20394 +:102A90000E94FA060E94FA060E94FA068DEC93E064 +:102AA0000E941C07E091CE03F091CF03D083C18335 +:102AB0008DEC93E090938701809386018DEA93E0FB +:102AC0000E940A0E81E00E9413098823A9F066E89B +:102AD00071E08DEA93E00E940014882309F462CF2C +:102AE0009091AD03907709F45DCF2DEA33E03093F8 +:102AF00085012093840157CF80E00E941309811142 +:102B0000E6CF50CF9F92AF92BF92CF92DF92EF92DB +:102B1000FF920F931F93CF93DF93CDB7DEB7A097AC +:102B20000FB6F894DEBF0FBECDBF19821A82DC014A +:102B30002C9123FF16C012962C9121FF12C08C01FC +:102B4000FC01448D558D668D778D411551056105CC +:102B5000710549F461E0C8010E94AD0D7C01009748 +:102B600049F480E076C0868197810E94280B81110C +:102B7000F1CFF7CF0E94AF0C982E85EEF70180833E +:102B8000D8011C9216968D919C9180960E94920875 +:102B9000882339F3F8019381992309F45AC0808579 +:102BA0009185A285B385668177819E012F5F3F4F16 +:102BB00069010097A105B10509F05DC0C9010E9436 +:102BC0000014882371F2EE24E394F12C25EEA22E5A +:102BD000D80113968C9113978E1518F214964D9177 +:102BE0005C914E195F0970E060E085E0440F551F6D +:102BF000661F771F8A95D1F7C6010E94BD0C8823F6 +:102C000009F4AFCF60E0C6010E948211FC01892B5C +:102C100009F4A7CF83858F3009F0A3CF9081892F46 +:102C20008F71E8129ECF858589119BCFA082D80134 +:102C30001696ED91FC9180A1816080A3BFEFEB1A05 +:102C4000FB0A96FFC5CFF8018681978180960E9486 +:102C50009208A0960FB6F894DEBF0FBECDBFDF91ED +:102C6000CF911F910F91FF90EF90DF90CF90BF9089 +:102C7000AF909F9008952CE1F60111922A95E9F703 +:102C800020E1298321E02B8378876F838D8F9E8FAE +:102C9000AF8FB8A398CFCF93DF93FC01208124FF9F +:102CA0000CC0EC010E94371061E0CE010E9482113D +:102CB000009739F48981882381F080E0DF91CF91FA +:102CC0000895FC012081222341F0253E69F32E3234 +:102CD00059F3838583FDE8CFF0CF88E088838A812C +:102CE00082608A83CE01DF91CF910C948215CF92BE +:102CF000DF92EF92FF920F93CF93DF93EC0180E28C +:102D0000DE011D928A95E9F7FB01868197819F83F9 +:102D10008E835D834C83C48CD58CE68CF78CC886FF +:102D2000D986EA86FB86FA01EF70FF27DC019796C9 +:102D300045E0EE0FFF1F4A95E1F7BD016E0F7F1FC3 +:102D4000DB011B963C9133FD19C0AC014E0F5F1F98 +:102D5000DA01D2963C9137713883DB011B964C9196 +:102D6000487111F4386038830B83322F337031305F +:102D700009F449C030F0323009F443C0188280E0D1 +:102D800038C031E025FDFACF3A835A8151FF03C0A4 +:102D90004881417199F7322F3878352B3A83DC011D +:102DA00093964D915D916D917C9196974C8B5D8B37 +:102DB0006E8B7F8BE80FF91F43AD54AD70E060E080 +:102DC000BA0155274427DF01AF5BBF4FCD90DC90A0 +:102DD000F12CE12C4C295D296E297F2925FF1AC091 +:102DE000411551056105710581F48A8184608A83EA +:102DF00081E0DF91CF910F91FF90EF90DF90CF9026 +:102E0000089533E0C1CF32E0BFCF0E94280B81117B +:102E1000ECCFB4CF4C8F5D8F6E8F7F8FED5BFF4F0C +:102E200080819181A281B381888F998FAA8FBB8F76 +:102E3000DFCF8F929F92AF92BF92EF92FF920F934C +:102E40001F93CF93DF937C01EB0100E010E08888B3 +:102E50009988AA88BB8860E0CE010E948211009701 +:102E6000A1F1FC012081222381F12E3221F1253EA6 +:102E700011F1338533FD21C0002321F00E94AF0CF6 +:102E8000811323C0B501A40185E076956795579518 +:102E900047958A95D1F720E0BE01C7010E947716B9 +:102EA000DF91CF911F910F91FF90EF90BF90AF9066 +:102EB0009F908F90089500E0CACF3F30E1F726FF42 +:102EC000C6CF022F0F711585C2CF80E0E9CFCF9218 +:102ED000DF92EF92FF920F931F93CF93DF936C01DA +:102EE000EB017A014115510509F44AC041505109DD +:102EF00070E060E085E0440F551F661F771F8A95DC +:102F0000D1F7CE010E94BD0C81110AC080E0DF9193 +:102F1000CF911F910F91FF90EF90DF90CF90089588 +:102F200060E0CE010E948211FC01892B79F3838538 +:102F30008F3049F580818F71813029F515850E2DEF +:102F400085E1E816F10408F004E160E0CE010E949A +:102F500082110097D9F2FC012081253EB9F222238B +:102F6000A9F22E3299F2002321F00E94AF0C8113B6 +:102F7000CDCF20E0A701BE01C6010E947716C7CFC2 +:102F8000CB010E94371000E010E0DFCF8F929F92BC +:102F9000AF92BF92CF92DF92EF92FF920F931F9367 +:102FA000CF93DF93CDB7DEB7C655D1090FB6F894EE +:102FB000DEBF0FBECDBF8C016B01942E19A61AA6E1 +:102FC00018A61FA287E191E09EA38DA3C8010E94CD +:102FD000371097E1A92E91E0B92E2FE2822E1D82A3 +:102FE0001E821C821B82BA82A9828D818111C6C079 +:102FF000F8018081807709F4C1C080899189A28914 +:10300000B3898F719927AA27BB27892B8A2B8B2BF2 +:1030100009F0B4C0B801CE0105960E9419178823A3 +:1030200009F4ACC08D81811105C0CE0105960E94C6 +:103030000A0EDBCF8076D9F02A968FAE2A972B9690 +:103040001FAE2B978D81982F9870887771F39923F5 +:1030500009F486C0BE01675B7F4FC6010E94920FD4 +:10306000882319F381E067968FAF67977DC060E092 +:10307000CE0105960E94AD0D0097B9F2BE01675BC7 +:103080007F4F0E947E0DDECFBE01675B7F4F86EDD6 +:1030900093E00E944513E82E8D8184FF05C08EE7E2 +:1030A0009AE00E94380FE80E8D8183FF14C0FDE086 +:1030B000FE1530F08CE79AE00E94380FE394F7CFCA +:1030C0008AE79AE00E94380F6D8D7E8D8F8D98A1D2 +:1030D0004AE00E94661386ED93E00E945413CE01ED +:1030E00005960E940A0E67968FAD6797823009F0A9 +:1030F00076CFE0908301E1E0EE1508F470CF89A56A +:1031000081116DCFF8018081807709F468CF408903 +:1031100051896289738985E07695679557954795BA +:103120008A95D1F741505109B801CE0189960E9484 +:103130006717882309F453CFE394E092830142E0B8 +:103140004F0DB601CE0189960E94C617809183016A +:10315000815080938301CE0189960E940A0E3FCF51 +:10316000F2E06796FFAF6797F12C9F1409F48CCFBC +:1031700080E89AE00E94380FF394F7CFCA5ADF4FE5 +:103180000FB6F894DEBF0FBECDBFDF91CF911F9178 +:103190000F91FF90EF90DF90CF90BF90AF909F90F6 +:1031A0008F900895CF92DF92EF92FF920F931F932B +:1031B000CF93DF93CDB7DEB7A0970FB6F894DEBFFD +:1031C0000FBECDBFFC0119821A829081907781F4E5 +:1031D00080E0A0960FB6F894DEBF0FBECDBFDF91A2 +:1031E000CF911F910F91FF90EF90DF90CF900895B6 +:1031F0008F01CF010E943710F801C088D188E28882 +:10320000F38860E0C8010E948211009769F4F80118 +:1032100081818111DDCFF8018081807609F057C06E +:10322000C8010E944B16D5CFFC012081222399F3BF +:10323000253E11F32E3201F3838583FDDDCF898195 +:103240008111C6CFF8018081807709F4C1CF95E064 +:10325000F694E794D794C7949A95D1F7A601B8014C +:10326000CE0101960E946717882309F4B1CF8981A6 +:1032700084FF25C0CE0101960E94D218882309F44C +:10328000A7CFFFEFCF1ADF0AA60170E060E085E06C +:10329000440F551F661F771F8A95D1F7F801808963 +:1032A0009189A289B38984179507A607B70709F4FE +:1032B000A3CFC8010E94BD0C81119ECF89CF8B8105 +:1032C00082608B83CE0101960E948215D7CF81E068 +:1032D00080CFAF92BF92CF92DF92EF92FF920F9387 +:1032E0001F93CF93DF93EC01888185FF0DC010E021 +:1032F000812FDF91CF911F910F91FF90EF90DF9081 +:10330000CF90BF90AF90089588899989AA89BB8989 +:1033100081159E4FAF41B10550F7CE010E94130EAB +:10332000182F882321F3EE81FF81CC84DD84EE8485 +:10333000FF8432E0C31AD108E108F108848104C097 +:10334000CC0CDD1CEE1CFF1C8A95D2F7808991897C +:10335000A289B389C80ED91EEA1EFB1E25E0B7015B +:10336000A601CF0180960E94D4085C01892B09F444 +:10337000BECF80E092E0F5019C01119221503040D7 +:10338000E1F701E0EE81FF818281081780F4950169 +:10339000B701A601400F511D611D711D80819181F2 +:1033A0000E94FB07882309F4A2CF0F5FEBCF90E0C8 +:1033B000B0E0A0E029E0880F991FAA1FBB1F2A9543 +:1033C000D1F7488959896A897B89840F951FA61F7F +:1033D000B71F888B998BAA8BBB8B8ACF9F92AF929A +:1033E000BF92CF92DF92EF92FF920F931F93CF93F2 +:1033F000DF937C01962EC62ED12CA60170E060E0F2 +:103400000E94FA34D0E0560181E0A81AB1080D2FCD +:1034100010E00A151B059CF50E946C05892BE1F351 +:1034200086ED93E00E94060FC82F85E00E94860F6C +:10343000C83011F0CF3791F4DD2349F3D150F701B3 +:10344000ED0FF11D108288E00E94530F8BE091E098 +:103450000E94380F88E00E94530FD9CF809100015D +:1034600080FF03C08C2F0E94530FCD3009F586EDED +:1034700093E00E945413F701E00FF11F1082E8E27D +:10348000F1E08FE0DF011D928A95E9F710E0C1E0DD +:103490008C2F90E09C012F5F3F4F8E0D9F1DFC01F4 +:1034A0008081803271F0C216D30621F5C92D0CC07F +:1034B000CA3009F4ACCFF701E00FF11FC083DF5F22 +:1034C000A6CFC216D30691F30E94EA0F853080F48E +:1034D00090E0FC01EE0FFF1FE80FF91FE85DFE4FC3 +:1034E000C701810F911D918380838C2F811B828363 +:1034F000CF5F1C2FCF5FC91558F28D2FDF91CF9171 +:103500001F910F91FF90EF90DF90CF90BF90AF9001 +:103510009F9008952F923F924F925F926F927F9269 +:103520008F929F92AF92BF92CF92DF92EF92FF92D3 +:103530000F931F93CF93DF93CDB7DEB729970FB6C5 +:10354000F894DEBF0FBECDBF4C017F836E83FA01BE +:10355000672BD1F480E029960FB6F894DEBF0FBE3A +:10356000CDBFDF91CF911F910F91FF90EF90DF9032 +:10357000CF90BF90AF909F908F907F906F905F9013 +:103580004F903F902F900895AE81BF818C918077AE +:1035900009F3D4018C918111DDCFA180B2808081AB +:1035A000837033243394882349F0C5010C966DE071 +:1035B00070E00E948E3433243394360E29837F01C9 +:1035C000EE81FF81F987E887CF010E9437101C82C6 +:1035D0001D821A82212C10E000E01B8297012A5FD5 +:1035E0003F4F3F832E83A885B98550964D905D90BF +:1035F0006D907C90539795E0769467945794479498 +:103600009A95D1F7620161E0CD010E948211009785 +:1036100009F062C0E885F985818181119BCFE9813C +:10362000E4FF98CF8E2F83708150823008F092CFC4 +:10363000112311F0CC80DD80131500F560E0888542 +:1036400099850E948211892B09F0E4C0A885B9856B +:1036500011968C9181117ECF888599850E94691978 +:10366000882309F477CFA885B9851696ED91FC914A +:103670008281823018F4105F131570F3BB81BB2375 +:1036800009F4F8C0F701558002E010E08EE7482EFB +:103690003701F6E06F0E711CD70111962D913C9108 +:1036A0001297C801820F931F1396ED91FC912E0F74 +:1036B0003F1F2E173F0709F4AFC0AC01B5E0440F20 +:1036C000551FBA95E1F7840F951F4191042E000C08 +:1036D000550B84279527EDCFDC012C91253E11F069 +:1036E00021110EC0111102C04C825D82131508F425 +:1036F0001F5F222309F493CF253E21F400E073CF0E +:10370000131550F12E32D1F3FC0133853F3009F00F +:103710005AC0011123C026FF66CF022F0F71F58515 +:10372000FA83202EE22DE150FF0BAF01FDE0F49F64 +:103730009001F59F300D11242A153B05F8F6FC0188 +:10374000D12C64E06D1590F081819281A216B306B0 +:10375000B1F4892B99F647CF10E0D4CF2A942211E7 +:10376000CDCF2585BA812B17E9F2C8CF8AE08D1518 +:1037700018F084819581EACF86819781E7CF8F3FCA +:10378000910511F008F0BACF4FEB480F4A3108F419 +:10379000805EB9016F5F7F4FD70113964D915C91A9 +:1037A000240F351FD9019C912FEB290F2A3108F4E2 +:1037B000905E9813A3CFD3943296BDE0DB1609F444 +:1037C00012CF9B01BECF33FD99CF002399F0E1E0EA +:1037D0002E12C0CE0E94AF0CFA818F13BBCEB981DE +:1037E000B6FDB8CE2981A60168857985C4010E94FD +:1037F0007716B1CE4BE050E06E817F810E94E434B9 +:10380000892B09F0F0CED7018C9180FFE8CF31E011 +:103810003B83E9CE1F5F10CFB3E0B51510F4A3E0F2 +:103820005A2E34E0350D282F2F702A3008F08AC028 +:10383000205DF701E30FF11D2683F4E0969587954F +:10384000FA95E1F73150531670F3F701E50DF11DCC +:103850004682888599850E94371061E08885998520 +:103860000E948211009709F06FC0E885F985818177 +:10387000811170CEA60170E060E0E5E0440F551FB5 +:10388000661F771FEA95D1F7888599850E94BD0C40 +:10389000882309F45FCE0FEF030D102F3FE0532E66 +:1038A0003701B6E06B0E711C4DE0442E112309F474 +:1038B00077C060E0888599850E9482116C01892B10 +:1038C00009F448CEA885B9851696ED91FC9180A1A2 +:1038D000816080A3312E101302C0689436F8F6017F +:1038E000308253861486C3010E94AF0CD6011D9608 +:1038F0008C931D975B961C921E925A97F701238119 +:103900003481832D8F718150990B489EA001499E6F +:10391000500D1124F60160E04A155B0570F5D901E0 +:10392000A40FB51F8C91082E000C990B653080F503 +:10393000928381836F5F4F5F5F4F32966D3061F787 +:103940001150B4CF295C75CFDC012C91222309F4EE +:1039500091CF1B962C9123FD80CF4BE050E0BC0112 +:10396000C3010E94E434892B09F077CF0F5F1F4F0A +:103970000436110509F090CEEDCD81E090E0A4165B +:10398000B50611F490E080E0919581959109CECF34 +:103990006B3018F495838483CDCF97838683CACF09 +:1039A000A885B98550964D905D906D907C90539709 +:1039B00060E0CD010E948211009709F4CBCD25E093 +:1039C00076946794579447942A95D1F7620120E240 +:1039D000FC0111922A95E9F7F70136962BE0DC01FC +:1039E00001900D922A95E1F7D7012C912871FC01E5 +:1039F000248721E238E2318B208B40E058E0578762 +:103A00004687338B228B318F208F578B468BA8852F +:103A1000B9851696ED91FC9180A1816080A3E2CEDC +:103A2000DF92EF92FF920F931F93CF93DF93CDB767 +:103A3000DEB7E3970FB6F894DEBF0FBECDBF7C01B3 +:103A40008B015BAB4AABD22E19821A82FC018081BA +:103A5000882379F080E0E3960FB6F894DEBF0FBEBE +:103A6000CDBFDF91CF911F910F91FF90EF90DF902D +:103A700008956115710571F3FB018081807751F321 +:103A8000EAA9FBA980818F32D9F4EAA9FBA9808138 +:103A90008F3221F43196FBABEAABF7CFF8016681A8 +:103AA0007781811104C0C7010E940014D4CFCE01D8 +:103AB00001960E940014882369F28E010F5F1F4F48 +:103AC000AE014E5C5F4FBE016F5D7F4F8AA99BA91F +:103AD0000E947F0B882309F4BDCFEAA9FBA980814E +:103AE0008823B9F020E0AE014F5D5F4FB801C701F8 +:103AF0000E948A1A882309F4ADCF80E2F701DE0123 +:103B0000119601900D928A95E1F7C7010E940A0E65 +:103B1000D4CF2D2DAE014F5D5F4FB801C7010E947C +:103B20008A1A99CF1F93CF93DF93CDB7DEB7A097B3 +:103B30000FB6F894DEBF0FBECDBF162F19821A82C2 +:103B4000FC0120812F3281F4218121110DC0862FAB +:103B50000E941A14A0960FB6F894DEBF0FBECDBF18 +:103B6000DF91CF911F91089520E0AC016DEA73E0E1 +:103B7000CE0101960E94101D882361F399819077F0 +:103B8000B9F090E2FE013196ADEAB3E001900D92FA +:103B90009A95E1F71123F1F28091AD03807731F02E +:103BA0008DEA93E09093850180938401812FD2CF99 +:103BB00080E0D0CFFB01242F6091840170918501BA +:103BC000AF010C94101D2F923F924F925F926F9213 +:103BD0007F928F929F92AF92BF92CF92DF92EF929D +:103BE000FF920F931F93CF93DF93CDB7DEB7CA52E7 +:103BF000D1400FB6F894DEBF0FBECDBFBC01CC5F85 +:103C0000DE4F1882C450D140CB5FDE4F1882C550C2 +:103C1000D140CE5FDE4F19821882C250D14087E179 +:103C200091E0C050DF4F99838883C050D140C0904D +:103C30007C012091810180E091E08C0F9D1F049612 +:103C400041E3233009F049E10E94DA1D811103C0EC +:103C500089E00E941C10C45EDE4F88819981AA8190 +:103C6000BB81CC51D140892B8A2B8B2B61F400E096 +:103C700011E00C0F1D1F0C5F1F4FC8010E94371071 +:103C8000C8010E94CD0DD12CF12CE12C24E1CC0CEB +:103C9000DD1CEE1CFF1C2A95D1F70E94C2064B01C9 +:103CA0005C018FE990E00E94380F61E085E00E949E +:103CB0000C0630907D01332009F468C0312C412C72 +:103CC000512C320180E091E08C0F9D1F0496C75D5E +:103CD000DE4F99838883C952D14090917D01C85DA0 +:103CE000DE4F9883C852D140391608F035C1CE0155 +:103CF00001960E943F108C01282E882309F4E5C00C +:103D0000998180917E019813DEC03394FE01329632 +:103D100081E0821558F421919213D2C03394C85D8A +:103D2000DE4F2881C852D1402311CBC0A8015527AE +:103D3000BE016F5F7F4FCE0193950E94301385E0E7 +:103D40000E94860F80918101833039F6420C511C0C +:103D5000611C711C4C145D046E047F0408F4BDCF1B +:103D600000E011E00C0F1D1F0C5F1F4FC8010E94E7 +:103D7000CD0DC8010E940A0E60E085E00E940C068D +:103D80008BE990E00E94380F312C3EC0412C512C21 +:103D9000320100E011E00C0F1D1F0C5F1F4FCE0120 +:103DA00001960E943F10282E882309F448C0AC01D8 +:103DB0005527BE016F5F7F4FCE0193950E94301350 +:103DC00085E00E94860F80918101833041F7420C8B +:103DD000511C611C711C4C145D046E047F04F8F2CC +:103DE00000E011E00C0F1D1F0C5F1F4FC8010E9467 +:103DF000CD0DC8010E940A0E60E085E00E940C060D +:103E00008DE990E00E94380F832DC65DDE4F0FB61E +:103E1000F894DEBF0FBECDBFDF91CF911F910F9100 +:103E2000FF90EF90DF90CF90BF90AF909F908F90DA +:103E30007F906F905F904F903F902F9008950E94D9 +:103E4000C206681979098A099B09653F7140810595 +:103E5000910508F4A4CFC8010E94CD0D60E085E073 +:103E60000E940C06809164008062809364008091BF +:103E700064008460809364009AE0B92E61E08B2D29 +:103E80000E943A0660E08B2D0E940C06B3948EE0EF +:103E9000B812F4CF83B7816083BF889583B78E7FD4 +:103EA00083BF809164008B7F809364008091640065 +:103EB0008F7D809364000E94C2064B015C016FCF2E +:103EC000312C8F5F26CF312C31CF0E94C20668196A +:103ED00079098A099B09653F71408105910508F4BC +:103EE000FCCEC75DDE4F88819981C952D1400E94C6 +:103EF000CD0D60E085E00E940C0680916400806238 +:103F000080936400809164008460809364008AE000 +:103F1000B82E61E08B2D0E943A0660E08B2D0E9446 +:103F20000C06B3948EE0B812F4CF83B7816083BFE0 +:103F3000889583B78E7F83BF809164008B7F809349 +:103F40006400809164008F7D809364000E94C206AB +:103F50004B015C01302EC1CE00E011E00C0F1D1FA3 +:103F60000C5F1F4FC8010E94CD0D20917D012223BF +:103F700009F4BFC0CC5FDE4F8881C450D14083FFBD +:103F8000B8C0CA5FDE4F8881C650D14081FFB1C042 +:103F9000C45EDE4F88819981AA81BB81CC51D1401A +:103FA0006C017D01C21AD108E108F1088C159D054C +:103FB000AE05BF0508F49DC0892B8A2B8B2B09F415 +:103FC00098C0CC5EDE4F88809980AA80BB80C451A7 +:103FD000D140B701A601C8010E94BD0C882309F495 +:103FE00088C0C65FDE4F88819981CA50D140C11414 +:103FF000D104E104F10409F043C0C05EDE4F488102 +:1040000059816A817B81C052D1400E94280B88234C +:1040100009F46FC0C05EDE4F188219821A821B82BB +:10402000C052D140C45EDE4FC882D982EA82FB8290 +:10403000CC51D140CA5FDE4F8881C650D1408460E8 +:10404000CA5FDE4F8883C650D14080E091E08C0F7C +:104050009D1F04960E94CD0D882309F44AC0B70124 +:10406000A60184169506A606B70610F4B501A401AC +:1040700080E091E08C0F9D1F04960E94BD0C39C01A +:10408000C05FDE4F488159816A817B81C051D14038 +:104090009E012C5D3E4F0E94A70A87FD2AC08823FF +:1040A00009F2CC5DDE4F488159816A817B81C4521F +:1040B000D140C65FDE4F88819981CA50D1400E94AD +:1040C000280B8823B1F0C05FDE4F488159816A8197 +:1040D0007B81C051D1400FEF1FEF2FEF3FE0C65F54 +:1040E000DE4F88819981CA50D1400E94350A8111E2 +:1040F00099CF80E091E08C0F9D1F04960E940A0EDC +:1041000060E085E00E940C0689E990E00E94380F8B +:104110003324339479CEDF92EF92FF920F931F9363 +:10412000CF93DF93CDB7DEB7A0970FB6F894DEBF7D +:104130000FBECDBF8C016115710509F49CC0DB0178 +:104140009C91907709F497C07B0122E5C8010E94F9 +:104150008A1A882309F48FC081E0F801828380E104 +:10416000D82ED082C8010E946919882309F483C01F +:10417000F80184859585A685B785848F958FA68F50 +:10418000B78FC8010E943710C8010E94CD0D882347 +:1041900009F471C061E0C8010E94AD0DFC01892BDA +:1041A00009F469C0D38680E2DE01119601900D9278 +:1041B0008A95E1F78EE28983FE013296CE010C9654 +:1041C00020E22193E817F907E1F7D8011696ED915F +:1041D000FC9117975C964D915D916D917C915F97E5 +:1041E0004250510961097109848104C0440F551F6F +:1041F000661F771F8A95D2F780899189A289B38932 +:10420000480F591F6A1F7B1F21E0CF0180960E9433 +:10421000D408009781F120E2FE013196DC01019083 +:104220000D922A95E1F72EE22A83F701448D558DF0 +:10423000668D778D7E8B6D8B5C8F4B8F20E2FE01C0 +:104240003196DC01909601900D922A95E1F7D80104 +:1042500016968D919C918096A0960FB6F894DEBF2D +:104260000FBECDBFDF91CF911F910F91FF90EF90C7 +:10427000DF900C94920880E0A0960FB6F894DEBF11 +:104280000FBECDBFDF91CF911F910F91FF90EF90A7 +:10429000DF9008950C941F33CF92DF92EF92FF923C +:1042A0006B017C01B701992777FD9095892F89E0F3 +:1042B00090E00E944A219927F7FC9A958F2D7E2D38 +:1042C0006D2D8AE090E00E944A216C2D8BE090E0F9 +:1042D000FF90EF90DF90CF900C944A210C9417330D +:1042E000CF93DF9383E090E00E946E21C82F84E09B +:1042F00090E00E946E21D82F81E793E00E9458132E +:104300008CE593E00E94380FBE0190E080E04AE027 +:104310000E94661386ED93E00E9454138CE493E0B0 +:104320000E9458138FE293E00E94581380E093E0BC +:104330000E94581388ED92E00E94581384EA92E09C +:104340000E94581387EE91E00E94581387EB91E08A +:104350000E94581387E991E00E94581388E591E084 +:104360000E94581382E391E00E9458138DE091E07F +:10437000DF91CF910C9458130F931F93CF93DF933A +:1043800089E090E00E946E21D82F8AE090E00E94A0 +:104390006E21C82F8BE090E00E946E214C2F50E0E0 +:1043A00070E060E0762F652F542F44276D2B8A0133 +:1043B0009B01082BC901B801DF91CF911F910F918B +:1043C00008953F924F925F926F927F928F929F9249 +:1043D000AF92BF92CF92DF92EF92FF920F931F9313 +:1043E000CF93DF93CDB7DEB7CE58D1090FB6F8948F +:1043F000DEBF0FBECDBF26961FAE269727961FAEF7 +:10440000279725961FAE1EAE259787E191E023964C +:104410009FAF8EAF239780E00E941A14811103C0D2 +:1044200088E00E941C106FEF70E0CE018C579F4F08 +:104430000E945D3019821A8220E0AE014C575F4F16 +:104440006DEA73E08E010F5F1F4FC8010E94101DBF +:10445000882381F019821A8221E0AE014C575F4F08 +:104460006DEA73E0C8010E94101D882319F0C8018D +:104470000E94821581E4E82EF12CEC0EFD1E84E0F2 +:10448000E80EF11C49E1BE016C577F4FC7010E9445 +:10449000DA1D0E94BC21D62EC72EB82EA92E85E08B +:1044A00090E00E946E21982E86E090E00E946E219E +:1044B000882E82E090E00E946E21782E87E090E0C6 +:1044C0000E946E21682E88E090E00E946E21582E96 +:1044D0008CE090E00E946E21482E8DE090E00E94DA +:1044E0006E21382E8EE090E00E946E211F928F93F5 +:1044F0001F923F921F924F921F925F921F926F9254 +:104500001F927F921F928F921F929F92AF92BF92A3 +:10451000CF92DF9282EE90E09F938F936E0195E6AB +:10452000C90ED11CDF92CF920E947630F601019025 +:104530000020E9F73197AF014C195D09B601C701B9 +:104540000E94D111CE018F5B9F4F0E94541361EAEC +:1045500070E0C8010E945D30F80101900020E9F789 +:104560003197AF01401B510BB801C7010E94D11117 +:10457000C7010E94CD0DC7010E940A0E0FB6F89424 +:10458000DEBF0FBECDBFC257DF4F0FB6F894DEBF00 +:104590000FBECDBFDF91CF911F910F91FF90EF9094 +:1045A000DF90CF90BF90AF909F908F907F906F9053 +:1045B0005F904F903F900895E7E3F1E09EE1DF01C7 +:1045C0001D929A95E9F790E0FC01EE0FFF1FE80FAE +:1045D000F91FE85DFE4F608171816115710559F029 +:1045E0004281442341F04F3108F04EE150E087E32F +:1045F00091E00C94013590E080E008951F920F92B5 +:104600000FB60F9211242F933F938F939F93AF93E5 +:10461000BF938091610190916201A0916301B0917B +:1046200064013091600123E0230F2D3758F5019686 +:10463000A11DB11D209360018093610190936201DF +:10464000A0936301B093640180916501909166012C +:10465000A0916701B09168010196A11DB11D8093E1 +:10466000650190936601A0936701B0936801BF91C3 +:10467000AF919F918F913F912F910F900FBE0F900F +:104680001F90189526E8230F0296A11DB11DD2CFC9 +:104690001F920F920FB60F9211242F933F934F93B7 +:1046A0005F938F939F93EF93FF9320915C013091E1 +:1046B0005D0180915A0190915B012817390791F4AF +:1046C0008091C1008F7D8093C100FF91EF919F91F8 +:1046D0008F915F914F913F912F910F900FBE0F904F +:1046E0001F901895C9010196E0915801F091590168 +:1046F000E20FF31F208140915E0150915F0184170A +:10470000950710F090E080E090935D0180935C014C +:104710002093C600DACF1F920F920FB60F9211248A +:104720002F933F934F935F938F939F93EF93FF93B9 +:104730008091C0008C719091C6004091E605509127 +:10474000E7059A012F5F3F4FE091E405F091E50501 +:10475000E40FF51F90834091EA055091EB05241773 +:10476000350710F030E020E04091E8055091E90570 +:104770004217530799F4816090915701892B8093D8 +:104780005701FF91EF919F918F915F914F913F91D1 +:104790002F910F900FBE0F901F9018953093E70543 +:1047A0002093E605E9CFC82FD0E010E000E00C1719 +:1047B0001D07BCF461E085E00E940C0668EC70E027 +:1047C00080E090E00E94900660E085E00E940C0688 +:1047D00068EC70E080E090E00E9490060F5F1F4F51 +:1047E000E6CF60ED77E080E090E00E949006DDCFBC +:1047F000CF93DF93CDB7DEB7CA5CD1090FB6F8947B +:10480000DEBF0FBECDBF789484B5826084BD84B511 +:10481000816084BD85B5826085BD85B5816085BDBB +:1048200080916E00816080936E0010928100809173 +:1048300081008260809381008091810081608093FB +:104840008100809180008160809380008091B10020 +:1048500084608093B1008091B00081608093B0004B +:1048600080917A00846080937A0080917A008260DF +:1048700080937A0080917A00816080937A008091A1 +:104880007A00806880937A001092C10061E085E030 +:104890000E943A0683B7817F83BF83B7816083BF5D +:1048A00080917A008F7780937A0080E880BF8FE3D1 +:1048B00080937E0083E080937F0080916400806815 +:1048C000809364008091640088608093640080918C +:1048D00064008064809364008091640081608093B0 +:1048E00064000E94BC218B019C010C5211402109E3 +:1048F0003109053111442F40310508F09AC0609309 +:104900006A0170936B0180936C0190936D0182E05A +:1049100090E00E946E21843008F09EC08093810157 +:1049200085E090E00E946E219FEF980F9E3F08F077 +:104930009BC080937E0186E090E00E946E218F3FB5 +:1049400009F49BC080937D0187E090E00E946E2176 +:10495000823008F09BC080937F0188E090E00E9445 +:104960006E21823008F09BC080938001809100010D +:1049700090917F01913009F09BC08260809300018B +:104980008091000190918001913009F093C0816085 +:10499000809300018CE090E00E946E21823008F04C +:1049A0008BC0809369018DE090E00E946E2180931E +:1049B0007C018EE090E00E946E2180937B01C0908C +:1049C0006A01D0906B01E0906C01F0906D01C7011D +:1049D000B6010E94820584EFC81681E0D806E10482 +:1049E000F104D4F4A7019601A4E0220F331F441F61 +:1049F000551FAA95D1F760E074E284EF90E00E9421 +:104A0000A234215031093093C5002093C400809115 +:104A1000C0008D7F8093C00084EB93E00E94380F2C +:104A200080E591E00E94391481114EC086E00E9419 +:104A30001C1080E895E2A0E0B0E080936A019093BA +:104A40006B01A0936C01B0936D0160E875E280E0AA +:104A500090E00E944C215BCF1092810160E082E0E7 +:104A600090E00E944A215CCF8AE180937E016AE156 +:104A700085E090E00E944A215ECF83E080937D0133 +:104A800063E086E090E00E944A215ECF81E080935F +:104A90007F0161E087E090E00E944A215ECF81E0E3 +:104AA0008093800161E088E090E00E944A215ECF1F +:104AB0008D7F64CF8E7F6CCF1092690160E08CE0B7 +:104AC00090E00E944A216FCF80E00E941A14811169 +:104AD00002C088E0ACCF82EB93E00E94380F2E96A4 +:104AE0001FAE2E972F961FAE2F972D961FAE1EAE80 +:104AF0002D9787E191E02B969FAF8EAF2B9780E0AB +:104B00000E941A14882329F366EA73E0CE01859681 +:104B10000E945D30F9E4CF2ED12CCC0EDD1E94E046 +:104B2000C90ED11C40E0BE016B5D7F4FC6010E94E3 +:104B3000DA1D082F81119DC0C6010E940A0E0E9435 +:104B4000E121809169018111F2C160E00E943A0681 +:104B500061E080E00E940C0680E00E94E30501977E +:104B600009F4E5C10E94B10E61E08DE00E943A06B1 +:104B700061E08DE00E940C0618E269E170E080E0DF +:104B800090E00E94900685E00E94860F80E00E94DF +:104B9000E305019709F4CBC169E170E080E090E0A2 +:104BA0000E9490068DE00E94860F80E00E94E3053F +:104BB000019709F4BCC1115001F760E875E280E08B +:104BC00090E00E944C2160E082E090E00E944A2147 +:104BD0006AE185E090E00E944A2163E086E090E08F +:104BE0000E944A2161E087E090E00E944A2161E052 +:104BF00088E090E00E944A2160E08CE090E00E9412 +:104C00004A2164E68DE090E00E944A216CE38EE048 +:104C100090E00E944A2180E590E00E9439148823A8 +:104C200009F404CF80E00E941A14882309F451CFBC +:104C30000E94E1210E94B10E61E085E00E943A06E7 +:104C400061E08DE00E943A0661E085E00E940C067A +:104C500061E08DE00E940C0664EF71E080E090E07E +:104C60000E94900685E00E94860F8DE00E94860FCC +:104C7000F3CFFE0131967F01512C1C2DBE016359EB +:104C80007F4F812F9D2D0E94A810019709F048C0E9 +:104C9000AE968FADAE97282F8C3219F080538A30A4 +:104CA00038F4F70121937F015394FFE15F12E6CFBF +:104CB00089E490E08C0F9D1F04960E940A0E10E07C +:104CC00080E044E6442E54E6352E912CBB24B39468 +:104CD000AA24A39463E0862E7AE1772E612CE0E883 +:104CE000CE2EE5E2DE2EE12CF12C851508F083C0F6 +:104CF00021E030E02C0F3D1F280F311DDE01A359AC +:104D0000BF4F40E0282E240EF90191919F019C3263 +:104D100051F0251440F4473031F09D934F5FF2CFAE +:104D20008FEF9FEFB8CFEDE6F0E0EC0FFD1FE40F43 +:104D3000F11D1082CE0183599F4F0E943630111110 +:104D40001BC0CE0183599F4F0E94FA0F6B017C015B +:104D5000FCE2CF1AF1E0DF0AE108F10825E1C21612 +:104D600021E4D2062FE0E206F104E0F56B017C01BC +:104D70001F5F81E0820DB9CF113031F4782E181603 +:104D8000BCF32AE1722EF4CF123031F4882E8F3F1B +:104D900079F793E0892EECCF133039F49FEF980F19 +:104DA000682E933028F3612CE3CF143031F4A82E11 +:104DB0008823F1F2AA24A394DBCF153031F4B82E66 +:104DC0008823B1F2BB24B394D3CF163029F4982EA4 +:104DD000823070F2912CCCCF173059F0183059F442 +:104DE000482EC6CF30E8C32E35E2D32EE12CF12C6D +:104DF000BFCF382EBDCF80916A0190916B01A091F9 +:104E00006C01B0916D018C159D05AE05BF0509F4CF +:104E100073C0C701B6010E944C21C0926A01D092B2 +:104E20006B01E0926C01F0926D01C701B6010E9426 +:104E30008205802F90918101961541F06092810149 +:104E4000662D82E090E00E944A21802F90917E01A1 +:104E5000971541F070927E01672D85E090E00E94E9 +:104E60004A21802F90917D01981541F080927D011B +:104E7000682D86E090E00E944A21802F90917F016A +:104E80009A1541F0A0927F016A2D87E090E00E9480 +:104E90004A21802F909180019B1541F0B0928001B2 +:104EA0006B2D88E090E00E944A21802F909169014B +:104EB000991541F090926901692D8CE090E00E9473 +:104EC0004A21802F90917C01931541F030927C0112 +:104ED000632D8DE090E00E944A21802F90917B010C +:104EE000941561F040927B01642D8EE090E00E9469 +:104EF0004A210E94E12104C080E09CCF8111F9CFBA +:104F00008091000190917F01913069F482608093DB +:104F100000018091000190918001913031F4816015 +:104F2000809300010ECE8D7FF2CF8E7FF9CF8091DE +:104F30008101882319F0833009F060C0B7E18B2E1E +:104F4000B1E09B2E18ECA12E13E0B12E0EE6E02E60 +:104F500001E0F02E84EDC82E83E0D82E1D821E8243 +:104F60001C821B829A82898283E090E00E946E21DB +:104F7000782E84E090E00E946E21182F072D4FEFCD +:104F8000741229C08F3F39F560E083E090E00E9401 +:104F90004A2160E084E090E00E944A2110E000E0B5 +:104FA00080918101833009F0A9C080917B01801735 +:104FB000110610F40C9403301F930F93DF92CF92DD +:104FC000FF92EF920E9476300F900F900F900F900B +:104FD0000F900F90D3C00E3F8FEF180709F780EEA8 +:104FE00093E00E94380F90E080E00E94E31D811161 +:104FF00005C080918101833009F4B0CF8091810197 +:105000008130E9F419A61AA618A61FA287E191E03B +:105010009EA38DA368E074E0CE0184549F4F0E944C +:105020005D3041E1BE0164547F4FCE0189960E94FC +:10503000DA1D8111B6C082EF93E00E9458131D82E1 +:105040001E821C821B8287E191E09A83898361E042 +:1050500082E291E00E94921D11E099249394EDE682 +:10506000AE2EB12CAC0EBD1EE8E0AE0EB11CFFE2C0 +:105070008F2EAAE23A2E8091000183FF03C08AE1BD +:105080000E94530F111104C086E49AE00E94380F69 +:1050900084E49AE00E94380F6EE1CE0183579F4F5F +:1050A0000E94EE1911E0882331F380E00E94DC2297 +:1050B0007C016FE37AE00E945430892B09F07BC0B9 +:1050C0008091000181FF04C086E29AE00E9458139B +:1050D00080E591E00E943914882309F4A7CC80E090 +:1050E0000E941A14882309F4F4CC8091000181FFF6 +:1050F0006BC08EE09AE00E94581366C01F930F9316 +:10510000BF92AF92FF92EF920E94763041E56EE639 +:1051100071E0CE0105960E94DA1D0F900F900F905E +:105120000F900F900F90811125C040E06EE671E066 +:10513000CE0105960E94DA1D882399F08D8D9E8DF3 +:10514000AF8DB8A1892B8A2B8B2B39F4CE01059614 +:105150000E940A0E8EE691E048CFCE0105960E948D +:105160000A0E0F5F1F4F0E3F9FEF190739F686EBB0 +:1051700093E037CFCE0105960E940A0E0F5F1F4FB6 +:10518000602F83E090E00E944A2184E090E00E943A +:105190006E211817F9F2612F84E090E00E944A21F5 +:1051A000D9CFCE0189960E940A0ECE0184549F4F1A +:1051B0000E94E31D44CF6CE07AE0C7010E945430A6 +:1051C000892B21F40E94702111E055CF67E07AE02D +:1051D000C7010E945430892BA9F362E07AE0C7012D +:1051E0000E945430892B09F052C00E94BC216B01EF +:1051F0007C0184E694E00E94380FC701B6010E944A +:10520000AC138FE594E00E9458138CE394E00E9465 +:1052100058138AE394E00E94380F68E0CE01875B60 +:105220009F4F0E94EE192A968FAD2A97883729F44E +:1052300082E394E00E9458131ECFCE01875B9F4FFC +:105240000E94FA0F6B017C01DC01CB018C52914072 +:10525000A109B10985319144AF40B10518F084E24C +:1052600094E0E8CF8AE194E00E94380FC701B601CC +:105270000E94AC1386E194E00E945813C701B60166 +:105280000E944C210E94E12185E00E94D3236EEF11 +:1052900079E0C7010E945430892B09F036C182E0C1 +:1052A00090E00E946E21182F88EE97E00E9458131C +:1052B00084ED97E00E94380F8BEC97E0112361F0AA +:1052C0008FEB97E0113041F087EB97E0123021F03F +:1052D000133021F480EB97E00E94380F86ED93E0C5 +:1052E0000E9454138AE897E00E94380F6AE070E049 +:1052F00080917E010E94D61386E897E00E94380FC5 +:105300006AE070E080917D010E94DD1382E597E004 +:105310000E94380F6AE070E080917C010E94D613F1 +:105320008FE497E00E94380F6AE070E080917B0183 +:105330000E94DD1387E497E00E9458138BE297E008 +:105340000E9458138CE097E00E94581382EF96E079 +:105350000E94581388ED96E00E9458138FEB96E058 +:105360000E9458138BEA96E00E9458138CE896E04E +:105370000E94581387E696E00E94581385E496E051 +:105380000E9458138DE396E00E9458138BE396E039 +:105390000E94380F0E946C05892BE1F386ED93E0A3 +:1053A0000E94060F813361F48AE296E00E9458134E +:1053B00060E082E090E00E944A210E94E12104CF57 +:1053C000823331F486E196E00E94581361E0F1CF18 +:1053D000833331F487E096E00E94581362E0E9CF0E +:1053E000843331F488EF95E00E94581363E0E1CFF5 +:1053F000853379F48AED95E00E94581360E083E0EC +:1054000090E00E944A2160E084E090E00E944A21FE +:10541000DBCE863301F58BEB95E00E94380F0E94BE +:105420006C05892BE1F386ED93E00E94060F8093D3 +:105430007E01682F85E090E00E944A210E94E121D0 +:1054400082EA95E00E94380F6AE070E080917E0168 +:105450000E94DD13B9CE8733D1F485E695E00E9432 +:10546000380F0E94580F97FD09C080937D01682F67 +:1054700086E090E00E944A210E94E1218EE395E0BF +:105480000E94380F6AE070E080917D01E1CF88339F +:10549000D1F48DE095E00E94380F0E94580F97FDDF +:1054A00009C080937C01682F8DE090E00E944A2122 +:1054B0000E94E1218FED94E00E94380F6AE070E0D5 +:1054C00080917C01C5CF8933D1F483EA94E00E94B6 +:1054D000380F0E94580F97FD09C080937B01682FF9 +:1054E0008EE090E00E944A210E94E1218DE794E045 +:1054F0000E94380F6AE070E080917B01A9CF883765 +:1055000009F0D2CE85E794E0F6CD6BEF79E0C701E4 +:105510000E945430892B19F58091000181FF0AC047 +:105520008DEE99E00E94380F6AE070E080918B0167 +:105530000E94DD130E94EA0F813051F4F70130829E +:10554000118240E0B7018DEA93E00E94C6173CCE7D +:1055500081E00E94DC227C010E946430F2CF6AEE7E +:1055600079E0C7010E945430892B09F09CC081E08A +:105570000E94DC227C01009711F410E07CCDAE96F5 +:105580001FAEAE97AF961FAEAF97C753DF4F99834D +:105590008883C95CD0402A961FAE2A972B961FAEEF +:1055A0002B978091AD03807709F467C0F701808164 +:1055B0000DEA13E08F3201F5C753DF4FE881F9811F +:1055C000C95CD04080818F3241F43196C753DF4FA0 +:1055D000F983E883C95CD040EFCF6091B303709149 +:1055E000B403CE01875B9F4F0E940014882309F407 +:1055F00044C08E01075B1F4FAE0147535F4FBE0192 +:1056000065557F4FC753DF4F88819981C95CD04072 +:105610000E947F0B882389F1C753DF4FE881F9810E +:10562000C95CD0408081882391F120E0AE014555CE +:105630005F4FB801CE0183599F4F0E948A1A882379 +:1056400089F080E2FE01E359FF4FDE01A75BBF4F07 +:1056500001900D928A95E1F7CE0183599F4F0E94E8 +:105660000A0EC7CFAE0145555F4FB801CE01835931 +:105670009F4F0E948B208111E4CF8091000181FF18 +:105680007CCF8FEC99E00E94380FC7011EC1AE019C +:1056900045555F4FB801CE0183599F4F0E948B2023 +:1056A000811192CDEACF6CEC79E0C7010E945430B1 +:1056B000892B09F0CDC081E00E94DC228C01892B6E +:1056C00009F45BCF0E94EA0F8330F9F468EC79E0CB +:1056D000C8010E945430892BC1F482E00E94DC2270 +:1056E00020E0AC016DEA73E0CE0105960E94101D2A +:1056F000882309F442CFCE0105960E94D218182FB4 +:10570000CE0105960E940A0EB6CC20E0A8016DEAF3 +:1057100073E0CE0105960E94101D81115DC0C80185 +:105720000E94643060E082E291E00E94921DC12CF0 +:10573000D12C76018D81811177C08091AD03807766 +:1057400009F472C08091BD039091BE03A091BF0384 +:10575000B091C0038F719927AA27BB27892B8A2B69 +:105760008B2B09F061C06DEA73E0CE0105960E94B3 +:105770001917882309F458C08D8183FF28C08076CB +:1057800009F445C02A968FAE2A972B961FAE2B9709 +:10579000BE01675B7F4FC8010E94920F8823B9F05A +:1057A000CE0105960E940A0E41E0BE01675B7F4F65 +:1057B000CE0105960E94DA1DCE0105960E94821543 +:1057C000882329F0FFEFCF1ADF0AEF0AFF0ACE0184 +:1057D00005960E940A0EAECF8D81807771F4CE01BE +:1057E00005960E940A0E41E0B801CE0105960E947E +:1057F000DA1D811107C010E083CFCE0105960E940B +:105800004B167DCFCE0105960E94821578CF60E0C1 +:10581000CE0105960E94AD0D0097C9F2BE01675BEF +:105820007F4F0E947E0DB4CF8091000181FF09C09F +:105830004AE0C701B6010E94661387EB99E00E9417 +:10584000581311E0CD28CE28CF2809F014CC95CEDE +:1058500064EB79E0C7010E945430892BB1F481E0F8 +:105860000E94DC228C01009709F487CE61EB79E07D +:105870000E94543060E0892B31F482E291E00E9472 +:10588000921D182FF8CBC801FACF6CEA79E0C70156 +:105890000E945430892B09F0D1C081E00E94DC22A3 +:1058A0008C01009709F469CE40E0BC01CE01059659 +:1058B0000E94DA1D81110CC08091000181FF5DCE34 +:1058C00087E999E00E94380FC8010E94EB1355CE7A +:1058D00082E00E94DC22009739F1FC010190002057 +:1058E000E9F73197BF01681B790B0E94D60F8C0135 +:1058F0000097D1F00E94FA0FAB01BC01CE010596D2 +:105900000E94BD0C811110C08091000181FF07C071 +:1059100085E899E00E94380FC8010E94EB13CE0180 +:1059200005960E940A0E29CE83E00E94DC22009791 +:1059300009F44FC0FC0101900020E9F73197BF0145 +:10594000681B790B0E94D60F009709F442C00E9491 +:10595000FA0F2B013C0184E00E94DC220097F1F158 +:10596000FC0101900020E9F73197BF01681B790B1A +:105970000E94D60F009791F10E94FA0F6B017C01F3 +:1059800010E000E0BE01675B7F4FCE0105960E94EC +:10599000A810019709F045C02A968FAD2A970F5F8E +:1059A0001F4FA80170E060E04416550666067706B2 +:1059B000C0F121E0C216D104E104F104E9F490EE53 +:1059C000980F9F3580F4682F86ED93E00E942F0F8B +:1059D000D9CF44244A94542C3201BDCFC12CD12CB0 +:1059E0007601C394CDCF8A3071F38D3061F383E8B3 +:1059F00099E00E94380FC6CF42E0C416D104E104FA +:105A0000F10439F460E170E00E94D61381E899E076 +:105A1000F0CF93E0C916D104E104F10409F0B2CF4C +:105A2000D2CFCE0105960E940A0E8091000183FD1F +:105A3000CBCB86ED93E00E945413C6CB6BE779E0A5 +:105A4000C7010E945430892B09F06FC081E00E9489 +:105A5000DC228C01009709F490CD41E0BC01CE011D +:105A600005960E94DA1D811107C08091000181FF17 +:105A700084CD86E699E026CF82E00E94DC22F09079 +:105A80000001009731F1FC0101900020E9F7319706 +:105A9000BF01681B790B0E94D60F8C010097C9F0DB +:105AA0000E94FA0FAB01BC01CE0105960E94BD0C0D +:105AB00081110FC084E599E0F1FE31CF2BCF1D316C +:105AC00040F442E050E064E271E0CE0105960E94AD +:105AD000D1118091000183FF03C08AE10E94530F1E +:105AE00082E599E00E94380F6EE1CE0183579F4F07 +:105AF0000E94EE19182F8823B1F0E82EF12CA7018F +:105B0000BE0163577F4FCE0105960E94D111E81662 +:105B1000F906A9F28091000181FF6DCE8CE399E036 +:105B20000E94581368CE11E0EBCD67E379E0C7011E +:105B30000E945430892B69F581E00E94DC22009795 +:105B400009F41BCD40E0BC01CE0105960E94DA1D90 +:105B50008823A9F06D8D7E8D8F8D98A14AE00E94DB +:105B60006613CE0105960E940A0E11E08091000195 +:105B700083FD81CA86ED93E00E9454137CCA809114 +:105B8000000181FF04C084E399E00E94380F10E017 +:105B9000EDCF6FE279E0C7010E945430892B09F004 +:105BA00052C182E299E00E94380F8091D203823084 +:105BB000A9F08330B1F08130B9F48EE199E00E9410 +:105BC0005813BE0163597F4F8AE00E94D3078111A9 +:105BD0000EC08EEF98E00E94380FCFCC8AE199E09A +:105BE000EECF85E199E0EBCF8DE099E0E8CF8CEE48 +:105BF00098E00E94380F60E170E0AE968FADAE97EE +:105C00000E94DD1383EE98E00E94380FAF968FADAF +:105C1000AF970E94530FE0968FADE0970E94530F0D +:105C200086ED93E00E94541389ED98E00E94380FAE +:105C30000DE610E00C0F1D1F0D5F1F4FF801819145 +:105C40008F010E94530FA016B106C1F78DEC98E0AA +:105C50000E94380FE6968FADE6976AE070E0829575 +:105C60008F700E94D6138BEC98E00E94380FE69656 +:105C70008FADE6976AE070E08F700E94DD138BEBCA +:105C800098E00E94380FEA966CAD7DAD8EAD9FAD69 +:105C9000EA974AE00E94661386ED93E00E9454134F +:105CA00086EA98E00E94380FEC968FADEC976AE098 +:105CB00070E08F700E94D61384EA98E00E94380F3B +:105CC000EC966FADEC9762956F7070E06053784F13 +:105CD000EB968FADEB978F70F0E18F9FC001112491 +:105CE000680F791F072E000C880B990B0E94AC13CC +:105CF00086ED93E00E945413BE01675B7F4F89E0FD +:105D00000E94D307882309F499C02A968FAD2A9759 +:105D1000807C09F060C060968FAD60978370C82E5C +:105D2000D12CDC2CCC24DD0CDD0C61968FAD619781 +:105D300024E0829FC0011124C82AD92A62968FAD1F +:105D400062978295869586958370C82A4FEFC41A0C +:105D5000D40AF12CE12C63968FAD63978370880F82 +:105D600064969FAD649797FB992790F9892B2F969E +:105D70009FAD2F979F70890F9927991F079704C090 +:105D8000CC0CDD1CEE1CFF1C8A95D2F7C114D1048B +:105D9000E104F10409F452C0BE01675B7F4F89E062 +:105DA0000E94D307882309F449C088E998E00E943B +:105DB000380FC701B6010E9493332DEB37E346E05D +:105DC0005AE30E94F9330E9464334AE00E9466134A +:105DD00084E998E090C9803489F56396CFAC6397E5 +:105DE000D12CF12CE12C8FEFC81AD80AE80AF80A56 +:105DF00062968FAD629790E0B0E0A0E0BA2FA92F35 +:105E0000982F8827C80ED91EEA1EFB1E61968FADFB +:105E100061978F7390E0B0E0A0E0DC0199278827BC +:105E20008C0D9D1DAE1DBF1D6C017D014AE0CC0C8B +:105E3000DD1CEE1CFF1C4A95D1F7A8CF85E898E041 +:105E40000E9458139ACB60E878E0C7010E94543052 +:105E5000892B09F4B9C96AE778E0C7010E94543078 +:105E6000009719F4FC01099588CB66E778E0C70133 +:105E70000E945430892BD9F481E00E94DC228C01ED +:105E8000009709F47ACB41E5BC01CE0105960E944A +:105E9000DA1D882329F0CE0105960E940A0E94C9C6 +:105EA0008091000181FF69CB80E698E00BCD69E528 +:105EB00078E0C7010E945430892B49F481E00E94A8 +:105EC000DC22009709F459CB0E94E31D7DC965E5EA +:105ED00078E0C7010E945430892B19F487E398E0D9 +:105EE0007ACE62E378E0C7010E945430892B81F5B5 +:105EF00081E00E94DC227C01009709F43ECB6FE236 +:105F000078E00E945430082F811114C090928001D3 +:105F1000809100018160809300016091800188E0A0 +:105F200090E00E944A210E94E12111E0002309F43F +:105F3000A2C823CB6BE278E0C7010E945430082F3F +:105F40008111EBCF10928001809100018E7FE3CF11 +:105F500063E278E0C7010E945430892B41F581E06B +:105F60000E94DC227C01009709F407CB60E278E014 +:105F70000E945430082F81110CC090927F018091B3 +:105F8000000182608093000160917F0187E090E0D2 +:105F9000C8CF6CE178E0C7010E945430082F81110E +:105FA000F3CF10927F01809100018D7FEBCF68E1EC +:105FB00078E0C7010E94543010910001892BF1F460 +:105FC00081E00E94DC227C01009709F4D6CA65E1D9 +:105FD00078E00E945430811108C0186010930001CD +:105FE00011E0882309F447C8C8CA61E178E0C70115 +:105FF0000E9454308111F4CF177FF0CF11FFBDCA3A +:106000008FEF97E040CB10E000E00C94DC27E6ED4A +:10601000F3E01382128288EE93E0A0E0B0E0848384 +:106020009583A683B78385E091E091838083E4EE36 +:10603000F5E082EE93E09183808381E092E09783A4 +:106040008683158214821382128210928B01109221 +:10605000AD031092AE0384E68093CD031092D20379 +:1060600080E58093D3031092D4030895FC01882720 +:106070009927E89421912032E9F3293010F02E304D +:10608000C8F32B3241F02D3239F4689404C00E94D9 +:106090006E30820F911D219120532A30C0F31EF4DF +:1060A000909581959F4F0895FB01DC018D9105909E +:1060B00080190110D9F3990B0895FB01DC010590BB +:1060C0000D920020E1F70895DC016C9161566A3170 +:1060D00008F0605E6F5B6D93C1F708957AE0979F5B +:1060E000902D879F802D910D11240895AEE0B0E092 +:1060F000ECE7F0E30C943B330D891E898EE08C8332 +:106100001A8309838FEF9FE79E838D83AE01475EDD +:106110005F4F6F89788DCE0101960E9499302F8153 +:106120003885020F131FF80110822E96E4E00C94BC +:106130005733ABE0B0E0EFE9F0E30C942D337C0192 +:106140003B018A01FC0117821682838181FFC8C14D +:10615000CE0101965C01F7019381F30193FD8591D6 +:1061600093FF81913F01882309F453C1853239F4AB +:1061700093FD859193FF81913F01853229F4B70109 +:1061800090E00E948932E7CF912C212C312CFFE145 +:10619000F31538F08B3211F190F4803209F183322B +:1061A00029F137FC3CC020ED280F2A3050F536FE8F +:1061B00020C08AE0989E200D1124922E06C08D32B8 +:1061C00091F0803371F7689430F8F30193FD859175 +:1061D00093FF81913F018111DACF21C0689431F89A +:1061E000689432F8F2CF689433F8EFCF689434F8BB +:1061F000ECCFEAE02E9E200D1124222E689435F873 +:10620000E4CF8E3229F436FC04C1689436F8DDCF31 +:106210008C3619F4689437F8D8CF8836B1F2982FB5 +:106220009F7D95549330E0F08336A1F18337C1F11F +:10623000833509F063C02801F2E04F0E511CF801CC +:10624000C080D180692D70E036FC02C06FEF7FEF17 +:10625000C6010E9473324C01689437F882010AC06B +:106260000C5F1F4FFFE3F98388248394912C650111 +:10627000E89437F833FE2DC0522C8114910471F547 +:10628000552009F468CFB70180E290E00E9489327E +:106290005A94F6CFF801808189830E5F1F4FE4CFB7 +:1062A0002801F2E04F0E511CF801C080D180692D09 +:1062B00070E036FC02C06FEF7FEFC6010E947E32B5 +:1062C0004C018201D5CFB70180E290E00E94893273 +:1062D0002A942814190409F0B0F7CECFF60137FC40 +:1062E000859137FE81916F01B70190E00E9489325C +:1062F00051105A94F1E08F1A9108BFCF843619F0EB +:10630000893609F077C0F80137FE6BC06081718172 +:10631000828193810C5F1F4FF32DFF763F2E97FFF5 +:1063200009C090958095709561957F4F8F4F9F4FD5 +:10633000689437F82AE030E0A5010E94B932C82EEF +:10634000CA188C2C432C36FE0CC0E89440F8C914B3 +:1063500040F434FE05C032FC03C0F32DFE7E4F2E08 +:10636000892C44FE95C0FE01EC0DF11D8081803327 +:1063700009F087C0242D297E422E842D8870582E46 +:1063800043FC95C040FE8FC09C2C821418F42C0C4A +:10639000922C981844FE91C0B70180E390E00E94CF +:1063A000893242FE09C088E790E041FE02C088E5DC +:1063B00090E0B7010E948932C91408F48AC0CA94D7 +:1063C000D12C9FEFC91AD90ACA0CDB1CF6018291A5 +:1063D0006F01B70190E00E948932AC14BD04B1F79F +:1063E0004FCF60817181072E000C880B990B0E5FD7 +:1063F0001F4F92CFD32CE894D4F82AE030E08537B1 +:1064000039F1232D297FD22E8F3601F148F48835BA +:10641000A9F0F701868197812B96E2E10C9449332C +:10642000803749F08837A9F7D4FE02C06894D2F8C3 +:1064300020E130E00DC06894D4F8F6CF34FE03C0FC +:10644000822F8660D82E20E132E002C028E030E0C2 +:10645000F801D7FE0FC060817181828193810C5F4A +:106460001F4FA5010E94B932C82ECA183D2CE894CE +:1064700037F867CF6081718190E080E00E5F1F4F39 +:10648000F0CF42FC02C0839478CF8394839475CF7D +:10649000842D867809F471CFF6CFB70180E290E0C1 +:1064A0000E94893283948214C0F3512C73CF522CF2 +:1064B0005818821408F46ECFF8CF842D867809F42A +:1064C0007BCF8BE241FE80E247FC8DE2B70190E09A +:1064D00071CFB70180E390E00E9489329A946CCF2B +:1064E0008FEF9FEF99CFFC01059061507040011034 +:1064F000D8F7809590958E0F9F1F0895FC016150ED +:10650000704001900110D8F7809590958E0F9F1FD5 +:1065100008950F931F93CF93DF93182F092FEB014B +:106520008B8181FD09C01FEF0FEF812F902FDF912D +:10653000CF911F910F91089582FF14C02E813F814A +:106540008C819D81281739073CF4E881F981CF01BE +:1065500001969983888310838E819F8101969F8302 +:106560008E83E3CFE885F985812F0995892BA1F3E7 +:10657000DACFFA01AA27283051F1203181F1E894CD +:106580006F936E7F6E5F7F4F8F4F9F4FAF4FB1E026 +:106590003ED0B4E03CD0670F781F891F9A1FA11D21 +:1065A000680F791F8A1F911DA11D6A0F711D811D22 +:1065B000911DA11D20D009F468943F912AE0269FE7 +:1065C00011243019305D3193DEF6CF010895462F46 +:1065D0004770405D4193B3E00FD0C9F7F6CF462F27 +:1065E0004F70405D4A3318F0495D31FD4052419390 +:1065F00002D0A9F7EACFB4E0A6959795879577954D +:106600006795BA95C9F700976105710508959B01D3 +:10661000AC010A2E06945795479537952795BA955C +:10662000C9F7620F731F841F951FA01D0895F99964 +:10663000FECF92BD81BDF89A992780B50895262F87 +:10664000F999FECF1FBA92BD81BD20BD0FB6F89457 +:10665000FA9AF99A0FBE019608952F923F924F929F +:106660005F926F927F928F929F92AF92BF92CF92E2 +:10667000DF92EF92FF920F931F93CF93DF93CDB7EB +:10668000DEB7CA1BDB0B0FB6F894DEBF0FBECDBF63 +:1066900009942A88398848885F846E847D848C8434 +:1066A0009B84AA84B984C884DF80EE80FD800C813D +:1066B0001B81AA81B981CE0FD11D0FB6F894DEBF20 +:1066C0000FBECDBFED0108950E94D83388F09F57CB +:1066D00098F0B92F9927B751B0F0E1F0660F771F06 +:1066E000881F991F1AF0BA95C9F714C0B13091F0FC +:1066F0000E94F233B1E008950C94F233672F782FA3 +:106700008827B85F39F0B93FCCF3869577956795C0 +:10671000B395D9F73EF490958095709561957F4F2C +:106720008F4F9F4F0895E89409C097FB3EF49095D2 +:106730008095709561957F4F8F4F9F4F9923A9F05A +:10674000F92F96E9BB279395F695879577956795E9 +:10675000B795F111F8CFFAF4BB0F11F460FF1BC02D +:106760006F5F7F4F8F4F9F4F16C0882311F096E9C0 +:1067700011C0772321F09EE8872F762F05C066236E +:1067800071F096E8862F70E060E02AF09A95660F27 +:10679000771F881FDAF7880F9695879597F90895E0 +:1067A00057FD9058440F551F59F05F3F71F04795C2 +:1067B000880F97FB991F61F09F3F79F087950895A7 +:1067C000121613061406551FF2CF4695F1DF08C0C6 +:1067D000161617061806991FF1CF869571056105E3 +:1067E00008940895E894BB2766277727CB0197F98B +:1067F00008950E940C340C947D340E946F3438F05C +:106800000E94763420F0952311F00C9466340C9499 +:106810006C3411240C94F3330E94D03370F3959FA1 +:10682000C1F3950F50E0551F629FF001729FBB2787 +:10683000F00DB11D639FAA27F00DB11DAA1F649F23 +:106840006627B00DA11D661F829F2227B00DA11DD6 +:10685000621F739FB00DA11D621F839FA00D611D5C +:10686000221F749F3327A00D611D231F849F600D7D +:10687000211D822F762F6A2F11249F5750409AF0A6 +:10688000F1F088234AF0EE0FFF1FBB1F661F771F32 +:10689000881F91505040A9F79E3F510580F00C94FD +:1068A00066340C94F3335F3FE4F3983ED4F386955B +:1068B00077956795B795F795E7959F5FC1F7FE2B9D +:1068C000880F911D9695879597F9089597F99F6779 +:1068D00080E870E060E008959FEF80EC0895002468 +:1068E0000A941616170618060906089500240A9435 +:1068F00012161306140605060895092E0394000CBB +:1069000011F4882352F0BB0F40F4BF2B11F460FF49 +:1069100004C06F5F7F4F8F4F9F4F0895AA1BBB1B13 +:1069200051E107C0AA1FBB1FA617B70710F0A61B8F +:10693000B70B881F991F5A95A9F780959095BC01B0 +:10694000CD010895A1E21A2EAA1BBB1BFD010DC0AB +:10695000AA1FBB1FEE1FFF1FA217B307E407F5070F +:1069600020F0A21BB30BE40BF50B661F771F881FEB +:10697000991F1A9469F760957095809590959B0181 +:10698000AC01BD01CF0108950E94D534A59F900DA3 +:10699000B49F900DA49F800D911D11240895EE0FBA +:1069A000FF1F0590F491E02D0994A29FB001B39FC1 +:1069B000C001A39F700D811D1124911DB29F700D08 +:1069C000811D1124911D0895FB01DC0104C08D91EE +:1069D0000190801921F441505040C8F7881B990B51 +:1069E0000895FB01DC0102C001900D92415050401E +:1069F000D8F70895DC0101C06D9341505040E0F795 +:106A00000895FB01DC014150504048F001900D9287 +:106A10000020C9F701C01D9241505040E0F7089591 +:046A2000F894FFCF18 +:106A240003000000002F0FE10E3C10E00E2D0F06B6 +:106A34000FC50E00000000331330133C1034100D4A +:086A44000A002F000A0D0000FA +:00000001FF diff --git a/Binaries/OpenLog_v43_with_bootloader.hex b/Binaries/OpenLog_v43_with_bootloader.hex new file mode 100644 index 0000000..86e7802 --- /dev/null +++ b/Binaries/OpenLog_v43_with_bootloader.hex @@ -0,0 +1,1736 @@ +:020000040000FA +:100000000C9442050C946A050C946A050C946A05DC +:100010000C946A050C946A050C946A050C946A05A4 +:100020000C946A050C946A050C946A050C946A0594 +:100030000C946A050C946A050C946A050C946A0584 +:100040000C94FE220C946A050C948B230C94482388 +:100050000C946A050C946A050C946A050C946A0564 +:100060000C946A050C946A05636172642E696E696A +:10007000740066696C652E6F70656E00726F6F74C8 +:100080002E696E697400766F6C756D652E696E6988 +:1000900074004572726F7220007E007E007E003C0C +:1000A00000626175642C6573636170652C657363B0 +:1000B000232C6D6F64652C766572622C6563686FA6 +:1000C0002C69676E6F726552582C6D617846696C49 +:1000D0006573697A652C6D617846696C656E756DBE +:1000E0000000256C642C25642C25642C25642C25AB +:1000F000642C25642C25642C25642C256400006365 +:100100006F6E6669672E74787400002000626175F6 +:10011000640909093A204D656E7520746F20636F7C +:100120006E666967757265206261756420726174BC +:1001300065007365740909093A204D656E75207470 +:100140006F20636F6E66696775726520737973746B +:10015000656D206D6F6465007265736574090909CA +:100160003A2043617573657320756E697420746FEE +:100170002072657365742C207573657320706172CD +:10018000616D657465727320696E20636F6E666958 +:10019000672066696C65006469736B0909093A2018 +:1001A00053686F7773206361726420696E666F7243 +:1001B0006D6174696F6E0073697A65203C66696C65 +:1001C000653E09093A2057726974652073697A653A +:1001D000206F66203C66696C653E20746F207465F4 +:1001E000726D696E616C0072656164203C66696C59 +:1001F000653E203C73746172743E203C6C656E6792 +:1002000074683E203C747970653E3A204F75747076 +:10021000757473203C6C656E6774683E20627974F7 +:100220006573206F66203C66696C653E20746F20A4 +:10023000746865207465726D696E616C2073746199 +:100240007274696E67206174203C73746172743ECD +:100250002E204F6D6974203C73746172743E20616E +:100260006E64203C6C656E6774683E20746F20720B +:100270006561642077686F6C652066696C652E2007 +:100280003C747970653E2031207072696E74732001 +:10029000696E2041534349492C203220696E204821 +:1002A00045582E006C730909093A2053686F77731B +:1002B0002074686520636F6E74656E74206F6620AD +:1002C0007468652063757272656E74206469726506 +:1002D00063746F72792E2E006D64203C64697265C0 +:1002E00063746F72793E09093A20437265617465DF +:1002F000732061203C6469726563746F72793E009B +:10030000617070656E64203C66696C653E09093AEF +:1003100020417070656E6473207465787420746F0A +:1003200020656E64206F66203C66696C653E006ED9 +:100330006577203C66696C653E09093A2043726521 +:1003400061746573203C66696C653E004261736947 +:100350006320636F6D6D616E64733A0043757272F2 +:10036000656E742046696C654E756D6265723A20E3 +:10037000004F70656E4C6F672076342E330000009E +:100380000000250028002B000000000023002600AC +:10039000290000000008000201000003040700001B +:1003A000000000000000636F6E6669672E74787449 +:1003B00000003200310021546F6F206D616E792092 +:1003C0006C6F67733A3221004C4F47253035752EDC +:1003D000545854004C4F47253035752E545854000E +:1003E00021546F6F206D616E79206C6F67733A31A5 +:1003F00021004572726F72206372656174696E6765 +:10040000205345514C4F47005345514C4F473030D6 +:100410002E545854000062707300476F696E672055 +:10042000746F20004F7574206F6620626F756E6464 +:10043000730045786974696E67003E00456E7465A7 +:1004400072206E6577206261756420726174652028 +:100450002827782720746F2065786974293A00204E +:10046000627073000A0D43757272656E742072615A +:1004700074653A200045786974696E67000A0D4D0D +:100480006178696D756D2066696C656E756D626504 +:100490007220696E20726F74617465206D6F64657F +:1004A0003A20000A0D456E746572206D6178696DA1 +:1004B000756D206C6F672066696C65206E756D6266 +:1004C000657220696E20726F74617465206D6F644F +:1004D0006520283020746F20323535293A20000AF3 +:1004E0000D4D6178206C6F672066696C65207369BB +:1004F0007A6520696E20726F74617465206D6F6417 +:1005000065206E6F7720284D42293A20000A0D455C +:100510006E746572206D61782073697A65206F66EC +:10052000206C6F672066696C657320696E204D4290 +:1005300020283020746F20323534293A20000A0DEB +:100540004E756D626572206F6620657363617065BC +:100550002063686172616374657273206E6565649F +:1005600065643A20000A0D456E746572206E756DE3 +:10057000626572206F6620657363617065206368D1 +:10058000617261637465727320746F206C6F6F6B3E +:1005900020666F7220283020746F20323535293A5A +:1005A00020000A0D4E6577206573636170652063D6 +:1005B00068617261637465723A2000456E74657299 +:1005C0002061206E657720657363617065206368C4 +:1005D000617261637465723A20004E6577206669C6 +:1005E0006C65206E756D626572207265736574202E +:1005F000746F207A65726F00526F74617465206C3D +:100600006F6767696E6700436F6D6D616E64207020 +:10061000726F6D707400417070656E642066696CF5 +:1006200065206C6F6767696E67004E657720666945 +:100630006C65206C6F6767696E67003E00782920E3 +:1006400045786974003929204D61782066696C65A8 +:10065000206E756D62657220696E20726F746174B0 +:1006600065206D6F6465003829204D6178206669CA +:100670006C652073697A6520284D422920696E20B7 +:10068000726F74617465206D6F6465003729204E48 +:10069000756D626572206F66206573636170652099 +:1006A00063686172616374657273003629204573F3 +:1006B000636170652063686172616374657200359F +:1006C00029205265736574206E65772066696C65B4 +:1006D000206E756D626572003429204D6F6465204F +:1006E000746F20726F74617465206C6F6767696ED8 +:1006F00067003329204D6F646520746F20636F6D30 +:100700006D616E642070726F6D7074003229204DBF +:100710006F646520746F20617070656E6420666917 +:100720006C65206C6F6767696E67003129204D6FBB +:10073000646520746F206E65772066696C65206C37 +:100740006F6767696E67004368616E67653A002C82 +:100750002000526F74617465206D6F6465206D6157 +:10076000782066696C652073697A6520284D422976 +:1007700020616E64206D61782066696C6520636F0E +:10078000756E743A20002078200043757272656E91 +:10079000742065736361706520636861726163745E +:1007A000657220616E6420616D6F756E743A200011 +:1007B000526F7461746500436F6D6D616E640041CA +:1007C0007070656E642066696C65004E65772066A2 +:1007D000696C650043757272656E7420626F6F7428 +:1007E000206D6F64653A20000D0A53797374656D4E +:1007F00020436F6E66696775726174696F6E00750C +:100800006E6B6E6F776E20636F6D6D616E643A20F4 +:10081000006F6666006F6E0065656D006F6666004E +:100820006F6E00766572626F7365006F6666006F4B +:100830006E006563686F005468697320636F6D6D47 +:10084000616E6420686173206265656E2072656DFB +:100850006F7665640070776400617070656E640027 +:100860004572726F72206372656174696E6720668B +:10087000696C653A20006E65770072657365740077 +:1008800073796E63007265616443534420666169E5 +:100890006C656400204D4200436172642053697AA4 +:1008A000653A20002F004D616E7566616374757244 +:1008B000696E6720646174653A20005365726961EE +:1008C0006C206E756D6265723A20002E000A0D561E +:1008D000657273696F6E3A200050726F647563744D +:1008E0003A20004F454D2049443A20004D616E7535 +:1008F00066616374757265722049443A20007265BE +:100900006164434944206661696C656400556E6B9F +:100910006E6F776E00534448430053443200534493 +:1009200031000A4361726420747970653A20006472 +:1009300069736B002D310073697A65006572726F9F +:10094000722077726974696E6720746F2066696CB3 +:1009500065003C004572726F72207365656B696E4D +:100960006720746F20004661696C656420746F2095 +:100970006F70656E2066696C6520007772697465BA +:100980000020002E004572726F72207365656B69DE +:100990006E6720746F20004661696C656420746F17 +:1009A000206F70656E2066696C65200072656164F9 +:1009B000002E2E006364002066696C652873292070 +:1009C00064656C65746564002D726600726D004527 +:1009D00072726F72206372656174696E67206469F8 +:1009E000726563746F72793A20006D6400566F6CA3 +:1009F000756D6520697320464154006C7300736502 +:100A00007400626175640068656C70003F0046693F +:100A10006C652073797374656D20696E69746961A2 +:100A20006C697A656400436C6F73696E6720646FEC +:100A3000776E2066696C652073797374656D0069E3 +:100A40006E6974003E0021000000000024002700B1 +:100A50002A0001020408102040800102040810202E +:100A60000102040810200404040404040404020223 +:100A700002020202030303030303200020002F00ED +:100A80002000073011241FBECFEFD8E0DEBFCDBF5E +:100A900011E0A0E0B1E0E4E2FAE602C005900D92B8 +:100AA000A832B107D9F725E0A8E2B1E001C01D9254 +:100AB000AC3EB207E1F715E0C2E4D5E004C02197EF +:100AC000FE010E94CF34C134D107C9F70E94F82338 +:100AD0000C9410350C9400002FB7F8948091E60523 +:100AE0009091E7054091E8055091E905841B950B2D +:100AF0002FBF97FF06C02091EA053091EB05820FCA +:100B0000931F0895CF92DF92EF92FF926B017C01C9 +:100B10001092C10086E08093C20060E079E08DE32E +:100B200090E0A70196010E94A234C901213060E241 +:100B3000360730F4C11461EED606E104F104B1F4D5 +:100B40001092C000C901969587950197292F269587 +:100B50002093C500969587958093C40088E980937B +:100B6000C100FF90EF90DF90CF90089522E0209396 +:100B7000C000EBCF833081F028F4813099F08230CF +:100B8000A9F008958730A9F08830C9F08430B1F415 +:100B9000809180008F7D03C0809180008F7780934B +:100BA0008000089584B58F7784BD089584B58F7DC6 +:100BB000FBCF8091B0008F778093B0000895809133 +:100BC000B0008F7DF9CFCF93DF93282F30E0F9016C +:100BD000EE56FC4F8491F901EE5AF54FD491F9018C +:100BE000EA59F54FC491CC23A1F081110E94BA05B6 +:100BF000EC2FF0E0EE0FFF1FE857FC4FA591B491EA +:100C0000EC91ED2381E090E009F480E0DF91CF9159 +:100C1000089580E090E0FACF1F93CF93DF93282FC1 +:100C200030E0F901EE56FC4F8491F901EE5AF54F90 +:100C3000D491F901EA59F54FC491CC23A9F0162FAC +:100C400081110E94BA05EC2FF0E0EE0FFF1FE25871 +:100C5000FC4FA591B4918FB7F894EC91111108C095 +:100C6000D095DE23DC938FBFDF91CF911F91089544 +:100C7000DE2BF8CFCF93DF9390E0FC01EE5AF54FD7 +:100C800024918A59954FFC0184918823D1F090E0FA +:100C9000880F991FFC01E85BF54FA591B491FC0109 +:100CA000E258FC4FC591D49161110EC09FB7F894E2 +:100CB0008C91E22FE0958E238C932881E223E883A8 +:100CC0009FBFDF91CF9108958FB7F894EC91E22BFD +:100CD000EC938FBFF6CF3FB7F89480916501909168 +:100CE0006601A0916701B091680126B5A89B05C077 +:100CF0002F3F19F00196A11DB11D3FBFBA2FA92F9B +:100D0000982F8827BC01CD01620F711D811D911D97 +:100D100042E0660F771F881F991F4A95D1F7089503 +:100D20008F929F92AF92BF92CF92DF92EF92FF92FB +:100D30004B015C010E946B066B017C010E946B06FB +:100D40006C197D098E099F09683E734081059105E4 +:100D5000A8F321E0821A9108A108B10888EEC80E14 +:100D600083E0D81EE11CF11C81149104A104B1049C +:100D700029F7FF90EF90DF90CF90BF90AF909F90BA +:100D80008F9008952FB7F89460916101709162017E +:100D900080916301909164012FBF0895CF93DF93F9 +:100DA000EC01E981FA8120819181809156018823AB +:100DB00061F08FB7F89430915601313099F43DB31A +:100DC000309355013DB33DBB8FBF2CBD9DBDE98127 +:100DD000FA8160E082810E940C0681E08B83DF91C2 +:100DE000CF91089580935501F0CF8EBD0DB407FECD +:100DF000FDCF08958FEF8EBD0DB407FEFDCF8EB5EC +:100E000008950F931F93CF93DF93EC010E94C206C6 +:100E10008B010E94FA068F3F69F00E94C206601B98 +:100E2000710BC617D707A8F780E0DF91CF911F910C +:100E30000F91089581E0F9CFCF93DF93FC012381D7 +:100E40002223D1F0EC010180F281E02D61E082816A +:100E50000E940C068FEF0E94F506809156018823B0 +:100E600051F09FB7F894209156018091550121309F +:100E700031F48DBB9FBF1B82DF91CF9108958FBF4F +:100E8000FACFCF92DF92EF92FF920F931F93CF93FF +:100E9000DF93EC018B017A010E94C2066B010E9474 +:100EA000FA068C838F3FB1F40E94C2066C197D094B +:100EB000693E7340A0F385E58883CE010E941C073C +:100EC00080E0DF91CF911F910F91FF90EF90DF9025 +:100ED000CF9008958E3F11F080E5EECFE1E0EE1A5D +:100EE000F1088FEF8EBDF8012FEF0DB407FEFDCF97 +:100EF0008EB52EBD8193CF01801B910B8E159F0562 +:100F0000A0F30DB407FEFDCF8EB50E0D1F1DF80129 +:100F100080831C820E94FA060E94FA0681E0D1CFEB +:100F2000DF92EF92FF920F931F93CF93DF938C0189 +:100F3000C62FD22FF32EE42ED52EFC0183818111F2 +:100F400003C0C8010E94CE06CC2321F08CE291E0C0 +:100F50000E9401078C2F80640E94F5068D2D0E944F +:100F6000F5068E2D0E94F5068F2D0E94F5068D2F19 +:100F70000E94F50687E8C11101C085E90E94F506C7 +:100F80000E94FA06CBE00E94FA06F801848387FFEC +:100F900002C0C150C1F7DF91CF911F910F91FF9017 +:100FA000EF90DF900895CF93DF93EB0120E030E0E6 +:100FB000A901682F8DEC93E00E949007882349F0E7 +:100FC00083E58093CD038DEC93E00E941C07C0E085 +:100FD0000EC040E150E0BE018DEC93E00E9441075D +:100FE000C82F882381F38DEC93E00E941C078C2F7F +:100FF000DF91CF9108950F931F93CF93DF93EC016F +:1010000089018D81833039F089E0440F551F661FB7 +:10101000771F8A95D1F79A01AB0168E1CE010E9452 +:101020009007882319F082E3888339C08EEF0E94ED +:10103000F506F80180818EBD818132961E5F0DB468 +:1010400007FEFDCF8EBDE017F10711F08191F7CFBC +:101050000DB407FEFDCF8FEF0E94F5068FEF0E94C3 +:10106000F5060E94FA068C838F71853099F480ED25 +:1010700097E00E940107182F8AE51123A9F220E0CA +:1010800030E0A9016DE0CE010E949007882361F055 +:1010900089E2CACF87E58883CE010E941C07CE0172 +:1010A0000E941C0710E007C00E94FA068111F0CFD1 +:1010B000CE010E941C07812FDF91CF911F910F91CC +:1010C00008950F931F93CF93DF93EC0189018D81D6 +:1010D000833039F089E0440F551F661F771F8A95CA +:1010E000D1F79A01AB0161E1CE010E9490078823FC +:1010F00039F080E38883CE010E941C0710E00CC009 +:1011000040E052E0B801CE010E944107182F882329 +:1011100091F3CE010E941C07812FDF91CF911F9187 +:101120000F910895EF92FF921F93CF93DF93FC01ED +:10113000208111E020FF14C0EC017C01F7E0EF0EEC +:10114000F11C4B815C816D817E81E981FA8197017F +:10115000808191810E94FB07182F811108C010E047 +:10116000812FDF91CF911F91FF90EF90089588819B +:1011700081FD04C088818E7F8883F2CFE981FA8166 +:101180004B815C816D817E8184859585A685B7853F +:10119000480F591F6A1F7B1F9701808191810E9410 +:1011A000FB078111E7CFDBCFCF92DF92EF92FF9267 +:1011B0001F93CF93DF93EC016A017B01122F8B8188 +:1011C0009C81AD81BE818C159D05AE05BF05B1F03A +:1011D000CE010E94920881110AC090E080E0DF9168 +:1011E000CF911F91FF90EF90DF90CF90089512FF65 +:1011F0000CC01882CB82DC82ED82FE821370888163 +:10120000182B1883CE010796EACFE981FA819E0157 +:10121000295F3F4FB701A601808191810E9461083B +:101220008111E7CFDACF8F929F92AF92BF92CF9288 +:10123000DF92EF92FF920F931F9310928B0141E088 +:1012400050E060E070E040938E0150938F01609316 +:1012500090017093910126E831E03093A80120932A +:10126000A7011092A6014FEF5FEFBA014093A901C9 +:101270005093AA016093AB017093AC01882309F4E9 +:1012800050C020E040E050E0BA0186EA91E00E94C0 +:10129000D408009761F480E01F910F91FF90EF90C8 +:1012A000DF90CF90BF90AF909F908F900895FC01FA +:1012B000E254FE4F20812F7771F78A539E4FFC0135 +:1012C000C080D180E280F380C114D104E104F10434 +:1012D00011F320E0B701A60186EA91E00E94D4084C +:1012E000FC01892BC1F2838594858115924099F682 +:1012F0008089823081F686859785892B61F22585E4 +:10130000209388018FEF820F8093890180E091E024 +:10131000291769F08F5F893041F488E080938A0152 +:10132000BACFC12CD12C7601D4CF990FF1CF8093B5 +:101330008A014689578970E060E04115510521F422 +:1013400044A155A166A177A14093920150939301C6 +:101350006093940170939501268537854601570166 +:10136000820E931EA11CB11C80929A0190929B0147 +:10137000A0929C01B0929D012189328930938D0108 +:1013800020938C01440F551F661F771F480D591D70 +:101390006A1D7B1D4093A2015093A3016093A40199 +:1013A0007093A50121893289A5E0220F331FAA95E8 +:1013B000E1F721503E4F232F33272695420F531F2D +:1013C000611D711D409396015093970160939801A0 +:1013D000709399010389148930E020E0011511050B +:1013E00021F400A111A122A133A1C41AD50AE60A51 +:1013F000F70AC00ED11EE21EF31E04C0F694E79455 +:10140000D794C7948A95D2F7D701C6010196A11D3A +:10141000B11D80939E0190939F01A093A001B09372 +:10142000A10185EFC8168FE0D806E104F10420F48D +:101430008CE080938B012FCF80E125EFC2162FEF38 +:10144000D206E104F10468F084A595A5A6A5B7A588 +:101450008093A2019093A301A093A401B093A5014E +:1014600080E280938B0181E017CF8F929F92AF92A1 +:10147000BF92CF92DF92EF92FF920F931F93423071 +:1014800051056105710560F480E01F910F91FF9097 +:10149000EF90DF90CF90BF90AF909F908F90089586 +:1014A000FC01C08CD18CE28CF38CC416D506E60608 +:1014B000F70650F3480159016A017B0185818032AA +:1014C00041F584899589A689B78917E0769567954E +:1014D000579547951A95D1F7480F591F6A1F7B1FDB +:1014E00023E0CF0180960E94D408009769F2E89427 +:1014F000C7F8DD24EE24FF24CC0CDD1CCC0CDD1C55 +:101500008C0D9D1DFC0180829182A282B38281E0BC +:10151000BCCF803109F0B8CF448955896689778975 +:101520004D0D511D611D711D23E0CF0180960E945C +:10153000D408009709F4A8CFDD24EE24FF24CC0CB6 +:10154000DD1CC80ED91EF60111830083E0CFCF92B7 +:10155000DF92EF92FF920F931F93CF93DF9342306E +:1015600051056105710550F48FEFDF91CF911F9107 +:101570000F91FF90EF90DF90CF900895FC01C08C09 +:10158000D18CE28CF38CC416D506E606F70660F320 +:1015900089016A017B01EC0185818032B9F584897A +:1015A0009589A689B789E7E0769567955795479518 +:1015B000EA95D1F7480F591F6A1F7B1F22E0CE0121 +:1015C00080960E94D408009779F2E894C7F8DD2449 +:1015D000EE24FF24CC0CDD1CCC0CDD1C8C0D9D1DE1 +:1015E000FC0180819181A281B381BF70488D598DAA +:1015F0006A8D7B8D481759076A077B0738F1F80118 +:1016000080839183A283B38381E0AFCF803109F0DF +:10161000ABCF44895589668977894D0D511D611D70 +:10162000711D22E0CF0180960E94D408009709F432 +:101630009BCFDD24EE24FF24CC0CDD1CC80ED91E6C +:10164000F60180819181B0E0A0E0D0CF80E08DCF25 +:101650009F92AF92BF92CF92DF92EF92FF920F9341 +:101660001F93CF93DF9300D000D0CDB7DEB75C01DE +:101670006A017B0119821A821B821C829E012F5FE4 +:101680003F4FB701A601C5010E94A70A982E87FD0A +:1016900034C000E010E09801B701A601C5010E9426 +:1016A000350A882351F1F50140855185628573859E +:1016B0004C155D056E057F0550F0F1E0CF1AD1089D +:1016C000E108F108F501C086D186E286F386C9807B +:1016D000DA80EB80FC809110D1CF0F900F900F90AB +:1016E0000F90DF91CF911F910F91FF90EF90DF90BE +:1016F000CF90BF90AF909F90089580E0EECFBF92C3 +:10170000CF92DF92EF92FF920F931F93CF93DF93CD +:10171000DB01FC019F012F5F3F4F8081803209F484 +:101720009EC01496FC93EE9313979F0189010E1BA4 +:101730001F0B722F632FE90189919E01882379F095 +:101740008F3209F08EC0CF01800F911F782F692F43 +:10175000EC012991CE012032C9F32F32B9F3EA010D +:1017600078836983E801CE0FDF1F8E010E1B1F0BEC +:10177000CE17DF0709F495C08A918E32B1F380321B +:10178000A1F30F3F110511F00CF06DC012961C93E0 +:101790000E931197ED012696CD01419620E22993F3 +:1017A0008C179D07E1F7EF019E012E1B3F0B8991DE +:1017B0008E32D1F38032C1F381E02115310509F079 +:1017C00080E0A80141505109EF01C00FD11F4F3FE8 +:1017D000540709F069C0F12C67E0B12C70E0D8E043 +:1017E000ED2E201731070CF0ACC06F01C20ED31ED6 +:1017F000E6019881903209F483C09E3221F42417C7 +:10180000350709F07DC0D92F9232E1F09C37D1F035 +:10181000C6EDDC2ED90EC5E0CD1510F09D3291F449 +:10182000C6ECDC2ED90EC5E0CD1560F4C5EADC2E81 +:10183000D90EC2E0CD1530F4CFEDDC2ED90ECDE5BA +:10184000CD15C8F52417350709F076C06A3009F4BC +:1018500077C06AE098E0B92EC0E1EC2E52C0F901E1 +:1018600059CF8C3559F480E0DF91CF911F910F91C2 +:10187000FF90EF90DF90CF90BF900895982F977FC3 +:10188000923289F38A3379F3982F9F7B9C3359F3F3 +:1018900092EC980F923038F380528F3508F446CF8F +:1018A000E2CF10E000E072CF9A919E3209F493CF1C +:1018B000415051098CCF2417350741F26B15F0F1D7 +:1018C000CFE9DC2ED90EC9E1CD1508F19052FE28E2 +:1018D000DD24D394DB0CED01CB0DD11D9E83D6E02E +:1018E000DD1518F01596DC921597BD2C0AC042172D +:1018F000530734F19A016AE0D8E0BD2E80E1E82E6A +:1019000080E02F5F3F4F6DCF80E09FE5DFE5D15452 +:10191000DA31F0F67E29DCCF81E08C9315966C915C +:101920001597A60FB11D8EE716968C93169781E337 +:1019300017968C9381E098CF6B1530F76A30B9F623 +:1019400080E016969C911697903209F48CCF8823EC +:1019500019F37F2111F0D2E0FD2EFC9285CFFC011E +:101960009C01255F3F4F80E080FB879587F991912F +:10197000890F2E173F07C1F708954F925F926F921C +:101980007F928F929F92AF92BF92CF92DF92EF920F +:10199000FF920F931F93CF93DF93EC014A015B01FA +:1019A0004C845D846E847F84A881AA2309F486C058 +:1019B000488959896A897B89481559056A057B05D3 +:1019C00069F081149104A104B10451F41C861D86B0 +:1019D0001E861F86888A998AAA8ABB8A81E073C07C +:1019E000A3FF59C0088D198D2A8D3B8D0815190547 +:1019F0002A053B0508F462C0EE81FF81848190E0F6 +:101A000009968A019B010150110921093109082E0B +:101A100004C036952795179507950A94D2F7750156 +:101A20006401B1E0CB1AD108E108F10804C0F694D2 +:101A3000E794D794C7948A95D2F7C016D106E206E8 +:101A4000F30628F0452B462B472B09F052C0A6FF82 +:101A50004BC0848D958DA68DB78D8C879D87AE8765 +:101A6000BF878E01045F1F4FC114D104E104F1044C +:101A700009F4B0CF4C855D856E857F8598018E8198 +:101A80009F810E94A70A91E0C91AD108E108F108D4 +:101A9000181654F313C0A5FFAFCFEE81FF818681E6 +:101AA000978125E0880F991F2A95E1F7B0E0A0E023 +:101AB00088159905AA05BB0508F08CCF4C865D8674 +:101AC0006E867F8680E0DF91CF911F910F91FF900E +:101AD000EF90DF90CF90BF90AF909F908F907F90CE +:101AE0006F905F904F9008958C8D9D8DAE8DBF8DC2 +:101AF000B4CFC01AD10AE20AF30AB3CFCF93DF936F +:101B0000DC01FC0190E048E080E05EE221912032BF +:101B1000D1F0983031F4EB01C80FD11D58838F5F9D +:101B200040E1EF01219728813FEB320F3A3130F449 +:101B30001C963C911C97342309F0205EEB01C80FE2 +:101B4000D11D28838F5F9F5F9B3001F7680F711D48 +:101B5000FB011082DF91CF910895CF93DF93EC01C9 +:101B6000262F4C895D896E897F898E819F81809621 +:101B70000E94D408009771F02C813D812F7033278B +:101B800045E0220F331F4A95E1F7820F931FDF9143 +:101B9000CF91089590E080E0FACFCF93DF93FC01DE +:101BA0002081211104C081E0DF91CF910895EC01E3 +:101BB000828182FF27C061E0CF010E94AD0DFC0150 +:101BC000892B29F489818160898380E0EDCF808130 +:101BD000853EC1F3888183FF08C0888D998DAA8DC9 +:101BE000BB8D848F958FA68FB78F8C8D9D8D938F96 +:101BF000828F8C8D9D8DAE8DBF8DB58BA48B8A8190 +:101C00008B7F8A838E819F8180960E949208882391 +:101C1000C9F2C9CFCF93DF93EC010E94CD0D18829A +:101C2000DF91CF9108953F924F925F926F927F9292 +:101C30008F929F92AF92BF92CF92DF92EF92FF92DC +:101C40000F931F93CF93DF9300D000D0CDB7DEB7B3 +:101C50004C01FC01828184608283A680B780448429 +:101C6000558466847784F501C084D184E284F3844A +:101C7000C414D504E604F70410F011E003C07301A6 +:101C8000620110E0FFEFCF1ADF0AEF0AFF0AF50149 +:101C9000808D918DA28DB38D8C159D05AE05BF05F0 +:101CA00038F4111131C0C084D184E284F384E5CFCB +:101CB0004C145D046E047F0439F19E012F5F3F4F89 +:101CC000B701A601C5010E94A70A87FD1DC0882390 +:101CD000C9F289819A81AB81BC81892B8A2B8B2B9C +:101CE00089F6112329F0F501C086D186E286F386B4 +:101CF0000FEF1FEF2FEF3FE0B701A601C5010E94D4 +:101D0000350A382E811118C0312C832D0F900F9079 +:101D10000F900F90DF91CF911F910F91FF90EF9057 +:101D2000DF90CF90BF90AF909F908F907F906F90FB +:101D30005F904F903F9008954114510461047104E5 +:101D400031F4F401C486D586E686F786DECF9701A6 +:101D50008601B301A201C5010E94350A8111F1CFAC +:101D6000D3CF9FB7F89480918201882319F08150D6 +:101D70008093820180918201811105C08CB58F7B97 +:101D80008CBD109256019FBF08952091E6053091B9 +:101D9000E7058091E8059091E9052817390769F072 +:101DA0008091E8059091E905E091E405F091E50561 +:101DB000E80FF91F808190E008958FEF9FEF08955D +:101DC0000895CF92DF92EF92FF920F931F93CF93DC +:101DD000DF937C018A01EB016B01C40ED51ECC158B +:101DE000DD0551F06991D701ED91FC910190F081F1 +:101DF000E02DC7010995F3CFC801DF91CF911F9165 +:101E00000F91FF90EF90DF90CF9008958091E805BB +:101E10009091E9052091E6053091E7058217930737 +:101E2000C9F09C012F5F3F4FE091E405F091E5057B +:101E3000E80FF91F80814091EA055091EB052417C6 +:101E4000350710F030E020E03093E9052093E805F5 +:101E500090E008958FEF9FEF08950C946C058091AA +:101E6000C00085FFFCCF6093C60081E090E008953C +:101E70000F931F93CF93DF938C01D0E0C0E0F80164 +:101E8000EC0FFD1F6491662341F086ED93E00E9404 +:101E90002F0F892B11F02196F2CFCE01DF91CF9138 +:101EA0001F910F910895682F86ED93E00C942F0FEA +:101EB000FF920F931F93CF93DF9310E000E0CFEFDB +:101EC000DFEF8AE0F82E0E946C05892BE1F386EDA6 +:101ED00093E00E94060F90ED980F9A3080F4F09EE8 +:101EE000E001F19ED00D11248053990BC80FD91F2A +:101EF0008E01CF3FD10539F334F3CFEFDFEFCE01C1 +:101F0000DF91CF911F910F91FF900895CF93C82F2C +:101F10000E94E30560E0892B09F461E08C2FCF91EA +:101F20000C940C06CF93DF939C01DB01F901EB01CC +:101F30008991BE01E90199919E01882361F19A324C +:101F400031F0891791F39F3381F380E02AC050E08C +:101F500040E030E020E008C0981711F08F33A9F47A +:101F6000CF0101961196FC019C918081992399F0F3 +:101F70008A3291F7CF01019621812223A9F09D0198 +:101F80002F5F3F4F582F492FEECFD9012F5F3F4F83 +:101F9000852F942FE8CF91919A32E9F381E0911146 +:101FA000D4CFDF91CF91089581E0FBCFFC0170E0A9 +:101FB0009F01281B390B261737075CF42191022E4D +:101FC000000C330B205331092A30310588F390E09F +:101FD00080E00895E8E2F1E080E020813181232B68 +:101FE00019F0928191118F5F339691E0E733F907F1 +:101FF000A1F70895CF93DF93EC0120E030E0A90131 +:10200000E99180ED8E0F8A3090F4AAE0B0E00E9452 +:10201000C4342E2FEE0F330B20533109032E000C46 +:10202000440B550B260F371F481F591FE9CFCA0114 +:10203000B901DF91CF910895C82F82E990E00E9405 +:10204000380F8CE790E0C83051F082E790E0C9305B +:1020500031F088E690E0C73011F486E890E00E9405 +:10206000380F83E00E94D32304960C94CD0D40E0FA +:1020700050E0BA010C94BD0C90E080E00895AF925E +:10208000BF92CF92DF92EF92FF920F931F93CF9365 +:10209000DF936C015C018FEFA80EB11C7601EA148E +:1020A000FB0408F047C02091E6053091E7058091D8 +:1020B000E8059091E90528173907E1F185010E1926 +:1020C0001F09F8948091E6059091E7057894C091F6 +:1020D000E805D091E9058C179D0730F58091EA0558 +:1020E0009091EB058C1B9D0B8017910708F48C01D8 +:1020F0006091E4057091E5056C0F7D1FA801C70193 +:102100000E94F134C00FD11F8091EA059091EB0538 +:10211000C817D90710F0C81BD90BD093E905C09395 +:10212000E805E00EF11EBBCFC817D907D8F210E0C2 +:1021300000E0F7CFC7018C199D09DF91CF911F9166 +:102140000F91FF90EF90DF90CF90BF90AF900895E8 +:102150008F929F92AF92BF92DF92EF92FF920F9376 +:102160001F93CF93DF93EC017B012881222309F495 +:10217000BBC08A8180FFB8C088889988AA88BB883C +:1021800023FF21C0888D998DAA8DBB8D881999094F +:10219000AA09BB0982309105A105B10518F5009780 +:1021A00009F530E020E0A901481B590BCA01DF9175 +:1021B000CF911F910F91FF90EF90DF90BF90AF9064 +:1021C0009F908F90089525FF0DC0EE81FF8186813D +:1021D000978135E0880F991F3A95E1F788159905A1 +:1021E00009F488C084011170EE81FF81B501A4015A +:1021F00089E076956795579547958A95D1F725FF9C +:1022000027C0848D958DA68DB78D480F591F6A1FE5 +:102210007B1F8E819F8120E080960E94D4080097CA +:1022200009F462C0800F911FFC018081F701808357 +:1022300088899989AA89BB890196A11DB11D888BBE +:10224000998BAA8BBB8B21E030E090E080E0ABCF94 +:10225000D380D4220115110581F4D1100EC0892834 +:102260008A288B2881F526FF29C0848D958DA68D1F +:10227000B78D8C879D87AE87BF87EE81FF814C85A8 +:102280005D856E857F8542505109610971098481A0 +:1022900004C0440F551F661F771F8A95D2F78089A7 +:1022A0009189A289B389840F951FA61FB71FAC011E +:1022B000BD014D0D511D611D711DABCF8C8D9D8DCF +:1022C000AE8DBF8DD6CF4C855D856E857F859E0199 +:1022D000245F3F4FCF010E94A70A87FD05C08111EF +:1022E000CCCF8881807749F48981826089838FEFA0 +:1022F0009FEF5DCF30E020E0A8CF21E030E081E02B +:1023000090E051CFEF92FF920F931F93CF93DF9303 +:102310001F92CDB7DEB77C01962FF7014089518916 +:10232000628973898A019B0185E036952795179507 +:1023300007958A95D1F70F7011F0911129C0BE0150 +:102340006F5F7F4FC7010E94A810813051F090E06D +:1023500080E00F90DF91CF911F910F91FF90EF9050 +:102360000895F70180899189A289B3894F96A11DAB +:10237000B11D808B918BA28BB38BF70186819781E6 +:102380008796F0E20F9F90011124820F931FE1CFF7 +:10239000405E5F4F6F4F7F4F408B518B628B738BD3 +:1023A000ECCF2F923F924F925F926F927F928F92DB +:1023B0009F92AF92BF92CF92DF92EF92FF920F93D4 +:1023C0001F93CF93DF93EC015B014A01888183FF68 +:1023D000C5C08A8181FFC2C083FDB7C0A40170E07F +:1023E00060E088899989AA89BB8980959095A09594 +:1023F000B09584179507A607B70708F4AFC0640126 +:102400001E018CE0280E311C088919892A893B8914 +:10241000C114D10409F4E1C08E819F81B901A801E2 +:1024200029E076956795579547952A95D1F7DC0170 +:102430001396FC90F4221170F1101BC04C855D8541 +:102440006E857F850115110509F0F4C04115510510 +:102450006105710509F488C091010E94A70A87FDF2 +:102460007DC0811106C0CE010E94130E882309F49D +:1024700075C0EE81FF814C855D856E857F854250FC +:10248000510961097109848104C0440F551F661FF9 +:10249000771F8A95D2F780899189A289B389840FA1 +:1024A000951FA61FB71FAC01BD014F0D511D611D2A +:1024B000711D0115110529F4C114B2E0DB0608F005 +:1024C0006EC080E092E0801B910B76018C159D051B +:1024D00008F47C010115110571F4488859886A884F +:1024E0007B88888D998DAA8DBB8D25E0481659066D +:1024F0006A067B0608F421E0CF0180960E94D4088A +:10250000009761F1A701B501800F911F0E94F1347E +:102510000E0D1F1D0115124039F48E819F8180968A +:102520000E9492088823D1F088899989AA89BB8959 +:102530008E0D9F1DA11DB11D888B998BAA8BBB8B06 +:10254000AE0CBF1CCE18DF085FCF488D598D6A8D49 +:102550007B8DCE010E94BD0C811140CF89818160AD +:1025600089838FEF9FEF4DC08C8D9D8DAE8DBF8D7C +:102570000097A105B10571F4CE010E94130E8823C6 +:1025800069F38C859D85AE85BF858C8F9D8FAE8FC1 +:10259000BF8F6FCF8C879D87AE87BF876ACF83A1A0 +:1025A00094A1A5A1B6A1481759076A077B0741F472 +:1025B00010A28FEF9FEFDC0183A394A3A5A3B6A382 +:1025C000EE81FF819501808191810E94FB07882324 +:1025D00029F2E12C82E0F82EA7CF888D998DAA8D63 +:1025E000BB8D80179107A207B30738F48A81088F43 +:1025F000198F2A8F3B8F84608A838A8187FD14C05C +:10260000C401DF91CF911F910F91FF90EF90DF9068 +:10261000CF90BF90AF909F908F907F906F905F9082 +:102620004F903F902F900895CE010E94CD0D8111C3 +:10263000E7CF94CFFC0142505109610971098481AF +:1026400004C0440F551F661F771F8A95D2F78089F3 +:102650009189A289B389480F591F6A1F7B1F31CF07 +:1026600004960C94D111CF93DF931F92CDB7DEB7B0 +:10267000698341E050E0BE016F5F7F4F04960E9486 +:10268000D1110F90DF91CF910895FB0101900020AF +:10269000E9F73197AF01461B570BDC01ED91FC9137 +:1026A0000280F381E02D09946FE171E00C944513F1 +:1026B000CF93DF930E94380FEC0186ED93E00E94E8 +:1026C00054138C0F9D1FDF91CF9108958F929F928D +:1026D000AF92BF920F931F93CF93DF93CDB7DEB727 +:1026E000A1970FB6F894DEBF0FBECDBF19A242303E +:1026F00008F44AE08E010F5D1F4F842E912CB12CFF +:10270000A12CA50194010E94A234E62FB901CA01AF +:10271000EA3004F5E05DD801EE938D01232B242BE4 +:10272000252B79F790E080E0109729F0BD0186ED28 +:1027300093E00E944513A1960FB6F894DEBF0FBE3A +:10274000CDBFDF91CF911F910F91BF90AF909F9020 +:102750008F900895E95CDFCFCF92DF92EF92FF92E6 +:10276000CF93DF9397FF19C06B017C018DE20E942C +:10277000530FEC0166277727CB016C197D098E0971 +:102780009F094AE00E9466138C0F9D1FDF91CF9135 +:10279000FF90EF90DF90CF9008954AE0DF91CF91C6 +:1027A000FF90EF90DF90CF900C946613462F682F28 +:1027B00070E090E080E00C946613CF93DF930E946A +:1027C000D613EC0186ED93E00E9454138C0F9D1FED +:1027D000DF91CF910895CF93DF93D0E0C0E00097D1 +:1027E00031F0BC0186ED93E00E944513EC0186EDCB +:1027F00093E00E9454138C0F9D1FDF91CF91089599 +:10280000FC01808181110FC080E2DF01982F1D92B1 +:102810009A95E9F777836683DB0115969C91903151 +:1028200029F0903211F080E0089580E4808381E007 +:1028300082830895CF93C82F8DEA93E00E940A0EF9 +:1028400066E871E08DEA93E00E940014882369F045 +:10285000CC2359F08091AD03807749F08DEA93E065 +:1028600090938501809384018C2FCF91089580E00F +:10287000FCCF8F929F92AF92BF92CF92DF92EF9256 +:10288000FF920F931F93CF93DF93D82FC92F1092EE +:10289000D0031092CD031092D20383ED93E0909376 +:1028A000CF038093CE030E94C2066B010091CE033A +:1028B0001091CF038AE0F801828361E00E943A061A +:1028C00061E0F80182810E940C061FB7F8948091A4 +:1028D0008201811127C0E0E7FAE08491ECE5FAE09B +:1028E0009491E82FF0E0EE0FFF1FE85BF54FA59104 +:1028F000B491EC91E92321F461E08AE00E940C0696 +:1029000061E08AE00E943A068CB580618CBD8CB58E +:1029100080648CBD61E08DE00E943A0661E08BE04E +:102920000E943A06809182018F5F809382011FBFCF +:10293000E091CE03F091CF0382E5808311828091F4 +:10294000D003811104C08DEC93E00E94CE06E0918B +:10295000CE03F091CF0361E082810E940C061AE061 +:102960008FEF0E94F5061150D9F7E091CE03F09158 +:10297000CF0360E082810E940C061AE020E030E084 +:10298000A90160E08DEC93E00E949007082F813050 +:1029900029F11150A9F480E28093CD038DEC93E0EE +:1029A0000E941C0780E0DF91CF911F910F91FF9053 +:1029B000EF90DF90CF90BF90AF909F908F90089551 +:1029C0008DEF0E94F50698E0A92E92E0B92E0E94A4 +:1029D000FA06F1E0AF1AB108D1F7D0CF2AEA31E018 +:1029E00040E050E068E08DEC93E00E94900714E036 +:1029F000853041F50093D2038091D203812C912C34 +:102A00005401823029F4812C912CA12C80E4B82E21 +:102A100020E030E0A90167E38DEC93E00E9490078D +:102A2000A501940169E28DEC93E00E949007882350 +:102A3000B9F00E94C2066C197D09613D774040F3F0 +:102A400083E4AACF0E94FA068093D1031150D1F7F4 +:102A50008A3A21F482E08093D203CECF85E29CCFE4 +:102A60008091D2038230D1F420E030E0A9016AE302 +:102A70008DEC93E00E949007882311F087E38CCFC0 +:102A80000E94FA06807C803C19F483E08093D20394 +:102A90000E94FA060E94FA060E94FA068DEC93E064 +:102AA0000E941C07E091CE03F091CF03D083C18335 +:102AB0008DEC93E090938701809386018DEA93E0FB +:102AC0000E940A0E81E00E9413098823A9F066E89B +:102AD00071E08DEA93E00E940014882309F462CF2C +:102AE0009091AD03907709F45DCF2DEA33E03093F8 +:102AF00085012093840157CF80E00E941309811142 +:102B0000E6CF50CF9F92AF92BF92CF92DF92EF92DB +:102B1000FF920F931F93CF93DF93CDB7DEB7A097AC +:102B20000FB6F894DEBF0FBECDBF19821A82DC014A +:102B30002C9123FF16C012962C9121FF12C08C01FC +:102B4000FC01448D558D668D778D411551056105CC +:102B5000710549F461E0C8010E94AD0D7C01009748 +:102B600049F480E076C0868197810E94280B81110C +:102B7000F1CFF7CF0E94AF0C982E85EEF70180833E +:102B8000D8011C9216968D919C9180960E94920875 +:102B9000882339F3F8019381992309F45AC0808579 +:102BA0009185A285B385668177819E012F5F3F4F16 +:102BB00069010097A105B10509F05DC0C9010E9436 +:102BC0000014882371F2EE24E394F12C25EEA22E5A +:102BD000D80113968C9113978E1518F214964D9177 +:102BE0005C914E195F0970E060E085E0440F551F6D +:102BF000661F771F8A95D1F7C6010E94BD0C8823F6 +:102C000009F4AFCF60E0C6010E948211FC01892B5C +:102C100009F4A7CF83858F3009F0A3CF9081892F46 +:102C20008F71E8129ECF858589119BCFA082D80134 +:102C30001696ED91FC9180A1816080A3BFEFEB1A05 +:102C4000FB0A96FFC5CFF8018681978180960E9486 +:102C50009208A0960FB6F894DEBF0FBECDBFDF91ED +:102C6000CF911F910F91FF90EF90DF90CF90BF9089 +:102C7000AF909F9008952CE1F60111922A95E9F703 +:102C800020E1298321E02B8378876F838D8F9E8FAE +:102C9000AF8FB8A398CFCF93DF93FC01208124FF9F +:102CA0000CC0EC010E94371061E0CE010E9482113D +:102CB000009739F48981882381F080E0DF91CF91FA +:102CC0000895FC012081222341F0253E69F32E3234 +:102CD00059F3838583FDE8CFF0CF88E088838A812C +:102CE00082608A83CE01DF91CF910C948215CF92BE +:102CF000DF92EF92FF920F93CF93DF93EC0180E28C +:102D0000DE011D928A95E9F7FB01868197819F83F9 +:102D10008E835D834C83C48CD58CE68CF78CC886FF +:102D2000D986EA86FB86FA01EF70FF27DC019796C9 +:102D300045E0EE0FFF1F4A95E1F7BD016E0F7F1FC3 +:102D4000DB011B963C9133FD19C0AC014E0F5F1F98 +:102D5000DA01D2963C9137713883DB011B964C9196 +:102D6000487111F4386038830B83322F337031305F +:102D700009F449C030F0323009F443C0188280E0D1 +:102D800038C031E025FDFACF3A835A8151FF03C0A4 +:102D90004881417199F7322F3878352B3A83DC011D +:102DA00093964D915D916D917C9196974C8B5D8B37 +:102DB0006E8B7F8BE80FF91F43AD54AD70E060E080 +:102DC000BA0155274427DF01AF5BBF4FCD90DC90A0 +:102DD000F12CE12C4C295D296E297F2925FF1AC091 +:102DE000411551056105710581F48A8184608A83EA +:102DF00081E0DF91CF910F91FF90EF90DF90CF9026 +:102E0000089533E0C1CF32E0BFCF0E94280B81117B +:102E1000ECCFB4CF4C8F5D8F6E8F7F8FED5BFF4F0C +:102E200080819181A281B381888F998FAA8FBB8F76 +:102E3000DFCF8F929F92AF92BF92EF92FF920F934C +:102E40001F93CF93DF937C01EB0100E010E08888B3 +:102E50009988AA88BB8860E0CE010E948211009701 +:102E6000A1F1FC012081222381F12E3221F1253EA6 +:102E700011F1338533FD21C0002321F00E94AF0CF6 +:102E8000811323C0B501A40185E076956795579518 +:102E900047958A95D1F720E0BE01C7010E947716B9 +:102EA000DF91CF911F910F91FF90EF90BF90AF9066 +:102EB0009F908F90089500E0CACF3F30E1F726FF42 +:102EC000C6CF022F0F711585C2CF80E0E9CFCF9218 +:102ED000DF92EF92FF920F931F93CF93DF936C01DA +:102EE000EB017A014115510509F44AC041505109DD +:102EF00070E060E085E0440F551F661F771F8A95DC +:102F0000D1F7CE010E94BD0C81110AC080E0DF9193 +:102F1000CF911F910F91FF90EF90DF90CF90089588 +:102F200060E0CE010E948211FC01892B79F3838538 +:102F30008F3049F580818F71813029F515850E2DEF +:102F400085E1E816F10408F004E160E0CE010E949A +:102F500082110097D9F2FC012081253EB9F222238B +:102F6000A9F22E3299F2002321F00E94AF0C8113B6 +:102F7000CDCF20E0A701BE01C6010E947716C7CFC2 +:102F8000CB010E94371000E010E0DFCF8F929F92BC +:102F9000AF92BF92CF92DF92EF92FF920F931F9367 +:102FA000CF93DF93CDB7DEB7C655D1090FB6F894EE +:102FB000DEBF0FBECDBF8C016B01942E19A61AA6E1 +:102FC00018A61FA287E191E09EA38DA3C8010E94CD +:102FD000371097E1A92E91E0B92E2FE2822E1D82A3 +:102FE0001E821C821B82BA82A9828D818111C6C079 +:102FF000F8018081807709F4C1C080899189A28914 +:10300000B3898F719927AA27BB27892B8A2B8B2BF2 +:1030100009F0B4C0B801CE0105960E9419178823A3 +:1030200009F4ACC08D81811105C0CE0105960E94C6 +:103030000A0EDBCF8076D9F02A968FAE2A972B9690 +:103040001FAE2B978D81982F9870887771F39923F5 +:1030500009F486C0BE01675B7F4FC6010E94920FD4 +:10306000882319F381E067968FAF67977DC060E092 +:10307000CE0105960E94AD0D0097B9F2BE01675BC7 +:103080007F4F0E947E0DDECFBE01675B7F4F86EDD6 +:1030900093E00E944513E82E8D8184FF05C08EE7E2 +:1030A0009AE00E94380FE80E8D8183FF14C0FDE086 +:1030B000FE1530F08CE79AE00E94380FE394F7CFCA +:1030C0008AE79AE00E94380F6D8D7E8D8F8D98A1D2 +:1030D0004AE00E94661386ED93E00E945413CE01ED +:1030E00005960E940A0E67968FAD6797823009F0A9 +:1030F00076CFE0908301E1E0EE1508F470CF89A56A +:1031000081116DCFF8018081807709F468CF408903 +:1031100051896289738985E07695679557954795BA +:103120008A95D1F741505109B801CE0189960E9484 +:103130006717882309F453CFE394E092830142E0B8 +:103140004F0DB601CE0189960E94C617809183016A +:10315000815080938301CE0189960E940A0E3FCF51 +:10316000F2E06796FFAF6797F12C9F1409F48CCFBC +:1031700080E89AE00E94380FF394F7CFCA5ADF4FE5 +:103180000FB6F894DEBF0FBECDBFDF91CF911F9178 +:103190000F91FF90EF90DF90CF90BF90AF909F90F6 +:1031A0008F900895CF92DF92EF92FF920F931F932B +:1031B000CF93DF93CDB7DEB7A0970FB6F894DEBFFD +:1031C0000FBECDBFFC0119821A829081907781F4E5 +:1031D00080E0A0960FB6F894DEBF0FBECDBFDF91A2 +:1031E000CF911F910F91FF90EF90DF90CF900895B6 +:1031F0008F01CF010E943710F801C088D188E28882 +:10320000F38860E0C8010E948211009769F4F80118 +:1032100081818111DDCFF8018081807609F057C06E +:10322000C8010E944B16D5CFFC012081222399F3BF +:10323000253E11F32E3201F3838583FDDDCF898195 +:103240008111C6CFF8018081807709F4C1CF95E064 +:10325000F694E794D794C7949A95D1F7A601B8014C +:10326000CE0101960E946717882309F4B1CF8981A6 +:1032700084FF25C0CE0101960E94D218882309F44C +:10328000A7CFFFEFCF1ADF0AA60170E060E085E06C +:10329000440F551F661F771F8A95D1F7F801808963 +:1032A0009189A289B38984179507A607B70709F4FE +:1032B000A3CFC8010E94BD0C81119ECF89CF8B8105 +:1032C00082608B83CE0101960E948215D7CF81E068 +:1032D00080CFAF92BF92CF92DF92EF92FF920F9387 +:1032E0001F93CF93DF93EC01888185FF0DC010E021 +:1032F000812FDF91CF911F910F91FF90EF90DF9081 +:10330000CF90BF90AF90089588899989AA89BB8989 +:1033100081159E4FAF41B10550F7CE010E94130EAB +:10332000182F882321F3EE81FF81CC84DD84EE8485 +:10333000FF8432E0C31AD108E108F108848104C097 +:10334000CC0CDD1CEE1CFF1C8A95D2F7808991897C +:10335000A289B389C80ED91EEA1EFB1E25E0B7015B +:10336000A601CF0180960E94D4085C01892B09F444 +:10337000BECF80E092E0F5019C01119221503040D7 +:10338000E1F701E0EE81FF818281081780F4950169 +:10339000B701A601400F511D611D711D80819181F2 +:1033A0000E94FB07882309F4A2CF0F5FEBCF90E0C8 +:1033B000B0E0A0E029E0880F991FAA1FBB1F2A9543 +:1033C000D1F7488959896A897B89840F951FA61F7F +:1033D000B71F888B998BAA8BBB8B8ACF9F92AF929A +:1033E000BF92CF92DF92EF92FF920F931F93CF93F2 +:1033F000DF937C01962EC62ED12CA60170E060E0F2 +:103400000E94FA34D0E0560181E0A81AB1080D2FCD +:1034100010E00A151B059CF50E946C05892BE1F351 +:1034200086ED93E00E94060FC82F85E00E94860F6C +:10343000C83011F0CF3791F4DD2349F3D150F701B3 +:10344000ED0FF11D108288E00E94530F8BE091E098 +:103450000E94380F88E00E94530FD9CF809100015D +:1034600080FF03C08C2F0E94530FCD3009F586EDED +:1034700093E00E945413F701E00FF11F1082E8E27D +:10348000F1E08FE0DF011D928A95E9F710E0C1E0DD +:103490008C2F90E09C012F5F3F4F8E0D9F1DFC01F4 +:1034A0008081803271F0C216D30621F5C92D0CC07F +:1034B000CA3009F4ACCFF701E00FF11FC083DF5F22 +:1034C000A6CFC216D30691F30E94EA0F853080F48E +:1034D00090E0FC01EE0FFF1FE80FF91FE85DFE4FC3 +:1034E000C701810F911D918380838C2F811B828363 +:1034F000CF5F1C2FCF5FC91558F28D2FDF91CF9171 +:103500001F910F91FF90EF90DF90CF90BF90AF9001 +:103510009F9008952F923F924F925F926F927F9269 +:103520008F929F92AF92BF92CF92DF92EF92FF92D3 +:103530000F931F93CF93DF93CDB7DEB729970FB6C5 +:10354000F894DEBF0FBECDBF4C017F836E83FA01BE +:10355000672BD1F480E029960FB6F894DEBF0FBE3A +:10356000CDBFDF91CF911F910F91FF90EF90DF9032 +:10357000CF90BF90AF909F908F907F906F905F9013 +:103580004F903F902F900895AE81BF818C918077AE +:1035900009F3D4018C918111DDCFA180B2808081AB +:1035A000837033243394882349F0C5010C966DE071 +:1035B00070E00E948E3433243394360E29837F01C9 +:1035C000EE81FF81F987E887CF010E9437101C82C6 +:1035D0001D821A82212C10E000E01B8297012A5FD5 +:1035E0003F4F3F832E83A885B98550964D905D90BF +:1035F0006D907C90539795E0769467945794479498 +:103600009A95D1F7620161E0CD010E948211009785 +:1036100009F062C0E885F985818181119BCFE9813C +:10362000E4FF98CF8E2F83708150823008F092CFC4 +:10363000112311F0CC80DD80131500F560E0888542 +:1036400099850E948211892B09F0E4C0A885B9856B +:1036500011968C9181117ECF888599850E94691978 +:10366000882309F477CFA885B9851696ED91FC914A +:103670008281823018F4105F131570F3BB81BB2375 +:1036800009F4F8C0F701558002E010E08EE7482EFB +:103690003701F6E06F0E711CD70111962D913C9108 +:1036A0001297C801820F931F1396ED91FC912E0F74 +:1036B0003F1F2E173F0709F4AFC0AC01B5E0440F20 +:1036C000551FBA95E1F7840F951F4191042E000C08 +:1036D000550B84279527EDCFDC012C91253E11F069 +:1036E00021110EC0111102C04C825D82131508F425 +:1036F0001F5F222309F493CF253E21F400E073CF0E +:10370000131550F12E32D1F3FC0133853F3009F00F +:103710005AC0011123C026FF66CF022F0F71F58515 +:10372000FA83202EE22DE150FF0BAF01FDE0F49F64 +:103730009001F59F300D11242A153B05F8F6FC0188 +:10374000D12C64E06D1590F081819281A216B306B0 +:10375000B1F4892B99F647CF10E0D4CF2A942211E7 +:10376000CDCF2585BA812B17E9F2C8CF8AE08D1518 +:1037700018F084819581EACF86819781E7CF8F3FCA +:10378000910511F008F0BACF4FEB480F4A3108F419 +:10379000805EB9016F5F7F4FD70113964D915C91A9 +:1037A000240F351FD9019C912FEB290F2A3108F4E2 +:1037B000905E9813A3CFD3943296BDE0DB1609F444 +:1037C00012CF9B01BECF33FD99CF002399F0E1E0EA +:1037D0002E12C0CE0E94AF0CFA818F13BBCEB981DE +:1037E000B6FDB8CE2981A60168857985C4010E94FD +:1037F0007716B1CE4BE050E06E817F810E94E434B9 +:10380000892B09F0F0CED7018C9180FFE8CF31E011 +:103810003B83E9CE1F5F10CFB3E0B51510F4A3E0F2 +:103820005A2E34E0350D282F2F702A3008F08AC028 +:10383000205DF701E30FF11D2683F4E0969587954F +:10384000FA95E1F73150531670F3F701E50DF11DCC +:103850004682888599850E94371061E08885998520 +:103860000E948211009709F06FC0E885F985818177 +:10387000811170CEA60170E060E0E5E0440F551FB5 +:10388000661F771FEA95D1F7888599850E94BD0C40 +:10389000882309F45FCE0FEF030D102F3FE0532E66 +:1038A0003701B6E06B0E711C4DE0442E112309F474 +:1038B00077C060E0888599850E9482116C01892B10 +:1038C00009F448CEA885B9851696ED91FC9180A1A2 +:1038D000816080A3312E101302C0689436F8F6017F +:1038E000308253861486C3010E94AF0CD6011D9608 +:1038F0008C931D975B961C921E925A97F701238119 +:103900003481832D8F718150990B489EA001499E6F +:10391000500D1124F60160E04A155B0570F5D901E0 +:10392000A40FB51F8C91082E000C990B653080F503 +:10393000928381836F5F4F5F5F4F32966D3061F787 +:103940001150B4CF295C75CFDC012C91222309F4EE +:1039500091CF1B962C9123FD80CF4BE050E0BC0112 +:10396000C3010E94E434892B09F077CF0F5F1F4F0A +:103970000436110509F090CEEDCD81E090E0A4165B +:10398000B50611F490E080E0919581959109CECF34 +:103990006B3018F495838483CDCF97838683CACF09 +:1039A000A885B98550964D905D906D907C90539709 +:1039B00060E0CD010E948211009709F4CBCD25E093 +:1039C00076946794579447942A95D1F7620120E240 +:1039D000FC0111922A95E9F7F70136962BE0DC01FC +:1039E00001900D922A95E1F7D7012C912871FC01E5 +:1039F000248721E238E2318B208B40E058E0578762 +:103A00004687338B228B318F208F578B468BA8852F +:103A1000B9851696ED91FC9180A1816080A3E2CEDC +:103A2000DF92EF92FF920F931F93CF93DF93CDB767 +:103A3000DEB7E3970FB6F894DEBF0FBECDBF7C01B3 +:103A40008B015BAB4AABD22E19821A82FC018081BA +:103A5000882379F080E0E3960FB6F894DEBF0FBEBE +:103A6000CDBFDF91CF911F910F91FF90EF90DF902D +:103A700008956115710571F3FB018081807751F321 +:103A8000EAA9FBA980818F32D9F4EAA9FBA9808138 +:103A90008F3221F43196FBABEAABF7CFF8016681A8 +:103AA0007781811104C0C7010E940014D4CFCE01D8 +:103AB00001960E940014882369F28E010F5F1F4F48 +:103AC000AE014E5C5F4FBE016F5D7F4F8AA99BA91F +:103AD0000E947F0B882309F4BDCFEAA9FBA980814E +:103AE0008823B9F020E0AE014F5D5F4FB801C701F8 +:103AF0000E948A1A882309F4ADCF80E2F701DE0123 +:103B0000119601900D928A95E1F7C7010E940A0E65 +:103B1000D4CF2D2DAE014F5D5F4FB801C7010E947C +:103B20008A1A99CF1F93CF93DF93CDB7DEB7A097B3 +:103B30000FB6F894DEBF0FBECDBF162F19821A82C2 +:103B4000FC0120812F3281F4218121110DC0862FAB +:103B50000E941A14A0960FB6F894DEBF0FBECDBF18 +:103B6000DF91CF911F91089520E0AC016DEA73E0E1 +:103B7000CE0101960E94101D882361F399819077F0 +:103B8000B9F090E2FE013196ADEAB3E001900D92FA +:103B90009A95E1F71123F1F28091AD03807731F02E +:103BA0008DEA93E09093850180938401812FD2CF99 +:103BB00080E0D0CFFB01242F6091840170918501BA +:103BC000AF010C94101D2F923F924F925F926F9213 +:103BD0007F928F929F92AF92BF92CF92DF92EF929D +:103BE000FF920F931F93CF93DF93CDB7DEB7CA52E7 +:103BF000D1400FB6F894DEBF0FBECDBFBC01CC5F85 +:103C0000DE4F1882C450D140CB5FDE4F1882C550C2 +:103C1000D140CE5FDE4F19821882C250D14087E179 +:103C200091E0C050DF4F99838883C050D140C0904D +:103C30007C012091810180E091E08C0F9D1F049612 +:103C400041E3233009F049E10E94DA1D811103C0EC +:103C500089E00E941C10C45EDE4F88819981AA8190 +:103C6000BB81CC51D140892B8A2B8B2B61F400E096 +:103C700011E00C0F1D1F0C5F1F4FC8010E94371071 +:103C8000C8010E94CD0DD12CF12CE12C24E1CC0CEB +:103C9000DD1CEE1CFF1C2A95D1F70E94C2064B01C9 +:103CA0005C018FE990E00E94380F61E085E00E949E +:103CB0000C0630907D01332009F468C0312C412C72 +:103CC000512C320180E091E08C0F9D1F0496C75D5E +:103CD000DE4F99838883C952D14090917D01C85DA0 +:103CE000DE4F9883C852D140391608F035C1CE0155 +:103CF00001960E943F108C01282E882309F4E5C00C +:103D0000998180917E019813DEC03394FE01329632 +:103D100081E0821558F421919213D2C03394C85D8A +:103D2000DE4F2881C852D1402311CBC0A8015527AE +:103D3000BE016F5F7F4FCE0193950E94301385E0E7 +:103D40000E94860F80918101833039F6420C511C0C +:103D5000611C711C4C145D046E047F0408F4BDCF1B +:103D600000E011E00C0F1D1F0C5F1F4FC8010E94E7 +:103D7000CD0DC8010E940A0E60E085E00E940C068D +:103D80008BE990E00E94380F312C3EC0412C512C21 +:103D9000320100E011E00C0F1D1F0C5F1F4FCE0120 +:103DA00001960E943F10282E882309F448C0AC01D8 +:103DB0005527BE016F5F7F4FCE0193950E94301350 +:103DC00085E00E94860F80918101833041F7420C8B +:103DD000511C611C711C4C145D046E047F04F8F2CC +:103DE00000E011E00C0F1D1F0C5F1F4FC8010E9467 +:103DF000CD0DC8010E940A0E60E085E00E940C060D +:103E00008DE990E00E94380F832DC65DDE4F0FB61E +:103E1000F894DEBF0FBECDBFDF91CF911F910F9100 +:103E2000FF90EF90DF90CF90BF90AF909F908F90DA +:103E30007F906F905F904F903F902F9008950E94D9 +:103E4000C206681979098A099B09653F7140810595 +:103E5000910508F4A4CFC8010E94CD0D60E085E073 +:103E60000E940C06809164008062809364008091BF +:103E700064008460809364009AE0B92E61E08B2D29 +:103E80000E943A0660E08B2D0E940C06B3948EE0EF +:103E9000B812F4CF83B7816083BF889583B78E7FD4 +:103EA00083BF809164008B7F809364008091640065 +:103EB0008F7D809364000E94C2064B015C016FCF2E +:103EC000312C8F5F26CF312C31CF0E94C20668196A +:103ED00079098A099B09653F71408105910508F4BC +:103EE000FCCEC75DDE4F88819981C952D1400E94C6 +:103EF000CD0D60E085E00E940C0680916400806238 +:103F000080936400809164008460809364008AE000 +:103F1000B82E61E08B2D0E943A0660E08B2D0E9446 +:103F20000C06B3948EE0B812F4CF83B7816083BFE0 +:103F3000889583B78E7F83BF809164008B7F809349 +:103F40006400809164008F7D809364000E94C206AB +:103F50004B015C01302EC1CE00E011E00C0F1D1FA3 +:103F60000C5F1F4FC8010E94CD0D20917D012223BF +:103F700009F4BFC0CC5FDE4F8881C450D14083FFBD +:103F8000B8C0CA5FDE4F8881C650D14081FFB1C042 +:103F9000C45EDE4F88819981AA81BB81CC51D1401A +:103FA0006C017D01C21AD108E108F1088C159D054C +:103FB000AE05BF0508F49DC0892B8A2B8B2B09F415 +:103FC00098C0CC5EDE4F88809980AA80BB80C451A7 +:103FD000D140B701A601C8010E94BD0C882309F495 +:103FE00088C0C65FDE4F88819981CA50D140C11414 +:103FF000D104E104F10409F043C0C05EDE4F488102 +:1040000059816A817B81C052D1400E94280B88234C +:1040100009F46FC0C05EDE4F188219821A821B82BB +:10402000C052D140C45EDE4FC882D982EA82FB8290 +:10403000CC51D140CA5FDE4F8881C650D1408460E8 +:10404000CA5FDE4F8883C650D14080E091E08C0F7C +:104050009D1F04960E94CD0D882309F44AC0B70124 +:10406000A60184169506A606B70610F4B501A401AC +:1040700080E091E08C0F9D1F04960E94BD0C39C01A +:10408000C05FDE4F488159816A817B81C051D14038 +:104090009E012C5D3E4F0E94A70A87FD2AC08823FF +:1040A00009F2CC5DDE4F488159816A817B81C4521F +:1040B000D140C65FDE4F88819981CA50D1400E94AD +:1040C000280B8823B1F0C05FDE4F488159816A8197 +:1040D0007B81C051D1400FEF1FEF2FEF3FE0C65F54 +:1040E000DE4F88819981CA50D1400E94350A8111E2 +:1040F00099CF80E091E08C0F9D1F04960E940A0EDC +:1041000060E085E00E940C0689E990E00E94380F8B +:104110003324339479CEDF92EF92FF920F931F9363 +:10412000CF93DF93CDB7DEB7A0970FB6F894DEBF7D +:104130000FBECDBF8C016115710509F49CC0DB0178 +:104140009C91907709F497C07B0122E5C8010E94F9 +:104150008A1A882309F48FC081E0F801828380E104 +:10416000D82ED082C8010E946919882309F483C01F +:10417000F80184859585A685B785848F958FA68F50 +:10418000B78FC8010E943710C8010E94CD0D882347 +:1041900009F471C061E0C8010E94AD0DFC01892BDA +:1041A00009F469C0D38680E2DE01119601900D9278 +:1041B0008A95E1F78EE28983FE013296CE010C9654 +:1041C00020E22193E817F907E1F7D8011696ED915F +:1041D000FC9117975C964D915D916D917C915F97E5 +:1041E0004250510961097109848104C0440F551F6F +:1041F000661F771F8A95D2F780899189A289B38932 +:10420000480F591F6A1F7B1F21E0CF0180960E9433 +:10421000D408009781F120E2FE013196DC01019083 +:104220000D922A95E1F72EE22A83F701448D558DF0 +:10423000668D778D7E8B6D8B5C8F4B8F20E2FE01C0 +:104240003196DC01909601900D922A95E1F7D80104 +:1042500016968D919C918096A0960FB6F894DEBF2D +:104260000FBECDBFDF91CF911F910F91FF90EF90C7 +:10427000DF900C94920880E0A0960FB6F894DEBF11 +:104280000FBECDBFDF91CF911F910F91FF90EF90A7 +:10429000DF9008950C941F33CF92DF92EF92FF923C +:1042A0006B017C01B701992777FD9095892F89E0F3 +:1042B00090E00E944A219927F7FC9A958F2D7E2D38 +:1042C0006D2D8AE090E00E944A216C2D8BE090E0F9 +:1042D000FF90EF90DF90CF900C944A210C9417330D +:1042E000CF93DF9383E090E00E946E21C82F84E09B +:1042F00090E00E946E21D82F81E793E00E9458132E +:104300008CE593E00E94380FBE0190E080E04AE027 +:104310000E94661386ED93E00E9454138CE493E0B0 +:104320000E9458138FE293E00E94581380E093E0BC +:104330000E94581388ED92E00E94581384EA92E09C +:104340000E94581387EE91E00E94581387EB91E08A +:104350000E94581387E991E00E94581388E591E084 +:104360000E94581382E391E00E9458138DE091E07F +:10437000DF91CF910C9458130F931F93CF93DF933A +:1043800089E090E00E946E21D82F8AE090E00E94A0 +:104390006E21C82F8BE090E00E946E214C2F50E0E0 +:1043A00070E060E0762F652F542F44276D2B8A0133 +:1043B0009B01082BC901B801DF91CF911F910F918B +:1043C00008953F924F925F926F927F928F929F9249 +:1043D000AF92BF92CF92DF92EF92FF920F931F9313 +:1043E000CF93DF93CDB7DEB7CE58D1090FB6F8948F +:1043F000DEBF0FBECDBF26961FAE269727961FAEF7 +:10440000279725961FAE1EAE259787E191E023964C +:104410009FAF8EAF239780E00E941A14811103C0D2 +:1044200088E00E941C106FEF70E0CE018C579F4F08 +:104430000E945D3019821A8220E0AE014C575F4F16 +:104440006DEA73E08E010F5F1F4FC8010E94101DBF +:10445000882381F019821A8221E0AE014C575F4F08 +:104460006DEA73E0C8010E94101D882319F0C8018D +:104470000E94821581E4E82EF12CEC0EFD1E84E0F2 +:10448000E80EF11C49E1BE016C577F4FC7010E9445 +:10449000DA1D0E94BC21D62EC72EB82EA92E85E08B +:1044A00090E00E946E21982E86E090E00E946E219E +:1044B000882E82E090E00E946E21782E87E090E0C6 +:1044C0000E946E21682E88E090E00E946E21582E96 +:1044D0008CE090E00E946E21482E8DE090E00E94DA +:1044E0006E21382E8EE090E00E946E211F928F93F5 +:1044F0001F923F921F924F921F925F921F926F9254 +:104500001F927F921F928F921F929F92AF92BF92A3 +:10451000CF92DF9282EE90E09F938F936E0195E6AB +:10452000C90ED11CDF92CF920E947630F601019025 +:104530000020E9F73197AF014C195D09B601C701B9 +:104540000E94D111CE018F5B9F4F0E94541361EAEC +:1045500070E0C8010E945D30F80101900020E9F789 +:104560003197AF01401B510BB801C7010E94D11117 +:10457000C7010E94CD0DC7010E940A0E0FB6F89424 +:10458000DEBF0FBECDBFC257DF4F0FB6F894DEBF00 +:104590000FBECDBFDF91CF911F910F91FF90EF9094 +:1045A000DF90CF90BF90AF909F908F907F906F9053 +:1045B0005F904F903F900895E7E3F1E09EE1DF01C7 +:1045C0001D929A95E9F790E0FC01EE0FFF1FE80FAE +:1045D000F91FE85DFE4F608171816115710559F029 +:1045E0004281442341F04F3108F04EE150E087E32F +:1045F00091E00C94013590E080E008951F920F92B5 +:104600000FB60F9211242F933F938F939F93AF93E5 +:10461000BF938091610190916201A0916301B0917B +:1046200064013091600123E0230F2D3758F5019686 +:10463000A11DB11D209360018093610190936201DF +:10464000A0936301B093640180916501909166012C +:10465000A0916701B09168010196A11DB11D8093E1 +:10466000650190936601A0936701B0936801BF91C3 +:10467000AF919F918F913F912F910F900FBE0F900F +:104680001F90189526E8230F0296A11DB11DD2CFC9 +:104690001F920F920FB60F9211242F933F934F93B7 +:1046A0005F938F939F93EF93FF9320915C013091E1 +:1046B0005D0180915A0190915B012817390791F4AF +:1046C0008091C1008F7D8093C100FF91EF919F91F8 +:1046D0008F915F914F913F912F910F900FBE0F904F +:1046E0001F901895C9010196E0915801F091590168 +:1046F000E20FF31F208140915E0150915F0184170A +:10470000950710F090E080E090935D0180935C014C +:104710002093C600DACF1F920F920FB60F9211248A +:104720002F933F934F935F938F939F93EF93FF93B9 +:104730008091C0008C719091C6004091E605509127 +:10474000E7059A012F5F3F4FE091E405F091E50501 +:10475000E40FF51F90834091EA055091EB05241773 +:10476000350710F030E020E04091E8055091E90570 +:104770004217530799F4816090915701892B8093D8 +:104780005701FF91EF919F918F915F914F913F91D1 +:104790002F910F900FBE0F901F9018953093E70543 +:1047A0002093E605E9CFC82FD0E010E000E00C1719 +:1047B0001D07BCF461E085E00E940C0668EC70E027 +:1047C00080E090E00E94900660E085E00E940C0688 +:1047D00068EC70E080E090E00E9490060F5F1F4F51 +:1047E000E6CF60ED77E080E090E00E949006DDCFBC +:1047F000CF93DF93CDB7DEB7CA5CD1090FB6F8947B +:10480000DEBF0FBECDBF789484B5826084BD84B511 +:10481000816084BD85B5826085BD85B5816085BDBB +:1048200080916E00816080936E0010928100809173 +:1048300081008260809381008091810081608093FB +:104840008100809180008160809380008091B10020 +:1048500084608093B1008091B00081608093B0004B +:1048600080917A00846080937A0080917A008260DF +:1048700080937A0080917A00816080937A008091A1 +:104880007A00806880937A001092C10061E085E030 +:104890000E943A0683B7817F83BF83B7816083BF5D +:1048A00080917A008F7780937A0080E880BF8FE3D1 +:1048B00080937E0083E080937F0080916400806815 +:1048C000809364008091640088608093640080918C +:1048D00064008064809364008091640081608093B0 +:1048E00064000E94BC218B019C010C5211402109E3 +:1048F0003109053111442F40310508F09AC0609309 +:104900006A0170936B0180936C0190936D0182E05A +:1049100090E00E946E21843008F09EC08093810157 +:1049200085E090E00E946E219FEF980F9E3F08F077 +:104930009BC080937E0186E090E00E946E218F3FB5 +:1049400009F49BC080937D0187E090E00E946E2176 +:10495000823008F09BC080937F0188E090E00E9445 +:104960006E21823008F09BC080938001809100010D +:1049700090917F01913009F09BC08260809300018B +:104980008091000190918001913009F093C0816085 +:10499000809300018CE090E00E946E21823008F04C +:1049A0008BC0809369018DE090E00E946E2180931E +:1049B0007C018EE090E00E946E2180937B01C0908C +:1049C0006A01D0906B01E0906C01F0906D01C7011D +:1049D000B6010E94820584EFC81681E0D806E10482 +:1049E000F104D4F4A7019601A4E0220F331F441F61 +:1049F000551FAA95D1F760E074E284EF90E00E9421 +:104A0000A234215031093093C5002093C400809115 +:104A1000C0008D7F8093C00084EB93E00E94380F2C +:104A200080E591E00E94391481114EC086E00E9419 +:104A30001C1080E895E2A0E0B0E080936A019093BA +:104A40006B01A0936C01B0936D0160E875E280E0AA +:104A500090E00E944C215BCF1092810160E082E0E7 +:104A600090E00E944A215CCF8AE180937E016AE156 +:104A700085E090E00E944A215ECF83E080937D0133 +:104A800063E086E090E00E944A215ECF81E080935F +:104A90007F0161E087E090E00E944A215ECF81E0E3 +:104AA0008093800161E088E090E00E944A215ECF1F +:104AB0008D7F64CF8E7F6CCF1092690160E08CE0B7 +:104AC00090E00E944A216FCF80E00E941A14811169 +:104AD00002C088E0ACCF82EB93E00E94380F2E96A4 +:104AE0001FAE2E972F961FAE2F972D961FAE1EAE80 +:104AF0002D9787E191E02B969FAF8EAF2B9780E0AB +:104B00000E941A14882329F366EA73E0CE01859681 +:104B10000E945D30F9E4CF2ED12CCC0EDD1E94E046 +:104B2000C90ED11C40E0BE016B5D7F4FC6010E94E3 +:104B3000DA1D082F81119DC0C6010E940A0E0E9435 +:104B4000E121809169018111F2C160E00E943A0681 +:104B500061E080E00E940C0680E00E94E30501977E +:104B600009F4E5C10E94B10E61E08DE00E943A06B1 +:104B700061E08DE00E940C0618E269E170E080E0DF +:104B800090E00E94900685E00E94860F80E00E94DF +:104B9000E305019709F4CBC169E170E080E090E0A2 +:104BA0000E9490068DE00E94860F80E00E94E3053F +:104BB000019709F4BCC1115001F760E875E280E08B +:104BC00090E00E944C2160E082E090E00E944A2147 +:104BD0006AE185E090E00E944A2163E086E090E08F +:104BE0000E944A2161E087E090E00E944A2161E052 +:104BF00088E090E00E944A2160E08CE090E00E9412 +:104C00004A2164E68DE090E00E944A216CE38EE048 +:104C100090E00E944A2180E590E00E9439148823A8 +:104C200009F404CF80E00E941A14882309F451CFBC +:104C30000E94E1210E94B10E61E085E00E943A06E7 +:104C400061E08DE00E943A0661E085E00E940C067A +:104C500061E08DE00E940C0664EF71E080E090E07E +:104C60000E94900685E00E94860F8DE00E94860FCC +:104C7000F3CFFE0131967F01512C1C2DBE016359EB +:104C80007F4F812F9D2D0E94A810019709F048C0E9 +:104C9000AE968FADAE97282F8C3219F080538A30A4 +:104CA00038F4F70121937F015394FFE15F12E6CFBF +:104CB00089E490E08C0F9D1F04960E940A0E10E07C +:104CC00080E044E6442E54E6352E912CBB24B39468 +:104CD000AA24A39463E0862E7AE1772E612CE0E883 +:104CE000CE2EE5E2DE2EE12CF12C851508F083C0F6 +:104CF00021E030E02C0F3D1F280F311DDE01A359AC +:104D0000BF4F40E0282E240EF90191919F019C3263 +:104D100051F0251440F4473031F09D934F5FF2CFAE +:104D20008FEF9FEFB8CFEDE6F0E0EC0FFD1FE40F43 +:104D3000F11D1082CE0183599F4F0E943630111110 +:104D40001BC0CE0183599F4F0E94FA0F6B017C015B +:104D5000FCE2CF1AF1E0DF0AE108F10825E1C21612 +:104D600021E4D2062FE0E206F104E0F56B017C01BC +:104D70001F5F81E0820DB9CF113031F4782E181603 +:104D8000BCF32AE1722EF4CF123031F4882E8F3F1B +:104D900079F793E0892EECCF133039F49FEF980F19 +:104DA000682E933028F3612CE3CF143031F4A82E11 +:104DB0008823F1F2AA24A394DBCF153031F4B82E66 +:104DC0008823B1F2BB24B394D3CF163029F4982EA4 +:104DD000823070F2912CCCCF173059F0183059F442 +:104DE000482EC6CF30E8C32E35E2D32EE12CF12C6D +:104DF000BFCF382EBDCF80916A0190916B01A091F9 +:104E00006C01B0916D018C159D05AE05BF0509F4CF +:104E100073C0C701B6010E944C21C0926A01D092B2 +:104E20006B01E0926C01F0926D01C701B6010E9426 +:104E30008205802F90918101961541F06092810149 +:104E4000662D82E090E00E944A21802F90917E01A1 +:104E5000971541F070927E01672D85E090E00E94E9 +:104E60004A21802F90917D01981541F080927D011B +:104E7000682D86E090E00E944A21802F90917F016A +:104E80009A1541F0A0927F016A2D87E090E00E9480 +:104E90004A21802F909180019B1541F0B0928001B2 +:104EA0006B2D88E090E00E944A21802F909169014B +:104EB000991541F090926901692D8CE090E00E9473 +:104EC0004A21802F90917C01931541F030927C0112 +:104ED000632D8DE090E00E944A21802F90917B010C +:104EE000941561F040927B01642D8EE090E00E9469 +:104EF0004A210E94E12104C080E09CCF8111F9CFBA +:104F00008091000190917F01913069F482608093DB +:104F100000018091000190918001913031F4816015 +:104F2000809300010ECE8D7FF2CF8E7FF9CF8091DE +:104F30008101882319F0833009F060C0B7E18B2E1E +:104F4000B1E09B2E18ECA12E13E0B12E0EE6E02E60 +:104F500001E0F02E84EDC82E83E0D82E1D821E8243 +:104F60001C821B829A82898283E090E00E946E21DB +:104F7000782E84E090E00E946E21182F072D4FEFCD +:104F8000741229C08F3F39F560E083E090E00E9401 +:104F90004A2160E084E090E00E944A2110E000E0B5 +:104FA00080918101833009F0A9C080917B01801735 +:104FB000110610F40C9403301F930F93DF92CF92DD +:104FC000FF92EF920E9476300F900F900F900F900B +:104FD0000F900F90D3C00E3F8FEF180709F780EEA8 +:104FE00093E00E94380F90E080E00E94E31D811161 +:104FF00005C080918101833009F4B0CF8091810197 +:105000008130E9F419A61AA618A61FA287E191E03B +:105010009EA38DA368E074E0CE0184549F4F0E944C +:105020005D3041E1BE0164547F4FCE0189960E94FC +:10503000DA1D8111B6C082EF93E00E9458131D82E1 +:105040001E821C821B8287E191E09A83898361E042 +:1050500082E291E00E94921D11E099249394EDE682 +:10506000AE2EB12CAC0EBD1EE8E0AE0EB11CFFE2C0 +:105070008F2EAAE23A2E8091000183FF03C08AE1BD +:105080000E94530F111104C086E49AE00E94380F69 +:1050900084E49AE00E94380F6EE1CE0183579F4F5F +:1050A0000E94EE1911E0882331F380E00E94DC2297 +:1050B0007C016FE37AE00E945430892B09F07BC0B9 +:1050C0008091000181FF04C086E29AE00E9458139B +:1050D00080E591E00E943914882309F4A7CC80E090 +:1050E0000E941A14882309F4F4CC8091000181FFF6 +:1050F0006BC08EE09AE00E94581366C01F930F9316 +:10510000BF92AF92FF92EF920E94763041E56EE639 +:1051100071E0CE0105960E94DA1D0F900F900F905E +:105120000F900F900F90811125C040E06EE671E066 +:10513000CE0105960E94DA1D882399F08D8D9E8DF3 +:10514000AF8DB8A1892B8A2B8B2B39F4CE01059614 +:105150000E940A0E8EE691E048CFCE0105960E948D +:105160000A0E0F5F1F4F0E3F9FEF190739F686EBB0 +:1051700093E037CFCE0105960E940A0E0F5F1F4FB6 +:10518000602F83E090E00E944A2184E090E00E943A +:105190006E211817F9F2612F84E090E00E944A21F5 +:1051A000D9CFCE0189960E940A0ECE0184549F4F1A +:1051B0000E94E31D44CF6CE07AE0C7010E945430A6 +:1051C000892B21F40E94702111E055CF67E07AE02D +:1051D000C7010E945430892BA9F362E07AE0C7012D +:1051E0000E945430892B09F052C00E94BC216B01EF +:1051F0007C0184E694E00E94380FC701B6010E944A +:10520000AC138FE594E00E9458138CE394E00E9465 +:1052100058138AE394E00E94380F68E0CE01875B60 +:105220009F4F0E94EE192A968FAD2A97883729F44E +:1052300082E394E00E9458131ECFCE01875B9F4FFC +:105240000E94FA0F6B017C01DC01CB018C52914072 +:10525000A109B10985319144AF40B10518F084E24C +:1052600094E0E8CF8AE194E00E94380FC701B601CC +:105270000E94AC1386E194E00E945813C701B60166 +:105280000E944C210E94E12185E00E94D3236EEF11 +:1052900079E0C7010E945430892B09F036C182E0C1 +:1052A00090E00E946E21182F88EE97E00E9458131C +:1052B00084ED97E00E94380F8BEC97E0112361F0AA +:1052C0008FEB97E0113041F087EB97E0123021F03F +:1052D000133021F480EB97E00E94380F86ED93E0C5 +:1052E0000E9454138AE897E00E94380F6AE070E049 +:1052F00080917E010E94D61386E897E00E94380FC5 +:105300006AE070E080917D010E94DD1382E597E004 +:105310000E94380F6AE070E080917C010E94D613F1 +:105320008FE497E00E94380F6AE070E080917B0183 +:105330000E94DD1387E497E00E9458138BE297E008 +:105340000E9458138CE097E00E94581382EF96E079 +:105350000E94581388ED96E00E9458138FEB96E058 +:105360000E9458138BEA96E00E9458138CE896E04E +:105370000E94581387E696E00E94581385E496E051 +:105380000E9458138DE396E00E9458138BE396E039 +:105390000E94380F0E946C05892BE1F386ED93E0A3 +:1053A0000E94060F813361F48AE296E00E9458134E +:1053B00060E082E090E00E944A210E94E12104CF57 +:1053C000823331F486E196E00E94581361E0F1CF18 +:1053D000833331F487E096E00E94581362E0E9CF0E +:1053E000843331F488EF95E00E94581363E0E1CFF5 +:1053F000853379F48AED95E00E94581360E083E0EC +:1054000090E00E944A2160E084E090E00E944A21FE +:10541000DBCE863301F58BEB95E00E94380F0E94BE +:105420006C05892BE1F386ED93E00E94060F8093D3 +:105430007E01682F85E090E00E944A210E94E121D0 +:1054400082EA95E00E94380F6AE070E080917E0168 +:105450000E94DD13B9CE8733D1F485E695E00E9432 +:10546000380F0E94580F97FD09C080937D01682F67 +:1054700086E090E00E944A210E94E1218EE395E0BF +:105480000E94380F6AE070E080917D01E1CF88339F +:10549000D1F48DE095E00E94380F0E94580F97FDDF +:1054A00009C080937C01682F8DE090E00E944A2122 +:1054B0000E94E1218FED94E00E94380F6AE070E0D5 +:1054C00080917C01C5CF8933D1F483EA94E00E94B6 +:1054D000380F0E94580F97FD09C080937B01682FF9 +:1054E0008EE090E00E944A210E94E1218DE794E045 +:1054F0000E94380F6AE070E080917B01A9CF883765 +:1055000009F0D2CE85E794E0F6CD6BEF79E0C701E4 +:105510000E945430892B19F58091000181FF0AC047 +:105520008DEE99E00E94380F6AE070E080918B0167 +:105530000E94DD130E94EA0F813051F4F70130829E +:10554000118240E0B7018DEA93E00E94C6173CCE7D +:1055500081E00E94DC227C010E946430F2CF6AEE7E +:1055600079E0C7010E945430892B09F09CC081E08A +:105570000E94DC227C01009711F410E07CCDAE96F5 +:105580001FAEAE97AF961FAEAF97C753DF4F99834D +:105590008883C95CD0402A961FAE2A972B961FAEEF +:1055A0002B978091AD03807709F467C0F701808164 +:1055B0000DEA13E08F3201F5C753DF4FE881F9811F +:1055C000C95CD04080818F3241F43196C753DF4FA0 +:1055D000F983E883C95CD040EFCF6091B303709149 +:1055E000B403CE01875B9F4F0E940014882309F407 +:1055F00044C08E01075B1F4FAE0147535F4FBE0192 +:1056000065557F4FC753DF4F88819981C95CD04072 +:105610000E947F0B882389F1C753DF4FE881F9810E +:10562000C95CD0408081882391F120E0AE014555CE +:105630005F4FB801CE0183599F4F0E948A1A882379 +:1056400089F080E2FE01E359FF4FDE01A75BBF4F07 +:1056500001900D928A95E1F7CE0183599F4F0E94E8 +:105660000A0EC7CFAE0145555F4FB801CE01835931 +:105670009F4F0E948B208111E4CF8091000181FF18 +:105680007CCF8FEC99E00E94380FC7011EC1AE019C +:1056900045555F4FB801CE0183599F4F0E948B2023 +:1056A000811192CDEACF6CEC79E0C7010E945430B1 +:1056B000892B09F0CDC081E00E94DC228C01892B6E +:1056C00009F45BCF0E94EA0F8330F9F468EC79E0CB +:1056D000C8010E945430892BC1F482E00E94DC2270 +:1056E00020E0AC016DEA73E0CE0105960E94101D2A +:1056F000882309F442CFCE0105960E94D218182FB4 +:10570000CE0105960E940A0EB6CC20E0A8016DEAF3 +:1057100073E0CE0105960E94101D81115DC0C80185 +:105720000E94643060E082E291E00E94921DC12CF0 +:10573000D12C76018D81811177C08091AD03807766 +:1057400009F472C08091BD039091BE03A091BF0384 +:10575000B091C0038F719927AA27BB27892B8A2B69 +:105760008B2B09F061C06DEA73E0CE0105960E94B3 +:105770001917882309F458C08D8183FF28C08076CB +:1057800009F445C02A968FAE2A972B961FAE2B9709 +:10579000BE01675B7F4FC8010E94920F8823B9F05A +:1057A000CE0105960E940A0E41E0BE01675B7F4F65 +:1057B000CE0105960E94DA1DCE0105960E94821543 +:1057C000882329F0FFEFCF1ADF0AEF0AFF0ACE0184 +:1057D00005960E940A0EAECF8D81807771F4CE01BE +:1057E00005960E940A0E41E0B801CE0105960E947E +:1057F000DA1D811107C010E083CFCE0105960E940B +:105800004B167DCFCE0105960E94821578CF60E0C1 +:10581000CE0105960E94AD0D0097C9F2BE01675BEF +:105820007F4F0E947E0DB4CF8091000181FF09C09F +:105830004AE0C701B6010E94661387EB99E00E9417 +:10584000581311E0CD28CE28CF2809F014CC95CEDE +:1058500064EB79E0C7010E945430892BB1F481E0F8 +:105860000E94DC228C01009709F487CE61EB79E07D +:105870000E94543060E0892B31F482E291E00E9472 +:10588000921D182FF8CBC801FACF6CEA79E0C70156 +:105890000E945430892B09F0D1C081E00E94DC22A3 +:1058A0008C01009709F469CE40E0BC01CE01059659 +:1058B0000E94DA1D81110CC08091000181FF5DCE34 +:1058C00087E999E00E94380FC8010E94EB1355CE7A +:1058D00082E00E94DC22009739F1FC010190002057 +:1058E000E9F73197BF01681B790B0E94D60F8C0135 +:1058F0000097D1F00E94FA0FAB01BC01CE010596D2 +:105900000E94BD0C811110C08091000181FF07C071 +:1059100085E899E00E94380FC8010E94EB13CE0180 +:1059200005960E940A0E29CE83E00E94DC22009791 +:1059300009F44FC0FC0101900020E9F73197BF0145 +:10594000681B790B0E94D60F009709F442C00E9491 +:10595000FA0F2B013C0184E00E94DC220097F1F158 +:10596000FC0101900020E9F73197BF01681B790B1A +:105970000E94D60F009791F10E94FA0F6B017C01F3 +:1059800010E000E0BE01675B7F4FCE0105960E94EC +:10599000A810019709F045C02A968FAD2A970F5F8E +:1059A0001F4FA80170E060E04416550666067706B2 +:1059B000C0F121E0C216D104E104F104E9F490EE53 +:1059C000980F9F3580F4682F86ED93E00E942F0F8B +:1059D000D9CF44244A94542C3201BDCFC12CD12CB0 +:1059E0007601C394CDCF8A3071F38D3061F383E8B3 +:1059F00099E00E94380FC6CF42E0C416D104E104FA +:105A0000F10439F460E170E00E94D61381E899E076 +:105A1000F0CF93E0C916D104E104F10409F0B2CF4C +:105A2000D2CFCE0105960E940A0E8091000183FD1F +:105A3000CBCB86ED93E00E945413C6CB6BE779E0A5 +:105A4000C7010E945430892B09F06FC081E00E9489 +:105A5000DC228C01009709F490CD41E0BC01CE011D +:105A600005960E94DA1D811107C08091000181FF17 +:105A700084CD86E699E026CF82E00E94DC22F09079 +:105A80000001009731F1FC0101900020E9F7319706 +:105A9000BF01681B790B0E94D60F8C010097C9F0DB +:105AA0000E94FA0FAB01BC01CE0105960E94BD0C0D +:105AB00081110FC084E599E0F1FE31CF2BCF1D316C +:105AC00040F442E050E064E271E0CE0105960E94AD +:105AD000D1118091000183FF03C08AE10E94530F1E +:105AE00082E599E00E94380F6EE1CE0183579F4F07 +:105AF0000E94EE19182F8823B1F0E82EF12CA7018F +:105B0000BE0163577F4FCE0105960E94D111E81662 +:105B1000F906A9F28091000181FF6DCE8CE399E036 +:105B20000E94581368CE11E0EBCD67E379E0C7011E +:105B30000E945430892B69F581E00E94DC22009795 +:105B400009F41BCD40E0BC01CE0105960E94DA1D90 +:105B50008823A9F06D8D7E8D8F8D98A14AE00E94DB +:105B60006613CE0105960E940A0E11E08091000195 +:105B700083FD81CA86ED93E00E9454137CCA809114 +:105B8000000181FF04C084E399E00E94380F10E017 +:105B9000EDCF6FE279E0C7010E945430892B09F004 +:105BA00052C182E299E00E94380F8091D203823084 +:105BB000A9F08330B1F08130B9F48EE199E00E9410 +:105BC0005813BE0163597F4F8AE00E94D3078111A9 +:105BD0000EC08EEF98E00E94380FCFCC8AE199E09A +:105BE000EECF85E199E0EBCF8DE099E0E8CF8CEE48 +:105BF00098E00E94380F60E170E0AE968FADAE97EE +:105C00000E94DD1383EE98E00E94380FAF968FADAF +:105C1000AF970E94530FE0968FADE0970E94530F0D +:105C200086ED93E00E94541389ED98E00E94380FAE +:105C30000DE610E00C0F1D1F0D5F1F4FF801819145 +:105C40008F010E94530FA016B106C1F78DEC98E0AA +:105C50000E94380FE6968FADE6976AE070E0829575 +:105C60008F700E94D6138BEC98E00E94380FE69656 +:105C70008FADE6976AE070E08F700E94DD138BEBCA +:105C800098E00E94380FEA966CAD7DAD8EAD9FAD69 +:105C9000EA974AE00E94661386ED93E00E9454134F +:105CA00086EA98E00E94380FEC968FADEC976AE098 +:105CB00070E08F700E94D61384EA98E00E94380F3B +:105CC000EC966FADEC9762956F7070E06053784F13 +:105CD000EB968FADEB978F70F0E18F9FC001112491 +:105CE000680F791F072E000C880B990B0E94AC13CC +:105CF00086ED93E00E945413BE01675B7F4F89E0FD +:105D00000E94D307882309F499C02A968FAD2A9759 +:105D1000807C09F060C060968FAD60978370C82E5C +:105D2000D12CDC2CCC24DD0CDD0C61968FAD619781 +:105D300024E0829FC0011124C82AD92A62968FAD1F +:105D400062978295869586958370C82A4FEFC41A0C +:105D5000D40AF12CE12C63968FAD63978370880F82 +:105D600064969FAD649797FB992790F9892B2F969E +:105D70009FAD2F979F70890F9927991F079704C090 +:105D8000CC0CDD1CEE1CFF1C8A95D2F7C114D1048B +:105D9000E104F10409F452C0BE01675B7F4F89E062 +:105DA0000E94D307882309F449C088E998E00E943B +:105DB000380FC701B6010E9493332DEB37E346E05D +:105DC0005AE30E94F9330E9464334AE00E9466134A +:105DD00084E998E090C9803489F56396CFAC6397E5 +:105DE000D12CF12CE12C8FEFC81AD80AE80AF80A56 +:105DF00062968FAD629790E0B0E0A0E0BA2FA92F35 +:105E0000982F8827C80ED91EEA1EFB1E61968FADFB +:105E100061978F7390E0B0E0A0E0DC0199278827BC +:105E20008C0D9D1DAE1DBF1D6C017D014AE0CC0C8B +:105E3000DD1CEE1CFF1C4A95D1F7A8CF85E898E041 +:105E40000E9458139ACB60E878E0C7010E94543052 +:105E5000892B09F4B9C96AE778E0C7010E94543078 +:105E6000009719F4FC01099588CB66E778E0C70133 +:105E70000E945430892BD9F481E00E94DC228C01ED +:105E8000009709F47ACB41E5BC01CE0105960E944A +:105E9000DA1D882329F0CE0105960E940A0E94C9C6 +:105EA0008091000181FF69CB80E698E00BCD69E528 +:105EB00078E0C7010E945430892B49F481E00E94A8 +:105EC000DC22009709F459CB0E94E31D7DC965E5EA +:105ED00078E0C7010E945430892B19F487E398E0D9 +:105EE0007ACE62E378E0C7010E945430892B81F5B5 +:105EF00081E00E94DC227C01009709F43ECB6FE236 +:105F000078E00E945430082F811114C090928001D3 +:105F1000809100018160809300016091800188E0A0 +:105F200090E00E944A210E94E12111E0002309F43F +:105F3000A2C823CB6BE278E0C7010E945430082F3F +:105F40008111EBCF10928001809100018E7FE3CF11 +:105F500063E278E0C7010E945430892B41F581E06B +:105F60000E94DC227C01009709F407CB60E278E014 +:105F70000E945430082F81110CC090927F018091B3 +:105F8000000182608093000160917F0187E090E0D2 +:105F9000C8CF6CE178E0C7010E945430082F81110E +:105FA000F3CF10927F01809100018D7FEBCF68E1EC +:105FB00078E0C7010E94543010910001892BF1F460 +:105FC00081E00E94DC227C01009709F4D6CA65E1D9 +:105FD00078E00E945430811108C0186010930001CD +:105FE00011E0882309F447C8C8CA61E178E0C70115 +:105FF0000E9454308111F4CF177FF0CF11FFBDCA3A +:106000008FEF97E040CB10E000E00C94DC27E6ED4A +:10601000F3E01382128288EE93E0A0E0B0E0848384 +:106020009583A683B78385E091E091838083E4EE36 +:10603000F5E082EE93E09183808381E092E09783A4 +:106040008683158214821382128210928B01109221 +:10605000AD031092AE0384E68093CD031092D20379 +:1060600080E58093D3031092D4030895FC01882720 +:106070009927E89421912032E9F3293010F02E304D +:10608000C8F32B3241F02D3239F4689404C00E94D9 +:106090006E30820F911D219120532A30C0F31EF4DF +:1060A000909581959F4F0895FB01DC018D9105909E +:1060B00080190110D9F3990B0895FB01DC010590BB +:1060C0000D920020E1F70895DC016C9161566A3170 +:1060D00008F0605E6F5B6D93C1F708957AE0979F5B +:1060E000902D879F802D910D11240895AEE0B0E092 +:1060F000ECE7F0E30C943B330D891E898EE08C8332 +:106100001A8309838FEF9FE79E838D83AE01475EDD +:106110005F4F6F89788DCE0101960E9499302F8153 +:106120003885020F131FF80110822E96E4E00C94BC +:106130005733ABE0B0E0EFE9F0E30C942D337C0192 +:106140003B018A01FC0117821682838181FFC8C14D +:10615000CE0101965C01F7019381F30193FD8591D6 +:1061600093FF81913F01882309F453C1853239F4AB +:1061700093FD859193FF81913F01853229F4B70109 +:1061800090E00E948932E7CF912C212C312CFFE145 +:10619000F31538F08B3211F190F4803209F183322B +:1061A00029F137FC3CC020ED280F2A3050F536FE8F +:1061B00020C08AE0989E200D1124922E06C08D32B8 +:1061C00091F0803371F7689430F8F30193FD859175 +:1061D00093FF81913F018111DACF21C0689431F89A +:1061E000689432F8F2CF689433F8EFCF689434F8BB +:1061F000ECCFEAE02E9E200D1124222E689435F873 +:10620000E4CF8E3229F436FC04C1689436F8DDCF31 +:106210008C3619F4689437F8D8CF8836B1F2982FB5 +:106220009F7D95549330E0F08336A1F18337C1F11F +:10623000833509F063C02801F2E04F0E511CF801CC +:10624000C080D180692D70E036FC02C06FEF7FEF17 +:10625000C6010E9473324C01689437F882010AC06B +:106260000C5F1F4FFFE3F98388248394912C650111 +:10627000E89437F833FE2DC0522C8114910471F547 +:10628000552009F468CFB70180E290E00E9489327E +:106290005A94F6CFF801808189830E5F1F4FE4CFB7 +:1062A0002801F2E04F0E511CF801C080D180692D09 +:1062B00070E036FC02C06FEF7FEFC6010E947E32B5 +:1062C0004C018201D5CFB70180E290E00E94893273 +:1062D0002A942814190409F0B0F7CECFF60137FC40 +:1062E000859137FE81916F01B70190E00E9489325C +:1062F00051105A94F1E08F1A9108BFCF843619F0EB +:10630000893609F077C0F80137FE6BC06081718172 +:10631000828193810C5F1F4FF32DFF763F2E97FFF5 +:1063200009C090958095709561957F4F8F4F9F4FD5 +:10633000689437F82AE030E0A5010E94B932C82EEF +:10634000CA188C2C432C36FE0CC0E89440F8C914B3 +:1063500040F434FE05C032FC03C0F32DFE7E4F2E08 +:10636000892C44FE95C0FE01EC0DF11D8081803327 +:1063700009F087C0242D297E422E842D8870582E46 +:1063800043FC95C040FE8FC09C2C821418F42C0C4A +:10639000922C981844FE91C0B70180E390E00E94CF +:1063A000893242FE09C088E790E041FE02C088E5DC +:1063B00090E0B7010E948932C91408F48AC0CA94D7 +:1063C000D12C9FEFC91AD90ACA0CDB1CF6018291A5 +:1063D0006F01B70190E00E948932AC14BD04B1F79F +:1063E0004FCF60817181072E000C880B990B0E5FD7 +:1063F0001F4F92CFD32CE894D4F82AE030E08537B1 +:1064000039F1232D297FD22E8F3601F148F48835BA +:10641000A9F0F701868197812B96E2E10C9449332C +:10642000803749F08837A9F7D4FE02C06894D2F8C3 +:1064300020E130E00DC06894D4F8F6CF34FE03C0FC +:10644000822F8660D82E20E132E002C028E030E0C2 +:10645000F801D7FE0FC060817181828193810C5F4A +:106460001F4FA5010E94B932C82ECA183D2CE894CE +:1064700037F867CF6081718190E080E00E5F1F4F39 +:10648000F0CF42FC02C0839478CF8394839475CF7D +:10649000842D867809F471CFF6CFB70180E290E0C1 +:1064A0000E94893283948214C0F3512C73CF522CF2 +:1064B0005818821408F46ECFF8CF842D867809F42A +:1064C0007BCF8BE241FE80E247FC8DE2B70190E09A +:1064D00071CFB70180E390E00E9489329A946CCF2B +:1064E0008FEF9FEF99CFFC01059061507040011034 +:1064F000D8F7809590958E0F9F1F0895FC016150ED +:10650000704001900110D8F7809590958E0F9F1FD5 +:1065100008950F931F93CF93DF93182F092FEB014B +:106520008B8181FD09C01FEF0FEF812F902FDF912D +:10653000CF911F910F91089582FF14C02E813F814A +:106540008C819D81281739073CF4E881F981CF01BE +:1065500001969983888310838E819F8101969F8302 +:106560008E83E3CFE885F985812F0995892BA1F3E7 +:10657000DACFFA01AA27283051F1203181F1E894CD +:106580006F936E7F6E5F7F4F8F4F9F4FAF4FB1E026 +:106590003ED0B4E03CD0670F781F891F9A1FA11D21 +:1065A000680F791F8A1F911DA11D6A0F711D811D22 +:1065B000911DA11D20D009F468943F912AE0269FE7 +:1065C00011243019305D3193DEF6CF010895462F46 +:1065D0004770405D4193B3E00FD0C9F7F6CF462F27 +:1065E0004F70405D4A3318F0495D31FD4052419390 +:1065F00002D0A9F7EACFB4E0A6959795879577954D +:106600006795BA95C9F700976105710508959B01D3 +:10661000AC010A2E06945795479537952795BA955C +:10662000C9F7620F731F841F951FA01D0895F99964 +:10663000FECF92BD81BDF89A992780B50895262F87 +:10664000F999FECF1FBA92BD81BD20BD0FB6F89457 +:10665000FA9AF99A0FBE019608952F923F924F929F +:106660005F926F927F928F929F92AF92BF92CF92E2 +:10667000DF92EF92FF920F931F93CF93DF93CDB7EB +:10668000DEB7CA1BDB0B0FB6F894DEBF0FBECDBF63 +:1066900009942A88398848885F846E847D848C8434 +:1066A0009B84AA84B984C884DF80EE80FD800C813D +:1066B0001B81AA81B981CE0FD11D0FB6F894DEBF20 +:1066C0000FBECDBFED0108950E94D83388F09F57CB +:1066D00098F0B92F9927B751B0F0E1F0660F771F06 +:1066E000881F991F1AF0BA95C9F714C0B13091F0FC +:1066F0000E94F233B1E008950C94F233672F782FA3 +:106700008827B85F39F0B93FCCF3869577956795C0 +:10671000B395D9F73EF490958095709561957F4F2C +:106720008F4F9F4F0895E89409C097FB3EF49095D2 +:106730008095709561957F4F8F4F9F4F9923A9F05A +:10674000F92F96E9BB279395F695879577956795E9 +:10675000B795F111F8CFFAF4BB0F11F460FF1BC02D +:106760006F5F7F4F8F4F9F4F16C0882311F096E9C0 +:1067700011C0772321F09EE8872F762F05C066236E +:1067800071F096E8862F70E060E02AF09A95660F27 +:10679000771F881FDAF7880F9695879597F90895E0 +:1067A00057FD9058440F551F59F05F3F71F04795C2 +:1067B000880F97FB991F61F09F3F79F087950895A7 +:1067C000121613061406551FF2CF4695F1DF08C0C6 +:1067D000161617061806991FF1CF869571056105E3 +:1067E00008940895E894BB2766277727CB0197F98B +:1067F00008950E940C340C947D340E946F3438F05C +:106800000E94763420F0952311F00C9466340C9499 +:106810006C3411240C94F3330E94D03370F3959FA1 +:10682000C1F3950F50E0551F629FF001729FBB2787 +:10683000F00DB11D639FAA27F00DB11DAA1F649F23 +:106840006627B00DA11D661F829F2227B00DA11DD6 +:10685000621F739FB00DA11D621F839FA00D611D5C +:10686000221F749F3327A00D611D231F849F600D7D +:10687000211D822F762F6A2F11249F5750409AF0A6 +:10688000F1F088234AF0EE0FFF1FBB1F661F771F32 +:10689000881F91505040A9F79E3F510580F00C94FD +:1068A00066340C94F3335F3FE4F3983ED4F386955B +:1068B00077956795B795F795E7959F5FC1F7FE2B9D +:1068C000880F911D9695879597F9089597F99F6779 +:1068D00080E870E060E008959FEF80EC0895002468 +:1068E0000A941616170618060906089500240A9435 +:1068F00012161306140605060895092E0394000CBB +:1069000011F4882352F0BB0F40F4BF2B11F460FF49 +:1069100004C06F5F7F4F8F4F9F4F0895AA1BBB1B13 +:1069200051E107C0AA1FBB1FA617B70710F0A61B8F +:10693000B70B881F991F5A95A9F780959095BC01B0 +:10694000CD010895A1E21A2EAA1BBB1BFD010DC0AB +:10695000AA1FBB1FEE1FFF1FA217B307E407F5070F +:1069600020F0A21BB30BE40BF50B661F771F881FEB +:10697000991F1A9469F760957095809590959B0181 +:10698000AC01BD01CF0108950E94D534A59F900DA3 +:10699000B49F900DA49F800D911D11240895EE0FBA +:1069A000FF1F0590F491E02D0994A29FB001B39FC1 +:1069B000C001A39F700D811D1124911DB29F700D08 +:1069C000811D1124911D0895FB01DC0104C08D91EE +:1069D0000190801921F441505040C8F7881B990B51 +:1069E0000895FB01DC0102C001900D92415050401E +:1069F000D8F70895DC0101C06D9341505040E0F795 +:106A00000895FB01DC014150504048F001900D9287 +:106A10000020C9F701C01D9241505040E0F7089591 +:106A2000F894FFCF03000000002F0FE10E3C10E0B0 +:106A30000E2D0F060FC50E00000000331330133C5F +:0C6A40001034100D0A002F000A0D000099 +:107E0000112484B714BE81FFF0D085E080938100F7 +:107E100082E08093C00088E18093C10086E0809377 +:107E2000C20080E18093C4008EE0C9D0259A86E02C +:107E300020E33CEF91E0309385002093840096BBD3 +:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4 +:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7 +:107E6000A2D0813461F49FD0082FAFD0023811F036 +:107E7000013811F484E001C083E08DD089C08234E0 +:107E800011F484E103C0853419F485E0A6D080C0E4 +:107E9000853579F488D0E82EFF2485D0082F10E0AE +:107EA000102F00270E291F29000F111F8ED06801E7 +:107EB0006FC0863521F484E090D080E0DECF843638 +:107EC00009F040C070D06FD0082F6DD080E0C81688 +:107ED00080E7D80618F4F601B7BEE895C0E0D1E017 +:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8 +:107EF00018F0F601B7BEE89568D007B600FCFDCFD4 +:107F0000A601A0E0B1E02C9130E011968C91119780 +:107F100090E0982F8827822B932B1296FA010C0160 +:107F200087BEE89511244E5F5F4FF1E0A038BF0790 +:107F300051F7F601A7BEE89507B600FCFDCF97BE46 +:107F4000E89526C08437B1F42ED02DD0F82E2BD052 +:107F50003CD0F601EF2C8F010F5F1F4F84911BD097 +:107F6000EA94F801C1F70894C11CD11CFA94CF0C13 +:107F7000D11C0EC0853739F428D08EE10CD085E9AC +:107F80000AD08FE07ACF813511F488E018D01DD067 +:107F900080E101D065CF982F8091C00085FFFCCF94 +:107FA0009093C60008958091C00087FFFCCF809118 +:107FB000C00084FD01C0A8958091C6000895E0E648 +:107FC000F0E098E1908380830895EDDF803219F02E +:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA +:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6 +:047FF000FF270994CA +:027FFE00040479 +:00000001FF diff --git a/Binaries/avrdude.conf b/Binaries/avrdude.conf new file mode 100644 index 0000000..0765c15 --- /dev/null +++ b/Binaries/avrdude.conf @@ -0,0 +1,16085 @@ +# $Id$ -*- text -*- +# +# AVRDUDE Configuration File +# +# This file contains configuration data used by AVRDUDE which describes +# the programming hardware pinouts and also provides part definitions. +# AVRDUDE's "-C" command line option specifies the location of the +# configuration file. The "-c" option names the programmer configuration +# which must match one of the entry's "id" parameter. The "-p" option +# identifies which part AVRDUDE is going to be programming and must match +# one of the parts' "id" parameter. +# +# DO NOT MODIFY THIS FILE. Modifications will be overwritten the next +# time a "make install" is run. For user-specific additions, use the +# "-C +filename" commandline option. +# +# Possible entry formats are: +# +# programmer +# parent # optional parent +# id = [, [, ] ...] ; # are quoted strings +# desc = ; # quoted string +# type = ; # programmer type, quoted string +# # supported programmer types can be listed by "-c ?type" +# connection_type = parallel | serial | usb +# baudrate = ; # baudrate for avr910-programmer +# vcc = [, ... ] ; # pin number(s) +# buff = [, ... ] ; # pin number(s) +# reset = ; # pin number +# sck = ; # pin number +# mosi = ; # pin number +# miso = ; # pin number +# errled = ; # pin number +# rdyled = ; # pin number +# pgmled = ; # pin number +# vfyled = ; # pin number +# usbvid = ; # USB VID (Vendor ID) +# usbpid = [, ...] # USB PID (Product ID) (1) +# usbdev = ; # USB interface or other device info +# usbvendor = ; # USB Vendor Name +# usbproduct = ; # USB Product Name +# usbsn = ; # USB Serial Number +# +# To invert a bit, use = ~ , the spaces are important. +# For a pin list all pins must be inverted. +# A single pin can be specified as usual = ~ , for lists +# specify it as follows = ~ ( [, ... ] ) . +# +# (1) Not all programmer types can process a list of PIDs. +# ; +# +# part +# id = ; # quoted string +# desc = ; # quoted string +# has_jtag = ; # part has JTAG i/f +# has_debugwire = ; # part has debugWire i/f +# has_pdi = ; # part has PDI i/f +# has_updi = ; # part has UPDI i/f +# has_tpi = ; # part has TPI i/f +# devicecode = ; # deprecated, use stk500_devcode +# stk500_devcode = ; # numeric +# avr910_devcode = ; # numeric +# signature = ; # signature bytes +# usbpid = ; # DFU USB PID +# chip_erase_delay = ; # micro-seconds +# reset = dedicated | io; +# retry_pulse = reset | sck; +# pgm_enable = ; +# chip_erase = ; +# chip_erase_delay = ; # chip erase delay (us) +# # STK500 parameters (parallel programming IO lines) +# pagel = ; # pin name in hex, i.e., 0xD7 +# bs2 = ; # pin name in hex, i.e., 0xA0 +# serial = ; # can use serial downloading +# parallel = ; # can use par. programming +# # STK500v2 parameters, to be taken from Atmel's XML files +# timeout = ; +# stabdelay = ; +# cmdexedelay = ; +# synchloops = ; +# bytedelay = ; +# pollvalue = ; +# pollindex = ; +# predelay = ; +# postdelay = ; +# pollmethod = ; +# mode = ; +# delay = ; +# blocksize = ; +# readsize = ; +# hvspcmdexedelay = ; +# # STK500v2 HV programming parameters, from XML +# pp_controlstack = , , ...; # PP only +# hvsp_controlstack = , , ...; # HVSP only +# hventerstabdelay = ; +# progmodedelay = ; # PP only +# latchcycles = ; +# togglevtg = ; +# poweroffdelay = ; +# resetdelayms = ; +# resetdelayus = ; +# hvleavestabdelay = ; +# resetdelay = ; +# synchcycles = ; # HVSP only +# chiperasepulsewidth = ; # PP only +# chiperasepolltimeout = ; +# chiperasetime = ; # HVSP only +# programfusepulsewidth = ; # PP only +# programfusepolltimeout = ; +# programlockpulsewidth = ; # PP only +# programlockpolltimeout = ; +# # JTAG ICE mkII parameters, also from XML files +# allowfullpagebitstream = ; +# enablepageprogramming = ; +# idr = ; # IO addr of IDR (OCD) reg. +# rampz = ; # IO addr of RAMPZ reg. +# spmcr = ; # mem addr of SPMC[S]R reg. +# eecr = ; # mem addr of EECR reg. +# # (only when != 0x3c) +# is_at90s1200 = ; # AT90S1200 part +# is_avr32 = ; # AVR32 part +# +# memory +# paged = ; # yes / no +# size = ; # bytes +# page_size = ; # bytes +# num_pages = ; # numeric +# min_write_delay = ; # micro-seconds +# max_write_delay = ; # micro-seconds +# readback_p1 = ; # byte value +# readback_p2 = ; # byte value +# pwroff_after_write = ; # yes / no +# read = ; +# write = ; +# read_lo = ; +# read_hi = ; +# write_lo = ; +# write_hi = ; +# loadpage_lo = ; +# loadpage_hi = ; +# writepage = ; +# ; +# ; +# +# If any of the above parameters are not specified, the default value +# of 0 is used for numerics or the empty string ("") for string +# values. If a required parameter is left empty, AVRDUDE will +# complain. +# +# Parts can also inherit parameters from previously defined parts +# using the following syntax. In this case specified integer and +# string values override parameter values from the parent part. New +# memory definitions are added to the definitions inherited from the +# parent. +# +# part parent # quoted string +# id = ; # quoted string +# +# ; +# +# NOTES: +# * 'devicecode' is the device code used by the STK500 (see codes +# listed below) +# * Not all memory types will implement all instructions. +# * AVR Fuse bits and Lock bits are implemented as a type of memory. +# * Example memory types are: +# "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high +# fuse), "signature", "calibration", "lock" +# * The memory type specified on the avrdude command line must match +# one of the memory types defined for the specified chip. +# * The pwroff_after_write flag causes avrdude to attempt to +# power the device off and back on after an unsuccessful write to +# the affected memory area if VCC programmer pins are defined. If +# VCC pins are not defined for the programmer, a message +# indicating that the device needs a power-cycle is printed out. +# This flag was added to work around a problem with the +# at90s4433/2333's; see the at90s4433 errata at: +# +# http://www.atmel.com/dyn/resources/prod_documents/doc1280.pdf +# +# INSTRUCTION FORMATS +# +# Instruction formats are specified as a comma seperated list of +# string values containing information (bit specifiers) about each +# of the 32 bits of the instruction. Bit specifiers may be one of +# the following formats: +# +# '1' = the bit is always set on input as well as output +# +# '0' = the bit is always clear on input as well as output +# +# 'x' = the bit is ignored on input and output +# +# 'a' = the bit is an address bit, the bit-number matches this bit +# specifier's position within the current instruction byte +# +# 'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12 +# is address bit 12 on input, a0 is address bit 0. +# +# 'i' = the bit is an input data bit +# +# 'o' = the bit is an output data bit +# +# Each instruction must be composed of 32 bit specifiers. The +# instruction specification closely follows the instruction data +# provided in Atmel's data sheets for their parts. +# +# See below for some examples. +# +# +# The following are STK500 part device codes to use for the +# "devicecode" field of the part. These came from Atmel's software +# section avr061.zip which accompanies the application note +# AVR061 available from: +# +# http://www.atmel.com/dyn/resources/prod_documents/doc2525.pdf +# + +#define ATTINY10 0x10 /* the _old_ one that never existed! */ +#define ATTINY11 0x11 +#define ATTINY12 0x12 +#define ATTINY15 0x13 +#define ATTINY13 0x14 + +#define ATTINY22 0x20 +#define ATTINY26 0x21 +#define ATTINY28 0x22 +#define ATTINY2313 0x23 + +#define AT90S1200 0x33 + +#define AT90S2313 0x40 +#define AT90S2323 0x41 +#define AT90S2333 0x42 +#define AT90S2343 0x43 + +#define AT90S4414 0x50 +#define AT90S4433 0x51 +#define AT90S4434 0x52 +#define ATMEGA48 0x59 + +#define AT90S8515 0x60 +#define AT90S8535 0x61 +#define AT90C8534 0x62 +#define ATMEGA8515 0x63 +#define ATMEGA8535 0x64 + +#define ATMEGA8 0x70 +#define ATMEGA88 0x73 +#define ATMEGA168 0x86 + +#define ATMEGA161 0x80 +#define ATMEGA163 0x81 +#define ATMEGA16 0x82 +#define ATMEGA162 0x83 +#define ATMEGA169 0x84 + +#define ATMEGA323 0x90 +#define ATMEGA32 0x91 + +#define ATMEGA64 0xA0 + +#define ATMEGA103 0xB1 +#define ATMEGA128 0xB2 +#define AT90CAN128 0xB3 +#define AT90CAN64 0xB3 +#define AT90CAN32 0xB3 + +#define AT86RF401 0xD0 + +#define AT89START 0xE0 +#define AT89S51 0xE0 +#define AT89S52 0xE1 + +# The following table lists the devices in the original AVR910 +# appnote: +# |Device |Signature | Code | +# +-------+----------+------+ +# |tiny12 | 1E 90 05 | 0x55 | +# |tiny15 | 1E 90 06 | 0x56 | +# | | | | +# | S1200 | 1E 90 01 | 0x13 | +# | | | | +# | S2313 | 1E 91 01 | 0x20 | +# | S2323 | 1E 91 02 | 0x48 | +# | S2333 | 1E 91 05 | 0x34 | +# | S2343 | 1E 91 03 | 0x4C | +# | | | | +# | S4414 | 1E 92 01 | 0x28 | +# | S4433 | 1E 92 03 | 0x30 | +# | S4434 | 1E 92 02 | 0x6C | +# | | | | +# | S8515 | 1E 93 01 | 0x38 | +# | S8535 | 1E 93 03 | 0x68 | +# | | | | +# |mega32 | 1E 95 01 | 0x72 | +# |mega83 | 1E 93 05 | 0x65 | +# |mega103| 1E 97 01 | 0x41 | +# |mega161| 1E 94 01 | 0x60 | +# |mega163| 1E 94 02 | 0x64 | + +# Appnote AVR109 also has a table of AVR910 device codes, which +# lists: +# dev avr910 signature +# ATmega8 0x77 0x1E 0x93 0x07 +# ATmega8515 0x3B 0x1E 0x93 0x06 +# ATmega8535 0x6A 0x1E 0x93 0x08 +# ATmega16 0x75 0x1E 0x94 0x03 +# ATmega162 0x63 0x1E 0x94 0x04 +# ATmega163 0x66 0x1E 0x94 0x02 +# ATmega169 0x79 0x1E 0x94 0x05 +# ATmega32 0x7F 0x1E 0x95 0x02 +# ATmega323 0x73 0x1E 0x95 0x01 +# ATmega64 0x46 0x1E 0x96 0x02 +# ATmega128 0x44 0x1E 0x97 0x02 +# +# These codes refer to "BOOT" device codes which are apparently +# different than standard device codes, for whatever reasons +# (often one above the standard code). + +# There are several extended versions of AVR910 implementations around +# in the Internet. These add the following codes (only devices that +# actually exist are listed): + +# ATmega8515 0x3A +# ATmega128 0x43 +# ATmega64 0x45 +# ATtiny26 0x5E +# ATmega8535 0x69 +# ATmega32 0x72 +# ATmega16 0x74 +# ATmega8 0x76 +# ATmega169 0x78 + +# +# Overall avrdude defaults; suitable for ~/.avrduderc +# +default_parallel = "lpt1"; +default_serial = "com1"; +# default_bitclock = 2.5; + +# Turn off safemode by default +#default_safemode = no; + + +# +# PROGRAMMER DEFINITIONS +# + +# http://wiring.org.co/ +# Basically STK500v2 protocol, with some glue to trigger the +# bootloader. +programmer + id = "wiring"; + desc = "Wiring"; + type = "wiring"; + connection_type = serial; +; + +programmer + id = "arduino"; + desc = "Arduino"; + type = "arduino"; + connection_type = serial; +; +# this will interface with the chips on these programmers: +# +# http://real.kiev.ua/old/avreal/en/adapters +# http://www.amontec.com/jtagkey.shtml, jtagkey-tiny.shtml +# http://www.olimex.com/dev/arm-usb-ocd.html, arm-usb-tiny.html +# http://www.ethernut.de/en/hardware/turtelizer/index.html +# http://elk.informatik.fh-augsburg.de/hhweb/doc/openocd/usbjtag/usbjtag.html +# http://dangerousprototypes.com/docs/FT2232_breakout_board +# http://www.ftdichip.com/Products/Modules/DLPModules.htm,DLP-2232*,DLP-USB1232H +# http://flashrom.org/FT2232SPI_Programmer +# +# The drivers will look for a specific device and use the first one found. +# If you have mulitple devices, then look for unique information (like SN) +# And fill that in here. +# +# Note that the pin numbers for the main ISP signals (reset, sck, +# mosi, miso) are fixed and cannot be changed, since they must match +# the way the Multi-Protocol Synchronous Serial Engine (MPSSE) of +# these FTDI ICs has been designed. + +programmer + id = "avrftdi"; + desc = "FT2232D based generic programmer"; + type = "avrftdi"; + connection_type = usb; + usbvid = 0x0403; + usbpid = 0x6010; + usbvendor = ""; + usbproduct = ""; + usbdev = "A"; + usbsn = ""; +#ISP-signals - lower ADBUS-Nibble (default) + reset = 3; + sck = 0; + mosi = 1; + miso = 2; +#LED SIGNALs - higher ADBUS-Nibble +# errled = 4; +# rdyled = 5; +# pgmled = 6; +# vfyled = 7; +#Buffer Signal - ACBUS - Nibble +# buff = 8; +; +# This is an implementation of the above with a buffer IC (74AC244) and +# 4 LEDs directly attached, all active low. +programmer + id = "2232HIO"; + desc = "FT2232H based generic programmer"; + type = "avrftdi"; + connection_type = usb; + usbvid = 0x0403; +# Note: This PID is reserved for generic H devices and +# should be programmed into the EEPROM +# usbpid = 0x8A48; + usbpid = 0x6010; + usbdev = "A"; + usbvendor = ""; + usbproduct = ""; + usbsn = ""; +#ISP-signals + reset = 3; + sck = 0; + mosi = 1; + miso = 2; + buff = ~4; +#LED SIGNALs + errled = ~ 11; + rdyled = ~ 14; + pgmled = ~ 13; + vfyled = ~ 12; +; + +#The FT4232H can be treated as FT2232H, but it has a different USB +#device ID of 0x6011. +programmer parent "avrftdi" + id = "4232h"; + desc = "FT4232H based generic programmer"; + usbpid = 0x6011; +; + +programmer + id = "jtagkey"; + desc = "Amontec JTAGKey, JTAGKey-Tiny and JTAGKey2"; + type = "avrftdi"; + connection_type = usb; + usbvid = 0x0403; +# Note: This PID is used in all JTAGKey variants + usbpid = 0xCFF8; + usbdev = "A"; + usbvendor = ""; + usbproduct = ""; + usbsn = ""; +#ISP-signals => 20 - Pin connector on JTAGKey + reset = 3; # TMS 7 violet + sck = 0; # TCK 9 white + mosi = 1; # TDI 5 green + miso = 2; # TDO 13 orange + buff = ~4; +# VTG VREF 1 brown with red tip +# GND GND 20 black +# The colors are on the 20 pin breakout cable +# from Amontec +; + +# UM232H module from FTDI and Glyn.com.au. +# See helix.air.net.au for detailed usage information. +# J1: Connect pin 2 and 3 for USB power. +# J2: Connect pin 2 and 3 for USB power. +# J2: Pin 7 is SCK +# : Pin 8 is MOSI +# : Pin 9 is MISO +# : Pin 11 is RST +# : Pin 6 is ground +# Use the -b flag to set the SPI clock rate eg -b 3750000 is the fastest I could get +# a 16MHz Atmega1280 to program reliably. The 232H is conveniently 5V tolerant. +programmer + id = "UM232H"; + desc = "FT232H based module from FTDI and Glyn.com.au"; + type = "avrftdi"; + usbvid = 0x0403; +# Note: This PID is reserved for generic 232H devices and +# should be programmed into the EEPROM + usbpid = 0x6014; + usbdev = "A"; + usbvendor = ""; + usbproduct = ""; + usbsn = ""; +#ISP-signals + sck = 0; + mosi = 1; + miso = 2; + reset = 3; +; + +# C232HM module from FTDI and Glyn.com.au. +# : Orange is SCK +# : Yellow is MOSI +# : Green is MISO +# : Brown is RST +# : Black is ground +# Use the -b flag to set the SPI clock rate eg -b 3750000 is the fastest I could get +# a 16MHz Atmega1280 to program reliably. The 232H is conveniently 5V tolerant. +programmer + id = "C232HM"; + desc = "FT232H based module from FTDI and Glyn.com.au"; + type = "avrftdi"; + usbvid = 0x0403; +# Note: This PID is reserved for generic 232H devices and +# should be programmed into the EEPROM + usbpid = 0x6014; + usbdev = "A"; + usbvendor = ""; + usbproduct = ""; + usbsn = ""; +#ISP-signals + sck = 0; + mosi = 1; + miso = 2; + reset = 3; +; + + +# On the adapter you can read "O-Link". On the PCB is printed "OpenJTAG v3.1" +# You can find it as "OpenJTAG ARM JTAG USB" in the internet. +# (But there are also several projects called Open JTAG, eg. +# http://www.openjtag.org, which are completely different.) +# http://www.100ask.net/shop/english.html (website seems to be outdated) +# http://item.taobao.com/item.htm?id=1559277013 +# http://www.micro4you.com/store/openjtag-arm-jtag-usb.html (schematics!) +# some other sources which call it O-Link +# http://www.andahammer.com/olink/ +# http://www.developmentboard.net/31-o-link-debugger.html +# http://armwerks.com/catalog/o-link-debugger-copy/ +# or just have a look at ebay ... +# It is basically the same entry as jtagkey with different usb ids. +programmer parent "jtagkey" + id = "o-link"; + desc = "O-Link, OpenJTAG from www.100ask.net"; + usbvid = 0x1457; + usbpid = 0x5118; + usbvendor = "www.100ask.net"; + usbproduct = "USB<=>JTAG&RS232"; +; + +# http://wiki.openmoko.org/wiki/Debug_Board_v3 +programmer + id = "openmoko"; + desc = "Openmoko debug board (v3)"; + type = "avrftdi"; + usbvid = 0x1457; + usbpid = 0x5118; + usbdev = "A"; + usbvendor = ""; + usbproduct = ""; + usbsn = ""; + reset = 3; # TMS 7 + sck = 0; # TCK 9 + mosi = 1; # TDI 5 + miso = 2; # TDO 13 +; + +# Only Rev. A boards. +# Schematic and user manual: http://www.cs.put.poznan.pl/wswitala/download/pdf/811EVBK.pdf +programmer + id = "lm3s811"; + desc = "Luminary Micro LM3S811 Eval Board (Rev. A)"; + type = "avrftdi"; + connection_type = usb; + usbvid = 0x0403; + usbpid = 0xbcd9; + usbvendor = "LMI"; + usbproduct = "LM3S811 Evaluation Board"; + usbdev = "A"; + usbsn = ""; +#ISP-signals - lower ACBUS-Nibble (default) + reset = 3; + sck = 0; + mosi = 1; + miso = 2; +# Enable correct buffers + buff = 7; +; + +# submitted as bug #46020 +programmer + id = "tumpa"; + desc = "TIAO USB Multi-Protocol Adapter"; + type = "avrftdi"; + connection_type = usb; + usbvid = 0x0403; + usbpid = 0x8A98; + usbdev = "A"; + usbvendor = "TIAO"; + usbproduct = ""; + usbsn = ""; + sck = 0; # TCK 9 + mosi = 1; # TDI 5 + miso = 2; # TDO 13 + reset = 3; # TMS 7 +; + +programmer + id = "avrisp"; + desc = "Atmel AVR ISP"; + type = "stk500"; + connection_type = serial; +; + +programmer + id = "avrispv2"; + desc = "Atmel AVR ISP V2"; + type = "stk500v2"; + connection_type = serial; +; + +programmer + id = "avrispmkII"; + desc = "Atmel AVR ISP mkII"; + type = "stk500v2"; + connection_type = usb; +; + +programmer parent "avrispmkII" + id = "avrisp2"; +; + +programmer + id = "buspirate"; + desc = "The Bus Pirate"; + type = "buspirate"; + connection_type = serial; +; + +programmer + id = "buspirate_bb"; + desc = "The Bus Pirate (bitbang interface, supports TPI)"; + type = "buspirate_bb"; + connection_type = serial; + # pins are bits in bitbang byte (numbers are 87654321) + # 1|POWER|PULLUP|AUX|MOSI|CLK|MISO|CS + reset = 1; + sck = 3; + mosi = 4; + miso = 2; + #vcc = 7; This is internally set independent of this setting. +; + +# This is supposed to be the "default" STK500 entry. +# Attempts to select the correct firmware version +# by probing for it. Better use one of the entries +# below instead. +programmer + id = "stk500"; + desc = "Atmel STK500"; + type = "stk500generic"; + connection_type = serial; +; + +programmer + id = "stk500v1"; + desc = "Atmel STK500 Version 1.x firmware"; + type = "stk500"; + connection_type = serial; +; + +programmer + id = "mib510"; + desc = "Crossbow MIB510 programming board"; + type = "stk500"; + connection_type = serial; +; + +programmer + id = "stk500v2"; + desc = "Atmel STK500 Version 2.x firmware"; + type = "stk500v2"; + connection_type = serial; +; + +programmer + id = "stk500pp"; + desc = "Atmel STK500 V2 in parallel programming mode"; + type = "stk500pp"; + connection_type = serial; +; + +programmer + id = "stk500hvsp"; + desc = "Atmel STK500 V2 in high-voltage serial programming mode"; + type = "stk500hvsp"; + connection_type = serial; +; + +programmer + id = "stk600"; + desc = "Atmel STK600"; + type = "stk600"; + connection_type = usb; +; + +programmer + id = "stk600pp"; + desc = "Atmel STK600 in parallel programming mode"; + type = "stk600pp"; + connection_type = usb; +; + +programmer + id = "stk600hvsp"; + desc = "Atmel STK600 in high-voltage serial programming mode"; + type = "stk600hvsp"; + connection_type = usb; +; + +programmer + id = "avr910"; + desc = "Atmel Low Cost Serial Programmer"; + type = "avr910"; + connection_type = serial; +; + +programmer + id = "ft245r"; + desc = "FT245R Synchronous BitBang"; + type = "ftdi_syncbb"; + connection_type = usb; + miso = 1; # D1 + sck = 0; # D0 + mosi = 2; # D2 + reset = 4; # D4 +; + +programmer + id = "ft232r"; + desc = "FT232R Synchronous BitBang"; + type = "ftdi_syncbb"; + connection_type = usb; + miso = 1; # RxD + sck = 0; # TxD + mosi = 2; # RTS + reset = 4; # DTR +; + +# see http://www.bitwizard.nl/wiki/index.php/FTDI_ATmega +programmer + id = "bwmega"; + desc = "BitWizard ftdi_atmega builtin programmer"; + type = "ftdi_syncbb"; + connection_type = usb; + miso = 5; # DSR + sck = 6; # DCD + mosi = 3; # CTS + reset = 7; # RI +; + +# see http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html +# Note: pins are numbered from 1! +programmer + id = "arduino-ft232r"; + desc = "Arduino: FT232R connected to ISP"; + type = "ftdi_syncbb"; + connection_type = usb; + miso = 3; # CTS X3(1) + sck = 5; # DSR X3(2) + mosi = 6; # DCD X3(3) + reset = 7; # RI X3(4) +; + +# website mentioned above uses this id +programmer parent "arduino-ft232r" + id = "diecimila"; + desc = "alias for arduino-ft232r"; +; + +# There is a ATmega328P kit PCB called "uncompatino". +# This board allows ISP via its on-board FT232R. +# This is designed like Arduino Duemilanove but has no standard ICPS header. +# Its 4 pairs of pins are shorted to enable ftdi_syncbb. +# http://akizukidenshi.com/catalog/g/gP-07487/ +# http://akizukidenshi.com/download/ds/akizuki/k6096_manual_20130816.pdf +programmer + id = "uncompatino"; + desc = "uncompatino with all pairs of pins shorted"; + type = "ftdi_syncbb"; + connection_type = usb; + miso = 3; # cts + sck = 5; # dsr + mosi = 6; # dcd + reset = 7; # ri +; + +# FTDI USB to serial cable TTL-232R-5V with a custom adapter for ICSP +# http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm +# http://www.ftdichip.com/Support/Documents/DataSheets/Cables/DS_TTL-232R_CABLES.pdf +# For ICSP pinout see for example http://www.atmel.com/images/doc2562.pdf +# (Figure 1. ISP6PIN header pinout and Table 1. Connections required for ISP ...) +# TTL-232R GND 1 Black -> ICPS GND (pin 6) +# TTL-232R CTS 2 Brown -> ICPS MOSI (pin 4) +# TTL-232R VCC 3 Red -> ICPS VCC (pin 2) +# TTL-232R TXD 4 Orange -> ICPS RESET (pin 5) +# TTL-232R RXD 5 Yellow -> ICPS SCK (pin 3) +# TTL-232R RTS 6 Green -> ICPS MISO (pin 1) +# Except for VCC and GND, you can connect arbitual pairs as long as +# the following table is adjusted. +programmer + id = "ttl232r"; + desc = "FTDI TTL232R-5V with ICSP adapter"; + type = "ftdi_syncbb"; + connection_type = usb; + miso = 2; # rts + sck = 1; # rxd + mosi = 3; # cts + reset = 0; # txd +; + +programmer + id = "usbasp"; + desc = "USBasp, http://www.fischl.de/usbasp/"; + type = "usbasp"; + connection_type = usb; + usbvid = 0x16C0; # VOTI + usbpid = 0x05DC; # Obdev's free shared PID + usbvendor = "www.fischl.de"; + usbproduct = "USBasp"; + + # following variants are autodetected for id "usbasp" + + # original usbasp from fischl.de + # see above "usbasp" + + # old usbasp from fischl.de + #usbvid = 0x03EB; # ATMEL + #usbpid = 0xC7B4; # (unoffical) USBasp + #usbvendor = "www.fischl.de"; + #usbproduct = "USBasp"; + + # NIBObee (only if -P nibobee is given on command line) + # see below "nibobee" +; + +programmer + id = "nibobee"; + desc = "NIBObee"; + type = "usbasp"; + connection_type = usb; + usbvid = 0x16C0; # VOTI + usbpid = 0x092F; # NIBObee PID + usbvendor = "www.nicai-systems.com"; + usbproduct = "NIBObee"; +; + +programmer + id = "usbasp-clone"; + desc = "Any usbasp clone with correct VID/PID"; + type = "usbasp"; + connection_type = usb; + usbvid = 0x16C0; # VOTI + usbpid = 0x05DC; # Obdev's free shared PID + #usbvendor = ""; + #usbproduct = ""; +; + +# USBtiny can also be used for TPI programming. +# In that case, a resistor of 1 kOhm is needed between MISO and MOSI +# pins of the connector, and MISO (pin 1 of the 6-pin connector) +# connects to TPIDATA. +programmer + id = "usbtiny"; + desc = "USBtiny simple USB programmer, https://learn.adafruit.com/usbtinyisp"; + type = "usbtiny"; + connection_type = usb; + usbvid = 0x1781; + usbpid = 0x0c9f; +; + +# commercial version of USBtiny, using a separate VID/PID +programmer + id = "ehajo-isp"; + desc = "avr-isp-programmer from eHaJo, http://www.eHaJo.de"; + type = "usbtiny"; + connection_type = usb; + usbvid = 0x16D0; + usbpid = 0x0BA5; +; + +programmer + id = "arduinoisp"; + desc = "Arduino ISP Programmer"; + type = "usbtiny"; + connection_type = usb; + usbvid = 0x2341; + usbpid = 0x0049; +; + +programmer + id = "arduinoisporg"; + desc = "Arduino ISP Programmer"; + type = "usbtiny"; + connection_type = usb; + usbvid = 0x2A03; + usbpid = 0x0049; +; + +programmer + id = "butterfly"; + desc = "Atmel Butterfly Development Board"; + type = "butterfly"; + connection_type = serial; +; + +programmer + id = "avr109"; + desc = "Atmel AppNote AVR109 Boot Loader"; + type = "butterfly"; + connection_type = serial; +; + +programmer + id = "avr911"; + desc = "Atmel AppNote AVR911 AVROSP"; + type = "butterfly"; + connection_type = serial; +; + +# suggested in http://forum.mikrokopter.de/topic-post48317.html +programmer + id = "mkbutterfly"; + desc = "Mikrokopter.de Butterfly"; + type = "butterfly_mk"; + connection_type = serial; +; + +programmer parent "mkbutterfly" + id = "butterfly_mk"; +; + +programmer + id = "jtagmkI"; + desc = "Atmel JTAG ICE (mkI)"; + baudrate = 115200; # default is 115200 + type = "jtagmki"; + connection_type = serial; +; + +# easier to type +programmer parent "jtagmkI" + id = "jtag1"; +; + +# easier to type +programmer parent "jtag1" + id = "jtag1slow"; + baudrate = 19200; +; + +# The JTAG ICE mkII has both, serial and USB connectivity. As it is +# mostly used through USB these days (AVR Studio 5 only supporting it +# that way), we make connection_type = usb the default. Users are +# still free to use a serial port with the -P option. + +programmer + id = "jtagmkII"; + desc = "Atmel JTAG ICE mkII"; + baudrate = 19200; # default is 19200 + type = "jtagmkii"; + connection_type = usb; +; + +# easier to type +programmer parent "jtagmkII" + id = "jtag2slow"; +; + +# JTAG ICE mkII @ 115200 Bd +programmer parent "jtag2slow" + id = "jtag2fast"; + baudrate = 115200; +; + +# make the fast one the default, people will love that +programmer parent "jtag2fast" + id = "jtag2"; +; + +# JTAG ICE mkII in ISP mode +programmer + id = "jtag2isp"; + desc = "Atmel JTAG ICE mkII in ISP mode"; + baudrate = 115200; + type = "jtagmkii_isp"; + connection_type = usb; +; + +# JTAG ICE mkII in debugWire mode +programmer + id = "jtag2dw"; + desc = "Atmel JTAG ICE mkII in debugWire mode"; + baudrate = 115200; + type = "jtagmkii_dw"; + connection_type = usb; +; + +# JTAG ICE mkII in AVR32 mode +programmer + id = "jtagmkII_avr32"; + desc = "Atmel JTAG ICE mkII im AVR32 mode"; + baudrate = 115200; + type = "jtagmkii_avr32"; + connection_type = usb; +; + +# JTAG ICE mkII in AVR32 mode +programmer + id = "jtag2avr32"; + desc = "Atmel JTAG ICE mkII im AVR32 mode"; + baudrate = 115200; + type = "jtagmkii_avr32"; + connection_type = usb; +; + +# JTAG ICE mkII in PDI mode +programmer + id = "jtag2pdi"; + desc = "Atmel JTAG ICE mkII PDI mode"; + baudrate = 115200; + type = "jtagmkii_pdi"; + connection_type = usb; +; + +# AVR Dragon in JTAG mode +programmer + id = "dragon_jtag"; + desc = "Atmel AVR Dragon in JTAG mode"; + baudrate = 115200; + type = "dragon_jtag"; + connection_type = usb; +; + +# AVR Dragon in ISP mode +programmer + id = "dragon_isp"; + desc = "Atmel AVR Dragon in ISP mode"; + baudrate = 115200; + type = "dragon_isp"; + connection_type = usb; +; + +# AVR Dragon in PP mode +programmer + id = "dragon_pp"; + desc = "Atmel AVR Dragon in PP mode"; + baudrate = 115200; + type = "dragon_pp"; + connection_type = usb; +; + +# AVR Dragon in HVSP mode +programmer + id = "dragon_hvsp"; + desc = "Atmel AVR Dragon in HVSP mode"; + baudrate = 115200; + type = "dragon_hvsp"; + connection_type = usb; +; + +# AVR Dragon in debugWire mode +programmer + id = "dragon_dw"; + desc = "Atmel AVR Dragon in debugWire mode"; + baudrate = 115200; + type = "dragon_dw"; + connection_type = usb; +; + +# AVR Dragon in PDI mode +programmer + id = "dragon_pdi"; + desc = "Atmel AVR Dragon in PDI mode"; + baudrate = 115200; + type = "dragon_pdi"; + connection_type = usb; +; + +programmer + id = "jtag3"; + desc = "Atmel AVR JTAGICE3 in JTAG mode"; + type = "jtagice3"; + connection_type = usb; + usbpid = 0x2110, 0x2140; +; + +programmer + id = "jtag3pdi"; + desc = "Atmel AVR JTAGICE3 in PDI mode"; + type = "jtagice3_pdi"; + connection_type = usb; + usbpid = 0x2110, 0x2140; +; + +programmer + id = "jtag3dw"; + desc = "Atmel AVR JTAGICE3 in debugWIRE mode"; + type = "jtagice3_dw"; + connection_type = usb; + usbpid = 0x2110, 0x2140; +; + +programmer + id = "jtag3isp"; + desc = "Atmel AVR JTAGICE3 in ISP mode"; + type = "jtagice3_isp"; + connection_type = usb; + usbpid = 0x2110, 0x2140; +; + +programmer + id = "xplainedpro"; + desc = "Atmel AVR XplainedPro in JTAG mode"; + type = "jtagice3"; + connection_type = usb; + usbpid = 0x2111; +; + +programmer + id = "xplainedpro_updi"; + desc = "Atmel AVR XplainedPro in UPDI mode"; + type = "jtagice3_updi"; + connection_type = usb; + usbpid = 0x2111; +; + +programmer + id = "xplainedmini"; + desc = "Atmel AVR XplainedMini in ISP mode"; + type = "jtagice3_isp"; + connection_type = usb; + usbpid = 0x2145; +; + +programmer + id = "xplainedmini_dw"; + desc = "Atmel AVR XplainedMini in debugWIRE mode"; + type = "jtagice3_dw"; + connection_type = usb; + usbpid = 0x2145; +; + +programmer + id = "xplainedmini_updi"; + desc = "Atmel AVR XplainedMini in UPDI mode"; + type = "jtagice3_updi"; + connection_type = usb; + usbpid = 0x2145; +; + +programmer + id = "atmelice"; + desc = "Atmel-ICE (ARM/AVR) in JTAG mode"; + type = "jtagice3"; + connection_type = usb; + usbpid = 0x2141; +; + +programmer + id = "atmelice_pdi"; + desc = "Atmel-ICE (ARM/AVR) in PDI mode"; + type = "jtagice3_pdi"; + connection_type = usb; + usbpid = 0x2141; +; + +programmer + id = "atmelice_updi"; + desc = "Atmel-ICE (ARM/AVR) in UPDI mode"; + type = "jtagice3_updi"; + connection_type = usb; + usbpid = 0x2141; +; + +programmer + id = "atmelice_dw"; + desc = "Atmel-ICE (ARM/AVR) in debugWIRE mode"; + type = "jtagice3_dw"; + connection_type = usb; + usbpid = 0x2141; +; + +programmer + id = "atmelice_isp"; + desc = "Atmel-ICE (ARM/AVR) in ISP mode"; + type = "jtagice3_isp"; + connection_type = usb; + usbpid = 0x2141; +; + +programmer + id = "powerdebugger"; + desc = "Atmel PowerDebugger (ARM/AVR) in JTAG mode"; + type = "jtagice3"; + connection_type = usb; + usbpid = 0x2144; +; + +programmer + id = "powerdebugger_pdi"; + desc = "Atmel PowerDebugger (ARM/AVR) in PDI mode"; + type = "jtagice3_pdi"; + connection_type = usb; + usbpid = 0x2144; +; + +programmer + id = "powerdebugger_updi"; + desc = "Atmel PowerDebugger (ARM/AVR) in UPDI mode"; + type = "jtagice3_updi"; + connection_type = usb; + usbpid = 0x2144; +; + +programmer + id = "powerdebugger_dw"; + desc = "Atmel PowerDebugger (ARM/AVR) in debugWire mode"; + type = "jtagice3_dw"; + connection_type = usb; + usbpid = 0x2144; +; + +programmer + id = "powerdebugger_isp"; + desc = "Atmel PowerDebugger (ARM/AVR) in ISP mode"; + type = "jtagice3_isp"; + connection_type = usb; + usbpid = 0x2144; +; + +programmer + id = "pavr"; + desc = "Jason Kyle's pAVR Serial Programmer"; + type = "avr910"; + connection_type = serial; +; + +programmer + id = "pickit2"; + desc = "MicroChip's PICkit2 Programmer"; + type = "pickit2"; + connection_type = usb; +; + +programmer + id = "flip1"; + desc = "FLIP USB DFU protocol version 1 (doc7618)"; + type = "flip1"; + connection_type = usb; +; + +programmer + id = "flip2"; + desc = "FLIP USB DFU protocol version 2 (AVR4023)"; + type = "flip2"; + connection_type = usb; +; + +# Parallel port programmers. + +programmer + id = "bsd"; + desc = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/"; + type = "par"; + connection_type = parallel; + vcc = 2, 3, 4, 5; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; +; + +programmer + id = "stk200"; + desc = "STK200"; + type = "par"; + connection_type = parallel; + buff = 4, 5; + sck = 6; + mosi = 7; + reset = 9; + miso = 10; +; + +# The programming dongle used by the popular Ponyprog +# utility. It is almost similar to the STK200 one, +# except that there is a LED indicating that the +# programming is currently in progress. + +programmer parent "stk200" + id = "pony-stk200"; + desc = "Pony Prog STK200"; + pgmled = 8; +; + +programmer + id = "dt006"; + desc = "Dontronics DT006"; + type = "par"; + connection_type = parallel; + reset = 4; + sck = 5; + mosi = 2; + miso = 11; +; + +programmer parent "dt006" + id = "bascom"; + desc = "Bascom SAMPLE programming cable"; +; + +programmer + id = "alf"; + desc = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/"; + type = "par"; + connection_type = parallel; + vcc = 2, 3, 4, 5; + buff = 6; + reset = 7; + sck = 8; + mosi = 9; + miso = 10; + errled = 1; + rdyled = 14; + pgmled = 16; + vfyled = 17; +; + +programmer + id = "sp12"; + desc = "Steve Bolt's Programmer"; + type = "par"; + connection_type = parallel; + vcc = 4,5,6,7,8; + reset = 3; + sck = 2; + mosi = 9; + miso = 11; +; + +programmer + id = "picoweb"; + desc = "Picoweb Programming Cable, http://www.picoweb.net/"; + type = "par"; + connection_type = parallel; + reset = 2; + sck = 3; + mosi = 4; + miso = 13; +; + +programmer + id = "abcmini"; + desc = "ABCmini Board, aka Dick Smith HOTCHIP"; + type = "par"; + connection_type = parallel; + reset = 4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "futurlec"; + desc = "Futurlec.com programming cable."; + type = "par"; + connection_type = parallel; + reset = 3; + sck = 2; + mosi = 1; + miso = 10; +; + + +# From the contributor of the "xil" jtag cable: +# The "vcc" definition isn't really vcc (the cable gets its power from +# the programming circuit) but is necessary to switch one of the +# buffer lines (trying to add it to the "buff" lines doesn't work in +# avrdude versions before 5.5j). +# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK +# to SCK (plus vcc/gnd of course) +programmer + id = "xil"; + desc = "Xilinx JTAG cable"; + type = "par"; + connection_type = parallel; + mosi = 2; + sck = 3; + reset = 4; + buff = 5; + miso = 13; + vcc = 6; +; + + +programmer + id = "dapa"; + desc = "Direct AVR Parallel Access cable"; + type = "par"; + connection_type = parallel; + vcc = 3; + reset = 16; + sck = 1; + mosi = 2; + miso = 11; +; + +programmer + id = "atisp"; + desc = "AT-ISP V1.1 programming cable for AVR-SDK1 from micro-research.co.th"; + type = "par"; + connection_type = parallel; + reset = ~6; + sck = ~8; + mosi = ~7; + miso = ~10; +; + +programmer + id = "ere-isp-avr"; + desc = "ERE ISP-AVR "; + type = "par"; + connection_type = parallel; + reset = ~4; + sck = 3; + mosi = 2; + miso = 10; +; + +programmer + id = "blaster"; + desc = "Altera ByteBlaster"; + type = "par"; + connection_type = parallel; + sck = 2; + miso = 11; + reset = 3; + mosi = 8; + buff = 14; +; + +# It is almost same as pony-stk200, except vcc on pin 5 to auto +# disconnect port (download on http://electropol.free.fr/spip/spip.php?article27) +programmer parent "pony-stk200" + id = "frank-stk200"; + desc = "Frank STK200"; + buff = ; # delete buff pin assignment + vcc = 5; +; + +# The AT98ISP Cable is a simple parallel dongle for AT89 family. +# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877 +programmer + id = "89isp"; + desc = "Atmel at89isp cable"; + type = "par"; + connection_type = parallel; + reset = 17; + sck = 1; + mosi = 2; + miso = 10; +; + + +#This programmer bitbangs GPIO lines using the Linux sysfs GPIO interface +# +#To enable it set the configuration below to match the GPIO lines connected to the +#relevant ISP header pins and uncomment the entry definition. In case you don't +#have the required permissions to edit this system wide config file put the +#entry in a separate .conf file and use it with -C+.conf +#on the command line. +# +#To check if your avrdude build has support for the linuxgpio programmer compiled in, +#use -c?type on the command line and look for linuxgpio in the list. If it's not available +#you need pass the --enable-linuxgpio=yes option to configure and recompile avrdude. +# +#programmer +# id = "linuxgpio"; +# desc = "Use the Linux sysfs interface to bitbang GPIO lines"; +# type = "linuxgpio"; +# reset = ?; +# sck = ?; +# mosi = ?; +# miso = ?; +#; + + +#This programmer uses the built in linux SPI bus devices to program an +#attached AVR. A GPIO accessed through the sysfs GPIO interface needs to +#be specified for a reset pin since the linux SPI userspace functions do +#not allow for control over the slave select/chip select signal. +# +programmer + id = "linuxspi"; + desc = "Use Linux SPI device in /dev/spidev*"; + type = "linuxspi"; + reset = 25; +; + +# some ultra cheap programmers use bitbanging on the +# serialport. +# +# PC - DB9 - Pins for RS232: +# +# GND 5 -- |O +# | O| <- 9 RI +# DTR 4 <- |O | +# | O| <- 8 CTS +# TXD 3 <- |O | +# | O| -> 7 RTS +# RXD 2 -> |O | +# | O| <- 6 DSR +# DCD 1 -> |O +# +# Using RXD is currently not supported. +# Using RI is not supported under Win32 but is supported under Posix. + +# serial ponyprog design (dasa2 in uisp) +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer + id = "ponyser"; + desc = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts"; + type = "serbb"; + connection_type = serial; + reset = ~3; + sck = 7; + mosi = 4; + miso = 8; +; + +# Same as above, different name +# reset=!txd sck=rts mosi=dtr miso=cts + +programmer parent "ponyser" + id = "siprog"; + desc = "Lancos SI-Prog "; +; + +# unknown (dasa in uisp) +# reset=rts sck=dtr mosi=txd miso=cts + +programmer + id = "dasa"; + desc = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts"; + type = "serbb"; + connection_type = serial; + reset = 7; + sck = 4; + mosi = 3; + miso = 8; +; + +# unknown (dasa3 in uisp) +# reset=!dtr sck=rts mosi=txd miso=cts + +programmer + id = "dasa3"; + desc = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts"; + type = "serbb"; + connection_type = serial; + reset = ~4; + sck = 7; + mosi = 3; + miso = 8; +; + +# C2N232i (jumper configuration "auto") +# reset=dtr sck=!rts mosi=!txd miso=!cts + +programmer + id = "c2n232i"; + desc = "serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts"; + type = "serbb"; + connection_type = serial; + reset = 4; + sck = ~7; + mosi = ~3; + miso = ~8; +; + +# +# PART DEFINITIONS +# + +#------------------------------------------------------------ +# ATtiny11 +#------------------------------------------------------------ + +# This is an HVSP-only device. + +part + id = "t11"; + desc = "ATtiny11"; + stk500_devcode = 0x11; + signature = 0x1e 0x90 0x04; + chip_erase_delay = 20000; + + timeout = 200; + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + blocksize = 64; + readsize = 256; + delay = 5; + ; + + memory "flash" + size = 1024; + blocksize = 128; + readsize = 256; + delay = 3; + ; + + memory "signature" + size = 3; + ; + + memory "lock" + size = 1; + ; + + memory "calibration" + size = 1; + ; + + memory "fuse" + size = 1; + ; +; + +#------------------------------------------------------------ +# ATtiny12 +#------------------------------------------------------------ + +part + id = "t12"; + desc = "ATtiny12"; + stk500_devcode = 0x12; + avr910_devcode = 0x55; + signature = 0x1e 0x90 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 8; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4500; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# ATtiny13 +#------------------------------------------------------------ + +part + id = "t13"; + desc = "ATtiny13"; + has_debugwire = yes; + flash_instr = 0xB4, 0x0E, 0x1E; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; + signature = 0x1e 0x90 0x07; + chip_erase_delay = 4000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 90; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 0; + + memory "eeprom" + size = 64; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 1024; + page_size = 32; + num_pages = 32; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 0 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny15 +#------------------------------------------------------------ + +part + id = "t15"; + desc = "ATtiny15"; + stk500_devcode = 0x13; + avr910_devcode = 0x56; + signature = 0x1e 0x90 0x06; + chip_erase_delay = 8200; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 5; + synchcycles = 6; + latchcycles = 16; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 64; + min_write_delay = 8200; + max_write_delay = 8200; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + size = 1024; + min_write_delay = 4100; + max_write_delay = 4100; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x o o o o x x o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x i i i i 1 1 i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# AT90s1200 +#------------------------------------------------------------ + +part + id = "1200"; + desc = "AT90S1200"; + is_at90s1200 = yes; + stk500_devcode = 0x33; + avr910_devcode = 0x13; + signature = 0x1e 0x90 0x01; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 1; + bytedelay = 0; + pollindex = 0; + pollvalue = 0xFF; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 64; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x x a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 32; + readsize = 256; + ; + memory "flash" + size = 1024; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x02; + delay = 15; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4414 +#------------------------------------------------------------ + +part + id = "4414"; + desc = "AT90S4414"; + stk500_devcode = 0x50; + avr910_devcode = 0x28; + signature = 0x1e 0x92 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2313 +#------------------------------------------------------------ + +part + id = "2313"; + desc = "AT90S2313"; + stk500_devcode = 0x40; + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 128; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x i i x", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s2333 +#------------------------------------------------------------ + +part + id = "2333"; +##### WARNING: No XML file for device 'AT90S2333'! ##### + desc = "AT90S2333"; + stk500_devcode = 0x42; + avr910_devcode = 0x34; + signature = 0x1e 0x91 0x05; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s2343 (also AT90s2323 and ATtiny22) +#------------------------------------------------------------ + +part + id = "2343"; + desc = "AT90S2343"; + stk500_devcode = 0x43; + avr910_devcode = 0x4c; + signature = 0x1e 0x91 0x03; + chip_erase_delay = 18000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00, + 0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78, + 0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 0; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 50; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + memory "flash" + size = 2048; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 128; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o o x x x x o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + + +#------------------------------------------------------------ +# AT90s4433 +#------------------------------------------------------------ + +part + id = "4433"; + desc = "AT90S4433"; + stk500_devcode = 0x51; + avr910_devcode = 0x30; + signature = 0x1e 0x92 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + pwroff_after_write = yes; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s4434 +#------------------------------------------------------------ + +part + id = "4434"; +##### WARNING: No XML file for device 'AT90S4434'! ##### + desc = "AT90S4434"; + stk500_devcode = 0x52; + avr910_devcode = 0x6c; + signature = 0x1e 0x92 0x02; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + memory "eeprom" + size = 256; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + ; + memory "flash" + size = 4096; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 i i i i i", + "x x x x x x x x x x x x x x x x"; + ; + memory "lock" + size = 1; + min_write_delay = 9000; + max_write_delay = 20000; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + ; + ; + +#------------------------------------------------------------ +# AT90s8515 +#------------------------------------------------------------ + +part + id = "8515"; + desc = "AT90S8515"; + stk500_devcode = 0x60; + avr910_devcode = 0x38; + signature = 0x1e 0x93 0x01; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x7f; + readback_p2 = 0x7f; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# AT90s8535 +#------------------------------------------------------------ + +part + id = "8535"; + desc = "AT90S8535"; + stk500_devcode = 0x61; + avr910_devcode = 0x68; + signature = 0x1e 0x93 0x03; + chip_erase_delay = 20000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 1; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0x00; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "flash" + size = 8192; + min_write_delay = 9000; + max_write_delay = 20000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write_lo = " 0 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + write_hi = " 0 1 0 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 128; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "fuse" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x x o"; + write = "1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x o o x x x x x x"; + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + ; + +#------------------------------------------------------------ +# ATmega103 +#------------------------------------------------------------ + +part + id = "m103"; + desc = "ATmega103"; + stk500_devcode = 0xB1; + avr910_devcode = 0x41; + signature = 0x1e 0x97 0x01; + chip_erase_delay = 112000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE, + 0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE, + 0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A, + 0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 15; + chiperasepolltimeout = 0; + programfusepulsewidth = 2; + programfusepolltimeout = 0; + programlockpulsewidth = 0; + programlockpolltimeout = 10; + + memory "eeprom" + size = 4096; + min_write_delay = 4000; + max_write_delay = 9000; + readback_p1 = 0x80; + readback_p2 = 0x7f; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 22000; + max_write_delay = 56000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x11; + delay = 70; + blocksize = 256; + readsize = 256; + ; + + memory "fuse" + size = 1; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x x o x o 1 o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 1 i 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x o o x"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 i i 1", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega64 +#------------------------------------------------------------ + +part + id = "m64"; + desc = "ATmega64"; + has_jtag = yes; + stk500_devcode = 0xA0; + avr910_devcode = 0x45; + signature = 0x1e 0x96 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + allowfullpagebitstream = yes; + + ocdrev = 2; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega128 +#------------------------------------------------------------ + +part + id = "m128"; + desc = "ATmega128"; + has_jtag = yes; + stk500_devcode = 0xB2; + avr910_devcode = 0x43; + signature = 0x1e 0x97 0x02; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x22; + spmcr = 0x68; + rampz = 0x3b; + allowfullpagebitstream = yes; + + ocdrev = 1; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 12; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90CAN128 +#------------------------------------------------------------ + +part + id = "c128"; + desc = "AT90CAN128"; + has_jtag = yes; + stk500_devcode = 0xB3; +# avr910_devcode = 0x43; + signature = 0x1e 0x97 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90CAN64 +#------------------------------------------------------------ + +part + id = "c64"; + desc = "AT90CAN64"; + has_jtag = yes; + stk500_devcode = 0xB3; +# avr910_devcode = 0x43; + signature = 0x1e 0x96 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90CAN32 +#------------------------------------------------------------ + +part + id = "c32"; + desc = "AT90CAN32"; + has_jtag = yes; + stk500_devcode = 0xB3; +# avr910_devcode = 0x43; + signature = 0x1e 0x95 0x81; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + eecr = 0x3f; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 256; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega16 +#------------------------------------------------------------ + +part + id = "m16"; + desc = "ATmega16"; + has_jtag = yes; + stk500_devcode = 0x82; + avr910_devcode = 0x74; + signature = 0x1e 0x94 0x03; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 100; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + ocdrev = 2; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "calibration" + size = 4; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega164P +#------------------------------------------------------------ + +# close to ATmega16 + +part parent "m16" + id = "m164p"; + desc = "ATmega164P"; + signature = 0x1e 0x94 0x0a; + + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + allowfullpagebitstream = no; + chip_erase_delay = 55000; + + ocdrev = 3; + ; + + +#------------------------------------------------------------ +# ATmega324P +#------------------------------------------------------------ + +# similar to ATmega164P + +part + id = "m324p"; + desc = "ATmega324P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x95 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 55000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega324PA +#------------------------------------------------------------ + +# similar to ATmega324P + +part parent "m324p" + id = "m324pa"; + desc = "ATmega324PA"; + signature = 0x1e 0x95 0x11; + + ocdrev = 3; + ; + + +#------------------------------------------------------------ +# ATmega644 +#------------------------------------------------------------ + +# similar to ATmega164 + +part + id = "m644"; + desc = "ATmega644"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x96 0x09; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 55000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega644P +#------------------------------------------------------------ + +# similar to ATmega164p + +part parent "m644" + id = "m644p"; + desc = "ATmega644P"; + signature = 0x1e 0x96 0x0a; + + ocdrev = 3; + ; + + + +#------------------------------------------------------------ +# ATmega1284 +#------------------------------------------------------------ + +# similar to ATmega164 + +part + id = "m1284"; + desc = "ATmega1284"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x97 0x06; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 55000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega1284P +#------------------------------------------------------------ + +# similar to ATmega164p + +part + id = "m1284p"; + desc = "ATmega1284P"; + has_jtag = yes; + stk500_devcode = 0x82; # no STK500v1 support, use the ATmega16 one + avr910_devcode = 0x74; + signature = 0x1e 0x97 0x05; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 55000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega162 +#------------------------------------------------------------ + +part + id = "m162"; + desc = "ATmega162"; + has_jtag = yes; + stk500_devcode = 0x83; + avr910_devcode = 0x63; + signature = 0x1e 0x94 0x04; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + + idr = 0x04; + spmcr = 0x57; + allowfullpagebitstream = yes; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + ocdrev = 2; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + + ; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 16000; + max_write_delay = 16000; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; +; + + + +#------------------------------------------------------------ +# ATmega163 +#------------------------------------------------------------ + +part + id = "m163"; + desc = "ATmega163"; + stk500_devcode = 0x81; + avr910_devcode = 0x64; + signature = 0x1e 0x94 0x02; + chip_erase_delay = 32000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + + memory "eeprom" + size = 512; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 16000; + max_write_delay = 16000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x11; + delay = 20; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o x x o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i 1 1 i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x x x x x 1 o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x 1 1 1 1 1 i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x 0 x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega169 +#------------------------------------------------------------ + +part + id = "m169"; + desc = "ATmega169"; + has_jtag = yes; + stk500_devcode = 0x85; + avr910_devcode = 0x78; + signature = 0x1e 0x94 0x05; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + ocdrev = 2; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega329 +#------------------------------------------------------------ + +part + id = "m329"; + desc = "ATmega329"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x95 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega329P +#------------------------------------------------------------ +# Identical to ATmega329 except of the signature + +part parent "m329" + id = "m329p"; + desc = "ATmega329P"; + signature = 0x1e 0x95 0x0b; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega3290 +#------------------------------------------------------------ + +# identical to ATmega329 + +part parent "m329" + id = "m3290"; + desc = "ATmega3290"; + signature = 0x1e 0x95 0x04; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega3290P +#------------------------------------------------------------ + +# identical to ATmega3290 except of the signature + +part parent "m3290" + id = "m3290p"; + desc = "ATmega3290P"; + signature = 0x1e 0x95 0x0c; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega649 +#------------------------------------------------------------ + +part + id = "m649"; + desc = "ATmega649"; + has_jtag = yes; +# stk500_devcode = 0x85; # no STK500 support, only STK500v2 +# avr910_devcode = 0x?; # try the ATmega169 one: + avr910_devcode = 0x75; + signature = 0x1e 0x96 0x03; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega6490 +#------------------------------------------------------------ + +# identical to ATmega649 + +part parent "m649" + id = "m6490"; + desc = "ATmega6490"; + signature = 0x1e 0x96 0x04; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega32 +#------------------------------------------------------------ + +part + id = "m32"; + desc = "ATmega32"; + has_jtag = yes; + stk500_devcode = 0x91; + avr910_devcode = 0x72; + signature = 0x1e 0x95 0x02; + chip_erase_delay = 9000; + pagel = 0xd7; + bs2 = 0xa0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = yes; + + ocdrev = 2; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega161 +#------------------------------------------------------------ + +part + id = "m161"; + desc = "ATmega161"; + stk500_devcode = 0x80; + avr910_devcode = 0x60; + signature = 0x1e 0x94 0x01; + chip_erase_delay = 28000; + pagel = 0xd7; + bs2 = 0xa0; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 30; + programfusepulsewidth = 0; + programfusepolltimeout = 2; + programlockpulsewidth = 0; + programlockpolltimeout = 2; + + memory "eeprom" + size = 512; + min_write_delay = 3400; + max_write_delay = 3400; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 5; + blocksize = 128; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 14000; + max_write_delay = 14000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 16; + blocksize = 128; + readsize = 256; + ; + + memory "fuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 x x x x x x x x", + "x x x x x x x x x o x o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 x x x x x", + "x x x x x x x x 1 i 1 i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATmega8 +#------------------------------------------------------------ + +part + id = "m8"; + desc = "ATmega8"; + stk500_devcode = 0x70; + avr910_devcode = 0x76; + signature = 0x1e 0x93 0x07; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 10000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + page_size = 4; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + # Required for Arduino IDE + # see: https://github.com/arduino/Arduino/issues/2075 + # https://github.com/arduino/Arduino/issues/2075#issuecomment-238031689 + memory "efuse" + size = 0; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + +#------------------------------------------------------------ +# ATmega8515 +#------------------------------------------------------------ + +part + id = "m8515"; + desc = "ATmega8515"; + stk500_devcode = 0x63; + avr910_devcode = 0x3A; + signature = 0x1e 0x93 0x06; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + + + +#------------------------------------------------------------ +# ATmega8535 +#------------------------------------------------------------ + +part + id = "m8535"; + desc = "ATmega8535"; + stk500_devcode = 0x64; + avr910_devcode = 0x69; + signature = 0x1e 0x93 0x08; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 6; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + mode = 0x04; + delay = 20; + blocksize = 128; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 2000; + max_write_delay = 2000; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 0 0 x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + + +#------------------------------------------------------------ +# ATtiny26 +#------------------------------------------------------------ + +part + id = "t26"; + desc = "ATtiny26"; + stk500_devcode = 0x21; + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x09; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + mode = 0x04; + delay = 10; + blocksize = 64; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 16; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x x x x i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 4; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny261 +#------------------------------------------------------------ +# Close to ATtiny26 + +part + id = "t261"; + desc = "ATtiny261"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0c; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + size = 128; + page_size = 4; + num_pages = 32; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = "1 0 1 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 x x x x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x x a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny461 +#------------------------------------------------------------ +# Close to ATtiny261 + +part + id = "t461"; + desc = "ATtiny461"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x92 0x08; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + size = 256; + page_size = 4; + num_pages = 64; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny861 +#------------------------------------------------------------ +# Close to ATtiny461 + +part + id = "t861"; + desc = "ATtiny861"; + has_debugwire = yes; + flash_instr = 0xB4, 0x00, 0x10; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +# stk500_devcode = 0x21; +# avr910_devcode = 0x5e; + signature = 0x1e 0x93 0x0d; + pagel = 0xb3; + bs2 = 0xb2; + chip_erase_delay = 4000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 0; + + pp_controlstack = + 0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC, + 0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC, + 0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C, + 0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 2; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + size = 512; + num_pages = 128; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4000; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read = " 1 0 1 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0 x x x x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 x x x x x x x x", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 1 1 1 i i", + "x x x x x x x x x x x x x x x x"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + +; + + +#------------------------------------------------------------ +# ATtiny28 +#------------------------------------------------------------ + +# This is an HVPP-only device. + +part + id = "t28"; + desc = "ATtiny28"; + stk500_devcode = 0x22; + avr910_devcode = 0x5c; + signature = 0x1e 0x91 0x07; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 0; + poweroffdelay = 0; + resetdelayms = 0; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "flash" + size = 2048; + page_size = 2; + readsize = 256; + delay = 5; + ; + + memory "signature" + size = 3; + ; + + memory "lock" + size = 1; + ; + + memory "calibration" + size = 1; + ; + + memory "fuse" + size = 1; + ; +; + + + +#------------------------------------------------------------ +# ATmega48 +#------------------------------------------------------------ + +part + id = "m48"; + desc = "ATmega48"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x59; +# avr910_devcode = 0x; + signature = 0x1e 0x92 0x05; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 45000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + page_size = 4; + size = 256; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega48P +#------------------------------------------------------------ + +part parent "m48" + id = "m48p"; + desc = "ATmega48P"; + signature = 0x1e 0x92 0x0a; + + ocdrev = 1; + ; + +#------------------------------------------------------------ +# ATmega48PB +#------------------------------------------------------------ + +part parent "m48" + id = "m48pb"; + desc = "ATmega48PB"; + signature = 0x1e 0x92 0x10; + + ocdrev = 1; + ; + +#------------------------------------------------------------ +# ATmega88 +#------------------------------------------------------------ + +part + id = "m88"; + desc = "ATmega88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; +# avr910_devcode = 0x; + signature = 0x1e 0x93 0x0a; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega88P +#------------------------------------------------------------ + +part parent "m88" + id = "m88p"; + desc = "ATmega88P"; + signature = 0x1e 0x93 0x0f; + + ocdrev = 1; + ; + +#------------------------------------------------------------ +# ATmega88PB +#------------------------------------------------------------ + +part parent "m88" + id = "m88pb"; + desc = "ATmega88PB"; + signature = 0x1e 0x93 0x16; + + ocdrev = 1; + ; + +#------------------------------------------------------------ +# ATmega168 +#------------------------------------------------------------ + +part + id = "m168"; + desc = "ATmega168"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x94 0x06; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + page_size = 4; + size = 512; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# ATmega168P +#------------------------------------------------------------ + +part parent "m168" + id = "m168p"; + desc = "ATmega168P"; + signature = 0x1e 0x94 0x0b; + + ocdrev = 1; +; + +#------------------------------------------------------------ +# ATmega168PB +#------------------------------------------------------------ + +part parent "m168" + id = "m168pb"; + desc = "ATmega168PB"; + signature = 0x1e 0x94 0x15; + + ocdrev = 1; +; + +#------------------------------------------------------------ +# ATtiny88 +#------------------------------------------------------------ + +part + id = "t88"; + desc = "ATtiny88"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x73; +# avr910_devcode = 0x; + signature = 0x1e 0x93 0x11; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + page_size = 4; + size = 64; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 64; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega328 +#------------------------------------------------------------ + +part + id = "m328"; + desc = "ATmega328"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x95 0x14; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; + page_size = 4; + size = 1024; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +part parent "m328" + id = "m328p"; + desc = "ATmega328P"; + signature = 0x1e 0x95 0x0F; + + ocdrev = 1; +; + +part parent "m328" + id = "m328pb"; + desc = "ATmega328PB"; + signature = 0x1e 0x95 0x16; + + ocdrev = 1; +; + +#------------------------------------------------------------ +# ATmega32m1 +#------------------------------------------------------------ + +part parent "m328" + id = "m32m1"; + desc = "ATmega32M1"; + # stk500_devcode = 0x; + # avr910_devcode = 0x; + signature = 0x1e 0x95 0x84; + bs2 = 0xe2; + + memory "efuse" + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x i i i i i i"; + ; +; + +#------------------------------------------------------------ +# ATmega64m1 +#------------------------------------------------------------ + +part parent "m328" + id = "m64m1"; + desc = "ATmega64M1"; + # stk500_devcode = 0x; + # avr910_devcode = 0x; + signature = 0x1e 0x96 0x84; + bs2 = 0xe2; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x i i i i i i"; + ; +; + +#------------------------------------------------------------ +# ATtiny2313 +#------------------------------------------------------------ + +part + id = "t2313"; + desc = "ATtiny2313"; + has_debugwire = yes; + flash_instr = 0xB2, 0x0F, 0x1F; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x23; +## Use the ATtiny26 devcode: + avr910_devcode = 0x5e; + signature = 0x1e 0x91 0x0a; + pagel = 0xD4; + bs2 = 0xD6; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 0; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + +# The information in the data sheet of April/2004 is wrong, this works: + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +# The Tiny2313 has calibration data for both 4 MHz and 8 MHz. +# The information in the data sheet of April/2004 is wrong, this works: + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny4313 +#------------------------------------------------------------ + +part + id = "t4313"; + desc = "ATtiny4313"; + has_debugwire = yes; + flash_instr = 0xB2, 0x0F, 0x1F; + eeprom_instr = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x23; +## Use the ATtiny26 devcode: + avr910_devcode = 0x5e; + signature = 0x1e 0x92 0x0d; + pagel = 0xD4; + bs2 = 0xD6; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 0; + + memory "eeprom" + size = 256; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny4313 has Signature Bytes: 0x1E 0x92 0x0D. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM2 +#------------------------------------------------------------ + +part + id = "pwm2"; + desc = "AT90PWM2"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x65; +## avr910_devcode = ?; + signature = 0x1e 0x93 0x81; + pagel = 0xD8; + bs2 = 0xE2; + reset = io; + chip_erase_delay = 9000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 64; + readsize = 256; + ; +# AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90PWM3 +#------------------------------------------------------------ + +# Completely identical to AT90PWM2 (including the signature!) + +part parent "pwm2" + id = "pwm3"; + desc = "AT90PWM3"; + ; + +#------------------------------------------------------------ +# AT90PWM2B +#------------------------------------------------------------ +# Same as AT90PWM2 but different signature. + +part parent "pwm2" + id = "pwm2b"; + desc = "AT90PWM2B"; + signature = 0x1e 0x93 0x83; + + ocdrev = 1; + ; + +#------------------------------------------------------------ +# AT90PWM3B +#------------------------------------------------------------ + +# Completely identical to AT90PWM2B (including the signature!) + +part parent "pwm2b" + id = "pwm3b"; + desc = "AT90PWM3B"; + + ocdrev = 1; + ; + +#------------------------------------------------------------ +# AT90PWM316 +#------------------------------------------------------------ + +# Similar to AT90PWM3B, but with 16 kiB flash, 512 B EEPROM, and 1024 B SRAM. + +part parent "pwm3b" + id = "pwm316"; + desc = "AT90PWM316"; + signature = 0x1e 0x94 0x83; + + ocdrev = 1; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x21; + delay = 6; + blocksize = 128; + readsize = 256; + ; + ; + +#------------------------------------------------------------ +# AT90PWM216 +#------------------------------------------------------------ +# Completely identical to AT90PWM316 (including the signature!) + +part parent "pwm316" + id = "pwm216"; + desc = "AT90PWM216"; + ; + +#------------------------------------------------------------ +# ATtiny25 +#------------------------------------------------------------ + +part + id = "t25"; + desc = "ATtiny25"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x08; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 1; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny25 has Signature Bytes: 0x1E 0x91 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny45 +#------------------------------------------------------------ + +part + id = "t45"; + desc = "ATtiny45"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x06; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 1; + + memory "eeprom" + size = 256; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!) + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny85 +#------------------------------------------------------------ + +part + id = "t85"; + desc = "ATtiny85"; + has_debugwire = yes; + flash_instr = 0xB4, 0x02, 0x12; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0b; + reset = io; + chip_erase_delay = 400000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 1; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 12; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 30000; + max_write_delay = 30000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny85 has Signature Bytes: 0x1E 0x93 0x08. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega640 +#------------------------------------------------------------ +# Almost same as ATmega1280, except for different memory sizes + +part + id = "m640"; + desc = "ATmega640"; + signature = 0x1e 0x96 0x08; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1280 +#------------------------------------------------------------ + +part + id = "m1280"; + desc = "ATmega1280"; + signature = 0x1e 0x97 0x03; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega1281 +#------------------------------------------------------------ +# Identical to ATmega1280 + +part parent "m1280" + id = "m1281"; + desc = "ATmega1281"; + signature = 0x1e 0x97 0x04; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega2560 +#------------------------------------------------------------ + +part + id = "m2560"; + desc = "ATmega2560"; + signature = 0x1e 0x98 0x01; + has_jtag = yes; + stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + ocdrev = 4; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 262144; + page_size = 256; + num_pages = 1024; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + load_ext_addr = " 0 1 0 0 1 1 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 a16", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega2561 +#------------------------------------------------------------ + +part parent "m2560" + id = "m2561"; + desc = "ATmega2561"; + signature = 0x1e 0x98 0x02; + + ocdrev = 4; + ; + +#------------------------------------------------------------ +# ATmega128RFA1 +#------------------------------------------------------------ +# Identical to ATmega2561 but half the ROM + +part parent "m2561" + id = "m128rfa1"; + desc = "ATmega128RFA1"; + signature = 0x1e 0xa7 0x01; + chip_erase_delay = 55000; + bs2 = 0xE2; + + ocdrev = 3; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 50000; + max_write_delay = 50000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 256; + readsize = 256; + ; + ; + +#------------------------------------------------------------ +# ATmega256RFR2 +#------------------------------------------------------------ + +part parent "m2561" + id = "m256rfr2"; + desc = "ATmega256RFR2"; + signature = 0x1e 0xa8 0x02; + chip_erase_delay = 18500; + bs2 = 0xE2; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 8192; + min_write_delay = 13000; + max_write_delay = 13000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + + ocdrev = 4; + ; + +#------------------------------------------------------------ +# ATmega128RFR2 +#------------------------------------------------------------ + +part parent "m128rfa1" + id = "m128rfr2"; + desc = "ATmega128RFR2"; + signature = 0x1e 0xa7 0x02; + + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega64RFR2 +#------------------------------------------------------------ + +part parent "m128rfa1" + id = "m64rfr2"; + desc = "ATmega64RFR2"; + signature = 0x1e 0xa6 0x02; + + + ocdrev = 3; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 50000; + max_write_delay = 50000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 256; + readsize = 256; + ; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 13000; + max_write_delay = 13000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + + ; + +#------------------------------------------------------------ +# ATmega2564RFR2 +#------------------------------------------------------------ + +part parent "m256rfr2" + id = "m2564rfr2"; + desc = "ATmega2564RFR2"; + signature = 0x1e 0xa8 0x03; + ; + +#------------------------------------------------------------ +# ATmega1284RFR2 +#------------------------------------------------------------ + +part parent "m128rfr2" + id = "m1284rfr2"; + desc = "ATmega1284RFR2"; + signature = 0x1e 0xa7 0x03; + ; + +#------------------------------------------------------------ +# ATmega644RFR2 +#------------------------------------------------------------ + +part parent "m64rfr2" + id = "m644rfr2"; + desc = "ATmega644RFR2"; + signature = 0x1e 0xa6 0x03; + ; + +#------------------------------------------------------------ +# ATtiny24 +#------------------------------------------------------------ + +part + id = "t24"; + desc = "ATtiny24"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x91 0x0b; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 1; + + memory "eeprom" + size = 128; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "x a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 2048; + page_size = 32; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny44 +#------------------------------------------------------------ + +part + id = "t44"; + desc = "ATtiny44"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x07; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 1; + + memory "eeprom" + size = 256; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny44 has Signature Bytes: 0x1E 0x92 0x07. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny84 +#------------------------------------------------------------ + +part + id = "t84"; + desc = "ATtiny84"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x93 0x0c; + reset = io; + chip_erase_delay = 4500; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + hvsp_controlstack = + 0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66, + 0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78, + 0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10, + 0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F; + hventerstabdelay = 100; + hvspcmdexedelay = 0; + synchcycles = 6; + latchcycles = 1; + togglevtg = 1; + poweroffdelay = 25; + resetdelayms = 0; + resetdelayus = 70; + hvleavestabdelay = 100; + resetdelay = 25; + chiperasepolltimeout = 40; + chiperasetime = 0; + programfusepolltimeout = 25; + programlockpolltimeout = 25; + + ocdrev = 1; + + memory "eeprom" + size = 512; + paged = no; + page_size = 4; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x a8", + "a7 a6 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " x a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 8192; + page_size = 64; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 32; + readsize = 256; + ; +# ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C. + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x x x x x x x i i"; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny441 +#------------------------------------------------------------ + +part parent "t44" + id = "t441"; + desc = "ATtiny441"; + signature = 0x1e 0x92 0x15; + + memory "flash" + paged = yes; + size = 4096; + page_size = 16; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x x a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x x a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 16; + readsize = 256; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# ATtiny841 +#------------------------------------------------------------ + +part parent "t84" + id = "t841"; + desc = "ATtiny841"; + signature = 0x1e 0x93 0x15; + + memory "flash" + paged = yes; + size = 8192; + page_size = 16; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x x x a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x x x a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 16; + readsize = 256; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; +; + +#------------------------------------------------------------ +# ATtiny43U +#------------------------------------------------------------ + +part + id = "t43u"; + desc = "ATtiny43u"; + has_debugwire = yes; + flash_instr = 0xB4, 0x07, 0x17; + eeprom_instr = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D, + 0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC, + 0x99, 0xE1, 0xBB, 0xAC; + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x92 0x0C; + reset = io; + chip_erase_delay = 1000; + + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, 0x4E, 0x5E, + 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, 0x06, 0x16, 0x46, 0x56, + 0x0A, 0x1A, 0x4A, 0x5A, 0x1E, 0x7C, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + hvspcmdexedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 20; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + memory "eeprom" + size = 64; + paged = yes; + page_size = 4; + num_pages = 16; + min_write_delay = 4000; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = "1 0 1 0 0 0 0 0 0 0 0 x x x x x", + "0 0 a4 a3 a2 a1 a0 o o o o o o o o"; + + write = "1 1 0 0 0 0 0 0 0 0 0 x x x x x", + "0 0 a5 a4 a3 a2 a1 a0 i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x x", + " 0 0 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + memory "flash" + paged = yes; + size = 4096; + page_size = 64; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x x a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 64; + readsize = 256; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + memory "lock" + size = 1; + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x x x x i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 4500; + max_write_delay = 4500; + ; + + memory "calibration" + size = 2; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# ATmega32u4 +#------------------------------------------------------------ + +part + id = "m32u4"; + desc = "ATmega32U4"; + signature = 0x1e 0x95 0x87; + usbpid = 0x2ff4; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB646 +#------------------------------------------------------------ + +part + id = "usb646"; + desc = "AT90USB646"; + signature = 0x1e 0x96 0x82; + usbpid = 0x2ff9; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x x a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB647 +#------------------------------------------------------------ +# identical to AT90USB646 + +part parent "usb646" + id = "usb647"; + desc = "AT90USB647"; + signature = 0x1e 0x96 0x82; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# AT90USB1286 +#------------------------------------------------------------ + +part + id = "usb1286"; + desc = "AT90USB1286"; + signature = 0x1e 0x97 0x82; + usbpid = 0x2ffb; + has_jtag = yes; +# stk500_devcode = 0xB2; +# avr910_devcode = 0x43; + chip_erase_delay = 9000; + pagel = 0xD7; + bs2 = 0xA0; + reset = dedicated; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + rampz = 0x3b; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 4096; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " x x x x a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 131072; + page_size = 256; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 x x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 256; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x x i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 x x x x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 x x x x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB1287 +#------------------------------------------------------------ +# identical to AT90USB1286 + +part parent "usb1286" + id = "usb1287"; + desc = "AT90USB1287"; + signature = 0x1e 0x97 0x82; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# AT90USB162 +#------------------------------------------------------------ + +part + id = "usb162"; + desc = "AT90USB162"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x94 0x82; + usbpid = 0x2ffa; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# AT90USB82 +#------------------------------------------------------------ +# Changes against AT90USB162 (beside IDs) +# memory "flash" +# size = 8192; +# num_pages = 64; + +part + id = "usb82"; + desc = "AT90USB82"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x93 0x82; + usbpid = 0x2ff7; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 8192; + page_size = 128; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega32U2 +#------------------------------------------------------------ +# Changes against AT90USB162 (beside IDs) +# memory "flash" +# size = 32768; +# num_pages = 256; +# memory "eeprom" +# size = 1024; +# num_pages = 256; +part + id = "m32u2"; + desc = "ATmega32U2"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x95 0x8a; + usbpid = 0x2ff0; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + num_pages = 256; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; +#------------------------------------------------------------ +# ATmega16U2 +#------------------------------------------------------------ +# Changes against ATmega32U2 (beside IDs) +# memory "flash" +# size = 16384; +# num_pages = 128; +# memory "eeprom" +# size = 512; +# num_pages = 128; +part + id = "m16u2"; + desc = "ATmega16U2"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x94 0x89; + usbpid = 0x2fef; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 128; + num_pages = 128; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega8U2 +#------------------------------------------------------------ +# Changes against ATmega16U2 (beside IDs) +# memory "flash" +# size = 8192; +# page_size = 64; +# blocksize = 64; + +part + id = "m8u2"; + desc = "ATmega8U2"; + has_jtag = no; + has_debugwire = yes; + signature = 0x1e 0x93 0x89; + usbpid = 0x2fee; + chip_erase_delay = 9000; + reset = io; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + pagel = 0xD7; + bs2 = 0xC6; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + ocdrev = 1; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 512; + num_pages = 128; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0x00; + readback_p2 = 0x00; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 20; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 8192; + page_size = 128; + num_pages = 64; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0x00; + readback_p2 = 0x00; + read_lo = " 0 0 1 0 0 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " x x x x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + "a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + ; + + memory "lfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x i i i i i i i i"; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; + ; +#------------------------------------------------------------ +# ATmega325 +#------------------------------------------------------------ + +part + id = "m325"; + desc = "ATmega325"; + signature = 0x1e 0x95 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 4; /* for parallel programming */ + size = 1024; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 0 a9 a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 32768; + page_size = 128; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega645 +#------------------------------------------------------------ + +part + id = "m645"; + desc = "ATmega645"; + signature = 0x1E 0x96 0x05; + has_jtag = yes; +# stk500_devcode = 0x??; # No STK500v1 support? +# avr910_devcode = 0x??; # Try the ATmega16 one + avr910_devcode = 0x74; + pagel = 0xd7; + bs2 = 0xa0; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, + 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, + 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, + 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x31; + spmcr = 0x57; + allowfullpagebitstream = no; + + ocdrev = 3; + + memory "eeprom" + paged = no; /* leave this "no" */ + page_size = 8; /* for parallel programming */ + size = 2048; + min_write_delay = 9000; + max_write_delay = 9000; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 0 0 0 a10 a9 a8", + " a7 a6 a5 a4 a3 0 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 10; + blocksize = 8; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 65536; + page_size = 256; + num_pages = 256; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 0 0 0 0 0", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " a15 a14 a13 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " 0 0 0 0 0 0 0 0"; + + mode = 0x41; + delay = 10; + blocksize = 128; + readsize = 256; + ; + + memory "lock" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 1 1 i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "lfuse" + size = 1; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "hfuse" + size = 1; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "0 0 0 0 0 0 0 0 i i i i i i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "efuse" + size = 1; + + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "0 0 0 0 0 0 0 0 1 1 1 1 1 i i i"; + min_write_delay = 9000; + max_write_delay = 9000; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 a1 a0 o o o o o o o o"; + ; + + memory "calibration" + size = 1; + + read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATmega3250 +#------------------------------------------------------------ + +part parent "m325" + id = "m3250"; + desc = "ATmega3250"; + signature = 0x1E 0x95 0x06; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega6450 +#------------------------------------------------------------ + +part parent "m645" + id = "m6450"; + desc = "ATmega6450"; + signature = 0x1E 0x96 0x06; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# AVR XMEGA family common values +#------------------------------------------------------------ + +part + id = ".xmega"; + desc = "AVR XMEGA family common values"; + has_pdi = yes; + nvm_base = 0x01c0; + mcu_base = 0x0090; + + memory "signature" + size = 3; + offset = 0x1000090; + ; + + memory "prodsig" + size = 0x32; + offset = 0x8e0200; + page_size = 0x32; + readsize = 0x32; + ; + + memory "fuse1" + size = 1; + offset = 0x8f0021; + ; + + memory "fuse2" + size = 1; + offset = 0x8f0022; + ; + + memory "fuse4" + size = 1; + offset = 0x8f0024; + ; + + memory "fuse5" + size = 1; + offset = 0x8f0025; + ; + + memory "lock" + size = 1; + offset = 0x8f0027; + ; + + memory "data" + # SRAM, only used to supply the offset + offset = 0x1000000; + ; +; + +#------------------------------------------------------------ +# ATxmega16A4U +#------------------------------------------------------------ + +part parent ".xmega" + id = "x16a4u"; + desc = "ATxmega16A4U"; + signature = 0x1e 0x94 0x41; + usbpid = 0x2fe3; + + memory "eeprom" + size = 0x400; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x4000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x803000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "boot" + size = 0x1000; + offset = 0x804000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "flash" + size = 0x5000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "usersig" + size = 0x100; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega16C4 +#------------------------------------------------------------ + +part parent "x16a4u" + id = "x16c4"; + desc = "ATxmega16C4"; + signature = 0x1e 0x94 0x43; +; + +#------------------------------------------------------------ +# ATxmega16D4 +#------------------------------------------------------------ + +part parent "x16a4u" + id = "x16d4"; + desc = "ATxmega16D4"; + signature = 0x1e 0x94 0x42; +; + +#------------------------------------------------------------ +# ATxmega16A4 +#------------------------------------------------------------ + +part parent "x16a4u" + id = "x16a4"; + desc = "ATxmega16A4"; + signature = 0x1e 0x94 0x41; + has_jtag = yes; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega32A4U +#------------------------------------------------------------ + +part parent ".xmega" + id = "x32a4u"; + desc = "ATxmega32A4U"; + signature = 0x1e 0x95 0x41; + usbpid = 0x2fe4; + + memory "eeprom" + size = 0x400; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x8000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x807000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "boot" + size = 0x1000; + offset = 0x808000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "flash" + size = 0x9000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "usersig" + size = 0x100; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega32C4 +#------------------------------------------------------------ + +part parent "x32a4u" + id = "x32c4"; + desc = "ATxmega32C4"; + signature = 0x1e 0x95 0x44; +; + +#------------------------------------------------------------ +# ATxmega32D4 +#------------------------------------------------------------ + +part parent "x32a4u" + id = "x32d4"; + desc = "ATxmega32D4"; + signature = 0x1e 0x95 0x42; +; + +#------------------------------------------------------------ +# ATxmega32A4 +#------------------------------------------------------------ + +part parent "x32a4u" + id = "x32a4"; + desc = "ATxmega32A4"; + signature = 0x1e 0x95 0x41; + has_jtag = yes; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega64A4U +#------------------------------------------------------------ + +part parent ".xmega" + id = "x64a4u"; + desc = "ATxmega64A4U"; + signature = 0x1e 0x96 0x46; + usbpid = 0x2fe5; + + memory "eeprom" + size = 0x800; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x10000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x80f000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "boot" + size = 0x1000; + offset = 0x810000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "flash" + size = 0x11000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "usersig" + size = 0x100; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega64C3 +#------------------------------------------------------------ + +part parent "x64a4u" + id = "x64c3"; + desc = "ATxmega64C3"; + signature = 0x1e 0x96 0x49; + usbpid = 0x2fd6; +; + +#------------------------------------------------------------ +# ATxmega64D3 +#------------------------------------------------------------ + +part parent "x64a4u" + id = "x64d3"; + desc = "ATxmega64D3"; + signature = 0x1e 0x96 0x4a; +; + +#------------------------------------------------------------ +# ATxmega64D4 +#------------------------------------------------------------ + +part parent "x64a4u" + id = "x64d4"; + desc = "ATxmega64D4"; + signature = 0x1e 0x96 0x47; +; + +#------------------------------------------------------------ +# ATxmega64A1 +#------------------------------------------------------------ + +part parent "x64a4u" + id = "x64a1"; + desc = "ATxmega64A1"; + signature = 0x1e 0x96 0x4e; + has_jtag = yes; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega64A1U +#------------------------------------------------------------ + +part parent "x64a1" + id = "x64a1u"; + desc = "ATxmega64A1U"; + signature = 0x1e 0x96 0x4e; + usbpid = 0x2fe8; +; + +#------------------------------------------------------------ +# ATxmega64A3 +#------------------------------------------------------------ + +part parent "x64a1" + id = "x64a3"; + desc = "ATxmega64A3"; + signature = 0x1e 0x96 0x42; +; + +#------------------------------------------------------------ +# ATxmega64A3U +#------------------------------------------------------------ + +part parent "x64a1" + id = "x64a3u"; + desc = "ATxmega64A3U"; + signature = 0x1e 0x96 0x42; + usbpid = 0x2fe5; +; + +#------------------------------------------------------------ +# ATxmega64A4 +#------------------------------------------------------------ + +part parent "x64a1" + id = "x64a4"; + desc = "ATxmega64A4"; + signature = 0x1e 0x96 0x46; +; + +#------------------------------------------------------------ +# ATxmega64B1 +#------------------------------------------------------------ + +part parent "x64a1" + id = "x64b1"; + desc = "ATxmega64B1"; + signature = 0x1e 0x96 0x52; + usbpid = 0x2fe1; +; + +#------------------------------------------------------------ +# ATxmega64B3 +#------------------------------------------------------------ + +part parent "x64a1" + id = "x64b3"; + desc = "ATxmega64B3"; + signature = 0x1e 0x96 0x51; + usbpid = 0x2fdf; +; + +#------------------------------------------------------------ +# ATxmega128C3 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x128c3"; + desc = "ATxmega128C3"; + signature = 0x1e 0x97 0x52; + usbpid = 0x2fd7; + + memory "eeprom" + size = 0x800; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x20000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "apptable" + size = 0x2000; + offset = 0x81e000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x820000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "flash" + size = 0x22000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x200; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega128D3 +#------------------------------------------------------------ + +part parent "x128c3" + id = "x128d3"; + desc = "ATxmega128D3"; + signature = 0x1e 0x97 0x48; +; + +#------------------------------------------------------------ +# ATxmega128D4 +#------------------------------------------------------------ + +part parent "x128c3" + id = "x128d4"; + desc = "ATxmega128D4"; + signature = 0x1e 0x97 0x47; +; + +#------------------------------------------------------------ +# ATxmega128A1 +#------------------------------------------------------------ + +part parent "x128c3" + id = "x128a1"; + desc = "ATxmega128A1"; + signature = 0x1e 0x97 0x4c; + has_jtag = yes; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega128A1 revision D +#------------------------------------------------------------ + +part parent "x128a1" + id = "x128a1d"; + desc = "ATxmega128A1revD"; + signature = 0x1e 0x97 0x41; +; + +#------------------------------------------------------------ +# ATxmega128A1U +#------------------------------------------------------------ + +part parent "x128a1" + id = "x128a1u"; + desc = "ATxmega128A1U"; + signature = 0x1e 0x97 0x4c; + usbpid = 0x2fed; +; + +#------------------------------------------------------------ +# ATxmega128A3 +#------------------------------------------------------------ + +part parent "x128a1" + id = "x128a3"; + desc = "ATxmega128A3"; + signature = 0x1e 0x97 0x42; +; + +#------------------------------------------------------------ +# ATxmega128A3U +#------------------------------------------------------------ + +part parent "x128a1" + id = "x128a3u"; + desc = "ATxmega128A3U"; + signature = 0x1e 0x97 0x42; + usbpid = 0x2fe6; +; + +#------------------------------------------------------------ +# ATxmega128A4 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x128a4"; + desc = "ATxmega128A4"; + signature = 0x1e 0x97 0x46; + has_jtag = yes; + + memory "eeprom" + size = 0x800; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x20000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x81f000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x820000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "flash" + size = 0x22000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x200; + readsize = 0x100; + ; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega128A4U +#------------------------------------------------------------ + +part parent ".xmega" + id = "x128a4u"; + desc = "ATxmega128A4U"; + signature = 0x1e 0x97 0x46; + usbpid = 0x2fde; + + memory "eeprom" + size = 0x800; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x20000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x81f000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x820000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "flash" + size = 0x22000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "usersig" + size = 0x100; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega128B1 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x128b1"; + desc = "ATxmega128B1"; + signature = 0x1e 0x97 0x4d; + usbpid = 0x2fea; + has_jtag = yes; + + memory "eeprom" + size = 0x800; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x20000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "apptable" + size = 0x2000; + offset = 0x81e000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x820000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "flash" + size = 0x22000; + offset = 0x800000; + page_size = 0x100; + readsize = 0x100; + ; + + memory "usersig" + size = 0x100; + offset = 0x8e0400; + page_size = 0x100; + readsize = 0x100; + ; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega128B3 +#------------------------------------------------------------ + +part parent "x128b1" + id = "x128b3"; + desc = "ATxmega128B3"; + signature = 0x1e 0x97 0x4b; + usbpid = 0x2fe0; +; + +#------------------------------------------------------------ +# ATxmega192C3 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x192c3"; + desc = "ATxmega192C3"; + signature = 0x1e 0x97 0x51; + # usbpid = 0x2f??; + + memory "eeprom" + size = 0x800; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x30000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "apptable" + size = 0x2000; + offset = 0x82e000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x830000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "flash" + size = 0x32000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x200; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega192D3 +#------------------------------------------------------------ + +part parent "x192c3" + id = "x192d3"; + desc = "ATxmega192D3"; + signature = 0x1e 0x97 0x49; +; + +#------------------------------------------------------------ +# ATxmega192A1 +#------------------------------------------------------------ + +part parent "x192c3" + id = "x192a1"; + desc = "ATxmega192A1"; + signature = 0x1e 0x97 0x4e; + has_jtag = yes; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega192A3 +#------------------------------------------------------------ + +part parent "x192a1" + id = "x192a3"; + desc = "ATxmega192A3"; + signature = 0x1e 0x97 0x44; +; + +#------------------------------------------------------------ +# ATxmega192A3U +#------------------------------------------------------------ + +part parent "x192a1" + id = "x192a3u"; + desc = "ATxmega192A3U"; + signature = 0x1e 0x97 0x44; + usbpid = 0x2fe7; +; + +#------------------------------------------------------------ +# ATxmega256C3 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x256c3"; + desc = "ATxmega256C3"; + signature = 0x1e 0x98 0x46; + usbpid = 0x2fda; + + memory "eeprom" + size = 0x1000; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x40000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "apptable" + size = 0x2000; + offset = 0x83e000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x840000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "flash" + size = 0x42000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x200; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega256D3 +#------------------------------------------------------------ + +part parent "x256c3" + id = "x256d3"; + desc = "ATxmega256D3"; + signature = 0x1e 0x98 0x44; +; + +#------------------------------------------------------------ +# ATxmega256A1 +#------------------------------------------------------------ + +part parent "x256c3" + id = "x256a1"; + desc = "ATxmega256A1"; + signature = 0x1e 0x98 0x46; + has_jtag = yes; + + memory "fuse0" + size = 1; + offset = 0x8f0020; + ; +; + +#------------------------------------------------------------ +# ATxmega256A3 +#------------------------------------------------------------ + +part parent "x256a1" + id = "x256a3"; + desc = "ATxmega256A3"; + signature = 0x1e 0x98 0x42; +; + +#------------------------------------------------------------ +# ATxmega256A3U +#------------------------------------------------------------ + +part parent "x256a1" + id = "x256a3u"; + desc = "ATxmega256A3U"; + signature = 0x1e 0x98 0x42; + usbpid = 0x2fec; +; + +#------------------------------------------------------------ +# ATxmega256A3B +#------------------------------------------------------------ + +part parent "x256a1" + id = "x256a3b"; + desc = "ATxmega256A3B"; + signature = 0x1e 0x98 0x43; +; + +#------------------------------------------------------------ +# ATxmega256A3BU +#------------------------------------------------------------ + +part parent "x256a1" + id = "x256a3bu"; + desc = "ATxmega256A3BU"; + signature = 0x1e 0x98 0x43; + usbpid = 0x2fe2; +; + +#------------------------------------------------------------ +# ATxmega384C3 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x384c3"; + desc = "ATxmega384C3"; + signature = 0x1e 0x98 0x45; + usbpid = 0x2fdb; + + memory "eeprom" + size = 0x1000; + offset = 0x8c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x60000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "apptable" + size = 0x2000; + offset = 0x85e000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "boot" + size = 0x2000; + offset = 0x860000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "flash" + size = 0x62000; + offset = 0x800000; + page_size = 0x200; + readsize = 0x100; + ; + + memory "usersig" + size = 0x200; + offset = 0x8e0400; + page_size = 0x200; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega384D3 +#------------------------------------------------------------ + +part parent "x384c3" + id = "x384d3"; + desc = "ATxmega384D3"; + signature = 0x1e 0x98 0x47; +; + +#------------------------------------------------------------ +# ATxmega8E5 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x8e5"; + desc = "ATxmega8E5"; + signature = 0x1e 0x93 0x41; + + memory "eeprom" + size = 0x0200; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x2000; + offset = 0x0800000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "apptable" + size = 0x800; + offset = 0x00801800; + page_size = 0x80; + readsize = 0x100; + ; + + memory "boot" + size = 0x800; + offset = 0x00802000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "flash" + size = 0x2800; + offset = 0x0800000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "usersig" + size = 0x80; + offset = 0x8e0400; + page_size = 0x80; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega16E5 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x16e5"; + desc = "ATxmega16E5"; + signature = 0x1e 0x94 0x45; + + memory "eeprom" + size = 0x0200; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x4000; + offset = 0x0800000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x00803000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "boot" + size = 0x1000; + offset = 0x00804000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "flash" + size = 0x5000; + offset = 0x0800000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "usersig" + size = 0x80; + offset = 0x8e0400; + page_size = 0x80; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATxmega32E5 +#------------------------------------------------------------ + +part parent ".xmega" + id = "x32e5"; + desc = "ATxmega32E5"; + signature = 0x1e 0x95 0x4c; + + memory "eeprom" + size = 0x0400; + offset = 0x08c0000; + page_size = 0x20; + readsize = 0x100; + ; + + memory "application" + size = 0x8000; + offset = 0x0800000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "apptable" + size = 0x1000; + offset = 0x00807000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "boot" + size = 0x1000; + offset = 0x00808000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "flash" + size = 0x9000; + offset = 0x0800000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "usersig" + size = 0x80; + offset = 0x8e0400; + page_size = 0x80; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# AVR32UC3A0512 +#------------------------------------------------------------ + +part + id = "uc3a0512"; + desc = "AT32UC3A0512"; + signature = 0xED 0xC0 0x3F; + has_jtag = yes; + is_avr32 = yes; + + memory "flash" + paged = yes; + page_size = 512; # bytes + readsize = 512; # bytes + num_pages = 1024; # could be set dynamicly + size = 0x00080000; # could be set dynamicly + offset = 0x80000000; + ; +; + +part parent "uc3a0512" + id = "ucr2"; + desc = "deprecated, use 'uc3a0512'"; +; + +#------------------------------------------------------------ +# ATtiny1634. +#------------------------------------------------------------ + +part + id = "t1634"; + desc = "ATtiny1634"; + has_debugwire = yes; + flash_instr = 0xB6, 0x01, 0x11; + eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, + 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, + 0x99, 0xF9, 0xBB, 0xAF; + stk500_devcode = 0x86; + # avr910_devcode = 0x; + signature = 0x1e 0x94 0x12; + pagel = 0xB3; + bs2 = 0xB1; + reset = io; + chip_erase_delay = 9000; + pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", + "x x x x x x x x x x x x x x x x"; + + chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", + "x x x x x x x x x x x x x x x x"; + + timeout = 200; + stabdelay = 100; + cmdexedelay = 25; + synchloops = 32; + bytedelay = 0; + pollindex = 3; + pollvalue = 0x53; + predelay = 1; + postdelay = 1; + pollmethod = 1; + + pp_controlstack = + 0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E, + 0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E, + 0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A, + 0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + hventerstabdelay = 100; + progmodedelay = 0; + latchcycles = 0; + togglevtg = 1; + poweroffdelay = 15; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + resetdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + memory "eeprom" + paged = no; + page_size = 4; + size = 256; + min_write_delay = 3600; + max_write_delay = 3600; + readback_p1 = 0xff; + readback_p2 = 0xff; + read = " 1 0 1 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + write = " 1 1 0 0 0 0 0 0", + " 0 0 0 x x x x a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_lo = " 1 1 0 0 0 0 0 1", + " 0 0 0 0 0 0 0 0", + " 0 0 0 0 0 0 a1 a0", + " i i i i i i i i"; + + writepage = " 1 1 0 0 0 0 1 0", + " 0 0 x x x x x a8", + " a7 a6 a5 a4 a3 a2 0 0", + " x x x x x x x x"; + + mode = 0x41; + delay = 5; + blocksize = 4; + readsize = 256; + ; + + memory "flash" + paged = yes; + size = 16384; + page_size = 32; + num_pages = 512; + min_write_delay = 4500; + max_write_delay = 4500; + readback_p1 = 0xff; + readback_p2 = 0xff; + read_lo = " 0 0 1 0 0 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + read_hi = " 0 0 1 0 1 0 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 a5 a4 a3 a2 a1 a0", + " o o o o o o o o"; + + loadpage_lo = " 0 1 0 0 0 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + loadpage_hi = " 0 1 0 0 1 0 0 0", + " 0 0 0 x x x x x", + " x x a5 a4 a3 a2 a1 a0", + " i i i i i i i i"; + + writepage = " 0 1 0 0 1 1 0 0", + " 0 0 0 a12 a11 a10 a9 a8", + " a7 a6 x x x x x x", + " x x x x x x x x"; + + mode = 0x41; + delay = 6; + blocksize = 128; + readsize = 256; + + ; + + memory "lfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "hfuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", + "x x x x x x x x i i i i i i i i"; + ; + + memory "efuse" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", + "x x x x x x x x o o o o o o o o"; + + write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", + "x x x x x x x x x x x i i i i i"; + ; + + memory "lock" + size = 1; + min_write_delay = 4500; + max_write_delay = 4500; + read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", + "x x x x x x x x x x x x x x o o"; + + write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", + "x x x x x x x x 1 1 1 1 1 1 i i"; + ; + + memory "calibration" + size = 1; + read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", + "0 0 0 0 0 0 0 0 o o o o o o o o"; + ; + + memory "signature" + size = 3; + read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", + "x x x x x x a1 a0 o o o o o o o o"; + ; +; + +#------------------------------------------------------------ +# Common values for reduced core tinys (4/5/9/10/20/40) +#------------------------------------------------------------ + +part + id = ".reduced_core_tiny"; + desc = "Common values for reduced core tinys"; + has_tpi = yes; + + memory "signature" + size = 3; + offset = 0x3fc0; + page_size = 16; + ; + + memory "fuse" + size = 1; + offset = 0x3f40; + page_size = 16; + blocksize = 4; + ; + + memory "calibration" + size = 1; + offset = 0x3f80; + page_size = 16; + ; + + memory "lockbits" + size = 1; + offset = 0x3f00; + page_size = 16; + ; +; + +#------------------------------------------------------------ +# ATtiny4 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" + id = "t4"; + desc = "ATtiny4"; + signature = 0x1e 0x8f 0x0a; + + memory "flash" + size = 512; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; +; + +#------------------------------------------------------------ +# ATtiny5 +#------------------------------------------------------------ + +part parent "t4" + id = "t5"; + desc = "ATtiny5"; + signature = 0x1e 0x8f 0x09; +; + +#------------------------------------------------------------ +# ATtiny9 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" + id = "t9"; + desc = "ATtiny9"; + signature = 0x1e 0x90 0x08; + + memory "flash" + size = 1024; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; +; + +#------------------------------------------------------------ +# ATtiny10 +#------------------------------------------------------------ + +part parent "t9" + id = "t10"; + desc = "ATtiny10"; + signature = 0x1e 0x90 0x03; +; + +#------------------------------------------------------------ +# ATtiny20 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" + id = "t20"; + desc = "ATtiny20"; + signature = 0x1e 0x91 0x0F; + + memory "flash" + size = 2048; + offset = 0x4000; + page_size = 16; + blocksize = 128; + ; +; + +#------------------------------------------------------------ +# ATtiny40 +#------------------------------------------------------------ + +part parent ".reduced_core_tiny" + id = "t40"; + desc = "ATtiny40"; + signature = 0x1e 0x92 0x0E; + + memory "flash" + size = 4096; + offset = 0x4000; + page_size = 64; + blocksize = 128; + ; +; + +#------------------------------------------------------------ +# ATmega406 +#------------------------------------------------------------ + +part + id = "m406"; + desc = "ATMEGA406"; + has_jtag = yes; + signature = 0x1e 0x95 0x07; + + # STK500 parameters (parallel programming IO lines) + pagel = 0xa7; + bs2 = 0xa0; + serial = no; + parallel = yes; + + # STK500v2 HV programming parameters, from XML + pp_controlstack = 0x0e, 0x1e, 0x0f, 0x1f, 0x2e, 0x3e, 0x2f, 0x3f, + 0x4e, 0x5e, 0x4f, 0x5f, 0x6e, 0x7e, 0x6f, 0x7f, + 0x66, 0x76, 0x67, 0x77, 0x6a, 0x7a, 0x6b, 0x7b, + 0xbe, 0xfd, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; + + # JTAG ICE mkII parameters, also from XML files + allowfullpagebitstream = no; + enablepageprogramming = yes; + idr = 0x51; + rampz = 0x00; + spmcr = 0x57; + eecr = 0x3f; + + memory "eeprom" + paged = no; + size = 512; + page_size = 4; + blocksize = 4; + readsize = 4; + num_pages = 128; + ; + + memory "flash" + paged = yes; + size = 40960; + page_size = 128; + blocksize = 128; + readsize = 128; + num_pages = 320; + ; + + memory "hfuse" + size = 1; + ; + + memory "lfuse" + size = 1; + ; + + memory "lockbits" + size = 1; + ; + + memory "signature" + size = 3; + ; +; + +#------------------------------------------------------------ +# AVR8X family common values +#------------------------------------------------------------ + +part + id = ".avr8x"; + desc = "AVR8X family common values"; + has_updi = yes; + nvm_base = 0x1000; + ocd_base = 0x0F80; + + memory "signature" + size = 3; + offset = 0x1100; + ; + + memory "prodsig" + size = 0x3D; + offset = 0x1103; + page_size = 0x3D; + readsize = 0x3D; + ; + + memory "fuses" + size = 9; + offset = 0x1280; + ; + + memory "fuse0" + size = 1; + offset = 0x1280; + ; + + memory "fuse1" + size = 1; + offset = 0x1281; + ; + + memory "fuse2" + size = 1; + offset = 0x1282; + ; + + memory "fuse4" + size = 1; + offset = 0x1284; + ; + + memory "fuse5" + size = 1; + offset = 0x1285; + ; + + memory "fuse6" + size = 1; + offset = 0x1286; + ; + + memory "fuse7" + size = 1; + offset = 0x1287; + ; + + memory "fuse8" + size = 1; + offset = 0x1288; + ; + + memory "lock" + size = 1; + offset = 0x128a; + ; + + memory "data" + # SRAM, only used to supply the offset + offset = 0x1000000; + ; +; + +#------------------------------------------------------------ +# AVR8X tiny family common values +#------------------------------------------------------------ + +part parent ".avr8x" + id = ".avr8x_tiny"; + desc = "AVR8X tiny family common values"; + family_id = "tinyAVR"; + + memory "usersig" + size = 0x20; + offset = 0x1300; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# AVR8X mega family common values +#------------------------------------------------------------ + +part parent ".avr8x" + id = ".avr8x_mega"; + desc = "AVR8X mega family common values"; + family_id = "megaAVR"; + + memory "usersig" + size = 0x40; + offset = 0x1300; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny202 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t202"; + desc = "ATtiny202"; + signature = 0x1E 0x91 0x23; + + memory "flash" + size = 0x800; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x40; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny204 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t204"; + desc = "ATtiny204"; + signature = 0x1E 0x91 0x22; + + memory "flash" + size = 0x800; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x40; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny402 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t402"; + desc = "ATtiny402"; + signature = 0x1E 0x92 0x23; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny404 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t404"; + desc = "ATtiny404"; + signature = 0x1E 0x92 0x26; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny406 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t406"; + desc = "ATtiny406"; + signature = 0x1E 0x92 0x25; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny804 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t804"; + desc = "ATtiny804"; + signature = 0x1E 0x93 0x25; + + memory "flash" + size = 0x2000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny806 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t806"; + desc = "ATtiny806"; + signature = 0x1E 0x93 0x24; + + memory "flash" + size = 0x2000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny807 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t807"; + desc = "ATtiny807"; + signature = 0x1E 0x93 0x23; + + memory "flash" + size = 0x2000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny1604 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t1604"; + desc = "ATtiny1604"; + signature = 0x1E 0x94 0x25; + + memory "flash" + size = 0x4000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny1606 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t1606"; + desc = "ATtiny1606"; + signature = 0x1E 0x94 0x24; + + memory "flash" + size = 0x4000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny1607 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t1607"; + desc = "ATtiny1607"; + signature = 0x1E 0x94 0x23; + + memory "flash" + size = 0x4000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny212 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t212"; + desc = "ATtiny212"; + signature = 0x1E 0x91 0x21; + + memory "flash" + size = 0x800; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x40; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny214 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t214"; + desc = "ATtiny214"; + signature = 0x1E 0x91 0x20; + + memory "flash" + size = 0x800; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x40; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny412 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t412"; + desc = "ATtiny412"; + signature = 0x1E 0x92 0x23; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + + +#------------------------------------------------------------ +# ATtiny414 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t414"; + desc = "ATtiny414"; + signature = 0x1E 0x92 0x22; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny416 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t416"; + desc = "ATtiny416"; + signature = 0x1E 0x92 0x21; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + + +#------------------------------------------------------------ +# ATtiny417 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t417"; + desc = "ATtiny417"; + signature = 0x1E 0x92 0x20; + + memory "flash" + size = 0x1000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + + +#------------------------------------------------------------ +# ATtiny814 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t814"; + desc = "ATtiny814"; + signature = 0x1E 0x93 0x22; + + memory "flash" + size = 0x2000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + + +#------------------------------------------------------------ +# ATtiny816 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t816"; + desc = "ATtiny816"; + signature = 0x1E 0x93 0x21; + + memory "flash" + size = 0x2000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny817 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t817"; + desc = "ATtiny817"; + signature = 0x1E 0x93 0x20; + + memory "flash" + size = 0x2000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x80; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny1614 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t1614"; + desc = "ATtiny1614"; + signature = 0x1E 0x94 0x22; + + memory "flash" + size = 0x4000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny1616 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t1616"; + desc = "ATtiny1616"; + signature = 0x1E 0x94 0x21; + + memory "flash" + size = 0x4000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny1617 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t1617"; + desc = "ATtiny1617"; + signature = 0x1E 0x94 0x20; + + memory "flash" + size = 0x4000; + offset = 0x8000; + page_size = 0x40; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x20; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny3214 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t3214"; + desc = "ATtiny3214"; + signature = 0x1E 0x95 0x20; + + memory "flash" + size = 0x8000; + offset = 0x8000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny3216 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t3216"; + desc = "ATtiny3216"; + signature = 0x1E 0x95 0x21; + + memory "flash" + size = 0x8000; + offset = 0x8000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATtiny3217 +#------------------------------------------------------------ + +part parent ".avr8x_tiny" + id = "t3217"; + desc = "ATtiny3217"; + signature = 0x1E 0x95 0x22; + + memory "flash" + size = 0x8000; + offset = 0x8000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATmega3208 +#------------------------------------------------------------ + +part parent ".avr8x_mega" + id = "m3208"; + desc = "ATmega3208"; + signature = 0x1E 0x95 0x52; + + memory "flash" + size = 0x8000; + offset = 0x4000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATmega3209 +#------------------------------------------------------------ + +part parent ".avr8x_mega" + id = "m3209"; + desc = "ATmega3209"; + signature = 0x1E 0x95 0x53; + + memory "flash" + size = 0x8000; + offset = 0x4000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATmega4808 +#------------------------------------------------------------ + +part parent ".avr8x_mega" + id = "m4808"; + desc = "ATmega4808"; + signature = 0x1E 0x96 0x50; + + memory "flash" + size = 0xC000; + offset = 0x4000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +#------------------------------------------------------------ +# ATmega4809 +#------------------------------------------------------------ + +part parent ".avr8x_mega" + id = "m4809"; + desc = "ATmega4809"; + signature = 0x1E 0x96 0x51; + + memory "flash" + size = 0xC000; + offset = 0x4000; + page_size = 0x80; + readsize = 0x100; + ; + + memory "eeprom" + size = 0x100; + offset = 0x1400; + page_size = 0x40; + readsize = 0x100; + ; +; + +programmer + id = "jtag2updi"; + desc = "JTAGv2 to UPDI bridge"; + type = "jtagmkii_pdi"; + connection_type = serial; + baudrate = 115200; +; diff --git a/Binaries/avrdude.exe b/Binaries/avrdude.exe new file mode 100644 index 0000000000000000000000000000000000000000..47a05198e4e1358c9fd6dc0456ce7610e0eaee5c GIT binary patch literal 562688 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ℜwc12p#LmE39W^D3uKO_Gf&vh~Tu`ZZYcfLeR2a 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 =FjH%azdjGfR05>~Q3 zRIKzO;|6JkWeKDe&6;%)GHvu{kfQ}n zemGjULZ-+TDuVyB3wAt6FTat-33d>3louOWiNNHv9M8Qc=4+LiB z6*^iyY3AnmYsBUH`+pN!s3bzwlXw2w(BivdO zP<6>B8gT8^KuSRhW7H%+Lq6rpe%IH=!ES!SQ zEuwYK-PA=GNxv|Sdcn`?de5eeNm2gNV@A{<*ExMbrnj3NFa*Bnobio==Na%4E~5Y zvLaK~`Pm*|)CWOK;wRejq6$6|Bi9%L6EwrvW^ogvC3p&H=)78z*aNhwj&S;}k&l$kgqE`9c=j`p>jZ<^NwyX1 zX;_;qIZ6^)w2TOr^$dgv%@mFeS}h#eP4v7n>(mnAx~IJUleKbC)1zn^y;@y|R!UZ# z`iTa=u$^MTnME(r#W!mym~AzcM9)Uu^D&|%ldROPZ3)+@r<3i{?ftrBI?Y;et~Qoh z1p(UHQ6>q%-2~9QqnHc6YHr#sPJL<5ZFK6i3MYX5SU~RDUD}REpC6gYYLit!QUVGk zm{M}gVfJb>Y7})5~+s z1i5H;MsJS1hca1qD19O>l5!DYWIZpws5JUBD!n30dU5}k43uIxNVdxgus-$)sa`#5 ziq&IV!XSnSd+#?P>DWeOgk2}=(Y_m*b1>=vDvGSW7aktS`#N92jWqkD=a0l!qF^Oq zGOs(HQf*1)t4W!*6)Yxb(@W0;6Gk6cOaGT%>EzcW89Z{Y8WG6)za%ugp)fVad^odE zCJp9DzcF7YEs$ccbcc>3sWkY$@iDi<#4qK~Nwh8T{W-BNe*O836Vq6EL7Jvt>t9Vd zhI}HwmY$-wsM~fn>qR=c{q)CnW1$b}OA{@KTjs3`kF;z-?)IhC7|cyLD!7``&TFT8 znfja;*oLK^W};m9(^&Yfe{`LQi(%DYEUV~joM`z%B>AYvUe;xA7I#UWZwJBOFFcy+ zEabC5jj8;wHW9)U`L7R!6sYzTi$9WzuT69ZX;4gBrxLONFEJ*mCfQ+N3gwekbTwkN z>i5!yF&3uFmt0l)12(e`KPNDO8c??=XwB5=RkL&6MITt;gnoG<;ifGZ7k!cE&W4*` zwV-MtHqn%sb4NjrUKY9eRSV~z@HV`Yp`N}0QLl`+W8`uV-GR2rTKrkC< zVWKrIVsif%fux5lK+Q6pqQ77^P(^D)yemFXupp)Gw))x0WPAS|*#?@1LO)PCzRVp6 zPSSnpoLFc3yCQ)!+4dKPlx)Wcc|c`6&05bsfn{~b%;|II&9736r_NqfrKVO^(wGa> z%(*p-7OHuR7Rn8NzqDG70E&T$z_Gyms;QM~$^4lMtF*Ir_B?Z+G1K^phkjj)&+K_q zD~0OBGjv=3+Nu*5)=I`ExCB!bGiKJ*R?VNfpi0$DpHo{kcj~m+RsD|-CxXkVKs~Sm zNCB&X^}uDo4ZwZC!@!e3{uMJ{4e1rd!qDXtqLPk!Ezbq!Fvfta43;y~WWNuoMh|W= zDt^xTz&`d@v1^YUB{;}flcUFJeN5CdMBPZnp%^D@t|q&1TC*_7K~Du#vW`r?-xK4M zT!BB#t)fEvu%<+Zg#Rt7)?bxoeN6xL(dL3MG6y18)@RPV1vB$}W-id*ie|%9&7bej zuBwd0nqPTRo)68L=d-vv8iqnf*Z(c)NMZzopQFUcYCNr#=#_aT!p^K=l<%VAjhO4T z!PVAnu&&QU8H<5UOikK2M(t?xSx#Oi+_-HFH-4+(^hZPT5w&eE!`#2uO?dguuX^zqer;B(P#}pnOFfLu_Yb!c816k0~@KKt00`oiL#ref;okc z*0Tvm*|#YiW#3A;t(DzG{~U$SYtu4|Ku!hNg^qp8MfuHg$E}xto5E54t%TcJ`Aziy zPWep=Ipw#8@qWv1mTYdl{M!_c@^2;F*2-_9|98r7QphR4Fx7sp7#ux;#A*Cq1ZE_DcM%r&>6UzSEiWyH@?U{fpa-a z@B()`x!4fx?MzuF+Q;hOaY_)VO(8Lmp~PrikqGWtM=h9+9~b&d-ZpHaR&opy((+%yc!iCz99_a8WM`5lgiv>Q^Mv6hzpJoGkagUg)Zhod(?Sp&Gtf^|*OV#R7+%>bOvJX?WD#2ZT+ElgX z=hf1rzO@(C5{_BGShblf*DVQ;I8r>nWRFFlEL zE}5=Q!R?H+UR*3oCb11ziviPk%)HrnfdG(= zD&|%jQkJ2CQlEV3qpboJIKi}VNZ z=3|=Zd%YdVnC4__e9ZEA+Y09Qipi|0bNsk5oym?BsrFcXJoxUO7=^EXFM2%{zImb3I`Ogvp5#M5$nNh;PVn|#Pr3tL&}2NANjq1`Y5P-u~x z^{1aoRoz>zp17%8jr(%B+8g-f{&Mvi@Lk|`;CvtrwB1;)PU1cY_{n|c>OtU(z-k}{ zR0AIo{|CT>z>UC#z)GMFmU)py#|42fd_#bfeV3^z*1m3 zFdjGr7zAv-rCdD^d=t16xEweWSPm=(rU4^>J%HYu%hlV!FMy|kuL9Qr=K(387MKN; z0mFdZ00sP&x_=G0;;wRa7O(J8w>z+=Gez@PAW5pG|855)IQ_dtC2SBK#Cf&JAzzP_H}>hJ0k6?5Ly_c!qyBJaZdnh-8DSbxVQ4R#=XzI-~F=t754%6 zYwm;YL+;nzhuufqN8N9@-*ms_e%t+y`?&k0`?ULv`#twr_xtV-+#kBnxj%8AcVBQ{ za$k0T=DygpY{j>WQ z_Z|0d?t9wxzWaCgAMOY4NAAb&C+?^2Kiz-1pSj9&JlFHQ?Y!;1!Cry4lQ+cM+1te% z>h0?7?(O02>Fwq1?d{|3>+RNagJ=b0Du5;JA=eTFPXSrv(XSl1} zF1OQN>89Kc_jI@2O}cGvtJ~tPaF@GHZrqKz%iPo4Q{7YCrS8e@N$!d65_hq?&|Top zcjvit+}ZB&ZnazGR=QK&a`!lQiaXhzWynPdndro^qaao^T#_zT2|uDPG_Z)aner8>2OYW z+MPD1)oF2-I|--RX>{UFgH!L+Im?_{=TzquXQ^|tbCPqSv)EbaEO6#KCpb0EJZG*m z$C>TSa*lUqIy0Q<<4==6lbzC$vM_3bB=M2c8+q6bS63zobk>$XRK4| zjB!ewVyDPC!Wr$1az;8MoWq?$=P+lObExAxhd2j22RR2i2RQpX`#JkM`#5_$dpUbJ zyE#LhU7VerATeQNL2Js$Zy|t5?*|)Jy6G^;7i|^<(uz^#k=i^^AI2 zeOEoDo>Wh$$JKY#x79b*H`HV5QT2#=SbbeRq#jgXQxB-Gs;{W~)V=C%b(gwR-Jxz* zx2apzE$U`oAPOVq_`qq<0KP#3BT)cNXM zwO*}LYt=bwrOGH4d8rO{x@uQR)uvk1a+Od`s!_#NgQ`=@)M@Heb&6W5mZ-&Qky@x0 zsQIc!%~f;MY_?B6UQJi%w5mc)Q&SaEo|>#Cs3X*9HBud*_E0;i9o1m9gF3_epZUv5 z4#rgg21C@&jOs(xt}NIpP`fd@@4@K2SLCli?XC9FZwvHjzdyLk$X>umeu(xrBluyA z%Y}@)BPiV{%2+^23sjLRQDZbrWW+r(XAC|XpUJGUpQ$RTueprarvg)`)#ItH7u{LZ zBl8T@-2!T`8XB5TUCyITCaDu>n?=<2VrqSfI+;4GMH+aIwm60MS%z%T#0WhRN;s0X zi_u#3v>65z+At1nbTf9}36-p(b>q$%UJE1kIHy&8L5-)^t){il$QjYk%)>l7qOXBs zHbQ+DLsKug>!Gv9psVjdnfF7LUxLaeJ6Aw$Uxf-Ef|4Il`#Il$j!$qNSNqdH=Q~g3 z<&`TLK1a|y4{<(3GMGTGo=AVMfGa#mAFqTzl+fQr zPB;;B07 zF_J@nqx@!<#vPq_C)utZ-UHT4>PnLQ{^! z(3T@JWRMy|=C4ad z|ISuttLKp1et-n`ERx(aNOa$IpF*;G0{QMc$a&vF-us687?R&3NPu5Q5_}Me@B#O$ z$cFd1_qzAEce{7Fce;1DwfYks9Fa%9~lK$n93#=q!$3AY)kq!GEK!L4`ev~*J2k9@MoN+@%+gfa^mWu`mBoo*$S3U^w+(#lazJ?C%8FMs_nOE51v zFK(k0^DXC_T8??tc|^-HMvnPPD9PM~9CJrMlFW6;GS_Np=4$7vh(vSAHpw)r2b5}( zR<2orWYc72nwXYqP7CFl#m*uv)dUhvAj<@jOd!P^sU?@FyfQqLSd6q1NGiML$SFI9 zlFFb^R_RrNwDJiW*84~)e^u|OzonV{v84z$r@ zaG&9gSL2Z){@=(CXLybhtw%H+(QmR?oE>qCo|ApEEv~gX{JJofq!y&Oms%hCZ%bPL zt}q6t+|>TxV3Lc&f1dtR1OKUk|J1;LYT$pa22`K%Hea*OK96O5mg`OL4exi}Chv7% zlQ%}m?Wki`-lgga?^bo0cbRv!cae83 zZ_f5E@zz_MOsO_`-^60`18_OdyUx3S_m_~@2L8_C=`1Xr7ji!r*GezLQx_UgJLzYy(ZqRz{=X;F*k+lyV!*4vCfJuwh6oJBCNGbu-C@WzUCAAB<#3i zyFJBgz`a;ob)TYSv(f1`c|TL-Sak1D6=-&wu>Jm2m1#S08CK#==z5#56Hg)JBrL_x ztMRzn$#0VPD^={3V^bbY2>H8CO(x9IXpp~FW3V`H!p=P2dzlzwi5|my@!c0|^zYSy zSgwn3ZSwZ#-9)U``{LTfyKJ4nl)1Lbu%?%XR^w_d@SAHt!t?Hx!%r&isAk z4n-UO#2xH?isgKe_df8kyAyZi{R{XjcJx1BW0$udqgjg`{w-Iq-Hcs+6E^tYV~u|Y ztNd&Hy^hts2kSj=JZ$#rEuLS;djASK|0eHOSnhwNeu#ztS?v7J;qx3;|Ciji)KlpG z^85r^(9LMec(=A{ti_tq>8{2$z6#y56-`t^uhf?CHtgfgyvd+-o{rX; z#3tTkZRCs4L6@VE*13!Di}5>$xs(MU(3$8Pe*X$$+2xF%}7RNjx{X*729LTv2& zV`V>-=Ob_(Oo&44?VG%j?t$(w=6QT_~f{v+l-|>we~lMP6Zx-w#{-5chp0c6o`v$=i;*z$VXgKgCM)KJXq|?BB4y|HTpi z%~VY7c9yZoD2>VKwf z_L9=iu+P7Q)&507{~R0hUzFJB3+cab5OgQk`4rpoKY9L84aWMsy|W|G%MnSNJO^!W zSDtr68{FjW3CQnW*sgcPhP?}KhiX3wW!@ixmHSYv+j~31o!zmU`Gh+ZE7>ORP^@Rg zxQ1aB-{ciyS1aPpF{CWMQ*=7Va-V_)Z5)>NP2N$wos9i`5?1$Wo~L1Xn~ZgSlXn6Z zKKX^eV2hiD-K_#mSNxWu@6N!YFP8m9Sok-23($?@SRiY#?9WF(UWUcLj`#BJG(t8q z`?twkjuyR~8G|m~)iaAAC6&MBxLeS{yO>AVdWf%24vYXs0;2%IZ!~ZOPy`eMCBPU!HbNf@j02+O5P2{9{2%xK z&ia51@~)eiiM*aUpdILM*D^1370)*+Sz9BslH%T$ziagT+|JBv-bA0>i4=v0IPkY2 z^mFO$xz`Q3kKq%m!a{f8s0kdO`@SdhhBAA&3%p_|__*LAoF%xV2X5Onb=!gs5b6v4 z`k#mHBiEIh!v;ZwBSbIh-THWgsAnJd95k|deSA;p;}dwa2M*@=qSv|6hb_2;?*x~e z3Hf=i6PXL$^3@i;UTIxtg+75}gLPbL@4{jGUcwJ2^!4t?XI8{-5t^r5OM%n0EBB{` z$7GJz>YOLVy!{2*XCw2j+kPFx{PTb3I-RuveXn(Wy;%3QrR!*B^0HTD=se!K7BI)n zGVajdIN~|anVhHK;WB2V&9yJ%pp1Uzl5sA3$%xkfbpkW&OL$ca$Q*iq*BNS!^r$mDj9y>kM68tRRS9B1J^6qr!)3?W*UuG4wMIk&JRLkuwIm&JJIQq>_8d8j9Jh zZ-`#Levs7|MuwThT8sX#DSf;}_6aW8yU9pOfsc`$vQHxMGy}_#|C(51VJ@FrI+wsXyfSDhb?zhOYAkRRP!3cBHNawE8PEu{11o_wfb8@kC%Vf1K{350 ztnBomKS0&z^sr-y;wvh96sq2?J@2iGzUMPa`P@M7#UlHaa{vf?ow9ciCquE53~S)| zc&xCYM6pK$hcfE@`uN0(4=~x^QrBgytzP&6=*Tw(k*rBtg4;Fp+4$^^ppVh(lZ4Xy z$OVU0$o^8bdVdA8Tas)`(5gS^&kaZA>rDyG_Nfvp3?~m}i-wVfnNj{|X($_3d+?cR zCc7`A*<{URk&PwoP1$5)nQg2o=%Y_vNdiK6y0Q%Un4`CBt?^#yDvTGYqnxOb>Xm&W z1gS_J=f4g16|~#u$Y-I$5)HKyQ`8SW=VFUvyEi^g+3MA7&CKa_6B+Q$zD~OP3EqJk9z41fh05AQZT&)E>U=?X?_bT58{DSX0ew9tLmFH-h z;{F!lHUi?V;$CdsC8SXREdLhYZU8;sG-0mfUJl&<6TWi*9{w@kG60)?WZpky@B7+& zkl!CD+xKnx?zZ;}xF>+)fj|C~?^XZ_e~-OiXzwfReYU+9+k24qzw7=Qb$jg#-~)^U zb^vBk$D6qCLz(aXdAa)iE9I&gcecV_oeXdeFag*ec=g$GbuX|Qm<#y8d*9=m z5#VZ|87KpW0Ixm6cO<|$z(U|~;G?HW8@L{51ImHjfw#WPH#Wfez{x-n@Rz5`)mMNP zU^LM4B;UvY4L~9AhbQ><1h^151tR!h0r_=0 z6u-BigKq#A1Gi8wD*^Q@zFC1zZUw#rU0x0}0h53|sG}b4Q@H0`ET&ahT3vULT(0Bs zFMqCwrPFa(EYFW|h+9_QDpvlpC`0R%qE|-#Bua3(Isu)8UUJXRf9X<#NCMxq>nrpB9(skEecfG!DxZ%bdZ@TH`n{T=0 z)?07C?T*{-yzQ>r?!N7w+wQ&XzT57+26a^zg%v zJo0GXW$=HPmCCQOlJjrq);l}9v;K2WY*~9VCnws*R8|H35u1{H|6*3e9)|U(Q0s;T zj%bKSU@=#+aHdhE~mO65ZEl{LFQwlBeKE%>g&hQ1bC*IJv0tkx|h{c+%9!kFI+v3rSY3hQ<0 zE7%T<{~Bj{818)h#kYplx$~K^T*wOD#pn;Bfu5|+B%ihFa;H`;3)kbuk%?uU?pkEW z6|AprW!-I(HM*i%iKL!kwNoc68oQC#zo1s@HMwW0HLPk}=a{_KstcTfYGN(6h}|?s z2G_0sjwJMG9i!OB8=DvZ7@m)1ZZ?`$Mb1<7&5pXQq`l;C39yFs^0G$xR5V@FP8U-1 z^4HtDiZW%Nq&Cf)ZU61<-E!DBV1G=646yFf2gPjA^q0V|Jei&abEOZW}Z!vMHDfuA9*9Me%gF1eT zJ;My-J7B#%gRd!utFxT<)V)r0{kinNVs)ys8>{+Gr2p>0 z`aW6NzBhe#0&B7-(ie}SSBn)uT6D6dZRv{_u%3GwHlqp^(=#k)PUaHUsRun&H0vwS zy1MyJ<4St#RjeGm8atlpwRdVhaE-R|U5AD42G;o9fpzaD+cyR~3)Ibgop38RCv$jX`1)lmb9dueDL;{~Vvb@aPpM=0PUcwV@Fp{} zcN{Z$Q~8djg0E}LeB5H@T?J41iPbGH7XXC2@6oXhOl`F!hhA>aI5#BABc&Lzy1 zUB+A)Hb=l*S2169t#cjU3*EqXLpL*jb}RE|w=U(eRd3l`uV^!%G z{=B0zmhWoDDbG2LnZc8pBRs_!uL_uR6+ZtdT>nG;4bD!^IrMRv)jZ5u$0&9Y{Qe6T zpN~E>fBQM1t9NwoN1vUnf@it!(VOVK58q)qzS$5T+f+XKY;V$;MaU<5O)&=P+a9~B z?Y57U%h_RYV3#3>mK{D~WT8J{uLCCNYgEygBT9-#4?k>J z*@XSo>Fo2@*wkEq{S7zX)V}PN+EY*Kh}GSCvs#`?XI6H0b+7uu>NCzfYt7l`tX;SM z+>6gU|AGrQT(ohY6)jhP@sdjsoUXa@DrBYBwmVKyV<#SU%oH_#hN`ZdeSG;eHEC`Z z6XUvFZsXM6rTH(^-HCnG(f8l`z*oQgm9IVc(0z}6{ozL*{l-1Hma`zzr@c4z-rW0C z?=!vM>yV;qxZR9={ z`$6xAy`M2`$lQ-`c#%`gmqx;g|Iz!2jgzIMzOH}u3cnT!OTH=^uX$<><7Q0N>92VL z>47a&29zGUwB#V)@|=a#AiZH7GS#`rS{Goe+z5}qgt6cCgFQF3UrIi+uSL(#Zb3rk`I|!d2yMH9R%9j_--I!Q;3$tH*n@ ze>`;R_*DaS82&HkP?ea`T?Y5W=fpX(ESlDC_A|5aO-zu@lC;s2Nu>uvq? zSETv(kO%$__xu1J`4QhJMkVBzAXhXR#-oouGqvM6Kj}4N%nrB)vy!9$iFpX$KFXL= z&39G?n+GFx8O1N_7A!ydEa+X_(d_;=Unq`)w%dM(!8;c0G-T&phVHuC?tARH*WUZ= zyWjo?9C*;dhxmsMJ8XC%EOpfABZ`Vk#$*rNDm!-4B;BRyb{>O(MsO@Mz&UzCgx$zRHlE4Z_d5t|&m)sfcU#$W24iX7n*y_6oXsQW zP=c;tcS2(&9LcUM9Dyr)fpcPsoEpI%lU<|aoQen*f;5-lzYS>)7?*=yN2Gn(Cf9EU z*fOsn9&0fNkjlY4*fiNycdL2NP5Q>Z3P6&q+h9)B_|UWe=trY@FP3+LmhH#J=^wQGdXu^t*DktGy3UckC=}cL6c&QJBh2 zRoDCgagY3O#O3&e&y}y9oXE7d>tnOoS5Q}cKd44&1XDP(2@tV9<*`+^f45t?oA?~R z5;+znLT&-kOSuP%i`~D04eNp<;PoDO;wOX}sjqDyIe$UFG}otRjPglZr@hUzG$)x( zVlt2U3ySCKDr15}w(PeBjNrK~q@}j+DOYd)8C&Mt}uWR2_i{IHSCyJ+pF>`K2qHPSd zA}6r>eoaf9QrZ)r9G36j3|+4W?0eZZA&w;J)bm){wYvp zrQ=HFnqV3U|7^gqI{&cg;h$Yu{+UAwFy{O*Ac!^)l@A!-v~8B3hU8{5v2|hwPb$Sc zA1ei>s|rJ5mMiS~c$u?ibXn~9WDceX6V@~{vOAt06&#sn38!jyHT%oTIUVLyo_^2k zv4;@p?M;>5qEqROD$T~U>?qG-gGgUyd>W>c92U^7Jzq*sqcUonW2Eii&G`(Owgx69 z&0r6Hb;TyUCay@j;L4y}*AavI!jrzD$ATF$$ibz;)ia~%?)hpY%0^{oL7fBNnN@i-!>AC*JsQ*t@1iIeOp;M zxJsXHjd6kqeLYX6%PkvKDR^`A3H!kZbL$+_7;9ilKC|i|1usg}b2wOsIR-de%AB^$ zEvKC*4pK6>4_t2DM#(z%3)iA(3UNzT2C%atj82~s>FXqd#*#X#V8cL~Q+Dz6YZkJ} z_teV#0_eR0{lhrDQlGogUb|AHO)W$g`Rz>9N1vo-Q>)A%9c_~w`Ux;QjCp-iO94tz z`muDXC*Wf=1ZS&hMsABGt&>+l2GjB=hJmb5Ej`c=G8W1x@@LPPYDuO{$2V2+v@@XLh(}MTKOnNz0B}rY93IQr>7r*`*7OEJER=mz-nAOr?rM?jIrR z9H#I?T7pAmEX{F;!h6bmj+e}Eenoo`E;)BlB8XeByy(lfGwdnJI+IWu)2WEmZ8d;H zIg3t;8pS!J=>Yj~3v^i)08yD^?XrnTwt{C>7ZMz_1_>qUD#EEbua)y?bT70yS{x<( z5_|Yjz|}=dki`HI?Ia(!U>pi@>^t!IMXIz;mnR6U5z$g3=NzRN7J`*Gx(O5Pt_k}A zS2+jPa04?O$-p9o0WE3LP(BaRWsK4#gAkxf0#FZ;wzqW4QS=Q~4$L1Tq;7(eP}1ce zunyqwJOpo95}J zE9*mEbsjp5&BZSA(%G2)=1bD1tqRl}Ih{*39My^2tO^@c5ipX>#e0-0<|#PsMb7XL zBH*kq&UZ+53T5cX0V_9(s!gxM9PrtgY17O%hp$N*i}gab{sYV45JcEYo|%;1k)Gia zqU4aqusqwA|CS?dBOYQ&5MHPc31(Y+Q)1cgKWR!4lwl4%A%>R3nWHcfJ0R<&Yx-c# zAXtrgnOuQTRCFdSK*v)0PQ#=T%7CaoT~B^9|G-jx4k?gZKi8g*SF3%2gMh<;5kL_z7C0I>4yXqHZ(UMw_@3?pvKEW;Lpd!- zs+4mG4I9#-7Aa!UNg$o9XQh|sc!81~8l5*;7(fTe4OUZTcwh0n;h&qS$n9 zc2CueU8;DRjH_ABzcrk*(p|WoQx4_R^&QCDorBqwl#%uwx#V; zwtjRw<)qtS*OS_WWwf%V-J9Mg-BUy}tNK_4XSPD|g`*0B<^c3KXPa~QP+T8JZ*(dd zIMqn2yN^=#ta7DsVAaNA)?BoMmyxNmMJ@AZHu#gZY;>$y(TcSOl9VxjL9#JTI&puo zIZ~Ezh4m$c^~d^Z2Bg~GD^6BbswTTeHf3y6R)N-1XQGYOg0e|AETgX9ux6WFq;e~) z#p>m(Vq=dq?{xPAn~YI0NhwX)3i``fbkfFf5P&qV=gv{R(ohc+~_T6}V0MtrAb zQZ@Q;3rNMh2$%lW#nYW}*k7r}@F;CM$O#{h`(boMEIH>}k0ywW93dr#kLIQigNP@< zoAJhGMcpAh3OZP%jH54J_Qe2rjVGJ>_DoQu5FzG4jBlTKW5-R@C7OT%%U>~L6$!x8 z;_1nS$FOQRh1lCAFjjuX<<*f67^Y}TQ?Wo=b?TxMNvVh-LN7Mg^cg(pVbz>i#sFEr zvNmnb9K$%3Uq^DPSx%TRwgHWqwDS1Q0G$4bA9`__pmhVFT z;nxm2vXzc>^XX;nqHyN5pC&))e|BuB3(iHU zW+pxo_#BKtI9hHRQlDbnmqg^y^)0>6a<@Pfj1G;t>87x#m^Aa+ec-a2DE*hcX5Nyj z`Tl}MH8rzmRxR-7%~ea#+|b^t^}(!d^$C7OI*hbM$!w zE8}WnR(G~zBMQ15j;VW$T&75f<#2|YWM{l%QF|~tOUs-33F9v8=(hT%Xxg0Q0=H@F z?u>Pt18SvC!mtD91FiA-f}m;T0CJKiPWKaKp+UFVHl@R%v3belRUGnnr_p)0Aw6CG zN;x+(i`R}Qk=Uxce8$c`v_yY|TxoZcMV3^hZNpbm(V|Zjip(L6C<0H8N2E_?)6mSI zR*oDVSyEDj$(}hT{m)6CTw9A1_A1PIhB7RFkuIRe*+TMaz=gv9MYFlo}82JmY_t( z{e?0=qOl6dDwRP%(rQ^w+%5Mv(d3a&i&UA7hon}=S24m2WUOZz zC2h+WhAH#Sd3-{JMl0542+H3_%p=6q1r;-A+9b01l=%y4W-=fPK1Qk&8}3%)Pi5wn z6UZ$aF;fRLaEO{U27Hglfb)iiBK($Vz5 z1cPc!bYM9v3)QzQ?vja&GIGRr3bY|v`sIRnTH}>5Tt$>GD+_R?p>Y_s z;vJJY`Asw63Sq#L3!9k;u0fnkHi$cvF#M6k$FL`otZh=^8CyU%TOkC?LDTSL(^1WL zPDZ2+*r!mD2~(*Vs#LXRCVnJzi9d3#v|KhDsV$gf+@CUe<;0S)r6q>X2rc)`%k+o_ zvdVw2*-Hc!I=k3i&5T0@Cj}vAgay*ou7n}<6Gm8vwtMLUZIy1aRI175u$;bR$uc{D zm-vCu&nkjIFbV9VngQh;ve`Gjm>c499ud-eNBlU&^r^A*j2>N}Mvvxn-c**}%B((- z#Stxqx*OL}B8Pbgy0dgBO_tU+n5_Z7G8s>q(~q((W_2;?hsT9&&JdmD4bt?Wh!G)> z*0lf|oid&)w&50k2m{Ji}b|4Fk{-mH)_)e zxOBo`n+Vl2VL5@=Nj(MW4G>>&+G<=$!^|mL!wS#RXTwtn^#`oA+NzQj#o^>u%MO=1 z(89U#w#|ejasKbyj~L^$2}wpw?Wj`mE+(<+lF77)Q1K47%Fn7XtN_lpE@^v!wGD_> z$vU-nMUwN_%)F6|yb-I1DhS?DW7ShEC60nw#|dn4g*wE8}f2$38Et z$?9|4rKGJw9ZgSU+DT!P%B$;OS#aj}Z^F3?49$ zSi_LvRW)HP1_{z3GW}-SiSBRTi4AOWVIpDy`*+yC#PnrEn80==HSu{&R!z#S=JPM7 zO7&fsk>78$5b!y)*g1(69my5Rc2xKhM3!km6$jjb@iX1ZTEp;#AD6jAvlyc;iP7>{ z--MXj-aZ$5RZ7}}#wjxGV%FV=^@qlfp$g_SvWSrl@w!aY5(F^K#tZZbp!Lm6v`&sV z3o}K*zhEXcXwDCvIkT^|Jg~4Izi{ew7L3ZAt+i5bIbI~Zw%W_Gq%v72g;g|zeE=GY z!$cWsLXTJ@6{nx!w>j_ivwm%P+t%?N*t(vB_vdZmK*vPTg;}OjC}HT7##haoh2F1O z3n!^#C~0E2u44>Z(Vm3+XZ@_cmi36YW?E!AOShUT!}4pJ5w}z%w;78U)QqXA!Np)= zy~mu`N*-ZWy2@u(W|N&$u}HqVher}CoosJMV@ILLw8>%)TtUy4rvTr`V3JM9dg{fd zSzp@K>_ZXp(u$JKGwZ46%L^2Y5p#mpu_Y8ze4?qX7;bD8#5h8@%?POlIW#SX@Guiu zy_<=PmyD)jKMwU>{H7re%%VFHOCi@+pup28E#{E$6q#_mWjI+Ms*AdDluk=K{hG=J z({i8Z;9;jN0!w)C91uV_b)-1gl>Ksnmw*Qvv+#y}{vgjk8s^{Ou4|a8)&MsHPXccM zyT_-hIzZB2^MBZT6ZpE0>VEtN0u63T!x9?8c4ML-8%x$^$2hU0XT2v`u{QK1+aU?h zTArkbB|Sw?@)DpiCA6WGl9raGl;W}!DDX>Yp@otbL!i*o{1Ubjx?#3L7fL8)X-moP z`#oo7?%d@)NlyO#|9+p}@7bfdckaxY{mhv&=bV9m8tx3-SrZm`<$O5G@c$=_5Oryv z%>|dhJ&5POhby2B?twqPcoZ_^i!!0Y{+>d(a1@(mY&39w4>}nL+e~BNL^60jKnl~pqj+RbEH3z6Vo)b9Mf>VY8Sp*ERtOb21j~KgyWnhgMzA~g7GtLSR$CT@g zYE6|Z$5>e0t9n!f8#3cB)Mn=?6p9*^PmoQ6oh~FP3~EzZ3M>{OrfO9ry3Cg(9=0TA ztlrsW4|_&?!r=qi<+mycO5LQ}*XCoUq@uTsd`dIKO`&}`6is| zHcf}k21%D{FuPNRrJHaMd4kw#6UHbw{JX=TX(|j_!{B=I9d8Wl^~o&YPw*&xZn?Th z8#{ug>er3&Az_Wab9w7FQ`SbvS*c7}+k7tgnWO4LJo_#{_z1$zzCc~9-dOX1Rl%N5 zw3`dZCfLlC2>a^XNR2x$P0`E_1Yyuw6GfIc*~~1>4AV89H;-Ek%5G5RdS?0c*fcn`lna*NcEY{1 z3VdpOhWYOdU(4C}_2My)dfy&uIAPP(Kotb2d>IGSu`wcHoIbW!LAjZ(M3>cxd(J&p z2VSygq)<^YtN^V;zEktn8s>ZwH<{q5E`7rhkVIWv+=reb#%p*=6Od=sb%9AlkKo^D}cLqdY8KV)u&J8oNXbl?%=RF~HG=OqWq{dwo zkJ1EK0~SLe*v-~8g-cWMm&9Be4%$c)=+>@(v|tZ|43`Ln1!sI#6%pcX7nReS$S1gG zF#E@-Gm~Q}DvP&WCW86! z_e}&l**BSWPWO#6p-N_2`UooG4<-;)s;|;8&bjf{0XtdIdgV;jRT!EgT*>ofi(j~x z1&bV5Ce64a#tMW1ilZ*-`cO+FAlje6iEueFS3LM0UQjk_#^8&MlX%*5ZoUREAKtMS zFK@C-vg<4>N21Mi&PjaNDGoU_h>He}$-*UR6Cdtc2qZP;1P^GL*3pr%Hc#Yx&K_V2@KG;;^X}oj&+vVxzR@+~#DPo(G?V))WSFOqE1_A~*0 z&jMrxa3z?x)RZEhO7T_cOk2Y?!`rb>nSSTbL?QT%xms9bmXT zk=A>veIO{_*#Ut-?82I*QlumkW7UrXpnc_)QvawGvKO9|v<44x$UYD-NnDcwd(JDU*0W$$QytAKa?W5{aq|VM2GJjbTl3XbZmfmhjK3AA z!Q%XlJO7qmZnvo&v-yqSC?HOhjjVTTpt90Sy$-S7)VcB4gwH^SaSkqlg@KV?@Vo)cVipiB%KuN7To z^rh#l3QxVbI0uZ%U_``pecv5}YG8vyPXiX2e;}Eysx$qND9Zk2?Fqd0eh9-ij{7{A zNdnOJl6qdl7s!c6dmT-cd#2;RL`imn@r4zeUh{Bs24XFEUBpOX;L$WdKYHjZ_bJdei z@Zc#`KLULiD_-Z|xxvF*4JbBBfb9*+rm#|QvdXoiwe!k#lxtnEcDA;&R0&+|)sbyR zJ$UF$u@<^uY@;O^(tJ+Z!@-CUyUK#AriNo3vabPB#5ARk$IOBJav8@nWwnZf2rxPW zWP^7woN3%weemiKyLo5bHcx(Gico0h?{Xr#b&k&4e~_eH)iw325wYVq&xSXsSop^a%SqbEy|nhbyg;GF9qZs zI3#A<+To0do+Ql*`5k9TZgOH369>u&DZY9ppn#8>vv?^g*4+Qeard&N3jH8<1 zDT==yjW5K%v@yq7z2A|?=)Iw59y*z` zq0aZrBE)JLj21^q`NF>OzC$>|E)}mE>M5zHtbFkv`v(RJeYt^>NOX=2_YaLp3>(}t zJUEyef<+dFdEBH^no+LAIuGmYx<$#(pYY^uP|1UxRM%nXG%jQ2eDYUi{6bd zH$Sp3I1T^T;J*X@o8bR0{6B#IR``Do|DEu^2LEmFe+d80@E?1AA8viXeZ%m78~!!$ z-vfUf{_ntFfd4M|x4?fp{8z&df=})XM((~g`1`Hb2K(RAdp7@;Yf*yyjQlR{4%*&c z2rgftTB!WE4yaw3V;wPd6%a9V;DlI{KC1D)2tl}IZbenC96S2413TK<4t97zj35kV zZVWbwgw7IpiCkcYC|q$2JT0UADS{l3@a&ZNo{`Q<5vphzCZMA^^vhc5gvD-TK)0zq zsp{f9HndfmC<9$+O@9zjgZ!=3A$dfo1Gz!ieOWnU7$CudVRV8LaN;=oVOeuJ<B-!R->)4|D%PQ_dJjGt8}ATgEq+ zm5j4`LC)a3t{!Yh~2A*gxaNePFdve4C>-5#P<3wNY5Ck5cJ2 zgu=XjK$%mpwCb6-PA0G|tKCIAy_9v-&q^YD4D5_vvN@#MYg8L@P*ru=3~LpNcu77~GO7B%_3vZeI(}-S?{M0n|W% z&^guj^rYO%;R8Z!9NF~tdqPe>Rc^ogFq~PS6F4A;wCLB87y}1#j~)gObTH{on6XZj*`?ksXX9Ytz-$^0dc>fpEuh;*snP9;8m?F1 z@X-8N?pQl`Fh%n{#6Bqkk#2V{{?r8TGa%y8Q^rXv>yW93RX@RbF^t6HSDaXY{3?nC zB+s=OHWarn?kip=7FAdQjhWHi1}QfO#tciM?d@kw=Gq*M0)Tr>qv**#^5Qu{j}1zO zh3R%)hT$vz#M;|S?>67wnTs3iUOe+?7K6k(>BY07&IC0qyNzowpi{)CS5~tS;g$p( z?@xj%1zJ!;)gZJ@M_C|LlVj#FSYU8rHC`xHYf~W1qqQw#Jb^|OGf&athe76Xcx^s% zhTs|u1VcI@xl9N(H(T3;rflPC*9A4nhR^aBk5-lhqeoEW{QfErtmqJi6Z7OqiosVL zRgkYtmNL1@v34N;X$FlTEx@7J+6jBfVvSS`(DE{5j&BJElw|v)(yxa5Zx$2|o3EfK zgvjI>q*}#SwffJX0=I;L>jj^gMA%iqS!?y)4Ht!5UIu2!_o( zohvtdFa$V!5|m)QfzjYpp~j31J6BE+fE)DifHU_XD{0Rn;G2&;j;Ia8&fdJL?3#qZ z@C@o>h6tl%!ImmUu-hDT!p28|t@*ZReoN=;atvN};l5z}C-;ee5q!GU$LtHfd%?Z{ z%D0PUU0K`Jlf`mJTc^HtskcMCjy6OmV-XT*P^WFGjYQH6gFu(_ib9)e`z;snAXN~o zah|4HuRYE+;jlg+VuDC#xqvd>Qt^uOG$h)-&Uhf29lWO67_Rq5dHiM*#`GwbBaTA* z(H6dlVtHfKe7g1TbX6aKE#Hwbb?)Ixy3QQQ#2mEcrm>IsDt+o`y6e0vA_}a{ada$s6>ML>ER2a<_3(fK>kENdd{Ucl4wjom#!7BQt@*on6^cd`R zL9oB&u31~JYotw-5383ek{iEK-6V&S;4Y6wG?!EeW)(x&d&3>=9bl$dQHda1TPfXN z3HXgFmRYaqsBCNYc_Oc<^d!DvokeeWz)rSf$Ih%VlSuCxQcRYWaJUpTWSz3giVljP zQ8nwekxiSd=34PxF=2nqOXz0WtVEIRGsa5;o&QndZ3UySSXQ=LKcb}6hI>Zg<gt-U zFoc8FbhE9ey&Mc4vdR&w7DygTX!ufRRH%)VsV=;(hY{Y;!NGl4Dk6v(^D^D9jq8jq zr#awa|MOySlk_3Zu@tMVxz~urG<%IC^_ku$xm3D>c$=9d{TYu5%hh6OIGKa#I~*V* zzK1KU77X6k?fhlceJ)>w~UtdjpvJW8<1G?Y3LN3B8YA7VYT8( zt)$rg5@{n`ms#~#J4JC(T$_#TLsGfaPq(3J#@pG$k!#a*L`@LHoDX<0Q_HdHJcIyn z51mK?xp|@e7e62OnDfF4fO#=ouu6g*qN7~leZ$wtWkqfriPrfDraK*vN=wEi4VF2G zNSDd)OfanKF+8Jo##tMAh>jO%&thSQ51S6CVu=uAI)221OL7l|Z+Cqg*@s>~*nFaN zN!}fj=y8d#sT}*RA&l(2+c%zf`&xPP6o0J=@7FgGf2|1~YpZlxEXden(a^e3A}ap@ zGg_iM7#lhR*k+V8Da6&dE*ombYV+AmvT|3S8i1P!v zTe2}Uae%>sO}_EO2wf0#{&ZjP;;ntbt#Ge^`}ZgI1z-B9KDi$+MESenPQeA|!9ftQ zSN7;QcSCcL^BRn)-8V-0B+}mt_eD5H=N)??TsPb)I13|^BSmXb=oAJZjejtAEuiq2D?Nzv762DUiamgfp4|M;l`1kGqj`(+0aN#6>-QO1f z^ryci{*jmB;&J@K=l+xUr#t^a{O+D_iXTpYL;NGZ_V?nSdfL~;KVAEpe&735@z31( z74d`jd|CXncb^si)K|YGe)r7Z>Gz-fTMfVGul4Jy(8|I9yrM&CpA&pi9n`hM$u>Mz|Ze(>Xa)W6{`)NlEe`k(tV@lUcsLU;S^tPyMg|zWR?g{*!-C-}k*&{hRJof94ML|L#5N-~4X%FMpT% zfAdcDfA1aY|NPt4f5Gplf5Y3FM*aJLUH#Afn)-k9YV-Y9)xXgAUB9C5)3>YN{VMf8`AYTY zeo6g{UZMVdFIWF{x2eDM3+f;KdG$wLX8c=C_)FDa`Z@Jq_Y(EboKpXRThw3rS@kb^ zvHEwuQ2iq}s~?_JKRBWO*<(%dmo(aFM`!`;X z-xm+5|G|UZB6j>cKA65VCb2a?J=Nfn;-JSe>cSzq)4Ql!;1~lGZ zT&w;s^>_2)PvKBNEPG5Jc#cbAKNwS8N!>2+##~raHeom?1TL0ysq!+z>;2Bdhp?kB zcm({d@Xv?e3I8JaSHlnCkHFUzwq@+Oy(3+_{I^ak@$9ePtd|T)gea!TXFq)w z{-fc43I1c?{|o#J;r|!>pMrm3XJ7DG_?N=}Y4}^=Ukv|h_)mi05C0PQ&x8MD_*M9q z!oL;%Q{cZA{!`)K0sm?6?}q<$`1isehyNw`75LwR{{Z|S!T%2Y$91{!GTPJD(KgoN zs>SzRV=Z#X&+fr{SKDBV9P^uZ#&;vke0SZ8_co+=4K45nTXx!J!~4#z!Ir4yM|&_N z5#W^o0f$@KV@2pffL8`h;uQin@U*l)Czc6P_@%;tXn~l5={*#qy$jX$%ek{_yruoh zC=NJ=Oe)irELoRVvhkkI9ENmDgbhY}5H`@((&-f!Aw3B3%4b5ZjG6@@3dw`M$}o(U z4zEk3pS@ZTQhQ6M7sG^jab)aV8Oy7uqovEMI@2Je9iv!(#E!}*%w>}{|WFn!@nHwbK_)YK+!haV03jAjH zH^bio{}u4J!v9V9&xZdV_-*k21b!F%&%oaW|7-BCg8zN^yvyf;EBk_8_)mq;`QHZr zHu&A}Ujcs<{%QEr@IL^51^$QN|2+J9zefPGJre&O1^>}-7r{La?(uL>fO}%_;DZ;# ze-iwkLA*=t>zZ?El za96{Hc)tv8Gu$)bE=SxZ_*cMx7W`(!*#dtn{Aa^$gEI$WVq?Ya%H)mv)*yJ_bK-mF zyYSAv^Pj_i<+t8{`Uih{=iVQ^^E;mzoE*7^x=TTD3VzTX1Yhol+Yg5Zn}9o$!}GOl zyLbIAfB%Sh6W3C|=~q8>%l;3)_@}zBz3>sw{)H#K6X7A^+TZ2fcw(2C{7&t?;Z+~~ zUh@rKzDE7?y4AnT`0a=fy{fb46;PJl!R7yUt2_hhtaP5 zWgO>5_kRnVg5H~3wCB9a!C6?XiTok$pOqm7W+l`i-z4&Y(ScP~Szy14CtL39SnRfe z?`ef0;%S8aQz!1!1Vq-sFYTS5sLcg>>g9%(wgVeT*@)VJ&Bn5CTNg}ksw9`>mx>3D z*d$EhEr!iFV>q!zZtkLZjCm!+NYQLWs6o6n?CektU6Hd=zW=bV3xke{*GsvBR;P^e z)Q&F}b~mkRV~EA7z^G+0z3C4g%vv!3mPD_srW&vjU+o>6JqQy)`&eC#p zZ!`Gj%d1l~EXpAiwVkl`>NZ`XPRiahdJlD~q1CQDl=$9i$ zYUQa_94qPlXCHmvN8h(ix^YpiM40er1z0V$m1`cxQu(qGUVEB}CI&0qpvF-1ZBUp4 ze{(U5_J!&9_!Vr*8O41&5XFZbYNInELWUeGhbESJCyc%QZUhpLl)&b|$8^@4A8;)? zZvWw6z-MVS@E*m=s%!`?f3fs4^ojH?pW6x=Wg40%M+}s##QEwgJ zYB~e=Nn>F5BAS{=&@O^`ZJOnhEIKwzl;&{+sGY9KlS|OmQ0-DtN|DdGR@@R z#EB8PeWVCQs5a3j2`}3N{0BKTV8dA)5{NOXSy-UreHVJ|J)50(kXX$mDp3K&%|Y!D zVsEO+f%CR$6~)51vVzK(JH2v)u4>cjX%@6hIPN%tCZP&JC1f2|E-pWN;c^ig*Th;_ zs{&i&N+FD!7IS&f6s?<8X5=0UoO8gk!U}PqwhTrY#CJpq83!2tnNBdMmL&DsE~f>p zOK<$63}Uk=2WabAiou%|J(4Tfbta={ zDXz#ZH5CjG+TW;!6R8fA5ft?q51+`(LC-miz#&NKcNnN5HA5{X*T-4$&HccOnh3Cq z7&$V;!{ee@$I-2A<1Ia|eRwZXcw8DCl)^;K<%I)kxo;g9+bf;iEUx2@ZRh_!jJv|l z!dFpqb*IkPF=aP zeHZsNSwCNJ(U2l;>0*51lyjvq%(_-wH+_jahG6GmU?70_U1|Kl(D0!ld4%-USfOXE zkPn8($A){=w8OrE+|U6rNfD?-=I~G-j89-!z%rY>E%|Nc8t<_aA`c?e2KkwYY(69Y zD;i@Sj1kH#*frdrVG5~h&VtG!*gZIhLGp4Iz zSza$|-`wGC#>e5j-EJwpmZEjDX=0N{uOc5zPR<>_l?WeJI6+c#Ir7_dtu&6tY?KGL zI!dw39j*&s5wfoK#sD<%oV?E?mDjfGqnVZB4lpTz_j$kYLKzcvvo{AeU$aG67C!6^ z(Pc6Q)c3(IJ!f%*v^gS>!?ffbvT+YM$9=9&ryO{ep7^?NAk6=ljMun zNolwLJ83==VrGuHK4yDNDwR@?=1b9UUYd2&e3Hfyu$i=F$BrEi2gJ+g(lsh#Kn<^v z3CL)8rL_??4q{MV)KyA#Xsm5RJ_kHeGVp3FMNfh~Xv;xc0NjnoJt6hg? zjWHbTE;9fD8|@9m&I_e1VGYM*6HwYefJ(n!Rs>T+LE-QiMYKyj#WwG`-Fxovo;$tg zF7J7V_q@}4zS2GC$#ksqs||prfI9{Ea=6#R)e5jb1pf}WyWl<7yTOO(wMm-TGDr~ArfgfX67c*2UEvbhjnJ0b-i#HyI(lER~SNA;KKChN1@2I zyaGE2cGy*JR;$6V9zr&<&wU{KG?vmA%FBB{p(@=mQXXJikMXRumgWs7~ zfo%M#aNTf6;68xxczZkZwb|j`AO^)qStx9rfCg=k_}50F`B;Wb_#2Y7 z4x6bw7dA~9qTP;eXNM}5hY4+9fizww7r(LfQNJ2Sqn%cM*v88cz+|u?*IaWAnzp`1K0b;CFEk+pv*kzTHnt5ho4z>r z$*@3aGij>vyJIAn1vN6N<~O_*%}j@3K&g>!;t1Lp!&ZR?WJ9$(J3lSP@BMUWV@23e zUy(wIBS$g2q`KXHS}jKmJ(#tF+%FUXRZ5Nxo5s67J3ek>YK%pLJhP5>;(hC%5uNk2 zN{nN}c=A+eZF%Zl-xx1bI{i5h<5(NT6*Dd1b=NW1E^2U|WdH-XbKo>KW^Bc86Ya(?}Ew!QTrAaSovgZv)O zc9speGrsK_IstYI zhQOUYg6uTj3IO87r2;x;!usWmr}I`cV{3*0teu%So{N|H92+n(W~o91j{Jtrar^a4 z!Z_EG`7q;kO-qz}FcyZ4i0bu+#`klJ<$KCvX>Q<|-VD%KN-a;#6 zO?QN}>D95LO?;|b@V#Abk$`O3jeWr_MaWUY{~=uP{Jsp^+!>`f5Cs3hVA%bBkY#}2 z*T3=oHIM_P|K%X~F@4%Ze*1U#2U}~9FZyIRtSa{~m~GV)3E1#(EYd86975cXHtZ$Z z#_cSXrzdAiIO+rvjNfsd{1l@i8}4qSer^OqCc21bo$tNl`*)e6uR7& zjS~}pT~4P5t0it%#cd*zZ9*a&_tePdDbZZ+(?e*JOc)zz6EFSx+9Xv!^kIzsfxAbz zbaNMxtgneWgUf0bKv|Ppf(4T6l{rpFqIzk(vztaNk$UOJR09pvEKie}vmW5Ho9m?+ zkB(fqBNwZj$w9)U849nJ#XUjvXl-7>_>~76Q=?YK1@G|n)(xwts7o+`gwJZKJdXxujJWKY>%%N2AIfXbIGR&+^FZNk#YNf>-art- z+{n1MWvf5#>*v$I2$WdkeY>#K`%FsA*;!t@3fvId0p12_i{mlc)ZkT{Zw!V_9_k$$ zS7HCT1W5>iBWwzf#!bNS$`8X{l>JaX4=l#w@Yxu>tJ7XaSfqSnN<`~;Y9d=_FKv`E zyPs`!QeEuzk&RQod&pyj-p=9*I61U`76t{rSynhF1Lfa>>nn>h)f?f@mKPzvGtWmH zL(r>DfeB+4CcMj)6|faP(xcL1G&g~jq6S_on5ssC2--o0QVWHLD>we=BP_TS_r>2~ zDBAL4EeA_Exfra$aU4RdF4^y4aR6eiTBSg*W}B`aUo?+iJh^wm#2X(Hxd>B-jP~mT ziDDVSwen3kRY4y&8^Rmr32s`2P4#lP#~A92;d98Hbyfq60WnJ~{2(!fw~1jKRlGpga!qa1D(c-7s88z3NGQNUxZzS;8M7ML zMpy=>FY_r$bM>Jt4XcZcAm>tSyX5soep}jX@BY-jpcn2e+~shAdFK0nhs*zYbZ&ra zJ?wo4=ps4gZ2^53kdTsx6HD`0$;;EQ_Est3exphtr)MuKx#p@DrDjPDaq!rz< znZS@)yWO+o$V|O>cACc5S84nD+$B#yCc0>ELoBBtQ+|qqoE#+ng?yOE^X9&asNbw% zxcZHqY(K{>Ot2~H#%tKnKHJZyE4%0m>2 zyIPn^1mV1R(u&zHOst^vAg~TP(Q-Ler_>R}$id6NQcHByb;7{!6(frgL52dup8Nz> zXq7Lu=C`%fMkv`Qv-N-^8Iri3vs27-loEGunouGa|LV=ok~>J-6yVXL)0=%-05`FL zlHwUF=P|b9%OqtMn;Px zou&Sv-eFcZ`%F*ytl8&z#`ZH0Dd$@iOE$%?g+mol*w~gATOxJ`JC!@AXrHyw{&Rp5 z0 z5m-QXQ@RQu3by(l#Qw`%G^!hlZLAha>fVPP@Gy>p7&u? zr>4!Tv@gbnF$`vnzVd1iob62=t%aKr8B%4NuL@^ZAtpi0#<3a^EQv&`yP45j3RzQk50 z_J#~>-z*$W-tuKM13)ou^twt5GYK)VM7q3_@uYpxpmi>q)Joc$E)7$B`Wm$H$^vYk z*;$0~6Uqn?GA{j%gU3>M{{4%bflTWrsc%cj0uSPPqXG0?+k)-2leO(rRJPeZyHu&l zpQhFA5WZ2IPh|^S@WRz6WQ4=sC+t{*%3=zHFb1*i`bm@7xHwI#sr1;nGqvb>*sPQ3 z6LIu4>>KGH=G1d{VrY1IdOPIhPF_RwnaYioLWO0^FJpHE?TF?8=|!d^k!~_`CVAoF ziv`CZN!_0m2TZd`h{|zJsc15><^T{JI0YwbGgLjpJmQ&O3J%Al#w^k>Gn5uVk>a_nAl*!O0RH;PMiC%~~0jpY@! zcW@qB)OU|CEzB_fsF%;54X0fU{;dBfeHDFuKGI$Wf7H+C?`n1czXPYnMG2E7)_5=9N@AQ*D zp@S#^v?qujn<~gkl@(rlS%(YlQWz#QfOEXoO&7)IYJnwEvHGUKa6tCB2b5q9 zSeCTH_te#4g+m~@`3m1S<5CT;~o1mcf-!TZbr9p!KZ2o;i|4l|djw z&?(dntLU9?3Pjf=1f}ClUX})iUDL}wsLjXc%FAUCxWwH1`}_7=KEXAhyKVciG?f)0 z&A2--+Crjw!@jim8QF7VFRT+OhduXlx&uZtP_QVeX5AhtTUF@`fjDvJ3fTnp}PJYTYf$Z5w z`g@4Qbi;qFGQ9^#2fDcCf%Bx{@7Q}9etyUwf9HblKJwo4zW*OT{rhbZI9iY19`Nm2uGbl~;N&4F)mB7K$riT-BPbsc#*>QJzRgonRjmJ77 zP^xO%DOT6|Wr*6NP{aMKWj0Cg>Y{K^RAbPzdkkJt+s?LuqH5D>wx2lF+0H-_mM&K8 zAY5RLoE;ZsGM8wo;Q}GZY`u(0R|}VMfz4V-n`xVAY}e;5KFbpuE{w<25Oj$dc~O0AgV;A=X~2{QstV;kAK=`T zx#~0!VZ>S7*qUl`v0yBkj|YS>j`ex88jVd;O1&j0p2VE!Q6{r~e6>Cx=!=o0 z{}d)VVna);pB9r##kV2py;5FS;z6j`C4sRSu1A>w;E3j|QPIH(-DkqI&lj|zj_lq(pUC$?}vc#X5ooahpT<9w56Ti(^8dZwR-19(RC zK$967$lwgu&ZXMa(UQtDa)Rjy5 zG{r`5YfO%vc>4OcHOBjkSb4qu<;8tS{pG<~Z+|%}@|IkhT%kOSy9zQn-`JimjlIHA zP6Rj`CfB}EGSS!TxJ@$EA6}ZIMS5$F9z%}IL%B^dn`w?1-o1)EKhqyjD1~qz%6*P9 z-qCR5=8jz0Bizv@hWmE3wPSFu_ku(eMRy_fuQ9ZDOn`%6?iO^*S^__K?e53j@OUGf z7=X!*A(+@MZ=o`|17;#cw$0!i@6@wiRT{+KaCI_Z$#x zht$nd@L4?GMo@Y>7i_MT-oYSEf92`~%7Y7?Qcn&C#LHkQH(ktYWwW3dn6^8Wg!Z?Xe1H}AX!Cr8(GI|)w6!{`0JA=)}7rj zUKzc(8*7kk7+yof+sw~Z>o-mu?E1aEpSbC%pSbCU?_6W;kZzV=2km;&1>^W#eBh>TYiCsLlLo<>_C{ed zl(tHp-B1F z(Xkc`-1R8suyiKR!OAdy2~^;UK^~cGC60A?yI6a+Cu9_CiA}7o0R7TDSBi71)lL0n z{S99WOt*>Hy+GW-@w!f;bXZY@88T%jV)uY-;)nw{afQq4VAu43?0k z3U3i*qwzLn4;;|~Kvs|QJl6<+K*WYeOtxQ4fiUjlLh76-HieX;qp-YyCM5V3N%=(Ojak$IA$cg z<5u%)T#oxUxAd6q2wO%%6LT~99@Ay0>F_vxdK+gKBSxQbVgboSuw0HGKi;|sBXyM) z9BP8$P-_J_77X?88jG zP>p3^R>2{M)Yf)1;AP>6!5T|2--l(+Ui6Nm0Zjuj61LTv5Y#)OKd^E66gX_s6fiQ5a-ObptAa#&q z6yxY5HXn%>xE^{uktT}mN?Q<%VJ2ge!={1J0BxSc0O8=6#R)ag<4vm*q%DB5qqz>r z5n?5#^prdh(geg1HbZK<67Ih_if<#%h<(7tDM>AHv`^glHHbN0q*l8iOwE;1PEJ9s zebmX2hC`=g=(2}R)0h?AQSheDrvJ@XbA$zrV7)?v2TkP1qN9$NmvO3gA~fl2gQGpY z?P1iDRvgwFV=7qALpxFxq8LS~pjiKaZEoP{7A_4i-tP(%CnJz%z-qum1TJ9x+7oUh z>>5Fxx3a>CR?4cAtx{~eoYBIXHc@_?*o!YG5|nR)%qUtR)(&RZ7jT8@R=cD6&nQ>u82gK(})Hc#M1gSTe7@tU$Um{?bcz7T@ry|K)tLZe#F^k zWUrkFn-}RGpMbatWL-YHA_XStL?SUJGn}fRr z?lo}lf%`bzS-9`RJ@z+n{{&nP?s;%4aDV*j|L6WsY=c*!@Azwmqs$ZKl|r~%;eHX0 za!izKqP!Jlpm^VqmBqrN`(a9f{PVV4lvFQ=b1N%LySHzTk&4@O?b`0r@_~8V-;uBG z%uyc8{*HY0iku*16L93KPs&+&E(RU>>Z5a3?n>Xk-)-f=BuV#|x~;sJzTev&t3&sP zyIF7d>%ODg%A-kG_nW%e2JVOZ+hQ_Y-MC-vDSz1i!%P3L-^EEhpw5Dq9c_FLdk2G@ zv4L^NzK+5M8F3OwiKd`yyQ3}6ZY!kj^7S{*=(N~&2xVp-1+{b7zX(B0XkB0vA`+Rq zjciv_ZJb;C5mIWqqwI9;HEAR97m@uyMl7J+yvg+y+d(6cnlWcyh9Ce;#su*rro%}X zdzRoSEu$KwOvnr2iFL;g z&I1zlkM9h$Uy9`wp%xQFyKoJ7s?9p-7SfAB*(w`jx=Lb`SJAZ$_7{ht9|P;@LY6~s zur^tu2#Ck9mxy~MrlH+cY_6GIpcG!Fw`J2~%x(@svXvPc#|Nz|aL@x~w$mxU-U9!%lE& z4%MsBIH3YCTz932GuxdKZH)#U+ZgRh@q1d0q~9sY0uGQl_t0^J(IDEt@jo|a zhi(c;?mOB|=D=NCzele z#7HqYt`W!)U;md^iD{N(vq`wQg;(8sONML?Xy3%}FnwsX#cCDW7lHAeT*p&>B^*vlb{s)$ z7@LuokBuknLmQbmBO?y9mB4r*zLbxfUWROe z$c0dfmV=y4v?-8q+?17y$7yA`MzRO2FO5QQ1lW#jHv%@8ewbrK)p7wamaPpE}27yR`f}= zAz3y%0S^^(kOy3r-L$tvx;ooADq3;A& zV>%fbN-ln-pQ5Xb9HLgODp3H_}_A%Ifc-T6n z#{jAoOHTu;+9RRc9NO>#+v9-|Rc@}Hf~5CIfB&cqC^L=}H$h9n?xu9GMbfbR1fEr4 zOq52+reX*|>jTJt#goxEmoa06b^#W9HZ#m^<3x?HDR}(L-&MHh{@Wf5L|cv*DFu_O z^G6jXw-FFjz-qb*!)e0JFE!PKmyNxJ+HI$F*H7=-_I{MY-S1To+g70T=ri z`EVc1C9(v2LkkdAPh=M1HWSyPdu#%6!qfyAT)i6+Pr}@XRO>RYakD6~2%#OUQem?- zF|ftpJ_FC9KTG;48DWeb`8b$uVk4XFw=BC^2~6EGd`WYJV#)DA|L!{$A*&9U{m}Cs zC^+;|zn-kNK_%MkS@3uf5%G*R%Hm1jMX&owl$cAVPV8n$yOgoR!nxneANTlYzMrZ3nmY{o(4~=|B6; z?pOZxhe!X%xBhDSQxE?8v2Q-&vRAZS^oZ9#;fmQij&LP;+FK&aZyp#4mp54Zl!(?BuVHJT>>09a}Gd?~``@#Jvyp{>$I~&DcHv^uft@{QGY# zz2bsfU-IjhzWvpIu@S3eD3dK5+Bgbulm8G|Nf1id*a96_1?{=KlrO{Fa5*| zhhFgc!#DJQbc3Zbgnh%-#)A?&sHmLZPzJ8 z4nEowocTyka39=7c&0n+J=?H){sV|>=H4(ST3#;H(I3PA;zAmYao)G?(14z!n>hv9kt&X| z)y|7&gPj9_Pp>ZN$E-b)$qOSvZuMJTlH4r8eU(vIKFM2gvC@HL711q|vo%!Je5^77 zX8abiPuK^`P{T4bQUu>pFkYGMutP($ZS^1l(l{c5-F1SQ+D9;N5k-cD#5HiE`csra zVnkzZdS;bcg;ZRl>fvs1-)pNJov6jia&;bdV(dV5YnXu>^)4m6qYDoexHTCDW+}^U z(hQ^KV(d`{L^C2;_1ig`G+W$4Ba|X*f!vrbRlZ4V?@?5<&|)1vK2n{ZA2YURWo2dz zYm^c6Xi+!rs^e{8PR-*E=X!O;I%{jel^!cgT)D?&0afw<&_A~e>R>`(Ndz139(XZ?;8{)`!e z$-Y$HP2)9W$MMzc3L!K>DDqc6#qpw5z#*5dPNBQJp4(5jXdke*}D6$Qa==P;_ zDAzw$(w%G6_ECm~(b3`2@V~j(D%Fqh{Orw94w6X_g*JqR!)S$L&IbF z;UNXs+dn#pO^?1DEDYsQ1;#-K=);H&PnwFkJ(eNV&EWveQ{(6-3^Qwj)aI*pARy7NYo*zEOPR6foU2SbdT2d+Z9l#) zYfbas=6Bxli4w5av;R%QRw7RKZT2gUqgLi(N2ytL$)o@iWx{ly@8cPvM}R@nGcq_H4E%EuN)PL^hI+djk1+akPH;L zYzrYO2f995ClfHdGH_=s>j>9drhhDI|$f%Q*gr#tv66q zwo=t`t-N;2U=d|=qhc_>w9>x4V|yp|!MIFQBqP))p*CzblY0{<0?VE8S+m`YC^ajHoPYqzKKc+m>4Se)Od!Rf1^2)+5SVRVX6=G9iP%64kXd`c!9YLo^FCnm zedCn)xt{iSK&dP&fj^8Rb)bX({Ec82OjYJ7Fd-@m;q_J&8s(pded?>t-eRxJ@0N%8 zN1)d?bwFXYZRfO{lkbAywBDa7>*4iHH3(9t0-pHgp5X0Y=?VT6{)gbd7tY#IsVq*R zZje`j`3KZ(=>#}N=7ty*}-nd zB{pd1A+<3ZDn?bhq+T4s@g@p(l{C-+i$p>6h$#kji$&Z(0LcS)H@vYKVGNKQpQGBD zh@)_R;}Uu7Yp`F$nTSjzSUiDFP}y*%>sVKtPPm7RuABJc+|;Et9*9SOioWq9Yzu3ZrOVXs1zJa>j!lmjp(D1n)6HRCHROMP@3F zZyLq4EfQ$+1~ZsftN|}z;1#Vn)X47$f3|CSI^nUNQU_#kc5LW<*(HryVX01@BrEsR1GdT?Z* z;8oOpks?|EE|fLPm%O^UFFm=Tp2EOD)V}VE(8(!CL&I3*Xp%Pd#kDE1UHtcjkM{+i z`hV{KlQ#HAwCkh(v@duvTnAhp?s;%kxR=1a4(<-PyW##0?g6-`e4;OChdTgQhI=90 zufv(CO=gaL=3%~lhJ_tinJOK{L05Sm!a`VRm+dzweAfLIOHfj*Y12XNsa!HB&xTPW zb1E4q>=lD`Y(!z_l;(g-0knk z;d~n(ytTxK>8e^EvoU0avM+)eLAXP0h778boX%1N5c+Afj6ZKeOg&Z?m&-GWreKcT zCsb-xY>+5^f}}T>Z4UNxolhjRN=k6o{3MFHOI&PCaV9Vx0N3UYQv_3FjN)2V#I2Qt zA2=Ntfi*2}tB}u>>3(AHqpjC{v@dw?r$8nD)PC1Z%68P2~pRw}lF2VqvH22rwhK?-}k?IBm?<&RzfOiS8vM$5mma>JJ z6IQfEjTUHm(=ojA){a(S=~Wh3R~;~uPB{23?=V(20~=pw>a>I-u`SVH3Xj&bmDZ9u z7+%S-hU@vi)GmtQl^k$P9CI#PryT4J_6b^z4^ieeS-f8Hvf)ni25oA;dZo&0PqZfF zUnra!pKRt_Rz)CXyG9y|^%B~;$#F(;lNouLP^!sELV%3=w%$Auk;yq`_115M2HhOi^v$-q`8#4*V zo4b?w^06N58l{LQ$0)0un!^CeiO-6ovG}mcnxuaQFB+^%16erb17j~~)*mcd7`?a$6js3?2kd98xXsU7%V*)6spSw=)>I3YCyon*(h3$hL6)}Ap6``k zSAP@L&)bWG;e)M(|Ive$^$4KQ#HP{*rWaH|7{|cVJ)y3j+#qwpk=?P)ZjFhf?OspJ z#*mdj8`?^1&&%ZsQ+;KMS`6H}W*79Kszj{$}{y zaD8wf1Za>DB3$!FOE%-IN_k|lF1*gupT zgWwJ}@OGG+#ObvCeM7^eg^~}Vn3dAcx2zg6xdCi0xxE|f&kf+zC6~`k8RcoyjgJkN zdIk!)(UNSxGO}BBIyl0cjj93u2ADg-e~Oy5C2N>tWQ)WWQmh*WdvuD#DTk$hD|e2X zIiT33sL#U9dMDjrD{)DER@m$&QpDUdw)r9SS09#~#yViNH2|#z$BdaZpfoB^ZFQ2C zuai@14T$y2W#Exww{!cU!ipi4HGnnjM}N2VP~garksaDvQ0li+YFD-vs0L#ywFNXg zz%@ZOfSK4Ft^ulkJu$F^dx%Ty3<-ViV_vqG&uTnZi7M78?Db8nG_G<8L`3y?%}8$P z8n_xZ_fl$nWe^-{n46D(+>(&?GHFntVtJ(iMzJ%}PgKm~64)Nb*3w+B5^-=(7b`M0 zE;Wj9Lx%x|Xh>Aeh=oeA7=$aAkUuQ;pmBLooDgM@5_+^9E)nX!IuSB4~-8D>_wl~pf3!muL^fXVKZ$-g~w{5z{!Cl z-&a(U90h<)CGLe$CJ2I+F|?w(KL!1m9awTP?M1zAx>n;8*$J_Yr72utP2kAo^A-)5-TJk%q8mHrliG-7!PXtB@;P%Jotq4Ib`qUV_al>QV! zOMerPZY;BI?nRQhHYVHR{)%QaU z0HNESOJYs4j^0hOC_qw3{~aW+jJS$v;vteM9(2f{jRVBB%6B>t<_88W*TmgoN3DEA z?tu=YoC+vw2o90Jj=apI#un?g@Feas5-8k}Q+Q^Q5+vCBTg?nTmd7$vi^r!oY7DTyAj(ox78nga?a7^qAhAi_SV)^c677z;}csU?WJ=zkX(b8jj)jT<&= zwX84*?Xl2GTwpEp3Lz~3)~O?WZ9tDQu*Qs}iVc=dBQ5L#fWYiCik+)L2fISCh<h-tdo-Q4)ThXI#@D#vy~@#b;q4)Lxl7=?B8H>~cJ`-_aB{9tP*~ z$-MB{C>h8-6`*C=WoQbY4v2CD!wnK?(Ev+UhL;?BbWB?th^1ux z5^+dOZwZ99v%*>4Hmz~_LBb26#&TPZ5>93VVdhAq;$Y3NO1&*+^Ab0jR^>$s5NqK; z_rC1oaP7F!E_IE#Nk&M2J}}Cm7_lJKd{L?@guiIG1Po4<8&e4=n0>~5Y{KET2qIQ; z#WZ$XqdR+$$*#vp_r||Q_zCe6y$fsKdc_cjryW?fosE%HP@BNTu?)~>hWy7D9%EuK zVwX`7D@{?%XJQ64v)?mz5C&;Skx_1Rw&G83FX+Fy_yfcvXT$Z7ytruXmgGxc&iIoLXpDa19=ocpe7WAwP4gGu8WyIzVI&d}94k)~O07vQcZnOj3V zWuz+>YSW9YYJ8zOvqC%6+slhBtF`SI7t0gNC$}%uu6$0%bK2TlVLb2zi4n2T2DQtm zUq#f0d*4LK{1UbL@w4lp2XL7ciSnu$*^y}9Y)_6vV4PWs0cpQ{#HcY*QQmEdb9P2% zr@^{b*mOARWIt^xzYU~y^2DA9vda|bVJv8rtC=pr7)IC(w&T^~L=k3Cfirh^rkwcgK(xai=C%lomO5HQ*df|CU_zD!!6+7xj!9;xmF-ZACmry0~JGIjwyU% z?gwE1A$OG+T#v`8$gg9u6 zs9Kme(y1aQ%>*JdhQ<)SCxCHidGRBjT7(E>qRET|S4TMZX40AQ@3uGL-0EaNvxUI8 z)I~6 zW7%?oUZkRdiRi~5Ej8KWcaZGpAsQmGQL@vB&6l;tOY^}FUERDPqJ30aa`jsd`E5SRLFAPb{hxD@D!V0J8kwoTy5aeWh1pC;x> zRh*NG`=9M$aioJ1kmAOH1alVR#^voWC(4dX ztBr9ktDm71H@erwPt~O*v}=siJvtXa|I~ujMXm)HA`U6rX@q49*pV%XCfmjp$zQ{u z@3J!0%5~I2hdD@*{Dw&dj33ye0vTt>n}Ap8B*TpILVhfvIe-9|bnor&v#JCLD2|Q7 zf{_=%ArJu=El?T63mDmdU9rC>H-PH7Bel2;2ZsR=pO{6kT!8w0HV3IegAL6XKdGX?T0TVUyN_YBY&4Jyqio{=rMbY>1OY$wI^K!! zKBQZf#c2*mq-X2TCv+Ow4O|7SViyI)VB;60U2XoPD%SdJ14f6cu$S{FDR9rsw8J!(+5Y=BhR6V}4 zYedhvg7|AL@qQ=($tzl7#1(ihjwIjA2Ykjp2V>N5g1K;juPE{%2pt+8ix?6?&&=$? z?6N6P&mcLkr4b<}Vc6Sy%f(+0*;g1+hACJRRbE_7d2HsxWO!CZ+t`3=B9pGWeMgi(*dGO9c=p)AC8oLoAmoC$s98ii1eWHb})mgPS;}1d!A1x4dXm@Z9t<3{5k>*N*R% ztuD+%0bt9Kg^<*R6X}3lDvHGEfsSvP%{dM!V^b!;vcZzdz8vyozjFR_?B!4}QZ64g zyv$teCH{tpN!BMKq=K@-IIia^;2Rp&r#sAp{F}Y93)s1TXBTfC_vKW$r@%@nQU((< z*w;cqUh#NLfItrOmRBLVODj~M47piOtpp-LrKw5Z*i%2VPQ(C4n|#i@Ug7CX9-&|J)0;<^5_2q(o(ql6O*vp04&4=oW*?cGX z6p8RS65TLL%F~7ej(wdG2=WDfywj%N=tHpz>b00Z?uC=hy=0B6 zcu~MJ1`$-F1!s^&Q9@3osKmBRzHf7{JN9e@Z)Dk^*r>9Bna%3w7=KPAtJ^v{E~4J& zZdw|N4|=lhrZNTQcU3{Y1EZ8y=y zBk#zC+i@>d)Ah+svYLx!#+V%qE?iC0L{p1P1-c8mMIbe7>)BM$z?`3-gg(3bVifx7 zg{!2wiw!-9siPbqBz&?%OG*ua#u$%yNR(a)_K)uqzsKSzc{?PFUCVssXqoR25d(9C z(Hs9}H%0pHr=O7z?u1)TCN3P2U_W{P~1Nq>hu6)pTIpTj5X*=K$eqTH4HHYsdt?$`+ zExAa@!Ede%N z*qvvOfnEs)hsW_09N3qqXXq;m9rX0{jnKycFkUD9PQHsg0v|?gNbkVm{XPBrgRy=D zcLs&A(cvL^I@q5RKUW+alLwJvz*BJ0rp*oJ`K67bS)5L&XvXiW7jo>NXWorE!tTtS zCov}QJBzkH^>nnwHTmFnxDbxNI}vv0UWBj0;W@aVVJ-YP6nL8U?eV_2o4lRhYACo9YK$n zyXvnZ?2whTv|(UsaXTO?ClXDMotgi5w4ahM5=rh=N>nG8_RcL0UkHMGb-)1oY=|9a7maXU*o0 zffd;0f?fxz0M3&LMAT?TPmy8bye>M+)z1RowgUEMDglba=-CP_O;d=r<2D}Iw2sJ=un%M}Xt!b^ zEFe%&UmDlR@T)Bp(%RgHa-6V3rJ#{05x0sMEYdsjBph%JWNYh_Hf;&DGRsk=%5`{k z2@4J_rj_s>1P_`Y%h%{4ln&;!LH1PoX8yV+t)9s|KrV zG%q)SJtmZXWTOxLK+*c6tfANu$yLC|*2R4UGZ{@L7U(AIL0$qcptfoZ9pxvH z07~CX2}fQC#RZ#o6aXOm9Aj7NW)-%Q>2%mi{ftq) zrX}(o(0xk5aBw)W5!Y%bvzM$luj38k+c~{Sn)xDTu?F7+!Wpohl^LmGSjPj zs;e+xPjxowe!)l_nt}ITR?CM*fP$t6k5k-a;`jtksGK-JgMHl52bm)J{N*FB6T(TkKazL>nqE*zGM& z&%=0&j)jbGXs1&3sQm!GIxZCih2OZ0N2T&fV#B<4@1b0WO_YQrKrBCn0BSh z0bM&kwaSw}+ZHxra%*JL&(Ic{9RxP6pz|m+vy?a>FAVgSiZBH}c3nwKY8M&t7K8?u zT|KcpH3y@zN5rmd765ygtq2UWT_1ve;yVs?d8d??s-|N0LE<+^eW%Pug(uAmn7`=o zQI)#4$+7axH?yEUrCwb8p386H+92z5i>&nEjBxrT(^(oslWqk`H4BZF#g$|{Cii9~ zuE3R>iBjcYF(E3*W`Q6>I=|}73}^vsxEttv7LgKlu}y(8*^|&zoMd_BW)`4GDr4gI z+*Ev1Alzagw-HX_kCXFSC#|?K)MI3rAd}i z25FOw0=N{3db13201d?hXn>{i_djC!N)PA+JSD}<>=fEuCMVZfZ*DqOcitCU#;tU~ z0o#rCJFXq${9{i|R*X?~899Cwn2REbI_-ynJEKV{UE_ZM?MYo_CE&e$v~8iNy$CuN z8!wHfU4=7IX!?L)wn#^;B5*o;GZopHP+ohd>ho}JbPnk_d>O2oj~Xfq2Fvvocxgk(8vLW2S#_;sM@0g{dzk!Y$HFE+li z3k#`3sM*b{w6vLP$?|zES+{IfqR6(9o^P5S=GHS&Mmzu38(*f^G7u^^BMxl5PMKwZ z*w^f$EH>*aLxcE}*baJ9UW>TmWEtXp+{9FuGwNtjmx*TNZPIO#1y?MzJHYXJdT=FL z1UMd#aABKu4w5D`$qxnE?C)5KMJ}#>oTa%&apcC)1tNTG&J5nd?!(7msPw=DG+$vK zMz4^v{Vy52#Xur?JBo{MHxQRS zn*Ce+nf<{LxD#-%gZlv718|pIvOnmCI|6qr+&kdzhr95}xDE(z8t!(u55S#;yYSNe z!8W)NxKnU%h5H=b`A^v&Tn;w|_j0)3g!?euXW{-C?);}B9o%8K+u-hm`vTm*!d>*V z{lPA{BXGCE-3j+OxbvUBKj?xx40jvc2jIR5chNIYX1F=H+u+^}cOTsOA>zXwf`jCC z@H)7=;O>X}5nOoL{vZc;1Kf+?eiQC4xW9(`A>8GgQ7^a`!9A4UbFTOa9%1~q{9e4W zP4epQEd+G;H5Y=mErsBL?S){etq`0=*wX$&FtW7}oQ7L^Hsa8=7lN=8;a4Iq+6>!g&N9HAMH!ADulxGp zAHX}x(1!fm0RMKnE`;rXzYAd~!x@yJ8)Z1N7xBAM9+crCZ~TGv4WJyo>NmXW#Mof8-Cx%4^w< zNgE<@mNe3)Q{1N!z4)xCqN@989jNGRfVfym8zKEP8C#zAQ}sdjpQ2%~wLG2Y0xPgm zW?&fX44`Nnr(6gKCF2Xp;HTcXcoCSx~-z4Xbjxd{87kg*>IWk9u@ zQ1C%iVA@o`afDOjv9!@Z@p)oiE zG8=YeXK*(Lw+qc<1H;84B0&_I(pb>2 z5b_Q|(h3*YNQm#=6y($n2e{6{g~oodf{jJF#Vr1?v2?JqOtZNn%V`Gkav}IPxbRhlpabqcJfDVRIDbo`m3HQqAUN}25S)T8!YMqT!gGLU z{?6be>`OU3+{?H5DmhX7&NQcPxjI;dX7W)uT$6>rd-0VCbC7GSiN5j*G?=US5{l+> zC74I(bZ}X)3I9f*&s+^=@pmFv2zDb*6QI=ar5C9fGYZ>=uTaMUq_V_Y6$pjkM6iVP zI9b9!%_&NQJHiY+6e$>#)P2Drq#u=Xvuq0jFI`@yfDG#lj(&K()x=_O`mI=7-`3cD z9^aF0tu*WXPPprh+h*c^68>609PEJhh>yAf$^lF63uY`k%;}t$~{OOo7 z<4?Y`Tu+9}y1Q5+$e#z84}O<-ix*s{e)p@?zwK`IU+_cmPu<#@3-G(|@l)d8`i0ku zU%uxa`eEtxBlf}n=CS=((tq=>UAh3j`|H2i_Gb9EKmB8O{U!XaE53L1!k*yN*(*=p zo$Cos-~X~hUB`NYPY%s4eB@m{!Jc0^^0mWX?&{m8yt{ zbOAxC6e)%xf*>MIRMhjE3HbV!eZA+Ly}z^f`95>8u4ghKd1mIm@3sExzy9lfMpWhR zMqiu9ot(M$$Xr)hy6lS*_i9?+(mPduee7-d&6yJp#&2p-s!Fd_9m{6e6AsJ2{(AWS zPxMT`VZ+9$)$jfkT#c<~)|H zv@j{ErW>XezS)(QLq31DN)@|k*=L_?T&}2E(X1$k=l?qQ*E9HQ9{jZy{_+QZ`NY5C z!e6oRFMRO-Ka3Q{@9--ItNKI+VOcJKZ+PN=;8%}Ynb{FZ5YDWQkFJ+X6+$b^_sQ5s z>}C>~LfiC0a!+1crxy}Brx!%d<>33GJvfhT#ZudF+%>(hfS-@(&d*=q9Isn3p<8<4 z3V-VsCaj4UGGn>1vRHsM!TMn1uqD`g*hXwOb`VR&?qgZk^7~wAIu!76WL6o-tm1`C zfvV?{P~Abe^mH>f3*FC2hm5iNADNa{==V#2Y<+-!V{2a9skvZQ@Tg--Lrit^MdY* z{z{r6fXDmS*Z&buV8YgLEv0>3Ivg)7-VrYx`t!LX@xm3(?b-IX|2Oa$YjJ11kjVK* zUvoLvb$7gw^rv&HIX9YfDStY5g>w@)_piP-bACT|4!aZnpHJh3Tv$oW#A;#fv7Xpy zY&Nz8+kzd(!mrD`-U^TR#0xpF!dOMDGWI-{gbl-HV5_h#*dgp3b_a{!%kN++Ruy|5 z>xqrVW?-wa?bs3QI`#m2d|$j!8mo*wkG+8P$0lK`u#MOr>^PQ+-N1wc z_+2ayRtPJN$(W5*#_C|ru+CUdY%n$kn}p5AmSC%}_1G3{4|WJUiCw_H#cp9gW9dG} zS7Z6G;@DG|iuqU#tO3>%>x?C1L$UGLG;9I30$Y!5!S-NBurt^t>^gQ26Ap4eSRSk} zRu+>n7psmnz*=IRv1Dv8HX3^kn}sdHR%4s6?btr-2zCa$jNQT>U>OcEpRfX0Nvr~< zVm?*_Yk-AcEqNV^O~ck=`>-2W_?3(G6@C@vwIY^)J%_c#I%EB@Vb~aK5;hA9zy4Ym zf31tZ*2O=si%315_Gyn1_(>P4$>r^B#Uzm(RNy$WPyS_){`% z%Z8zh(7N*shd z;rF~lzobs#V|%V$k4{`k-oKqqyIY=>8J-Kv;(zx^2i3x};e|XbEThPLbcRc-^l*Qh zy6yU+3ho&Ggd3s0oE&aXRY@2Wof*UiggqLCo!CSE{`*RO!)uCuGBf;1qi!9#R|)sv z7lb)!-}mVBJe^VDAA9uq2*Q%^Cr#2mkD?j_e=S|jKXy0y$H6KcTc=aI{{J-mLb=#F z>`wl0B)E5-@0lLq@CZ|5qtbXH`hf6FsoY1G#MTYd{^=+DLL@sLB)k*bfb|mIjv#E| zIO=PUrluflfAswyQ&SL*a*nkTO>IH=Dz+h;9(3rMi1?wBaE0%pnGsG3{@&F`--k~s z6dems#_>NM{%)i2IBf#_-EedX&o}Ow)>_lC+Q1I%-pN$u5}DOPa`@AJ$>IDHQsNpW zb?THX3`l#Wi*|Ti!#@VCQLjG+Nf;T|s8gRb&E})YDUABtxwNYg#>F*C>KhJHq#m6S z_a9z_uq=*&~ zP1AOpululdHf_IoR@L@LKl$@M^ump}rucPz@>U%}z~&|h}y*Vk(J`r~@ES*W^|Z`hm?N}_T0b7{OTZ_&%@^8qh%Q1nB(&jod(xbGnxpW#ZVPQX z)Befq5M!dZXHa_xD#yLr3&Ql6s6R@O)3tecA4%!j^zF$fp78)HNp`Jme^>^k?4M!#&+!1UuYJacBL(1 zJEu_@LaSJG@_l-7$L(S}^9cJ2ont$v@dL4)AHMku9Q8}-Aasvj={Ssq+#u}q3SYUm zpWJ7EGx(Y~a@M2@026kZFD zLZ293G|6dMA9Fc9bLt z*V2yqB?&iU+w}iqS_$`K+wffILl+X_qCH`R8gcDXdU35a!&fT(&EiserHx5*j?$ib z>$v`pri0Kcjz17R(caNfc>Vptqv)E~#=V~@nX|MY*@CGQ{h5d0|SA-<^Giw*b+2u&MS zszRjc$%7Eehu`tOe+&MN!ZQ!!u^@~QqJ_x^Bz0#}zCt%_T8rtc0&Ax$o8q+}6mEVm z%wS)eUOoHbeP|?L?k^Pj63s$?yNIKnV2mX+Ye#=1OaMbZ=09O+J&aVZAJpnOi!XMw{$dMql?N#lM??e6Y2<)$~|Bau(%^E@>>_Jm{ zNm6V4Z+xSF-P%7rfgJ3?8-xB-EGj-Fs-iE}6rU55#eU*oakw}^Tq|xAw~MioD!Ecs zsg6`%Y9h6gx=Rg(zZb(i|J8l&aX@@W+`O{=E0*G6lT zw0YW6?L%$5c1+8vn|e3>O?{(&OD|#6HrgAn7zd5>#x>(-<99s@QBwa+?eU9`Tp(%Xvd*){Fw z?G$^cJ;6S17jY^(wVZa&U}u!`rnAP`=NxvfIO*M-?qv5(ca8g@d(yq@{_5uUN_i8! z_1+iWS??Dwv;T~5_#gOR_-FlJ{LDdxKn<1!M}u!e^=wh}u)JgtONmeOgjn z>1Ao6v{Kq6ot3_pvdfRlZREc41^G#(veH`VrOe^URZva!Wp$eRk-Aeork2uNt+6&t zdqtb8tK@BHk6 z7&Hhv1fzrL!F$2x;BpXdsXL4N$t#u+TZkRR-SS!aXE|1RLMf#5P+n6$Rf?&S+EpE{ z&Q@2baavX_zgA4EsOef2tu|M`P+O^O(6(qNv!SZFLaMq8_SD(9`tb}s%_g5B6|XZN><+3W1g zPEkj9hIy}e+r7`c6W&+ePhJkckYC3i?%(%?ph~bI_&6NTL~1>}R2E+lQ^XPC8{)g- zPVo!zH1E1lp02#De5HJ&OjI*7r&nkPwI_91e^yV?$LaI*PxPyLVY{Mz-4Wcr?kqRS z8|1yj`~BpV@;mvxeW7jIvuz@F;&0B97D!v9-O@Sf4r?x>{1|I(hMY;sseG?gRvW4- z)h~IzxwYP`lT3OEeZ0OFdehD+15-p zN13mhZ=3I!`^;nJMe}zY->u58z`lUNxv0tjJrn9d46 zBbQR@C=--VSkGnDb81;_sP@1ZY>qcOT21Y4_GbG#+jZ(WEu1mVI_Hd&!5!r`_V#++ zgLeX91l#TLcZ!ImMMHGOwqh@yVQncv9)S;8E+3Mw%RkAg;wl}LBxRa1SJ{d8xT8E! zN~#sO-xO_xHeQ>CcUY#a)i!IpwL{vM+9mAGI#xF*!S;_2< zH?XYE)(mU6bo!KtB-fKuZ0C6Z;O|EO<$>RWfh#% zFY3SP@kT+Txbcip$!KWwFa{X6j0eV(W<~Dmw0W1+{*)zJ3D$FXw{fiZ>G-ylRt0AB zID4CY(@t<|Ixjdwohi;NXQ6Y)N$2Ku1GkRb!0qA=bH})^xr^Lo?h!ZD{o1|e#&{XM zY+eDcq-T1*SJSKKweXU>-rjg`hW8de;#2RKch$?}=l1jaWqipGSQpRxz5ITxy$Svl zf0n=4f5+eHAN5cBU;97!5AYn12StN&!83soR0^IA5`*SJ_aHeK7>o>F;Tg{jRs~yw z13_x=Lm(`GGvQgM6LX8tFfZzg?TAC;#5ct?;x6%&_?;Ldj8Yx|sp~@s>v9ghwl*(L+R|^q^ zs;bS@Bz1&3Uwu#Ap`K8$slThawKAHc)zdm?Bef~o5^a8P$yDjLl2NbYneH=_}(ltE`~;j9JBO%G?`nPQ{mfWFBOV{b=T} z%2}1I7I^2`)&}O|1?!4++sa}WvP;=Aeytwfs1+-yw>F)G(USxH>7LDw3R@r7}r}MdU(mCf`aK3ZyvF3`p)!i11bboi8JHuV# zu5dTFJKRI=SMGK97dPH}f{|9d1TWF+=nW*2E$}w5Mo)T|@I~qTc*eP~FZP58+>nm zr-)O>X~GPd;;eTzIai$mZhd#8d)&?874|B4eTg^6yqtbnzlGn2G2QInVGI?beD7cq zG5+&#ybi%l@{&c=@X^WQd*WvCTd|%rSb7`JcZpS3l2w-=*OzgIZ~{<6MYFKlQ=En}Q9&)92RGO}`?oz2PS zVe`D1#d^ki$y#C^wc=P6P3%$jOWes4?&Nc3_iZPmTfnv4+HNm*2tI5YGy5a=G+r#m z%f+1b@my{3TMO`6N4(o!0skq#HZynw{=HaW1r37%_@8OP#$a1`pQ&_2@gj&%h&RM( z(hBg{08nXJ&C=>>U5VN6>bv!0`XxP|QPW5=dU?~m<)DbWUX1^=ulkN(({IOGn(5EunXmJ^2gk$rzX@L9C99ZM zEQ{Z(D%KH)u`cF|udp)KM-gU`yh8p&KA>b#HBi-5)dWX6A>izUd`VRdDks>Du zXMi!wc+9M3zGZG8KHN5cH*Kq_HH}&Fv8CFs-NjyJZvqLPwUeC@&acFSM6Ucr_bqp& z+Xx>p&RYcTIq&`GWdl`NemxM$B!8QK*jIy^!4OvUa@KSBuwtTX7Q{fTC-xV|h^xiV z#70s_(8@>Pl&rEMKPPvQUzV51@5_0WQp!B#J*BqVRPDi<{an4OX3+`~y{~B1_4fJ% zeHys$2mL3#w4sC2I^aj|aUT=Sp7vmSlKrOr7T2BKDdZG)$~cl+o$+nTbsoZ3rF!vx z9{)MNso#O?+~*(hD-&nx1xxOzy zb+vZU%wC{n*A=~m{u1-$mfpxnHr_H;8aK#KM6%;_(kvTjYcw>#RMM|SZUxHir!<~{3mVnjYA;{M8L6!a_lreELhPPBa&|GUG_ zALv1opmoqANC`#+Q-dYJr@@!ueHM)o_Vdz#d)qA*l1!znkQ5em7WUk6DFMrI?AQP@xo*BD5o zYi_<|-ZZOOlUSu2$)j#tnV4T~>|}e9{e^uGBwZft(bO5_%yhPpXH@e>5nXbE94dph z#`%-|H&_LSS&?V`i~cqLw*R~Tcu**ii66a!IlpPNC`kN2CuRhBm69~c z0|B&^`bjTJvskU~Nmr!rq;zs-{82gCk}JtW<<;_jqD5A+(C3tHN^j*IkvRN&l z&Coy6KQk^HEzB0g%JX=}$K1hgC9gVpP!+JuGJiE!b;_?Ev=4fc?<@&~gc#ug*HDhU zO_0h+$xRvmV!-@A($yApzn?7=P zxd+MhE)v6j#6M>7@)F6)5%)c2SbY#)S>NTphx^CJ}p&|hD%4J>T+kfhdfArTizvqE`LqdpGzsLR9CtvGnFmMQ6(SQ$@^+S z%_csd(7unbc`;qp8?xG$>znoC+c8nP_1Cb9c7gd%G5@~vf8_471bKrZpj9PU3@$}pB3$PY*kYpC zQXDTX2Zw$y{wNla)<_>prR2(TA9w+EOI48#l_j$=ERu^9qCyJklm&7|_ zE~$VdOFn$hAn6rGyf|3KWOeP6PsxudDrlya(n)zy83(T3soYTRDGvVqMfFus*~e-I zxQaS3IWK^uU(?o*?ZoI$kq6fz&l#?-V;#of?W-HZ;c`ASzBe+Pxy+|b-E3^OGRK1Yrk*{d6ig=$;{Th zV3sdIm_x{@4uY*S1;vA>$VwZA<1{HI;vF)GkBb#y>)OLVj1*rJ4~oBvjbY|SNmIG< zwT#sbkY@=wkXy(dhrhibCgM&u ziTlL+WJs!7Q$3?zQQKQb zPuW+S^L)3f`&l_R)x6r1nyDpdZL}`h80OIq?SOWQNYzsB2+#4c-UZKj+&E_xF|}ys zOfwggX5dSEDB6oBIPg$PTGb)%EyutlM7;bA!2>*rhV7F1M zpEtxK;&HJ&jOi$1#T$&raj85^=_q-k{07;~ak;#bsPtv6jN?vs<0V~Kfsy!!)#REI z_cl&{L*K6N(=UMSo;6w-8;zaD*YFuJW?r)x2(KBK;ytssHOSh=$~bR*M-K3WUEl6x z53(n+IvQ|K6Wr~1{DSzvB%<$|-X`!;2EU5m5D#$Kzs0C@!2`S+&Z|Q)QEv9DSPHK` zmR#!zrHoQVU8pWs3zG-m(tg$w!R*uFCO*>B8`+FfjJFWh@>UGmNuAoUgSs9WG5 zkHA7+Cd2yKi}SPl`TXL31z#sV4T_%rOy<){aQr9!URZ{+{x@WwzxY*xy7;noFbn;- zpK)NJH^C2U$Uk=l2ZK}L{iVi)ut<1J%nxJvG`v$Kv9{P)Y(rG*E4~O4oGi`}-zLZT zQ2YVjFunAclwT?#JuMkhC8;);u#MDB>I>r7&q$_9-@?ZICdGrP3dyDMind%8yxUBk zF3*R-S|@)@TsSPBCMtfJ1>cMj$3>n5F<#h8nq`~^O>qnyl0osxfKlr*IZ zD1VBwNLfYQq6E2CbuyOr+;etv!J2rWo{Z54FhZsDXBd~J@IkY|GP#XnFw1RN3CoO4 z#y;Z*qncUY{LtJBr|Q7XwIEY}7mQrW)?syKa>wt%&h4>}+PCbd@kEuJ#boJ+iQ~VJ zO+Mp3>o#+H;z^eh&)2!dy@rfk8?u4!-T>Cg8gDDB#Me5lr=J@tAl~ya|`qikQ9)-X%oL9psnf84YkW;6JE#3EDF10jstZ~8MOPtqt@d^k zXY=_UdG0`B*Bu!1MnTJPY>K7}sZ@M^4zZf}0r=uHR}n9bk(R)2UuG>SRFYbdF|Lu{ zgpJ##=F$s*l!r$iXB!oPf<_5Ej%751&pu4$C%ZY$nrxl1^4ewW;r4WUsr@m}^Qv9S zdD?lMHIUD}@8gbuRi(VJbq&ccejsD5>ecby_A-J&%HX>`#ru|k6WtK(45LRv+Oz2;4iFEE zrKE;Z3+Z)fCfFmBoL^qd3VckNsm<5UlZCB|;=mzT;Gd2B#DPTOK*$4q3N|`z)u4to z8OCsz{TmEWE2o>YjXdEhe9144<<@c^^PU9x_wrsO&)?>K?p}0&x?0{nyNw%=p79JSO=%4Fn-14=n#x{owTSAo zV$PG@7XkNm*M?}rwO2uY8??{BM>2lm6R<-uVuuClTVQ-_xMp?k;d!&8*^_uSl9@Kc zTwtyM`)!F>yEEoxX5G(boRytuUfoKxp2zd`v<8BOC&1z@uvS>>@hN+(Bg}=%;KNe( zGqx4^#HRR`?sh+B$2fZ`k$Bsh*!jVeWRaC8r6fb){`D*5<) zP{BIl)TjTHS2cFqxZSAPya>{s?9OrDcHeW)gSPLwzq^^d+&tYfp5!^?y7gGG9lRc_ z*O$CkVSx^Mr@V{ackn7Peikr!5x<PNT5b)nRZHp?$qysj z4)K6^0=DCtco%*$layO}l6+Q@9I2XAPiihrmgd0iy+?Ml1BUMezTq0P@OS26Zuv>M zj4a8HTurW_G*nuU?YvKx*G%o8c2}pXd#Fto#4C2tll0zjAe-Q%_E5pNr)Mzw8!s9! z86%SazE$+^B7sI4gVZ}7`T9K8%2nJh6 zeR79)&-)GhG6@W}fc)(}{{~U)H$Ov=E0`Co2)2iFH#uEMrwO^mLgH-J^mg%cxSb?2 z_DOKe>!iwZEqu&&GMJy_7^SpQQK_diRR)s1FQis|MER1c+EZ#ZwXV7pFZ6->3Hf^* z@j0JXoXWHg4y~m%(pqa>wLVn5#%Sa8$yA$m!Pe$7`f->0jgv5$8OUS`nWaFY>&-8j z!C^h^U2Btd5**qe2Iw>Aw3E#(h3~8cVjc#AIosU^&wSVYnP{zhmA!M`4XS}pldFB< zpC?j3PF89KgW%O)3uePw9uDq?-W}pHUDRZrOVp`Qt*2hNKw1rBm`!#;n}_5t!2Icy z$6>H6WxKMEnxv^FsJ+wy>Rh7uF7<$#ODh24c#C?}5m0rUULF=}G?{5Sqcjz#evI8> zV-9ARaa57s$&uSv&D}C#hpx2aO1JW;>5v*e(le>)O>pfGzF$ z_5;|U!cJKtT~DXKGl|u84WCp91~B95n7!>*7iPVFgL7M1NiAM zXIl?PeZs%u=YjL;8_dUZUJCDjQrdXOi6!ApJL0ikgL~h_nBNi;q()Tf1~aFZF_XV% z9_z9%H-$-E%age;XH*_j0%aop>m6qDKBbWA!rHV1lfSGk!pmzi+yJI#}3su^QtB99HM zSEG5qkE-fzs|tDG%l1l`*u2gq=eiRR^}AE4*#KW-!d(vnt))_%%;J|Oz9;bnV#ryA z1?i$ZqnKC@)cSJ7Nn8i9b%6m(FP9}ZpF+*#V;GsQ!_y&AzUO&-qMlEnB>VZ_QI}?a}8MPqBYjrx| z3@=?^lD-tn5Np4cZb`Z2qTuI_u*EawopP$2k1A>fMW>Qbi`rdls&{>;-;JSyH=7#X zyD%)*l_%9wYCu#TrtVe0fQS8!%H6XO({Ne4O|&Tt!_rvqr4J!r{aw$(Y_1h~q03a~ za+-ySHzUp0%>D38VaBqUe5Dc^kltiZFMvWPkk6ii9W3IOaqBTA*}cc3F*$_~Dn;dI zJbB1@ymSMw);!{Pf_Wac)pe5$xg9D+anojjqI{5*FzT|OayBWEEOXo^N+ zI~-X~wJ->?jXH=qw~&0`6bg^Z_?Bs8xmooD6a&-r4;Znhj4DP;R^w|hWjkRBZ<7g@ zF;(+9vkCaDpSjjNWahRiSiQ-;ma`&%upYNdQcdguB8nr<)grnrM9K0gRjoX3W4DjH z5PswmJabvbt}Y0BiC3H|NuuA@pGoc%aYBdEFj7V|K~2Gp&k!fZNVmbv3Ea(#WQdYd zA6|Sao^v0(h^KbJW0s(rwN9(X)9=^rkd|Jaq@p zvpBx(ZRHvDO?61b#Ap!W=u5BC4)N3GKgR5%CZ^D#BO^hQO)Ho8)ke8oIrwg9u%b>0W*hrX{I z-ae5y*U6jA`Z)}d#^h^JlU^X2t(5k`D-@=p zeVm&1w^X%%gSE*;WxF)BZJX-$bJQ5yQ{nDUEc+0y{{S`a^JH#!sdHySGx8+pRni=7 zlr~YD`B0Pd3ANOt+F97TAO4hucGdgnL-jG#nr5S~c$fIFUEdFbn+kt4+V+~phaNAGwafKxxC9(|n}T3PT?Grzw-&0ovf)5-apli$R$LuDB6buoeZQ#+}P zlnQ1~uVz!rp+I_-v6v5su?{}+Q&9V9bY|a^xyEYQv?ov`l}BwBkl8iVT9MsV*1J-f zTuLqKI0}-YMiV%^myJc-RfxEMGit+eRJS`i&$&X;*hv4B33b9AaV_d68_m`Z<*f1( z+;1~7g$?%t>!3DF>XM}TckSF+$!P7VJ+oLes>~E*~o-W7;@_B-cW^lx;tq49OuZa!I zTtXRg;IP8pliX%1nC~3C{V!rVDHnWhFKHO-c)s+mlp@cO&r!4eO)dl$62bGeU~~s5 z!<5O&8q|9Cl{mF1Ja#g9&uH~Ebrx}P6`cN7c+X=n7gy9MRzpQm=A09oskzVyC+QOTyu^2jrp6I4_3bi8A~2?4`X01*4kTOiGHvP zI2Fj5Qm9*x0*h~kEBcH&M~P_0GT-nKrJGS=yk}u`bU{p#KR=UMlmEi9F+!- zcnDVXS23GZ7X~UxN}=ABL=@Qoez_)RpwcoAo!R$F0^ilAl2lSso zrR9k6^@kj@C%A0fBzufAvzz(M;${UH_XLy@ji@m1B!qnA{M|Iaiim9|z zI>S4?iJtHT*foP%Ky3>*e1`ETf#<4+-%4Xq7OEoL`(l`aRDBF_@(HtKbSFAl z<1Xs}h$}CdVRgGbeDykF`)&MCYp*jkk{wr*ABaR5x=wVj1+Ui{pY!*=H5V$*yJiQps=r#<>^ES?Hc{(1i>hNavnms8UTN<`Z$GNj zDySNo`aSW9!>H`M1v9#rXm!C)M3XW;cq_P&rac`I8|m$S=4t0=&5vfaJ3QIG)al+; zPAcW#wicqZ-KDk0_ubduHhwkIqgpD425_yl8I95*>r3mBb;G)kH_wVce~LPW54vbz zcLu}WhHEJ1)OV6tw`<6o>w#il1~Yw3KJzR2j6z17NbUDy6ta0x6qTh8(+$4rp0D7$ zY6YFCH!dU6oenOdw@dS1*`wLgn(D?xhyp(S81js zE3d-W?NbV%4^-i4x{%>arhafvy$o|#j_2MR1V2t&#M(Wo{iNkVi#Z&f-3)55JBef0 z^xJwxqYl3Q1LH2}FhBab8lZ+($>2Vw3VVrqLVBu^7G7&W#Jj%5%GhUp3!0E%8yZuO z>y3xsg0kW;EaqZr3Kd{5`|%tmliBS>UH1buNiV7?^oM=fNk!otQSCnYY zgE5-`o?Ohc*av$TX{Hv$Mm$xFm`4CV!6Gx7a{EvSA*H2w+IcQ&mQ6`n*?&C^&P{c(h)2gtItC)eitbWY1+)fGB?%;=2zKk#hGKj5}yPPWbbr_foURZUSLmgoUS;%kR zvqXkiaFmNWVg+nTq>b2`=3fP|IMuVRu*2)AcHI+0ZmT(0zD+v(P>GgLF2ZW=O?`Wg zyb=zsi1Ivs=pB?>w%SeY3k$wG(hC;U>ciZR(hgIViqWgM_wq*Ag$uS?aYH=cKy zA(_3^r>`JdL8}PT9m~xQJthRyi6-}v|rLSu#=ViBZze< z_4AJKOF51Ftkj9d24lDJBC~n{TBq%1ZMz{1-+T7=)P#$m%bH0g_;;r(taPXhzw1Zd zg*r#9aEZ$a<54(|hf~*o3r75m*hFegbX@>0_##r`hq$0SET=#(Lz40qo-&>%)IuGv zz6%06t3Ixk1~*QD7ucqSTy-TFf$>x%Z$;~_4Vm>oV>|IS^reH%(Tw~uu+RI{f-jpH ztXx(Rs|n0yF0_ZmP<~d%mp%_yImDg|7TQb?!a4lvPj*pQlZMXoPA6)t!y?_sMYxkJ zZf;jZFEoTad@?w?CY9sv-fVKXwO+^y#R=26$Lmz^#YibLfpuxhnIpdIdlV|6j=Cd0 z(x;jc#?CVM!+Ls8eUP5R$Y+>jDk-QjP8$vI8vXHsA5y=$Xr{9=Tjebs+KE4ZrupgLL) z_^&TesQjpzMCC9Cn8kZNWyr>C(Enp7=4+V^7{Mt~9V;`VSIcSur#FQda3ty?sKxk= zrv|srJ_6U3D^jKmc19Af4>@0f^V6fcuI>(Shr)F2f;TzGiq8nw^%Q)u;dLeF8PA%Z z34ijvSCslzUFPg~{MT=OSo?2IZF3@8q*U;IT$Fc&breZ#jzW4oxb_^C^WX8qUBLEl zNDHZJg-E2XJWigBCUZM$suYZE2e|sl$}TdLXL!O}@w{c>8YH7L7=5X6!1%%#NS>V4 z%45BQUNE~|4nCy5{R(=UEKWZ9B3ANz&rnUs@i14eK~&#JE$TaRGuqLkXZ@A<4UuWB zd_cYh3VIxVwTChot=W6@31ni{C7_*nUVR1KYp9*esZ|2QwV+mT1Mavb%<&*Q6iW(xbaTE;X5#viEGg^0lb!8M{{b!-w$RcK7(R+1}kC_ z{NZ_U=`UV-YA&Jfvadf9Um8}Acf%>%MOBd(#d67@T2P+%`zj00cnde@ZIrsI3~XTpduUjey-+M>XXT4A zgFmSW7V1X!HV$8~j%?>ph$6@mvRefi6O(MAh1DJ#ry^kyW-5*z2E?0O%i+X2wj zB^2%H@p=W_CVp$bGZpMNA{F`(|9eIRHDX{DSZh8{si1oJ=7Qb?PGR%SBcbE1*i#Cgwyv?7(VBX z^(Miy9f8Nb=?_6c!X_~hr<7jICN?3v2&4BLveR$itLwqC?UXAqFJ5I{Y#f;lLNF2Yoba&>eJyV3J~4y*JA9yps;m`GQV%=ahlGCr{*IA92h?Ip%B z^7^bW-74sE0^EOoIRBYsi3h;}zu2+pvZ|923?(|as1VChhiwb;4fR-iy~ET(AA@hK z3YT++s}ci~wf9hSI4Lg5S3)Ip5}iR8#Ve>-OOhS_#%gK>;{6C+!dHF_dCpT-SAPSR5u5Z%dCZw`U=&2eWKSZAj;6I?Y3i_OmtGb;7p|I zw*#i(CUw%{t_}|qX18te%d_zzKYJzo^8QPxPQoX+pRR{9uundfTPhF>()`|7^1;ye zJ&igw?CCoU{_TqAy(|AJS7iNepqg+QpC{Q2o~-rY$-~5#XkM&N z^Lugh;S@zRP#q@e1+w-ra9yj&JPvWE*Xaq(B^5y}T}^6$GG-umJr_oDqjZo?wQHzx zbCStxu=@3R4g<(J=djW~U|yXiZ;MfKC{L2RRU!JnpbQ~8Y{2K8RK8PgDZeUtqAJWB zbv4?_Q)((XLRs>I*Xj3KOfTJM+Bv-2w^6TGA-yzRQ#O4$AzB@+pVhwxeZ^6WD@%pB z61mUas5i7V9QiQf_gr-GtIZFn%6vv$<}0$g+b9|`6Y+}CCt4e&d>iIR*hghkJ5Hwm zW+HmAcZlktx4LI%z*m)UWNOBZm^Zzh(auzuo-ivvO0D1~s;1m-F_2kRx1rmPks6H( zccHtQu7IP|iEqM|=mutZ z17`bo@}7opfL~D$%}dnYq`qGN7Ajr~LBcyW~e6Hvj& zGoN1|hOYq;y-J46y&j4a_VALI`|Lu$@?`YM)zB^7p_6bS$o-aFhMv0tC-DVE zWIeP7o6KC)AbJw5Mw7|EL4FzbM(m{i6RI{YkkiNE!<*Xe?Gg4oxR>`q{K7_T>s%=84f?z>2hmK)WQC)EUF zq`*4OqweqldEFfj>etxcSN)m}}6zYyhNd7W}jRib(y=O?ELe8^Jt5=E&vrFg>4IAJmO zEQkfs6u$ zyHxOW^X|`3(WoEk*d~EDH>1ND#u}B0&|eZu?x?@08OcDOr-S;o)(4$vEn_g*%3fn8 zHO*YCw!R>f6P809Sxc*KCHS?_v$u|V5=Z#2qh(x#R|sSCQU4q~$z2%ec>Z#*7_awowD=~3TXG{!~3O&@0(9XSDos_Md~&2 z!INZi)6u2w58pdEy-MwK`X9eN=Ru%kZ*n{y3nyWe7 z>oU~%AE7(mM+N5rSU;W~$}%992JjcF;emF*FCMqg*zrWma?UeE%jfZ%!>OvjPmXpF z&-pbh#$8rqZu(Zv!j1mUv&!mqqs}#v%J2Iyc!wGD%k-gU^s_PY4e_GAP<>8=C4C13 z6B9f}{#KGsjrM5x`HTS`XDRfWKG|hYn9wCWrFlG$y=c~laQ9!ZK69c0sA@DYT2r@~ zKxV&|y53dP8X3&eM624U#|Pl;rgHxu!P4wz#hxb5xl0e-u?WQ;JgZQry8pAI^1t(;=@($FviX3W){s3k;16hJb-Mbb!btBZ;L*N2-dP6{M+}I@M2`{gJD&ypW+`$v(HiD4{Lj^i983u5}9BQtFuOWu|5{FI!=PIg$3!O&zFN;F$#in?%Ard({1Hd z4c}vR`sj1!CWte{Y)UTO!LMF`rq?d^RuaWco1W(XMuVC~sk1~U9?Z27pR$ka{YxV5w-L*cPRUH?Q4c zeO_q~whgnBuy1e*%9Ta%PHUA-kq+w!{8Nlto=U}AtmzNYneC=Je^&h!wSB-2A8C5< zNpwi=&~oTC$Y}b(DletCB-Fxwr)MV@txMKEh_12utm7+2DKz*E(eVrd-_|9zbfZ`3 z1M3s(F8tWzb`jQRB8sDabk2mDo;S$Ecfp=y1JQxut?s{@e)DbOC{$ARn(H*QW1#C7rIn%Q;b(SP#4R zMxtO^LyoYU&gpPhg>j zp0D(5ut_?Kw$9XTry6sO_vkp=1FLj_{S@NNB4&A0f#;YAzrBj}zsEcWPbXhxx$?^4%<`7^}e4PC<41wNsfcy!q}4o?I2Wt%tLt z$O<%|-?PI?es+mTBqtjRhq1`tL`L~7*uF4&;5tELx;cl?nY@~8EZR3l$PnqJ(xd8B z=vr-rnsYRH*hX@X9up>veg(UUz#yEVcSEDJ;a_w zC$%$LDv00;dk@?s;@(F;Dd=%z_*r4z!ueMSRFne-(=`%^Jc5`Z!gZ;j>nl8moAgNB zXZ8tZoEdLsg-yysMZOT-pC!$*)a6B(6%%eHfj){FW*u^uMyS18f;c)-sZT<8kb-7< zD4gwR`sF5=ljxb7Mb5PVmTnodcr~bfqq&(_wv+kH^G?VR;j%rTk3%TEPr`Gi!eLwq zuCvq09awsDk;DvXpDilJiSc4qSmvtqDA!@niAGK;EZh~8iZ|Iu(!0at+s;H_7L|Ep-nl7Mj#cI^a_m7O|bHP^c#W}NB)o%)-(@#-a=YY*weD8dPPlz zUvSa(R@G|Iv6zU$w;3I~ZDCcrg0GUb6m1}C-x1WG#0|auFl#C`%n;MvM8|U< z<+9+!Iq`Jr=OB~J#|{KVoswYu3XVwsvFW%@0vYb371E4qSX-wf`mQ7=8SZl+oW=-P zqOl;~Nhl3xIdh!_r~{Tct6+`RQ~TYF>V2oP$JtMYdW?SbGymZ#%i-ps##RWWSV{U@ zE5I_TuIajN0&G(acJxW4=d~Hyv9@kU6uL>UPbuKdq3#G+sIf%zNw9{q;0+g`u3tul zWVO5A-RN$1w}M6YxcljPJjSkOXWUd&p;xG<-vm?M2b&6BoEHx^&*2FRG6;EaBeOuI z3qY02{8hfNIzzZ!mGIAgHlOsbp5niHI**=6TfZYJoFsU!6qv7}^ed0{g+m!4KI{Ma z4Emous{3K|j)BR~ppL#oE#NxU0D7fTGlW}g3IAV3!|)TSRo*YGuOGu-UW(ZB2k?7Y z@sNe^juo`gR4gXI6-=Y1I+v=dkRxOCS=E2lFZ?mOb;Q}FPk@$S>2&V*I?^v(G5@X8+bAMB*N;u!k1OT^AQ z5o*gy#4JR#tPs^8suCj`5g$7e8&imjqlt;rh=+@bh3kofJ0rFC8GPyAdo>{;BcFUu z8u4%9MFPBS4fGj_WN6Lkscnl2u`9V+GJMuR6w4zbUL#`^V-wh=ss`P^iS!^elUjl~ z;{B|C4l>z%?C+NLe);~>o|}uF#An~(C%4-Fljr+`Kd{388ZX9kSe-HQL;oIk{A+*w z@4Tk4HDkol)&Zfm6o-|tF0cTqiz>HjXGhw=R1Me{fi^S@gI!ozr*&nx5=^-98* zi=GO1>av?j=z;#x`wR^IPEkH{Ec64>sO(1{d`v!xYAuyrE3UAg;!QHY`|MRCC~-=> zl9l>f9(GYHL?&30T(AOsjSAoC(s5IjU0dt0H$fxVo0jZq(vj|)Bovk@=yZm{M2<$m zH-S!^Y3y-0m%Ypuv$y6dGRXCCl$+VFbmza!0sh}$_5Tb;e}v6b4dG8%ImD|8e}~up tD{xUB?{6bj;ZI{Fq_WpOLlZ|9m4`}dNikd-e2!dnE-ky_@W1uz{{j~(Ab$V= literal 0 HcmV?d00001 diff --git a/Binaries/batch_program.bat b/Binaries/batch_program.bat new file mode 100644 index 0000000..1b6b32c --- /dev/null +++ b/Binaries/batch_program.bat @@ -0,0 +1,21 @@ +@echo off +rem This batch file does not set the fuse bits. We assume you are updating a pre-existing OpenLog + +if [%1]==[] goto usage + +@echo Programming the SparkFun OpenLog +@pause +:loop + +@echo - +@echo Programming binary: %1 on %2 + +@avrdude -Cavrdude.conf -v -V -patmega328p -carduino -P %2 -b115200 -D -Uflash:w:%1:i + +@echo Done programming! Ready for next board. +@pause + +goto loop + +:usage +@echo Missing the binary file and com port arguments. Ex: batch_program.bat OpenLog_v43.hex COM3 diff --git a/Binaries/readme.md b/Binaries/readme.md new file mode 100644 index 0000000..b844bf9 --- /dev/null +++ b/Binaries/readme.md @@ -0,0 +1,4 @@ +Programming OpenLog via Serial +=========================================================== + +The SparkFun OpenLog can be updated using a USB to serial adapter and 5 jumper wires. Run batch_program.bat with a given COM port and HEX file. \ No newline at end of file