diff --git a/check_custom_build_flags_mega2560-5500.sh b/check_custom_build_flags_mega2560-5500.sh new file mode 100644 index 0000000..01af1e2 --- /dev/null +++ b/check_custom_build_flags_mega2560-5500.sh @@ -0,0 +1,9 @@ +#! /bin/bash +CUSTOM_BUILD_FLAGS_FILE="custom-build-flags/build_flags_mega2560.sh" +export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short) +export FLAGS="$FLAGS -DWiz5500" +#TODO: make one file for all envs +if [ -f $CUSTOM_BUILD_FLAGS_FILE ]; then + source $CUSTOM_BUILD_FLAGS_FILE +fi + echo $FLAGS diff --git a/check_custom_build_flags_mega2560-net.sh b/check_custom_build_flags_mega2560-slim.sh similarity index 64% rename from check_custom_build_flags_mega2560-net.sh rename to check_custom_build_flags_mega2560-slim.sh index 035a64b..c8119b7 100644 --- a/check_custom_build_flags_mega2560-net.sh +++ b/check_custom_build_flags_mega2560-slim.sh @@ -1,6 +1,7 @@ #! /bin/bash -CUSTOM_BUILD_FLAGS_FILE=custom-build-flags/build_flags_mega2560-net.sh +CUSTOM_BUILD_FLAGS_FILE="custom-build-flags/build_flags_mega2560-slim.sh" export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short) +#TODO: make one file for all envs if [ -f $CUSTOM_BUILD_FLAGS_FILE ]; then source $CUSTOM_BUILD_FLAGS_FILE fi diff --git a/check_custom_build_flags_mega2560.sh b/check_custom_build_flags_mega2560.sh index 59a98bc..3e02b7f 100644 --- a/check_custom_build_flags_mega2560.sh +++ b/check_custom_build_flags_mega2560.sh @@ -1,7 +1,6 @@ #! /bin/bash -CUSTOM_BUILD_FLAGS_FILE="custom-build-flags/build_flags_mega2560.sh" +CUSTOM_BUILD_FLAGS_FILE=custom-build-flags/build_flags_mega2560.sh export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short) -#TODO: make one file for all envs if [ -f $CUSTOM_BUILD_FLAGS_FILE ]; then source $CUSTOM_BUILD_FLAGS_FILE fi diff --git a/compiled/DUE_16u2_reflash/reflash16u2DUE b/compiled/DUE_16u2_reflash/reflash16u2DUE deleted file mode 100644 index 5e4348a..0000000 --- a/compiled/DUE_16u2_reflash/reflash16u2DUE +++ /dev/null @@ -1 +0,0 @@ -/Users/andrey/.platformio/packages/tool-avrdude/avrdude -C /Users/andrey/.platformio/packages/tool-avrdude/avrdude.conf -c arduino -P /dev/cu.usbmodem1411 -b 19200 -p m16u2 -vvv -U flash:w:16u2.hex:i diff --git a/compiled/controllino/firmware.hex b/compiled/controllino/firmware.hex index 78fffa5..ad7e860 100644 --- a/compiled/controllino/firmware.hex +++ b/compiled/controllino/firmware.hex @@ -131,7 +131,7 @@ :10082000584F46462C544F47474C4500656E756DF2 :1008300000666C6F617400322E312E300024686FB8 :100840006D696500757074696D652C6672656568A3 -:1008500065617000656130383863615F323031390D +:1008500065617000373038663531655F3230313967 :100860002D30362D3031004C696768744875622030 :1008700000246E616D650072656164790020747298 :100880007920616761696E20696E20352073656328 @@ -247,7 +247,7 @@ :100F6000295741544348444F47000A282B29434FEF :100F70004E54524F4C4C494E4F0032303131303389 :100F80004C0020432B2B2076657273696F6E3A00FC -:100F9000656130383863615F323031392D30362D3C +:100F9000373038663531655F323031392D30362D96 :100FA0003031000A4C617A79686F6D652E72752058 :100FB0004C6967687448756220636F6E74726F6CF9 :100FC0006C65722000000020002300260029002C00 diff --git a/compiled/controllino/upload.bat b/compiled/controllino/upload.bat new file mode 100644 index 0000000..02bd82c --- /dev/null +++ b/compiled/controllino/upload.bat @@ -0,0 +1 @@ +..\tools\win\tool-avrdude\avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -v -V -P com3 -patmega2560 -cwiring -b115200 -D -Uflash:w:firmware.hex:i diff --git a/compiled/controllino/upload.sh b/compiled/controllino/upload.sh new file mode 100755 index 0000000..b22f187 --- /dev/null +++ b/compiled/controllino/upload.sh @@ -0,0 +1 @@ +../tools/mac/tool-avrdude/avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -v -V -P /dev/cu.usbmodem1411 -patmega2560 -cwiring -b115200 -D -Uflash:w:firmware.hex:i diff --git a/compiled/due-5100/firmware.bin b/compiled/due-5100/firmware.bin index 5b10147..cc57861 100644 Binary files a/compiled/due-5100/firmware.bin and b/compiled/due-5100/firmware.bin differ diff --git a/compiled/due-5100/upload.bat b/compiled/due-5100/upload.bat index a6af6a0..29a5af9 100644 --- a/compiled/due-5100/upload.bat +++ b/compiled/due-5100/upload.bat @@ -1,3 +1,3 @@ mode com3:1200,n,8,1 pause -%HOMEPATH%\.platformio\packages\tool-bossac\bossac.exe -i --port=com3 -U false -e -w -v -b firmware.bin -R \ No newline at end of file +..\tools\win\tool-bossac\bossac.exe -i --port=com3 -U false -e -w -v -b firmware.bin -R \ No newline at end of file diff --git a/compiled/due-5500/firmware.bin b/compiled/due-5500/firmware.bin index f09999d..e9e127e 100644 Binary files a/compiled/due-5500/firmware.bin and b/compiled/due-5500/firmware.bin differ diff --git a/compiled/due-5500/upload.bat b/compiled/due-5500/upload.bat index a6af6a0..29a5af9 100644 --- a/compiled/due-5500/upload.bat +++ b/compiled/due-5500/upload.bat @@ -1,3 +1,3 @@ mode com3:1200,n,8,1 pause -%HOMEPATH%\.platformio\packages\tool-bossac\bossac.exe -i --port=com3 -U false -e -w -v -b firmware.bin -R \ No newline at end of file +..\tools\win\tool-bossac\bossac.exe -i --port=com3 -U false -e -w -v -b firmware.bin -R \ No newline at end of file diff --git a/compiled/esp32-wifi/firmware.bin b/compiled/esp32-wifi/firmware.bin index bd46d75..21db674 100644 Binary files a/compiled/esp32-wifi/firmware.bin and b/compiled/esp32-wifi/firmware.bin differ diff --git a/compiled/esp8266-wifi/firmware.bin b/compiled/esp8266-wifi/firmware.bin index cf4cdfb..bae3880 100644 Binary files a/compiled/esp8266-wifi/firmware.bin and b/compiled/esp8266-wifi/firmware.bin differ diff --git a/compiled/lighthub21/firmware.bin b/compiled/lighthub21/firmware.bin index e6bc01c..b3fae20 100644 Binary files a/compiled/lighthub21/firmware.bin and b/compiled/lighthub21/firmware.bin differ diff --git a/compiled/lighthub21/upload.bat b/compiled/lighthub21/upload.bat index a6af6a0..29a5af9 100644 --- a/compiled/lighthub21/upload.bat +++ b/compiled/lighthub21/upload.bat @@ -1,3 +1,3 @@ mode com3:1200,n,8,1 pause -%HOMEPATH%\.platformio\packages\tool-bossac\bossac.exe -i --port=com3 -U false -e -w -v -b firmware.bin -R \ No newline at end of file +..\tools\win\tool-bossac\bossac.exe -i --port=com3 -U false -e -w -v -b firmware.bin -R \ No newline at end of file diff --git a/compiled/m5stack/firmware.bin b/compiled/m5stack/firmware.bin index 07a28a1..d51fb4a 100644 Binary files a/compiled/m5stack/firmware.bin and b/compiled/m5stack/firmware.bin differ diff --git a/compiled/mega2560onewire-5100/firmware.hex b/compiled/mega2560-5100/firmware.hex similarity index 97% rename from compiled/mega2560onewire-5100/firmware.hex rename to compiled/mega2560-5100/firmware.hex index e6c0025..bd8d3f2 100644 --- a/compiled/mega2560onewire-5100/firmware.hex +++ b/compiled/mega2560-5100/firmware.hex @@ -130,8 +130,8 @@ :100810002C524553542C584F4E2C584F46462C546E :100820004F47474C4500656E756D00666C6F61748F :1008300000322E312E300024686F6D6965007570AE -:1008400074696D652C6672656568656170006561C7 -:1008500030383863615F323031392D30362D3031E8 +:1008400074696D652C667265656865617000373026 +:1008500038663531655F323031392D30362D3031E3 :10086000004C696768744875622000246E616D658C :100870000072656164790020747279206167616932 :100880006E20696E2035207365636F6E6473006639 @@ -178,7 +178,7 @@ :100B1000000A436F6E666967207365727665723A84 :100B2000000A282B295741544348444F470032308C :100B3000313130334C0020432B2B207665727369A2 -:100B40006F6E3A00656130383863615F3230313939 +:100B40006F6E3A00373038663531655F3230313993 :100B50002D30362D3031000A4C617A79686F6D6521 :100B60002E7275204C6967687448756220636F6ED9 :100B700074726F6C6C6572200000002000230026E8 diff --git a/compiled/mega2560-5100/upload.bat b/compiled/mega2560-5100/upload.bat new file mode 100644 index 0000000..02bd82c --- /dev/null +++ b/compiled/mega2560-5100/upload.bat @@ -0,0 +1 @@ +..\tools\win\tool-avrdude\avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -v -V -P com3 -patmega2560 -cwiring -b115200 -D -Uflash:w:firmware.hex:i diff --git a/compiled/mega2560-5100/upload.sh b/compiled/mega2560-5100/upload.sh new file mode 100755 index 0000000..b22f187 --- /dev/null +++ b/compiled/mega2560-5100/upload.sh @@ -0,0 +1 @@ +../tools/mac/tool-avrdude/avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -v -V -P /dev/cu.usbmodem1411 -patmega2560 -cwiring -b115200 -D -Uflash:w:firmware.hex:i diff --git a/compiled/mega2560-5500/firmware.hex b/compiled/mega2560-5500/firmware.hex new file mode 100644 index 0000000..c86b693 --- /dev/null +++ b/compiled/mega2560-5500/firmware.hex @@ -0,0 +1,4443 @@ +:100000000C94A4090C94D5090C94D5090C94D50929 +:100010000C94D5090C94D5090C94D5090C94D509E8 +:100020000C94D5090C94D5090C94D5090C94D509D8 +:100030000C94D5090C94D5090C94D5090C944E4414 +:100040000C94D5090C94D5090C94D5090C94D509B8 +:100050000C94D5090C94D5090C94D5090C947B6D9E +:100060000C94D5090C945A610C9430610C94D50908 +:100070000C94D5090C94D5090C94D5090C94D50988 +:100080000C94D5090C94D5090C94D5090C94D50978 +:100090000C9420620C9490610C94D7610C94A62B64 +:1000A0000C94D5090C94D5090C94D5090C94D50958 +:1000B0000C94D5090C94D5090C94D5090C94D50948 +:1000C0000C94D5090C94D5090C94D5090C94FA60BC +:1000D0000C94D0600C94D5090C94D5090C94D509D6 +:1000E0000C94D509600B190B260B600B600B6E0B83 +:1000F0007B0B5A0B600B600B8B0E900E950E9F0EB8 +:10010000A90E220FB30EBB0EC30ECD0ED70EE10EFD +:10011000F00EFA0E220F040F0E0F180F2B111D11E7 +:100120001D112B112B112F113D113D112B112B11D5 +:100130003B161616561656165616561656165616BA +:10014000561656165616A412731594158D157E154F +:1001500056165616561656165616561656162A166B +:10016000371C2B1C2B1C371C371C121C1F1C1F1C64 +:10017000371C371CF226F5260D2724276D278027EC +:10018000A0271F341F341F341F341C341C34233465 +:1001900023342334233423342334233423341C34AE +:1001A0001C342334233423342334233421341F34A4 +:1001B000D266BF66BF66D266D266D266DD66DD668F +:1001C000D266D2667F6A7B6A7B6A7F6A7F6A7F6A51 +:1001D000886A496A7F6A7F6ABE6CC16CB06CB46C15 +:1001E000BA6CF86CC56CC96CCF6CD36CD76CDD6C19 +:1001F000E16CE56CF86CEB6CEF6CF36C076342360A +:10020000B79BD8A71A39685618AEBAAB558C1D3CA7 +:10021000B7CC5763BD6DEDFD753EF6177231BF006B +:100220000000803F08000000BE922449123EABAAA5 +:10023000AA2ABECDCCCC4C3E00000080BEABAAAA00 +:10024000AA3E00000000BF000000803F0000000048 +:1002500000084178D3BB4387D1133D190E3CC3BD81 +:100260004282AD2B3E68EC8276BED98FE1A93E4C2E +:1002700080EFFFBE01C4FF7F3F00000000000C9430 +:10028000504B0C9494150C94496A0C94A22A0C942B +:10029000B30E0C94E16C0C9431480C94220F0C9426 +:1002A000954D0C941D110C94E56C0C945D480C94C8 +:1002B000B24D0C941A480C94FA0E0C94B05E0C9447 +:1002C000DE3C0C94CD0E0C94AF250C942A160C94A5 +:1002D000F36C0C94054A0C94886A0C94B62A0C941E +:1002E0000D270C94912A0C9452480C94C0250C9420 +:1002F000984B0C94114D0C94545F0C94C14E0C947B +:100300003B160C949F0E0C94932A0C94DD250C94B0 +:10031000F2260C946E5E0C94AF470C9473150C94FB +:10032000135E0C94190B0C94134A0C94A24C0C946D +:100330000E0F0C94C30E0C94FF4E0C94D7090C9422 +:100340004C5E0C94EB6C0C9423340C94BA6C0C94AF +:10035000600B0C942A250C94922A0C942B110C946B +:10036000B06C0C947E150C9464420C94E51C0C94B7 +:10037000CF6C0C941F1C0C94F8280C943A260C9407 +:100380008A430C947C600C946E420C94121C0C9466 +:100390003D110C946F4B0C94F0240C9449480C9430 +:1003A000ED250C94F5260C948B0E0C94A90E0C9450 +:1003B000C96C0C94AC480C94A9780C945C4D0C94CA +:1003C0001A2B0C94950E0C942F110C94FD5E0C942A +:1003D000C16C0C94DC3C0C94C56C0C9439480C94A6 +:1003E000E73C0C947F6A0C9470670C9465480C94FD +:1003F00021490C945A0B0C94A26A0C94371C0C944F +:10040000260B0C94BE6C0C9469240C9480270C94DD +:10041000DD6C0C94BE2A0C94A4120C94F86C0C9411 +:10042000E10E0C9474670C941C340C94EF6C0C94D7 +:10043000040F0C946C670C94B46C0C9449310C94BC +:100440004E420C94565F0C94C74D0C948D150C9431 +:10045000BF420C94DD660C94900E0C94B84A0C9438 +:10046000605E0C94F00E0C94114C0C941F340C94A0 +:10047000FB3C0C942B1C0C947B6A0C9431250C9443 +:100480007B0B0C941B480C9456160C94C3420C9492 +:1004900016160C9470420C94B7240C94BF660C94FE +:1004A000180F0C94254E0C94584D0C9424270C9442 +:1004B000795F0C94FF420C94AA520C943D5E0C940C +:1004C000D2660C949C420C9466480C946E0B0C946F +:1004D00095240C9421340C94D36C0C9471670C9477 +:1004E000A0270C94EB2A0C9478240C94BB0E0C944B +:1004F000C5240C94B6200C946D270C943E4C0C949F +:10050000D76C0C94DD420C9435480C94D70E0C94A7 +:1005100002256364696E6F70737578585B003E3EA8 +:100520003E004E6F204D414320636F6E66696775D4 +:100530007265643A20736574206669726D776172C2 +:10054000652773204D41430A00312D77697265207C +:10055000636F756E743A200020416464723A0064DF +:100560006576230020616C69766500204E6F6465B6 +:100570003A00536561726368696E67004D6F64622B +:10058000757320706F6C6C696E67206572726F7224 +:100590003D002D002050492056616C203A004D6FDF +:1005A0006462757320706F6C6C696E67206572721F +:1005B0006F723D002D0020464D2056616C203A00A0 +:1005C0004D6F6462757320706F6C6C696E67206527 +:1005D00072726F723D002056616C3A20004D423AB3 +:1005E00020004E6F7420737570706F727465642094 +:1005F00072656720747970650A00496C6C65676183 +:100600006C20617267756D656E74730A0075707425 +:10061000696D650066726565686561700024737454 +:1006200061747300200020000A52414D3D00202DCE +:10063000746172676574207A6F6E652D00204F4675 +:100640004600204F4E00204F46460020636D643A1E +:1006500000204375723A00205365743A00204578B3 +:1006600070697265640A003D005643230020636D83 +:10067000643D003D0056435F6865617423003D00A2 +:1006800050696E3A003D0050696E3A002048616C36 +:100690007465640A003D00526573746F7265643A54 +:1006A00020003A204E6F2073746F7265642076616B +:1006B0006C756573202D2064656661756C740A0025 +:1006C000466F7263652057686974650A00416C72F1 +:1006D00065616479204163746976650A00547572B6 +:1006E0006E696E6720584F4E0A00584F4646207379 +:1006F0006B69707065642E205072657620636D643E +:100700003A005475726E6564206F66662066726F7B +:100710006D3A00526573746F7265642066726F6D16 +:100720003A003E20003C00205061723D20002043F2 +:100730006D643D00205375623D00204974656D3D38 +:100740000052414D3D00476F742049502061646460 +:10075000726573733A00276970205B69705B2C6463 +:100760006E735B2C67775B2C7375626E65745D5D71 +:100770005D5D27202D207365742073746174696337 +:100780002049500A004661696C656420746F2063DB +:100790006F6E6669677572652045746865726E650F +:1007A00074207573696E6720444843502E20596F3A +:1007B000752063616E20736574206970206D616EB1 +:1007C00075616C6C7921005374617274696E672075 +:1007D0006C616E00246E6F6465730024666F726DC9 +:1007E00061740024646174617479706500302D3126 +:1007F000303000696E7465676572006873760063F7 +:100800006F6C6F72004F4E2C4F46462C48414C5433 +:100810002C524553542C584F4E2C584F46462C546E +:100820004F47474C4500656E756D00666C6F61748F +:1008300000322E312E300024686F6D6965007570AE +:1008400074696D652C667265656865617000373026 +:1008500038663531655F323031392D30362D3031E3 +:10086000004C696768744875622000246E616D658C +:100870000072656164790020747279206167616932 +:100880006E20696E2035207365636F6E6473006639 +:1008900061696C65642C2072633D00417761697405 +:1008A000696E6720666F722072657461696E656437 +:1008B00020746F7069637300636F6E6E6563746537 +:1008C000642061732000202E2E2E00207573657227 +:1008D0003A003A000A417474656D7074696E67205D +:1008E0004D51545420636F6E6E656374696F6E2052 +:1008F000746F200024737461746500646973636F9E +:100900006E6E6563746564005573696E67204D5142 +:1009100054542070617373776F72642066726F6DC8 +:1009200020636F6E66696700446576696365204E73 +:10093000616D653A00526562696E64207375636328 +:100940006573732E20495020616464726573733A35 +:10095000004572726F723A20726562696E64206639 +:1009600061696C0052656E657765642073756363B9 +:100970006573732E20495020616464726573733A05 +:10098000004572726F723A2072656E6577656420F9 +:100990006661696C004E6F206C696E6B0041636329 +:1009A000657074696E6720636F6D6D616E64732E20 +:1009B0002E2E0A002F00496E3A20003D00494E3A83 +:1009C000006865617400766F6C00706F7765720007 +:1009D000736574706F696E74006D6F646500746523 +:1009E0006D700073657400536574436D643A002044 +:1009F00056616C3D002053746F726520007267620F +:100A00000068737600444543524541534500494EC2 +:100A10004352454153450066616C736500747275BD +:100A20006500584F464600584F4E0048414C540010 +:100A3000544F47474C450052455354004F464600DB +:100A40004F4E0054787432436D643A000000200029 +:100A50002300260029002C002F0032000001000096 +:100A60000301060109013D00494E3A00696E007319 +:100A70005F6F7574006D79686F6D6500000022000E +:100A8000250028002B002E00310034000201000058 +:100A9000050108010B0100000A0B02090C0D0E08EC +:100AA0000703040100000000000000000000000037 +:100AB0000000000000000000000000000000000036 +:100AC00000001211100000000000000000000000F3 +:100AD00000000000000000000000000000002100F5 +:100AE000240027002A002D003000330001010000FF +:100AF000040107010A01010210202008081020400B +:100B000010204080020102010804020101020408D1 +:100B1000102040808040201008040201800402015F +:100B200080402010080402010804020101020408A8 +:100B300010204080010204081020408005050505B2 +:100B4000070508080808020202020A0A0808040445 +:100B50000404010101010101010103030303030373 +:100B60000303040707070C0C0C0C0C0C0C0C020202 +:100B7000020206060606060606060B0B0B0B0B0BFF +:100B80000B0B43757272656E74204C414E20636F7F +:100B90006E6669672869702C646E732C67772C7396 +:100BA00075626E6574293A000A557365207468652C +:100BB000736520636F6D6D616E64733A202768659D +:100BC0006C7027202D207468697320746578740A0E +:100BD000276D61632064653A61643A62653A6566CF +:100BE0003A66653A3030272073657420616E642060 +:100BF00073746F7265204D41432D61646472657337 +:100C00007320696E20454550524F4D0A2769702068 +:100C10005B69705B2C646E735B2C67775B2C737500 +:100C2000626E65745D5D5D5D27202D2073657420A7 +:100C30007374617469632049500A2773617665276C +:100C4000202D207361766520636F6E666967206969 +:100C50006E204E5652414D0A2767657427205B630C +:100C60006F6E66696720616464725D27202D20675E +:100C7000657420636F6E6669672066726F6D2070A1 +:100C800072652D636F6E6669677572656420555273 +:100C90004C20616E642073746F72652061646472AD +:100CA0000A276C6F616427202D206C6F61642063BC +:100CB0006F6E6669672066726F6D204E5652414DA9 +:100CC0000A2770776427202D20646566696E652089 +:100CD0004D5154542070617373776F72640A276B9F +:100CE000696C6C27202D20746573742077617463A0 +:100CF00068646F670A27636C65617227202D206323 +:100D00006C65617220454550524F4D0A27726562ED +:100D10006F6F7427202D207265626F6F7420636F70 +:100D20006E74726F6C6C657200536F6674207265BE +:100D3000626F6F74696E672E2E2E00444D58696E77 +:100D40002042756666657220616C6C6F6320657207 +:100D50007200496E697420696E2063683A00094424 +:100D60005332343832206572726F720009526573E3 +:100D7000657420646F6E650009436865636B696E16 +:100D80006720666F7220312D576972652064657621 +:100D9000696365732E2E2E004453323438322D3160 +:100DA00030302070726573656E740044533234388D +:100DB000325F3130305F4932435F544F5F31575FAC +:100DC00042524944474520696E6974002041646479 +:100DD000723A00646576230052414D3D000A312D80 +:100DE0007769726520000A6D71747420000A6D6F56 +:100DF0006462757320000A696E7075747320000A4E +:100E00006974656D7320000A436F6E666967757259 +:100E100065643A002C003D0050696E3A002C003D9C +:100E20004C4F5700546865726D6F3A004F6E6520E5 +:100E3000776972652052656164790A00444D5820D3 +:100E40006F757420737461727465642E20436861D9 +:100E50006E6E656C733A2000444D5820696E2073A5 +:100E60007461727465642E204368616E6E656C7384 +:100E70003A00005EBCE2613FDD83C29C7E20A3FDA0 +:100E80001F419DC3217FFCA2401E5F01E3BD3E6068 +:100E900082DC237D9FC1421CFEA0E1BF5D0380DE9A +:100EA0003C62BEE0025CDF81633D7C22C09E1D434C +:100EB000A1FF4618FAA427799BC584DA3866E5BBFA +:100EC0005907DB856739BAE406581947A5FB782628 +:100ED000C49A653BD987045AB8E6A7F91B45C6985A +:100EE0007A24F8A6441A99C7257B3A6486D85B050C +:100EF000E7B98CD2306EEDB3510F4E10F2AC2F71BA +:100F000093CD114FADF3702ECC92D38D6F31B2ECE7 +:100F10000E50AFF1134DCE90722C6D33D18F0C5219 +:100F2000B0EE326C8ED0530DEFB1F0AE4C1291CFCB +:100F30002D73CA947628ABF517490856B4EA693779 +:100F4000D58B5709EBB536688AD495CB2977F4AAA7 +:100F50004816E9B7550B88D6346A2B7597C94A14D9 +:100F6000F6A8742AC896154BA9F7B6E80A54D7898B +:100F70006B35436F6E6E65637465642E00436F6EF0 +:100F80006E2E2061626F72746564004C6F616465DF +:100F900064006C6F6164206661696C6564004E6F0B +:100FA0002073746F72656420636F6E666967004CAE +:100FB0006F6164696E6720436F6E66696720667251 +:100FC0006F6D20454550524F4D000A726571756531 +:100FD0007374204D51545420436F6E6669670053FB +:100FE0006176656420746F20454550524F4D005323 +:100FF0006176696E6720636F6E66696720746F2023 +:10100000454550524F4D2E2E0053617665640A00BF +:101010005365742064796E616D69632049500A00DC +:10102000454550524F4D20636C65617265640A00FE +:1010300050617373776F7264207570646174656456 +:101040000A00636F756C64206E6F74207061727338 +:10105000653A2000557064617465640A002B002DA8 +:1010600000485454502F312E312025690020485417 +:1010700054502F312E310D0A486F73743A20257366 +:101080000D0A4163636570743A202A2F2A0D0A43C2 +:101090006F6E6E656374696F6E3A20636C6F736513 +:1010A0000D0A0025730020000D0A00474554006614 +:1010B00061696C656420746F20636F6E6E65637424 +:1010C0000A004552524F523A20536572766572209B +:1010D00072657475726E65642000446F6E652E0AC9 +:1010E000004170706C79696E672E0A00436F6E66FE +:1010F00069672070617273696E67206661696C65EB +:10110000640A00676F7420436F6E6669670A004364 +:101110006F6E666967205552493A20687474703A58 +:101120002F2F006C617A79686F6D652E7275000AD9 +:10113000282D29524553544152545F4C414E5F4F24 +:101140004E5F4D5154545F4552524F5253000A283E +:101150002D294841524452455345542C20757369FA +:101160006E6720736F6674000A282D29434F554E11 +:10117000544552000A282D29444854000A282B2996 +:101180004F57495245000A282B294D4F4442555389 +:10119000000A282B29444D58000A282B2957697A20 +:1011A0004E657435353030000A282B2944533234CB +:1011B00038322D313030000A282B294672656552AD +:1011C000616D207072696E74696E67004355535487 +:1011D0004F4D5F4649524D574152455F4D41430087 +:1011E0000A4669726D77617265204D414320416402 +:1011F000647265737320006C617A79686F6D652E17 +:101200007275000A436F6E66696720736572766552 +:10121000723A000A282B295741544348444F47004B +:101220003230313130334C0020432B2B2076657225 +:1012300073696F6E3A00373038663531655F32302A +:1012400031392D30362D3031000A4C617A79686F92 +:101250006D652E7275204C696768744875622063ED +:101260006F6E74726F6C6C657220002C20002E0003 +:101270003E3E2000496E76616C696420636F6D6D3F +:10128000616E64005265747279696E6720434D44E3 +:101290000A004E6F7420737570706F7274656420ED +:1012A00072656720747970650A00293A0028543AFB +:1012B000003D3E004D6F64627573206F7020666163 +:1012C000696C65640A004163746976650A00477257 +:1012D0007020636865636B3A0A002D3E00507562AA +:1012E0003A2000556E6B6E6F776E20636D64200A36 +:1012F0000053746174757320646566666572656415 +:101300000A00206973200044656C6574696E67206B +:10131000636F6E662E2052414D207761733A005301 +:101320006B697070696E672E2E004F4F4D21005D06 +:1013300020000A5B003A004D41433A003E003E0067 +:101340003C00543A0000A97811241FBECFEFD1E22F +:10135000DEBFCDBF00E00CBF15E0A0E0B2E0ECEFD7 +:10136000F1E101E00BBF02C007900D92A638B10772 +:10137000D9F72CE0A6E8B5E001C01D92A530B20770 +:10138000E1F719E0C4EAD9E000E006C021970109BD +:10139000802FFE010E94C783C33AD10780E008076F +:1013A000A9F70E94C56D0C94FC880C9400002F9244 +:1013B0003F924F925F926F927F928F929F92AF92E5 +:1013C000BF92CF92DF92EF92FF920F931F93CF9332 +:1013D000DF93CDB7DEB769970FB6F894DEBF0FBEC7 +:1013E000CDBF6C012B011A015901088BFD8AEC8AD3 +:1013F000DC011296ED91FC911397008111810E94FE +:10140000C42D3B014C0161E477E087E698E00E943F +:101410009B5F2AE0B401A30187E698E00E94D45FB5 +:101420006AE377E087E698E00E949B5FB80187E671 +:1014300098E00E94C26064E377E087E698E00E944B +:101440009B5F4AE050E06C897D8987E698E00E94C6 +:1014500065606EE277E087E698E00E949B5F4AE075 +:1014600050E0B20187E698E00E94656067E277E0AD +:1014700087E698E00E949B5FF60182819381892B29 +:1014800009F468C61B861A861D861C861F861E8662 +:10149000A114B10469F185014E01FAE08F0E911C8F +:1014A000E12CF12CE214F3041CF523E0E216F10424 +:1014B000F9F0D801AD90BD908D01F401A192B192E7 +:1014C0004F0165E277E087E698E00E949B5F4AE083 +:1014D00050E0B50187E698E00E94656062E277E03F +:1014E00087E698E00E949B5FFFEFEF1AFF0ADACFD2 +:1014F00087E698E00E94BE6060E070E0C6010E944E +:10150000AD213C0124E04216510451F037E043166E +:10151000510469F183E04816510409F059C007C02D +:10152000C6010E940C6A892B09F02BC118C6D6018E +:1015300018968C91873009F420C360E0C6010E94A0 +:101540000222853009F008C663E177E087E698E07B +:101550000E949B5F4AE050E065E070E087E698E01B +:101560000E94656087E698E00E94BE60F8C5F601BB +:101570008085873009F401C360E0C6010E94022221 +:10158000082F10E0863091F462E077E087E698E07B +:101590000E949B5F4AE050E0B80187E698E00E9415 +:1015A000656087E698E00E94BE60EBC06AEE76E078 +:1015B00087E698E00E949B5F4AE050E0B80187E62A +:1015C00098E00E94656087E698E00E94BE60C4C50E +:1015D000F2E04F16510409F4D4C04CF44114510404 +:1015E00089F031E04316510409F014C1A7C085E029 +:1015F0004816510409F4E6C096E04916510409F46E +:1016000085C008C1D60118968C91853021F06EE016 +:10161000C6010E94DB21F601808590E08A309105A9 +:1016200008F069C0FC018827EE58FF4F8F4F0C94DB +:10163000C7838C859D85892B49F4F3E02F163104EF +:1016400091F48FE7D60118968C9304C0B3E02B1663 +:10165000310449F44A855B850C851E85B801C601B5 +:101660000E94512118C0C6010E9489217B01182FB8 +:101670000A85AB01682F702FC6010E945121EA86AE +:10168000FB86812F110F990B9D878C87802F000F70 +:10169000990B9F878E87E889EE2351F101E09E0127 +:1016A000265F3F4F43E050E060E070E0C6010E94DB +:1016B00008691EC04A855B850C851E85B80114C06B +:1016C000F889FF2359F001E09E01265F3F4F41E07A +:1016D00050E060E070E0C6010E9408694A855B85C1 +:1016E000052E000C660B770BC6010E94512103C02A +:1016F00013E0212E312C0E946F6D6093E7057093EB +:10170000E8058093E9059093EA0584C0C6010E942C +:101710000C6A892B39F46DED76E087E698E00E943B +:101720009B5F0CC06DEC76E087E698E00E949B5FC3 +:10173000D60118968C91873009F00EC5F601808588 +:10174000813009F036C560E0C6010E940222813076 +:1017500009F02FC50E946F6D0091E7051091E80513 +:101760002091E9053091EA05DC01CB01801B910B4A +:10177000A20BB30B853F9140A105B10508F0F3C45E +:1017800018C560E0C6010E9402228530B9F01B86B0 +:101790001A861D861C861F861E8662E0C6010E9470 +:1017A000DB21F889FF2351F000E020E030E040E049 +:1017B00050E062E070E0C6010E940869A2E04A2E93 +:1017C000512C28C0C6010E940C6A1816190614F57F +:1017D0001B861A861D861C861F861E8660E0C60133 +:1017E0000E940222863011F462E001C065E0C60169 +:1017F0000E94DB2100E020E030E040E050E062E0C9 +:1018000070E0C6010E9408696CE876E087E698E01F +:101810000E949B5FEC84FD84C7010F2C000CAA0B77 +:10182000BB0B8E8B9F8BA88FB98FAE85BF85BB8B73 +:10183000AA8B2FEF30E00E94DE83F4E68F2E912CEE +:10184000A12CB12CA50194010E9472838901F6019B +:101850008085843009F47FC150F4813009F44CC094 +:10186000F0F1823089F1833009F4F1C172C488301B +:1018700009F4A1C338F4863009F4A7C1873009F010 +:1018800068C47BC1893009F405C38F3709F061C48E +:1018900060E0C3010E943A4560E0C30101960E94E6 +:1018A0003A4560E0C30102960E943A45AE85BF8585 +:1018B0002FEF30E00E94DE83A50194010E94728325 +:1018C000622FC301039644C12FEF30E0D7010E947D +:1018D000DE83A50194010E947283D22E78C0AA856E +:1018E000BB852FEF30E00E94DE83A50194010E94AA +:1018F0007283622FC3012CC193012D5F3F4F2901D9 +:1019000032E3E316F1040CF049C082E390E08E1953 +:101910009F09EA89FB898E9FD0018F9FB00D9E9F02 +:10192000B00D11242FEF30E00E94DE8328E833E170 +:1019300040E050E00E947283622FC2010E943A454B +:10194000EC84FD842EEF31E0D7010E94DE83E2E3D8 +:101950002E2E312C412C512CA20191010E94728318 +:10196000AE85BF850E94D683A50194010E94728333 +:1019700049015A019701A5E6BFEF0E94D683A20153 +:1019800091010E947283DD24DA94D20E84010F3F0C +:101990001105E9F0E4F00FEF10E019C02E893F893E +:1019A000488D598D2253310941095109ABE9B0E005 +:1019B0000E94918322E330E040E050E00E94728375 +:1019C00064E6D62ED20E60E0C2010E943A45AA8596 +:1019D000BB852FEF30E00E94DE832DE631E040E052 +:1019E00050E00E947283322F122F1F71110F110FBE +:1019F000812F880F15E5682F619F060E60E0611D3D +:101A00001124922F9074207237FD24C091110CC0C4 +:101A1000211104C0862F8095F62E14C055E5F52EB1 +:101A2000F60E10E06BEA36C021110FC0182F3AEA0B +:101A3000139F010E10E0111D11248BEA811B4AEA4D +:101A4000F42EF60E682F10E025C080E0F62EF094FC +:101A5000162F0FC0911112C021110DC0182F2AEAA4 +:101A6000129F010E10E0111D11243BEAF32EF11A12 +:101A70001B5A60E00FC0162F10950BC0211104C037 +:101A800085E5860F1BEA03C08AEA860F90E0161BE5 +:101A9000682FF12CFFEFDF1609F42AC0DD2009F4CE +:101AA00023C0662329F02D2D629F060E60E0611D84 +:101AB000FF2039F03F2D2D2D329F030E30E0311DD8 +:101AC000F32E112329F03D2D139F010E10E0111D5F +:101AD00011242D2D2095229F020E20E0211D11247E +:101AE000620FF20E120F04C01FEFFF24FA946FEF83 +:101AF0000F3F09F422C020E0002321F0009F212D98 +:101B000009F02F5F2223B1F0662321F0629F060EB9 +:101B100060E0611DFF2031F03F2D329F030E30E069 +:101B2000311DF32E112321F0129F010E10E0111D23 +:101B3000112403C010E0F12C60E0C3010E943A457B +:101B40006F2DC30101960E943A45612FC301029691 +:101B50000E943A45FEC2E480F580F7018085853019 +:101B600009F0F7C2C7010E940F35A82EB12CF2E090 +:101B7000AF16B1040CF03FC4ECC2D6011496ED913F +:101B8000FC9115978085853009F0E3C2C680D78027 +:101B9000C114D10409F4DDC2F60161857285CE015C +:101BA00001960E947A63EC88FD8808899E01265F71 +:101BB0003F4FA101B201CE0101960E94D709D60183 +:101BC0001296CD90DC901397E3CF77FE06C0719408 +:101BD0006194710801E010E002C000E010E0F62C12 +:101BE00061E0862D0E94F96C012B69F0B1E04B1683 +:101BF000510429F061E0E6E04E16510409F460E07A +:101C0000062F10E011C0F1E04F16510451F091E0A1 +:101C100080E026E04216510409F090E0092F182FC9 +:101C200002C001E010E0602F8F2D0E94FD3A67E8AE +:101C300076E087E698E00E949B5F4AE050E0B301BF +:101C400087E698E00E94656065E876E013C177FE5C +:101C500006C071946194710801E010E002C000E0D8 +:101C600010E0F62C61E0862D0E94F96C8091A100B5 +:101C7000887F8093A10080919100887F809391005C +:101C80008091A10082608093A10080919100826088 +:101C900080939100AA85BB85012B99F0CD01BB0FE4 +:101CA000AA0BBB0B9C01AD01245631094109510916 +:101CB000AFEFB0E00E9491832CE93FEF4FEF5FEF71 +:101CC00008C02FEF30E00E94DE8324E630E040E0E1 +:101CD00050E00E947283890161E08F2D0E94F96CAF +:101CE0000115110509F4B1C00F3F110509F4AFC08A +:101CF000F301FF27EA56F54FE4918E2F90E0FC01A7 +:101D00003197E231F10508F09DC08827E458FF4F74 +:101D10008F4F0C94C78384B5806884BD07BD9BC07A +:101D200084B5806284BD08BD96C0809180008068C3 +:101D30008093800010938900009388008CC080916C +:101D4000800080628093800010938B0000938A0053 +:101D500082C08091800088608093800010938D0005 +:101D600000938C0078C08091B00080688093B000B0 +:101D70000093B30070C08091B00080628093B00087 +:101D80000093B40068C080919000806880939000B8 +:101D900010939900009398005EC08091900080623B +:101DA0008093900010939B0000939A0054C0809100 +:101DB000900088608093900010939D0000939C0099 +:101DC0004AC08091A00080688093A0008091A0000C +:101DD0008F7B8093A0001093A9000093A8003BC0C4 +:101DE0008091A00080628093A0001093AB000093CC +:101DF000AA0031C08091A00088608093A000109359 +:101E0000AD000093AC0027C08091200180688093D2 +:101E1000200110932901009328011DC08091200109 +:101E200080628093200110932B0100932A0113C03C +:101E30008091200188608093200110932D010093F0 +:101E40002C0109C00038110514F460E001C061E004 +:101E50008F2D0E94FD3A60E876E087E698E00E94C8 +:101E60009B5F4AE050E0B30187E698E00E9465601E +:101E70006EE776E087E698E00E949B5F4AE050E0DC +:101E8000B80187E698E00E94656087E698E00E94C6 +:101E9000BE605FC11A8560E070E0C6010E94AD219E +:101EA000082FF92E69E676E087E698E00E949B5FAE +:101EB0004AE050E0602F7F2D87E698E00E94656041 +:101EC00067E676E087E698E00E949B5F612F012E2F +:101ED000000C770B4AE050E087E698E00E946560CE +:101EE00087E698E00E94BE608091EC0B9091ED0B2C +:101EF000892B89F064EB72E187E698E00E949B5F92 +:101F0000642D6064C6010E94DB21412F110F550B27 +:101F1000660B770BB6C081E090E09093ED0B809359 +:101F2000EC0B26E040E855E260E070E08AEC97E0D8 +:101F30000E94F3310093C1098AEC97E09093C009A5 +:101F40008093BF091092CC0A1092CE0A1092CD0A4B +:101F500080ED97E09093470A8093460A1092490AD1 +:101F60001092480A112339F085E090E090934B0AD3 +:101F700080934A0A04C010924B0A10924A0A86E0E3 +:101F80000E94583262E370E080E090E00E94356D7C +:101F900082ED97E09093470A8093460A1092490A8F +:101FA0001092480A34E61302A001112450934B0A00 +:101FB00040934A0AC7C00480F581E02D618572858F +:101FC000CE0101960E947A63CE0101960E944421BF +:101FD000882309F4BEC08985893009F0BAC0142D60 +:101FE000EA8460E070E0CE0101960E94AD21082FE6 +:101FF000F92E65E776E087E698E00E949B5F4AE06D +:1020000050E0602F7F2D87E698E00E94656063E7CF +:1020100076E087E698E00E949B5F6E2D0E2C000C08 +:10202000770B4AE050E087E698E00E9465606DE635 +:1020300076E087E698E00E949B5F4AE050E0642DDE +:10204000042C000C770B87E698E00E94656087E619 +:1020500098E00E94BE608091EC0B9091ED0B892B73 +:10206000A1F064EB72E187E698E00E949B5F642D2B +:102070006064C6010E94DB214E2DEE0C550B660BF1 +:10208000770BC6010E94512164C081E090E09093DB +:10209000ED0B8093EC0B26E040E855E260E070E049 +:1020A0008AEC97E00E94F3310093C1098AEC97E033 +:1020B0009093C0098093BF091092CC0A1092CE0A67 +:1020C0001092CD0A123009F4FBC1153009F4F8C1A1 +:1020D0006E2DEE0C770B880B990B0E94158522E56F +:1020E00038EB42E152E40E94FA8320E030E040E223 +:1020F00051E40E94CA852DEE3EE94CE35EE30E9466 +:102100006B846B017C0120E030E0A9010E94C58551 +:1021100020E030E040E05FE387FDCDC1C701B601BC +:102120000E94FA830E94DD8483ED97E09093470A32 +:102130008093460A1092490A1092480A70934B0AFB +:1021400060934A0A86E00E9458321092ED0B10927A +:10215000EC0BB9C18FEF01C08DEF9FEFB4C14424E8 +:102160004394512CEBCA60EC76E087E698E00E943D +:102170009B5F8FE7F60180871D861C8684E690E0D2 +:102180009F878E874A855B8560E074E6C6010E9462 +:102190005121F889FF2309F43DCB00E09E01265F21 +:1021A0003F4F43E050E060E070E0C6010E940869E4 +:1021B00031CB642DC6010E94DB21C6010E9489211A +:1021C000F62EE72E8C01D60118962C91233008F0BC +:1021D00000C1213070F46A307105810591052CF43D +:1021E000B2E3FB2EE12C00E010E04F2D5E2D602FBE +:1021F0000AC0611571058105910519F01A300CF4BA +:1022000012E3AB01682F712FC6010E9451214F2D9F +:102210005E2DB8011416150616061706E4F5D6014C +:1022200018968C9190E08A30910538F5FC0188274A +:10223000E257FF4F8F4F0C94C783C7019A878B8754 +:10224000802F000F990B9D878C87812F110F990B81 +:102250009F878E8753C05B874A8701E07FC05B877B +:102260004A87B889BB2309F4D5CA00E020E030E0F2 +:1022700040E050E061E070E00AC0E889EE2309F434 +:10228000ACC000E020E030E040E050E0B201C60128 +:102290000E940869A2C02AE030E087E698E00E9428 +:1022A0001D6062EA76E087E698E00E949B5FD601B7 +:1022B00018968C918530C9F0A0F48150823008F0D6 +:1022C00041C084E690E09B878A871D861C869F8795 +:1022D0008E8744E650E060E074E6C6010E9451211A +:1022E0000DC08630C9F0883069F584E190E09B87A5 +:1022F0008A8744E150E060E070E02CC001E09E017C +:10230000265F3F4F43E050E060E070E0C6010E946E +:10231000086903E010E02EC084E690E09B878A877E +:1023200044E650E060E070E0C6010E945121B889A7 +:10233000BB23F1F000E020E030E040E050E061E05D +:1023400070E013C084E690E09B878A8744E650E003 +:1023500060E070E0C6010E94512100E09E01265F0E +:102360003F4F41E050E060E070E0C6010E94086924 +:1023700001E010E05E01EAE0AE0EB11CE12CF12CB0 +:10238000D5018D909D905D0167E976E087E698E044 +:102390000E949B5F4AE050E0B70187E698E00E9408 +:1023A000656065E976E087E698E00E949B5F4AE019 +:1023B00050E0B40187E698E00E94656087E698E007 +:1023C0000E94BE60BFEFEB1AFB0A0E151F05C1F697 +:1023D00004C0243009F4FFCE1ACFF6018085813085 +:1023E00009F018CA8C859D85892B09F013CA8FE7DF +:1023F000F60180870FCA60E0C7010E947431DC01DA +:1024000019968D919C911A97998B888B61E0C701E1 +:102410000E947431FC0141845284638474842A8450 +:102420003B84F2E0AF16B104E9F162E0C7010E941B +:102430007431DC0119960D911C911A97B3E0AB161B +:10244000B10491F163E0C7010E947431FC01818401 +:102450009284F4E0AF16B10451F064E0C7010E9429 +:102460007431DC011996AD90BC901A9703C032E02C +:10247000A32EB12C8114910461F09401D1010E942A +:10248000D68324E630E040E050E00E947283790178 +:1024900001C071019501A20168897989C6010E9474 +:1024A000966357CE0FEF1FEF8FE3882E912C92E0AB +:1024B000A92EB12CE2CFC701B6010E94F98332CE1A +:1024C00060E070E031CE69960FB6F894DEBF0FBEC3 +:1024D000CDBFDF91CF911F910F91FF90EF90DF90D3 +:1024E000CF90BF90AF909F908F907F906F905F90B4 +:1024F0004F903F902F9008954F925F926F927F92EE +:102500008F929F92AF92BF92CF92DF92EF92FF9203 +:102510000F931F93CF93DF93CDB7DEB7C15AD1404E +:102520000FB6F894DEBF0FBECDBFE0919705F091D6 +:1025300098053B96E831F10508F0B8C38827E856BE +:10254000FF4F8F4F0C94C7830E946F6D0091720BE9 +:102550001091730B2091740B3091750B06171707B0 +:102560002807390708F0A2C300E213E0CF56DE4F78 +:1025700019830883C159D140CD56DE4F1882198284 +:102580001A821B82C359D140CF57DE4F198308836B +:10259000C158D140CD57DE4F188219821A821B8252 +:1025A000C358D140CF59DE4F19830883C156D1405B +:1025B000CD59DE4F188219821A821B82C356D14030 +:1025C000CF5BDE4F19830883C154D140CD5BDE4F12 +:1025D000188219821A821B82C354D14067EC77E0BB +:1025E00087E698E00E949B5FBE016F567E4F86E0B3 +:1025F00090E00E94F237892B09F467C16BE174E027 +:1026000087E698E00E94C2601A830983CD56DE4FA8 +:1026100088819981AA81BB81C359D1408B839C83D6 +:10262000AD83BE83CE0101960E94AC5ABE016F57A6 +:102630007E4F8AE090E00E94F237892B09F42EC188 +:1026400061E374E087E698E00E94C2601A83098320 +:10265000CD57DE4F88819981AA81BB81C358D14073 +:102660008B839C83AD83BE83CE0101960E94AC5ABE +:10267000BE016F597E4F8EE090E00E94F237892BA9 +:1026800009F4DFC067E374E087E698E00E94C26067 +:102690001A830983CD59DE4F88819981AA81BB8134 +:1026A000C356D1408B839C83AD83BE83CE010196FC +:1026B0000E94AC5ABE016F5B7E4F82E190E00E94A7 +:1026C000F237892B09F477C06CE374E087E698E071 +:1026D0000E94C2601A830983CD5BDE4F8881998195 +:1026E000AA81BB81C354D1408B839C83AD83BE83BD +:1026F000CE0101960E94AC5A1A830983CD5BDE4F4E +:1027000088819981AA81BB81C354D1408B839C83EA +:10271000AD83BE83CF57DF4F19830883C158D040A4 +:10272000CD59DE4F88819981AA81BB81C356D140A2 +:10273000CD57DF4F88839983AA83BB83C358D0408A +:10274000CF53DF4F19830883C15CD040CD57DE4F94 +:1027500088819981AA81BB81C358D140CD53DF4F75 +:1027600088839983AA83BB83C35CD040CF5FDE4F4D +:1027700019830883C150D140CD56DE4F888199819D +:10278000AA81BB81C359D140CD5FDE4F8883998335 +:10279000AA83BB83C350D1409E012F5F3F4FAE0140 +:1027A0004F575F4FBE016F537F4FCE018F5F9E4FDC +:1027B0000E94BC3B85C01A830983CD59DE4F8881B6 +:1027C0009981AA81BB81C356D1408B839C83AD8301 +:1027D000BE83CF57DF4F19830883C158D040CD57F0 +:1027E000DE4F88819981AA81BB81C358D140CD57E2 +:1027F000DF4F88839983AA83BB83C358D040CF53CC +:10280000DF4F19830883C15CD040CD56DE4F8881ED +:102810009981AA81BB81C359D140CD53DF4F8883B1 +:102820009983AA83BB83C35CD040AE014F5F5F4FE7 +:10283000BE016F577F4FCE018F539F4F0E94083CC0 +:102840003FC01A830983CD57DE4F88819981AA81C1 +:10285000BB81C358D1408B839C83AD83BE83CF574C +:10286000DF4F19830883C158D040CD56DE4F888191 +:102870009981AA81BB81C359D140CD57DF4F88834D +:102880009983AA83BB83C358D040BE016F5F7F4F3B +:10289000CE018F579F4F0E945A3C12C01A83098362 +:1028A000CD56DE4F88819981AA81BB81C359D14021 +:1028B0008B839C83AD83BE83CE0101960E94A53C91 +:1028C00087E698E00E94BE600BC163E474E087E68F +:1028D00098E00E94C2600FB6F894A89580916000BD +:1028E000886180936000109260000FBE809149065D +:1028F000811107C08EE296E00E94074981E0809333 +:1029000049068BEE95E090931109809310090E947F +:102910002C3BCE0101960E94425789819A810E94E8 +:10292000FC4246E050E06DE47BE089E090E00E94EC +:10293000E52980E293E09A8389831B821C821D82B1 +:102940001E82CE0103960E94E6420E94FB428091C5 +:10295000100990911109DC0192961D921D921D9211 +:102960001C929597FC0116A217A210A611A69A9682 +:102970001D921D921D921C929D9740EE5EE260E0BA +:1029800070E046AB57AB60AF71AF40EA5FE060E02C +:1029900070E0DA964D935D936D937C93DD973E9650 +:1029A00024E1DF011D922A95E9F726E0EDE4FBE042 +:1029B000DC01189601900D922A95E1F7FC01EE5B7F +:1029C000FF4F10820E9425368C01019709F04AC002 +:1029D000CE0101960E94425789819A810E94FC4251 +:1029E0006091100970911109625F7F4FCE010196CD +:1029F0000E94C460CE0103960E94E64260911009D5 +:102A0000709111096A5E7F4FCE0101960E94C460E9 +:102A1000CE0103960E94F442609110097091110951 +:102A20006E5E7F4FCE0101960E94C460CE01039678 +:102A30000E94ED420E94FB426091100970911109C1 +:102A4000625E7F4FCE0101960E94C4608B819C81A3 +:102A5000AD81BE8180930C0990930D09A0930E095E +:102A6000B0930F0999E288E10FB6F894A895809386 +:102A700060000FBE90936000A895012B19F565E8E2 +:102A800077E087E698E00E949B5F66E577E087E65F +:102A900098E00E949B5F86EF9FEF9093980580934C +:102AA00097050E946F6DDC01CB01805A9541AF4FB5 +:102AB000BF4F8093720B9093730BA093740BB093E2 +:102AC000750BF4C066E477E087E698E00E949B5FB0 +:102AD000CE0101960E94025BCE0101960E94AC5A83 +:102AE00081E090E0DFC08091510681111AC060E062 +:102AF00070E080E090E00E947250D4C00E946F6D40 +:102B00000091720B1091730B2091740B3091750B27 +:102B10000617170728073907D0F10E947F64811133 +:102B2000C5C082E090E0BEC0A895CF55DE4F1882A8 +:102B3000C15AD140FE01EF56FE4F119211928EE024 +:102B4000DF011D928A95E9F70091580B1091590BFE +:102B50000115110529F0C8010E940F35811138C2F5 +:102B60000E947F648111A2C00091580B1091590BF3 +:102B70000115110509F49AC0C8010E940F35E82E0D +:102B8000F12CB2E0EB16F1040CF03FC28FC020E054 +:102B900030E043E050E060E48E010F5F1F4FC8015A +:102BA0000E94332D6EE175E0C8010E941288F80181 +:102BB00001900020E9F7CF01801B910B0896813826 +:102BC000910538F50E947F64882319F18091A4094A +:102BD0009091A509019611F481E090E09093A509E8 +:102BE0008093A4098091A4099091A5099093290943 +:102BF00080932A0947E050E064E279E0C8010E942E +:102C0000B864AC014550510964E279E082EA0E945F +:102C1000D86483E090E090939805809397056DE9E0 +:102C200079E087E698E00E949B5F40C00E946F6D4C +:102C30000091720B1091730B2091740B3091750BF6 +:102C4000061717072807390788F51092980510927C +:102C500097052CC00E946F6D0091720B1091730B41 +:102C60002091740B3091750B061717072807390749 +:102C700008F457CF1BC00E940F50892B09F051CF89 +:102C80000E946F6DDC01CB0188579C4EAF4FBF4F48 +:102C90008093720B9093730BA093740BB093750B8E +:102CA00086EF9FEF90939805809397050FB6F89461 +:102CB000A895809160008861809360001092600008 +:102CC0000FBE8091970590919805181619060CF083 +:102CD00059C100911009109111090115110509F44C +:102CE00051C10E946F6D4B015C017801FEE3EF0E54 +:102CF000F11CF70180819181A281B381A50194012A +:102D0000281B390B4A0B5B0BCA01B901683E33E043 +:102D100073078105910508F446C028EE33E040E0D2 +:102D200050E00E945083861A970AA80AB90AD70170 +:102D30008D929D92AD92BC921397F80186A597A5AE +:102D4000A0A9B1A969017A01CC0CDD1CEE1CFF1C05 +:102D50008C159D05AE05BF0528F416A617A610AA6A +:102D600011AA09C0821B930BA40BB50BF80186A70F +:102D700097A7A0ABB1ABF80182A993A9A4A9B5A963 +:102D80008C159D05AE05BF0528F412AA13AA14AA36 +:102D900015AA09C0821B930BA40BB50BF80182ABDB +:102DA00093ABA4ABB5ABF80186A597A5A0A9B1A933 +:102DB000892B8A2B8B2B69F4EE5BFF4F808183304C +:102DC00041F484E08083C8010E94253601967C018D +:102DD00002C0E12CF12CF80182A993A9A4A9B5A9FC +:102DE000892B8A2B8B2BA1F4EE5BFF4F80818330E4 +:102DF00011F081110DC01082F8013E9684E1DF01CF +:102E00001D928A95E9F7C8010E94253603967C0138 +:102E1000B2E0EB16F10429F0E4E0EE16F10409F05B +:102E20004AC0CE0101960E94425789819A810E9430 +:102E3000FC426091100970911109625F7F4FCE01D1 +:102E400001960E94C460CE0103960E94E642609102 +:102E50001009709111096A5E7F4FCE0101960E94A0 +:102E6000C460CE0103960E94F442609110097091F3 +:102E700011096E5E7F4FCE0101960E94C460CE01A3 +:102E800003960E94ED420E94FB42609110097091EE +:102E90001109625E7F4FCE0101960E94C4608B8152 +:102EA0009C81AD81BE8180930C0990930D09A09304 +:102EB0000E09B0930F09F3E0EF16F10409F451C0C5 +:102EC00064F431E0E316F10451F142E0E416F10458 +:102ED00009F058C064E679E049C054E0E516F10411 +:102EE00009F442C085E0E816F10409F04BC065E939 +:102EF00079E087E698E00E949B5F87E698E00E9471 +:102F0000BE600E947F6481110E942F5B0E946F6DE2 +:102F1000DC01CB01805D9A48AF4FBF4F13C061E821 +:102F200079E087E698E00E949B5F0E947F648111B0 +:102F30000E942F5B0E946F6DDC01CB0188519C4F7A +:102F4000AF4FBF4F8093720B9093730BA093740B92 +:102F5000B093750B86EF9FEF90939805809397053C +:102F600011C061E579E0DDCF65E379E087E698E0BF +:102F70000E949B5FCE0101960E94025BCE010196EA +:102F80000E94AC5A99E288E10FB6F894A895809314 +:102F900060000FBE90936000809197059091980516 +:102FA000CF55DE4F0FB6F894DEBF0FBECDBFDF9119 +:102FB000CF911F910F91FF90EF90DF90CF90BF9036 +:102FC000AF909F908F907F906F905F904F900895FB +:102FD00060E0C8010E947431DC0119960D911C91CA +:102FE0001A9710935B0700935A0768E279E087E627 +:102FF00098E00E949B5FB80187E698E00E94C2605B +:1030000087E698E00E94BE60ABCD61E0C8010E94F7 +:103010007431FC0161847284F2E0EF16F104A9F0CE +:1030200062E0C8010E947431FC0181849284F3E063 +:10303000EF16F10471F063E0C8010E947431DC0105 +:1030400019960D911C911A9707C08BE5882E87E081 +:10305000982E8E010F551E4F40E150E0BE016F5675 +:103060007E4F86E390E00E94CB4F892B51F4B5E070 +:10307000EB16F1040CF01CC3FE01EF56FE4F7F016E +:1030800004C09E012F563E4F79017092B80960929C +:10309000B7099092BA098092B90984E797E69093AC +:1030A000B0098093AF095E013FE7A31A3EEFB30A70 +:1030B00040E150E06BEF78E0C5010E94F17B6E01CA +:1030C0004FE9C41A4EEFD40A20E030E041E050E06E +:1030D00060E2C6010E94332D40E250E064EF78E0E8 +:1030E000C6010E94D37B64ED78E087E698E00E94F9 +:1030F0009B5FB30187E698E00E94C26062ED78E0D2 +:1031000087E698E00E949B5F4AE050E0B40187E6C2 +:1031100098E00E9465606BEC78E087E698E00E949A +:103120009B5FB80187E698E00E94C26066EC78E099 +:1031300087E698E00E949B5FD8018C91811104C0C2 +:10314000E12CF12C00E010E080905A0790905B0792 +:103150000E947F6481113BC16091B7097091B809E9 +:1031600080912209909123094091B9095091BA099F +:10317000DC01ED91FC916115710521F00088F18968 +:10318000E02D16C00684F785E02D20E233E03A8377 +:1031900029834090B3095090B4096090B5097090AC +:1031A000B6094B825C826D827E82BE016F5F7F4F6B +:1031B00019958130910509F003C19093A509809379 +:1031C000A40987E0EAE4F2E0DE01119601900D9295 +:1031D0008A95E1F7FE013196A9E2B9E0CE010896A1 +:1031E00021912D93E817F907D9F70115110529F059 +:1031F000E114F10421F086EF03C086E301C086EB01 +:1032000080933009109231098FE080933209F401E4 +:1032100001900020E9F7CF0188199909409681387B +:10322000910508F0C1C04FE050E064E279E0C401CC +:103230000E94B864F60101900020E9F73197EC197B +:10324000FD09E80FF91F3296E138F10508F0ACC02E +:10325000AC0164E279E0C6010E94B864F501019016 +:103260000020E9F73197EA19FB09E80FF91F3296B8 +:10327000E138F10508F098C0AC0164E279E0C501DD +:103280000E94B8640115110579F1F8010190002040 +:10329000E9F73197E01BF10B9C012E5F3F4FE20FE6 +:1032A000F31FE138F10508F07FC0AC0164E279E07A +:1032B000C8010E94B864E114F104B1F0F701019073 +:1032C0000020E9F73197EE19FF099C012E5F3F4F6F +:1032D000E20FF31FE138F10508F066C0AC0164E2CB +:1032E00079E0C7010E94B864AC014550510964E21D +:1032F00079E080E10E94D8640E946F6D6093A60916 +:103300007093A7098093A8099093A9096093AA09CB +:103310007093AB098093AC099093AD098091220919 +:1033200090912309DC01ED91FC910084F185E02D61 +:103330001995892BC1F40E946F6D0091AA09109113 +:10334000AB092091AC093091AD09DC01CB01801BA8 +:10335000910BA20BB30B88399A43A105B105F0F28A +:103360008CEF9FEF1DC0CE018F579F4F0E94645876 +:103370000497D1F480912709811111C00E946F6DCB +:103380006093AA097093AB098093AC099093AD093F +:103390001092AE091092BE091092BD0918C090E0BB +:1033A0009093BE098093BD098091220990912309D1 +:1033B000DC01ED91FC910488F589E02D19958BC114 +:1033C0008EEF9FEF9093BE098093BD0984C1009159 +:1033D0005A0710915B0768EB78E087E698E00E9457 +:1033E0009B5FB80187E698E00E94C26087E698E09C +:1033F0000E94BE6081E08093510620E030E043E00F +:1034000050E060E4CE018F5F9E4F0E94332D6EE14D +:1034100075E0CE018F5F9E4F0E941288CE018F5FB4 +:103420009E4F0E94B23720E030E042E050E060E47E +:10343000CE018F5F9E4F0E94332D6EE175E0CE016D +:103440008F5F9E4F0E941288BE016F5F7E4F87E69E +:1034500098E00E944056CE018F5F9E4F0E94B23787 +:1034600020E030E041E050E060E4CE018F5F9E4F0D +:103470000E94332D6EE175E0CE018F5F9E4F0E945A +:103480001288BE016F5F7E4F87E698E00E9440562B +:10349000CE018F5F9E4F0E94B237FE01EF53FF4F68 +:1034A000119211921EE3DF01212F1D922A95E9F757 +:1034B0001A821982FE0133968EE7DF011D928A95EA +:1034C000E9F720E030E041E050E060E4CE018F53C6 +:1034D0009F4F0E94332D40E450E064EF78E0CE012E +:1034E0008F539F4F0E94D37B40E850E061E778E024 +:1034F000CE0101960E94F17BBE016F5F7F4FCE012E +:103500008F539F4F0E94916520E030E041E050E0F2 +:1035100060E4CE018F539F4F0E94332D40E450E072 +:103520006BE678E0CE018F539F4F0E94D37B40E83B +:1035300050E061E678E0CE0101960E94F17B40E820 +:1035400050E06EE478E0CE0101960E94D37BBE018C +:103550006F5F7F4FCE018F539F4F0E94916520E098 +:1035600030E041E050E060E4CE018F539F4F0E9475 +:10357000332D40E450E06DE176E0CE018F539F4F54 +:103580000E94D37B40E850E06EE378E0CE010196E4 +:103590000E94F17BBE016F5F7F4FCE018F539F4F23 +:1035A0000E94916520E030E041E050E060E4CE010F +:1035B0008F539F4F0E94332D40E450E067E378E043 +:1035C000CE018F539F4F0E94D37B40E850E061E3D0 +:1035D00078E0CE0101960E94F17BBE016F5F7F4FC4 +:1035E000CE018F539F4F0E949165A091EE0BB09139 +:1035F000EF0B109709F443C0809151029091520251 +:10360000AE014F5B5E4FFA01819391932EE11192CF +:103610002A95E9F79E012F573F4FF9018193919326 +:1036200011921A95E9F716960D911C911797E09053 +:10363000EE0BF090EF0BE114F10471F001151105A0 +:1036400059F0D80118968C918530A9F7C8010E94CD +:103650000F35882381F36DC020E030E041E050E079 +:1036600060E4CE018F539F4F0E94332D40E450E021 +:1036700064ED77E0CE018F539F4F0E94D37B84E0AF +:1036800090E090939805809397050E946F6DDC0100 +:10369000CB0188579C4EAF4FBF4F8093720B9093D6 +:1036A000730BA093740BB093750B6BE978E0B9CAF8 +:1036B00064E08091580B9091590B0E947431DC01A9 +:1036C0001996ED90FC901A9768E079E087E698E00B +:1036D0000E949B5FDACC0091BD091091BE096FE892 +:1036E00078E087E698E00E949B5F4AE050E0B801EE +:1036F00087E698E00E94656067E778E087E698E0F3 +:103700000E949B5F87E698E00E94BE600E946F6DFA +:10371000DC01CB0188579C4EAF4FBF4F8093720B9B +:103720009093730BA093740BB093750B8CE090E0A7 +:10373000B9CA60E0C8010E947431FC01818592859C +:10374000A385B4858A30910508F463C020E030E099 +:1037500041E050E060E4CE018F539F4F0E94332D33 +:10376000F8016081718140E450E0CE018F539F4F9A +:103770000E94388867E174E0CE018F539F4F0E940A +:10378000128840E450E063EE77E0CE018F539F4F04 +:103790000E94D37BBE016F5B7E4FCE018F539F4F44 +:1037A0000E949165CF57DF4F8881C158D040882350 +:1037B00061F120E030E041E050E060E4CE018F5361 +:1037C0009F4F0E94332DD8016D917C9140E450E0D1 +:1037D000CE018F539F4F0E94388867E174E0CE017D +:1037E0008F539F4F0E94128840E450E06BED77E0CA +:1037F000CE018F539F4F0E94D37BBE016F577F4FE7 +:10380000CE018F539F4F0E949165F8010281138171 +:103810000ECFFC0140E250E08827E055FF4F8F4F6C +:103820000C94C7836BE278E0CE018F5B9E4F0E94C1 +:10383000F17BCF57DF4F1882C158D04087CF66E267 +:1038400078E0CE018F5B9E4F0E94F17B40E450E018 +:1038500065E078E017C06FEF77E0CE018F5B9E4F99 +:103860000E94F17B40E450E06BEF77E00BC063EF28 +:1038700077E0CE018F5B9E4F0E94F17B40E450E0E9 +:103880006DEE77E0CE018F579F4F0E94F17B5ECFA8 +:10389000BC018230910508F40895613E8EE17807FD +:1038A00048F49B0195E0369527959A95E1F748E015 +:1038B000420F01C04FEF91E0242F30E0290F311D5E +:1038C00035952795229FF001239FF00DF00D1124CF +:1038D0006E177F0718F44FEF420F04C02F3F39F0E7 +:1038E00091E0920F491740F78FEF890F08958FEFFE +:1038F0000895CF93DF93009709F447C0FC0120811E +:10390000222309F442C0EC0163EE79E00E94CA7BF5 +:10391000892BF1F16EED79E0CE010E94CA7B892BF3 +:10392000D1F169ED79E0CE010E94CA7B892BB1F11A +:1039300060ED79E0CE010E94CA7B892B91F16AEC9F +:1039400079E0CE010E94CA7B892B71F166EC79E0A7 +:10395000CE010E94CA7B892B51F161EC79E0CE0146 +:103960000E94CA7B892B31F161E07AE0CE010E948E +:10397000CA7B892B11F16DEF79E0CE010E94CA7BE1 +:10398000892BF1F489E090E01DC080E090E01AC03E +:1039900081E090E017C082E090E014C083E090E006 +:1039A00011C084E090E00EC085E090E00BC086E09E +:1039B00090E008C087E090E005C088E090E002C099 +:1039C0008FEF9FEFDF91CF9108952F923F924F920B +:1039D0005F926F927F928F929F92AF92BF92CF929F +:1039E000DF92EF92FF920F931F93CF93DF93CDB7A8 +:1039F000DEB72A970FB6F894DEBF0FBECDBF5C01CD +:103A00006B01042F7901672B09F45BC02115310587 +:103A1000F1F0D9018C918823D1F06FE270E0C901F7 +:103A20000E941D88009739F0FC011192CF010E947D +:103A3000791C4C0102C0812C912CC7010E94791C79 +:103A40007C01019731F08A948928D1F502C0E12CDC +:103A5000F12C60E47AE0C6010E94CA7B892B09F44C +:103A6000C1C06CE37AE0C6010E94CA7B892B09F4CD +:103A700097C067E37AE0C6010E94CA7B892B21F5D3 +:103A800043E0842E912C63E47AE087E698E00E947C +:103A90009B5F4AE050E0B40187E698E00E946560D1 +:103AA00087E698E00E94BE60BFEF8B169B0611F080 +:103AB0000CF0A8C0EEEF8E16EFEF9E060CF496C049 +:103AC00084C280E090E081C260E37AE0C6010E9497 +:103AD000CA7B892B09F454C06BE27AE0C6010E94CC +:103AE000CA7B892B09F450C067E27AE0C6010E94C4 +:103AF000CA7B892B09F44CC062E27AE0C6010E94BD +:103B0000CA7B892B09F448C06DE17AE0C6010E94A6 +:103B1000CA7B892B09F466C067E17AE0C6010E947E +:103B2000CA7B892BE9F16EE07AE0C6010E94CA7B6C +:103B3000892BD1F165E07AE0C6010E94CA7B892B0E +:103B4000B9F1D6018C918D32B9F190ED980F9A3080 +:103B500098F18B37A1F18332B9F143E050E061E095 +:103B60007AE0C6010E94E37B892B99F143E050E0A3 +:103B70006DEF79E0C6010E94E37B892B79F524C0C3 +:103B800034E0832E912C7FCF25E0822E912C7BCFA9 +:103B900096E0892E912C77CF87E0882E912C73CFD9 +:103BA00012E0812E912C6FCFB8E08B2E912C6BCF31 +:103BB000A9E08A2E912C67CF812C912C64CFFEEF47 +:103BC0008F2E99249A945FCFEDEF8E2E99249A949C +:103BD0005ACF7CEF872E99249A9455CF88248A94C3 +:103BE000982C51CF88248394912C4DCFFCEF8F16C5 +:103BF000FFEF9F06E1F02DEF82162FEF920609F4FA +:103C00005BC0D7C18114910491F031E08316910417 +:103C100009F0CFC1D501ED91FC910190F081E02D2B +:103C200020E030E040E050E061E070E0BFC1CE0154 +:103C300001962C01812C912C182F5A863401AFEF5C +:103C40006A1A7A0A4301F60180818823C9F06F015C +:103C50008191882329F08D3219F080538A30B8F78A +:103C6000C6010E94A37B1C016CE270E0C6010E94A9 +:103C70001D886C01892B39F0FFEFCF1ADF0A03C0D2 +:103C800080E090E001C0C101D2018D939D932D0190 +:103C9000C114D10439F093E06916710479F643E058 +:103CA000842E912CD501ED91FC910190F081E02DB5 +:103CB000212F3A85A40178C1CE0107969E01275F86 +:103CC0003F4F3F932F93215031093F932F939F9361 +:103CD0008F938FE594E09F938F93DF92CF920E9412 +:103CE000D1880FB6F894DEBF0FBECDBF039709F0A1 +:103CF000E7CE1F8188858984912F811708F4982F3A +:103D0000C82C981508F4C92E1C19982E9C188C18CC +:103D10009C2D90959F3F39F080E090950E94481C23 +:103D2000D82ED09402C0DD24DA94892D90E0810F42 +:103D3000911D880D911D892B29F4CD2CC094D12C77 +:103D400010E0FFC0FFEFDF16F9F0D11002C0DD2454 +:103D5000D3944D2C512C612C712C6FEF7FEF80E0B0 +:103D600090E0A30192010E947283A12FB0E00E9413 +:103D70009183172FA92DB0E00E949183972EA82D33 +:103D8000B0E00E949183872E692C712C610E711C0A +:103D9000680C711C2FEF62167104FCF4611471043D +:103DA00019F466246394712C930140E050E06FEFA6 +:103DB0007FEF80E090E00E947283A12FB0E00E942C +:103DC0009183172FA92DB0E00E949183972EA82DE3 +:103DD000B0E00E949183872E05C03FEF6316710407 +:103DE00009F06CF42C2D362D230F08F42FEF922FB1 +:103DF0002F3F29F080E00E94481CC82E02C0CC242E +:103E0000CA94292D981408F4282D211708F4212F7D +:103E100021132FC091100DC0122F20E8121B08F49F +:103E200010E020E6129F010E10E0111D1124105326 +:103E300087C0892D90E0422F50E0481B590B841712 +:103E4000950744F4192D20E6129F010E10E0111D74 +:103E5000112476C016E5190D121B24E0121B08F47C +:103E600010E020E6129F010E10E0111D1124105EDB +:103E700067C092123AC081101AC02BEA722F711BD0 +:103E800008F470E0172F3FE2139F010E10E0111DA0 +:103E90001124792D721B08F470E020E6729F070E42 +:103EA00070E0711D1124170F1695105C49C0282D64 +:103EB00030E0892D90E0821B930B182D28173907CD +:103EC00044F420E6129F010E10E0111D1124105A37 +:103ED00037C025E5121B08F410E020E3129F010E05 +:103EE00010E0111D112410582BC011110DC0182DF8 +:103EF00020E8121B08F410E020E3129F010E10E0EE +:103F0000111D112418571CC0212F30E0882D90E07E +:103F1000821B930B2817390744F420E6129F010EE9 +:103F200010E0111D112410560BC025E5121B08F4DA +:103F300010E020E6129F010E10E0111D1124105414 +:103F40001F5F212F30E0ADE6B1E00E94A483412C39 +:103F5000512C32014A94A30192010E9472833A8348 +:103F600029832D2D30E0A4E6B0E00E94A483A301B4 +:103F700092010E9472833C832B832C2D30E0A4E6B7 +:103F8000B0E00E94A483A30192010E9472833E8349 +:103F90002D83D501ED91FC910190F081E02D9E01E2 +:103FA0002F5F3F4F43E050E060E070E0C50119959E +:103FB0000CC0D501ED91FC910190F081E02D20E045 +:103FC00030E040E050E0B401F1CF2A960FB6F8940B +:103FD000DEBF0FBECDBFDF91CF911F910F91FF903C +:103FE000EF90DF90CF90BF90AF909F908F907F9099 +:103FF0006F905F904F903F902F9008958F929F9277 +:10400000AF92BF92CF92DF92EF92FF920F931F93E6 +:10401000CF93DF93E091EE0BF091EF0B309709F423 +:1040200068C0812EC02F932EC22EA52ED42EB72E5F +:10403000D62FBC01CF010E9481318C01009709F479 +:104040005BC0DC0118968C91853009F055C060E0AA +:10405000C8010E9474317C0161E0C8010E94743182 +:10406000FC0101851285D70119962D913C911A9773 +:104070002130310569F02CF4232BF1F56C2FC801A8 +:1040800018C02230310549F027303105A9F034C07D +:104090006C2FC80103960E943A456D2FC8010E94FB +:1040A0003A456D2DC80101960E943A456C2DC80114 +:1040B00002960E943A4520C0892BF1F08085853018 +:1040C000D9F4E680F780E114F104B1F00C2F182D3B +:1040D0002C2D392D4D2D5A2D6D2F7B2DF7018185DE +:1040E00092850E94FE1FD7011296ED90FC901397C7 +:1040F000EACF80E090E002C081E090E0DF91CF91D4 +:104100001F910F91FF90EF90DF90CF90BF90AF90F5 +:104110009F908F900895CF92DF92EF92FF920F932E +:104120001F93CF93DF93E0915C0BF0915D0B309781 +:10413000A1F09085953089F469017A01EB01682F2F +:10414000CF010E947431FC0181859285009729F08E +:104150009601A701BE010E94FE1FDF91CF911F9122 +:104160000F91FF90EF90DF90CF900895AF92BF92A4 +:10417000CF92DF92EF92FF920F931F93CF93DF9333 +:104180008091550B9091560B892B09F472C0E1E098 +:10419000F0E0C0E0D0E0CC24C394D12CB6010C2ECA +:1041A00002C0660F771F0A94E2F7409156065091BD +:1041B00057067F0184E0E80EF11CCF01B12C9C0171 +:1041C000A0910602B0910702A817B90720F4209128 +:1041D000060230910702A091E80BB091E90BA20F03 +:1041E000B31FAC90A091550BB091560B9C01215080 +:1041F0003109A20FB31F0A2D10E02C9130E00217F5 +:10420000130729F0462B572BAC92BB24B39401968D +:10421000E816F906A1F65093570640935606BB20C0 +:1042200011F18091550B9091560BE80FF91F028107 +:1042300010E0218130E0408150E03197608170E0F2 +:10424000CE010E948B200E946F6DDC01CB01845D4A +:104250009E4FAF4FBF4F8093520690935306A0934B +:104260005406B09355062196F701C430D10509F0E4 +:1042700095CFDF91CF911F910F91FF90EF90DF903D +:10428000CF90BF90AF900895DC011296ED91FC9114 +:104290001397309721F081E09085953009F080E008 +:1042A0000895CF92DF92EF92FF92CF93DF93DC01DC +:1042B0001696ED91FC911797309721F120852230C9 +:1042C00009F56A017B01EC0165EF79E087E698E08A +:1042D0000E949B5F6FEE79E087E698E00E949B5F0B +:1042E0002AE030E0B701A60187E698E00E941D6051 +:1042F00087E698E00E94BE60EE81FF81C186D2868B +:10430000E386F486DF91CF91FF90EF90DF90CF901E +:104310000895FC0186819781009789F0FC01208532 +:10432000223041F0253079F460E00E94743100972A +:1043300079F0FC01618572858385948508956FEF1E +:104340007FEFCB0108956EEF7FEF8FEF9FEF089522 +:104350006DEF7FEF8FEF9FEF08950F931F93CF9334 +:10436000DF93FC01C481D581209799F08885823044 +:1043700029F4672B71F489859A8518C0853061F41A +:104380008B01CE010E940F3590E0081719073CF011 +:1043900003C08FEF9FEF0AC08EEF9FEF07C0602F23 +:1043A000CE010E947431FC0181859285DF91CF910D +:1043B0001F910F910895CF93C62F63E0FC01828176 +:1043C00093810E9474310097D9F04C2F50E060E047 +:1043D00070E0FC01418752876387748767EE79E05C +:1043E00087E698E00E949B5F4AE050E06C2F87E6EA +:1043F00098E00E946C6087E698E0CF910C94BE60D4 +:10440000CF910895CF93C62F63E0FC018281938101 +:104410000E947431009731F0FC018185C11103C005 +:104420008F7001C08FEFCF910895BF92CF92DF922E +:10443000EF92FF920F931F93CF93DF93EC010E94B3 +:104440004421882309F441C08A819B810E940F3551 +:10445000082F10E0C801880F991F9C012F583D4F6D +:10446000790132E0B32E04301105D4F4F701C19084 +:10447000D1907F010E94C528009751F0FC01B086C1 +:10448000A601DD0C660B770B418752876387748723 +:10449000BC018A819B810E949C310F5F1F4FE3CF3B +:1044A0000A811B8160E0C8010E947431FC01818592 +:1044B000888761E0C8010E9474319D838C8362E02B +:1044C000C8010E9474319F838E83DF91CF911F9129 +:1044D0000F91FF90EF90DF90CF90BF900895CF9312 +:1044E000DF93EC01FB0124813581408151816281A0 +:1044F00073810E941D60CE01DF91CF9108958F924C +:104500009F92AF92BF92CF92DF92EF92FF920F9362 +:104510001F93CF93DF93CDB7DEB7C054D1090FB649 +:10452000F894DEBF0FBECDBF8C015B01FC01F380B0 +:104530006DEB79E087E698E00E949B5F4AE050E0EF +:104540006F2D87E698E00E946C606BEB79E087E660 +:1045500098E00E949B5F4AE050E0B50187E698E052 +:104560000E94656087E698E00E94BE60F801C08006 +:10457000D1806AE674E0C6010E9481314C016FE689 +:1045800074E0C6010E9481318C0164E774E0C601C9 +:104590000E9481317C0169E774E0C6010E9481318B +:1045A0006C010097D1F0FC016185728540E450E018 +:1045B000CE0101960E9456880E947F64882369F08C +:1045C00080919405882309F44BC007C0F8016185E8 +:1045D0007285FB018081811167C08114910409F407 +:1045E00068C0F40161857285CE0101960E947A63EC +:1045F000CE0101960E944421882309F45AC0AB28B9 +:1046000079F00115110551F4E12CF12C01E020E0C5 +:1046100030E040E050E061E070E00EC0F80112C010 +:10462000E114F10471F4E12CF12C01E020E030E020 +:1046300040E050E062E070E0CE0101960E94D709B0 +:1046400038C0F70161857285FB018081882389F17B +:1046500020E030E041E0CE0101960E94E51C29C037 +:104660006FE270E0CE0101960E941D88892B51F403 +:10467000F6012185328543E050E060E4CE010196E9 +:104680000E94332DA114B10439F00115110509F070 +:104690009DCF6EE774E008C0E114F10419F461E8FD +:1046A00074E002C0F70193CFCE0101960E9491659C +:1046B00094CFC05CDF4F0FB6F894DEBF0FBECDBF06 +:1046C000DF91CF911F910F91FF90EF90DF90CF90EE +:1046D000BF90AF909F908F900895FF920F931F937C +:1046E000CF93DF93EC011D821C821A821B8208810A +:1046F00019810115110509F456C0F801808586302D +:1047000009F051C08091760B9091770B892B09F4B9 +:104710004AC065E874E0C8010E948131009719F031 +:10472000FC0181858A83F801808191810E94A37BAD +:10473000F82E8B8367E874E0C8010E9481310097EE +:1047400079F51A8166EB79E087E698E00E949B5F35 +:104750004AE050E06F2D87E698E00E946C6064EBC1 +:1047600079E087E698E00E949B5F4AE050E0612F85 +:1047700087E698E00E946C6087E698E00E94BE6041 +:1047800040E050E067E874E0888199810E94B93187 +:1047900067E874E0888199810E948131009719F05F +:1047A00009969D838C83DF91CF911F910F91FF908C +:1047B0000895EF92FF920F931F93CF93DF93809111 +:1047C000560690915706C4E0D0E021E030E0AC01FD +:1047D00042235323452B29F0A9014095509584236A +:1047E0009523220F331F219791F7909357068093BB +:1047F00056060E946F6D009152061091530620914B +:10480000540630915506601771078207930708F424 +:1048100059C0012B022B032B09F454C010925206ED +:10482000109253061092540610925506E12CF12C6A +:10483000E091550BF091560BEC0FFD1F038110E03A +:10484000228130E0418150E0608170E0C7010E9428 +:104850008B208FEFE81AF80A249684E0E816F1041A +:1048600039F7C1E0D0E080910602909107028C17E1 +:104870009D0728F4809106029091070201C0CE01A5 +:104880002091E80B3091E90BF901E80FF91F4AE09C +:1048900050E0608187E698E00E946C6069E874E00F +:1048A00087E698E00E94C2602196C131D105D9F611 +:1048B00087E698E0DF91CF911F910F91FF90EF90E5 +:1048C0000C94BE60DF91CF911F910F91FF90EF90FC +:1048D0000895CF93DF93EC01E881F9810284F38599 +:1048E000E02DCE0119950196B9F7DF91CF9108958A +:1048F000FC01A285B3851097A9F08685978502975C +:1049000088F0CD010196938782876C938685978581 +:104910000197978786870284F385E02D108281E0D6 +:1049200090E0089580E090E00895FC0186819781F1 +:104930008F3F2FEF920729F02FEF3FEF378326832A +:104940000895A085B185109789F0248535852115B6 +:10495000310561F0CD010196918780878C912150BE +:10496000310935872487082E000C990B0895FC0126 +:1049700086819781019639F481E024853585232B42 +:1049800019F480E0089581E00895CF92DF92EF92CC +:10499000FF920F931F93CF93DF937C016A018B01EA +:1049A000C0E0D0E0CC15DD0589F0D701ED91FC9198 +:1049B0000284F385E02DC70119958F3FBFEF9B0758 +:1049C00029F0F80181938F012196ECCFCE01DF9180 +:1049D000CF911F910F91FF90EF90DF90CF900895AE +:1049E000CF93C62FDC01ED91FC910088F189E02D79 +:1049F0001995DC01ED91FC910190F081E02D6C2F77 +:104A0000CF911994CF93DF93EC018E819F81019612 +:104A1000D9F4288539858A859B85820F931F811556 +:104A20009041A0F4E881F9810284F385E02DCE0164 +:104A30001995813291056CF3E881F9810684F78537 +:104A4000E02D682FCE01199581E001C080E0DF9153 +:104A5000CF910895062E000C770BFC0177836683B7 +:104A60000895CF93DF93EC018E819F81019611F51C +:104A7000E881F9810088F189E02DCE011995DC01EA +:104A8000ED91FC910084F185E02D1995892BA1F021 +:104A9000E881F9810284F385E02DCE0119958132F8 +:104AA000910534F3E881F9810684F785E02D682FBC +:104AB000CE01199581E001C080E0DF91CF9108958A +:104AC0000F931F93CF93DF93EC018B016BE874E09E +:104AD0000E94C26001151105B9F1F80161918F01C1 +:104AE000662391F1603220F0623211F06C3541F5AD +:104AF0006CE5CE010E94945FF801319780818C3083 +:104B0000D1F044F48930D9F08A30B9F0883029F7EF +:104B100062E616C0823259F024F48D30F1F662E775 +:104B20000FC08F3231F08C35C1F66CE509C062E2FE +:104B300007C06FE205C066E603C06EE601C064E729 +:104B4000CE010E94945FC9CF62E2CE010E94945FC1 +:104B500080E090E0DF91CF911F910F910895FC01CB +:104B60002085318582859385AC014F5F5F4F5387E8 +:104B70004287820F931F0E94328381E090E0089564 +:104B8000FC01868197818F3F2FEF920729F02FEF4D +:104B90003FEF37832683089520853185828593856D +:104BA000AC014F5F5F4F53874287820F931F0E9474 +:104BB0002A83082E000C990B0895FC0186819781A9 +:104BC0008F3F2FEF920729F02FEF3FEF3783268398 +:104BD0000895808591850C94BA7CCF92DF92EF92F4 +:104BE000FF92CF93DF93EC018E819F818F3F2FEF58 +:104BF000920759F02FEF3FEF3F832E83DF91CF9144 +:104C0000FF90EF90DF90CF9008950E946F6D6B0141 +:104C10007C01A4EFCA0EA1E0DA1EE11CF11CE881C0 +:104C2000F9810088F189E02DCE011995DC01ED9123 +:104C3000FC910084F185E02D1995892B39F40E94AF +:104C40006F6D6C157D058E059F0548F3E881F98130 +:104C50000088F189E02DCE011995DC01ED91FC91E0 +:104C60000284F385E02DDF91CF91FF90EF90DF90EC +:104C7000CF901994EF92FF920F931F93CF93DF93EE +:104C8000009719F48FEF9FEF82C0FC01E484F58454 +:104C9000D7010D911C91D801ED91FC910688F789FF +:104CA000E02DC8011995882369F3D801ED91FC9195 +:104CB0000084F185E02DC8011995D801ED91FC9192 +:104CC000892B61F30284F385E02DC8011995EC016D +:104CD0000196C1F2F8018589882339F04AE050E055 +:104CE0006C2F87E698E00E946C60D70112968C9139 +:104CF000882309F44BC0C532D10509F047C0D8015B +:104D0000ED91FC910084F185E02DC8011995029781 +:104D10005CF0D801ED91FC910688F789E02DC8017F +:104D200019958111ECCFAECFD1E0C0E0D801ED9163 +:104D3000FC910284F385E02DC80119958F3FBFEFE8 +:104D40009B0709F49FCF9C01215431092A31310579 +:104D500030F09C01215631092A31310538F48D2F6C +:104D60008295807F829FC00D11240AC0C0978A302F +:104D7000910530F49D2F9295907F989FC00D11243E +:104D8000D150A0F68C2FCC0F990B01C0CE01DF9132 +:104D9000CF911F910F91FF90EF9008958F929F9266 +:104DA000AF92BF92CF92DF92EF92FF920F931F9339 +:104DB000CF93DF936115710509F4FFC0FB010085F6 +:104DC000002E000C110B220B330B0730110508F0DD +:104DD000F4C0DB01EC01F8018827E654FF4F8F4F48 +:104DE0000C94C7836DE874E006C019968C918823F3 +:104DF00089F062E974E0CE01DF91CF911F910F91AC +:104E0000FF90EF90DF90CF90BF90AF909F908F90EA +:104E10000C94BF5F67E974E0EECF19964D915D91F8 +:104E20006D917C911C972AE030E0CE01DF91CF910B +:104E30001F910F91FF90EF90DF90CF90BF90AF90B8 +:104E40009F908F900C941D601996CD90DD90ED9001 +:104E5000FC901C9720E030E0A901C701B6010E9438 +:104E6000668487FF09C06DE974E0CE010E94C260CC +:104E7000F7FAF094F7F8F094C701B6010E94E484C1 +:104E80004B015C012AE0AB01BC01CE010E94D45F62 +:104E90006FE974E0CE010E94C260C501B4010E94B6 +:104EA00013859B01AC01C701B6010E94F9832DEC6B +:104EB0003CEC4CE45DE30E94FA8320E030E040E209 +:104EC00051E40E94CA850E94E484AB0160E070E076 +:104ED0002AE0CE010E94D45F70C019966D917C913A +:104EE0001A97CE01DF91CF911F910F91FF90EF9014 +:104EF000DF90CF90BF90AF909F908F900C946025E3 +:104F000016960D911C9117976BE5CE010E94945F48 +:104F1000019619F48FEF9FEF52C00115110571F042 +:104F2000B801CE010E94CE260196A1F3F8010281BC +:104F300013810115110589F36CE2E7CF6DE52FC0F0 +:104F400016960D911C9117976BE7CE010E94945F06 +:104F5000019601F30115110509F1F80160817181D4 +:104F6000CE010E9460250196A9F26AE3CE010E945B +:104F7000945F019679F2B801CE010E94CE26019687 +:104F800049F2F801028113810115110519F36CE250 +:104F9000CE010E94945F0196E9F6BCCF6DE7CE0189 +:104FA0000E94945F21E030E0019611F020E030E0B3 +:104FB00088279927821B930B02C080E090E0DF9145 +:104FC000CF911F910F91FF90EF90DF90CF90BF9006 +:104FD000AF909F908F900895CF93DF93EC01E8817D +:104FE000F9810284F385E02DCE0119958F3F2FEFD3 +:104FF000920771F0E881F9818132910594F306847A +:10500000F785E02D682FCE01199580E090E002C071 +:105010008FEF9FEFDF91CF910895EF92FF920F9363 +:105020001F93CF93DF938C017B01DC01ED91FC9109 +:105030000284F385E02D1995829709F078C084E009 +:10504000F701808786E090E00E94E079EC01892BEF +:1050500009F46DC0E8E5F6E0F983E88380E091E0CB +:10506000DF019C011D9221503040E1F79B838A8330 +:105070001D821C82D801ED91FC910284F385E02D04 +:10508000C80119958F3FBFEF9B0709F44DC08232CD +:10509000910509F44FC0803291050CF44BC08C355A +:1050A000910511F0BE013DC0D801ED91FC91028443 +:1050B000F385E02DC80119958F3FBFEF9B07A1F144 +:1050C0008236910531F15CF48F329105F9F08C351F +:1050D0009105C9F0829771F6BE0182E222C08E3638 +:1050E0009105D1F034F48636910521F6BE018CE0AD +:1050F00018C08237910599F08437910509F0BACF2D +:10510000BE0189E00EC0BE018CE50BC0BE018FE27E +:1051100008C0BE0188E005C0BE018AE002C0BE0131 +:105120008DE00E946563A6CFCE010E94787A8FEF52 +:105130009FEF24C08C819D81009749F0E881F9811F +:105140008E0F9F1FFC0131978081882321F0BE01C3 +:1051500080E00E9465638C819D810E94E0798C01D2 +:10516000009739F068E576E00E943188CE010E9410 +:10517000787AF7011287018780E090E0DF91CF9184 +:105180001F910F91FF90EF9008958DE090E00E94A5 +:10519000E079009729F02DE0FC0111922A95E9F7BA +:1051A00008950F931F93CF93DF930097E1F0EC01E5 +:1051B0000C851D850115110579F0D8018D919C9103 +:1051C000009739F0DC01ED91FC910488F589E02D20 +:1051D0001995C8010E94787ACE01DF91CF911F9175 +:1051E0000F910C94587CDF91CF911F910F910895EE +:1051F000AF92BF92CF92DF92EF92FF920F931F93E5 +:10520000CF93DF9300D01F92CDB7DEB76115710544 +:1052100009F496C06B01182FDB011C96AD90BC9071 +:105220001D97F501E080F180D701ED91FC91068892 +:10523000F789E02DC7011995811104C0C6010E94AC +:10524000D1287EC0F5019281911114C0D701ED9152 +:10525000FC910190F081E02D612FC7011995F701B4 +:105260008589882309F469C0612F87E698E00E9448 +:10527000945F63C0812F8F7D81548A3138F380ED34 +:10528000810F8A3018F383ED810F8230F8F21F35D9 +:10529000E9F21E37D9F21132B1F086EC810F82307B +:1052A00090F08AED810F873070F01D3361F0812F0F +:1052B0008F7E8F3241F08DED810F823020F01B35D3 +:1052C00011F01D3511F491FFC1CF19821A821B8292 +:1052D0001C82812F012E000C990B9F931F9381EA52 +:1052E00094E09F938F938E010F5F1F4F1F930F9337 +:1052F0000E94A2886E01F4E0CF0ED11C0F900F9097 +:105300000F900F900F900F90D701ED91FC910190AD +:10531000F081E02DD8016C91C7011995F7018589BD +:10532000882331F0D8016C9187E698E00E94945F61 +:105330000F5F1F4F0C151D0539F780E090E002C08C +:105340008FEF9FEF0F900F900F900F90DF91CF9105 +:105350001F910F91FF90EF90DF90CF90BF90AF9093 +:1053600008952C9A08952C980895CF92DF92EF9289 +:10537000FF920F931F93CF93DF93EC017A018B0180 +:105380006C01C40ED51ECC15DD05A9F00E94B32911 +:105390008FE00E94D0488D2F0E94D0488C2F0E9411 +:1053A000D048219680E00E94D048F80181938F0177 +:1053B0000E94B129E8CFC701DF91CF911F910F91D2 +:1053C000FF90EF90DF90CF900895CF92DF92EF9211 +:1053D000FF920F931F93CF93DF93EC017A018B0120 +:1053E0006C01C40ED51ECC15DD05A1F00E94B329B9 +:1053F00080EF0E94D0488D2F0E94D0488C2F0E94B1 +:10540000D0482196F80181918F010E94D0480E94D6 +:10541000B129E9CFC701DF91CF911F910F91FF9083 +:10542000EF90DF90CF9008951F93CF93DF93D82F05 +:10543000192FC62F0E94B32980EF0E94D048812FD8 +:105440000E94D0488D2F0E94D0488C2F0E94D048B7 +:105450000E94B12981E0DF91CF911F9108951F93A0 +:10546000CF93DF93182F66E270E00E94624AC82F44 +:10547000D0E067E270E0812F0E94624ADC2FCC27E7 +:105480009E01282BC901DF91CF911F9108951F9391 +:10549000CF93DF93182F60E270E00E94624AC82F1A +:1054A000D0E061E270E0812F0E94624ADC2FCC27BD +:1054B0009E01282BC901DF91CF911F91089585EDA1 +:1054C0008093BC008091BC0084FDFCCF1092B40B93 +:1054D000089540918607262F30E0240F311D213298 +:1054E0003105DCF42091B40B2430C9F4FC0180E0D8 +:1054F00090E0861758F4309186072191DC01AA5973 +:10550000B84FA30FB11D2C930196F3CF809186075E +:10551000680F6093860780E0089581E0089582E037 +:10552000089508950895E0918D0B80918C0BE817F4 +:1055300030F4F0E0E755F84F808190E008958FEF68 +:105540009FEF089590918D0B80918C0B981750F4DC +:10555000E92FF0E0E755F84F208130E09F5F90930E +:105560008D0B02C02FEF3FEFC901089580918C0B86 +:1055700090E020918D0B821B91090895CF92DF92CC +:10558000EF92FF920F931F93CF93DF937C01CB0198 +:105590008A012091B50B222389F0EB016B01C40E27 +:1055A000D51ECC15DD0569F06991D701ED91FC910F +:1055B0000190F081E02DC7011995F3CF642F0E946F +:1055C000692AC801DF91CF911F910F91FF90EF9051 +:1055D000DF90CF900895CF93DF931F92CDB7DEB7C2 +:1055E00069832091B50B2223D1F02091D80B203272 +:1055F00040F021E030E0FC013383228380E090E042 +:1056000015C08091B60BE82FF0E0E954F44F998172 +:1056100090838F5F8093B60B8093D80B05C061E0B9 +:10562000CE0101960E94692A81E090E00F90DF91FF +:10563000CF910895A8950895FC0181819091B40BB4 +:105640009111FCCF91E09093B40B9093B30B2FEF9B +:105650002093B20B1092B10B1092B00B90938F0B62 +:1056600090918F0B880F892B80938F0B80918E0BDD +:10567000813061F410928E0B80918F0B8093BB0070 +:105680008091BC0083FDF8CF85EC01C085EE80934E +:10569000BC008091B40B8130E1F38091B10B81119A +:1056A00003C09091B10B01C091E0E0E9FBE0A9EAF1 +:1056B000B7E080E0891721F021912D938F5FFACF19 +:1056C00010928D0B80938C0B82E199E00E94A22AAC +:1056D000089581E00C94E455FC01818191E0909360 +:1056E000B50B8093D70B1092B60B1092D80B089580 +:1056F0001F93CF93DF93EC01162F0E946C2B61EE6A +:1057000082E199E00E94EB2A612F82E199E00E94F8 +:10571000EB2ACE01DF91CF911F910C94692BCF938F +:10572000DF93EC0163EC0E94782BCE01DF91CF91E7 +:105730000C941C2BCF93DF93EC010E948F2B682FCE +:105740006460CE01DF91CF910C94F8451F920F92C7 +:105750000FB60F9211240BB60F922F933F934F93D6 +:105760005F936F937F938F939F93AF93BF93EF93C9 +:10577000FF938091B900887F803609F49CC068F55A +:10578000883209F45BC090F4803109F454C038F4D5 +:10579000882309F4F6C0883009F44DC0F6C088317A +:1057A00009F44CC0803209F45DC0EFC0803409F4C4 +:1057B00068C048F4803309F455C0883309F0E5C067 +:1057C0008093B20BD8C0803509F44FC0883509F4F6 +:1057D0005DC0883409F0D9C0D6C0883909F4C7C083 +:1057E000A8F4883709F467C038F4883609F463C030 +:1057F000803709F460C0C9C0883809F4B8C080395E +:1058000009F45FC0803809F0C0C05BC0803B09F478 +:1058100086C038F4803A09F466C0883A09F47FC03B +:10582000B4C0803C09F4A7C0883C09F4A4C0883BFC +:1058300009F48AC0AAC080918F0B10C09091B10B5F +:105840008091B00B981770F5E091B10B81E08E0F4D +:105850008093B10BF0E0E057F44F80818093BB0060 +:1058600085EC86C08093B20B8EC0E091B10B81E0D5 +:105870008E0F8093B10B8091BB00F0E0E057F44FA6 +:1058800080839091B10B8091B00B6EC0E091B10B11 +:1058900081E08E0F8093B10B8091BB00F0E0E05768 +:1058A000F44F80838091B30B81116DC081E08093B0 +:1058B0008E0B84EA61C083E08093B40B1092A8073A +:1058C000CFCF8091A807803208F051C0E091A8079F +:1058D00081E08E0F8093A8078091BB00F0E0E8572D +:1058E000F84F8083BDCF85EC8093BC001092B40B41 +:1058F0008091A807803230F4E091A807F0E0E857E3 +:10590000F84F10826091A80770E0E091880BF09149 +:10591000890B88E897E019951092A80736C084E0B3 +:105920008093B40B1092870710928607E0918A0B40 +:10593000F0918B0B199580918607811105C081E04C +:105940008093860710926607E091870781E08E0FAB +:1059500080938707F0E0EA59F84F80818093BB007D +:105960009091870780918607981708F479CF85E88A +:105970008093BC000AC085EC8093BC001092B40BED +:1059800004C01092B20B0E945F2AFF91EF91BF9169 +:10599000AF919F918F917F916F915F914F913F91C7 +:1059A0002F910F900BBE0F900FBE0F901F90189568 +:1059B0008F929F92AF92BF92CF92DF92EF92FF921F +:1059C0000F931F93CF93DF93CDB7DEB72B970FB60F +:1059D000F894DEBF0FBECDBF8C01CE0101967C01D5 +:1059E0006C018AE0882E912CA12CB12CC6018E1955 +:1059F0009F09411551056105710581F0CB01BA017F +:105A0000A50194010E945083942F852F605DF601BB +:105A100061936F01A901692F782FE8CFFC013197BD +:105A2000EE0DFF1DD8019E012150310940814D939B +:105A30003197E217F307D1F7F801E80FF91F108249 +:105A40002B960FB6F894DEBF0FBECDBFDF91CF917E +:105A50001F910F91FF90EF90DF90CF90BF90AF908C +:105A60009F908F9008958F929F92AF92BF92CF9206 +:105A7000DF92EF92FF920F931F93CF93DF938C01EE +:105A80004A016901E0905C07F0905D07C62F660F40 +:105A9000DD0BE114F10449F1F7018085863029F529 +:105AA00067EA74E0C7010E9481315C01F2E08F1661 +:105AB000910439F083E08816910451F469EE74E0A2 +:105AC00002C06CEA74E0C7010E9481317C0102C00F +:105AD000E12CF12CA114B10451F0F501618572851E +:105AE000AE01C8010E94568808C0E12CF12CAE011D +:105AF00065E77AE0C8010E94F17BAE0167E174E0DE +:105B0000C8010E943888E114F10421F0F701618591 +:105B100072850FC0F2E08F169104A1F083E0881621 +:105B2000910461F08A94892899F460915A077091E0 +:105B30005B07AE01C8010E9438880AC0AE016FE65B +:105B40007AE003C0AE016CE67AE0C8010E94D37B24 +:105B5000AE0167E174E0C8010E943888C114D10425 +:105B600029F0AE01B601C8010E943888C801DF9152 +:105B7000CF911F910F91FF90EF90DF90CF90BF904A +:105B8000AF909F908F900895CF93DF931F921F92B5 +:105B9000CDB7DEB78091FB0B9091FC0B009711F411 +:105BA00085E09CE0BE016F5F7F4F681B790B072E7D +:105BB000000C880B990B0F900F90DF91CF910895F7 +:105BC0009FE9980F963010F4875508959FEB980F32 +:105BD000963010F48753089580538A3008F080E09F +:105BE0000895CF93DF93DA01382FEC018C2F831BBC +:105BF0008617C8F4CE01E991F0E024E0F595E79529 +:105C00002A95E1F7E758FD4F20812C93FC01808114 +:105C1000E82FEF70F0E0E758FD4F808111968C93EC +:105C200011971296E3CFFA01E60FF11DE60FF11D71 +:105C30001082DF91CF9108950F931F93CF93DF933D +:105C4000FC0120852530B9F48B01EC0160E00E9455 +:105C50007431FC0181859285A385B4850597A105E2 +:105C6000B10549F4CE010E940F35282F30E081E0C4 +:105C7000201731070CF480E0DF91CF911F910F9135 +:105C800008952F923F924F925F926F927F928F92E0 +:105C90009F92AF92BF92CF92DF92EF92FF920F93BB +:105CA0001F93CF93DF93CDB7DEB7C256D1090FB69E +:105CB000F894DEBF0FBECDBF009158071091590771 +:105CC0000115110509F4CBC20E946F6DC0906207E7 +:105CD000D0906307E0906407F0906507C616D7067A +:105CE000E806F90608F08EC0D8011696AD90BC9073 +:105CF000179763E0862EA114B10409F474C0F5016E +:105D00008085863009F06BC06396BFAEAEAE6397F8 +:105D1000CE018F5A9F4F0E946D236596EFAC659719 +:105D2000EE2009F45CC067968EAD9FAD6797892B16 +:105D300009F455C06496FFAC6497F0E4FF1609F4CB +:105D40009EC0FF1508F497C023E0C22ECF1408F4BC +:105D500046C0F1FC87C110E062E08E2D0E94F96C14 +:105D600065962FAD659730E0F901EA56F54F8491BD +:105D7000F901EA50F54F0491F901E45CF44FF49015 +:105D8000FF2009F472C181110E94A36CEF2DF0E095 +:105D9000EE0FFF1FE45BF54FA591B491EC910E233C +:105DA00031E020E009F430E0832F922F212F30E002 +:105DB00051E02817390709F050E0052F10E06796E9 +:105DC000EEADFFAD6797628173810617170709F47F +:105DD0006CC14181442309F44BC141504183F50119 +:105DE000A280B38088CF0E946F6DDC01CB01C29688 +:105DF000A11DB11D8093620790936307A093640770 +:105E0000B09365070E946F6D00915E0710915F0768 +:105E10002091600730916107061717072807390797 +:105E200008F01DC2E0915807F091590706811781CB +:105E30000115110579F0D80118968C91863031F44E +:105E40001A830983CE0101960E946D23F801028115 +:105E50001381EECF0E946F6DDC01CB0188579C4E01 +:105E6000AF4FBF4F80935E0790935F07A09360078B +:105E7000B0936107F4C192E4D92EFD10B0CF61EB6D +:105E800074E063968EAD9FAD63970E9481318C0163 +:105E9000F1FC02C062E001C060E08E2D0E94F96C4E +:105EA00065968FAD6597863308F0865390917B0099 +:105EB000282F2870977F922B90937B0087708064A7 +:105EC00080937C0080917A00806480937A00809136 +:105ED0007A0086FDFCCFC090780080917900D12CAB +:105EE000D82A0115110509F4FAC0D80118968C9129 +:105EF000853009F0F4C0C8010E940F35982EB3E038 +:105F0000B81708F076C063E0C8010E947431FC0144 +:105F100081859285A3969FAF8EAFA39762E0C8015B +:105F20000E947431DC0119964D905D906D907C90CB +:105F30001C9761E0C8010E9474311C0160E0C80137 +:105F40000E947431DC0119962D913D914D915C9127 +:105F50001C976D962CAF3DAF4EAF5FAF6D9796011E +:105F6000DD0C440B550B6D96CCACDDACEEACFFAC50 +:105F70006D972C193D094E095F09A396EEACFFAC55 +:105F8000A397C701FF0CAA0BBB0BBC01CD01641981 +:105F90007509860997090E944083D10119962D91B0 +:105FA0003D914D915C911C976D96CCACDDACEEAC07 +:105FB000FFAC6D972C193D094E095F096D962CAF0A +:105FC0003DAF4EAF5FAF6D970E947283420E531E7E +:105FD000641E751E620145E0E42E9E1010C064E050 +:105FE000C8010E947431DC0119968D919C911A9719 +:105FF00008C0E0E0F4E0A396FFAFEEAFA39781E026 +:1060000090E0A396EEACFFACA397EC14FD040CF467 +:10601000670132E0F32E9F1064C00D2C000CEE08D7 +:10602000FF0860E0C8010E947431FC0181859285FF +:10603000A385B485C816D906EA06FB06C4F161E05B +:10604000C8010E947431FC0181859285A385B485C5 +:106050008C159D05AE05BF050CF0C1CECC24C394B4 +:10606000D12C27C011E060E078CE80E090E09ECE99 +:1060700064964FAD649740FF0AC02817390771F442 +:1060800061E08081811160E0608370E002C0508334 +:10609000B801CE018F5A9F4F0E947F226796EEADC6 +:1060A000FFAD6797138302839ACE818298CEC12C6D +:1060B000D12C6796EEADFFAD6797828193818C15E9 +:1060C0009D0519F1B601CE018F5A9F4F0E947F2284 +:1060D0006796EEADFFAD6797D382C28216C081E0AE +:1060E00090E06796EEADFFAD679722813381760130 +:1060F000E21AF30A9701F7FE03C0319521953109A1 +:10610000821793070CF09CC011826796EEADFFAD2D +:106110006797818185300CF062CE828193818C15E6 +:106120009D0509F45CCE6996DFAECEAE69976596A3 +:106130001FAD659768E67AE087E698E00E949B5F6E +:106140004AE050E0612F87E698E00E946C6066E6C6 +:106150007AE087E698E00E949B5F4AE050E0B60153 +:1061600087E698E00E94656087E698E00E94BE603E +:1061700063960EAD1FAD63976AE674E0C8010E9496 +:1061800081317C0169E774E0C8010E9481318C0192 +:10619000009779F1DC0119966D917C911A9740E492 +:1061A00050E0CE0101960E9456886FE270E0CE0169 +:1061B00001960E941D88892B51F4F80121853285B2 +:1061C00043E050E060E4CE0101960E94332D4AE0A6 +:1061D000BE016F5B7F4F69968EAD9FAD69970E9440 +:1061E0002B7C0E947F64882321F080919405882372 +:1061F00071F1E114F104E9F0D70119966D917C91E8 +:106200001A97CE0101960E947A63CE0101960E94F0 +:106210004421882371F0E12CF12C01E09E01295AE0 +:106220003F4F41E050E060E070E0CE0101960E94F7 +:10623000D7096796EEADFFAD6797D382C282CFCD07 +:10624000818186300CF061CF8F5F81835ECFBE018C +:106250006F5B7F4FCE0101960E949165CACFCE59E8 +:10626000DF4F0FB6F894DEBF0FBECDBFDF91CF91E9 +:106270001F910F91FF90EF90DF90CF90BF90AF9064 +:106280009F908F907F906F905F904F903F902F9056 +:106290000895A8950E947C12029724F00E945A59F2 +:1062A0000E94412E0C94D923809194058F5F809396 +:1062B0009405A8950E94412E809194058150809369 +:1062C000940508950F931F93CF93DF93EC010E94E1 +:1062D0009B5F8C01CE010E94BE60800F911FDF91F9 +:1062E000CF911F910F910895FC01868197810097AE +:1062F00039F0662329F06150FC0182819381F7CF48 +:1063000008950F931F93CF93DF938B01FC01C681F8 +:10631000D781209759F0B801888199810E94FF8721 +:10632000892B21F00A80DB81C02DF3CFCE01DF91D4 +:10633000CF911F910F910895DC011696ED91FC917C +:10634000179761157105A1F0309729F417967C9382 +:106350006E931697089582819381009711F0FC0146 +:10636000FACF73836283DB011596FC93EE93149747 +:106370000895CF92DF92EF92FF920F931F93CF93E6 +:10638000DF938C017B016A010E94C528EC01892BF7 +:1063900009F182E08887A601DD0C660B770B49873F +:1063A0005A876B877C8788819981009711F00E94BA +:1063B000787AC7010E94C68799838883BE01C80185 +:1063C000DF91CF911F910F91FF90EF90DF90CF90D1 +:1063D0000C949C31DF91CF911F910F91FF90EF9022 +:1063E000DF90CF900895CF92DF92EF92FF921F93AC +:1063F000CF93DF93EC016A017B01122FE889F989C1 +:1064000082E080834115514E61057105B1F060E075 +:1064100079E08DE390E0A70196010E945083DA01B4 +:10642000C9010197A109B109B695A79597958795D7 +:106430009C01211580E13807A8F0E889F9891082CC +:1064400060E874E88EE190E0A70196010E94508315 +:10645000DA01C9010197A109B109B695A7959795E8 +:1064600087959C01EC85FD853083EE85FF85208333 +:10647000188EEC89FD891083EA89FB89808180610F +:106480008083EA89FB89808188608083EA89FB892F +:10649000808180688083EA89FB8980818F7D808309 +:1064A000DF91CF911F91FF90EF90DF90CF900895F3 +:1064B0008F929F92AF92BF92CF92DF92EF92FF9214 +:1064C0000F931F93CF93DF93CDB7DEB7DA950FB657 +:1064D000F894DEBF0FBECDBFC82E8091C10989835D +:1064E000CA8221E0C216A0F074E07C1518F487E19E +:1064F000C8120EC08091C2099091C3099B838C83FE +:106500008091C4099091C5099D838E8386E001C066 +:1065100082E08E010F5F1F4F90E19C1528F0AFE0E5 +:10652000CA1630F49BEF01C09AEE9C0D923078F4BD +:106530002091460A9091470AF801E80FF11D9083D7 +:1065400091E0980FF801E90FF11D8E5F2083BFE005 +:10655000CB1641F1BC1558F0E5E0CE16A1F0F6E0FF +:10656000CF12B6C020914A0A90914B0A10C026E182 +:10657000C21609F48EC077E1C71609F459C090E13C +:10658000C912A6C055C02091480A9091490AF80145 +:10659000E80FF11D908391E0980FF801E90FF11DCC +:1065A0008E5F95C02091480A3091490AF801E80FA2 +:1065B000F11D308342E0480F91E0980FF801E90F98 +:1065C000F11D2083B90167707727A3E036952795E1 +:1065D000AA95E1F7672B19F091E0920F01C0922F75 +:1065E000B3E0B80FF801E40FF11D90838C5F60E019 +:1065F00070E0A0E04FEF480F9A1303C08B2F890F74 +:1066000067C050E09B0135952795400F511F220F21 +:10661000331FF901E65BF54FA0FD02C0208101C0E8 +:106620002181FA012083AF5F6F5F7F4F8F5FE2CFE1 +:106630002091480A3091490AF801E80FF11D308392 +:1066400091E0980FF801E90FF11D208392E0980F77 +:10665000F801E90FF11D8D5F922F990F908390E063 +:106660003327E92FF0E0E217F30794F5EE0FFF1F51 +:10667000E65BF54F50814181F801E80FF11D408341 +:1066800041E0480FF801E40FF11D8E5F50839F5FDA +:10669000E8CF90914A0A20914B0AF801E80FF11DCA +:1066A000208321E0280FF801E20FF11D9083209153 +:1066B0004C0A90914D0A32E0380FF801E30FF11DBA +:1066C000908393E0980FF801E90FF11D8C5F208310 +:1066D0007801F8012FEF3FEFD02E9E2F901B9817D7 +:1066E000A0F49191292748E050E0B901769567958B +:1066F00020FF06C09B0191E0292790EA392701C0BD +:106700009B014150510989F7E8CFF801E80FF11DCD +:106710002083B2E0BB2EB80E8F5FF801E80FF11DA9 +:106720003083F801EB0DF11D10828091BF0990912B +:10673000C009DC01ED91FC910284F385E02D1995EF +:10674000019699F7E091D50AF091D60A309709F0B1 +:1067500019958091BF099091C0092E2D2D192B15E7 +:1067600058F4F70161917F01DC01ED91FC910190FA +:10677000F081E02D1995EDCFDC01ED91FC910680C3 +:10678000F781E02D1995E091D70AF091D80A30975A +:1067900009F019950E946F6D4B015C01A8E0EA2E8B +:1067A000F12CD12C8091BF099091C009DC01ED91B1 +:1067B000FC910084F185E02D1995892BC1F0809121 +:1067C000BF099091C009DC01ED91FC910284F38531 +:1067D000E02D19959091C109891711F0FF2099F1C9 +:1067E000F801EF0DF11D8083EA94F39407C0E09166 +:1067F000D30AF091D40A309709F01995B5E0FB124D +:1068000022C0EA818E2F8F7790E08C159D0509F0CC +:10681000A2C0E7FF04C08B81882381F181C08E2F45 +:1068200090E0FC013197E731F10568F48827EF53D8 +:10683000FF4F8F4F0C94C783F3E0EF2E04C0EB8023 +:1068400002C0E5E0EE2E0E946F6DDC01CB018819DD +:106850009909AA09BB09813D9740A105B10538F402 +:1068600080E0EE2031F0882309F49CCF59C082EEFD +:10687000F8CF811155C0F4E0FF15C0F58FEF9FEF01 +:1068800060E0EF2DF0E09F0122503109462F50E0EB +:10689000D80142175307BCF4A40FB51F4C918427AD +:1068A00048E050E0DC01B695A79580FF06C0CD0119 +:1068B00071E0872770EA972701C0CD014150510947 +:1068C00089F76F5FE3CFA20FB31F2C9130E0AC01CB +:1068D00055274217530709F040C0892F9927EC0F1D +:1068E000FD1F208130E082179307B9F58A8185303A +:1068F000B0F58330B0F5813090F05B81652F70E0AA +:10690000759567952091D20A40E0842F90E0861714 +:1069100097070CF452C02093D20A50FD6CC080E05F +:106920001092CC0A1092CE0A1092CD0A1092D10A7F +:10693000D3950FB6F894DEBF0FBECDBFDF91CF91D8 +:106940001F910F91FF90EF90DF90CF90BF90AF908D +:106950009F908F90089581EEE3CF83EEE1CF873152 +:10696000F1F66B8170E0759567952091D20A40E051 +:10697000842F90E0861797071CF02093D20ACFCF80 +:106980004034C0F49C012E5F3F4F220F331F880F0D +:10699000991FFC01E154F64FDE01A20FB31F8C9149 +:1069A00090E0982F8827D801A20FB31F2C91822B3B +:1069B00090878783242F4F5FDBCF4034C8F4880F44 +:1069C000991FFC01E154F64FA5E0B0E0AC0FBD1FEC +:1069D000A80FB91F2C9130E0322F2227A4E0B0E09D +:1069E000AC0FBD1FA80FB91F8C91282B30872783B0 +:1069F000242F4F5F8ACF403468F4880F991FFC0121 +:106A0000E154F64FDE01A80FB91F14968C9190E067 +:106A10009087878381E0840F8093D20A80CFDC0146 +:106A20001696ED91FC91179780E0309729F08F5FD3 +:106A30000280F381E02DF9CF08957F928F929F928B +:106A4000AF92BF92CF92DF92EF92FF920F931F937C +:106A5000CF93DF93CDB7DEB7A6970FB6F894DEBF1E +:106A60000FBECDBF8C01762E942E852E20E2B22E45 +:106A7000CE0101967C01FC012B2D11922A95E9F79C +:106A800080E293E09AA389A38FEF8BA38CA38DA3BD +:106A90008EA3680183E4C80ED11C43E450E0BE011C +:106AA0006F5D7F4FC6010E94114D019609F4B9C078 +:106AB00081E089838A8386E0A82EAB821C82F8015C +:106AC00064817581868197810E94CF836D837E83E7 +:106AD0008F83988789869A8680E890E09C878B8749 +:106AE0004CE150E0B701C6010E946648F7012B2D2A +:106AF00011922A95E9F7480188E0880E911CF4016B +:106B0000D70101900D92AA94E1F740E150E0B7015E +:106B1000C6010E946648F7011192BA94E9F796E01F +:106B2000A92EB12C40E250E0B701C6010E94664890 +:106B3000F1E0AF1AB108B1F783E6898392E89A834E +:106B400093E59B838C8385E38D8381E08E837F82B5 +:106B50009DE3988797E099878A8786E0F401DE01B4 +:106B60001B9601900D928A95E1F78CE0898B8A8BB8 +:106B700065EB74E0CE0143960E943188F80163858D +:106B8000CE0149960E94395CF8016485CE014B968E +:106B90000E94395CF8016585CE014D960E94395CF2 +:106BA0004EE150E0B701C6010E946648F3E07F1253 +:106BB0001EC082E3898384E08A83F80196859B83E3 +:106BC00097859C8390899D8391899E8396E39F837B +:106BD0008887828D8987838D8A87848D8B87858D31 +:106BE0008C874CE050E0B701C6010E94664887E3FD +:106BF000898386E08A8391E09B8393E09C838D83E5 +:106C00008FE08E838AE38F838BE388878FEF89877A +:106C100049E050E0B701C6010E946648C6010E94E3 +:106C20003E4CA6960FB6F894DEBF0FBECDBFDF91E7 +:106C3000CF911F910F91FF90EF90DF90CF90BF9079 +:106C4000AF909F908F907F9008952F923F924F9298 +:106C50005F926F927F928F929F92AF92BF92CF92EC +:106C6000DF92EF92FF920F931F93CF93DF9300D0A9 +:106C700000D0CDB7DEB78C010E944C7B2FEC37E003 +:106C800040E050E00E947283DC01CB010196A11D1F +:106C9000B11DF80184839583A683B7838083918394 +:106CA000A283B3835801F3E4AF0EB11CC5010E9467 +:106CB000054A64E470E0C5010E94114C882309F480 +:106CC00036C10E946F6D2B013C01812C912CC801B3 +:106CD0008E5B9F4F9E838D8348EEC42E43E0D42E5F +:106CE000E12CF12C52E0252EAD81BE818C918330B8 +:106CF00009F404C1811120C0F80184819581A68125 +:106D0000B7810196A11DB11D84839583A683B783A6 +:106D10000E946F6D6419750986099709A70196018C +:106D20000E945083A90161E0C8010E941D3581E0E5 +:106D3000AD81BE818C93CAC08430F9F4F80184819E +:106D40009581A681B7810196A11DB11D848395838C +:106D5000A683B7830E946F6D641975098609970928 +:106D6000A70196010E945083A90163E0C8010E9417 +:106D70001D35AD81BE812C92A9C0813059F5F80135 +:106D800042AD53AD64AD75AD9E012F5F3F4FC8015D +:106D90000E944E5C382EF2E08F1392C089819A8156 +:106DA000AB81BC81F80184839583A683B7830E945D +:106DB0006F6D6419750986099709A70196010E94EC +:106DC0005083A90163E0C8010E941D35AD81BE81D9 +:106DD0003C927CC0823009F079C0F80142AD53ADDD +:106DE00064AD75AD9E012F5F3F4FC8010E944E5CA0 +:106DF000382EF5E08F135DC0E3E0AD81BE81EC93EA +:106E0000F80182A193A1A4A1B5A1892B8A2B8B2B78 +:106E100041F484E893E0A0E0B0E082A393A3A4A3AC +:106E2000B5A3F80186A197A1A0A5B1A5892B8A2BAE +:106E30008B2B61F482A193A1A4A1B5A1B695A795CE +:106E40009795879586A397A3A0A7B1A7F80182A5D8 +:106E500093A5A4A5B5A5892B8A2B8B2BA9F482A178 +:106E600093A1A4A1B5A1AC01BD0123E076956795DE +:106E7000579547952A95D1F7841B950BA60BB70B11 +:106E800082A793A7A4A7B5A7F80186A197A1A0A55B +:106E9000B1A586A797A7A0ABB1AB82A593A5A4A5E2 +:106EA000B5A582AB93ABA4ABB5AB88248394912CEE +:106EB0000DC0F6E08F1304C0AD81BE811C9206C0E8 +:106EC000BFEF3B1203C0ED81FE811082F1E08F160F +:106ED000910409F409CF0E946F6DDC01CB01841984 +:106EE0009509A609B709F80126A937A940AD51AD02 +:106EF000281739074A075B0708F0F6CEC5010E943C +:106F0000054AF80184819581A681B7810196A11D6A +:106F1000B11D84839583A683B7830E946F6DF801AA +:106F2000FE966083718382839383C40102C080E0F4 +:106F300090E026960FB6F894DEBF0FBECDBFDF916E +:106F4000CF911F910F91FF90EF90DF90CF90BF9066 +:106F5000AF909F908F907F906F905F904F903F90F9 +:106F60002F900895CF93DF93FC0101900020E9F763 +:106F70009F01281B390B285F3F4F2138310570F5E1 +:106F8000EC010E947F64882349F18091A4099091CB +:106F9000A509019611F481E090E09093A5098093F2 +:106FA000A4098091A4099091A5099093290980933F +:106FB0002A0947E050E064E279E0CE010E94B8641B +:106FC000FC01E25EF64F1682AC014450510964E2C6 +:106FD00079E082E8DF91CF910C94D86480E0DF9172 +:106FE000CF910895CF92DF92EF92FF920F931F936C +:106FF000CF93DF936C018B017B0182E0E80EF11CE3 +:10700000C0E0D0E0C6018C0F9D1F0E942A83F701CB +:1070100081937F012196C430D105A1F7F8019281B7 +:10702000992319F081E09F3F09F480E090E0DF911F +:10703000CF911F910F91FF90EF90DF90CF90089527 +:10704000EF92FF920F931F93CF93DF937C018B01FD +:107050000E5F1F4FC0E0D0E0F80161918F01C701C2 +:107060008C0F9D1F0E9432832196C430D105A1F759 +:10707000DF91CF911F910F91FF90EF900895FC0148 +:10708000DC018D918111FDCF40E050E020E030E047 +:107090008AE09191992301F1243031055CF59E320B +:1070A00071F44F3F510509F02CF5DB01A20FB31F1E +:1070B00012964C932F5F3F4F40E050E0EACF849F01 +:1070C000D001859FB00D1124492F990F550B4053C6 +:1070D00051094A0F5B1FDDCF4F3F510509F054F4B2 +:1070E000243031053CF4FB01E20FF31F428381E0C1 +:1070F00090E0089580E090E008954F925F926F9243 +:107100007F928F929F92AF92BF92CF92DF92EF9237 +:10711000FF920F931F93CF93DF93CDB7DEB76397A3 +:107120000FB6F894DEBF0FBECDBF7C015B013A0104 +:10713000FB0120E080E090E06AE03191332309F127 +:1071400040ED430F4A3080F4689FA001699F500DC5 +:107150001124CA01C097830F911D37FD9A958F3F67 +:10716000910559F350F313C03E3289F4233079F07E +:10717000D301A20FB11D12968C932F5F80E090E097 +:10718000DCCF233021F4F301858381E021C0F701B6 +:10719000428153816481758180910609909107092C +:1071A000A0910809B0910909481759076A077B0798 +:1071B00009F499C10E946F6D8701085F1F4F6F70BE +:1071C00077277C5FC8010E94114C813019F080E064 +:1071D00090E0FCC180E293E09A838983F701828189 +:1071E0009381A481B5818B839C83AD83BE8345E36A +:1071F00050E0BE016F5F7F4FC8010E94114D892B87 +:1072000019F4C12CD12C6AC10E946F6DF7017783EC +:1072100066837627672776277A83698342E050E082 +:10722000BE016F5F7F4FC8010E94664881E090E019 +:107230009E878D8742E050E0BE01635F7F4FC801AB +:107240000E94664880E091E09E878D8742E050E092 +:10725000BE01635F7F4FC8010E9466481E861D867F +:1072600042E050E0BE01635F7F4FC8010E94664864 +:1072700042E050E0BE01635F7F4FC8010E94664854 +:1072800042E050E0BE01635F7F4FC8010E94664844 +:107290004501F5018081882301F164015601F60161 +:1072A00081912F01882321F08E3211F06201F6CFF7 +:1072B000C818D9081C141D0474F4CF8641E050E0AE +:1072C000BE01615F7F4FC8010E946648A601B401FC +:1072D000C8010E9466484201DCCF1F8641E050E0B1 +:1072E000BE01615F7F4FC8010E946648C12CDD244A +:1072F000D394DE86CD8642E050E0BE01635F7F4FCF +:10730000C8010E946648DE86CD8642E050E0BE019C +:10731000635F7F4FC8010E946648C8010E943E4CCF +:10732000892B09F46ECFE3E0AE2EB12C230122E0CD +:10733000420E511C0E946F6D3B014C01C8010E941E +:10734000984B18161906B4F00E946F6DDC01CB0142 +:1073500086199709A809B909813A9F40A105B10585 +:10736000E0F40E94543161E070E080E090E00E941F +:10737000356DE4CFF7014281538164817581808D41 +:10738000918DA28DB38D481759076A077B0749F481 +:10739000848D958DC59729F409C0CC24CA94DC2C22 +:1073A00092C05EEFC52EDD24DA948DC0F70181A175 +:1073B00092A10C970CF49FC04CE050E0BE016F5FAF +:1073C0007F4FC8010E94504B8B819C819827892751 +:1073D00098279A8B898B29813A8132272327322754 +:1073E000F701468157812417350709F07FC097FFC1 +:1073F0007DC08F709270892B09F0E3C06F80788414 +:107400007624672476246114710409F4D5C0C12C54 +:10741000D12C8D819E81982789279827C816D90657 +:1074200008F46EC0812C912C41E050E0BE016D5EED +:107430007F4FC8010E94504B8B89982F907C09F098 +:1074400091C0811185C042E050E0BE01615F7F4F75 +:10745000C8010E94504B42E050E0BE01635F7F4F85 +:10746000C8010E94504BC8010E946F4BC8010E9486 +:107470006F4BC8010E946F4BC8010E946F4B42E0E6 +:1074800050E0BE016F5E7F4FC8010E94504B8F8558 +:1074900098898115914009F06DC0CD84DE84DC248B +:1074A000CD24DC2481E0C816D10409F063C08989A9 +:1074B0009A898115944009F07AC044E050E0B20105 +:1074C000C8010E94504B0E94543181E0A81AB108B3 +:1074D00029F0FFEFCF16DF0609F42CCFC8010E9478 +:1074E000054AC60173C08EEF9FEF70C04CEFC42EEB +:1074F000DD24DA94E8CF9DEFC92EDD24DA94E3CFC2 +:1075000041E050E0BE01635F7F4FC8010E94504BD5 +:107510008D85882351F08D859FEF980F9D87882357 +:1075200021F0C8010E946F4BF6CF8D858111E8CF05 +:10753000C8010E946F4BC8010E946F4BC8010E9496 +:107540006F4BC8010E946F4BFFEFCF1ADF0A61CF6C +:107550008B899FEF980F9B8B882341F0C8010E9475 +:107560006F4BF6CFC8010E946F4B1B8A8B8981112C +:107570005BCF69CFC12CD12C89899A89982789271B +:107580009827C816D90638F4C8010E946F4BFFEF40 +:10759000CF1ADF0AF1CF2FEF821A920A681479040A +:1075A00009F042CF26EFC22EDD24DA948CCF77EF9C +:1075B000C72EDD24DA9487CF3AEFC32EDD24DA9488 +:1075C00082CF8BEFC82EDD24DA947DCF63960FB681 +:1075D000F894DEBF0FBECDBFDF91CF911F910F9109 +:1075E000FF90EF90DF90CF90BF90AF909F908F90E3 +:1075F0007F906F905F904F9008951F93CF93DF938C +:10760000282F30E0F901EA56F54F8491F901EA504C +:10761000F54FD491F901E45CF44FC491CC23C1F04F +:10762000162F81110E94A36CEC2FF0E0EE0FFF1FCC +:10763000E458F54FA591B4919FB7F894111104C087 +:107640008C91D095D82302C0EC91DE2BDC939FBFA8 +:10765000DF91CF911F9108951F93CF93DF931F92D6 +:107660001F92CDB7DEB76CE271E080E090E00E943F +:10767000356D1FB7F8948091530B811127C0E1E756 +:10768000FBE08491EBE2FBE09491E82FF0E0EE0F59 +:10769000FF1FE452F54FA591B491EC91E92321F439 +:1076A00061E085E30E94FD3A61E085E30E94F96CA8 +:1076B0008CB580618CBD8CB580648CBD61E084E349 +:1076C0000E94F96C61E083E30E94F96C8091530B96 +:1076D0008F5F8093530B1FBF249ACE0101960E94A7 +:1076E000425789819A810E94FC4267E080E090E0E5 +:1076F0000E94142A65E58BE190E00E94142A65E55A +:107700008AE190E00E94142A0E94FB4280E090E40B +:107710009093790B8093780B80E090E69093810BA7 +:107720008093800B80E098E490937B0B80937A0B9E +:1077300080E098E69093830B8093820B80E090E545 +:1077400090937D0B80937C0B80E090E79093850B6A +:107750008093840B80E098E590937F0B80937E0B61 +:1077600080E098E79093870B8093860B0F900F90A3 +:10777000DF91CF911F910895AF92BF92CF92DF9288 +:10778000EF92FF920F931F93CF93DF931F921F925D +:10779000CDB7DEB75C018B016A0179010E942C3BF9 +:1077A000CE0101960E94425789819A810E94FC4233 +:1077B00046E050E06DE47BE089E090E00E94E5293E +:1077C000C50102960E94E642C60102960E94F4425A +:1077D000C70102960E94ED420E94FB42F80182819D +:1077E0009381A481B58180930C0990930D09A09396 +:1077F0000E09B0930F090F900F90DF91CF911F9159 +:107800000F91FF90EF90DF90CF90BF90AF900895D1 +:10781000CF92DF92EF92FF92CF93DF93CDB7DEB797 +:1078200068970FB6F894DEBF0FBECDBFFA0120E215 +:1078300033E03A8329835FEF5B835C835D831E8241 +:1078400038872F83C280D380E480F580C986DA86AA +:10785000EB86FC863E872D87FB0142815381648144 +:1078600075814F87588B698B7A8B3C8B2B8BFC01F6 +:1078700082819381A481B5818D8B9E8BAF8BB88FD4 +:107880009E012F5F3F4FAE01495F5F4FBE01635FB7 +:107890007F4FCE0143960E94BC3B68960FB6F8948A +:1078A000DEBF0FBECDBFDF91CF91FF90EF90DF9095 +:1078B000CF9008950F931F93CF93DF93CDB7DEB78B +:1078C00068970FB6F894DEBF0FBECDBFFB01DC0199 +:1078D00012964D915D916D917C9115974D8B5E8BBC +:1078E0006F8B788F80E293E09A83898321E0288FE1 +:1078F0000D891E892F89388D0B831C832D833E8330 +:1079000098878F83028113812481358109871A87A3 +:107910002B873C879E878D874F87588B698B7A8B07 +:10792000AE014F5F5F4FBE01695F7F4FCE010D9685 +:107930000E94083C68960FB6F894DEBF0FBECDBF1C +:10794000DF91CF911F910F910895CF93DF93CDB722 +:10795000DEB762970FB6F894DEBF0FBECDBFFC0155 +:1079600082819381A481B5818F87988BA98BBA8BF3 +:1079700020E233E03A83298341E04A8B4F855889DE +:1079800069897A894B835C836D837E8338872F83F3 +:1079900089879A87AB87BC87BE016F5F7F4FCE0117 +:1079A00007960E945A3C62960FB6F894DEBF0FBE4F +:1079B000CDBFDF91CF9108950C940F5069E27DE027 +:1079C00087E698E00E949B5FE0E0F0E01994CF9397 +:1079D000C1E068EE73E080E090E00E94356D4AE01F +:1079E00050E06C2F87E698E00E946C60CF5FC43156 +:1079F00081F7CF9108950F931F93CF93DF93CDB766 +:107A0000DEB728970FB6F894DEBF0FBECDBF0E9439 +:107A1000514F62E87BE087E698E00E949B5FCE01D1 +:107A200001960E94025BCE0101960E94AC5A00E2D0 +:107A300013E01A8309831B821C821D821E82CE01E1 +:107A400007960E9442578F8198850E94FC4244E02D +:107A500050E0BE016D5F7F4F81E090E00E94B5294C +:107A60000E94FB42CE0101960E94AC5A1A83098300 +:107A70001B821C821D821E82CE0107960E944257E5 +:107A80008F8198850E94FC4244E050E0BE016D5F0A +:107A90007F4F85E090E00E94B5290E94FB42CE0115 +:107AA00001960E94AC5A68EA7BE087E698E00E9463 +:107AB0009B5F28960FB6F894DEBF0FBECDBFDF9157 +:107AC000CF911F910F9108955F926F927F928F9245 +:107AD0009F92AF92BF92CF92DF92EF92FF920F935D +:107AE0001F93CF93DF93CDB7DEB761970FB6F894AE +:107AF000DEBF0FBECDBF8091760B9091770B0097C4 +:107B000009F4B6C46CEB74E00E94813190935D0B74 +:107B100080935C0B009709F4A9C00E940F35082FD1 +:107B200010E00115110509F4A1C0000F111F000F8D +:107B3000111F8091550B9091560B892B09F085C030 +:107B4000C8010E94E0799093560B8093550B1092D8 +:107B5000E50B1092E40B10925F0B10925E0B1092EB +:107B6000E30B1092E70B1092E60B7801013022E054 +:107B700012071CF0E12CA2E0FA2EC70101960E9428 +:107B8000E0799093E90B8093E80B9093E20B80935C +:107B9000E10B8E0D9F1D9093DC0B8093DB0B0E94FD +:107BA0006F6D6093DD0B7093DE0B8093DF0B909312 +:107BB000E00B80E090E0E091E80BF091E90BE80F3A +:107BC000F91F10820196E816F906ACF782E090E002 +:107BD0009093E50B8093E40B80E98093C9001092A9 +:107BE000C8001092CD0083E08093CC008EE080939B +:107BF000CA00F0920702E09206022091E80B309151 +:107C0000E90B8091060290910702820F931F9093D7 +:107C1000DC0B8093DB0B232B09F4DFC262E57DE0F4 +:107C200087E698E00E949B5F4AE050E0B80187E653 +:107C300098E00E94656087E698E00E94BE6086EB4F +:107C400090E29093DA0B8093D90B68E57EE087E6AB +:107C500098E00E949B5F4AE050E0B80187E698E018 +:107C60000E94656087E698E00E94BE6062EC74E066 +:107C70008091760B9091770B0E9481318C01009757 +:107C8000B1F00E940F358111AFC211C06CE37EE0EC +:107C900087E698E00E949B5F4AE050E0B70187E6E4 +:107CA00098E00E94656087E698E00E94BE600091BF +:107CB000760B1091770B66EC74E0C8010E9481315D +:107CC00090935B0B80935A0B6DEC74E0C8010E949B +:107CD000813190939A0580939905009709F49AC190 +:107CE00020919B05211196C1DC011696ED90FC9028 +:107CF000179780918A0590918B05892B09F0C7C051 +:107D00006BEA7DE087E698E00E949B5F87E698E05B +:107D10000E94BE6081E190E00E94E0798C0188E1E0 +:107D2000F801818312821082108A17860E94005700 +:107D300010938B0500938A0583E190E00E94E0791F +:107D4000FC018AE198E4928B818B1683058314826F +:107D5000108289E0818311E012831383F0939305ED +:107D6000E093920580EA90E00E94E07990938F057D +:107D700080938E0588E290E00E94E07990938905D7 +:107D8000809388050E94005780918A0590918B0509 +:107D90000E946C2B81E00E94E45581116FC068E95C +:107DA0007DE087E698E00E946231C0908A05D0901D +:107DB0008B05C6010E946C2B40E060EFC6010E945B +:107DC000B745C6010E94692BE0918A05F0918B05A9 +:107DD000108368E77DE087E698E00E946231809139 +:107DE0008A0590918B050E942346882331F06CE62A +:107DF0007DE087E698E00E94623100919205109143 +:107E000093050E946F6D4B015C01F0E18F0EF7E26C +:107E10009F1EA11CB11CD8011596ED91FC911697DF +:107E20008FEF83871486DF0113963B961D92AE1762 +:107E3000BF07E1F7F801148277247394BE01665FEF +:107E40007F4FD80115968D919C9116970E94EF4611 +:107E5000181644F40E946F6D681579058A059B0514 +:107E600008F4EEC182EA9AE690938D0580938C0522 +:107E7000E0919205F0919305128209C06EE57DE0D4 +:107E800087E698E00E94623180E090E002C081E0E5 +:107E900090E0282F217020939B05892B31F06CE214 +:107EA0007EE087E698E00E949B5F10929105109219 +:107EB000900501E010E0E114F10409F4ABC08091F9 +:107EC0009B05882309F4A6C0F7018085863009F058 +:107ED0009BC0C080D180CE0101965C01460190E13B +:107EE000890E911C3501D6018C910E94E02D582EEF +:107EF000F60181810E94E02D5294F0EF5F228529E6 +:107F0000D5018D935D01B2E0CB0ED11C8C149D0484 +:107F100051F78091900590919105843191050CF075 +:107F200073C0880F991FE0918805F0918905E80FCB +:107F3000F91F11830083A0919005B091910543E052 +:107F4000AA0FBB1F4A95E1F780918E0590918F058E +:107F5000A80FB91F88E0F30101900D928A95E1F70F +:107F6000C0909005D090910563ED7DE087E698E0A4 +:107F70000E949B5F4AE050E0B60187E698E00E94CD +:107F800065606CEC7DE087E698E00E949B5F8091E5 +:107F900090059091910553E0880F991F5A95E1F74C +:107FA00020918E0530918F05820F931F0E94D45629 +:107FB00087E698E00E94BE606091900570919105FF +:107FC000E3E0660F771FEA95E1F780918E059091C7 +:107FD0008F05680F791FFB018081883261F48091E1 +:107FE0009205909193050E94525680918A05909136 +:107FF0008B050E949A2B8091900590919105019696 +:108000009093910580939005D7011296ED90FC9086 +:10801000139751CFE090760BF090770B60ED74E002 +:10802000C7010E9481318C019093EF0B8093EE0B7E +:1080300066ED74E0C7010E94813190935D078093E3 +:108040005C0710929605109295050115110519F11E +:10805000F801E680F78026E8A22E23E0B22E0091F8 +:10806000EE0B1091EF0B0115110571F0E114F10405 +:1080700059F0D70118968C918530A9F7C7010E9455 +:108080000F35823080F361C1F8018681978190932A +:10809000960580939505E090760BF090770B6FEB4B +:1080A00074E0C7010E9481318C019093590780933D +:1080B00058076DED74E0C7010E9481319093590B10 +:1080C0008093580B01151105C1F0D80116960D913A +:1080D0001C9117970115110581F0F80180858630F4 +:1080E00031F41A830983CE0101960E946D23D801D1 +:1080F00012960D911C911397EDCF67E07EE087E615 +:1081000098E00E949B5F6FEF7DE087E698E00E9419 +:108110009B5F81E02091EE0B3091EF0B232B09F454 +:1081200080E00E94045066EF7DE087E698E00E94C0 +:108130009B5F81E02091580730915907232B09F468 +:1081400080E00E9404506DEE7DE087E698E00E949A +:108150009B5F81E020915A0B30915B0B232B09F43C +:1081600080E00E94045066EE7DE087E698E00E9481 +:108170009B5F81E02091580B3091590B232B09F420 +:1081800080E00E9404506DED7DE087E698E00E945B +:108190009B5F81E02091990530919A05232B09F48A +:1081A00080E00E94045087E698E00E94BE600E9432 +:1081B000C42D6B017C0168ED7DE087E698E00E94AC +:1081C0009B5F2AE0B701A60187E698E00E94D45F92 +:1081D00087E698E00E94BE604BC16BE37DE087E6D6 +:1081E00098E00E9462312BCD61E0C8010E94743199 +:1081F000FC01E184F2849091600B992359F0809105 +:1082000070008E7F809370001092600B10920202BB +:108210001092010283E08093000291110E94DC44DD +:10822000C7010E94044501E010E0E016F1060CF4DD +:108230002DCD60E0C8010E943A450F5F1F4FF5CF7A +:1082400067E0CE010A960E9466459989891373C03A +:1082500067EE73E087E698E00E94C260F8018081D3 +:10826000811138C0858196810E942346BE01665FD8 +:108270007F4FD80115968D919C9116970E94D945F4 +:1082800040E064EBF801858196810E94B745D801F2 +:108290001596CD90DC901697C6010E947345C601D5 +:1082A0000E946C2B67E882E199E00E94EB2A60E86B +:1082B00082E199E00E94EB2AC6010E94692BC60167 +:1082C0000E947345D82EF801858196810E9423462D +:1082D000D5FE38C0AE014F5F5F4FBE01665F7F4F76 +:1082E000C8010E945846D8011196DC908A858031D9 +:1082F00009F4B9C0BE01665F7F4FC8010E94C14644 +:108300008D1518F4F80181810BC08A85803111F434 +:108310008CE006C0BE01665F7F4FC8010E94C14667 +:10832000D80111968C93119714968C9114978F5FA6 +:1083300014968C9383CD6DEE73E087E698E00E94EF +:10834000C2607CCDD8017C92C5CFBA82A982FC8262 +:10835000EB82CE0101960E941522CE0101960E9469 +:108360004421882309F479C060E070E0CE010196D1 +:108370000E94AD218C0197FF07C01195019511094D +:1083800088248394912C02C0812C912C60E0CE0132 +:1083900001960E940222C82ED12C8985853019F0C1 +:1083A000863031F15AC0CD2829F462E0CE01019621 +:1083B0000E94DB2161E0802F0E94F96C60E0802F39 +:1083C0000E94FD3A64E27EE087E698E00E949B5FAF +:1083D0004AE050E0B80187E698E00E9465606FE1EE +:1083E0007EE087E698E00E949B5F6DE17EE031C011 +:1083F000702E61E0802F0E94F96C61E0892821F0E5 +:10840000CA94CD2829F403C0CA94CD2809F060E0AD +:10841000C62ED12C872D0E94FD3A68E17EE087E6CA +:1084200098E00E949B5F4AE050E0B80187E698E040 +:108430000E94656066E17EE087E698E00E949B5FAF +:108440004AE050E0B60187E698E00E94656064E18A +:108450007EE087E698E00E949B5FD7011296ED9040 +:10846000FC901397FCCDBCE0BD1508F44BCF50CF6A +:1084700061960FB6F894DEBF0FBECDBFDF91CF91EE +:108480001F910F91FF90EF90DF90CF90BF90AF9032 +:108490009F908F907F906F905F900895CF93DF9320 +:1084A0001F92CDB7DEB76983DC01ED91FC910280AC +:1084B000F381E02D41E050E0BE016F5F7F4F1995E1 +:1084C0000F90DF91CF910895DC01ED91FC91068C26 +:1084D000F78DE02D199591E089270895862F08954D +:1084E00081E086270895CF93DF931F92CDB7DEB743 +:1084F00089832091610B3981E091620BF091630BCC +:10850000822F90E080959095F89400800822008258 +:108510004BE000C05DE000005A95E9F700800822BA +:108520000894379508F4022A00824A9599F77894BE +:108530000F90DF91CF9108950F931F93CF93DF9307 +:108540001F92CDB7DEB78C01DC01ED91FC91008468 +:10855000F185E02D1995892B51F0BE016F5F7F4F9A +:10856000F80184850E94804A898190E002C08FEFE3 +:108570009FEF0F90DF91CF911F910F910895FC0114 +:1085800084850C94D14ACF93DF931F92CDB7DEB789 +:1085900041E050E0BE016F5F7F4FFC0184850E9487 +:1085A000D14A181619061CF4898190E002C08FEF99 +:1085B0009FEF0F90DF91CF910895FC018485843067 +:1085C00011F00C94D74880E090E0089544E050E02A +:1085D000BC018FE090E00C94E52944E050E0BC0140 +:1085E00085E090E00C94E52944E050E0BC0181E096 +:1085F00090E00C94E52908958CBD9DBD08956F927F +:108600007F928F929F92AF92BF92CF92DF92EF9222 +:10861000FF921F93CF93DF931F921F92CDB7DEB7C8 +:108620005C013B016A01FC011485143041F481E0D6 +:1086300090E0F5019383828380E090E05BC07A0153 +:108640004130584018F0E12C88E0F82ECE01019618 +:108650000E94425789819A810E94FC42812F0E9488 +:108660001D5C4C0163E070E0812F0E94624A8731FB +:1086700011F08C3121F48E149F0440F302C0E12CE0 +:10868000F12CCE0101960E94425789819A810E9465 +:10869000FC429701A30160E070E0812F0E94B85B6B +:1086A00060E270E0812F0E94325762E070E0812F1B +:1086B0000E94624A84FD14C063E070E0812F0E9432 +:1086C000624A811104C0812F0E949649B0CFCE0129 +:1086D00001960E94425789819A810E94FC42E5CF0F +:1086E00040E162E070E0812F0E948C49EF2809F49C +:1086F0009ECFC6010F900F90DF91CF911F91FF90F9 +:10870000EF90DF90CF90BF90AF909F908F907F9031 +:108710006F9008958F929F92AF92BF92DF92EF92E7 +:10872000FF920F931F93CF93DF931F921F92CDB7AA +:10873000DEB7FC012485243009F082C05A018B0188 +:108740007C01D12C8D2D0E94F24B811103C0F701C9 +:10875000D48607C08B7F8831D1F3D394F4E0DF1245 +:10876000F1CFF7018485843009F46AC020910302B7 +:10877000309104022F5F3F4F11F420E030EC309332 +:10878000040220930302409103025091040220E06E +:1087900061E00E94B949F80182818F3F51F48381E1 +:1087A0008F3F99F484818F3F81F485818F3F69F4F5 +:1087B00044C081110AC0F8018381811106C08481FF +:1087C000811103C085818823C1F1A114B104A9F1ED +:1087D000F701D484CE0101960E94425789819A8183 +:1087E0000E94FC42B8016E5F7F4F8D2D0E94994C14 +:1087F000B5018D2D0E94884C64E070E08D2D0E94A3 +:1088000032570E946F6D4B015C01F4E98F0EF1E16C +:108810009F1EA11CB11CC7010E944757873141F11F +:1088200061E070E080E090E00E94356D0E9454317C +:10883000C7010E944757811106C084E0F701848771 +:1088400080E090E01DC00E946F6D86169706A80616 +:10885000B90608F7F70184850E94964984E0F7017C +:1088600084876DE77FE087E698E00E946231E8CF79 +:1088700062E77FE087E698E00E94623181E090E065 +:108880000F900F90DF91CF911F910F91FF90EF907C +:10889000DF90BF90AF909F908F90089578941F9233 +:1088A0000F920FB60F9211240BB60F92CF92DF9258 +:1088B000EF92FF920F931F932F933F934F935F93EA +:1088C0006F937F938F939F93AF93BF93CF93DF93D8 +:1088D000EF93FF93809170008E7F809370000FE381 +:1088E00010E08BE1E82EF12C9BE2C92ED12CC09137 +:1088F000640BD091650B2097F9F40332110508F44D +:108900003BC003521109E091620BF091630B90811F +:108910002091610B822F8095982390839BE0D70153 +:108920001197F1F79150D9F78081822B8083C6018E +:108930000197F1F780E00DC00B301105E8F00B5006 +:108940001109E091660BF091670BEC0FFD1F319759 +:1089500080810E9473422196D093650BC093640B73 +:1089600080910102909102028C179D0708F0BFCF01 +:108970001092650B1092640B80917000816080935F +:108980007000FF91EF91DF91CF91BF91AF919F91D7 +:108990008F917F916F915F914F913F912F911F9197 +:1089A0000F91FF90EF90DF90CF900F900BBE0F9044 +:1089B0000FBE0F901F90189581E08093600B8091FF +:1089C0000002282F30E0F901E45CF44FE491F0E07C +:1089D000EE0FFF1FE458F54F459154915093630BF0 +:1089E0004093620BF901EA50F54FE491E093610B7B +:1089F00061E00E94F96C83E08093B100E0E7F0E071 +:108A00008081816080830895CF93DF9318161906C3 +:108A100044F0809170008E7F809370001092600B04 +:108A200019C0EC018091660B9091670B0E94787AD7 +:108A3000CE01C130D24014F080E092E09093020267 +:108A4000809301020E94E0799093670B8093660BFC +:108A5000892B29F4109202021092010208C0809121 +:108A6000600B811104C0DF91CF910C94DC44DF9145 +:108A7000CF910895FF920F931F93CF93DF938C01B3 +:108A8000F62E8091600B811102C00E94DC44E80147 +:108A90002197C11582E0D80798F480910102909146 +:108AA00002028017910718F4C8010E9404458091C2 +:108AB000660B9091670B009719F0C80FD91FF882C9 +:108AC000DF91CF911F910F91FF900895DC0180E01D +:108AD000615040F09D91E82FE927F0E0EE58F14F0A +:108AE0008491F6CF0895AF92BF92CF92DF92EF922A +:108AF000FF921F93CF93DF93EC010E946F6D6B0188 +:108B00007C0128EEC20E23E0D21EE11CF11C8BE496 +:108B1000A82EB12C0E946F6D6C157D058E059F05EA +:108B200098F460EFCE010E94782BCE010E941C2B9E +:108B3000182F80FF11C0EF85F889309709F019953B +:108B4000C5010197F1F7E6CF81E08A8362EE74E018 +:108B500087E698E00E944056812FDF91CF911F91C8 +:108B6000FF90EF90DF90CF90BF90AF9008950F935C +:108B70001F93CF93DF93EC01162F042F0E947345B0 +:108B8000002319F0CE010E949A2BCE010E946C2B7B +:108B900065EA82E199E00E94EB2A612F82E199E087 +:108BA0000E94EB2ACE01DF91CF911F910F910C947F +:108BB000692BEF92FF920F931F93CF93DF938C015A +:108BC0007B0140E065E50E94B745E70188E0E80EDB +:108BD000F11C699140E0C8010E94B745CE15DF0540 +:108BE000C1F7DF91CF911F910F91FF90EF90089502 +:108BF0001F93CF93DF93EC01162F0E947345CE0194 +:108C00000E946C2B62ED82E199E00E94EB2A612FB9 +:108C100070E06095709584E0660F771F8A95E1F7A4 +:108C2000612B82E199E00E94EB2ACE010E94692B20 +:108C3000CE010E941C2B181711F084E08A83DF916B +:108C4000CF911F9108951F93CF93DF93EC010E9462 +:108C50007345CE010E948F2B60E0CE010E94F84543 +:108C6000CE010E947345CE010E946C2B64EB82E121 +:108C700099E00E94EB2ACE010E94692BCE010E944E +:108C80007345182F82FF02C082E08A83888188237F +:108C900041F0CE010E948F2B682F6160CE010E94AF +:108CA000F84511FB882780F9DF91CF911F91089536 +:108CB000CF92DF92EF92FF920F931F93CF93DF93A8 +:108CC0007C01EB018A01FC01858196810E9423468B +:108CD0008823C9F1BE01F701858196810E94D9459B +:108CE00040E06EEBF701858196810E94B745E8016F +:108CF0006801F9E0CF0ED11CF70105811681C8018A +:108D00000E947345C8010E946C2B66E982E199E0DC +:108D10000E94EB2AC8010E94692BC8010E9473457A +:108D200061EEC8010E94782BC8010E941C2B899318 +:108D3000CC16DD0609F7F701858196810E9423464E +:108D400091E0813009F090E0892FDF91CF911F9160 +:108D50000F91FF90EF90DF90CF900895CF93DF9326 +:108D6000EA010E945846882339F068E0CE010E944B +:108D7000664591E02885281390E0892FDF91CF91F7 +:108D80000895CF93DF93CDB7DEB729970FB6F89448 +:108D9000DEBF0FBECDBFAE014F5F5F4F0E94AE463C +:108DA000882389F08D818F3361F020F48F3159F45D +:108DB00089E00CC08F3519F08F3739F004C08BE093 +:108DC00005C08AE003C080E001C08CE029960FB6A0 +:108DD000F894DEBF0FBECDBFDF91CF9108956F92A3 +:108DE0007F928F929F92AF92BF92CF92DF92EF923B +:108DF000FF920F931F93CF93DF93FC0124852111E2 +:108E00009EC0872E762EEC010E942346811108C059 +:108E10006DEE74E087E698E00E9440568FEF90C0B8 +:108E2000CE010E94734540E060EFCE010E94B7453D +:108E3000C12CD12C66246A94EE24E394F12C0C2DE1 +:108E400006950695069510E08C2D8770570101C098 +:108E5000AA0C8A95EAF78B85082E000C990BC81688 +:108E6000D90634F4FE01E00FF11F93809A2006C06A +:108E700099249394C816D90609F0912CCE010E942A +:108E80007345CE010E946C2B68E782E199E00E9455 +:108E9000EB2A911002C060E001C060E882E199E035 +:108EA0000E94EB2ACE010E94692BCE010E947345DD +:108EB000282F2074982F907885FF11C02223A9F0C5 +:108EC00042E050E0682F87E698E00E946C6069EF0E +:108ED00074E087E698E00E9440568EEF31C0211181 +:108EE00004C0911104C06C2C08C0992331F0FE011C +:108EF000E00FF11F83818A2907C0FE01E00FF11FF7 +:108F00008A2D8095938189238383FFEFCF1ADF0A0F +:108F100080E4C816D10409F092CF6B86EFEF6E1291 +:108F200002C081E08C87DE011396E72DF82D2B9689 +:108F30008D918193CA17DB07D9F781E001C080E0EA +:108F4000DF91CF911F910F91FF90EF90DF90CF9025 +:108F5000BF90AF909F908F907F906F900895AF9249 +:108F6000BF92CF92DF92EF92FF920F931F93CF9316 +:108F7000DF93CDB7DEB7AF970FB6F894DEBF0FBE65 +:108F8000CDBF7C015B016A0100E213E01A83098313 +:108F90001B821C821D821E82CE0109960E940749F7 +:108FA0001BA70AA71CA61DA61EA61FA680910C091A +:108FB00090910D09A0910E09B0910F098EA39FA366 +:108FC000A8A7B9A78B839C83AD83BE8318861F8215 +:108FD000AE01465D5F4FB501CE0101960E947D381E +:108FE00081309105B1F4D701ED91FC910684F785AC +:108FF000E02D1DA30CA38CA59DA5AEA5BFA58EA39A +:109000009FA3A8A7B9A7A601BE016C5D7F4FC701AA +:109010001995AF960FB6F894DEBF0FBECDBFDF91A6 +:10902000CF911F910F91FF90EF90DF90CF90BF9065 +:10903000AF9008950895CF93DF931F92CDB7DEB719 +:109040006983DC01ED91FC910280F381E02D41E028 +:1090500050E0BE016F5F7F4F19950F90DF91CF9168 +:109060000895FC01818D928D0895FC018489958974 +:10907000089520E233E0FC0131832083FB01408925 +:10908000518962897389FC014283538364837583A8 +:109090000895DC01ED91FC91048CF58DE02D19947F +:1090A00080E00895FC019485FB018485981303C03A +:1090B00081E0943009F480E0089521E0FC0184858A +:1090C000843009F420E0822F089508958F929F92B2 +:1090D000AF92BF92DF92EF92FF920F931F93CF93C5 +:1090E000DF931F921F92CDB7DEB77C014B018A013F +:1090F000FC01A688B788D08CCE0101960E94425709 +:1091000089819A810E94FC428D2D0E941D5C8017EE +:10911000910720F48D2D0E941D5C8C019801A40103 +:10912000B5018D2D0E94B85B0E94FB42F701868934 +:109130009789800F911F978B868BC8010F900F9096 +:10914000DF91CF911F910F91FF90EF90DF90BF9033 +:10915000AF909F908F900895CF93DF93FC0124856B +:109160002430D1F0EC010E944757843181F08823EC +:1091700071F0883161F08C3161F4E881F98100840B +:10918000F185E02DCE01199521E0892B19F420E01D +:1091900001C021E0822F01C080E0DF91CF910895CE +:1091A0008EBD00000DB407FEFDCF8EB50895DF9291 +:1091B000EF92FF920F931F93CF93DF931F921F9213 +:1091C000CDB7DEB7D82ECE0101960E9442578981D5 +:1091D0009A810E94FC42E12CF12C8D2D0E942F2AB5 +:1091E0008C01892B21F08D2D0E942F2A7C010E15D8 +:1091F0001F0599F70E94FB42C8010F900F90DF9165 +:10920000CF911F910F91FF90EF90DF900895FC0197 +:109210001382128288EE93E0A0E0B0E0848395830D +:10922000A683B78382E393E09183808380E293E017 +:1092300097878687108A118A128A138A84E0808F22 +:109240000895AF92BF92CF92DF92EF92FF920F9369 +:109250001F93CF93DF93CDB7DEB7AF970FB6F894D8 +:10926000DEBF0FBECDBF7C015B016A0100E213E0EF +:109270001A8309831B821C821D821E82CE010996DD +:109280000E9407491BA70AA71CA61DA61EA61FA66B +:1092900080910C0990910D09A0910E09B0910F09D0 +:1092A0008EA39FA3A8A7B9A78B839C83AD83BE83FE +:1092B00018861F82AE01465D5F4FB501CE01019653 +:1092C0000E947D3881309105B1F4D701ED91FC9178 +:1092D0000488F589E02D1DA30CA38CA59DA5AEA542 +:1092E000BFA58EA39FA3A8A7B9A7A601BE016C5DC9 +:1092F0007F4FC7011995AF960FB6F894DEBF0FBE2A +:10930000CDBFDF91CF911F910F91FF90EF90DF9034 +:10931000CF90BF90AF9008959B0190E00496982F56 +:109320008827642F820F931F0C94142A1F93CF93C6 +:10933000DF931F921F92CDB7DEB7182FCE01019693 +:109340000E94425789819A810E94FC4260E170E04C +:10935000812F0E9432574FEF62E070E0812F0E9410 +:109360008C490E94FB420F900F90DF91CF911F918B +:109370000895DF92EF92FF920F931F93CF93DF93A5 +:109380001F921F92CDB7DEB7182FD62E7A01022F6B +:109390000E949649CE0101960E94425789819A8186 +:1093A0000E94FC424D2D402B60E070E0812F0E9416 +:1093B0008C49E114F10459F4E090700BF090710BBA +:1093C0008FEFE81AF80AF092710BE092700B4F2DB4 +:1093D00064E070E0812F0E948C494E2D65E070E0C2 +:1093E000812F0E948C4961E070E0812F0E943257EA +:1093F0000E94FB4281E00F900F90DF91CF911F916F +:109400000F91FF90EF90DF900895CF93DF93FC01D1 +:10941000808D843029F0EF010E94964984E0888F86 +:10942000DF91CF910895CF92DF92EF92FF920F9349 +:109430001F93CF93DF931F921F92CDB7DEB7FC012E +:10944000F484F4E0FF1699F18C01CE0101960E949C +:10945000425789819A810E94FC4268E070E08F2D1A +:109460000E9432570E94FB420E946F6D6B017C018B +:10947000C8010E9447578823B9F062E370E080E09A +:1094800090E00E94356D0E946F6DDC01CB018C195C +:109490009D09AE09BF09883E9340A105B10540F37F +:1094A000F80184850E94964984E0F80184870F9032 +:1094B0000F90DF91CF911F910F91FF90EF90DF9070 +:1094C000CF900895CF93DF9390E00496982F88274C +:1094D000EC01C60FD71F0E94B3298FE00E94D0482D +:1094E0008D2F0E94D0488C2F0E94D04880E00E948F +:1094F000D048C82F0E94B1298C2FDF91CF910895B9 +:10950000CF92DF92FF920F931F93CF93DF931F921F +:109510001F92CDB7DEB7F82E6B01CE0101960E94E7 +:10952000425789819A810E94FC4268E270E08F2D47 +:109530000E94624A082F10E069E270E08F2D0E94BD +:10954000624A702F6627682B21E030E0A6018F2D3C +:109550000E94705B0E94FB4281E090E00F900F90B0 +:10956000DF91CF911F910F91FF90DF90CF900895E1 +:10957000CF93DF931F92CDB7DEB7FC01218D328DE3 +:10958000232B49F0BE016F5F7F4F808D0E94804A80 +:10959000898190E002C08FEF9FEF0F90DF91CF9114 +:1095A00008958F929F92BF92CF92DF92EF92FF9297 +:1095B0000F931F93CF93DF931F921F92CDB7DEB708 +:1095C000B82E6B017A01CE0101960E944257898123 +:1095D0009A810E94FC42812C912C8B2D0E942F2A73 +:1095E0008C01892B21F08B2D0E942F2A4C0108150C +:1095F000190599F70115110599F463E070E08B2DB9 +:109600000E94624A8431D9F18823C9F101E010E057 +:109610008C3111F400E010E01195019511092FC073 +:10962000E016F1060CF487011016110644F568E205 +:1096300070E08B2D0E94624AE82EF12C69E270E006 +:109640008B2D0E94624AFE2CEE24E82A9801A60186 +:10965000B7018B2D0E94705BE00EF11E4F2D68E26A +:1096600070E08B2D0E948C494E2D69E270E08B2DAD +:109670000E948C4960E470E08B2D0E9432570E945A +:10968000FB42C8010F900F90DF91CF911F910F9176 +:10969000FF90EF90DF90CF90BF909F908F900895B4 +:1096A000CF93DF93FC01218D328D2115310519F403 +:1096B0008FEF9FEF11C0EC014217530708F0A9018B +:1096C000888D0E94D14A1816190694F7298D3A8D73 +:1096D000281B390B3A8F298FDF91CF9108950F9373 +:1096E0001F93CF93DF931F92CDB7DEB7FC01218D7F +:1096F000328D232B61F08C0141E050E0BE016F5FA1 +:109700007F4F808D0E94D14A181619061CF08FEFEA +:109710009FEF08C0F801818D928D0197928F818F04 +:10972000898190E00F90DF91CF911F910F91089563 +:109730000F931F93CF93DF93CDB7DEB728970FB664 +:10974000F894DEBF0FBECDBF8C01D80159968D9124 +:109750009C915A97892B41F0ED91FC910284F385FD +:10976000E02DC8011995F1CFF801808D0E94D748EE +:109770001816190654F548E050E0BE016F5F7F4FA0 +:10978000D80158968C910E94D14A18161906FCF4FB +:10979000D801509684E0FE01319601900D928A9591 +:1097A000E1F78D8190E0982F88272E81820F911DFF +:1097B000F801958B848B8F8190E0982F88272885DE +:1097C000820F911D928F818F02C080E090E02896D9 +:1097D0000FB6F894DEBF0FBECDBFDF91CF911F91C2 +:1097E0000F9108951F93CF93DF931F921F92CDB7D0 +:1097F000DEB7182FCE0101960E94425789819A81C7 +:109800000E94FC4263E070E0812F0E94624A182FA0 +:109810000E94FB42812F0F900F90DF91CF911F91FB +:109820000895EF92FF921F93CF93DF93FC01208D59 +:10983000243011F080E01CC07B01EC0110E0812F8E +:109840000E94F24B811102C0188F05C08831E1F3EC +:109850001F5F1430A1F7888D843061F3FD86EC869C +:109860001A8E198E20E0A70162E00E94B94981E0BA +:10987000DF91CF911F91FF90EF9008951F93CF93A9 +:10988000DF931F921F92CDB7DEB7FC01108DCE0182 +:1098900001960E94425789819A810E94FC4260E2AF +:1098A00070E0812F0E94325762E070E0812F0E94A9 +:1098B000624A84FD1DC062E070E0812F0E94624A0E +:1098C00083FF0BC048E162E070E0812F0E948C4969 +:1098D0000E94FB4280E090E015C00E94FB42CE0156 +:1098E00001960E94425789819A810E94FC42DCCFF6 +:1098F00040E162E070E0812F0E948C490E94FB42AF +:1099000081E090E00F900F90DF91CF911F9108952B +:10991000CF93DF93C82FD62F472F60E170E00E94CE +:109920008C494D2F61E170E08C2FDF91CF910C9429 +:109930008C4990E0982F882744E050E0845F9B4F4B +:109940000C94E529BF92CF92DF92EF92FF920F9392 +:109950001F93CF93DF9300D000D0CDB7DEB7FC01CB +:10996000208D243009F04CC06A017B018C01B12CA0 +:1099700063E070E08B2D0E94624A811103C0F80100 +:10998000B08E06C08831D9F3B394F4E0BF12F0CFA3 +:10999000F801808D8430A1F196E0E8E2F3E0DE0189 +:1099A000119601900D929A95E1F7F70193819F77B7 +:1099B0009C8394819D8395819E83B7016E5F7F4FC9 +:1099C0000E94994CB601F801808D0E94884CF801E4 +:1099D000808D90E0982F882746E050E0BE016F5FB1 +:1099E0007F4F8A5F9B4F0E94E529F801128E118EEE +:1099F00020E8A60162E0808D0E94B94981E001C0A3 +:109A000080E026960FB6F894DEBF0FBECDBFDF9183 +:109A1000CF911F910F91FF90EF90DF90CF90BF906B +:109A20000895DF92EF92FF920F931F93CF93DF93EE +:109A30001F921F92CDB7DEB7FB01DC0157961C9237 +:109A40001E9256972281211109C02381211106C03F +:109A50002481211103C025812223F1F041155105F4 +:109A6000D9F07A018F01FC01D08CCE0101960E94C1 +:109A7000425789819A810E94FC42B8016E5F7F4FF4 +:109A80008D2D0E94994CB7018D2D0E94884C0E940B +:109A9000FB4281E090E002C080E090E00F900F90E8 +:109AA000DF91CF911F910F91FF90EF90DF9008957C +:109AB00060E08DE00C94FD3A61E08DE00C94FD3A9D +:109AC000CF92DF92EF92FF920F931F93CF93DF938A +:109AD0006C01EB0109900020E9F72197C61BD70B19 +:109AE000C032D10514F0CFE1D0E08B01E12CF12C94 +:109AF000EC16FD0664F4F80161918F01C7018C0D2D +:109B00009D1D0E943283FFEFEF1AFF0AF1CF60E044 +:109B1000C6018C0F9D1FDF91CF911F910F91FF9078 +:109B2000EF90DF90CF900C943283CF93DF931F920E +:109B3000CDB7DEB71982892B21F0FB0162817381D9 +:109B400003C0BE016F5F7F4F86E390E00E94604DCF +:109B500060E370E187E698E00E949B5F0F90DF91E1 +:109B6000CF910895CF93DF93C0E0D0E060E0CE01C5 +:109B70000E9432832196C11582E0D807B9F760E2CE +:109B800070E187E698E0DF91CF910C949B5F0F9393 +:109B90001F93CF93DF93EB0182E59BE09F938F931D +:109BA00081E59BE09F938F9380E59BE09F938F934C +:109BB0008FE49BE09F938F938EE49BE09F938F9322 +:109BC0008DE49BE09F938F9383E095E09F938F9329 +:109BD0008B818F938A818F930E94D1882DB73EB756 +:109BE000205F3F4F0FB6F8943EBF0FBE2DBF0697C4 +:109BF00094F40A80DB81C02D62E470E187E698E08E +:109C00000E949B5FBE0187E698E0DF91CF911F9194 +:109C10000F910C94C2600E9455680DE41BE0C0E0F7 +:109C2000D0E0F80161918F01CE010E94328321962C +:109C3000C630D105B1F764E570E187E698E0DF91C1 +:109C4000CF911F910F910C949B5F0F931F93CF9314 +:109C5000DF93CDB7DEB72C970FB6F894DEBF0FBEFB +:109C6000CDBF8B0120E233E03A8329831B821C8223 +:109C70001D821E8238872F8319861A861B861C86B2 +:109C800083309105B9F144F48130910509F45BC04A +:109C9000029709F443C064C084309105B9F0059778 +:109CA00009F05EC0BE01695F7F4FF8018085918534 +:109CB0000E943F38BE01892B19F0695F7F4F02C0B7 +:109CC0006F5F7F4F82E190E00E942038BE01695FA4 +:109CD0007F4FF801868197810E943F38BE01892B12 +:109CE00019F0695F7F4F02C06F5F7F4F8EE090E099 +:109CF0000E942038BE01695F7F4FF8018481958101 +:109D00000E943F38BE01892B19F0695F7F4F02C066 +:109D10006F5F7F4F8AE090E00E942038BE01695F4C +:109D20007F4FF801828193810E943F38BE01892BC9 +:109D300019F0695F7F4F02C06F5F7F4F86E090E050 +:109D40000E9420380DC0BE016F5F7F4F86E090E01B +:109D50000E94203860E170E187E698E00E949B5FF6 +:109D600069E070E187E698E00E949B5F2C960FB651 +:109D7000F894DEBF0FBECDBFDF91CF911F910F9141 +:109D80000895CF93DF93CDB7DEB72C970FB6F89435 +:109D9000DEBF0FBECDBF1C821B821E821D828FEFD5 +:109DA0009FEF98878F838AE593E09A83898386E47F +:109DB00090E09A8789871C861B866FEE7FE087E696 +:109DC00098E00E949B5F6091760B7091770BCE01BB +:109DD00001960E94CE266FEFCE0101960E94AF251C +:109DE0006FED7FE087E698E00E949B5F2C960FB6B0 +:109DF000F894DEBF0FBECDBFDF91CF910895CF9312 +:109E0000DF93CDB7DEB769970FB6F894DEBF0FBE0C +:109E1000CDBF8FE290E09A838983FE01339687E17C +:109E2000DF011D928A95E9F76AEC7FE087E698E00A +:109E30000E949B5FAE014E5F5F4F66E08DE49BE04A +:109E40000E94F12D1E8668E175E0CE0101960E9408 +:109E50001288BE016F5F7F4F87E698E00E94C26064 +:109E6000CE0101960E94B2371E8660E275E0CE01F7 +:109E700001960E941288BE016F5F7F4F87E698E0CF +:109E80000E94C2606AE275E0CE0101960E943667C8 +:109E900069960FB6F894DEBF0FBECDBFDF91CF91AC +:109EA000089569E472E187E698E00E949B5F66E3AB +:109EB00072E187E698E00E949B5F68E272E187E6C4 +:109EC00098E00E949B5F60E272E187E698E00E9462 +:109ED0009B5F87E698E00E94BE6063E172E187E6DF +:109EE00098E00E949B5F63E072E187E698E00E9441 +:109EF0009B5F67EF71E187E698E00E949B5F60EEF1 +:109F000071E187E698E00E949B5F6CEC71E187E667 +:109F100098E00E949B5F67EB71E187E698E00E9402 +:109F20009B5F68EA71E187E698E00E949B5F69E9C0 +:109F300071E187E698E00E949B5F61E971E187E645 +:109F400098E00E949B5F66E871E187E698E00E94D6 +:109F50009B5F6CE771E187E698E00E949B5F64E796 +:109F600071E187E698E00E949B5F68E671E187E611 +:109F700098E00E949B5F6EE471E187E698E00E94A2 +:109F80009B5F6FE271E187E698E00E949B5F87E646 +:109F900098E00C94BE60AF92BF92CF92DF92EF92A6 +:109FA000FF920F931F93CF93DF936C017B018A0184 +:109FB0000E942A8381508E3FA0F45701C0E0D0E078 +:109FC00001501109C017D1077CF4C6018C0F9D1FE9 +:109FD0000E942A83F50181935F01882329F021964D +:109FE000F1CF80E090E005C0CE0DDF1D188281E04A +:109FF00090E0DF91CF911F910F91FF90EF90DF9054 +:10A00000CF90BF90AF900895882319F06DE570E16F +:10A0100002C06FE570E187E698E00C949B5FCF93F8 +:10A02000DF93CDB7DEB72C970FB6F894DEBF0FBE27 +:10A03000CDBF6FEA7FE087E698E00E949B5F87E6EE +:10A0400098E00E94BE6086E490E00E942A838B37ED +:10A05000A1F51C821B821E821D828FEF9FEF9887C5 +:10A060008F838AE593E09A83898386E490E09A87D8 +:10A0700089871C861B860E94A868CE0101960E94D3 +:10A08000C3559093770B8093760B892B19F462E973 +:10A090007FE015C06BE87FE087E698E00E949B5F59 +:10A0A00087E698E00E94BE600E94643D89ED9AE0D8 +:10A0B0000E94134A81E090E00CC06EE97FE087E6E1 +:10A0C00098E00E949B5F87E698E00E94BE6080E077 +:10A0D00090E02C960FB6F894DEBF0FBECDBFDF9197 +:10A0E000CF910895AF92BF92CF92DF92EF92FF92FD +:10A0F0000F931F93CF93DF93CDB7DEB7C058D1092D +:10A100000FB6F894DEBF0FBECDBF8E010F5B1F4FA1 +:10A11000D8011D921C92FE01ED5BFF4F2EE1DF0185 +:10A120001D922A95E9F7029774F0FB016281738111 +:10A130004FE150E0C8010E945688B80186E190E0E6 +:10A140000E94604D10C040E250E0B80186E190E00E +:10A150000E94CB4F892B39F440E250E063E271E179 +:10A16000C8010E94F17B8091520B1F928F938091C6 +:10A17000510B1F928F938091500B1F928F93809160 +:10A180004F0B1F928F9380914E0B1F928F93809154 +:10A190004D0B1F928F938CE295E09F938F931F92AC +:10A1A00080E48F93CE0101966C019F938F930E9460 +:10A1B00065886FE071E187E698E00E949B5FB801D7 +:10A1C00087E698E00E94C260B60187E698E00E94A8 +:10A1D000C26087E698E00E94BE600FB6F894A8952A +:10A1E00080916000886180936000109260000FBED3 +:10A1F0007E0191E6E90EF11CD70113961C921E9286 +:10A20000129788EE93E0A0E0B0E0F7018483958395 +:10A21000A683B78384E084878AEF92E0918380836A +:10A2200016870587108A178680E590E0928B818BD0 +:10A23000158A6AE376E288EF98E20E946F7C8C01CF +:10A240000FB6F894DEBF0FBECDBF892BE1F183E0DE +:10A2500090E00E94E079D8011D969C938E931C9704 +:10A26000FC01F182E0821282C7010E94AC4888237F +:10A2700019F0C7010E94134AD7011F966D917C9176 +:10A2800050975196AD90BC9052976115710569F049 +:10A29000CE0189589F4F0E94C460A501BE01695834 +:10A2A0007F4FC7010E948A4307C0F7016585768505 +:10A2B000A501C7010E94AF47181619060CF498C0F3 +:10A2C000C8010E94D12800E010E0F701E388F4887B +:10A2D00099E288E10FB6F894A895809360000FBECC +:10A2E000909360000115110509F469C0F8ECEF16B0 +:10A2F000F10409F056C063E071E187E698E00E943E +:10A300009B5FEB961FAE1EAEEB97ED961FAE1EAE9B +:10A31000ED978FEF9FEFEF969FAF8EAFEF9780E7B0 +:10A3200093E0E9969FAF8EAFE997C158DF4F19834D +:10A330000883CF57D040F8940E94A868CE0189586E +:10A340009F4F0E94C3559093770B8093760B789420 +:10A35000C8010E94D1288091760B9091770B892BB0 +:10A3600079F46CEE70E187E698E00E949B5F0E94B2 +:10A370006F6DDC01CB018856954CAF4FBF4F2DC0A0 +:10A3800061EE70E187E698E00E949B5F0E94643D69 +:10A390006AED70E187E698E00E949B5F82E090E0C2 +:10A3A000C7C062EC70E187E698E00E949B5F4AE0DC +:10A3B00050E0B70187E698E00E94656006C06FEA4A +:10A3C00070E187E698E00E949B5F0E946F6DDC0160 +:10A3D000CB0188579C4EAF4FBF4F8093720B909329 +:10A3E000730BA093740BB093750B85EF9FEFA0C018 +:10A3F000D7011D96BC901D971E96AC90DF92CF9210 +:10A400008BEA90E19F938F931F930F930E94F87CA8 +:10A41000DF92CF9286EA90E19F938F931F930F93E1 +:10A420000E94F87CD8011C96ED91FC911D9781E06B +:10A430008283DF92CF9283EA90E19F938F931F9361 +:10A440000F930E94F87CD8011C96ED91FC911D970A +:10A450001282AF92BF928DE690E19F938F931F93EC +:10A460000F930E94F87C88EA90E19F938F931F934B +:10A470000F930E94F87CF701148A138AD8011C9666 +:10A48000ED91FC911D97A080B1800FB6F894DEBFCE +:10A490000FBECDBF83E3C82ED12CD501ED91FC9129 +:10A4A0000084F185E02DC501199541975CF4B1E078 +:10A4B000CB1AD10839F064E170E080E090E00E94AE +:10A4C000356DEBCF6E01F7E7CF0ED11CDF92CF9247 +:10A4D00081E690E19F938F931F930F930E94157DC8 +:10A4E0000F900F900F900F900F900F90019709F021 +:10A4F000ECCEF60180819181D70154969C938E9386 +:10A500005397D12C80E08A3039F4BAE0DB1609F495 +:10A51000DCCE9AE0D92E03C08D3009F0D82EC801C8 +:10A520000E94BA7C8F3F79F7C8010E94D128CDCE16 +:10A53000C058DF4F0FB6F894DEBF0FBECDBFDF911E +:10A54000CF911F910F91FF90EF90DF90CF90BF9030 +:10A55000AF9008950E94725090939805809397054C +:10A5600089ED9AE00C94134A2F923F924F925F929A +:10A570006F927F928F929F92AF92BF92CF92DF9213 +:10A58000EF92FF920F931F93CF93DF93CDB7DEB778 +:10A5900028970FB6F894DEBF0FBECDBF8C016B01BC +:10A5A0000E94EC27019609F4D3C2D801ED91FC91E9 +:10A5B0000284F385E02DC80119957C018F3FBFEF20 +:10A5C0009B0709F4C5C2D801ED91FC910684F7857B +:10A5D000E02D682FC8011995B2E2EB16F10429F4B9 +:10A5E000B601C8010E940D28B5C2EDE2EE16F104D5 +:10A5F00029F0C701C0970A9708F044C1D801ED912E +:10A60000FC910284F385E02DC80119957C018F3FF0 +:10A61000BFEF9B0709F49CC28D9789F4D801ED9197 +:10A62000FC910284F385E02DC80119957C01019607 +:10A6300009F48EC2EFEFFFEFF887EF8304C021E04B +:10A6400030E038872F83C701C097A12CB12C0A971F +:10A65000C8F49AE0992E9A9CC0019B9C900D1124FD +:10A66000B701605371095B01A80EB91ED801ED91C5 +:10A67000FC910284F385E02DC80119957C01C097F7 +:10A680000A9748F3BEE2EB16F104D1F0C7018F7DC3 +:10A6900085349105A9F0EF81F885AE9EC001AF9E8B +:10A6A000900DBE9E900D1124092E000CAA0BBB0B21 +:10A6B000F60181879287A387B48782E08087D8C01C +:10A6C000B501BB0C880B990B0E9415852B013C0131 +:10A6D000FEE2EF16F104A1F5D801ED91FC910284A0 +:10A6E000F385E02DC80119957C01212C312C20E047 +:10A6F00030E040E251E4C301B2010E94CA854B013F +:10A700005C01B70160537109072E000C880B990B8F +:10A710000E941585A50194010E94FA832B013C013A +:10A72000B1E02B1A3108D801ED91FC910284F38538 +:10A73000E02DC80119957C01C0970A97C0F202C0AC +:10A74000212C312CC7018F7D8534910509F042C041 +:10A75000D801ED91FC910284F385E02DC801199593 +:10A760007C018B32910559F4D801ED91FC91028462 +:10A77000F385E02DC80119957C01B1E00CC08D97DF +:10A7800061F4D801ED91FC910284F385E02DC801BC +:10A7900019957C01BFEFBE8302C0E1E0EE83A12CDE +:10A7A000B12C8AE0982EC701C0978A309105B0F489 +:10A7B0009A9C90019B9C300D11245C01A20EB31E4B +:10A7C000D801ED91FC910284F385E02DC801199523 +:10A7D0007C01E9CFB1E0BE83A12CB12CEF81F885DB +:10A7E000BF01FF0F880B990B0E941585A3019201F1 +:10A7F0000E94CA852B013C01B501BB0C880B990B4B +:10A800000E9415854B015C01FE816F2FFF0F770BB6 +:10A81000880B990B0E9415859B01AC01C501B40101 +:10A820000E94CA854B015C01B101330C880B990B66 +:10A830000E9415859B01AC01C501B4010E94FA83F9 +:10A840009B01AC0160E070E080E291E40E943786F9 +:10A850009B01AC01C301B2010E94CA85D6011996C1 +:10A860006D937D938D939C931C9783E018968C93A6 +:10A87000D801ED91FC910684F785E02D6E2DC8017D +:10A88000199522C0BBE5EB16F10409F060C0D801B0 +:10A89000ED91FC910284F385E02DC80119958B356B +:10A8A000910509F055C185E0F6018087C8010E9435 +:10A8B000EC27D801ED91FC910284F385E02DC801CD +:10A8C00019958D35910519F480E090E043C1D801C8 +:10A8D000ED91FC910684F785E02D682FC80119954C +:10A8E000BB24BA940E94C5287C01009709F430C1AA +:10A8F000BB2021F0F6019783868308C0D40113960C +:10A900009C938E931297FC0195828482C8010E94C9 +:10A91000EC27B701C8010E94B452892B09F018C175 +:10A92000C8010E94EC27D801ED91FC910284F385C7 +:10A93000E02DC8011995B12C47018C32910591F297 +:10A9400021E030E08D35910509F089C086C0BBE774 +:10A95000EB16F10409F088C0D801ED91FC91028456 +:10A96000F385E02DC80119958B37910509F0F0C0EA +:10A9700086E0F6018087C8010E94EC27D801ED919E +:10A98000FC910284F385E02DC80119958D3791055E +:10A9900009F49ACFD801ED91FC910684F785E02D5A +:10A9A000682FC801199599249A940E94C5287C01A2 +:10A9B000009709F4CDC0992021F0F6019783868392 +:10A9C00008C0D50113969C938E931297FC01B58213 +:10A9D000A482C8010E94EC27B701C8010E940D287B +:10A9E000019609F4B5C0C8010E94EC27D701199659 +:10A9F0008D919C911A9711969C938E931A961C9206 +:10AA00001E921997D801ED91FC910284F385E02DF7 +:10AA1000C8011995CA9709F09BC0C8010E94EC278C +:10AA2000B701C8010E94B452019609F491C0C8014F +:10AA30000E94EC27D801ED91FC910284F385E02D72 +:10AA4000C8011995912C57018C32910509F4ADCFAD +:10AA500021E030E08D37910511F420E030E08827C7 +:10AA60009927821B930B76C0BEE6EB16F10411F515 +:10AA700019821A821B821C82D801ED91FC910484F8 +:10AA8000F585E02D44E050E0BE016F5F7F4FC801C7 +:10AA90001995049709F05CC044E050E06DE874E05B +:10AAA000CE0101960E944888009709F051C0F60136 +:10AAB000108650C0F6E6EF16F10421F59E012F5FD7 +:10AAC0003F4F790185E0D9011D928A95E9F7D801B8 +:10AAD000ED91FC910484F585E02D45E050E0B9014D +:10AAE000C80119950597A1F545E050E067E974E0C4 +:10AAF000C7010E944888009759F521E0F601208798 +:10AB0000118628C0F4E7EF16F10411F519821A82B4 +:10AB10001B821C82D801ED91FC910484F585E02D07 +:10AB200044E050E0BE016F5F7F4FC8011995049764 +:10AB300079F444E050E062E974E0CE0101960E94AD +:10AB40004888009729F421E0F6012087218702C078 +:10AB50008FEF9FEF28960FB6F894DEBF0FBECDBFE4 +:10AB6000DF91CF911F910F91FF90EF90DF90CF90E9 +:10AB7000BF90AF909F908F907F906F905F904F901D +:10AB80003F902F9008950F931F93CF93DF930097DB +:10AB900091F08C010E94C528EC01892B61F0C8015D +:10ABA0000E94EC27BE01C8010E94B452019631F404 +:10ABB000CE010E94416780E090E001C0CE01DF91AC +:10ABC000CF911F910F910895282F3091D80B3132DA +:10ABD00008F04AC08091B40B8111FCCF9091D70B43 +:10ABE00042E04093B40B2093B30B2FEF2093B20BB2 +:10ABF0001092B10B3093B00BE7EBFBE0A0E9BBE0A8 +:10AC000020E0321721F041914D932F5FFACF10923F +:10AC10008F0B20918F0B990F922B90938F0B90910C +:10AC20008E0B913061F410928E0B90918F0B90935C +:10AC3000BB009091BC0093FDF8CF95EC01C095EE60 +:10AC40009093BC009091B40B9230E1F39091B20BD1 +:10AC50009F3F79F08091B20B803241F08091B20B2E +:10AC6000803331F084E005C081E003C082E001C0A0 +:10AC700083E01092B60B1092D80B1092B50B08958A +:10AC80000F931F93CF93DF93EC010E94BF5F8C0162 +:10AC9000CE010E94BE60800F911FDF91CF911F9166 +:10ACA0000F910895DF92EF92FF920F931F93CF932E +:10ACB000DF93CDB7DEB729970FB6F894DEBF0FBE8E +:10ACC000CDBF8C017B01AE014F5F5F4F0E94AE464E +:10ACD000D82E882309F459C0F7018081803109F406 +:10ACE00054C08FE78D83F801858196810E942346A9 +:10ACF000B701F801858196810E94D94540E06EE454 +:10AD0000F801858196810E94B74540E06B81F8018A +:10AD1000858196810E94B74540E06C81F80185816C +:10AD200096810E94B745F7018081803139F040E07B +:10AD30006D81F801858196810E94B745F801858172 +:10AD400096810E942346B701F801858196810E9471 +:10AD5000D945F801408168E4858196810E94B74514 +:10AD600064E170E080E090E00E94356DF801808140 +:10AD7000882331F06AE070E080E090E00E94356D59 +:10AD8000F801858196810E9423468D2D29960FB664 +:10AD9000F894DEBF0FBECDBFDF91CF911F910F9111 +:10ADA000FF90EF90DF900895EF92FF920F931F9323 +:10ADB000CF93DF93EC018C01085F1F4F7E016991F7 +:10ADC00070E084E0759567958A95E1F740E150E081 +:10ADD00087E698E00E946560F70160816F7070E01F +:10ADE00040E150E087E698E00E946560C017D10717 +:10ADF00029F7DF91CF911F910F91FF90EF90089568 +:10AE000010928D0B10928C0B1092B60B1092D80BE7 +:10AE10001092B40B81E08093B30B10928E0B61E023 +:10AE200084E10E94FD3A61E085E10E94FD3AE9EB90 +:10AE3000F0E080818E7F808380818D7F808388E4B5 +:10AE40008093B80085E48093BC0081E99AE29093F6 +:10AE50008B0B80938A0B82E99AE29093890B809303 +:10AE6000880B0895CF93C82F462F61E070E00E94B1 +:10AE70008C4961E070E08C2F0E94624A8111F9CF09 +:10AE8000CF91089520E5FC01208311820895FC01F3 +:10AE90008485843011F00C94F24B80E008958F92F9 +:10AEA0009F92AF92BF92CF92DF92EF92FF920F9359 +:10AEB0001F93CF93DF936B017C01142F9B01AC0197 +:10AEC0000E948786882319F06BE575E027C046014C +:10AED0005701E894B7F82FEF3FEF4FE75FE7C50161 +:10AEE000B4010E94878681110DC02FEF3FEF4FE71D +:10AEF0005FE7C501B4010E94668418161CF46FE573 +:10AF000075E00CC02FEF3FEF4FE75FE4C701B601DC +:10AF10000E94C585181694F463E675E087E698E00C +:10AF2000DF91CF911F910F91FF90EF90DF90CF9025 +:10AF3000BF90AF909F908F900C94BF5F2FEF3FEF2B +:10AF40004FE75FECC701B6010E94668487FDE4CF3E +:10AF500020E030E0A901C701B6010E94668487FFA6 +:10AF60000BC06DE287E698E00E94945FEC01F7FA6F +:10AF7000F094F7F8F09402C0C0E0D0E000E060E0A8 +:10AF800070E080E09FE3101741F020E030E040E205 +:10AF900051E40E946B840F5FF6CFA70196010E94D7 +:10AFA000FA836B017C010E94E4844B015C012AE07E +:10AFB000AB01BC0187E698E00E94D45FC80FD91F9F +:10AFC0001123C9F1C501B4010E9413859B01AC0195 +:10AFD000C701B6010E94F9836B017C016EE287E62E +:10AFE00098E00E94945FC80FD91F20E030E040E253 +:10AFF00051E4C701B6010E94CA854B015C010E9461 +:10B00000E4846B01E12CF12C2AE0B701A60187E66C +:10B0100098E00E94D45FC80FD91FC701B6010E94F3 +:10B0200013859B01AC01C501B4010E94F9836B013A +:10B030007C011150D1F6CE01DF91CF911F910F917C +:10B04000FF90EF90DF90CF90BF90AF909F908F9048 +:10B050000895CF92DF92EF92FF92CF93DF93EC01AE +:10B060000E946F6D6B017C018091220990912309F0 +:10B07000DC01ED91FC910084F185E02D1995892B7F +:10B0800079F40E946F6DDC01CB018C199D09AE092A +:10B09000BF0988399A43A105B10530F380E00DC09E +:10B0A0008091220990912309DC01ED91FC910284A9 +:10B0B000F385E02D1995888381E0DF91CF91FF9092 +:10B0C000EF90DF90CF9008954F925F926F927F92B2 +:10B0D0008F929F92AF92BF92CF92DF92EF92FF92A8 +:10B0E0000F931F93CF93DF931F921F92CDB7DEB7BD +:10B0F0005C0184E299E00E94295881113AC036C06F +:10B100008C01CE0101960E942958882379F1C8014B +:10B1100001962981F70121937F01422F4F7750E05B +:10B12000449DB001459D700D549D700D1124C60EB7 +:10B13000D71E47E0440C551C661C771C4A95D1F776 +:10B1400027FF27C085309105D9F68FEF9FEF9093A9 +:10B15000BE098093BD098091220990912309DC01E9 +:10B16000ED91FC910488F589E02D199580E090E03F +:10B170008EC090902409198285E2E82E89E0F82E8D +:10B1800001E010E0C12CD12C412C512C3201439410 +:10B19000B8CFF92DF07FFA832FEF280FD5012C932C +:10B1A000F03319F58C5D964F0E9429588823F1F2EF +:10B1B000C8018A5D964F0E9429588823B9F2C801B8 +:10B1C0000396D501EC91F0E0E25EF64FE780F12CBA +:10B1D000FE2CEE242085E20EF11C2091240921FF93 +:10B1E00008C0B2E0EB0EF11C04C020E0E12CF12C11 +:10B1F00001C022E0422E512CFC01E25EF64F4F01CD +:10B200008C01481A590A2EEF622E77247A94C801CD +:10B21000840D951D8C159D0578F5CE0101960E9433 +:10B220002958882309F4A2CF8091BB099091BC09C9 +:10B230000097B1F0FA81F03399F4D5012C91F30124 +:10B24000E21BF1099F01200F311FE216F30640F4C3 +:10B25000DC01ED91FC910190F081E02D698119955F +:10B260000038110518F48981F40186830F5F1F4FA0 +:10B27000FFEF8F1A9F0ACBCF8091BB099091BC0939 +:10B28000892B21F40138110508F070CFC8010F9007 +:10B290000F90DF91CF911F910F91FF90EF90DF9072 +:10B2A000CF90BF90AF909F908F907F906F905F9066 +:10B2B0004F9008952F923F924F925F926F927F929C +:10B2C0008F929F92AF92BF92CF92DF92EF92FF92B6 +:10B2D0000F931F93CF93DF931F92CDB7DEB70E94DA +:10B2E0007F64382E882309F422C10E946F6D2B01E0 +:10B2F0003C018091AA099091AB09A091AC09B09151 +:10B30000AD09A3019201281B390B4A0B5B0BDA0133 +:10B31000C90189399A43A105B105A8F48091A6090C +:10B320009091A709A091A809B091A909A301920140 +:10B33000281B390B4A0B5B0BDA01C90189399A4387 +:10B34000A105B105C8F12091AE0980912209909123 +:10B350002309222371F02CEF3FEF3093BE09209395 +:10B36000BD09DC01ED91FC910488F589E02D19956A +:10B37000DDC020EC2093240910922509DC01ED9119 +:10B38000FC910280F381E02D42E050E064E279E03C +:10B3900019954092A6095092A7096092A809709247 +:10B3A000A9094092AA095092AB096092AC09709227 +:10B3B000AD0981E08093AE09809122099091230923 +:10B3C000DC01ED91FC910084F185E02D1995892B2C +:10B3D00009F4ADC0CE0101960E9464585C01892B2E +:10B3E00009F4A0C04092AA095092AB096092AC093E +:10B3F0007092AD0980912409807F803309F076C076 +:10B400008091AF099091B009892B09F490C0E9802F +:10B41000F12CF701E25EF64F078110E0102F0027B4 +:10B420008085080F111D97012A5D364F4901B7012C +:10B43000695D764FA801C9010E94ED87B8016E0DC4 +:10B440007F1DDB01A25EB64F18961C921897809163 +:10B4500024098670282EE091AF09F091B00932E0FE +:10B46000831337C01996CC901997D12CDC2CCC249F +:10B470001A968C91C80ED11C4BEF5FEF4E195F09E5 +:10B48000401B510B4A0D5B1D675D764FC40119953A +:10B4900080E48093240920922509D0922609C09245 +:10B4A00027098091220990912309DC01ED91FC91FB +:10B4B0000280F381E02D44E050E064E279E01995E8 +:10B4C0004092A6095092A7096092A8097092A90912 +:10B4D0002EC04DEF5FEF4E195F09401B510B4A0D17 +:10B4E0005B1D695D764FC401199521C0803CA9F4AC +:10B4F00080ED809324091092250980912209909172 +:10B500002309DC01ED91FC910280F381E02D42E002 +:10B5100050E064E279E019950AC0803D41F4109250 +:10B52000AE0905C00E947F64811101C0312C832DBA +:10B530000F90DF91CF911F910F91FF90EF90DF90CF +:10B54000CF90BF90AF909F908F907F906F905F90C3 +:10B550004F903F902F900895AF92BF92CF92DF927D +:10B56000EF92FF921F93CF93DF9300D000D0CDB71F +:10B57000DEB76C017C0110E08AE0A82EB12C1330FC +:10B58000A9F0F701828190E0A0E0B0E089839A837E +:10B59000AB83BC83BE82AD82BE016F5F7F4F87E607 +:10B5A00098E00E946F226EE672E114C0F601858178 +:10B5B00090E0A0E0B0E089839A83AB83BC83BE8235 +:10B5C000AD82BE016F5F7F4F87E698E00E946F22D9 +:10B5D0006BE672E10E949B5F1F5FFFEFEF1AFF0AAD +:10B5E000143069F626960FB6F894DEBF0FBECDBFB5 +:10B5F000DF91CF911F91FF90EF90DF90CF90BF90A0 +:10B60000AF9008950F931F93CF93DF931F921F92D4 +:10B61000CDB7DEB78C0180E293E0F801918380839F +:10B620001282138214821582CE0101960E94425723 +:10B6300089819A810E94FC42B8016E5F7F4F44E08D +:10B6400050E08FE090E00E94B5290E94FB42C801C3 +:10B650000F900F90DF91CF911F910F910895CF938D +:10B66000DF93CEE1D9E080EE8E831F828C819D81B5 +:10B67000DC01ED91FC910280F381E02D42E050E08D +:10B6800064E279E019958FEF9FEF9093BE09809364 +:10B69000BD098C819D81DC01ED91FC910680F781D3 +:10B6A000E02D19958C819D81DC01ED91FC91048840 +:10B6B000F589E02D19950E946F6D6093A60970932E +:10B6C000A7098093A8099093A9096093AA09709388 +:10B6D000AB098093AC099093AD09DF91CF910895A8 +:10B6E000AF92BF92CF92DF92EF92FF920F931F9390 +:10B6F000CF93DF931F921F92CDB7DEB77A83698312 +:10B70000BA01A901E981FA81F770082F10E0000F52 +:10B71000111F0058144FD8018D919C918E0F9F1FBF +:10B720009F01240F351F21303840A0F07A015B01C2 +:10B7300060E078E06B01CE1ADF0AA601B5010E9435 +:10B74000B529A7014C195D09B5016C0D7D1DF801E6 +:10B75000808191810F900F90DF91CF911F910F9178 +:10B76000FF90EF90DF90CF90BF90AF900C94B529F1 +:10B770009F92AF92BF92CF92DF92EF92FF920F9380 +:10B780001F93CF93DF93982E8B015A01690164E2D6 +:10B7900070E00E94624AE82EF12C65E270E0892D8B +:10B7A0000E94624AFE2CEE24E82AE801CE0DDF1D3D +:10B7B0009E013770E92CF12CC701880F991FAC014D +:10B7C0004858544F7A01FA0180819181820F931F6A +:10B7D000A9014C0D5D1D4130584090F000E018E08B +:10B7E000021B130BA801B5010E94E529A601401B0D +:10B7F000510BB501600F711FF7018081918102C06B +:10B80000A601B5010E94E529CC0DDD1D4D2F64E296 +:10B8100070E0892D0E948C494C2F65E270E0892DE3 +:10B82000DF91CF911F910F91FF90EF90DF90CF901C +:10B83000BF90AF909F900C948C49FF920F931F93F1 +:10B84000CF93DF93F82E00E010E08F2D0E94472A5F +:10B85000EC01892B21F08F2D0E94472A8C01C01703 +:10B86000D10799F7CE01DF91CF911F910F91FF90F2 +:10B87000089520E3FC0120833296862F82958F70F5 +:10B8800090E1899F601911246A3014F4605D01C051 +:10B89000695C6293682F8111F0CF08952F923F92D7 +:10B8A0004F925F926F927F928F929F92AF92BF92D0 +:10B8B000CF92DF92EF92FF920F931F93CF93DF937C +:10B8C000CDB7DEB7E2970FB6F894DEBF0FBECDBF9F +:10B8D0007C012A013B0169010E946F6D4B015C01F3 +:10B8E00087010D5B1F4FC8010E94984B181619065F +:10B8F000A4F00E946F6DDC01CB0188199909AA0997 +:10B90000BB09481659066A067B06D8F062E370E068 +:10B9100080E090E00E94356DE6CF42E250E0BE014B +:10B920006F5F7F4FC8010E94504B8981823011F0B8 +:10B9300080E060C1F8018489958983349105C1F75D +:10B9400002C08FEF57C16D817E818F8198850E94E3 +:10B95000CF834B015C01F601608371838283938303 +:10B9600046E050E0B701685F7F4FCE014D960E94E0 +:10B97000E087892BE9F6F70180819181A281B3816B +:10B9800088169906AA06BB0698F284819581A6813D +:10B99000B78188159905AA05BB0550F289899A894E +:10B9A000AB89BC8986879787A08BB18B8EECC82E1C +:10B9B000D12CC8010E946F4BF1E0CF1AD108C9F712 +:10B9C000712CC70182969AA789A7F701B696FCA7A2 +:10B9D000EBA708969EA78DA73C974F01899698AB39 +:10B9E0008FA73897FAABE9AB1701F6E12F0E311CA0 +:10B9F00027018EE1480E511CF801818D928D181699 +:10BA000019060CF0F6C0C8010E946F4B83339105F4 +:10BA100009F4C9C0F4F481309105B9F11CF4892B03 +:10BA200059F3DBC083309105C1F1069709F0D5C009 +:10BA3000C8010E946F4B6C0144E050E0B201C801A4 +:10BA40000E94504BA12CB12CDD2494E0C91AD108DE +:10BA50003FC08A33910509F47AC03CF485339105DF +:10BA600061F0C69709F43FC0B8C08B33910509F463 +:10BA700084C08F3F910501F2B0C0C8010E946F4B96 +:10BA8000C8010E946F4B782EB7CFC8010E946F4B40 +:10BA900044E050E069A97AA93AC0C8010E946F4BFE +:10BAA0006C0144E050E0B101C8010E94504BA12C50 +:10BAB000B12CDD24F4E0CF1AD108AC14BD040CF095 +:10BAC0009BCFC8010E946F4B8FEFA81AB80AF5CF21 +:10BAD000AC14BD040CF090CFC8010E946F4BEFEF87 +:10BAE000AE1ABE0AF5CFC8010E946F4B682EF7014F +:10BAF000828D811110C0838D81110DC0848D8111C3 +:10BB00000AC0858D811107C044E050E0B401C8012E +:10BB10000E94504B71CFEFA5F8A9A080B180C280E0 +:10BB2000D380B401CE0183960E94C4608DA19EA1F2 +:10BB3000AFA1B8A5A816B906CA06DB0629F3662088 +:10BB400009F45ACFC8010E946F4B6A94F8CFC8011C +:10BB50000E946F4B44E050E06BA57CA5C8010E9499 +:10BB6000504BF70166A177A180A591A50E94CF83D4 +:10BB700066A377A380A791A73FCFC8010E946F4B10 +:10BB800044E050E06DA57EA5C8010E94504BF7012E +:10BB900062A573A584A595A50E94CF8362A773A70C +:10BBA00084A795A729CFC8010E946F4B44E050E0BD +:10BBB00069A57AA5C8010E94504BF70162A173A143 +:10BBC00084A195A10E94CF8362A373A384A395A3AC +:10BBD00066A777A780AB91AB0FCFC8010E946F4BD0 +:10BBE000D82EDD2009F408CFC8010E946F4BDA94EB +:10BBF000F8CF872DE2960FB6F894DEBF0FBECDBF0B +:10BC0000DF91CF911F910F91FF90EF90DF90CF9038 +:10BC1000BF90AF909F908F907F906F905F904F906C +:10BC20003F902F900895CF92DF92EF92FF920F9363 +:10BC30001F93CF93DF936C017A018B01C0E0D0E0BA +:10BC4000CE15DF0581F0D8016D918D01D601ED9102 +:10BC5000FC910190F081E02DC6011995892B11F01E +:10BC60002196EECF7E01C701DF91CF911F910F91F9 +:10BC7000FF90EF90DF90CF900895FC01538D448D9D +:10BC8000252F30E0842F90E0821B930B541710F087 +:10BC9000CF96089501970895FC01918D828D981794 +:10BCA00061F0828DDF01A80FB11D5D968C91928DA0 +:10BCB0009F5F9F73928F90E008958FEF9FEF08959D +:10BCC000FC01918D828D981731F0828DE80FF11D66 +:10BCD000858D90E008958FEF9FEF0895FC01918D81 +:10BCE000228D892F90E0805C9F4F821B91098F737A +:10BCF000992708958AEC97E00E946E5E21E0892BD7 +:10BD000009F420E0822F089587E698E00E946E5E95 +:10BD100021E0892B09F420E0822F0895FC01848D15 +:10BD2000DF01A80FB11DA35ABF4F2C91848D90E065 +:10BD300001968F739927848FA689B7892C93A08940 +:10BD4000B1898C91837080648C93938D848D9813CA +:10BD500006C00288F389E02D80818F7D808308955D +:10BD6000EF92FF920F931F93CF93DF93EC0181E04B +:10BD7000888F9B8D8C8D981305C0E889F989808107 +:10BD800085FD26C0F62E0B8D10E00F5F1F4F0F7341 +:10BD90001127E02E8C8DE8120CC00FB607FCFACFED +:10BDA000E889F989808185FFF5CFCE010E948E5EFA +:10BDB000F1CF8B8DFE01E80FF11DE35AFF4FF082AA +:10BDC0009FB7F8940B8FEA89FB89808180620AC053 +:10BDD0009FB7F894EE89FF896083E889F9898081AB +:10BDE0008370806480839FBF81E090E0DF91CF917A +:10BDF0001F910F91FF90EF900895CF93DF93EC0187 +:10BE0000888D8823C9F0EA89FB89808185FD05C07A +:10BE1000A889B9898C9186FD0FC00FB607FCF5CFB4 +:10BE2000808185FFF2CFA889B9898C9185FFEDCFFC +:10BE3000CE010E948E5EE7CFDF91CF91089580E022 +:10BE400090E0892B21F00E94845E811121C080E066 +:10BE500090E0892B41F080E090E0892B21F00E9456 +:10BE60000000811118C080E090E0892B21F00E9431 +:10BE70007A5E811113C080E090E0892BA1F080E010 +:10BE800090E0892B81F00E94000081110AC0089582 +:10BE90000E940000DCCF0E940000E5CF0E9400005D +:10BEA000EACF0C94000008950E94C187EF92FF92A0 +:10BEB0000F931F93CF93DF93EC018B017A010E94C4 +:10BEC0006F6DFE01E857FF4F608371838283938318 +:10BED0008C819D81DC01ED91FC910280F381E02D4C +:10BEE000A701B801DF91CF911F910F91FF90EF90C3 +:10BEF00019941F93CF93DF93EC01162F0E946F6D5F +:10BF0000FE01E857FF4F60837183828393838C81A6 +:10BF10009D81DC01ED91FC910190F081E02D612F7C +:10BF2000DF91CF911F911994DC01ED91FC9101906B +:10BF3000F081E02D1994EF92FF920F931F93CF930E +:10BF4000DF938C017B01C0E0D0E0F701EC0FFD1F17 +:10BF50006491662361F0D801ED91FC910190F0812C +:10BF6000E02DC8011995892B11F02196EECFCE0155 +:10BF7000DF91CF911F910F91FF90EF900895611580 +:10BF8000710579F0FB0101900020E9F73197AF01CD +:10BF9000461B570BDC01ED91FC910280F381E02DF3 +:10BFA000199480E090E008958F929F92AF92BF9293 +:10BFB000EF92FF920F931F93CF93DF93CDB7DEB72E +:10BFC000A1970FB6F894DEBF0FBECDBF7C01FA017A +:10BFD000CB0119A2223008F42AE08E010F5D1F4F19 +:10BFE000822E912CA12CB12CBF01A50194010E949D +:10BFF0005083F901CA01015011096A3014F4605DDF +:10C0000001C0695CD8016C93232B242B252B61F78D +:10C01000B801C7010E94BF5FA1960FB6F894DEBFBA +:10C020000FBECDBFDF91CF911F910F91FF90EF9089 +:10C03000BF90AF909F908F900895CF92DF92EF9234 +:10C04000FF920F931F93CF93DF932115310581F456 +:10C05000DC01ED91FC910190F081E02D642FDF91E6 +:10C06000CF911F910F91FF90EF90DF90CF90199497 +:10C070002A30310501F577FF1DC06A017B01EC0113 +:10C080006DE20E94945F8C0144275527BA014C1938 +:10C090005D096E097F092AE0CE010E94D45F800FFE +:10C0A000911FDF91CF911F910F91FF90EF90DF9043 +:10C0B000CF9008952AE0DF91CF911F910F91FF90CB +:10C0C000EF90DF90CF900C94D45F9A01AB01770F83 +:10C0D000660B770B0C941D609A01452B39F4DC013B +:10C0E000ED91FC910190F081E02D1994462F50E0E4 +:10C0F00060E070E00C94D45F8F929F92AF92BF92F9 +:10C10000CF92DF92EF92FF920F931F93CF93DF9323 +:10C110007C018B014C0182E0880E911C5701E5E007 +:10C12000AE0EB11CC0E0D0E0F40161914F014AE0D5 +:10C1300050E0C8010E946C606C016EE2C8010E9470 +:10C14000945F8C0D9D1DC80FD91F8A149B0461F745 +:10C150004AE050E0F7016581C8010E946C608C0FD5 +:10C160009D1FDF91CF911F910F91FF90EF90DF9076 +:10C17000CF90BF90AF909F908F9008956EED73E039 +:10C180000C94BF5F0C94BF5FDC0180E293E08D9361 +:10C190009D9384E0FB0101900D928A95E1F708954B +:10C1A0001F920F920FB60F9211240BB60F922F937E +:10C1B0003F934F935F936F937F938F939F93AF932F +:10C1C000BF93EF93FF938AEC97E00E948E5EFF91FE +:10C1D000EF91BF91AF919F918F917F916F915F91FF +:10C1E0004F913F912F910F900BBE0F900FBE0F906C +:10C1F0001F9018951F920F920FB60F9211240BB635 +:10C200000F922F938F939F93EF93FF93E091DA0711 +:10C21000F091DB078081E091E007F091E10782FD7A +:10C2200012C090818091E3078F5F8F732091E407A4 +:10C23000821751F0E091E307F0E0E653F84F958F55 +:10C240008093E30701C08081FF91EF919F918F91CF +:10C250002F910F900BBE0F900FBE0F901F9018954F +:10C260001F920F920FB60F9211240BB60F922F93BD +:10C270003F934F935F936F937F938F939F93AF936E +:10C28000BF93EF93FF9387E698E00E948E5EFF9145 +:10C29000EF91BF91AF919F918F917F916F915F913E +:10C2A0004F913F912F910F900BBE0F900FBE0F90AB +:10C2B0001F9018951F920F920FB60F9211240BB674 +:10C2C0000F922F938F939F93EF93FF93E0917708B3 +:10C2D000F09178088081E0917D08F0917E0882FDE0 +:10C2E00012C09081809180088F5F8F7320918108A8 +:10C2F000821751F0E0918008F0E0E959F74F958FEF +:10C300008093800801C08081FF91EF919F918F9170 +:10C310002F910F900BBE0F900FBE0F901F9018958E +:10C320001F920F920FB60F9211240BB60F922F93FC +:10C330003F934F935F938F939F93EF93FF9320913E +:10C34000E80B3091E90B8091E60B9091E70BAC0183 +:10C350004F5F5F4F5093E70B4093E60BF901E80FF7 +:10C36000F91F80818093CE00809106029091070290 +:10C370002091E60B3091E70B8217930748F48FEF7B +:10C380009FEF9093E70B8093E60B88E48093C900BE +:10C39000FF91EF919F918F915F914F913F912F91DD +:10C3A0000F900BBE0F900FBE0F901F9018951F920D +:10C3B0000F920FB60F9211242F933F938F939F9359 +:10C3C0002091E40B3091E50B8091E60B9091E70B07 +:10C3D00021303105A9F48F3F2FEF920789F4109295 +:10C3E000C8001092CD0089E08093CC0086E2809353 +:10C3F000CA001092CE001092E70B1092E60B17C005 +:10C40000892BA9F41092C8001092CD0083E080938C +:10C41000CC008EE08093CA0088E28093C90010921D +:10C42000CE0081E090E09093E70B8093E60B9F9124 +:10C430008F913F912F910F900FBE0F901F901895E5 +:10C440001F920F920FB60F9211240BB60F922F93DB +:10C450003F934F935F936F937F938F939F93AF938C +:10C46000BF93EF93FF939091C8008091CE0094FF0B +:10C4700008C081E08093E30B8091E80B9091E90B79 +:10C4800057C09091E30B913099F481110EC082E076 +:10C490008093E30B0E946F6D6093DD0B7093DE0B56 +:10C4A0008093DF0B9093E00B3EC01092E30B44C0EF +:10C4B000923009F041C0E091E10BF091E20B9081E4 +:10C4C000891721F091E09093050280832091E10B80 +:10C4D0003091E20B8091DB0B9091DC0B2817390730 +:10C4E00011F51092E30B809105028823D1F0809121 +:10C4F000D90B9091DA0B892BA1F01092C900E09131 +:10C50000D90BF091DA0B199580E98093C90010924C +:10C51000C8001092CD0083E08093CC008EE0809321 +:10C52000CA00109205028091E10B9091E20B0196F6 +:10C530009093E20B8093E10BFF91EF91BF91AF914C +:10C540009F918F917F916F915F914F913F912F912B +:10C550000F900BBE0F900FBE0F901F901895CF92AB +:10C56000DF92EF92FF920F931F93CF93DF936C01B3 +:10C570008B0186E090E00E94E079EC019093EB0B58 +:10C580008093EA0BF60101900020E9F7CF018C19A6 +:10C590009D090E94E0797C01B6010E943188F60174 +:10C5A00001900020E9F73197EC19FD09EE0DFF1D10 +:10C5B0001082F982E8821B830A838091860590911C +:10C5C00087059D838C83D0938705C0938605DF9173 +:10C5D000CF911F910F91FF90EF90DF90CF90089532 +:10C5E000CF92DF92EF92FF920F931F93CF93DF933F +:10C5F000CDB7DEB7EC970FB6F894DEBF0FBECDBF58 +:10C60000DC012C91222309F451C069E174E00E94FD +:10C61000007C9A8389837E01B3E0EB0EF11C01E07C +:10C6200010E0D02EC12E69E174E080E090E00E941D +:10C63000007CF701819391937F010E31110539F44C +:10C640000091EA0B1091EB0BE980FA8008C00F5FB4 +:10C650001F4F892B31F7F4CFF801048115810115A3 +:10C660001105A1F0D8016D917C91C7010E94288825 +:10C67000892B91F7D8011296ED91FC911397BE0189 +:10C680006F5F7F4F8D2D9C2D199506C064E772E179 +:10C6900087E698E00E94623187E698E00E94BE60DB +:10C6A00060E772E187E698E00E949B5FEC960FB628 +:10C6B000F894DEBF0FBECDBFDF91CF911F910F91D8 +:10C6C000FF90EF90DF90CF900895FB01248135819A +:10C6D000428153812417350758F440815181DA0192 +:10C6E000A20FB31F8C9384819581019695838483D7 +:10C6F00080E00895CF93DF93EC0186E893E099837F +:10C7000088836115710559F08091EE0B9091EF0BC4 +:10C71000009729F00E9481319B838A8302C01B828B +:10C720001A82CE01DF91CF910C9415226F927F92E5 +:10C730008F929F92AF92BF92CF92DF92EF92FF9231 +:10C740000F931F93CF93DF93CDB7DEB72C970FB620 +:10C75000F894DEBF0FBECDBF4C01762E672E6A0166 +:10C7600059018091EC0B9091ED0B892BA1F064EBBA +:10C7700072E187E698E00E949B5F60E4C4010E943A +:10C78000DB21A701FF0C660B770BC4010E9451212E +:10C790008FEF9FEF9FC081E090E09093ED0B80932F +:10C7A000EC0B26E240E855E260E070E08AEC97E0AE +:10C7B0000E94F3317092C1098AEC97E09093C0090E +:10C7C0008093BF091092CC0A1092CE0A1092CD0A23 +:10C7D0000115110541F00130110539F4FE2CEE244C +:10C7E000EE24EA9402C0FF24FA94C701A0E0B0E06E +:10C7F0008F839887A987BA8780E190E09C878B8791 +:10C80000A60160E070E049835A836B837C839E833A +:10C810008D834AE050E0672D762D87E698E00E94F0 +:10C82000656061EB72E187E698E00E949B5FBE0164 +:10C830006F5F7F4F87E698E00E946F228C016DEA60 +:10C8400072E10E949B5F4AE050E0B501C8010E947E +:10C8500065606AEA72E1C8010E949B5FBE01695F80 +:10C860007F4FC8010E946F220E94BE60A114B104D4 +:10C8700091F082E0A816B10409F5D092470AC0925F +:10C88000460A1092490A1092480AF0924B0AE09226 +:10C890004A0A86E010C0D092470AC092460AE110C8 +:10C8A00003C080E090E002C080E09FEF9093490ACF +:10C8B0008093480A85E00E94583206C062E972E11E +:10C8C00087E698E00E949B5F1092ED0B1092EC0BB4 +:10C8D00080E090E02C960FB6F894DEBF0FBECDBF7F +:10C8E000DF91CF911F910F91FF90EF90DF90CF904C +:10C8F000BF90AF909F908F907F906F900895CF934F +:10C900008091220990912309009771F1DC01ED914A +:10C91000FC910688F789E02D1995C1E0811125C0A9 +:10C92000C0E08091BD099091BE09892BF1F48DEF93 +:10C930009FEF9093BE098093BD0980912209909149 +:10C940002309DC01ED91FC910680F781E02D19951A +:10C950008091220990912309DC01ED91FC910488DA +:10C96000F589E02D199501C0C0E08C2FCF91089575 +:10C97000CF93DF93EC01FA013296E60FF71FDC014B +:10C98000AD014C1B5D0BCF01861B970B2D91222314 +:10C9900011F02193F5CF9C01241B350B620F731FFF +:10C9A000FB013297508331964083DF91CF910895F8 +:10C9B000EF92FF920F931F93CF93DF9300D01F92BC +:10C9C000CDB7DEB77B01BA0130E0962F9F77660FB7 +:10C9D000672F661F770B71956115710509F09068D7 +:10C9E00021E0230FE1E0F0E0EC0FFD1FE30FF11D6C +:10C9F00090836115710511F0322FE7CF30E0B70158 +:10CA0000621B730B6C5F7F4FDB018C93DE01119611 +:10CA1000F701E21BF30B359685E0E80EF11CEE16EC +:10CA2000FF0619F08D918193FACF809122099091A0 +:10CA300023092F5F3F4F8901040F151FDC01ED9182 +:10CA4000FC910280F381E02DA80119957C010E94E0 +:10CA50006F6D6093A6097093A7098093A8099093BE +:10CA6000A90981E00E151F0509F080E00F900F90D5 +:10CA70000F900F90DF91CF911F910F91FF90EF904A +:10CA80000895DF92EF92FF920F931F93CF93DF935E +:10CA90008C01D62EE72EEA01F22E0E947F648823B5 +:10CAA000B9F1F80101900020E9F73197E01BF10B93 +:10CAB000CE010796E80FF91FE138F10548F545E08A +:10CAC00050E064E279E0C8010E94B864AC01ED2D49 +:10CAD000FE2DDC01AC5DB64F9F012C0F3D1FE21710 +:10CAE000F30719F081918D93FACF2597FF2011F06C +:10CAF00081E301C080E34C0F5D1F64E279E0DF91C8 +:10CB0000CF911F910F91FF90EF90DF900C94D8641C +:10CB100080E0DF91CF911F910F91FF90EF90DF9018 +:10CB20000895FB0101900020E9F73197AF01461B02 +:10CB3000570B21E00C944165CF92DF92EF92FF9268 +:10CB40000F931F93CF93DF931F921F92CDB7DEB742 +:10CB50006C0161E00E940222182F86FF1BC0C601F3 +:10CB60000E9489217A83698364E872E187E698E00C +:10CB70000E949B5F612F70E06F7BE12CF12C01E044 +:10CB80009E012F5F3F4F41E050E0C6010E94D70950 +:10CB900081E001C080E00F900F90DF91CF911F9155 +:10CBA0000F91FF90EF90DF90CF9008958F929F921A +:10CBB000AF92BF92CF92DF92EF92FF920F931F93AB +:10CBC000CF93DF931F921F92CDB7DEB76C017B012D +:10CBD00062E070E00E94AD218C0197FF03C080E00D +:10CBE00090E099C063E070E0C6010E94AD21AC0105 +:10CBF0001816190614F04FE350E0E982FA8201306A +:10CC0000110531F48F2D880F880BF9828A8303C0B8 +:10CC1000023011052CF489819A8199279A8389839E +:10CC2000A981BA8124E630E00E94DE839A01550F83 +:10CC3000440B550B0E94728349015A0189013A83C2 +:10CC4000298360E0C6010E940222E82EF12CC60171 +:10CC50000E948921092C000CAA08BB0868157905D7 +:10CC60008A059B0559F4012BE9F182E0E816F104ED +:10CC700059F085E0E816F104A9F506C0012B71F121 +:10CC800082E0E816F10479F500E020E030E040E0D1 +:10CC900050E061E070E0C6010E94086900E09E017A +:10CCA0002F5F3F4F41E050E060E070E0C6010E941E +:10CCB000086986E0E816F10439F0EA94EF2821F0DB +:10CCC00061E0C6010E94DB2149815A81052E000CDA +:10CCD000660B770BC6010E94512104C085E0E8165F +:10CCE000F10431F418C085E0E816F104B9F6CCCFB0 +:10CCF00082E0E816F104B1F362E0C6010E94DB2194 +:10CD000000E020E030E040E050E062E070E0C6018A +:10CD10000E940869E7CF0F900F90DF91CF911F918C +:10CD20000F91FF90EF90DF90CF90BF90AF909F90CA +:10CD30008F900895CF92DF92EF92FF920F93CF934F +:10CD4000DF9300D000D0CDB7DEB77C0161E00E9458 +:10CD5000022285FF40C0C82ED12CC7010E94892124 +:10CD6000382F292FF701808590E08A30910528F52A +:10CD7000FC018827E852FF4F8F4F0C94C7836983CB +:10CD80007A83832F330F990B9C838B83822F220FFF +:10CD9000990B9E838D8300E09E012F5F3F4F43E000 +:10CDA00050E008C07A83698300E09E012F5F3F4F07 +:10CDB00041E050E060E070E006C000E020E030E0DC +:10CDC00040E050E0B601C7010E940869B6016F7DDE +:10CDD000C7010E94DB2126960FB6F894DEBF0FBE76 +:10CDE000CDBFDF91CF910F91FF90EF90DF90CF906B +:10CDF00008958F929F92AF92BF92EF92FF920F93FE +:10CE00001F93CF93DF938C017B0149015A010E944C +:10CE1000C528EC01892BF9F083E0888789869A86FA +:10CE2000AB86BC8688819981009711F00E94787A40 +:10CE3000C7010E94C68799838883BE01C801DF911C +:10CE4000CF911F910F91FF90EF90BF90AF909F9067 +:10CE50008F900C949C31DF91CF911F910F91FF9097 +:10CE6000EF90BF90AF909F908F900895FB0101903D +:10CE70000020E9F73197AF01461B570B20E00C94D7 +:10CE800041650F931F93CF93DF93EC012097F9F047 +:10CE90000A811B81888587FD06C08E819F8100974E +:10CEA00011F00E9441678885843031F489859A8524 +:10CEB000009711F00E94787A88819981009711F08B +:10CEC0000E94787ACE010E94787AE801DFCFDF9164 +:10CED000CF911F910F910895FC0184819581089550 +:10CEE000089580E090E00895AF92BF92CF92DF92D4 +:10CEF000EF92FF920F931F93CF93DF93CDB7DEB7DF +:10CF0000C154D1090FB6F894DEBF0FBECDBF5C018E +:10CF10006B018A0162E373E187E698E00E949B5F00 +:10CF2000B50187E698E00E94C2606FE273E187E690 +:10CF300098E00E949B5FC114D10409F4A4C00C0DB9 +:10CF40001D1DF80110820E94C42D6A3F71051CF45A +:10CF50006AE273E14DC07601E016F10641F0F70197 +:10CF600061917F0187E698E00E94945FF5CF87E6A4 +:10CF700098E00E94BE6080919705909198059E016F +:10CF80002F5F3F4F790120E030E0049719F443E030 +:10CF900050E019C042E050E061E4C7010E94332D27 +:10CFA000F70101900020E9F731978F010E191F0951 +:10CFB000A801B701C5010E9448880097A9F020E0A8 +:10CFC00030E041E050E061E4C7010E94332DF701F9 +:10CFD00001900020E9F731978F010E191F09A80170 +:10CFE000B701C5010E944888892B39F06FE173E1D0 +:10CFF00087E698E00E949B5F46C00A0D1B1D67E60E +:10D0000075E0C8010E942888892B69F4F601019017 +:10D010000020E9F73197EC19FD09329720F0C6019D +:10D020000E94F06230C06FE270E0C8010E941D886B +:10D030005C01009741F0FC0110828181843219F17A +:10D04000FFEFAF1ABF0AF80180818432E1F0B80126 +:10D05000C7010E947A63C7010E944421882399F086 +:10D0600029858091970590919805273019F484308F +:10D07000910549F041E0049709F440E09501B601BB +:10D08000C7010E94E51CCF5BDF4F0FB6F894DEBFEF +:10D090000FBECDBFDF91CF911F910F91FF90EF9009 +:10D0A000DF90CF90BF90AF900895DF92EF92FF9204 +:10D0B0000F931F93CF93DF9300D000D0CDB7DEB78F +:10D0C00067E373E187E698E00E949B5F0DE41BE055 +:10D0D000D12C80E1E82EF12CF8018081803130F4F0 +:10D0E00060E775E087E698E00E94C260F801808101 +:10D0F000F5E090E0A0E0B0E089839A83AB83BC8345 +:10D10000FE82ED82BE016F5F7F4F87E698E0DF16FB +:10D1100039F00E946F2265E373E10E949B5F04C0B7 +:10D120000E946F220E94BE60D3940F5F1F4F86E063 +:10D13000D812D2CF26960FB6F894DEBF0FBECDBF61 +:10D14000DF91CF911F910F91FF90EF90DF900895A5 +:10D15000CF92DF92EF92FF928091760B9091770BB6 +:10D16000892B09F450C00E94C42D6B017C0167E03B +:10D1700073E187E698E00E949B5F2AE0B701A60171 +:10D1800087E698E00E94D45F8091760B9091770BB0 +:10D190000E9441671092770B1092760B10925907FC +:10D1A000109258071092EF0B1092EE0B10925D0741 +:10D1B00010925C071092590B1092580B10925D0B55 +:10D1C00010925C0B10929A051092990510925B0BCD +:10D1D00010925A0B0E94C42D6B017C0162E073E136 +:10D1E00087E698E00E949B5F2AE0B701A60187E6E8 +:10D1F00098E00E94D45F87E698E0FF90EF90DF9080 +:10D20000CF900C94BE60FF90EF90DF90CF90089588 +:10D210005F926F927F928F929F92AF92BF92CF92C6 +:10D22000DF92EF92FF920F931F93CF93DF93CDB7CF +:10D23000DEB7E4970FB6F894DEBF0FBECDBF6C012A +:10D240007B013A01590161E00E940222002361F052 +:10D25000682F6062C6010E94DB2161EF72E187E600 +:10D2600098E00E949B5FC0C01AA219A2FE01B3966B +:10D270008EE0DF011D928A95E9F720E030E043E07F +:10D2800050E060E2CE0101960E94332DD601129645 +:10D29000ED91FC9113976081718140E250E0CE01E5 +:10D2A00001960E943888B2E0EB16F104C9F03CF414 +:10D2B000E114F104E1F0EA94EF2879F05FC086E030 +:10D2C000E816F10451F09EE0E916F10481F0A5E0C2 +:10D2D000EA16F10409F052C003C06EE774E002C020 +:10D2E00061E874E0CE0181960E94318850C0A1149B +:10D2F000B10409F44CC08501C12CD12C82E7A82EC1 +:10D3000085E0B82E94E0592E7E01B1E3EB0EF11CBE +:10D310004301E1E08E1A9108C614D704C4F5D80180 +:10D320008C9111969C910E5F1F4F9F938F93BF928C +:10D33000AF921F925F92FF92EF920E94658840E148 +:10D3400050E0B701CE0181960E9438880FB6F8945C +:10D35000DEBF0FBECDBFC814D90461F065E775E02C +:10D36000C7010E94318840E150E0B701CE018196AB +:10D370000E943888FFEFCF1ADF0ACECF63EE72E14A +:10D3800087E698E00E949B5F8FEF9FEF2FC06DEDC7 +:10D3900072E187E698E00E949B5FBE016F5F7F4F5E +:10D3A00087E698E00E94C2606AED72E187E698E045 +:10D3B0000E949B5FBE016F5D7F4F87E698E00E94F1 +:10D3C000C26087E698E00E94BE600E947F64882366 +:10D3D00059F080919405811107C0BE016F5D7F4FA8 +:10D3E000CE0101960E94916580E090E0E4960FB630 +:10D3F000F894DEBF0FBECDBFDF91CF911F910F918B +:10D40000FF90EF90DF90CF90BF90AF909F908F9064 +:10D410007F906F905F900895FF920F931F93CF932B +:10D42000DF93CDB7DEB729970FB6F894DEBF0FBEF6 +:10D43000CDBF8C010E944421882309F46BC060E0B9 +:10D44000C8010E940222D8011896FC90B7E0FB1692 +:10D4500071F0823009F45CC020F4813009F45DC0C1 +:10D4600006C0853009F454C0863009F456C0C8019E +:10D470000E948921362F272F4F2D50E04A30510529 +:10D4800008F046C0FA018827EE51FF4F8F4F0C94E9 +:10D49000C783D8011496ED91FC911597808585304E +:10D4A000B9F56EEC72E187E698E00E949B5FD801C7 +:10D4B0001496ED91FC9115970681178101151105C0 +:10D4C00039F1F80161857285CE0101960E947A6377 +:10D4D000CE0101960E944421882311F1CE010196CC +:10D4E0000E940C6A892BE1F066EC72E187E698E015 +:10D4F0000E949B5F12C0292F990F330B03C0832F0B +:10D50000922F9C0181E090E0232B81F480E00EC0FB +:10D5100080E004C08FEF9FEF09C081E090E006C07B +:10D52000D80112960D911C911397C8CF29960FB66A +:10D53000F894DEBF0FBECDBFDF91CF911F910F9149 +:10D54000FF9008952F923F924F925F926F927F9239 +:10D550008F929F92AF92BF92CF92DF92EF92FF9203 +:10D560000F931F93CF93DF93CDB7DEB7E0970FB63E +:10D57000F894DEBF0FBECDBF8B0169017A0194E044 +:10D58000EAE8F3E0DE01119601900D929A95E1F739 +:10D59000FE0135968CE1DF011D928A95E9F794E052 +:10D5A000EAE8F3E0DE01919601900D929A95E1F799 +:10D5B000FE01B5968CE0DF011D928A95E9F7AE0178 +:10D5C0004F5F5F4F68E0C8010E94F12D1A8A809179 +:10D5D000760B9091770B892B09F477C1C701B601BF +:10D5E0000E94DD841B013F926F9382E795E09F9339 +:10D5F0008F938E010F5D1F4F1F930F930E94A28880 +:10D600000F900F900F900F900F900F9020E030E050 +:10D61000A901C701B6010E94C58526013701181668 +:10D6200024F077FA709477F87094F8010190002054 +:10D63000E9F731975F01A01AB10A8EE2808382E296 +:10D64000882E912C8C0E9D1E8A0C9B1CB10137FEDE +:10D6500003C0719561957109072E000C880B990B19 +:10D660000E9415859B01AC01C301B2010E94F983A0 +:10D6700020E030E040E251E40E94CA850E94DD844F +:10D68000605DF4016083FE01EA0DFB1D13A287E6D5 +:10D6900098E00E94BE6062E473E187E698E00E9431 +:10D6A0009B5FB80187E698E00E94C26060E473E186 +:10D6B00087E698E00E949B5FBE016F5F7F4F80917D +:10D6C000990590919A050E9481315C01009709F4B7 +:10D6D000E4C069E774E00E948131DC0119968D9005 +:10D6E0009C901A97B40187E698E00E94C2606EE3AE +:10D6F00073E187E698E00E949B5F87E698E00E94CE +:10D70000BE6020E030E04EEF52ECC701B6010E944F +:10D710006684882309F4D9C020E030E04AEA52E464 +:10D72000C701B6010E946684882309F4CEC020E0B8 +:10D7300030E0A901C701B6010E946684882309F47C +:10D74000C4C081149104C9F020E030E043E050E00F +:10D7500060E2CE0101960E94332D40E250E0B40118 +:10D76000CE0101960E9438880E947F64882329F0A8 +:10D7700080919405882309F4A2C06AE674E0C5018B +:10D780000E948131FC01618572856115710509F482 +:10D790009CC0DB018C91882309F497C08091EE0B2B +:10D7A0009091EF0B009709F490C00E9481318C0199 +:10D7B000009709F48AC064E070E00E941C2E882360 +:10D7C00009F483C0C8010E940F358430A9F50E9476 +:10D7D000C5285C01892B19F085E0F50180870E943E +:10D7E000C5284C01892B49F083E0D40118968C930D +:10D7F000F401C186D286E386F4860E94C5287C01A6 +:10D80000892B69F082E0D70118968C9388EC90E020 +:10D81000A0E0B0E0F70181879287A387B487B401C5 +:10D82000C5010E949C31B701C5010E949C31B50120 +:10D83000C8010E949C3149C064E0C8010E94743153 +:10D840004C01009709F441C061E00E9474315C0111 +:10D8500060E0C4010E947431DC011996CD92DD9222 +:10D86000ED92FC921C97F50181859285A385B48584 +:10D87000892B8A2B8B2B39F4D8016D917C9187E70A +:10D8800095E00E94366788EC90E0A0E0B0E0F501FA +:10D8900081879287A387B48718C0BE016F5F7F4FCF +:10D8A00087E698E00E94C2606CE373E187E698E047 +:10D8B0000E949B5F87E698E00E94BE6006C0B801A8 +:10D8C000CE0101960E94366758CFE0960FB6F894C5 +:10D8D000DEBF0FBECDBFDF91CF911F910F91FF90A3 +:10D8E000EF90DF90CF90BF90AF909F908F907F9000 +:10D8F0006F905F904F903F902F9008953FB7F894AE +:10D900008091F50B9091F60BA091F70BB091F80B6D +:10D9100026B5A89B05C02F3F19F00196A11DB11D8A +:10D920003FBFBA2FA92F982F8827820F911DA11DC5 +:10D93000B11DBC01CD0142E0660F771F881F991F02 +:10D940004A95D1F7089590E0FC013197E231F10555 +:10D9500008F04EC08827E451FF4F8F4F0C94C783C7 +:10D96000809180008F7703C0809180008F7D8093AD +:10D970008000089580918000877FF9CF84B58F77EC +:10D9800002C084B58F7D84BD08958091B0008F77EB +:10D9900003C08091B0008F7D8093B0000895809186 +:10D9A00090008F7707C0809190008F7D03C0809199 +:10D9B0009000877F8093900008958091A0008F77DA +:10D9C00007C08091A0008F7D03C08091A000877F59 +:10D9D0008093A0000895809120018F7707C08091E7 +:10D9E00020018F7D03C080912001877F80932001DB +:10D9F0000895CF93DF9390E0FC01EA50F54F249116 +:10DA0000FC01E45CF44F8491882361F190E0880F7D +:10DA1000991FFC01E452F54FC591D491FC01E458E3 +:10DA2000F54FA591B491611109C09FB7F894888111 +:10DA3000209582238883EC912E230BC0623061F401 +:10DA40009FB7F8948881322F309583238883EC9197 +:10DA50002E2B2C939FBF06C08FB7F894E8812E2BF6 +:10DA600028838FBFDF91CF9108958F929F92AF92BD +:10DA7000BF92CF92DF92EF92FF926B017C010E94E6 +:10DA80007E6C4B015C01C114D104E104F104F1F09E +:10DA90000E947E6CDC01CB0188199909AA09BB0997 +:10DAA000883E9340A105B10570F321E0C21AD10868 +:10DAB000E108F10888EE880E83E0981EA11CB11CD5 +:10DAC000C114D104E104F10419F7DDCFFF90EF9008 +:10DAD000DF90CF90BF90AF909F908F9008952FB719 +:10DAE000F8946091F10B7091F20B8091F30B90918F +:10DAF000F40B2FBF08951F920F920FB60F921124AF +:10DB00002F933F938F939F93AF93BF938091F10B8C +:10DB10009091F20BA091F30BB091F40B3091F00BBC +:10DB200023E0230F2D3720F40196A11DB11D05C060 +:10DB300026E8230F0296A11DB11D2093F00B8093C0 +:10DB4000F10B9093F20BA093F30BB093F40B809135 +:10DB5000F50B9091F60BA091F70BB091F80B019695 +:10DB6000A11DB11D8093F50B9093F60BA093F70BBD +:10DB7000B093F80BBF91AF919F918F913F912F91EF +:10DB80000F900FBE0F901F901895CF93DF93CDB7D6 +:10DB9000DEB7C856D1090FB6F894DEBF0FBECDBFB1 +:10DBA000789484B5826084BD84B5816084BD85B578 +:10DBB000826085BD85B5816085BD80916E00816084 +:10DBC00080936E001092810080918100826080932A +:10DBD000810080918100816080938100809180002C +:10DBE0008160809380008091B10084608093B10057 +:10DBF0008091B00081608093B0008091910082603C +:10DC00008093910080919100816080939100809138 +:10DC100090008160809390008091A1008260809349 +:10DC2000A1008091A10081608093A1008091A0005B +:10DC300081608093A0008091210182608093210106 +:10DC40008091210181608093210180912001816078 +:10DC50008093200180917A00846080937A00809183 +:10DC60007A00826080937A0080917A00816080934C +:10DC70007A0080917A00806880937A001092C100C7 +:10DC80001092D805109287051092860526E040E094 +:10DC900052EC61E070E087E698E00E94F3316EE1BB +:10DCA00075E087E698E00E949B5F6BEF7CE38AEA71 +:10DCB00093E00E94AF6261EC7EE48FEA93E00E9401 +:10DCC000AF626CED7CE384EB93E00E94AF626AEAA2 +:10DCD00072E589EB93E00E94AF6267EC7DE48DEB27 +:10DCE00093E00E94AF6267EE7CE381EC93E00E94D8 +:10DCF000AF626FEF7EE486EC93E00E94AF6265E274 +:10DD00007EE48AEC93E00E94AF6265E97DE48DECED +:10DD100093E00E94AF6262EB7DE481ED93E00E94AC +:10DD2000AF626EED7CE387ED93E00E94AF620E94EC +:10DD3000514F4DE4E42E4BE0F42ED12C00E010E0E6 +:10DD4000C8010E942A83D7018D937D0181508E3FA7 +:10DD500010F4DD24D3940F5F1F4F0630110581F7B7 +:10DD6000D11018C062E275E087E698E00E949B5FE0 +:10DD700086E0E2E1F2E0DE01119601900D928A95D3 +:10DD8000E1F786E0FE013196ADE4BBE001900D9233 +:10DD90008A95E1F70E9455680E940F5061E08DE07E +:10DDA0000E94F96C26E040E855E260E070E08AEC01 +:10DDB00097E00E94F33189E491E39093D40A809331 +:10DDC000D30A8CE59DE49093D60A8093D50A88E522 +:10DDD0009DE49093D80A8093D70A64E170E080E0D4 +:10DDE00090E00E94356DE0918A05F0918B053097A7 +:10DDF00021F08AE19BE2908B878784E797E69093F6 +:10DE0000B0098093AF0964EF71E080E090E00E9478 +:10DE1000356DA89587E698E00E946E5E892BF1F13A +:10DE200087E698E00E944C5E182F8A3029F08D30EA +:10DE300019F0883009F513C0E091D805F0E0E456F8 +:10DE4000FA4F10826EED73E087E698E00E94C260A0 +:10DE50008CE995E00E94F0621092D805DBCF68E073 +:10DE600087E698E00E94945F8091D805882391F21C +:10DE700081508093D805CECF682F87E698E00E9426 +:10DE8000945FE091D805EB3328F681E08E0F809304 +:10DE9000D805F0E0E456FA4F1083BCCF0E947C1204 +:10DEA000029714F00E945A5980919B05882309F427 +:10DEB0000CC28091990590919A05892B09F405C2AD +:10DEC0000E946F6D0091DB051091DC052091DD054E +:10DED0003091DE05601771078207930708F4F5C1DA +:10DEE0000E946F6D4B015C018091920590919305AA +:10DEF000009709F4D8C12091D9053091DA056091D5 +:10DF0000900570919105261737070CF4B2C00E9456 +:10DF10006F6D1B012C01B8E82B0EB3E13B1E411CB9 +:10DF2000511C62E775E087E698E00E946231E0915B +:10DF30008A05F0918B05309751F08FEF8387148617 +:10DF4000DF0113963B961D92AE17BF07E1F7E091F4 +:10DF50008805F091890580E090E02091900530914E +:10DF60009105821793070CF07CC0208131812E7FB0 +:10DF7000219331930196F1CF6091900570919105B5 +:10DF800033E0660F771F3A95E1F720918E053091C7 +:10DF90008F05620F731F0E94EF4618160CF091C791 +:10DFA000E0909005F0909105E4E1EE16F1040CF09C +:10DFB00088C70E946F6D621573058405950508F08A +:10DFC00080C7C0908E05D0908F05370193E0660C16 +:10DFD000771C9A95E1F76C0C7D1C67E0C3010E94E9 +:10DFE0006645F301978189133CC000E010E00E15EF +:10DFF0001F050CF0FAC648E050E0B301C6010E94CC +:10E00000E087F8E0CF0ED11C892B09F0EBC6000F9A +:10E01000111FE0918805F0918905E00FF11F8081C3 +:10E0200091818160918380836BE675E087E698E05B +:10E030000E949B5F809190059091910523E0880F4D +:10E04000991F2A95E1F720918E0530918F05820F57 +:10E05000931F0E94D45664E675E087E698E00E941C +:10E06000623180918A0590918B05009709F084CFE9 +:10E0700028C700918E0510918F05A901E3E0440F98 +:10E08000551FEA95E1F7040F151FF801408148324A +:10E0900009F0FEC0AE014F5F5F4FB8010E94AE466F +:10E0A000882369F12A8130E0C901982F8827990FC8 +:10E0B000990F990F6981F8E06F9FB00111249C01BD +:10E0C000262B372BD8018C918031E1F4688570E0E4 +:10E0D0008F81FB01E81BF109CF019695982F8827C6 +:10E0E000979587950E94B38360517109207F13E053 +:10E0F000220F331F1A95E1F7620F731F04C060E807 +:10E1000074EE01C0B9016138F4EE7F077CF0072E90 +:10E11000000C880B990B0E94158520E030E040E050 +:10E120005CE30E94CA859B01AC0104C020E030E0A2 +:10E130004EEF52ECE0918C05F0918D05309789F00F +:10E140008091D9059091DA05BC01A3E0660F771F95 +:10E15000AA95E1F7A0918E05B0918F056A0F7B1FFC +:10E1600019950091D9051091DA0573E0000F111F80 +:10E170007A95E1F780918E0590918F05080F191F10 +:10E18000E0909205F0909305D8018C91803149F090 +:10E19000B801C7010E94C146D82E882309F46CC07B +:10E1A00002C06CE0D62EF701858196810E9423463D +:10E1B000882309F461C0B801D70115968D919C910F +:10E1C00016970E94D945F701408164E485819681C4 +:10E1D0000E94B745D70112968C91882309F44CC050 +:10E1E000E7EFED0DE33040F4F0E0EE0FFF1FE85EE7 +:10E1F000FD4FC080D18004C04EEEC42E42E0D42E2C +:10E200000115110599F1F7018381882379F1808146 +:10E2100081112CC00E946F6D2B013C019601DD0C19 +:10E22000440B550BA0962CAF3DAF4EAF5FAFA09700 +:10E23000AE014F5F5F4FB801C7010E945846898108 +:10E2400081111AC00E946F6DDC01CB01A0962CAD2C +:10E250003DAD4EAD5FADA097821B930BA40BB50BEC +:10E2600084159505A605B70518F306C0B601DD0CA3 +:10E27000880B990B0E94356D8091D9059091DA0534 +:10E2800001969093DA058093D90564EC79E00DC08E +:10E290002F5F3F4F3093DA052093D90580ED97E04B +:10E2A0000E94B38302C06FEF7FEFCB01770FAA0B01 +:10E2B000BB0B880E991EAA1EBB1E8092DB05909296 +:10E2C000DC05A092DD05B092DE050E94D923809185 +:10E2D000EE0B9091EF0B892B09F47FC58091970588 +:10E2E00090919805049709F4CFC30E946F6D009137 +:10E2F000DF051091E0052091E1053091E205061758 +:10E3000017072807390708F0BFC320E030E1232EA4 +:10E31000312CE0919505F0919605309709F4B4C33E +:10E320002111B2C38085853009F097C346E853E0D8 +:10E3300063965FAF4EAF63976596FFAFEEAF65979D +:10E34000CE018F5A9F4F0E9415220E946F6D4B0184 +:10E350005C016A968FAD6A97843061F008F465C3FA +:10E36000883009F462C3893009F4DDC0853009F0D2 +:10E3700061C35BC38091EC0B9091ED0B892B09F08D +:10E38000CAC0CE018F5A9F4F0E949C658111C3C0A5 +:10E390006796CEACDFAC6797D60118968C91853026 +:10E3A00009F0ABC5C6010E940F35E82EF12CB2E092 +:10E3B000EB16F1040CF4A1C521E030E03093ED0B35 +:10E3C0002093EC0B60E070E0CE018F5A9F4F0E94CB +:10E3D000AD213C0161E070E0CE018F5A9F4F0E9459 +:10E3E000AD218C0135E0E316F1040CF4F9C564E0CD +:10E3F000C6010E947431FC01E184F28426E240E807 +:10E4000055E260E070E08AEC97E00E94F3316092A0 +:10E41000C1098AEC97E09093C0098093BF091092DC +:10E42000CC0A1092CE0A1092CD0AF1E0EF16F10458 +:10E4300009F488C50CF468C532E0E316F10409F06C +:10E4400071C51093C3090093C20981E090E09093D5 +:10E45000C5098093C40983E00E945832A1968FAF0A +:10E46000A197A196FFADA197F1117DC52091C60995 +:10E470003091C709A3963FAF2EAFA397C901330FC1 +:10E48000AA0BBB0B89839A83AB83BC833E822D820C +:10E490006596EEADFFAD6597E080F1806DED75E0BE +:10E4A00087E698E00E949B5FB70187E698E00E94AC +:10E4B000C26066ED75E087E698E00E949B5FBE0152 +:10E4C0006F5F7F4F87E698E00E946F220E94BE60D8 +:10E4D000A3966EAD7FADA397CE018F5A9F4F0E943A +:10E4E000D6651092ED0B1092EC0BE0909505F09034 +:10E4F0009605D70112968D919C911397E6E8F3E06B +:10E50000FA83E9839C838B83CE0101960E941522B6 +:10E51000EF2809F045C5CE018F5A9F4F0E949A6699 +:10E5200080ED97E089C28091EC0B9091ED0B892BE7 +:10E5300091F7CE018F5A9F4F0E949C658111EBCFBE +:10E5400021E030E03093ED0B2093EC0B0E94C528C6 +:10E550006C01892B21F086E0D60118968C9320E07F +:10E5600030E043E050E060E2CE0101960E94332D9E +:10E570006596EEADFFAD6597608171814FE150E02A +:10E58000CE0101960E94388861EE73E0CE010196BB +:10E590000E94128826E040E855E260E070E08AECD4 +:10E5A00097E00E94F33160E070E0CE018F5A9F4FF8 +:10E5B0000E94AD218093C1098AEC97E09093C00935 +:10E5C0008093BF091092CC0A1092CE0A1092CD0A05 +:10E5D000E4E3F8E0F093C309E093C2092AE030E0F5 +:10E5E0003093C5092093C40983E00E9458328111F9 +:10E5F000BEC066EB75E087E698E00E949B5F06EC84 +:10E6000019E0D8018D919D918D01092E000CAA0B66 +:10E61000BB0B25968CAF9DAFAEAFBFAF25972796AE +:10E620003FAE2EAE2797BE016F5B7F4F87E698E027 +:10E630000E946F2264EB75E00E949B5FB9E00A3D87 +:10E640001B07F9F687E698E00E94BE606091CA0950 +:10E650007091CB09072E000C880B990B0E94158531 +:10E6600020E030E048EC52E40E946B849B01AC0156 +:10E6700067EE73E0C6010E94F9660091CE09109121 +:10E68000CF09A80169EE73E0C6010E94B93160911B +:10E69000D0097091D109072E000C880B990B0E94AC +:10E6A000158520E030E048EC52E40E946B849B0129 +:10E6B000AC016DEE73E0C6010E94F9666091D2096B +:10E6C0007091D309072E000C880B990B0E941585B9 +:10E6D00020E030E040E251E40E946B849B01AC01F9 +:10E6E0006BEE73E0C6010E94F9664091C609509135 +:10E6F000C7096FEE73E0C6010E94B931012B09F41E +:10E7000052C067968EAD9FAD6797FC01208525307E +:10E7100009F049C061E00E947431009709F443C0D8 +:10E7200024E630E06C963FAF2EAF6C97DC01199673 +:10E730006D917C911A97CE018F5B9F4F0E947A63F7 +:10E74000CE018F5B9F4F0E944421882361F1E12C11 +:10E75000F12C01E09E01265A3F4F41E050E060E07D +:10E7600070E0CE018F5B9F4F0E94D7091CC090E0E4 +:10E77000A0E0B0E025968CAF9DAFAEAFBFAF2597C0 +:10E7800027963FAE2EAE27976EE975E087E698E0B4 +:10E790000E949B5FBE016F5B7F4F87E698E00E94FF +:10E7A0006F220E94BE608091C60983FF16C08EE36F +:10E7B00098E09093C3098093C209E1E0F0E0F09300 +:10E7C000C509E093C40983E00E94583281110CC04E +:10E7D0004091C6095091C70902C040E050E062EF85 +:10E7E00073E0C6010E94B93162E370E080E090E01E +:10E7F0000E94356D23E130E03093C3092093C209B4 +:10E8000084E090E09093C5098093C40983E00E945E +:10E8100058328111A9C064E975E087E698E00E944A +:10E820009B5F06EC19E02EECE22E29E0F22ED801D7 +:10E830006D917D918D014AE050E087E698E00E945D +:10E84000656062E975E087E698E00E949B5FE016EC +:10E85000F10669F787E698E00E94BE600091C6095C +:10E860001091C70901151105D1F0B801012E000C56 +:10E87000880B990B0E9415852DEE3EE94CE35EE373 +:10E880000E94CA8522E538EB42E152E40E94F983F6 +:10E890009B01AC0166EF73E0C6010E94F9666091CE +:10E8A000C8097091C909072E000C880B990B0E94AA +:10E8B00015852DEE3EE94CE35EE30E94CA8522E514 +:10E8C00038EB42E152E40E94F9832B013C019B01A9 +:10E8D000AC0165EE73E0C6010E94F9666091CC0957 +:10E8E0007091CD0916161706A4F4072E000C880B9C +:10E8F000990B0E94158520E030E040E251E40E942F +:10E900006B849B01AC016AEF73E0C6010E94F9665B +:10E9100007C040E050E06AEF73E0C6010E94B931E1 +:10E9200020E030E040E252E4C301B2010E94C5851C +:10E930001816A4F5012B91F10E947F64882329F019 +:10E9400080919405882309F46FC3E12CF12C01E038 +:10E9500020E030E040E050E062E070E0CE018F5A0D +:10E960009F4F0E94D7091AC090E0A0E0B0E0259622 +:10E970008CAF9DAFAEAFBFAF259727963FAE2EAE03 +:10E9800027976CE775E087E698E00E949B5FBE01E1 +:10E990006F5B7F4F87E698E00E946F2280E091E0F6 +:10E9A0000E94E0798C01892B61F125961FAE1EAE85 +:10E9B000259727961FAE1EAE27978FEF9FEF2996BC +:10E9C0009FAF8EAF299782E292E023969FAF8EAFE2 +:10E9D00023972B961FAE1EAE2B972D961FAF0EAF13 +:10E9E0002D9780E091E061969FAF8EAF61972F9653 +:10E9F0001FAE1EAE2F97B601CE018F5B9F4F0E94B8 +:10EA0000CE260E947F64882329F080919405882374 +:10EA100009F415C3C8010E94787AC6010E944167B3 +:10EA20001092ED0B1092EC0B76CDCE018F5A9F4FCA +:10EA30000E949A6684E690E0092E000CAA0BBB0B9C +:10EA4000880E991EAA1EBB1E8092DF059092E005DB +:10EA5000A092E105B092E20521E0E0919505F091E8 +:10EA60009605828193819093960580939505892BD5 +:10EA700009F04FCCE091EE0BF091EF0B868197817E +:10EA800090939605809395050E946F6D0091E30524 +:10EA90001091E4052091E5053091E60560177107B6 +:10EAA0008207930708F499C1E091EE0BF091EF0B08 +:10EAB000309709F492C1C680D78010E0C114D10408 +:10EAC00009F4DBC065E070E0C6010E941C2E8823BB +:10EAD00009F4CDC064E0C6010E9474311C010097A6 +:10EAE00009F4C5C00E940F35823008F4C0C061E04F +:10EAF000C6010E947431DC0119961C9119971A966F +:10EB00000C9162E0C6010E947431FC014184528480 +:10EB10006384748463E0C6010E947431DC01199639 +:10EB20002D913D914D915C911C97A7962CAF3DAFD7 +:10EB30004EAF5FAFA79760E0C1010E947431FC0146 +:10EB400081849284A384B48461E0C1010E94743101 +:10EB5000DC0119964D915D916D917C911C97411549 +:10EB600051056105710509F070C2F601608171817E +:10EB700087E698E00E94C2606DE576E087E698E05F +:10EB80000E949B5F20E030E048E152E4C501B401FF +:10EB90000E94C58518163CF4D6016D917C918AE0DF +:10EBA00094E00E9436676D961FAF6D976E960FAF1B +:10EBB0006E97C301B2010E9415852B013C01A596F9 +:10EBC000EEACFFACA597F6010190F081E02DA9967F +:10EBD000FFAFEEAFA99787E698E00E94BE60A996C6 +:10EBE0006EAD7FADA99787E698E00E94C26067E5A9 +:10EBF00076E087E698E00E949B5F42E0C301B201A5 +:10EC00000E944F5761E576E087E698E00E949B5F9F +:10EC100042E0C501B4010E944F576BE476E087E6FD +:10EC200098E00E949B5F4AE050E0A5966EAD7FADF4 +:10EC3000A59787E698E00E9465606E962EAD3FAD81 +:10EC40006E9761E0812F37FD18C20E94F96C42E097 +:10EC5000E416F10409F01AC260E0812F0E94FD3A27 +:10EC600066E476E087E698E00E949B5F11E0D601BB +:10EC70001296CD90DC90139721CF0E946F6DDC012E +:10EC8000CB01805D9A48AF4FBF4F8093E3059093CF +:10EC9000E405A093E505B093E6050E94C42D4B0161 +:10ECA0005C010E946F6D6B017C010E947F64882370 +:10ECB00009F462C020E030E041E050E060E4CE01C1 +:10ECC00001960E94332D40E450E06DE176E0CE01E4 +:10ECD00001960E94D37B67E174E0CE0101960E9409 +:10ECE000128840E450E064E176E0CE0101960E9493 +:10ECF000D37BB501A401CE018F5B9F4F0E94D82C1E +:10ED0000BE016F5B7F4FCE0101960E94916520E0AE +:10ED100030E041E050E060E4CE0101960E94332DE6 +:10ED200040E450E06DE176E0CE0101960E94D37B95 +:10ED300067E174E0CE0101960E94128840E450E041 +:10ED40006DE076E0CE0101960E94D37BC701B6014B +:10ED500028EE33E040E050E00E945083BA01A90160 +:10ED6000CE018F5B9F4F0E94D82CBE016F5B7F4FFF +:10ED7000CE0101960E9491651123C1F00E94C42D1D +:10ED80006B017C0168E276E087E698E00E949B5F79 +:10ED90002AE0B701A60187E698E00E94D45F69E106 +:10EDA00074E087E698E00E94C26017C00E94C42DFC +:10EDB0006B017C0166E276E087E698E00E949B5F4B +:10EDC0002AE0B701A60187E698E00E94D45F64E2DA +:10EDD00076E087E698E00E949B5F0E94412E0E94A9 +:10EDE0001F5F17C80F5F1F4F02C980919205909156 +:10EDF0009305892B09F435C9E0919005F0919105AF +:10EE0000EE0FFF1F8091880590918905E80FF91F8B +:10EE100021E030E03183208300919005109191052D +:10EE20006FE575E087E698E00E949B5F4AE050E05E +:10EE3000B80187E698E00E94656068E575E087E6BE +:10EE400098E00E949B5F8091900590919105B3E0BE +:10EE5000880F991FBA95E1F720918E0530918F05A3 +:10EE6000820F931F0E94D45687E698E00E94BE60EE +:10EE7000609190057091910513E0660F771F1A95C8 +:10EE8000E1F780918E0590918F05680F791FDB0166 +:10EE90008C91883261F480919205909193050E9443 +:10EEA000525680918A0590918B050E949A2B8091F1 +:10EEB000900590919105019690939105809390050E +:10EEC000D0C8009190051091910569E475E087E63E +:10EED00098E00E949B5F4AE050E0B80187E698E026 +:10EEE0000E94656087E698E00E94BE601092DA0595 +:10EEF0001092D90560E47FE1D8C96AEF75E087E632 +:10EF000098E00E949B5F07CBEF2831F51093C3096F +:10EF10000093C209A1E0B0E0B093C509A093C40971 +:10EF200081E09ACA43E0E416F104B1F41093C309F6 +:10EF30000093C209E1E0F0E0F093C509E093C40951 +:10EF400084E08ACA1093C3090093C209F092C509EC +:10EF5000E092C40982E080CA62EE75E087E698E03C +:10EF60000E949B5F7ECAA1963FADA197832F90E040 +:10EF7000A0E0B0E089839A83AB83BC833E822D827C +:10EF800060EC75E087E698E00E949B5FBE016F5FD2 +:10EF90007F4F87E698E00E946F220E94BE60A1CA60 +:10EFA000CE0101960E944421882309F4B4CA8985C0 +:10EFB000843009F0B0CA60E070E0CE0101960E9492 +:10EFC000AD216816790609F0A6CA61E070E0CE01AD +:10EFD00001960E94AD210817190709F09CCA04C0C8 +:10EFE00082E0E82EF12C0ACAA3966EAD7FADA397FE +:10EFF000CE0101960E94D665E0919505F0919605A7 +:10F00000828193819093960580939505892B09F0D1 +:10F0100082CAE091EE0BF091EF0B8681978190937D +:10F0200096058093950577CA6596EEADFFAD659719 +:10F03000608171818AE094E00E94366786CCB801D5 +:10F04000CE0101960E943667E5CC41505109610915 +:10F050007109DC0119964D935D936D937C931C9718 +:10F06000452B462B472B09F08DCDF6016081718130 +:10F070008EEF93E00E94366785CD81950E94F96CF2 +:10F0800032E0E316F10409F05EC018C0F5E0EF16B7 +:10F09000F10409F4E1CD61E0C1010E947431FC0189 +:10F0A00081859285A385B485892B8A2B8B2B61F46E +:10F0B0006E96EEADFFAD6E97F7FFCECD60E0812F7F +:10F0C00081950E94FD3AC8CD20E030E040E85FE342 +:10F0D000C301B2010E94F9839B01AC01C501B401D7 +:10F0E0000E94668487FF12C06E962EAD3FAD6E976C +:10F0F00037FF05C060E0812F81950E94FD3A61E0F5 +:10F10000812F0E94FD3A62E476E0ACCDA501940126 +:10F11000C301B2010E946684181694F06E964EAD3B +:10F120005FAD6E9757FF05C061E0812F81950E940A +:10F13000FD3A60E0812F0E94FD3A6DE376E092CDCA +:10F140006EE276E08FCD25E0E216F10409F0A3CF60 +:10F15000B5CFEAECF7E01382128248EE53E060E0AC +:10F1600070E044835583668377838EE892E09183D1 +:10F17000808325ED30E03587248724ED30E0378724 +:10F18000268720ED30E0318B208B21ED30E0338B72 +:10F19000228B22ED30E0358B248B26ED30E0378B4F +:10F1A000268B118E128E138E148EE7E6F8E01382F2 +:10F1B000128244835583668377839183808385ECB1 +:10F1C00090E09587848784EC90E09787868780EC31 +:10F1D00090E0918B808B81EC90E0938B828B82EC22 +:10F1E00090E0958B848B86EC90E0978B868B118ECC +:10F1F000128E138E148EE6EEFAE080E293E0918395 +:10F2000080831282138214821582ECEEFAE09183DD +:10F2100080831282138214821582E2EFFAE09183D6 +:10F2200080831282138214821582E4E0F9E09183D4 +:10F2300080831282138214821582E8EFFAE09183B0 +:10F2400080831282138214821582EEEFFAE091839A +:10F2500080831282138214821582E4E0FBE09183A2 +:10F2600080831282138214821582EAE0FBE091838C +:10F2700080831282138214821582EAE0F9E091837E +:10F2800080831282138214821582E2E1F9E01382F4 +:10F290001282448355836683778320EA32E0318388 +:10F2A0002083E0E1FBE09183808312821382148249 +:10F2B0001582E6E1FBE0918380831282138214823F +:10F2C0001582ECE1FBE09183808312821382148229 +:10F2D0001582E9EDFAE01382128244835583668336 +:10F2E00077832AEF32E03183208324E02487109251 +:10F2F000D40A1092D30A1092D60A1092D50A10920C +:10F30000D80A1092D70AAEE1B9E013961C921E9269 +:10F31000129722EB32E011963C932E939093B20910 +:10F320008093B1091092B3091092B4091092B509F3 +:10F330001092B6092FEF3FEF3093BE092093BD091D +:10F340001596FC93EE9314971092BC091092BB098A +:10F35000E2E2FBE0918380831282138214821582A1 +:10F36000E8E2FBE09183808312821382148215828B +:10F37000EEE2FBE091838083128213821482158275 +:10F38000E4E3FBE09183808312821382148215826E +:10F39000EAE3FBE091838083128213821482158258 +:10F3A000E0E4FBE08FEF80831282118214861386E3 +:10F3B0008FEF9FEFDC0187839087A187B287089545 +:10F3C0000F931F93CF93DF938230910510F482E067 +:10F3D00090E0E091FD0BF091FE0B20E030E0A0E02A +:10F3E000B0E0309719F140815181028113814817B3 +:10F3F0005907C8F08417950769F4109731F01296F1 +:10F400000C93129713961C9327C00093FD0B109337 +:10F41000FE0B22C02115310519F04217530718F4CD +:10F420009A01BD01EF01DF01F801DBCF21153105A4 +:10F43000F9F0281B390B2430310580F48A819B8137 +:10F440006115710521F0FB019383828304C09093C1 +:10F45000FE0B8093FD0BFE01329644C0FE01E20FCD +:10F46000F31F8193919322503109398328833AC045 +:10F470002091FB0B3091FC0B232B41F420910A02CD +:10F4800030910B023093FC0B2093FB0B2091080270 +:10F49000309109022115310541F42DB73EB7409155 +:10F4A0000C0250910D02241B350BE091FB0BF091E7 +:10F4B000FC0BE217F307A0F42E1B3F0B28173907AC +:10F4C00078F0AC014E5F5F4F2417350748F04E0FC0 +:10F4D0005F1F5093FC0B4093FB0B8193919302C0F1 +:10F4E000E0E0F0E0CF01DF91CF911F910F910895FF +:10F4F000CF93DF93009709F481C0FC013297138208 +:10F500001282A091FD0BB091FE0B109781F4208127 +:10F510003181820F931F2091FB0B3091FC0B281738 +:10F52000390751F5F093FC0BE093FB0B67C0ED013D +:10F5300020E030E0CE17DF0740F44A815B819E0176 +:10F5400041155105F1F0EA01F5CFD383C283408123 +:10F550005181840F951FC817D90759F48881998163 +:10F56000840F951F0296918380838A819B81938368 +:10F5700082832115310529F4F093FE0BE093FD0BF6 +:10F580003DC0E901FB83EA8349915991C40FD51F1E +:10F59000EC17FD0761F480819181840F951F02961D +:10F5A000E90199838883828193819B838A83E0E048 +:10F5B000F0E012968D919C911397009719F0FD0140 +:10F5C000DC01F7CF8D919C9111979D012E5F3F4FEC +:10F5D000820F931F2091FB0B3091FC0B28173907EA +:10F5E00069F4309729F41092FE0B1092FD0B02C0C3 +:10F5F00013821282B093FC0BA093FB0BDF91CF918F +:10F6000008958F929F92AF92BF92CF92DF92EF9226 +:10F61000FF92CF93DF93EC01688179818A819B818E +:10F62000611571058105910521F464E279ED8BE5A1 +:10F6300097E02DE133EF41E050E00E9472834901F1 +:10F640005A019B01AC01A7EAB1E40E9491836B01CE +:10F650007C01ACEEB4EFA50194010E949F83DC0114 +:10F66000CB018C0D9D1DAE1DBF1DB7FF03C00197C3 +:10F67000A109B04888839983AA83BB83BC01CD01CB +:10F680009F77DF91CF91FF90EF90DF90CF90BF9069 +:10F69000AF909F908F9008958F929F92AF92BF925C +:10F6A000CF92DF92EF92FF9260910E0270910F0263 +:10F6B00080911002909111026115710581059105EB +:10F6C00021F464E279ED8BE597E02DE133EF41E041 +:10F6D00050E00E94728349015A019B01AC01A7EAE4 +:10F6E000B1E40E9491836B017C01ACEEB4EFA50103 +:10F6F00094010E949F83DC01CB018C0D9D1DAE1DEA +:10F70000BF1DB7FF03C00197A109B04880930E0247 +:10F7100090930F02A0931002B0931102BC01CD018F +:10F720009F77FF90EF90DF90CF90BF90AF909F902A +:10F730008F90089560930E0270930F0280931002D1 +:10F74000909311020895FC0188279927E89421914C +:10F750002032E9F3293010F02E30C8F32B3241F07B +:10F760002D3239F4689404C00E94367C820F911DBA +:10F77000219120532A30C0F31EF4909581959F4F1C +:10F78000089591110C943C82803219F08950855073 +:10F79000C8F70895FB01DC018D91059080190110D7 +:10F7A000D9F3990B0895FB01DC010D900020E9F7D6 +:10F7B00011974150504028F0059000200D92C9F754 +:10F7C00008951C920895FB01DC014150504030F037 +:10F7D0008D910590801919F40020B9F7881B990BB9 +:10F7E0000895FB01DC014150504048F005900D9216 +:10F7F0000020C9F701C01D9241505040E0F7089524 +:10F8000049EF5BE00C94047CFA01A191B081009770 +:10F8100019F41097E1F0CD01DC01CD010D9000202D +:10F8200011F4C00113C0FB012191222319F020150E +:10F83000D9F7F3CFFB012191201519F41E921196EF +:10F8400006C02223C1F70D900020A1F7D001FA01D4 +:10F85000A193B0830895BB274A3031F4992322F451 +:10F86000BDE2909581959F4F0C943F7C7AE0979FE5 +:10F87000902D879F802D910D11240895BB27FB01AA +:10F880005527AA27880F991FAA1FA41710F0A41B99 +:10F8900083955051B9F7A05DAA3308F0A95DA193F3 +:10F8A000009779F7B111B1931192CB010C94678253 +:10F8B000FC01238127FF10C0EFEFFBE020813181A5 +:10F8C0008217930711F41182108232962CE0E530F2 +:10F8D000F207A1F70E94787A80E090E008950F93F4 +:10F8E0001F93CF93DF93009731F46115710519F4DD +:10F8F00080E090E03AC08B01EC016EE070E081E0C6 +:10F9000090E00E942082FC01892B91F380E88383A0 +:10F910000115110571F01387028781E883838091B7 +:10F92000FF0B9091000C892B21F4F093000CE093D5 +:10F93000FF0B2097C9F0D187C087838182608383C2 +:10F940008091010C9091020C892B71F4F093020CC0 +:10F95000E093010C8091030C9091040C892B21F40D +:10F96000F093040CE093030CCF01DF91CF911F9132 +:10F970000F910895CF93DF93EC012B8120FF33C0CB +:10F9800026FF0AC02F7B2B838E819F8101969F8348 +:10F990008E838A8190E029C022FF0FC0E881F9811F +:10F9A0008081082E000C990B009719F420622B839C +:10F9B0001AC03196F983E8830EC0EA85FB85199554 +:10F9C00097FF09C02B81019611F080E201C080E110 +:10F9D000822B8B8308C02E813F812F5F3F4F3F8357 +:10F9E0002E83992702C08FEF9FEFDF91CF9108956B +:10F9F0000F931F93CF93DF93CDB7DEB7088519859B +:10FA0000F801838188608383AE01445F5F4F6A851C +:10FA10007B85C8010E94327DF8012381277F2383E3 +:10FA2000DF91CF911F910F9108950F931F93CF9363 +:10FA3000DF93CDB7DEB708851985F801838188602B +:10FA40008383AE01445F5F4F6A857B85C8010E9456 +:10FA5000FB80F8012381277F2383DF91CF911F91C2 +:10FA60000F9108952F923F924F925F926F927F92E3 +:10FA70008F929F92AF92BF92CF92DF92EF92FF92BE +:10FA80000F931F93CF93DF93CDB7DEB72B970FB6AE +:10FA9000F894DEBF0FBECDBF6C017B018A01FC0173 +:10FAA00017821682838181FFCCC1CE0101963C0171 +:10FAB000F6019381F70193FD859193FF81917F0179 +:10FAC000882309F4BAC1853239F493FD859193FFF7 +:10FAD00081917F01853229F4B60190E00E947782FE +:10FAE000E7CF912C212C312CFFE1F315D8F08B328C +:10FAF00079F038F4803279F08332A1F4232D20613B +:10FB00001DC08D3261F0803369F4232D216016C051 +:10FB1000832D8260382EE32DE4603E2E2AC0F32D23 +:10FB2000F8601DC037FC2DC020ED280F2A3040F0B2 +:10FB30008E32B9F436FC81C1232D2064322E19C0D7 +:10FB400036FE06C08AE0989E200D1124922E11C028 +:10FB5000EAE02E9E200D1124222EF32DF0623F2E7E +:10FB600008C08C3621F4832D8068382E02C0883678 +:10FB700041F4F70193FD859193FF81917F018111FC +:10FB8000B3CF982F9F7D9554933028F40C5F1F4F6F +:10FB90009FE399830DC0833631F0833771F083354D +:10FBA00009F059C021C0F801808189830E5F1F4F81 +:10FBB00088248394912C530113C02801F2E04F0E46 +:10FBC000511CF801A080B18036FE03C0692D70E0A1 +:10FBD00002C06FEF7FEFC5010E945C824C01820181 +:10FBE000F32DFF773F2E16C0280122E0420E511C54 +:10FBF000F801A080B18036FE03C0692D70E002C01C +:10FC00006FEF7FEFC5010E944A824C01F32DF0682F +:10FC10003F2E820133FC1BC0822D90E0881699068E +:10FC2000B0F4B60180E290E00E9477822A94F4CF8B +:10FC3000F50137FC859137FE81915F01B60190E0B7 +:10FC40000E94778221102A9421E0821A910881145F +:10FC5000910471F7E8C0843611F0893641F5F80156 +:10FC600037FE07C060817181828193810C5F1F4FD5 +:10FC700008C060817181072E000C880B990B0E5F04 +:10FC80001F4FF32DFF763F2E97FF09C0909580956B +:10FC9000709561957F4F8F4F9F4FF0683F2E2AE000 +:10FCA00030E0A3010E94CC82882E861845C085379B +:10FCB00031F4232D2F7EB22E2AE030E025C0932D83 +:10FCC000997FB92E8F36C1F018F4883579F0B5C018 +:10FCD000803719F0883721F0B0C0E92FE061BE2EDF +:10FCE000B4FE0DC0FB2DF460BF2E09C034FE0AC067 +:10FCF000292F2660B22E06C028E030E005C020E1A2 +:10FD000030E002C020E132E0F801B7FE07C06081B8 +:10FD10007181828193810C5F1F4F06C06081718168 +:10FD200080E090E00E5F1F4FA3010E94CC82882EDE +:10FD30008618FB2DFF773F2E36FE0DC0232D2E7F1C +:10FD4000A22E891458F434FE0BC032FC09C0832D56 +:10FD50008E7EA82E05C0B82CA32C03C0B82C01C0E1 +:10FD6000B92CA4FE0FC0FE01E80DF11D8081803387 +:10FD700021F49A2D997EA92E09C0A2FE06C0B39443 +:10FD8000B39404C08A2D867809F0B394A3FC11C003 +:10FD9000A0FE06C0B21488F4280C922C9B180EC04A +:10FDA000B21460F4B60180E290E00E947782B394CE +:10FDB000F7CFB21418F42B1802C0982C212CA4FEF3 +:10FDC00010C0B60180E390E00E947782A2FE17C0C7 +:10FDD000A1FC03C088E790E002C088E590E0B6018E +:10FDE0000CC08A2D867859F0A1FE02C08BE201C0BA +:10FDF00080E2A7FC8DE2B60190E00E947782891430 +:10FE000038F4B60180E390E00E9477829A94F7CFAD +:10FE10008A94F301E80DF11D8081B60190E00E9403 +:10FE200077828110F5CF222009F442CEB60180E21C +:10FE300090E00E9477822A94F6CFF601868197811E +:10FE400002C08FEF9FEF2B960FB6F894DEBF0FBE68 +:10FE5000CDBFDF91CF911F910F91FF90EF90DF9079 +:10FE6000CF90BF90AF909F908F907F906F905F905A +:10FE70004F903F902F90089520FD09C0FC0123FD75 +:10FE800005C022FF02C073836283518340830895BB +:10FE900044FD17C046FD17C0AB01BC01DA01FB01F0 +:10FEA000AA0FBB1FEE1FFF1F1094D1F74A0F5B1F55 +:10FEB0006E1F7F1FCB01BA01660F771F881F991F26 +:10FEC00009C033E001C034E0660F771F881F991F17 +:10FED0003150D1F7620F711D811D911D08950F934F +:10FEE0001F93CF93DF938C01C8010E94BA7CEC0171 +:10FEF00097FD08C00E94C17B892BB1F7B801CE01E4 +:10FF00000E94B382CE01DF91CF911F910F9108958E +:10FF10008F929F92AF92BF92EF92FF920F931F9397 +:10FF2000CF93DF938C01D62F7A01B22E0E94BA7C38 +:10FF30009C0133272B32310531F02D32310561F42C +:10FF40008B2D8068B82ED15011F480E068C0C801B4 +:10FF50000E94BA7C97FDF9CFCB2DCD7F2B2D20733E +:10FF600009F58033F9F4AA24AA94AD0E09F443C02C +:10FF7000C8010E94BA7C97FD3EC09C012F7D3327AB +:10FF80002835310549F4C264D250A9F1C8010E9454 +:10FF9000BA7C97FF07C02FC0B6FE02C0C26001C086 +:10FFA000C261DA2D812C912C540120ED280F2830CC +:10FFB00080F0C4FF04C0B8010E94B38219C02A3087 +:10FFC00040F0C6FFF8CF2F7D3FEE320F363098F766 +:10FFD00027504C2FC501B4010E94487F4B015C01A2 +:10FFE000C260D15059F0C8010E94BA7C97FFDDCFA2 +:10FFF000C1FD04C0AACF812C912C5401C7FF08C0B9 +:020000021000EC +:10000000B094A09490948094811C911CA11CB11C6C +:100010002C2FB501A401C7010E943C7F81E0DF9134 +:10002000CF911F910F91FF90EF90BF90AF909F9055 +:100030008F9008955F926F927F928F929F92AF926E +:10004000BF92CF92DF92EF92FF920F931F93CF93C5 +:10005000DF93CDB7DEB7A0970FB6F894DEBF0FBE23 +:10006000CDBF5C01962E7A01F9018E010F5F1F4F03 +:10007000680180E2D8011D928A95E9F7D5011396AF +:100080008C9080E090E0612C712C30E061E070E0B9 +:1000900083FC259183FE21918F01522E211103C0F3 +:1000A00080E090E092C02E3511F4009751F1432F7B +:1000B00050E0481759073CF42D3559F12D3219F409 +:1000C000772009F103C0772009F46AC0452D4695D1 +:1000D00046954695D601A40FB11D452D47708B015D +:1000E00002C0000F111F4A95E2F7A8015C91452B51 +:1000F0004C93651459F0561410F45394E7CF5A9466 +:10010000E5CF31E004C07724739401C0712C0196CF +:10011000BFCF772019F08E8180628E83311103C0AA +:100120008824839417C0F6019E012F5D3F4F808184 +:10013000809581932E173F07D1F7F2CFE114F10498 +:1001400029F0D7018C93F70131967F019A94812C85 +:100150009920F9F0C5010E94BA7C97FD18C0FC01F6 +:10016000FF2723E0F595E7952A95E1F7EC0DFD1DB6 +:10017000208130E0AC014770552702C035952795A6 +:100180004A95E2F720FDDACFB5010E94B3828110D3 +:1001900087CFE114F10411F0D7011C92C80115C0FA +:1001A000422F469546954695D601A40FB11D422F84 +:1001B00047708B0102C0000F111F4A95E2F7A8019A +:1001C0005C91452B4C93622EA2CFA0960FB6F8946B +:1001D000DEBF0FBECDBFDF91CF911F910F91FF907A +:1001E000EF90DF90CF90BF90AF909F908F907F90D7 +:1001F0006F905F9008955F926F927F928F929F921F +:10020000AF92BF92CF92DF92EF92FF920F931F9324 +:10021000CF93DF936C01EB015A01FC011782168228 +:10022000512CF601E380FE01E3FC8591E3FE819110 +:10023000182FEF01882309F4EEC090E00E94C17BE3 +:10024000892B21F0C6010E946F7FEBCF153241F45C +:10025000FE01E3FC1591E3FE1191EF01153281F4EB +:10026000C6010E94BA7C97FDD4C0412F50E09C018A +:10027000332724173507A9F2B6010E94B382CBC0F9 +:100280001A3239F4E3FC1591E3FE1191EF0101E01C +:1002900001C000E0F12C20ED210F2A3080F4026033 +:1002A0006F2D70E080E090E040E20E94487FF62EE3 +:1002B000FE01E3FC1591E3FE1191EF01ECCF01FF8C +:1002C00003C0F11003C0A7C0FF24FA94183619F038 +:1002D0001C3651F010C0FE01E3FC1591E3FE1191B4 +:1002E000EF01183641F408600460FE01E3FC15914B +:1002F000E3FE1191EF01112309F48DC0612F70E02D +:1003000082E195E00E943F82892B09F484C000FDC0 +:1003100007C0F50180809180C50102965C0102C092 +:10032000812C912C1E3651F4F6014681578160E0F4 +:1003300070E0202FC4010E943C7F73CF1336A9F4D4 +:1003400001FD02C0FF24F394C6010E94BA7C97FD10 +:1003500060C08114910429F0F4018083C4010196E6 +:100360004C01FA94F110F0CF50C01B3559F49E01A6 +:10037000A4016F2DC6010E941A80EC01892B09F09F +:1003800044C03EC0C6010E946F7F97FD42C01F3629 +:1003900061F128F4143639F1193651F128C01337B8 +:1003A00071F0153701F123C08114910429F0F40193 +:1003B0006082C40101964C01FA94FF2071F0C601DD +:1003C0000E94BA7C3C0197FD08C00E94C17B892B2A +:1003D00059F3B601C3010E94B38281149104A9F0BC +:1003E000F401108212C0006203C0006101C0006409 +:1003F000202FA4016F2DC6010E94887F811105C0A6 +:10040000F6018381807329F406C000FD0ACF53945E +:1004100008CF552019F0852D90E002C08FEF9FEF97 +:10042000DF91CF911F910F91FF90EF90DF90CF90D0 +:10043000BF90AF909F908F907F906F905F90089546 +:100440000F931F93CF93DF93869F8001879F100D9B +:10045000969F100D1124C8010E94E079EC010097CD +:1004600029F0A80160E070E00E945582CE01DF9182 +:10047000CF911F910F910895992788270895FC0126 +:100480000590061621F00020D9F7C0010895319794 +:10049000CF010895FC010590615070400110D8F71C +:1004A000809590958E0F9F1F0895DC0101C06D937C +:1004B00041505040E0F70895FC01615070400190B8 +:1004C0000110D8F7809590958E0F9F1F0895DC013D +:1004D000FC01672F71917723E1F7329704C07C917B +:1004E0006D9370836291AE17BF07C8F308950F93A1 +:1004F0001F93CF93DF93FB01238121FD03C08FEF77 +:100500009FEF2CC022FF16C0468157812481358180 +:100510004217530744F4A081B1819D012F5F3F4FE3 +:10052000318320838C93268137812F5F3F4F378320 +:10053000268314C08B01EC01FB010084F185E02DC2 +:100540001995892BE1F6D80116968D919C911797F4 +:10055000019617969C938E931697CE01DF91CF91BB +:100560001F910F910895FB01238120FF12C026FDEA +:1005700010C08F3F3FEF930761F082832F7D20648F +:100580002383268137812150310937832683992798 +:1005900008958FEF9FEF0895FA01AA27283051F1AF +:1005A000203181F1E8946F936E7F6E5F7F4F8F4FA4 +:1005B0009F4FAF4FB1E03ED0B4E03CD0670F781F03 +:1005C000891F9A1FA11D680F791F8A1F911DA11DE8 +:1005D0006A0F711D811D911DA11D20D009F4689421 +:1005E0003F912AE0269F11243019305D3193DEF6C9 +:1005F000CF010895462F4770405D4193B3E00FD07F +:10060000C9F7F6CF462F4F70405D4A3318F0495D69 +:1006100031FD4052419302D0A9F7EACFB4E0A6954C +:100620009795879577956795BA95C9F7009761056E +:10063000710508959B01AC010A2E069457954795C4 +:1006400037952795BA95C9F7620F731F841F951FB9 +:10065000A01D0895F999FECF92BD81BDF89A992702 +:1006600080B50895262FF999FECF1FBA92BD81BD9E +:1006700020BD0FB6F894FA9AF99A0FBE0196089524 +:10068000DB018F939F930E949183BF91AF91A29FB3 +:10069000800D911DA39F900DB29F900D1124089580 +:1006A000A1E21A2EAA1BBB1BFD010DC0AA1FBB1F76 +:1006B000EE1FFF1FA217B307E407F50720F0A21BE8 +:1006C000B30BE40BF50B661F771F881F991F1A9455 +:1006D00069F760957095809590959B01AC01BD017F +:1006E000CF010895052E97FB1EF400940E94898384 +:1006F00057FD07D00E94508307FC03D04EF40C94A2 +:10070000898350954095309521953F4F4F4F5F4FCE +:10071000089590958095709561957F4F8F4F9F4F6D +:1007200008950E94A483A59F900DB49F900DA49F4F +:10073000800D911D11240895B7FF0C9491830E94A0 +:100740009183821B930B0895A29FB001B39FC001B8 +:10075000A39F700D811D1124911DB29F700D811DED +:100760001124911D089597FB072E16F4009407D0CD +:1007700077FD09D00E94E58307FC05D03EF49095F3 +:1007800081959F4F0895709561957F4F0895EE0F65 +:10079000FF1F881F8BBF0790F691E02D19946927E2 +:1007A0009627692778278727782708950E94A483AA +:1007B000332312F48A1B9B0B0C94E0830E94A483C6 +:1007C000B7FF0895821B930B0895AA1BBB1B51E131 +:1007D00007C0AA1FBB1FA617B70710F0A61BB70BB1 +:1007E000881F991F5A95A9F780959095BC01CD0156 +:1007F00008955058BB27AA270E9411840C948B851A +:100800000E947D8538F00E94848520F039F49F3F56 +:1008100019F426F40C947A850EF4E095E7FB0C9419 +:100820007485E92F0E949C8558F3BA1762077307F5 +:100830008407950720F079F4A6F50C94BE850EF494 +:10084000E0950B2EBA2FA02D0B01B90190010C01E0 +:10085000CA01A0011124FF27591B99F0593F50F4F8 +:10086000503E68F11A16F040A22F232F342F442750 +:10087000585FF3CF469537952795A795F040539548 +:10088000C9F77EF41F16BA0B620B730B840BBAF018 +:100890009150A1F0FF0FBB1F661F771F881FC2F783 +:1008A0000EC0BA0F621F731F841F48F48795779597 +:1008B0006795B795F7959E3F08F0B0CF9395880F51 +:1008C00008F09927EE0F9795879508950E94508517 +:1008D00008F481E008950E947F840C948B850E9427 +:1008E000848558F00E947D8540F029F45F3F29F00F +:1008F0000C94748551110C94BF850C947A850E94D8 +:100900009C8568F39923B1F3552391F3951B550BFF +:10091000BB27AA2762177307840738F09F5F5F4FD2 +:10092000220F331F441FAA1FA9F335D00E2E3AF011 +:10093000E0E832D091505040E695001CCAF72BD029 +:10094000FE2F29D0660F771F881FBB1F261737077A +:100950004807AB07B0E809F0BB0B802DBF01FF27AC +:1009600093585F4F3AF09E3F510578F00C94748590 +:100970000C94BF855F3FE4F3983ED4F3869577955A +:100980006795B795F7959F5FC9F7880F911D969565 +:10099000879597F90895E1E0660F771F881FBB1FC1 +:1009A000621773078407BA0720F0621B730B840B6E +:1009B000BA0BEE1F88F7E09508950E94E4846894CE +:1009C000B1110C94BF8508950E94A48588F09F57AB +:1009D00098F0B92F9927B751B0F0E1F0660F771F63 +:1009E000881F991F1AF0BA95C9F714C0B13091F059 +:1009F0000E94BE85B1E008950C94BE85672F782FC4 +:100A00008827B85F39F0B93FCCF38695779567951D +:100A1000B395D9F73EF490958095709561957F4F89 +:100A20008F4F9F4F0895E89409C097FB3EF490952F +:100A30008095709561957F4F8F4F9F4F9923A9F0B7 +:100A4000F92F96E9BB279395F69587957795679546 +:100A5000B795F111F8CFFAF4BB0F11F460FF1BC08A +:100A60006F5F7F4F8F4F9F4F16C0882311F096E91D +:100A700011C0772321F09EE8872F762F05C06623CB +:100A800071F096E8862F70E060E02AF09A95660F84 +:100A9000771F881FDAF7880F9695879597F908953D +:100AA000990F0008550FAA0BE0E8FEEF161617067F +:100AB000E807F907C0F012161306E407F50798F0E7 +:100AC000621B730B840B950B39F40A2661F0232B00 +:100AD000242B252B21F408950A2609F4A140A6957C +:100AE0008FEF811D811D089597F99F6780E870E061 +:100AF00060E008959FEF80EC089500240A94161694 +:100B0000170618060906089500240A9412161306FB +:100B1000140605060895092E0394000C11F4882389 +:100B200052F0BB0F40F4BF2B11F460FF04C06F5FA5 +:100B30007F4F8F4F9F4F089557FD9058440F551F7B +:100B400059F05F3F71F04795880F97FB991F61F04F +:100B50009F3F79F087950895121613061406551FC6 +:100B6000F2CF4695F1DF08C0161617061806991F32 +:100B7000F1CF86957105610508940895E894BB2727 +:100B800066277727CB0197F908950E94508508F4CE +:100B90008FEF08950E94DD850C948B850E947D85E2 +:100BA00038F00E94848520F0952311F00C94748510 +:100BB0000C947A8511240C94BF850E949C8570F357 +:100BC000959FC1F3950F50E0551F629FF001729FF2 +:100BD000BB27F00DB11D639FAA27F00DB11DAA1F01 +:100BE000649F6627B00DA11D661F829F2227B00D4E +:100BF000A11D621F739FB00DA11D621F839FA00DD9 +:100C0000611D221F749F3327A00D611D231F849F28 +:100C1000600D211D822F762F6A2F11249F5750407F +:100C20009AF0F1F088234AF0EE0FFF1FBB1F661FFA +:100C3000771F881F91505040A9F79E3F510580F0C3 +:100C40000C9474850C94BF855F3FE4F3983ED4F315 +:100C5000869577956795B795F795E7959F5FC1F767 +:100C6000FE2B880F911D9695879597F90895FA01A7 +:100C7000EE0FFF1F309621053105A1F161157105B9 +:100C800061F48038BFE39B0749F16894903881058F +:100C900061F08038BFEF9B0741F099234AF5FF3F91 +:100CA000E1053105210519F1E8940894E795D9018A +:100CB000AA2329F4AB2FBE2FF85FD0F310C0FF5F3B +:100CC00070F4A695E0F7F73950F019F0FF3A38F4D0 +:100CD0009F779F930DD00F9007FC9058089546F092 +:100CE0000C947A8560E070E080E89FE308954FE718 +:100CF0009F775F934F933F932F930E9437872F9156 +:100D00003F914F915F910E94CA850C9494860E94F6 +:100D10005085880B990B089529F416F00C9474856E +:100D20000C94BE850C947A850E94A485A8F396380D +:100D3000A0F707F80F92E8942BE33AEA48EB5FE755 +:100D40000E94E0850F920F920F924DB75EB70F92FF +:100D50000E947F87ECEFF1E00E94C6864F915F9181 +:100D6000EF91FF91E595EE1FFF1F49F0FE57E068F8 +:100D70004427EE0F441FFA95E1F74195550B0E9469 +:100D8000F9860F9007FE0C94ED860895DF93CF93BC +:100D90001F930F93FF92EF92DF927B018C01689477 +:100DA00006C0DA2EEF010E94DD85FE01E894A591D0 +:100DB0002591359145915591A6F3EF010E9411843B +:100DC000FE019701A801DA9469F7DF90EF90FF9098 +:100DD0000F911F91CF91DF9108959B01AC0160E0CD +:100DE00070E080E89FE30C946B840C9474850C9401 +:100DF000B3870E94A485D8F39923C9F3940F511D9A +:100E0000A3F39150504094F059F0882332F0660FCC +:100E1000771F881F91505040C1F79E3F51052CF716 +:100E2000880F911D9695879597F908955F3FACF0CF +:100E3000983E9CF0BB27869577956795B79508F403 +:100E4000B1609395C1F7BB0F58F711F460FFE8CF7D +:100E50006F5F7F4F8F4F9F4FE3CF0C94BF8516F08E +:100E60000C94B3870C947A8568940C9474850E94D2 +:100E7000A485A8F39923C1F3AEF3DF93CF931F9317 +:100E80000F93FF92C92FDD2788232AF02197660F41 +:100E9000771F881FDAF720E030E040E85FEB9FE340 +:100EA000883920F0803E38F021968F770E94FA83AF +:100EB000E4E2F2E004C00E94FA83E1E5F2E00E947D +:100EC000C6868B01BE01EC01FB2E6F57710975952B +:100ED000771F880B990B0E94158528E132E741E3C3 +:100EE0005FE30E94DD85AF2D9801AE01FF900F9169 +:100EF0001F91CF91DF910E9411840C948B85FA0190 +:100F0000DC01AA0FBB1F9B01AC01BF5728F42227AD +:100F100033274427507820C0B75190F4AB2F0024DA +:100F2000469537952795011CA395D2F3002071F0C3 +:100F3000220F331F441FB395DAF30ED00C94F983BC +:100F400061307105A0E88A07B94630F49B01AC0115 +:100F50006627772788279078309621F02083318381 +:100F60004283538308959F3F31F0915020F4879539 +:100F700077956795B795880F911D9695879597F901 +:100F8000089581E090E0F8940C94FC880F931F93EF +:100F9000CF93DF938C01FC0101900020E9F7CF0192 +:100FA000801B910B0E94E079EC01009719F0B801C9 +:100FB0000E943188CE01DF91CF911F910F9108954A +:100FC000FB01DC0104C08D910190801921F4415096 +:100FD0005040C8F7881B990B08956817790768F483 +:100FE000FB01DC01E40FF51FA40FB51F02C0029046 +:100FF0000E9241505040D8F708950C94F388FB01AD +:10100000DC018D9181341CF08B350CF4805E619194 +:1010100061341CF06B350CF4605E861B611189F342 +:10102000990B0895FB01DC010D900020E9F7119761 +:1010300001900D920020E1F70895FC01819186173F +:1010400021F08823D9F7992708953197CF01089582 +:10105000FB01DC018D91019080190110D9F3990BEE +:101060000895FB01DC0101900D920020E1F7089545 +:10107000FB01DC010D900020E9F711974150504031 +:1010800028F0019000200D92C9F708951C92089550 +:10109000FB01DC014150504030F08D9101908019EE +:1010A00019F40020B9F7881B990B0895FB01DC01A6 +:1010B0004150504048F001900D920020C9F701C006 +:1010C0001D9241505040E0F708950F931F93CF9326 +:1010D000DF93CDB7DEB72E970FB6F894DEBF0FBE05 +:1010E000CDBF0E891F89888D998D26E02C831A83A8 +:1010F000098397FF02C080E090E801979E838D836B +:10110000AE01445E5F4F6A8D7B8DCE0101960E94D9 +:10111000327D4D815E8157FD0AC02F81388542178F +:1011200053070CF49A01F801E20FF31F10822E9678 +:101130000FB6F894DEBF0FBECDBFDF91CF911F91E8 +:101140000F9108950F931F93CF93DF93CDB7DEB721 +:101150002E970FB6F894DEBF0FBECDBF0E891F8944 +:1011600086E08C831A8309838FEF9FE79E838D83AC +:10117000AE01465E5F4F688D798DCE0101960E946B +:10118000327DEF81F885E00FF11F10822E960FB6A9 +:10119000F894DEBF0FBECDBFDF91CF911F910F91AD +:1011A0000895CF93DF93CDB7DEB72E970FB6F8949F +:1011B000DEBF0FBECDBF85E08C838C899D899A836D +:1011C0008983AE01485E5F4F6E897F89CE010196AB +:1011D0000E94FB802E960FB6F894DEBF0FBECDBFE7 +:1011E000DF91CF910895FB01DC0102C001900D92C7 +:0C11F00041505040D8F70895F894FFCF0C +:1011FC0003100000C00120000000050C800001005D +:10120C000000DEADBEEFFEFF5E00BC00770100000B +:10121C0000007824135E71676924B7249524C524D3 +:10122C002A256C6700000000F024135E71676924A6 +:10123C003125ED25C5242A256C6700044D515454E5 +:10124C00040000000000000000000000000000008E +:10125C000000000000000000000000000000000082 +:10126C00000000000000000000303132333435360D +:10127C003738394142434445460000000000B05E17 +:10128C00135E3D5EFD5E6E5E4C5E605E00000000B7 +:10129C00EB2ABE2A71671A48B62AA22A932A0000A2 +:1012AC000000795F565F7167706700000000545F43 +:1012BC00135E71677067545F545F545F00000000E9 +:1012CC00545F135E7167706700000000545F545FD9 +:1012DC007167545F545F545F545F545F545F545F45 +:1012EC00545F545F545F000000004E42FF42716730 +:1012FC006548DD42C3429C428A43AF47BF42134A12 +:10130C00AC485D4870426E42524864420000000096 +:10131C007C6000000000545F01005E0000000000D3 +:10132C0000001B48664871671A4831486F4BB84A31 +:10133C00114CA24C054A114D21493E4C984B504B37 +:10134C0049483948354800000000AF25135E7167E5 +:10135C0069240225C025C5242A256C6700000000DD +:10136C00F024135E716769243125DD25C5242A25F7 +:10137C006C6700000000D709E51C4E494C000000CA +:10138C000000000000000000000000000000000051 +:10139C000000000000000000000068656C70007325 +:1013AC00617665006C6F616400676574006D6163E4 +:1013BC00006B696C6C007265710069700070776409 +:1013CC0000636C656172007265626F6F74000D0A68 +:1013DC00005F7374617400560052504D00490073E5 +:1013EC007700666C740073657400707772002F61FF +:1013FC006C61726D2F736E7372002F616C61726D04 +:10140C002F6F76726874002F0020004C6F6164653A +:10141C00642066726F6D20666C6173682049503A67 +:10142C000020444E533A002047573A00204D415378 +:10143C004B3A000A4E6F204950206461746120665B +:10144C006F756E6420696E20666C6173680A002388 +:10145C00253258253258253258006974656D007351 +:10146C00636D640072636D6400656D6974004F4E4A +:10147C00004F464600540053003B0022006E756C32 +:10148C006C00747275650066616C7365002D002EBE +:10149C0000252525327800726F6F740062637374B7 +:1014AC00006D61700057495A6E657400646D7869FF +:1014BC006E00646D78006D6F64627573006F7700F9 +:1014CC006974656D7300746F70696373006D71740A +:1014DC00740031772054696D656F757400526573B3 +:1014EC006574206572726F720020636F6D705F6936 +:1014FC0064210025783A25783A25783A25783A25DA +:10150C00783A257825D181002F726573702F2300CE +:10151C002F7265712F636F6E660031002F636E66DC +:10152C002F253032782D253032782D253032782DFC +:10153C00253032782D253032782D253032782E63B7 +:10154C006F6E6669672E6A736F6E006E616E0069EE +:10155C006E66006F76660024636F6D6D616E64005D +:10156C0030002564002C002F616C61726D6F666613 +:06157C002F736E73720074 +:00000001FF diff --git a/compiled/mega2560-5500/upload.bat b/compiled/mega2560-5500/upload.bat new file mode 100644 index 0000000..02bd82c --- /dev/null +++ b/compiled/mega2560-5500/upload.bat @@ -0,0 +1 @@ +..\tools\win\tool-avrdude\avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -v -V -P com3 -patmega2560 -cwiring -b115200 -D -Uflash:w:firmware.hex:i diff --git a/compiled/mega2560-5500/upload.sh b/compiled/mega2560-5500/upload.sh new file mode 100755 index 0000000..b22f187 --- /dev/null +++ b/compiled/mega2560-5500/upload.sh @@ -0,0 +1 @@ +../tools/mac/tool-avrdude/avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -v -V -P /dev/cu.usbmodem1411 -patmega2560 -cwiring -b115200 -D -Uflash:w:firmware.hex:i diff --git a/compiled/mega2560dmx-5100/upload.sh b/compiled/mega2560dmx-5100/upload.sh old mode 100755 new mode 100644 diff --git a/compiled/mega2560onewire-5100/upload.bat b/compiled/mega2560onewire-5100/upload.bat new file mode 100644 index 0000000..02bd82c --- /dev/null +++ b/compiled/mega2560onewire-5100/upload.bat @@ -0,0 +1 @@ +..\tools\win\tool-avrdude\avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -v -V -P com3 -patmega2560 -cwiring -b115200 -D -Uflash:w:firmware.hex:i diff --git a/compiled/mega2560onewire-5100/upload.sh b/compiled/mega2560onewire-5100/upload.sh new file mode 100644 index 0000000..b22f187 --- /dev/null +++ b/compiled/mega2560onewire-5100/upload.sh @@ -0,0 +1 @@ +../tools/mac/tool-avrdude/avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -v -V -P /dev/cu.usbmodem1411 -patmega2560 -cwiring -b115200 -D -Uflash:w:firmware.hex:i diff --git a/compiled/mega2560dmx-5100/firmware.hex b/compiled/mega2560slim-5100/firmware.hex similarity index 97% rename from compiled/mega2560dmx-5100/firmware.hex rename to compiled/mega2560slim-5100/firmware.hex index 06b8a5d..25a7baf 100644 --- a/compiled/mega2560dmx-5100/firmware.hex +++ b/compiled/mega2560slim-5100/firmware.hex @@ -109,7 +109,7 @@ :1006C0002C584F46462C544F47474C4500656E7595 :1006D0006D00666C6F617400322E312E300024681C :1006E0006F6D696500757074696D652C66726565FE -:1006F0006865617000656130383863615F32303140 +:1006F0006865617000373038663531655F3230319A :10070000392D30362D3031004C6967687448756278 :100710002000246E616D650072656164790020744B :10072000727920616761696E20696E20352073657A @@ -192,8 +192,8 @@ :100BF000617A79686F6D652E7275000A436F6E6653 :100C00006967207365727665723A000A282B295746 :100C100041544348444F47003230313130334C0067 -:100C200020432B2B2076657273696F6E3A006561E5 -:100C300030383863615F323031392D30362D303104 +:100C200020432B2B2076657273696F6E3A00373044 +:100C300038663531655F323031392D30362D3031FF :100C4000000A4C617A79686F6D652E7275204C6967 :100C500067687448756220636F6E74726F6C6C6540 :100C6000722000000020002300260029002C002F05 diff --git a/compiled/mega2560slim-5100/upload.bat b/compiled/mega2560slim-5100/upload.bat new file mode 100644 index 0000000..02bd82c --- /dev/null +++ b/compiled/mega2560slim-5100/upload.bat @@ -0,0 +1 @@ +..\tools\win\tool-avrdude\avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -v -V -P com3 -patmega2560 -cwiring -b115200 -D -Uflash:w:firmware.hex:i diff --git a/compiled/mega2560slim-5100/upload.sh b/compiled/mega2560slim-5100/upload.sh new file mode 100755 index 0000000..b22f187 --- /dev/null +++ b/compiled/mega2560slim-5100/upload.sh @@ -0,0 +1 @@ +../tools/mac/tool-avrdude/avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -v -V -P /dev/cu.usbmodem1411 -patmega2560 -cwiring -b115200 -D -Uflash:w:firmware.hex:i diff --git a/compiled/nrf52840-5500/firmware.hex b/compiled/nrf52840-5500/firmware.hex index 06cb4d7..fe748a4 100644 --- a/compiled/nrf52840-5500/firmware.hex +++ b/compiled/nrf52840-5500/firmware.hex @@ -3863,7 +3863,7 @@ :10F16000733A00454550524F4D20636C656172659E :10F17000640A000A4C617A79686F6D652E72752099 :10F180004C6967687448756220636F6E74726F6C47 -:10F190006C65722000656130383863615F323031F0 +:10F190006C65722000373038663531655F3230314A :10F1A000392D30362D30310020432B2B20766572DF :10F1B00073696F6E3A003230313130334C000A28B7 :10F1C0002D295741544348444F47000A436F6E6608 @@ -3915,7 +3915,7 @@ :10F4A00061740024686F6D696500246E6F64657314 :10F4B000007265616479002473746174650024735B :10F4C000746174730024666F726D6174007570747A -:10F4D000696D6500656130383863615F323031399C +:10F4D000696D6500373038663531655F32303139F6 :10F4E0002D30362D3031004C6967687448756220C4 :10F4F000004453323438325F3130305F4932435F39 :10F50000544F5F31575F42524944474520696E6905 diff --git a/compiled/stm32-enc2860/firmware.bin b/compiled/stm32-enc2860/firmware.bin index 55154e8..8be4d4f 100644 Binary files a/compiled/stm32-enc2860/firmware.bin and b/compiled/stm32-enc2860/firmware.bin differ diff --git a/compiled/DUE_16u2_reflash/16u2.hex b/compiled/tools/DUE_16u2_reflash/16u2.hex similarity index 100% rename from compiled/DUE_16u2_reflash/16u2.hex rename to compiled/tools/DUE_16u2_reflash/16u2.hex diff --git a/compiled/tools/DUE_16u2_reflash/readme.md b/compiled/tools/DUE_16u2_reflash/readme.md new file mode 100644 index 0000000..e182a4c --- /dev/null +++ b/compiled/tools/DUE_16u2_reflash/readme.md @@ -0,0 +1,2 @@ +This package need if you have problem with unrelable cold start of Arduino DUE +Arduino ISP should be connected to 16u2 ICSP connector before run diff --git a/compiled/tools/DUE_16u2_reflash/reflash16u2DUE.sh b/compiled/tools/DUE_16u2_reflash/reflash16u2DUE.sh new file mode 100755 index 0000000..e79cc4e --- /dev/null +++ b/compiled/tools/DUE_16u2_reflash/reflash16u2DUE.sh @@ -0,0 +1 @@ +../../tools/mac/tool-avrdude/avrdude -C ../tools/mac/tool-avrdude/avrdude.conf -c arduino -P /dev/cu.usbmodem1411 -b 19200 -p m16u2 -vvv -U flash:w:16u2.hex:i diff --git a/compiled/tools/mac/tool-avrdude/avrdude b/compiled/tools/mac/tool-avrdude/avrdude new file mode 100755 index 0000000..74af8aa Binary files /dev/null and b/compiled/tools/mac/tool-avrdude/avrdude differ diff --git a/compiled/tools/mac/tool-avrdude/avrdude.conf b/compiled/tools/mac/tool-avrdude/avrdude.conf new file mode 100755 index 0000000..177527b --- /dev/null +++ b/compiled/tools/mac/tool-avrdude/avrdude.conf @@ -0,0 +1,15832 @@ +# $Id: avrdude.conf.in 1371 2016-02-15 20:15:07Z joerg_wunsch $ -*- 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_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 = "unknown"; +default_serial = "unknown"; +# 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 = ""; +; + +programmer + id = "usbtiny"; + desc = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/"; + type = "usbtiny"; + connection_type = usb; + usbvid = 0x1781; + usbpid = 0x0c9f; +; + +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 = "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 = "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_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 = "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; +; + + +#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 = ?; +#; + +# 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"; + ; +; + +#------------------------------------------------------------ +# 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"; + ; + ; + +#------------------------------------------------------------ +# ATTiny841 +#------------------------------------------------------------ + +part + id = "t841"; + desc = "ATtiny841"; + 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 0x15; + 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; + #ocdrev = 1; + programlockpolltimeout = 25; + + 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 = 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 = 32; + readsize = 256; + ; +# ATtiny841 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 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 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"; + ; + ; + +#------------------------------------------------------------ +# 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 0x95 0x44; +; + +#------------------------------------------------------------ +# 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 0x94 0x43; +; + +#------------------------------------------------------------ +# 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; + ; +; + +#------------------------------------------------------------ +# ATtiny87 +#------------------------------------------------------------ + +# Changes against ATtiny167 (beside IDs) +# memory "flash" +# size = 8192; +# num_pages = 64; + +part + id = "t87"; + desc = "ATtiny87"; + 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; +## 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 0x87; + 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 = 0; + + 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; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 20; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x00; + spmcr = 0x57; + allowfullpagebitstream = no; + + 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 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", + "a8 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", + " 0 0 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 = 128; + 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 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 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 0 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 = 64; + readsize = 256; + ; +# ATtiny87 has Signature Bytes: 0x1E 0x93 0x87. + 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"; + ; + ; + + +#------------------------------------------------------------ +# ATtiny167 +#------------------------------------------------------------ + +part + id = "t167"; + desc = "ATtiny167"; + 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; +## no STK500 devcode in XML file, use the ATtiny45 one + stk500_devcode = 0x14; +## avr910_devcode = ?; +## Try the AT90S2313 devcode: + avr910_devcode = 0x20; + signature = 0x1e 0x94 0x87; + 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 = 0; + + 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; + latchcycles = 5; + togglevtg = 1; + poweroffdelay = 20; + resetdelayms = 1; + resetdelayus = 0; + hvleavestabdelay = 15; + chiperasepulsewidth = 0; + chiperasepolltimeout = 10; + programfusepulsewidth = 0; + programfusepolltimeout = 5; + programlockpulsewidth = 0; + programlockpolltimeout = 5; + + idr = 0x00; + spmcr = 0x57; + allowfullpagebitstream = no; + + 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 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", + "a8 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", + " 0 0 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 = 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 = 10; + blocksize = 64; + readsize = 256; + ; +# ATtiny167 has Signature Bytes: 0x1E 0x94 0x87. + 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 + id = "t441"; + desc = "ATtiny441"; + 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 0x15; + reset = io; + chip_erase_delay = 15000; + + 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 = 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 = 12; + blocksize = 32; + readsize = 256; + ; +# ATtiny441 has Signature Bytes: 0x1E 0x92 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 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 a0 o o o o o o o o"; + ; + ; + +#------------------------------------------------------------ +# ATtiny48 +#------------------------------------------------------------ + +part + id = "t48"; + desc = "ATtiny48"; + 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 0x92 0x09; + pagel = 0xd7; + bs2 = 0xc2; + chip_erase_delay = 15000; + 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 = 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 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 1 1 1 1 1 1 1 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 o o 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"; + ; + ; + +#------------------------------------------------------------ +# ATmega164A +#------------------------------------------------------------ + +# similar to ATmega164P + +part parent "m164p" + id = "m164a"; + desc = "ATmega164A"; + signature = 0x1e 0x94 0x0f; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega164PA +#------------------------------------------------------------ + +# similar to ATmega164P + +part parent "m164p" + id = "m164pa"; + desc = "ATmega164PA"; + signature = 0x1e 0x94 0x0a; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega324PB +#------------------------------------------------------------ + +# similar to ATmega324P + +part parent "m324p" + id = "m324pb"; + desc = "ATmega324PB"; + signature = 0x1e 0x95 0x17; + + ocdrev = 3; + + 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 i i i i"; + ; +; + +#------------------------------------------------------------ +# ATmega324A +#------------------------------------------------------------ + +# similar to ATmega324P + +part parent "m324p" + id = "m324a"; + desc = "ATmega324A"; + signature = 0x1e 0x95 0x15; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega644A +#------------------------------------------------------------ + +# similar to ATmega164p + +part parent "m644" + id = "m644a"; + desc = "ATmega644A"; + signature = 0x1e 0x96 0x09; + + ocdrev = 3; + ; + +#------------------------------------------------------------ +# ATmega644PA +#------------------------------------------------------------ + +# similar to ATmega164p + +part parent "m644" + id = "m644pa"; + desc = "ATmega644PA"; + signature = 0x1e 0x96 0x0a; + + ocdrev = 3; + ; diff --git a/compiled/tools/mac/tool-avrdude/libavrdude.1.dylib b/compiled/tools/mac/tool-avrdude/libavrdude.1.dylib new file mode 100755 index 0000000..b174673 Binary files /dev/null and b/compiled/tools/mac/tool-avrdude/libavrdude.1.dylib differ diff --git a/compiled/tools/mac/tool-avrdude/libavrdude.a b/compiled/tools/mac/tool-avrdude/libavrdude.a new file mode 100644 index 0000000..36ea398 Binary files /dev/null and b/compiled/tools/mac/tool-avrdude/libavrdude.a differ diff --git a/compiled/tools/mac/tool-avrdude/libavrdude.dylib b/compiled/tools/mac/tool-avrdude/libavrdude.dylib new file mode 120000 index 0000000..9063d2a --- /dev/null +++ b/compiled/tools/mac/tool-avrdude/libavrdude.dylib @@ -0,0 +1 @@ +libavrdude.1.dylib \ No newline at end of file diff --git a/compiled/tools/mac/tool-avrdude/libavrdude.la b/compiled/tools/mac/tool-avrdude/libavrdude.la new file mode 100755 index 0000000..f35dd12 --- /dev/null +++ b/compiled/tools/mac/tool-avrdude/libavrdude.la @@ -0,0 +1,41 @@ +# libavrdude.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.6 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='libavrdude.1.dylib' + +# Names of this library. +library_names='libavrdude.1.dylib libavrdude.dylib' + +# The name of the static archive. +old_library='libavrdude.a' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags=' ' + +# Libraries that this one depends upon. +dependency_libs=' -L/Users/jenkins/jenkins/workspace/avrdude/label/mac-mini/objdir/lib -lreadline -lncurses -ltermcap' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libavrdude. +current=1 +age=0 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/Users/jenkins/jenkins/workspace/avrdude/label/mac-mini/objdir/lib' diff --git a/compiled/tools/mac/tool-avrdude/libelf.a b/compiled/tools/mac/tool-avrdude/libelf.a new file mode 100644 index 0000000..6317d0a Binary files /dev/null and b/compiled/tools/mac/tool-avrdude/libelf.a differ diff --git a/compiled/tools/mac/tool-avrdude/libusb-1.0.a b/compiled/tools/mac/tool-avrdude/libusb-1.0.a new file mode 100644 index 0000000..8576a9b Binary files /dev/null and b/compiled/tools/mac/tool-avrdude/libusb-1.0.a differ diff --git a/compiled/tools/mac/tool-avrdude/libusb-1.0.la b/compiled/tools/mac/tool-avrdude/libusb-1.0.la new file mode 100755 index 0000000..a1e3e27 --- /dev/null +++ b/compiled/tools/mac/tool-avrdude/libusb-1.0.la @@ -0,0 +1,41 @@ +# libusb-1.0.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libusb-1.0.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags=' ' + +# Libraries that this one depends upon. +dependency_libs=' -lobjc' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libusb-1.0. +current=1 +age=1 +revision=0 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/Users/jenkins/jenkins/workspace/avrdude/label/mac-mini/objdir/lib' diff --git a/compiled/tools/mac/tool-avrdude/libusb-config b/compiled/tools/mac/tool-avrdude/libusb-config new file mode 100755 index 0000000..64c9acb --- /dev/null +++ b/compiled/tools/mac/tool-avrdude/libusb-config @@ -0,0 +1,81 @@ +#!/bin/sh + +prefix=/Users/jenkins/jenkins/workspace/avrdude/label/mac-mini/objdir +exec_prefix=${prefix} +includedir=${prefix}/include +libdir=${exec_prefix}/lib +exec_prefix_set=no + +usage() +{ + cat <&2 +fi + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + if test $exec_prefix_set = no ; then + exec_prefix=$optarg + fi + ;; + --prefix) + echo_prefix=yes + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + ;; + --exec-prefix) + echo_exec_prefix=yes + ;; + --version) + echo 0.1.12 + exit 0 + ;; + --cflags) + if test "$includedir" != /usr/include ; then + includes="-I$includedir" + fi + echo_cflags=yes + ;; + --libs) + echo_libs=yes + ;; + *) + usage 1 1>&2 + ;; + esac + shift +done + +if test "$echo_prefix" = "yes"; then + echo $prefix +fi +if test "$echo_exec_prefix" = "yes"; then + echo $exec_prefix +fi +if test "$echo_cflags" = "yes"; then + echo $includes +fi +if test "$echo_libs" = "yes"; then + echo -L$libdir -lusb +fi diff --git a/compiled/tools/mac/tool-avrdude/libusb.a b/compiled/tools/mac/tool-avrdude/libusb.a new file mode 100644 index 0000000..93bcc07 Binary files /dev/null and b/compiled/tools/mac/tool-avrdude/libusb.a differ diff --git a/compiled/tools/mac/tool-avrdude/libusb.la b/compiled/tools/mac/tool-avrdude/libusb.la new file mode 100755 index 0000000..eac579f --- /dev/null +++ b/compiled/tools/mac/tool-avrdude/libusb.la @@ -0,0 +1,41 @@ +# libusb.la - a libtool library file +# Generated by libtool (GNU libtool) 2.4.2 +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libusb.a' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags=' ' + +# Libraries that this one depends upon. +dependency_libs=' -L/Users/jenkins/jenkins/workspace/avrdude/label/mac-mini/objdir/lib /Users/jenkins/jenkins/workspace/avrdude/label/mac-mini/objdir/lib/libusb-1.0.la -lobjc' + +# Names of additional weak libraries provided by this library +weak_library_names='' + +# Version information for libusb. +current=8 +age=4 +revision=4 + +# Is this an already installed library? +installed=yes + +# Should we warn about portability when linking against -modules? +shouldnotlink=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='/Users/jenkins/jenkins/workspace/avrdude/label/mac-mini/objdir/lib' diff --git a/compiled/tools/mac/tool-avrdude/package.json b/compiled/tools/mac/tool-avrdude/package.json new file mode 100755 index 0000000..51b0fec --- /dev/null +++ b/compiled/tools/mac/tool-avrdude/package.json @@ -0,0 +1,10 @@ +{ + "description": "AVRDUDE", + "name": "tool-avrdude", + "system": [ + "darwin_x86_64", + "darwin_i386" + ], + "url": "http://www.nongnu.org/avrdude/", + "version": "1.60300.190424" +} \ No newline at end of file diff --git a/compiled/tools/mac/tool-bossac/bossac b/compiled/tools/mac/tool-bossac/bossac new file mode 100755 index 0000000..79d2cbf Binary files /dev/null and b/compiled/tools/mac/tool-bossac/bossac differ diff --git a/compiled/tools/mac/tool-bossac/package.json b/compiled/tools/mac/tool-bossac/package.json new file mode 100755 index 0000000..ee16f5e --- /dev/null +++ b/compiled/tools/mac/tool-bossac/package.json @@ -0,0 +1,7 @@ +{ + "description": "Basic Open Source SAM-BA Application (BOSSA)", + "name": "tool-bossac", + "system": "darwin_x86_64", + "url": "https://github.com/shumatech/BOSSA", + "version": "1.10700.0" +} \ No newline at end of file diff --git a/compiled/tools/mac/tool-esptool/esptool b/compiled/tools/mac/tool-esptool/esptool new file mode 100755 index 0000000..ce0727f Binary files /dev/null and b/compiled/tools/mac/tool-esptool/esptool differ diff --git a/compiled/tools/mac/tool-esptool/package.json b/compiled/tools/mac/tool-esptool/package.json new file mode 100755 index 0000000..ab47f50 --- /dev/null +++ b/compiled/tools/mac/tool-esptool/package.json @@ -0,0 +1,10 @@ +{ + "description": "esptool-ck", + "name": "tool-esptool", + "system": [ + "darwin_x86_64", + "darwin_i386" + ], + "url": "https://github.com/igrr/esptool-ck", + "version": "1.413.0" +} \ No newline at end of file diff --git a/compiled/update_bin.sh b/compiled/update_bin.sh index c927c26..4fc161d 100755 --- a/compiled/update_bin.sh +++ b/compiled/update_bin.sh @@ -1,11 +1,12 @@ cp ../.pioenvs/controllino/firmware.hex controllino cp ../.pioenvs/m5stack/firmware.bin m5stack -cp ../.pioenvs/mega2560dmx-5100/firmware.hex mega2560dmx-5100 +cp ../.pioenvs/mega2560slim-5100/firmware.hex mega2560slim-5100 cp ../.pioenvs/due-5100/firmware.bin due-5100 -cp ../.pioenvs/mega2560onewire-5100/firmware.hex mega2560onewire-5100 +cp ../.pioenvs/mega2560-5100/firmware.hex mega2560-5100 cp ../.pioenvs/due-5500/firmware.bin due-5500 cp ../.pioenvs/nrf52840-5500/firmware.hex nrf52840-5500 cp ../.pioenvs/esp32-wifi/firmware.bin esp32-wifi cp ../.pioenvs/stm32-enc2860/firmware.bin stm32-enc2860 cp ../.pioenvs/esp8266-wifi/firmware.bin esp8266-wifi cp ../.pioenvs/lighthub21/firmware.bin lighthub21 +cp ../.pioenvs/mega2560-5500/firmware.hex mega2560-5500 \ No newline at end of file diff --git a/custom-build-flags/build_flags_controllino.sh b/custom-build-flags/build_flags_controllino.sh old mode 100755 new mode 100644 index aefe7aa..44bc8e3 --- a/custom-build-flags/build_flags_controllino.sh +++ b/custom-build-flags/build_flags_controllino.sh @@ -24,8 +24,9 @@ # export FLAGS="$FLAGS -DESP_WIFI_AP=vent" # export FLAGS="$FLAGS -DESP_WIFI_PWD=kk007remont" # export FLAGS="$FLAGS -DSYSLOG_ENABLE" - export FLAGS="$FLAGS -DDEVICE_NAME=kk007_mega2560" -export FLAGS="$FLAGS -DDHT_COUNTER_DISABLE" +export FLAGS="$FLAGS -DDEVICE_NAME=kk007_mega2560" +export FLAGS="$FLAGS -DCOUNTER_DISABLE" +export FLAGS="$FLAGS -DDHT_DISABLE" #export FLAGS="$FLAGS -DWITH_DOMOTICZ" #export FLAGS="$FLAGS -DWITH_PRINTEX_LIB" export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short) diff --git a/custom-build-flags/build_flags_mega2560-net.sh b/custom-build-flags/build_flags_mega2560-net.sh deleted file mode 100644 index 63c1436..0000000 --- a/custom-build-flags/build_flags_mega2560-net.sh +++ /dev/null @@ -1,30 +0,0 @@ -#! /bin/bash -# usage: -# first make your own copy of template -# cp build_flags_template.sh build_flags_ENVNAME.sh -# then edit, change or comment something - export FLAGS="$FLAGS -DMY_CONFIG_SERVER=lazyhome.ru" - #export FLAGS="$FLAGS -DWATCH_DOG_TICKER_DISABLE" - #export FLAGS="$FLAGS -DUSE_1W_PIN=12" - #export FLAGS="$FLAGS -DSD_CARD_INSERTED" - export FLAGS="$FLAGS -DSERIAL_BAUD=115200" - #export FLAGS="$FLAGS -DWiz5500" - #export FLAGS="$FLAGS -DDISABLE_FREERAM_PRINT" - export FLAGS="$FLAGS -DCUSTOM_FIRMWARE_MAC=de:ad:be:ef:fe:fe" -# export FLAGS="$FLAGS -DDMX_DISABLE" -# export FLAGS="$FLAGS -DARTNET_ENABLE" -# export FLAGS="$FLAGS -DMODBUS_DISABLE" -# export FLAGS="$FLAGS -DOWIRE_DISABLE" -# export FLAGS="$FLAGS -DAVR_DMXOUT_PIN=18" -# export FLAGS="$FLAGS -DLAN_INIT_DELAY=2000" -# export FLAGS="$FLAGS -DCONTROLLINO" -# export FLAGS="$FLAGS -DESP_WIFI_AP=MYAP" -# export FLAGS="$FLAGS -DESP_WIFI_PWD=MYPWD" -# export FLAGS="$FLAGS -DWIFI_MANAGER_DISABLE" - export FLAGS="$FLAGS -DDHT_DISABLE" -# export FLAGS="$FLAGS -DRESET_PIN=5" -# export FLAGS="$FLAGS -DDHCP_RETRY_INTERVAL=60000" -# export FLAGS="$FLAGS -DRESTART_LAN_ON_MQTT_ERRORS" -# export FLAGS="$FLAGS -DW5500_CS_PIN=53" - export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short) - echo $FLAGS diff --git a/custom-build-flags/build_flags_nrf52840.sh b/custom-build-flags/build_flags_nrf52840.sh index 1d841f2..1ef0eaf 100644 --- a/custom-build-flags/build_flags_nrf52840.sh +++ b/custom-build-flags/build_flags_nrf52840.sh @@ -3,29 +3,28 @@ # first make your own copy of template # cp build_flags_template.sh build_flags_ENVNAME.sh # then edit, change or comment something - export FLAGS="$FLAGS -DMY_CONFIG_SERVER=lazyhome.ru" + #export FLAGS="$FLAGS -DMY_CONFIG_SERVER=lazyhome.ru" export FLAGS="$FLAGS -DWATCH_DOG_TICKER_DISABLE" #export FLAGS="$FLAGS -DUSE_1W_PIN=12" #export FLAGS="$FLAGS -DSD_CARD_INSERTED" - export FLAGS="$FLAGS -DSERIAL_BAUD=115200" + #export FLAGS="$FLAGS -DSERIAL_BAUD=115200" #export FLAGS="$FLAGS -DWiz5500" export FLAGS="$FLAGS -DDISABLE_FREERAM_PRINT" - export FLAGS="$FLAGS -DCUSTOM_FIRMWARE_MAC=de:ad:be:ef:fe:ff" - export FLAGS="$FLAGS -DDMX_DISABLE" - export FLAGS="$FLAGS -DMODBUS_DISABLE" - export FLAGS="$FLAGS -DOWIRE_DISABLE" + #export FLAGS="$FLAGS -DCUSTOM_FIRMWARE_MAC=de:ad:be:ef:fe:ff" + #export FLAGS="$FLAGS -DDMX_DISABLE" + #export FLAGS="$FLAGS -DMODBUS_DISABLE" + #export FLAGS="$FLAGS -DOWIRE_DISABLE" # export FLAGS="$FLAGS -DAVR_DMXOUT_PIN=18" # export FLAGS="$FLAGS -DLAN_INIT_DELAY=2000" # export FLAGS="$FLAGS -DCONTROLLINO" - export FLAGS="$FLAGS -DWIFI_MANAGER_DISABLE" +# export FLAGS="$FLAGS -DWIFI_MANAGER_DISABLE" # export FLAGS="$FLAGS -DRESET_PIN=5" # export FLAGS="$FLAGS -DDHCP_RETRY_INTERVAL=60000" # export FLAGS="$FLAGS -DRESTART_LAN_ON_MQTT_ERRORS" # export FLAGS="$FLAGS -DW5500_CS_PIN=53" -export FLAGS="$FLAGS -DSYSLOG_DISABLE" -export FLAGS="$FLAGS -std=gnu++11" +#export FLAGS="$FLAGS -std=gnu++11" #export FLAGS="$FLAGS -DDEVICE_NAME=MYDEVICE" -export FLAGS="$FLAGS -DDHT_COUNTER_DISABLE" +#export FLAGS="$FLAGS -DDHT_COUNTER_DISABLE" #export FLAGS="$FLAGS -DWITH_PRINTEX_LIB" - export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short) +#export FLAGS="$FLAGS -DPIO_SRC_REV="$(git log --pretty=format:%h_%ad -1 --date=short) echo $FLAGS diff --git a/platformio.ini b/platformio.ini index 50bb72f..6e887d9 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,11 +11,12 @@ src_dir = lighthub ;monitor_speed = 115200 env_default = -; Arduino Mega (with DMX, without onewire) + Ethernet shield Wiznet 5100 -; mega2560dmx-5100 +; ****** UNCOMMENT single environment name for target platform below ******* +; Arduino Mega (without onewire) + Ethernet shield Wiznet 5100 +; mega2560slim-5100 -; Arduino Mega (with OneWire, without DMX) + Ethernet shield Wiznet 5100 -; mega2560onewire-5100 +; Arduino Mega + Ethernet shield Wiznet 5100 +; mega2560-5100 ; Arduino Mega + Ethernet shield Wiznet 5500 ; mega2560-5500 @@ -237,12 +238,12 @@ lib_deps = ClosedCube HDC1080 SparkFun CCS811 Arduino Library -[env:mega2560dmx-5100] +[env:mega2560slim-5100] platform = atmelavr board = megaatmega2560 ;upload_port = net:192.168.88.31:23 framework = arduino -build_flags = !bash check_custom_build_flags_mega2560.sh +build_flags = !bash check_custom_build_flags_mega2560-slim.sh lib_ignore = DHT sensor library for ESPx DmxDue @@ -276,6 +277,44 @@ lib_deps = ClosedCube HDC1080 SparkFun CCS811 Arduino Library +[env:mega2560-5500] +platform = atmelavr +board = megaatmega2560 +framework = arduino +build_flags = !bash check_custom_build_flags_mega2560-5500.sh +lib_ignore = + DHT sensor library for ESPx + DmxDue + DueFlashStorage + WifiManager + Ethernet3 + HTTPClient + NRFFlashStorage + WebServer + UIPEthernet + ESP_EEPROM + M5Stack +lib_deps = + https://github.com/anklimov/Arduino-Temperature-Control-Library.git + https://github.com/anklimov/DS2482_OneWire + https://github.com/anklimov/DmxSimple + https://github.com/anklimov/httpClient + https://github.com/anklimov/aJson + https://github.com/anklimov/CmdArduino + https://github.com/anklimov/ModbusMaster + https://github.com/anklimov/DMXSerial + https://github.com/anklimov/Ethernet + https://github.com/knolleary/pubsubclient.git + https://github.com/anklimov/Artnet.git + FastLED + Adafruit Unified Sensor + DHT sensor library + https://github.com/arcao/Syslog.git + Streaming + ClosedCube HDC1080 + SparkFun CCS811 Arduino Library + + [env:esp8266-wifi] platform = espressif8266 framework = arduino @@ -321,12 +360,12 @@ lib_deps = ClosedCube HDC1080 SparkFun CCS811 Arduino Library -[env:mega2560onewire-5100] +[env:mega2560-5100] platform = atmelavr board = megaatmega2560 framework = arduino upload_port = net:192.168.88.2:23000 -build_flags = !bash check_custom_build_flags_mega2560-net.sh +build_flags = !bash check_custom_build_flags_mega2560.sh lib_ignore = DHT sensor library for ESPx DmxDue